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 d89fa39b..1780e572 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 @@ -72,7 +72,7 @@ public class EbomApi extends BaseApi { @PostMapping("workDetailsListByPage") @ApiOperation("Ebom-工作明细列表") public ResultVO> workDetailsListByPage(@RequestBody BomNewEbomParentQuery query) { - return ResultVO.success(bomNewEbomParentService.workDetailsListByPage(query)); + return ResultVO.success(bomNewEbomParentService.workDetailsListByPageNew(query)); } @PostMapping("formalWorksheet") diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomParentMapper.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomParentMapper.java index 74262530..395736e3 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomParentMapper.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/mapper/master/BomNewEbomParentMapper.java @@ -81,4 +81,12 @@ public interface BomNewEbomParentMapper extends BaseMapper getEBomParentByMaterialNos(@Param("job") Integer job, @Param("createdBy")String createdBy, @Param("materialNos") List materialNos); + + Page workDetailsListByPageNew(Page objectPage, BomNewEbomParentQuery query, Integer userJob, String userCode); + + List getChildren(Long bomRowId, int type); + + List getBom(String materialNo, String drawingNo); + + List getVOById(Long parentRowId); } 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 94dde9c3..4c1de585 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 @@ -2080,4 +2080,106 @@ public class BomNewEbomParentService extends ServiceImpl workDetailsListByPageNew(BomNewEbomParentQuery query) { + if (StrUtil.isNotBlank(query.getMaterialNo()) || StrUtil.isNotBlank(query.getDrawingNo())) { + query.setPage(1L); + query.setPageSize(20L); + } + Page result = this.getBaseMapper().workDetailsListByPageNew(new Page<>(query.getPage(), query.getPageSize()), query, userRoleService.getUserJob(), SessionUtil.getUserCode()); + if (StrUtil.isBlank(query.getMaterialNo()) && StrUtil.isBlank(query.getDrawingNo())) { + //列表搜索 + return result; + } + //根据编号或图号搜索 + //从顶级开始查找 + List roots = result.getRecords().stream() + .filter(r -> StrUtil.equals(r.getMaterialNo(), query.getMaterialNo()) || StrUtil.equals(r.getDrawingNo(), query.getDrawingNo())) + .collect(Collectors.toList()); + roots.forEach(this::buildChildren); + //从子级开始查找 + List boms = this.getBaseMapper().getBom(query.getMaterialNo(), query.getDrawingNo()); + boms.removeIf(c -> Objects.equals(c.getLastVersionIs(), 0)); + boms.forEach(this::buildChildren); + roots.addAll(boms.stream().filter(b -> b.getRootIs() == 0 && b.getUserRootIs() == 0 && b.getRootIsForWaitReview() == 0).map(this::buildParent).flatMap(List::stream).collect(Collectors.toList())); + + Map> map = roots.stream().collect(Collectors.groupingBy(BaseMaterialVO::getMaterialNo)); + List results = new ArrayList<>(); + map.forEach((k, v) -> { + if (v.size() == 1) { + results.add(v.get(0)); + } else { + BomNewEbomParentVO f1 = v.get(0); + for (int i = 1; i < v.size(); i++) { + merge(f1, v.get(i)); + } + results.add(f1); + } + }); + + results.sort((r1, r2) -> r1.getBomRowId() >= r2.getBomRowId() ? r1.getBomRowId() > r2.getBomRowId() ? 1 : 0 : -1); + + Page pageResult = new Page<>(); + pageResult.setPages(1); + pageResult.setCurrent(1); + pageResult.setTotal(results.size()); + pageResult.setRecords(results); + return pageResult; + } + + private void merge(BomNewEbomParentVO v1, BomNewEbomParentVO v2) { + v1.getChildNodes().addAll(v2.getChildNodes()); + } + + private List buildParent(BomNewEbomParentVO vo) { + List parents = this.getBaseMapper().getVOById(vo.getParentRowId()); + parents.removeIf(c -> 0 == c.getLastVersionIs()); + if (parents.isEmpty()) { + return CollUtil.toList(vo); + } else { + List datas = new ArrayList<>(); + parents.forEach(p -> { + if (Objects.isNull(vo.getStatus())) { + vo.setStatus(p.getStatus()); + vo.setCurrentVersion("A00"); + vo.setDeptName(p.getDeptName()); + vo.setDeviseName(p.getDeviseName()); + } + if (Objects.equals(vo.getBomExist(), 0) && Objects.equals(vo.getShouldBomExist(), 1)) { + vo.setCurrentVersion("A-1"); + } + p.setChildNodes(CollUtil.toList(vo)); + datas.addAll(buildParent(p)); + }); + return datas; + } + } + + private void buildChildren(BomNewEbomParentVO vo) { + if (Objects.isNull(vo.getLastVersionIs())) return; + List children = this.getBaseMapper().getChildren(vo.getBomRowId(), 0); + //children.removeIf(c -> c.getLastVersionIs() != 1); + vo.setChildNodes(children); + children.forEach(c -> { + if (!Objects.equals(vo.getStatus(), EBomStatusEnum.PUBLISHED.getValue()) + && Objects.equals(c.getStatus(), EBomStatusEnum.PUBLISHED.getValue())) { + c.setStatus(EBomStatusEnum.BORROWED_PARTS.getValue()); + } + if (Objects.isNull(c.getStatus())) { + c.setStatus(vo.getStatus()); + c.setCurrentVersion("A00"); + c.setDeptName(vo.getDeptName()); + c.setDeviseName(vo.getDeviseName()); + } + if (Objects.equals(c.getBomExist(), 0) && Objects.equals(c.getShouldBomExist(), 1)) { + c.setCurrentVersion("A-1"); + } + if (c.getBomRowId() != 0 && c.getUserRootIs() == 0 && !Objects.equals(c.getStatus(), EBomStatusEnum.BORROWED_PARTS.getValue())) { + List cc = this.getBaseMapper().getChildren(c.getBomRowId(), 0); + //cc.removeIf(ci -> ci.getLastVersionIs() != 1); + c.setChildNodes(cc); + cc.forEach(this::buildChildren); + } + }); + } } diff --git a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml index c24b46e7..abf2eb34 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml +++ b/nflg_project_dev/nflg-bom-new/src/main/resources/mapper/master/BomNewEbomParentMapper.xml @@ -380,4 +380,91 @@ + + + + + + + +