Merge remote-tracking branch 'origin/DM/提层问题修复'

This commit is contained in:
10001392 2024-10-15 17:43:00 +08:00
commit e45c795e51
4 changed files with 25 additions and 12 deletions

View File

@ -358,6 +358,8 @@ public class BomNewEbomParentVO extends BaseMaterialVO implements Serializable {
@ApiModelProperty("父级物料RowId")
private List<Long> parentRowIds=new ArrayList<>();
@ApiModelProperty("父级物料Id")
private List<Long> parenIds=new ArrayList<>();
@ApiModelProperty("因子级都为F or Z 项而不转")
private Integer notToPBomForFZ=0;

View File

@ -330,6 +330,9 @@ public class SapService implements ApplicationContextAware {
params.setInputTables(inputTables);
SapResult sapResult = doSapFun(params);
Map<String, List<Map<String, Object>>> outTablesMap = sapResult.getOutTablesMap();
return outTablesMap.get("OUTPUT");
if(Objects.nonNull(outTablesMap)) {
return outTablesMap.get("OUTPUT");
}
return Collections.emptyList();
}
}

View File

@ -191,7 +191,7 @@ public abstract class EBomToPbomBase {
//if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy())) {
if (ConvertToPBomModelEnum.OVERRIDE.equalsValue(convertMode.getValue())) {
//当bom创建人为本人 版本大于当前版本则覆盖
if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy()) || parentVo.getCurrentVersion()==null || VersionUtil.compare(parentVo.getCurrentVersion(),oldParent.getCurrentVersion())>0){
if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(parentVo.getVirtualPartType()) || VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(parentVo.getVirtualPartType()) || oldParent.getCreatedBy().equals(parentVo.getCreatedBy()) || parentVo.getCurrentVersion()==null || VersionUtil.compare(parentVo.getCurrentVersion(),oldParent.getCurrentVersion())>0){
SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id", oldParent.getRowId()));
// this.delParentRowIds.add(oldParent.getRowId());
oldParent.setSourceRowId(parentVo.getBomRowId());
@ -375,7 +375,7 @@ public abstract class EBomToPbomBase {
*/
protected void liftingLayer() {
result.add(parent);
liftingLayerDo(parent, null, null, ImmutableList.of());
liftingLayerDo(parent, null, null, ImmutableList.of() ,ImmutableList.of());
}
private List<Long> hasCupmVo = new ArrayList<>();
@ -385,7 +385,7 @@ public abstract class EBomToPbomBase {
* @param directDeliveryVo 直发包
* @param preAssemblyVo 发货前装配包
*/
public void liftingLayerDo(BomNewEbomParentVO parentVO, BomNewEbomParentVO directDeliveryVo, BomNewEbomParentVO preAssemblyVo, List<Long> parentRowIds) {
public void liftingLayerDo(BomNewEbomParentVO parentVO, BomNewEbomParentVO directDeliveryVo, BomNewEbomParentVO preAssemblyVo, List<Long> parentRowIds,List<Long> rowIds) {
List<BomNewEbomParentVO> firstLevelBoms = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parentVO.getBomRowId())).sorted(Comparator.comparing(BomNewEbomParentVO::getVirtualPartType).reversed()).collect(Collectors.toList());
for (BomNewEbomParentVO firstLevelBom : firstLevelBoms) {
@ -395,6 +395,8 @@ public abstract class EBomToPbomBase {
//直发包
firstLevelBom.getParentRowIds().add(firstLevelBom.getParentRowId());
firstLevelBom.getParentRowIds().addAll(parentRowIds);
firstLevelBom.getParenIds().add(parentVO.getRowId());
firstLevelBom.getParenIds().addAll(rowIds);
List<BomNewEbomParentVO> directDeliveryVoList = firstLevelBoms.stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(directDeliveryVoList)) {
directDeliveryVo = directDeliveryVoList.get(0);
@ -413,6 +415,7 @@ public abstract class EBomToPbomBase {
} else if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(firstLevelBom.getProjectType())) {
if (Objects.nonNull(directDeliveryVo)) {
BomNewEbomParentVO newEnt = liftingLayerSummary(directDeliveryVo, firstLevelBom);
firstLevelBom.getParenIds().clear();
newEnt.setRowId(IdWorker.getId());
newEnt.setSourceRowId(String.valueOf(firstLevelBom.getParentRowId()));
newEnt.setSourceParentMaterialNo(parentVO.getMaterialNo());
@ -422,6 +425,7 @@ public abstract class EBomToPbomBase {
} else if (firstLevelBom.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) {
if (Objects.nonNull(preAssemblyVo)) {
BomNewEbomParentVO newEnt = liftingLayerSummary(preAssemblyVo, firstLevelBom);
firstLevelBom.getParenIds().clear();
newEnt.setRowId(IdWorker.getId());
newEnt.setSourceRowId(String.valueOf(firstLevelBom.getParentRowId()));
newEnt.setSourceParentMaterialNo(parentVO.getMaterialNo());
@ -433,7 +437,7 @@ public abstract class EBomToPbomBase {
}
hasCupmVo.add(firstLevelBom.getRowId());
if (firstLevelBom.getBomRowId() > 0) {
liftingLayerDo(firstLevelBom, directDeliveryVo, preAssemblyVo, firstLevelBom.getParentRowIds());
liftingLayerDo(firstLevelBom, directDeliveryVo, preAssemblyVo, firstLevelBom.getParentRowIds() ,firstLevelBom.getParenIds());
}
}
}
@ -702,7 +706,7 @@ public abstract class EBomToPbomBase {
}
private BomNewEbomParentVO getParent(BomNewEbomParentVO vo) {
List<BomNewEbomParentVO> parents = allBomDetail.stream().filter(u -> vo.getParentRowIds().contains(u.getParentRowId()) && u.getBomRowId().equals(vo.getParentRowId())).collect(Collectors.toList());
List<BomNewEbomParentVO> parents = allBomDetail.stream().filter(u -> vo.getParentRowIds().contains(u.getParentRowId()) && u.getBomRowId().equals(vo.getParentRowId()) && vo.getParenIds().contains(u.getRowId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(parents)) {
return parents.get(0);
}

View File

@ -193,7 +193,7 @@ public abstract class FormalEBomToPbomBase {
else if (Objects.nonNull(oldParent) && oldParent.getStatus() < EBomStatusEnum.PUBLISHED.getValue()) {
//if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy())) {
if (ConvertToPBomModelEnum.OVERRIDE.equalsValue(convertMode.getValue())) {
if (oldParent.getCreatedBy().equals(parentVo.getCreatedBy()) || parentVo.getCurrentVersion()==null || VersionUtil.compare(parentVo.getCurrentVersion(),oldParent.getCurrentVersion())>0) {
if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(parentVo.getVirtualPartType()) || VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.equalsValue(parentVo.getVirtualPartType()) || oldParent.getCreatedBy().equals(parentVo.getCreatedBy()) || parentVo.getCurrentVersion()==null || VersionUtil.compare(parentVo.getCurrentVersion(),oldParent.getCurrentVersion())>0) {
SpringUtil.getBean(BomNewPbomChildService.class).getBaseMapper().deleteByMap(ImmutableMap.of("parent_row_id", oldParent.getRowId()));
oldParent.setSourceRowId(parentVo.getBomRowId());
oldParent.setCreatedTime(LocalDateTime.now());
@ -355,7 +355,7 @@ public abstract class FormalEBomToPbomBase {
*/
protected void liftingLayer() {
result.add(parent);
liftingLayerDo(parent, null, null, ImmutableList.of());
liftingLayerDo(parent, null, null, ImmutableList.of() ,ImmutableList.of());
}
private List<Long> hasCupmVo = new ArrayList<>();
@ -365,7 +365,7 @@ public abstract class FormalEBomToPbomBase {
* @param directDeliveryVo 直发包
* @param preAssemblyVo 发货前装配包
*/
public void liftingLayerDo(BomNewEbomParentVO parentVO, BomNewEbomParentVO directDeliveryVo, BomNewEbomParentVO preAssemblyVo, List<Long> parentRowIds) {
public void liftingLayerDo(BomNewEbomParentVO parentVO, BomNewEbomParentVO directDeliveryVo, BomNewEbomParentVO preAssemblyVo, List<Long> parentRowIds ,List<Long> rowIds) {
List<BomNewEbomParentVO> firstLevelBoms = allBomDetail.stream().filter(u -> u.getParentRowId().equals(parentVO.getBomRowId())).sorted(Comparator.comparing(BomNewEbomParentVO::getVirtualPartType).reversed()).collect(Collectors.toList());
for (BomNewEbomParentVO firstLevelBom : firstLevelBoms) {
@ -375,6 +375,8 @@ public abstract class FormalEBomToPbomBase {
//直发包
firstLevelBom.getParentRowIds().add(firstLevelBom.getParentRowId());
firstLevelBom.getParentRowIds().addAll(parentRowIds);
firstLevelBom.getParenIds().add(parentVO.getRowId());
firstLevelBom.getParenIds().addAll(rowIds);
List<BomNewEbomParentVO> directDeliveryVoList = firstLevelBoms.stream().filter(u -> VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.equalsValue(u.getVirtualPartType())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(directDeliveryVoList)) {
directDeliveryVo = directDeliveryVoList.get(0);
@ -393,6 +395,7 @@ public abstract class FormalEBomToPbomBase {
} else if (VirtualPackageTypeEnum.DIRECT_DELIVERY_PACKAGE.getProductTypeKey().equals(firstLevelBom.getProjectType())) {
if (Objects.nonNull(directDeliveryVo)) {
BomNewEbomParentVO newEnt = liftingLayerSummary(directDeliveryVo, firstLevelBom);
firstLevelBom.getParenIds().clear();
newEnt.setRowId(IdWorker.getId());
newEnt.setSourceRowId(String.valueOf(firstLevelBom.getParentRowId()));
newEnt.setSourceParentMaterialNo(parentVO.getMaterialNo());
@ -402,6 +405,7 @@ public abstract class FormalEBomToPbomBase {
} else if (firstLevelBom.getProjectType().equals(VirtualPackageTypeEnum.PRE_ASSEMBLY_PACKAGE.getProductTypeKey())) {
if (Objects.nonNull(preAssemblyVo)) {
BomNewEbomParentVO newEnt = liftingLayerSummary(preAssemblyVo, firstLevelBom);
firstLevelBom.getParenIds().clear();
newEnt.setRowId(IdWorker.getId());
newEnt.setSourceRowId(String.valueOf(firstLevelBom.getParentRowId()));
newEnt.setSourceParentMaterialNo(parentVO.getMaterialNo());
@ -413,7 +417,7 @@ public abstract class FormalEBomToPbomBase {
}
hasCupmVo.add(firstLevelBom.getRowId());
if (firstLevelBom.getBomRowId() > 0) {
liftingLayerDo(firstLevelBom, directDeliveryVo, preAssemblyVo, firstLevelBom.getParentRowIds());
liftingLayerDo(firstLevelBom, directDeliveryVo, preAssemblyVo, firstLevelBom.getParentRowIds(),firstLevelBom.getParenIds());
}
}
}
@ -450,7 +454,7 @@ public abstract class FormalEBomToPbomBase {
}
@Deprecated
protected List<BomNewEbomParentVO> getAllParent(BomNewEbomParentVO vo) {
List<BomNewEbomParentVO> result = new ArrayList<>();
BomNewEbomParentVO parentEnt = getParent(vo);
@ -682,7 +686,7 @@ public abstract class FormalEBomToPbomBase {
}
private BomNewEbomParentVO getParent(BomNewEbomParentVO vo) {
List<BomNewEbomParentVO> parents = allBomDetail.stream().filter(u -> vo.getParentRowIds().contains(u.getParentRowId()) && u.getBomRowId().equals(vo.getParentRowId())).collect(Collectors.toList());
List<BomNewEbomParentVO> parents = allBomDetail.stream().filter(u -> vo.getParentRowIds().contains(u.getParentRowId()) && u.getBomRowId().equals(vo.getParentRowId()) && vo.getParenIds().contains(u.getRowId())).collect(Collectors.toList());
if (CollUtil.isNotEmpty(parents)) {
return parents.get(0);
}