stationTaskBatchService=null; $this->stationRuleBatchService=null; $this->stationTaskMaterialBoxService=null; $this->stationTaskCommodityService=null; $this->stationTaskService=null; } public function get(array $params) {~ $query = Batch::query(); foreach ($params as $column=>$param){ if (is_array($param))$query->whereIn($column,$param); else $query->where($column,$param); } return $query->get(); } public function insert(array $insert) { $result = Batch::query()->insert($insert); if($result)$this->assignTasks($insert); return $result; } public function updateWhereIn($key,$values,$updateKeyValues){ Batch::query()->whereIn($key,$values)->update($updateKeyValues); } /** * 为波次附加任务,已附加的重复任务不影响 * @param Collection $batches * @throws Exception */ public function assignTasks(Collection $batches) { // $this->directTemp($batches); $this->stationTaskBatchService=app('StationTaskBatchService'); $this->stationRuleBatchService=app('StationRuleBatchService'); $this->stationTaskService=app('StationTaskService'); $this->stationTaskCommodityService=app('StationTaskCommodityService'); $this->stationTaskMaterialBoxService=app('StationTaskMaterialBoxService'); $batches_shouldProcess = $this->stationRuleBatchService->getBatches_shouldProcess($batches); //按规则过滤需要的波次 if($batches_shouldProcess->isEmpty()) return; $stationTasks = $this->stationTaskService->create($batches_shouldProcess->count()); //生成总任务 $stationTaskBatches=$this->stationTaskBatchService->createByBatches($batches_shouldProcess,$stationTasks); //注册波次任务 $this->stationTaskCommodityService->createByBatches($batches_shouldProcess,$stationTasks); //注册商品任务 $this->stationTaskMaterialBoxService->createByBatches($batches_shouldProcess,$stationTasks); //注册料箱任务 $this->stationTaskBatchService->runMany($stationTaskBatches);//执行波次任务 } public function directTemp($batches){ $ownerName=''; $batches=$batches->map(function(Batch $batch)use($ownerName){ $owner=Owner::query()->where('name',$ownerName)->get(); if(!$owner) return false; if($batch['owner_id']==$owner['id'])return $batch; return false; }); $bins=$batches->map(function (Batch $batch){ $batch->loadMissing('orders.orderCommodities'); foreach ($batch['orders'] as $order){ foreach ($order['orderCommodities'] as $orderCommodity){ return [ "taskCode" =>'testTask'.microtime(), "binCode" => $orderCommodity['location'], "toLocCode" => 'BIN-OUT1', ]; } } }); $json= [ "taskMode" =>2, "bins"=>$bins, "groupCode"=>'testGroup'.microtime(), "priority"=>10, "sequenceFlag"=>1, ]; $response = Http::post(config('api.haiq.storage.moveBin'),$json); LogService::log(__CLASS__,__METHOD__,$response->json()); } public function getBatchByCodes($codes) { if(empty($codes))return collect(); if(count($codes) == 0)return collect(); return Batch::query()->whereIn('code',$codes)->get(); } }