Bläddra i källkod

下发的波次任务顺序和商品任务反转的问题

LD 5 år sedan
förälder
incheckning
d3b4f5ec3f

+ 2 - 1
app/Events/BroadcastToStation.php

@@ -9,6 +9,7 @@ class BroadcastToStation implements ShouldBroadcastNow
 {
     public $json;
     private $id;
+    const ALL_STATION=0;
     /**
      * Create a new event instance.
      *
@@ -18,7 +19,7 @@ class BroadcastToStation implements ShouldBroadcastNow
      */
     public function __construct(int $id, string $json)
     {
-        $this->id = $id;
+        $this->id = $id;// 0意味着通用站,所有站都需要收发的意思
         $this->json = $json;
     }
 

+ 8 - 1
app/Http/Controllers/StationController.php

@@ -71,7 +71,14 @@ class StationController extends Controller
             ]);
             $station->load("stationTypeBinMonitor");
         }
-//        dd(data_get($station['stationTasks_today'],'*.id'),data_get($station['stationTasks_today'],'*.status'));
+//        dd(
+//            data_get($station['stationTasks_today'],'*.id')
+//            ,data_get($station['stationTasks_today'],'*.stationTaskBatches.*.batch.code')
+//            ,data_get($station['stationTasks_today'],'*.stationTaskBatches.*.id')
+//            ,data_get($station['stationTasks_today'],'*.stationTaskBatches.*.batch.id')
+//            ,data_get(data_get($station['stationTasks_today'],'*.stationTaskCommodities')[7],'*.id')
+//            ,data_get(data_get($station['stationTasks_today'],'*.stationTaskCommodities')[9],'*.id')
+//        );
 //        $station=$station->toJson();
         return view('station.monitor.show',compact('station'));
     }

+ 7 - 8
app/Http/Controllers/TestController.php

@@ -1003,14 +1003,13 @@ class TestController extends Controller
 
     public function ld2()
     {
-        $m=MaterialBox::query()->first();
-        dump($m);
-        $m['status'] = '在缓存架';
-        dump($m['status']);
-        $m->update();
-        $m=MaterialBox::query()->first();
-        dump($m['status']);
-
+        $r=new \Illuminate\Support\Collection();
+        $sb = StationTaskBatch::query()->limit(3)->get();
+        dump(data_get($sb,'*.id'));
+        foreach ($sb as $s) {
+            $r->push($s);
+        }
+        dump(data_get($sb,'*.id'));
     }
     public function y111()
     {

+ 2 - 8
app/Services/BatchService.php

@@ -3,6 +3,7 @@
 namespace App\Services;
 
 use App\Batch;
+use App\Events\BroadcastToStation;
 use App\Exceptions\ErrorException;
 use App\Jobs\BatchTaskJob;
 use App\OracleActAllocationDetails;
@@ -64,7 +65,6 @@ class BatchService
     public function assignTasks($batches)
     {
         try{
-            LogService::log(__METHOD__,'assignTasks','波次任务分配1:'.json_encode($batches));
             $batches = collect($batches);
 
             $this->instant($this->stationTaskBatchService,'StationTaskBatchService');
@@ -76,9 +76,7 @@ class BatchService
             $stationTaskBatches=null;
             $batches_shouldProcess = $this->stationRuleBatchService->getBatches_shouldProcess($batches); //按规则过滤需要的波次
             if($batches_shouldProcess->isEmpty()) return;
-            LogService::log(__METHOD__,'assignTasks','波次任务分配2:'.json_encode($batches));
             $stationTaskMaterialBoxes_occupied = $this->stationTaskMaterialBoxService->getOccupied_byBatches($batches_shouldProcess); //按规则过滤需要的波次
-            LogService::log(__METHOD__,'assignTasks','波次任务分配2b:'.json_encode($batches));
             if($stationTaskMaterialBoxes_occupied->isNotEmpty()) {
                 foreach ($batches_shouldProcess as $batch){
                     Cache::tags(['波次防重叠'.$batch['id']])->flush();
@@ -89,17 +87,13 @@ class BatchService
             }
             DB::transaction(function ()use($batches,&$stationTaskBatches,&$batches_shouldProcess){
                 $stationTasks =  $this->stationTaskService->create($batches_shouldProcess->count()); //生成总任务
-                LogService::log(__METHOD__,'assignTasks','波次任务分配3:'.json_encode($batches));
                 $stationTaskBatches=$this->stationTaskBatchService->createByBatches($batches_shouldProcess,$stationTasks); //注册波次任务
-                LogService::log(__METHOD__,'assignTasks','波次任务分配4:'.json_encode($batches));
                 $stationTaskMaterialBoxes=$this->stationTaskMaterialBoxService->createByBatches($batches_shouldProcess,$stationTasks); //注册料箱任务
-                LogService::log(__METHOD__,'assignTasks','波次任务分配5:'.json_encode($stationTaskMaterialBoxes).json_encode($batches));
                 $stationTaskCommodities=$this->stationTaskCommodityService->createByBatches($batches_shouldProcess,$stationTasks); //注册商品任务
-                LogService::log(__METHOD__,'assignTasks','波次任务分配6:'.json_encode($batches));
             });
 
+//            broadcast(new BroadcastToStation(BroadcastToStation::ALL_STATION, $json));
 //            $ran=$this->stationTaskBatchService->runMany($stationTaskBatches);//执行波次任务
-            LogService::log(__METHOD__,'assignTasks','波次任务分配7:'.json_encode($batches));
         }catch(Exception $e){
             $batchesJson='';
             foreach ($batches as $batch){

+ 1 - 0
app/Services/StationTaskBatchService.php

@@ -75,6 +75,7 @@ class StationTaskBatchService
             }
         }
         $this->batchService->updateWhereIn('id', data_get($batches_handled, '*.id'), ['status' => '处理中']);
+        $stationTaskBatches_toCreate=$stationTaskBatches_toCreate->reverse();
         $this->insert($stationTaskBatches_toCreate->toArray());
 
         $stationTaskBatches_toCreate=$this->getAndAttachIds($stationTaskBatches_toCreate);

+ 3 - 3
app/Services/StationTaskCommodityService.php

@@ -51,17 +51,17 @@ class StationTaskCommodityService
     function createByBatches(Collection $batches,Collection $stationTasks_toAttach): Collection
     {
         $this->instant($this->stationTaskService,'StationTaskService');
-        $stationTaskCommodities_listByBatch=new Collection();
+        $stationTaskCommodities_lists_ByBatch=new Collection();
         $stationTaskCommodities=new Collection();
         foreach ($batches as $batch){
             $taskCommodities = $this->createByBatch($batch);
             $stationTaskCommodities= $stationTaskCommodities->merge($taskCommodities);
-            $stationTaskCommodities_listByBatch->push($taskCommodities);
+            $stationTaskCommodities_lists_ByBatch->push($taskCommodities);
         }
 //        $stationTaskCommodities=$this->getAndAttachIds($stationTaskCommodities);
         $this->stationTaskService->registerSubTasks(
             $stationTasks_toAttach,
-            $stationTaskCommodities_listByBatch);
+            $stationTaskCommodities_lists_ByBatch);
         return $stationTaskCommodities;
 
     }

+ 23 - 0
app/Services/StationTaskService.php

@@ -45,6 +45,29 @@ class StationTaskService
      * @param Collection $subTaskLists 二维数组,第一维是对应注册的任务
      */
     function registerSubTasks(Collection $tasks, iterable $subTaskLists)
+    {
+        $this->instant($this->stationTaskChildService,'StationTaskChildService');
+        $taskChildren_toInsert=collect();
+        foreach ($subTaskLists as $i=>$subTaskList){
+            foreach ($subTaskList as $subTask){
+                $subTaskId = $subTask['id'];
+                $subTaskClass = get_class($subTask);
+                $paramToInsert = [
+                    'station_task_id' => $tasks[$i]['id'],
+                    'station_taskable_type' => $subTaskClass,
+                    'station_taskable_id' => $subTaskId,
+                ];
+                $taskChild_existed=$this->stationTaskChildService->get($paramToInsert)->first();
+                if(!$taskChild_existed){
+                    $taskChildren_toInsert->push($paramToInsert);
+                    $subTask['station_task_id']=$tasks[$i]['id'];
+                    $subTask->save();
+                }
+            }
+        }
+        $this->stationTaskChildService->insert($taskChildren_toInsert->toArray());
+    }
+    function registerCommoditiesSubTasks(Collection $tasks, iterable $subTaskLists)
     {
         $this->instant($this->stationTaskChildService,'StationTaskChildService');
         $taskChildren_toInsert=collect();

+ 15 - 6
resources/views/station/monitor/show.blade.php

@@ -334,7 +334,8 @@
         $vue=new Vue({
             el:"#container",
             data:{
-                broadcastName : "{{config('database.redis.options.prefix').'station-'.$station->id}}",
+                taskBroadcastName : "{{config('database.redis.options.prefix').'station-'.$station->id}}",
+                allTaskBroadcastName : "{{config('database.redis.options.prefix').'station-0'}}",
                 channelName : ".App\\Events\\BroadcastToStation",
                 error:"",
                 station:{!! $station !!},
@@ -366,7 +367,9 @@
             },
             mounted() {
                 this._makeMenuHiding();
-                this._listenBroadcast();
+                initEcho();
+                this._listenTaskBroadcast();
+                this._listenAllTaskBroadcast();
             },
             methods:{
                 _makeMenuHiding(){
@@ -378,9 +381,16 @@
                         $('.navbar,.nav1,.nav2').hide();
                     });
                 },
-                _listenBroadcast(){
-                    initEcho();
-                    window.Echo.channel(this.broadcastName).listen(this.channelName,(msg)=> {
+                _listenTaskBroadcast(){
+                    window.Echo.channel(this.taskBroadcastName).listen(this.channelName,(msg)=> {
+                        // console.log((new Date()).toTimeString(),msg);
+                        let json = JSON.parse(msg.json);
+                        if(!json||json.length===0)return;
+                        this.task=json;
+                    });
+                },
+                _listenAllTaskBroadcast(){
+                    window.Echo.channel(this.allTaskBroadcastName).listen(this.channelName,(msg)=> {
                         console.log((new Date()).toTimeString(),msg);
                         let json = JSON.parse(msg.json);
                         if(!json||json.length===0)return;
@@ -466,7 +476,6 @@
                 },
                 taskCommodities(){
                     if(!this.task)return [];
-                    console.log('taskCommodities:',this.task['station_task_commodities'])
                     return this.task['station_task_commodities'];
                 },
                 taskCommoditiesListByBin(){

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

@@ -24,8 +24,8 @@ class AssignTasksTest extends TestCase
     /** @var BatchService $service */
     public $service;
     private $data;
-    private $batchAmount=2;
-    private $orderAmount=4;
+    private $batchAmount=3;
+    private $orderAmount=5;
     private $orderCommodityAmount=8;
     function setUp(): void
     {
@@ -82,8 +82,8 @@ class AssignTasksTest extends TestCase
         $this->service->assignTasks($this->data['batches']);
         ($波次任务指向了波次=function(){
             $this->data['batches']->load('stationTaskBatch');
-            dump(data_get($this->data['batches'],'*.id'),data_get($this->data['batches'],'*.stationTaskBatch.batch_id'));
-            dd(array_diff(data_get($this->data['batches'],'*.id'),data_get($this->data['batches'],'*.stationTaskBatch.batch_id')));
+//            dump(data_get($this->data['batches'],'*.id'),data_get($this->data['batches'],'*.stationTaskBatch.batch_id'));
+//            dd(array_diff(data_get($this->data['batches'],'*.id'),data_get($this->data['batches'],'*.stationTaskBatch.batch_id')));
             $this->assertEquals(
                 data_get($this->data['batches'],'*.id'),
                 data_get($this->data['batches'],'*.stationTaskBatch.batch_id')