From d13a01d1769f29b336e5b9f8612c6d41aaabbbb1 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 22 十一月 2024 20:42:20 +0800
Subject: [PATCH] #读取地图文件优化

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   70 ++++++++++++++++++++++++++--------
 1 files changed, 53 insertions(+), 17 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 9f32414..1f5823c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -112,6 +112,8 @@
     private NavigateMapUtils navigateMapUtils;
     @Autowired
     private WrkDetlLogService wrkDetlLogService;
+    @Autowired
+    private MatService matService;
 
 
     /**
@@ -2513,7 +2515,7 @@
     /**
      * AGV琛ヨ揣 => 鐢熸垚鍏ュ簱閫氱煡妗�
      */
-    public void robotGenerateAgvTask() {
+    public synchronized void robotGenerateAgvTask() {
         try {
             //妫�娴�300绔欐槸鍚﹁嚜鍔ㄣ�佹湁鐗┿�佸伐浣滃彿
             for (DevpSlave devp : slaveProperties.getDevp()) {
@@ -2539,10 +2541,13 @@
                         //鍒ゆ柇鏈烘鑷傛嫞鏂欑珯鏄惁绌洪棽
                         StaProtocol staProtocol303 = devpThread.getStation().get(303);
                         StaProtocol staProtocol317 = devpThread.getStation().get(317);
-                        if (staProtocol303.isAutoing() && !staProtocol303.isLoading()) {
+
+                        List<WrkMast> wrkMasts303 = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 25).eq("sta_no", 303));
+                        List<WrkMast> wrkMasts317 = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 25).eq("sta_no", 317));
+                        if (staProtocol303.isAutoing() && !staProtocol303.isLoading() && wrkMasts303.isEmpty()) {
                             //鑷姩銆佹棤鐗�
                             targetSta = (short) 303;
-                        } else if (staProtocol317.isAutoing() && !staProtocol317.isLoading()) {
+                        } else if (staProtocol317.isAutoing() && !staProtocol317.isLoading() && wrkMasts317.isEmpty()) {
                             //鑷姩銆佹棤鐗�
                             targetSta = (short) 317;
                         } else {
@@ -2613,7 +2618,7 @@
     /**
      * AGV琛ヨ揣 => 鏈烘鑷傛嫞鏂�
      */
-    public void agvRestockByRobot() {
+    public synchronized void agvRestockByRobot() {
         try {
             //妫�娴�300绔欐槸鍚﹁嚜鍔ㄣ�佹湁鐗┿�佸伐浣滃彿
             for (DevpSlave devp : slaveProperties.getDevp()) {
@@ -2674,7 +2679,7 @@
     /**
      * AGV琛ヨ揣(閫氱煡AGV鍙栬揣)
      */
-    public void agvRestockInto() {
+    public synchronized void agvRestockInto() {
         try {
             //妫�娴�309鍜�312绔欐槸鍚﹁嚜鍔ㄣ�佹湁鐗�
             for (DevpSlave devp : slaveProperties.getDevp()) {
@@ -2695,8 +2700,11 @@
                     String barcode = barcodeThread.getBarcode();
                     if (!Cools.isEmpty(barcode)) {
                         //閫氱煡AGV鍙栬揣
-                        agvRestockCall("301-1", barcode);
-                        log.info("閫氱煡AGV鍙栬揣锛屾潯鐮佸彿锛�" + barcode);
+                        boolean result = agvRestockCall("301-1", barcode);
+                        log.info("鏈烘鑷傞�氱煡AGV鍙栬揣锛屾潯鐮佸彿锛�" + barcode);
+                        if (result) {
+                            barcodeThread.setBarcode("");
+                        }
                     }
                 }
 
@@ -2709,8 +2717,11 @@
                     String barcode = barcodeThread.getBarcode();
                     if (!Cools.isEmpty(barcode)) {
                         //閫氱煡AGV鍙栬揣
-                        agvRestockCall("302-1", barcode);
-                        log.info("閫氱煡AGV鍙栬揣锛屾潯鐮佸彿锛�" + barcode);
+                        boolean result = agvRestockCall("302-1", barcode);
+                        log.info("鏈烘鑷傞�氱煡AGV鍙栬揣锛屾潯鐮佸彿锛�" + barcode);
+                        if (result) {
+                            barcodeThread.setBarcode("");
+                        }
                     }
                 }
             }
@@ -2772,7 +2783,7 @@
     /**
      * AGV琛ヨ揣(鎮寕绾块�氱煡AGV鍙栬揣)
      */
-    public void agvRestockIntoByHangingWire() {
+    public synchronized void agvRestockIntoByHangingWire() {
         try {
             //妫�娴�350鍜�351鎵爜鍣�
             int[] barcodeStaNo = {11, 12,14,16,18,20};//11 => 350绔欐壂鐮佸櫒,12 => 351绔欐壂鐮佸櫒
@@ -2818,7 +2829,7 @@
     /**
      * AGV鎷f枡绔欑偣淇℃伅
      */
-    public void agvCurrentContainerCodeInfoWire() {
+    public synchronized void agvCurrentContainerCodeInfoWire() {
         try {
             //妫�娴�350鍜�351鎵爜鍣�
             int[] barcodeStaNo = {13, 15,17,19};//11 => 350绔欐壂鐮佸櫒,12 => 351绔欐壂鐮佸櫒
@@ -2992,13 +3003,38 @@
                     ledCommand.setBarcode(barcode);
                     if (ioType != 110 && ioType != 10) {
                         List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo));
-                        wrkDetls.forEach(wrkDetl -> {
-                            double remainNum = wrkDetl.getStock() - wrkDetl.getAnfme();//鍓╀綑鏁伴噺
-                            if (remainNum < 0) {
-                                remainNum = 0;
+                        if (!wrkDetls.isEmpty()) {
+                            wrkDetls.forEach(wrkDetl -> {
+                                double remainNum = wrkDetl.getStock() - wrkDetl.getAnfme();//鍓╀綑鏁伴噺
+                                if (remainNum < 0) {
+                                    remainNum = 0;
+                                }
+                                String matnr = wrkDetl.getMatnr();
+                                Mat mat = matService.selectByMatnr(wrkDetl.getMatnr());
+                                if (mat != null) {
+                                    if (!mat.getMatnr().equals(mat.getMatnr2())) {
+                                        matnr += " - " + mat.getMatnr2();
+                                    }
+                                }
+                                ledCommand.getMatDtos().add(new MatDto(matnr, wrkDetl.getMaktx(), wrkDetl.getAnfme(), remainNum, wrkDetl.getSpecs(), wrkDetl.getSuppCode(), wrkDetl.getOrderNo()));
+                            });
+                        }else {
+                            List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectLatestByWorkNo(wrkNo, barcode);
+                            for (WrkDetlLog wrkDetlLog : wrkDetlLogs) {
+                                double remainNum = wrkDetlLog.getStock() - wrkDetlLog.getAnfme();//鍓╀綑鏁伴噺
+                                if (remainNum < 0) {
+                                    remainNum = 0;
+                                }
+                                String matnr = wrkDetlLog.getMatnr();
+                                Mat mat = matService.selectByMatnr(wrkDetlLog.getMatnr());
+                                if (mat != null) {
+                                    if (!mat.getMatnr().equals(mat.getMatnr2())) {
+                                        matnr += " - " + mat.getMatnr2();
+                                    }
+                                }
+                                ledCommand.getMatDtos().add(new MatDto(matnr, wrkDetlLog.getMaktx(), wrkDetlLog.getAnfme(), remainNum, wrkDetlLog.getSpecs(), wrkDetlLog.getSuppCode()));
                             }
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), remainNum, wrkDetl.getSpecs(), wrkDetl.getSuppCode(), wrkDetl.getOrderNo()));
-                        });
+                        }
 
 //                        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
 //                        if (ioType == 101) {

--
Gitblit v1.9.1