From 7a3b50af32dce3c806a6e520043a714594f3acff Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 25 十月 2023 19:59:26 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/LiftController.java |   96 +++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 83 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/LiftController.java b/src/main/java/com/zy/asrs/controller/LiftController.java
index c7caa1f..50f8d46 100644
--- a/src/main/java/com/zy/asrs/controller/LiftController.java
+++ b/src/main/java/com/zy/asrs/controller/LiftController.java
@@ -12,16 +12,19 @@
 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.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 +113,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 +192,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 +274,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宸叉帀绾�");
@@ -223,6 +290,9 @@
         }
         if (pakMk != null) {
             liftProtocol.setPakMk(pakMk.equals("Y"));
+        }
+        if (token != null) {
+            liftProtocol.setToken(token);
         }
         return R.ok();
     }
@@ -262,8 +332,8 @@
         }
         LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class);
         LiftAssignCommand assignCommand = redisCommand.getAssignCommand();
-        List<LiftCommand> commands = assignCommand.getCommands();
-        LiftCommand command = commands.get(commandStep);
+        List<NyLiftCommand> commands = assignCommand.getCommands();
+        NyLiftCommand command = commands.get(commandStep);
         command.setComplete(complete != 0);
         redisUtil.set("lift_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand));
         return R.ok();

--
Gitblit v1.9.1