diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/service/impl/PdmBiContainerinfoServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/service/impl/PdmBiContainerinfoServiceImpl.java index 3edcb32..d0ede28 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/service/impl/PdmBiContainerinfoServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/service/impl/PdmBiContainerinfoServiceImpl.java @@ -95,7 +95,7 @@ public class PdmBiContainerinfoServiceImpl extends ServiceImpl entry : this.getCode().entrySet()) { - if (entry.getValue().equals("code")) { - return entry.getValue(); + if (entry.getValue().equals(code)) { + return entry.getKey(); } } throw new BadRequestException(this.name() + "对应类型" + code + "未定义"); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java index d5efbec..0eebc0e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/BstIvtPackageinfoivtServiceImpl.java @@ -516,7 +516,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl needPlans) { log.info("正在设置所需的套管纸管信息..."); // 纸制筒管|纸管|6英寸|1300 or 纸制筒管|纸管|3英寸|12|650 + // todo 88549333 因为新物料描述 纸管和 frp管的尺寸位置不一致,所以之前的取数组第三位的写法就存在问题,现修改为根据不同的类型分别获取。 2026年05月19日 21:26 for (PdmBiSlittingproductionplan plan : needPlans) { if (SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(plan.getLeft_or_right())) { if (SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_frp())) { param.put("left", plan.getPaper_tube_material()); - param.put("leftSize", plan.getPaper_tube_model().split("\\|")[2].charAt(0)); + param.put("leftSize", MdmDescriptionParseUtils.extractPaperTubeSize(plan.getPaper_tube_model())); } else { param.put("left", plan.getFRP_material()); - param.put("leftSize", plan.getFRP_model().split("\\|")[2].charAt(0)); + param.put("leftSize",MdmDescriptionParseUtils.extractFRPTubeSizeTrans(plan.getFRP_model())); } param.put("leftSpec", SlitterTaskUtil.getPaperTubeInformation(plan)); } else { if (SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_frp())) { param.put("right", plan.getPaper_tube_material()); - param.put("rightSize", plan.getPaper_tube_model().split("\\|")[2].charAt(0)); + param.put("rightSize", MdmDescriptionParseUtils.extractPaperTubeSize(plan.getPaper_tube_model())); } else { param.put("right", plan.getFRP_material()); - param.put("rightSize", plan.getFRP_model().split("\\|")[2].charAt(0)); + param.put("rightSize", MdmDescriptionParseUtils.extractFRPTubeSizeTrans(plan.getFRP_model())); } param.put("rightSpec", SlitterTaskUtil.getPaperTubeInformation(plan)); } @@ -186,23 +300,24 @@ public class SlitterTaskUtil { * @param oldPlans 老的分切计划 */ public static void putCurrentPaperSpec(JSONObject param, List oldPlans) { + // todo 88549333 因为新物料描述 纸管和 frp管的尺寸位置不一致,所以之前的取数组第三位的写法就存在问题,现修改为根据不同的类型分别获取。 2026年05月19日 21:26 for (PdmBiSlittingproductionplan plan : oldPlans) { if (SlitterConstant.SLITTER_SUB_VOLUME_LEFT.equals(plan.getLeft_or_right())) { if (SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_frp())) { param.put("currentLeft", plan.getPaper_tube_material()); - param.put("currentLeftSize", plan.getPaper_tube_model().split("\\|")[2].charAt(0)); + param.put("currentLeftSize", MdmDescriptionParseUtils.extractPaperTubeSize(plan.getPaper_tube_model())); } else { param.put("currentLeft", plan.getFRP_material()); - param.put("currentLeftSize", plan.getFRP_model().split("\\|")[2].charAt(0)); + param.put("currentLeftSize", MdmDescriptionParseUtils.extractFRPTubeSizeTrans(plan.getFRP_model())); } param.put("currentLeftSpec", SlitterTaskUtil.getPaperTubeInformation(plan)); } else { if (SlitterConstant.SLITTER_TYPE_PAPER.equals(plan.getPaper_tube_or_frp())) { param.put("currentRight", plan.getPaper_tube_material()); - param.put("currentRightSize", plan.getPaper_tube_model().split("\\|")[2].charAt(0)); + param.put("currentRightSize", MdmDescriptionParseUtils.extractPaperTubeSize(plan.getPaper_tube_model())); } else { param.put("currentRight", plan.getFRP_material()); - param.put("currentRightSize", plan.getFRP_model().split("\\|")[2].charAt(0)); + param.put("currentRightSize", MdmDescriptionParseUtils.extractFRPTubeSizeTrans(plan.getFRP_model())); } param.put("currentRightSpec", SlitterTaskUtil.getPaperTubeInformation(plan)); } @@ -296,14 +411,15 @@ public class SlitterTaskUtil { int index = getIndex(material_codes, materialCode); qtys[index] += qty; } else { + // todo 88549333 这个地方的判断也有问题,新物料没有4开头的,所以不采用编码是不是4 开头判断 而是采用,描述中是否有frp管字样 2026年05月19日 22:01 material_codes[i] = vehicle.getMaterial_code(); - String spec = getComposePaperTubeInformation(vehicle.getMaterial_name(), vehicle.getMaterial_code().startsWith("4") ? "1" : "2"); + String spec = getComposePaperTubeInformation(vehicle.getMaterial_name(), vehicle.getMaterial_name().contains("FRP") ? "2" : "1"); material_specs[i] = spec; qtys[i] = qty; } //新规格数据处理 int row_num = Integer.parseInt(vehicle.getRow_num()); - String spec = getComposePaperTubeInformation(vehicle.getMaterial_name(), vehicle.getMaterial_code().startsWith("4") ? "1" : "2"); + String spec = getComposePaperTubeInformation(vehicle.getMaterial_name(), vehicle.getMaterial_name().contains("FRP") ? "2" : "1"); material_codes1[row_num-1] = materialCode; material_specs1[row_num-1] = spec; qtys1[row_num-1] = qty; @@ -361,26 +477,34 @@ public class SlitterTaskUtil { * @return / */ public static String getPaperLength(PdmBiSlittingproductionplan plan) { -// String s = "玻璃纤维及其制品|FRP管|6英寸|15|1700"; +// String s = "玻璃纤维及其制品|FRP管|6英寸|15-20|1100|阶梯"; + // todo 88549333 因为新物料描述 纸管和 frp管的尺寸位置不一致,所以之前的取数组第三位的写法就存在问题,现修改为根据不同的类型分别获取。 2026年05月19日 20:26 String paperStr = ""; + String length = ""; if (plan.getPaper_tube_or_frp().equals(SlitterConstant.SLITTER_TYPE_PAPER)) { paperStr = plan.getPaper_tube_model(); + String spec [] = MdmDescriptionParseUtils.extractPaperTubeSpecs(paperStr); + length = spec[0]; } else { paperStr = plan.getFRP_model(); + length = MdmDescriptionParseUtils.extractFRPLength(paperStr); } - String[] split = paperStr.replaceAll("\\|[\\u4e00-\\u9fa5]+$", "").split("\\|"); - return split[split.length - 1]; + return length; } + public static String getPaperSize(PdmBiSlittingproductionplan plan) { // String s = "玻璃纤维及其制品|FRP管|6英寸|15|1700"; - String paperStr = ""; + // todo 88549333 因为新物料描述 纸管和 frp管的尺寸位置不一致,所以之前的取数组第三位的写法就存在问题,现修改为根据不同的类型分别获取。 2026年05月19日 21:26 + String paperStr ; + String cc; if (plan.getPaper_tube_or_frp().equals(SlitterConstant.SLITTER_TYPE_PAPER)) { paperStr = plan.getPaper_tube_model(); + cc = MdmDescriptionParseUtils.extractPaperTubeSize(paperStr); } else { paperStr = plan.getFRP_model(); + cc = MdmDescriptionParseUtils.extractFRPTubeSizeTrans(paperStr); } - String[] split = paperStr.replaceAll("\\|[\\u4e00-\\u9fa5]+$", "").split("\\|"); - return split[2].replaceAll("英寸",""); + return cc; } public static Integer getPaperLengthInt(PdmBiSlittingproductionplan plan) { @@ -555,4 +679,31 @@ public class SlitterTaskUtil { } log.info("分切下卷计划位置校验通过!"); } + + /** + * 获取纸管长度 + * @param name 描述 + * @return / + */ + public static String getPaperLengthByCode(String name) { +// String name = "玻璃纤维及其制品|FRP管|6英寸|15|1700"; + // todo 88549333 因为新物料描述 纸管和 frp管的尺寸位置不一致,所以之前的取数组第三位的写法就存在问题,现修改为根据不同的类型分别获取。 2026年05月19日 21:26 + String length = ""; + if(name.contains("FRP管")){ + length = MdmDescriptionParseUtils.extractFRPLength( name); + }else{ + String spec [] = MdmDescriptionParseUtils.extractPaperTubeSpecs(name); + length = spec[0]; + } + return length; + } + /** + * 获取纸管长度 + * @param name 描述 + * @return / + */ + public static Integer getPaperLengthByCodeInt(String name) { +// String name = "玻璃纤维及其制品|FRP管|6英寸|15|1700"; + return Integer.valueOf(getPaperLengthByCode(name)); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml index 9fc4d2b..783b3f7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml @@ -689,7 +689,7 @@ FROM ( SELECT - MIN( a.iostorinvdis_id ) AS iostorinvdis_id + a.iostorinvdis_id AS iostorinvdis_id FROM st_ivt_iostorinvdis a LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id @@ -708,11 +708,9 @@ AND b.confirm_time #{paramMap.end_time} AND b.bill_status = '99' - GROUP BY - pcsn UNION SELECT - MIN( a.iostorinvdis_id ) AS iostorinvdis_id + a.iostorinvdis_id AS iostorinvdis_id FROM st_ivt_iostorinvdis a LEFT JOIN st_ivt_iostorinv b ON a.iostorinv_id = b.iostorinv_id @@ -731,8 +729,7 @@ AND b.confirm_time #{paramMap.end_time} AND b.bill_status = '99' - GROUP BY - pcsn + ) AS c LEFT JOIN st_ivt_iostorinvdis dis ON dis.iostorinvdis_id = c.iostorinvdis_id LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/TransportationbaseServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/TransportationbaseServiceImpl.java index ae99387..aaa56aa 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/TransportationbaseServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/TransportationbaseServiceImpl.java @@ -49,7 +49,7 @@ public class TransportationbaseServiceImpl implements TransportationbaseService if (ObjectUtil.isNotEmpty(cust_name)) { map.put("cust_name", "%" + cust_name + "%"); } - JSONObject json = WQL.getWO("QMD_CS_TRANSPORAIONL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "update_time ASC"); + JSONObject json = WQL.getWO("QMD_CS_TRANSPORAIONL").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "create_time DESC ,update_time ASC"); return json; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java index 45e17cd..7e2a7b0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java @@ -326,17 +326,17 @@ public class StructivtServiceImpl implements StructivtService { } mp.put("库龄", json.getString("stock_age")); mp.put("生产时长", json.getString("produce_age")); - mp.put("产品规格(幅宽)", String.format("%.0f", json.getDoubleValue("width"))); + mp.put("产品实际幅宽", json.getString("width")); + mp.put("客户要求幅宽", json.getString("width_standard")); + mp.put("物料标准厚度", json.getString("thickness_request")); mp.put("产品厚度", json.getString("thickness")); mp.put("单位面积重量", json.getString("mass_per_unit_area")); mp.put("净重", json.getString("net_weight")); mp.put("毛重", json.getString("box_weight")); mp.put("长度", json.getString("length")); - mp.put("接头数", json.getString("joint_type")); - mp.put("计划外分切的子卷", json.getString("is_un_plan_production")); - mp.put("子卷的物性值1", json.getString("un_plan_product_property1")); - mp.put("子卷的物性值2", json.getString("un_plan_product_property2")); - mp.put("子卷的物性值3", json.getString("un_plan_product_property3")); + mp.put("管件类型", json.getString("paper_type")); + mp.put("管件编码", json.getString("paper_code")); + mp.put("管件描述", json.getString("paper_name")); if ("1".equals(json.getString("remark"))) { mp.put("超期原因", "客户原因"); } else if ("2".equals(json.getString("remark"))) { @@ -349,16 +349,117 @@ public class StructivtServiceImpl implements StructivtService { mp.put("是否管控", json.getString("lock_type").equals("88") ? "是" : "否"); mp.put("是否需要重打外包装标签", json.getString("isreprintpackageboxlabel")); mp.put("是否需要拆包重打子卷标签", json.getString("isunpackbox")); - mp.put("客户要求规格幅宽", json.getString("width_standard")); - mp.put("物料标准厚度", json.getString("thickness_request")); - mp.put("管件类型", json.getString("paper_type")); - mp.put("管件编码", json.getString("paper_code")); - mp.put("管件描述", json.getString("paper_name")); + mp.put("接头数", json.getString("joint_type")); + mp.put("计划外分切的子卷", json.getString("is_un_plan_production")); + String unPlanProductProperty1 = json.getString("un_plan_product_property1"); + mp.put("子卷的物性值1", unPlanProductProperty1); + Object parsedData = parseJsonData(unPlanProductProperty1); + if (parsedData instanceof JSONArray) { + JSONArray jsonArray = (JSONArray) parsedData; + if (!jsonArray.isEmpty()) { + JSONObject firstItem = jsonArray.getJSONObject(0); + buildMap(mp, firstItem,true); + }else{ + buildMap(mp, null,false); + } + }else { + buildMap(mp, null,false); + } + mp.put("子卷的物性值2", json.getString("un_plan_product_property2")); + mp.put("子卷的物性值3", json.getString("un_plan_product_property3")); list.add(mp); } FileUtil.downloadExcel(list, response); } + /** + * @description: 如果是jsonObject 格式,则进行数据封装 + **/ + public void buildMap(Map map, JSONObject data,boolean flag){ + //为了兼容历史数据导出 + if(!flag){ + map.put("厚度/μm", ""); + map.put("单位面积质量/g/m²", ""); + map.put("单位面积质量极差/g/m²", ""); + map.put("拉伸强度/Mpa", ""); + map.put("(高温拉伸强度/Mpa)", ""); + map.put("延伸率/%", ""); + map.put("高温拉伸强度/Mpa", ""); + map.put("S面粗糙度Ra/μm", ""); + map.put("M面粗糙度Rz/μm", ""); + map.put("M面光泽度/GU", ""); + map.put("铜箔卷曲高度/mm", ""); + map.put("铬含量/ppm", ""); + map.put("抗氧化性能/150℃|10min", ""); + map.put("抗氧化性能/213℃30min", ""); + map.put("表面能/mN/m", ""); + map.put("剥离强度/N/mm", ""); + map.put("铜粉(一级、二级、三级)", ""); + map.put("可焊性", ""); + return; + } + //厚度/μm、 + map.put("厚度/μm",StrUtil.isNotBlank(data.getString("厚度/μm")) ? data.getString("厚度/μm") : ""); + //单位面积质量/g/m²、 + map.put("单位面积质量/g/m²",StrUtil.isNotBlank(data.getString("单位面积质量/g/m²")) ? data.getString("单位面积质量/g/m²") : ""); + //单位面积质量极差/g/m²、 + map.put("单位面积质量极差/g/m²",StrUtil.isNotBlank(data.getString("单位面积质量极差/g/m²")) ? data.getString("单位面积质量极差/g/m²") : ""); + //拉伸强度/Mpa + map.put("拉伸强度/Mpa",StrUtil.isNotBlank(data.getString("拉伸强度/Mpa")) ? data.getString("拉伸强度/Mpa") : ""); + //(高温拉伸强度/Mpa) + map.put("高温拉伸强度/Mpa",StrUtil.isNotBlank(data.getString("高温拉伸强度/Mpa")) ? data.getString("高温拉伸强度/Mpa") : ""); + //延伸率/% + map.put("延伸率/%",StrUtil.isNotBlank(data.getString("延伸率/%")) ? data.getString("延伸率/%") : ""); + // (高温延伸率/%) + map.put("(高温延伸率/%)",StrUtil.isNotBlank(data.getString("(高温延伸率/%)")) ? data.getString("(高温延伸率/%)") : ""); + //S面粗糙度Ra/μm + map.put("S面粗糙度Ra/μm",StrUtil.isNotBlank(data.getString("S面粗糙度Ra/μm")) ? data.getString("S面粗糙度Ra/μm") : ""); + //M面粗糙度Rz/μm + map.put("M面粗糙度Rz/μm",StrUtil.isNotBlank(data.getString("M面粗糙度Rz/μm")) ? data.getString("M面粗糙度Rz/μm") : ""); + //M面光泽度/GU + map.put("M面光泽度/GU",StrUtil.isNotBlank(data.getString("M面光泽度/GU")) ? data.getString("M面光泽度/GU") : ""); + //铜箔卷曲高度/mm + map.put("铜箔卷曲高度/mm",StrUtil.isNotBlank(data.getString("铜箔卷曲高度/mm")) ? data.getString("铜箔卷曲高度/mm") : ""); + //铬含量/ppm + map.put("铬含量/ppm",StrUtil.isNotBlank(data.getString("铬含量/ppm")) ? data.getString("铬含量/ppm") : ""); + //抗氧化性能/150℃|10min + map.put("抗氧化性能/150℃|10min",StrUtil.isNotBlank(data.getString("抗氧化性能/150℃|10min")) ? data.getString("抗氧化性能/150℃|10min") : ""); + // 抗氧化性能/213℃30min + map.put("抗氧化性能/213℃30min",StrUtil.isNotBlank(data.getString("抗氧化性能/213℃30min")) ? data.getString("抗氧化性能/213℃30min") : ""); + //表面能/mN/m + map.put("表面能/mN/m",StrUtil.isNotBlank(data.getString("表面能/mN/m")) ? data.getString("表面能/mN/m") : ""); + // 剥离强度/N/mm + map.put("剥离强度/N/mm",StrUtil.isNotBlank(data.getString("剥离强度/N/mm")) ? data.getString("剥离强度/N/mm") : ""); + //铜粉(一级、二级、三级) + map.put("铜粉(一级、二级、三级)",StrUtil.isNotBlank(data.getString("铜粉(一级、二级、三级)")) ? data.getString("铜粉(一级、二级、三级)") : ""); + //可焊性 + map.put("可焊性",StrUtil.isNotBlank(data.getString("可焊性")) ? data.getString("可焊性") : ""); + }; + public static Object parseJsonData(String jsonData) { + if (isValidArray(jsonData)) { + // 返回 JSONArray + return JSON.parseArray(jsonData); + } else { + // 返回原始字符串 + return jsonData; + } + } + /** + * @description: 判断是否为数组 + * @author ManMan.Yang + * @date: 2026/2/11 11:49 + **/ + public static boolean isValidArray(String jsonData) { + try { + JSONArray array = JSON.parseArray(jsonData); + // 如果解析成功且不为 null,则是有效数组 + return array != null; + } catch (Exception e) { + // 解析失败则不是有效数组 + return false; + } + } + @Override @Transactional(rollbackFor = Exception.class) public void save(JSONObject whereJson) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 629f103..9df454a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -8,6 +8,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import org.nl.b_lms.sch.tasks.slitter.util.MdmDescriptionParseUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/LmsToMesController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/LmsToMesController.java index b49ede7..b5036b3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/LmsToMesController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/LmsToMesController.java @@ -153,4 +153,19 @@ public class LmsToMesController { public ResponseEntity GetInspectionResult(@RequestBody JSONObject jo) { return new ResponseEntity<>(lmsToMesService.getInspectionResult(jo), HttpStatus.OK); } + + @PostMapping("/EditSheetApi") + @Log("LMS获取MES称重后子卷信息") + @SaIgnore + public ResponseEntity EditSheetApi(@RequestBody JSONObject jo) { + lmsToMesService.EditSheetApi(jo); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/GetChildWeightIsSamplePDA") + @Log("判断子卷是否是NG卷") + @SaIgnore + public ResponseEntity GetChildWeightIsSamplePDA(@RequestBody JSONObject jo) { + return new ResponseEntity<>(lmsToMesService.getInspectionResult(jo), HttpStatus.OK); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/MesToLmsController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/MesToLmsController.java index 94a64f6..82a2eea 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/MesToLmsController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/MesToLmsController.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.modules.logging.annotation.ApiLog; import org.nl.modules.logging.annotation.Log; import org.nl.wms.ext.mes.service.MesToLmsService; import org.springframework.http.HttpStatus; @@ -23,173 +24,278 @@ public class MesToLmsController { private final MesToLmsService mesToLmsService; @PostMapping("/momRollFoilStart") - @Log("母卷批次创建信息发送智能物流(MES生箔工序Move In)") @SaIgnore + @ApiLog( + bizCode = "/mes/momRollFoilStart", + bizDesc = "母卷批次创建信息发送智能物流(MES生箔工序Move In)", + systemFlag = "mes" + ) public ResponseEntity momRollFoilStart(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.momRollFoilStart(jo), HttpStatus.OK); } @PostMapping("momRollFoilWeighing") - @Log("MES获取AGV称重信息") @SaIgnore + @ApiLog( + bizCode = "/mes/momRollFoilWeighing", + bizDesc = "MES获取AGV称重信息", + systemFlag = "mes" + ) public ResponseEntity momRollFoilWeighing(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.momRollFoilWeighing(jo), HttpStatus.OK); } @PostMapping("/momRollFoilComplete") - @Log("MES执行下卷动作告诉LMS") @SaIgnore + @ApiLog( + bizCode = "/mes/momRollFoilComplete", + bizDesc = "MES执行下卷动作告诉LMS", + systemFlag = "mes" + ) public ResponseEntity momRollFoilComplete(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.momRollFoilComplete(jo), HttpStatus.OK); } @PostMapping("/momRollBakeNextSpecTransfer") - @Log("MES下达烘箱温度和时间配方给智能物流(MES 包装防护工序Move Out)") @SaIgnore + @ApiLog( + bizCode = "/mes/momRollBakeNextSpecTransfer", + bizDesc = "MES下达烘箱温度和时间配方给智能物流(MES 包装防护工序Move Out)", + systemFlag = "mes" + ) public ResponseEntity momRollBakeNextSpecTransfer(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.momRollBakeNextSpecTransfer(jo), HttpStatus.OK); } @PostMapping("/cutPlanTransfer") - @Log("分切包装段:分切计划(单表,包含母卷/改制子卷-包装箱号、空包装箱物料、纸筒/FRP管)MES下发智能物流") @SaIgnore - public ResponseEntity cutPlanTransfer(@RequestBody JSONObject jo) { - return new ResponseEntity<>(mesToLmsService.cutPlanTransfer(jo), HttpStatus.OK); + @ApiLog( + bizCode = "/mes/cutPlanTransfer", + bizDesc = "分切包装段:分切计划(单表,包含母卷/改制子卷-包装箱号、空包装箱物料、纸筒/FRP管)MES下发智能物流", + systemFlag = "mes" + ) + public ResponseEntity cutPlanTransfer(@RequestBody JSONArray ja) { + return new ResponseEntity<>(mesToLmsService.cutPlanTransfer(ja), HttpStatus.OK); } @PostMapping("/callNextAssAndMomRoll") - @Log("分切即将完成,呼叫配送下一个母卷/改制子卷,MES传智能物流") @SaIgnore + @ApiLog( + bizCode = "/mes/callNextAssAndMomRoll", + bizDesc = "分切即将完成,呼叫配送下一个母卷/改制子卷,MES传智能物流", + systemFlag = "mes" + ) public ResponseEntity callNextAssAndMomRoll(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.callNextAssAndMomRoll(jo), HttpStatus.OK); } @PostMapping("/childRollCutStartComp") - @Log("当母卷开始分切时,MES系统会将对应的子卷进站信息发送给只能物流系统,一方面物流系统可以预估下个母卷的送达时间,也可以闭环期分切计划指令") @SaIgnore + @ApiLog( + bizCode = "/mes/childRollCutStartComp", + bizDesc = "当母卷开始分切时,MES系统会将对应的子卷进站信息发送给只能物流系统,一方面物流系统可以预估下个母卷的送达时间,也可以闭环期分切计划指令", + systemFlag = "mes" + ) public ResponseEntity childRollCutStartComp(@RequestBody JSONArray ja) { return new ResponseEntity<>(mesToLmsService.childRollCutStartComp(ja), HttpStatus.OK); } @PostMapping("/childRollPackComplete") - @Log("包装完成,传智能物流包装箱与子卷关系及子卷属性值,LMS执行入库") @SaIgnore + @ApiLog( + bizCode = "/mes/childRollPackComplete", + bizDesc = "包装完成,传智能物流包装箱与子卷关系及子卷属性值,LMS执行入库", + systemFlag = "mes" + ) public ResponseEntity childRollPackComplete(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.childRollPackComplete(jo), HttpStatus.OK); } @PostMapping("/inventoryTransferInfoSync") - @Log("转单指令在MES平台查看后,更新信息,发送LMS(是否拆包、更新后的入库日期、是否更换外包装箱标签),LMS重打子卷标签、包装箱外标签") @SaIgnore + @ApiLog( + bizCode = "/mes/inventoryTransferInfoSync", + bizDesc = "转单指令在MES平台查看后,更新信息,发送LMS(是否拆包、更新后的入库日期、是否更换外包装箱标签),LMS重打子卷标签、包装箱外标签", + systemFlag = "mes" + ) public ResponseEntity inventoryTransferInfoSync(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.inventoryTransferInfoSync(jo), HttpStatus.OK); } - - @PostMapping("/childRollInfoUpdate") - @Log("子卷信息更新:计划外需求有可能入库完成后,ERP才回传计划外需求SalesOrder") @SaIgnore + @ApiLog( + bizCode = "/mes/childRollInfoUpdate", + bizDesc = "子卷信息更新:计划外需求有可能入库完成后,ERP才回传计划外需求SalesOrder", + systemFlag = "mes" + ) public ResponseEntity childRollInfoUpdate(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.childRollInfoUpdate(jo), HttpStatus.OK); } @PostMapping("/cutPlanTransferCancel") - @Log("分切计划取消") @SaIgnore + @ApiLog( + bizCode = "/mes/cutPlanTransferCancel", + bizDesc = "分切计划取消", + systemFlag = "mes" + ) public ResponseEntity cutPlanTransferCancel(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.cutPlanTransferCancel(jo), HttpStatus.OK); } @PostMapping("/sendAuditResult") - @Log("子卷审批结果") @SaIgnore + @ApiLog( + bizCode = "/mes/sendAuditResult", + bizDesc = "子卷报废审批结果回传", + systemFlag = "mes" + ) public ResponseEntity sendAuditResult(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.sendAuditResult(jo), HttpStatus.OK); } @PostMapping("/sendProcessInfo") - @Log("表处母卷上料、下料接口") @SaIgnore + @ApiLog( + bizCode = "/mes/sendProcessInfo", + bizDesc = "表处母卷上料、下料接口", + systemFlag = "mes" + ) public ResponseEntity sendProcessInfo(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.sendProcessInfo(jo), HttpStatus.OK); } @PostMapping("/momRollTRStartMock") - @Log("表处工单推送") @SaIgnore + @ApiLog( + bizCode = "/mes/momRollTRStartMock", + bizDesc = "表处工单推送", + systemFlag = "mes" + ) public ResponseEntity processFoilStart(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.processFoilStart(jo), HttpStatus.OK); } @PostMapping("/sendTargetHouse") - @Log("MES传递给LMS入线边库或者入成品库") @SaIgnore + @ApiLog( + bizCode = "/mes/sendTargetHouse", + bizDesc = "MES传递给LMS入线边库或者入成品库", + systemFlag = "mes" + ) public ResponseEntity sendTargetHouse(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.sendTargetHouse(jo), HttpStatus.OK); } @PostMapping("/momSendSplitMfgOrderBOM") - @Log("MES传递LMS订单BOM") @SaIgnore + @ApiLog( + bizCode = "/mes/momSendSplitMfgOrderBOM", + bizDesc = "MES传递LMS订单BOM", + systemFlag = "mes" + ) public ResponseEntity momSendSplitMfgOrderBOM(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.momSendSplitMfgOrderBOM(jo), HttpStatus.OK); } @PostMapping("/getRollInfo") - @Log("MES传递LMS获取子卷重量信息") @SaIgnore + @ApiLog( + bizCode = "/mes/getRollInfo", + bizDesc = "MES传递LMS获取子卷重量信息", + systemFlag = "mes" + ) public ResponseEntity getRollInfo(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.getRollInfo(jo), HttpStatus.OK); } @PostMapping("/sendLevelInfo") - @Log("MES传递LMS定级数据") @SaIgnore + @ApiLog( + bizCode = "/mes/sendLevelInfo", + bizDesc = "MES传递LMS定级数据", + systemFlag = "mes" + ) public ResponseEntity sendLevelInfo(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.sendLevelInfo(jo), HttpStatus.OK); } @PostMapping("/containerNeedDown") - @Log("子卷拼接完成是否下轴") @SaIgnore + @ApiLog( + bizCode = "/mes/containerNeedDown", + bizDesc = "子卷拼接完成是否下轴", + systemFlag = "mes" + ) public ResponseEntity containerNeedDown(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.containerNeedDown(jo), HttpStatus.OK); } @PostMapping("/sendSubInfo") - @Log("子卷下料信息MES传递给LMS") @SaIgnore + @ApiLog( + bizCode = "/mes/sendSubInfo", + bizDesc = "子卷下料信息MES传递给LMS", + systemFlag = "mes" + ) public ResponseEntity sendSubInfo(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.sendSubInfo(jo), HttpStatus.OK); } @PostMapping("/changeSect") - @Log("MES传递给LMS入线边库或者入成品库、撤销入线边库、人工改变入线边还是包装") @SaIgnore + @ApiLog( + bizCode = "/mes/changeSect", + bizDesc = "MES传递给LMS入线边库或者入成品库、撤销入线边库、人工改变入线边还是包装", + systemFlag = "mes" + ) public ResponseEntity changeSect(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.sendTargetHouse(jo), HttpStatus.OK); } @PostMapping("/getWasteFoilWeight") - @Log("分切子卷获取LMS,AGV废箔称重重量") @SaIgnore + @ApiLog( + bizCode = "/mes/getWasteFoilWeight", + bizDesc = "分切子卷获取LMS,AGV废箔称重重量", + systemFlag = "mes" + ) public ResponseEntity getWasteFoilWeight(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.getWasteFoilWeight(jo), HttpStatus.OK); } @PostMapping("/WasteFoilSuccess") - @Log("分切子卷获取LMS,AGV废箔称重重量") @SaIgnore + @ApiLog( + bizCode = "/mes/WasteFoilSuccess", + bizDesc = "分切子卷获取LMS,AGV废箔称重重量", + systemFlag = "mes" + ) public ResponseEntity WasteFoilSuccess(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.WasteFoilSuccess(jo), HttpStatus.OK); } @PostMapping("/boxIsPass") - @Log("飞书通知LMS木箱是否通过") @SaIgnore + @ApiLog( + bizCode = "/mes/boxIsPass", + bizDesc = "飞书通知LMS木箱是否通过", + systemFlag = "mes" + ) public ResponseEntity boxIsPass(@RequestBody JSONObject jo) { return new ResponseEntity<>(mesToLmsService.boxIsPass(jo), HttpStatus.OK); } + + @PostMapping("/changeBomInfo") + @SaIgnore + @ApiLog( + bizCode = "/mes/changeBomInfo", + bizDesc = "MES更新LMS分切工单、订单BOM信息", + systemFlag = "mes" + ) + public ResponseEntity changeBomInfo(@RequestBody JSONObject jo) { + return new ResponseEntity<>(mesToLmsService.changeBomInfo(jo), HttpStatus.OK); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java index fab22b2..062fc8f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java @@ -186,4 +186,8 @@ public interface LmsToMesService { JSONObject BoxDataCollectionSubmit2(JSONObject jo); JSONObject getInspectionResult(JSONObject jo); + + void EditSheetApi(JSONObject jo); + + JSONObject GetChildWeightIsSamplePDA(JSONObject jo); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/MesToLmsService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/MesToLmsService.java index 4998f11..5543313 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/MesToLmsService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/MesToLmsService.java @@ -27,7 +27,7 @@ public interface MesToLmsService { /** * 分切包装段:分切计划(单表,包含母卷/改制子卷-包装箱号、空包装箱物料、纸筒/FRP管)MES下发智能物流 */ - JSONObject cutPlanTransfer(JSONObject param); + JSONObject cutPlanTransfer(JSONArray ja); /** * 分切即将完成,呼叫配送下一个母卷/改制子卷,MES传智能物流 @@ -85,4 +85,6 @@ public interface MesToLmsService { JSONObject WasteFoilSuccess(JSONObject param); JSONObject boxIsPass(JSONObject jo); + + JSONObject changeBomInfo(JSONObject jo); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java index 720fec4..b5a94fc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java @@ -1,7 +1,8 @@ package org.nl.wms.ext.mes.service.impl; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; +import cn.hutool.json.JSONUtil; +import org.nl.common.utils.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; @@ -9,10 +10,8 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.checkerframework.checker.units.qual.A; import org.nl.b_lms.pdm.info.dao.PdmBiContainerinfo; import org.nl.b_lms.pdm.info.service.IPdmBiContainerinfoService; import org.nl.b_lms.pdm.productSpec.service.impl.PdmProductSpecServiceImpl; @@ -21,19 +20,23 @@ import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationServi import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxinfoService; import org.nl.common.enums.SpecEnum; import org.nl.common.utils.SecurityUtils; -import org.nl.language.LangBehavior; import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.nl.system.service.sysapi.service.OutboundApiLogger; import org.nl.wms.ext.mes.service.LmsToMesService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.io.StringReader; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; /** * LMS系统为客户端,MES为服务端 @@ -68,7 +71,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } - + long startTime = System.currentTimeMillis(); String UserName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_USERNAME").getValue(); String Password = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_PASSWORD").getValue(); @@ -93,8 +96,16 @@ public class LmsToMesServiceImpl implements LmsToMesService { } catch (Exception e) { - throw new BadRequestException(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/momRollFoilWeighing", "LMS的PDA操作AGV下卷,AGV称重完成后AGV称重信息发送MES", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + throw new BadRequestException("MES提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/momRollFoilWeighing", "LMS的PDA操作AGV下卷,AGV称重完成后AGV称重信息发送MES", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -134,7 +145,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } - + long startTime = System.currentTimeMillis(); String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue(); String api = "CamstarApi/MomRollBakeInBound"; url = url + api; @@ -151,8 +162,16 @@ public class LmsToMesServiceImpl implements LmsToMesService { throw new BadRequestException(result.getString("RTMSG")); } } catch (Exception e) { - throw new BadRequestException(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/MomRollBakeInBound", "智能桁架将母卷调进烘箱完成,智能物流发送MES", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + throw new BadRequestException("MES提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/MomRollBakeInBound", "智能桁架将母卷调进烘箱完成,智能物流发送MES", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -192,8 +211,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } - - + long startTime = System.currentTimeMillis(); String UserName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_USERNAME").getValue(); String Password = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_PASSWORD").getValue(); param.put("UserName", UserName); @@ -215,8 +233,15 @@ public class LmsToMesServiceImpl implements LmsToMesService { throw new BadRequestException(result.getString("RTMSG")); } } catch (Exception e) { - throw new BadRequestException(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/MomRollBakeOutBound", "母卷出烘箱信息智能物流传MES", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + throw new BadRequestException("MES提示错误:" + e.getMessage()); } + OutboundApiLogger.logSuccess("mes", "/CamstarApi/MomRollBakeOutBound", "母卷出烘箱信息智能物流传MES", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -229,7 +254,6 @@ public class LmsToMesServiceImpl implements LmsToMesService { @Override public JSONObject momRollSemiFGInboundComplete(JSONObject param) { log.info("momRollSemiFGInboundComplete接口输入参数为:-------------------" + param.toString()); - JSONObject result = new JSONObject(); if (StrUtil.equals("0", is_connect_mes)) { result.put("status", HttpStatus.OK.value()); @@ -237,7 +261,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } - + long startTime = System.currentTimeMillis(); JSONArray list = new JSONArray(); String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue(); @@ -259,8 +283,16 @@ public class LmsToMesServiceImpl implements LmsToMesService { } catch (Exception e) { - log.info(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/MomRollSemiFGInboundComplete", "AGV将母卷从烘箱暂存位转移至暂存区,传MES", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + log.info("MES提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/MomRollSemiFGInboundComplete", "AGV将母卷从烘箱暂存位转移至暂存区,传MES", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -273,7 +305,6 @@ public class LmsToMesServiceImpl implements LmsToMesService { @Override public JSONObject airSwellWithPaperTubeAssComplete(JSONObject param) { log.info("airSwellWithPaperTubeAssComplete接口输入参数为:-------------------" + param.toString()); - String container_name = param.getString("container_name"); if (StrUtil.isEmpty(container_name)) { throw new BadRequestException("子卷号不能为空!"); @@ -286,7 +317,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } - + long startTime = System.currentTimeMillis(); JSONObject jo = new JSONObject(); jo.put("iContainerName", container_name); jo.put("iisAirSwellAssComplete", 1); @@ -313,8 +344,16 @@ public class LmsToMesServiceImpl implements LmsToMesService { } catch (Exception e) { - log.info(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/AirSwellWithPaperTubeAssComplete", "套轴任务完成,上架暂存区,智能物流PDA选任务、扫轴、扫料架货位,传MES套轴任务完成信息", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + log.info("MES提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/AirSwellWithPaperTubeAssComplete", "套轴任务完成,上架暂存区,智能物流PDA选任务、扫轴、扫料架货位,传MES套轴任务完成信息", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -327,7 +366,6 @@ public class LmsToMesServiceImpl implements LmsToMesService { @Override public JSONObject cutPlanMomRollDeliveryComplete(JSONObject param) { log.info("cutPlanMomRollDeliveryComplete接口输入参数为:-------------------" + param.toString()); - JSONObject result = new JSONObject(); if (StrUtil.equals("0", is_connect_mes)) { result.put("status", HttpStatus.OK.value()); @@ -335,6 +373,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } + long startTime = System.currentTimeMillis(); String container_name = param.getString("container_name"); String package_box_sn = param.getString("package_box_sn"); @@ -373,8 +412,16 @@ public class LmsToMesServiceImpl implements LmsToMesService { } catch (Exception e) { - throw new BadRequestException(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/CutPlanMomRollDeliveryComplete", "LMS提前做/MES呼叫后做,立库子卷出库完成/母卷配送至分切机暂存位,AGV传MES 母卷配送完成信息/立库子卷出库完成信息", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + throw new BadRequestException("MES提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/CutPlanMomRollDeliveryComplete", "LMS提前做/MES呼叫后做,立库子卷出库完成/母卷配送至分切机暂存位,AGV传MES 母卷配送完成信息/立库子卷出库完成信息", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -387,12 +434,10 @@ public class LmsToMesServiceImpl implements LmsToMesService { @Override public JSONObject airSwellWithPaperTubeAssArrival(JSONObject param) { log.info("airSwellWithPaperTubeAssArrival接口输入参数为:-------------------" + param.toString()); - String container_name = param.getString("container_name"); if (StrUtil.isEmpty(container_name)) { throw new BadRequestException("子卷号不能为空!"); } - JSONObject result = new JSONObject(); if (StrUtil.equals("0", is_connect_mes)) { result.put("status", HttpStatus.OK.value()); @@ -400,6 +445,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } + long startTime = System.currentTimeMillis(); JSONObject jo = new JSONObject(); jo.put("iContainerName", container_name); @@ -424,8 +470,16 @@ public class LmsToMesServiceImpl implements LmsToMesService { } catch (Exception e) { - log.info(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/AirSwellWithPaperTubeAssArrival", "提前将/按呼叫指令配送(扫码校验配送先后顺序)气涨轴套装运输到分切机,智能物流传MES 到位信息", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + log.info("MES提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/AirSwellWithPaperTubeAssArrival", "提前将/按呼叫指令配送(扫码校验配送先后顺序)气涨轴套装运输到分切机,智能物流传MES 到位信息", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -438,7 +492,6 @@ public class LmsToMesServiceImpl implements LmsToMesService { @Override public JSONObject childRollFGInboundComplete(JSONObject param) { log.info("childRollFGInboundComplete接口输入参数为:-------------------" + param.toString()); - String PackageBoxSN = param.getString("PackageBoxSN"); String User = param.getString("User"); JSONObject result = new JSONObject(); @@ -448,7 +501,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } - + long startTime = System.currentTimeMillis(); JSONObject jo = new JSONObject(); jo.put("iPackageBoxSN", PackageBoxSN); jo.put("iSpec", "FGPRODUCT"); @@ -481,8 +534,16 @@ public class LmsToMesServiceImpl implements LmsToMesService { } catch (Exception e) { - throw new BadRequestException(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/ChildRollFGInboundComplete", "入库完成,LMS回传MES,MES成品入库Move Out", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + throw new BadRequestException("MES提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/ChildRollFGInboundComplete", "入库完成,LMS回传MES,MES成品入库Move Out", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -495,8 +556,6 @@ public class LmsToMesServiceImpl implements LmsToMesService { @Override public JSONObject childRollFGOutboundComplete(JSONObject param) { log.info("childRollFGOutboundComplete接口输入参数为:-------------------" + param.toString()); - - JSONObject result = new JSONObject(); if (StrUtil.equals("0", is_connect_mes)) { result.put("status", HttpStatus.OK.value()); @@ -504,7 +563,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } - + long startTime = System.currentTimeMillis(); String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue(); String api = "CamstarApi/ChildRollFGOutboundComplete"; url = url + api; @@ -524,8 +583,16 @@ public class LmsToMesServiceImpl implements LmsToMesService { } catch (Exception e) { - throw new BadRequestException(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/ChildRollFGOutboundComplete", "发货完成,LMS同步MES子卷及包装箱状态,MES更新信息", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + throw new BadRequestException("MES提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/ChildRollFGOutboundComplete", "发货完成,LMS同步MES子卷及包装箱状态,MES更新信息", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -546,7 +613,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } - + long startTime = System.currentTimeMillis(); String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue(); String api = "CamstarApi/LMSUnPackage"; url = url + api; @@ -572,8 +639,16 @@ public class LmsToMesServiceImpl implements LmsToMesService { } catch (Exception e) { - throw new BadRequestException(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/LMSUnPackage", "拆箱出库:回传mes箱号、子卷号", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + throw new BadRequestException("MES提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/LMSUnPackage", "拆箱出库:回传mes箱号、子卷号", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -594,7 +669,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } - + long startTime = System.currentTimeMillis(); String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue(); String api = "CamstarApi/LMSPackage"; url = url + api; @@ -620,8 +695,16 @@ public class LmsToMesServiceImpl implements LmsToMesService { } catch (Exception e) { - throw new BadRequestException(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/LMSPackage", "拆箱入库:回传mes箱号、子卷号", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + throw new BadRequestException("MES提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/LMSPackage", "拆箱入库:回传mes箱号、子卷号", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -636,7 +719,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } - + long startTime = System.currentTimeMillis(); String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("FEISHU_URL").getValue(); String api = "/FeiShuNoticesWebApi/CreateApproval"; url = url + api; @@ -657,8 +740,16 @@ public class LmsToMesServiceImpl implements LmsToMesService { } catch (Exception e) { + // 记录失败日志 + OutboundApiLogger.logFail("feishu", "/FeiShuNoticesWebApi/CreateApproval", "触发飞书报废审核流程", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); throw new BadRequestException("飞书提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("feishu", "/FeiShuNoticesWebApi/CreateApproval", "触发飞书报废审核流程", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -673,7 +764,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } - + long startTime = System.currentTimeMillis(); String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("FEISHU_URL").getValue(); String api = "/FeiShuNoticesWebApi/SendCard"; url = url + api; @@ -710,7 +801,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } - + long startTime = System.currentTimeMillis(); String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue(); String api = "CamstarApi/ChildScrapUpdate"; url = url + api; @@ -736,8 +827,16 @@ public class LmsToMesServiceImpl implements LmsToMesService { } catch (Exception e) { - throw new BadRequestException(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/ChildScrapUpdate", "报废出库:回传mes箱号、子卷号", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + throw new BadRequestException("MES提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/ChildScrapUpdate", "报废出库:回传mes箱号、子卷号", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -751,7 +850,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } - + long startTime = System.currentTimeMillis(); String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("FEISHU_URL").getValue(); String api = "/FeiShuNoticesWebApi/UploadImage"; url = url + api + "?fileName=" + file_name; @@ -788,7 +887,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { result.put("data", new JSONObject()); return result; } - + long startTime = System.currentTimeMillis(); String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("FEISHU_URL").getValue(); String api = "/FeiShuNoticesWebApi/SendCard"; url = url + api; @@ -835,7 +934,6 @@ public class LmsToMesServiceImpl implements LmsToMesService { JSONObject result = new JSONObject(); log.info("momAutoTransterMoveIn接口输入参数为:-------------------" + param.toString()); - String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue(); String api = "CamstarApi/momAutoTransterMoveIn"; url = url + api; @@ -864,7 +962,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { } catch (Exception e) { - throw new BadRequestException(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + throw new BadRequestException("MES提示错误:" + e.getMessage()); } return result; } @@ -878,7 +976,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { } JSONObject result = new JSONObject(); - + long startTime = System.currentTimeMillis(); log.info("momGetPackingInfo接口输入参数为:-------------------" + param.toString()); String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue(); @@ -909,8 +1007,16 @@ public class LmsToMesServiceImpl implements LmsToMesService { } catch (Exception e) { - throw new BadRequestException(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/momGetPackingInfo", "根据木想号母卷获取包装信息", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + throw new BadRequestException("MES提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/momGetPackingInfo", "根据木想号母卷获取包装信息", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -940,7 +1046,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { if (ObjectUtil.isEmpty(rows)) { throw new BadRequestException("箱内子卷信息不能为空!"); } - + long startTime = System.currentTimeMillis(); JSONObject result = new JSONObject(); String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL2").getValue(); @@ -982,11 +1088,19 @@ public class LmsToMesServiceImpl implements LmsToMesService { if ("E".equals(RTYPE)) { throw new BadRequestException(result.getString("RTMSG")); } - PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ_MES,param,Boolean.TRUE,null,list); + PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ_MES, param, Boolean.TRUE, null, list); } catch (Exception e) { - PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ_MES,param,Boolean.FALSE,e.getMessage(),list); - throw new BadRequestException(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + PdmProductSpecServiceImpl.doRecord(SpecEnum.BZ_MES, param, Boolean.FALSE, e.getMessage(), list); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/momBoxPackageSubmit", "包装回传", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + throw new BadRequestException("MES提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/momBoxPackageSubmit", "包装回传", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } @@ -1009,7 +1123,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { } JSONObject result = new JSONObject(); - + long startTime = System.currentTimeMillis(); String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL2").getValue(); String api = "CamstarApi/BoxDataCollectionSubmit2"; url = url + api; @@ -1022,27 +1136,70 @@ public class LmsToMesServiceImpl implements LmsToMesService { param.put("BoxWeight", box_weight); JSONArray rows = new JSONArray(); + + // 1. 包装是否符合规范,是否完好无破损,PE膜是否贴端面 JSONObject row1 = new JSONObject(); - row1.put("DataPointName","保护棉是否填充"); - row1.put("DataType","7"); - row1.put("DataValue","true"); - row1.put("DataCollectionDefId","001c61800000004f"); - row1.put("DataCollectionDefName","PACKAGE"); + row1.put("DataPointName", "包装是否符合规范,是否完好无破损,PE膜是否贴端面"); + row1.put("DataType", "7"); + row1.put("DataValue", "true"); + row1.put("DataCollectionDefId", "001c61800000004f"); + row1.put("DataCollectionDefName", "PACKAGE"); rows.add(row1); + + // 2. 内包装密封完好,无划伤、撕裂、漏包 JSONObject row2 = new JSONObject(); - row2.put("DataPointName","信息核对准确"); - row2.put("DataType","7"); - row2.put("DataValue","true"); - row2.put("DataCollectionDefId","001c61800000004f"); - row2.put("DataCollectionDefName","PACKAGE"); + row2.put("DataPointName", "内包装密封完好,无划伤、撕裂、漏包"); + row2.put("DataType", "7"); + row2.put("DataValue", "true"); + row2.put("DataCollectionDefId", "001c61800000004f"); + row2.put("DataCollectionDefName", "PACKAGE"); rows.add(row2); + + // 3. 木箱是否有发霉、露钉、异物、破损等,是否符合要求 JSONObject row3 = new JSONObject(); - row3.put("DataPointName","木箱是否防护"); - row3.put("DataType","7"); - row3.put("DataValue","true"); - row3.put("DataCollectionDefId","001c61800000004f"); - row3.put("DataCollectionDefName","PACKAGE"); + row3.put("DataPointName", "木箱是否有发霉、露钉、异物、破损等,是否符合要求"); + row3.put("DataType", "7"); + row3.put("DataValue", "true"); + row3.put("DataCollectionDefId", "001c61800000004f"); + row3.put("DataCollectionDefName", "PACKAGE"); rows.add(row3); + + // 4. 标签是否清晰完整 + JSONObject row4 = new JSONObject(); + row4.put("DataPointName", "标签是否清晰完整"); + row4.put("DataType", "7"); + row4.put("DataValue", "true"); + row4.put("DataCollectionDefId", "001c61800000004f"); + row4.put("DataCollectionDefName", "PACKAGE"); + rows.add(row4); + + // 5. 标识(管标、卷标、箱标)与实物一致,无错标、漏标、模糊不清 + JSONObject row5 = new JSONObject(); + row5.put("DataPointName", "标识(管标、卷标、箱标)与实物一致,无错标、漏标、模糊不清"); + row5.put("DataType", "7"); + row5.put("DataValue", "true"); + row5.put("DataCollectionDefId", "001c61800000004f"); + row5.put("DataCollectionDefName", "PACKAGE"); + rows.add(row5); + + // 6. 标签是否符合要求 + JSONObject row6 = new JSONObject(); + row6.put("DataPointName", "标签是否符合要求"); + row6.put("DataType", "7"); + row6.put("DataValue", "true"); + row6.put("DataCollectionDefId", "001c61800000004f"); + row6.put("DataCollectionDefName", "PACKAGE"); + rows.add(row6); + + // 7. 接头是否符合(标箔) + JSONObject row7 = new JSONObject(); + row7.put("DataPointName", "接头是否符合(标箔)"); + row7.put("DataType", "7"); + row7.put("DataValue", "true"); + row7.put("DataCollectionDefId", "001c61800000004f"); + row7.put("DataCollectionDefName", "PACKAGE"); + rows.add(row7); + param.put("DataPoints", rows); log.info("BoxDataCollectionSubmit2接口请求参数为:-------------------" + param.toString()); try { @@ -1055,19 +1212,27 @@ public class LmsToMesServiceImpl implements LmsToMesService { String RTYPE = result.getString("RTYPE"); if ("E".equals(RTYPE)) { - throw new BadRequestException(LangBehavior.language("system.mesErrorTitle") +result.getString("RTMSG")); + throw new BadRequestException("MES提示错误:" + result.getString("RTMSG")); } } catch (Exception e) { - PdmProductSpecServiceImpl.doRecord(SpecEnum.YX_MES,param,Boolean.FALSE,e.getMessage(),containerName); + PdmProductSpecServiceImpl.doRecord(SpecEnum.YX_MES, param, Boolean.FALSE, e.getMessage(), containerName); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/BoxDataCollectionSubmit2", "mes验箱", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); throw new BadRequestException("MES错误:" + e.getMessage()); } - PdmProductSpecServiceImpl.doRecord(SpecEnum.YX_MES,param,Boolean.TRUE,null,containerName); + PdmProductSpecServiceImpl.doRecord(SpecEnum.YX_MES, param, Boolean.TRUE, null, containerName); + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/BoxDataCollectionSubmit2", "mes验箱", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } public JSONObject getInspectionResult(JSONObject param) { - log.info("getInspectionResult接口输出参数为:-------------------" + param.toString()); + log.info("getInspectionResult接口输入参数为:-------------------" + param.toString()); String container_name = param.getString("container_name"); @@ -1077,7 +1242,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { } JSONObject result = new JSONObject(); - + long startTime = System.currentTimeMillis(); String isConnect2 = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_CONNECT_MES2").getValue(); if ("0".equals(isConnect2)) { return result; @@ -1098,8 +1263,15 @@ public class LmsToMesServiceImpl implements LmsToMesService { .timeout(time_out)//超时时间,毫秒 .execute().body(); result = JSONObject.parseObject(resultMsg); + + String RTYPE = result.getString("RTYPE"); + if ("E".equals(RTYPE)) { + throw new BadRequestException("MES提示错误:" + result.getString("RTMSG")); + } + IpdmBiSubpackagerelationService subpackagerelationService = SpringContextHolder.getBean(IpdmBiSubpackagerelationService.class); JSONObject container_info = result.getJSONObject("RTDAT"); + System.out.println(container_info.toString()); if (ObjectUtil.isNotEmpty(container_info)) { //子卷号 String ContainerName = container_info.getString("ContainerName"); @@ -1160,7 +1332,7 @@ public class LmsToMesServiceImpl implements LmsToMesService { PdmBiContainerinfo one = containerinfoService.getOne(new LambdaQueryWrapper().eq(PdmBiContainerinfo::getContainer_name, ContainerName)); if (ObjectUtil.isEmpty(one)) { PdmBiContainerinfo containerinfo = PdmBiContainerinfo.builder() - .workorder_id(IdUtil.getSnowflake(1, 1).nextId()) + .workorder_id(IdUtil.getLongId()) .container_name(ContainerName) .sap_pcsn(SAPLotNumber) .sale_order_name(SaleOrderName) @@ -1212,17 +1384,175 @@ public class LmsToMesServiceImpl implements LmsToMesService { } log.info("getInspectionResult接口输出参数为:-------------------" + result.toString()); + } catch (Exception e) { + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/GetInspectionResult", "/CamstarApi/GetInspectionResult", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + throw new BadRequestException("MES提示错误:" + e.getMessage()); + } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/GetInspectionResult", "/CamstarApi/GetInspectionResult", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); + return result; + } + + @Override + public JSONObject GetChildWeightIsSamplePDA(JSONObject param) { + String container_name = param.getString("container_name"); + + if (StrUtil.isEmpty(container_name)) { + throw new BadRequestException("子卷号不能为空!"); + } + + JSONObject result = new JSONObject(); + long startTime = System.currentTimeMillis(); + log.info("GetChildWeightIsSamplePDA接口输入参数为:-------------------" + param.toString()); + + String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_URL").getValue(); + String api = "CamstarApi/GetChildWeightIsSamplePDA"; + url = url + api; + + String UserName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_USERNAME").getValue(); + String Password = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_PASSWORD").getValue(); + param.put("UserName", UserName); + param.put("Password", Password); + param.put("ContainerName", container_name); + + + try { + String resultMsg = HttpRequest.post(url) + .body(String.valueOf(param)) + .timeout(time_out)//超时时间,毫秒 + .execute().body(); + resultMsg = resultMsg + .replace("\\\"", "\"") // 移除字符串转义 + .replace("\"[", "[") // 修复数组开头 + .replace("]\"", "]"); // 修复数组结尾 + result = JSONObject.parseObject(resultMsg); + log.info("GetChildWeightIsSamplePDA接口输出参数为:-------------------" + result.toString()); String RTYPE = result.getString("RTYPE"); if ("E".equals(RTYPE)) { throw new BadRequestException(result.getString("RTMSG")); } + if (ObjectUtil.isEmpty(result.getJSONArray("RTDAT"))){ + result.put("result", false); + result.put("rtdat", "没有检验结果"); + return result; + } + JSONObject rtdat = result.getJSONArray("RTDAT").getJSONObject(0); + + if (ObjectUtil.isNotEmpty(rtdat.getString("IsSampleTest")) && ObjectUtil.isNotEmpty(rtdat.getString("SampleCount")) && ObjectUtil.isNotEmpty(rtdat.getString("SampleTestResult"))) { + if (rtdat.getString("IsSampleTest").equals(rtdat.getString("SampleCount")) && "PASS".equals(rtdat.getString("SampleTestResult"))) { + result.put("result", true); + } + } } catch (Exception e) { - throw new BadRequestException(LangBehavior.language("system.mesErrorTitle") + e.getMessage()); + // 记录失败日志 + OutboundApiLogger.logFail("mes", "/CamstarApi/GetChildWeightIsSamplePDA", "/CamstarApi/GetChildWeightIsSamplePDA", + url, "POST", JSONUtil.toJsonStr(param), e.getMessage(), + System.currentTimeMillis() - startTime); + throw new BadRequestException("MES提示错误:" + e.getMessage()); } + // 记录成功日志 + OutboundApiLogger.logSuccess("mes", "/CamstarApi/GetChildWeightIsSamplePDA", "/CamstarApi/GetChildWeightIsSamplePDA", + url, "POST", JSONUtil.toJsonStr(param), result.toString(), 200, + System.currentTimeMillis() - startTime); return result; } + @Override + public void EditSheetApi(JSONObject jo) { + JSONObject feishu_json = new JSONObject(); + feishu_json.put("app_token", "B6r1bVaHmak3xQsL8kMc9gM5nxf"); + feishu_json.put("tableid", "tbluPCwWQcvOprcx"); + + // 获取当前时间 + LocalDateTime now = LocalDateTime.now(); + + String feishu_time = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("FEISHU_TIME").getValue(); + LocalDateTime today8AM; + if (StrUtil.equals(feishu_time,"-")) { + // 1. 当天早上 8 点:将当前时间的时、分、秒、纳秒设为 8:00:00 + today8AM = now.withHour(7) + .withMinute(59) + .withSecond(59) + .withNano(0); + } else { + String dateTimeStr = feishu_time + "T00:00:00"; + LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr); + today8AM =dateTime.withHour(7) + .withMinute(59) + .withSecond(59) + .withNano(0); + } + + // 2. 前一天早上 8 点:当天 8 点减去 1 天 + LocalDateTime yesterday8AM = today8AM.minus(1, ChronoUnit.DAYS).plusSeconds(1); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String begin_time = yesterday8AM.format(formatter); + String end_time = today8AM.format(formatter); + JSONArray rows = WQL.getWO("ST_IVT_INBILLQUERY").addParam("flag", "7") + .addParam("begin_time", begin_time) + .addParam("end_time", end_time) + .process().getResultJSONArray(0); + JSONArray fs_rows = new JSONArray(); + for (int i = 0; i < rows.size(); i++) { + JSONObject row = rows.getJSONObject(i); + JSONObject fs_row = new JSONObject(); + fs_row.put("日期", row.getLongValue("日期")); + fs_row.put("班次", row.getString("班次")); + fs_row.put("销售订单", row.getLongValue("销售订单")); + fs_row.put("行号", row.getLongValue("行号")); + fs_row.put("业务类型", row.getString("业务类型")); + fs_row.put("客户编码", row.getLongValue("客户编码")); + fs_row.put("客户名称", row.getString("客户名称")); + fs_row.put("业务员", row.getString("业务员")); + fs_row.put("规格", row.getDoubleValue("规格")); + fs_row.put("尺寸(mm)(客户要求幅宽)", row.getDoubleValue("尺寸(mm)(客户要求幅宽)")); + fs_row.put("实际尺寸(mm)(实际幅宽)", row.getDoubleValue("实际尺寸(mm)(实际幅宽)")); + fs_row.put("木箱规格|尺寸", row.getString("木箱规格|尺寸")); + fs_row.put("毛重合计", row.getDoubleValue("毛重合计")); + fs_row.put("小卷号", row.getString("小卷号")); + fs_row.put("SAP批次号", row.getString("sap批次号")); + fs_row.put("净重(KG)", row.getDoubleValue("净重(kg)")); + fs_row.put("卷数", row.getIntValue("卷数")); + fs_row.put("品级", row.getString("品级")); + fs_row.put("箱号", row.getString("箱号")); + fs_row.put("销售订单及行号", row.getString("销售订单及行号")); + fs_row.put("母卷号", row.getString("母卷号")); + fs_row.put("基重(面密度)(g|m³)", row.getDoubleValue("基重(面密度)(g|m³)")); + fs_row.put("居中度(mm)", row.getString("居中度(mm)")); + fs_row.put("塌边(mm)", row.getString("塌边(mm)")); + fs_row.put("米数(长度)", row.getDoubleValue("米数(长度)")); + fs_row.put("管件类型", row.getString("管件类型")); + fs_row.put("管件编码", row.getLongValue("管件编码")); + fs_row.put("管件描述", row.getString("管件描述")); + fs_row.put("生产实际抗拉值", row.getDoubleValue("生产实际抗拉值")); + fs_row.put("内控标准抗拉下限", row.getDoubleValue("内控标准抗拉下限")); + fs_row.put("客户需求抗拉下限", row.getDoubleValue("客户需求抗拉下限")); + fs_row.put("生产日期", row.getLongValue("生产日期")); + fs_row.put("入库日期", row.getLongValue("入库日期")); + fs_row.put("生产区域", row.getString("生产区域")); + fs_rows.add(fs_row); + } + feishu_json.put("MsgList", fs_rows); + + try { + String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("FEISHU_INSTOR").getValue(); + String api = "FeiShuNoticesWebApi/EditSheetApi"; + String resultMsg = HttpRequest.post(url + api) + .body(String.valueOf(feishu_json)) + .execute().body(); + log.info("飞书输入参数为:-------------------" + feishu_json); + log.info("飞书输出参数为:-------------------" + resultMsg); + } catch (Exception e) { + log.info(e.getMessage()); + } + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java index d8561d0..787b62c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java @@ -5,7 +5,9 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpStatus; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -55,6 +57,7 @@ import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.nl.system.service.sysapi.service.OutboundApiLogger; import org.nl.wms.basedata.master.service.CustomerbaseService; import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.mes.service.MesToLmsService; @@ -559,212 +562,209 @@ public class MesToLmsServiceImpl implements MesToLmsService { /** * 分切包装段:分切计划(单表,包含母卷/改制子卷-包装箱号、空包装箱物料、纸筒/FRP管)MES下发智能物流 * - * @param param + * @param * @return */ @Override @Transactional(rollbackFor = Exception.class) - public JSONObject cutPlanTransfer(JSONObject param) { - log.info("cutPlanTransfer接口输入参数为:-------------------" + param.toString()); - - String orderType = param.getString("OrderType"); // 分切订单类型 - String ContainerName = param.getString("ContainerName"); // 子卷号 - String ProductName = param.getString("ProductName"); // 产品编码 - String Description = param.getString("Description"); // 产品名称 - String Warehouse = param.getString("Warehouse"); // 来源卷位置 - String ResourceName = param.getString("ResourceName"); // 分切机台编码 - String SplitGroup = param.getString("SplitGroup"); // 分切组 - String ManufactureSort = param.getString("ManufactureSort"); // 生产顺序 - String MfgOrderName = param.getString("MfgOrderName"); // 生产订单 - String ManufactureDate = param.getString("ManufactureDate"); // 生产日期 - String PaperTubeOrFRP = param.getString("PaperTubeOrFRP"); // 管件类型 - String SplitBreadth = param.getString("SplitBreadth"); // 子卷幅宽 - String SplitHeight = param.getString("SplitHeight"); // 子卷理论长度 - String SplitWeight = param.getString("SplitWeight"); // 子卷理论重量 - String Attribute2 = param.getString("Attribute2"); // 销售订单及行号 - String Attribute3 = param.getString("Attribute3"); // 上下轴 - String Attribute4 = param.getString("Attribute4"); // 位置左右 - String Attribute5 = param.getString("Attribute5"); // 是否套轴 - String Attribute6 = param.getString("Attribute6"); // 是否套轴 + public JSONObject cutPlanTransfer(JSONArray ja) { + log.info("cutPlanTransfer接口输入参数为:-------------------" + ja.toString()); WQLObject tab = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan"); - JSONObject result = new JSONObject(); + String now = DateUtil.now(); try { - // 基础校验 - if (ObjectUtil.isEmpty(orderType)) { - throw new BadRequestException("分切订单类型不能为空"); - } - if (ObjectUtil.isEmpty(ContainerName)) { - throw new BadRequestException("子卷号不能为空"); - } - if (ObjectUtil.isEmpty(ProductName)) { - throw new BadRequestException("产品编码不能为空"); - } - if (ObjectUtil.isEmpty(Description)) { - throw new BadRequestException("产品名称不能为空"); - } - if (ObjectUtil.isEmpty(Warehouse)) { - throw new BadRequestException("来源卷位置不能为空"); - } - if (ObjectUtil.isEmpty(ResourceName)) { - throw new BadRequestException("分切机台编码不能为空"); - } - if (ObjectUtil.isEmpty(SplitGroup)) { - throw new BadRequestException("分切组不能为空"); - } - if (ObjectUtil.isEmpty(ManufactureSort)) { - throw new BadRequestException("生产顺序不能为空"); - } - if (ObjectUtil.isEmpty(MfgOrderName)) { - throw new BadRequestException("生产订单不能为空"); - } - if (ObjectUtil.isEmpty(ManufactureDate)) { - throw new BadRequestException("生产日期不能为空"); - } - if (ObjectUtil.isEmpty(PaperTubeOrFRP)) { - throw new BadRequestException("管件类型不能为空"); - } - if (ObjectUtil.isEmpty(SplitBreadth)) { - throw new BadRequestException("子卷幅宽不能为空"); - } - if (ObjectUtil.isEmpty(SplitHeight)) { - throw new BadRequestException("子卷理论长度不能为空"); - } - if (ObjectUtil.isEmpty(SplitWeight)) { - throw new BadRequestException("子卷理论重量不能为空"); - } + for (int i = 0; i < ja.size(); i++) { + JSONObject param = ja.getJSONObject(i); + String orderType = param.getString("OrderType"); // 分切订单类型 + String ContainerName = param.getString("ContainerName"); // 子卷号 + String ProductName = param.getString("ProductName"); // 产品编码 + String Description = param.getString("Description"); // 产品名称 + String Warehouse = param.getString("Warehouse"); // 来源卷位置 + String ResourceName = param.getString("ResourceName"); // 分切机台编码 + String SplitGroup = param.getString("SplitGroup"); // 分切组 + String ManufactureSort = param.getString("ManufactureSort"); // 生产顺序 + String MfgOrderName = param.getString("MfgOrderName"); // 生产订单 + String ManufactureDate = param.getString("ManufactureDate"); // 生产日期 + String PaperTubeOrFRP = param.getString("PaperTubeOrFRP"); // 管件类型 + String SplitBreadth = param.getString("SplitBreadth"); // 子卷幅宽 + String SplitHeight = param.getString("SplitHeight"); // 子卷理论长度 + String SplitWeight = param.getString("SplitWeight"); // 子卷理论重量 + String Attribute2 = param.getString("Attribute2"); // 销售订单及行号 + String Attribute3 = param.getString("Attribute3"); // 上下轴 + String Attribute4 = param.getString("Attribute4"); // 位置左右 + String Attribute5 = param.getString("Attribute5"); // 是否套轴 + String Attribute6 = param.getString("Attribute6"); // 物料类型 - /* orderType - * 1.当订单类型为1(常规)时 ParentContainerName 来源母卷号不能为空 - * 2.当订单类型为2(改制)时 RestructContainerName 改制来源子卷号、PackageBoxSN 子卷立库木箱号 不能为空 - */ - if (StrUtil.equals(orderType, "1")) { - if (ObjectUtil.isEmpty(param.getString("ParentContainerName"))) { - throw new BadRequestException("来源母卷号不能为空"); + // 基础校验 + if (ObjectUtil.isEmpty(orderType)) { + throw new BadRequestException("分切订单类型不能为空"); } - } else { - if (ObjectUtil.isEmpty(param.getString("RestructContainerName"))) { - throw new BadRequestException("改制来源子卷号不能为空"); + if (ObjectUtil.isEmpty(ContainerName)) { + throw new BadRequestException("子卷号不能为空"); } - } - /* PaperTubeOrFRP - * 1.当管件类型为1(纸筒)时 PaperTubeMaterial 纸筒物料编码、PaperTubeDescription 纸筒物料描述、PaperTubeModel 纸筒规格 不能为空 - * 2.当管件类型为2(FRP管)时 FRPMaterial FRP管物料编码、FRPDescription FRP管物料描述、FRPModel FRP管规格 不能为空 - */ - String qzz_generation = "0"; - String qzz_size = "0"; - if (StrUtil.equals(PaperTubeOrFRP, "1")) { - if (ObjectUtil.isEmpty(param.getString("PaperTubeMaterial"))) { - throw new BadRequestException("纸筒物料编码不能为空"); + if (ObjectUtil.isEmpty(ProductName)) { + throw new BadRequestException("产品编码不能为空"); } - if (ObjectUtil.isEmpty(param.getString("PaperTubeDescription"))) { - throw new BadRequestException("纸筒物料描述不能为空"); + if (ObjectUtil.isEmpty(Description)) { + throw new BadRequestException("产品名称不能为空"); } - if (ObjectUtil.isEmpty(param.getString("PaperTubeModel"))) { - throw new BadRequestException("纸筒规格不能为空"); + if (ObjectUtil.isEmpty(Warehouse)) { + throw new BadRequestException("来源卷位置不能为空"); } - if (param.getString("PaperTubeDescription").contains("3.12")) { - qzz_generation = "4"; - } else if (param.getString("PaperTubeDescription").contains("3.15")) { - qzz_generation = "5"; + if (ObjectUtil.isEmpty(ResourceName)) { + throw new BadRequestException("分切机台编码不能为空"); + } + if (ObjectUtil.isEmpty(SplitGroup)) { + throw new BadRequestException("分切组不能为空"); + } + if (ObjectUtil.isEmpty(ManufactureSort)) { + throw new BadRequestException("生产顺序不能为空"); + } + if (ObjectUtil.isEmpty(MfgOrderName)) { + throw new BadRequestException("生产订单不能为空"); + } + if (ObjectUtil.isEmpty(ManufactureDate)) { + throw new BadRequestException("生产日期不能为空"); + } + if (ObjectUtil.isEmpty(PaperTubeOrFRP)) { + throw new BadRequestException("管件类型不能为空"); + } + if (ObjectUtil.isEmpty(SplitBreadth)) { + throw new BadRequestException("子卷幅宽不能为空"); + } + if (ObjectUtil.isEmpty(SplitHeight)) { + throw new BadRequestException("子卷理论长度不能为空"); + } + if (ObjectUtil.isEmpty(SplitWeight)) { + throw new BadRequestException("子卷理论重量不能为空"); + } + + /* orderType + * 1.当订单类型为1(常规)时 ParentContainerName 来源母卷号不能为空 + * 2.当订单类型为2(改制)时 RestructContainerName 改制来源子卷号、PackageBoxSN 子卷立库木箱号 不能为空 + */ + if (StrUtil.equals(orderType, "1")) { + if (ObjectUtil.isEmpty(param.getString("ParentContainerName"))) { + throw new BadRequestException("来源母卷号不能为空"); + } } else { - qzz_generation = "4"; + if (ObjectUtil.isEmpty(param.getString("RestructContainerName"))) { + throw new BadRequestException("改制来源子卷号不能为空"); + } } - - // 解析描述数组 - String[] tubeArray = param.getString("PaperTubeDescription").split("\\|"); - //定义尺寸与长度 - // todo 88549333 修改 采用公共处理方法获取纸管的规格 2026年05月19日 18:05 - qzz_size = MdmDescriptionParseUtils.extractPaperTubeSize(param.getString("PaperTubeDescription")); - } else { - if (ObjectUtil.isEmpty(param.getString("FRPMaterial"))) { - throw new BadRequestException("FRP管物料编码不能为空"); - } - if (ObjectUtil.isEmpty(param.getString("FRPDescription"))) { - throw new BadRequestException("FRP管物料描述不能为空"); - } - if (ObjectUtil.isEmpty(param.getString("FRPModel"))) { - throw new BadRequestException("FRP管规格不能为空"); - } - if (param.getString("FRPDescription").contains("3.12")) { - qzz_generation = "4"; - } else if (param.getString("FRPDescription").contains("3.15")) { - qzz_generation = "5"; + /* PaperTubeOrFRP + * 1.当管件类型为1(纸筒)时 PaperTubeMaterial 纸筒物料编码、PaperTubeDescription 纸筒物料描述、PaperTubeModel 纸筒规格 不能为空 + * 2.当管件类型为2(FRP管)时 FRPMaterial FRP管物料编码、FRPDescription FRP管物料描述、FRPModel FRP管规格 不能为空 + */ + String qzz_generation = "0"; + String qzz_size = "0"; + if (StrUtil.equals(PaperTubeOrFRP, "1")) { + if (ObjectUtil.isEmpty(param.getString("PaperTubeMaterial"))) { + throw new BadRequestException("纸筒物料编码不能为空"); + } + if (ObjectUtil.isEmpty(param.getString("PaperTubeDescription"))) { + throw new BadRequestException("纸筒物料描述不能为空"); + } + if (ObjectUtil.isEmpty(param.getString("PaperTubeModel"))) { + throw new BadRequestException("纸筒规格不能为空"); + } + if (param.getString("PaperTubeDescription").contains("3.12")) { + qzz_generation = "4"; + } else if (param.getString("PaperTubeDescription").contains("3.15")) { + qzz_generation = "5"; + } else { + qzz_generation = "4"; + } + //定义尺寸与长度 + // todo 88549333 修改 采用公共处理方法获取纸管的规格 2026年05月19日 18:05 + qzz_size = MdmDescriptionParseUtils.extractPaperTubeSize(param.getString("PaperTubeDescription")); } else { - qzz_generation = "4"; + if (ObjectUtil.isEmpty(param.getString("FRPMaterial"))) { + throw new BadRequestException("FRP管物料编码不能为空"); + } + if (ObjectUtil.isEmpty(param.getString("FRPDescription"))) { + throw new BadRequestException("FRP管物料描述不能为空"); + } + if (ObjectUtil.isEmpty(param.getString("FRPModel"))) { + throw new BadRequestException("FRP管规格不能为空"); + } + if (param.getString("FRPDescription").contains("3.12")) { + qzz_generation = "4"; + } else if (param.getString("FRPDescription").contains("3.15")) { + qzz_generation = "5"; + } else { + qzz_generation = "4"; + } + // 定义尺寸与长度 + // todo 88549333 修改 采用公共处理方法获取FRP管的规格 2026年05月19日 18:25 + qzz_size = MdmDescriptionParseUtils.extractFRPTubeSizeTrans(param.getString("FRPDescription")); } - // 解析描述数组 - String[] tubeArray = param.getString("FRPDescription").split("\\|"); - // 定义尺寸与长度 - // todo 88549333 修改 采用公共处理方法获取FRP管的规格 2026年05月19日 18:25 - qzz_size = MdmDescriptionParseUtils.extractFRPTubeSizeTrans(param.getString("FRPDescription")); + JSONObject json = new JSONObject(); + json.put("workorder_id", org.nl.common.utils.IdUtil.getLongId()); + json.put("order_type", orderType); + json.put("container_name", ContainerName); + json.put("product_name", ProductName); + json.put("description", Description); + json.put("parent_container_name", param.getString("ParentContainerName")); + json.put("restruct_container_name", param.getString("RestructContainerName")); + json.put("package_box_sn", param.getString("PackageBoxSN")); + json.put("ware_house", Warehouse); + json.put("resource_name", ResourceName); + json.put("split_group", SplitGroup); + json.put("manufacture_sort", ManufactureSort); + json.put("mfg_order_name", MfgOrderName); + json.put("manufacture_date", ManufactureDate); + json.put("paper_tube_or_FRP", PaperTubeOrFRP); + json.put("paper_tube_material", param.getString("PaperTubeMaterial")); + json.put("paper_tube_description", param.getString("PaperTubeDescription")); + json.put("paper_tube_model", param.getString("PaperTubeModel")); + json.put("FRP_material", param.getString("FRPMaterial")); + json.put("FRP_description", param.getString("FRPDescription")); + json.put("FRP_model", param.getString("FRPModel")); + json.put("split_breadth", SplitBreadth); + json.put("split_height", SplitHeight); + json.put("split_weight", SplitWeight); + if (Attribute3.equals("U")) { + json.put("up_or_down", "1"); + } else { + json.put("up_or_down", "2"); + } + if (Attribute4.equals("L")) { + json.put("left_or_right", "1"); + } else { + json.put("left_or_right", "2"); + } + json.put("qzz_size", qzz_size); + if (ResourceName.startsWith("B5") || ResourceName.startsWith("B6")) { + json.put("is_paper_ok", "1"); + } + if (Attribute5.equals("0")) { + json.put("is_paper_ok", "2"); + } + json.put("sale_order_name", Attribute2); + json.put("material_type", Attribute6); + json.put("start_time", now); + json.put("status", "01"); + json.put("qzz_generation", qzz_generation); + json.put("is_parent_ok", "0"); + json.put("is_child_tz_ok", "0"); + json.put("is_child_ps_ok", "0"); + json.put("is_delete", "0"); + tab.insert(json); } - - JSONObject json = new JSONObject(); - json.put("workorder_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("order_type", orderType); - json.put("container_name", ContainerName); - json.put("product_name", ProductName); - json.put("description", Description); - json.put("parent_container_name", param.getString("ParentContainerName")); - json.put("restruct_container_name", param.getString("RestructContainerName")); - json.put("package_box_sn", param.getString("PackageBoxSN")); - json.put("ware_house", Warehouse); - json.put("resource_name", ResourceName); - json.put("split_group", SplitGroup); - json.put("manufacture_sort", ManufactureSort); - json.put("mfg_order_name", MfgOrderName); - json.put("manufacture_date", ManufactureDate); - json.put("paper_tube_or_FRP", PaperTubeOrFRP); - json.put("paper_tube_material", param.getString("PaperTubeMaterial")); - json.put("paper_tube_description", param.getString("PaperTubeDescription")); - json.put("paper_tube_model", param.getString("PaperTubeModel")); - json.put("FRP_material", param.getString("FRPMaterial")); - json.put("FRP_description", param.getString("FRPDescription")); - json.put("FRP_model", param.getString("FRPModel")); - json.put("split_breadth", SplitBreadth); - json.put("split_height", SplitHeight); - json.put("split_weight", SplitWeight); - if (Attribute3.equals("U")) { - json.put("up_or_down", "1"); - } else { - json.put("up_or_down", "2"); - } - if (Attribute4.equals("L")) { - json.put("left_or_right", "1"); - } else { - json.put("left_or_right", "2"); - } - json.put("qzz_size", qzz_size); - if (ResourceName.startsWith("B5") || ResourceName.startsWith("B6")) { - json.put("is_paper_ok", "1"); - } - if (Attribute5.equals("0")) { - json.put("is_paper_ok", "2"); - } - json.put("sale_order_name", Attribute2); - json.put("material_type", Attribute6); - json.put("start_time", DateUtil.now()); - json.put("status", "01"); - json.put("qzz_generation", qzz_generation); - json.put("is_parent_ok", "0"); - json.put("is_child_tz_ok", "0"); - json.put("is_child_ps_ok", "0"); - json.put("is_delete", "0"); - tab.insert(json); - - result.put("RTYPE", "S"); - result.put("RTMSG", "操作成功!"); - result.put("RTOAL", 1); - result.put("RTDAT", null); } catch (Exception e) { result.put("RTYPE", "E"); result.put("RTMSG", "操作失败!" + e.getMessage()); result.put("RTOAL", 0); result.put("RTDAT", null); } + result.put("RTYPE", "S"); + result.put("RTMSG", "操作成功!"); + result.put("RTOAL", 1); + result.put("RTDAT", null); + log.info("cutPlanTransfer接口输出参数为:-------------------" + result.toString()); return result; } @@ -2574,4 +2574,186 @@ public class MesToLmsServiceImpl implements MesToLmsService { } return resultParam; } + + @Override + public JSONObject changeBomInfo(JSONObject param) { + log.info("changeBomInfo输入参数为:-------------------" + param.toString()); + WQLObject plan_tab = WQLObject.getWQLObject("pdm_bi_slittingproductionplan"); + + /* MES传递的入参内容 + { + ChangType:1 + "MfgOrderName": "25529502-20230926$02#02", + "ContainerName":"A2512505050203B2", + "ProductName": "44151000900045", + "Description": "木制包装容器及板材|木箱|650|4|3|1290*750*494", + "CarrierName": "48221000000001", + "CarrierDescription": "纸制筒管|纸管|3英寸|650", + "Type": "RW2", + "HL01": "A+", + "HL02": "520", + "HL03": "1,538.000", + "HL031": "2,000.000", + "HL04": "100.000", + "HL041": "130.000", + "HL05": "20,000.000", + "HL06": "CC", + "HL07": "4", + "HL08": "ZT1(纸筒-3寸)", + "HL081": "650", + "HL09": "ROF(毛面朝外)", + "HL10": "纸管长度650,中性包装", + "HL11": null + } + */ + Long id = org.nl.common.utils.IdUtil.getLongId(); + //变更类型 + String change_type = param.getString("ChangeType"); + //子卷号 + String container_name = param.getString("ContainerName"); + //设备级工单号 + String mfg_order = param.getString("MfgOrderName"); + //木箱物料编码 + String product_name = param.getString("ProductName"); + //木箱描述 + String description = param.getString("Description"); + //管芯编码 + String carrier_name = param.getString("CarrierName"); + //管芯描述 + String carrier_description = param.getString("CarrierDescription"); + //类型 + String type = param.getString("Type"); + //等级 + String level = param.getString("HL01"); + //幅宽 + String thickness = param.getString("HL02"); + //单卷长度下限 + String length_floor = param.getString("HL03"); + //单卷长度上限 + String length_ceiling = param.getString("HL031"); + //单卷重量下限 + String weight_floor = param.getString("HL04"); + //单卷重量上限 + String weight_ceiling = param.getString("HL041"); + //订单重量 + String order_weight = param.getString("HL05"); + //包装方案 + String package_type = param.getString("HL06"); + //单箱装卷数 + String package_num = param.getString("HL07"); + //管芯选配 + String paper_type = param.getString("HL08"); + //客户要求管芯长度 + String need_paper_length = param.getString("HL081"); + //收卷方式 + String rolling_type = param.getString("HL09"); + //客户特殊包装要求 + String package_request = param.getString("HL10"); + //客户指定生箔机台 + String request_machine = param.getString("HL11"); + + JSONObject resultParam = new JSONObject(); + + try { + if (change_type.equals("1")) { + HashMap plan_map = new HashMap(); + //变更分切计划的管件信息及订单号 + //1、判断变更的属于FRP管还是纸管,通过判断类型。Type:RW2(FRP管),RW3(纸管) + if (type.equals("RW2")) { + plan_map.put("paper_tube_or_FRP", "2"); + plan_map.put("FRP_material", carrier_name); + plan_map.put("FRP_description", carrier_description); + plan_map.put("FRP_model", carrier_description); + plan_map.put("mfg_order_name", mfg_order); + } else { + plan_map.put("paper_tube_or_FRP", "1"); + plan_map.put("paper_tube_material", carrier_name); + plan_map.put("paper_tube_description", carrier_description); + plan_map.put("paper_tube_model", carrier_description); + plan_map.put("mfg_order_name", mfg_order); + } + plan_tab.update(plan_map, "container_name = '" + container_name + "'"); + } + + //变更订单BOM的信息 + //判断当前订单BOM是否存在,如果存在则更新,否则保存 + IPdmBiOrderbominfoService orderbominfoService = SpringContextHolder.getBean(IPdmBiOrderbominfoService.class); + PdmBiOrderbominfo orderbominfo = orderbominfoService.getOne(new LambdaQueryWrapper().eq(PdmBiOrderbominfo::getMfgOrder, mfg_order)); + if (ObjectUtil.isEmpty(orderbominfo)) { + PdmBiOrderbominfo bom_info = PdmBiOrderbominfo.builder() + .id(id) + .mfgOrder(mfg_order) + .productName(product_name) + .description(description) + .carrierName(carrier_name) + .carrierDescription(carrier_description) + .type(type) + .level(level) + .thickness(thickness) + .lengthFloor(length_floor) + .lengthCeiling(length_ceiling) + .weightFloor(weight_floor) + .weightCeiling(weight_ceiling) + .orderWeight(order_weight) + .packageType(package_type) + .packageNum(package_num) + .paperType(paper_type) + .needPaperLength(need_paper_length) + .rollingType(rolling_type) + .packageRequest(package_request) + .requestMachine(request_machine) + .inputTime(DateUtil.now()) + .build(); + orderbominfoService.save(bom_info); + } else { + orderbominfo.setProductName(product_name); + orderbominfo.setDescription(description); + orderbominfo.setCarrierName(carrier_name); + orderbominfo.setCarrierDescription(carrier_description); + orderbominfo.setType(type); + orderbominfo.setLevel(level); + orderbominfo.setThickness(thickness); + orderbominfo.setLengthFloor(length_floor); + orderbominfo.setLengthCeiling(length_ceiling); + orderbominfo.setWeightFloor(weight_floor); + orderbominfo.setWeightCeiling(weight_ceiling); + orderbominfo.setOrderWeight(order_weight); + orderbominfo.setPackageType(package_type); + orderbominfo.setPackageNum(package_num); + orderbominfo.setPaperType(paper_type); + orderbominfo.setNeedPaperLength(need_paper_length); + orderbominfo.setRollingType(rolling_type); + orderbominfo.setPackageRequest(package_request); + orderbominfo.setRequestMachine(request_machine); + orderbominfoService.updateById(orderbominfo); + } + + //更新当前分切计划包含该订单的对应的管件信息 + IPdmBiSlittingproductionplanService service = SpringContextHolder.getBean(IPdmBiSlittingproductionplanService.class); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() + .eq(PdmBiSlittingproductionplan::getMfg_order_name, mfg_order); + if (type.equals("RW2")) { + updateWrapper.set(PdmBiSlittingproductionplan::getFRP_material, carrier_name); + updateWrapper.set(PdmBiSlittingproductionplan::getFRP_description, carrier_description); + updateWrapper.set(PdmBiSlittingproductionplan::getFRP_model, carrier_description); + } else { + updateWrapper.set(PdmBiSlittingproductionplan::getPaper_tube_material, carrier_name); + updateWrapper.set(PdmBiSlittingproductionplan::getPaper_tube_description, carrier_description); + updateWrapper.set(PdmBiSlittingproductionplan::getPaper_tube_model, carrier_description); + } + service.update(updateWrapper); + + resultParam.put("RTYPE", "S"); + resultParam.put("RTMSG", "操作成功!"); + resultParam.put("RTOAL", 1); + resultParam.put("RTDAT", null); + } catch (Exception e) { + resultParam.put("RTYPE", "E"); + resultParam.put("RTMSG", "操作失败!" + e.getMessage()); + resultParam.put("RTOAL", 0); + resultParam.put("RTDAT", null); + } + log.info("changeBomInfo输出参数为:-------------------" + resultParam.toString()); + return resultParam; + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java index 9d0238a..f39ec9f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java @@ -187,8 +187,8 @@ public class ProductInstorServiceImpl implements ProductInstorService { //查询仓库 JSONObject stor = new JSONObject(); - if ("BC01".equals(sub_jo.getString("ext_code"))) { - stor = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("is_delete = '0' AND is_used = '1' AND is_productstore = '0' AND stor_code = 'BC01'").uniqueResult(0); + if ("F001".equals(sub_jo.getString("ext_code"))) { + stor = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("is_delete = '0' AND is_used = '1' AND is_productstore = '0' AND stor_code = 'F001'").uniqueResult(0); } else if ("NC01".equals(sub_jo.getString("ext_code"))){ stor = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("is_delete = '0' AND is_used = '1' AND is_productstore = '1' AND stor_code = 'NC01'").uniqueResult(0); }else { @@ -212,7 +212,7 @@ public class ProductInstorServiceImpl implements ProductInstorService { } //判断是否虚拟 if (!"1".equals(is_virtual)) { - if ("BC01".equals(sub_jo.getString("ext_code"))) { + if ("F001".equals(sub_jo.getString("ext_code"))) { throw new BadRequestException("二期仓库木箱,请进行虚拟入库!"); } @@ -387,7 +387,7 @@ public class ProductInstorServiceImpl implements ProductInstorService { String task_id = IdUtil.getSnowflake(1, 1).nextId() + ""; //直接分配虚拟区货位,并确认 - if ("BC01".equals(sub_jo.getString("ext_code"))) { + if ("F001".equals(sub_jo.getString("ext_code"))) { JSONObject jsonObject = WQLObject.getWQLObject("st_ivt_sectattr").query("sect_id = '" + whereJson.getString("sect_id") + "'") .uniqueResult(0); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_PRODUVTIONOUT.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_PRODUVTIONOUT.wql index f66d3ab..e3ebe18 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_PRODUVTIONOUT.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_PRODUVTIONOUT.wql @@ -145,7 +145,7 @@ mst.is_delete = '0' AND mst.io_type = '1' AND point.point_type = '8' - AND mst.stor_code = 'BC01' + AND mst.stor_code = 'F002' OPTION 输入.box_no <> "" point.vehicle_code LIKE 输入.box_no @@ -315,4 +315,4 @@ ENDSELECT ENDQUERY - ENDIF \ No newline at end of file + ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java index 401ec7e..faf1a1f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/bi/service/impl/SubpackagerelationServiceImpl.java @@ -11,6 +11,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.pdm_manage.enums.SUBEnum; import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; @@ -270,9 +271,29 @@ public class SubpackagerelationServiceImpl implements SubpackagerelationService mp.put("长度", json.getString("length")); mp.put("制造完成日期", json.getString("date_of_production")); mp.put("入库日期", json.getString("date_of_fg_inbound")); + try { + mp.put("状态", SUBEnum.STATUS.check(json.getString("status"))); + } catch (Exception e) { + log.error("状态转化异常" + e.getMessage()); + } mp.put("木箱自身重量", json.getString("box_weight")); mp.put("保质期", json.getString("quality_guaran_period")); - mp.put("子卷的物性值1", json.getString("un_plan_product_property1")); + String unPlanProductProperty1 = json.getString("un_plan_product_property1"); + mp.put("子卷的物性值1", unPlanProductProperty1); + Object parsedData = parseJsonData(unPlanProductProperty1); + if (parsedData instanceof JSONArray) { + JSONArray jsonArray = (JSONArray) parsedData; + if (!jsonArray.isEmpty()) { + // 获取第一个元素 + JSONObject firstItem = jsonArray.getJSONObject(0); + // 动态遍历 JSONObject 的所有键值对 + buildMap(mp, firstItem,true); + }else{ + buildMap(mp, null,false); + } + }else { + buildMap(mp, null,false); + } mp.put("子卷的物性值2", json.getString("un_plan_product_property2")); mp.put("子卷的物性值3", json.getString("un_plan_product_property3")); mp.put("木箱料号", json.getString("box_type")); @@ -291,5 +312,93 @@ public class SubpackagerelationServiceImpl implements SubpackagerelationService } FileUtil.downloadExcel(list, response); } - + /** + * @description: 如果是jsonObject 格式,则进行数据封装 + * @author ManMan.Yang + * @date: 2026/2/11 13:32 + **/ + public void buildMap(Map map, JSONObject data,boolean flag){ + //为了兼容历史数据导出 + if(!flag){ + map.put("厚度/μm", ""); + map.put("单位面积质量/g/m²", ""); + map.put("单位面积质量极差/g/m²", ""); + map.put("拉伸强度/Mpa", ""); + map.put("(高温拉伸强度/Mpa)", ""); + map.put("延伸率/%", ""); + map.put("高温拉伸强度/Mpa", ""); + map.put("S面粗糙度Ra/μm", ""); + map.put("M面粗糙度Rz/μm", ""); + map.put("M面光泽度/GU", ""); + map.put("铜箔卷曲高度/mm", ""); + map.put("铬含量/ppm", ""); + map.put("抗氧化性能/150℃|10min", ""); + map.put("抗氧化性能/213℃30min", ""); + map.put("表面能/mN/m", ""); + map.put("剥离强度/N/mm", ""); + map.put("铜粉(一级、二级、三级)", ""); + map.put("可焊性", ""); + return; + } + //厚度/μm、 + map.put("厚度/μm",StrUtil.isNotBlank(data.getString("厚度/μm")) ? data.getString("厚度/μm") : ""); + //单位面积质量/g/m²、 + map.put("单位面积质量/g/m²",StrUtil.isNotBlank(data.getString("单位面积质量/g/m²")) ? data.getString("单位面积质量/g/m²") : ""); + //单位面积质量极差/g/m²、 + map.put("单位面积质量极差/g/m²",StrUtil.isNotBlank(data.getString("单位面积质量极差/g/m²")) ? data.getString("单位面积质量极差/g/m²") : ""); + //拉伸强度/Mpa + map.put("拉伸强度/Mpa",StrUtil.isNotBlank(data.getString("拉伸强度/Mpa")) ? data.getString("拉伸强度/Mpa") : ""); + //(高温拉伸强度/Mpa) + map.put("高温拉伸强度/Mpa",StrUtil.isNotBlank(data.getString("高温拉伸强度/Mpa")) ? data.getString("高温拉伸强度/Mpa") : ""); + //延伸率/% + map.put("延伸率/%",StrUtil.isNotBlank(data.getString("延伸率/%")) ? data.getString("延伸率/%") : ""); + // (高温延伸率/%) + map.put("(高温延伸率/%)",StrUtil.isNotBlank(data.getString("(高温延伸率/%)")) ? data.getString("(高温延伸率/%)") : ""); + //S面粗糙度Ra/μm + map.put("S面粗糙度Ra/μm",StrUtil.isNotBlank(data.getString("S面粗糙度Ra/μm")) ? data.getString("S面粗糙度Ra/μm") : ""); + //M面粗糙度Rz/μm + map.put("M面粗糙度Rz/μm",StrUtil.isNotBlank(data.getString("M面粗糙度Rz/μm")) ? data.getString("M面粗糙度Rz/μm") : ""); + //M面光泽度/GU + map.put("M面光泽度/GU",StrUtil.isNotBlank(data.getString("M面光泽度/GU")) ? data.getString("M面光泽度/GU") : ""); + //铜箔卷曲高度/mm + map.put("铜箔卷曲高度/mm",StrUtil.isNotBlank(data.getString("铜箔卷曲高度/mm")) ? data.getString("铜箔卷曲高度/mm") : ""); + //铬含量/ppm + map.put("铬含量/ppm",StrUtil.isNotBlank(data.getString("铬含量/ppm")) ? data.getString("铬含量/ppm") : ""); + //抗氧化性能/150℃|10min + map.put("抗氧化性能/150℃|10min",StrUtil.isNotBlank(data.getString("抗氧化性能/150℃|10min")) ? data.getString("抗氧化性能/150℃|10min") : ""); + // 抗氧化性能/213℃30min + map.put("抗氧化性能/213℃30min",StrUtil.isNotBlank(data.getString("抗氧化性能/213℃30min")) ? data.getString("抗氧化性能/213℃30min") : ""); + //表面能/mN/m + map.put("表面能/mN/m",StrUtil.isNotBlank(data.getString("表面能/mN/m")) ? data.getString("表面能/mN/m") : ""); + // 剥离强度/N/mm + map.put("剥离强度/N/mm",StrUtil.isNotBlank(data.getString("剥离强度/N/mm")) ? data.getString("剥离强度/N/mm") : ""); + //铜粉(一级、二级、三级) + map.put("铜粉(一级、二级、三级)",StrUtil.isNotBlank(data.getString("铜粉(一级、二级、三级)")) ? data.getString("铜粉(一级、二级、三级)") : ""); + //可焊性 + map.put("可焊性",StrUtil.isNotBlank(data.getString("可焊性")) ? data.getString("可焊性") : ""); + }; + public static Object parseJsonData(String jsonData) { + if (isValidArray(jsonData)) { + // 返回 JSONArray + return JSON.parseArray(jsonData); + } else { + // 返回原始字符串 + return jsonData; + } + } + /** + * @description: 判断是否为数组 + * @author ManMan.Yang + * @date: 2026/2/11 11:49 + **/ + public static boolean isValidArray(String jsonData) { + try { + JSONArray array = JSON.parseArray(jsonData); + // 如果解析成功且不为 null,则是有效数组 + return array != null; + } catch (Exception e) { + // 解析失败则不是有效数组 + return false; + } + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/InBillQueryServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/InBillQueryServiceImpl.java index 282fbc4..18dbb44 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/InBillQueryServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/InBillQueryServiceImpl.java @@ -322,6 +322,7 @@ public class InBillQueryServiceImpl implements InBillQueryService { // String s1 = s[1]; // String[] split = s1.split("\\|"); String[] split = MdmDescriptionParseUtils.parseMxBoxDetailInfo(box_name); + mp.put("木箱规格/尺寸", split[1] + "*" + split[2]); } else { mp.put("木箱规格/尺寸", ""); } @@ -494,8 +495,8 @@ public class InBillQueryServiceImpl implements InBillQueryService { mp.put("客户名称", json.getString("cust_name")); mp.put("业务员", json.getString("sales_owner")); mp.put("规格", json.getString("thickness_request")); - mp.put("尺寸(mm)(客户要求幅宽)", String.format("%.0f", json.getDoubleValue("width_standard"))); - mp.put("实际尺寸(mm)(实际幅宽)", String.format("%.0f", json.getDoubleValue("width"))); + mp.put("产品实际幅宽", json.getString("width")); + mp.put("客户要求幅宽", json.getString("width_standard")); String box_name = json.getString("box_name"); if (StrUtil.isNotEmpty(box_name)) { // todo 88549333 箱号规格解析 2026年5月20日16:05:45 @@ -504,6 +505,7 @@ public class InBillQueryServiceImpl implements InBillQueryService { // String[] split = s1.split("\\|"); // mp.put("木箱规格/尺寸", split[1] + "*" + split[2]); String[] split = MdmDescriptionParseUtils.parseMxBoxDetailInfo(box_name); + mp.put("木箱规格/尺寸", split[1] + "*" + split[2]); } else { mp.put("木箱规格/尺寸", ""); } @@ -686,8 +688,10 @@ public class InBillQueryServiceImpl implements InBillQueryService { mp.put("客户箱号/序列号", billPageVo.getBox_customer_sn() ); mp.put("客户卷号", billPageVo.getCustomer_roll_name()); mp.put("客户要求厚度", billPageVo.getThickness_request()); - mp.put("客户要求幅宽", String.format("%.0f", Double.parseDouble(billPageVo.getWidth_standard()))); - //怎么取 现在还不明确 + Double widthStandard = NumberUtil.parseDouble(billPageVo.getWidth_standard(), 0.0); + mp.put("客户要求幅宽", String.format("%.0f", widthStandard)); + + //怎么取 现在还不明确 mp.put("规格", billPageVo.getThickness_request()); mp.put("子卷净重", NumberUtil.round(StrUtil.isEmpty(billPageVo.getNet_weight()) ? "0" : billPageVo.getNet_weight(), 1)); mp.put("米数(长度)", NumberUtil.round(StrUtil.isEmpty(billPageVo.getLength()) ? "0" : billPageVo.getLength(), 1)); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/OutBillQueryServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/OutBillQueryServiceImpl.java index 3c922e3..7e00f2f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/OutBillQueryServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/OutBillQueryServiceImpl.java @@ -278,7 +278,8 @@ public class OutBillQueryServiceImpl implements OutBillQueryService { mp.put("行号", ""); } mp.put("出库日期", json.getString("input_time")); - mp.put("产品规格", String.format("%.0f", json.getDoubleValue("width"))); + mp.put("产品实际幅宽", json.getString("width")); + mp.put("客户要求幅宽", json.getString("width_standard")); mp.put("产品厚度", json.getString("thickness")); mp.put("单位面积", json.getString("mass_per_unit_area")); mp.put("制单人", json.getString("input_optname")); @@ -463,7 +464,8 @@ public class OutBillQueryServiceImpl implements OutBillQueryService { } mp.put("业务员", json.getString("sales_owner")); mp.put("出库日期", json.getString("input_time")); - mp.put("产品规格", String.format("%.0f", json.getDoubleValue("width"))); + mp.put("产品实际幅宽", json.getString("width")); + mp.put("客户要求幅宽", json.getString("width_standard")); mp.put("产品厚度", json.getString("thickness")); mp.put("单位面积", json.getString("mass_per_unit_area")); mp.put("制单人", json.getString("input_optname")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_INBILLQUERY.wql b/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_INBILLQUERY.wql index 7be5af9..bfd176b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_INBILLQUERY.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_INBILLQUERY.wql @@ -76,6 +76,7 @@ sub.date_of_production, mst.input_optname, sub.width, + sub.width_standard, case when plan.paper_tube_or_FRP = '1' then '纸管' when plan.paper_tube_or_FRP = '2' then 'FRP管' end AS paper_type, case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_material when plan.paper_tube_or_FRP = '2' then plan.FRP_material end AS paper_code, case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_description when plan.paper_tube_or_FRP = '2' then plan.FRP_description end AS paper_name, diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_OUTBILLQUERY.wql b/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_OUTBILLQUERY.wql index 4c0bacb..f21ce03 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_OUTBILLQUERY.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_OUTBILLQUERY.wql @@ -277,6 +277,7 @@ sub.sale_order_name, cust.sales_owner, sub.width, + sub.width_standard, sub.thickness, sub.mass_per_unit_area, case when plan.paper_tube_or_FRP = '1' then '纸管' when plan.paper_tube_or_FRP = '2' then 'FRP管' end AS paper_type, @@ -331,6 +332,7 @@ max(record.customer_name) as customer_name, max(record.customer_description) as customer_description, max(record.width) as width, + max(record.width_standard) as width_standard, max(record.thickness) as thickness, max(record.mass_per_unit_area) as mass_per_unit_area, max(record.net_weight) as net_weight, @@ -396,6 +398,7 @@ sub.sale_order_name, cust.sales_owner, sub.width, + sub.width_standard, sub.thickness, sub.mass_per_unit_area, case when plan.paper_tube_or_FRP = '1' then '纸管' when plan.paper_tube_or_FRP = '2' then 'FRP管' end AS paper_type, @@ -450,6 +453,7 @@ max(record.customer_name) as customer_name, max(record.customer_description) as customer_description, max(record.width) as width, + max(record.width_standard) as width_standard, max(record.thickness) as thickness, max(record.mass_per_unit_area) as mass_per_unit_area, max(record.net_weight) as net_weight, @@ -489,4 +493,4 @@ limit 0,50000 ENDSELECT ENDQUERY - ENDIF \ No newline at end of file + ENDIF diff --git a/lms/nladmin-system/src/main/resources/language/i18n/en.js b/lms/nladmin-system/src/main/resources/language/i18n/en.js index beef0c4..6cbca78 100644 --- a/lms/nladmin-system/src/main/resources/language/i18n/en.js +++ b/lms/nladmin-system/src/main/resources/language/i18n/en.js @@ -49,6 +49,10 @@ var config = { "mesErrorTitle": "MES Error" }, "common": { + "select_scrap_type":"select scrap type", + "scrap_type":"scrap type", + "mdm_data_status":"mdm data status", + "width_standard":"Customer Required Specification Width", "vbeln":"vbeln", "siteAlreadySet":"Site already set", "outboundAllocation":"Outbound Allocation", diff --git a/lms/nladmin-system/src/main/resources/language/i18n/id.js b/lms/nladmin-system/src/main/resources/language/i18n/id.js index 137208f..7961dfd 100644 --- a/lms/nladmin-system/src/main/resources/language/i18n/id.js +++ b/lms/nladmin-system/src/main/resources/language/i18n/id.js @@ -48,6 +48,10 @@ var config = { "load_text5": "Hanya dapat mengunggah satu file excel!" }, "common": { + "select_scrap_type":"Silakan pilih jenis pembatalan", + "scrap_type":"Jenis pembatalan", + "mdm_data_status":"Status Data MDM", + "width_standard":"Lebar Spesifikasi yang Diminta Pelanggan", "vbeln":"Surat Pengiriman", "siteAlreadySet":"Situs sudah diatur", "outboundAllocation":"Alokasi Pengeluaran", diff --git a/lms/nladmin-system/src/main/resources/language/i18n/zh.js b/lms/nladmin-system/src/main/resources/language/i18n/zh.js index f72a7a9..4acfe13 100644 --- a/lms/nladmin-system/src/main/resources/language/i18n/zh.js +++ b/lms/nladmin-system/src/main/resources/language/i18n/zh.js @@ -93,6 +93,10 @@ var config = { "correspondingDeepLocationError": "对应的深货位错误!" }, "common": { + "select_scrap_type":"请选择报废类型", + "scrap_type":"报废类型", + "mdm_data_status":"MDM数据状态", + "width_standard":"客户要求幅宽", "vbeln":"交货单", "siteAlreadySet":"站点已设置", "outboundAllocation":"出库分配", diff --git a/lms/nladmin-ui/src/api/monitor/sysapilog.js b/lms/nladmin-ui/src/api/monitor/sysapilog.js index 1ff3172..488724b 100644 --- a/lms/nladmin-ui/src/api/monitor/sysapilog.js +++ b/lms/nladmin-ui/src/api/monitor/sysapilog.js @@ -1,6 +1,6 @@ import request from '@/utils/request' -export function getBizCodeList(systemFlag,direction) { +export function getBizCodeList(systemFlag, direction) { return request({ url: 'api/sysApiLog/bizCodeList', method: 'get', @@ -14,4 +14,4 @@ export function archiveLogs() { method: 'post' }) } -export default { getBizCodeList,archiveLogs } +export default { getBizCodeList, archiveLogs } diff --git a/lms/nladmin-ui/src/views/wms/basedata/master/material/index.vue b/lms/nladmin-ui/src/views/wms/basedata/master/material/index.vue index 9232ebf..c288b81 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/master/material/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/master/material/index.vue @@ -237,7 +237,7 @@ const defaultForm = { export default { name: 'Materialbase', // 数据字典 - dicts: ['is_used', 'material_type' ,'MATERIALBASE_MDM_STATUS'], + dicts: ['is_used', 'material_type', 'MATERIALBASE_MDM_STATUS'], components: { pagination, crudOperation, rrOperation, udOperation }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { diff --git a/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDialog.vue b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDialog.vue index 7e3bbed..0b87fa9 100644 --- a/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDialog.vue +++ b/lms/nladmin-ui/src/views/wms/st/inStor/productscrap/AddDialog.vue @@ -130,8 +130,8 @@ - - + + @@ -23,15 +23,15 @@ size="mini" @click="allDivStruct()" > - {{$t('common.allocateAll')}} + {{ $t('common.allocateAll') }} - {{$t('common.Closes')}} + {{ $t('common.Closes') }}
- {{$t('common.inboundDetails')}} + {{ $t('common.inboundDetails') }}
@@ -83,12 +83,12 @@ + v-model="form.point_code" + clearable + :placeholder="$t('common.pleaseSelect')" + class="filter-item" + style="width: 200px;" + >
- {{$t('common.vehicleMaterialDetails')}} + {{ $t('common.vehicleMaterialDetails') }}
@@ -113,7 +113,7 @@ /> - {{$t('common.autoAllocateLocation')}} + {{ $t('common.autoAllocateLocation') }}
@@ -128,7 +128,7 @@ size="mini" @click="divStruct()" > - {{$t('common.allocateLocation')}} + {{ $t('common.allocateLocation') }} - {{$t('common.cancelAllocation')}} + {{ $t('common.cancelAllocation') }} - {{$t('common.setStartingPoint')}} + {{ $t('common.setStartingPoint') }}
diff --git a/lms/nladmin-ui/src/views/wms/st/outcharge/index.vue b/lms/nladmin-ui/src/views/wms/st/outcharge/index.vue index 7498ebf..e19d599 100644 --- a/lms/nladmin-ui/src/views/wms/st/outcharge/index.vue +++ b/lms/nladmin-ui/src/views/wms/st/outcharge/index.vue @@ -80,10 +80,10 @@ v-for="item in dict.ST_INV_OUT_TYPE" :key="item.value" :disabled="item.value !== '1001' - && item.value !== '1009' - && item.value !== '1013' - && item.value !== '1014' - && item.value !== '1015'" + && item.value !== '1009' + && item.value !== '1013' + && item.value !== '1014' + && item.value !== '1015'" :label="item.label" :value="item.value" />