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 @@ + +