Browse Source

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

 Conflicts:
	app/Http/Controllers/TestController.php
	app/Services/OrderService.php
LD 5 years ago
parent
commit
42ae02fabd

+ 16 - 22
app/Http/Controllers/OrderIssueController.php

@@ -9,6 +9,7 @@ use App\OracleDOCOrderHeader;
 use App\Order;
 use App\OrderIssue;
 use App\OrderIssueProcessLog;
+use App\OrderIssueRejectedBill;
 use App\OrderIssueType;
 use App\Owner;
 use App\QualityLabel;
@@ -67,16 +68,19 @@ class OrderIssueController extends Controller
         if (!Gate::allows('订单管理-订单问题件生成')) {
             return redirect(url('/'));
         }
-        /** @var OrderIssueService $orderIssueService */
+        /**
+         * @var OrderIssueService $orderIssueService
+         * @var OrderIssue $orderIssue
+         */
         $orderIssueService = app('OrderIssueService');
         $orderIssueService->validatorCreate($request)->validate();
-        $orderIssue = null;
-        if ($request->filled('logistic_number_return')) {
-            $orderIssue = $orderIssueService->createByLogisticNumber($request->all());
-        } else {
-            $orderIssue = $orderIssueService->create($request->all());
+        $orderIssue = $orderIssueService->create($request->all());
+        if($request->has('logistic_number_return') && !OrderIssueRejectedBill::isExit($orderIssue->id,$request['logistic_number_return'])){
+            $orderIssue->joinRejectedBill($request['logistic_number_return']);
         }
-        OrderIssueProcessLog::query()->create(['order_issue_id' => $orderIssue['id'], 'user_id' => Auth::user()['id'], 'content' => '创建订单问题件', 'type' => '创建']);
+        $orderIssue->loadMissing('orderIssueRejectedBills');
+        $orderIssue->syncRejectingStatus();
+        OrderIssueProcessLog::query()->create(['order_issue_id' => $orderIssue['id'], 'user_id' => Auth::user()['id'], 'content' => $request['content'], 'type' => '创建']);
         return redirect('order/issue/index');
     }
 
@@ -305,21 +309,11 @@ class OrderIssueController extends Controller
         if (!$request->filled('logisticNumberReturn')) {
             return ['success' => false, 'fail_info' => '缺少对应的参数或条件'];
         }
-        $logisticNumberReturn = $request->input('logisticNumberReturn');
-        $rejectedBill = RejectedBill::with('items')->where('logistic_number_return', $logisticNumberReturn)->first();
-        if ($rejectedBill) {
-            $orderIssue = OrderIssue::query()->where('rejected_bill_id', $rejectedBill->id)->first();
-
-            if ($orderIssue) {
-                return ['success' => false, 'fail_info' => '该退回单号已有对应的问题件'];
-            } else {
-                $orderService = app('OrderService');
-                $order = $orderService->findOrCreteByLogisticNumberReturn($logisticNumberReturn);
-                return ['success' => true, 'order' => $order, 'rejectedBill' => $rejectedBill];
-            }
-        } else {
-            return ['success' => true, 'meg' => '没有对应的退回单号,不与WMS同步'];
-        }
+        $rejectedBill = RejectedBill::query()->with('items')->where('logistic_number_return', $request['logisticNumberReturn'])->first();
+        if(!$rejectedBill) return ['success' => true, 'message' => '没有对应的退回单号,不与WMS同步'];
+        $exists = OrderIssueRejectedBill::query()->where('logistic_number_return',$request['logisticNumberReturn'])->exists();
+        if($exists)return ['success' => false, 'fail_info' => '该退回单号已有对应的问题件'];
+        return ['success' => true, 'rejectedBill' => $rejectedBill];
     }
 
     public function isExistByOrderNoApi(Request $request){

+ 14 - 15
app/Http/Controllers/TestController.php

@@ -1113,6 +1113,7 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
 
     public function testSyncOrderTask()
     {
+        Cache::flush();
         dump('hendle...');
         dump((string)Carbon::now());
         dump(memory_get_usage() / 1024 / 1024);
@@ -1525,21 +1526,19 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
             });
     }
 
-//    public function testNumber()
-//    {
-//        $asnnos=['ASN2101200684','ASN2101220543','ASN2101220542'];
-//        $asnHeaders=OracleDOCASNHeader::query()->whereIn('asnno',$asnnos)->get();
-//        /**
-//         * @var RejectedBillService $rejectedBillService
-//         */
-//        $rejectedBillService=app(RejectedBillService::class);
-//
-//        $updates = $rejectedBillService->getNeedUpdateCheckedStatusByWms($asnHeaders);
-//        app(BatchUpdateService::class)->batchUpdate('rejected_bills', $updates);
-//        dump($updates);
-//        //$logisticNumberReturn = $rejectedBillService->getLogisticNumberReturn($arr);
-//        //$rejectedBills = $rejectedBillService->getRejectedBills($logisticNumberReturn);
-//    }
+    public function testCarbon()
+    {
+        $month_begin = date('Y-m-01 00:00:00');
+        dump($month_begin);
+        dd(Carbon::parse($month_begin)->isAfter(Carbon::parse('2020-12-01 00:00:00')));
+    }
+
+    public function testGet()
+    {
+        $service = new OrderService();
+        $count = $service->getCurrentFinishedOrders_byOwnerId(7);
+        dd($count);
+    }
 
     public function updateRejectBillCheckedStatus()
     {

+ 68 - 5
app/Services/OrderService.php

@@ -607,10 +607,7 @@ class OrderService
     }
 
     public function pushQueue($orderHeaders){
-        $orders = Order::query()->with(["logistic","packages.commodities.commodity"])
-            ->where('wms_status','订单完成')
-            ->whereIn('code',data_get($orderHeaders,'*.orderno'))
-            ->get();
+        $orders = Order::query()->with(["logistic","packages.commodities.commodity"])->where('wms_status','订单完成')->whereIn('code',data_get($orderHeaders,'*.orderno'))->get();
         $orders->each(function($order){
             dispatch(new OrderCreateInstantBill($order));
         });
@@ -661,8 +658,9 @@ class OrderService
 
         unset($owners,$logistics,$shops,$warehouses,$batches);
         // 转换插入 3s
+        $this->pushOrderCreatedCountCache($created_params);
         if(count($created_params) > 0){
-            collect($created_params)->chunk(3500)->each(function($inner_params){
+            collect($created_params)->chunk(1000)->each(function($inner_params){
                 $arr = $inner_params->toArray();
                 $this->insert($arr);
                 dispatch(new OrderFreeze($arr));
@@ -677,6 +675,7 @@ class OrderService
         });
         unset($update_order);
         if(count($update_params)==0)return;
+        $this->pushOrderUpdatedCountCache($orders,$update_params);
         $this->batchUpdate($update_params);
         dispatch(new OrderFreeze($update_params));
         unset($update_params);
@@ -1104,4 +1103,68 @@ class OrderService
         return $count->c;
     }
 
+    public function pushOrderUpdatedCountCache($orders,$update_params)
+    {
+        /** @var DataHandlerService $dataHandlerService */
+        $dataHandlerService =  app(DataHandlerService::class);
+        $order_map = $dataHandlerService->dataHeader(['code'],$orders);
+        $owner_map = [];
+        $month_begin =date('Y-m-01 00:00:00');
+        foreach ($update_params as $update_param) {
+            if(!($update_param['wms_status'] ?? false) || $update_param['wms_status']!='订单完成')continue;
+            $wms_EditTime = \Illuminate\Support\Carbon::parse($update_param['wms_edittime']);
+            if($wms_EditTime->isBefore($month_begin))continue;
+            $owner_id = $update_param['owner_id'] ?? false;
+            if(!$owner_id)continue;
+            $order = $dataHandlerService->getKeyValue(['code'=>$update_param['code']],$order_map);
+            if(!$order)continue;
+            if($order['wms_status'] ==='订单完成')continue;
+            if(!array_key_exists($owner_id,$owner_map))$owner_map[$owner_id]=1;
+            else $owner_map[$owner_id]+=1;
+        }
+        foreach ($owner_map as $owner_id=>$count) {
+            $this->setCurrentFinishedOrders_byOwnerId($owner_id,$count);
+        }
+    }
+
+    public function pushOrderCreatedCountCache($created_params)
+    {
+        $owner_map=[];
+        $month_begin =date('Y-m-01 00:00:00');
+        foreach ($created_params as $created_param) {
+            $owner_id = $created_param['owner_id'] ?? false;
+            $wms_EditTime = \Illuminate\Support\Carbon::parse($created_param['wms_edittime']);
+            if($wms_EditTime->isBefore($month_begin))continue;
+            if(!$owner_id)continue;
+            if($created_param['wms_status']!=='订单完成')continue;
+            if(!array_key_exists($owner_id,$owner_map)) $owner_map[$owner_id]=1;
+            else  $owner_map[$owner_id]+=1;
+        }
+        foreach ($owner_map as $owner_id=>$count) {
+            $this->setCurrentFinishedOrders_byOwnerId($owner_id,$count);
+        }
+    }
+
+    private function setCurrentFinishedOrders_byOwnerId($id,$count,$cancelCount = 0)
+    {
+        $sum = Cache::get("order_count_ownerId_{$id}",function()use($id){
+            return Order::query()
+                ->where('owner_id',$id)
+                ->where('wms_status','订单完成')
+                ->where('wms_edittime','>=',date('Y-m-01 00:00:00'))->count();
+        });
+        $sum += $count;
+        $sum -= $cancelCount;
+        Cache::put("order_count_ownerId_{$id}",$sum,date('Y-m-t 23:59:59'));
+    }
+
+    public function getCurrentFinishedOrders_byOwnerId($id): int
+    {
+        return Cache::get("order_count_ownerId_{$id}",function()use($id){
+            return Order::query()->where('owner_id',$id)
+                ->where('wms_status','订单完成')
+                ->where('wms_edittime','>=',date('Y-m-01 00:00:00'))
+                ->count();
+        });
+    }
 }

+ 11 - 9
resources/views/order/issue/create.blade.php

@@ -11,13 +11,13 @@
                     <form action="{{url('order/issue/store')}}" method="post">
                         @csrf
                         @method('POST')
-                        <input type="hidden" name="rejected_bill_id" :value='rejectedBill.id'>
                         <input type="hidden" name="order_id" :value='order.id'>
                         <input type="hidden" name="second_order_id" :value='second_order_id'>
+                        <input type="hidden" name="logistic_number_return" :value='logistic_number_return'>
                         <div class="form-group row">
                             <label for="logistic_number_return" class="col-2 col-form-label text-right ">退回运单号</label>
                             <div class="col-8 ">
-                                <input type="text" name="logistic_number_return" id="logistic_number_return" class="form-control col-lg-5 @error('logistic_number_return') is-invalid @enderror"
+                                <input type="text" name="logistic_number_return_" id="logistic_number_return" class="form-control col-lg-5 @error('logistic_number_return') is-invalid @enderror"
                                        v-model="logistic_number_return"
                                        value="@if(old('logistic_number_return')){{old('logistic_number_return')}}@endif"
                                        @blur="checkLogisticNumberReturn">
@@ -211,12 +211,17 @@
                             </div>
                         </div>
                         <div class="form-group row">
-                            <label for="" class="col-2 col-form-label text-right ">处理结果</label>
+                            <label for="" class="col-2 col-form-label text-right ">情况说明</label>
                             <div class="col-8">
                                 <textarea name="result_explain" class="form-control"></textarea>
                             </div>
                         </div>
-
+                        <div class="form-group row">
+                            <label for="" class="col-2 col-form-label text-right ">处理结果</label>
+                            <div class="col-8">
+                                <textarea name="content" class="form-control"></textarea>
+                            </div>
+                        </div>
                         <div class="form-group row">
                             <label for="logistic_indemnity_money"
                                    class="col-2 col-form-label text-right ">承运商赔偿金额</label>
@@ -368,15 +373,12 @@
                     let data = {logisticNumberReturn: this.logistic_number_return};
                     axios.post("{{url('apiLocal/order/issue/orderIssueHasLogisticNumberReturn')}}", data).then(function (res) {
                         if (res.data.success) {
-                            if (res.data.order) {
-                                _this.order = res.data.order;
-                            }
                             if (res.data.rejectedBill) {
                                 _this.rejectedBill = res.data.rejectedBill;
                             }
-                            if (res.data.meg) {
+                            if (res.data.message) {
                                 tempTip.setDuration(3000);
-                                tempTip.showSuccess(res.data.meg);
+                                tempTip.showSuccess(res.data.message);
                             }
                             _this.isSubmit = true;
                         } else {