From d97742662f28a693e325ce163c5ebf57802efb63 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期五, 05 十二月 2025 12:56:41 +0800
Subject: [PATCH] #读超长条码BUG修复

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   51 +++++++++++++++++++++++++
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |   47 +++++++++++++++++------
 2 files changed, 86 insertions(+), 12 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 6cdc58d..8bd8a93 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -4675,6 +4675,9 @@
                         staProtocol = staProtocol.clone();
                     }
 
+                    if(!staProtocol.isLoading()){
+                        continue;
+                    }
                     String barcode = staProtocol.getBarcode();
                     if(!Cools.isEmpty(barcode)) {
                         if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
@@ -5093,6 +5096,54 @@
 
                     }
                     WrkMast wrkMast = wrkMastService.selectByWrkNo(staProtocol.getWorkNo());
+                    if(wrkMast.getIoType() == 110){
+                        BasAgvMast basAgvMast = new BasAgvMast();
+                        List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("task_no", staProtocol.getWorkNo()));
+                        if(!basAgvMastList.isEmpty()){
+                            continue;
+                        }
+
+                        try {
+                            LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+
+                            SearchLocParam param = new SearchLocParam();
+                            param.setBarcode(staProtocol.getWorkNo().toString());
+                            param.setIoType(1);
+                            param.setSourceStaNo(outStaAgv.getStaNo());
+                            param.setLocType1(locTypeDto.getLocType1());
+                            String response = new HttpHandler.Builder()
+                                    .setUri(wmsUrl)
+                                    .setPath("/rpc/pakin/agv/loc/v1")
+                                    .setJson(JSON.toJSONString(param))
+                                    .build()
+                                    .doPost();
+                            JSONObject jsonObject = JSON.parseObject(response);
+                            if (jsonObject.getInteger("code").equals(200)) {
+                                StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+                                basAgvMast.setFloorNo(1);
+                                basAgvMast.setTaskNo(staProtocol.getWorkNo());
+                                basAgvMast.setSourceStaNo(outStaAgv.getStaNo());
+                                basAgvMast.setLocNo(dto.getLocNo());
+                                basAgvMast.setBarcode("1");
+                                basAgvMast.setSourceLocNo("1041");
+                                basAgvMast.setDevpId(devp.getId());
+                                basAgvMast.setIoType(2);
+                                basAgvMastService.insert(basAgvMast);
+                                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",dto.getLocNo()));
+                                locMast.setLocSts("S");
+                                locMastService.updateById(locMast);
+
+                                AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam(basAgvMast);
+                                agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString());
+                                agvBindCtnrAndBinParam.setCtnrTyp("1");
+                                ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV鍑哄簱瀹瑰櫒缁戝畾瑙g粦", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam);
+
+                            }
+                        }catch (Exception e){
+                            News.error(JSON.toJSONString(e.getMessage()));
+
+                        }
+                    }
                     if (Cools.isEmpty(wrkMast) || Cools.isEmpty(wrkMast.getTakeNone()) || !wrkMast.getTakeNone().equals("1")){
                         continue;
                     }
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 11c8aa7..0114b65 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -538,23 +538,13 @@
                     } else if(siteId<4000){
                         if (siteId == 2110) {
                             if (resultArm5.IsSuccess) {
-                                // 杞崲涓哄瓧绗︿覆
-                                String resultString = siemensS7Net.getByteTransform().TransString(resultArm5.Content, 2, 254,"UTF-8");
-                                // 鍘婚櫎鍙兘鐨勭┖瀛楃
-//                                resultString = resultString.TrimEnd('\0');
-//                                System.out.println("2110Barcode:"+resultString);
-                                staProtocol.setBarcode(resultString);
+                                staProtocol.setBarcode(parseS7String(resultArm5));
                             } else {
                                 staProtocol.setBarcode("");
                             }
                         } else if (siteId == 2120){
                             if (resultArm6.IsSuccess) {
-                                // 杞崲涓哄瓧绗︿覆
-                                String resultString = siemensS7Net.getByteTransform().TransString(resultArm6.Content, 2, 254,"UTF-8");
-                                // 鍘婚櫎鍙兘鐨勭┖瀛楃
-//                                resultString = resultString.TrimEnd('\0');
-//                                System.out.println("2120Barcode:"+resultString);
-                                staProtocol.setBarcode(resultString);
+                                staProtocol.setBarcode(parseS7String(resultArm6));
                             } else {
                                 staProtocol.setBarcode("");
                             }
@@ -1071,6 +1061,39 @@
         }
     }
 
+    private String parseS7String(OperateResultExOne<byte[]> result) {
+
+        if (result == null || !result.IsSuccess || result.Content == null) {
+            return "";
+        }
+
+        byte[] buf = result.Content;
+
+        if (buf.length < 2) {
+            return "";
+        }
+
+        // S7 瀛楃涓叉牸寮忥細
+        // buf[0] = 鏈�澶ч暱搴�
+        // buf[1] = 褰撳墠鐪熷疄闀垮害
+        int realLen = buf[1] & 0xFF;
+
+        if (realLen <= 0) {
+            return "";
+        }
+
+        // 闃叉 PLC 鍐欓敊闀垮害瀵艰嚧瓒婄晫
+        if (realLen > buf.length - 2) {
+            realLen = buf.length - 2;
+        }
+
+        String value = siemensS7Net.getByteTransform()
+                .TransString(buf, 2, realLen, "UTF-8");
+
+        return value == null ? "" : value.trim();
+    }
+
+
     /**
      * 璁剧疆鍏ュ簱鏍囪
      */

--
Gitblit v1.9.1