From 5ae3b6c3d604f16c2ecc5057d720d5d79c8c091b Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期日, 23 十一月 2025 14:21:33 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   99 +++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 86 insertions(+), 13 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 412410d..0a2b19e 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -111,6 +111,8 @@
     private BasArmMastService basArmMastService;
     @Autowired
     private ApiLogService apiLogService;
+    @Autowired
+    private BasDevpOptService basDevpOptService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -201,6 +203,7 @@
                         MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
                     }
                     staProtocol.setWorkNo(wrkNo);
+                    staProtocol.setErrCode(errMsg);
                     News.info("寮傚父鍒ゆ柇{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
                     wrkNo++;
                     staProtocol.setStaNo(inSta.getBackSta().shortValue());
@@ -229,6 +232,7 @@
                             MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
                         }
                         staProtocol.setWorkNo(wrkNo);
+                        staProtocol.setErrCode(errMsg);
                         News.info("鏉$爜鍒ゆ柇{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg,wrkNo);
                         wrkNo++;
                         staProtocol.setStaNo(inSta.getBackSta().shortValue());
@@ -299,7 +303,6 @@
                     }
                     try {
                         LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
                         SearchLocParam param = new SearchLocParam();
                         param.setBarcode(barcode);
                         param.setIoType(1);
@@ -334,6 +337,10 @@
                             staProtocol.setWorkNo(wrkNo);
                             staProtocol.setStaNo(inSta.getBackSta().shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            switch (jsonObject.getInteger("code")){
+                                case 700: staProtocol.setErrCode("鏈粍鎵�");break;
+                                case 500: staProtocol.setErrCode("宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�");break;
+                            }
                             MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                             News.info("浠诲姟涓嬪彂鍒ゆ柇{}鍏ュ簱鍥為��锛歿}锛岄敊璇紪鍙穥},浠诲姟鍙凤細{}", inSta.getStaNo(), errMsg,jsonObject.getInteger("code"),wrkNo);
                             wrkNo++;
@@ -2029,7 +2036,7 @@
                             BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
                             String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
                             BasErrLog basErrLog = new BasErrLog(
-                                    null,    // 缂栧彿
+                                    crnProtocol.getUuid(),    // 缂栧彿
                                     wrkMast.getWrkNo(),    // 宸ヤ綔鍙�
                                     now,    // 鍙戠敓鏃堕棿
                                     null,    // 缁撴潫鏃堕棿
@@ -2077,7 +2084,7 @@
                             BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
                             String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
                             BasErrLog basErrLog = new BasErrLog(
-                                    null,    // 缂栧彿
+                                    crnProtocol.getUuid(),    // 缂栧彿
                                     null,    // 宸ヤ綔鍙�
                                     now,    // 鍙戠敓鏃堕棿
                                     null,    // 缁撴潫鏃堕棿
@@ -2259,7 +2266,8 @@
                 WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
                 if (null == wrkMast) {
                     if(staProtocol.getWorkNo() > 9999){ //寮傚父閫�鍑�
-                        MessageQueue.offer(SlaveType.Led, 2, new Task(3, "寮傚父閫�鍑�"));
+                        String err = basDevpOptService.getErr(staProtocol.getWorkNo());
+                        MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, err));
                     }
                     continue;
                 }
@@ -2390,6 +2398,8 @@
             // 鍛戒护闆嗗悎
             boolean reset = true;
             for (Integer staNo : led.getStaArr()) {
+//                System.out.println("staArr = " + staNo);
+
                 // 鑾峰彇鍙夎溅绔欑偣
                 StaProtocol staProtocol = devpThread.getStation().get(staNo);
                 if (staProtocol == null) { continue; }
@@ -3302,6 +3312,9 @@
             // 鑾峰彇RGV淇℃伅
             RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
             RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (rgvProtocol == null) {
+                continue;
+            }
             if (rgvProtocol.getStatusType1() != RgvStatusType.IDLE && rgvProtocol.getModeType() != RgvModeType.AUTO) {
                 continue;
             }
@@ -3518,6 +3531,7 @@
                 basRgv.setPakAll("1");
                 basRgvService.updateById(basRgv);
                 rgvThread.setPakMk(true);
+
             }
 //            List<WrkMastSta> wrkMastStaPakingNum = wrkMastStaService.selectPakingWrkNum(basRgv.getRgvNo());
 //            if(wrkMastStaPakingNum.size() <1){
@@ -3537,6 +3551,7 @@
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
             RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
             RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+
             if (rgvProtocol == null) {
                 continue;
             }
@@ -3547,6 +3562,9 @@
                 continue;
             }
             if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){
+                rgvThread.setPaking(true);
+            }
+            if(rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0 && rgvProtocol.getStatusType1() == RgvStatusType.IDLE){
                 rgvThread.setPaking(true);
             }
             if(rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing()){
@@ -3704,7 +3722,7 @@
 
                 if(wrkMastSta3 != null ){
                     List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
-                    if(wrkMastStaPaking.size() < 1 ){//宸叉湁鏍囪涓嶅啀鏍囪
+                    if(wrkMastStaPaking.size() < 1 && !wrkMastSta3.getWrkNo().equals(wrkMastSta.getWrkNo())){//宸叉湁鏍囪涓嶅啀鏍囪
                         wrkMastSta3.setMk(1);
                         basRgv.setPakAll("0");
                         basRgvService.updateById(basRgv);
@@ -3836,8 +3854,13 @@
             wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣�
             wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
             boolean sign = false;
+
             sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
             if (sign){
+                if(wrkMastSta.getMk() == 1){//鑻ュ凡鎵ц
+                    basRgv.setPakAll("1");
+                    basRgvService.updateById(basRgv);
+                }
                 if(LEFT_POSITION.contains(wrkMastSta.getStaEnd())){
                     basRgv.setPakToCrn("0");
                     basRgvService.updateById(basRgv);
@@ -3847,7 +3870,7 @@
                         }
                     }
                 }
-                if(wrkMastSta3 != null ){
+                if(wrkMastSta3 != null &&  !wrkMastSta3.getWrkNo().equals(wrkMastSta.getWrkNo())){
                     List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
                     if(wrkMastStaPaking.size() < 1){
                         wrkMastSta3.setMk(1);
@@ -3855,7 +3878,7 @@
                         basRgvService.updateById(basRgv);
                         try{
                             wrkMastStaMapper.updateById(wrkMastSta3);
-                            log.error("閿佸畾鐩搁殧绔欑偣浠诲姟");
+                            log.error("閿佸畾鐩搁殧绔欑偣浠诲姟:"+ wrkMastSta3.getWrkNo());
                         }catch (Exception e){
                             log.error("閿佸畾鐩搁殧绔欑偣浠诲姟澶辫触");
                         }
@@ -4356,7 +4379,7 @@
                             //arm浠诲姟瀹屾垚鑷姩缁勬墭
                             ReturnT<String> result = new PostMesDataUtils().postMesData("arm浠诲姟瀹屾垚鑷姩缁勬墭",wmsUrl, wmsComb, combParam);
                             if (result.getCode()==200){
-                                basArmMastService.updateArmMastStatus(basArm.getArmNo(),basArm.getSortingLineSou(),3,4);
+                                basArmMastService.updateArmMastStatus(basArm.getArmNo(),basArm.getSortingLineSou(),3,5);
                             } else {
                                 armTaskAssignmentCallApiLogSave(staProtocol, "鑷姩缁勬墭澶辫触", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛�===銆嬭嚜鍔ㄧ粍鎵樺け璐ワ紝绛夊緟閲嶈瘯", false);
 //                                log.error("鏈烘鑷傛姄鍙栦换鍔″畬鎴愶細"+JSON.toJSON(basArmMastList)+"===銆嬭嚜鍔ㄧ粍鎵樺け璐ワ紝绛夊緟閲嶈瘯");
@@ -4525,7 +4548,7 @@
                                 new EntityWrapper<BasArmMast>()
                                         .eq("arm_no", basArm.getArmNo())
                                         .eq("sorting_line", basArm.getSortingLineSou())
-                                        .eq("sku", basArmMast.getSku())
+                                        .eq("matnr", basArmMast.getMatnr())
                                         .eq("order_no", basArmMast.getOrderNo())
                                         .eq("binding_tags", basArmMast.getBindingTags())
                         );
@@ -4550,7 +4573,7 @@
                                                     .eq("status", 2)
                                                     .eq("binding_tags", basArmMast.getBindingTags())
                                     );
-                                    Double anfmeSignOne = basArmMastService.selectBasArmMastSignValue(basArmMastOne.getOrderNo(), basArmMastOne.getSku(),basArmMastOne.getBindingTags());
+                                    Double anfmeSignOne = basArmMastService.selectBasArmMastSignValue(basArmMastOne.getOrderNo(), basArmMastOne.getMatnr(),basArmMastOne.getBindingTags());
 
                                     if (anfmeSignOne>1D){
                                         armTaskAssignmentCallApiLogSave(staProtocol, "鏉$爜鏁版嵁宸插瓨鍦紒锛侊紒", staProtocol.getSiteId()+"鐮佸灈浣嶇疆锛屾潯鐮佹暟鎹鍦ㄨ嚜鍔ㄧ粍鎵�===>>" + barcode, false);
@@ -4559,12 +4582,12 @@
 
                                 }
                             }
-                            OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getSku());
+                            OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getMatnr());
 
                             if (Cools.isEmpty(orderDetlValueResultUtil)){
                                 continue;
                             }
-                            Double anfmeSign = basArmMastService.selectBasArmMastSignValue(basArmMast.getOrderNo(), basArmMast.getSku(),basArmMast.getBindingTags());
+                            Double anfmeSign = basArmMastService.selectBasArmMastSignValue(basArmMast.getOrderNo(), basArmMast.getMatnr(),basArmMast.getBindingTags());
                             orderDetlValueResultUtil.setAnfme(anfmeSign);
                             //璁㈠崟涓嬪彂
                             try{
@@ -4755,7 +4778,9 @@
 //                        News.info("{}鍙风珯鐐瑰瓨鍦ㄤ换鍔℃墽琛屼腑锛岃绛夊緟浠诲姟鎵ц瀹屾瘯锛歿}", outStaAgv.getStaNo(), barcode);
                         continue;
                     }
-
+                    if(barcode.equals("0")){
+                        continue;
+                    }
                     List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().eq("barcode", barcode));
                     if (!locMastList.isEmpty()) {
                         News.info("{}鍙风珯鐐规潯鐮佷俊鎭噸澶嶏細{}", outStaAgv.getStaNo(), barcode);
@@ -4861,6 +4886,52 @@
         }
     }
 
+    /*
+     * agv浠诲姟鐢熸垚 寮傚父閫佸埌鍏ュ簱鍙�
+     * */
+    public synchronized void agvTaskCreateException() {
+        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            Integer outStaAgv = 1041;
+            // 鑾峰彇鍏ュ簱绔欎俊鎭�
+            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+            StaProtocol staProtocol = devpThread.getStation().get(outStaAgv);
+            if (staProtocol == null) {
+                continue;
+            } else {
+                staProtocol = staProtocol.clone();
+            }
+            // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+            if (!staProtocol.isLoading()){
+                continue;
+            }
+
+            if (staProtocol.isAutoing() && staProtocol.getWorkNo() > 10000) {
+
+                // 鍒ゆ柇閲嶅宸ヤ綔妗�
+                List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("sta_no", 1037));
+                if (!basAgvMastList.isEmpty()) {
+                    News.info("{}鍙风珯鐐瑰瓨鍦ㄤ换鍔℃墽琛屼腑锛岀瓑寰呬换鍔℃墽琛屽畬姣�!!!", outStaAgv);
+                    continue;
+                }
+                // 浠诲姟鐢熸垚鍖� --------------------------------------------------------------------------
+
+                BasAgvMast basAgvMast = new BasAgvMast();
+                try {
+                    basAgvMast.setTaskNo(staProtocol.getWorkNo());
+                    basAgvMast.setSourceStaNo(1041);
+                    basAgvMast.setStaNo(1037);
+                    basAgvMast.setDevpId(devp.getId());
+                    basAgvMast.setIoType(3);//杈撻��==銆嬭緭閫佺嚎绔欑偣 3
+                    basAgvMastService.insert(basAgvMast);
+                    break;
+                } catch (Exception e) {
+                    News.error(JSON.toJSONString(e.getMessage()));
+                }
+            }
+        }
+    }
+
 
     /*
      * agv浠诲姟涓嬪彂:AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣
@@ -4904,6 +4975,8 @@
         }
     }
 
+
+
     /*
      * agv浠诲姟涓嬪彂:AGV搴撲綅==銆婣GV搴撲綅
      * */

--
Gitblit v1.9.1