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