【批量替代BOM】导入SAP,改成只导入单层

This commit is contained in:
10001392 2024-10-30 17:04:25 +08:00
parent 2d1dc93521
commit b87a02f892
7 changed files with 36 additions and 12 deletions

View File

@ -69,7 +69,7 @@ public class BatchBomApi extends BaseApi {
if (CollUtil.isNotEmpty(addRowIds)) {
addRowIds.forEach(rootRowId -> {
BomNewEbomExportToSAP exportToSAP = new BomNewEbomExportToSAP();
errorMsgVOS.addAll(exportToSAP.export(rootRowId));
errorMsgVOS.addAll(exportToSAP.export(rootRowId, true));
});
}
return ResultVO.success(errorMsgVOS);
@ -86,7 +86,7 @@ public class BatchBomApi extends BaseApi {
PbomImportToSAPQuery query = new PbomImportToSAPQuery();
query.setRootBomRowId(rootRowId);
query.setIsForSale(false);
errorMsgVOS.addAll(bomNewPbomParentService.importToSAP2(query));
errorMsgVOS.addAll(bomNewPbomParentService.importToSAP2(query, true));
});
}
return ResultVO.success(errorMsgVOS);

View File

@ -180,7 +180,7 @@ public class EbomApi extends BaseApi {
errorMsgVOS.addAll(bomNewEbomParentService.convertToPBom(paramDto));
paramDto.getBomRowIds().forEach(rootRowId -> {
BomNewEbomExportToSAP exportToSAP = new BomNewEbomExportToSAP();
errorMsgVOS.addAll(exportToSAP.export(rootRowId));
errorMsgVOS.addAll(exportToSAP.export(rootRowId, false));
});
return ResultVO.success(errorMsgVOS);
@ -469,7 +469,7 @@ public class EbomApi extends BaseApi {
VUtils.isTure(rootBomRowIds.size() > 1).throwMessage("每次只能导入1条");
// return ResultVO.success(bomNewEbomParentService.importToSAP(rootBomRowIds.get(0)));
BomNewEbomExportToSAP exportToSAP = new BomNewEbomExportToSAP();
return ResultVO.success(exportToSAP.export(rootBomRowIds.get(0)));
return ResultVO.success(exportToSAP.export(rootBomRowIds.get(0), false));
}
/**

View File

@ -336,7 +336,7 @@ public class PBomApi extends BaseApi {
.last(" order by current_version desc limit 1").one();
query.setRootBomRowId(parentEnt.getRowId());
}
return ResultVO.success(bomNewPbomParentService.importToSAP2(query));
return ResultVO.success(bomNewPbomParentService.importToSAP2(query, false));
}
@ -389,7 +389,7 @@ public class PBomApi extends BaseApi {
@PostMapping("importToSAP")
@ApiOperation("导入到SAP")
public ResultVO<List<OperationErrorMsgVO>> importToSAP(@Valid @RequestBody @NotNull PbomImportToSAPQuery query) {
return ResultVO.success(bomNewPbomParentService.importToSAP2(query));
return ResultVO.success(bomNewPbomParentService.importToSAP2(query, false));
}
/**

View File

@ -50,7 +50,7 @@ public class BomNewEbomExportToSAP {
private final BomNewSapErrorMsgService bomNewSapErrorMsgService = SpringUtil.getBean(BomNewSapErrorMsgService.class);
private final SapErrorMsgUtil sapErrorMsgUtil = SpringUtil.getBean(SapErrorMsgUtil.class);
public List<OperationErrorMsgVO> export(Long rootBomRowId) {
public List<OperationErrorMsgVO> export(Long rootBomRowId, boolean singleLevel) {
BomNewEbomParentEntity root = bomNewEbomParentService.getById(rootBomRowId);
// VUtils.isTure(Objects.isNull(root)).throwMessage("数据不存在");
if (Objects.isNull(root)) return Collections.emptyList();
@ -78,6 +78,9 @@ public class BomNewEbomExportToSAP {
sapDto.setI_STLAN("2");
sapDto.setI_EMPNO(root.getCreatedBy());
sapDto.setT1(Convert.toList(T1DTO.class, this.children.stream().filter(c -> !c.isIgnore()).collect(Collectors.toList())));
if (singleLevel) {
filterSingleLevelData(root.getMaterialNo(), sapDto);
}
liErrMsg = SpringUtil.getBean(SapOpUtilService.class).importToSapV2(sapDto, null);
if (CollUtil.isEmpty(liErrMsg)) {
state = SapStatusEnum.PUB_SUCCESS;
@ -102,6 +105,15 @@ public class BomNewEbomExportToSAP {
return liErrMsg;
}
/**
* 单层导入过滤出指定父级物料号的子级即可
* @param materialNo 父级物料号
*/
private void filterSingleLevelData(String materialNo, ImportSapParamDTO sapDto) {
List<T1DTO> t1 = sapDto.getT1();
sapDto.setT1(t1.stream().filter(item -> item.getMATNR().equals(materialNo)).collect(Collectors.toList()));
}
/**
* 构建child数据发包编号
* @param p 上级节点的parent

View File

@ -62,7 +62,7 @@ public class BomNewPbomExportToSAPImpl implements IBomNewPbomExportToSAP {
}
@Override
public List<OperationErrorMsgVO> export(Long rootBomRowId) {
public List<OperationErrorMsgVO> export(Long rootBomRowId, boolean singleLevel) {
BomNewPbomParentEntity root = bomNewPbomParentService.getById(rootBomRowId);
is21 = root.getMaterialNo().startsWith("21");
is31 = root.getMaterialNo().startsWith("31");
@ -114,6 +114,9 @@ public class BomNewPbomExportToSAPImpl implements IBomNewPbomExportToSAP {
sapDto.setI_STLAN("1");
sapDto.setI_EMPNO(root.getCreatedBy());
sapDto.setT1(Convert.toList(T1DTO.class, this.children.stream().filter(c -> !c.isIgnore()).collect(Collectors.toList())));
if (singleLevel) {
filterSingleLevelData(root.getMaterialNo(), sapDto);
}
liErrMsg = SpringUtil.getBean(SapOpUtilService.class).importToSapV2(sapDto, null);
LOGGER.debug("本次导入到sap数量共{}个,其中{}个有错误", sapDto.getT1().size(), liErrMsg.size());
if (CollUtil.isEmpty(liErrMsg)) {
@ -139,6 +142,15 @@ public class BomNewPbomExportToSAPImpl implements IBomNewPbomExportToSAP {
return liErrMsg;
}
/**
* 单层导入过滤出指定父级物料号的子级即可
* @param materialNo 父级物料号
*/
private void filterSingleLevelData(String materialNo, ImportSapParamDTO sapDto) {
List<T1DTO> t1 = sapDto.getT1();
sapDto.setT1(t1.stream().filter(item -> item.getMATNR().equals(materialNo)).collect(Collectors.toList()));
}
private Long getZFBBomRowId(List<BomNewPbomChildEntity> children) {
Long ddpRowId = null;
//电控系统的无须增加 直发包parent记录 by 10002327 240918
@ -378,7 +390,7 @@ public class BomNewPbomExportToSAPImpl implements IBomNewPbomExportToSAP {
.one();
VUtils.isTure(Objects.isNull(pfhb)).throwMessage("没有需要导入的数据");
List<OperationErrorMsgVO> errorMsgVOS = export(pfhb.getRowId());
List<OperationErrorMsgVO> errorMsgVOS = export(pfhb.getRowId(), false);
if (CollUtil.isNotEmpty(errorMsgVOS)) {
//如果导入SAP出错了得将该bom提升为用户根节点以便用户手动尝试导入到SAP去
pfhb.setUserRootIs(1);

View File

@ -1433,13 +1433,13 @@ public class BomNewPbomParentService extends ServiceImpl<BomNewPbomParentMapper,
}
}
public List<OperationErrorMsgVO> importToSAP2(PbomImportToSAPQuery query) {
public List<OperationErrorMsgVO> importToSAP2(PbomImportToSAPQuery query, boolean singleLevel) {
BomNewPbomParentEntity root = getById(query.getRootBomRowId());
VUtils.isTure(Objects.isNull(root)).throwMessage("数据不存在");
// VUtils.isTure(root.getUserRootIs() != 1 && root.getRootIs() != 1).throwMessage("请选择根节点");
IBomNewPbomExportToSAP service = new BomNewPbomExportToSAPImpl(query.getIsForSale());
return service.export(root.getRowId());
return service.export(root.getRowId(), singleLevel);
}
/**

View File

@ -21,7 +21,7 @@ public interface IBomNewPbomExportToSAP {
//
// String dateYMD = DateUtil.format(new Date(), "yyyyMMdd");
List<OperationErrorMsgVO> export(Long rootBomRowId);
List<OperationErrorMsgVO> export(Long rootBomRowId, boolean singleLevel);
/**
* 根据直发包编号导入上级物料到SAP