LD 5 лет назад
Родитель
Сommit
8c4e0a49bb

+ 5 - 7
app/Http/Controllers/OrderTrackingController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Logistic;
 use App\OracleActAllocationDetails;
 use App\OracleBasCustomer;
 use App\OracleDOCOrderHeader;
@@ -28,7 +29,8 @@ class OrderTrackingController extends Controller
         $owners =  app(OwnerService::class)->getAuthorizedOwners();
         $service = app('orderTrackingService');
         $trackOrders = $service->paginate($request->input());
-        return view('order.tracking.index', compact('owners', 'trackOrders'));
+        $logistics = Logistic::all();
+        return view('order.tracking.index', compact('owners', 'trackOrders','logistics'));
     }
 
     public function logisticUpdateApi(Request $request)
@@ -36,9 +38,7 @@ class OrderTrackingController extends Controller
         if (!Gate::allows('订单管理-跟踪-物流公司编辑'))
             return redirect(url('/'));
         try {
-            $bool = OrderTracking::query()
-                ->where('id', $request->input('id'))
-                ->update([$request->input('param') => $request->input('value')]);
+            $bool = app(OrderTrackingService::class)->updateOrderTracingAndSyc($request->input('id'),$request->input('param'),$request->input('value'));
             LogService::log(__METHOD__, __FUNCTION__, '更新成功' . json_encode($request->getContent()) );
             return ['success' => $bool];
         } catch (\Exception $e) {
@@ -52,9 +52,7 @@ class OrderTrackingController extends Controller
         if (!Gate::allows('订单管理-跟踪-仓库编辑'))
             return redirect(url('/'));
         try {
-            $bool = OrderTracking::query()
-                ->where('id', $request->input('id'))
-                ->update([$request->input('param') => $request->input('value')]);
+            $bool = app(OrderTrackingService::class)->updateOrderTracingAndSyc($request->input('id'),$request->input('param'),$request->input('value'));
             LogService::log(__METHOD__, __FUNCTION__, '更新成功' . json_encode($request->getContent()));
             return ['success' => $bool];
         } catch (\Exception $e) {

+ 30 - 40
app/Http/Controllers/TestController.php

@@ -476,52 +476,20 @@ class TestController extends Controller
     }
 
 
-    public function test3(){
+    public function test3()
+    {
 
         /** @var DataHandlerService $dataHandlerService */
         $dataHandlerService = app('dataHandlerService');
         $startDate = \Illuminate\Support\Carbon::parse('2020-05-06 13:16:51')->toDateTimeString();
         /** @var OrderTrackingService $orderTrackingService */
         $orderTrackingService  = app('orderTrackingService');
-//        $notes = '123132';
-////                $notes = str_replace('【','[',$notes);
-//        if (strpos($notes, '[')) {
-//            $arr= str_split($notes,strpos($notes,'['));
-//            $client = $arr[0] ?? '';
-//            $order_remark = $arr[1] ?? '';
-//            $order_remark = str_replace(['[',']'],'',$order_remark);
-//        }
-
-//        /** @var OwnerService $ownerService */
-//        $ownerService = app('ownerService');
-//        $owners = $ownerService->获取订单跟踪的货主();
-//        $ownerIds = data_get($owners, '*.code');
-//        var_dump('query - start',Carbon::now());
-//        OracleDOCOrderHeader::query()
-//            ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
-//            ->where('addtime', '>=', $startDate)
-//            ->whereIn('customerID', $ownerIds)
-//            ->get();
-//
-//        OracleDOCOrderHeader::query()
-//            ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
-//            ->where('EditTime','>=',$startDate)
-//            ->whereColumn('EditTime','<>','addtime')
-//            ->whereIn('customerID', $ownerIds)
-//            ->get();
-//        var_dump('query - end',Carbon::now());
-
-
-        $orderIssues = \App\OrderIssue::query()->get();
-        $logistic_number_returns = [];
-        $rejectedBills = [];
-        foreach ($orderIssues as $orderIssue) {
-           $rejectedBill =  $orderIssue->hasOne(RejectedBill::class, 'id', 'rejected_bill_id')->first();
-            $rejectedBills[] =$rejectedBill;
-            $logistic_number_returns[]  = $rejectedBill->logistic_number_return ?? '';
-//            $orderIssue->update(['logistic_number_return'=>$orderIssue->rejectedBill->logistic_number_return ?? null]);
-        }
-        dd($rejectedBills,$logistic_number_returns);
+
+        $data = OrderTracking::query()->with(['owner', 'commodities' => function ($query) {
+            $query->with(['commodity', 'package.order.logistic']);
+        },])->orderByDesc('created_at')->first();
+        dd($data);
+
 
 
 //    $orderTrackingService->根据设置从WMS同步追踪货主的订单($startDate);
@@ -587,6 +555,28 @@ class TestController extends Controller
         /** @var BatchUpdateService $batchUpdateService */
         $batchUpdateService = app('batchUpdateService');
         $batchUpdateService->batchUpdate('order_trackings',$fillables);
+    }
+
+    public function updateOrderTrackingLogistic(){
+        $orderTrackings = OrderTracking::query()->with('commodities.package.order')->get();
+        $order_nos = [];
 
+        foreach ($orderTrackings as $order_tracking){
+            $order = $order_tracking->commodities->package->order ?? false;
+            if($order ?? false){
+                $order_nos[] = $order['code'];
+            }
+        }
+        $order_nos =  array_unique($order_nos);
+        $orderHeaders = OracleDOCOrderHeader::query()->whereIn('OrderNo',$order_nos)->get();
+        $owners_code = data_get($orderHeaders,'*.userdefine1');
+        $logistics = Logistic::query()->where('code',$owners_code)->get();
+        $orders = Order::query()->whereIn('code',data_get($orderHeaders,'*.orderno'))->get();
+
+        foreach ($orderHeaders as $orderHeader) {
+            $order = $orders->where('code',$orderHeader->orderno)->first();
+            $logistics = $logistics->where('code',$orderHeader->userdefine1)->first();
+            $order->update(['logistic_id'=>$logistics->id]);
+        }
     }
 }

+ 13 - 4
app/Services/OrderService.php

@@ -575,19 +575,27 @@ class OrderService
             $logistics_map[$key] =  $logistic;
         }
 
+        $logistic_change = Logistic::query()->where('name','自提')->first();
+        $owner_change = Owner::query()->where('name','安桥主品')->first();
+        $logistic_an_jie = Logistic::query()->where('name','新杰物流')->first();
+
         // XXX 循环 300 个元素 3s-5s
         foreach ($orderHeaders as $orderHeader) {
-            $customerid = $orderHeader->customerid;
-
-            $owner_key = 'code='.$customerid;
+            $owner_key = 'code='.$orderHeader->customerid;
             $owner = $owners_map[$owner_key];
 
             $shop_key = 'name='.$orderHeader->issuepartyname.' owner_id='.$owner->owner_id;
             $shop = $shop_map[$shop_key] ?? '';
 
-            $logistic_key = 'code='.$customerid;
+            $logistic_key = 'code='. $orderHeader->userdefine1;
             $logistic = $logistics_map[$logistic_key] ?? '';
 
+            // change logistic to 新杰物流
+            // $logistic 自提 and $owner 安桥主品
+            if($logistic_change->id == $logistic->id && $owner_change->id == $owner->id){
+                $logistic = $logistic_an_jie;
+            }
+
             $fillables[] = [
                 'code' => $orderHeader->orderno ,
                 'owner_id' => $owner->id ?? '',
@@ -604,6 +612,7 @@ class OrderService
                 'client_code' => $orderHeader->soreference1,
                 'wms_edittime' => $orderHeader->edittime,
             ];
+
         }
         try {
             if (count($fillables) > 0) {

+ 21 - 3
app/Services/OrderTrackingService.php

@@ -44,10 +44,14 @@ class OrderTrackingService
     {
         $query = $this->getQuery($params);
 
-
-        if ($params['client_code'] ?? false)    // 订单号
+        if (isset($params['client_code'])|| isset($params['logistic_id']))     // client_code logistic
             $query->whereHas('commodities.package.order', function ($query) use ($params) {
-                $query->where('client_code', $params['client_code']);
+                if($params['client_code'] ?? false){
+                    $query->where('client_code', $params['client_code']);
+                }
+                if(isset($params['logistic_id']) ){
+                    $query->where('logistic_id',$params['logistic_id']);
+                }
             });
 
         if ($params['client'] ?? false)  // 客户
@@ -302,4 +306,18 @@ class OrderTrackingService
             $batchUpdateService->batchUpdate('order_trackings', $multipleData);
         }
     }
+
+    public function updateOrderTracingAndSyc($id,$param,$value){
+        $order_tracking = OrderTracking::query()
+            ->with('commodities.package.order')
+            ->where('id', $id)
+            ->first();
+        $order_id = $order_tracking->commodities->package->order->id ?? false;
+        if(!$order_id){return ['success'=> false];}
+        $bool= OrderTracking::query()
+            ->whereHas('commodities.package.order', function ($query) use ($order_id) {
+                $query->where('id', $order_id);
+            })->update([$param=>$value]);
+        return ['success'=> $bool];
+    }
 }

+ 7 - 0
resources/sass/layout.scss

@@ -44,6 +44,7 @@ table,table.table-striped tbody{
         &.table-header-layer-1:nth-child(4){
             background: #aaeace;
         }
+
     }
     th{
         &.td-warm{
@@ -58,6 +59,9 @@ table,table.table-striped tbody{
         &.td-yellow{
             background: #f8eea0;
         }
+        &.td-calm{
+            background: #c6d8e3;
+        }
     }
     td,tr:nth-of-type(odd){
         &.td-warm{
@@ -72,6 +76,9 @@ table,table.table-striped tbody{
         &.td-yellow{
             background: #fcfaec;
         }
+        &.td-calm{
+            background: #ddeffa;
+        }
     }
 
     tr:nth-child(even) td, tr:nth-child(even){

+ 70 - 55
resources/views/order/tracking/index.blade.php

@@ -52,96 +52,96 @@
                             <input id="all" type="checkbox" @click="checkAll($event)"/>
                         </th>
                         <th>序号</th>
-                        <th style="min-width: 75px">公司</th>
-                        <th>订单号</th>
-                        <th style="min-width: 120px">WEB+订单号</th>
-                        <th style="min-width: 120px"> 提货日期</th>
-                        <th style="min-width: 120px">销售</th>
-                        <th style="min-width: 120px">客户</th>
-                        <th>SKU</th>
-                        <th style="min-width: 120px">物料描述</th>
-                        <th>数量</th>
-                        <th style="min-width: 120px">订单备注</th>
-                        <th>重量</th>
-                        <th>体积m³</th>
-                        <th style="min-width: 120px">托盘合计</th>
-                        <th style="min-width: 120px">运输方式</th>
-                        <th>运输单号</th>
-                        <th style="min-width: 120px">到达城市</th>
-                        <th style="min-width: 200px">应送达时间</th>
-                        <th style="min-width: 120px">是否赶上卡班</th>
-                        <th style="min-width: 120px">到货情况</th>
-                        <th style="min-width: 200px">签收日期</th>
-                        <th style="min-width: 120px">签收单情况</th>
-                        <th style="min-width: 120px">备注</th>
+                        <th class="td-warm" style="min-width: 75px">公司</th>
+                        <th class="td-warm">订单号</th>
+                        <th class="td-warm" style="min-width: 120px">WEB+订单号</th>
+                        <th class="td-warm" style="min-width: 120px"> 提货日期</th>
+                        <th class="td-warm" style="min-width: 120px">销售</th>
+                        <th class="td-yellow" style="min-width: 120px">客户</th>
+                        <th class="td-yellow">SKU</th>
+                        <th class="td-yellow" style="min-width: 120px">物料描述</th>
+                        <th class="td-yellow">数量</th>
+                        <th class="td-yellow" style="min-width: 120px">订单备注</th>
+                        <th class="td-yellow">重量</th>
+                        <th class="td-yellow">体积m³</th>
+                        <th class="td-yellow" style="min-width: 120px">托盘合计</th>
+                        <th class="td-yellow" style="min-width: 120px">运输方式</th>
+                        <th class="td-yellow">运输单号</th>
+                        <th class="td-yellow" style="min-width: 120px">到达城市</th>
+                        <th class="td-calm" style="min-width: 200px">应送达时间</th>
+                        <th class="td-calm" style="min-width: 120px">是否赶上卡班</th>
+                        <th class="td-calm" style="min-width: 120px">到货情况</th>
+                        <th class="td-calm" style="min-width: 200px">签收日期</th>
+                        <th class="td-calm" style="min-width: 120px">签收单情况</th>
+                        <th class="td-calm" style="min-width: 120px">备注</th>
                     </tr>
                     <tr v-for="(trackOrder,index) in trackOrders" class="table-body text-center"  :key="trackOrder.id">
                         <td>
                             <input id="all" type="checkbox" :value="trackOrder.id" v-model="checkData">
                         </td>
                         <td>@{{ index+1 }}</td>
-                        <td class="text-decoration-none">@{{ trackOrder.ownerName }}</td>
-                        <td>@{{ trackOrder.orderClientCode }}</td>
-                        <td>
+                        <td  class="text-decoration-none td-warm">@{{ trackOrder.ownerName }}</td>
+                        <td class="td-warm">@{{ trackOrder.orderClientCode }}</td>
+                        <td class="td-warm">
                             @can('订单管理-跟踪-仓库编辑')
                                 <input class="form-control form-control-sm" :value="trackOrder.web_order_number" @keydown.enter="warehouseUpdate($event,'web_order_number',trackOrder)" >
                             @else
                                 @{{ trackOrder.web_order_number }}
                             @endcan
                         </td>
-                        <td>
+                        <td class="td-warm">
                             @can('订单管理-跟踪-仓库编辑')
                                 <input class="form-control form-control-sm" type="datetime-local" :value="trackOrder.pick_up_at | dateTime" @change="warehouseUpdate($event,'pick_up_at',trackOrder)" >
                             @else
                                 @{{ trackOrder.pick_up_at }}
                             @endcan
                         </td>
-                        <td>
+                        <td class="td-warm">
                             @can('订单管理-跟踪-仓库编辑')
-                                <input class="form-control form-control-sm" :value="trackOrder.sale" @change="warehouseUpdate($event,'sale',trackOrder)" >
+                                <input class="form-control form-control-sm" :value="trackOrder.sale" @keydown.enter="warehouseUpdate($event,'sale',trackOrder)" >
 
                             @else
                                 @{{ trackOrder.sale }}
                             @endcan
                         </td>
-                        <td>
+                        <td class="td-yellow">
                             @can('订单管理-跟踪-仓库编辑')
-                                <input class="form-control form-control-sm" :value="trackOrder.client" @change="warehouseUpdate($event,'client',trackOrder)" >
+                                <input class="form-control form-control-sm" :value="trackOrder.client" @keydown.enter="warehouseUpdate($event,'client',trackOrder)" >
                             @else
                                 @{{ trackOrder.client }}
                             @endcan
                         </td>
-                        <td>@{{ trackOrder.sku.sku }}</td>
-                        <td>@{{ trackOrder.sku.skuName }}</td>
-                        <td>@{{ trackOrder.sku.skuAmount }}</td>
-                        <td>
+                        <td class="td-yellow">@{{ trackOrder.sku.sku }}</td>
+                        <td class="td-yellow">@{{ trackOrder.sku.skuName }}</td>
+                        <td class="td-yellow">@{{ trackOrder.sku.skuAmount }}</td>
+                        <td class="td-yellow">
                             @can('订单管理-跟踪-仓库编辑')
-                                <input class="form-control form-control-sm" :value="trackOrder.order_remark" @change="warehouseUpdate($event,'order_remark',trackOrder)" >
+                                <input class="form-control form-control-sm" :value="trackOrder.order_remark" @keydown.enter="warehouseUpdate($event,'order_remark',trackOrder)" >
                             @else
-                                @{{ trackOrder.client }}
+                                @{{ trackOrder.order_remark }}
                             @endcan
                         </td>
-                        <td>@{{ trackOrder.packageWeight }}</td>
-                        <td>@{{ trackOrder.packageBulk |millimeterToCubic}}</td>
-                        <td>
+                        <td class="td-yellow">@{{ trackOrder.packageWeight }}</td>
+                        <td class="td-yellow">@{{ trackOrder.packageBulk |millimeterToCubic}}</td>
+                        <td class="td-yellow">
                             @can('订单管理-跟踪-仓库编辑')
-                                <input class="form-control form-control-sm" :value="trackOrder.order_remark" @change="displayInput($event,'order_remark',trackOrder)" >
+                                <input class="form-control form-control-sm" :value="trackOrder.pallet_total" @keydown.enter="warehouseUpdate($event,'pallet_total',trackOrder)" >
                             @else
                                 @{{ trackOrder.pallet_total }}
                             @endcan
                         </td>
-                        <td>@{{ trackOrder.packageLogistic }}</td>
-                        <td>@{{ trackOrder.packageLogisticNumber}}</td>
-                        <td>@{{ trackOrder.orderCity}}</td>
+                        <td class="td-yellow">@{{ trackOrder.packageLogistic }}</td>
+                        <td class="td-yellow">@{{ trackOrder.packageLogisticNumber}}</td>
+                        <td class="td-yellow">@{{ trackOrder.orderCity}}</td>
 
-                        <td>
+                        <td class="td-calm">
                             @can('订单管理-跟踪-物流公司编辑')
                                 <input class="form-control form-control-sm" type="datetime-local"  @change="logisticUpdate($event,'planning_sent_at',trackOrder)"  :value="trackOrder.planning_sent_at | dateTime" >
                             @else
                                 @{{ trackOrder.planning_sent_at }}
                             @endcan
                         </td>
-                        <td>
+                        <td class="td-calm">
                             @can('订单管理-跟踪-物流公司编辑')
                                 <select class="form-control form-control-sm" :value="trackOrder.is_on_duty_shift" @change="logisticUpdate($event,'is_on_duty_shift',trackOrder)" >
                                     <option v-for="item in isOnDutyShift" :value="item">@{{ item }}</option>
@@ -150,16 +150,16 @@
                                 @{{ trackOrder.is_on_duty_shift }}
                             @endcan
                         </td>
-                        <td>
+                        <td class="td-calm">
                             @can('订单管理-跟踪-物流公司编辑')
-                                <select class="form-control form-control-sm" :value="trackOrder.is_arrival" @change="logisticUpdate($event,'is_arrival',trackOrder)" :data_value="trackOrder.id">
+                                <select class="form-control form-control-sm" :value="trackOrder.is_arrival" @change="logisticUpdate($event,'is_arrival',trackOrder)" >
                                     <option v-for="item in isArrival" :value="item">@{{ item }}</option>
                                 </select>
                             @else
                                 @{{ trackOrder.is_arrival }}
                             @endcan
                         </td>
-                        <td>
+                        <td class="td-calm">
                             @can('订单管理-跟踪-物流公司编辑')
                                 <input class="form-control form-control-sm" type="date"  @change="logisticUpdate($event,'signed_at',trackOrder)" :value="trackOrder.signed_at">
                             @else
@@ -168,14 +168,14 @@
                         </td>
                         <td>
                             @can('订单管理-跟踪-物流公司编辑')
-                                <input class="form-control form-control-sm" @keyup.enter="warehouseUpdate($event,'receive_bill_status',trackOrder)" :value="trackOrder.receive_bill_status">
+                                <input class="form-control form-control-sm" @keyup.enter="logisticUpdate($event,'receive_bill_status',trackOrder)" :value="trackOrder.receive_bill_status">
                             @else
                                 @{{ trackOrder.receive_bill_status }}
                             @endcan
                         </td>
                         <td>
                             @can('订单管理-跟踪-物流公司编辑')
-                                <input class="form-control form-control-sm" @keyup.enter="warehouseUpdate($event,'remark',trackOrder)" :value="trackOrder.remark">
+                                <input class="form-control form-control-sm" @keyup.enter="logisticUpdate($event,'remark',trackOrder)" :value="trackOrder.remark">
                             @else
                                 @{{ trackOrder.remark }}
                             @endcan
@@ -229,6 +229,10 @@
                     @foreach($owners as $owner)
                     {name: '{{ $owner->id }}', value: '{{ $owner->name}}'},
                     @endforeach],
+                logistics:[
+                    @foreach($logistics as $logistic)
+                    {name: '{{ $logistic->id }}', value: '{{ $logistic->name}}'},
+                    @endforeach],
                 checkData:[],
                 seekOwners : [],
                 name : "",
@@ -265,6 +269,7 @@
                     [
                         {name:'end_at',type:'dateTime',tip:'结束日期',placeholder: '结束日期'},
                         {name:'logistic_number',type:'input',tip:'运输单号',placeholder:'运输单号'},
+                        {name:'logistic_id',type:'select',tip:'物流方式',placeholder:'物流方式',data:this.logistics},
                         {name:'sku',type:'input',tip:'SKU',placeholder: '商品编号'},
                     ]
                 ];
@@ -356,11 +361,12 @@
                         return
                     }
                     let data = {id:trackingOrder.id,param:param,value:value}
-                    axios.post('{{url("apiLocal/order/tracking/warehouseUpdate")}}',data).then(function(res){
-                        if(res.data.success){
+                    let _this = this
+                    axios.post('{{url("apiLocal/order/tracking/warehouseUpdate")}}',data).then(function(response){
+                        if(response.data.success){
                             tempTip.setDuration(2000)
                             tempTip.showSuccess('更新成功')
-                            trackingOrder[param] = value
+                            _this.modifyOrderTracking(param,value,trackingOrder)
                         }else{
                             tempTip.setDuration(2000)
                             tempTip.show('更新失败')
@@ -376,14 +382,15 @@
                         return
                     }
                     let data = {id:trackingOrder.id,param:param,value:value}
+                    let _this = this
                     axios.post('{{url("apiLocal/order/tracking/logisticUpdate")}}',data).then(function(response){
                         if(response.data.success){
                             tempTip.setDuration(2000)
                             tempTip.showSuccess('更新成功')
+                            _this.modifyOrderTracking(param,value,trackingOrder)
                         }else{
                             tempTip.setDuration(2000)
                             tempTip.show('更新失败')
-                            trackingOrder[param] = value
                         }
                     }).catch(function(error){
                         tempTip.setDuration(4000)
@@ -391,6 +398,13 @@
                     })
 
                 },
+                modifyOrderTracking(param,value, trackingOrder){
+                    this.trackOrders.forEach(function(item){
+                        if(item['orderClientCode'] === trackingOrder['orderClientCode']){
+                            item[param] = value
+                        }
+                    })
+                },
                 getTrackOrder(id){
                     return this.trackOrders.filter(function(trackOrder){
                         return parseInt(id) === trackOrder['id'];
@@ -400,7 +414,7 @@
                     this.trackOrders.forEach(function(trackOrder){
                         if(parseInt(data['id']) === trackOrder['id'] ){
                             trackOrder[data['param']] = data['value'];
-                            return;
+                            return
                         }
                     });
                 },
@@ -420,6 +434,7 @@
                     let token = '{{ csrf_token() }}';
                     excelExport(true, this.checkData, url, null, token);
                 },
+
             },
             filters:{
                 millimeterToCubic:function(val){