|
|
|
|
@ -340,8 +340,80 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
yieldOrder.setValidationMomo("未找到ERP一级B号路线,请核查!"); |
|
|
|
|
this.updateById(yieldOrder); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 验证烧结订单的b号描述,如果包含封接字样则验证子件,不包含则不验证
|
|
|
|
|
if (primaryCraft.contains(YieldOrderConst.ROAMNO_TEXT_FJ)) { |
|
|
|
|
DsPartEntity partEntity = dsPartService.selectDsPartByPatCodeAndVersion(yieldOrder.getPartCode(), yieldOrder.getPartVersion()); |
|
|
|
|
// 烧结订单 需要校验子件必须包含【玻璃饼、壳体、插针、石墨模】
|
|
|
|
|
if(yieldOrder.getYieldType().equals(YieldOrderEnum.YIELD_TYPE_2.getCode())){ |
|
|
|
|
if(partEntity == null){ |
|
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode()); |
|
|
|
|
yieldOrder.setValidationTime(DateUtil.now()); |
|
|
|
|
yieldOrder.setValidationMomo(yieldOrder.getPartCode()+": 未查询到零件信息!"); |
|
|
|
|
this.updateById(yieldOrder); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
List<DsPartRelationEntity> partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); |
|
|
|
|
List<Long> childPartIdList = partRelationEntityList.stream() |
|
|
|
|
.map(DsPartRelationEntity::getChildPartId) |
|
|
|
|
.filter(Objects::nonNull) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(childPartIdList)) { |
|
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode()); |
|
|
|
|
yieldOrder.setValidationTime(DateUtil.now()); |
|
|
|
|
yieldOrder.setValidationMomo(partEntity.getPartCode()+" :未查询到子件信息"); |
|
|
|
|
this.updateById(yieldOrder); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
List<DsPartEntity> dsPartEntityList = dsPartService.listByIds(childPartIdList); |
|
|
|
|
|
|
|
|
|
// 收集所有子件的
|
|
|
|
|
Set<Integer> sinTerTypeSet = dsPartEntityList.stream() |
|
|
|
|
.map(DsPartEntity::getSinTerType) |
|
|
|
|
.filter(Objects::nonNull) |
|
|
|
|
.collect(Collectors.toSet()); |
|
|
|
|
if(CollectionUtils.isEmpty(sinTerTypeSet)){ |
|
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode()); |
|
|
|
|
yieldOrder.setValidationTime(DateUtil.now()); |
|
|
|
|
yieldOrder.setValidationMomo(partEntity.getPartCode()+" :子件类型为空"); |
|
|
|
|
this.updateById(yieldOrder); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 校验必须包含的零件类型
|
|
|
|
|
List<Integer> requiredTypes = Arrays.asList(DsPartConstant.SIN_TER_TYPE_CZ, DsPartConstant.SIN_TER_TYPE_KT, DsPartConstant.SIN_TER_TYPE_BLB, DsPartConstant.SIN_TER_TYPE_SMM); |
|
|
|
|
|
|
|
|
|
List<Integer> missingTypes = new ArrayList<>(); |
|
|
|
|
for (Integer requiredType : requiredTypes) { |
|
|
|
|
if (!sinTerTypeSet.contains(requiredType)) { |
|
|
|
|
missingTypes.add(requiredType); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!missingTypes.isEmpty()) { |
|
|
|
|
String missingDesc = missingTypes.stream() |
|
|
|
|
.map(type -> { |
|
|
|
|
if (type.equals(DsPartConstant.SIN_TER_TYPE_CZ)) return "插针"; |
|
|
|
|
if (type.equals(DsPartConstant.SIN_TER_TYPE_KT)) return "壳体"; |
|
|
|
|
if (type.equals(DsPartConstant.SIN_TER_TYPE_BLB)) return "玻璃饼"; |
|
|
|
|
if (type.equals(DsPartConstant.SIN_TER_TYPE_SMM)) return "石墨模"; |
|
|
|
|
return "未知类型(" + type + ")"; |
|
|
|
|
}) |
|
|
|
|
.collect(Collectors.joining("、")); |
|
|
|
|
|
|
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode()); |
|
|
|
|
yieldOrder.setValidationTime(DateUtil.now()); |
|
|
|
|
yieldOrder.setValidationMomo("零件:"+partEntity.getPartCode()+" 缺少子件类型: " + missingDesc); |
|
|
|
|
this.updateById(yieldOrder); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
this.saveSubYieldOrder(yieldOrder, Boolean.FALSE, yieldOrder.getReceiveUser()); |
|
|
|
|
} catch (BusinessException e) { |
|
|
|
|
@ -481,74 +553,6 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// 烧结订单 需要校验子件必须包含【玻璃饼、壳体、插针、石墨模】
|
|
|
|
|
if(yieldOrder.getYieldType().equals(YieldOrderEnum.YIELD_TYPE_2.getCode())){ |
|
|
|
|
if(partEntity == null){ |
|
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode()); |
|
|
|
|
yieldOrder.setValidationTime(DateUtil.now()); |
|
|
|
|
yieldOrder.setValidationMomo(yieldOrder.getPartCode()+": 未查询到零件信息!"); |
|
|
|
|
this.updateById(yieldOrder); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
List<DsPartRelationEntity> partRelationEntityList = partRelationService.selectDsPartRelationByPartId(partEntity.getId()); |
|
|
|
|
List<Long> childPartIdList = partRelationEntityList.stream() |
|
|
|
|
.map(DsPartRelationEntity::getChildPartId) |
|
|
|
|
.filter(Objects::nonNull) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(childPartIdList)) { |
|
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode()); |
|
|
|
|
yieldOrder.setValidationTime(DateUtil.now()); |
|
|
|
|
yieldOrder.setValidationMomo(partEntity.getPartCode()+" :未查询到子件信息"); |
|
|
|
|
this.updateById(yieldOrder); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
List<DsPartEntity> dsPartEntityList = dsPartService.listByIds(childPartIdList); |
|
|
|
|
|
|
|
|
|
// 收集所有子件的
|
|
|
|
|
Set<Integer> sinTerTypeSet = dsPartEntityList.stream() |
|
|
|
|
.map(DsPartEntity::getSinTerType) |
|
|
|
|
.filter(Objects::nonNull) |
|
|
|
|
.collect(Collectors.toSet()); |
|
|
|
|
if(CollectionUtils.isEmpty(sinTerTypeSet)){ |
|
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode()); |
|
|
|
|
yieldOrder.setValidationTime(DateUtil.now()); |
|
|
|
|
yieldOrder.setValidationMomo(partEntity.getPartCode()+" :子件类型为空"); |
|
|
|
|
this.updateById(yieldOrder); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 校验必须包含的零件类型
|
|
|
|
|
List<Integer> requiredTypes = Arrays.asList(DsPartConstant.SIN_TER_TYPE_CZ, DsPartConstant.SIN_TER_TYPE_KT, DsPartConstant.SIN_TER_TYPE_BLB, DsPartConstant.SIN_TER_TYPE_SMM); |
|
|
|
|
|
|
|
|
|
List<Integer> missingTypes = new ArrayList<>(); |
|
|
|
|
for (Integer requiredType : requiredTypes) { |
|
|
|
|
if (!sinTerTypeSet.contains(requiredType)) { |
|
|
|
|
missingTypes.add(requiredType); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!missingTypes.isEmpty()) { |
|
|
|
|
String missingDesc = missingTypes.stream() |
|
|
|
|
.map(type -> { |
|
|
|
|
if (type.equals(DsPartConstant.SIN_TER_TYPE_CZ)) return "插针"; |
|
|
|
|
if (type.equals(DsPartConstant.SIN_TER_TYPE_KT)) return "壳体"; |
|
|
|
|
if (type.equals(DsPartConstant.SIN_TER_TYPE_BLB)) return "玻璃饼"; |
|
|
|
|
if (type.equals(DsPartConstant.SIN_TER_TYPE_SMM)) return "石墨模"; |
|
|
|
|
return "未知类型(" + type + ")"; |
|
|
|
|
}) |
|
|
|
|
.collect(Collectors.joining("、")); |
|
|
|
|
|
|
|
|
|
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode()); |
|
|
|
|
yieldOrder.setValidationTime(DateUtil.now()); |
|
|
|
|
yieldOrder.setValidationMomo("零件:"+partEntity.getPartCode()+" 缺少子件类型: " + missingDesc); |
|
|
|
|
this.updateById(yieldOrder); |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Integer rank; |
|
|
|
|
// 先判断是否是热表订单 不是返回二级工艺
|
|
|
|
|
|