From 32b4da424d646d1753f91208d12f22edceb75192 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期四, 30 十一月 2023 18:19:07 +0800
Subject: [PATCH] #盘点逻辑修改

---
 src/main/java/com/zy/asrs/controller/LiftController.java |  109 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 90 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/LiftController.java b/src/main/java/com/zy/asrs/controller/LiftController.java
index 0b5503b..9249c42 100644
--- a/src/main/java/com/zy/asrs/controller/LiftController.java
+++ b/src/main/java/com/zy/asrs/controller/LiftController.java
@@ -12,16 +12,20 @@
 import com.zy.asrs.entity.BasLift;
 import com.zy.asrs.service.BasLiftService;
 import com.zy.common.service.CommonService;
+import com.zy.common.utils.NyLiftUtils;
 import com.zy.common.utils.RedisUtil;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.LiftProtocolStatusType;
+import com.zy.core.enums.NyLiftTaskModelType;
+import com.zy.core.enums.RedisKeyType;
 import com.zy.core.enums.SlaveType;
 import com.zy.core.model.LiftSlave;
 import com.zy.core.model.Task;
 import com.zy.core.model.command.*;
 import com.zy.core.model.protocol.LiftProtocol;
+import com.zy.core.model.protocol.LiftStaProtocol;
 import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.LiftThread;
 import lombok.extern.slf4j.Slf4j;
@@ -110,6 +114,7 @@
             vo.setDistAddress(liftProtocol.getDistAddress());
             vo.setCompleteTaskNo(liftProtocol.getCompleteTaskNo());
             vo.setShuttleNo(liftProtocol.getShuttleNo().intValue());
+            vo.setToken(liftProtocol.getToken());//浠ょ墝
         }
         return R.ok().add(list);
     }
@@ -188,18 +193,80 @@
                     throw new CoolException("鎻愬崌鏈轰笉鍦ㄧ嚎");
                 }
 
-                LiftAssignCommand assignCommand = new LiftAssignCommand();
-                assignCommand.setLiftNo(liftSlave.getId().shortValue()); // 鎻愬崌鏈虹紪鍙�
-                assignCommand.setTaskNo((short) commonService.getWorkNo(3));//鑾峰彇浠诲姟鍙�
-                assignCommand.setTaskMode(param.getLiftTaskMode().shortValue());
-                assignCommand.setAuto(false);//鎵嬪姩妯″紡
-                assignCommand.setLev(param.getLev());//绉诲姩妤煎眰
+                if (param.getLiftTaskMode() == 1) {
+                    //鎻愬崌鏈哄崌闄嶆ゼ灞�
+                    int workNo = commonService.getWorkNo(3);//鑾峰彇浠诲姟鍙�
 
-                if (MessageQueue.offer(SlaveType.Lift, liftSlave.getId(), new Task(3, assignCommand))) {
-                    return R.ok();
+                    Integer startSta = null;
+                    Integer targetSta = null;
+                    for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) {
+                        if (liftStaProtocol.getLev() == liftProtocol.getLev().intValue()) {
+                            startSta = liftStaProtocol.getStaNo();
+                        }
+
+                        if (liftStaProtocol.getLev() == param.getLev()) {
+                            targetSta = liftStaProtocol.getStaNo();
+                        }
+                    }
+
+                    if (startSta == null || targetSta == null) {
+                        throw new CoolException("璧风偣鎴栫洰鏍囩偣涓嶅瓨鍦�");
+                    }
+
+                    //鑾峰彇鎻愬崌鏈哄懡浠�
+                    NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, startSta, targetSta, workNo);
+                    ArrayList<NyLiftCommand> commands = new ArrayList<>();
+                    commands.add(liftCommand);
+
+                    //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+                    LiftAssignCommand assignCommand = new LiftAssignCommand();
+                    assignCommand.setCommands(commands);
+                    assignCommand.setLiftNo(liftProtocol.getLiftNo());
+                    assignCommand.setTaskNo((short) workNo);
+                    assignCommand.setAuto(false);//鎵嬪姩妯″紡
+                    assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_CAR.id.shortValue());
+
+                    if (MessageQueue.offer(SlaveType.Lift, liftSlave.getId(), new Task(3, assignCommand))) {
+                        return R.ok();
+                    } else {
+                        throw new CoolException("鍛戒护涓嬪彂澶辫触");
+                    }
+                } else if (param.getLiftTaskMode() == 2) {
+                    //绉诲姩鎵樼洏
+                    int workNo = commonService.getWorkNo(3);//鑾峰彇浠诲姟鍙�
+
+//                    LiftStaProtocol sourceLiftSta = NyLiftUtils.getLiftStaByStaNo(param.getSourceStaNo());
+//                    LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(param.getStaNo());
+//                    if (sourceLiftSta == null || liftSta == null) {
+//                        throw new CoolException("婧愮珯鎴栫洰鏍囩珯涓嶅瓨鍦�");
+//                    }
+
+                    //鑾峰彇鎻愬崌鏈哄懡浠�
+                    NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, param.getSourceStaNo(), param.getStaNo(), workNo);
+                    ArrayList<NyLiftCommand> commands = new ArrayList<>();
+                    commands.add(liftCommand);
+
+                    //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔
+                    LiftAssignCommand assignCommand = new LiftAssignCommand();
+                    assignCommand.setCommands(commands);
+                    assignCommand.setLiftNo(liftProtocol.getLiftNo());
+                    assignCommand.setTaskNo((short) workNo);
+                    assignCommand.setAuto(false);//鎵嬪姩妯″紡
+                    assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue());
+
+                    if (MessageQueue.offer(SlaveType.Lift, liftSlave.getId(), new Task(3, assignCommand))) {
+                        return R.ok();
+                    } else {
+                        throw new CoolException("鍛戒护涓嬪彂澶辫触");
+                    }
+                } else if (param.getLiftTaskMode() == 0) {
+                    //鎻愬崌鏈哄浣�
+                    liftProtocol.setToken(0);
+                    liftProtocol.setProtocolStatusType(LiftProtocolStatusType.IDLE);
                 } else {
-                    throw new CoolException("鍛戒护涓嬪彂澶辫触");
+                    throw new CoolException("鏈煡鍛戒护");
                 }
+
             }
         }
         return R.error();
@@ -208,8 +275,9 @@
     @PostMapping("/detl/update")
     @ManagerAuth(memo = "淇敼鏁版嵁")
     public R liftUpdate(@RequestParam Integer liftNo,
-                            @RequestParam Short workNo,
-                            @RequestParam String pakMk){
+                        @RequestParam Short workNo,
+                        @RequestParam String pakMk,
+                        @RequestParam Integer token) {
         LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo);
         if (liftThread == null) {
             return R.error("plc宸叉帀绾�");
@@ -224,12 +292,15 @@
         if (pakMk != null) {
             liftProtocol.setPakMk(pakMk.equals("Y"));
         }
+        if (token != null) {
+            liftProtocol.setToken(token);
+        }
         return R.ok();
     }
 
     @RequestMapping(value = "/command/query")
     public R liftCommandQuery(@RequestParam("wrkNo") Integer wrkNo) {
-        Object o = redisUtil.get("lift_wrk_no_" + wrkNo);
+        Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo);
         if (o == null) {
             return R.error();
         }
@@ -241,13 +312,13 @@
     @RequestMapping(value = "/command/rollback")
     public R liftCommandRollback(@RequestParam("wrkNo") Integer wrkNo
             , @RequestParam("commandStep") Integer commandStep) {
-        Object o = redisUtil.get("lift_wrk_no_" + wrkNo);
+        Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo);
         if (o == null) {
             return R.error();
         }
         LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class);
         redisCommand.setCommandStep(commandStep);
-        redisUtil.set("lift_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand));
+        redisUtil.set(RedisKeyType.LIFT.key + wrkNo, JSON.toJSONString(redisCommand));
         return R.ok();
     }
 
@@ -256,7 +327,7 @@
     public R liftCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo
             , @RequestParam("commandStep") Integer commandStep
             , @RequestParam("complete") Integer complete) {
-        Object o = redisUtil.get("lift_wrk_no_" + wrkNo);
+        Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo);
         if (o == null) {
             return R.error();
         }
@@ -265,14 +336,14 @@
         List<NyLiftCommand> commands = assignCommand.getCommands();
         NyLiftCommand command = commands.get(commandStep);
         command.setComplete(complete != 0);
-        redisUtil.set("lift_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand));
+        redisUtil.set(RedisKeyType.LIFT.key + wrkNo, JSON.toJSONString(redisCommand));
         return R.ok();
     }
 
     //閲嶅惎浠诲姟(鍛戒护)
     @RequestMapping(value = "/command/restart")
     public R liftCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo) {
-        Object o = redisUtil.get("lift_wrk_no_" + wrkNo);
+        Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo);
         if (o == null) {
             return R.error();
         }
@@ -298,11 +369,11 @@
     //鍒犻櫎浠诲姟(鍛戒护)
     @RequestMapping(value = "/command/del")
     public R liftCommandDel(@RequestParam("wrkNo") Integer wrkNo) {
-        Object o = redisUtil.get("lift_wrk_no_" + wrkNo);
+        Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo);
         if (o == null) {
             return R.error();
         }
-        redisUtil.del("lift_wrk_no_" + wrkNo);
+        redisUtil.del(RedisKeyType.LIFT.key + wrkNo);
         return R.ok();
     }
 

--
Gitblit v1.9.1