Bladeren bron

Merge branch 'zengjun' of ssh://was.baoshi56.com:10022/var/git/bswas

 Conflicts:
	app/Http/Controllers/TestController.php
LD 5 jaren geleden
bovenliggende
commit
3048d7c852

+ 15 - 3
app/Filters/OrderIssueFilters.php

@@ -64,7 +64,9 @@ class OrderIssueFilters
         'finance_confirm',
         'logistic_number_return',
         'final_status',
-        'user_owner_group_id'
+        'user_owner_group_id',
+        'archive_at_start',
+        'archive_at_end',
     ];
     protected $array_filter;
     protected $params = [];
@@ -161,7 +163,7 @@ class OrderIssueFilters
             $ids = explode(',',$this->params['data']);
             $this->id($ids);
         }elseif(!($this->params['is_handle'] ?? false) && !($this->params['final_status'] ?? false)){
-            if(!(isset($this->params['settlement_at_start']) || isset($this->params['settlement_at_end']))) {
+            if(!(isset($this->params['settlement_at_start']) || isset($this->params['settlement_at_end']) || isset($this->params['archive_at_end']) || isset($this->params['archive_at_start']))) {
                 $this->queryBuilder->where(function ($query) {
                     $query->whereNotIn('order_issues.final_status', ['已解决', '已归档'])->orWhereNull('order_issues.final_status');
                 });
@@ -175,6 +177,7 @@ class OrderIssueFilters
         } else{
             $this->getOrderQuery()->whereIn('owner_id',$owner_ids);
         }
+
     }
 
     public function afterApply()
@@ -205,7 +208,6 @@ class OrderIssueFilters
 
         if($this->orderIssueProcessLogQuery)
             $this->queryBuilder->whereIn('order_issues.id',$this->orderIssueProcessLogQuery);
-
     }
 
     private function isSearchLike($str)
@@ -428,4 +430,14 @@ class OrderIssueFilters
         $this->queryBuilder->where('order_issues.user_owner_group_id',$user_owner_group_id);
     }
 
+    public function archive_at_start($archive_at_start)
+    {
+        $this->queryBuilder->where('order_issues.archive_at','>=',$archive_at_start.' 00:00:00');
+    }
+
+    public function archive_at_end($archive_at_end)
+    {
+        $this->queryBuilder->where('order_issues.archive_at','<=',$archive_at_end.' 23:59:59');
+    }
+
 }

+ 5 - 1
app/Http/Controllers/AuthorityController.php

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
 use App\Authority;
 use App\Components\AsyncResponse;
 use App\Owner;
+use App\User;
 use Exception;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response;
@@ -166,7 +167,10 @@ class AuthorityController extends Controller
 
     public function getAuthoritiesApi()
     {
-        $authority = Authority::query()->orderBy('name')->get();
+        /** @var User $user */
+        $user = Auth::user();
+        $authority = $user->authorities();
+//        $authority = Authority::query()->orderBy('name')->get();
         $this->success($authority);
     }
 }

+ 10 - 4
app/Http/Controllers/OrderIssueController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Events\AddOrUpdateOrderIssues;
 use App\Filters\OrderIssueFilters;
 use App\Imports\OrderIssueImport;
 use App\Logistic;
@@ -75,6 +76,7 @@ class OrderIssueController extends Controller
         $orderIssueService = app('OrderIssueService');
         $orderIssueService->validatorCreate($request)->validate();
         $orderIssue = $orderIssueService->create($request->all());
+        event(new AddOrUpdateOrderIssues([$orderIssue['order_id']]));
         if($request->has('logistic_number_return') && !OrderIssueRejectedBill::isExit($orderIssue->id,$request['logistic_number_return'])){
             $orderIssue->joinRejectedBill($request['logistic_number_return']);
         }
@@ -735,21 +737,25 @@ class OrderIssueController extends Controller
         }
     }
 
-    public function archiveOrderIssueApi(Request $request): array
+    public function archiveOrderIssueApi(Request $request,OrderIssueService $service): array
     {
         if (!Gate::allows('订单管理-问题件-编辑')) return ['success'=>false,'error'=>'没有对应权限'];
+
         if(!$request->has('ids'))return ['success'=>false,'error'=>'没有勾选问题件'];
+
         $orderIssues = OrderIssue::query()->whereIn('id',$request['ids'])->get();
+
         $archiveOrderIssues = $orderIssues->where('final_status','已归档');
+
         if($archiveOrderIssues->count() > 0){
             $archiveIds = $archiveOrderIssues->map(function($archiveOrderIssue){
                 return $archiveOrderIssue->id;
             });
             return ['success' =>false,'error' => "选中问题件Id{$archiveIds}已有归档信息,请取消选中或刷新页面重试"];
         }
-        $orderIssues->each(function($orderIssue){
-            $orderIssue->update(['final_status'=>'已归档']);
-        });
+
+        $service->archive($orderIssues);
+
         return ['success' =>true];
     }
 

+ 57 - 0
app/Http/Controllers/TestController.php

@@ -27,6 +27,7 @@ use App\Events\SendEmailEvent;
 use App\Exceptions\Exception;
 use App\Http\Controllers\api\thirdPart\haiq\PickStationController;
 use App\Http\Controllers\api\thirdPart\hengli\PackageController;
+use App\Http\Controllers\api\thirdPart\weight\WeightBaseController;
 use App\Http\Requests\ForeignHaiRobotic_taskUpdateRequest;
 use App\Http\Requests\TestAaRequest;
 use App\Imports\OrderTrackingImport;
@@ -1286,4 +1287,60 @@ where purch.islower=1 and deliver.id>'.$id);
         }
         ProcurementCheckSheet::query()->insert($insert_);
     }
+    public function testPro(){
+        /**@var SupplierService $supplierService*/
+        $supplierService=app(SupplierService::class);
+        $supplier_ids=$supplierService->screenSupplierIds();
+//        $status=0;
+//        $procurements=Procurement::query()
+//            ->withCount('procurementQuotations')
+//            ->with('ownerMaterial.material')
+//            ->where('status',$status)
+//            ->whereHas("ownerMaterial",function (Builder $query)use($supplier_ids){
+//                $query->whereHas("material",function (Builder $query)use($supplier_ids){
+//                    $query->whereHas("supplier",function (Builder $query)use($supplier_ids){
+//                        $query->whereIn('id',$supplier_ids);
+//                    });
+//                });
+//            })
+//            ->get();
+//        $keys = [];
+//        foreach ($procurements as $key=>$procurement){
+////            if ($procurement->procurement_quotations_count>0 && $status==0 )$keys[]= $key;
+//            if ($procurement->type==2 && $procurement->supplier_id )$keys[]= $key;
+//            if (Carbon::parse($procurement->deadline)->gt(Carbon::now())) $procurement->deadline=Carbon::parse($procurement->deadline)->diffInMilliseconds();
+//            else $procurement->deadline=0;
+//        }
+//        $procurements = $procurements->diffKeys($keys);
+//        dd($procurements);
+        $status=0;//0:待报价,2:待接单
+        $procurements=Procurement::query()
+            ->withCount('procurementQuotations')
+            ->with(['ownerMaterial.material','procurementQuotations'])
+            ->where('status',$status)
+            ->get();
+        dd($procurements);
+        $keys = [];
+        foreach ($procurements as $key=>$procurement){
+            if ($procurement->procurement_quotations_count>0 ){
+                foreach ($procurement->procurementQuotations as $procurementQuotation){
+                    if (in_array($procurementQuotation->supplier_id,$supplier_ids))$keys[]= $key;
+                }
+            }
+            if ($procurement->type==2 && $procurement->supplier_id )$keys[]= $key;
+            if (Carbon::parse($procurement->deadline)->gt(Carbon::now())) $procurement->deadline=Carbon::parse($procurement->deadline)->diffInMilliseconds();
+            else $procurement->deadline=0;
+        }
+        $procurements = $procurements->diffKeys($keys);
+        dd($procurements);
+    }
+
+    public function pushToWmsWeight()
+    {
+        $orderPackages = OrderPackage::query()->where('measuring_machine_id',12)->where('uploaded_to_wms','!=','是')->whereNotNull('weight')->get();
+        $packageController = new WeightBaseController();
+        foreach ($orderPackages as $orderPackage) {
+            $packageController->activityWaveNoProcessing($orderPackage);
+        }
+    }
 }

+ 2 - 4
app/Http/Controllers/api/thirdPart/weight/WeightBaseController.php

@@ -81,11 +81,9 @@ class WeightBaseController
             return $this->getUpdatePackageMessage($orderPackage);
         }
 
-        // 7、处理波次信息
+        // 7、处理波次信息 推送至WMS称重信息
         try {
-            if ($orderPackage->isActivityBatch()) {
-                $this->activityWaveNoProcessing($orderPackage);
-            }
+            $this->activityWaveNoProcessing($orderPackage);
         } catch (\Exception $e) {
             app('LogService')->log(__METHOD__, $this->name, 'weightApi (Error)', json_encode($orderPackage) . '||' . json_encode($e), null);
             return $this->getWeightMessage($orderPackage, $e);

+ 2 - 0
app/Imports/OrderIssueImport.php

@@ -2,6 +2,7 @@
 
 namespace App\Imports;
 
+use App\Events\AddOrUpdateOrderIssues;
 use App\OracleActAllocationDetails;
 use App\OracleDOCOrderHeader;
 use App\Order;
@@ -106,6 +107,7 @@ class OrderIssueImport implements ToCollection, WithHeadingRow, WithMultipleShee
 
                 /** @var OrderIssue $orderIssue */
                 $orderIssue = OrderIssue::query()->create($arr);
+                event(new AddOrUpdateOrderIssues([$order['id']]));
                 $orderIssue->syncRejectedBills();
                 $orderIssue->syncRejectingStatus();
 

+ 2 - 1
app/OrderIssue.php

@@ -35,7 +35,7 @@ class OrderIssue extends Model
         'logistic_indemnity_money', 'logistic_express_remission',
         'baoshi_indemnity_money', 'baoshi_express_remission', 'user_workgroup_id',
         'custom_code','imported_status','finance_confirm',
-        'hidden_tag'];
+        'hidden_tag','archive_at'];
     /*
      * second_client_no 二次客户订单号
      * second_logistic_number 二次运单号 【二次运单号可以单独存在,当二次客户订单号有对应的订单信息时,显示的是二次客户订单号对应的运单号,没有的话显示二次原单号】
@@ -48,6 +48,7 @@ class OrderIssue extends Model
      * 退回单号
      * finance_confirm 财务确认
      * hidden_tag 隐藏标识
+     * archive_at 归档时间
      */
     protected $appends = [];
 

+ 15 - 4
app/Services/OrderIssueService.php

@@ -2,20 +2,17 @@
 
 namespace App\Services;
 
+use App\Events\AddOrUpdateOrderIssues;
 use App\OracleActAllocationDetails;
 use App\OracleDOCASNHeader;
 use App\OracleDOCOrderHeader;
 use App\OrderIssue;
 use App\OrderIssueProcessLog;
-use App\OrderIssueRejectedBill;
 use App\OrderIssueType;
 use App\OrderPackage;
 use App\Order;
 use App\RejectedBill;
-use App\RejectedBillItem;
-use App\ValueStore;
 use Carbon\Carbon;
-use Illuminate\Database\Query\Builder;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Validator;
@@ -73,6 +70,7 @@ class OrderIssueService
         try {
             $this->insert($innerParams);
             $ordersIssues = OrderIssue::query()->whereIn('order_id', data_get($innerParams, '*.order_id'))->get();
+            event(new AddOrUpdateOrderIssues(data_get($ordersIssues,'*.order_id')));
             $this->同步退单状态($ordersIssues);
             $param = [
                 'ids' => data_get($ordersIssues, '*.id'),
@@ -135,6 +133,7 @@ class OrderIssueService
             $orderIssue->syncRejectedBills();
             $orderIssue->syncRejectingStatus();
             $orderIssue->order = $order;
+            event(new AddOrUpdateOrderIssues([$orderIssue['order_id']]));
             app('LogService')->log(__METHOD__, __FUNCTION__, '创建问题件' . json_encode($orderIssue));
         } catch (\Exception $e) {
             app('LogService')->log(__METHOD__, __FUNCTION__, '创建问题件error' . json_encode($arr) . $e->getMessage() . $e->getTraceAsString());
@@ -202,6 +201,7 @@ class OrderIssueService
         $orderIssue->update(['order_id' => $order['id']]);
         $orderIssue->syncRejectedBills();
         $orderIssue->syncRejectingStatus();
+        event(new AddOrUpdateOrderIssues([$orderIssue['order_id']]));
         return $orderIssue;
     }
 
@@ -380,4 +380,15 @@ class OrderIssueService
             return ['success'=>false,'error'=>$e->getMessage()];
         }
     }
+
+    /**
+     * @param $orderIssues
+     */
+    public function archive($orderIssues)
+    {
+        $updateParams = ['final_status'=>'已归档','archive_at' =>  Carbon::now()->format('Y-m-d H:i:s')];
+        $orderIssues->each(function($orderIssue)use($updateParams){
+            $orderIssue->update($updateParams);
+        });
+    }
 }

+ 32 - 0
database/migrations/2021_04_20_145634_add_archive_at_to_order_issues_table.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddArchiveAtToOrderIssuesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('order_issues', function (Blueprint $table) {
+            $table->timestamp('archive_at')->index()->nullable()->comment('归档事件');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('order_issues', function (Blueprint $table) {
+            $table->dropColumn('archive_at');
+        });
+    }
+}

+ 1 - 1
resources/views/demand/_create.blade.php

@@ -33,7 +33,7 @@
                                     v-model="addDemand.authority_id"
                                     :class="demandErrors.authority_id?'is-invalid':''"
                                     @focus="demandErrors.authority_id!==null ? demandErrors.authority_id=null:''">
-                                <option v-for="(authority,index) in authoritiesFilter" :value="authority.id">@{{ authority.name }}</option>
+                                <option v-for="(authority,index) in authoritiesFilter" :value="authority.id">@{{ authority.alias_name }}</option>
                             </select>
                             <input type="text" class="form-control col-sm-3 ml-1" id="add-demand-auth-filter" @input="filterAuth($event)"
                                    placeholder="输入权限进行删选">

+ 8 - 1
resources/views/order/issue/index.blade.php

@@ -1199,7 +1199,14 @@
                         placeholder: '项目责任方',
                         data: this.userOwnerGroups
                     },
-                ]];
+                ],
+                    @cannot('订单管理-问题件-客户不可见')
+                    [
+                        {name: 'archive_at_start', type: 'dateTime', tip: '归档起始日期'},
+                        {name: 'archive_at_end', type: 'dateTime', tip: '归档结束日期'},
+                    ]
+                    @endcannot
+                ];
                 this.form = new query({
                     el: '#form_div',
                     condition: data,

+ 3 - 0
文档/WAS项目规范.md

@@ -81,6 +81,9 @@
 	模型关系的定义
 	    注意相互的从属关系:hasOne是父模型对于子模型的定义,belongsTo是子模型对于父模型的声明(一般而言:本表存在关联表的外键使用belongsTo,关联表存在本表的外键使用hasOne)
 	    建议:对于超长模型命名可忽略同级的前缀。(示例:user与userLog 模型关系可直接称之log)
+    关联查询
+        慎用whereHas进行查询,whereHas生成的sql是 where exists 进行关联查询,当左表大于由右表时,左表就会成为性能瓶颈。where exists 会将右表查出来的结果同左表匹配。查出多少条就会匹配多少次。而且不走索引的全表扫描。
+        建议先查出右表,再根据关联关系查左表。 
 ##控制台命令
 	将命令的实际逻辑写成Service方法,方便复用调用和测试
 ##数据库