From 9a366156e53c6399a8cac5bdbdfd101c7b749c2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=B1=B3?= <470431449@qq.com> Date: Fri, 12 Apr 2024 16:17:14 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=90=9C=E7=B4=A2=E6=9C=80=E5=AD=90?= =?UTF-8?q?=E7=BA=A7=EF=BC=8C=E6=97=A0=E5=85=B3=E7=9A=84=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E4=B9=9F=E5=87=BA=E6=9D=A5=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/master/BomNewEbomParentMapper.java | 3 ++ .../service/BomNewEbomParentService.java | 31 +++++++++++++++++-- .../mapper/master/BomNewEbomParentMapper.xml | 12 +++++++ 3 files changed, 44 insertions(+), 2 deletions(-) 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 c73fcf39..56469841 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 @@ -8,6 +8,7 @@ import com.nflg.product.bomnew.pojo.query.OriginalBomQuery; import com.nflg.product.bomnew.pojo.vo.*; import org.apache.ibatis.annotations.Param; +import java.util.Collection; import java.util.List; import java.util.Set; @@ -69,4 +70,6 @@ public interface BomNewEbomParentMapper extends BaseMapper getMaterialParent(@Param("materialNos") Collection materialNos ,@Param("createdBy") String createdBy); } 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 197173f1..1b881d53 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 @@ -124,8 +124,10 @@ public class BomNewEbomParentService extends ServiceImpl materialNos = new ArrayList<>(); - List parentMaterialByMaterialNo = getParentMaterialByMaterialNo(materialNo, !userRoleService.technician()).stream().collect(Collectors.toList()); - materialNos.add(materialNo); +// List parentMaterialByMaterialNo = getParentMaterialByMaterialNo(materialNo, !userRoleService.technician()).stream().collect(Collectors.toList()); + //获取父级物料 + List parentMaterialByMaterialNo=getParentMaterial(ImmutableList.of(materialNo) ,!userRoleService.technician()).stream().collect(Collectors.toList()); +// materialNos.add(materialNo); materialNos.addAll(parentMaterialByMaterialNo); if (CollUtil.isNotEmpty(materialNos)) { List parents = this.getBaseMapper().getParentForMaterialNoSeach(materialNos, query.getDataType()); @@ -221,6 +223,31 @@ public class BomNewEbomParentService extends ServiceImpl getParentMaterial(List materialNoList, Boolean bomType) { + Set result = new HashSet<>(); + result.addAll(materialNoList); + + Set useMaterialSku = this.getBaseMapper().getMaterialParent(materialNoList,bomType?SessionUtil.getUserCode():null); + + while (CollUtil.isNotEmpty(useMaterialSku)) { + //防止数据错误(循环依赖)-死循环 + Set difference = Sets.difference(useMaterialSku, result); + if (CollUtil.isNotEmpty(difference)) { + useMaterialSku = this.getBaseMapper().getMaterialParent(difference,bomType?SessionUtil.getUserCode():null); + result.addAll(difference); + } else { + break; + } + } + return new ArrayList<>(result); + } + /** * 批量获取物料所有父节点 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 710b7b6c..e59a1db5 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 @@ -282,4 +282,16 @@ + +