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 updateWhereIn($key,$values,$updateKeyValues){ Batch::query()->whereIn($key,$values)->update($updateKeyValues); } /** * 为波次附加任务,已附加的重复任务不影响 * @param Collection $batches * @throws Exception */ public function assignTasks(Collection $batches) { try{ $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'); $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); //注册波次任务 $stationTaskMaterialBoxes=$this->stationTaskMaterialBoxService->createByBatches($batches_shouldProcess,$stationTasks); //注册料箱任务 $stationTaskCommodities=$this->stationTaskCommodityService->createByBatches($batches_shouldProcess,$stationTasks); //注册商品任务 $ran=$this->stationTaskBatchService->runMany($stationTaskBatches);//执行波次任务 LogService::log('batchservice',__FUNCTION__,'8'.$ran->toJson()); }catch(Exception $e){ throw new ErrorException('注册任务失败: '.json_encode($batches). $e->getMessage()); } } public function getBatchByCodes($codes) { if(empty($codes))return collect(); if(count($codes) == 0)return collect(); return Batch::query()->whereIn('code',$codes)->get(); } }