From e36c42fa6e1d5c6ee8f1ac15b1be4a825a257807 Mon Sep 17 00:00:00 2001
From: cpT <1@123>
Date: 星期五, 27 六月 2025 13:34:47 +0800
Subject: [PATCH] #改造

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java      |   19 +++++++++
 src/main/java/com/zy/asrs/mapper/TaskWrkMapper.java         |    4 +
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   47 +++++++++++++++++++++++
 src/main/java/com/zy/core/MainProcess.java                  |    8 +++-
 src/main/resources/mapper/TaskWrkMapper.xml                 |    6 +++
 5 files changed, 81 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/TaskWrkMapper.java b/src/main/java/com/zy/asrs/mapper/TaskWrkMapper.java
index ea133a8..dcc15b9 100644
--- a/src/main/java/com/zy/asrs/mapper/TaskWrkMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/TaskWrkMapper.java
@@ -19,6 +19,8 @@
 
     TaskWrk selectByWrkNo(Integer wrkNo);
 
+    List<TaskWrk> selectByLaneNo(Integer laneNo);
+
     List<TaskWrk> selectReceive();//鑾峰彇鎺ユ敹浠诲姟
 
     TaskWrk selectPakIn(@Param("crnNo") Integer crnNo, @Param("workNo") Integer workNo, @Param("startPoint") String startPoint);
@@ -35,7 +37,7 @@
 
     TaskWrk selectCrnNoInWorking(@Param("crnNo") Integer crnNo,@Param("workNo") Integer workNo);
 
-    TaskWrk selectWalkSta(@Param("crnNo") Integer crnNo,@Param("workNo") Integer workNo);
+//    TaskWrk selectWalkSta(@Param("crnNo") Integer crnNo,@Param("workNo") Integer workNo);
 
     List<TaskWrk> selectToBeHistoryData();
 
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 438cf44..d258772 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -102,6 +102,8 @@
 
     @Value("${constant-parameters.avoidDistance}")
     private Long avoidDistance;
+    @Autowired
+    private TaskWrkLogServiceImpl taskWrkLogService;
 
     public void generateStoreWrkFile() {
         try {
@@ -701,6 +703,51 @@
     }
 
     /**
+     * 鍫嗗灈鏈�5鍒嗛挓鏃犱换鍔″垯鍥炲埌婧愮偣
+     */
+    public void crnStnToOutStnSou() {
+        for (CrnSlave crn : slaveProperties.getCrn()) {
+            try{
+                // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+                if (crnProtocol == null) {
+                    continue;
+                }
+                BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+                if (basCrnp == null) {
+                    log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
+                    continue;
+                }
+
+                if (crnProtocol.getLaneNo()!=0 && (crnProtocol.getBay()!=1 || crnProtocol.getLevel()!=1)){
+                    if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.statusType == CrnStatusType.IDLE && crnProtocol.getTaskNo() != 0) {
+                        //鑾峰彇宸ヤ綔妗�
+                        List<TaskWrk> taskWrks = taskWrkMapper.selectByLaneNo(crnProtocol.getLaneNo());
+                        if (!taskWrks.isEmpty()) {
+                            continue;
+                        }
+                        List<TaskWrkLog> taskWrkLogs = taskWrkLogService.selectList(new EntityWrapper<TaskWrkLog>().eq("CRN_NO",crnProtocol.getLaneNo()).orderBy("COMPLETE_TIME",true));
+                        if (taskWrkLogs.isEmpty()) {
+                            CrnCommand command = new CrnCommand();
+                            if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(4, command))) {
+                                log.error("鍫嗗灈鏈鸿嚜鍔ㄥ洖婧愮偣澶辫触锛屽爢鍨涙満鍙�={}", crnProtocol.getCrnNo());
+                            }
+                        }
+//                        long differenceInSeconds = TimeCalculatorUtils.differenceInMilliseconds(taskWrkLogs.get(0).getCompleteTime(), new Date());
+//                        if (differenceInSeconds <= 1000) {
+//                            return;
+//                        }
+
+                    }
+                }
+            } catch (Exception e){
+
+            }
+        }
+    }
+
+    /**
      * 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
      */
     public synchronized void crnIoExecute() throws IOException {
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index b7aefef..2b938e2 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -46,12 +46,16 @@
                     mainService.generateStoreWrkFileWalk(); // 浠诲姟涓嬪彂
 
 
-                    // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
-                    mainService.crnStnToOutStn();
+//                    // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
+//                    mainService.crnStnToOutStn();
                     // 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
                     mainService.crnIoExecute();
                     // 鍏ュ簱  ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
                     mainService.storeFinished();
+                    // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
+                    mainService.crnStnToOutStn();
+                    // 鍑哄簱  ===>>  鍫嗗灈鏈�5鍒嗛挓鏃犱换鍔″垯鍥炲埌婧愮偣
+//                    mainService.crnStnToOutStnSou();
 
                     // 鍫嗗灈鏈哄紓甯镐俊鎭褰�
                     mainService.recCrnErr();
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 61575fa..1074858 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -95,6 +95,25 @@
                         command.setDestinationPosZ((short)0);     // 鐩爣搴撲綅灞�
                         write(command);
                         break;
+                    // 澶嶄綅
+                    case 4:
+                        CrnCommand command4 = (CrnCommand) task.getData();
+                        if (null == command4) {
+                            command4 = new CrnCommand();
+                        }
+                        command4.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                        command4.setTaskNo((short) 9999); // 宸ヤ綔鍙�
+                        command4.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                        command4.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡
+                        command4.setSourcePosX((short)0);     // 婧愬簱浣嶆帓
+                        command4.setSourcePosY((short)0);     // 婧愬簱浣嶅垪
+                        command4.setSourcePosZ((short)0);     // 婧愬簱浣嶅眰
+                        int row = slave.getId() * 2;
+                        command4.setDestinationPosX((short)row);     // 鐩爣搴撲綅鎺�
+                        command4.setDestinationPosY((short)1);     // 鐩爣搴撲綅鍒�
+                        command4.setDestinationPosZ((short)1);     // 鐩爣搴撲綅灞�
+                        write(command4);
+                        break;
                     default:
                         break;
                 }
diff --git a/src/main/resources/mapper/TaskWrkMapper.xml b/src/main/resources/mapper/TaskWrkMapper.xml
index 1793962..7710edd 100644
--- a/src/main/resources/mapper/TaskWrkMapper.xml
+++ b/src/main/resources/mapper/TaskWrkMapper.xml
@@ -36,6 +36,12 @@
         and "TASK_NO" = #{taskNo}
     </select>
 
+    <select id="selectByLaneNo" resultMap="BaseResultMap">
+        select * from "SOURCE"."wcs_task_wrk"
+        where 1=1
+          and "CRN_NO"=#{crnNo}
+    </select>
+
     <select id="selectByStartPoint" resultMap="BaseResultMap">
         select top 1 * from "SOURCE"."wcs_task_wrk"
         where 1=1

--
Gitblit v1.9.1