fix(ebom): 修复暂存和提交报错的问题

This commit is contained in:
曹鹏飞 2024-06-13 17:54:34 +08:00
parent f8d5f29fbc
commit be2a133e2b
1 changed files with 7 additions and 5 deletions

View File

@ -203,7 +203,6 @@ public class EBomEdit {
//新增数据 //新增数据
if (child.getRowId() == null || child.getRowId() == 0) { if (child.getRowId() == null || child.getRowId() == 0) {
child.setRowId(IdWorker.getId()); child.setRowId(IdWorker.getId());
child.setIdentityNo(StrUtil.join("_", parentEntity.getRowId(), child.getRowId()));
child.setSource(source); child.setSource(source);
child.setCreatedTime(LocalDateTime.now()); child.setCreatedTime(LocalDateTime.now());
child.setCreatedBy(SessionUtil.getUserCode()); child.setCreatedBy(SessionUtil.getUserCode());
@ -236,6 +235,7 @@ public class EBomEdit {
} }
child.setInitialParentRowId(parentEntity.getRowId()); child.setInitialParentRowId(parentEntity.getRowId());
} }
child.setIdentityNo(StrUtil.join("_", parentEntity.getRowId(), child.getRowId()));
} }
@ -275,17 +275,19 @@ public class EBomEdit {
if (CollUtil.isEmpty(dto.getDatas())) { if (CollUtil.isEmpty(dto.getDatas())) {
throw new NflgBusinessException(STATE.Error, "datas 数据不能为空"); throw new NflgBusinessException(STATE.Error, "datas 数据不能为空");
} }
List<String> materialNos = dto.getDatas().stream()
List<String> materialNos = dto.getDatas().stream().map(u -> u.getMaterialNo()).collect(Collectors.toList()); .filter(f -> !StrUtil.equals(f.getProjectType(), BomConstant.PROJECT_TYPE_TEMPORARY, true))
.map(BaseMaterialVO::getMaterialNo)
.collect(Collectors.toList());
if(materialNos.contains(dto.getParent().getMaterialNo())){ if(materialNos.contains(dto.getParent().getMaterialNo())){
VUtils.isTure(true).throwMessage(StrUtil.format("上下级存在相同物料{}",dto.getParent().getMaterialNo())); VUtils.isTure(true).throwMessage(StrUtil.format("上下级存在相同物料{}",dto.getParent().getMaterialNo()));
} }
materialNos.add(dto.getParent().getMaterialNo());
//检查物料编码是否在主数据中存在 //检查物料编码是否在主数据中存在
//暂存不需检查提交时检查 //暂存不需检查提交时检查
if(ObjectUtil.equal(EbomEditStatusEnum.HANDLER_FINISHED.getValue(),dto.getOpType())) { if(ObjectUtil.equal(EbomEditStatusEnum.HANDLER_FINISHED.getValue(),dto.getOpType())) {
materialNos.add(dto.getParent().getMaterialNo());
List<BaseMaterialVO> materialBaseInfo = SpringUtil.getBean(MaterialMainService.class).getMaterialBaseInfo(materialNos); List<BaseMaterialVO> materialBaseInfo = SpringUtil.getBean(MaterialMainService.class).getMaterialBaseInfo(materialNos);
List<String> effectiveMaterialNos = materialBaseInfo.stream().map(u -> u.getMaterialNo()).collect(Collectors.toList()); List<String> effectiveMaterialNos = materialBaseInfo.stream().map(BaseMaterialVO::getMaterialNo).collect(Collectors.toList());
Set<String> difference = Sets.difference(new HashSet<>(materialNos), new HashSet<>(effectiveMaterialNos)); Set<String> difference = Sets.difference(new HashSet<>(materialNos), new HashSet<>(effectiveMaterialNos));
VUtils.isTure(CollUtil.isNotEmpty(difference)).throwMessage(StrUtil.join(",", difference) + "在物料主数据中不存在"); VUtils.isTure(CollUtil.isNotEmpty(difference)).throwMessage(StrUtil.join(",", difference) + "在物料主数据中不存在");
} }