From fb8419ef141e16b8ec8b1d9802fa0d5a46768794 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 20 九月 2023 08:24:21 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/LiftController.java |   89 ++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 80 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/LiftController.java b/src/main/java/com/zy/asrs/controller/LiftController.java
index 5af0336..a2199df 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;
@@ -189,18 +192,86 @@
                     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);//鑾峰彇浠诲姟鍙�
+
+                    Integer startSta = null;
+                    Integer targetSta = null;
+                    for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) {
+                        if (liftStaProtocol.getStaNo() == param.getSourceStaNo()) {
+                            startSta = liftStaProtocol.getStaNo();
+                        }
+
+                        if (liftStaProtocol.getLev() == param.getStaNo()) {
+                            targetSta = liftStaProtocol.getStaNo();
+                        }
+                    }
+
+                    if (startSta == null || targetSta == null) {
+                        throw new CoolException("璧风偣鎴栫洰鏍囩偣涓嶅瓨鍦�");
+                    }
+
+                    //鑾峰彇鎻愬崌鏈哄懡浠�
+                    NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.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_TRAY.id.shortValue());
+
+                    if (MessageQueue.offer(SlaveType.Lift, liftSlave.getId(), new Task(3, assignCommand))) {
+                        return R.ok();
+                    } else {
+                        throw new CoolException("鍛戒护涓嬪彂澶辫触");
+                    }
                 } else {
-                    throw new CoolException("鍛戒护涓嬪彂澶辫触");
+                    throw new CoolException("鏈煡鍛戒护");
                 }
+
             }
         }
         return R.error();

--
Gitblit v1.9.1