From 45acd20e06a15d0096776ffe3adae4dc94d22762 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 05 十月 2023 09:39:52 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  173 ++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 116 insertions(+), 57 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 c875665..1e3077e 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
@@ -224,7 +225,7 @@
                         param.setBarcode(barcode);
                         param.setIoType(1);
                         param.setSourceStaNo(inSta.getStaNo());
-//                        param.setLocType1(locTypeDto.getLocType1());
+                        param.setLocType1(locTypeDto.getLocType1());
                         String response = new HttpHandler.Builder()
                                 .setUri(wmsUrl)
                                 .setPath("/rpc/pakin/loc/v1")
@@ -236,8 +237,8 @@
                         Integer code = jsonObject.getInteger("code");
                         if (code.equals(200)) {
                             StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-//                            // plc 澶勭悊
-//                            barcodeThread.setBarcode("");
+                            // plc 澶勭悊
+                            barcodeThread.setBarcode("");
 //                            staProtocol.setWorkNo(dto.getWorkNo().shortValue());
 //                            staProtocol.setStaNo(dto.getStaNo().shortValue());
 //                            devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -405,8 +406,8 @@
                 }
                 if (staProtocol.isAutoing()
                         && staProtocol.isLoading()
-                        && (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9999)
-                        && staProtocol.getStaNo().equals(staProtocol.getSiteId().shortValue())
+//                        && (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9999)
+//                        && staProtocol.getStaNo().equals(staProtocol.getSiteId().shortValue())
                         && staProtocol.isPakMk()){
 
                     // 鑾峰彇鏉$爜鎵弿浠俊鎭�
@@ -507,12 +508,18 @@
                             }
 
                             String sourceLocNo = wrkMast.getSourceLocNo().trim();
+                            LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(sourceLocNo));//鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯
+                            if (liftStaProtocol == null) {
+                                continue;
+                            }
+
                             // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
                             wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
                             wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
                             wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯
-                            wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔�
-                            wrkMast.setCrnNo(dto.getCrnNo());
+//                            wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔�
+//                            wrkMast.setCrnNo(dto.getCrnNo());
+                            wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔�
                             wrkMast.setLocNo(sourceLocNo); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
                             wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌�
                             wrkMast.setModiTime(new Date());
@@ -531,14 +538,16 @@
                                 throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
                             }
 
-                            // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                            staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
-                            staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            if (!result) {
-                                News.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                            }
+//                            // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+//                            staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+//                            staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                            if (!result) {
+//                                News.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+//                            }
+
+                            barcodeThread.setBarcode("");//娓呯悊鏉$爜
 
                         } else if (code == 500){
                             if (ledThread != null) {
@@ -549,10 +558,10 @@
                             }
                             News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
                         } else {
-                            staProtocol.setWorkNo((short) 32002);
-                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                            staProtocol.setWorkNo((short) 32002);
+//                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
 
                             // led 寮傚父鏄剧ず
                             if (ledThread != null) {
@@ -792,6 +801,12 @@
             //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻
             if (shuttleProtocol.getToken() != 0) {
                 return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟
+            }
+
+            //鍒ゆ柇灏忚溅鏄惁瀛樺湪绉诲姩浠诲姟
+            WrkMast hasMoveWorking = wrkMastMapper.selectShuttleHasMoveWorking(wrkMast.getShuttleNo());
+            if (hasMoveWorking != null) {
+                return false;//瀛樺湪绉诲姩浠诲姟锛岀姝㈡墽琛屽叆搴撲换鍔�
             }
 
             //鍒ゆ柇灏忚溅鏄惁鍒拌揪杈撻�佺珯鐐瑰簱浣�
@@ -1161,6 +1176,12 @@
 
             //鑾峰彇鎻愬崌鏈哄懡浠�
             NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo());
+            if (wrkMast.getIoType() == 53) {
+                //鎷f枡鍐嶅洖搴擄紝閲嶆柊鍒嗛厤璁惧宸ヤ綔鍙�
+                Random random = new Random();
+                int deviceWrk = Math.abs((liftCommand.getTaskNo().intValue() + random.nextInt(9999)));//鑾峰彇璁惧宸ヤ綔鍙�
+                liftCommand.setTaskNo((short) deviceWrk);
+            }
             ArrayList<NyLiftCommand> commands = new ArrayList<>();
             commands.add(liftCommand);
 
@@ -1196,6 +1217,17 @@
 
         //23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑
         if (wrkMast.getWrkSts() == 23) {
+            NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
+            if (shuttleThread == null) {
+                return false;
+            }
+
+            //璋冨害灏忚溅閬胯
+            boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getShuttleNo(), shuttleThread);
+            if (!result) {
+                return false;
+            }
+
             //鑾峰彇鍑哄簱绔欑偣(鐩爣绔�)
             BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo());
             if (basDevp == null) {
@@ -1293,7 +1325,7 @@
                         case 3://3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴�
                             wrkMast.setWrkSts(4L);
                             wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
-                            if (liftProtocol.getToken() == wrkMast.getWrkNo()) {
+                            if (liftProtocol.getToken().equals(wrkMast.getWrkNo())) {
                                 //閲婃斁鎻愬崌鏈轰护鐗�
                                 liftProtocol.setToken(0);
                             }
@@ -1307,6 +1339,12 @@
                                 //閲婃斁鎻愬崌鏈轰护鐗�
                                 liftProtocol.setToken(0);
                             }
+
+                            if (wrkMast.getMk() == null || !wrkMast.getMk().equals("Y")) {
+                                //涓嶉渶瑕佺敤鍒版満姊拌噦锛岀洿鎺ヨ浆29.鍑哄簱瀹屾垚
+                                wrkMast.setWrkSts(29L);
+                            }
+
                             break;
                         case 106://106.鎻愬崌鏈烘惉杩愪腑 ==> 107.鎻愬崌鏈烘惉杩愬畬鎴�
                             wrkMast.setWrkSts(107L);
@@ -1893,6 +1931,13 @@
                         }
                     }
 
+                    if (!Cools.isEmpty(barcode)) {
+                        WrkMast wrkMast = wrkMastMapper.selectByBarcode(barcode);//鏉$爜瀛樺湪宸ヤ綔妗�
+                        if (wrkMast != null) {
+                            continue;
+                        }
+                    }
+
                     LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, emptyInSta.getLed());
 
                     try {
@@ -1915,7 +1960,7 @@
                         Integer code = jsonObject.getInteger("code");
                         if (code.equals(200)) {
                             StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-
+                            barcodeThread.setBarcode("");
 //                            // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
 //                            staProtocol.setWorkNo(dto.getWorkNo().shortValue());
 //                            staProtocol.setStaNo(dto.getStaNo().shortValue());
@@ -1968,7 +2013,7 @@
                     continue;
                 }
 
-                if (wrkMast.getMk().equals("Y")) {//鏍囪涓篩琛ㄧず闇�瑕佺敤鍒版満姊拌噦鎷f枡
+                if (wrkMast.getMk() != null && wrkMast.getMk().equals("Y")) {//鏍囪涓篩琛ㄧず闇�瑕佺敤鍒版満姊拌噦鎷f枡
                     Short targetSta = null;//鐩爣绔�
                     //鍒ゆ柇鏈烘鑷傛嫞鏂欑珯鏄惁绌洪棽
                     StaProtocol staProtocol303 = devpThread.getStation().get(303);
@@ -1985,19 +2030,21 @@
 
                     targetSta = (short) 317;
 
-                    //瑕嗙洊宸ヤ綔妗g洰鏍囩珯
-                    wrkMast.setStaNo(targetSta.intValue());
-                    if (wrkMastMapper.updateById(wrkMast) > 0) {
-                        //鍚�300绔欏啓鍏ョ洰鏍囩珯
-                        staProtocol = staProtocol.clone();
-                        staProtocol.setStaNo(targetSta);//绉诲姩鍒扮洰鏍囩珯
-                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                        try {
-                            Thread.sleep(500);
-                        } catch (Exception e) {
-                            e.printStackTrace();
+                    if (wrkMast.getStaNo() != 303 && wrkMast.getStaNo() != 317) {
+                        //瑕嗙洊宸ヤ綔妗g洰鏍囩珯
+                        wrkMast.setStaNo(targetSta.intValue());
+                        if (wrkMastMapper.updateById(wrkMast) > 0) {
+                            //鍚�300绔欏啓鍏ョ洰鏍囩珯
+                            staProtocol = staProtocol.clone();
+                            staProtocol.setStaNo(targetSta);//绉诲姩鍒扮洰鏍囩珯
+                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                            try {
+                                Thread.sleep(500);
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            }
+                            continue;
                         }
-                        continue;
                     }
                 }
             }
@@ -2006,28 +2053,30 @@
             StaProtocol staProtocol317 = devpThread.getStation().get(317);
             if (staProtocol303.isAutoing() && staProtocol303.isLoading() && staProtocol303.getWorkNo() != 0) {
                 //璋冨害鏈烘鑷�
-                //鏌ヨ鏄惁鏈夊伐浣滄。
-                WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol303.getWorkNo().intValue());
-                if (wrkMast == null) {
-                    continue;
-                }
-                WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo());
-                if (wrkDetl == null) {
-                    continue;
-                }
-                RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetl.getAnfme().intValue(), "303");
+//                //鏌ヨ鏄惁鏈夊伐浣滄。
+//                WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol303.getWorkNo().intValue());
+//                if (wrkMast == null) {
+//                    continue;
+//                }
+//                WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo());
+//                if (wrkDetl == null) {
+//                    continue;
+//                }
+//                RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetl.getAnfme().intValue(), "303");
+                RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), -1, "303");
             }else if (staProtocol317.isAutoing() && staProtocol317.isLoading() && staProtocol317.getWorkNo() != 0) {
                 //璋冨害鏈烘鑷�
-                //鏌ヨ鏄惁鏈夊伐浣滄。
-                WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol317.getWorkNo().intValue());
-                if (wrkMast == null) {
-                    continue;
-                }
-                WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo());
-                if (wrkDetl == null) {
-                    continue;
-                }
-                RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetl.getAnfme().intValue(), "317");
+//                //鏌ヨ鏄惁鏈夊伐浣滄。
+//                WrkMast wrkMast = wrkMastMapper.selectByWorkNo(staProtocol317.getWorkNo().intValue());
+//                if (wrkMast == null) {
+//                    continue;
+//                }
+//                WrkDetl wrkDetl = wrkDetlService.selectById(wrkMast.getWrkNo());
+//                if (wrkDetl == null) {
+//                    continue;
+//                }
+//                RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetl.getAnfme().intValue(), "317");
+                RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), -1, "317");
             }
         }
     }
@@ -2471,7 +2520,7 @@
             }
 
             //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠�
-            NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo());
+            NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.NORMAL.id);
             List<NyShuttleHttpCommand> commands = result.getCommands();
 
             ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
@@ -2583,7 +2632,8 @@
                 NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceLiftSta.getStaNo(), sourceLiftSta.getStaNo(), wrkMast.getWrkNo());
 
                 Random random = new Random();
-                liftCommand.setTaskNo((short) Math.abs((liftCommand.getTaskNo().intValue() + random.nextInt(9999))));//鏇存崲闅忔満浠诲姟鍙�
+                int deviceWrk = Math.abs((liftCommand.getTaskNo().intValue() + random.nextInt(9999)));//鑾峰彇璁惧宸ヤ綔鍙�
+                liftCommand.setTaskNo((short) deviceWrk);//鏇存崲闅忔満浠诲姟鍙�
 
                 ArrayList<NyLiftCommand> commands = new ArrayList<>();
                 commands.add(liftCommand);
@@ -2905,8 +2955,17 @@
 //            NavigateNode liftNode = new NavigateNode(basLift.getPoint$().getX(), basLift.getPoint$().getY());
 //            liftNode.setZ(basLift.getPoint$().getZ());
 
+            //灏忚溅宸茬粡鍦ㄧ洰鏍囧簱浣嶏紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚
+            if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) {
+                wrkMast.setWrkSts(111L);//111.灏忚溅绉诲姩瀹屾垚
+                wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈�
+                wrkMast.setModiTime(now);
+                wrkMastMapper.updateById(wrkMast);
+                return false;
+            }
+
             //鑾峰彇灏忚溅鍒扮洰鏍囧簱浣嶅懡浠�
-            NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo());
+            NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.NORMAL.id);
             if (result == null) {
                 return false;//璺緞璁$畻澶辫触
             }

--
Gitblit v1.9.1