diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java index 6a949986..5816507b 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/api/user/EbomApi.java @@ -349,7 +349,7 @@ public class EbomApi extends BaseApi { @ApiOperation("删除物料") @LogRecord(success = "Ebom-删除物料,物料编码:{{#bom.materialNo}}-版本:{{#bom.currentVersion}},操作结果:{{#_ret}}", bizNo = "{{#bomRowId}}", type = "Ebom-删除物料") public ResultVO deleteBom(@RequestParam("bomRowId") Long bomRowId) throws ExecutionException, InterruptedException { - return ResultVO.success(bomNewEbomParentService.deleteBom(bomRowId)); + return ResultVO.success(bomNewEbomParentService.deleteBomV2(bomRowId)); } diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java index d1a1af4f..7bfefd26 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/BomNewEbomParentService.java @@ -2396,6 +2396,7 @@ public class BomNewEbomParentService extends ServiceImpl StrUtil.equals(f.getMaterialNo(), vo.getMaterialNo()) || StrUtil.equals(f.getDrawingNo(), vo.getDrawingNo())) .findFirst() @@ -2530,4 +2531,45 @@ public class BomNewEbomParentService extends ServiceImpl materialNos = ebomChildService.lambdaQuery() + .select(BomNewEbomChildEntity::getMaterialNo) + .eq(BomNewEbomChildEntity::getParentRowId, bomRowId) + .list() + .stream() + .map(BomNewEbomChildEntity::getMaterialNo) + .collect(Collectors.toSet()); + + List parents = lambdaQuery() + .select(BomNewEbomParentEntity::getRowId, BomNewEbomParentEntity::getCreatedBy + , BomNewEbomParentEntity::getSource, BomNewEbomParentEntity::getVirtualPackageIs) + .lt(BomNewEbomParentEntity::getStatus, EBomStatusEnum.PUBLISHED.getValue()) + .in(BomNewEbomParentEntity::getMaterialNo, materialNos) + .list(); + List deleteParents = parents.stream() + .filter(p -> (StrUtil.equals(p.getCreatedBy(), SessionUtil.getUserCode()) + && (Objects.equals(p.getSource(), EBomSourceEnum.FROM_BOM.getValue()) || Objects.equals(p.getSource(), EBomSourceEnum.FROM_EXCE.getValue()))) + || Objects.equals(p.getVirtualPackageIs(), 1)) + .map(BomNewEbomParentEntity::getRowId) + .collect(Collectors.toList()); + + ebomChildService.getBaseMapper().delete(Wrappers.lambdaQuery(BomNewEbomChildEntity.class) + .eq(BomNewEbomChildEntity::getParentRowId, bomRowId)); + this.getBaseMapper().delete(Wrappers.lambdaQuery(BomNewEbomParentEntity.class) + .eq(BomNewEbomParentEntity::getRowId, bomRowId)); + + deleteParents.forEach(this::delete); + } }