|
|
@@ -19,69 +19,82 @@ class OrderPackageService
|
|
|
|
|
|
public function createdByOrder($order)
|
|
|
{
|
|
|
+ /** @var OrderPackageCommoditiesService $orderPackageCommoditiesService */
|
|
|
$orderPackageCommoditiesService = app('orderPackageCommoditiesService');
|
|
|
- $actAllocationCount = OracleActAllocationDetails::query()->where('OrderNo', $order['code'])->count();
|
|
|
+ $oracleActAllocationDetails = OracleActAllocationDetails::query()->where('OrderNo', $order['code'])->get();
|
|
|
$orderHeader = OracleDOCOrderHeader::query()->where('OrderNo', $order['code'])->first();
|
|
|
- $orderDetailCount = OracleDOCOrderDetail::query()->where('OrderNo', $order['code'])->count();
|
|
|
+ $oracleDOCOrderDetail = OracleDOCOrderDetail::query()->where('OrderNo', $order['code'])->get();
|
|
|
$logistic_number = null;
|
|
|
- if ($actAllocationCount == 0) { // 通过oracle Order Detail
|
|
|
+ if ($oracleActAllocationDetails->count() == 0) { // 通过oracle Order Detail
|
|
|
$logistic_number = $orderHeader['soreference5'];
|
|
|
- if ($orderDetailCount == 0) {return null;}
|
|
|
- if ($logistic_number == null || $logistic_number == '*') { return null; }
|
|
|
+ if ($oracleDOCOrderDetail->count() == 0) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ if ($logistic_number == null || $logistic_number == '*') {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
try {
|
|
|
- $orderPackage = OrderPackage::query()->create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
|
|
|
+ $orderPackage = OrderPackage::query()->firstOrCreate(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
|
|
|
$orderPackageCommoditiesService->basedOnOracleDetailsStore($orderHeader['orderno'], $orderPackage);
|
|
|
- LogService::log(__METHOD__,__FUNCTION__,'创建订单包裹orderPackage'. json_encode($orderPackage));
|
|
|
+ LogService::log(__METHOD__, __FUNCTION__, '创建订单包裹orderPackage' . json_encode($orderPackage));
|
|
|
} catch (\Exception $e) {
|
|
|
- LogService::log(__METHOD__,__FUNCTION__,'创建订单包裹orderPackage失败'.$e->getMessage().$e->getTraceAsString());
|
|
|
+ LogService::log(__METHOD__, __FUNCTION__, '创建订单包裹orderPackage失败' . $e->getMessage() . $e->getTraceAsString());
|
|
|
}
|
|
|
- } else if ($actAllocationCount > 0) {
|
|
|
- $count = OracleActAllocationDetails::query()->where('OrderNo', $order['code'])->whereNull('picktotraceid')->count();
|
|
|
+ } else if ($oracleActAllocationDetails->count() > 0) {
|
|
|
+ $count = $oracleActAllocationDetails->where('OrderNo', $order['code'])->whereNull('picktotraceid')->count();
|
|
|
if ($count > 0) { // 快递单号为空
|
|
|
- if (($orderHeader['soreference5'] ?? false) && $orderHeader['soreference5'] == '*') { return null; }
|
|
|
+ if (($orderHeader['soreference5'] ?? false) && $orderHeader['soreference5'] == '*') {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
$logistic_number = $orderHeader['soreference5'];
|
|
|
+
|
|
|
try {
|
|
|
- $orderPackage = OrderPackage::query()->create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
|
|
|
+ $orderPackage = OrderPackage::query()->firstOrCreate(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
|
|
|
$orderPackageCommoditiesService->basedOnOracleDetailsStore($order, $orderPackage);
|
|
|
- LogService::log(__METHOD__,__FUNCTION__,'创建订单包裹orderPackage'. json_encode($orderPackage));
|
|
|
+ LogService::log(__METHOD__, __FUNCTION__, '创建订单包裹orderPackage' . json_encode($orderPackage));
|
|
|
} catch (\Exception $e) {
|
|
|
- LogService::log(__METHOD__,__FUNCTION__,'创建订单包裹orderPackage失败'.$e->getMessage().$e->getTraceAsString());
|
|
|
+ LogService::log(__METHOD__, __FUNCTION__, '创建订单包裹orderPackage失败' . $e->getMessage() . $e->getTraceAsString());
|
|
|
}
|
|
|
} else {
|
|
|
- $ActAllocationDetails = OracleActAllocationDetails::query()->where('orderno', $order['code'])->get();
|
|
|
- foreach ($ActAllocationDetails as $detail) {
|
|
|
- $logistic_number = $detail['picktotraceid'];
|
|
|
+ $ActAllocationDetails = $oracleActAllocationDetails->where('orderno', $order['code']);
|
|
|
+ $picktotraceids = data_get($ActAllocationDetails,'*.picktotraceid');
|
|
|
+ $picktotraceids = array_unique($picktotraceids);
|
|
|
+ foreach ($picktotraceids as $picktotraceid) {
|
|
|
+ $logistic_number = $picktotraceid;
|
|
|
if ($logistic_number == null || $logistic_number == '*') {
|
|
|
$logistic_number = $orderHeader['soreference5'];
|
|
|
- if ($logistic_number == null || $logistic_number == '*') {return null;}
|
|
|
+ if ($logistic_number == null || $logistic_number == '*') {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
$orderPackage = OrderPackage::query()->where(['order_id' => $order['id'], 'logistic_number' => $logistic_number])->first();
|
|
|
- if($orderPackage){continue;}
|
|
|
+ if ($orderPackage) {
|
|
|
+ $orderPackageCommoditiesService->basedOnActAllocationDetailsStoreByOrderNo($order['code'], $orderPackage);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
try {
|
|
|
$orderPackage = OrderPackage::query()->create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
|
|
|
$orderPackageCommoditiesService->basedOnActAllocationDetailsStoreByOrderNo($order['code'], $orderPackage);
|
|
|
- LogService::log(__METHOD__,__FUNCTION__,'创建订单orderPackage'.json_encode($orderPackage));
|
|
|
+ LogService::log(__METHOD__, __FUNCTION__, '创建订单orderPackage' . json_encode($orderPackage));
|
|
|
} catch (\Exception $e) {
|
|
|
- LogService::log(__METHOD__,__FUNCTION__,'创建订单orderPackage失败'.json_encode($e->getMessage()).json_encode($e->getTraceAsString()));
|
|
|
+ LogService::log(__METHOD__, __FUNCTION__, '创建订单orderPackage失败' . json_encode($e->getMessage()) . json_encode($e->getTraceAsString()));
|
|
|
}
|
|
|
continue;
|
|
|
}
|
|
|
- $orderPackage = OrderPackage::query()->where('order_id' , $order['id'])->where('logistic_number' , $logistic_number)->first();
|
|
|
- if ($orderPackage) {continue;}
|
|
|
+ $orderPackage = OrderPackage::query()->where('order_id', $order['id'])->where('logistic_number', $logistic_number)->first();
|
|
|
+ if ($orderPackage) {
|
|
|
+ $orderPackageCommoditiesService->basedOnActAllocationDetailsStore($orderPackage);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
try {
|
|
|
$orderPackage = OrderPackage::query()->create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
|
|
|
$orderPackageCommoditiesService->basedOnActAllocationDetailsStore($orderPackage);
|
|
|
- LogService::log(__METHOD__,__FUNCTION__,'创建订单'.json_encode($orderPackage));
|
|
|
+ LogService::log(__METHOD__, __FUNCTION__, '创建订单' . json_encode($orderPackage));
|
|
|
} catch (\Exception $e) {
|
|
|
- LogService::log(__METHOD__,__FUNCTION__,'创建订单orderPackage失败'.json_encode($e->getMessage()).json_encode($e->getTraceAsString()));
|
|
|
+ LogService::log(__METHOD__, __FUNCTION__, '创建订单orderPackage失败' . json_encode($e->getMessage()) . json_encode($e->getTraceAsString()));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }else{
|
|
|
- $this->updateOrderPackageInfo($order);
|
|
|
}
|
|
|
- return OrderPackage::with(['commodities' => function ($query) {
|
|
|
- return $query->with(['commodity']);
|
|
|
- }])->get();
|
|
|
}
|
|
|
|
|
|
public function updateOrderPackageInfo(Order $order)
|
|
|
@@ -94,16 +107,18 @@ class OrderPackageService
|
|
|
$orderPackageCommodities = OrderPackageCommodities::with('commodity')->whereIn('order_package_id', data_get($orderPackages, '*.id'))->get();
|
|
|
$actAllocationDetails = OracleActAllocationDetails::where('orderNo', $order['client_code'])->get();
|
|
|
if (count($orderPackageCommodities) < count($actAllocationDetails)) {
|
|
|
- $actAllocationDetails = $actAllocationDetails->reject(function($value,$key) use (&$orderPackageCommodities){
|
|
|
+ $actAllocationDetails = $actAllocationDetails->reject(function ($value, $key) use (&$orderPackageCommodities) {
|
|
|
$bool = false;
|
|
|
$count = 0;
|
|
|
- $orderPackageCommodities->reject(function($value1,$key1)use($value,&$bool,$count){
|
|
|
- if($count>0){return false;}
|
|
|
- if($value1->commodity['sku'] == $value['sku'] && $value1['amount'] == intval($value['qty']) ){
|
|
|
+ $orderPackageCommodities->reject(function ($value1, $key1) use ($value, &$bool, $count) {
|
|
|
+ if ($count > 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if ($value1->commodity['sku'] == $value['sku'] && $value1['amount'] == intval($value['qty'])) {
|
|
|
$bool = true;
|
|
|
$count++;
|
|
|
return true;
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
return false;
|
|
|
}
|
|
|
});
|
|
|
@@ -115,19 +130,21 @@ class OrderPackageService
|
|
|
$order['wam_status'] = $orderHeader['oracleBASCode_codename_c'];
|
|
|
$order->save();
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* @param string $logistic_number
|
|
|
* @param array $values
|
|
|
* @return OrderPackage $package
|
|
|
*/
|
|
|
- public function firstOrCreate($logistic_number, array $values){
|
|
|
+ public function firstOrCreate($logistic_number, array $values)
|
|
|
+ {
|
|
|
/** @var OrderPackage $package */
|
|
|
- $package = OrderPackage::query()->where('logistic_number','=',$logistic_number)->first();
|
|
|
- if ($package)return $package;
|
|
|
+ $package = OrderPackage::query()->where('logistic_number', '=', $logistic_number)->first();
|
|
|
+ if ($package) return $package;
|
|
|
|
|
|
/** @var OrderService */
|
|
|
$order = app('orderService')->logisticNumberCreateOrder($logistic_number);
|
|
|
- if ($order)$values["order_id"] = $order->id;
|
|
|
+ if ($order) $values["order_id"] = $order->id;
|
|
|
|
|
|
$values["logistic_number"] = $logistic_number;
|
|
|
/** @var OrderPackage $package */
|
|
|
@@ -136,17 +153,19 @@ class OrderPackageService
|
|
|
}
|
|
|
|
|
|
|
|
|
- public function createExceptionPaginate($paginate){
|
|
|
- return OrderPackage::query()->select('id','status','logistic_number','measuring_machine_id','weighed_at','weight','length','width','height','bulk','paper_box_id')
|
|
|
- ->where('status','上传异常')->orWhere('status','测量异常')->orderBy('created_at','DESC')
|
|
|
+ public function createExceptionPaginate($paginate)
|
|
|
+ {
|
|
|
+ return OrderPackage::query()->select('id', 'status', 'logistic_number', 'measuring_machine_id', 'weighed_at', 'weight', 'length', 'width', 'height', 'bulk', 'paper_box_id')
|
|
|
+ ->where('status', '上传异常')->orWhere('status', '测量异常')->orderBy('created_at', 'DESC')
|
|
|
->paginate($paginate);
|
|
|
}
|
|
|
|
|
|
- public function issueExceptionPaginate($paginate){
|
|
|
- return OrderPackage::query()->select('id','logistic_number','created_at','batch_number','batch_rule')
|
|
|
- ->where('status','下发异常')->orWhere('status','记录异常')
|
|
|
- ->orWhere('status','已上传异常')->orderBy('created_at','DESC')
|
|
|
+ public function issueExceptionPaginate($paginate)
|
|
|
+ {
|
|
|
+ return OrderPackage::query()->select('id', 'logistic_number', 'created_at', 'batch_number', 'batch_rule')
|
|
|
+ ->where('status', '下发异常')->orWhere('status', '记录异常')
|
|
|
+ ->orWhere('status', '已上传异常')->orderBy('created_at', 'DESC')
|
|
|
->paginate($paginate);
|
|
|
}
|
|
|
|
|
|
- }
|
|
|
+}
|