fix(pbom): 修复因child表物料分类编码与主物料的物料分类编码不一致导致导入到SAP的排序号错误的问题

This commit is contained in:
曹鹏飞 2024-11-12 08:41:10 +08:00
parent 81846b2cca
commit 32da594565
1 changed files with 17 additions and 13 deletions

View File

@ -370,22 +370,26 @@ public class BomNewPbomExportToSAPImpl implements IBomNewPbomExportToSAP {
private List<BomNewPbomChildEntity> syncMaterial(List<BomNewPbomChildEntity> children) { private List<BomNewPbomChildEntity> syncMaterial(List<BomNewPbomChildEntity> children) {
if (CollUtil.isNotEmpty(children)) { if (CollUtil.isNotEmpty(children)) {
List<BaseMaterialVO> materialVOS = materialMainService.getMaterialBaseInfo(children.stream() List<String> materialNos = children.stream()
.filter(f -> !StrUtil.equalsIgnoreCase(BomConstant.PROJECT_TYPE_TEMPORARY, f.getProjectType()) .filter(f -> !StrUtil.equalsIgnoreCase(BomConstant.PROJECT_TYPE_TEMPORARY, f.getProjectType())
&& StrUtil.isNotEmpty(f.getMaterialNo())) && StrUtil.isNotEmpty(f.getMaterialNo()))
.map(BomNewPbomChildEntity::getMaterialNo).collect(Collectors.toList())); .map(BomNewPbomChildEntity::getMaterialNo).collect(Collectors.toList());
children.forEach(c -> { if (CollUtil.isNotEmpty(materialNos)) {
if (!StrUtil.equalsIgnoreCase(BomConstant.PROJECT_TYPE_TEMPORARY, c.getProjectType()) List<BaseMaterialVO> materialVOS = materialMainService.getMaterialBaseInfo(materialNos);
&& StrUtil.isNotEmpty(c.getMaterialNo())) { children.forEach(c -> {
BaseMaterialVO materialVO = materialVOS.stream() if (!StrUtil.equalsIgnoreCase(BomConstant.PROJECT_TYPE_TEMPORARY, c.getProjectType())
.filter(m -> StrUtil.equals(m.getMaterialNo(), c.getMaterialNo())) && StrUtil.isNotEmpty(c.getMaterialNo())) {
.findFirst() BaseMaterialVO materialVO = materialVOS.stream()
.orElse(null); .filter(f -> !StrUtil.equalsIgnoreCase(BomConstant.PROJECT_TYPE_TEMPORARY, f.getProjectType())
if (Objects.nonNull(materialVO)) { && StrUtil.equals(f.getMaterialNo(), c.getMaterialNo()))
c.setMaterialCategoryCode(materialVO.getMaterialCategoryCode()); .findFirst()
.orElse(null);
if (Objects.nonNull(materialVO)) {
c.setMaterialCategoryCode(materialVO.getMaterialCategoryCode());
}
} }
} });
}); }
} }
return children; return children;
} }