|
|
@@ -19,7 +19,6 @@ use Illuminate\Support\Collection;
|
|
|
|
|
|
class OrderPackageCommoditiesService
|
|
|
{
|
|
|
-
|
|
|
public function insert(array $params){
|
|
|
return OrderPackageCommodities::query()->insert($params);
|
|
|
}
|
|
|
@@ -27,121 +26,6 @@ class OrderPackageCommoditiesService
|
|
|
public function batchUpdate($params){
|
|
|
return app(BatchUpdateService::class)->batchUpdate('order_package_commodities',$params);
|
|
|
}
|
|
|
- //-------------------------
|
|
|
- public function basedOnOracleDetailsStore($orderNo, $orderPackage)
|
|
|
- {
|
|
|
- $details = OracleDOCOrderDetail::query()->where('orderNo', $orderNo)->get();
|
|
|
- $orderPackageCommodities = OrderPackageCommodities::query()->where('order_package_id',$orderPackage['id'])->get();
|
|
|
- $this->根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,'qtyordered');
|
|
|
- unset($details,$orderPackageCommodities);
|
|
|
- }
|
|
|
-
|
|
|
- public function basedOnActAllocationDetailsStoreByOrderNo($orderNo,$orderPackage){
|
|
|
- $details = OracleActAllocationDetails::query()->where('orderno', $orderNo)->get();
|
|
|
- $orderPackageCommodities = OrderPackageCommodities::query()->where('order_package_id',$orderPackage['id'])->get();
|
|
|
- $this->根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,'qty_each');
|
|
|
- unset($details,$orderPackageCommodities);
|
|
|
- }
|
|
|
-
|
|
|
- public function 根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,$key){
|
|
|
- $newItems = [];
|
|
|
- foreach ($details as $detail) {
|
|
|
- $owner = Owner::query()->where(['code' => $detail['customerid']])->first(); // 货主
|
|
|
- $sku = $detail->sku; // sku
|
|
|
- $owner_id = $owner->id; // 货主id
|
|
|
- $commodity = Commodity::query()->where(['sku' => $sku, 'owner_id' => $owner_id])->first(); // 商品
|
|
|
- if ($commodity == null) {
|
|
|
- $basSku = OracleBasSKU::query()->where(['sku' => $sku, 'customerid' => $detail->customerid])->first(); // 没有找到对应的商品信息
|
|
|
- $commodity = Commodity::query()->create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]);
|
|
|
- }
|
|
|
- $data = ['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail[$key]];
|
|
|
- array_push($newItems,$data);
|
|
|
- }
|
|
|
- $diffarr = [];
|
|
|
- foreach ($newItems as $newItem) {
|
|
|
- $packageCommodity = $orderPackageCommodities->where('order_package_id',$newItem['order_package_id'])->where('commodity_id',$newItem['commodity_id'])->first();
|
|
|
- if($packageCommodity!=null){
|
|
|
- if($packageCommodity['amount'] != $newItem['amount']){
|
|
|
- $packageCommodity->update(['amount'=>intval($newItem['amount'])]);
|
|
|
- }
|
|
|
- $orderPackageCommodities = $orderPackageCommodities->filter(function ($item) use ($packageCommodity){
|
|
|
- if($item['id'] == $packageCommodity['id']){
|
|
|
- return false;
|
|
|
- }
|
|
|
- return true;
|
|
|
- });
|
|
|
- array_push($diffarr,$newItem);
|
|
|
- }
|
|
|
- }
|
|
|
- if($orderPackageCommodities->count() > 0){
|
|
|
- foreach ($orderPackageCommodities as $orderPackageCommodity) {
|
|
|
- $id = $orderPackageCommodity['id'];
|
|
|
- OrderPackageCommodities::destroy($id);
|
|
|
- }
|
|
|
- }
|
|
|
- $newItems = array_filter($newItems,function($newItem) use ($diffarr){
|
|
|
- foreach ($diffarr as $item) {
|
|
|
- if($item['order_package_id'] == $newItem['order_package_id'] &&
|
|
|
- $item['commodity_id'] == $newItem['commodity_id'] &&
|
|
|
- $item['amount'] == $newItem['amount']){
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- return true;
|
|
|
- });
|
|
|
- try {
|
|
|
- if(count($newItems) > 0 ){
|
|
|
- OrderPackageCommodities::query()->insert($newItems);
|
|
|
- app('LogService')->log(__METHOD__,__FUNCTION__,'添加包裹商品信息'.json_encode($newItems));
|
|
|
- }
|
|
|
- } catch (\Exception $e) {
|
|
|
- app('LogService')->log(__METHOD__,__FUNCTION__,'添加包裹商品信息异常'.json_encode($newItems).$e->getMessage(),$e->getTraceAsString());
|
|
|
- } finally {
|
|
|
- unset($newItems,$orderPackageCommodities);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public function basedOnActAllocationDetailsStore($orderPackage)
|
|
|
- {
|
|
|
- $details = OracleActAllocationDetails::query()->where('picktotraceid', $orderPackage->logistic_number)->get();
|
|
|
- $orderPackageCommodities = OrderPackageCommodities::query()->where('order_package_id',$orderPackage['id'])->get();
|
|
|
- $this->根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,'qty_each');
|
|
|
- unset($details,$orderPackageCommodities);
|
|
|
- }
|
|
|
-
|
|
|
- public function createByWmsOrder($orderHeaders)
|
|
|
- {
|
|
|
- if(!$orderHeaders){ return [];}
|
|
|
- $this->更新OPC_根据WMS订单($orderHeaders);
|
|
|
- }
|
|
|
-
|
|
|
-// public function getParamsByActAllocationDetails($details,array $order_packages_logistic_number_map,array $owner_code_map,array $commodity_owner_id_sku_map,array $logistic_numbers){
|
|
|
-// /** @var DataHandlerService $dataHandlerService */
|
|
|
-// $dataHandlerService = app(DataHandlerService::class);
|
|
|
-// if(!$details)return [];
|
|
|
-// $params = [];
|
|
|
-// $create_at = Carbon::now()->format('Y-m-d H:i:s');
|
|
|
-// $updated_at = Carbon::now()->format('Y-m-d H:i:s');
|
|
|
-// foreach ($details as $actAllocationDetail) {
|
|
|
-// $pickToTraceID = $actAllocationDetail->picktotraceid;
|
|
|
-// if(in_array($pickToTraceID,$logistic_numbers)){
|
|
|
-// $orderPackage = $dataHandlerService->getKeyValue(['logistic_number'=>$pickToTraceID],$order_packages_logistic_number_map);
|
|
|
-// if(!$orderPackage)continue;
|
|
|
-// $owner = $dataHandlerService->getKeyValue(['code'=>$actAllocationDetail->customerid],$owner_code_map);
|
|
|
-// if(!$owner)continue;
|
|
|
-// $commodity = $dataHandlerService->getKeyValue(['owner_id'=>$owner->id,'sku'=>$actAllocationDetail->sku],$commodity_owner_id_sku_map);
|
|
|
-// if(!$commodity)continue;
|
|
|
-// $params[] = [
|
|
|
-// 'commodity_id' =>$commodity->id,
|
|
|
-// 'order_package_id' =>$orderPackage->id,
|
|
|
-// 'amount' => $actAllocationDetail->qty_each,
|
|
|
-// 'created_at' => $create_at
|
|
|
-// ];
|
|
|
-// }
|
|
|
-// }
|
|
|
-// unset($details,$order_packages_logistic_number_map,$owner_code_map,$commodity_owner_id_sku_map,$logistic_numbers);
|
|
|
-// return $params;
|
|
|
-// }
|
|
|
|
|
|
public function create(array $params){
|
|
|
if(!$params){return [];}
|
|
|
@@ -160,11 +44,6 @@ class OrderPackageCommoditiesService
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public function updateByWmsOrder($orderHeaders){
|
|
|
- if(!$orderHeaders){return ;}
|
|
|
- $this->更新OPC_根据WMS订单($orderHeaders);
|
|
|
- }
|
|
|
-
|
|
|
public function getByWmsOrder($orderHeaders){
|
|
|
$order_no = data_get($orderHeaders,'*.orderno');
|
|
|
return OrderPackageCommodities::query()
|
|
|
@@ -181,33 +60,6 @@ class OrderPackageCommoditiesService
|
|
|
return app(BatchUpdateService::class)->batchUpdateItself('order_package_commodities', $column, $params);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * @param array $logistic_numbers
|
|
|
- * @return array|mixed
|
|
|
- */
|
|
|
- public function 删除包裹商品信息_根据快递单号($logistic_numbers)
|
|
|
- {
|
|
|
- $orderPackageCommodities = OrderPackageCommodities::query()
|
|
|
- ->with('package')
|
|
|
- ->whereIn('order_package_id',function($query)use($logistic_numbers){
|
|
|
- $query->from('order_packages')->select('id')->whereIn('logistic_number',$logistic_numbers);
|
|
|
- })->get();
|
|
|
- $ids = data_get($orderPackageCommodities, '*.id');
|
|
|
- if(count($ids) == 0){return [];}
|
|
|
- try {
|
|
|
- OrderPackageCommodities::query()->whereIn('id', $ids)->delete();
|
|
|
- app('LogService')->log(__METHOD__,__FUNCTION__,'删除多余OrderPackageCommodities '.$orderPackageCommodities->count().json_encode($orderPackageCommodities),null);
|
|
|
- } catch (\Exception $e) {
|
|
|
- app('LogService')->log(__METHOD__,__FUNCTION__,'删除多余OrderPackageCommodities error'.$orderPackageCommodities->count().json_encode($orderPackageCommodities).$e->getMessage().$e->getTraceAsString(),null);
|
|
|
- return [];
|
|
|
- }
|
|
|
- return $ids;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @param array $orderNos
|
|
|
- * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection
|
|
|
- */
|
|
|
public function getByOrderNos($orderNos)
|
|
|
{
|
|
|
return OrderPackageCommodities::query()->with('package.order','commodity')
|
|
|
@@ -218,360 +70,11 @@ class OrderPackageCommoditiesService
|
|
|
})->get();
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * @param Collection $orders
|
|
|
- * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection
|
|
|
- */
|
|
|
- public function getByOrders($orders)
|
|
|
- {
|
|
|
- return $this->getByOrderNos(data_get($orders,'*.code'));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @param OracleDOCOrderHeader $orderHeader
|
|
|
- * @param Order $order
|
|
|
- * @return array|Collection|\Tightenco\Collect\Support\Collection
|
|
|
- */
|
|
|
- public function 返回创建数组($orderHeader)
|
|
|
- {
|
|
|
- if($orderHeader->sostatus == 90){return [];}
|
|
|
- $actAllocationDetails = $orderHeader->actAllocationDetails->collect();
|
|
|
- $innerParams = collect();
|
|
|
- $actAllocationDetails->each(function($detail)use(&$innerParams){
|
|
|
- $sku = $detail->sku;
|
|
|
- $amount = $detail->qty_each;
|
|
|
- $logistic_number = $detail->picktotraceid;
|
|
|
- $params = [
|
|
|
- 'ownerCode' => $detail->customerid,
|
|
|
- 'orderNo' => $detail->orderno,
|
|
|
- 'sku' => $sku,
|
|
|
- 'amount' => $amount,
|
|
|
- 'logistic_number' => $logistic_number,
|
|
|
- ];
|
|
|
-
|
|
|
- $innerParam = $innerParams->where('logistic_number',$logistic_number)->where('sku',$sku)->first();
|
|
|
- if($innerParam ?? false){
|
|
|
- $bool = false;
|
|
|
- $innerParams = $innerParams->map(function($param)use($innerParam,$amount,&$bool){
|
|
|
- if($innerParam['logistic_number'] == $param['logistic_number'] &&
|
|
|
- $innerParam['sku'] == $param['sku'] && !$bool){
|
|
|
- $param['amount'] += $amount;
|
|
|
- $bool = !$bool;
|
|
|
- }
|
|
|
- return $param;
|
|
|
- });
|
|
|
- }else{
|
|
|
- $innerParams->push($params);
|
|
|
- }
|
|
|
- });
|
|
|
- return $innerParams;
|
|
|
- }
|
|
|
-
|
|
|
- public function 返回创建数组_WMS订单($orderHeaders)
|
|
|
- {
|
|
|
- $innerParams = [];
|
|
|
- foreach ($orderHeaders as $orderHeader) {
|
|
|
- $innerParam = $this->返回创建数组($orderHeader);
|
|
|
- foreach ($innerParam as $param) {
|
|
|
- $innerParams[] = $param;
|
|
|
- }
|
|
|
- }
|
|
|
- return $innerParams;
|
|
|
- }
|
|
|
- /**
|
|
|
- * @param array $innerParams
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public function 生成OrderPackageCommodities_基于创建数组($innerParams)
|
|
|
- {
|
|
|
- if(!$innerParams){return [];}
|
|
|
- if(is_array($innerParams) && count($innerParams) == 0){return [];}
|
|
|
- $commodity_map = $this->返回Commodity数组_根据数组中sku($innerParams);
|
|
|
- $orderPackages_map = app(OrderPackageService::class)->返回OrderPackage数组_根据数组中的快递单号($innerParams);
|
|
|
- $createParams = [];
|
|
|
- $dataTime = Carbon::now()->format('Y-m-d H:i:s');
|
|
|
- foreach ($innerParams as $innerParam) {
|
|
|
- $key = ' ownerCode='.($innerParam['ownerCode'] ?? '').' sku='.($innerParam['sku'] ?? '');
|
|
|
- $commodity = $commodity_map[$key] ?? null;
|
|
|
- $orderPackage = $orderPackages_map[$innerParam['logistic_number']] ?? '';
|
|
|
- $createParams[] = [
|
|
|
- 'order_package_id' => $orderPackage->id ?? '',
|
|
|
- 'commodity_id' => $commodity->id ?? null,
|
|
|
- 'amount' => $innerParam['amount'],
|
|
|
- 'created_at' => $dataTime,
|
|
|
- 'updated_at' => $dataTime,
|
|
|
- ];
|
|
|
- }
|
|
|
- return $createParams;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @param $orderHeaders
|
|
|
- */
|
|
|
- public function 更新OPC_根据WMS订单($orderHeaders)
|
|
|
- {
|
|
|
- if(!$orderHeaders){return ;}
|
|
|
- if(count($orderHeaders) == 0){return ;}
|
|
|
- app(CommodityService::class)->getByWmsOrders($orderHeaders);
|
|
|
- $orderPackageCommodities = $this->getByWmsOrder($orderHeaders);
|
|
|
- $OPCCollects = $this->将orderPackageCommodity抽象成数组($orderPackageCommodities);
|
|
|
- $creatParams = $this->返回创建数组_WMS订单($orderHeaders);
|
|
|
- $orderNos = $this->数据重组($OPCCollects,$creatParams);
|
|
|
- $updateParams= collect();$deleteIds = [];$insertParams =[];
|
|
|
- foreach ($orderNos as $orderNo) {
|
|
|
- $OPCCollect = $OPCCollects[$orderNo] ?? null;
|
|
|
- $creatParam = $creatParams[$orderNo];
|
|
|
- $retain[] = $this->删选可以保留的OrderPackageCommodities($OPCCollect,$creatParam);
|
|
|
-
|
|
|
- $collect = $this->删选需要修改的OrderPackageCommodities($OPCCollect,$creatParam);
|
|
|
-
|
|
|
- $ids = $this->删选出删除的OrderPackageCommodities($OPCCollect,$creatParam);
|
|
|
-
|
|
|
- $insertParam = $this->删选出需要添加的OrderPackageCommodities($OPCCollect,$creatParam);
|
|
|
-
|
|
|
- $deleteIds = array_merge($deleteIds,$ids);
|
|
|
-
|
|
|
- foreach ($collect as $item) {
|
|
|
- $updateParams->push($item);
|
|
|
- }
|
|
|
- foreach ($insertParam as $item) {
|
|
|
- $insertParams[]= $item;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- $this->根据更新数组进行更新($updateParams);
|
|
|
- $this->删除OPC以及对应的追踪件($deleteIds);
|
|
|
- $creatParams = $this->生成OrderPackageCommodities_基于创建数组($insertParams);
|
|
|
- $this->create($creatParams);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * @param Collection $orderPackageCommodities
|
|
|
- * @return Collection|\Tightenco\Collect\Support\Collection
|
|
|
- */
|
|
|
- public function 将orderPackageCommodity抽象成数组($orderPackageCommodities)
|
|
|
- {
|
|
|
- /** @var DataHandlerService $dataHandlerService */
|
|
|
- $dataHandlerService = app(DataHandlerService::class);
|
|
|
- $collect = collect();
|
|
|
- $ownerIds = array_unique(data_get($orderPackageCommodities,'*.commodity.owner_id'));
|
|
|
- $owners = Owner::query()->whereIn('id',$ownerIds)->get();
|
|
|
- $owner_id_map = $dataHandlerService->dataHeader(['id'],$owners);
|
|
|
- foreach ($orderPackageCommodities as $orderPackageCommodity) {
|
|
|
- $owner = $dataHandlerService->getKeyValue(['id'=>$orderPackageCommodity->commodity->owner_id ?? ''],$owner_id_map);
|
|
|
- $params = [
|
|
|
- 'id' => $orderPackageCommodity->id,
|
|
|
- 'ownerCode' => $owner->code,
|
|
|
- 'orderNo' => $orderPackageCommodity->package->order->code,
|
|
|
- 'sku' => $orderPackageCommodity->commodity->sku,
|
|
|
- 'amount' => $orderPackageCommodity->amount,
|
|
|
- 'logistic_number' => $orderPackageCommodity->package->logistic_number,
|
|
|
- ];
|
|
|
- $collect->push($params);
|
|
|
- }
|
|
|
- return $collect;
|
|
|
- }
|
|
|
-
|
|
|
- public function 数据重组(&$OPCCollects,&$params)
|
|
|
- {
|
|
|
- $collect_map = [];$params_map = [];$order_no_map = [];
|
|
|
-
|
|
|
- foreach ($OPCCollects as $item) {
|
|
|
- $orderNo = $item['orderNo'];
|
|
|
- if(!isset($collect_map[$orderNo])){$collect_map[$orderNo] = collect();}
|
|
|
- $collect_map[$orderNo]->push($item);
|
|
|
- }
|
|
|
-
|
|
|
- foreach ($params as $param) {
|
|
|
- $orderNo = $param['orderNo'];
|
|
|
- if(!isset($params_map[$orderNo])){$params_map[$orderNo] = collect();}
|
|
|
- $order_no_map[] = $orderNo;
|
|
|
- $params_map[$orderNo]->push($param);
|
|
|
- }
|
|
|
- $order_no_map = array_unique($order_no_map);
|
|
|
- $OPCCollects = $collect_map;
|
|
|
- $params = $params_map;
|
|
|
- return $order_no_map;
|
|
|
- }
|
|
|
-
|
|
|
- public function 删选可以保留的OrderPackageCommodities(&$OPCCollect,&$params)
|
|
|
- {
|
|
|
- $retain = collect();
|
|
|
- if($OPCCollect == null){return $retain;}
|
|
|
- $map = [];
|
|
|
- foreach ($params as $param) {
|
|
|
- $key = ' logistic_number='.$param['logistic_number'].' sku='.$param['sku'].' amount='.$param['amount'];
|
|
|
- if(! isset($map[$key])){
|
|
|
- $map[$key] = [];
|
|
|
- }
|
|
|
- $map[$key][] = $param;
|
|
|
- }
|
|
|
-
|
|
|
- foreach ($OPCCollect as $item) {
|
|
|
- $key = ' logistic_number='.$item['logistic_number'].' sku='.$item['sku'].' amount='.$item['amount'];
|
|
|
- if(isset($map[$key]) && count($map[$key]) > 0){
|
|
|
- $value = $map[$key][0];
|
|
|
- array_shift($map[$key]);
|
|
|
- $params->filter(function($param)use($value){
|
|
|
- return count(array_diff_assoc($param,$value)) != 0 ;
|
|
|
- });
|
|
|
- $retain->push($value);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return $retain;
|
|
|
- }
|
|
|
-
|
|
|
- public function 删选出需要添加的OrderPackageCommodities(&$OPCCollect,&$params)
|
|
|
- {
|
|
|
- $innerParam = [];
|
|
|
- $OPCmap = [];
|
|
|
- if($OPCCollect == null){return $params;}
|
|
|
- foreach ($OPCCollect as $item) {
|
|
|
- $key = ' logistic_number='.$item['logistic_number'].' sku='.$item['sku'].' amount='.$item['amount'];
|
|
|
- if(!isset($OPCmap[$key])){
|
|
|
- $OPCmap[$key][] = [];
|
|
|
- }
|
|
|
- $OPCmap[$key][] = $item;
|
|
|
- }
|
|
|
- $paramsMap = [];
|
|
|
- foreach ($params as $param) {
|
|
|
- $key = ' logistic_number='.$param['logistic_number'].' sku='.$param['sku'].' amount='.$param['amount'];
|
|
|
- if(!isset($OPCmap[$key])){
|
|
|
- $paramsMap[$key][] = [];
|
|
|
- }
|
|
|
- $paramsMap[$key][] = $param;
|
|
|
- }
|
|
|
- $paramsCopy = $params->collect();
|
|
|
- foreach ($paramsCopy as $param) {
|
|
|
- $key = ' logistic_number='.$param['logistic_number'].' sku='.$param['sku'].' amount='.$param['amount'];
|
|
|
- if(!(isset($OPCmap[$key]) && count($OPCmap[$key]) == 0)){
|
|
|
- $innerParam[] = $param;
|
|
|
- $OPCCollect->filter(function($item)use($param){
|
|
|
- return !($item['logistic_number'] == $param['logistic_number'] &&$item['sku'] == $param['sku'] &&$item['amount'] == $param['amount']) ;
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- return $innerParam;
|
|
|
- }
|
|
|
-
|
|
|
- public function 删选需要修改的OrderPackageCommodities(&$OPCCollect,&$params)
|
|
|
- {
|
|
|
- $update = collect();
|
|
|
- $map = [];
|
|
|
- if($OPCCollect == null){return $update;}
|
|
|
- foreach ($OPCCollect as $item) {
|
|
|
- $key = ' logistic_number='.$item['logistic_number'].' sku='.$item['sku'];
|
|
|
- if(!isset($map[$key])){$map[$key] = [];}
|
|
|
- $map[$key][] = $item;
|
|
|
- }
|
|
|
- $paramsCopy = $params->collect();
|
|
|
- foreach ($paramsCopy as $param) {
|
|
|
- $key = ' logistic_number='.$param['logistic_number'].' sku='.$param['sku'];
|
|
|
- if(!isset($map[$key])){continue;}
|
|
|
- $item = array_shift($map[$key]);
|
|
|
- $params = $params->filter(function($value)use($item){
|
|
|
- return !($value['logistic_number'] == $item['logistic_number'] && $value['sku'] == $item['sku']) ;
|
|
|
- });
|
|
|
- $OPCCollect = $OPCCollect->filter(function($opc)use($item){
|
|
|
- return !($opc['logistic_number'] == $item['logistic_number'] && $opc['sku'] == $item['sku'] && $opc['amount'] == $item['amount'] && $item['id'] == $opc['id']);
|
|
|
- });
|
|
|
- if($item['amount']!= $param['amount']){
|
|
|
- $param['id'] = $item['id'];
|
|
|
- $update->push($param);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return $update;
|
|
|
- }
|
|
|
-
|
|
|
- public function 删选出删除的OrderPackageCommodities(&$OPCCollect,&$params)
|
|
|
- {
|
|
|
- $deleteIds = [];
|
|
|
- $map = [];
|
|
|
- if($OPCCollect == null){return $deleteIds;}
|
|
|
- foreach ($params as $item) {
|
|
|
- $key = ' logistic_number='.$item['logistic_number'].' sku='.$item['sku'].' amount='.$item['amount'];
|
|
|
- if(!isset($map[$key])){
|
|
|
- $map[$key] = [];
|
|
|
- }
|
|
|
- $map[$key][] = $item;
|
|
|
- }
|
|
|
- foreach ($OPCCollect as $opc) {
|
|
|
- $key = ' logistic_number='.$opc['logistic_number'].' sku='.$opc['sku'].' amount='.$opc['amount'];
|
|
|
- if(!isset($map[$key]) || count($map[$key])==0){
|
|
|
- $deleteIds[] = $opc['id'];
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return $deleteIds;
|
|
|
- }
|
|
|
-
|
|
|
- public function 删除OPC以及对应的追踪件($ids)
|
|
|
- {
|
|
|
- if(!$ids){return;}
|
|
|
- $OPCs = OrderPackageCommodities::query()->whereIn('id', $ids)->get();
|
|
|
- if($OPCs->count() == 0){return;}
|
|
|
- try {
|
|
|
- OrderPackageCommodities::query()->whereIn('id', $ids)->delete();
|
|
|
- app('LogService')->log(__METHOD__, __FUNCTION__, '删除OrderPackageCommodities ' . count($ids) . json_encode($OPCs));
|
|
|
- $orderTracking = OrderTracking::query()->whereIn('order_package_commodity_id',$ids)->get();
|
|
|
- app(OrderTrackingService::class)->deleteOrderTracings($orderTracking);
|
|
|
- } catch (\Exception $e) {
|
|
|
- app('LogService')->log(__METHOD__, __FUNCTION__, '删除OrderPackageCommodities ' . count($ids) . json_encode($OPCs).$e->getMessage().$e->getTraceAsString());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public function 根据更新数组进行更新($updateParams)
|
|
|
- {
|
|
|
- if(!isset($updateParams)){return;}
|
|
|
- if(is_array($updateParams) && count($updateParams)==0){return;}
|
|
|
- $commodity_map = $this->返回Commodity数组_根据数组中sku($updateParams);
|
|
|
- $orderPackages_map = app(OrderPackageService::class)->返回OrderPackage数组_根据数组中的快递单号($updateParams);
|
|
|
- $dataTime = Carbon::now()->format('Y-m-d H:i:s');
|
|
|
- $update_params = [['id','commodity_id','order_package_id','amount','updated_at']];
|
|
|
- foreach ($updateParams as $updateParam) {
|
|
|
- $commodity_key = ' ownerCode='.($updateParam['ownerCode'] ?? '').' sku='.($updateParam['sku'] ?? '');
|
|
|
- $commodity = $commodity_map[$commodity_key] ?? '';
|
|
|
- $orderPackage = $orderPackages_map[$updateParam['logistic_number']] ?? '';
|
|
|
- $update_params[] = [
|
|
|
- 'id' => $updateParam['id'],
|
|
|
- 'commodity_id' => $commodity->id ?? '',
|
|
|
- 'order_package_id' => $orderPackage->id ?? '',
|
|
|
- 'amount' => $updateParam['amount'],
|
|
|
- 'updated_at' => $dataTime
|
|
|
- ];
|
|
|
- }
|
|
|
- $this->batchUpdate($update_params);
|
|
|
- }
|
|
|
-
|
|
|
- private function 返回Commodity数组_根据数组中sku($params)
|
|
|
- {
|
|
|
- $skus = array_unique(data_get($params,'*.sku'));
|
|
|
- $commodities = Commodity::query()->with('owner')->whereIn('sku',$skus)->get();
|
|
|
- $commodity_map = [];
|
|
|
- foreach ($commodities as $commodity) {
|
|
|
- $key = ' ownerCode='.($commodity->owner->code ?? '').' sku='.$commodity->sku;
|
|
|
- $commodity_map[$key] = $commodity;
|
|
|
- }
|
|
|
- return $commodity_map;
|
|
|
- }
|
|
|
-
|
|
|
public function syncOrderPackageCommodities($orderHeaders)
|
|
|
{
|
|
|
$this->syncOrderPackageCommoditiesByOrderHeaders($orderHeaders);
|
|
|
}
|
|
|
|
|
|
- // TODO
|
|
|
- public function deleteUnnecessaryOrderCommodities($ids)
|
|
|
- {
|
|
|
- if(!$ids)return;
|
|
|
- if(count($ids)==0)return;
|
|
|
- $items = OrderPackageCommodities::query()->whereIn('order_package_id',$ids)->get();
|
|
|
- OrderPackageCommodities::query()->whereIn('order_package_id',$ids)->delete();
|
|
|
- app('LogService')->log(__METHOD__,__FUNCTION__,'删除 OrderPackageCommodities'.json_encode($items));
|
|
|
- }
|
|
|
- // TODO
|
|
|
public function syncOrderPackageCommoditiesByOrderHeaders(&$orderHeaders)
|
|
|
{
|
|
|
/**
|
|
|
@@ -602,7 +105,6 @@ class OrderPackageCommoditiesService
|
|
|
}
|
|
|
if(count($owner_codes) ==0 || count($sku_codes) == 0)return ;
|
|
|
$owners = $ownerService->getOwnerByCodes($owner_codes);
|
|
|
-// $commodities = $commodityService->get_(data_get($owners,'*.id'),$sku_codes,[],true); // 预先处理 3s
|
|
|
$commodities = $commodityService->getCommoditiesByMaps($map); // 预先处理 3s
|
|
|
$orderPackages = $orderPackageService->getByWmsOrders($orderHeaders);
|
|
|
$orderCommodities = $this->getByWmsOrder($orderHeaders);
|
|
|
@@ -637,7 +139,7 @@ class OrderPackageCommoditiesService
|
|
|
$this->deleteOrderCommodities($del_orderCommodities); // 删除
|
|
|
unset($del_orderCommodities);
|
|
|
}
|
|
|
- // TODO 重组已有的OrderCommodities
|
|
|
+
|
|
|
public function regroupOrderCommodities(&$orderCommodities)
|
|
|
{
|
|
|
$params = [];
|
|
|
@@ -658,7 +160,7 @@ class OrderPackageCommoditiesService
|
|
|
});
|
|
|
return $params;
|
|
|
}
|
|
|
- // TODO 重组OrderAllocationDetails
|
|
|
+
|
|
|
public function regroupWmsOrderAllocationDetails(&$orderHeaders)
|
|
|
{
|
|
|
/**
|
|
|
@@ -687,7 +189,7 @@ class OrderPackageCommoditiesService
|
|
|
}
|
|
|
return $params;
|
|
|
}
|
|
|
- // TODO 过滤已有的
|
|
|
+
|
|
|
public function filterUpdateParams(&$orderAllocationDetails,&$orderCommodities,&$del_orderCommodities)
|
|
|
{
|
|
|
$update_params = [];
|
|
|
@@ -708,7 +210,7 @@ class OrderPackageCommoditiesService
|
|
|
}
|
|
|
return $update_params;
|
|
|
}
|
|
|
- // TODO 创建
|
|
|
+
|
|
|
public function filterInnerParams(&$orderAllocationDetails,&$orderCommodities)
|
|
|
{
|
|
|
$inner_params = [];
|
|
|
@@ -720,21 +222,7 @@ class OrderPackageCommoditiesService
|
|
|
}
|
|
|
return $inner_params;
|
|
|
}
|
|
|
- // TODO 更新
|
|
|
-// public function filterUpdateParams(&$orderAllocationDetails,&$orderCommodities)
|
|
|
-// {
|
|
|
-// $update_params = [];
|
|
|
-// foreach ($orderCommodities as $key => $orderCommodity) {
|
|
|
-// if(isset($orderAllocationDetails[$key])){
|
|
|
-// if($orderCommodity->amount != $orderAllocationDetails[$key]->amount){
|
|
|
-// $update_params[$key] = $orderCommodity[$key]->amount = $orderAllocationDetails[$key]->amount;
|
|
|
-// unset($orderCommodity,$orderAllocationDetails[$key]);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// return $update_params;
|
|
|
-// }
|
|
|
- // TODO
|
|
|
+
|
|
|
public function filterDeleteParams(&$orderAllocationDetails,&$orderCommodities)
|
|
|
{
|
|
|
$del_params = [];
|
|
|
@@ -748,7 +236,7 @@ class OrderPackageCommoditiesService
|
|
|
}
|
|
|
return $del_params;
|
|
|
}
|
|
|
- // TODO 根据数据创建
|
|
|
+
|
|
|
public function createOrderCommodities(&$inner_params,&$package_map,&$commodities,&$owner_id_map)
|
|
|
{
|
|
|
/** @var DataHandlerService $dataHandlerService */
|
|
|
@@ -790,7 +278,7 @@ class OrderPackageCommoditiesService
|
|
|
}
|
|
|
unset($create_params,$commodity_map);
|
|
|
}
|
|
|
- // TODO
|
|
|
+
|
|
|
public function updateOrderCommodities(&$orderCommodities)
|
|
|
{
|
|
|
if(!$orderCommodities)return ;
|
|
|
@@ -810,7 +298,7 @@ class OrderPackageCommoditiesService
|
|
|
|
|
|
unset($update_params);
|
|
|
}
|
|
|
- // TODO 删除
|
|
|
+
|
|
|
public function deleteOrderCommodities(&$orderCommodities){
|
|
|
/** @var OrderTrackingService $orderTrackingService */
|
|
|
$orderTrackingService = app('OrderTrackingService');
|