|
|
@@ -99,12 +99,15 @@ class OrderPackage extends Model
|
|
|
$queryBuilder=OracleDOCOrderHeader::query()->select(self::$oracleOrderHeaderFields);
|
|
|
$queryBuilder->where('doc_order_header.waveno',$batchCode);
|
|
|
$queryBuilder->leftJoin('act_allocation_details','act_allocation_details.orderno','doc_order_header.orderno');
|
|
|
- $resultOracleObjs=$queryBuilder->leftJoin('doc_wave_header','doc_wave_header.waveno','doc_order_header.waveno')->get();
|
|
|
+ $queryBuilder->leftJoin('doc_wave_header','doc_wave_header.waveno','doc_order_header.waveno');
|
|
|
+ $resultOracleObjs=$queryBuilder->get();
|
|
|
+ $resultOracleObjs_grouped=$resultOracleObjs->groupBy('soreference5');
|
|
|
$packages = [];
|
|
|
$now = Carbon::now();
|
|
|
- foreach($resultOracleObjs as $resultOracleObj){
|
|
|
+ foreach($resultOracleObjs_grouped as $resultOracleObj_grouped){
|
|
|
+ $resultOracleObj = $resultOracleObj_grouped[0];
|
|
|
/** @var OrderService */
|
|
|
- $order = app('orderService')->logisticNumberCreateOrder($resultOracleObj['SOReference5']);
|
|
|
+ $order = app('orderService')->logisticNumberCreateOrder($resultOracleObj['soreference5']);
|
|
|
if (!$order){
|
|
|
LogService::log(__METHOD__,"此包裹在WMS未找到order",json_encode($resultOracleObj),Auth::user()['id']);
|
|
|
continue;
|
|
|
@@ -113,16 +116,32 @@ class OrderPackage extends Model
|
|
|
'batch_number'=>$batchCode??'',
|
|
|
/** @var OrderPackageService */
|
|
|
'order_id' => $order->id,
|
|
|
- 'logistic_number'=>$resultOracleObj['SOReference5']??'',
|
|
|
+ 'logistic_number'=>$resultOracleObj['soreference5']??'',
|
|
|
'weight'=>$weight,
|
|
|
'weighed_at'=> $now,
|
|
|
'status'=>"已上传",
|
|
|
"created_at"=>$now,
|
|
|
]);
|
|
|
}
|
|
|
-// OrderPackage::whereIn('logistic_number',$packages)
|
|
|
- DB::transaction(function ()use($packages){
|
|
|
- OrderPackage::query()->insert($packages);
|
|
|
+ $packagesLogisticNumbers = array_map(function ($orderPackage) {
|
|
|
+ return $orderPackage['logistic_number'];
|
|
|
+ } ,$packages);
|
|
|
+ $existingOrderPackages=OrderPackage::whereIn('logistic_number', $packagesLogisticNumbers)->get();
|
|
|
+ $existingLogisticNumbers=$existingOrderPackages->map(function($orderPackage){
|
|
|
+ return $orderPackage['logistic_number'];
|
|
|
+ })->toArray();
|
|
|
+ OrderPackage::whereIn('logistic_number', $existingLogisticNumbers)->update([
|
|
|
+ 'batch_number'=>$batchCode??'',
|
|
|
+ 'weight'=>$weight,
|
|
|
+ 'weighed_at'=> $now,
|
|
|
+ 'status'=>"已上传",]);
|
|
|
+ $newPackages=$packages;
|
|
|
+ if($existingOrderPackages->isNotEmpty())
|
|
|
+ $newPackages=array_filter($packages,function ($package)use($existingLogisticNumbers){
|
|
|
+ return array_search($package['logistic_number'],$existingLogisticNumbers)===false;
|
|
|
+ });
|
|
|
+ DB::transaction(function ()use($newPackages){
|
|
|
+ OrderPackage::query()->insert($newPackages);
|
|
|
});
|
|
|
LogService::log(__METHOD__,"批量录入包裹成功",json_encode($packages),Auth::user()['id']);
|
|
|
}
|