Browse Source

问题追踪件 修改

ajun 5 years ago
parent
commit
24dc8cc4e9

+ 148 - 83
app/Http/Controllers/TestController.php

@@ -20,6 +20,7 @@ use App\OracleDOCWaveDetails;
 use App\Order;
 use App\OrderIssue;
 use App\OrderPackage;
+use App\OrderPackageCommodities;
 use App\OrderTracking;
 use App\OrderTrackingOwner;
 use App\Owner;
@@ -29,15 +30,20 @@ use App\ProcessDaily;
 use App\ProcessStatistic;
 use App\RejectedBill;
 use App\RejectedBillItem;
+use App\Services\CommodityService;
 use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
 use App\Services\InventoryCompareService;
+use App\Services\LogisticService;
 use App\Services\LogService;
 use App\Services\OracleDOCOrderHeaderService;
 use App\Services\OrderIssueService;
+use App\Services\OrderPackageCommoditiesService;
 use App\Services\OrderPackageService;
 use App\Services\OrderService;
+use App\Services\OrderTrackingOwnerService;
 use App\Services\OrderTrackingService;
+use App\Services\OwnerService;
 use App\Unit;
 use App\User;
 use App\Waybill;
@@ -478,13 +484,39 @@ class TestController extends Controller
 
     public function test3()
     {
-//        $startDate = \Illuminate\Support\Carbon::parse('2020-05-06 13:16:51')->toDateTimeString();
-
+//        dd(bcmul(0.3,0.3,5));
+        $logistic = Logistic::query()->where('code','XJWL')->first();
+        if(!$logistic){
+            Logistic::query()->create(['code'=>'XJWL','name'=>'新杰物流']);
+        }
 
-        $startDate = \Illuminate\Support\Carbon::parse('2020-09-21 00:00:00')->toDateTimeString();
+        /** @var DataHandlerService $dataHandlerService */
+        $dataHandlerService = app(DataHandlerService::class);
         /** @var OrderTrackingService $orderTrackingService */
         $orderTrackingService  = app('orderTrackingService');
-        $orderTrackingService->trackingWmsOrder($startDate);
+        /** @var OrderService $orderSerivce */
+        $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-08-26 00:00:00')->toDateTimeString();
+        $endData = \Illuminate\Support\Carbon::parse('2020-09-26 00:00:00')->toDateTimeString();
+        $orderHeaders = OracleDOCOrderHeader::query()
+            ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
+            ->where('addTime','>=',$startDate)
+//            ->where('addTime','<=',$endData)
+            ->whereIn('customerID',data_get($owners,'*.code'))
+            ->get();
+
+//        $orderHeaders = app(OracleDOCOrderHeaderService::class)->getWmsOrderOnStartDateCreate($startData);
+        $orderService->createByWmsOrder($orderHeaders);
+        $orderTrackingService->createByWmsOrderHeader($orderHeaders);
+        $orderService->updateByWmsOrders($orderHeaders);
+        $orderTrackingService->updateByWmsOrderHeaders($orderHeaders);
+
     }
 
     public function syncWmsOrder(){
@@ -494,90 +526,123 @@ class TestController extends Controller
         $orderTrackingService->trackingWmsOrder($startDate);
     }
 
-    public function orderTrckingOwnerAll(){
-        $owners = Owner::all();
-        foreach ($owners as $owner) {
-            $orderTrackingOwner =  OrderTrackingOwner::query()->where('owner_id',$owner->id)->first();
-            if($orderTrackingOwner == null){
-                OrderTrackingOwner::query()->create(['owner_id'=>$owner->id,'status'=>'启用']);
-            }else{
-                if($orderTrackingOwner->status == '禁用'){
-                    $orderTrackingOwner->status = '启用';
-                }
-            }
-        }
-    }
-
-    public function updateOrderTracking(){  // update  client  order_remark
-        $orderTrackings = OrderTracking::query()
-            ->with('commodities.package.order')
-            ->get();
-        $orderNos = [];
-        $order_tracking = [];
-        foreach ($orderTrackings as $orderTracking) {
-            $order = $orderTracking->commodities->package->order ?? '';
-            $orderNos[] = $order->code;
-            $order_tracking[$order->code][] = $orderTracking;
-        }
-        $orderHeaders = OracleDOCOrderHeader::query()
-            ->whereIn('orderNo',$orderNos)
-            ->get();
+    public function updateOrderPackingCommodity(){
+        /** @var OrderTrackingService  $orderTrackingService */
+        $orderTrackingService =  app(OrderTrackingService::class);
+        /** @var OrderPackageCommoditiesService  $orderPackageCommoditiesService */
+        $orderPackageCommoditiesService =  app(OrderPackageCommoditiesService::class);
+        /** @var OrderService $orderService */
+        $orderService = app(OrderService::class);
+        $orderTrackings = OrderTracking::query()->with('commodities.package.order')->get();
+        $orderNo = data_get($orderTrackings,'*.commodities.package.order.code');
+        $order_packages = OrderPackage::query()->with('order')->whereHas('order',function($query) use($orderNo){
+            $query->whereIn('code',$orderNo);
+        })->get();
 
-        $fillables = [['id','client','order_remark']];
-        foreach ($orderHeaders as $orderHeader) {
-            $orderTracking_list =  $order_tracking[$orderHeader->orderno];
-            $notes = $orderHeader['notes'];
-//            $notes = str_replace('【','[',$notes);
-            $client = null;
-            $order_remark = null;
-            if (strpos($notes, '[')) {
-                $arr= str_split($notes,strpos($notes,'['));
-                $client = $arr[0] ?? '';
-                $order_remark = $arr[1] ?? '';
-                $order_remark = str_replace(['[',']'],'',$order_remark);
-            }
+        $id = data_get($order_packages,'*.id');
+        $list =  OrderPackageCommodities::query()->whereIn('order_package_id',$id)->get();
+//        dd(data_get($list,'*.id'),data_get($orderTrackings,'*.id'));
+        $count1 = OrderPackageCommodities::destroy(data_get($list,'*.id'));
+        $count2 = OrderTracking::destroy(data_get($orderTrackings,'*.id'));
+//            dd(1);
 
-            foreach ($orderTracking_list as $item) {
-                $fillables[] = [
-                    'id' => $item->id,
-                    'client' => $client,
-                    'order_remark' => $order_remark
-                ];
-            }
-        }
-        /** @var BatchUpdateService $batchUpdateService */
-        $batchUpdateService = app('batchUpdateService');
-        $batchUpdateService->batchUpdate('order_trackings',$fillables);
-    }
 
-    public function updateOrderTrackingLogistic(){
-        $orderTrackings = OrderTracking::query()->with('commodities.package.order')->get();
-        $order_nos = [];
+        $orderHeaders = OracleDOCOrderHeader::query()->whereIn('orderno',$orderNo)->get();
 
-        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]);
+        $order_packages =  app(OrderPackageService::class)->getByWmsOrders($orderHeaders);
+        $owners =  app(OwnerService::class)->getByWmsOrders($orderHeaders);
+        $commodities =  app(CommodityService::class)->getByWmsOrders($orderHeaders);
+        $owner_code_map=[];
+        foreach ($owners as $owner) {
+            $owner_code_map[$owner->code] = $owner;
         }
+//        $orderService->createByWmsOrder($orderHeaders);
+        $orderPackageCommoditiesService->createByWmsOrder($orderHeaders,$order_packages,$owner_code_map,$commodities);
+        $orderTrackingService->createByWmsOrderHeader($orderHeaders);
     }
 
-    public function updateClient(){
-        $orderTrackings = OrderTracking::query()->with('commodities.package.order')->get();
-        $orderNo = data_get($orderTrackings,'*.commodities.package.order.code');
-        $orders =  Order::query()->where('code',$orderNo)->get();
-        OracleDOCOrderHeader::query()->whereIn('orderno',data_get('*'))->first();
-
-    }
+//    public function orderTrckingOwnerAll(){
+//        $owners = Owner::all();
+//        foreach ($owners as $owner) {
+//            $orderTrackingOwner =  OrderTrackingOwner::query()->where('owner_id',$owner->id)->first();
+//            if($orderTrackingOwner == null){
+//                OrderTrackingOwner::query()->create(['owner_id'=>$owner->id,'status'=>'启用']);
+//            }else{
+//                if($orderTrackingOwner->status == '禁用'){
+//                    $orderTrackingOwner->status = '启用';
+//                }
+//            }
+//        }
+//    }
+
+//    public function deleteOrderTraking()
+//    {
+//        $orderTrackings = OrderTracking::query()->with('commodities.package.order')->get();
+//        $orderNo = data_get($orderTrackings,'*.commodities.package.order.code');
+//        $order_nos = array_unique($orderNo);
+//        $orders = Order::query()->whereIn('code',$order_nos)->get();
+//        $order_packages = OrderPackage::query()->with('order')->whereHas('order',function($query) use($order_nos){
+//            $query->whereIn('code',$order_nos);
+//        });
+//        $order_package_commodities = OrderPackageCommodities::query()->with('package.order')->whereHas('package.order',function($query) use ($order_nos){
+//            $query->whereIn('code',$order_nos);
+//        })->get();
+//        dd($order_nos,$orders->count(),$order_packages->count(),$order_package_commodities->count());
+//    }
+
+//    public function updateOrderTracking(){  // update  client  order_remark
+//        $orderTrackings = OrderTracking::query()
+//            ->with('commodities.package.order')
+//            ->get();
+//        $orderNos = [];
+//        $order_tracking = [];
+//        foreach ($orderTrackings as $orderTracking) {
+//            $order = $orderTracking->commodities->package->order ?? '';
+//            $orderNos[] = $order->code;
+//            $order_tracking[$order->code][] = $orderTracking;
+//        }
+//        $orderHeaders = OracleDOCOrderHeader::query()
+//            ->whereIn('orderNo',$orderNos)
+//            ->get();
+//
+//        $fillables = [['id','client','order_remark']];
+//        foreach ($orderHeaders as $orderHeader) {
+//            $orderTracking_list =  $order_tracking[$orderHeader->orderno];
+//            $notes = $orderHeader['notes'];
+////            $notes = str_replace('【','[',$notes);
+//            $client = null;
+//            $order_remark = null;
+//            if (strpos($notes, '[')) {
+//                $arr= str_split($notes,strpos($notes,'['));
+//                $client = $arr[0] ?? '';
+//                $order_remark = $arr[1] ?? '';
+//                $order_remark = str_replace(['[',']'],'',$order_remark);
+//            }
+//
+//            foreach ($orderTracking_list as $item) {
+//                $fillables[] = [
+//                    'id' => $item->id,
+//                    'client' => $client,
+//                    'order_remark' => $order_remark
+//                ];
+//            }
+//        }
+//        /** @var BatchUpdateService $batchUpdateService */
+//        $batchUpdateService = app('batchUpdateService');
+//        $batchUpdateService->batchUpdate('order_trackings',$fillables);
+//    }
+
+//    public function updateOrderTrackingLogistic(){
+//        $orderTrackings = OrderTracking::query()->with('commodities.package.order')->get();
+//        $order_nos = data_get($orderTrackings,'*.commodities.package.order.code');
+//        $order_nos =  array_unique($order_nos);
+//        $orders = Order::query()->whereIn('code',$order_nos)->get();
+//        $XJWL_logistic =Logistic::query()->where('code','XJWL')->first();
+//        foreach ($orders as $order) {
+//            $orderHeader = OracleDOCOrderHeader::query()->where('OrderNo',$order->code)->first();
+//            $logistic =Logistic::query()->where('code',$orderHeader->userdefine1)->first();
+//            if($orderHeader->userdefine1 == 'ZT'){$logistic =   $XJWL_logistic;}
+//            $order->update(['logistic_id'=>$logistic->id]);
+//        }
+//    }
 }

+ 8 - 10
app/Services/CommodityService.php

@@ -148,7 +148,7 @@ Class CommodityService
         return app(BatchUpdateService::class)->batchUpdate('commodities', $params);
     }
 
-    public function getCommoditiesByWmsOrder($orderHeaders){
+    public function getByWmsOrders($orderHeaders){
         if(!$orderHeaders) return null;
         $customerId_sku_map = [];
         foreach ($orderHeaders as $orderHeader) {
@@ -167,9 +167,7 @@ Class CommodityService
         $owner_codes = array_diff(array_unique(data_get($customerId_sku_map,'*.owner_code')),['','*',null]) ;
         if(!$owner_codes) return null;
 
-        $owners = Owner::query()
-            ->whereIn('code',$owner_codes)
-            ->get();
+        $owners = Owner::query()->whereIn('code',$owner_codes)->get();
 
         $owners_code_map = [];
         $owners_id_map = [];
@@ -205,11 +203,11 @@ Class CommodityService
             ->whereIn('CustomerID',data_get($params,'*.owner_code'))
             ->whereIn('Sku',data_get($params,'*.sku'))
             ->get();
-        $fillables = [];
+        $insert_params = [];
         foreach ($bas_sku_arr as $bas_sku) {
             $owner = $owners_code_map[$bas_sku->customerid] ?? '';
             $created_at = Carbon::now()->format('Y-m-d H:i:s');
-            $fillables[] = [
+            $insert_params[] = [
                 'owner_id' => $owner->id,
                 'sku' => $bas_sku->sku,
                 'name' =>$bas_sku->descr_c,
@@ -221,12 +219,12 @@ Class CommodityService
             ];
         }
 
-        if(count($fillables) > 0){
+        if(count($insert_params) > 0){
             try {
-                $this->insert($fillables);
-                LogService::log(__METHOD__,__FUNCTION__,'批量添加 commodity ' . count($fillables) .json_encode($fillables) );
+                $this->insert($insert_params);
+                LogService::log(__METHOD__,__FUNCTION__,'批量添加 commodity ' . count($insert_params) .json_encode($insert_params) );
             } catch (\Exception $e) {
-                LogService::log(__METHOD__,__FUNCTION__,'批量添加 commodity error' .json_encode($fillables) ."||".$e->getMessage().'||'.$e->getTraceAsString());
+                LogService::log(__METHOD__,__FUNCTION__,'批量添加 commodity error' .json_encode($insert_params) ."||".$e->getMessage().'||'.$e->getTraceAsString());
             }
         }
 

+ 25 - 26
app/Services/LogisticService.php

@@ -22,23 +22,23 @@ Class LogisticService
         $carrierIds = array_unique($carrierIds);
         $carrierIds = array_diff($carrierIds,['*','',null]);
         $logistics = Logistic::query()->whereIn('code',$carrierIds)->get();
-        $fillables = [];
+        $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($fillables,$fillable);
+                array_push($insert_params,$fillable);
             }
         }
         try {
-            if(count($fillables) > 0){
-                Logistic::query()->insert($fillables);
-                LogService::log(__METHOD__,__FUNCTION__,'批量创建'.json_encode($fillables));
+            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__,'创建失败「' .json_encode($fillables). $e->getMessage().$e->getTraceAsString());
+            LogService::log(__METHOD__,__FUNCTION__,'创建失败 logistic error' .json_encode($insert_params). $e->getMessage().$e->getTraceAsString());
         } finally {
            return  $logistics = Logistic::query()->whereIn('code',$carrierIds)->get();
         }
@@ -52,47 +52,46 @@ Class LogisticService
         return $logistic->firstOrCreate($params);
     }
 
-    public function getLogisticByOrderHeaders($orderHeaders){
-        $carrierIds = data_get($orderHeaders,'*.carrierid');
-        $carrierIds = array_unique($carrierIds);
-        $carrierIds = array_diff($carrierIds,['','*',null]);
-        if(!$carrierIds){return [];}
-        $logistics = Logistic::query()->whereIn('code',$carrierIds)->get();
+    public function getByWmsOrders($orderHeaders){
+        $codes = data_get($orderHeaders,'*.userdefine1');
+        $codes = array_unique($codes);
+        $codes = array_diff($codes,['','*',null]);
+        if(!$codes){return [];}
+        $logistics = Logistic::query()->whereIn('code',$codes)->get();
 
-        if($logistics->count() < $carrierIds){
-            $carrierIds = array_diff($carrierIds,data_get($logistics,'*.code'));
-            $logistic_list = $this->createLogisticByCarrierIds($carrierIds);
+        if($logistics->count() < $codes){
+            $codes = array_diff($codes,data_get($logistics,'*.code'));
+            $logistic_list = $this->createLogisticByCarrierIds($codes);
             $logistics = $logistics->concat($logistic_list);
         }
         return $logistics;
     }
 
-    public function createLogisticByCarrierIds($carrierIds){
-        if(!$carrierIds){return [];}
+    public function createLogisticByCarrierIds($codes){
+        if(!$codes){return [];}
         $baseCustomers = OracleBasCustomer::query()
             ->where('Customer_Type','CA')
-            ->whereIn('CustomerID',$carrierIds)
+            ->whereIn('CustomerID',$codes)
             ->get();
 
-        $fillables = [];
+        $insert_params = [];
         $created_at = Carbon::now()->format('Y-m-d H:i:s');
         foreach ($baseCustomers as $baseCustomer) {
-            $fillables[] = [
+            $insert_params[] = [
                 'code' => $baseCustomer['customerid'],
                 'name' => $baseCustomer['descr_c'],
                 'created_at' => $created_at
             ];
         }
-
         try {
-            if($fillables){
-                $this->insert($fillables);
-                LogService::log(__METHOD__, __FUNCTION__, '批量创建 owner error' . count($fillables) . json_encode($fillables) );
+            if(count($insert_params) > 0){
+                $this->insert($insert_params);
+                LogService::log(__METHOD__, __FUNCTION__, '批量创建 owner error' . count($insert_params) . json_encode($insert_params) );
             }
         } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '批量创建 owner error' . json_encode($fillables) . "||".$e->getMessage() . '||' . $e->getTraceAsString() );
+            LogService::log(__METHOD__, __FUNCTION__, '批量创建 owner error' . json_encode($insert_params) . "||".$e->getMessage() . '||' . $e->getTraceAsString() );
         } finally {
-            return Logistic::query()->whereIn('code',$carrierIds)->get();
+            return Logistic::query()->whereIn('code',$codes)->get();
         }
     }
 

+ 32 - 22
app/Services/OrderPackageCommoditiesService.php

@@ -405,6 +405,7 @@ class OrderPackageCommoditiesService
 
     public function createByWmsOrder($orderHeaders,$order_packages,$owner_code_map,$commodities)
     {
+        if(!$order_packages){ return [];}
         if(!$order_packages){ return [];}
         if(!$orderHeaders){ return [];}
         $order_packages_logistic_number_map = [];
@@ -412,15 +413,16 @@ class OrderPackageCommoditiesService
         foreach ($order_packages as $order_package) {
             $order_packages_logistic_number_map[$order_package->logistic_number]  = $order_package;
         }
-        foreach ($commodities as $commodity) {
-            $commodity_owner_id_sku_map[' owner_id='.$commodity->owner_id.' sku='.$commodity->sku] = $commodity;
+        if($commodities ?? false){
+            foreach ($commodities as $commodity) {
+                $commodity_owner_id_sku_map[' owner_id='.$commodity->owner_id.' sku='.$commodity->sku] = $commodity;
+            }
         }
-
         $order_packages_commodities = $this->getByWmsOrder($orderHeaders);
         $map = [];
         foreach ($order_packages_commodities as $item) {
-            $key = 'commodity_id='.$item->commodity_id.' order_package_id'.$item->order_package_id.' amount='.$item->amount;
-            $map[$key] = $item;
+            $key = ' commodity_id='.$item->commodity_id.' order_package_id'.$item->order_package_id.' amount='.$item->amount;
+            $map[$key][] = $item;
         }
 
         $insert_params = [];
@@ -434,15 +436,15 @@ class OrderPackageCommoditiesService
                     $commodity_owner_id_sku_map,
                     $logistic_numbers);
                 foreach ($params as $key =>$param) {
-                    $mapkey =  'commodity_id='.($param['commodity_id'] ?? '').' order_package_id'.($param['order_package_id'] ?? '').' amount='.($param['amount'] ?? '');
-                    if($map[$mapkey] ?? false){
-                        unset($params[$key],$map[$mapkey]);
+                    $mapkey = ' commodity_id='.($param['commodity_id'] ?? '').' order_package_id'.($param['order_package_id'] ?? '').' amount='.($param['amount'] ?? '');
+                    if(($map[$mapkey] ?? false) && count($map[$mapkey]) >0){
+                        array_shift($map[$mapkey]);
+                        unset($params[$key]);
                     }
                 }
                 $insert_params = array_merge($insert_params,$params);
                 unset($params);
             }
-
             $oracleDOCOrderDetails = $orderHeader->oracleDOCOrderDetails;
             if(count($logistic_numbers) ==0 && $oracleDOCOrderDetails->count() > 0){
                 $logistic_number = $orderHeader->soreference5;
@@ -453,16 +455,20 @@ class OrderPackageCommoditiesService
                     $logistic_number
                 );
                 foreach ($params as $key =>$param) {
-                    $mapkey =  'commodity_id='.($param['commodity_id'] ?? '').' order_package_id'.($param['order_package_id'] ?? '').' amount='.($param['amount'] ?? '');
+                    $mapkey =  ' commodity_id='.($param['commodity_id'] ?? '').' order_package_id'.($param['order_package_id'] ?? '').' amount='.($param['amount'] ?? '');
                     if($map[$mapkey] ?? false){
-                        unset($params[$key],$map[$mapkey]);
+                        array_shift($map[$mapkey]);
+                        unset($params[$key]);
                     }
                 }
                 $insert_params = array_merge($insert_params,$params);
                 unset($params);
             }
         }
-        $order_packages_commodities = $this->create($insert_params);
+        $order_packages_commodities= [];
+        if(count($insert_params) > 0){
+            $order_packages_commodities = $this->create($insert_params);
+        }
         unset($orderHeaders,$order_packages,$owner_code_map,$commodities,$insert_params);
         return $order_packages_commodities;
     }
@@ -479,7 +485,8 @@ class OrderPackageCommoditiesService
                 if(!$orderPackage){continue;}
                 $owner = $owner_code_map[$actAllocationDetail->customerid] ?? false;
                 if(!$owner){continue;}
-                $commodity = $commodity_owner_id_sku_map[' owner_id='.$owner->id.' sku='.$actAllocationDetail->sku];
+                $key= ' owner_id=' . $owner->id . ' sku=' . $actAllocationDetail->sku;
+                $commodity = $commodity_owner_id_sku_map[$key] ?? false;
                 if(!$commodity){continue;}
                 $fillables[] = [
                     'commodity_id' =>$commodity->id,
@@ -492,7 +499,8 @@ class OrderPackageCommoditiesService
         unset($details,$order_packages_logistic_number_map,$owner_code_map,$commodity_owner_id_sku_map,$logistic_numbers);
         return $fillables;
     }
-    public function getParamsByOracleDOCOrderDetail($details,array $order_packages_logistic_number_map,array $owner_code_map,array $commodity_owner_id_sku_map,$logistic_number){
+    public function getParamsByOracleDOCOrderDetail($details,array $order_packages_logistic_number_map,array $owner_code_map,array $commodity_owner_id_sku_map,$logistic_number)
+    {
         if(!$details){ return [];}
 
         $orderPackage = $order_packages_logistic_number_map[$logistic_number] ?? false;
@@ -533,22 +541,20 @@ class OrderPackageCommoditiesService
     }
 
 
-    public function updateCommoditiesByWmsOrder($orderHeaders){
+    public function updateByWmsOrder($orderHeaders){
         if(!$orderHeaders){return ;}
-//        /** @var OrderPackageService $order_packege_service */
-//        $order_package_service = app(OrderPackageService::class);
         /** @var CommodityService $commodityService */
         /** @var OwnerService $ownerService */
         $commodityService = app(CommodityService::class);
         $ownerService = app(OwnerService::class);
-        $owners =$ownerService->getOwnersByOrderHeaders($orderHeaders);
+        $owners =$ownerService->getByWmsOrders($orderHeaders);
         $owner_code_map = [];
         $owner_id_map = [];
         foreach ($owners as $owner) {
             $owner_code_map[$owner->code] = $owner;
             $owner_id_map[$owner->id] = $owner;
         }
-        $commodities = $commodityService->getCommoditiesByWmsOrder($orderHeaders);
+        $commodities = $commodityService->getByWmsOrders($orderHeaders);
         $commodities_owner_code_code_map = [];
         foreach ($commodities as $commodity) {
             $owner = $owner_id_map[$commodity->owner_id] ?? '';
@@ -571,7 +577,9 @@ class OrderPackageCommoditiesService
         }
 
         $insertParams = [];
-        $updateParams = [['id','order_package_id'.'commodity_id','amount']];
+        $updateParams = [['id','order_package_id'.'commodity_id','amount','updated_at']];
+        $updated_at = Carbon::now()->toDateTimeString();
+        $created_at = Carbon::now()->toDateTimeString();
         foreach ($orderHeaders as $orderHeader) {
             $order_no = $orderHeader->orderno;
             $order_package_commodities = $order_no_map[$order_no] ?? false;
@@ -597,6 +605,7 @@ class OrderPackageCommoditiesService
                             'id' => $order_package_commodity->id,
                             'commodity_id' => $order_package_commodity->commodity_id,
                             'amount' => $actAllocationDetail->qty,
+                            'updated_at' => $updated_at
                         ];
                         unset($order_package_commodities[$key]);
                         break;
@@ -607,6 +616,7 @@ class OrderPackageCommoditiesService
                             'order_package_id' => $order_package->id,
                             'commodity_id' => $order_package_commodity->commodity_id,
                             'amount' => $actAllocationDetail->qty,
+                            'created_at' => $created_at
                         ];
                         break;
                     }
@@ -626,8 +636,8 @@ class OrderPackageCommoditiesService
 
         if(count($insertParams) > 0){
             try {
-                OrderPackageCommodities::query()->insert($insertParams);
-                LogService::log(__METHOD__,__FUNCTION__,'批量添加 OrderPackageCommodities'.json_encode($insertParams));
+                $this->insert($insertParams);
+                LogService::log(__METHOD__,__FUNCTION__,'批量添加 OrderPackageCommodities '. count($insertParams) .json_encode($insertParams));
             } catch (\Exception $e) {
                 LogService::log(__METHOD__,__FUNCTION__,'批量添加 OrderPackageCommodities error'.json_encode($insertParams)."||".$e->getMessage().'||'.$e->getTraceAsString());
             }

+ 47 - 30
app/Services/OrderPackageService.php

@@ -344,12 +344,12 @@ class OrderPackageService
         }
     }
 
-    public function createOrderPackageByWmsOrder($orderHeaders_map)
+    public function createByWmsOrder($orderHeaders_map)
     {
         if(!$orderHeaders_map ){return [];}
         /** @var OrderService $orderService */
         $orderService = app(OrderService::class);
-        $orders = $orderService->getOrderByWmsOrder($orderHeaders_map);
+        $orders = $orderService->getByWmsOrders($orderHeaders_map);
         if(!$orders){return [];}
         $orders_code_map = [];
         foreach ($orders as $order) {
@@ -357,7 +357,7 @@ class OrderPackageService
         }
 
         $order_packages_logistic_number_map = [];
-        $order_packages = OrderPackage::query()->whereIn('order_id',data_get($orders_code_map,'*.id'))->get();
+        $order_packages = OrderPackage::query()->whereIn('order_id',data_get($orders,'*.id'))->get();
 
         foreach ($order_packages as $order_package) {
 //            $key = ' order_id='.$order_package->order_id.' logistic_number='.$order_package->logistic_number;
@@ -374,16 +374,18 @@ class OrderPackageService
             $insert_params = array_merge($insert_params,$params);
         }
         if(count($insert_params) ==  0){return null;}
-        $order_packages = $this->createOrderPackage($insert_params);
-        /** @var OrderPackageCommoditiesService $orderPackageCommodityService */ /** @var OwnerService  $ownerService */ /** @var CommodityService  $commodityService */
+        $order_packages = $this->create($insert_params);
+        /** @var OrderPackageCommoditiesService $orderPackageCommodityService */
+        /** @var OwnerService  $ownerService */
+        /** @var CommodityService  $commodityService */
         $orderPackageCommodityService = app(OrderPackageCommoditiesService::class);
         $ownerService = app(OwnerService::class);
         $commodityService = app(CommodityService::class);
         $owner_code_map = [];
 
-        $commodities = $commodityService->getCommoditiesByWmsOrder($orderHeaders_map);
+        $commodities = $commodityService->getByWmsOrders($orderHeaders_map);
 
-        $owners = $ownerService->getOwnersByOrderHeaders($orderHeaders_map);
+        $owners = $ownerService->getByWmsOrders($orderHeaders_map);
         foreach ($owners as $owner) {
             $owner_code_map[$owner->code] = $owner;
         }
@@ -392,26 +394,14 @@ class OrderPackageService
         $this->updateWeightAndBulk($order_packages,$order_package_commodities);
         unset($order_packages,$order_package_commodities);
     }
-    public function createOrderPackage(array $params)
-    {
-        if(count($params) == 0)return null;
-        try {
-            $this->insert($params);
-            LogService::log(__METHOD__,__FUNCTION__,'批量生成 orderPackage' . count($params) . json_encode($params));
-        } catch (\Exception $e) {
-            LogService::log(__METHOD__,__FUNCTION__,'批量生成 orderPackage error ' . json_encode($params) . $e->getMessage() . $e->getTraceAsString());
-        } finally {
-            $logistic_numbers = data_get($params,'*.logistic_number');
-            unset($params);
-            return OrderPackage::query()->whereIn('logistic_number',$logistic_numbers)->get();
-        }
-    }
+
+
 
     public function getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map){
         $actAllocationDetails = $orderHeader->actAllocationDetails;
         $logistic_numbers = array_diff(array_unique(data_get($actAllocationDetails,'*.picktotraceid')),['','*',null]);
         $params = [];
-        $created_at = Carbon::now();
+        $created_at = Carbon::now()->format('Y-m-d H:i:s');;
         foreach ($logistic_numbers as $logistic_number) {
             $map_key = ' order_id='.$order->id.' logistic_number='.$logistic_number;
             if(isset($order_packages_logistic_number_map[$map_key])){ continue;}
@@ -422,7 +412,7 @@ class OrderPackageService
         $oracleDOCOrderDetails = $orderHeader->oracleDOCOrderDetails;
         if(count($logistic_numbers) === 0 && count($oracleDOCOrderDetails) > 0){
             $key = ' logistic_number='.$orderHeader->soreference5;
-            if(!isset($orderHeader->soreference5)){return $params;}
+            if(!isset($orderHeader->soreference5) || in_array($orderHeader->soreference5,[''.'*',null])){return $params;}
             if(!isset($order_packages_logistic_number_map[$key])){
                 $params[] = [
                     'order_id' => $order->id, 'logistic_number' => $orderHeader->soreference5,'created_at' => $created_at
@@ -433,6 +423,8 @@ class OrderPackageService
     }
 
     public function updateWeightAndBulk($orderPackages,$orderPackageCommodities){
+        if(!$orderPackageCommodities){return ;}
+        if(!$orderPackages){return ;}
         $orderPackageCommodities_map =[];
         foreach ($orderPackageCommodities as $orderPackageCommodity) {
             $order_package_id = $orderPackageCommodity->order_package_id;
@@ -442,7 +434,8 @@ class OrderPackageService
             $orderPackageCommodities_map[$order_package_id][] = $orderPackageCommodity;
         }
 
-        $update_params = [['id','bulk']];
+        $update_params = [['id','bulk','updated_at']];
+        $updated_at = Carbon::now()->format('Y-m-d H:i:s');
         foreach ($orderPackages as $orderPackage) {
             $order_package_id = $orderPackage->id;
             $orderPackageCommodity_list = $orderPackageCommodities_map[$order_package_id] ?? [];
@@ -450,7 +443,7 @@ class OrderPackageService
             if( isset($orderPackage['bulk']) && $orderPackage['bulk']!=0){
                 continue;
             }
-            $params = ['id'=>$order_package_id,'bulk' => null,'weight' => null];
+            $params = ['id'=>$order_package_id,'bulk' => null,'updated_at'=>$updated_at];
             foreach ($orderPackageCommodity_list as $orderPackageCommodity) {
                 $commodity = $orderPackageCommodity->commodity;
                 if(!$commodity['length'] || !$commodity['width'] || !$commodity['height']){
@@ -458,9 +451,10 @@ class OrderPackageService
                 }
                 $bulk = bcmul($commodity['length'],$commodity['width'],5);
                 $bulk = bcmul($commodity['height'],$bulk,5);
+                $bulk = bcmul($bulk,$orderPackageCommodity->amount,5);
                 $params['bulk'] +=  $bulk;
             }
-            if($params['bulk'] == $orderPackage->bulk){continue;}
+            if($params['bulk'] == $orderPackage->bulk && $orderPackage->bulk!= 0){continue;}
             $update_params[]= $params;
         }
         if(count($update_params) > 1){
@@ -472,8 +466,10 @@ class OrderPackageService
         /** @var OrderPackageCommoditiesService $orderPackageCommoditiesService */
         $orderPackageCommoditiesService =  app(OrderPackageCommoditiesService::class);
         if(!$orderHeaders){return;}
+
         $order_nos = data_get($orderHeaders,'*.orderno');
         $orders = Order::query()->with('packages')->whereIn('code',$order_nos)->get();
+
         $orders_code_map = [];
         $order_packages_logistic_number_map = [];
         foreach ($orders as $order) {
@@ -481,9 +477,12 @@ class OrderPackageService
             $order_packages = $order->packages;
             if(!$order_packages){continue;}
             foreach ($order_packages as $order_package) {
-                $order_packages_logistic_number_map[$order_package->logistic_number] =$order_package;
+                $key = ' order_id='.$order->id.' logistic_number='.$order_package->logistic_number;
+                $order_packages_logistic_number_map[$key] =$order_package;
             }
         }
+
+
         $insertParams = [];
         foreach ($orderHeaders as $orderHeader) {
             $order = $orders_code_map[$orderHeader->orderno] ?? false;
@@ -491,9 +490,12 @@ class OrderPackageService
             $order_packages = $order->packages;
             if(!$order_packages){continue;}
             $params =$this->getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map);
-            if(count($params) > $order_packages->count()){
+            if(count($params) > 0){
                 foreach ($params as $param) {
-                    $order_package = $order_packages->where('logistic_number',$param)->first();
+                    $key = ' order_id='.$param['order_id'].' logistic_number='.$param['logistic_number'];
+                    $order_package =  $order_packages_logistic_number_map[$key] ?? false;
+//                    $order_package =  $order_packages_logistic_number_map[$param['logistic_number']] ?? false;
+//                    $order_package = $order_packages->where('logistic_number',$param)->first();
                     if($order_package){continue;}
                     $insertParams[] = $param;
                 }
@@ -503,7 +505,7 @@ class OrderPackageService
             $this->insert($insertParams);
         }
 
-        $orderPackageCommoditiesService->updateCommoditiesByWmsOrder($orderHeaders);
+        $orderPackageCommoditiesService->updateByWmsOrder($orderHeaders);
         $order_packages = OrderPackage::query()->with('order')
             ->whereHas('order',function($query) use($order_nos){
                 $query->whereIn('code',$order_nos);
@@ -538,4 +540,19 @@ class OrderPackageService
                 $query->whereIn('code',$order_nos);
             })->get();
     }
+
+    public function create(array $params)
+    {
+        if(count($params) == 0)return null;
+        try {
+            $this->insert($params);
+            LogService::log(__METHOD__,__FUNCTION__,'批量生成 orderPackage' . count($params) . json_encode($params));
+        } catch (\Exception $e) {
+            LogService::log(__METHOD__,__FUNCTION__,'批量生成 orderPackage error ' . json_encode($params) . $e->getMessage() . $e->getTraceAsString());
+        } finally {
+            $logistic_numbers = data_get($params,'*.logistic_number');
+            unset($params);
+            return OrderPackage::query()->whereIn('logistic_number',$logistic_numbers)->get();
+        }
+    }
 }

+ 48 - 25
app/Services/OrderService.php

@@ -793,7 +793,7 @@ class OrderService
     }
 
 
-    public function createOrderByWmsOrder($orderHeaders)
+    public function createByWmsOrder($orderHeaders)
     {
         if($orderHeaders->isEmpty())return null;
         /** @var OwnerService $ownerService */
@@ -807,9 +807,9 @@ class OrderService
 
         $orderHeaders_map = [];$owners_code_map = [];$logistics_code_map = [];$shop_name_map=[]; $owners_id_map = [];
 
-        $owners = $ownerService->getOwnersByOrderHeaders($orderHeaders);
-        $logistics = $logisticService->getLogisticByOrderHeaders($orderHeaders);
-        $shops = $shopService->getShopsByOrderHeaders($orderHeaders);
+        $owners = $ownerService->getByWmsOrders($orderHeaders);
+        $logistics = $logisticService->getByWmsOrders($orderHeaders);
+        $shops = $shopService->getByWmsOrders($orderHeaders);
 
         foreach ($orderHeaders as $orderHeader) {
             $orderHeaders_map[$orderHeader->orderno] = $orderHeader;
@@ -829,12 +829,12 @@ class OrderService
         }
 
         $this->filterExitingOrder($orderHeaders_map);
-        $fillables = $this->getParamsByOrderHeader($orderHeaders_map,$owners_code_map,$logistics_code_map,$shop_name_map);
-        $orders = $this->createOrder($fillables);
+        $insert_params = $this->getParamsByOrderHeader($orderHeaders_map,$owners_code_map,$logistics_code_map,$shop_name_map);
+        $orders = $this->create($insert_params);
         if(!$orders)return [];
 
 
-        $orderPackageService->createOrderPackageByWmsOrder($orderHeaders_map);
+        $orderPackageService->createByWmsOrder($orderHeaders_map);
         $order_nos = array_keys($orderHeaders_map);
         unset($orderHeaders_map,$orders_code_map,$shop_name_map,$logistics_code_map,$owners_code_map);
         return Order::query()->whereIn('code',$order_nos)->get();
@@ -854,17 +854,24 @@ class OrderService
 
     public function getParamsByOrderHeader($orderHeaders_map,$owners_code_map,$logistics_code_map,$shop_name_map){
         $params = [];
+        // 自提 转 新杰物流
+        $logistic_XJWL = Logistic::query()->where('code' ,'XJWL')->first();
         foreach ($orderHeaders_map as $orderHeader) {
             $owner = $owners_code_map[$orderHeader->customerid] ?? null;
-            $logistics =  $logistics_code_map[$orderHeader->carrierid] ?? null;
+            $logistic =  $logistics_code_map[$orderHeader->userdefine1] ?? null;
             $shop = $shop_name_map[' _owner_code'.$orderHeader->customerid.' name='.$orderHeader->issuepartyname] ?? '';
+            // 自提 转 新杰物流
+            if($logistic!= null && $logistic->name == '自提'){
+                $logistic = $logistic_XJWL;
+            }
+
             $params[] = [
                 'code' => $orderHeader->orderno,
                 'owner_id' => $owner->id ?? null,
                 'wms_status' => $orderHeader->oracleBASCode ? $orderHeader->oracleBASCode->codename_c : null,
                 'created_at' => $orderHeader->addtime,
-                'logistic_id' => $logistics ? $logistics->id : null,
-                'shop_id' => $shop ? $shop->id : null,
+                'logistic_id' => $logistic->id ?? null,
+                'shop_id' => $shop->id ?? null,
                 'consignee_name' => $orderHeader->c_contact,
                 'consignee_phone' => $orderHeader->c_tel2,
                 'province' => $orderHeader->c_province,
@@ -872,12 +879,13 @@ class OrderService
                 'district' => $orderHeader->c_district,
                 'address' => $orderHeader->c_address1,
                 'client_code' => $orderHeader->soreference1,
+                'wms_edittime' =>$orderHeader->edittime
             ];
         }
         return $params;
     }
 
-    public function createOrder(array $params){
+    public function create(array $params){
         if(count($params) == 0) return [];
         try {
             $this->insert($params);
@@ -889,7 +897,7 @@ class OrderService
         }
     }
 
-    public function updateOrderByWmsOrder($orderHeaders)
+    public function updateByWmsOrders($orderHeaders)
     {
         /** @var OrderPackageService $orderPackageService */
         $orderPackageService = app(OrderPackageService::class);
@@ -901,34 +909,45 @@ class OrderService
             $order_code_map[$order->code] = $order;
         }
 
-        $owners = app(OwnerService::class)->getOwnersByOrderHeaders($orderHeaders);
+        $owners = app(OwnerService::class)->getByWmsOrders($orderHeaders);
         $owner_code_map = [];
         foreach ($owners as $owner) {
             $owner_code_map[$owner->code] = $owner;
         }
-        $logistics = app(LogisticService::class)->getWASLogisticsByWMSOrderHeaders($orderHeaders);
+        $logistics = app(LogisticService::class)->getByWmsOrders($orderHeaders);
         $logistics_code_map = [];
         foreach ($logistics as $logistic) {
             $logistics_code_map[$logistic->code] = $logistic;
         }
 
-        $shops = app(ShopService::class)->getShopsByOrderHeaders($orderHeaders);
+        $shops = app(ShopService::class)->getByWmsOrders($orderHeaders);
         $shops_owner_id_name_map = [];
         foreach ($shops as  $shop){
             $key = ' owner_id='.$shop->owner_id.' name='.$shop->name;
             $shops_owner_id_name_map[$key] = $shop;
         }
         $updateParams = [[
-            'owner_id','wms_status','logistic_id','shop_id','consignee_name','consignee_phone','province','city','district','address','client_code'
+            'id','owner_id','wms_status','logistic_id','shop_id','consignee_name','consignee_phone','province','city','district','address','client_code','updated_at','wms_edittime'
         ]];
+        $updated_at = Carbon::now()->toDateTimeString();
+        // 新杰物流
+        $logistic_XJWL = Logistic::query()->where('code','XJWL')->first();
         foreach ($orderHeaders as $orderHeader) {
             $order_no = $orderHeader->orderno;
             $order = $order_code_map[$order_no] ?? false;
+            if(!$order){continue;}
             $logistic = $logistics_code_map[$orderHeader->userdefine1] ?? '';
+            // 自提 转 新杰物流
+            if($logistic != '' && $logistic->name == '自提'){
+                $logistic = $logistic_XJWL;
+            }
             $owner = $owner_code_map[$orderHeader->customerid] ?? '';
             $shop = $shops_owner_id_name_map[' owner_id='.$owner->id.' name='.$orderHeader->issuepartyname] ?? '';
-            $shop_id = $shop['id'] ?? '';$logistic_id = $logistic['id'] ?? '';$owner_id = $owner['id'] ?? '';
-            if(!$order){continue;}
+
+            $shop_id = $shop['id'] ?? '';
+            $logistic_id = $logistic->id ?? '';
+            $owner_id = $owner['id'] ?? '';
+
             if($order->wms_status != $orderHeader->oracleBASCode_codename_c ||
                 $order->logistic_id != $logistic_id ||
                 $order->shop_id != $shop_id ||
@@ -939,30 +958,34 @@ class OrderService
                 $order->city != $orderHeader->c_city ||
                 $order->district != $orderHeader->c_district ||
                 $order->address != $orderHeader->c_address1 ||
-                $order->client_code != $orderHeader->soreference1){
+                $order->client_code != $orderHeader->soreference1 ||
+                $order->wms_edittime != $orderHeader->edittime){
                 $updateParams[] = [
+                    'id'=>$order->id,
                     'owner_id' => $owner->id ?? null,
-                    'wms_status' => $orderHeader->oracleBASCode ? $orderHeader->oracleBASCode->codename_c : null,
-                    'logistic_id' => $logistic ? $logistic->id : null,
-                    'shop_id' => $shop ? $shop->id : null,
+                    'wms_status' => $orderHeader->oracleBASCode_codename_c ?? '',
+                    'logistic_id' => $logistic_id,
+                    'shop_id' => $shop_id,
                     'consignee_name' => $orderHeader->c_contact,
                     'consignee_phone' => $orderHeader->c_tel2,
                     'province' => $orderHeader->c_province,
                     'city' => $orderHeader->c_city,
                     'district' => $orderHeader->c_district,
                     'address' => $orderHeader->c_address1,
-                    'client_code' => $orderHeader->soreference1];
+                    'client_code' => $orderHeader->soreference1,
+                    'updated_at' =>$updated_at,
+                    'wms_edittime' =>$orderHeader->edittime];
             }
         }
         if(count($updateParams) > 0){
             $this->batchUpdate($updateParams);
         }
-        $this->createOrderByWmsOrder($orderHeaders);
+        $this->createByWmsOrder($orderHeaders);
         $orderPackageService->updateOrderPackageByWmsOrder($orderHeaders);
         unset($updateParams,$orderHeaders);
     }
 
-    public function getOrderByWmsOrder($orderHeaders){
+    public function getByWmsOrders($orderHeaders){
         if(!$orderHeaders){return null;}
         $order_nos = data_get($orderHeaders,'*.orderno');
         return Order::query()->whereIn('code',$order_nos)->get();

+ 4 - 4
app/Services/OrderTrackingService.php

@@ -332,16 +332,16 @@ class OrderTrackingService
         $orderService = app(OrderService::class);
         /** @var OracleDOCOrderHeader $orderHeaders */
         $orderHeaders = app(OracleDOCOrderHeaderService::class)->getWmsOrderOnStartDateCreate($startData);
-        $orderService->createOrderByWmsOrder($orderHeaders);
+        $orderService->createByWmsOrder($orderHeaders);
         $this->createByWmsOrderHeader($orderHeaders);
     }
 
     public function trackingWmsOrderOnEdit($startData){
-        /** @var OrderService $orderSerivce */
-        $orderSerivce = app(OrderService::class);
+        /** @var OrderService $orderService */
+        $orderService = app(OrderService::class);
         /** @var OracleDOCOrderHeader $orderHeaders */
         $orderHeaders = app(OracleDOCOrderHeaderService::class)->getWmsOrderOnStartDateEdit($startData);
-        $orderSerivce->updateOrderByWmsOrder($orderHeaders);
+        $orderService->updateByWmsOrders($orderHeaders);
         $this->updateByWmsOrderHeaders($orderHeaders);
     }
 

+ 12 - 12
app/Services/OwnerService.php

@@ -98,30 +98,30 @@ Class OwnerService
         })->get();
     }
 
-    public function getOwnersByOrderHeaders($orderHeaders){
+    public function getByWmsOrders($orderHeaders){
         $customerIds = array_unique(data_get($orderHeaders,'*.customerid'));
         $customerIds = array_diff($customerIds,[null,'','*']);
         $owners = Owner::query()->whereIn('code',data_get($orderHeaders,'*.customerid'))->get();
 
         if($owners->count() < $customerIds){
             $customerIds = array_diff($customerIds,data_get($owners,'*.code'));
-            $owner_list = $this->createOwnerByCustomerIds($customerIds);
+            $owner_list = $this->createByWmsCustomerIds($customerIds);
             $owners->concat($owner_list);
         }
         return $owners;
     }
 
-    public function createOwnerByCustomerIds($customerIds){
-        if(!$customerIds) {return [];}
+    public function createByWmsCustomerIds($codes){
+        if(!$codes) {return [];}
         $basCustomer = OracleBasCustomer::query()
             ->where('Customer_Type','OW')
-            ->whereIn('CustomerID', $customerIds)
+            ->whereIn('CustomerID', $codes)
             ->get();
 
-        $fillables = [];
+        $insert_params = [];
         $created_at = Carbon::now()->format('Y-m-d H:i:s');
         foreach ($basCustomer as $item) {
-            $fillables[] = [
+            $insert_params[] = [
                 'code' => $item->customerid,
                 'name' => $item->descr_c,
                 'created_at' => $created_at,
@@ -129,14 +129,14 @@ Class OwnerService
         }
 
         try {
-            if (count($fillables) > 0) {
-                $this->insert($fillables);
-                LogService::log(__METHOD__, __FUNCTION__, '批量创建 owner error' . count($fillables) . json_encode($fillables) );
+            if (count($insert_params) > 0) {
+                $this->insert($insert_params);
+                LogService::log(__METHOD__, __FUNCTION__, '批量创建 owner error' . count($insert_params) . json_encode($insert_params) );
             }
         } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '批量创建 owner error' . json_encode($fillables) . '||' . $e->getMessage() . '||' . $e->getTraceAsString());
+            LogService::log(__METHOD__, __FUNCTION__, '批量创建 owner error' . json_encode($insert_params) . '||' . $e->getMessage() . '||' . $e->getTraceAsString());
         } finally {
-            return Owner::query()->whereIn('code', $fillables)->get();
+            return Owner::query()->whereIn('code', $codes)->get();
         }
     }
 

+ 28 - 20
app/Services/ShopService.php

@@ -3,6 +3,7 @@
 namespace App\Services;
 
 use App\Owner;
+use App\Services\common\BatchUpdateService;
 use App\Shop;
 use Carbon\Carbon;
 
@@ -15,6 +16,15 @@ class ShopService
         return $shop->firstOrCreate($param);
     }
 
+    public function insert(array $params)
+    {
+        return Shop::query()->insert($params);
+    }
+
+    public function batchUpdate(array $params)
+    {
+        return app(BatchUpdateService::class)->batchUpdate('shops',$params);
+    }
     public function 根据追踪的WMS订单返回商铺($WMSOrderHeaders, $owners = null)
     {
         if ($owners == null) {
@@ -30,10 +40,11 @@ class ShopService
             $issuePartyNames[$WMSOrderHeader['issuepartyname']] = $WMSOrderHeader;
         }
         $issuePartyNames = array_unique($issuePartyNames);
-        $issuePartyNames = array_diff($issuePartyNames,['',null]);
+        $issuePartyNames = array_diff($issuePartyNames,['','*',null]);
 
         $shops = Shop::query()->whereIn('name',array_keys($issuePartyNames))->get();
-        $fillables = [];
+        $insert_params = [];
+
         if (count($shops) < count($issuePartyNames)) {
             $shopNames = data_get($shops, '*.name');
             $shopDiff = array_diff($issuePartyNames, $shopNames);
@@ -44,21 +55,21 @@ class ShopService
                 $owner = $owners->where('code', $item['customerid'])->first();
                 if($owner === null || $item['issuepartyname'] ?? false)
                     continue;
-                array_push($fillables,['owner_id' => $owner['id'], 'name' => $item['issuepartyname']]);
+                array_push($insert_params,['owner_id' => $owner['id'], 'name' => $item['issuepartyname']]);
             }
         }
         try {
-            if(count($fillables) > 0){
-                Shop::query()->insert($fillables);
-                LogService::log(__METHOD__, __FUNCTION__, '批量创建商铺:' .json_encode($fillables));
+            if(count($insert_params) > 0){
+                Shop::query()->insert($insert_params);
+                LogService::log(__METHOD__, __FUNCTION__, '批量创建 shop' .json_encode($insert_params));
             }
         } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '创建商铺失败:' . $e->getMessage(),$e->getTraceAsString());
+            LogService::log(__METHOD__, __FUNCTION__, '创建创建 shop error' .json_encode($insert_params) . $e->getMessage(),$e->getTraceAsString());
         }
         return Shop::query()->whereIn('name',array_keys($issuePartyNames))->get();
     }
 
-    public function getShopsByOrderHeaders($orderHeaders){
+    public function getByWmsOrders($orderHeaders){
         //issuepartyname
         $maps = [];
         foreach ($orderHeaders as $orderHeader) {
@@ -67,7 +78,7 @@ class ShopService
                 $maps[] = $value;
             }
         }
-        $issuepartynames =array_diff(array_unique(data_get($maps,'*.issuepartyname')),['','*',null])  ;
+        $issuepartynames = array_diff(array_unique(data_get($maps,'*.issuepartyname')),['','*',null])  ;
         $shops = Shop::query()
             ->whereIn('name',$issuepartynames)
             ->get();
@@ -80,13 +91,13 @@ class ShopService
                    $params[] = $item;
                }
             }
-            $shops_list = $this->createShopByIssuePartyNameAndOwnerCode($params);
+            $shops_list = $this->createByNameAndOwnerCode($params);
             $shops->concat($shops_list);
         }
         return $shops;
     }
 
-    public function createShopByIssuePartyNameAndOwnerCode(array $params){
+    public function createByNameAndOwnerCode(array $params){
         $owners = Owner::query()
             ->whereIn('code',data_get($params,'*.owner_code'))
             ->get();
@@ -94,23 +105,23 @@ class ShopService
         foreach ($owners as $owner) {
             $owners_map[$owner->code] = $owner;
         }
-        $fillables = [];
+        $insert_params = [];
         $created_at = Carbon::now()->format('Y-m-d H:i:s');
         foreach ($params as $param) {
             $owner = $owners_map[$param['owner_code']] ?? '';
-            $fillables[] = [
+            $insert_params[] = [
                 'name' => $param['issuepartyname'] ?? '',
                 'owner_id' => $owner['id'] ?? '',
                 'created_at' => $created_at,
             ];
         }
         try {
-            if (count($fillables) > 0) {
-                $this->insert($fillables);
-                LogService::log(__METHOD__, __FUNCTION__, '批量创建 shop ' . count($fillables) . json_encode($fillables));
+            if (count($insert_params) > 0) {
+                $this->insert($insert_params);
+                LogService::log(__METHOD__, __FUNCTION__, '批量创建 shop ' . count($insert_params) . json_encode($insert_params));
             }
         } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '批量创建 shop ' . json_encode($fillables) .'||'.$e->getMessage().'||'.$e->getTraceAsString());
+            LogService::log(__METHOD__, __FUNCTION__, '批量创建 shop ' . json_encode($insert_params) .'||'.$e->getMessage().'||'.$e->getTraceAsString());
         } finally {
             return Shop::query()
                 ->whereIn('name',data_get($params,'*.issuepartyname'))
@@ -118,8 +129,5 @@ class ShopService
         }
     }
 
-    public function insert(array $params){
-        return Shop::query()->insert($params);
-    }
 
 }

+ 2 - 1
composer.json

@@ -28,7 +28,8 @@
         "predis/predis": "^1.1",
         "pusher/pusher-php-server": "^4.1",
         "te7a-houdini/laravel-trix": "^2.0",
-        "yajra/laravel-oci8": "7.0"
+        "yajra/laravel-oci8": "7.0",
+      "ext-bcmath": "*"
     },
     "require-dev": {
         "barryvdh/laravel-debugbar": "^3.2",

+ 25 - 13
resources/views/order/tracking/index.blade.php

@@ -3,7 +3,7 @@
 @section('content')
     @component('order.tracking.menu')@endcomponent
     <div class="container-fluid" id="tracking_div">
-        <div style="width: 3000px">
+        <div style="min-width: 3000px">
             <div class="d-none" id="list">
                 @can('订单管理-跟踪-监听')
                 <div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="pasteDataTitle" aria-hidden="true">
@@ -51,19 +51,19 @@
                         <th>
                             <input id="all" type="checkbox" @click="checkAll($event)"/>
                         </th>
-                        <th>序号</th>
+                        <th style="min-width: 50px">序号</th>
                         <th class="td-warm" style="min-width: 75px">公司</th>
-                        <th class="td-warm">订单号</th>
+                        <th class="td-warm" style="min-width: 120px">订单号</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">物料描述</th>
+                        <th class="td-yellow" style="min-width: 75px">数量</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: 75px">重量</th>
+                        <th class="td-yellow" style="min-width: 75px">体积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>
@@ -80,13 +80,19 @@
                             <input id="all" type="checkbox" :value="trackOrder.id" v-model="checkData">
                         </td>
                         <td>@{{ index+1 }}</td>
-                        <td  class="text-decoration-none td-warm">@{{ trackOrder.ownerName }}</td>
-                        <td class="td-warm">@{{ trackOrder.orderClientCode }}</td>
+                        <td class="text-decoration-none td-warm">@{{ trackOrder.ownerName }}</td>
                         <td class="td-warm">
+{{--                            <span v-if="trackOrder.orderClientCode.substr(0,1) === 'O'"> @{{ trackOrder.web_order_number }}</span>--}}
+{{--                            <span v-else>  @{{ trackOrder.orderClientCode }}</span>--}}
+                            @{{ trackOrder.orderClientCode }}
+                        </td>
+                        <td class="td-warm">
+{{--                            <span v-if="trackOrder.orderClientCode.substr(0,1) === 'O'"></span>--}}
+{{--                            <span v-else> @{{ trackOrder.web_order_number }}</span>--}}
                             @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 }}
+                            @{{ trackOrder.web_order_number }}
                             @endcan
                         </td>
                         <td class="td-warm">
@@ -112,7 +118,7 @@
                             @endcan
                         </td>
                         <td class="td-yellow">@{{ trackOrder.sku.sku }}</td>
-                        <td class="td-yellow">@{{ trackOrder.sku.skuName }}</td>
+                        <td class="td-yellow" style="min-width: 120px">@{{ trackOrder.sku.skuName }}</td>
                         <td class="td-yellow">@{{ trackOrder.sku.skuAmount }}</td>
                         <td class="td-yellow">
                             @can('订单管理-跟踪-仓库编辑')
@@ -166,14 +172,14 @@
                                 @{{ trackOrder.signed_at }}
                             @endcan
                         </td>
-                        <td>
+                        <td class="td-calm">
                             @can('订单管理-跟踪-物流公司编辑')
                                 <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>
+                        <td class="td-calm">
                             @can('订单管理-跟踪-物流公司编辑')
                                 <input class="form-control form-control-sm" @keyup.enter="logisticUpdate($event,'remark',trackOrder)" :value="trackOrder.remark">
                             @else
@@ -438,6 +444,7 @@
             },
             filters:{
                 millimeterToCubic:function(val){
+                    console.log(val);
                     if(typeof(val)==='undefined')return '';
                     if(val==='0'||val===0)return 0;
                     if(!val)return '';
@@ -449,6 +456,11 @@
                         // return moment(value).format('yyyy-MM-DDTHH:mm:ss');
                     }
                     return value
+                },
+                number:function(value){
+                    var toFixedNum = Number(value).toFixed(3);
+                    var realVal = toFixedNum.substring(0, toFixedNum.toString().length - 1);
+                    return realVal;
                 }
             },