From 7603004d9eed2904a823861e7cd6f5c2f0016500 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期一, 04 三月 2024 16:19:03 +0800
Subject: [PATCH] #条码显示

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  325 ++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 209 insertions(+), 116 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 a3cc3b7..cdb274c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -44,7 +44,6 @@
  */
 @Slf4j
 @Service("mainService")
-@Transactional
 public class MainServiceImpl {
 
     @Value("${wms.url}")
@@ -2576,7 +2575,7 @@
                                     }
                                 }
                             } catch (Exception e) {
-                                e.printStackTrace();
+//                                e.printStackTrace();
                                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                             }
 
@@ -2601,7 +2600,7 @@
                 }
             }
         } catch (Exception e) {
-            e.printStackTrace();
+//            e.printStackTrace();
         }
     }
 
@@ -2633,9 +2632,10 @@
                     }
 
                     if (wrkMast.getInvWh() == null) {
-                        wrkMast.setInvWh("Y");//鏍囪宸茬粡涓嬪彂鏈烘鑷備换鍔�
-                        if (wrkMastMapper.updateById(wrkMast) > 0) {
-                            RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetls.size(), "303");
+                        boolean result = RobotUtils.sendTask(staProtocol303.getWorkNo().toString(), wrkDetls.size(), "303");
+                        if (result) {
+                            wrkMast.setInvWh("Y");//鏍囪宸茬粡涓嬪彂鏈烘鑷備换鍔�
+                            wrkMastMapper.updateById(wrkMast);
                         }
                     }
                 }
@@ -2652,9 +2652,10 @@
                         continue;
                     }
                     if (wrkMast.getInvWh() == null) {
-                        wrkMast.setInvWh("Y");//鏍囪宸茬粡涓嬪彂鏈烘鑷備换鍔�
-                        if (wrkMastMapper.updateById(wrkMast) > 0) {
-                            RobotUtils.sendTask(staProtocol317.getWorkNo().toString(), wrkDetls.size(), "317");
+                        boolean result = RobotUtils.sendTask(staProtocol317.getWorkNo().toString(), wrkDetls.size(), "317");
+                        if (result) {
+                            wrkMast.setInvWh("Y");//鏍囪宸茬粡涓嬪彂鏈烘鑷備换鍔�
+                            wrkMastMapper.updateById(wrkMast);
                         }
                     }
                 }
@@ -2737,13 +2738,38 @@
         return false;
     }
 
+    //閫氱煡WMS褰撳墠鎷f枡绔欑偣淇℃伅
+    private boolean agvCureentCall(String staNo, String barcode) {
+        try {
+            HashMap<String, Object> param = new HashMap<>();
+            param.put("devNo", staNo);
+            param.put("containerCode", barcode);
+            String response = new HttpHandler.Builder()
+                    .setUri(wmsUrl)
+                    .setPath("/rpc/current/containerCode")
+                    .setJson(JSON.toJSONString(param))
+                    .build()
+                    .doPost();
+            JSONObject jsonObject = JSON.parseObject(response);
+            News.info("鎮寕绾匡紝WMS杩斿洖缁撴灉锛�" + jsonObject);
+            Integer code = jsonObject.getInteger("code");
+            if (code.equals(200)) {//鍛煎彨AGV
+                return true;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        }
+        return false;
+    }
+
     /**
      * AGV琛ヨ揣(鎮寕绾块�氱煡AGV鍙栬揣)
      */
     public void agvRestockIntoByHangingWire() {
         try {
             //妫�娴�350鍜�351鎵爜鍣�
-            int[] barcodeStaNo = {11, 12};//11 => 350绔欐壂鐮佸櫒,12 => 351绔欐壂鐮佸櫒
+            int[] barcodeStaNo = {11, 12,14,16,18,20};//11 => 350绔欐壂鐮佸櫒,12 => 351绔欐壂鐮佸櫒
             for (int staNo : barcodeStaNo) {
                 // 鑾峰彇鏉$爜鎵弿浠俊鎭�
                 BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, staNo);
@@ -2759,11 +2785,61 @@
                     String agvStaNo = null;
                     if (staNo == 11) {
                         agvStaNo = "303-1";
-                    } else {
+                    } else if(staNo == 12){
                         agvStaNo = "304-1";
+                    } else if(staNo == 14){
+                        agvStaNo = "311-1";
+                    } else if(staNo == 16){
+                        agvStaNo = "313-1";
+                    } else if(staNo == 18){
+                        agvStaNo = "315-1";
+                    } else if(staNo == 20){
+                        agvStaNo = "317-1";
                     }
                     //閫氱煡AGV鍙栬揣
                     boolean result = agvRestockCall(agvStaNo, barcode);
+                    if (result) {
+                        barcodeThread.setBarcode("");
+                    }
+                    log.info(barcodeThread.getSlave().getId() + "鍙锋壂鐮佸櫒锛岄�氱煡AGV鍙栬揣锛屾潯鐮佸彿锛�" + barcode);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * AGV鎷f枡绔欑偣淇℃伅
+     */
+    public void agvCurrentContainerCodeInfoWire() {
+        try {
+            //妫�娴�350鍜�351鎵爜鍣�
+            int[] barcodeStaNo = {13, 15,17,19};//11 => 350绔欐壂鐮佸櫒,12 => 351绔欐壂鐮佸櫒
+            for (int staNo : barcodeStaNo) {
+                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, staNo);
+                if (barcodeThread == null) {
+                    continue;
+                }
+                String barcode = barcodeThread.getBarcode();
+                if (!Cools.isEmpty(barcode)) {
+                    if (barcode.contains("NoRead")) {
+                        continue;
+                    }
+
+                    String agvStaNo = null;
+                    if (staNo == 13) {
+                        agvStaNo = "CS-310";
+                    } else if(staNo == 15){
+                        agvStaNo = "CS-311";
+                    } else if(staNo == 17){
+                        agvStaNo = "CS-312";
+                    } else if(staNo == 19){
+                        agvStaNo = "CS-313";
+                    }
+                    //閫氱煡WMS褰撳墠瀹瑰櫒鐮�
+                    boolean result = agvCureentCall(agvStaNo, barcode);
                     if (result) {
                         barcodeThread.setBarcode("");
                     }
@@ -2906,90 +2982,103 @@
                     ledCommand.setStaNo(wrkStaNo);
                     ledCommand.setBarcode(barcode);
                     if (ioType != 110 && ioType != 10) {
-                        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
-                        if (ioType == 101) {
-                            locDetls.forEach(locDetl -> {
-                                Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkNo);
-                                Utils.wapperSetCondition(wrapper, "batch", locDetl.getBatch());
-                                Utils.wapperSetCondition(wrapper, "three_code", locDetl.getThreeCode());
-                                Utils.wapperSetCondition(wrapper, "dead_time", locDetl.getDeadTime());
-                                Utils.wapperSetCondition(wrapper, "supp_code", locDetl.getSuppCode());//鏂欑鐮�
-                                List<WrkDetl> detl = wrkDetlService.selectList(wrapper);
-                                if (Cools.isEmpty(detl)) {
-                                    String suppCode = "";
-                                    if (locDetl.getSuppCode() != null) {
-                                        suppCode = locDetl.getSuppCode();
-                                    }
-                                    ledCommand.getMatDtos().add(new MatDto(locDetl.getMatnr(), locDetl.getMaktx(), 0D, locDetl.getAnfme(), locDetl.getSpecs(), suppCode));
-                                } else {
-                                    //鍑哄簱鏁伴噺绱
-                                    Double conut = 0.0;
-                                    for (WrkDetl wrkDetl : detl) {
-                                        conut = conut + wrkDetl.getAnfme();
-                                    }
+                        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo));
+                        wrkDetls.forEach(wrkDetl -> {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), (wrkDetl.getStock() - wrkDetl.getAnfme()), wrkDetl.getSpecs(), wrkDetl.getSuppCode(), wrkDetl.getOrderNo()));
+                        });
 
-                                    for (WrkDetl wrkDetl : detl) {
-                                        String suppCode = "";
-                                        if (wrkDetl.getSuppCode() != null) {
-                                            suppCode = wrkDetl.getSuppCode();
-                                        }
-                                        ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), (locDetl.getAnfme() - conut), wrkDetl.getSpecs(), suppCode, wrkDetl.getOrderNo()));
-                                    }
-                                }
-
-                            });
-                        } else {
-                            locDetls.forEach(locDetl -> {
-                                Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkNo);
-                                Utils.wapperSetCondition(wrapper, "batch", locDetl.getBatch());
-                                Utils.wapperSetCondition(wrapper, "three_code", locDetl.getThreeCode());
-                                Utils.wapperSetCondition(wrapper, "dead_time", locDetl.getDeadTime());
-                                Utils.wapperSetCondition(wrapper, "supp_code", locDetl.getSuppCode());//鏂欑鐮�
-                                List<WrkDetl> detl = wrkDetlService.selectList(wrapper);
-                                if (Cools.isEmpty(detl)) {
-                                    String suppCode = "";
-                                    if (locDetl.getSuppCode() != null) {
-                                        suppCode = locDetl.getSuppCode();
-                                    }
-                                    ledCommand.getMatDtos().add(new MatDto(locDetl.getMatnr(), locDetl.getMaktx(), 0D, locDetl.getAnfme(), locDetl.getSpecs(), suppCode));
-                                } else {
-                                    //鍑哄簱鏁伴噺绱
-                                    Double conut = 0.0;
-                                    for (WrkDetl wrkDetl : detl) {
-                                        conut = conut + wrkDetl.getAnfme();
-                                    }
-
-                                    for (WrkDetl wrkDetl : detl) {
-                                        String suppCode = "";
-                                        if (wrkDetl.getSuppCode() != null) {
-                                            suppCode = wrkDetl.getSuppCode();
-                                        }
-                                        ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), 0D, wrkDetl.getSpecs(), suppCode, wrkDetl.getOrderNo()));
-                                    }
-                                }
-
-                            });
-                        }
-
-
-                        if (ioType == 107) {
-                            locDetls = new ArrayList<>();
-                            ledCommand.setMatDtos(new ArrayList<>());
-                        }
-
-                        if (locDetls.isEmpty()) {
-                            List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo));
-                            wrkDetls.forEach(wrkDetl -> {
-                                ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getAnfme(), wrkDetl.getSpecs(), wrkDetl.getSuppCode()));
-                            });
-
-                            if (wrkDetls.isEmpty()) {//浠庡巻鍙叉。鏌ヨ
-                                List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectLatestByWorkNo(wrkNo, barcode);
-                                for (WrkDetlLog wrkDetlLog : wrkDetlLogs) {
-                                    ledCommand.getMatDtos().add(new MatDto(wrkDetlLog.getMatnr(), wrkDetlLog.getMaktx(), wrkDetlLog.getAnfme(), wrkDetlLog.getAnfme(), wrkDetlLog.getSpecs(), wrkDetlLog.getSuppCode()));
-                                }
-                            }
-                        }
+//                        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
+//                        if (ioType == 101) {
+//                            List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo));
+//                            wrkDetls.forEach(wrkDetl -> {
+//                                ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), 0D, wrkDetl.getSpecs(), wrkDetl.getSuppCode()));
+//                            });
+////                            locDetls.forEach(locDetl -> {
+////                                Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkNo);
+////                                Utils.wapperSetCondition(wrapper, "batch", locDetl.getBatch());
+////                                Utils.wapperSetCondition(wrapper, "three_code", locDetl.getThreeCode());
+////                                Utils.wapperSetCondition(wrapper, "dead_time", locDetl.getDeadTime());
+////                                Utils.wapperSetCondition(wrapper, "supp_code", locDetl.getSuppCode());//鏂欑鐮�
+////                                List<WrkDetl> detl = wrkDetlService.selectList(wrapper);
+////                                if (Cools.isEmpty(detl)) {
+////                                    String suppCode = "";
+////                                    if (locDetl.getSuppCode() != null) {
+////                                        suppCode = locDetl.getSuppCode();
+////                                    }
+////                                    ledCommand.getMatDtos().add(new MatDto(locDetl.getMatnr(), locDetl.getMaktx(), 0D, locDetl.getAnfme(), locDetl.getSpecs(), suppCode));
+////                                } else {
+////                                    //鍑哄簱鏁伴噺绱
+////                                    Double conut = 0.0;
+////                                    for (WrkDetl wrkDetl : detl) {
+////                                        conut = conut + wrkDetl.getAnfme();
+////                                    }
+////
+////                                    for (WrkDetl wrkDetl : detl) {
+////                                        String suppCode = "";
+////                                        if (wrkDetl.getSuppCode() != null) {
+////                                            suppCode = wrkDetl.getSuppCode();
+////                                        }
+////                                        ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), (locDetl.getAnfme() - conut), wrkDetl.getSpecs(), suppCode, wrkDetl.getOrderNo()));
+////                                    }
+////                                }
+////
+////                            });
+//                        } else {
+//                            locDetls.forEach(locDetl -> {
+//                                Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkNo);
+//                                Utils.wapperSetCondition(wrapper, "batch", locDetl.getBatch());
+//                                Utils.wapperSetCondition(wrapper, "three_code", locDetl.getThreeCode());
+//                                Utils.wapperSetCondition(wrapper, "dead_time", locDetl.getDeadTime());
+//                                Utils.wapperSetCondition(wrapper, "supp_code", locDetl.getSuppCode());//鏂欑鐮�
+//                                List<WrkDetl> detl = wrkDetlService.selectList(wrapper);
+//                                if (Cools.isEmpty(detl)) {
+//                                    String suppCode = "";
+//                                    if (locDetl.getSuppCode() != null) {
+//                                        suppCode = locDetl.getSuppCode();
+//                                    }
+//                                    ledCommand.getMatDtos().add(new MatDto(locDetl.getMatnr(), locDetl.getMaktx(), 0D, locDetl.getAnfme(), locDetl.getSpecs(), suppCode));
+//                                } else {
+//                                    //鍑哄簱鏁伴噺绱
+//                                    Double conut = 0.0;
+//                                    for (WrkDetl wrkDetl : detl) {
+//                                        conut = conut + wrkDetl.getAnfme();
+//                                    }
+//
+//                                    for (WrkDetl wrkDetl : detl) {
+//                                        String suppCode = "";
+//                                        if (wrkDetl.getSuppCode() != null) {
+//                                            suppCode = wrkDetl.getSuppCode();
+//                                        }
+//                                        ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), (wrkDetl.getStock() - conut), wrkDetl.getSpecs(), suppCode, wrkDetl.getOrderNo()));
+//                                    }
+//                                }
+//
+//                            });
+//                        }
+//
+//
+//                        if (ioType == 107) {
+//                            locDetls = new ArrayList<>();
+//                            ledCommand.setMatDtos(new ArrayList<>());
+//                        }
+//
+//                        if (locDetls.isEmpty() && ioType != 101) {
+//                            List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo));
+//                            wrkDetls.forEach(wrkDetl -> {
+//                                if (wrkDetl.getAnfme() > 0D) {
+//                                    ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getAnfme(), wrkDetl.getSpecs(), wrkDetl.getSuppCode()));
+//                                }
+//                            });
+//
+//                            if (wrkDetls.isEmpty()) {//浠庡巻鍙叉。鏌ヨ
+//                                List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectLatestByWorkNo(wrkNo, barcode);
+//                                for (WrkDetlLog wrkDetlLog : wrkDetlLogs) {
+//                                    if (wrkDetlLog.getAnfme() > 0D) {
+//                                        ledCommand.getMatDtos().add(new MatDto(wrkDetlLog.getMatnr(), wrkDetlLog.getMaktx(), wrkDetlLog.getAnfme(), wrkDetlLog.getAnfme(), wrkDetlLog.getSpecs(), wrkDetlLog.getSuppCode()));
+//                                    }
+//                                }
+//                            }
+//                        }
                     }
 
                     commands.add(ledCommand);
@@ -4011,32 +4100,36 @@
 
     //鎵弿璁惧PakMk鏍囪鏄惁瓒呮椂
     public synchronized void scanDevicePakMk() {
-        //鎵弿灏忚溅
-        for (ShuttleSlave slave : slaveProperties.getShuttle()) {
-            NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId());
-            NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
-            if (shuttleProtocol == null) {
-                continue;
+        try {
+            //鎵弿灏忚溅
+            for (ShuttleSlave slave : slaveProperties.getShuttle()) {
+                NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId());
+                NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+                if (shuttleProtocol == null) {
+                    continue;
+                }
+
+                if ((System.currentTimeMillis() - shuttleProtocol.getSendTime() > (1000 * 60 * 5)) && shuttleProtocol.getPakMk()) {
+                    //璁惧瓒呰繃5鍒嗛挓杩樻病澶嶄綅鏍囪
+                    shuttleProtocol.setPakMk(false);//澶嶄綅鏍囪
+                }
             }
 
-            if ((System.currentTimeMillis() - shuttleProtocol.getSendTime() > (1000*60*5)) && shuttleProtocol.getPakMk()) {
-                //璁惧瓒呰繃5鍒嗛挓杩樻病澶嶄綅鏍囪
-                shuttleProtocol.setPakMk(false);//澶嶄綅鏍囪
-            }
-        }
+            //鎵弿鎻愬崌鏈�
+            for (LiftSlave slave : slaveProperties.getLift()) {
+                LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, slave.getId());
+                LiftProtocol liftProtocol = liftThread.getLiftProtocol();
+                if (liftProtocol == null) {
+                    continue;
+                }
 
-        //鎵弿鎻愬崌鏈�
-        for (LiftSlave slave : slaveProperties.getLift()) {
-            LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, slave.getId());
-            LiftProtocol liftProtocol = liftThread.getLiftProtocol();
-            if (liftProtocol == null) {
-                continue;
+                if ((System.currentTimeMillis() - liftProtocol.getSendTime() > (1000 * 60 * 5)) && liftProtocol.getPakMk()) {
+                    //璁惧瓒呰繃5鍒嗛挓杩樻病澶嶄綅鏍囪
+                    liftProtocol.setPakMk(false);//澶嶄綅鏍囪
+                }
             }
-
-            if ((System.currentTimeMillis() - liftProtocol.getSendTime() > (1000*60*5)) && liftProtocol.getPakMk()) {
-                //璁惧瓒呰繃5鍒嗛挓杩樻病澶嶄綅鏍囪
-                liftProtocol.setPakMk(false);//澶嶄綅鏍囪
-            }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
 
     }

--
Gitblit v1.9.1