Browse Source

问题件生成

ajun 5 years ago
parent
commit
1b482c8b03

+ 3 - 3
app/Services/OrderIssueService.php

@@ -297,9 +297,9 @@ class OrderIssueService
     {
         /** @var OrderService $orderService */
         $orderService = app('OrderService');
-        $orderService->updateByWmsOrders($orderHeaders);
-        $orders = $orderService->getByWmsOrders($orderHeaders);
-//        $orders = $orderService->createByWmsOrder($orderHeaders);
+//        $orderService->updateByWmsOrders($orderHeaders);
+//        $orders = $orderService->getByWmsOrders($orderHeaders);
+        $orders = $orderService->createByWmsOrder($orderHeaders);
         $innerParams = [];
         if(count($orders)>0){
             foreach ($orders as $order) {

+ 1 - 1
app/Services/OrderPackageService.php

@@ -229,7 +229,7 @@ class OrderPackageService
         $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;
+//            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;}

+ 82 - 36
app/Services/OrderService.php

@@ -524,10 +524,13 @@ class OrderService
         }
 
         $insert_params = $this->getParamsByOrderHeader($orderHeaders,$owners_code_map,$logistics_code_map,$shop_name_map,$warehouses_code_map);
-
+        $update_params = $this->getUpdateParams($orderHeaders,$owners_code_map,$logistics_code_map,$shop_name_map,$warehouses_code_map);
         if(count($insert_params)> 0){
             $this->create($insert_params);
         }
+        if(count($update_params)>1){
+            $this->batchUpdate($update_params);
+        }
         $orderPackageService->createByWmsOrder($orderHeaders);
         $order_nos = data_get($orderHeaders,'*.orderno');
         unset($orderHeaders_map,$orders_code_map,$shop_name_map,$logistics_code_map,$owners_code_map);
@@ -543,7 +546,7 @@ class OrderService
             $order_code_map[$order->code]= $order;
         }
         foreach ($orderHeaders_map as $orderHeader) {
-             if($order_code_map[$orderHeader->orderno] ?? false)continue;
+            if($order_code_map[$orderHeader->orderno] ?? false)continue;
             $owner = $owners_code_map[$orderHeader->customerid] ?? null;
             $logistic =  $logistics_code_map[$orderHeader->userdefine1] ?? null;
             $warehouse=$warehouses_code_map[$orderHeader->warehouseid] ?? null;
@@ -570,6 +573,32 @@ class OrderService
         return $params;
     }
 
+    public function getUpdateParams($orderHeaders,$owners_code_map,$logistics_code_map,$shop_name_map,$warehouses_code_map)
+    {
+        if(!$orderHeaders){[];}
+        $orders = Order::query()->whereIn('code',data_get($orderHeaders,'*.orderno'))->get();
+        $update_params = [[
+            'id','owner_id','wms_status','logistic_id','shop_id','consignee_name','consignee_phone','province','city','district','address','client_code','updated_at','wms_edittime','warehouse_id'
+        ]];
+        $orderHeaders_map = [];
+        foreach ($orderHeaders as $orderHeader) {
+            $orderHeaders_map[$orderHeader->orderno] = $orderHeader;
+        }
+        $updated_at = Carbon::now()->toDateTimeString();
+        $orders->each(function($order)use($orderHeaders_map,&$owners_code_map,&$logistics_code_map,&$shop_name_map,&$warehouses_code_map,&$update_params,$updated_at){
+            $order_header = $orderHeaders_map[$order->code] ?? null;
+            if(isset($order_header)){
+                $owner = $owners_code_map[$order_header->customerid] ?? null;
+                $logistic =  $logistics_code_map[$order_header->userdefine1] ?? null;
+                $warehouse=$warehouses_code_map[$order_header->warehouseid] ?? null;
+                $key = ' owner_code='.$order_header->customerid.' name='.$order_header->issuepartyname ?? null;
+                $shop = $shop_name_map[$key] ?? null;
+                $this->UpdateOrderParamBy($shop, $logistic, $owner, $warehouse, $order, $order_header, $updated_at, $update_params);
+            }
+        });
+        return $update_params;
+    }
+
     public function create(array $params){
         if(count($params) == 0) return [];
         try {
@@ -614,40 +643,7 @@ class OrderService
             $owner = $dataHandlerService->getKeyValue(['code'=>$orderHeader->customerid] ,$owner_code_map);
             $shop = $dataHandlerService->getKeyValue(['owner_id'=>$owner->id ?? '','name'=> $orderHeader->issuepartyname] ,$shops_map);
             $warehouse=$dataHandlerService->getKeyValue(['code'=>$orderHeader->warehouseid],$warehouses_map);
-            $shop_id = $shop->id ?? null;
-            $logistic_id = $logistic->id ?? null;
-            $owner_id = $owner->id ?? null;
-            $warehouse_id=$warehouse->id??null;
-
-            if(($order->wms_status !== $orderHeader->oracleBASCode_codename_c) ||
-                ($order->logistic_id !== $logistic_id) ||
-                ($order->shop_id !==$shop_id) ||
-                ($order->owner_id !== $owner_id) ||
-                ($order->consignee_name !== $orderHeader->c_contact) ||
-                ($order->consignee_phone !== empty($orderHeader->c_tel2)?$orderHeader->c_tel1:$orderHeader->c_tel2) ||
-                $order->province !== ($orderHeader->c_province) ||
-                $order->city !== ($orderHeader->c_city) ||
-                $order->district !== ($orderHeader->c_district) ||
-                $order->address !== ($orderHeader->c_address1) ||
-                $order->client_code !== ($orderHeader->soreference1) ||
-                ($order->wms_edittime !== $orderHeader->edittime) ||
-                ($order->warehouse_id!==$warehouse_id)){
-                $updateParams[] = ['id'=>$order->id,
-                    'owner_id' => $owner_id,
-                    'wms_status' => $orderHeader->oracleBASCode_codename_c ?? '',
-                    'logistic_id' => $logistic_id,
-                    'shop_id' => $shop_id,
-                    'consignee_name' => $orderHeader->c_contact,
-                    'consignee_phone' => empty($orderHeader->c_tel2)?$orderHeader->c_tel1:$orderHeader->c_tel2,
-                    'province' => $orderHeader->c_province,
-                    'city' => $orderHeader->c_city,
-                    'district' => $orderHeader->c_district,
-                    'address' => $orderHeader->c_address1,
-                    'client_code' => $orderHeader->soreference1,
-                    'updated_at' =>$updated_at,
-                    'wms_edittime' =>$orderHeader->edittime,
-                    'warehouse_id'=>$warehouse_id];
-            }
+            $this->UpdateOrderParamBy($shop, $logistic, $owner, $warehouse, $order, $orderHeader, $updated_at, $updateParams);
         }
         if(count($updateParams) > 1){
             $this->batchUpdate($updateParams);
@@ -847,6 +843,7 @@ class OrderService
         }
         return $collect;
     }
+
     // TODO
     public function getCreateOrderModels($orderHeader,$warehouse_map,$owner_map,$logistic_map,$shop_map)
     {
@@ -877,4 +874,53 @@ class OrderService
         ]);
     }
 
+    /**
+     * @param $shop
+     * @param $logistic
+     * @param $owner
+     * @param $warehouse
+     * @param $order
+     * @param $orderHeader
+     * @param string $updated_at
+     * @param $updateParams
+     * @return mixed
+     */
+    public function UpdateOrderParamBy($shop, $logistic, $owner, $warehouse, $order, $orderHeader, string $updated_at, &$updateParams)
+    {
+        $shop_id = $shop->id ?? null;
+        $logistic_id = $logistic->id ?? null;
+        $owner_id = $owner->id ?? null;
+        $warehouse_id = $warehouse->id ?? null;
+
+        if (($order->wms_status !== $orderHeader->oracleBASCode_codename_c) ||
+            ($order->logistic_id !== $logistic_id) ||
+            ($order->shop_id !== $shop_id) ||
+            ($order->owner_id !== $owner_id) ||
+            ($order->consignee_name !== $orderHeader->c_contact) ||
+            $order->consignee_phone !==( empty($orderHeader->c_tel2) ? $orderHeader->c_tel1 : $orderHeader->c_tel2) ||
+            $order->province !== ($orderHeader->c_province) ||
+            $order->city !== ($orderHeader->c_city) ||
+            $order->district !== ($orderHeader->c_district) ||
+            $order->address !== ($orderHeader->c_address1) ||
+            $order->client_code !== ($orderHeader->soreference1) ||
+            ($order->wms_edittime !== $orderHeader->edittime) ||
+            ($order->warehouse_id !== $warehouse_id)) {
+            $updateParams[] = ['id' => $order->id,
+                'owner_id' => $owner_id,
+                'wms_status' => $orderHeader->oracleBASCode_codename_c ?? '',
+                'logistic_id' => $logistic_id,
+                'shop_id' => $shop_id,
+                'consignee_name' => $orderHeader->c_contact,
+                'consignee_phone' => empty($orderHeader->c_tel2) ? $orderHeader->c_tel1 : $orderHeader->c_tel2,
+                'province' => $orderHeader->c_province,
+                'city' => $orderHeader->c_city,
+                'district' => $orderHeader->c_district,
+                'address' => $orderHeader->c_address1,
+                'client_code' => $orderHeader->soreference1,
+                'updated_at' => $updated_at,
+                'wms_edittime' => $orderHeader->edittime,
+                'warehouse_id' => $warehouse_id];
+        }
+    }
+
 }