diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java index b573ab9f..9e58cc21 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysMakeOrderServiceImpl.java @@ -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 uniqueProcessNos = new HashSet<>(); // 用于存储唯一的 processNo for (OutsourcePlanDetail detail:planDetails) { - materialAmount ++; detail.setOutsourcePlanCode(outsourcePlanCode); - List 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 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 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; } diff --git a/ruoyi-admin/src/main/resources/mapper/system/SysMakeorderBomMapper.xml b/ruoyi-admin/src/main/resources/mapper/system/SysMakeorderBomMapper.xml index cb0e7f71..bd5f24c2 100644 --- a/ruoyi-admin/src/main/resources/mapper/system/SysMakeorderBomMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/system/SysMakeorderBomMapper.xml @@ -202,6 +202,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"