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

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  153 +++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 113 insertions(+), 40 deletions(-)

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 5881a59..2cf05d5 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -31,7 +31,6 @@
 import com.zy.core.thread.RgvThread;
 import com.zy.core.thread.SiemensDevpThread;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -55,8 +54,6 @@
 
     @Autowired
     private SlaveProperties slaveProperties;
-    @Autowired
-    private WrkMastMapper wrkMastMapper;
     @Autowired
     private LocMastService locMastService;
     @Autowired
@@ -105,6 +102,8 @@
 
     @Value("${constant-parameters.avoidDistance}")
     private Long avoidDistance;
+    @Autowired
+    private TaskWrkLogServiceImpl taskWrkLogService;
 
     public void generateStoreWrkFile() {
         try {
@@ -153,10 +152,10 @@
                         errMsg = "鍙宠秴闄�";
                         back = true;
                     }
-                    if (!back && staProtocol.isWeightErr()) {
-                        errMsg = "瓒呴噸";
-                        back = true;
-                    }
+//                    if (!back && staProtocol.isWeightErr()) {
+//                        errMsg = "瓒呴噸";
+//                        back = true;
+//                    }
                     if (!back && staProtocol.isBarcodeErr()) {
                         errMsg = "鎵爜澶辫触";
                         back = true;
@@ -385,10 +384,10 @@
                         errMsg = "鍙宠秴闄�";
                         back = true;
                     }
-                    if (!back && staProtocol.isWeightErr()) {
-                        errMsg = "瓒呴噸";
-                        back = true;
-                    }
+//                    if (!back && staProtocol.isWeightErr()) {
+//                        errMsg = "瓒呴噸";
+//                        back = true;
+//                    }
                     // 閫�鍥�
                     if (back) {
                         if (stano == inSta.getBackSta().shortValue()) {
@@ -704,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 {
@@ -979,8 +1023,11 @@
                     }
 
                     // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-                            && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+                    if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
+
+//                    // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
+//                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
+//                            && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
                         // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
                         // 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -1082,6 +1129,8 @@
                             if (staProtocol.isOutEnable()){
                                 CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "娌℃湁鍙嚭");
                             }
+                        } else {
+                            CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍑哄簱绔欑偣锛氶潪鑷姩");
                         }
                     }
                 }
@@ -1335,34 +1384,33 @@
             if (crnProtocol == null) {
                 continue;
             }
-            if (false) {
-//            if (crnProtocol.getModeType() != CrnModeType.STOP) {
+            if (crnProtocol.getModeType() != CrnModeType.STOP) {
                 // 鏈変换鍔�
                 if (crnProtocol.getTaskNo() != 0) {
                     BasErrLog latest = basErrLogService.findLatestByTaskNo(crn.getId(), crnProtocol.getTaskNo().intValue());
                     // 鏈夊紓甯�
                     if (latest == null) {
                         if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
-                            WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
-                            if (wrkMast == null) {
+                            TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(crnProtocol.getTaskNo()));
+                            if (taskWrk == null) {
                                 continue;
                             }
-                            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
+                            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm().intValue());
                             String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
                             BasErrLog basErrLog = new BasErrLog(
                                     null,    // 缂栧彿
-                                    wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
+                                    taskWrk.getWrkNo(),    // 宸ヤ綔鍙�
                                     now,    // 鍙戠敓鏃堕棿
                                     null,    // 缁撴潫鏃堕棿
-                                    wrkMast.getWrkSts(),    // 宸ヤ綔鐘舵��
-                                    wrkMast.getIoType(),    // 鍏ュ嚭搴撶被鍨�
+                                    taskWrk.getWrkSts().longValue(),    // 宸ヤ綔鐘舵��
+                                    taskWrk.getIoType(),    // 鍏ュ嚭搴撶被鍨�
                                     crn.getId(),    // 鍫嗗灈鏈�
                                     null,    // plc
-                                    wrkMast.getLocNo(),    // 鐩爣搴撲綅
-                                    wrkMast.getStaNo(),    // 鐩爣绔�
-                                    wrkMast.getSourceStaNo(),    // 婧愮珯
-                                    wrkMast.getSourceLocNo(),    // 婧愬簱浣�
-                                    wrkMast.getBarcode(),    // 鏉$爜
+                                    taskWrk.getTargetPoint(),    // 鐩爣搴撲綅
+                                    0,    // 鐩爣绔�
+                                    0,    // 婧愮珯
+                                    taskWrk.getStartPoint(),    // 婧愬簱浣�
+                                    taskWrk.getBarcode(),    // 鏉$爜
                                     (int) crnProtocol.getAlarm(),    // 寮傚父鐮�
                                     errName,    // 寮傚父
                                     1,    // 寮傚父鎯呭喌
@@ -1568,9 +1616,15 @@
         }
         if (rgvProtocolOther.statusEnable) {
             BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", staNo));
-            if (Math.abs(basDevpPosition.getPlcPosition()-rgvProtocol.getRgvPos())
+            long abs = Math.abs(Math.abs(basDevpPosition.getPlcPosition() - rgvProtocol.getRgvPos())
+                    -
+                    Math.abs(basDevpPosition.getPlcPosition() - rgvProtocolOther.getRgvPos()));
+            if (abs<100){
+                return true;
+            }
+            if (Math.abs(basDevpPosition.getPlcPosition() - rgvProtocol.getRgvPos())
                     >=
-                    Math.abs(basDevpPosition.getPlcPosition()-rgvProtocolOther.getRgvPos())){
+                    Math.abs(basDevpPosition.getPlcPosition() - rgvProtocolOther.getRgvPos())){
                 return false;
             }
         }
@@ -1594,6 +1648,12 @@
         }
         if (rgvProtocolOther.statusEnable) {
             BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", staNo));
+            long abs = Math.abs(Math.abs(basDevpPosition.getPlcPosition() - rgvProtocol.getRgvPos())
+                    -
+                    Math.abs(basDevpPosition.getPlcPosition() - rgvProtocolOther.getRgvPos()));
+            if (abs<100){
+                return true;
+            }
             if (Math.abs(basDevpPosition.getPlcPosition()-rgvProtocol.getRgvPos())
                     >=
                     Math.abs(basDevpPosition.getPlcPosition()-rgvProtocolOther.getRgvPos())){
@@ -1618,7 +1678,6 @@
             TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo());
             if (taskWrk != null) {
                 Integer stano = staProtocol.getStaNo();
-
                 if (staProtocol.getSiteId() == 1004 || staProtocol.getSiteId()==1020){
 
                     // 灏哄妫�娴嬪紓甯�
@@ -1648,10 +1707,10 @@
                         errMsg = "鍙宠秴闄�";
                         back = true;
                     }
-                    if (!back && staProtocol.isWeightErr()) {
-                        errMsg = "瓒呴噸";
-                        back = true;
-                    }
+//                    if (!back && staProtocol.isWeightErr()) {
+//                        errMsg = "瓒呴噸";
+//                        back = true;
+//                    }
                     if (!back && staProtocol.isBarcodeErr()) {
                         errMsg = "鎵爜澶辫触";
                         back = true;
@@ -1682,6 +1741,21 @@
                     }
                 }
                 return taskWrk;
+            }
+        } else if (staProtocol.isAutoing() && staProtocol.getWorkNo() == 0 && !staProtocol.isLoading()){
+            if (inSta.isDirectionOther()){
+                StaProtocol staProtocolOther = devpThread.getStation().get(inSta.getStaNoOther());
+                if (staProtocolOther == null) {
+                    return null;
+                }
+                // 鍒ゆ柇鏄惁婊¤冻鍙栬揣鏉′欢
+                if (staProtocolOther.isAutoing()
+                        && staProtocolOther.getWorkNo() != 0) {
+                    TaskWrk taskWrkOther = taskWrkService.selectByWrkNo(staProtocolOther.getWorkNo());
+                    if (taskWrkOther != null) {
+                        return taskWrkOther;
+                    }
+                }
             }
         }
         return null;
@@ -1828,7 +1902,6 @@
                             if (rgvOtherIDLEOther2(rgvSlave)){
                                 if (!rgvOtherIDLE2(rgvSlave,staList.get(0))){
                                     System.out.println("杩愯灏辫繎璺宠繃==="+rgvSlave.getId()+"===");
-
                                     sign=true;
                                 }
                             }
@@ -2145,7 +2218,7 @@
             // 鍛戒护闆嗗悎
             List<LedCommand> commands = new ArrayList<>();
             // 宸ヤ綔妗i泦鍚�
-            List<WrkMast> wrkMasts = new ArrayList<>();
+            List<TaskWrk> taskWrks = new ArrayList<>();
             for (Integer staNo : led.getStaArr()) {
                 // 鑾峰彇鍙夎溅绔欑偣
                 StaProtocol staProtocol = devpThread.getStation().get(staNo);
@@ -2169,7 +2242,7 @@
                 ledCommand.getMatDtos().add(matDto);
                 commands.add(ledCommand);
             }
-            Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
+            Set<Integer> workNos = taskWrks.stream().map(TaskWrk::getWrkNo).collect(Collectors.toSet());
             // 鑾峰彇LED绾跨▼
             LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
             // 鐩稿悓宸ヤ綔鍙烽泦鍚堝垯杩囨护
@@ -2188,10 +2261,10 @@
 
             try {
                 // 淇敼涓绘。led鏍囪
-                for (WrkMast wrkMast : wrkMasts) {
-                    wrkMast.setOveMk("Y");
-                    wrkMast.setModiTime(new Date());
-                    if (wrkMastMapper.updateById(wrkMast) == 0) {
+                for (TaskWrk taskWrk : taskWrks) {
+//                    taskWrk.setOveMk("Y");
+                    taskWrk.setModiTime(new Date());
+                    if (taskWrkMapper.updateById(taskWrk) == 0) {
 //                        News.errorNoLog(""+mark+" - 4"+" - 鏇存柊宸ヤ綔妗eけ璐�");
                         throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
                     }

--
Gitblit v1.9.1