From 6278a504fb7d4f3dfb1f6d5d2890304ab784d139 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期一, 09 六月 2025 17:08:47 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  322 ++++++++++++++++++++++++++++++++---------------------
 1 files changed, 194 insertions(+), 128 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 404181e..3598430 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -27,17 +27,17 @@
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.*;
-import com.zy.core.model.CrnSlave;
-import com.zy.core.model.DevpSlave;
-import com.zy.core.model.LedSlave;
-import com.zy.core.model.Task;
+import com.zy.core.model.*;
 import com.zy.core.model.command.CrnCommand;
 import com.zy.core.model.command.LedCommand;
+import com.zy.core.model.command.RgvCommand;
 import com.zy.core.model.protocol.CrnProtocol;
+import com.zy.core.model.protocol.RgvProtocol;
 import com.zy.core.model.protocol.StaProtocol;
 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 lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -89,6 +89,8 @@
     private BasCrnErrorMapper basCrnErrorMapper;
     @Autowired
     private WrkMastService wrkMastService;
+    @Autowired
+    private WrkMastLogService wrkMastLogService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -188,6 +190,18 @@
                             MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
                         }
                         continue;
+                    }
+
+                    if (inSta.getStaNo() == 1005) {
+                        //妫�娴嬫槸鍚︽湁鍑哄簱浠诲姟
+                        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+                                .in("io_type", 101, 103, 107)
+                                .in("sta_no", 1003, 1007)
+                        );
+                        if (!wrkMasts.isEmpty()) {
+                            News.error(""+mark+" - 4"+" - 1003绔欏叆搴擄紝妫�娴嬪瓨鍦ㄥ嚭搴撲换鍔★紝绛夊緟鍑哄簱浠诲姟鎵ц瀹屾垚,鎵樼洏鐮�={}", barcode);
+                            continue;
+                        }
                     }
 
                     try {
@@ -863,6 +877,18 @@
                     staProtocol = staProtocol.clone();
                 }
 
+                if (wrkMast.getStaNo() == 1003 || wrkMast.getStaNo() == 1007) {
+                    //妫�娴嬫槸鍚︽湁鍏ュ簱浠诲姟
+                    List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
+                            .in("io_type", 1, 53, 57)
+                            .in("source_sta_no", 1005)
+                    );
+                    if (!inWrkMasts.isEmpty()) {
+                        News.error("" + mark + " - 2" + " - 妫�娴嬪瓨鍦ㄥ叆搴撲换鍔★紝绛夊緟鍏ュ簱浠诲姟鎵ц瀹屾垚鍐嶅嚭搴擄紝宸ヤ綔鍙�={}" + wrkMast.getWrkNo());
+                        continue;
+                    }
+                }
+
 //            // 鍏ュ嚭搴撴ā寮忓垽鏂�
 //            if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; }
 //                if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
@@ -1272,7 +1298,6 @@
      * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
      */
     public synchronized void storeFinished(Integer mark) {
-
         for (CrnSlave crn : slaveProperties.getCrn()) {
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
             CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
@@ -2107,143 +2132,184 @@
         }
     }
 
-    /**
-     * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
-     */
-    public synchronized void ioConvert() {
-        try {
-            // 鏍规嵁杈撻�佺嚎plc閬嶅巻
-            for (DevpSlave devp : slaveProperties.getDevp()) {
-                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+    // RGV  ===>> 鎵ц瀵筊GV鎿嶄綔
+    public synchronized void rgvExecute(Integer mark) {
+        ArrayList<Integer> list = new ArrayList<Integer>(){{add(1090);add(1091);}};
+        for (Integer staNo : list) {
+            Integer devpId = null;
+            Integer rgvStaNo = null;
+            if (staNo == 1090) {
+                devpId = 1;
+                rgvStaNo = 1091;
+            }else {
+                devpId = 2;
+                rgvStaNo = 1090;
+            }
 
-                for (DevpSlave.Sta inSta : devp.getInSta()) {
-                    if (inSta.getStaNo() == 2) {
-                        continue;
-                    }
-                    WrkMast pakout = wrkMastMapper.selectWorkingPakout(inSta.getStaNo());
-                    switch (inSta.getStaNo()) {
-                        case 101://1F
-                            if (pakout != null) {
-                                if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
-                                    // 鍑哄簱鍒囨崲涓�
-                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
-                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
-                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
-                                            && !devpThread.getStation().get(inSta.getStaNo() + 1).isLoading()
-                                            && devpThread.getStation().get(inSta.getStaNo() + 1).getWorkNo() == 0) {
-                                        // 鍑哄簱妯″紡
-                                        devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE;
-                                    }
-                                }
-                            } else {
-                                // 鍏ュ簱妯″紡
-                                devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
-                            }
-                            break;
-                    }
+            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devpId);
+            if (devpThread == null) {
+                continue;
+            }
+            StaProtocol staProtocol = devpThread.getStation().get(staNo);
+            if (staProtocol == null) {
+                continue;
+            } else {
+                staProtocol = staProtocol.clone();
+            }
+
+            if (staProtocol.isAutoing()
+                    && staProtocol.isLoading()
+                    && staProtocol.isInEnable()
+                    && staProtocol.getWorkNo() > 0
+            ) {
+                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+                        .eq("wrk_no", staProtocol.getWorkNo()));
+                if (wrkMast.getWrkSts() == 201) {
+                    continue;
                 }
 
-            }
+                RgvCommand command = new RgvCommand();
+                command.setRgvNo(1); // RGV缂栧彿
+                command.setAckFinish1((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                command.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                command.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 浠诲姟妯″紡: 鍙栨斁璐�
+                command.setSourceStaNo1(staNo.shortValue()); // 婧愮珯
+                command.setDestinationStaNo1(rgvStaNo.shortValue());  // 鐩爣绔�
+                command.setCommand((short) 0);
 
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-
-    }
-
-    public synchronized void outOfDevp(Integer mark) {
-
-        List<WrkMast> wrkMasts = wrkMastMapper.selectPick();
-        if (wrkMasts.size()!=0){
-            News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛宱utOfDevp");
-        }
-        for (WrkMast wrkMast : wrkMasts) {
-            if (basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())) == 0) {
-                wrkMast.setCtnNo("Y");
-                if (wrkMastMapper.updateById(wrkMast) == 0) {
-                    News.error(""+mark+" - 1"+" - 淇敼{}宸ヤ綔妗eけ璐ワ紝ctn_no", wrkMast.getWrkNo());
+                boolean result = MessageQueue.offer(SlaveType.Rgv, 1, new Task(4, command));
+                if (!result) {
+                    throw new CoolException("RGV鎸囦护涓嬪彂澶辫触");
                 }
+
+                wrkMast.setWrkSts(201L);//201.RGV鎼繍涓�
+                wrkMast.setModiTime(new Date());
+                wrkMastService.updateById(wrkMast);
             }
         }
-        News.infoNoLog(""+mark+" - 0"+" - outOfDevp鎵ц瀹屾垚");
     }
 
-
-    public synchronized void autoEmptyOut() {
-        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-        Integer autoOutSite = 12;
-        //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔�
-        StaProtocol staProtocol = devpThread.getStation().get(autoOutSite);
-        if (staProtocol == null) {
-            return;
-        } else {
-            staProtocol = staProtocol.clone();
-        }
-        if (staProtocol.isAutoing()  //鑷姩
-                && !staProtocol.isLoading()  //鏃犵墿
-                && staProtocol.isOutEnable()  //鍙嚭淇″彿
-                && staProtocol.getWorkNo() == 0
-        ) {
-            WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(autoOutSite);
-            if (null != pakoutEmpty) {
-                return;
+    // RGV  ===>> 鎵ц瀵筊GV宸ヤ綔妗g殑瀹屾垚鎿嶄綔
+    public synchronized void rgvFinished(Integer mark) {
+        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
+            // 鑾峰彇RGV淇℃伅
+            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+            if (rgvThread == null) {
+                continue;
             }
-            try {
-                String response = new HttpHandler.Builder()
-                        .setUri(wmsUrl)
-                        .setPath("/rpc/auto/emptyOut/v1")
-                        .build()
-                        .doPost();
-                JSONObject jsonObject = JSON.parseObject(response);
-                if (jsonObject.getInteger("code").equals(200)) {
-                    JSONObject data = (JSONObject) jsonObject.get("data");
-                    News.info((String) data.get("msg"));
+
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (rgvProtocol == null) {
+                continue;
+            }
+
+            //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
+            if (rgvProtocol.statusType == RgvStatusType.WAITING && rgvProtocol.getTaskNo1() != 0) {
+                News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽RGV宸ヤ綔妗g殑瀹屾垚鎿嶄綔");
+                // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
+                WrkMast wrkMast = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
+                if (wrkMast == null) {
+                    News.error(""+mark+" - 1"+" - RGV澶勪簬绛夊緟纭涓斾换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgvSlave.getId(), rgvProtocol.getTaskNo1());
+                    continue;
+                }
+
+                if (Cools.isEmpty(wrkMast.getMemo())) {
+                    News.error(""+mark+" - 1"+" - RGV澶勪簬绛夊緟纭涓斾换鍔″畬鎴愮姸鎬侊紝浣嗗伐浣滄。鏁版嵁寮傚父銆俁GV鍙�={}锛屽伐浣滃彿={}", rgvSlave.getId(), rgvProtocol.getTaskNo1());
+                    continue;
+                }
+
+                Integer devpId = null;
+                Integer devpStaNo = null;
+                String locNo = null;
+                if (wrkMast.getIoType() < 100) {
+                    //鍏ュ簱
+                    wrkMast.setWrkSts(2L);
+                    devpId = 1;
+                    devpStaNo = 1090;
+                    locNo = wrkMast.getLocNo();
+                }else {
+                    //鍑哄簱
+                    wrkMast.setWrkSts(15L);
+                    devpId = 2;
+                    devpStaNo = 1091;
+                    locNo = wrkMast.getSourceLocNo();
+                }
+
+                // 鑾峰彇鍏ュ簱绔欎俊鎭�
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devpId);
+                StaProtocol staProtocol = devpThread.getStation().get(devpStaNo);
+                if (staProtocol == null) {
+                    continue;
                 } else {
-                    News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1","", response);
+                    staProtocol = staProtocol.clone();
                 }
-            } catch (Exception e) {
-                e.printStackTrace();
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+
+                if (staProtocol.isAutoing()
+                        && staProtocol.isLoading()
+                        && staProtocol.getWorkNo() == 0
+                ) {
+                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
+                            .eq("loc_no", locNo));
+                    staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+                    staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                    staProtocol.setPalletSize(locMast.getLocType2());
+                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+                    boolean result = MessageQueue.offer(SlaveType.Devp, devpId, new Task(2, staProtocol));
+                    if (!result) {
+                        throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                    }
+
+                    Date now = new Date();
+                    wrkMast.setModiTime(now);
+                    wrkMastMapper.updateById(wrkMast);
+                }
             }
         }
+        News.infoNoLog(""+mark+" - 0"+" - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�");
     }
 
-    public synchronized void autoEmptyIn() {
-        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
-        Integer autoInSite = 12;
-        StaProtocol staProtocol = devpThread.getStation().get(autoInSite);
-        if (staProtocol == null) {
-            return;
-        } else {
-            staProtocol = staProtocol.clone();
-        }
-        if (staProtocol.isAutoing()  //鑷姩
-                && staProtocol.isLoading()  //鏈夌墿
-                && staProtocol.isInEnable()  //鍙叆淇″彿
-                && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990) //宸ヤ綔鍙蜂负0鎴栬�呭伐浣滃彿鏄�9991~9999锛堣緭閫佹満鐣欑敤锛�
-        ) {
-
-            try {
-                LocTypeDto locTypeDto = new LocTypeDto((short) 1, (short) 1, (short) 1);
-
-
-                String response = new HttpHandler.Builder()
-                        .setUri(wmsUrl)
-                        .setPath("/rpc/auto/emptyIn/v1")
-                        .setJson(JSON.toJSONString(locTypeDto))
-                        .build()
-                        .doPost();
-                JSONObject jsonObject = JSON.parseObject(response);
-                if (jsonObject.getInteger("code").equals(200)) {
-                    News.info((String) jsonObject.get("msg"));
-                } else {
-                    News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyIn/v1", JSON.toJSONString(locTypeDto), response);
-                }
-            } catch (Exception e) {
-                e.printStackTrace();
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            }
-        }
-    }
+//    /**
+//     * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
+//     */
+//    public synchronized void ioConvert() {
+//        try {
+//            // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+//            for (DevpSlave devp : slaveProperties.getDevp()) {
+//                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+//
+//                for (DevpSlave.Sta inSta : devp.getInSta()) {
+//                    if (inSta.getStaNo() == 2) {
+//                        continue;
+//                    }
+//                    WrkMast pakout = wrkMastMapper.selectWorkingPakout(inSta.getStaNo());
+//                    switch (inSta.getStaNo()) {
+//                        case 101://1F
+//                            if (pakout != null) {
+//                                if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
+//                                    // 鍑哄簱鍒囨崲涓�
+//                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
+//                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+//                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+//                                            && !devpThread.getStation().get(inSta.getStaNo() + 1).isLoading()
+//                                            && devpThread.getStation().get(inSta.getStaNo() + 1).getWorkNo() == 0) {
+//                                        // 鍑哄簱妯″紡
+//                                        devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE;
+//                                    }
+//                                }
+//                            } else {
+//                                // 鍏ュ簱妯″紡
+//                                devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
+//                            }
+//                            break;
+//                    }
+//                }
+//
+//            }
+//
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//
+//
+//    }
 }

--
Gitblit v1.9.1