ajun преди 5 години
родител
ревизия
017a771beb

+ 31 - 18
app/Http/Controllers/TestController.php

@@ -618,29 +618,16 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
 
     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');
+        $orderTrackingService = app('orderTrackingService');
         /** @var OrderService $orderService */
         $orderService = app(OrderService::class);
-        /** @var OracleDOCOrderHeaderService $orderHeaderService */
-        $orderHeaderService = app(OracleDOCOrderHeaderService::class);
-        /** @var OracleDOCOrderHeader $orderHeaders */
-//        $startDate = \Illuminate\Support\Carbon::parse('2020-05-06 13:16:51')->toDateTimeString();
-        //$orderTrackingService->trackingWmsOrder($startDate);
         $owners = app(OrderTrackingOwnerService::class)->getTrackingOrderOwner();
         $startDate = \Illuminate\Support\Carbon::parse('2020-09-30 00:00:00')->toDateTimeString();
-//        $endData = \Illuminate\Support\Carbon::parse('2020-09-29 00:00:00')->toDateTimeString();
-        $orderHeaders = OracleDOCOrderHeader::query()
-            ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
-            ->where('addTime','>=',$startDate)
-//            ->where('addTime','<=',$endData)
-            ->whereIn('customerID',data_get($owners,'*.code'))
+        $orderHeaders = OracleDOCOrderHeader::query()->with(['oracleDOCOrderDetails', 'actAllocationDetails', 'oracleBASCode'])
+            ->where('addTime', '>=', $startDate)
+            ->whereIn('customerID', data_get($owners, '*.code'))
             ->get();
-//        dd($orderHeaders);
-//        $orderHeaders = app(OracleDOCOrderHeaderService::class)->getWmsOrderOnStartDateCreate($startData);
         $orderService->createByWmsOrder($orderHeaders);
         $orderTrackingService->createByWmsOrderHeader($orderHeaders);
         $orderService->updateByWmsOrders($orderHeaders);
@@ -651,6 +638,7 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
         dd(Request::all());
         $users=User::query();
     }
+
     public function orderTrckingOwnerAll(){
         $owners = Owner::all();
         foreach ($owners as $owner) {
@@ -672,6 +660,31 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
             $order_code = $order->client_code;
             $orderTracking->update(['order_client_code'=>$order_code]);
         }
-     }
+    }
+
+    public function deleteWmsOrderIsCancel()
+    {
+        $startDate = \Illuminate\Support\Carbon::parse('2020-09-01 00:00:00')->toDateTimeString();
+        $endDate = \Illuminate\Support\Carbon::parse('2020-10-13 00:00:00')->toDateTimeString();
+        $owners = app(OrderTrackingOwnerService::class)->getTrackingOrderOwner();
+        $orderHeaders = OracleDOCOrderHeader::query()->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
+            ->where('addTime','>=',$startDate)
+            ->where('addTime','<=',$endDate)
+            ->whereIn('customerID',data_get($owners,'*.code'))
+            ->get();
+        app(OrderTrackingService::class)->删除订单追踪_订单取消($orderHeaders);
+    }
+
+    public function deleteRedundantOrderTrackingAndOrderInfo()
+    {
+        $startDate = \Illuminate\Support\Carbon::parse('2020-10-01 00:00:00')->toDateTimeString();
+        $owners = app(OrderTrackingOwnerService::class)->getTrackingOrderOwner();
+        $orderHeaders = OracleDOCOrderHeader::query()->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
+            ->where('addTime','>=',$startDate)
+            ->whereIn('customerID',data_get($owners,'*.code'))
+            ->get();
+        app(OrderPackageService::class)->删除多余的订单包裹_根据WMS订单($orderHeaders);
+    }
+
 
 }

+ 0 - 97
app/Services/CommodityService.php

@@ -36,103 +36,6 @@ Class CommodityService
         return Commodity::query()->insert($params);
     }
 
-    public function getWASCommoditiesByWMSOrderHeaders($orderHeaders)
-    {
-        $skus = [];
-        $customerIDs = [];
-        $logs = [];
-        $errs = [];
-        $fillables = [];
-        $owners_list = [];
-
-        foreach ($orderHeaders as $orderHeader) {
-            $customerIDs[] = $orderHeader['customerid'];
-            $oracleDOCOrderDetails = $orderHeader['oracleDOCOrderDetails'] ?? [];
-            foreach ($oracleDOCOrderDetails as $detail) {
-                $skus[] = $detail['sku'];
-            }
-        }
-        $skus = array_unique($skus);
-        $customerIDs = array_unique($customerIDs);
-
-        $owners = Owner::query()->whereIn('code',$customerIDs)->get();
-
-        foreach ($owners as $owner) {
-            $key = 'code='.$owner->code;
-            $owners_list[$key] = $owner;
-        }
-
-        $commodities = Commodity::query()->with('owner')->whereIn('sku',$skus)->get();
-
-        if(count($skus) > $commodities->count()){ //需要更新
-            $commoditiesSku = data_get($commodities,'*.sku');
-            $diffSku = array_diff($skus,$commoditiesSku);
-            $baseSKUs = OracleBasSKU::query()->whereIn('sku',$diffSku)->whereIn('CustomerID',$customerIDs)->get();
-            foreach ($baseSKUs as $baseSKU) {
-                $key = 'code='.$baseSKU['customerid'];
-                $owner = $owners_list[$key] ?? '';
-                $fillables[] = [
-                    'name' => $baseSKU['descr_c'],
-                    'sku' => $baseSKU['sku'],
-                    'owner_id' => $owner['id'] ?? '',
-                    'length' => $baseSKU['skulength'] ?? '',
-                    'width' => $baseSKU['skuwidth'] ?? '',
-                    'height' => $baseSKU['skuhigh'] ?? '',
-                    'volumn' => $baseSKU['cube'],
-                ];
-            }
-        }
-        try {
-            if(count($fillables) > 0){
-                Commodity::query()->create($fillables);
-                LogService::log(__METHOD__,__FUNCTION__,'添加商品信息'.json_encode($fillables));
-            }
-        } catch (\Exception $e) {
-            array_push($errs,json_encode($fillables).$e->getMessage().$e->getTraceAsString());
-        }
-        unset($customerIDs,$logs,$errs,$fillables);
-        return Commodity::query()->with('owner')->whereIn('sku',$skus)->get();
-    }
-
-    public function syncCommodityAttribute($noAttributeCommodity){
-        /** @var BatchUpdateService $batchUpdateService */
-        $batchUpdateService = app('batchUpdateService');
-        $multipleData = [];
-        $multipleData[] = ['id','length','width','height','volumn'];
-
-        $noAttributeCommodity = array_unique($noAttributeCommodity);
-        if(count($noAttributeCommodity) > 1){
-            $SkuCode = data_get($noAttributeCommodity,'*.sku');
-            $BasSKUs = OracleBasSKU::query()->whereIn('sku',$SkuCode)->get();
-            foreach ($noAttributeCommodity as $commodity){
-                $BasSKU = $BasSKUs
-                    ->where('sku',$commodity['code'])
-                    ->where('CustomerID',$commodity['owner']['code'])
-                    ->first();
-                $update = [
-                    'id' => $commodity['id'],
-                    'length' =>  $BasSKU['skulength'] ?? 0,
-                    'width' => $BasSKU['skuwidth'] ?? 0,
-                    'height' => $BasSKU['skuhigh'] ?? 0,
-                    'volumn' => $BasSKU['cube'] ?? 0,
-                ];
-                if($commodity['length'] !==$update['length'] ||$commodity['width'] !==$update['width'] ||$commodity['height'] !==$update['height'] ||$commodity['volumn'] !==$update['volumn'] ){
-                    $multipleData[] = $update;
-                }
-            }
-        }
-        if(count($multipleData) > 1){
-            try {
-                $tableName = 'commodities';
-                $batchUpdateService->batchUpdate($tableName, $multipleData);
-                LogService::log(__METHOD__,__FUNCTION__,'批量更新'.count($multipleData).json_encode($multipleData));
-            } catch (\Exception $e) {
-                LogService::log(__METHOD__,__FUNCTION__,'批量更新失败'.json_encode($multipleData).$e->getMessage(),$e->getTraceAsString());
-            } finally {
-                unset($multipleData);
-            }
-        }
-    }
 
     public function getOwnerCommodities(array $params){
         $query = Commodity::query();

+ 0 - 33
app/Services/LogisticService.php

@@ -13,39 +13,6 @@ Class LogisticService
         return Logistic::query()->select($column)->get();
     }
 
-
-    public function getWASLogisticsByWMSOrderHeaders($WMSOrderHeaders){
-        $carrierIds = [];
-        foreach ($WMSOrderHeaders as $WMSOrderHeader) {
-            $carrierIds [] = $WMSOrderHeader->carrierid;
-        }
-        $carrierIds = array_unique($carrierIds);
-        $carrierIds = array_diff($carrierIds,['*','',null]);
-        $logistics = Logistic::query()->whereIn('code',$carrierIds)->get();
-        $insert_params = [];
-        if(count($carrierIds) > count($logistics)){
-            $logistics_fillter= data_get($logistics,'*.code');
-            $logisticDiff = array_diff($carrierIds, $logistics_fillter);
-            $basCustomers = OracleBasCustomer::query()->where('Customer_Type','CA')->whereIn('CustomerID',$logisticDiff)->get();
-            foreach ($basCustomers as $basCustomer){
-                $fillable = ['name' => $basCustomer['descr_c'], 'code' => $basCustomer['customerid']];
-                array_push($insert_params,$fillable);
-            }
-        }
-        try {
-            if(count($insert_params) > 0){
-                Logistic::query()->insert($insert_params);
-                LogService::log(__METHOD__,__FUNCTION__,'批量创建 logistic'.count($insert_params).json_encode($insert_params));
-            }
-        } catch (\Exception $e) {
-            LogService::log(__METHOD__,__FUNCTION__,'创建失败 logistic error' .json_encode($insert_params). $e->getMessage().$e->getTraceAsString());
-        } finally {
-           return  $logistics = Logistic::query()->whereIn('code',$carrierIds)->get();
-        }
-    }
-
-
-
     public function firstOrCreate(array $params, array $values = null){
         $logistic = Logistic::query();
         if ($values)return $logistic->firstOrCreate($params, $values);

+ 11 - 23
app/Services/OracleDOCOrderHeaderService.php

@@ -16,30 +16,7 @@ Class OracleDOCOrderHeaderService
         }
         return $order->first();
     }
-    public function 根据时间获取在这段时间内创建的WMS订单($startDate){
-        /** @var OwnerService $ownerService */
-        $ownerService = app('ownerService');
-        $owners = $ownerService->获取订单跟踪的货主();
-        $ownerIds = data_get($owners, '*.code');
-        return OracleDOCOrderHeader::query()
-            ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
-            ->where('addtime', '>=', $startDate)
-            ->whereIn('customerID', $ownerIds)
-            ->get();
-    }
 
-    public function 根据时间获取在这段时间内更新的WMS订单($startDate){
-        /** @var OwnerService $ownerService */
-        $ownerService = app('ownerService');
-        $owners = $ownerService->获取订单跟踪的货主();
-        $ownerIds = data_get($owners, '*.code');
-        return OracleDOCOrderHeader::query()
-            ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
-            ->where('EditTime','>=',$startDate)
-            ->whereColumn('EditTime','<>','addtime')
-            ->whereIn('customerID', $ownerIds)
-            ->get();
-    }
 
     public function getWmsOrderOnStartDateCreate($startDate){
         /** @var Owner $owners */
@@ -62,4 +39,15 @@ Class OracleDOCOrderHeaderService
             ->get();
     }
 
+    /**
+     * @param OracleDOCOrderHeader $orderHeader
+     * @return array|mixed
+     */
+    public function getLogisticNumbers($orderHeader)
+    {
+        if(!$orderHeader ?? false){return [];}
+        $actAllocationDetails = $orderHeader->actAllocationDetails ?? [];
+        return array_diff(data_get($actAllocationDetails,'*.picktotraceid'),['','*',null]) ;
+    }
+
 }

+ 44 - 0
app/Services/OrderPackageCommoditiesService.php

@@ -14,6 +14,7 @@ use App\Owner;
 use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
 use Carbon\Carbon;
+use Illuminate\Support\Collection;
 
 class OrderPackageCommoditiesService
 {
@@ -263,6 +264,7 @@ class OrderPackageCommoditiesService
         $order_packages = OrderPackage::query()->with('order')->whereHas('order',function($query) use ($order_nos){
             $query->whereIn('code',$order_nos);
         })->get();
+
         $order_package_logistic_numbers_map = $dataHandlerService->dataHeader(['logistic_number'],$order_packages);
         $order_no_map = [];
         foreach ($order_package_commodities as $order_package_commodity) {
@@ -345,4 +347,46 @@ class OrderPackageCommoditiesService
     {
         return app(BatchUpdateService::class)->batchUpdateItself('order_package_commodities', $column, $params);
     }
+
+    /**
+     * @param array $logistic_numbers
+     * @return array|mixed
+     */
+    public function 删除包裹商品信息_根据快递单号($logistic_numbers)
+    {
+        $orderPackageCommodities = OrderPackageCommodities::query()->with('package')->whereHas('package',function($query)use($logistic_numbers){
+            $query->whereIn('logistic_number',$logistic_numbers);
+        })->get();
+        $ids = data_get($orderPackageCommodities, '*.id');
+        if(count($ids) == 0){return [];}
+        try {
+            OrderPackageCommodities::query()->whereIn('id', $ids)->delete();
+            LogService::log(__METHOD__,__FUNCTION__,'删除多余OrderPackageCommodities '.$orderPackageCommodities->count().json_encode($orderPackageCommodities),null);
+        } catch (\Exception $e) {
+            LogService::log(__METHOD__,__FUNCTION__,'删除多余OrderPackageCommodities error'.$orderPackageCommodities->count().json_encode($orderPackageCommodities).$e->getMessage().$e->getTraceAsString(),null);
+            return [];
+        }
+        return $ids;
+    }
+
+    /**
+     * @param array $orderNos
+     * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection
+     */
+    public function getByOrderNos($orderNos)
+    {
+        return OrderPackageCommodities::query()->with('package.order','commodity')
+            ->whereHas('package.order',function($query) use ($orderNos){
+                $query->whereIn('code',$orderNos);
+            })->get();
+    }
+
+    /**
+     * @param Collection $orders
+     * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection
+     */
+    public function getByOrders($orders)
+    {
+        return $this->getByOrderNos(data_get($orders,'*.code'));
+    }
 }

+ 54 - 31
app/Services/OrderPackageService.php

@@ -8,6 +8,7 @@ use App\OracleDOCOrderHeader;
 use App\Order;
 use App\OrderPackage;
 use App\OrderPackageCommodities;
+use App\OrderTracking;
 use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
 use Carbon\Carbon;
@@ -191,6 +192,7 @@ class OrderPackageService
         foreach ($orders as $order) {
             $orderHeader =  $dataHandlerService->getKeyValue(['orderno'=>$order->code],$order_headers_orderNo_map);
             if(!$orderHeader){ continue;}
+            if(!$orderHeader->sostatus == 90){ continue;}
             $params = $this->getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map);
             if(!$params){continue;}
             foreach ($params as $param) {
@@ -213,14 +215,15 @@ class OrderPackageService
         unset($orderHeaders);
     }
 
-    public function getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map){
+    public function getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map)
+    {
         /** @var DataHandlerService $dataHandlerService */
         $dataHandlerService = app(DataHandlerService::class);
         $actAllocationDetails = $orderHeader->actAllocationDetails;
         $logistic_numbers = array_diff(array_unique(data_get($actAllocationDetails,'*.picktotraceid')),['','*',null]);
         $params = [];
-        $created_at = Carbon::now()->format('Y-m-d H:i:s');;
-        $updated_at = Carbon::now()->format('Y-m-d H:i:s');;
+        $created_at = Carbon::now()->format('Y-m-d H:i:s');
+        $updated_at = Carbon::now()->format('Y-m-d H:i:s');
         foreach ($logistic_numbers as $logistic_number) {
             if($logistic_number == $orderHeader->orderno)continue;
             $key  = ['order_id'=>$order->id,'logistic_number'=>$logistic_number];
@@ -233,6 +236,26 @@ class OrderPackageService
         return $params;
     }
 
+    public function getUpdateParamsByOrderHeader($orderHeader,$order,$orderPackages)
+    {
+        $updated_at = Carbon::now()->format('Y-m-d H:i:s');
+        /** @var DataHandlerService $dataHandlerService */
+        $dataHandlerService = app(DataHandlerService::class);
+        $wms_logistic_number =  app(OracleDOCOrderHeaderService::class)->getLogisticNumbers($orderHeader);
+        $order_packages  = $orderPackages->where('order_id',$order->id)->get();
+        $was__logistic_number = data_get($order_packages,'*.logistic_number');
+        $arr1=  array_diff($was__logistic_number,$wms_logistic_number);
+        $arr2=  array_diff($wms_logistic_number,$was__logistic_number);
+        if(count($arr2) > 0 && count($arr1) == 0){
+            return [
+                'id'=>$order_packages->first()->id,
+                'logistic_number' => $arr1[0],
+                'updated_at'=> $updated_at,
+            ];
+        }
+        return null;
+    }
+
     public function updateOrderPackageByWmsOrder($orderHeaders){
         /** @var OrderPackageCommoditiesService $orderPackageCommoditiesService */
         $orderPackageCommoditiesService =  app(OrderPackageCommoditiesService::class);
@@ -250,7 +273,7 @@ class OrderPackageService
         foreach ($orderHeaders as $orderHeader) {
             $order = $dataHandlerService->getKeyValue(['code'=>$orderHeader->orderno ?? ''],$orders_code_map);
             if(!$order){continue;}
-            $order_packages = $order->packages;
+            $order_packages = $order->packages ?? null;
             if(!$order_packages){continue;}
             $params =$this->getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map);
             if(count($params) > 0){
@@ -266,6 +289,7 @@ class OrderPackageService
             $this->create($insertParams);
         }
         $orderPackageCommoditiesService->updateByWmsOrder($orderHeaders);
+        $this->删除多余的订单包裹_根据WMS订单($orderHeaders);
     }
 
     public function getByWmsOrders($orderHeaders){
@@ -290,31 +314,30 @@ class OrderPackageService
             return OrderPackage::query()->whereIn('logistic_number',$logistic_numbers)->get();
         }
     }
-//
-//    private function getLogisticNumbers($orderHeader)
-//    {
-//        if(!isset($orderHeader)){
-//            return [];
-//        }
-//        $logistic_numbers = [];
-//        $actAllocationDetails =  $orderHeader->actAllocationDetails;
-//        foreach ($actAllocationDetails as $actAllocationDetail)
-//        {
-//            $logistic_numbers[] = $actAllocationDetail->qty_each;
-//        }
-//        return $logistic_numbers;
-//    }
-//
-//    private function updateOrderPackage($orderHeaders,$orders_code_map,$order_packages_logistic_number_map)
-//    {
-//        /** @var DataHandlerService $dataHandlerService */
-//        $dataHandlerService = app(DataHandlerService::class);
-//
-//        $orderPackages =$this->getByWmsOrders($orderHeaders);
-//        $需要删除的包裹id = []; //
-//        foreach ($orderHeaders as $orderHeader) {
-//            $order =$dataHandlerService->getKeyValue(['code'=>$orderHeader->orderno],$orders_code_map);
-//            $order_packages =$order->packages;
-//        }
-//    }
+
+    /**
+     * @param OracleDOCOrderHeader $orderHeaders
+     */
+    public function 删除多余的订单包裹_根据WMS订单($orderHeaders)
+    {
+        if(!isset($orderHeaders)){return;}
+        if(is_array($orderHeaders) && count($orderHeaders) == 0){return;}
+        $orderPackages = $this->getByWmsOrders($orderHeaders);
+        $Was_logistic_number = data_get($orderPackages,'*.logistic_number');
+        $Wms_logistic_number = array_unique(data_get($orderHeaders,'*.actAllocationDetails.*.picktotraceid'));
+        $delete_logistic_number = array_diff($Was_logistic_number,$Wms_logistic_number);
+        if(count($delete_logistic_number) == 0){return;}
+        $delete_orderPackages = OrderPackage::query()->wherein('logistic_number',$delete_logistic_number)->get();
+        $delete_ids = app(OrderPackageCommoditiesService::class)->删除包裹商品信息_根据快递单号($delete_logistic_number);
+        try {
+            OrderPackage::query()->whereIn('logistic_number', $delete_logistic_number)->delete();
+            LogService::log(__METHOD__,__FUNCTION__,'删除多余OrderPackage '.$delete_orderPackages->count().json_encode($delete_orderPackages),null);
+            $orderTracking = OrderTracking::query()->whereIn('order_package_commodity_id', $delete_ids)->get();
+            app(OrderTrackingService::class)->deleteOrderTracings($orderTracking);
+        } catch (\Exception $e) {
+            LogService::log(__METHOD__,__FUNCTION__,'删除多余OrderPackage error'.$delete_orderPackages->count().json_encode($delete_orderPackages).$e->getMessage().$e->getTraceAsString(),null);
+        }
+    }
+
+
 }

+ 1 - 1
app/Services/OrderService.php

@@ -524,7 +524,7 @@ class OrderService
         }
         $logistic_XJWL = Logistic::query()->where('code' ,'XJWL')->first();
         foreach ($orderHeaders_map as $orderHeader) {
-            if($order_code_map[$orderHeader->orderno] ?? false)continue;
+             if($order_code_map[$orderHeader->orderno] ?? false)continue;
             $owner = $owners_code_map[$orderHeader->customerid] ?? null;
             $logistic =  $logistics_code_map[$orderHeader->userdefine1] ?? null;
             $shop = $shop_name_map[' _owner_code'.$orderHeader->customerid.' name='.$orderHeader->issuepartyname] ?? '';

+ 40 - 2
app/Services/OrderTrackingService.php

@@ -10,6 +10,7 @@ use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
 use App\Services\common\QueryService;
 use Illuminate\Support\Carbon;
+use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Auth;
 use Maatwebsite\Excel\Facades\Excel;
 
@@ -232,7 +233,7 @@ class OrderTrackingService
             if(!$order){continue ;}
             $order_header = $order_headers_map[$order->code];
             if(!$order_header){continue ;}
-
+            if($order_header->sostatus == 90){continue;}
             $client = null;
             $order_remark = null;
             if ($order_header['notes'] ?? false) {
@@ -240,7 +241,6 @@ class OrderTrackingService
                 if (strpos($notes, '[')) {
                     $arr= str_split($notes,strpos($notes,'['));
                     $client = $arr[0] ?? '';
-//                    $order_remark = $arr[1] ?? '';
                     $order_remark = str_replace(['[',']'],'', $arr[1] ?? '');
                 }
             }
@@ -312,6 +312,7 @@ class OrderTrackingService
         $update_params = [];
         $update_params[0] =['id','client','pick_up_at','order_remark','gross_weight','bulk'];
         foreach ($orderHeaders as $orderHeader) {
+            if($orderHeader->sostatus == '90'){continue;}
             $order_package_commodity_list = $order_package_commodity_order_code_map[$orderHeader->orderno] ?? false;
 
             if(!$order_package_commodity_list){continue;}
@@ -396,6 +397,7 @@ class OrderTrackingService
                 LogService::log(__METHOD__,__FUNCTION__,'批量添加 OrderTracking error'.json_encode($insert_params) .'||'.$e->getMessage(),'||'.$e->getTraceAsString());
             }
         }
+        $this->删除订单追踪_订单取消($orderHeaders);
     }
 
     public function getParamsByOrderHeaderAndOrder($orderHeader,$order){
@@ -426,5 +428,41 @@ class OrderTrackingService
         ];
     }
 
+    /**
+     * @param Collection $orderHeaders
+     */
+    public function 删除订单追踪_订单取消($orderHeaders)
+    {
+        $cancelledOrderHeaders = $orderHeaders->where('sostatus','90');
+        $orderTracking = $this->getOrderTracingByWmsOrder($cancelledOrderHeaders);
+        $this->deleteOrderTracings($orderTracking);
+    }
+
+    /**
+     * @param Collection $orderHeaders
+     * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|Collection|\Tightenco\Collect\Support\Collection
+     */
+    public function getOrderTracingByWmsOrder($orderHeaders)
+    {
+        if($orderHeaders->count() == 0){return  collect();}
+        $orderNos = data_get($orderHeaders,'*.orderno');
+        return OrderTracking::query()->with('commodities.package.order')
+            ->whereHas('commodities.package.order',function($query)use($orderNos){
+                $query->whereIn('code',$orderNos);
+            })->get();
+    }
 
+    /**
+     * @param Collection $orderTracking
+     */
+    public function deleteOrderTracings($orderTracking)
+    {
+        if($orderTracking->count() == 0){return;}
+        try {
+            OrderTracking::query()->whereIn('id', data_get($orderTracking,'*.id'))->delete();
+            LogService::log(__METHOD__,__FUNCTION__,'删除订单取消的OrderTracking '.$orderTracking->count().json_encode($orderTracking),null);
+        } catch (\Exception $e) {
+            LogService::log(__METHOD__,__FUNCTION__,'删除订单取消的OrderTracking error'.$orderTracking->count().json_encode($orderTracking).$e->getMessage().$e->getTraceAsString(),null);
+        }
+    }
 }

+ 0 - 32
app/Services/OwnerService.php

@@ -65,36 +65,6 @@ Class OwnerService
         return Owner::query()->firstOrCreate($params,$values);
     }
 
-    //  XXX 代码逻辑有待纠正
-    public function 获取WMS订单列中对应的WAS货主列($WMSOrderHeaders)
-    {
-        $customerIds =  array_unique(data_get($WMSOrderHeaders, '*.customerid'));
-        $owners = Owner::query()->whereIn('code', $customerIds)->get();
-        $codes = data_get($owners, '*.code');
-        $codeDiff = array_diff($customerIds, $codes);
-        $logs = [];
-        $errs = [];
-
-        if (count($codes) > count($customerIds)) {
-            $basCustomer = OracleBasCustomer::query()->whereIn('customerid', $codeDiff)->get();
-            foreach ($basCustomer as $customer) {
-                if($customer['descr_c'] ?? false && $customer['customerid'] && false){
-                    try {
-                        $owner = Owner::query()->create(['name' => $customer['descr_c'], 'code' => $customer['customerid']]);
-                        $owners->push($owner);
-                        array_push($logs, ['info' => '创建「' . json_encode($owner) . '」']);
-                    } catch (\Exception $e) {
-                        array_push($errs, ['info' => '创建「' . json_encode($errs) . '」']);
-                    }
-                }
-            }
-        }
-        if(count($logs)>0)
-            LogService::log(__METHOD__, __FUNCTION__, '批量创建客户「:' . json_encode($logs) . '」', Auth::user()['id']);
-        if(count($errs)>0)
-            LogService::log(__METHOD__, __FUNCTION__, '批量创建客户失败「:' . json_encode($errs) . '」', Auth::user()['id']);
-        return $owners;
-    }
 
     public function 获取订单跟踪的货主(){
         return Owner::query()->with('orderTrackingOwner')->whereHas('orderTrackingOwner',function($query){
@@ -148,8 +118,6 @@ Class OwnerService
         return Owner::query()->insert($fillables);
     }
 
-
-
     public function getAuthorizedOwners(){
         $user = Auth::user();
         return Owner::query()->whereIn('id',$user->getPermittingOwnerIdsAttribute()??[])->get();