1
3 天以前 d97742662f28a693e325ce163c5ebf57802efb63
#读超长条码BUG修复
2个文件已修改
98 ■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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出库容器绑定解绑", 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;
                    }
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();
    }
    /**
     * 设置入库标记
     */