|
|
@@ -118,6 +118,7 @@ class OrderPackageService
|
|
|
$orders = $orderService->getByWmsOrders($orderHeaders);
|
|
|
$packages = $this->getByOrderNos(data_get($orderHeaders,'*.orderno')); // 已有
|
|
|
$this->createOrderPackage($orderHeaders,$orders,$packages); // 创建package
|
|
|
+ $this->updatePackage($orderHeaders,$packages);
|
|
|
$this->deleteUnnecessaryPackage($orderHeaders,$packages); // 删除package
|
|
|
unset($orders,$packages); // 手动清除
|
|
|
}
|
|
|
@@ -161,15 +162,26 @@ class OrderPackageService
|
|
|
$logistic_numbers = array_diff(array_unique(data_get($orderHeader->actAllocationDetails,'*.picktotraceid')),['','*']);
|
|
|
$inner_params = [];
|
|
|
$date = Carbon::now()->format('Y-m-d H:i:s');
|
|
|
+ $sentAtMap = [];
|
|
|
+ foreach ($orderHeader->actAllocationDetails as $item){
|
|
|
+ $sentAtMap[$item->picktotraceid] = $item;
|
|
|
+ }
|
|
|
foreach ($logistic_numbers as $logistic_number){
|
|
|
$package = $dataHandlerService->getKeyValue(['logistic_number'=>$logistic_number],$packages_maps);
|
|
|
if(isset($package))continue;
|
|
|
+ try {
|
|
|
+ $data = $sentAtMap[$logistic_number];
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ $data = null;
|
|
|
+ }
|
|
|
$inner_params[] = [
|
|
|
'order_id' => $order->id,
|
|
|
'logistic_number' => $logistic_number,
|
|
|
'created_at' => $date,
|
|
|
'updated_at' => $date,
|
|
|
- 'status' =>'无'
|
|
|
+ 'status' => '无',
|
|
|
+ 'owner_id' => $order->owner_id,
|
|
|
+ 'sent_at' => $data ? $data->checktime:null,
|
|
|
];
|
|
|
}
|
|
|
return $inner_params;
|
|
|
@@ -206,4 +218,38 @@ class OrderPackageService
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private function updatePackage($orderHeaders, $packages)
|
|
|
+ {
|
|
|
+ $map = $this->getSentAtMap($orderHeaders);
|
|
|
+ foreach ($packages as $package) {
|
|
|
+ if ($package->sent_at) continue;
|
|
|
+ try {
|
|
|
+ $data = $map[$package->logistic_number];
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ $data = null;
|
|
|
+ }
|
|
|
+ $data2 = [
|
|
|
+ 'sent_at' => $data? $data->checktime:null,
|
|
|
+ ];
|
|
|
+ $package->update($data2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param $orderHeaders
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ private function getSentAtMap($orderHeaders): array
|
|
|
+ {
|
|
|
+ $map = [];
|
|
|
+ foreach ($orderHeaders as $orderHeader) {
|
|
|
+ $actAllocationDetails = $orderHeader->actAllocationDetails;
|
|
|
+ foreach ($actAllocationDetails as $actAllocationDetail) {
|
|
|
+ $logistic_number = $actAllocationDetail->picktotraceid;
|
|
|
+ $map[$logistic_number] = $actAllocationDetail;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $map;
|
|
|
+ }
|
|
|
+
|
|
|
}
|