From f375928943ad4b9fe6d8508e151971dcdc23e982 Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期一, 05 一月 2026 16:18:36 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java |  385 ++++++++++++++++++++++++++++--------------------------
 1 files changed, 198 insertions(+), 187 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java b/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java
index 9ac77c5..43f5039 100644
--- a/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java
@@ -6,26 +6,28 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
-import com.zy.asrs.entity.BasDualCrnp;
-import com.zy.asrs.entity.BasDualCrnpOpt;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.entity.DeviceDataLog;
+import com.zy.asrs.entity.*;
 import com.zy.asrs.service.BasDualCrnpOptService;
 import com.zy.asrs.service.BasDualCrnpService;
+import com.zy.asrs.service.WrkMastService;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.utils.RedisUtil;
 import com.zy.core.News;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
+import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.*;
 import com.zy.core.model.CommandResponse;
+import com.zy.core.model.StationObjModel;
 import com.zy.core.model.Task;
 import com.zy.core.model.command.DualCrnCommand;
 import com.zy.core.model.protocol.DualCrnProtocol;
+import com.zy.core.model.protocol.StationProtocol;
 import com.zy.core.network.DeviceConnectPool;
 import com.zy.core.network.ZyDualCrnConnectDriver;
 import com.zy.core.network.entity.ZyDualCrnStatusEntity;
 import com.zy.core.thread.DualCrnThread;
+import com.zy.core.thread.StationThread;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 
@@ -33,10 +35,7 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.TimeUnit;
+import java.util.Map;
 
 /**
  * 鍙屽伐浣嶅爢鍨涙満绾跨▼
@@ -50,11 +49,6 @@
     private ZyDualCrnConnectDriver zyDualCrnConnectDriver;
     private DualCrnProtocol crnProtocol;
     private int deviceLogCollectTime = 200;
-    private boolean resetFlag = false;
-    private volatile boolean closed = false;
-    private ScheduledExecutorService readExecutor;
-    private ScheduledExecutorService processExecutor;
-    private ScheduledExecutorService commandExecutor;
 
     public ZySiemensDualCrnThread(DeviceConfig deviceConfig, RedisUtil redisUtil) {
         this.deviceConfig = deviceConfig;
@@ -66,133 +60,163 @@
     public void run() {
         this.connect();
         this.initCrn();
-        readExecutor = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
-            @Override
-            public Thread newThread(Runnable r) {
-                Thread t = new Thread(r);
-                t.setName("DualCrnReader-" + deviceConfig.getDeviceNo());
-                t.setDaemon(true);
-                return t;
+
+        Thread readThread = new Thread(() -> {
+            while (true) {
+                try {
+                    deviceLogCollectTime = Utils.getDeviceLogCollectTime();
+                    readStatus();
+                    Thread.sleep(100);
+                } catch (Exception e) {
+                    log.error("DualCrnThread Fail", e);
+                }
             }
         });
-        readExecutor.scheduleAtFixedRate(() -> {
-            if (closed || Thread.currentThread().isInterrupted()) {
-                return;
-            }
-            try {
-                deviceLogCollectTime = Utils.getDeviceLogCollectTime();
-                readStatus();
-            } catch (Exception e) {
-                log.error("DualCrnThread Fail", e);
-            }
-        }, 0, 200, TimeUnit.MILLISECONDS);
+        readThread.start();
 
-        processExecutor = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
-            @Override
-            public Thread newThread(Runnable r) {
-                Thread t = new Thread(r);
-                t.setName("DualCrnWriter-" + deviceConfig.getDeviceNo());
-                t.setDaemon(true);
-                return t;
-            }
-        });
-        processExecutor.scheduleAtFixedRate(() -> {
-            if (closed || Thread.currentThread().isInterrupted()) {
-                return;
-            }
-            try {
-                int step = 1;
-                Task task = MessageQueue.poll(SlaveType.DualCrn, deviceConfig.getDeviceNo());
-                if (task != null) {
-                    step = task.getStep();
-                }
-
-                if (step == 2) {
-                    List<DualCrnCommand> commandList = (List<DualCrnCommand>) task.getData();
-                    DualCrnCommand command = commandList.get(0);
-
-                    HashMap<String, Object> map = new HashMap<>();
-                    map.put("commands", commandList);
-                    map.put("idx", 1);
-                    redisUtil.set(RedisKeyType.DUAL_CRN_COMMAND_.key + command.getTaskNo(), JSON.toJSONString(map, SerializerFeature.DisableCircularReferenceDetect), 60 * 60 * 24);
-                    sendCommand(command);
-                } else if (step == 3) {
-                    sendCommand((DualCrnCommand) task.getData());
-                }
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }, 0, 200, TimeUnit.MILLISECONDS);
-
-        commandExecutor = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
-            @Override
-            public Thread newThread(Runnable r) {
-                Thread t = new Thread(r);
-                t.setName("DualCrnCommand-" + deviceConfig.getDeviceNo());
-                t.setDaemon(true);
-                return t;
-            }
-        });
-        commandExecutor.scheduleAtFixedRate(() -> {
-            if (closed || Thread.currentThread().isInterrupted()) {
-                return;
-            }
-            try {
-                if(crnProtocol.getMode() != DualCrnModeType.AUTO.id) {
-                    return;
-                }
-
-                if(crnProtocol.getAlarm() != 0) {
-                    return;
-                }
-
-                //绛夊緟涓嬩竴涓换鍔�
-                Object wait = redisUtil.get(RedisKeyType.DUAL_CRN_PICK_WAIT_NEXT_TASK.key + crnProtocol.getCrnNo());
-                if (wait != null) {
-                    return;
-                }
-
-                if(crnProtocol.getTaskNo() > 0 && crnProtocol.getStatus() == DualCrnStatusType.IDLE.id) {
-                    Integer taskNo = crnProtocol.getTaskNo();
-                    Object commandObj = redisUtil.get(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo);
-                    if (commandObj == null) {
-                        News.error("鍙屽伐浣嶅爢鍨涙満锛屽伐浣�1绌洪棽绛夊緟涓嬪彂鍛戒护锛屼絾鏈壘鍒板懡浠ゃ�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crnProtocol.getCrnNo(), taskNo);
-                        return;
+        Thread processThread = new Thread(() -> {
+            while (true) {
+                try {
+                    int step = 1;
+                    Task task = MessageQueue.poll(SlaveType.DualCrn, deviceConfig.getDeviceNo());
+                    if (task != null) {
+                        step = task.getStep();
                     }
 
-                    JSONObject commandMap = JSON.parseObject(commandObj.toString());
-                    Integer idx = commandMap.getInteger("idx");
-                    List<DualCrnCommand> commandList = commandMap.getJSONArray("commands").toJavaList(DualCrnCommand.class);
-                    DualCrnCommand dualCommand = commandList.get(idx);
-                    idx++;
-                    commandMap.put("idx", idx);
-                    sendCommand(dualCommand);
-                    redisUtil.set(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo, commandMap.toJSONString(), 60 * 60 * 24);
-                }
+                    if (step == 2) {
+                        List<DualCrnCommand> commandList = (List<DualCrnCommand>) task.getData();
+                        DualCrnCommand command = commandList.get(0);
 
-                if(crnProtocol.getTaskNoTwo() > 0 && crnProtocol.getStatusTwo() == DualCrnStatusType.IDLE.id) {
-                    Integer taskNo = crnProtocol.getTaskNoTwo();
-                    Object commandObj = redisUtil.get(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo);
-                    if (commandObj == null) {
-                        News.error("鍙屽伐浣嶅爢鍨涙満锛屽伐浣�2绌洪棽绛夊緟涓嬪彂鍛戒护锛屼絾鏈壘鍒板懡浠ゃ�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crnProtocol.getCrnNo(), taskNo);
-                        return;
+                        HashMap<String, Object> map = new HashMap<>();
+                        map.put("commands", commandList);
+                        map.put("idx", 1);
+                        redisUtil.set(RedisKeyType.DUAL_CRN_COMMAND_.key + command.getTaskNo(), JSON.toJSONString(map, SerializerFeature.DisableCircularReferenceDetect), 60 * 60 * 24);
+                        sendCommand(command);
+                    } else if (step == 3) {
+                        sendCommand((DualCrnCommand) task.getData());
                     }
 
-                    JSONObject commandMap = JSON.parseObject(commandObj.toString());
-                    Integer idx = commandMap.getInteger("idx");
-                    List<DualCrnCommand> commandList = commandMap.getJSONArray("commands").toJavaList(DualCrnCommand.class);
-                    DualCrnCommand dualCommand = commandList.get(idx);
-                    idx++;
-                    commandMap.put("idx", idx);
-                    sendCommand(dualCommand);
-                    redisUtil.set(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo, commandMap.toJSONString(), 60 * 60 * 24);
+                    Thread.sleep(100);
+                } catch (Exception e) {
+                    log.error("DualCrnProcess Fail", e);
                 }
-
-            } catch (Exception e) {
-                e.printStackTrace();
-                log.error("DualCrnCommandThread Fail", e);
             }
-        }, 0, 200, TimeUnit.MILLISECONDS);
+        });
+        processThread.start();
+
+        Thread commandThread = new Thread(() -> {
+            while (true) {
+                try {
+                    if(crnProtocol.getMode() != DualCrnModeType.AUTO.id) {
+                        continue;
+                    }
+
+                    if(crnProtocol.getAlarm() != 0) {
+                        continue;
+                    }
+
+                    if (crnProtocol.getLoaded() == 1 && crnProtocol.getLoadedTwo() == 1) {
+                        Object wait = redisUtil.get(RedisKeyType.DUAL_CRN_PICK_WAIT_NEXT_TASK.key + crnProtocol.getCrnNo());
+                        if (wait != null) {
+                            redisUtil.del(RedisKeyType.DUAL_CRN_PICK_WAIT_NEXT_TASK.key + crnProtocol.getCrnNo());
+                        }
+                    }
+
+                    if(crnProtocol.getTaskNo() > 0 && crnProtocol.getStatus() == DualCrnStatusType.IDLE.id) {
+                        Integer taskNo = crnProtocol.getTaskNo();
+                        Object commandObj = redisUtil.get(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo);
+                        if (commandObj == null) {
+                            News.error("鍙屽伐浣嶅爢鍨涙満锛屽伐浣�1绌洪棽绛夊緟涓嬪彂鍛戒护锛屼絾鏈壘鍒板懡浠ゃ�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crnProtocol.getCrnNo(), taskNo);
+                            continue;
+                        }
+
+                        JSONObject commandMap = JSON.parseObject(commandObj.toString());
+                        Integer idx = commandMap.getInteger("idx");
+                        List<DualCrnCommand> commandList = commandMap.getJSONArray("commands").toJavaList(DualCrnCommand.class);
+                        if (idx >= commandList.size()) {
+                            continue;
+                        }
+                        DualCrnCommand dualCommand = commandList.get(idx);
+
+                        if (dualCommand.getTaskMode() == DualCrnTaskModeType.PUT.id.shortValue()) {
+                            //绛夊緟涓嬩竴涓换鍔�
+                            Object wait = redisUtil.get(RedisKeyType.DUAL_CRN_PICK_WAIT_NEXT_TASK.key + crnProtocol.getCrnNo());
+                            if (wait != null) {
+                                continue;
+                            }
+
+                            Object outTaskStationInfoObj = redisUtil.get(RedisKeyType.DUAL_CRN_OUT_TASK_STATION_INFO.key + taskNo);
+                            if (outTaskStationInfoObj != null) {
+                                //妫�娴嬪嚭鍙g珯鏄惁鍙墽琛屾斁璐у姩浣�
+                                StationObjModel stationObjModel = JSON.parseObject(outTaskStationInfoObj.toString(), StationObjModel.class);
+                                StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, stationObjModel.getDeviceNo());
+                                if (stationThread == null) {
+                                    continue;
+                                }
+
+                                Map<Integer, StationProtocol> statusMap = stationThread.getStatusMap();
+                                StationProtocol stationProtocol = statusMap.get(stationObjModel.getStationId());
+                                if (stationProtocol == null) {
+                                    continue;
+                                }
+
+                                if (!stationProtocol.isAutoing()) {
+                                    continue;
+                                }
+
+                                if (stationProtocol.isLoading()) {
+                                    continue;
+                                }
+
+                                if (stationProtocol.getTaskNo() > 0) {
+                                    continue;
+                                }
+                            }
+                        }
+
+                        idx++;
+                        commandMap.put("idx", idx);
+                        sendCommand(dualCommand);
+                        redisUtil.set(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo, commandMap.toJSONString(), 60 * 60 * 24);
+                    }
+
+                    if(crnProtocol.getTaskNoTwo() > 0 && crnProtocol.getStatusTwo() == DualCrnStatusType.IDLE.id) {
+                        Integer taskNo = crnProtocol.getTaskNoTwo();
+                        Object commandObj = redisUtil.get(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo);
+                        if (commandObj == null) {
+                            News.error("鍙屽伐浣嶅爢鍨涙満锛屽伐浣�2绌洪棽绛夊緟涓嬪彂鍛戒护锛屼絾鏈壘鍒板懡浠ゃ�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crnProtocol.getCrnNo(), taskNo);
+                            continue;
+                        }
+
+                        JSONObject commandMap = JSON.parseObject(commandObj.toString());
+                        Integer idx = commandMap.getInteger("idx");
+                        List<DualCrnCommand> commandList = commandMap.getJSONArray("commands").toJavaList(DualCrnCommand.class);
+                        if (idx >= commandList.size()) {
+                            continue;
+                        }
+                        DualCrnCommand dualCommand = commandList.get(idx);
+
+                        if (dualCommand.getTaskMode() == DualCrnTaskModeType.PUT.id.shortValue()) {
+                            //绛夊緟涓嬩竴涓换鍔�
+                            Object wait = redisUtil.get(RedisKeyType.DUAL_CRN_PICK_WAIT_NEXT_TASK.key + crnProtocol.getCrnNo());
+                            if (wait != null) {
+                                continue;
+                            }
+                        }
+
+                        idx++;
+                        commandMap.put("idx", idx);
+                        sendCommand(dualCommand);
+                        redisUtil.set(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo, commandMap.toJSONString(), 60 * 60 * 24);
+                    }
+
+                    Thread.sleep(100);
+                } catch (Exception e) {
+                    log.error("DualCrnCommand Fail", e);
+                }
+            }
+        });
+        commandThread.start();
     }
 
     /**
@@ -257,25 +281,21 @@
         //宸ヤ綅1
         crnProtocol.setTaskNo(crnStatus.getTaskNo());
         crnProtocol.setStatus(crnStatus.getStatus());
-        crnProtocol.setBay(crnStatus.getBay());
-        crnProtocol.setLevel(crnStatus.getLevel());
         crnProtocol.setForkPos(crnStatus.getForkPos());
         crnProtocol.setLoaded(crnStatus.getLoaded());
-        crnProtocol.setWalkPos(crnStatus.getWalkPos());
-        crnProtocol.setLiftPos(crnStatus.getLiftPos());
         crnProtocol.setTaskReceive(crnStatus.getTaskReceive());
 
         //宸ヤ綅2
         crnProtocol.setTaskNoTwo(crnStatus.getTaskNoTwo());
         crnProtocol.setStatusTwo(crnStatus.getStatusTwo());
-        crnProtocol.setBayTwo(crnStatus.getBayTwo());
-        crnProtocol.setLevelTwo(crnStatus.getLevelTwo());
         crnProtocol.setForkPosTwo(crnStatus.getForkPosTwo());
         crnProtocol.setLoadedTwo(crnStatus.getLoadedTwo());
-        crnProtocol.setWalkPosTwo(crnStatus.getWalkPosTwo());
-        crnProtocol.setLiftPosTwo(crnStatus.getLiftPosTwo());
         crnProtocol.setTaskReceiveTwo(crnStatus.getTaskReceiveTwo());
 
+        crnProtocol.setBay(crnStatus.getBay());
+        crnProtocol.setLevel(crnStatus.getLevel());
+        crnProtocol.setWalkPos(crnStatus.getWalkPos());
+        crnProtocol.setLiftPos(crnStatus.getLiftPos());
         crnProtocol.setAlarm(crnStatus.getAlarm());
         crnProtocol.setTemp1(crnStatus.getTemp1());
         crnProtocol.setTemp2(crnStatus.getTemp2());
@@ -337,15 +357,6 @@
 
     @Override
     public void close() {
-        closed = true;
-        ScheduledExecutorService ex = readExecutor;
-        if (ex != null) {
-            try { ex.shutdownNow(); } catch (Exception ignore) {}
-        }
-        ScheduledExecutorService px = processExecutor;
-        if (px != null) {
-            try { px.shutdownNow(); } catch (Exception ignore) {}
-        }
         if (zyDualCrnConnectDriver != null) {
             zyDualCrnConnectDriver.close();
         }
@@ -360,16 +371,16 @@
     public DualCrnCommand getPickAndPutCommand(String sourceLocNo, String targetLocNo, Integer taskNo, Integer crnNo, Integer station) {
         DualCrnCommand crnCommand = new DualCrnCommand();
         crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
-        crnCommand.setTaskNo(taskNo.shortValue()); // 宸ヤ綔鍙�
-        crnCommand.setTaskMode(DualCrnTaskModeType.TRANSFER.id.shortValue()); // 浠诲姟妯″紡:  鍙栨斁璐�
-        crnCommand.setSourcePosX((short) Utils.getRow(sourceLocNo));     // 婧愬簱浣嶆帓
-        crnCommand.setSourcePosY((short) Utils.getBay(sourceLocNo));     // 婧愬簱浣嶅垪
-        crnCommand.setSourcePosZ((short) Utils.getLev(sourceLocNo));     // 婧愬簱浣嶅眰
-        crnCommand.setDestinationPosX((short) Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
-        crnCommand.setDestinationPosY((short) Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
-        crnCommand.setDestinationPosZ((short) Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
-        crnCommand.setStation(station.shortValue());//宸ヤ綅
-        crnCommand.setCommand((short) 1);     // 浠诲姟纭
+        crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
+        crnCommand.setTaskMode(DualCrnTaskModeType.TRANSFER.id); // 浠诲姟妯″紡:  鍙栨斁璐�
+        crnCommand.setSourcePosX(Utils.getRow(sourceLocNo));     // 婧愬簱浣嶆帓
+        crnCommand.setSourcePosY(Utils.getBay(sourceLocNo));     // 婧愬簱浣嶅垪
+        crnCommand.setSourcePosZ(Utils.getLev(sourceLocNo));     // 婧愬簱浣嶅眰
+        crnCommand.setDestinationPosX(Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
+        crnCommand.setDestinationPosY(Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
+        crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
+        crnCommand.setStation(station);//宸ヤ綅
+        crnCommand.setCommand(1);     // 浠诲姟纭
         return crnCommand;
     }
 
@@ -377,13 +388,13 @@
     public DualCrnCommand getPickCommand(String targetLocNo, Integer taskNo, Integer crnNo, Integer station) {
         DualCrnCommand crnCommand = new DualCrnCommand();
         crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
-        crnCommand.setTaskNo(taskNo.shortValue()); // 宸ヤ綔鍙�
-        crnCommand.setTaskMode(DualCrnTaskModeType.PICK.id.shortValue()); // 浠诲姟妯″紡:  鍙栬揣
-        crnCommand.setDestinationPosX((short) Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
-        crnCommand.setDestinationPosY((short) Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
-        crnCommand.setDestinationPosZ((short) Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
-        crnCommand.setStation(station.shortValue());//宸ヤ綅
-        crnCommand.setCommand((short) 1);     // 浠诲姟纭
+        crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
+        crnCommand.setTaskMode(DualCrnTaskModeType.PICK.id); // 浠诲姟妯″紡:  鍙栬揣
+        crnCommand.setDestinationPosX(Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
+        crnCommand.setDestinationPosY(Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
+        crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
+        crnCommand.setStation(station);//宸ヤ綅
+        crnCommand.setCommand(1);     // 浠诲姟纭
         return crnCommand;
     }
 
@@ -391,13 +402,13 @@
     public DualCrnCommand getPutCommand(String targetLocNo, Integer taskNo, Integer crnNo, Integer station) {
         DualCrnCommand crnCommand = new DualCrnCommand();
         crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
-        crnCommand.setTaskNo(taskNo.shortValue()); // 宸ヤ綔鍙�
-        crnCommand.setTaskMode(DualCrnTaskModeType.PUT.id.shortValue()); // 浠诲姟妯″紡:  鏀捐揣
-        crnCommand.setDestinationPosX((short) Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
-        crnCommand.setDestinationPosY((short) Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
-        crnCommand.setDestinationPosZ((short) Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
-        crnCommand.setStation(station.shortValue());//宸ヤ綅
-        crnCommand.setCommand((short) 1);     // 浠诲姟纭
+        crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
+        crnCommand.setTaskMode(DualCrnTaskModeType.PUT.id); // 浠诲姟妯″紡:  鏀捐揣
+        crnCommand.setDestinationPosX(Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
+        crnCommand.setDestinationPosY(Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
+        crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
+        crnCommand.setStation(station);//宸ヤ綅
+        crnCommand.setCommand(1);     // 浠诲姟纭
         return crnCommand;
     }
 
@@ -405,12 +416,12 @@
     public DualCrnCommand getMoveCommand(String targetLocNo, Integer taskNo, Integer crnNo) {
         DualCrnCommand crnCommand = new DualCrnCommand();
         crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
-        crnCommand.setTaskNo(taskNo.shortValue()); // 宸ヤ綔鍙�
-        crnCommand.setTaskMode(DualCrnTaskModeType.MOVE.id.shortValue()); // 浠诲姟妯″紡:  鍫嗗灈鏈虹Щ鍔�
-        crnCommand.setDestinationPosX((short) Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
-        crnCommand.setDestinationPosY((short) Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
-        crnCommand.setDestinationPosZ((short) Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
-        crnCommand.setCommand((short) 1);     // 浠诲姟纭
+        crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
+        crnCommand.setTaskMode(DualCrnTaskModeType.MOVE.id); // 浠诲姟妯″紡:  鍫嗗灈鏈虹Щ鍔�
+        crnCommand.setDestinationPosX(Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
+        crnCommand.setDestinationPosY(Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
+        crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
+        crnCommand.setCommand(1);     // 浠诲姟纭
         return crnCommand;
     }
 
@@ -418,16 +429,16 @@
     public DualCrnCommand getResetCommand(Integer crnNo, Integer station) {
         DualCrnCommand crnCommand = new DualCrnCommand();
         crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
-        crnCommand.setTaskNo((short) 0); // 宸ヤ綔鍙�
-        crnCommand.setTaskMode(DualCrnTaskModeType.CONFIRM.id.shortValue()); // 浠诲姟妯″紡:  纭
-        crnCommand.setSourcePosX((short)0);     // 婧愬簱浣嶆帓
-        crnCommand.setSourcePosY((short)0);     // 婧愬簱浣嶅垪
-        crnCommand.setSourcePosZ((short)0);     // 婧愬簱浣嶅眰
-        crnCommand.setDestinationPosX((short)0);     // 鐩爣搴撲綅鎺�
-        crnCommand.setDestinationPosY((short)0);     // 鐩爣搴撲綅鍒�
-        crnCommand.setDestinationPosZ((short)0);     // 鐩爣搴撲綅灞�
-        crnCommand.setStation(station.shortValue());//宸ヤ綅
-        crnCommand.setCommand((short) 1);     // 浠诲姟纭
+        crnCommand.setTaskNo(0); // 宸ヤ綔鍙�
+        crnCommand.setTaskMode(DualCrnTaskModeType.CONFIRM.id); // 浠诲姟妯″紡:  纭
+        crnCommand.setSourcePosX(0);     // 婧愬簱浣嶆帓
+        crnCommand.setSourcePosY(0);     // 婧愬簱浣嶅垪
+        crnCommand.setSourcePosZ(0);     // 婧愬簱浣嶅眰
+        crnCommand.setDestinationPosX(0);     // 鐩爣搴撲綅鎺�
+        crnCommand.setDestinationPosY(0);     // 鐩爣搴撲綅鍒�
+        crnCommand.setDestinationPosZ(0);     // 鐩爣搴撲綅灞�
+        crnCommand.setStation(station);//宸ヤ綅
+        crnCommand.setCommand(1);     // 浠诲姟纭
         return crnCommand;
     }
 

--
Gitblit v1.9.1