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