From d08e5f29d4aea9f160b45c86e0004efbf34c76bd Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 31 七月 2023 13:54:37 +0800
Subject: [PATCH] 提升机

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  121 +++++++++++++++++++++-------------------
 1 files changed, 64 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 8a750bd..45518cf 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.common.SpringUtils;
 import com.core.exception.CoolException;
@@ -200,16 +201,17 @@
                     }
 
                     // 杩囨护鐩樼偣/鎷f枡/骞舵澘浠诲姟
-//                    if (null != wrkMastMapper.selectPickStepByBarcode(barcode)) {
-//                        continue;
-//                    }
+                    WrkMast wrkMast1 = wrkMastMapper.selectPickStepByBarcode(barcode);
+                    if (null != wrkMast1) {
+                        continue;
+                    }
 
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
-//                    WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
-//                    if (wrkMast != null) {
-//                        News.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
-//                        continue;
-//                    }
+                    WrkMast wrkMast2 = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
+                    if (wrkMast2 != null) {
+                        News.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast2.getWrkNo());
+                        continue;
+                    }
 
                     try {
                         LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
@@ -382,6 +384,7 @@
     /**
      * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
      */
+    @Transactional
     public synchronized void stnToCrnStnPick(){
         for (DevpSlave devp : slaveProperties.getDevp()) {
             // 閬嶅巻鎷f枡鍏ュ簱鍙�
@@ -397,25 +400,20 @@
                 }
                 if (staProtocol.isAutoing()
                         && staProtocol.isLoading()
-                        && staProtocol.isInEnable()
-                        // 0 - 9990 鎴栬�� 9996
-                        && (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9990)
+                        && (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9999)
                         && staProtocol.getStaNo().equals(staProtocol.getSiteId().shortValue())
                         && staProtocol.isPakMk()){
 
                     // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-//                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
-//                    if (barcodeThread == null) {
-//                        continue;
-//                    }
+                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
+                    if (barcodeThread == null) {
+                        continue;
+                    }
+                    String barcode = barcodeThread.getBarcode();
 
                     WrkMast wrkMast = null;
-                    if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9990) {
-                        wrkMast = wrkMastMapper.selectPickStep(staProtocol.getWorkNo());
-                        if (null == wrkMast) {
-                            continue;
-                        }
-                    } else {
+                    wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode);
+                    if (wrkMast == null) {
                         continue;
                     }
 //                    if (staProtocol.getWorkNo() == 9996) {
@@ -455,6 +453,7 @@
 //                            News.error("{}鏉$爜閿欒锛屾殏鏃犳嫞鏂欎换鍔★紒", barcode);
 //                        }
 //                    }
+
                     if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107)
                         || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo()) ) {
                         continue;
@@ -509,14 +508,22 @@
                             wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯
                             wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔�
                             wrkMast.setCrnNo(dto.getCrnNo());
-                            wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
-                            wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+                            wrkMast.setLocNo(sourceLocNo); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+                            wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌�
                             wrkMast.setModiTime(new Date());
                             if (wrkMastMapper.updateById(wrkMast) == 0) {
                                 throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
                             }
                             if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) {
                                 throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+                            }
+
+                            // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+                            LocMast locMast = locMastService.selectById(sourceLocNo);
+                            locMast.setLocSts("Q");
+                            locMast.setModiTime(new Date());
+                            if (!locMastService.updateById(locMast)) {
+                                throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�");
                             }
 
                             // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
@@ -565,7 +572,7 @@
      * 鍒濆鍖栧疄鏃跺湴鍥�
      */
     public synchronized void initRealtimeBasMap() {
-        for (int i = 1; i <= 4; i++) {//鎬诲叡鍥涘眰妤�
+        for (int i = 1; i <= 10; i++) {//鎬诲叡鍥涘眰妤�
             Object data = redisUtil.get("realtimeBasMap_" + i);
             if (data == null) {//redis鍦板浘鏁版嵁涓虹┖锛屼粠鏁版嵁搴撲腑鑾峰彇
                 BasMap basMap = basMapService.selectLatestMap(i);
@@ -778,7 +785,7 @@
                                     if (commands == null) {
                                         continue;//鎵句笉鍒拌矾寰勭瓑寰呬笅涓�娆�
                                     }
-                                    assignCommand.setCommands(commands);
+//                                    assignCommand.setCommands(commands);
                                     //鍒嗛厤鐩爣搴撲綅
                                     shuttleProtocol.setLocNo(wrkMast.getLocNo());
                                     //鐩爣搴撲綅
@@ -804,7 +811,7 @@
                                     shuttleProtocol.setLocNo(liftSiteLocNo);
                                     //鐩爣搴撲綅
                                     assignCommand.setLocNo(liftSiteLocNo);
-                                    assignCommand.setCommands(commands);
+//                                    assignCommand.setCommands(commands);
                                     wrkMast.setWrkSts(5L);//灏忚溅杩佺Щ鐘舵��
                                 }
                             } else if (wrkMast.getWrkSts() == 8) {
@@ -825,7 +832,7 @@
                                 ShuttleCommand moveCommand = shuttleThread.getMoveCommand(startCode, distCode, 1600, runDirection, null, null, 500);
                                 commands.add(0, moveCommand);//灏嗚鎸囦护娣诲姞鍒伴槦澶�
 
-                                assignCommand.setCommands(commands);
+//                                assignCommand.setCommands(commands);
                                 //鍒嗛厤鐩爣搴撲綅
                                 shuttleProtocol.setLocNo(wrkMast.getLocNo());
                                 //鐩爣搴撲綅
@@ -902,12 +909,12 @@
         //鑾峰彇灏忚溅绉诲姩閫熷害
         BasShuttle basShuttle = basShuttleService.selectById(assignCommand.getShuttleNo());
         Integer runSpeed = 1000;
-        if (basShuttle != null) {
-            Integer runSpeed1 = basShuttle.getRunSpeed();
-            if (runSpeed1 != null) {
-                runSpeed = runSpeed1;
-            }
-        }
+//        if (basShuttle != null) {
+//            Integer runSpeed1 = basShuttle.getRunSpeed();
+//            if (runSpeed1 != null) {
+//                runSpeed = runSpeed1;
+//            }
+//        }
 
         //璁$畻灏忚溅璧风偣鍒颁腑鐐规墍闇�鍛戒护
         List<NavigateNode> calc = NavigateUtils.calc(startLocNo, locNo, mapType, Utils.getShuttlePoints(shuttleThread.getSlave().getId(), Utils.getLev(startLocNo)));
@@ -938,13 +945,13 @@
                 middlePath = nodes.get(nodes.size() - 3);
                 //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
                 middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
-                middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, 3);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+                middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
             } else if (nodes.size() > 5) {//涓鐮佷紶鍊掓暟绗簩涓�
                 //涓棿璺緞
                 middlePath = nodes.get(nodes.size() - 2);
                 //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
                 middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
-                middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, 2);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+                middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
             }
 
             //鐩爣璺緞
@@ -972,12 +979,12 @@
         //鑾峰彇灏忚溅绉诲姩閫熷害
         BasShuttle basShuttle = basShuttleService.selectById(assignCommand.getShuttleNo());
         Integer runSpeed = 1000;
-        if (basShuttle != null) {
-            Integer runSpeed1 = basShuttle.getRunSpeed();
-            if (runSpeed1 != null) {
-                runSpeed = runSpeed1;
-            }
-        }
+//        if (basShuttle != null) {
+//            Integer runSpeed1 = basShuttle.getRunSpeed();
+//            if (runSpeed1 != null) {
+//                runSpeed = runSpeed1;
+//            }
+//        }
 
         List<NavigateNode> allNode = new ArrayList<>();
 
@@ -1008,13 +1015,13 @@
                     middlePath = nodes.get(nodes.size() - 3);
                     //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
                     middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
-                    middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, 3);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+                    middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
                 } else if (nodes.size() > 5) {//涓鐮佷紶鍊掓暟绗簩涓�
                     //涓棿璺緞
                     middlePath = nodes.get(nodes.size() - 2);
                     //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
                     middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
-                    middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, 2);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+                    middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
                 }
 
                 //鐩爣璺緞
@@ -1060,13 +1067,13 @@
                 middlePath = nodes.get(nodes.size() - 3);
                 //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
                 middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
-                middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, 3);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+                middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
             } else if (nodes.size() > 5) {//涓鐮佷紶鍊掓暟绗簩涓�
                 //涓棿璺緞
                 middlePath = nodes.get(nodes.size() - 2);
                 //閫氳繃xy鍧愭爣灏忚溅浜岀淮鐮�
                 middleCodeNum = NavigatePositionConvert.xyToPosition(middlePath.getX(), middlePath.getY(), middlePath.getZ());
-                middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, 2);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+                middleToDistDistance = NavigateUtils.getMiddleToDistDistance(nodes, middlePath);//璁$畻涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
             }
 
             //鐩爣璺緞
@@ -1233,7 +1240,7 @@
                             shuttleProtocol.setSourceLocNo(currentLocNo);
                             //鐩爣搴撲綅
                             assignCommand.setLocNo(wrkMast.getSourceLocNo());
-                            assignCommand.setCommands(commands);
+//                            assignCommand.setCommands(commands);
                             wrkMast.setWrkSts(26L);//灏忚溅鎼繍涓�
 
                             if (wrkMastMapper.updateById(wrkMast) > 0) {
@@ -1267,7 +1274,7 @@
 
                             //鐩爣搴撲綅
                             assignCommand.setLocNo(liftSiteLocNo);
-                            assignCommand.setCommands(commands);
+//                            assignCommand.setCommands(commands);
                             wrkMast.setWrkSts(22L);//灏忚溅杩佺Щ鐘舵��
 
                             if (wrkMastMapper.updateById(wrkMast) > 0) {
@@ -1314,7 +1321,7 @@
                         shuttleProtocol.setSourceLocNo(liftSiteLocNo);
                         //鐩爣搴撲綅
                         assignCommand.setLocNo(wrkMast.getSourceLocNo());
-                        assignCommand.setCommands(commands);
+//                        assignCommand.setCommands(commands);
                         wrkMast.setWrkSts(26L);//灏忚溅鎼繍涓�
 
                         if (wrkMastMapper.updateById(wrkMast) > 0) {
@@ -1343,10 +1350,10 @@
 
         //鍒ゆ柇鍏朵粬绌洪棽绌挎杞︽槸鍚︾浠诲姟鏈�杩�
         String distLocNo = null;//鐩爣鍦扮偣锛屽叆搴�=銆嬫彁鍗囨満鍙o紝鍑哄簱=銆嬭揣鐗╁簱浣嶅彿
-        if (wrkMast.getIoType() == 1) {
+        if (wrkMast.getIoType() < 101 && wrkMast.getIoType() != 11) {
             //鍏ュ簱
             distLocNo = Utils.levToOutInStaLocNo(lev);
-        }else if(wrkMast.getIoType() == 101){
+        }else if(wrkMast.getIoType() >= 101){
             //鍑哄簱
             distLocNo = locNo;
         } else if (wrkMast.getIoType() == 11) {
@@ -1865,7 +1872,7 @@
 
                 //鎵�闇�鍛戒护缁勫悎瀹屾瘯锛屾洿鏂版暟鎹簱锛屾彁浜ゅ埌绾跨▼鍘诲伐浣�
                 LiftAssignCommand assignCommand = new LiftAssignCommand();
-                assignCommand.setCommands(commands);
+//                assignCommand.setCommands(commands);
                 assignCommand.setLiftNo(liftProtocol.getLiftNo());
                 assignCommand.setTaskNo(liftProtocol.getTaskNo());
                 if (wrkMastMapper.updateById(wrkMast) > 0) {
@@ -2119,7 +2126,7 @@
                 shuttleProtocol.setLocNo(liftSiteLocNo);
                 //鐩爣搴撲綅
                 assignCommand.setLocNo(liftSiteLocNo);
-                assignCommand.setCommands(commands);
+//                assignCommand.setCommands(commands);
                 wrkMast.setWrkSts(5L);//灏忚溅杩佺Щ鐘舵��
 
                 if (wrkMastMapper.updateById(wrkMast) > 0) {
@@ -2226,7 +2233,7 @@
             //鍒嗛厤婧愬簱浣�
             shuttleProtocol.setSourceLocNo(wrkMast.getSourceLocNo());
 
-            assignCommand.setCommands(commands);
+//            assignCommand.setCommands(commands);
             //鍒嗛厤鐩爣搴撲綅
             shuttleProtocol.setLocNo(wrkMast.getLocNo());
             //鐩爣搴撲綅
@@ -2744,7 +2751,7 @@
                     commands.add(command);
 
                     //鎸囦护闆嗗垎閰�
-                    assignCommand.setCommands(commands);
+//                    assignCommand.setCommands(commands);
 
                     wrkCharge.setWrkSts(56L);//鍏呯數涓姸鎬�
                     if (wrkChargeMapper.updateById(wrkCharge) > 0) {
@@ -2786,7 +2793,7 @@
                     assignCommand.setLocNo(chargeLocNo);
                     //婧愬簱浣�
                     assignCommand.setSourceLocNo(currentLocNo);
-                    assignCommand.setCommands(commands);
+//                    assignCommand.setCommands(commands);
                     wrkCharge.setWrkSts(52L);//灏忚溅杩佺Щ鐘舵��
                     if (wrkChargeMapper.updateById(wrkCharge) > 0) {
                         //涓嬪彂浠诲姟
@@ -2824,7 +2831,7 @@
                 wrkCharge.setWrkSts(54L);//鎻愬崌鏈烘惉杩愪腑
                 //鎵�闇�鍛戒护缁勫悎瀹屾瘯锛屾洿鏂版暟鎹簱锛屾彁浜ゅ埌绾跨▼鍘诲伐浣�
                 LiftAssignCommand assignCommand = new LiftAssignCommand();
-                assignCommand.setCommands(commands);
+//                assignCommand.setCommands(commands);
                 assignCommand.setLiftNo(liftProtocol.getLiftNo());
                 assignCommand.setTaskNo(liftProtocol.getTaskNo());
                 if (wrkChargeMapper.updateById(wrkCharge) > 0) {
@@ -2879,7 +2886,7 @@
                 commands.add(command);
 
                 //鎸囦护闆嗗垎閰�
-                assignCommand.setCommands(commands);
+//                assignCommand.setCommands(commands);
 
                 wrkCharge.setWrkSts(56L);//鍏呯數涓姸鎬�
                 if (wrkChargeMapper.updateById(wrkCharge) > 0) {

--
Gitblit v1.9.1