Quellcode durchsuchen

多料箱fetchGroup

LD vor 4 Jahren
Ursprung
Commit
623c2f1064

+ 60 - 3
app/Services/ForeignHaiRoboticsService.php

@@ -90,10 +90,48 @@ class ForeignHaiRoboticsService
         ]];
     }
 
+
+
+    private function makeJson_move_multi(
+        Collection $taskMaterialBoxes,
+        string $modeName,
+        string $fromLocation='',
+        string $toLocations=null,
+        $groupId=''
+        , $priority=10
+        , $isSequenced=1
+    ): array
+    {
+        $timestampSuffix = microtime(true);
+        $taskMode=(function()use($modeName){
+            switch ($modeName){
+                case '输送线入立架': return 1;
+                case '立架出至输送线': return 2;
+                case '立架出至缓存架':
+                case '移动立架内位置': return 3;
+                case '缓存架入立架':return 6;
+                default: throw new \Exception('发至海柔的移料箱请求,模式不存在');
+            }
+        })();
+        $bins=$taskMaterialBoxes->map(function (StationTaskMaterialBox $taskMaterialBox,$i)use($timestampSuffix,$fromLocation,$toLocations){
+            return [
+                "taskCode"  =>$taskMaterialBox['id'].'_'.$timestampSuffix,
+                "binCode"   => $taskMaterialBox['materialBox']['code'],
+                "fromLocCode" => $fromLocation??'',
+                "toLocCode" => $toLocations[$i],
+            ];
+        });
+        return [[
+            "taskMode"  =>$taskMode,
+            "bins"=>$bins,
+            "groupCode"=>$groupId.'_'.$timestampSuffix,
+            "priority"=>$priority,
+            "sequenceFlag"=>$isSequenced,
+        ]];
+    }
+
     public function fetchGroup($toLocation, Collection $taskMaterialBoxes, $groupIdPrefix='',$mode='立架出至输送线'): bool
     {
-        LogService::log(__METHOD__,'runMany','波次任务分配6.r5f0:');
-        LogService::log(__METHOD__,'runMany','波次任务分配6.r5f1:'.json_encode($toLocation).json_encode($taskMaterialBoxes).json_encode($groupIdPrefix));
         $dataToPost=$this->makeJson_move(
             $taskMaterialBoxes,
             $mode,
@@ -101,7 +139,26 @@ class ForeignHaiRoboticsService
             $toLocation??'',
             $groupIdPrefix
         );
-        LogService::log(__METHOD__,'runMany','波次任务分配6.r5f2:'.json_encode($dataToPost));
+        return $this->controlHaiRobot($dataToPost,$taskMaterialBoxes,$mode);
+    }
+
+    /**
+     * @param Collection $toLocations   //库位和料箱任务一一对应,一个库位对应一个料箱
+     * @param Collection $taskMaterialBoxes
+     * @param string $groupIdPrefix
+     * @param string $mode
+     * @return bool
+     * @throws ErrorException
+     */
+    public function fetchGroup_multiLocation(Collection $toLocations, Collection $taskMaterialBoxes, $groupIdPrefix='',$mode='立架出至输送线'): bool
+    {
+        $dataToPost=$this->makeJson_move_multi(
+            $taskMaterialBoxes,
+            $mode,
+            '',
+            $toLocations,
+            $groupIdPrefix
+        );
         return $this->controlHaiRobot($dataToPost,$taskMaterialBoxes,$mode);
     }
 

+ 43 - 14
resources/views/station/monitor/show.blade.php

@@ -53,21 +53,21 @@
                                         </div>
                                     </div>
                                     <div class="col text-center">
-                                            <button class="btn btn-lg mt-4" @click="runTheTaskBatch()"
-                                                    :class="[
+                                        <button class="btn btn-lg mt-4" @click="runTheTaskBatch()"
+                                                :class="[
                                             (current_stationTaskBatch.runningStatus==='')?'btn-info':'',
                                             (current_stationTaskBatch.runningStatus==='请求中')?'btn-dark':'',
                                             (current_stationTaskBatch.runningStatus==='请求失败')?'btn-danger':'',
                                             (current_stationTaskBatch.runningStatus==='请求成功')?'btn-success':'',
                                             (current_stationTaskBatch.runningStatus==='请求异常')?'btn-danger':'',
                                          ]"
-                                            >
-                                                <span v-if="!current_stationTaskBatch.runningStatus">执行</span>
-                                                <span v-if="current_stationTaskBatch.runningStatus==='请求中'">请求中</span>
-                                                <span v-if="current_stationTaskBatch.runningStatus==='请求失败'">(失败)重新执行</span>
-                                                <span v-if="current_stationTaskBatch.runningStatus==='请求成功'">(请求成功)重新执行</span>
-                                                <span v-if="current_stationTaskBatch.runningStatus==='请求异常'">(请求异常)重新执行</span>
-                                            </button>
+                                        >
+                                            <span v-if="!current_stationTaskBatch.runningStatus">执行</span>
+                                            <span v-if="current_stationTaskBatch.runningStatus==='请求中'">请求中</span>
+                                            <span v-if="current_stationTaskBatch.runningStatus==='请求失败'">(失败)重新执行</span>
+                                            <span v-if="current_stationTaskBatch.runningStatus==='请求成功'">(请求成功)重新执行</span>
+                                            <span v-if="current_stationTaskBatch.runningStatus==='请求异常'">(请求异常)重新执行</span>
+                                        </button>
                                     </div>
                                 </div>
                                 <div class="text-center my-2" style="overflow-y: scroll;max-height:200px;">
@@ -383,18 +383,47 @@
                 },
                 _listenTaskBroadcast(){
                     window.Echo.channel(this.taskBroadcastName).listen(this.channelName,(msg)=> {
-                        // console.log((new Date()).toTimeString(),msg);
+                        console.log((new Date()).toTimeString(),msg);
                         let json = JSON.parse(msg.json);
                         if(!json||json.length===0)return;
-                        this.task=json;
+                        taskIn['station_task_batches'].forEach(function(station_task_batch){
+                            let taskOld=_this.stationTask_indexByBatch[station_task_batch['batch_id']];
+                            if(typeof(taskOld)==='undefined')return;
+                            for(let key in taskIn){
+                                if(taskIn.hasOwnProperty(key)){
+                                    if(taskOld[key].hasOwnProperty(key)){
+                                        taskOld[key]=taskIn[key]
+                                    }
+                                }
+                            }
+                        });
                     });
                 },
                 _listenAllTaskBroadcast(){
+                    let _this=this;
                     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;
-                        this.task=json;
+                        let stationTasksIn = JSON.parse(msg.json);
+                        if(!stationTasksIn||stationTasksIn.length===0)return;
+                        stationTasksIn.forEach(function(stationTaskIn){
+                            let stationTaskIn_toAdd=stationTaskIn;
+                            _this.stationTasks.forEach(function(stationTask){
+                                if(stationTask.id===stationTaskIn.id){
+                                    for(let key in stationTaskIn){
+                                        if(stationTaskIn.hasOwnProperty(key)){
+                                            if(stationTask[key].hasOwnProperty(key)){
+                                                stationTask[key]=stationTaskIn[key]
+                                            }
+                                        }
+                                    }
+                                    stationTaskIn_toAdd=null;
+                                }
+                            });
+                            if(stationTaskIn_toAdd){
+                                _this.station.station_tasks_today.push(stationTaskIn_toAdd);
+                            }
+                        })
+
                     });
                 },
                 selectBatch(stationTaskBatch){