From a6f6f82ccb56c168ecd564eca377b41f25a901bb Mon Sep 17 00:00:00 2001
From: ZY <zc857179121@qq.com>
Date: 星期一, 07 四月 2025 17:20:44 +0800
Subject: [PATCH] 还没有写完

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  198 +++++++++++++++++++++++++++++++-----------------
 1 files changed, 127 insertions(+), 71 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 8c4b9f1..aa40e13 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -7,19 +7,12 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.controller.CrnController;
 import com.zy.asrs.domain.enums.TaskStatusType;
-import com.zy.asrs.domain.enums.WorkNoType;
 import com.zy.asrs.domain.param.CrnOperatorParam;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.wms.StorageEscalationParam;
-import com.zy.asrs.entity.wms.WmsResult;
-import com.zy.asrs.mapper.BasCrnErrorMapper;
-import com.zy.asrs.mapper.StaDescMapper;
-import com.zy.asrs.mapper.TaskWrkMapper;
-import com.zy.asrs.mapper.WrkMastMapper;
+import com.zy.asrs.mapper.*;
 import com.zy.asrs.service.*;
-import com.zy.asrs.utils.CommandUtils;
 import com.zy.asrs.utils.Utils;
-import com.zy.common.service.CommonService;
 import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
 import com.zy.core.cache.MessageQueue;
@@ -34,7 +27,6 @@
 import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.BarcodeThread;
 import com.zy.core.thread.SiemensDevpThread;
-import com.zy.system.service.ConfigService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -72,6 +64,9 @@
     private BasCrnErrorMapper basCrnErrorMapper;
     @Autowired
     private TaskWrkMapper taskWrkMapper;
+
+    @Autowired
+    private DevpTaskMapper devpTaskMapper;
     @Autowired
     private TaskWrkService taskWrkService;
 
@@ -84,9 +79,6 @@
 
 
     @Autowired
-    private CommonService commonService;
-
-    @Autowired
     private ToWmsService toWmsService;
 
 
@@ -94,9 +86,9 @@
     private CrnController crnController;
 
     @Autowired
-    private ConfigService configService;
+    private TransferTaskService transferTaskService;
 
-    public void generateStoreWrkFile1() throws IOException, InterruptedException {
+    public void generateStoreWrkFile() throws IOException, InterruptedException {
         try {
             // 鏍规嵁杈撻�佺嚎plc閬嶅巻
             for (DevpSlave devp : slaveProperties.getDevp()) {
@@ -172,43 +164,32 @@
                             storageEscalationParam.setWCSStatus(1);
                             storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg);
                         }
-                        log.info("缁勬墭鍏ュ簱={}", storageEscalationParam);
                         storageEscalationParam.setBarcode(BoxNo);
-
-                        WmsResult result = toWmsService.getLocNoFromWms(storageEscalationParam);
+                        log.info("缁勬墭鍏ュ簱={}", storageEscalationParam);
+                        TaskWrk taskWrk = toWmsService.getLocNoFromWms(storageEscalationParam);
                         if (back) {
                             log.info("鎵樼洏閫�鍥�==>{}锛寋}", BoxNo, errMsg);
                             staProtocol.setStaNo(inSta.getBackSta().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                         } else {
-                            if (result != null) {
-                                // 鍒涙柊涓�涓叆搴撳伐浣滄。
-                                TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo());
-                                if (Cools.isEmpty(taskWrk)) {
-                                    taskWrk = createInTask(result, BoxNo, inSta.getStaNo());
-                                    taskWrkService.insert(taskWrk);
-                                    StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
-                                            .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
-                                    staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
-                                    staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
-                                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                                    //娣诲姞涓婃姤鏃ュ織
-                                    toWmsService.addReportLog(taskWrk);
-                                } else {
-                                    log.info("鍒涘缓宸ヤ綔妗eけ璐�==>{}", taskWrk.getTaskNo());
-                                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
-                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
-                                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                                }
+                            if (!Cools.isEmpty(taskWrk)) {
+                                StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+                                        .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
+                                staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+                                staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                                //娣诲姞涓婃姤鏃ュ織
+                                toWmsService.addReportLog(taskWrk);
                             } else {
-                                log.info("璇锋眰wms鑾峰彇搴撲綅澶辫触==>{}", BoxNo);
+                                log.info("鍒涘缓宸ヤ綔妗eけ璐�==>{}", taskWrk.getTaskNo());
                                 staProtocol.setStaNo(inSta.getBackSta().shortValue());
                                 devpThread.setPakMk(staProtocol.getSiteId(), false);
                                 MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                             }
+
                         }
-                        log.info("鍏ュ簱璇锋眰杩斿洖鍙傛暟=" + JSON.toJSONString(result));
+
                     }
                 }
             }
@@ -388,7 +369,7 @@
                 crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅鎺�
                 crnCommand.setCommand((short) 1);
                 log.info("鍫嗗灈鏈哄叆搴撲换鍔′笅鍙�={}", crnCommand);
-                if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand), false)) {
+                if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
                     log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
                     throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
                 } else {
@@ -438,6 +419,15 @@
                     if (flag) {
                         LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
                                 .eq("row1", (locMast.getRow1() - 1))
+                                .eq("bay1", locMast.getBay1())
+                                .eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
+                        if (!Cools.isEmpty(locMast1)) {
+                            log.info(locMast.getLocNo() + "鍑烘繁搴撲綅锛屾祬搴撲綅鏈夎揣");
+                            continue;
+                        }
+                    } else {
+                        LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>()
+                                .eq("row1", (locMast.getRow1() + 1))
                                 .eq("bay1", locMast.getBay1())
                                 .eq("lev1", locMast.getLev1()).eq("loc_sts", "F"));
                         if (!Cools.isEmpty(locMast1)) {
@@ -495,7 +485,7 @@
                             taskWrk.setMarkStart(1);
                         }
 
-                        if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, command), false)) {
+                        if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, command))) {
                             log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(command));
                             throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
                         } else {
@@ -568,7 +558,7 @@
                 crnCommand.setDestinationPosY(Utils.getBayShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅鍒�
                 crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrk.getTargetPoint()));     // 鐩爣搴撲綅灞�
                 crnCommand.setCommand((short) 1);
-                if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand), false)) {
+                if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) {
                     log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
                 } else {
                     // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
@@ -841,36 +831,6 @@
     }
 
 
-    private TaskWrk createInTask(WmsResult result, String barcode, Integer startPoint) {
-        //String locNo = Utils.Fusion(result.getRow(), result.getFloor(), result.getColumn());
-
-        String locNo = result.getLocNo();
-        Date now = new Date();
-        TaskWrk taskWrk = new TaskWrk();
-        int workNo1 = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙�
-        taskWrk.setTaskNo(result.getTaskNo());//浠诲姟鍙�
-        taskWrk.setWrkNo(workNo1);
-        taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//浠诲姟鐘舵�侊細娲惧彂
-        taskWrk.setCreateTime(now);
-        taskWrk.setIoType(1);//浠诲姟绫诲瀷
-        taskWrk.setIoPri(13);//浼樺厛绾�
-        taskWrk.setBarcode(barcode);//鏉$爜
-        LocMast locMast = locMastService.selectByLocNo(locNo);
-        taskWrk.setCrnNo(locMast.getCrnNo());
-        taskWrk.setTargetPoint(locNo);
-        taskWrk.setStartPoint(startPoint + "");
-        taskWrk.setCrnNo(result.getCrnNo());
-
-        if (taskWrk.getIoType() == 1) {
-            taskWrk.setWrkSts(2);
-            if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
-                taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
-            }
-        }
-        return taskWrk;
-    }
-
-
     /**
      * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
      */
@@ -878,6 +838,9 @@
         try {
             // 鏍规嵁杈撻�佺嚎plc閬嶅巻
             for (DevpSlave devp : slaveProperties.getDevp()) {
+                if (devp.getId() == 2){
+                    continue;
+                }
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                 for (DevpSlave.Sta inSta : devp.getInSta()) {
                     WrkMast pakout = wrkMastMapper.selectWorkingPakout(inSta.getBackSta());
@@ -1036,4 +999,97 @@
         }
     }
 
+
+    /**
+     * 璺戝簱绋嬪簭
+     */
+    public void debug() {
+        //棣栧厛搴撲綅鏈変竴涓湪搴撶殑搴撲綅
+        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "F"));
+        if (locMast != null) {
+            // 鍐嶇敓鎴愪竴涓Щ搴撲换鍔�
+            LocMast mk = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O").ne("mk", 1));
+
+        }
+
+    }
+
+
+    /**
+     * 杞Щ浠诲姟涓嬪彂
+     */
+    public void transferTaskStart() {
+
+        for (DevpSlave.Sta sta : slaveProperties.getDevp().get(1).getInSta()) {
+            try {
+                // 鑾峰彇鍏ュ簱绔欎俊鎭�
+                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+                StaProtocol staProtocol = devpThread.getStation().get(sta.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+                if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
+                    // 鏌ヨ宸ヤ綔妗�
+                    TransferTask transferTask = transferTaskService.selectByStartPoint(sta.getStaNo());
+                    if (transferTask == null) {
+                        continue;
+                    }
+                    log.info("涓嬪彂杈撻�佺嚎杞Щ浠诲姟锛歵askWrk:" + JSON.toJSONString(transferTask));
+                    staProtocol.setWorkNo(transferTask.getWrkNo().shortValue());
+                    staProtocol.setStaNo(transferTask.getTargetPoint().shortValue());
+                    boolean offer = false;
+                    try {
+                        offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
+                    } catch (Exception e) {
+                        log.error("涓嬪彂杈撻�佺嚎杞Щ浠诲姟锛氬紓甯�:" + e);
+                        log.error("涓嬪彂杈撻�佺嚎杞Щ浠诲姟锛氬紓甯�:offer:" + offer);
+                    }
+                    if (offer) {
+                        log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:" + JSON.toJSONString(transferTask));
+                        transferTask.setStatus(2);
+                        transferTaskService.updateById(transferTask);
+                    } else {
+                        log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:" + JSON.toJSONString(transferTask));
+                    }
+                }
+            } catch (Exception e) {
+                log.error("杞Щ浠诲姟寮傚父:寮傚父淇℃伅锛�" + e);
+            }
+        }
+
+    }
+
+    /**
+     * 杞Щ浠诲姟瀹屾垚
+     */
+    public void transferTaskEnd() {
+        for (DevpSlave.Sta sta : slaveProperties.getDevp().get(1).getInSta()) {
+            try {
+                // 鑾峰彇缁堢偣绔�
+                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
+                StaProtocol staProtocol = devpThread.getStation().get(sta.getOverSta());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+                if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
+                    // 鏌ヨ宸ヤ綔妗�
+                    TransferTask transferTask = transferTaskService.selectByEndPoint(sta.getStaNo());
+                    if (transferTask == null) {
+                        continue;
+                    }
+                    log.info("杞Щ浠诲姟瀹屾垚锛歵ransferTask:" + JSON.toJSONString(transferTask));
+                    transferTask.setStatus(5);
+                    transferTaskService.updateById(transferTask);
+                }
+            } catch (Exception e) {
+                log.error("杞Щ浠诲姟寮傚父:寮傚父淇℃伅锛�" + e);
+            }
+        }
+
+    }
+
 }

--
Gitblit v1.9.1