Просмотр исходного кода

stationTask完成后对下一任务读取

LD 5 лет назад
Родитель
Сommit
2d6488f68f

+ 17 - 35
app/Services/StationService.php

@@ -17,6 +17,8 @@ class StationService
 {
     use ServiceAppAop;
     protected $modelClass=Station::class;
+    /** @var $stationTaskService StationTaskService */
+    protected $stationTaskService;
     /**
      * @param string $typeName
      * @return Station
@@ -57,45 +59,25 @@ class StationService
     }
 
     function broadcast($station_id, StationTask $stationTask){
-        broadcast(new BroadcastToStation($station_id,$stationTask->toJson()));
+        if($stationTask)
+            $json = $stationTask->toJson();
+        else
+            $json =[];
+        broadcast(new BroadcastToStation($station_id, $json));
     }
 
     function broadcastBinMonitor($station_id, ?StationTask $stationTask){
-        $stationTask->loadMissing([
-            "stationTaskCommodities.commodity.barcodes",
-            "stationTaskCommodities.materialBox",
-            "stationTaskBatches.batch",
-            "stationTaskMaterialBoxes.materialBox",
-        ]);
+        $this->instant($this->stationTaskService,'StationTaskService');
+        if($stationTask['status']=='完成')
+            $stationTask=$this->stationTaskService->getCurrent_shouldProcess_ByStationId($stationTask['station_id']);
+        if($stationTask)
+            $stationTask->loadMissing([
+                "stationTaskCommodities.commodity.barcodes",
+                "stationTaskCommodities.materialBox",
+                "stationTaskBatches.batch",
+                "stationTaskMaterialBoxes.materialBox",
+            ]);
         $this->broadcast($station_id, $stationTask);
-        //...
-        //$stationTask->stationTaskBatch
-        //$stationTask->stationTaskMaterialBox
-        //$stationTask->stationTaskCommodities   //'待处理',   '处理中' blue,'完成',green
-        //$batch= $stationTask->stationTaskBatch->batch
-        //$orders= $batch->....
-        //.....
-        //$json_data=['batch','stationCommodities','stationMaterialBin','$currentStationTaskCommodity']
-        //$this->broadcast($station_id, $json_data)
-    }
-
-    function broadcastBinChange($station_id, StationTask $stationTask, int $currentStationTaskCommodity_id){
-        //...
-        //$stationTask->stationTaskBatch
-        //$stationTask->stationTaskMaterialBox
-        //$stationTask->stationTaskCommodities   //'待处理',   '处理中' blue,'完成',green
-        //$batch= $stationTask->stationTaskBatch->batch
-        //$orders= $batch->....
-        //.....
-        //$json_data=['batch','stationCommodities','stationMaterialBin','$currentStationTaskCommodity']
-        //$this->broadcast($station_id, $json_data)
-    }
-
-    function broadcastBinMonitorWarning($warnText, $station_id, StationTask $stationTask){
-        //...
-        //...
-        //$json_data=['warn']
-        //$this->broadcast($station_id, $json_data)
     }
 
 }

+ 6 - 0
app/Services/StationTaskService.php

@@ -63,6 +63,12 @@ class StationTaskService
         $this->stationTaskChildService->insert($taskChildren_toInsert->toArray());
     }
 
+    function getCurrent_shouldProcess_ByStationId($station_id):?StationTask
+    {
+        $stationTask=$this->get(['id'=>$station_id,'status'=>['处理中','待处理','异常']]);
+        return $stationTask->sortBy('id')->first();
+    }
+
     function registerStations(Collection $tasks, array $station_ids)
     {
         $this->instant($this->stationService,'StationService');

+ 28 - 20
resources/views/station/monitor/show.blade.php

@@ -309,19 +309,22 @@
                     initEcho();
                     window.Echo.channel(this.broadcastName).listen(this.channelName,(msg)=> {
                         let json = JSON.parse(msg.json);
-                        console.log(json)
+                        if(!json||json.length===0)return;
                         this.station['current_station_task']=json;
                     });
                 },
             },
             computed:{
                 task(){
+                    if(!this.station['current_station_task'])return null;
                     return this.station['current_station_task'];
                 },
                 taskCommodities(){
+                    if(!this.task)return [];
                     return this.station['current_station_task']['station_task_commodities'];
                 },
                 taskCommoditiesListByBin(){
+                    if(!this.task)return [];
                     function reIndexByBin() {
                         this.taskCommoditiesListByBinVar = [];
                         this.taskCommoditiesListByBinVar.md5 = md5(JSON.stringify(this.station['current_station_task']['station_task_commodities']));
@@ -347,6 +350,7 @@
                     return this.taskCommoditiesListByBinVar;
                 },
                 taskCommoditiesListByWall(){
+                    if(!this.task)return [];
                     let columnLength=this.station.station_type_bin_monitor.bin_column_length,
                         rowLength=this.station.station_type_bin_monitor.bin_row_length,
                         wallAmount=this.station.station_type_bin_monitor.bin_wall_amount,
@@ -379,6 +383,7 @@
                     return walls
                 },
                 processedCommodities(){
+                    if(!this.task)return 0;
                     return this.task['station_task_commodities'].reduce(function (item, taskCommodity) {
                         if (typeof (item) === 'object' && item.status === '完成') {
                             return item.amount;
@@ -393,12 +398,14 @@
                     })
                 },
                 totalCommodities(){
+                    if(!this.task)return 0;
                     return this.task['station_task_commodities'].reduce(function(item,taskCommodity){
                         if(typeof(item)==='object')item=item.amount;
                         return item+taskCommodity.amount;
                     })
                 },
                 processingTaskMaterialBox(){
+                    if(!this.task)return [];
                     let taskMaterialBox=null;
                     this.task.station_task_material_boxes.some(function(taskMaterialBox_in){
                         if(taskMaterialBox_in.status==='处理中'){
@@ -407,15 +414,32 @@
                     });
                     return taskMaterialBox;
                 },
-                boxIndicator(){
-                    let gridAmount=this.processingTaskMaterialBox.material_box.grid_amount;
-                },
             },
             watch:{
                 'station':{
                     immediate:true,
                     deep:true,
                     handler:function(newStation){
+                        let grids={
+                            single:{status:'',},
+                            half:{
+                                left:{status:'',},
+                                right:{status:'',}
+                            },
+                            quarter:{
+                                left:{top:{status:'',},bottom:{status:'',},},
+                                right:{top:{status:'',},bottom:{status:'',},},
+                            },
+                            sixth:{
+                                left:{top:{status:'',},bottom:{status:'',},},
+                                mid:{top:{status:'',},bottom:{status:'',},},
+                                right:{top:{status:'',},bottom:{status:'',},},
+                            },
+                        };
+                        if(!newStation.current_station_task||newStation.current_station_task.length===0) {
+                            this.grids=grids;
+                            return;
+                        }
                         let gridsAmount=(function(){
                                 let taskMaterialBox=null;
                                 newStation.current_station_task.station_task_material_boxes.some(function(taskMaterialBox_in){
@@ -436,22 +460,6 @@
                             });
                             return positions;
                         })();
-                        let grids={
-                            single:{status:'',},
-                            half:{
-                                left:{status:'',},
-                                right:{status:'',}
-                            },
-                            quarter:{
-                                left:{top:{status:'',},bottom:{status:'',},},
-                                right:{top:{status:'',},bottom:{status:'',},},
-                            },
-                            sixth:{
-                                left:{top:{status:'',},bottom:{status:'',},},
-                                mid:{top:{status:'',},bottom:{status:'',},},
-                                right:{top:{status:'',},bottom:{status:'',},},
-                            },
-                        };
                         switch (gridsAmount){
                             case 1:
                                 if(positions.length>0){