|
|
@@ -390,4 +390,188 @@ class OrderPackageCommoditiesService
|
|
|
return $this->getByOrderNos(data_get($orders,'*.code'));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param OracleDOCOrderHeader $orderHeader
|
|
|
+ * @param Order $order
|
|
|
+ * @return array|Collection|\Tightenco\Collect\Support\Collection
|
|
|
+ */
|
|
|
+ public function 返回创建数组($orderHeader,$order)
|
|
|
+ {
|
|
|
+ /** @var DataHandlerService $dataHandlerService */
|
|
|
+ $dataHandlerService = app(DataHandlerService::class);
|
|
|
+ if($orderHeader->sostatus == 90){return [];}
|
|
|
+ $actAllocationDetails = $orderHeader->actAllocationDetails->collect();
|
|
|
+ $orderPackages = $dataHandlerService->dataHeader(['logistic_number'],$order->packages);
|
|
|
+ $innerParams = collect();
|
|
|
+ $actAllocationDetails->each(function($detail)use($orderPackages,$dataHandlerService,$innerParams){
|
|
|
+ $orderPackage = $dataHandlerService->getKeyValue(['logistic_number'=>$detail->picktotraceid],$orderPackages);
|
|
|
+ $sku = $detail->sku;
|
|
|
+ $amount = $detail->qty_each;
|
|
|
+ $order_package_id = $orderPackage->id;
|
|
|
+ $logistic_number = $orderPackage->logistic_number;
|
|
|
+ $params = [
|
|
|
+ 'ownerCode' > $detail->customerid,
|
|
|
+ 'orderNo' => $detail->orderno,
|
|
|
+ 'sku' => $sku,
|
|
|
+ 'amount' => $amount,
|
|
|
+ 'order_package_id' => $order_package_id,
|
|
|
+ 'logistic_number' => $logistic_number,
|
|
|
+ ];
|
|
|
+ $innerParam = $innerParams->where('order_package_id',$orderPackage->id)->where('sku',$sku)->first();
|
|
|
+ if(!$innerParam){
|
|
|
+ $innerParams->push($params);
|
|
|
+ }else{
|
|
|
+ $innerParam['amount'] += $amount;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return $innerParams;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param array $innerParams
|
|
|
+ * @param OracleDOCOrderHeader $orderHeaders
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function 生成OrderPackageCommodities_基于创建数组($innerParams,$orderHeaders)
|
|
|
+ {
|
|
|
+ /** @var DataHandlerService $dataHandlerService */
|
|
|
+ $dataHandlerService = app(DataHandlerService::class);
|
|
|
+ $commodities = app(CommodityService::class)->getByWmsOrder($orderHeaders);
|
|
|
+ $owners = app(OwnerService::class)->getByWmsOrders($orderHeaders);
|
|
|
+ $owner_id_map = $dataHandlerService->dataHeader(['id'],$owners);
|
|
|
+ $commodities_owner_code_sku_map = [];
|
|
|
+ foreach ($commodities as $commodity) {
|
|
|
+ $owner_code = $dataHandlerService->getKeyValue(['id'=>$commodity->owner_id],$owner_id_map);
|
|
|
+ $key = ' owner_code='.$owner_code.' sku='.$commodity->sku;
|
|
|
+ $commodities_owner_code_sku_map[$key] = $commodity;
|
|
|
+ }
|
|
|
+
|
|
|
+ $dataTime = Carbon::now()->format('Y-m-d H:i:s');
|
|
|
+ $createParams = [];
|
|
|
+ foreach ($innerParams as $innerParam) {
|
|
|
+ $key = ' owner_code='.$innerParam['ownerCode'].' sku='.$innerParam['sku'];
|
|
|
+ $commodity = $commodities_owner_code_sku_map[$key] ?? null;
|
|
|
+ $createParams[] = [
|
|
|
+ 'order_package_id' => $innerParam['order_package_id'],
|
|
|
+ 'commodity_id' => $commodity->id ?? null,
|
|
|
+ 'amount' => $innerParam['amount'],
|
|
|
+ 'created_at' => $dataTime,
|
|
|
+ 'updated_at' => $dataTime,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ return $createParams;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param OrderPackageCommodities $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,
|
|
|
+ 'order_package_id' => $orderPackageCommodity->package->id,
|
|
|
+ 'logistic_number' => $orderPackageCommodity->package->logistic_number,
|
|
|
+ ];
|
|
|
+ $collect->push($params);
|
|
|
+ }
|
|
|
+ return $collect;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function 数据重组(&$orderPackageCommoditiesCollect,&$params)
|
|
|
+ {
|
|
|
+ $collect_map = [];$params_map = [];$order_no_map = [];
|
|
|
+
|
|
|
+ foreach ($orderPackageCommoditiesCollect 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);
|
|
|
+ $orderPackageCommoditiesCollect = $collect_map;
|
|
|
+ $params = $params_map;
|
|
|
+ return $order_no_map;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param Collection $OPCCollects
|
|
|
+ * @param array $paramsCollect
|
|
|
+ */
|
|
|
+ public function 删选出能保留的OrderPackageCommodities(&$OPCCollects,&$paramsCollect,$orderMap)
|
|
|
+ {
|
|
|
+ $retains = collect();
|
|
|
+ foreach ($orderMap as $orderNo) {
|
|
|
+ $OPCCollect = $OPCCollects[$orderNo];
|
|
|
+ $params = $paramsCollect[$orderNo];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function 删选可以保留的OrderPackageCommodities(&$OPCCollect,&$params)
|
|
|
+ {
|
|
|
+ $retain = collect();
|
|
|
+ $map = [];
|
|
|
+ foreach ($params as $param) {
|
|
|
+ $key = ' logistic_number='.$param['logistic_number'].' sku='.$param['sku'].' amount='.$param['amount'];
|
|
|
+ if(!$map[$key] ?? false){
|
|
|
+ $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])){
|
|
|
+ $value = $map[$key][0];
|
|
|
+ array_shift($map);
|
|
|
+ $params->filter(function($param)use($value){
|
|
|
+ return count(array_diff_assoc($param,$value)) != 0 ;
|
|
|
+ });
|
|
|
+ $retain->push($value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $retain;
|
|
|
+ }
|
|
|
+
|
|
|
+//
|
|
|
+// public function 删选需要修改的OrderPackageCommodities(&$OPCCollect,&$params)
|
|
|
+// {
|
|
|
+// $update = collect();
|
|
|
+// $map = [];
|
|
|
+// foreach ($OPCCollect as $item) {
|
|
|
+// $key = ' logistic_number='.$item['logistic_number'].' sku='.$item['sku'];
|
|
|
+// if(!isset($map[$key])){
|
|
|
+// $map[$key] = [];
|
|
|
+// }
|
|
|
+// $map[$key][] = $item;
|
|
|
+// }
|
|
|
+//
|
|
|
+// foreach ($params as $param) {
|
|
|
+// $key = ' logistic_number='.$param['logistic_number'].' sku='.$param['sku'];
|
|
|
+// if(isset($map[$key])){
|
|
|
+//
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
}
|