Преглед изворни кода

修改OrderPackageService 的方法调用

ajun пре 5 година
родитељ
комит
458fa2ddfb

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

@@ -222,19 +222,6 @@ class TestController extends Controller
         dd($uploaded . '/' . $count);
     }
 
-    function issues()
-    {
-        /** @var OrderPackageService $orderPackageService */
-        $orderPackageService = app('OrderPackageService');
-        $ids = [741, 739, 738, 736, 735, 733, 732, 731, 730, 729, 728, 725, 724, 723, 721, 720, 719, 718, 717, 715, 714, 713, 712, 711, 710, 705, 703, 702, 701, 700, 699, 698, 696, 694, 693, 692, 691, 690];
-        $orderIssues = OrderIssue::query()->whereIn('id', $ids)->get();
-        $order_ids = data_get($orderIssues, '*.order_id');
-        $orders = Order::query()->whereIn('id', $order_ids)->get();
-        foreach ($orders as $item) {
-            $orderPackageService->createdByOrder($item);
-        }
-    }
-
     function tlog(Request $request)
     {
         app('LogService')->log(__METHOD__, 'cczdelme' . __FUNCTION__, json_encode($request->all()), null);
@@ -856,26 +843,6 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
         unset($warehouse);
     }
 
-    public function syncSendOrder()
-    {
-        $order_issues = OrderIssue::query()->whereNotNull('second_client_no')->get();
-        $client_nos = data_get($order_issues, '*.second_client_no');
-        $orderHeaders = OracleDOCOrderHeader::query()->selectRaw(implode(',', OracleDOCOrderHeaderService::$columns))
-            ->whereIn('SOReference1', $client_nos)
-            ->with(['oracleBASCustomer' => function ($query) {
-                $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag');
-            }, 'oracleDOCOrderDetails' => function ($query) {
-                $query->selectRaw('doc_order_details.orderNo,doc_order_details.customerid,doc_order_details.sku,doc_order_details.QtyOrdered');
-            }, 'actAllocationDetails' => function ($query) {
-                $query->selectRaw('ACT_Allocation_Details.AllocationDetailsID,ACT_Allocation_Details.OrderNo,ACT_Allocation_Details.Qty_Each,ACT_Allocation_Details.PickToTraceID,ACT_Allocation_Details.CustomerID');
-            }, 'oracleBASCode' => function ($query) {
-                $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
-            }])
-            ->get();
-        $service = app('OrderIssueService');
-        $service->updateByWmsOrders($orderHeaders);
-    }
-
     public function changeOrder()
     {
         /**
@@ -1315,40 +1282,6 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
             unset($orderHeaders);
         }
     }
-    public function syncOrderTracking()
-    {
-        $orderTrackingService = new OrderTrackingService();
-        $orderService = new OrderService();
-        $start_data = Carbon::parse('2020-12-21 10:00:00');
-        $end_data = Carbon::parse('2020-12-21 11:00:00');
-        $orderNos = OracleDOCOrderHeader::query()->selectRaw('orderno')
-            ->where('addTime', '>=', $start_data)
-            ->where('addTime', '<=', $end_data)
-            ->get()->map(function($orderHeader){
-                return $orderHeader->orderno;
-            });
-        $order_no_list = $orderNos->chunk(3000);
-        foreach ($order_no_list as $order_nos) {
-            $orderHeaders = OracleDOCOrderHeader::query()->selectRaw(implode(',', OracleDOCOrderHeaderService::$columns))
-                ->with(['oracleBASCustomer' => function ($query) {
-                    $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag');
-                }, 'oracleDOCOrderDetails' => function ($query) {
-                    $query->selectRaw('doc_order_details.orderNo,doc_order_details.customerid,doc_order_details.sku,doc_order_details.QtyOrdered,doc_order_details.Location');
-                }, 'actAllocationDetails' => function ($query) {
-                    $query->selectRaw('ACT_Allocation_Details.AllocationDetailsID,ACT_Allocation_Details.OrderNo,ACT_Allocation_Details.Qty_Each,ACT_Allocation_Details.PickToTraceID,ACT_Allocation_Details.CustomerID,ACT_Allocation_Details.Sku,ACT_Allocation_Details.Location');
-                }, 'oracleBASCode' => function ($query) {
-                    $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
-                }, 'orderType' => function ($query) {
-                    $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
-                }])
-                ->whereIn('DOC_Order_Header.OrderNo', $order_nos)
-                ->get();
-            $orderService->createByWmsOrder($orderHeaders);
-            $orderTrackingService->createByWmsOrderHeader($orderHeaders);
-            unset($orderHeaders);
-        }
-    }
-
 
     public function testMbStrPos()
     {

+ 5 - 39
app/Services/OrderPackageCommoditiesService.php

@@ -109,44 +109,6 @@ class OrderPackageCommoditiesService
         unset($details,$orderPackageCommodities);
     }
 
-/*    public function basedOnActAllocationDetail(Order $order, OracleDOCOrderHeader $header, array $details)
-    {
-        foreach ($details as $detail) {
-            $logistic_number = $details['picktotraceid'];
-            if ($logistic_number == '*' || $logistic_number == null || $logistic_number == '') {
-                $logistic_number = $header['soreference5'];
-                if ($logistic_number == '*' || $logistic_number == null || $logistic_number == '') {
-                    continue;
-                }
-            }
-            $orderPackage = OrderPackage::query()->firstOrCreate(['order_id'=>$order['id'],'logistic_number',$details]);
-            $this->createByActAllocationDetail($detail, $orderPackage);
-        }
-    }*/
-
-   /* private function createByActAllocationDetail($detail,$orderPackage)
-    {
-        $owner = Owner::query()->where(['code' => $detail->customerid])->first();      // 货主
-        $sku = $detail->sku;
-        $owner_id = $owner['id'];
-        $commodity = Commodity::query()->where(['sku' => $sku, 'owner_id' => $owner_id])->first();
-        if ($commodity == null) {
-            $basSku = OracleBasSKU::query()->where(['sku' => $sku, 'customerid' => $detail->customerid])->first();
-            $commodity = Commodity::query()->create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]);
-        }
-        try {
-            $count  = OrderPackageCommodities::query()->where(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty_each']])->count();
-            if($count == 0){
-                $orderPackageCommodities = OrderPackageCommodities::query()->firstOrCreate(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty_each']]);
-                app('LogService')->log(__METHOD__,__FUNCTION__,'创建订单包裹详情'.json_encode($orderPackageCommodities));
-            }
-        } catch (\Exception $e) {
-            app('LogService')->log(__METHOD__,__FUNCTION__,'创建订单包裹失败'.$e->getMessage().$e->getTraceAsString());
-        } finally {
-            return $orderPackageCommodities ?? null;
-        }
-    }*/
-
     public function createByWmsOrder($orderHeaders)
     {
         if(!$orderHeaders){ return [];}
@@ -850,12 +812,16 @@ class OrderPackageCommoditiesService
     }
     // TODO 删除
     public function deleteOrderCommodities(&$orderCommodities){
+        /** @var OrderTrackingService $orderTrackingService */
+        $orderTrackingService = app('OrderTrackingService');
         if(!$orderCommodities)return;
         if(count($orderCommodities)==0)return;
         try {
             $ids = data_get($orderCommodities, '*.id');
             if(count($ids) >0){
-                $bool = OrderPackageCommodities::query()->whereIn('id', data_get($orderCommodities, '*.id'))->delete();
+                $bool = OrderPackageCommodities::query()->whereIn('id', $ids)->delete();
+                $orderTrackings = OrderTracking::query()->whereIn('order_package_commodity_id',$ids)->get();
+                $orderTrackingService->deleteOrderTracings($orderTrackings);
                 LogService::log(__METHOD__, __FUNCTION__, '批量删除 OrderCommodity '  . ($bool > 0 ? 'SUCCESS' : 'FAULT') .'||' .count($orderCommodities)  . ' || ' . json_encode($orderCommodities));
             }
         } catch (\Exception $e) {

+ 8 - 283
app/Services/OrderPackageService.php

@@ -27,120 +27,6 @@ class OrderPackageService
         return OrderPackage::query()->insert($params);
     }
 
-    public function createdByOrder($order)
-    {
-        /** @var OrderPackageCommoditiesService $orderPackageCommoditiesService */
-        $orderPackageCommoditiesService = app('OrderPackageCommoditiesService');
-        $oracleActAllocationDetails = OracleActAllocationDetails::query()->where('OrderNo', $order['code'])->get();
-        $orderHeader = OracleDOCOrderHeader::query()->where('OrderNo', $order['code'])->first();
-        $oracleDOCOrderDetail = OracleDOCOrderDetail::query()->where('OrderNo', $order['code'])->get();
-        $logistic_number = null;
-        if ($oracleActAllocationDetails->count() == 0) {  // 通过oracle Order Detail
-            $logistic_number = $orderHeader['soreference5'];
-            if ($oracleDOCOrderDetail->count() == 0) {
-                return null;
-            }
-            if ($logistic_number == null || $logistic_number == '*') {
-                return null;
-            }
-            try {
-                $orderPackage = OrderPackage::query()->firstOrCreate(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
-                $orderPackageCommoditiesService->basedOnOracleDetailsStore($orderHeader['orderno'], $orderPackage);
-                app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单包裹orderPackage' . json_encode($orderPackage));
-            } catch (\Exception $e) {
-                app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单包裹orderPackage失败' . $e->getMessage() . $e->getTraceAsString());
-            }
-        } else if ($oracleActAllocationDetails->count() > 0) {
-            $count = $oracleActAllocationDetails->where('OrderNo', $order['code'])->whereNull('picktotraceid')->count();
-            if ($count > 0) {   // 快递单号为空
-                if (($orderHeader['soreference5'] ?? false) && $orderHeader['soreference5'] == '*') {
-                    return null;
-                }
-                $logistic_number = $orderHeader['soreference5'];
-
-                try {
-                    $orderPackage = OrderPackage::query()->firstOrCreate(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
-                    $orderPackageCommoditiesService->basedOnOracleDetailsStore($order, $orderPackage);
-                    app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单包裹orderPackage' . json_encode($orderPackage));
-                } catch (\Exception $e) {
-                    app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单包裹orderPackage失败' . $e->getMessage() . $e->getTraceAsString());
-                }
-            } else {
-                $ActAllocationDetails = $oracleActAllocationDetails->where('orderno', $order['code']);
-                $picktotraceids = data_get($ActAllocationDetails,'*.picktotraceid');
-                $picktotraceids = array_unique($picktotraceids);
-                foreach ($picktotraceids as $picktotraceid) {
-                    $logistic_number = $picktotraceid;
-                    if ($logistic_number == null || $logistic_number == '*') {
-                        $logistic_number = $orderHeader['soreference5'];
-                        if ($logistic_number == null || $logistic_number == '*') {
-                            return null;
-                        }
-                        $orderPackage = OrderPackage::query()->where(['order_id' => $order['id'], 'logistic_number' => $logistic_number])->first();
-                        if ($orderPackage) {
-                            $orderPackageCommoditiesService->basedOnActAllocationDetailsStoreByOrderNo($order['code'], $orderPackage);
-                            continue;
-                        }
-                        try {
-                            $orderPackage = OrderPackage::query()->create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
-                            $orderPackageCommoditiesService->basedOnActAllocationDetailsStoreByOrderNo($order['code'], $orderPackage);
-                            app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单orderPackage' . json_encode($orderPackage));
-                        } catch (\Exception $e) {
-                            app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单orderPackage失败' . json_encode($e->getMessage()) . json_encode($e->getTraceAsString()));
-                        }
-                        continue;
-                    }
-                    $orderPackage = OrderPackage::query()->where('order_id', $order['id'])->where('logistic_number', $logistic_number)->first();
-                    if ($orderPackage) {
-                        $orderPackageCommoditiesService->basedOnActAllocationDetailsStore($orderPackage);
-                        continue;
-                    }
-                    try {
-                        $orderPackage = OrderPackage::query()->create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
-                        $orderPackageCommoditiesService->basedOnActAllocationDetailsStore($orderPackage);
-                        app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单' . json_encode($orderPackage));
-                    } catch (\Exception $e) {
-                        app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单orderPackage失败' . json_encode($e->getMessage()) . json_encode($e->getTraceAsString()));
-                    }
-                }
-            }
-        }
-        unset($oracleActAllocationDetails,$oracleDOCOrderDetail);
-    }
-    // 需删除
-//    public function updateOrderPackageInfo(Order $order)
-//    {
-//        $orderHeader = OracleDOCOrderHeader::where('orderNo', $order['code'])->first();
-//        if ($orderHeader['oracleBASCode_codename_c'] == $order['wam_status']) {
-//            return;
-//        }
-//        $orderPackages = OrderPackage::where('order_id', $order['id'])->get();
-//        $orderPackageCommodities = OrderPackageCommodities::with('commodity')->whereIn('order_package_id', data_get($orderPackages, '*.id'))->get();
-//        $actAllocationDetails = OracleActAllocationDetails::where('orderNo', $order['client_code'])->get();
-//        if (count($orderPackageCommodities) < count($actAllocationDetails)) {
-//            $actAllocationDetails = $actAllocationDetails->reject(function ($value, $key) use (&$orderPackageCommodities) {
-//                $bool = false;
-//                $count = 0;
-//                $orderPackageCommodities->reject(function ($value1, $key1) use ($value, &$bool, $count) {
-//                    if ($count > 0) {
-//                        return false;
-//                    }
-//                    if ($value1->commodity['sku'] == $value['sku'] && $value1['amount'] == intval($value['qty'])) {
-//                        $bool = true;
-//                        $count++;
-//                        return true;
-//                    } else {
-//                        return false;
-//                    }
-//                });
-//                return $bool;
-//            });
-//        }
-//        $orderPackageCommoditiesService = app('OrderPackageCommoditiesService');
-//        $orderPackageCommoditiesService->basedOnActAllocationDetail($order, $orderHeader, $actAllocationDetails);
-//        $order['wam_status'] = $orderHeader['oracleBASCode_codename_c'];
-//        $order->save();
-//    }
     /**
      * @param string $logistic_number
      * @param array $values
@@ -177,127 +63,6 @@ class OrderPackageService
             ->paginate($paginate);
     }
 
-    public function createByWmsOrder($orderHeaders)
-    {
-        /**
-         * @var OrderService $orderService
-         * @var DataHandlerService $dataHandlerService
-         * @var OrderPackageCommoditiesService $orderPackageCommodityService
-         */
-        $orderService = app(OrderService::class);
-        $dataHandlerService = app(DataHandlerService::class);
-        $orderPackageCommodityService = app(OrderPackageCommoditiesService::class);
-
-        if(!$orderHeaders ){return ;}
-        $orders = $orderService->getByWmsOrders($orderHeaders);
-        if(!$orders){return ;}
-        $order_packages = OrderPackage::query()->whereIn('order_id',data_get($orders,'*.id'))->get();
-
-        $order_packages_logistic_number_map=$dataHandlerService->dataHeader(['order_id','logistic_number'],$order_packages);
-        $order_headers_orderNo_map =  $dataHandlerService->dataHeader(['orderno'],$orderHeaders);
-
-        $insert_params = [];
-        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) {
-                $key = ['order_id'=>$param['order_id'],'logistic_number'=>$param['logistic_number']];
-                $orderPackage = $dataHandlerService->getKeyValue($key,$order_packages_logistic_number_map);
-                if(isset($orderPackage)){
-                    continue;
-                }else{
-                    $insert_params[] = $param;
-                }
-            }
-        }
-        if(count($insert_params)>0){
-            $order_packages = $this->create($insert_params);
-        }
-        unset($orders_code_map,$order_packages_logistic_number_ma,$insert_params,$order_packages,$order_package_commodities);
-        $orderPackageCommodityService->createByWmsOrder($orderHeaders);
-        unset($orderHeaders);
-    }
-
-    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');
-        foreach ($logistic_numbers as $logistic_number) {
-//            if($logistic_number == $orderHeader->orderno)continue;
-            $key  = ['order_id'=>$order->id,'logistic_number'=>$logistic_number];
-            $orderPackage = $dataHandlerService->getKeyValue($key,$order_packages_logistic_number_map);
-            if(isset($orderPackage)){ continue;}
-            $params[] = [
-                'order_id' => $order->id, 'logistic_number' => $logistic_number,'created_at' => $created_at,'updated_at' => $updated_at
-            ];
-        }
-        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);
-        /** @var DataHandlerService $dataHandlerService */
-        $dataHandlerService = app(DataHandlerService::class);
-        if(!$orderHeaders){return;}
-
-        $orders = Order::query()->with('packages')->whereIn('code',data_get($orderHeaders,'*.orderno'))->get();
-        $orders_code_map =  $dataHandlerService->dataHeader(['code'],$orders);
-
-        $orderPackages =$this->getByWmsOrders($orderHeaders);
-        $order_packages_logistic_number_map = $dataHandlerService->dataHeader(['order_id','logistic_number'],$orderPackages);
-
-        $insertParams = [];
-        foreach ($orderHeaders as $orderHeader) {
-            $order = $dataHandlerService->getKeyValue(['code'=>$orderHeader->orderno ?? ''],$orders_code_map);
-            if(!$order){continue;}
-            $order_packages = $order->packages ?? null;
-            if(!$order_packages){continue;}
-            $params =$this->getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map);
-            if(count($params) > 0){
-                foreach ($params as $param) {
-                    $key  = ['order_id'=>$param['order_id'],'logistic_number'=>$param['logistic_number']];
-                    $order_package = $dataHandlerService->getKeyValue($key,$order_packages_logistic_number_map);
-                    if($order_package){continue;}
-                    $insertParams[] = $param;
-                }
-            }
-        }
-        if(count($insertParams)>0){
-            $this->create($insertParams);
-        }
-        $orderPackageCommoditiesService->updateByWmsOrder($orderHeaders);
-        $this->删除多余的订单包裹_根据WMS订单($orderHeaders);
-    }
-
     public function getByWmsOrders($orderHeaders){
         $order_nos = data_get($orderHeaders,'*.orderno');
         return OrderPackage::query()->with('order')
@@ -321,29 +86,6 @@ class OrderPackageService
         }
     }
 
-    /**
-     * @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();
-            app('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) {
-            app('LogService')->log(__METHOD__,__FUNCTION__,'删除多余OrderPackage error'.$delete_orderPackages->count().json_encode($delete_orderPackages).$e->getMessage().$e->getTraceAsString(),null);
-        }
-    }
 
     /**
      * @param array  $orderNos
@@ -392,34 +134,14 @@ class OrderPackageService
 
     public function syncPackageByOrderHeaders(&$orderHeaders)
     {
-        /**
-         * @var OrderService $orderService
-         * @var OrderPackageCommoditiesService $orderPackageCommodityService
-         * @var OrderTrackingService $orderTrackingService
-         */
+        /** @var OrderService $orderService */
         $orderService = app('OrderService');
-        $orderPackageCommodityService= app('OrderPackageCommoditiesService');
-//        $orderTrackingService = app('OrderTrackingService');
         if(!$orderHeaders)return;
-
         $orders = $orderService->getByWmsOrders($orderHeaders);
-
         $packages = $this->getByOrderNos(data_get($orderHeaders,'*.orderno'));          // 已有
-
         $this->createOrderPackage($orderHeaders,$orders,$packages);                     // 创建package
-        $del_ids = $this->deleteUnnecessaryPackage($orderHeaders,$packages);     // 删除package
+        $this->deleteUnnecessaryPackage($orderHeaders,$packages);     // 删除package
         unset($orders,$packages);       // 手动清除
-        if(count($del_ids)==0)return;
-        OrderPackageCommodities::query()->whereIn('order_package_id',$del_ids)->delete();
-        $orderPackageCommodityService->deleteUnnecessaryOrderCommodities($del_ids);     // 删除 orderCommodity
-        unset($del_ids);
-//        $orderTracking = OrderTracking::query()->whereIn('order_package_commodity_id',function($query)use($del_ids){
-//            $query->from('order_package_commodities')->select('order_package_commodities.id')->whereIn('order_package_id',$del_ids);
-//        })->get();
-//        if($orderTracking->count()==0)return;
-//
-//        $orderTrackingService->deleteOrderTracings($orderTracking);                     // 删除追踪件+
-//        unset($orderTracking);      // 手动清除
     }
 
     public function createOrderPackage($orderHeaders,$orders,$packages)
@@ -479,12 +201,14 @@ class OrderPackageService
     {
         /**
          * @var DataHandlerService $dataHandlerService
+         * @var OrderTrackingService $orderTrackingService
+         * @var OrderPackageCommoditiesService $orderPackageCommoditiesService
          */
         $dataHandlerService = app(DataHandlerService::class);
+        $orderPackageCommoditiesService = app('OrderPackageCommoditiesService');
         $logistic_numbers = data_get($orderHeaders,'*.actAllocationDetails.*.picktotraceid');     // 获取picktotraceid (运单的快递单号)
         $logistic_numbers = array_unique($logistic_numbers);
         $logistic_numbers = array_diff($logistic_numbers,['',' ','*']);
-
         $packages_maps = $dataHandlerService->dataHeader(['logistic_number'],$packages);
         $exits_number = data_get($packages,'*.logistic_number');
         $packages = [];
@@ -496,11 +220,12 @@ class OrderPackageService
         if(count($packages)==0)return $packages;
         try {
             $bool = OrderPackage::query()->whereIn('id', $packages)->delete();
+            $orderPackageCommodities = OrderPackageCommodities::query()->where('order_package_id',$packages)->get();
+            $orderPackageCommoditiesService->deleteOrderCommodities($orderPackageCommodities);
             $bool ? LogService::log(__METHOD__,__FUNCTION__,'删除多余包裹 ids:'.json_encode($packages)) : null;
-            return $bool ? $packages : collect();
         } catch (\Exception $e) {
             LogService::log(__METHOD__,__FUNCTION__,'删除多余包裹 ids:'.json_encode($packages).$e->getMessage());
-            return collect();
         }
     }
+
 }

+ 4 - 63
app/Services/OrderService.php

@@ -361,69 +361,10 @@ class OrderService
 
     public function findOrCreateByClientCode($clientCode)
     {
-        /** @var OrderPackageService $orderPackageService */
-        $orderPackageService = app('OrderPackageService');
-        $order = Order::query()->where('client_code', $clientCode)->first();
-        $orderHeader = app('OracleDocOrderHeaderService')->first(['SOReference1'=> $clientCode]);
-        if ($orderHeader == null) {
-            return null;
-        }
-        $orderHeadAttr = $orderHeader->toArray();
-        if ($order == null) {
-            $customer_name = $orderHeadAttr['oracleBASCustomer_descr_c'];
-            $owner = Owner::query()->where('code', $orderHeadAttr['customerid'])->first();
-            if (!$owner) {
-                try {
-                    $owner = Owner::query()->create(['code' => $orderHeadAttr['customerid'], 'name' => $customer_name]);
-                    app('LogService')->log(__METHOD__, __FUNCTION__, '创建货主' . json_encode($owner));
-                } catch (\Exception $e) {
-                    app('LogService')->log(__METHOD__, __FUNCTION__, '创建货主失败' . $e->getMessage() . $e->getTraceAsString());
-                }
-            }
-            $owner_id = $owner['id'];
-            $shop_name = $orderHeadAttr['issuepartyname'];
-            $shop_Id = null;
-            if ($shop_name) {
-                $shop = Shop::query()->firstOrCreate(['name' => $shop_name, 'owner_id' => $owner_id]);
-                $shop_Id = $shop['id'];
-            }
-            $logistics = Logistic::query()->where(['code' => $orderHeadAttr['userdefine1']])->first();
-            $logistics_id = null;
-            if ($logistics) {
-                $logistics_id = $logistics['id'];
-            } else {
-                try {
-                    $logistics = Logistic::query()->create(['name' => $orderHeadAttr['carriername'], 'code' => $orderHeadAttr['userdefine1']]);
-                    $logistics_id = $logistics['id'];
-                    app('LogService')->log(__METHOD__,__FUNCTION__,'创建承运商'.json_encode($logistics));
-                } catch (\Exception $e) {
-                    app('LogService')->log(__METHOD__,__FUNCTION__,'创建承运商失败'.$e->getMessage().$e->getTraceAsString());
-                }
-            }
-            $warehouse = Warehouse::query()->where('code',$orderHeadAttr['warehouseid'])->first();
-            $arr = [
-                'warehouse_id' =>$warehouse->id ??'',
-                'code' => $orderHeadAttr['orderno'],
-                'owner_id' => $owner_id,
-                'wms_status' => $orderHeadAttr['oracleBASCode_codename_c'],
-                'created_at' => $orderHeadAttr['addtime'],
-                'logistic_id' => $logistics_id,
-                'shop_id' => $shop_Id,
-                'consignee_name' => $orderHeadAttr['c_contact'],
-                'consignee_phone' => empty($orderHeadAttr['c_tel2'])?$orderHeadAttr['c_tel1']:$orderHeadAttr['c_tel2'],
-                'province' => $orderHeadAttr['c_province'],
-                'city' => $orderHeadAttr['c_city'],
-                'district' => $orderHeadAttr['c_district'],
-                'address' => $orderHeadAttr['c_address1'],
-                'client_code' => $orderHeadAttr['soreference1'],
-            ];
-            $order = Order::query()->create($arr);
-            app('LogService')->log(__METHOD__,__FUNCTION__,'创建 Order '.json_encode($order));
-            unset($arr,$orderHeadAttr,$owner);
-        }else{
-            $this->updateOrderByOrderHeader($order,$orderHeader);
-        }
-        $orderPackageService->createdByOrder($order);unset($order);
+        /** @var OracleDOCOrderHeaderService $orderHeaderService */
+        $orderHeaderService = app('OracleDocOrderHeaderService');
+        $orderHeaders = $orderHeaderService->getQuery()->where('SOReference1',$clientCode)->get();
+        $this->syncOrderInfo($orderHeaders,false);
         return Order::with('packages.commodities.commodity')->where('client_code', $clientCode)->first();
     }
 

+ 2 - 2
app/Services/OrderTrackingService.php

@@ -499,9 +499,9 @@ class OrderTrackingService
         if($orderTracking->count() == 0){return;}
         try {
             OrderTracking::query()->whereIn('id', data_get($orderTracking,'*.id'))->delete();
-            app('LogService')->log(__METHOD__,__FUNCTION__,'删除订单取消的OrderTracking '.$orderTracking->count().json_encode($orderTracking),null);
+            app('LogService')->log(__METHOD__,__FUNCTION__,'删除OrderTracking '.$orderTracking->count().json_encode($orderTracking),null);
         } catch (\Exception $e) {
-            app('LogService')->log(__METHOD__,__FUNCTION__,'删除订单取消的OrderTracking error'.$orderTracking->count().json_encode($orderTracking).$e->getMessage().$e->getTraceAsString(),null);
+            app('LogService')->log(__METHOD__,__FUNCTION__,'删除OrderTracking error'.$orderTracking->count().json_encode($orderTracking).$e->getMessage().$e->getTraceAsString(),null);
         }
     }