From eae09991269224332f6561626131018e854e71cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 17 Apr 2024 19:43:20 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20ebom=E5=B7=A5=E4=BD=9C=E8=A1=A8?= =?UTF-8?q?=E4=B8=8D=E6=8C=89=E5=90=88=E5=B9=B6=E6=A0=91=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nflg/product/bomnew/api/user/EbomApi.java | 2 +- .../mapper/master/BomNewEbomParentMapper.java | 8 ++ .../service/BomNewEbomParentService.java | 101 ++++++++++++++++++ .../mapper/master/BomNewEbomParentMapper.xml | 87 +++++++++++++++ 4 files changed, 197 insertions(+), 1 deletion(-) 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 c2c67469..5e7b030d 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 @@ -78,4 +78,12 @@ public interface BomNewEbomParentMapper extends BaseMapper getMaterialParent(@Param("materialNos") Collection materialNos ,@Param("createdBy") String createdBy); void resetAllBomExist(); + + 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 6d7d5e41..91b705df 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 @@ -2065,4 +2065,105 @@ 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; + } else { + //根据编号或图号搜索 + //从顶级开始查找 + 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); + } + }); + + 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 54b3606d..1b6b6f68 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 @@ -361,4 +361,91 @@ SET p.bom_exist = (IF(EXISTS (SELECT 1 FROM t_bom_new_ebom_child WHERE parent_row_id = p.row_id), 1, 0)) WHERE p.status < 4; + + + + + + + + From 39ed6810ebd4129635287da6d538c2ae3bb66135 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Thu, 18 Apr 2024 09:15:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20ebom=E5=B7=A5=E4=BD=9C=E8=A1=A8?= =?UTF-8?q?=E7=B2=BE=E7=A1=AE=E6=90=9C=E7=B4=A2=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/BomNewEbomParentService.java | 67 ++++++++++--------- 1 file changed, 34 insertions(+), 33 deletions(-) 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 ec9b68d0..c8f5e3e1 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 @@ -2077,40 +2077,41 @@ public class BomNewEbomParentService extends ServiceImpl 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); - } - }); - - Page pageResult = new Page<>(); - pageResult.setPages(1); - pageResult.setCurrent(1); - pageResult.setTotal(results.size()); - pageResult.setRecords(results); - return pageResult; } + //根据编号或图号搜索 + //从顶级开始查找 + 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) {