From d91d1fc34a8af84513416cb2a03c75d96fb0304e Mon Sep 17 00:00:00 2001
From: zzgtfwq <zzgtfwq>
Date: 星期三, 10 十二月 2025 08:46:01 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  129 +++++++++++++++++++++++++++++++-----------
 1 files changed, 95 insertions(+), 34 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 0ab224d..03e06ce 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.*;
 import com.core.exception.CoolException;
+import com.zy.asrs.controller.TaskWrkController;
 import com.zy.asrs.domain.enums.LedErrorAreaType;
 import com.zy.asrs.domain.enums.TaskStatusType;
 import com.zy.asrs.entity.*;
@@ -13,24 +14,19 @@
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.*;
 import com.zy.common.model.LocTypeDto;
-import com.zy.common.model.MatDto;
 import com.zy.common.model.SearchLocParam;
 import com.zy.common.model.StartupDto;
 import com.zy.common.service.CommonService;
-import com.zy.common.utils.CollectionUtils;
 import com.zy.common.utils.HttpHandler;
-import com.zy.common.utils.News;
 import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.*;
 import com.zy.core.enums.*;
 import com.zy.core.model.*;
 import com.zy.core.model.command.CrnCommand;
-import com.zy.core.model.command.LedCommand;
 import com.zy.core.model.protocol.*;
 import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.BarcodeThread;
-import com.zy.core.thread.LedThread;
 import com.zy.core.thread.RgvThread;
 import com.zy.core.thread.SiemensDevpThread;
 import com.zy.system.entity.license.LicenseVerify;
@@ -44,7 +40,6 @@
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
 
 /**
  * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
@@ -68,17 +63,11 @@
     @Autowired
     private LocMastService locMastService;
     @Autowired
-    private StaDescService staDescService;
-    @Autowired
     private BasCrnpService basCrnpService;
     @Autowired
     private BasDevpService basDevpService;
     @Autowired
     private LocDetlService locDetlService;
-    @Autowired
-    private BasErrLogService basErrLogService;
-    @Autowired
-    private BasCrnErrorMapper basCrnErrorMapper;
     @Autowired
     private WrkMastService wrkMastService;
     @Autowired
@@ -232,7 +221,7 @@
 //                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
                         barcodeThread.setBarcode("");
                         staProtocol.setWorkNo(wrkMast.getWrkNo());
-                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                        staProtocol.setStaNo(wrkMast.getStaNoSou$().shortValue());
 
                         devpThread.setPakMk(staProtocol.getSiteId(), false,238);
                         boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -307,7 +296,7 @@
      */
     public synchronized void storeEmptyPlt() {
         for (DevpSlave devp : slaveProperties.getDevp()) {
-            if (devp.getId()==1) continue;
+//            if (devp.getId()==1) continue;
             // 閬嶅巻绌烘澘鍏ュ簱鍙�
             for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) {
                 // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
@@ -341,7 +330,7 @@
 
                             // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
                             staProtocol.setWorkNo(dto.getWorkNo());
-                            staProtocol.setStaNo(dto.getStaNo().shortValue());
+                            staProtocol.setStaNo(dto.getStaNoSou$(dto.getStaNo(),staProtocol.getSiteId()).shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false,4087);
                             boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                             if (!result) {
@@ -733,7 +722,7 @@
             }
 
             // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-            if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
+            if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo()) && crnProtocol.getCrnNo()!=3) {
                 String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo());
                 LocMast shallowLoc = locMastService.selectById(shallowLocNo);
                 // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
@@ -880,7 +869,7 @@
                 }
 
                 // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
-                if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
+                if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo()) && crnProtocol.getCrnNo()!=3) {
                     String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
                     LocMast shallowLoc = locMastService.selectById(shallowLocNo);
                     // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
@@ -1119,7 +1108,7 @@
             }
             //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
             if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
-                if (crnProtocol.getTaskNo() == 32222) {
+                if (crnProtocol.getTaskNo() == 32222 || crnProtocol.getTaskNo() == 999) {
                     // 鍫嗗灈鏈哄浣�
                     crnThread.setResetFlag(true);
                 } else {
@@ -1176,11 +1165,11 @@
                         if (!wrkMasts.isEmpty()) {
                             continue;
                         }
-                        List<TaskWrkLog> taskWrkLogs = taskWrkLogService.selectList(new EntityWrapper<TaskWrkLog>().eq("CRN_NO",crnProtocol.getCrnNo()).orderBy("COMPLETE_TIME",false));
-                        if (!taskWrkLogs.isEmpty()) {
+                        List<WrkMast> WrkMastLogList = wrkMastMapper.selectByCrnNoLog(crnProtocol.getCrnNo());
+                        if (!WrkMastLogList.isEmpty()) {
                             boolean signT = false;
-                            for (TaskWrkLog taskWrkLog : taskWrkLogs){
-                                Date completeTime = taskWrkLog.getCompleteTime();
+                            for (WrkMast wrkMast : WrkMastLogList){
+                                Date completeTime = wrkMast.getIoTime();
                                 if (completeTime==null){
                                     continue;
                                 }
@@ -1202,11 +1191,16 @@
                         crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
                         crnCommand.setTaskNo((short)999); // 宸ヤ綔鍙�
                         crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
-                        crnCommand.setTaskMode(CrnTaskModeType.X_MOVE); // 浠诲姟妯″紡:  绔欎綅绉昏浆4
-                        crnCommand.setSourcePosX((short) 1);     // 婧愬簱浣嶆帓
+                        crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  绔欎綅绉昏浆4
+                        Integer crnNo = crnProtocol.getCrnNo();
+                        int row1 = crnNo * 4-1;
+                        if (crnNo>2){
+                            row1 = row1-2;
+                        }
+                        crnCommand.setSourcePosX((short) row1);     // 婧愬簱浣嶆帓
                         crnCommand.setSourcePosY((short) 1);     // 婧愬簱浣嶅垪
                         crnCommand.setSourcePosZ((short) 1);   // 婧愬簱浣嶅眰
-                        crnCommand.setDestinationPosX((short) 1);     // 鐩爣搴撲綅鎺�
+                        crnCommand.setDestinationPosX((short) row1);     // 鐩爣搴撲綅鎺�
                         crnCommand.setDestinationPosY((short) 1);     // 鐩爣搴撲綅灞�
                         crnCommand.setDestinationPosZ((short) 1);     // 鐩爣搴撲綅鍒�
                         if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
@@ -1237,6 +1231,45 @@
 
     /////////////////////////////////////RGV璋冨害/////////////////////////////////////
 
+    public synchronized void taskCreate() {
+        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+            try {
+                for (RgvSlave.RgvStn inSta : rgvSlave.getRgvInSta()) {
+                    WrkMast wrkMast = deviceDetectionCreate(inSta);
+                    if (!Cools.isEmpty(wrkMast)) {
+                        TaskWrk taskWrk = new TaskWrk(wrkMast);
+                        taskWrkService.insert(taskWrk);
+                    }
+                }
+            } catch (Exception e){
+
+            }
+        }
+    }
+
+    public synchronized void taskCancel() {
+        try {
+            List<String> taskList = new ArrayList<>();
+            for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+                TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
+                ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
+                for (TaskProtocol taskProtocol : allTaskProtocol.values()){
+                    taskList.add(taskProtocol.getTaskNo().toString());
+                }
+            }
+            Wrapper<TaskWrk> wrkWrapper = new EntityWrapper<TaskWrk>().eq("status", 5);
+            for (String taskNo : taskList){
+                wrkWrapper.ne("task_no", taskNo);
+            }
+            int count = taskWrkService.selectCount(wrkWrapper);
+            if (count>0){
+                taskWrkService.delete(wrkWrapper);
+            }
+        } catch (Exception e){
+
+        }
+    }
     public synchronized void taskStart() {
         for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
             try {
@@ -1719,6 +1752,34 @@
         return true;
     }
 
+    public WrkMast deviceDetectionCreate(RgvSlave.RgvStn inSta) {
+        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, inSta.getDevpPlcId());
+        StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+        if (staProtocol == null) {
+            return null;
+        }
+
+        // 鍒ゆ柇鏄惁婊¤冻鍙栬揣鏉′欢
+        if (staProtocol.isAutoing()
+//                && staProtocol.isLoading()
+//                && staProtocol.isStaOk()
+                && staProtocol.getWorkNo() != 0) {
+            WrkMast wrkMast = wrkMastService.selectByWrkNo(staProtocol.getWorkNo());
+            if (!Cools.isEmpty(wrkMast)){
+                if (inSta.getStaNo()==117 || inSta.getStaNo()==120 || inSta.getStaNo()==123
+                        || inSta.getStaNo()==217 || inSta.getStaNo()==220 || inSta.getStaNo()==223){
+                    if (wrkMast.getIoType()>100){
+                        return null;
+                    }
+                }
+                TaskWrk taskWrk = taskWrkService.selectByTaskNo(staProtocol.getWorkNo());
+                if (Cools.isEmpty(taskWrk)){
+                    return wrkMast;
+                }
+            }
+        }
+        return null;
+    }
     public TaskWrk deviceDetection(RgvSlave.RgvStn inSta) {
 
         DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, inSta.getDevpPlcId());
@@ -1736,7 +1797,7 @@
 //                && staProtocol.isLoading()
 //                && staProtocol.isStaOk()
                 && staProtocol.getWorkNo() != 0) {
-            TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo());
+            TaskWrk taskWrk = taskWrkService.selectByTaskNo(staProtocol.getWorkNo());
             if (taskWrk != null) {
                 Integer stano = staProtocol.getStaNo().intValue();
                 if (staProtocol.getSiteId() == 1004 || staProtocol.getSiteId()==1020){
@@ -1854,7 +1915,7 @@
                 // 鍒ゆ柇鏄惁婊¤冻鍙栬揣鏉′欢
                 if (staProtocolOther.isAutoing()
                         && staProtocolOther.getWorkNo() != 0) {
-                    TaskWrk taskWrkOther = taskWrkService.selectByWrkNo(staProtocolOther.getWorkNo());
+                    TaskWrk taskWrkOther = taskWrkService.selectByTaskNo(staProtocolOther.getWorkNo());
                     if (taskWrkOther != null) {
                         return taskWrkOther;
                     }
@@ -1964,6 +2025,7 @@
                 issuedTake.setTaskNo(Long.valueOf(taskWrk.getWrkNo()));
                 issuedTake.setTaskStatus(2);
                 issuedTake.setTargetPositionStaNo(basDevpPositionSou.getDevNo());
+                issuedTake.setTargetPositionStaNoEnd(basDevpPositionSou.getDevNo$());
                 issuedTake.setTargetPositionStaNoPlcId(basDevpPositionSou.getPlcId());
                 issuedTake.setTaskNoDirection(issuedTake.gettaskNoDirection$(issuedTake.getTaskNo(), issuedTake.getTaskStatus()));
                 issuedTake.setTargetPosition(basDevpPositionSou.getPlcPosition());
@@ -1974,6 +2036,7 @@
                 issuedPut.setTaskNo(Long.valueOf(taskWrk.getWrkNo()));
                 issuedPut.setTaskStatus(3);
                 issuedPut.setTargetPositionStaNo(basDevpPositionEnd.getDevNo());
+                issuedPut.setTargetPositionStaNoEnd(basDevpPositionEnd.getDevNo$());
                 issuedPut.setTargetPositionStaNoPlcId(basDevpPositionEnd.getPlcId());
                 issuedPut.setTaskNoDirection(issuedPut.gettaskNoDirection$(issuedPut.getTaskNo(), issuedPut.getTaskStatus()));
                 issuedPut.setTargetPosition(basDevpPositionEnd.getPlcPosition());
@@ -1981,13 +2044,11 @@
                 issuedPut.setDirection(basDevpPositionEnd.getRgvSign()==1);
 
                 try{
-                    if (taskWrk.getIoType()==2 && basDevpPositionEnd.getRgvSign()==1){
-                        Date now = new Date();
-                        taskWrk.setStatus(TaskStatusType.OVER.id);
-                        taskWrk.setModiTime(now);//鏇存柊鏃堕棿
-                        taskWrk.setCompleteTime(now);//瀹岀粨鏃堕棿
-                        taskWrkService.updateById(taskWrk);
-                    }
+                    Date now = new Date();
+                    taskWrk.setStatus(TaskStatusType.OVER.id);
+                    taskWrk.setModiTime(now);//鏇存柊鏃堕棿
+                    taskWrk.setCompleteTime(now);//瀹岀粨鏃堕棿
+                    taskWrkService.updateById(taskWrk);
                 } catch (Exception e){
 
                 }

--
Gitblit v1.9.1