Ver Fonte

Merge branch 'LD'

# Conflicts:
#	app/Console/Commands/SyncBatchTask.php
LD há 5 anos atrás
pai
commit
60714b15fb

+ 2 - 1
app/Batch.php

@@ -5,6 +5,7 @@ namespace App;
 use Illuminate\Database\Eloquent\Model;
 
 use App\Traits\ModelLogChanging;
+use Illuminate\Database\Eloquent\Relations\HasOne;
 
 class Batch extends Model
 {
@@ -41,7 +42,7 @@ class Batch extends Model
     {
         return $this->hasOne(Owner::class,"id","owner_id");
     }
-    public function stationTaskBatch()
+    public function stationTaskBatch(): HasOne
     {
         return $this->hasOne(StationTaskBatch::class);
     }

+ 1 - 0
app/Console/Commands/SyncBatchTask.php

@@ -83,6 +83,7 @@ sql
         }
         $update = [["id","wms_status","wms_type","updated_at"]];
         $insert = [];
+
         foreach ($waves as $wave){
             if (isset($map[$wave->waveno])){
                 $bat = $batches[$map[$wave->waveno]];

+ 1 - 1
app/Http/Controllers/CitiesController.php

@@ -13,7 +13,7 @@ use Illuminate\Support\Facades\Validator;
 
 class CitiesController extends Controller
 {
-    public function index(ForeignHaiRobotic_taskUpdateRequest $request)
+    public function index(Request $request)
     {
         if(!Gate::allows('城市-查询')){ return redirect(url('/'));  }
         $cities=City::orderBy('id', 'DESC')->paginate(50);

+ 4 - 2
app/Http/Controllers/TestController.php

@@ -89,6 +89,7 @@ use App\Services\StoreService;
 use App\Services\WarehouseService;
 use App\StationRuleBatch;
 use App\StationTask;
+use App\StationTaskMaterialBox;
 use App\Store;
 use App\StationTaskBatch;
 use App\StoreCheckingReceiveItem;
@@ -315,7 +316,8 @@ sql;
 
     function t1(Request $request)
     {
-//        StationTask::query()->create(['status'=>'待处理']);
+        $r=StationTaskMaterialBox::query()->with('stationTaskCommodities')->where('id', 1710)->first();
+        dd($r['stationTaskCommodities']);
     }
 
     function packageT(Request $request)
@@ -1038,7 +1040,7 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
 
     public function reNewBatches3()
     {
-        $batches = Batch::query()->where('id','>', 73620)->get('code');
+        $batches = Batch::query()->where('id','>', 79628)->get('code');
         $batchCodes = $batches->map(function ($batch) {
             return $batch['code'];
         })->toArray();

+ 79 - 79
app/Http/Controllers/api/thirdPart/flux/SortingController.php

@@ -30,85 +30,85 @@ class SortingController extends Controller
      */
     public function newBatch(Request $request)
     {
-//       $requestArr=$request->all();
-        app('LogService')->log(__METHOD__, 'issued_' . __FUNCTION__, json_encode($request->all()));
-//        !$requestArr?$requestArr=json_decode($request->getContent(),true):false;
-//        $errors=$this->newBatchValidator($requestArr)->errors();
-//        if(count($errors)>0){
-//            app('LogService')->log(__METHOD__, 'error' . __FUNCTION__, 'fields wrong, see Errors report please.'.'|'.json_encode($request->all()).'|'.json_encode($errors));
-//            return response()->json(['Response'=>['return'=>['returnFlag'=>'0','returnCode'=>'0001',
-//                'returnDesc'=>':Failure','resultInfo'=>'','errors'=>$errors]]])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
-//        }
-//        $requestBatches = $requestArr['request']?? '';
-//
-//        foreach ($requestBatches as $requestBatch){
-//            $requestBatch['edittime']&&strpos(trim($requestBatch['edittime']),' ')?$editTimeFormat='Y-m-d H:i:s':$editTimeFormat='YmdHis';
-//            $batch=Batch::query()->firstOrCreate(['code' => $requestBatch['waveno']]);
-//
-//            if(!$batch)$batch=new Batch();
-//            $batch->fill([
-//                    'code' => $requestBatch['waveno'],
-//                    'wms_type' => $requestBatch['batch_type']??'',
-//                    'wms_status' => $requestBatch['docstatus']??'',
-//                    'status' => '未处理',
-//                    'wms_created_at' => $requestBatch['edittime']?Carbon::createFromFormat($editTimeFormat,$requestBatch['edittime']):'',
-//            ]);
-//            $batch->save();
-//            $oracleAlloactions=OracleActAllocationDetails::query()->where('waveno',$requestBatch['waveno'])->get();
-//            foreach($requestBatch['order_list'] as $requestOrder){
-//                $owner=Owner::query()->where('code',$requestOrder['customerid'])->first();
-//                $order=app("OrderService")->first(['code'=>$requestOrder['docno']]);
-//                if(!$order){
-//                    $order=app("OrderService")->createOrder([
-//                        'batch_id' => $batch['id'],
-//                        'code' => $requestOrder['docno'],
-//                        'owner_id' => $owner['id'],
-//                        'wms_status' => $requestOrder['docstatus']??'波次下发',
-//                        'status' => '未处理',
-//                    ]);
-//                    app('LogService')->log(__METHOD__,__FUNCTION__,'创建 Order'.json_encode($order));
-//                }else{
-//                    $order['batch_id']= $batch['id'] ;
-//                    $order['owner_id']=$order['owner_id']??$owner['owner_id'];
-//                    $order['wms_status']=$order['wms_status']??$requestOrder['docstatus']??'波次下发';
-//                    $order['status']=$order['status']??'未处理';
-//                }
-//                $order->save();
-//                OrderBin::query()->firstOrCreate([
-//                    'order_id' => $order['id'],
-//                    'number' => $requestOrder['reservedfield01'],
-//                ]);
-//                foreach($requestOrder['barcode_list'] as $requestBarcode){
-//                    $orderCommodity=OrderCommodity::query()
-//                        ->where('order_id',$order['id'])->where('wms_ptltaskid',$requestBarcode['ptltaskid'])->first();
-//                    if(!$orderCommodity){
-//                        /** @var CommodityService $commodityService */
-//                        $commodityService=app('CommodityService');
-//                        $commodity=$commodityService->syncBarcodes($requestBarcode['alternate_sku1'],$owner['id'],$requestBarcode['sku']);
-//                        $orderCommodity=OrderCommodity::query()->firstOrCreate(['order_id'=>$order['id'],'commodity_id'=>$commodity['id']]);
-//                        if(!$orderCommodity){
-//                            $orderCommodity = new OrderCommodity([
-//                                'order_id' => $order['id'],
-//                                'commodity_id' => $commodity['id'],
-//                                'amount' => $requestBarcode['fmqty_each']??0,
-//                                'wms_ptltaskid' => $requestBarcode['ptltaskid'],
-//                            ]);
-//                        }else{
-//                            $orderCommodity['order_id']=$order['id'];
-//                            $orderCommodity['commodity_id']=$commodity['id'];
-//                            $orderCommodity['amount']=$requestBarcode['fmqty_each']??0;
-//                            $orderCommodity['wms_ptltaskid']=$requestBarcode['ptltaskid']??0;
-//                        }
-//                        $allocation=$oracleAlloactions->where('orderno',$requestOrder['docno'])->where('sku',$commodity['sku'])->where('qty',$requestBarcode['fmqty_each'])->first();
-//                        if($allocation)
-//                            $orderCommodity['location'] = $allocation['location'];
-//                        $orderCommodity->save();
-//                    }
-//                }
-//            }
-//        }
-//        return response()->json(['Response'=>['return'=>['returnFlag'=>'1','returnCode'=>'0000',
-//            'returnDesc'=>'消息处理成功:Success','resultInfo'=>'']]])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
+       $requestArr=$request->all();
+//        app('LogService')->log(__METHOD__, 'issued_' . __FUNCTION__, json_encode($request->all()));
+        !$requestArr?$requestArr=json_decode($request->getContent(),true):false;
+        $errors=$this->newBatchValidator($requestArr)->errors();
+        if(count($errors)>0){
+            app('LogService')->log(__METHOD__, 'error' . __FUNCTION__, 'fields wrong, see Errors report please.'.'|'.json_encode($request->all()).'|'.json_encode($errors));
+            return response()->json(['Response'=>['return'=>['returnFlag'=>'0','returnCode'=>'0001',
+                'returnDesc'=>':Failure','resultInfo'=>'','errors'=>$errors]]])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
+        }
+        $requestBatches = $requestArr['request']?? '';
+
+        foreach ($requestBatches as $requestBatch){
+            $requestBatch['edittime']&&strpos(trim($requestBatch['edittime']),' ')?$editTimeFormat='Y-m-d H:i:s':$editTimeFormat='YmdHis';
+            $batch=Batch::query()->firstOrCreate(['code' => $requestBatch['waveno']]);
+
+            if(!$batch)$batch=new Batch();
+            $batch->fill([
+                    'code' => $requestBatch['waveno'],
+                    'wms_type' => $requestBatch['batch_type']??'',
+                    'wms_status' => $requestBatch['docstatus']??'',
+                    'status' => '未处理',
+                    'wms_created_at' => $requestBatch['edittime']?Carbon::createFromFormat($editTimeFormat,$requestBatch['edittime']):'',
+            ]);
+            $batch->save();
+            $oracleAlloactions=OracleActAllocationDetails::query()->where('waveno',$requestBatch['waveno'])->get();
+            foreach($requestBatch['order_list'] as $requestOrder){
+                $owner=Owner::query()->where('code',$requestOrder['customerid'])->first();
+                $order=app("OrderService")->first(['code'=>$requestOrder['docno']]);
+                if(!$order){
+                    $order=app("OrderService")->createOrder([
+                        'batch_id' => $batch['id'],
+                        'code' => $requestOrder['docno'],
+                        'owner_id' => $owner['id'],
+                        'wms_status' => $requestOrder['docstatus']??'波次下发',
+                        'status' => '未处理',
+                    ]);
+                    app('LogService')->log(__METHOD__,__FUNCTION__,'创建 Order'.json_encode($order));
+                }else{
+                    $order['batch_id']= $batch['id'] ;
+                    $order['owner_id']=$order['owner_id']??$owner['owner_id'];
+                    $order['wms_status']=$order['wms_status']??$requestOrder['docstatus']??'波次下发';
+                    $order['status']=$order['status']??'未处理';
+                }
+                $order->save();
+                OrderBin::query()->firstOrCreate([
+                    'order_id' => $order['id'],
+                    'number' => $requestOrder['reservedfield01'],
+                ]);
+                foreach($requestOrder['barcode_list'] as $requestBarcode){
+                    $orderCommodity=OrderCommodity::query()
+                        ->where('order_id',$order['id'])->where('wms_ptltaskid',$requestBarcode['ptltaskid'])->first();
+                    if(!$orderCommodity){
+                        /** @var CommodityService $commodityService */
+                        $commodityService=app('CommodityService');
+                        $commodity=$commodityService->syncBarcodes($requestBarcode['alternate_sku1'],$owner['id'],$requestBarcode['sku']);
+                        $orderCommodity=OrderCommodity::query()->firstOrCreate(['order_id'=>$order['id'],'commodity_id'=>$commodity['id']]);
+                        if(!$orderCommodity){
+                            $orderCommodity = new OrderCommodity([
+                                'order_id' => $order['id'],
+                                'commodity_id' => $commodity['id'],
+                                'amount' => $requestBarcode['fmqty_each']??0,
+                                'wms_ptltaskid' => $requestBarcode['ptltaskid'],
+                            ]);
+                        }else{
+                            $orderCommodity['order_id']=$order['id'];
+                            $orderCommodity['commodity_id']=$commodity['id'];
+                            $orderCommodity['amount']=$requestBarcode['fmqty_each']??0;
+                            $orderCommodity['wms_ptltaskid']=$requestBarcode['ptltaskid']??0;
+                        }
+                        $allocation=$oracleAlloactions->where('orderno',$requestOrder['docno'])->where('sku',$commodity['sku'])->where('qty',$requestBarcode['fmqty_each'])->first();
+                        if($allocation)
+                            $orderCommodity['location'] = $allocation['location'];
+                        $orderCommodity->save();
+                    }
+                }
+            }
+        }
+        return response()->json(['Response'=>['return'=>['returnFlag'=>'1','returnCode'=>'0000',
+            'returnDesc'=>'消息处理成功:Success','resultInfo'=>'']]])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
     }
 
     protected function newBatchValidator(array $data)

+ 2 - 2
app/Http/Controllers/api/thirdPart/haiq/PickStationController.php

@@ -6,8 +6,8 @@ namespace App\Http\Controllers\api\thirdPart\haiq;
 
 
 
+use App\Http\Requests\ForeignHaiRobotic_processedRequest;
 use App\Services\ForeignHaiRoboticsService;
-use Illuminate\Http\Request;
 
 class PickStationController
 {
@@ -18,7 +18,7 @@ class PickStationController
         $this->service=app('ForeignHaiRoboticsService');
     }
 
-    public function processed(Request $request): array
+    public function processed(ForeignHaiRobotic_processedRequest $request): array
     {
         $failed=
             ($processedResult=

+ 11 - 9
app/Services/BatchService.php

@@ -47,6 +47,8 @@ class BatchService
     }
 
 
+
+
     public function updateWhereIn($key,$values,$updateKeyValues){
         Batch::query()->whereIn($key,$values)->update($updateKeyValues);
     }
@@ -61,31 +63,31 @@ class BatchService
         try{
 
 //        $this->directTemp($batches);
-            LogService::log(__CLASS__,__FUNCTION__,'1');
+//            LogService::log(__CLASS__,__FUNCTION__,'1');
             $this->instant($this->stationTaskBatchService,'StationTaskBatchService');
             $this->instant($this->stationRuleBatchService,'StationRuleBatchService');
             $this->instant($this->stationTaskService,'StationTaskService');
             $this->instant($this->stationTaskCommodityService,'StationTaskCommodityService');
             $this->instant($this->stationTaskMaterialBoxService,'StationTaskMaterialBoxService');
 
-            LogService::log(__CLASS__,__FUNCTION__,'2'.$batches->toJson());
+//            LogService::log(__CLASS__,__FUNCTION__,'2'.$batches->toJson());
 
             $batches_shouldProcess = $this->stationRuleBatchService->getBatches_shouldProcess($batches); //按规则过滤需要的波次
-            LogService::log(__CLASS__,__FUNCTION__,'3 $batches_shouldProcess:'.$batches_shouldProcess->toJson());
+//            LogService::log(__CLASS__,__FUNCTION__,'3 $batches_shouldProcess:'.$batches_shouldProcess->toJson());
             if($batches_shouldProcess->isEmpty()) return;
 
-            LogService::log(__CLASS__,__FUNCTION__,'4');
+//            LogService::log(__CLASS__,__FUNCTION__,'4');
             $stationTasks =  $this->stationTaskService->create($batches_shouldProcess->count()); //生成总任务
-            LogService::log(__CLASS__,__FUNCTION__,'5'.$stationTasks->toJson());
+//            LogService::log(__CLASS__,__FUNCTION__,'5'.$stationTasks->toJson());
             $stationTaskBatches=$this->stationTaskBatchService->createByBatches($batches_shouldProcess,$stationTasks); //注册波次任务
-            LogService::log(__CLASS__,__FUNCTION__,'6'.$stationTaskBatches->toJson());
+//            LogService::log(__CLASS__,__FUNCTION__,'6'.$stationTaskBatches->toJson());
             $stationTaskCommodities=$this->stationTaskCommodityService->createByBatches($batches_shouldProcess,$stationTasks); //注册商品任务
-            LogService::log(__CLASS__,__FUNCTION__,'7'.$stationTaskCommodities->toJson());
+//            LogService::log(__CLASS__,__FUNCTION__,'7'.$stationTaskCommodities->toJson());
             $stationTaskMaterialBoxes=$this->stationTaskMaterialBoxService->createByBatches($batches_shouldProcess,$stationTasks); //注册料箱任务
-            LogService::log(__CLASS__,__FUNCTION__,'8'.$stationTaskMaterialBoxes->toJson());
+//            LogService::log(__CLASS__,__FUNCTION__,'8'.$stationTaskMaterialBoxes->toJson());
 
             $ran=$this->stationTaskBatchService->runMany($stationTaskBatches);//执行波次任务
-            LogService::log(__CLASS__,__FUNCTION__,'10'.json_encode([$ran]));
+//            LogService::log(__CLASS__,__FUNCTION__,'10'.json_encode([$ran]));
         }catch(Exception $e){
             throw new ErrorException('注册任务失败: '.json_encode($batches). $e->getMessage());
         }

+ 46 - 24
app/Services/ForeignHaiRoboticsService.php

@@ -22,6 +22,8 @@ class ForeignHaiRoboticsService
 
     /** @var  $stationTaskMaterialBoxService StationTaskMaterialBoxService */
     private $stationTaskMaterialBoxService;
+    /** @var  $stationTaskCommoditiesService StationTaskCommodityService */
+    private $stationTaskCommoditiesService;
     /** @var  $materialBoxService MaterialBoxService */
     private $materialBoxService;
     /** @var  $stationService StationService */
@@ -106,6 +108,10 @@ class ForeignHaiRoboticsService
         $is_in_plan
     ): bool
     {
+        $this->instant($this->stationService,'StationService');
+        $this->instant($this->materialBoxService,'MaterialBoxService');
+        $this->instant($this->stationTaskMaterialBoxService,'StationTaskMaterialBoxService');
+        $this->instant($this->stationTaskCommoditiesService,'StationTaskCommodityService');
         try{
             if($failed
                 =!$success)
@@ -115,16 +121,19 @@ class ForeignHaiRoboticsService
                 throw new ErrorException('海柔认为是计划外的料箱:'.$exception);
 
             $materialBox=
-                $this->materialBoxService->get(['code'=>$binCode]);
-            if($stationTaskMaterialBox
+                $this->materialBoxService->get(['code'=>$binCode])->first();
+            $stationTaskMaterialBox
                 =(function()use($materialBox){
                 return $stationTaskMaterialBox=
                     $this->stationTaskMaterialBoxService
-                        ->get([
-                            'material_box_id'=>$materialBox['id'],
-                            'status'=>'处理中',
-                        ])->first();
-            })()){
+                        ->get(
+                            [
+                                'material_box_id'=>$materialBox['id'],
+                                'status'=>['处理中','异常'],
+                            ]
+                        )->first();
+            })();
+            if(!$stationTaskMaterialBox){
                 throw new ErrorException('该料箱没有安排在处理队列中');
             }
             $this->putBinToStore($stationTaskMaterialBox)
@@ -132,19 +141,31 @@ class ForeignHaiRoboticsService
                 :(function(){throw new ErrorException('呼叫机器人回收U型线料箱失败');})();
             $this->stationTaskMaterialBoxService
                 ->markProcessed($stationTaskMaterialBox);
+            $this->stationTaskCommoditiesService
+                ->markProcessed($stationTaskMaterialBox['stationTaskCommodities']);
+            $this->stationService->broadcastBinMonitor($stationTaskMaterialBox['station_id'],$stationTaskMaterialBox['stationTask']);
             return true;
         }catch (\Exception $e){
-            $this->stationTaskMaterialBoxService
-                ->excepted($stationTaskMaterialBox??$materialBox??null);
+            $stationTaskMaterialBox = $stationTaskMaterialBox??$materialBox??null;
+            if($stationTaskMaterialBox && get_class($stationTaskMaterialBox)==MaterialBox::class){
+                $stationTaskMaterialBox = StationTaskMaterialBox::query()
+                    ->where('material_box_id',$stationTaskMaterialBox['id'])
+                    ->where('status','<>','完成')
+                    ->where('created_at','>',now()->format('Y-m-d'))
+                    ->first();
+            }
+            if($stationTaskMaterialBox)
+                $this->stationTaskMaterialBoxService
+                    ->excepted($stationTaskMaterialBox);
             return $e->getMessage();
         }
     }
 
-    public function putBinToStore(StationTaskMaterialBox $stationTaskMaterialBox): bool
+    public function putBinToStore(?StationTaskMaterialBox $stationTaskMaterialBox): bool
     {
         $this->instant($this->stationService,'StationService');
         $dataToPost=$this->makeJson_move(
-            collect($stationTaskMaterialBox),
+            collect([$stationTaskMaterialBox]),
             '缓存架入立架',
             $this->stationService->getULineExit($stationTaskMaterialBox['station'])['name']??'',
             '',
@@ -160,6 +181,7 @@ class ForeignHaiRoboticsService
         $status,            //0:任务成功1:任务失败
         $binCode
     ):bool{
+        $this->instant($this->stationTaskMaterialBoxService,'StationTaskMaterialBoxService');
         try{
             if(($failed
                     =$status)==1){
@@ -167,27 +189,27 @@ class ForeignHaiRoboticsService
             }
             if($boxNotMatch=
                 !$stationTaskMaterialBox
-                =(function()use($taskCode,$binCode){
-                $stationTaskMaterialBox=StationTaskMaterialBox::query()->find($id=$taskCode);
-                if($stationTaskMaterialBox['code']==$binCode)return $stationTaskMaterialBox;
-                return null;
-            })()){
+                    =(function()use($taskCode,$binCode){
+                    $stationTaskMaterialBox=StationTaskMaterialBox::query()->find($id=$taskCode);
+                    if($stationTaskMaterialBox['materialBox']['code']==$binCode)return $stationTaskMaterialBox;
+                    return null;
+                })()){
                 throw new ErrorException('发回的料箱和任务号(ID)不匹配');
             }
             ($标记已放置在库外=
                 function()use($updateEventType,$stationTaskMaterialBox){
-                if(($isPut
-                        =$updateEventType)==1){
-                    $this->stationTaskMaterialBoxService->markHasPut($stationTaskMaterialBox);
-                }
-            })();
+                    if(($isPut
+                            =$updateEventType)==0){
+                        $this->stationTaskMaterialBoxService->markHasTaken($stationTaskMaterialBox);
+                    }
+                })();
             ($标记已入立架=
                 function()use($updateEventType,$stationTaskMaterialBox){
                     if(($isGet
-                            =$updateEventType)==0){
-                        $this->stationTaskMaterialBoxService->markTaken($stationTaskMaterialBox);
+                            =$updateEventType)==1){
+                        $this->stationTaskMaterialBoxService->markPutStored($stationTaskMaterialBox);
                     }
-            })();
+                })();
         }catch (\Exception $e){
             $this->excepted($taskCode, $binCode, $e->getMessage());
             return false;

+ 1 - 1
app/Services/StationService.php

@@ -60,7 +60,7 @@ class StationService
         broadcast(new BroadcastToStation($station_id,$json_data));
     }
 
-    function broadcastBinMonitor($station_id, StationTask $stationTask){
+    function broadcastBinMonitor($station_id, ?StationTask $stationTask){
         $stationTask->loadMissing(["taskCommodities.commodity.barcodes","taskCommodities.materialBox","taskBatches.batch"/*,"taskMaterialBoxes.box"*/]);
         $stationTask->toJson();
         $this->broadcast($station_id, $stationTask->toJson());

+ 10 - 9
app/Services/StationTaskBatchService.php

@@ -180,19 +180,20 @@ class StationTaskBatchService
         return $isFetchedFromRobotics;
     }
 
-    function markProcessing($stationTaskBatches)
+    function markProcessing($stationTaskBatch_orCollection)
     {
-        if (get_class($stationTaskBatches)==StationTaskBatch::class){
-            $stationTaskBatches = collect($stationTaskBatches);
+        if (get_class($stationTaskBatch_orCollection)==StationTaskBatch::class){
+            $stationTaskBatch_orCollection = collect([$stationTaskBatch_orCollection]);
         }
+        $this->markProcessing_byIds(data_get($stationTaskBatch_orCollection, '*.id'));
+    }
+    function markProcessing_byIds($ids)
+    {
+        if(!$ids)$ids=[];
+        if(!is_array($ids))$ids=[$ids];
         StationTaskBatch::query()
-            ->whereIn('id', data_get($stationTaskBatches, '*.id'))
+            ->whereIn('id', $ids)
             ->update(['status'=>'处理中']);
-
-        $this->stationTaskService
-            ->markProcessing_byId(
-                data_get($stationTaskBatches, '*.station_id')
-            );
     }
 
 //    function markFinished($stationTaskBatches)

+ 15 - 10
app/Services/StationTaskCommodityService.php

@@ -9,6 +9,7 @@ use App\OrderCommodity;
 use App\StationTask;
 use App\StationTaskBatch;
 use App\StationTaskCommodity;
+use App\StationTaskMaterialBox;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Cache;
 use App\Traits\ServiceAppAop;
@@ -63,6 +64,8 @@ class StationTaskCommodityService
 
     }
 
+
+
 //    function getAndAttachIds($taskCommodities): Collection
 //    {
 //        $md5=is_array($taskCommodities)
@@ -101,6 +104,7 @@ class StationTaskCommodityService
             $stationType=$this->stationTypeService->getForCommodity();
             $station=$this->stationService->getStation_byType($stationType['name']);
             $materialBox=$this->materialBoxService->firstOrCreate(['code' => $orderCommodity['location']]);
+            $stationTaskMaterialBoxId=StationTaskMaterialBox::query()->where('station_task_batch_id',$batch['id'])->where('material_box_id',$materialBox['id'])->get('id');
             $stationTaskCommodities_toCreate->push(
                 new StationTaskCommodity([
                     'station_id'=>$station['id'],
@@ -110,25 +114,26 @@ class StationTaskCommodityService
                     'bin_number'=>$orderCommodity['orderBin']['number']??'',
                     'order_id'=>$orderCommodity['order_id'],
                     'station_task_batch_id'=>$batch['id'],
-                    'status'=>'待处理'
+                    'station_task_material_box_id'=>$stationTaskMaterialBoxId,
+                    'status'=>'待处理',
                 ])
             );
         }
         return $this->insert($stationTaskCommodities_toCreate->toArray(),true);
     }
 
-    function markProcessing($stationTaskCommodities)
+    function markProcessing($stationTaskCommodity_orCollection)
     {
-        if (get_class($stationTaskCommodities)==StationTaskCommodity::class){
-            $stationTaskCommodities = collect($stationTaskCommodities);
+        if (get_class($stationTaskCommodity_orCollection)==StationTaskCommodity::class){
+            $stationTaskCommodity_orCollection = collect([$stationTaskCommodity_orCollection]);
         }
         StationTaskCommodity::query()
-            ->whereIn('id',data_get($stationTaskCommodities,'*.id'))
+            ->whereIn('id',data_get($stationTaskCommodity_orCollection,'*.id'))
             ->update(['status'=>'处理中']);
-
-        $this->stationTaskService
-            ->markProcessing_byId(
-                data_get($stationTaskCommodities, '*.station_id')
-            );
+    }
+    function markProcessed(Collection $stationTaskCommodities){
+        StationTaskCommodity::query()
+            ->whereIn('id',data_get($stationTaskCommodities,'*.id'))
+            ->update(['status'=>'完成']);
     }
 }

+ 35 - 20
app/Services/StationTaskMaterialBoxService.php

@@ -6,9 +6,11 @@ namespace App\Services;
 
 use App\Batch;
 use App\Exceptions\ErrorException;
+use App\Exceptions\Exception;
 use App\MaterialBox;
 use App\OrderCommodity;
 use App\StationTask;
+use App\StationTaskBatch;
 use App\StationTaskMaterialBox;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Cache;
@@ -75,16 +77,20 @@ class StationTaskMaterialBoxService
             $stationMaterialBoxes_toCreate->push([
                 'station_id'=>$station['id'],
                 'material_box_id'=>$materialBox['id'],
+                'station_task_batch_id'=>$batch['id'],
                 'status'=>'待处理'
             ]);
         }
         return $this->insert($stationMaterialBoxes_toCreate->toArray(),true);
     }
 
-    function get(array $kvPairs){
+    function get(array $kvPairs, $with=null){
         ksort($kvPairs);
-        return Cache::remember('StationTaskMaterialBox'.md5(json_encode($kvPairs)), config('cache.expirations.fastChange'), function ()use($kvPairs) {
+        return Cache::remember('StationTaskMaterialBox'.md5(json_encode($kvPairs).json_encode([$with])), config('cache.expirations.fastChange'), function ()use($kvPairs,$with) {
             $query = StationTaskMaterialBox::query();
+            if($with){
+                $query->with($with);
+            }
             foreach ($kvPairs as $column => $value){
                 if (is_array($value))$query->whereIn($column,$value);
                 else $query->where($column,$value);
@@ -94,14 +100,17 @@ class StationTaskMaterialBoxService
     }
 
 
-    function markHasPut(StationTaskMaterialBox $stationTaskMaterialBox){
+    function markHasTaken(StationTaskMaterialBox $stationTaskMaterialBox){
+        $this->instant($this->stationTaskBatchService,'StationTaskBatchService');
+        $this->instant($this->stationTaskCommodityService,'StationTaskCommodityService');
         try{
             $taskType=$this->getServingTaskType($stationTaskMaterialBox);
             switch ($taskType){
                 case '分波次':
                     $this->markProcessing($stationTaskMaterialBox);
-                    $this->stationTaskBatchService->markProcessing($stationTaskMaterialBox['stationTaskBatch']);
+                    $this->stationTaskBatchService->markProcessing_byIds($stationTaskMaterialBox['station_task_batch_id']);
                     $this->stationTaskCommodityService->markProcessing($stationTaskMaterialBox['stationTaskCommodities']);
+                    $this->stationTaskService->markProcessing_byIds(data_get($stationTaskMaterialBox['stationTaskCommodities'],'*.station_task_id'));
                     break;
                 case '入立库':
 
@@ -113,43 +122,48 @@ class StationTaskMaterialBoxService
         }
     }
 
-    function markTaken($stationTaskMaterialBox){
+    function markPutStored($stationTaskMaterialBox){
         //TODO: 标记 料箱位置(需要其字段存在)$stationTaskMaterialBox['materialBox']['position']
     }
     function markProcessed(StationTaskMaterialBox $stationTaskMaterialBox){
         $stationTaskMaterialBox['status'] = '完成';
         $stationTaskMaterialBox->save();
-        $this->stationService->broadcastBinMonitor($stationTaskMaterialBox['station_id'],$stationTaskMaterialBox['stationTask']);
     }
 
-    function markProcessing($stationTaskMaterialBox)
+    function markProcessing($stationTaskMaterialBox_orBoxes)
     {
-        if (get_class($stationTaskMaterialBox)==StationTaskMaterialBox::class){
-            $stationTaskMaterialBox = collect($stationTaskMaterialBox);
+        $this->instant($this->stationTaskService,'StationTaskService');
+        if (get_class($stationTaskMaterialBox_orBoxes)==StationTaskMaterialBox::class){
+            $stationTaskMaterialBox_orBoxes = collect([$stationTaskMaterialBox_orBoxes]);
         }
         StationTaskMaterialBox::query()
-            ->whereIn('id', data_get($stationTaskMaterialBox, '*.id'))
+            ->whereIn('id', data_get($stationTaskMaterialBox_orBoxes, '*.id'))
             ->update(['status'=>'处理中']);
         $this->stationTaskService
-            ->markProcessing_byId(
-                data_get($stationTaskMaterialBox, '*.station_id')
+            ->markProcessing_byIds(
+                data_get($stationTaskMaterialBox_orBoxes, '*.station_id')
             );
     }
 
-    function excepted($stationTaskMaterialBox_orBox){
-        switch (get_class($stationTaskMaterialBox_orBox)){
+    function excepted($stationTaskMaterialBoxes_orBox){
+        if (get_class($stationTaskMaterialBoxes_orBox)==StationTaskMaterialBox::class){
+            $stationTaskMaterialBoxes_orBox = collect([$stationTaskMaterialBoxes_orBox]);
+        }
+        StationTaskMaterialBox::query()->whereIn('id',data_get($stationTaskMaterialBoxes_orBox,'*.id'))
+            ->update(['status'=>'异常']);
+        switch (get_class($stationTaskMaterialBoxes_orBox)){
             case MaterialBox::class:
             case StationTaskMaterialBox::class:
-            throw new ErrorException('料箱异常'.json_encode($stationTaskMaterialBox_orBox->toJson()));
+            throw new ErrorException('料箱异常'.json_encode($stationTaskMaterialBoxes_orBox->toJson()));
         }
     }
 
     function getServingTaskType(StationTaskMaterialBox $stationTaskMaterialBox): string
     {
-        $stationTaskMaterialBox->loadMissing('station.stationType');
+        $stationTaskMaterialBox->load('station.stationType');
         if($isBatching=(
             $stationTaskMaterialBox['station_task_batch_id'] &&
-            $stationTaskMaterialBox['station']['stationType'] == '料箱监视器')
+            $stationTaskMaterialBox['station']['stationType']['name'] == '料箱监视器')
         ){
             return '分波次';
         }
@@ -159,9 +173,10 @@ class StationTaskMaterialBoxService
         ){
             return '入立库';
         }
-        if($isStoring=false){
-            return '入库';
-        }
+//        if($isStoring=false){
+//            return '入库';
+//        }
         throw new ErrorException('当前类型找不到');
+
     }
 }

+ 14 - 2
app/Services/StationTaskService.php

@@ -61,12 +61,24 @@ class StationTaskService
         $this->stationTaskChildService->insert($taskChildren_toInsert->toArray());
     }
 
-    function markProcessing_byId($stationTaskIds)
+    function markProcessing_byIds($ids)
     {
+        if(!$ids)$ids=[];
+        if(!is_array($ids))$ids=[$ids];
         StationTask::query()
-            ->whereIn('id',$stationTaskIds)
+            ->whereIn('id',$ids)
             ->update(['status'=>'处理中']);
     }
 
+    function markProcessing($stationTask_orCollection)
+    {
+        if (get_class($stationTask_orCollection)==StationTask::class){
+            $stationTask_orCollection = collect([$stationTask_orCollection]);
+        }
+        $this->markProcessing_byIds(
+                data_get($stationTask_orCollection, '*.station_id')
+            );
+    }
+
 
 }

+ 22 - 0
app/StationTaskBatch.php

@@ -4,6 +4,8 @@ namespace App;
 
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
+use Illuminate\Database\Eloquent\Relations\HasMany;
+use Illuminate\Database\Eloquent\Relations\HasManyThrough;
 use Illuminate\Database\Eloquent\Relations\HasOne;
 use Illuminate\Database\Eloquent\Relations\MorphOne;
 
@@ -28,4 +30,24 @@ class StationTaskBatch extends Model
     {   //波次
         return $this->belongsTo(Batch::class);
     }
+    function stationTaskCommodities(): HasMany
+    {
+        return $this->hasMany(StationTaskCommodity::class);
+    }
+    function stationTaskMaterialBoxes(): HasMany
+    {
+        return $this->hasMany(StationTaskMaterialBox::class);
+    }
+    function materialBoxes(): HasManyThrough
+    {
+        return $this->hasManyThrough(
+            MaterialBox::class,
+            StationTaskMaterialBox::class,
+            'station_task_batch_id',
+            'id',
+            'id',
+            'material_box_id',
+        );
+    }
+
 }

+ 5 - 5
app/StationTaskMaterialBox.php

@@ -4,8 +4,8 @@ namespace App;
 
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
+use Illuminate\Database\Eloquent\Relations\HasMany;
 use Illuminate\Database\Eloquent\Relations\HasOne;
-use Illuminate\Database\Eloquent\Relations\MorphOne;
 
 use App\Traits\ModelLogChanging;
 
@@ -21,7 +21,7 @@ class StationTaskMaterialBox extends Model
     }
     function station(): BelongsTo
     {
-        return $this->belongsTo(Station::class,"id","station_id");
+        return $this->belongsTo(Station::class);
     }
     function stationTaskBatch(): BelongsTo
     {
@@ -31,9 +31,9 @@ class StationTaskMaterialBox extends Model
     {
         return $this->belongsTo(StationTask::class);
     }
-    function stationTaskCommodities(): HasOne
+    function stationTaskCommodities(): HasMany
     {
-        return $this->hasOne(StationTaskCommodity::class,"station_task_batch_id","station_task_batch_id")
-        ->where('material_box_id',$this['material_box_id']);
+        return $this->hasMany(StationTaskCommodity::class,'station_task_batch_id','station_task_batch_id')
+            ->where('material_box_id',$this['material_box_id']);
     }
 }

+ 9 - 8
app/Traits/ServiceAppAop.php

@@ -17,19 +17,19 @@ trait ServiceAppAop
      * 实例化一个service的入口,为了测试方便做出来的,这样测试时可以代入假的柱件替换service的实现
      * 应当在一般性用app的地方换成本方法才可以做到使用柱件
      * @param $targetService
-     * @param $abstract
+     * @param $abstractClassName
      * @return Application|mixed|string
      */
-    public function instant(&$targetService, $abstract){
+    public function instant(&$targetService, $abstractClassName){
         if(!is_string($targetService)){
             if(empty($targetService))
-                $targetService=app($abstract);
+                $targetService=app($abstractClassName);
             return $targetService;
         }
-        if(!is_string($abstract)){
-            $this->$targetService=$abstract;
+        if(!is_string($abstractClassName)){
+            $this->$targetService=$abstractClassName;
         }else{
-            $this->$targetService=app($abstract);
+            $this->$targetService=app($abstractClassName);
         }
         return $targetService;
     }
@@ -85,9 +85,10 @@ trait ServiceAppAop
      */
     function insert(array $targetsArrays, $returnInserted=false, $createdAtOn=true,$updatedAtOn=true): ?Collection
     {
+        if($createdAtOn||$updatedAtOn)$now = now();
         foreach ($targetsArrays as &$target){
-            if($createdAtOn)$target['created_at']=now();
-            if($updatedAtOn)$target['updated_at']=now();
+            if($createdAtOn)$target['created_at']= $now;
+            if($updatedAtOn)$target['updated_at']= $now;
         }
         ($this->modelClass)::query()->insert($targetsArrays);
         LogService::log(__METHOD__, __FUNCTION__, json_encode($targetsArrays) .

+ 3 - 3
app/Traits/TestMockSubServices.php

@@ -60,16 +60,16 @@ trait TestMockSubServices{
         }
     }
 
-    function getTargetIdCirculately($targetArr, $additionMark='', $idName='id'){
+    function getTargetFieldCirculately($targetArr, $className='', $idName='id'){
         $amount = count($targetArr);
 
         $json_encode = json_encode($targetArr);
-        $iName = 'i_' . md5($json_encode . $additionMark);
+        $iName = 'i_' . md5($json_encode . $className);
         if(!isset($this->data[$iName])){
             $this->data[$iName]=$amount;
         }
         $this->data[$iName]++;
-        if($this->data[$iName]>=$this->batchAmount)
+        if($this->data[$iName]>=$amount)
             $this->data[$iName]=0;
         return $targetArr[$this->data[$iName]][$idName];
     }

+ 1 - 4
database/factories/StationTaskBatchFactory.php

@@ -8,9 +8,6 @@ use Faker\Generator as Faker;
 $factory->define(StationTaskBatch::class, function (Faker $faker) {
     $status = ['待处理','挂起','处理中','完成','异常','取消'];
     return [
-        'batch_id' => factory(\App\Batch::class),
-        'station_id' => factory(\App\Station::class),
-        'station_task_batch_type_id' => factory(\App\StationTaskBatchType::class),
-        "status"=>$status[array_rand($status)],
+        "status"=>'待处理',
     ];
 });

+ 1 - 1
database/factories/StationTaskCommodityFactory.php

@@ -14,6 +14,6 @@ $factory->define(StationTaskCommodity::class, function (Faker $faker) {
         'amount'=>rand(1,1000),
         "bin_number"=>rand(1,24),
         'order_id'=>factory(\App\Order::class),
-        "status"=>$status[array_rand($status)],
+        "status"=>'待处理',
     ];
 });

+ 1 - 3
public/t.php

@@ -1,5 +1,3 @@
 <?php
 
-$failed=!$success=true;
-
-var_dump($failed,$success);
+    xdebug_info();

+ 4 - 12
tests/Services/BatchService/AssignTasksTest.php

@@ -6,10 +6,7 @@ use App\Order;
 use App\OrderCommodity;
 use App\Services\BatchService;
 use App\Services\ForeignHaiRoboticsService;
-use App\Services\MaterialBoxService;
 use App\Services\StationTaskBatchService;
-use App\Services\StationTaskCommodityService;
-use App\Station;
 use App\StationRuleBatch;
 use App\StationTask;
 use App\StationTaskBatch;
@@ -59,17 +56,17 @@ class AssignTasksTest extends TestCase
             factory(Order::class)
                 ->createMany($this->makeArray($this->orderAmount,[
                     'status'=>'未处理',
-                    'batch_id' => function(){return $this->getTargetIdCirculately($this->data['batches']);}
+                    'batch_id' => function(){return $this->getTargetFieldCirculately($this->data['batches']);}
                 ]));
         $this->data['orderCommodities'] =
             factory(OrderCommodity::class)
                 ->createMany($this->makeArray($this->orderCommodityAmount,[
-                    'order_id' => function(){return $this->getTargetIdCirculately($this->data['orders']);}
+                    'order_id' => function(){return $this->getTargetFieldCirculately($this->data['orders']);}
                 ]));
         $this->data['station_rule_batches']
             = factory(StationRuleBatch::class)
             ->createMany($this->makeArray($this->batchAmount,[
-                'owner_id' => function(){return $this->getTargetIdCirculately($this->data['batches'],'','owner_id');}
+                'owner_id' => function(){return $this->getTargetFieldCirculately($this->data['batches'],'','owner_id');}
             ]));
 
     }
@@ -78,6 +75,7 @@ class AssignTasksTest extends TestCase
     {
         $this->service->assignTasks($this->data['batches']);
         ($波次任务指向了波次=function(){
+            $this->data['batches']->load('stationTaskBatch');
             $this->assertEquals(
                 data_get($this->data['batches'],'*.id'),
                 data_get($this->data['batches'],'*.stationTaskBatch.batch_id')
@@ -87,12 +85,6 @@ class AssignTasksTest extends TestCase
 
     function tearDown(): void
     {
-        $stationTaskBatchs=data_get($this->data['batches'],'*.stationTaskBatch');
-        foreach ($stationTaskBatchs as $stationTaskBatch){
-            $stationTaskBatch->loadMissing('stationTask.stationTaskCommodities');
-            $stationTaskBatch->loadMissing('stationTask.stationTaskMaterialBoxes.materialBox');
-        }
-
         MaterialBox::query()
             ->whereIn('id',data_get($this->data['batches'],'*.stationTaskBatch.stationTask.stationTaskMaterialBoxes.*.materialBox.id')??[])
             ->delete();

+ 169 - 0
tests/Services/ForeignHaiRoboticsService/MarkBinProcessedTest.php

@@ -0,0 +1,169 @@
+<?php
+
+namespace Tests\Services\ForeignHaiRoboticsService;
+
+use App\Batch;
+use App\MaterialBox;
+use App\Order;
+use App\OrderCommodity;
+use App\Services\BatchService;
+use App\Services\ForeignHaiRoboticsService;
+use App\Services\StationService;
+use App\Services\StationTaskBatchService;
+use App\Station;
+use App\StationRuleBatch;
+use App\StationTask;
+use App\StationTaskBatch;
+use App\StationTaskCommodity;
+use App\StationTaskMaterialBox;
+use Tests\TestCase;
+use App\Traits\TestMockSubServices;
+
+class MarkBinProcessedTest extends TestCase
+{
+    use TestMockSubServices;
+
+    /** @var ForeignHaiRoboticsService $service */
+    public $service;
+    private $data;
+    private $batchAmount = 1;
+    private $orderAmount = 2;
+    private $orderCommodityAmount = 4;
+
+    function setUp(): void
+    {
+        parent::setUp();
+        $this->service = $this->subMock([
+            'class' => ForeignHaiRoboticsService::class,
+            'methods' => [
+                'putBinToStore' => true,
+            ],
+            'subServices' => [
+                [
+                    'serviceName' => 'stationService',
+                    'class' => StationService::class,
+                    'methods' => [
+                        'broadcastBinMonitor' => true,
+                    ],
+                ],
+            ]
+        ]);
+        $this->data['batches']
+            = factory(Batch::class, $this->batchAmount)
+            ->create();
+        $this->data['station_task_batches']
+            = factory(StationTaskBatch::class)
+            ->createMany($this->makeArray($this->batchAmount, [
+                'batch_id' => function () {
+                    return $this->getTargetFieldCirculately($this->data['batches']);
+                }
+            ]));
+        $this->data['orders'] =
+            factory(Order::class)
+                ->createMany($this->makeArray($this->orderAmount, [
+                    'batch_id' => function () {
+                        return $this->getTargetFieldCirculately($this->data['batches']);
+                    }
+                ]));
+        $this->data['orderCommodities'] =
+            factory(OrderCommodity::class)
+                ->createMany($this->makeArray($this->orderCommodityAmount, [
+                    'order_id' => function () {
+                        return $this->getTargetFieldCirculately($this->data['orders']);
+                    }
+                ]));
+        $this->data['station_rule_batches']
+            = factory(StationRuleBatch::class)
+            ->createMany($this->makeArray($this->batchAmount, [
+                'owner_id' => function () {
+                    return $this->getTargetFieldCirculately($this->data['batches'], '', 'owner_id');
+                }
+            ]));
+        $this->data['material_boxes']
+            = factory(MaterialBox::class)
+            ->createMany($this->makeArray($this->orderCommodityAmount, [
+                'code' => function () {
+                    return $this->getTargetFieldCirculately($this->data['orderCommodities'], MaterialBox::class, 'location');
+                }
+            ]));
+        $this->data['station_task_material_boxes']
+            = factory(StationTaskMaterialBox::class)
+            ->createMany($this->makeArray($this->orderCommodityAmount, [
+                'status' => '处理中',
+                'material_box_id' => function () {
+                    return $this->getTargetFieldCirculately($this->data['material_boxes']);
+                },
+                'station_task_batch_id' => function () {
+                    return $this->getTargetFieldCirculately($this->data['station_task_batches']);
+                }
+            ]));
+        $this->data['stationTaskCommodities'] =
+            factory(StationTaskCommodity::class)
+                ->createMany($this->makeArray($this->orderCommodityAmount, [
+                    'status' => '处理中',
+                    'material_box_id' => function () {
+                        return $this->getTargetFieldCirculately($this->data['material_boxes']);
+                    },
+                    'station_task_batch_id' => function () {
+                        return $this->getTargetFieldCirculately($this->data['station_task_batches'],StationTaskCommodity::class);
+                    }
+                ]));
+    }
+
+    public function testReturned()
+    {
+        foreach ($this->data['material_boxes'] as $box) {
+            $this->service->markBinProcessed(
+                '',
+                $box['code'],
+                true,
+                '',
+                '',
+                true);
+        }
+        $this->assertEquals(
+            ['完成'],
+            array_unique(data_get(
+                StationTaskMaterialBox::query()->whereIn('id', data_get($this->data['station_task_material_boxes'], '*.id'))->get(),
+                '*.status'))
+        );
+        $this->assertEquals(
+            ['完成'],
+            array_unique(data_get(
+                StationTaskCommodity::query()->whereIn('id', data_get($this->data['stationTaskCommodities'], '*.id'))->get()
+                , '*.status'))
+        );
+    }
+
+    function tearDown(): void
+    {
+        MaterialBox::query()
+            ->whereIn('id', data_get($this->data['batches'], '*.stationTaskBatch.materialBoxes.*.id') ?? [])
+            ->delete();
+        StationTaskMaterialBox::query()
+            ->whereIn('id', data_get($this->data['batches'], '*.stationTaskBatch.stationTaskMaterialBoxes.*.id') ?? [])
+            ->delete();
+        StationTaskCommodity::query()
+            ->whereIn('id', data_get($this->data['batches'], '*.stationTaskBatch.stationTaskCommodities.*.id') ?? [])
+            ->delete();
+        StationTaskBatch::query()
+            ->whereIn('id', data_get($this->data['batches'], '*.stationTaskBatch.id') ?? [])
+            ->delete();
+        StationTask::query()
+            ->whereIn('id', data_get($this->data['batches'], '*.stationTaskBatch.stationTask.id') ?? [])
+            ->delete();
+        StationRuleBatch::query()
+            ->whereIn('id', data_get($this->data['station_rule_batches'], '*.id') ?? [])
+            ->delete();
+        OrderCommodity::query()
+            ->whereIn('id', data_get($this->data['orderCommodities'], '*.id') ?? [])
+            ->delete();
+        Order::query()
+            ->whereIn('id', data_get($this->data['orders'], '*.id') ?? [])
+            ->delete();
+        Batch::query()
+            ->whereIn('id', data_get($this->data['batches'], '*.id') ?? [])
+            ->delete();
+        parent::tearDown();
+    }
+}

+ 3 - 3
tests/Services/StationTaskCommodityService/CreateByBatchTest.php

@@ -37,18 +37,18 @@ class CreateByBatchTest extends TestCase
             factory(Order::class)
                 ->createMany($this->makeArray($this->orderAmount,[
                     'status'=>'未处理',
-                    'batch_id' => function(){return $this->getTargetIdCirculately($this->data['batches']);}
+                    'batch_id' => function(){return $this->getTargetFieldCirculately($this->data['batches']);}
                 ]));
         $this->data['orderBins'] =
             factory(OrderBin::class)
                 ->createMany($this->makeArray($this->orderAmount,[
-                    'order_id' => function(){return $this->getTargetIdCirculately($this->data['orders']);},
+                    'order_id' => function(){return $this->getTargetFieldCirculately($this->data['orders']);},
                     'number'=>$this->getIntegerIncreasely('orderBins_number'),
                 ]));
         $this->data['orderCommodities'] =
             factory(OrderCommodity::class)
                 ->createMany($this->makeArray($this->orderCommodityAmount,[
-                    'order_id' => function(){return $this->getTargetIdCirculately($this->data['orders']);},
+                    'order_id' => function(){return $this->getTargetFieldCirculately($this->data['orders']);},
                 ]));
     }
 

+ 2 - 2
tests/Services/StationTaskCommodityService/CreateByBatchesTest.php

@@ -40,12 +40,12 @@ class CreateByBatchesTest extends TestCase
             factory(Order::class)
                 ->createMany($this->makeArray($this->orderAmount,[
                     'status'=>'未处理',
-                    'batch_id' => function(){return $this->getTargetIdCirculately($this->data['batches']);}
+                    'batch_id' => function(){return $this->getTargetFieldCirculately($this->data['batches']);}
                 ]));
         $this->data['orderCommodities'] =
             factory(OrderCommodity::class)
                 ->createMany($this->makeArray($this->orderCommodityAmount,[
-                    'order_id' => function(){return $this->getTargetIdCirculately($this->data['orders']);}
+                    'order_id' => function(){return $this->getTargetFieldCirculately($this->data['orders']);}
                 ]));
     }
 

+ 3 - 3
tests/Services/StationTaskMaterialBoxService/CreateByBatchesTest.php

@@ -30,7 +30,7 @@ class CreateByBatchesTest extends TestCase
         $this->data['orders']
             = factory(Order::class)
             ->createMany($this->makeArray($this->orderAmount,[
-                'batch_id' => function(){return $this->getTargetIdCirculately($this->data['batches']);}
+                'batch_id' => function(){return $this->getTargetFieldCirculately($this->data['batches']);}
             ]));
         $this->data['materialBoxes']
             = factory(MaterialBox::class, $this->materialBoxAmount)
@@ -38,8 +38,8 @@ class CreateByBatchesTest extends TestCase
         $this->data['orderCommodities']
             = factory(OrderCommodity::class)
             ->createMany($this->makeArray($this->materialBoxAmount,[
-                'order_id' => function(){return $this->getTargetIdCirculately($this->data['orders']);},
-                'location' => function(){return $this->getTargetIdCirculately($this->data['materialBoxes'],'','code');},
+                'order_id' => function(){return $this->getTargetFieldCirculately($this->data['orders']);},
+                'location' => function(){return $this->getTargetFieldCirculately($this->data['materialBoxes'],'','code');},
             ]));
         $this->data['stationTask']
             = factory(StationTask::class, $this->batchAmount)

+ 10 - 2
tests/webApi/thirdPart/haiq/pickStation.http

@@ -5,11 +5,19 @@
 ## * 'ptr' and 'ptrp' create a POST request with a simple or parameter-like body;
 ## * 'mptr' and 'fptr' create a POST request to submit a form with a text or file field (multipart/form-data);
 
+#
+#POST https://was.baoshi56.com/api/thirdPart/haiq/pickStation/processed
+#Content-Type: application/json
+#
+#{"success":true}
+####
 
-POST https://was.baoshi56.com/api/thirdPart/haiq/pickStation/processed
+
+
+POST http://bswas/api/thirdPart/haiq/pickStation/processed
 Content-Type: application/json
 
-{"success":true}
+{"workStation": "", "binCode":"30d66d80-5ab2-3a67-bf46-2491a95d6ce1", "success": true, "created_at":"", "exception": "", "is_in_plan":true}
 ###
 
 

+ 1 - 1
tests/webApi/thirdPart/haiq/storage.http

@@ -39,7 +39,7 @@ Content-Type: application/json
 POST http://bswas/api/thirdPart/haiq/storage/taskUpdate
 Content-Type: application/json
 
-{"taskUpdate":"1","groupCode": "1","taskCode": "1","updateEventType": "1","status": "1","binCode": "1","kubotId": "1"}
+{"groupCode": "1097","taskCode":"1531","updateEventType": "0","status":"0","binCode": "b741f766-b035-3ab8-ad90-34b8837ce051","kubotId":"x","description": "dd"}
 ###
 
 POST http://bswas/api/thirdPart/haiq/storage/exception