BatchService.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace App\Services;
  3. use App\Batch;
  4. use Exception;
  5. use App\Traits\ServiceAppAop;
  6. Class BatchService
  7. {
  8. use ServiceAppAop;
  9. /** @var StationTaskBatchService $stationTaskBatchService */
  10. private $stationTaskBatchService;
  11. /** @var StationRuleBatchService $stationRuleBatchService */
  12. private $stationRuleBatchService;
  13. /** @var StationTaskMaterialBoxService $stationTaskMaterialBoxService */
  14. private $stationTaskMaterialBoxService;
  15. /** @var StationTaskCommodityService $stationTaskCommodityService */
  16. private $stationTaskCommodityService;
  17. /** @var StationTaskService $stationTaskService */
  18. private $stationTaskService;
  19. public function __construct(){
  20. $this->stationTaskBatchService=null;
  21. $this->stationRuleBatchService=null;
  22. $this->stationTaskMaterialBoxService=null;
  23. $this->stationTaskCommodityService=null;
  24. $this->stationTaskService=null;
  25. }
  26. public function get(array $params)
  27. {
  28. $query = Batch::query();
  29. foreach ($params as $column=>$param){
  30. if (is_array($param))$query->whereIn($column,$param);
  31. else $query->where($column,$param);
  32. }
  33. return $query->get();
  34. }
  35. public function insert(array $insert): bool
  36. {
  37. $result = Batch::query()->insert($insert);
  38. // if($result)$this->assignTasks($insert);
  39. return $result;
  40. }
  41. public function updateWhereIn($key,$values,$updateKeyValues){
  42. Batch::query()->whereIn($key,$values)->update($updateKeyValues);
  43. }
  44. /**
  45. * 为波次附加任务,已附加的重复任务不影响
  46. * @param Batch[] $batches
  47. * @throws Exception
  48. */
  49. public function assignTasks(array $batches)
  50. {
  51. $this->instant($this->stationTaskBatchService,'StationTaskBatchService');
  52. $this->instant($this->stationRuleBatchService,'StationRuleBatchService');
  53. $this->instant($this->stationTaskService,'StationTaskService');
  54. $this->instant($this->stationTaskCommodityService,'StationTaskCommodityService');
  55. $this->instant($this->stationTaskMaterialBoxService,'StationTaskMaterialBoxService');
  56. $batches_canProcess = $this->stationRuleBatchService->getBatches_canProcess($batches); //按规则过滤需要的波次
  57. if($batches_canProcess->isEmpty()) return;
  58. $stationTasks = $this->stationTaskService->create($batches_canProcess->count()); //生成总任务
  59. $stationTaskBatches=$this->stationTaskBatchService->createByBatches($batches_canProcess,$stationTasks); //注册波次任务
  60. $this->stationTaskCommodityService->createByBatches($batches_canProcess,$stationTasks); //注册商品任务
  61. $this->stationTaskMaterialBoxService->createByBatches($batches_canProcess,$stationTasks); //注册料箱任务
  62. $this->stationTaskBatchService->runMany($stationTaskBatches);//执行波次任务
  63. }
  64. public function getBatchByCodes($codes)
  65. {
  66. if(empty($codes))return collect();
  67. if(count($codes) == 0)return collect();
  68. return Batch::query()->whereIn('code',$codes)->get();
  69. }
  70. }