BOM删除优化

This commit is contained in:
10002327 2024-10-21 14:13:45 +08:00
parent a32372b5ce
commit 04480c3b04
4 changed files with 65 additions and 14 deletions

View File

@ -615,8 +615,9 @@ public class EbomApi extends BaseApi {
@GetMapping("bomDelete") @GetMapping("bomDelete")
@ApiOperation("BOM删除") @ApiOperation("BOM删除")
@LogRecord(success = "Ebom-BOM删除,操作结果:{{#_ret}}", bizNo = "{{#bomRowId}}", type = "Ebom-BOM删除") @LogRecord(success = "Ebom-BOM删除,操作结果:{{#_ret}}", bizNo = "{{#bomRowId}}", type = "Ebom-BOM删除")
public ResultVO<Boolean> bomDelete(@RequestParam("bomRowId") Long bomRowId) { public ResultVO<Boolean> bomDelete(@RequestParam("bomRowId") Long bomRowId,
return ResultVO.success(bomNewEbomParentService.bomDelete(bomRowId)); @RequestParam("childBomRowId") Long childBomRowId) {
return ResultVO.success(bomNewEbomParentService.bomDelete(bomRowId,childBomRowId));
} }
@GetMapping("changeBomDelete") @GetMapping("changeBomDelete")

View File

@ -365,8 +365,9 @@ public class PBomApi extends BaseApi {
@GetMapping("bomDelete") @GetMapping("bomDelete")
@ApiOperation("BOM删除") @ApiOperation("BOM删除")
@LogRecord(success = "PBom删除操作结果:{{#_ret}}", bizNo = "{{#bomRowId}}",type = "BOM删除") @LogRecord(success = "PBom删除操作结果:{{#_ret}}", bizNo = "{{#bomRowId}}",type = "BOM删除")
public ResultVO<Boolean> bomDelete(@RequestParam("bomRowId") Long bomRowId) { public ResultVO<Boolean> bomDelete(@RequestParam("bomRowId") Long bomRowId,
bomNewPbomParentService.bomDelete(bomRowId); @RequestParam("childBomRowId") Long childBomRowId) {
bomNewPbomParentService.bomDelete(bomRowId,childBomRowId);
return ResultVO.success(true); return ResultVO.success(true);
} }

View File

@ -1488,10 +1488,11 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
/** /**
* BOM删除 by 10002327 241015 * BOM删除 by 10002327 241015
*
* @param bomRowId * @param bomRowId
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean bomDelete(Long bomRowId){ public Boolean bomDelete(Long bomRowId,Long childBomRowId){
BomNewEbomParentEntity parent = this.getById(bomRowId); BomNewEbomParentEntity parent = this.getById(bomRowId);
VUtils.isTure(parent == null).throwMessage(StrUtil.join(",", bomRowId, "不存在~")); VUtils.isTure(parent == null).throwMessage(StrUtil.join(",", bomRowId, "不存在~"));
//检查是否存在发布前的版本有则不能发起 BOM删除 //检查是否存在发布前的版本有则不能发起 BOM删除
@ -1499,8 +1500,13 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
.lt(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue()).list(); .lt(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue()).list();
Set<String> existMaterialNos = existEnt.stream().map(u -> u.getMaterialNo()).collect(Collectors.toSet()); Set<String> existMaterialNos = existEnt.stream().map(u -> u.getMaterialNo()).collect(Collectors.toSet());
VUtils.isTure(CollUtil.isNotEmpty(existMaterialNos)).throwMessage(StrUtil.join(",", existMaterialNos, "存在发布前版本。")); VUtils.isTure(CollUtil.isNotEmpty(existMaterialNos)).throwMessage(StrUtil.join(",", existMaterialNos, "存在发布前版本。"));
//如果bom 有且只有一条 [BOM已删除] 标记行时提示已删除无须重复删除
List<BomNewEbomChildEntity> ebomChildEntityList = ebomChildService.list(Wrappers.<BomNewEbomChildEntity>lambdaQuery().eq(BomNewEbomChildEntity::getParentRowId,bomRowId));
List<BomNewEbomChildEntity> kChildEntityList = ebomChildEntityList.stream().filter(c -> Objects.equals("K",c.getProjectType())).collect(Collectors.toList());
VUtils.isTure(ebomChildEntityList.size() == 1 && kChildEntityList.size() == 1).throwMessage(StrUtil.join(",", bomRowId, "BOM已删除无须重复删除~"));
List<BomNewEbomParentEntity> parentResult = new ArrayList<>(); List<BomNewEbomParentEntity> parentResult = new ArrayList<>();
//1生成一个新版本号的空BOM //1生成一个新版本号的空BOM,直接变更为正式版
LogRecordContext.putVariable("bom", parent); LogRecordContext.putVariable("bom", parent);
BomNewEbomParentEntity newParent = new BomNewEbomParentEntity(); BomNewEbomParentEntity newParent = new BomNewEbomParentEntity();
BeanUtil.copyProperties(parent, newParent); BeanUtil.copyProperties(parent, newParent);
@ -1508,8 +1514,8 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
newParent.setLastVersionIs(1); newParent.setLastVersionIs(1);
newParent.setCurrentVersion(VersionUtil.getNextVersion(parent.getCurrentVersion())); newParent.setCurrentVersion(VersionUtil.getNextVersion(parent.getCurrentVersion()));
newParent.setExceptionStatus(EBomExceptionStatusEnum.OK.getValue()); newParent.setExceptionStatus(EBomExceptionStatusEnum.OK.getValue());
newParent.setStatus(EBomStatusEnum.WAIT_CHECK.getValue()); newParent.setStatus(EBomStatusEnum.PUBLISHED.getValue());
newParent.setEditStatus(EbomEditStatusEnum.HANDLER_CREATED.getValue()); newParent.setEditStatus(EbomEditStatusEnum.HANDLER_FINISHED.getValue());
newParent.setDeptRowId(SessionUtil.getDepartRowId()); newParent.setDeptRowId(SessionUtil.getDepartRowId());
newParent.setDeptName(SessionUtil.getDepartName()); newParent.setDeptName(SessionUtil.getDepartName());
newParent.setDeviseName(SessionUtil.getRealName()); newParent.setDeviseName(SessionUtil.getRealName());
@ -1535,12 +1541,24 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
parent.setLastVersionIs(0); parent.setLastVersionIs(0);
parentResult.add(newParent); parentResult.add(newParent);
parentResult.add(parent); parentResult.add(parent);
//将新增的newParent替换到旧bom的子表上
List<BomNewEbomChildEntity> childEntityList = Lists.newArrayList();
BomNewEbomChildEntity oldBomChild = ebomChildService.getById(childBomRowId);
BomNewEbomChildEntity newBomChild = new BomNewEbomChildEntity();
BeanUtil.copyProperties(oldBomChild, newBomChild);
newBomChild.setRowId(IdWorker.getId());
newBomChild.setIdentityNo(newBomChild.getParentRowId() + "_" + newBomChild.getRowId());
newBomChild.setBomVersionRowId(newParent.getRowId());
newBomChild.setSource(EBomSourceEnum.FROM_DELETE.getValue());
childEntityList.add(newBomChild);
//2子表增加一行项目类别为K标识删除 //2子表增加一行项目类别为K标识删除
BomNewEbomChildEntity newChild = new BomNewEbomChildEntity(); BomNewEbomChildEntity newChild = new BomNewEbomChildEntity();
newChild.setRowId(IdWorker.getId()); newChild.setRowId(IdWorker.getId());
newChild.setParentRowId(newParent.getRowId()); newChild.setParentRowId(newParent.getRowId());
newChild.setIdentityNo(newParent.getRowId() + "_" + newChild.getRowId()); newChild.setIdentityNo(newParent.getRowId() + "_" + newChild.getRowId());
newChild.setOrderNumber("001"); newChild.setOrderNumber("001");
newChild.setMaterialDesc("[BOM已删除]");
newChild.setProjectType(ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_K.getValue()); newChild.setProjectType(ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_K.getValue());
newChild.setProjectTypeInputType(0); newChild.setProjectTypeInputType(0);
newChild.setCreatedBy(SessionUtil.getUserCode()); newChild.setCreatedBy(SessionUtil.getUserCode());
@ -1551,6 +1569,7 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
newChild.setExceptionStatus(1); newChild.setExceptionStatus(1);
newChild.setSource(EBomSourceEnum.FROM_DELETE.getValue()); newChild.setSource(EBomSourceEnum.FROM_DELETE.getValue());
childEntityList.add(newChild);
//3调用SAP接口删除BOM //3调用SAP接口删除BOM
SapReqParams sapReqParams = new SapReqParams(); SapReqParams sapReqParams = new SapReqParams();
sapReqParams.setFunName("ZRFC_PP_005"); sapReqParams.setFunName("ZRFC_PP_005");
@ -1575,7 +1594,13 @@ public class BomNewEbomParentService extends ServiceImpl<BomNewEbomParentMapper,
throw new NflgBusinessException(STATE.RouteServiceError, sapResult.getMsg()); throw new NflgBusinessException(STATE.RouteServiceError, sapResult.getMsg());
} }
this.saveOrUpdateBatch(parentResult); this.saveOrUpdateBatch(parentResult);
ebomChildService.save(newChild); ebomChildService.saveBatch(childEntityList);
ebomChildService.removeById(childBomRowId);
//将历史已发布版-转移到正式历史表
List<Long> addRowIds = com.google.common.collect.Lists.newArrayList(newParent.getRowId());
List<Long> delRowIds = com.google.common.collect.Lists.newArrayList(bomRowId);
eBomToFormal(addRowIds, delRowIds);
return true; return true;
} }

View File

@ -1444,7 +1444,7 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
* @param bomRowId * @param bomRowId
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void bomDelete(Long bomRowId){ public void bomDelete(Long bomRowId,Long childBomRowId){
BomNewPbomParentEntity parent = this.getById(bomRowId); BomNewPbomParentEntity parent = this.getById(bomRowId);
VUtils.isTure(Objects.isNull(parent)).throwMessage("该BOM版本不存在"); VUtils.isTure(Objects.isNull(parent)).throwMessage("该BOM版本不存在");
VUtils.isTure(parent.getStatus() < PBomStatusEnum.PUBLISH.getValue()).throwMessage("只有已发布的BOM才能删除"); VUtils.isTure(parent.getStatus() < PBomStatusEnum.PUBLISH.getValue()).throwMessage("只有已发布的BOM才能删除");
@ -1458,17 +1458,22 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
.eq(BomNewPbomParentEntity::getFacCode, parent.getFacCode()) .eq(BomNewPbomParentEntity::getFacCode, parent.getFacCode())
.lt(BomNewPbomParentEntity::getStatus, PBomStatusEnum.PUBLISH.getValue()).list(); .lt(BomNewPbomParentEntity::getStatus, PBomStatusEnum.PUBLISH.getValue()).list();
VUtils.isTure(CollUtil.isNotEmpty(waitPublishList)).throwMessage(parent.getMaterialNo() + "存在待发布的版本,无法删除"); VUtils.isTure(CollUtil.isNotEmpty(waitPublishList)).throwMessage(parent.getMaterialNo() + "存在待发布的版本,无法删除");
//如果bom 有且只有一条 [BOM已删除] 标记行时提示已删除无须重复删除
List<BomNewPbomChildEntity> childEntityList = pbomChildService.list(Wrappers.<BomNewPbomChildEntity>lambdaQuery().eq(BomNewPbomChildEntity::getParentRowId,bomRowId));
List<BomNewPbomChildEntity> kEntityList = childEntityList.stream().filter(c -> Objects.equals("K",c.getProjectType())).collect(Collectors.toList());
VUtils.isTure(childEntityList.size() == 1 && kEntityList.size() == 1).throwMessage("BOM已删除无须重复删除~");
BomNewPbomParentVO rootVo = Convert.convert(BomNewPbomParentVO.class, parent); BomNewPbomParentVO rootVo = Convert.convert(BomNewPbomParentVO.class, parent);
rootVo.setBomRowId(rootVo.getRowId()); rootVo.setBomRowId(rootVo.getRowId());
//1parent增加一行大版本号记录 //1parent增加一行大版本号记录 直接变更为正式版
BomNewPbomParentEntity pbomParent = new BomNewPbomParentEntity(); BomNewPbomParentEntity pbomParent = new BomNewPbomParentEntity();
List<BomNewPbomParentEntity> parentList = Lists.newArrayList(); List<BomNewPbomParentEntity> parentList = Lists.newArrayList();
BeanUtil.copyProperties(rootVo, pbomParent); BeanUtil.copyProperties(rootVo, pbomParent);
pbomParent.setRowId(IdWorker.getId()); pbomParent.setRowId(IdWorker.getId());
pbomParent.setCreatedTime(LocalDateTime.now()); pbomParent.setCreatedTime(LocalDateTime.now());
pbomParent.setCreatedBy(SessionUtil.getUserCode()); pbomParent.setCreatedBy(SessionUtil.getUserCode());
pbomParent.setStatus(PBomStatusEnum.WAIT_PUBLISH.getValue()); pbomParent.setStatus(PBomStatusEnum.FACTORY_CONFIRM.getValue());
pbomParent.setEditStatus(PBomEditStatusEnum.HANDLER_CREATED.getValue()); pbomParent.setEditStatus(PBomEditStatusEnum.HANDLER_FINISHED.getValue());
//获取大版本号 //获取大版本号
pbomParent.setCurrentVersion(VersionUtil.getNextVersion(rootVo.getCurrentVersion())); pbomParent.setCurrentVersion(VersionUtil.getNextVersion(rootVo.getCurrentVersion()));
pbomParent.setDeptRowId(SessionUtil.getDepartRowId()); pbomParent.setDeptRowId(SessionUtil.getDepartRowId());
@ -1495,6 +1500,17 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
parentList.add(pbomParent); parentList.add(pbomParent);
parentList.add(parent); parentList.add(parent);
List<BomNewPbomChildEntity> newChildEntityList = Lists.newArrayList();
BomNewPbomChildEntity oldBomChild = pbomChildService.getById(childBomRowId);
BomNewPbomChildEntity newBomChild = new BomNewPbomChildEntity();
BeanUtil.copyProperties(oldBomChild, newBomChild);
newBomChild.setRowId(IdWorker.getId());
newBomChild.setBomVersionRowId(pbomParent.getRowId());
newBomChild.setSource(PbomSourceEnum.FROM_DELETE.getValue());
newChildEntityList.add(newBomChild);
//2子表新增一行项目类别为K的标识行 //2子表新增一行项目类别为K的标识行
BomNewPbomChildEntity child = new BomNewPbomChildEntity(); BomNewPbomChildEntity child = new BomNewPbomChildEntity();
child.setRowId(IdWorker.getId()); child.setRowId(IdWorker.getId());
@ -1502,6 +1518,7 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
child.setFacCode(pbomParent.getFacCode()); child.setFacCode(pbomParent.getFacCode());
child.setProjectType(ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_K.getValue()); child.setProjectType(ProjectTypeInputTypeEnum.ProjectTypeEnum.TYPE_K.getValue());
child.setOrderNumber("001"); child.setOrderNumber("001");
child.setMaterialDesc("[BOM已删除]");
child.setNum(new BigDecimal(1)); child.setNum(new BigDecimal(1));
child.setIdentityNo(pbomParent.getRowId() + "_" + child.getRowId()); child.setIdentityNo(pbomParent.getRowId() + "_" + child.getRowId());
child.setCreatedTime(LocalDateTime.now()); child.setCreatedTime(LocalDateTime.now());
@ -1509,6 +1526,7 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
child.setModifyTime(null); child.setModifyTime(null);
child.setSource(PbomSourceEnum.FROM_DELETE.getValue()); child.setSource(PbomSourceEnum.FROM_DELETE.getValue());
child.setRemark(""); child.setRemark("");
newChildEntityList.add(child);
//调用SAP接口 删除pbom //调用SAP接口 删除pbom
SapReqParams sapReqParams = new SapReqParams(); SapReqParams sapReqParams = new SapReqParams();
@ -1536,7 +1554,13 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
throw new NflgBusinessException(STATE.RouteServiceError, sapResult.getMsg()); throw new NflgBusinessException(STATE.RouteServiceError, sapResult.getMsg());
} }
this.saveOrUpdateBatch(parentList); this.saveOrUpdateBatch(parentList);
pbomChildService.save(child); pbomChildService.saveBatch(newChildEntityList);
pbomChildService.removeById(childBomRowId);
List<Long> exceptRowIds = Lists.newArrayList(pbomParent.getRowId());
List<String> parentMaterialNos =Lists.newArrayList(pbomParent.getMaterialNo());
//历史版本转移到formal正式工作表
pBomToFormal(exceptRowIds, parentMaterialNos, parent.getFacCode());
} }
private void resetBomExist(Long rowId) { private void resetBomExist(Long rowId) {