|
|
@ -808,8 +808,10 @@ public class SysMakeOrderServiceImpl implements ISysMakeOrderService |
|
|
|
|
|
|
|
// 生成委外计划
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public int addOutsourcePlan(OutsourcePlan outsourcePlan) { |
|
|
|
String outsourcePlanCode = redisCache.generateBillNo("WWJH"); |
|
|
|
Long parentId = 0L; |
|
|
|
outsourcePlan.setOutsourcePlanCode(outsourcePlanCode); |
|
|
|
outsourcePlan.setCreateTime(DateUtils.getNowDate()); |
|
|
|
outsourcePlan.setCreateBy(ShiroUtils.getLoginName()); |
|
|
@ -819,29 +821,40 @@ public class SysMakeOrderServiceImpl implements ISysMakeOrderService |
|
|
|
} |
|
|
|
int materialAmount = 0; |
|
|
|
int processAmount = 0; |
|
|
|
BigDecimal materialSum = BigDecimal.ZERO; |
|
|
|
int materialSum = 0; |
|
|
|
Set<String> uniqueProcessNos = new HashSet<>(); // 用于存储唯一的 processNo
|
|
|
|
for (OutsourcePlanDetail detail:planDetails) { |
|
|
|
materialAmount ++; |
|
|
|
detail.setOutsourcePlanCode(outsourcePlanCode); |
|
|
|
List<OutsourceMaterial> materials = outsourceMaterialMapper.selectProcessNoByNo(detail.getMaterialNo()); |
|
|
|
if(StringUtils.isEmpty(materials)){ |
|
|
|
throw new BusinessException("委外物料工序数量为空!添加失败"); |
|
|
|
} |
|
|
|
for (OutsourceMaterial material : materials) { |
|
|
|
uniqueProcessNos.add(material.getOutsourceProcessNo()); |
|
|
|
} |
|
|
|
materialSum = materialSum.add(detail.getPlannedOutsourceAmount()); |
|
|
|
detail.setOutsourceProcessType(materials.size()); |
|
|
|
detail.setOutsourceProcessAmount(materials.size()); |
|
|
|
detail.setCreateBy(ShiroUtils.getLoginName()); |
|
|
|
detail.setCreateTime(DateUtils.getNowDate()); |
|
|
|
processAmount += detail.getOutsourceProcessAmount(); |
|
|
|
} |
|
|
|
int batchResult = outsourcePlanMapper.batchOutsourcePlanDetail(planDetails); |
|
|
|
if(batchResult <= 0){ |
|
|
|
throw new BusinessException("添加委外计划详情失败!"); |
|
|
|
if(detail.getLevel() == 0){ |
|
|
|
materialAmount ++; |
|
|
|
List<OutsourceMaterial> materials = outsourceMaterialMapper.selectProcessNoByNo(detail.getMaterialNo()); |
|
|
|
if(StringUtils.isEmpty(materials)){ |
|
|
|
throw new BusinessException("委外物料工序数量为空!添加失败"); |
|
|
|
} |
|
|
|
for (OutsourceMaterial material : materials) { |
|
|
|
uniqueProcessNos.add(material.getOutsourceProcessNo()); |
|
|
|
} |
|
|
|
materialSum = materialSum + detail.getPlannedOutsourceAmount(); |
|
|
|
detail.setOutsourceProcessType(materials.size()); |
|
|
|
detail.setOutsourceProcessAmount(materials.size()); |
|
|
|
processAmount += detail.getOutsourceProcessAmount(); |
|
|
|
int insertResult = outsourcePlanMapper.insertOutsourcePlanDetail(detail); |
|
|
|
if(insertResult <= 0){ |
|
|
|
throw new BusinessException("添加委外计划详情失败!"); |
|
|
|
} |
|
|
|
parentId = detail.getOutsourcePlanDetailId(); |
|
|
|
|
|
|
|
}else if(detail.getLevel() == 1){ |
|
|
|
detail.setParentId(parentId); |
|
|
|
int insertResult = outsourcePlanMapper.insertOutsourcePlanDetail(detail); |
|
|
|
if(insertResult <= 0){ |
|
|
|
throw new BusinessException("添加委外计划详情失败!"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 更新生产订单bom的已委外数信息
|
|
|
|
changeOrderBomOutNum(planDetails,outsourcePlan.getAssociateOrderNo()); |
|
|
|
|
|
|
@ -864,12 +877,17 @@ public class SysMakeOrderServiceImpl implements ISysMakeOrderService |
|
|
|
private int changeOrderBomOutNum(List<OutsourcePlanDetail> planDetails, String makeNo){ |
|
|
|
int updateResult = 0; |
|
|
|
for (OutsourcePlanDetail detail: planDetails) { |
|
|
|
SysMakeorderBom tempBom = new SysMakeorderBom(); |
|
|
|
tempBom.setMakeNo(makeNo); |
|
|
|
tempBom.setMaterialNo(detail.getMaterialNo()); |
|
|
|
SysMakeorderBom makeorderBom = makeorderBomMapper.selectSysMakeorderBomByNo(tempBom); |
|
|
|
makeorderBom.setHasOutNum(detail.getPlannedOutsourceAmount().intValue()); |
|
|
|
updateResult += makeorderBomMapper.updateSysMakeorderBom(makeorderBom); |
|
|
|
if(detail.getLevel()==0){ |
|
|
|
SysMakeorderBom tempBom = new SysMakeorderBom(); |
|
|
|
tempBom.setMakeNo(makeNo); |
|
|
|
tempBom.setMaterialNo(detail.getMaterialNo()); |
|
|
|
tempBom.setId(detail.getMakeBomId()); |
|
|
|
SysMakeorderBom makeorderBom = makeorderBomMapper.selectSysMakeorderBomByNo(tempBom); |
|
|
|
int hasOutSum = Optional.ofNullable(makeorderBom.getHasOutNum()).orElse(0); |
|
|
|
hasOutSum = hasOutSum + makeorderBom.getHasOutNum(); |
|
|
|
makeorderBom.setHasOutNum(hasOutSum); |
|
|
|
updateResult += makeorderBomMapper.updateSysMakeorderBom(makeorderBom); |
|
|
|
} |
|
|
|
} |
|
|
|
return updateResult; |
|
|
|
} |
|
|
|