diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairPartDetails.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairPartDetails.java index 0cc08f07..6af1a446 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairPartDetails.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/domain/RepairPartDetails.java @@ -66,9 +66,23 @@ public class RepairPartDetails extends BaseEntity { private String repairContent; /** 维修数量 */ + @ApiModelProperty(value = "维修数量") private Integer repairNum; + /** 报废数量 */ + @ApiModelProperty(value = "报废数量") + private Integer scrapNum; + + /** 报废原因 */ + @ApiModelProperty(value = "报废原因") + private String scrapReason; + + /** 报废原因类型(0:自然损坏,1人为损坏) */ + @Excel(name = "损坏原因类型", readConverterExp = "0=:自然损坏,1人为损坏") + private String scrapType; + /** 维修人员 */ + @ApiModelProperty(value = "维修人") private String repairer; @ApiModelProperty(value = "配件名称") diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java index 140e76d2..97e52e6a 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java @@ -320,85 +320,106 @@ public class RepairServiceImpl implements RepairService { // 处理配件--数量管理--内部维修 if (CollectionUtil.isNotEmpty(bean.getNumberInRepairPartList())) { partList = bean.getNumberInRepairPartList(); - - // ---------------校验维修数量----------------- - // 统计已维修数量 + 本次维修数量 - int repairNum = OptionalInt.of(details.getRepairedNum()).orElse(0) + bean.getNumberInRepairPartList().get(0).getRepairNum(); - // 统计报废数量 + 维修合计数量 - int num = repairNum + details.getScrapNum(); - if (num > details.getRepairNum()) { - throw new ServiceException("维修数量大于维修总量"); + if (bean.getNumberInRepairPartList().get(0).getRepairNum() != null && bean.getNumberInRepairPartList().get(0).getRepairNum() != 0) { + // ---------------校验维修数量----------------- + // 统计已维修数量 + 本次维修数量 + int repairNum = OptionalInt.of(details.getRepairedNum()).orElse(0) + bean.getNumberInRepairPartList().get(0).getRepairNum(); + // 统计报废数量 + 维修合计数量 + int num = repairNum + details.getScrapNum(); + if (num > details.getRepairNum()) { + throw new ServiceException("维修数量大于维修总量"); + } + // ---------------校验维修数量----------------- + // 更新维修数量、并修改维修人员 + repairMapper.updateRepairedNum(bean.getId(), repairNum, loginUser.getUserid(), loginUser.getUserid()); + // 处理配件集合数据 + copeNumberManageInList(bean, partList, loginUser, bean.getManageType()); } - // ---------------校验维修数量----------------- - // 更新维修数量、并修改维修人员 - repairMapper.updateRepairedNum(bean.getId(), repairNum, loginUser.getUserid(), loginUser.getUserid()); - // 处理配件集合数据 - copeNumberManageInList(bean, partList, loginUser, bean.getManageType()); } // 处理配件集合数据 -- 数量管理--外部返厂维修 if (CollectionUtil.isNotEmpty(bean.getNumberOutRepairPartList())) { - BigDecimal sfCosts = new BigDecimal("0"); partList = bean.getNumberOutRepairPartList(); - // ---------------校验维修数量----------------- - // 统计已维修数量 + 本次维修数量 - int repairNum = OptionalInt.of(details.getRepairedNum()).orElse(0) + bean.getNumberOutRepairPartList().get(0).getRepairNum(); - // 统计报废数量 + 维修合计数量 - int num = repairNum + details.getScrapNum(); - if (num > details.getRepairNum()) { - throw new ServiceException("维修数量大于维修总量"); - } - // ---------------校验维修数量----------------- + // 判断外部维修配件数量是否为空 + if (partList.get(0).getRepairNum() != null && partList.get(0).getRepairNum() != 0) { - // 更新维修数量、维修人员不变 - repairMapper.updateRepairedNumTwo(bean.getId(), repairNum, loginUser.getUserid()); + // ---------------校验维修数量----------------- + // 统计已维修数量 + 本次维修数量 + int repairNum = OptionalInt.of(details.getRepairedNum()).orElse(0) + partList.get(0).getRepairNum(); + // 统计报废数量 + 维修合计数量 + int num = repairNum + details.getScrapNum(); + if (num > details.getRepairNum()) { + throw new ServiceException("维修数量大于维修总量"); + } + // ---------------校验维修数量----------------- - // 数量管理--外部返厂维修 - RepairApplyRecord repairApplyRecord = new RepairApplyRecord(); - repairApplyRecord.setTaskId(bean.getTaskId()); - repairApplyRecord.setMaId(bean.getMaId()); - repairApplyRecord.setTypeId(bean.getTypeId()); - repairApplyRecord.setRepairType(outRepairType); - repairApplyRecord.setPartName(partList.get(0).getPartName()); - repairApplyRecord.setPartType(partList.get(0).getPartType()); - repairApplyRecord.setRepairContent(partList.get(0).getRepairContent()); - if (partList.get(0).getSupplierId() == null) { - throw new ServiceException("请选择返厂厂家"); - } else { - repairApplyRecord.setSupplierId(partList.get(0).getSupplierId()); - } - if (partList.get(0).getPartPrice() == null) { - repairApplyRecord.setPartPrice(new BigDecimal(0)); - } else { - repairApplyRecord.setPartPrice(partList.get(0).getPartPrice()); - } - repairApplyRecord.setPartNum(partList.get(0).getPartNum()); - // 新增【维修记录表】 - repairMapper.addRecord(repairApplyRecord); + // 更新维修数量、维修人员不变 + repairMapper.updateRepairedNumTwo(bean.getId(), repairNum, loginUser.getUserid()); - sfCosts = countPartCosts(partList, sfCosts); - // TODO: 判断是否是收费配件,因数据存在多条,可能有些是免费配件 有些收费,所以这里用价格统一做处理,后续讨论 - // SQL: 新增【维修费用记录表】 - repairMapper.addRepairCost(repairApplyRecord, sfCosts, sfCosts.equals(new BigDecimal("0")) ? "0" : "1"); + // 数量管理--外部返厂维修 + RepairApplyRecord repairApplyRecord = new RepairApplyRecord(); + repairApplyRecord.setTaskId(bean.getTaskId()); + repairApplyRecord.setMaId(bean.getMaId()); + repairApplyRecord.setTypeId(bean.getTypeId()); + repairApplyRecord.setRepairType(outRepairType); + repairApplyRecord.setPartName(partList.get(0).getPartName()); + repairApplyRecord.setPartType(partList.get(0).getPartType()); + repairApplyRecord.setRepairContent(partList.get(0).getRepairContent()); + if (partList.get(0).getSupplierId() == null) { + throw new ServiceException("请选择返厂厂家"); + } else { + repairApplyRecord.setSupplierId(partList.get(0).getSupplierId()); + } + if (partList.get(0).getPartPrice() == null) { + repairApplyRecord.setPartPrice(new BigDecimal(0)); + } else { + repairApplyRecord.setPartPrice(partList.get(0).getPartPrice()); + } + repairApplyRecord.setPartNum(partList.get(0).getPartNum()); + // 新增【维修记录表】 + repairMapper.addRecord(repairApplyRecord); + + sfCosts = countPartCosts(partList, sfCosts); + // TODO: 判断是否是收费配件,因数据存在多条,可能有些是免费配件 有些收费,所以这里用价格统一做处理,后续讨论 + // SQL: 新增【维修费用记录表】 + repairMapper.addRepairCost(repairApplyRecord, sfCosts, sfCosts.equals(new BigDecimal("0")) ? "0" : "1"); + } } + // 处理配件集合数据 -- 数量管理--报废维修 if (CollectionUtil.isNotEmpty(bean.getNumberScrapRepairPartList())) { - // -------------校验维修数量开始---------------- - // 统计历史已报废数量 + 本次报废数量 = 报废总数 - // TODO : get数组的维修数量不对,后续修改对象 - int scrapNum = OptionalInt.of(details.getScrapNum()).orElse(0) + bean.getNumberScrapRepairPartList().get(0).getRepairNum(); - // 统计 报废总数 + 历史已维修数量, - int num = scrapNum + details.getRepairedNum(); - // 不能大与总的待维修数量 - if (num > details.getRepairNum()) { - throw new ServiceException("报废数量大于维修总量! 本次报废数量:" + bean.getScrapNum() + ",已报废数量:" + details.getScrapNum() + ",维修总量:" + details.getRepairNum()); - } - // -------------校验维修数量结束---------------- + // 判断报废数量是否为空 + if (bean.getNumberScrapRepairPartList().get(0).getScrapNum() != null && bean.getNumberScrapRepairPartList().get(0).getScrapNum() > 0) { + // -------------校验维修数量开始---------------- + // 统计历史已报废数量 + 本次报废数量 = 报废总数 + int scrapNum = OptionalInt.of(details.getScrapNum()).orElse(0) + bean.getNumberScrapRepairPartList().get(0).getScrapNum(); + // 统计 报废总数 + 历史已维修数量, + int num = scrapNum + details.getRepairedNum(); + // 不能大与总的待维修数量 + if (num > details.getRepairNum()) { + throw new ServiceException("报废数量大于维修总量! 本次报废数量:" + bean.getScrapNum() + ",已报废数量:" + details.getScrapNum() + ",维修总量:" + details.getRepairNum()); + } + // -------------校验维修数量结束---------------- - // 更新报废数量 - repairMapper.updateScrapNum(bean.getId(), scrapNum, loginUser.getUserid()); + // 更新报废数量 + repairMapper.updateScrapNum(bean.getId(), scrapNum, loginUser.getUserid()); + + // 报废类型无需配件,所以配件为空,添加【维修记录表】 + // 维修记录表信息 + RepairApplyRecord repairApplyRecord = new RepairApplyRecord(); + repairApplyRecord.setTaskId(bean.getTaskId()); + repairApplyRecord.setMaId(bean.getMaId()); + repairApplyRecord.setTypeId(bean.getTypeId()); + repairApplyRecord.setRepairType(bean.getRepairType()); + repairApplyRecord.setRepairNum(null); + repairApplyRecord.setScrapNum(bean.getNumberScrapRepairPartList().get(0).getScrapNum()); + repairApplyRecord.setCreateBy(loginUser.getUsername()); + repairApplyRecord.setStatus(0L); + // 不选维修配件时, 只添加【维修记录表】 + repairMapper.addRecord(repairApplyRecord); + } } } else { throw new ServiceException("请选择正确的维修类型"); @@ -434,6 +455,17 @@ public class RepairServiceImpl implements RepairService { */ private void copeNumberManageInList(RepairDeviceVO bean, List partList, LoginUser loginUser, Integer manageType) { if (CollectionUtil.isNotEmpty(partList)) { + + // 如果是数量管理,那么默认为内部维修 + if (bean.getRepairType() == null && bean.getManageType() != null && manageType == manageTypeByNumber) { + bean.setRepairType(inRepairType); + } + + // 再检查还是null的话直接结束任务 + if (bean.getRepairType() == null) { + return; + } + // 内部维修 if (bean.getRepairType() == inRepairType) { // 遍历配件列表,判断配件类型,收费还是不收费 @@ -455,7 +487,7 @@ public class RepairServiceImpl implements RepairService { repairApplyRecord.setCreateBy(loginUser.getUsername()); repairApplyRecord.setStatus(0L); - if (partDetails.getPartId() != null) { + if (partDetails.getPartId() != null && partDetails.getPartNum() != null) { // 有维修配件时,如果价格为空,设置为0 if (partDetails.getPartCost() == null) { partDetails.setPartCost(new BigDecimal(0));