From 2cc73d72d7f2fe176af5aaba2d60795b4fbfd8d6 Mon Sep 17 00:00:00 2001 From: tzy Date: Sun, 9 Nov 2025 19:15:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E8=89=BA=E6=97=A5=E5=BF=97=E6=8E=A8?= =?UTF-8?q?=E9=80=81=20bom=E6=97=A5=E5=BF=97=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BomDetailsController.java | 23 +++++++------ .../controller/ProcessOrderProController.java | 11 +++++++ .../controller/ProcessRouteController.java | 7 ++++ .../ruoyi/system/domain/ProcessOrderPro.java | 5 +++ .../system/domain/bo/ProcessOrderProBo.java | 4 +++ .../system/domain/dto/BOMUploadResult.java | 12 +++++-- .../system/domain/dto/JdValidateBomDTO.java | 5 +++ .../system/domain/dto/OperationPlannDTO.java | 2 +- .../domain/dto/ProcessRoutePushResultDTO.java | 5 +++ .../system/domain/dto/ValidateBomResult.java | 25 +++++++++++++++ .../ruoyi/system/domain/vo/PartCostVo.java | 4 +-- .../system/domain/vo/ProcessOrderProVo.java | 6 +++- .../java/com/ruoyi/system/runner/JdUtil.java | 5 ++- .../service/IProcessOrderProService.java | 6 ++++ .../system/service/IProcessRouteService.java | 2 +- .../impl/ProcessOrderProServiceImpl.java | 18 ++++++++++- .../service/impl/ProcessRouteServiceImpl.java | 32 ++++++++----------- .../mapper/system/ProcessOrderProMapper.xml | 1 + 18 files changed, 131 insertions(+), 42 deletions(-) create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ValidateBomResult.java diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/BomDetailsController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/BomDetailsController.java index 4b97a28..f091c23 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/BomDetailsController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/BomDetailsController.java @@ -21,17 +21,13 @@ import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.system.domain.dto.BOMItem; -import com.ruoyi.system.domain.dto.BOMUploadResult; +import com.ruoyi.system.domain.dto.*; import com.ruoyi.common.utils.JdUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.system.domain.BomDetails; import com.ruoyi.system.domain.MaterialProperties; import com.ruoyi.system.domain.ProcessOrderPro; import com.ruoyi.system.domain.bo.BomDetailsBo; -import com.ruoyi.system.domain.dto.JdValidateBomDTO; -import com.ruoyi.system.domain.dto.JdChildDTO; -import com.ruoyi.system.domain.dto.KindegeeLogDTO; import com.ruoyi.system.domain.vo.BomDetailsVo; import com.ruoyi.system.domain.vo.ElectricalMaterialBomVO; import com.ruoyi.system.mapper.BomDetailsMapper; @@ -418,7 +414,8 @@ public class BomDetailsController extends BaseController { } // 第二步:BOM校验和上传(在循环外部) - boolean needUpload = !validateBOM(fnumber, bomDetails); + ValidateBomResult validateResult = validateBOM(fnumber, bomDetails); + boolean needUpload = !validateResult.isMatch(); if (needUpload) { try { // 物料清单保存方法,判断是电气还是生产 @@ -448,7 +445,7 @@ public class BomDetailsController extends BaseController { logDTO.setProjectCode(bo.getProductionOrderNo()); logDTO.setMaterialCode(fnumber); logDTO.setCode("100"); - logDTO.setReason("BOM已存在且一致"); + logDTO.setReason("BOM已存在且一致,版本号:" + validateResult.getVersion()); logDTOS.add(logDTO); log.info("BOM已存在且一致,物料编码: {},跳过保存", fnumber); } @@ -465,12 +462,13 @@ public class BomDetailsController extends BaseController { } - private boolean validateBOM(String fnumber, List bomDetails) { + private ValidateBomResult validateBOM(String fnumber, List bomDetails) { + List JDBomList = JdUtil.getSelectBomList(fnumber); if (JDBomList == null || JDBomList.isEmpty()) { log.error("未在金蝶中找到相同的BOM,需要上传,物料编码: {}", fnumber); - return false; + return ValidateBomResult.notMatched(); } // 子项排序:按 PartNumber -> Name -> PartdiagramCode -> PartdiagramName 保证顺序唯一 @@ -575,12 +573,13 @@ public class BomDetailsController extends BaseController { if (isMatch) { log.info("BOM完全相同,物料编码: {},无需上传", fnumber); - return true; // 找到匹配BOM + // 记录BOM版本号 + return ValidateBomResult.matched(jdBom.getFNumberVersion()); } } log.info("BOM不存在或不一致,物料编码: {},需要上传", fnumber); - return false; // 所有BOM都不匹配 + return ValidateBomResult.notMatched(); // 所有BOM都不匹配 } // null/空格统一处理方法 @@ -2229,7 +2228,7 @@ public class BomDetailsController extends BaseController { @Log(title = "推送工艺工序") @SaCheckPermission("system:route:viewGetBomUploadStatus") @PostMapping("/viewGetBomUploadStatus") - public R viewGetBomUploadStatus(@RequestParam String rooteProdet) { + public R viewGetBomUploadStatus(@RequestParam String rooteProdet) { return iProcessRouteService.viewGetBomUploadStatus(rooteProdet); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessOrderProController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessOrderProController.java index 53c8d0f..ef10bdc 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessOrderProController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessOrderProController.java @@ -7,6 +7,7 @@ import java.text.SimpleDateFormat; import java.util.*; import com.alibaba.excel.EasyExcel; +import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.common.excel.DefaultExcelListener; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; @@ -17,6 +18,7 @@ import com.ruoyi.common.poi.DynamicDataMapping; import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.bo.FigureSaveBo; import com.ruoyi.system.domain.dto.ProcessRouteExcelDTO; +import com.ruoyi.system.domain.dto.ProcessRoutePushResultDTO; import com.ruoyi.system.domain.vo.*; import com.ruoyi.system.domain.vo.BomDataVO; import com.ruoyi.system.mapper.ProcessOrderProMapper; @@ -356,6 +358,15 @@ public class ProcessOrderProController extends BaseController { return iMrpResultCheckService.getMRPResults(id); } + @SaCheckPermission("system:orderPro:geMRPResults") + @Log(title = "获取工艺上传结果", businessType = BusinessType.OTHER) + @PostMapping("/getRouteLog/{id}") + public R getRouteLog(@PathVariable Long id) throws JsonProcessingException { + return iProcessOrderProService.getRouteLog(id); + } + + + @SaCheckPermission("system:route:exportRoute") @Log(title = "下载工艺生产表", businessType = BusinessType.EXPORT) @PostMapping("/exportRoute") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessRouteController.java b/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessRouteController.java index 14ec26d..3bbef1e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessRouteController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/controller/ProcessRouteController.java @@ -76,6 +76,13 @@ public class ProcessRouteController extends BaseController { return originalId + 1000; } + @Log(title = "查看BOM上传状态") + @SaCheckPermission("system:route:viewGetBomUploadStatus") + @PostMapping("/viewGetBomUploadStatus") + public R viewGetBomUploadStatus(@RequestParam String rooteProdet) { + return iProcessRouteService.viewGetBomUploadStatus(rooteProdet); + } + /** * 主动更新可用库存 */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/ProcessOrderPro.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/ProcessOrderPro.java index c8e7872..90601c0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/ProcessOrderPro.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/ProcessOrderPro.java @@ -87,4 +87,9 @@ public class ProcessOrderPro extends BaseEntity { * 工艺状态(0,未完成 1,完成 2已上传) */ private Long routeStatus; + + /** + * 工艺上传日志 + */ + private String routeLog; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/ProcessOrderProBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/ProcessOrderProBo.java index e46357c..bad9d36 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/ProcessOrderProBo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/ProcessOrderProBo.java @@ -106,5 +106,9 @@ public class ProcessOrderProBo extends BaseEntity { * 工艺状态(0,未完成 1,完成 2已上传) */ private Long routeStatus; + /** + * 工艺上传日志 + */ + private String routeLog; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/BOMUploadResult.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/BOMUploadResult.java index 59033bd..b331a35 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/BOMUploadResult.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/BOMUploadResult.java @@ -4,16 +4,20 @@ import lombok.Data; @Data public class BOMUploadResult { - private boolean success; // 是否成功 + private boolean success; // 是否成功(兼容旧逻辑) private String id; // 金蝶内部ID - private String number; // 单据编号 - private String errorMessage; // 错误信息(失败时才有) + private String number; // 单据编号(用于记录版本号) + private String errorMessage; // 错误信息(失败时才有,兼容旧逻辑) + private String code; // 结果编码:200=成功上传,100=已存在且一致,300=上传失败 + private String msg; // 结果说明或错误消息 public static BOMUploadResult success(String id, String number) { BOMUploadResult result = new BOMUploadResult(); result.setSuccess(true); result.setId(id); result.setNumber(number); + result.setCode("200"); + result.setMsg("成功"); return result; } @@ -21,6 +25,8 @@ public class BOMUploadResult { BOMUploadResult result = new BOMUploadResult(); result.setSuccess(false); result.setErrorMessage(errorMessage); + result.setCode("300"); + result.setMsg(errorMessage); return result; } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/JdValidateBomDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/JdValidateBomDTO.java index 77cd884..0a5be5f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/JdValidateBomDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/JdValidateBomDTO.java @@ -17,6 +17,11 @@ public class JdValidateBomDTO { */ @JsonProperty("FMATERIALID.FNumber") private String fNumber; + /** + * bom版本 + */ + @JsonProperty("FNumber") + private String fNumberVersion; /** * 父级物料名称 */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/OperationPlannDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/OperationPlannDTO.java index 8241a0f..9645a73 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/OperationPlannDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/OperationPlannDTO.java @@ -12,7 +12,7 @@ public class OperationPlannDTO { @JsonProperty("FOperQty") private String FOperQty; - @JsonProperty("FOutProcessId.FName") + @JsonProperty("FProcessId.FName") private String FProcessIdFName; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ProcessRoutePushResultDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ProcessRoutePushResultDTO.java index 9b6e473..874f5be 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ProcessRoutePushResultDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ProcessRoutePushResultDTO.java @@ -1,12 +1,17 @@ package com.ruoyi.system.domain.dto; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Data; +import java.util.Date; import java.util.List; + @Data +@JsonIgnoreProperties(ignoreUnknown = true) public class ProcessRoutePushResultDTO { private List successfulRoutes; private List failedRoutes; private List duplicateRoutes; + private Date time; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ValidateBomResult.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ValidateBomResult.java new file mode 100644 index 0000000..8f5c1d3 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/ValidateBomResult.java @@ -0,0 +1,25 @@ +package com.ruoyi.system.domain.dto; + +import lombok.Data; + +@Data +public class ValidateBomResult { + // 是否存在且一致 + private boolean match; + // 一致的BOM版本号(来自金蝶的FNumber),不存在或不一致时可为空 + private String version; + + public static ValidateBomResult matched(String version) { + ValidateBomResult r = new ValidateBomResult(); + r.setMatch(true); + r.setVersion(version); + return r; + } + + public static ValidateBomResult notMatched() { + ValidateBomResult r = new ValidateBomResult(); + r.setMatch(false); + r.setVersion(null); + return r; + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/PartCostVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/PartCostVo.java index a84f1c8..f81942b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/PartCostVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/PartCostVo.java @@ -2,11 +2,9 @@ package com.ruoyi.system.domain.vo; import java.math.BigDecimal; import java.util.Date; -import com.fasterxml.jackson.annotation.JsonFormat; + import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; -import com.ruoyi.common.annotation.ExcelDictFormat; -import com.ruoyi.common.convert.ExcelDictConvert; import lombok.Data; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ProcessOrderProVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ProcessOrderProVo.java index 146c7d6..6ffb6ff 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ProcessOrderProVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ProcessOrderProVo.java @@ -116,5 +116,9 @@ public class ProcessOrderProVo { private String drawingPathUrl; private Date createTime; - + /** + * 工艺上传日志 + */ + @ExcelProperty(value = "工艺上传日志") + private String routeLog; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/runner/JdUtil.java b/ruoyi-system/src/main/java/com/ruoyi/system/runner/JdUtil.java index 8680350..5f46bee 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/runner/JdUtil.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/runner/JdUtil.java @@ -2211,7 +2211,7 @@ public class JdUtil { json.addProperty("FormId", "ENG_BOM"); json.addProperty("FieldKeys", - "FID,FMATERIALID.FNumber,FITEMNAME,FUNITID.FName,FCHILDITEMNAME,FCHILDITEMPROPERTY,FMATERIALIDCHILD.FNumber,FNUMERATOR,FDENOMINATOR,F_HBYT_BJBM,F_HBYT_BJMC"); + "FID,FMATERIALID.FNumber,FNumber,FITEMNAME,FUNITID.FName,FCHILDITEMNAME,FCHILDITEMPROPERTY,FMATERIALIDCHILD.FNumber,FNUMERATOR,FDENOMINATOR,F_HBYT_BJBM,F_HBYT_BJMC"); JsonArray filterString = new JsonArray(); JsonObject filterObject = new JsonObject(); filterObject.addProperty("FieldName", "FMATERIALID.FNumber"); @@ -2295,11 +2295,14 @@ public class JdUtil { String key = obj.get("FID").getAsString() + "_" + obj.get("FMATERIALID.FNumber").getAsString() + "_" + + obj.get("FNumber").getAsString() + "_" + obj.get("FITEMNAME").getAsString(); JdValidateBomDTO parentDTO = bomMap.computeIfAbsent(key, k -> { JdValidateBomDTO dto = new JdValidateBomDTO(); dto.setFID(obj.get("FID").getAsString()); dto.setFNumber(obj.get("FMATERIALID.FNumber").getAsString()); + // 记录BOM版本号(金蝶返回的 FNumber 字段) + dto.setFNumberVersion(obj.get("FNumber").getAsString()); dto.setFName(obj.get("FITEMNAME").getAsString()); dto.setChilds(new ArrayList<>()); return dto; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessOrderProService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessOrderProService.java index 4c25b20..2ebeefc 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessOrderProService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessOrderProService.java @@ -1,10 +1,14 @@ package com.ruoyi.system.service; +import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.common.core.domain.R; +import com.ruoyi.system.domain.MrpResultCheck; import com.ruoyi.system.domain.ProcessOrderPro; import com.ruoyi.system.domain.ProcessRoute; import com.ruoyi.system.domain.bo.FigureSaveBo; import com.ruoyi.system.domain.dto.ProcessRouteExcelDTO; +import com.ruoyi.system.domain.dto.ProcessRoutePushResultDTO; +import com.ruoyi.system.domain.dto.ProcessRouteXuDTO; import com.ruoyi.system.domain.vo.OverdueProjectVo; import com.ruoyi.system.domain.vo.ProcessOrderProVo; import com.ruoyi.system.domain.bo.ProcessOrderProBo; @@ -79,4 +83,6 @@ public interface IProcessOrderProService { List getOverdueProjects(); List getRouteAndBomDetail(List routlist,List processDataList,ProcessOrderPro orderPro); + + R getRouteLog(Long id) throws JsonProcessingException; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessRouteService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessRouteService.java index b9d1e3b..72771db 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessRouteService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IProcessRouteService.java @@ -145,7 +145,7 @@ public interface IProcessRouteService { List selectByProjectNumber(String productionOrderNo); - R viewGetBomUploadStatus(String rooteProdet); + R viewGetBomUploadStatus(String rooteProdet); //根据令号和物料编码 查询工艺路线 ProcessRoute getProcessRoutesXuTime(String productionOrderNo, String materialCode,String xu); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessOrderProServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessOrderProServiceImpl.java index 334bc75..3b769a3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessOrderProServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessOrderProServiceImpl.java @@ -1,9 +1,13 @@ package com.ruoyi.system.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; import java.math.BigDecimal; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.PdfReader; import com.ruoyi.common.constant.Constants; @@ -21,6 +25,7 @@ import com.ruoyi.common.utils.file.PDFDocHelper; import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.bo.FigureSaveBo; import com.ruoyi.system.domain.dto.ProcessRouteExcelDTO; +import com.ruoyi.system.domain.dto.ProcessRoutePushResultDTO; import com.ruoyi.system.domain.dto.excuteDrawing.DataInfo; import com.ruoyi.system.domain.dto.excuteDrawing.ProductInfo; import com.ruoyi.system.domain.dto.excuteDrawing.PwProductionBill; @@ -45,7 +50,7 @@ import com.ruoyi.system.mapper.ProcessOrderProMapper; import com.ruoyi.common.utils.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.multipart.MultipartFile; - +import com.fasterxml.jackson.core.type.TypeReference; import java.io.*; import java.nio.file.Paths; import java.text.SimpleDateFormat; @@ -1273,6 +1278,17 @@ public class ProcessOrderProServiceImpl implements IProcessOrderProService { return resultList; } + /** + * @param id + * @return + */ + @Override + public R getRouteLog(Long id) throws JsonProcessingException { + ProcessOrderPro processOrderPro = baseMapper.selectById(id); + String jsonStr = processOrderPro.getRouteLog(); + return R.ok(jsonStr == null ? "" : jsonStr); + } + public static String[] getNullPropertyNames(Object source) { BeanWrapper src = new BeanWrapperImpl(source); java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessRouteServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessRouteServiceImpl.java index 7e44f61..e71a4c8 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessRouteServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ProcessRouteServiceImpl.java @@ -296,17 +296,13 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { } /** - * 获取bom的上传状态 + * 获取bom的上传状态,直接返回原始 JSON 字符串,前端自行解析 */ @Override - public R viewGetBomUploadStatus(String rooteProdet) { + public R viewGetBomUploadStatus(String rooteProdet) { ProcessOrderPro processOrderPro = processOrderProMapper.selectByProjectNumber(rooteProdet); - String drawingType = processOrderPro.getDrawingType(); // 这里就是 JSON - // 转换 JSON 数组 -> List - List bomItems = JSONUtil.toList(drawingType, KindegeeLogDTO.class); - BOMItem result = new BOMItem(); - result.setItems(bomItems); - return R.ok(result); + String drawingType = processOrderPro == null ? null : processOrderPro.getDrawingType(); + return R.ok(drawingType == null ? "" : drawingType); } /** @@ -786,12 +782,13 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { } else if ("根".equals(unit) && quantity.contains("/")) { //写入工艺表时分数的体现 直接取分母 以"/"为分割符,取第二个字符串 materialBom.setQuantity(quantity); - } else { + } else if(!"根".equals(unit)&&quantity.contains("/") ){ + // + throw new RuntimeException("单位不为根的时候不能为分数"); + }else { // 其他单位直接使用原值,保留2位小数 materialBom.setQuantity(String.valueOf(new BigDecimal(quantity).setScale(2, RoundingMode.HALF_UP))); } - - // 这里插入 materialBom 数据 materialBomMapper.insert(materialBom); } @@ -1269,14 +1266,7 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { Map> groupedByFNumber = jdProcessRoute.stream().collect(Collectors.groupingBy(ProcessRouteSelectDTO::getFNumber)); // 当前物料的工艺路线 List processRouteDT = processRouteXuDTO.getProcessRouteDT(); - /*boolean hasDuplicate = processRouteDT.stream() - .map(ProcessRouteDTO::getProcessNo) // 取出所有 processNo - .filter(Objects::nonNull) // 避免空指针 - .collect(Collectors.toSet()) // 放进 Set - .size() < processRouteDT.size(); - if (hasDuplicate){ - return R.fail("工序号重复请检查!"); - }*/ + // 比较工艺路线 boolean isDifferent = compareProcessRoutes(processRouteDT, groupedByFNumber); if (isDifferent) { @@ -1300,12 +1290,16 @@ public class ProcessRouteServiceImpl implements IProcessRouteService { } // 封装结果 ProcessRoutePushResultDTO resultDTO = new ProcessRoutePushResultDTO(); + resultDTO.setTime(new Date()); resultDTO.setSuccessfulRoutes(successfulRoutes); resultDTO.setFailedRoutes(failedRoutes); resultDTO.setDuplicateRoutes(duplicateRoutes); + String jsonStr = JSONUtil.toJsonStr(resultDTO); ProcessOrderPro processOrderPro = processOrderProMapper.selectByProjectNumber(rooteProdet); //更新项目状态 推送工艺 processOrderPro.setBomStatus(3L); + processOrderPro.setRouteLog(jsonStr); + log.info(": " + jsonStr); processOrderProMapper.updateById(processOrderPro); return R.ok(resultDTO); } diff --git a/ruoyi-system/src/main/resources/mapper/system/ProcessOrderProMapper.xml b/ruoyi-system/src/main/resources/mapper/system/ProcessOrderProMapper.xml index a9479ed..47c83d4 100644 --- a/ruoyi-system/src/main/resources/mapper/system/ProcessOrderProMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/ProcessOrderProMapper.xml @@ -24,6 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +