zengjun 3 years ago
parent
commit
59c70566f2
1 changed files with 35 additions and 9 deletions
  1. 35 9
      app/Services/OrderService.php

+ 35 - 9
app/Services/OrderService.php

@@ -6,10 +6,10 @@ use App\Commodity;
 use App\Components\Database;
 use App\Feature;
 use App\Jobs\OrderCreateInstantBill;
-use App\Jobs\OrderCreateWaybill;
 use App\Jobs\OrderFreeze;
 use App\Logistic;
 use App\OracleActAllocationDetails;
+use App\OracleBasCustomer;
 use App\OracleDOCASNHeader;
 use App\OracleDOCOrderHeader;
 use App\Order;
@@ -21,7 +21,6 @@ use App\OwnerFeeDetail;
 use App\OwnerFeeDetailLogistic;
 use App\OwnerFeeExpress;
 use App\OwnerReport;
-use App\Province;
 use App\RejectedBill;
 use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
@@ -749,6 +748,7 @@ SQL;
                 $shop_names[$key] = $value;
             }
         }
+        $baseCustomers = OracleBasCustomer::query()->whereIn('customerid',$owner_codes)->get();
 
         $owners = $ownerService->getOwnerByCodes($owner_codes);
         $logistics = $logisticService->getLogisticByCodes($logistic_codes);
@@ -760,9 +760,9 @@ SQL;
 
         $orders = $this->getByWmsOrders($orderHeaders);
 
-        $created_params = $this->getCreateOrderModelsByWMSOrderHeaders($orderHeaders, $orders, $warehouses, $owners, $logistics, $shops, $batches); //3s
+        $created_params = $this->getCreateOrderModelsByWMSOrderHeaders($orderHeaders, $orders, $warehouses, $owners, $logistics, $shops, $batches,$baseCustomers); //3s
 
-        $update_order = $this->getUpdateOrderModelByWMSOrderHeaders($orderHeaders, $orders, $warehouses, $owners, $logistics, $shops, $batches);
+        $update_order = $this->getUpdateOrderModelByWMSOrderHeaders($orderHeaders, $orders, $warehouses, $owners, $logistics, $shops, $batches,$baseCustomers);
 
         unset($owners, $logistics, $shops, $warehouses, $batches);
 
@@ -799,7 +799,7 @@ SQL;
         unset($update_params);
     }
 
-    public function getCreateOrderModelsByWMSOrderHeaders(&$orderHeaders, &$orders, &$warehouses, &$owners, &$logistics, &$shops, &$batches)
+    public function getCreateOrderModelsByWMSOrderHeaders(&$orderHeaders, &$orders, &$warehouses, &$owners, &$logistics, &$shops, &$batches,&$baseCustomers)
     {
         /** @var DataHandlerService $dataHandlerService */
         $dataHandlerService = app('DataHandlerService');
@@ -809,19 +809,20 @@ SQL;
         $shop_map = $dataHandlerService->dataHeader(['name', 'owner_id'], $shops);
         $order_map = $dataHandlerService->dataHeader(['code'], $orders);
         $batch_map = $dataHandlerService->dataHeader(['code'], $batches);
+        $baseCustomerMap = $dataHandlerService->dataHeader(['customerid'], $baseCustomers);
         $inner_params = [];
         $date = (string)Carbon::now();
         foreach ($orderHeaders as $orderHeader) {
             $order_no = $orderHeader->orderno;
             $order = $dataHandlerService->getKeyValue(['code' => $order_no], $order_map);
             if (isset($order)) continue;
-            $order_model = $this->getCreateOrderModels($orderHeader, $warehouse_map, $owner_map, $logistic_map, $shop_map, $batch_map, $date);
+            $order_model = $this->getCreateOrderModels($orderHeader, $warehouse_map, $owner_map, $logistic_map, $shop_map, $batch_map, $date,$baseCustomerMap);
             $inner_params[] = $order_model;
         }
         return $inner_params;
     }
 
-    public function getUpdateOrderModelByWMSOrderHeaders(&$orderHeaders, &$orders, &$warehouses, &$owners, &$logistics, &$shops, &$batches)
+    public function getUpdateOrderModelByWMSOrderHeaders(&$orderHeaders, &$orders, &$warehouses, &$owners, &$logistics, &$shops, &$batches,&$baseCustomers)
     {
         /**
          * @var DataHandlerService $dataHandlerService
@@ -834,12 +835,13 @@ SQL;
         $logistic_map = $dataHandlerService->dataHeader(['code'],$logistics->filter());
         $shop_map = $dataHandlerService->dataHeader(['name', 'owner_id'], $shops->filter());
         $batch_map = $dataHandlerService->dataHeader(['code'], $batches->filter());
+        $baseCustomerMap = $dataHandlerService->dataHeader(['customerid'], $baseCustomers);
         $collect = collect();
         $date = (string)Carbon::now();
         foreach ($orders as $order) {
             $orderHeader = $dataHandlerService->getKeyValue(['orderno' => $order->code], $orderHeader_map);
             if (!$orderHeader) continue;
-            $order_model = $this->getCreateOrderModels($orderHeader, $warehouse_map, $owner_map, $logistic_map, $shop_map, $batch_map, $date);
+            $order_model = $this->getCreateOrderModels($orderHeader, $warehouse_map, $owner_map, $logistic_map, $shop_map, $batch_map, $date,$baseCustomerMap);
             if (!$order->isEquals($order_model)) {
                 $order->assignValueByOrder($order_model);
                 $collect->push($order);
@@ -848,7 +850,7 @@ SQL;
         return $collect;
     }
 
-    public function getCreateOrderModels(&$orderHeader, &$warehouse_map, &$owner_map, &$logistic_map, &$shop_map, &$batch_map, $date)
+    public function getCreateOrderModels(&$orderHeader, &$warehouse_map, &$owner_map, &$logistic_map, &$shop_map, &$batch_map, $date,&$baseCustomerMap)
     {
         /** @var DataHandlerService $dataHandlerService */
         $dataHandlerService = app('DataHandlerService');
@@ -857,6 +859,12 @@ SQL;
         $logistic = $dataHandlerService->getKeyValue(['code' => $orderHeader->userdefine1], $logistic_map);
         $batch = $dataHandlerService->getKeyValue(['code' => $orderHeader->waveno], $batch_map);
         $shop['id'] = null;
+        $warehouses = Warehouse::all();
+        $baseCustomer = $dataHandlerService->getKeyValue(['customerid' => $owner->code],$baseCustomerMap);
+        $warehouse_1 = $this->getWareHouseBy($baseCustomer,$warehouses);
+        if(!is_null($warehouse_1)){
+            $warehouse = $warehouse_1;
+        }
         if ($orderHeader->issuepartyname != null && $orderHeader->issuepartyname != '') {
             // 商品换行符处理
             $shop_name = str_replace("\n", ' ', $orderHeader['issuepartyname']);
@@ -886,6 +894,24 @@ SQL;
         ];
     }
 
+    public function getWareHouseBy($baseCustomer,&$warehouses){
+        $notes = $baseCustomer['notes'] ?? '';
+        if(str_contains($notes,'九干')){
+            return $warehouses->filter(function($item){
+                return str_contains($item->name,'九干');
+            })->first();
+        } else if(str_contains($notes,'嘉定')){
+            return $warehouses->filter(function($item){
+                return str_contains($item->name,'嘉定');
+            })->first();
+        } else if(str_contains($notes,'泗砖')){
+            return $warehouses->filter(function($item){
+                return str_contains($item->name,'泗砖');
+            })->first();
+        }
+        return null;
+    }
+
     public function createOrFindOrder($orderHeader)
     {
         $order = Order::query()->where('code', $orderHeader->orderno)->first();