diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java index 57980de9..cf031853 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/back/service/impl/BackApplyInfoServiceImpl.java @@ -514,7 +514,9 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService { int result = 0; if (CollectionUtils.isNotEmpty(maCodeList)) { for (MaCodeVo maCodeVo : maCodeList) { - result += machineMapper.updateStatus(maCodeVo.getMaId(), MaMachineStatusEnum.IN_USE.getStatus()); + if (maCodeVo.getMaId() != null) { + result += machineMapper.updateStatus(maCodeVo.getMaId(), MaMachineStatusEnum.IN_USE.getStatus()); + } } } // 删除相关任务信息 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 1fa24504..69e5af2d 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 @@ -460,9 +460,6 @@ public class RepairServiceImpl implements RepairService { @Override public AjaxResult batchRepairApply(@NotNull List repairDeviceVOList) { - BigDecimal innerNum = BigDecimal.ZERO; - BigDecimal outerNum = BigDecimal.ZERO; - BigDecimal scrapRepairNum = BigDecimal.ZERO; // 准备业务逻辑数据 LoginUser loginUser = SecurityUtils.getLoginUser(); // 配件集合 @@ -470,72 +467,7 @@ public class RepairServiceImpl implements RepairService { // 校验参数,过滤空数据 repairDeviceVOList.removeIf(Objects::isNull); - // 先根据任务id查询维修任务详情,判断是否需要维修拆分 - boolean isNeedSplit = false; - // 过滤出repairType不为null的RepairDeviceVO,并获取它们的id组成一个集合 - List idList = repairDeviceVOList.stream() - .filter(device -> device.getRepairType() != null) - .map(RepairDeviceVO::getId) - .collect(Collectors.toList()); - List detailsList = repairApplyDetailsMapper.getRepairDetailsWhichNotSent(repairDeviceVOList.get(0).getTaskId()); - if (!CollectionUtils.isEmpty(detailsList)) { - for (RepairTaskDetails bean : detailsList) { - for (RepairDeviceVO repairDeviceVO : repairDeviceVOList) { - if (Objects.equals(MaTypeManageTypeEnum.CODE_DEVICE.getTypeId(), repairDeviceVO.getManageType())) { - if (!idList.contains(bean.getId()) && "0".equals(bean.getStatus())) { - isNeedSplit = true; - break; - } - } else if (Objects.equals(MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId(), repairDeviceVO.getManageType())) { - if (!idList.contains(bean.getId()) && "0".equals(bean.getStatus())) { - isNeedSplit = true; - } else if (idList.contains(bean.getId())) { - if (Objects.equals(bean.getTypeId(), repairDeviceVO.getTypeId().toString())) { - if (CollectionUtil.isNotEmpty(repairDeviceVO.getNumberInRepairPartList())) { - partList = repairDeviceVO.getNumberInRepairPartList(); - if (null != partList.get(0).getRepairNum() && 0 < partList.get(0).getRepairNum().compareTo(BigDecimal.ZERO)) { - // 分拆维修单, 准备数据 - innerNum = partList.get(0).getRepairNum(); - } - } - if (CollectionUtil.isNotEmpty(repairDeviceVO.getNumberOutRepairPartList())) { - partList = repairDeviceVO.getNumberOutRepairPartList(); - if (null != partList.get(0).getRepairNum() && partList.get(0).getRepairNum().compareTo(BigDecimal.ZERO) > 0) { - // 分拆维修单, 准备数据 - outerNum = partList.get(0).getRepairNum(); - } - } - // 处理配件集合数据 -- 数量管理--报废维修 - if (CollectionUtil.isNotEmpty(repairDeviceVO.getNumberScrapRepairPartList())) { - // 判断报废数量是否为空 - if (repairDeviceVO.getNumberScrapRepairPartList().get(0).getScrapNum() != null && repairDeviceVO.getNumberScrapRepairPartList().get(0).getScrapNum().compareTo(BigDecimal.ZERO) > 0) { - // 分拆维修单, 准备数据 - scrapRepairNum = repairDeviceVO.getNumberScrapRepairPartList().get(0).getScrapNum(); - } - } - } - } - BigDecimal add = innerNum.add(outerNum).add(scrapRepairNum); - BigDecimal subtract = bean.getRepairNum().subtract(bean.getRepairedNum()).subtract(bean.getScrapNum()); - if (add.compareTo(subtract) < 0) { - isNeedSplit = true; - } - } - } - } - } - Long newTaskId = null; - if (isNeedSplit) { - // 查询协议ID - Long agreementId = taskAgreementMapper.selectAgreementIdByTaskId(repairDeviceVOList.get(0).getTaskId()); - // 插入任务表 - newTaskId = insertTt(SecurityUtils.getUsername()); - // 插入协议任务表 - int res = insertTta(newTaskId, agreementId); - if (res <= 0) { - throw new ServiceException("协议任务表插入失败"); - } - } + for (RepairDeviceVO bean : repairDeviceVOList) { if (null == bean.getManageType()) {throw new ServiceException("请选择物资管理方式");} if (Objects.equals(MaTypeManageTypeEnum.CODE_DEVICE.getTypeId(), bean.getManageType())) { @@ -548,29 +480,12 @@ public class RepairServiceImpl implements RepairService { partList = bean.getCodeInRepairPartList(); // 更新维修数量、并修改维修人员 repairMapper.updateRepairedNumAndStatus(bean.getId(), BigDecimal.ONE, 1, loginUser.getUsername(), loginUser.getUserid()); - if (isNeedSplit) { - bean.setNewTaskId(newTaskId); - bean.setRepairer(loginUser.getUsername()); - bean.setRepairedNum(bean.getRepairNum()); - bean.setParentId(bean.getId()); - bean.setLevel((StringUtils.isNotBlank(bean.getLevel())) ? String.valueOf(Integer.parseInt(bean.getLevel()) + 1) : "1"); - bean.setCreateBy(SecurityUtils.getUsername()); - repairMapper.insertRepaired(bean); - } break; } case RETURN_FACTORY: { partList = bean.getCodeOutRepairPartList(); // 更新维修数量、维修人员不变 repairMapper.updateRepairedNumTwoAndStatus(bean.getId(), BigDecimal.ONE, 1, loginUser.getUserid()); - if (isNeedSplit) { - bean.setNewTaskId(newTaskId); - bean.setRepairedNum(bean.getRepairNum()); - bean.setParentId(bean.getId()); - bean.setLevel((StringUtils.isNotBlank(bean.getLevel())) ? String.valueOf(Integer.parseInt(bean.getLevel()) + 1) : "1"); - bean.setCreateBy(SecurityUtils.getUsername()); - repairMapper.insertRepaired(bean); - } break; } case TO_SCRAP: { @@ -578,14 +493,6 @@ public class RepairServiceImpl implements RepairService { partList = bean.getCodeScrapRepairPartList(); // 更新报废数量 repairMapper.updateScrapNumAndStatus(bean.getId(), BigDecimal.ONE, 1, loginUser.getUserid()); - if (isNeedSplit) { - bean.setNewTaskId(newTaskId); - bean.setScrapNum(bean.getRepairNum()); - bean.setParentId(bean.getId()); - bean.setLevel((StringUtils.isNotBlank(bean.getLevel())) ? String.valueOf(Integer.parseInt(bean.getLevel()) + 1) : "1"); - bean.setCreateBy(SecurityUtils.getUsername()); - repairMapper.insertRepaired(bean); - } break; } default: @@ -602,7 +509,7 @@ public class RepairServiceImpl implements RepairService { } // 统一处理配件集合数据 - copeNumberManageInList(bean, partList, loginUser, bean.getManageType(), isNeedSplit, newTaskId); + copeNumberManageInList(bean, partList, loginUser, bean.getManageType()); } else if (Objects.equals(MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId(), bean.getManageType())) { // 物资管理方式--数量管理 @@ -645,7 +552,7 @@ public class RepairServiceImpl implements RepairService { // 分拆维修单, 准备数据 innerRepairNum = partList.get(0).getRepairNum(); // 处理配件集合数据 - copeNumberManageInList(bean, partList, loginUser, bean.getManageType(), isNeedSplit, newTaskId); + copeNumberManageInList(bean, partList, loginUser, bean.getManageType()); } } @@ -725,10 +632,6 @@ public class RepairServiceImpl implements RepairService { // 因报废操作无需配件, 只添加【维修记录表】 repairMapper.addRecord(repairApplyRecord); - if (isNeedSplit) { - repairApplyRecord.setTaskId(newTaskId); - repairMapper.addRecord(repairApplyRecord); - } } } else { // 报废类型无需配件,所以配件为空,添加【维修记录表】 @@ -743,28 +646,13 @@ public class RepairServiceImpl implements RepairService { // 因报废操作无需配件, 只添加【维修记录表】 repairMapper.addRecord(repairApplyRecord); - if (isNeedSplit) { - repairApplyRecord.setTaskId(newTaskId); - repairMapper.addRecord(repairApplyRecord); - } } } } // 拆分维修单 splitRepairDetailsToMultiple(bean, innerRepairNum, outerRepairNum, scrapNum, loginUser); - if (isNeedSplit) { - // 维修单拆分合并 - bean.setNewTaskId(newTaskId); - bean.setRepairNum(innerRepairNum.add(outerRepairNum).add(scrapNum)); - bean.setRepairedNum(innerRepairNum.add(outerRepairNum)); - bean.setScrapNum(scrapNum); - bean.setStatus("1"); - bean.setParentId(bean.getId()); - bean.setLevel((StringUtils.isNotBlank(bean.getLevel())) ? String.valueOf(Integer.parseInt(bean.getLevel()) + 1) : "1"); - bean.setCreateBy(SecurityUtils.getUsername()); - repairMapper.insertRepaired(bean); - } + } else { throw new ServiceException("请选择正确的维修类型"); } @@ -869,7 +757,7 @@ public class RepairServiceImpl implements RepairService { * @param loginUser 当前登录用户 * @param manageType 管理方式:0编码管理 1数量管理 */ - private void copeNumberManageInList(RepairDeviceVO bean, List partList, LoginUser loginUser, Integer manageType, Boolean isNeedSplit, Long newTaskId) { + private void copeNumberManageInList(RepairDeviceVO bean, List partList, LoginUser loginUser, Integer manageType) { if (CollectionUtil.isNotEmpty(partList)) { if (null == bean.getManageType()) { throw new ServiceException("请选择物资管理方式"); @@ -948,9 +836,9 @@ public class RepairServiceImpl implements RepairService { // 统计已维修数量 + 本次维修数量 BigDecimal repairNum = bean.getRepairedNum().add(bean.getRepairNum()) ; // 统计报废数量 + 维修合计数量 不能 大与> 总的待维修量 - /*if (repairNum.add(bean.getScrapNum()).compareTo(bean.getRepairNum())>0 ) { + if (repairNum.add(bean.getScrapNum()).compareTo(bean.getRepairNum())>0 ) { throw new ServiceException("维修数量大于维修总量"); - }*/ + } // 更新维修数量、维修人员不变 repairMapper.updateRepairedNumTwo(bean.getId(), repairNum, loginUser.getUserid()); @@ -998,10 +886,6 @@ public class RepairServiceImpl implements RepairService { repairApplyRecord.setScrapReason(partList.get(0).getScrapReason()); // 不选维修配件时, 只添加【维修记录表】 repairMapper.addRecord(repairApplyRecord); - if (isNeedSplit) { - repairApplyRecord.setTaskId(newTaskId); - repairMapper.addRecord(repairApplyRecord); - } } } else { // 配件为空,添加【维修记录表】 @@ -1015,10 +899,6 @@ public class RepairServiceImpl implements RepairService { repairApplyRecord.setScrapReason(partList.get(0).getScrapReason()); // 不选维修配件时, 只添加【维修记录表】 repairMapper.addRecord(repairApplyRecord); - if (isNeedSplit) { - repairApplyRecord.setTaskId(newTaskId); - repairMapper.addRecord(repairApplyRecord); - } } } @@ -1049,36 +929,22 @@ public class RepairServiceImpl implements RepairService { throw new ServiceException("任务" + task.getTaskId() + "还有未完成维修的数据,请先完成维修"); } } - // 根据taskId去查询维修任务详情,按照level进行重新排序,确保维修拆分顺利进行 - List list = repairMapper.getRepairTaskDetails(taskList); - // 根据查询的list集合,根据level进行从大到小级别排序 - list.sort(Comparator.comparing(RepairTask::getLevel).reversed()); + // 3.业务逻辑处理 - for (RepairTask task : list) { + for (RepairTask task : taskList) { // 查询维修任务的详情表 Long oldWxTaskId = task.getTaskId(); - List preDetailsList = null; List detailsList = repairApplyDetailsMapper.getRepairDetailsWhichNotSent(oldWxTaskId); BigDecimal thisRepairedNum = detailsList.stream().map(RepairTaskDetails::getRepairedNum).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal thisScrapNum = detailsList.stream().map(RepairTaskDetails::getScrapNum).reduce(BigDecimal.ZERO, BigDecimal::add); if (!CollectionUtils.isEmpty(detailsList) && 0 < (thisRepairedNum.add(thisScrapNum)).compareTo(BigDecimal.ZERO)) { - if (StringUtils.isNotBlank(detailsList.get(0).getLevel()) && Integer.parseInt(detailsList.get(0).getLevel()) > 1){ - preDetailsList = repairApplyDetailsMapper.getRepairDetails(oldWxTaskId); - if (!CollectionUtils.isEmpty(preDetailsList)) { - for (RepairTaskDetails repairTaskDetails : preDetailsList) { - if (repairTaskDetails.getParentId() != null && repairTaskDetails.getParentId() != 0) { - preDetailsList = getPreDetailsForTask(repairTaskDetails); - } - } - } - } task.setCreateBy(loginUser.getUserid()); Long agreementId = repairMapper.getAgreementId(task); // 新增tm_task表数据、修饰审核任务、状态是待审核 task.setTaskType(TmTaskTypeEnum.TM_TASK_REPAIR_AUDIT.getTaskTypeId()); task.setTaskStatus(RepairTaskStatusEnum.TASK_STATUS_TO_EXAM.getStatus()); int thisMonthMaxOrder = taskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_REPAIR_AUDIT.getTaskTypeId()); - // 生成维修审核单号 + // 生成维修单号 String code = genderWsTaskCode(thisMonthMaxOrder); task.setRepairCode(code); task.setMonthOrder(thisMonthMaxOrder + 1); @@ -1092,49 +958,16 @@ public class RepairServiceImpl implements RepairService { // 新增审计记录 for (RepairTaskDetails details : detailsList) { - /*RepairApplyDetails repairApplyDetails = createRepairDetailsCope(details); - repairApplyDetailsMapper.updateRepairApplyDetails(repairApplyDetails);*/ + RepairApplyDetails repairApplyDetails = createRepairDetailsCope(details); + repairApplyDetailsMapper.updateRepairApplyDetails(repairApplyDetails); details.setCreateBy(String.valueOf(loginUser.getUserid())); details.setTaskId(task.getTaskId()); - /*details.setRepairNum(details.getRepairNum()); + details.setRepairNum(details.getRepairNum()); details.setRepairedNum(details.getRepairedNum()); - details.setScrapNum(details.getScrapNum());*/ + details.setScrapNum(details.getScrapNum()); // 先根据id查询审核表中是否存在数据,存在则不用重复插入 - if (StringUtils.isNotBlank(details.getMaId())) { - List taskDetails = repairMapper.getRepairDetailsById(details); - if (CollectionUtils.isEmpty(taskDetails)) { - repairMapper.addAuditDetails(details); - } - } else { - List taskDetails = repairMapper.getRepairDetailsById(details); - if (!CollectionUtils.isEmpty(taskDetails) && taskDetails.size() > 0) { - for (RepairTaskDetails taskDetail : taskDetails) { - if (!CollectionUtils.isEmpty(preDetailsList) && preDetailsList.size() > 0) { - //获取到preDetailsList中的typeId和taskDetail相同的数据 - for (RepairTaskDetails preDetails : preDetailsList) { - if (preDetails.getTypeId().equals(taskDetail.getTypeId())) { - if (taskDetail.getRepairNum().compareTo(preDetails.getPreRepairNum()) < 0) { - details.setRepairNum(preDetails.getPreRepairNum().subtract(taskDetail.getRepairNum())); - details.setScrapNum(preDetails.getPreScrapNum().subtract(taskDetail.getScrapNum()).compareTo(BigDecimal.ZERO) > 0 ? preDetails.getPreScrapNum().subtract(taskDetail.getScrapNum()) : BigDecimal.ZERO); - details.setRepairedNum(preDetails.getPreRepairedNum().subtract(taskDetail.getRepairedNum()).compareTo(BigDecimal.ZERO) > 0 ? preDetails.getPreRepairedNum().subtract(taskDetail.getRepairedNum()) : BigDecimal.ZERO); - repairMapper.addAuditDetails(details); - } - } - } - } else { - if (taskDetail.getTypeId().equals(details.getTypeId())) { - if (taskDetail.getRepairNum().compareTo(details.getRepairNum()) < 0) { - details.setRepairNum(details.getRepairNum().subtract(taskDetail.getRepairNum())); - details.setScrapNum(details.getScrapNum().subtract(taskDetail.getScrapNum()).compareTo(BigDecimal.ZERO) > 0 ? details.getScrapNum().subtract(taskDetail.getScrapNum()) : BigDecimal.ZERO); - details.setRepairedNum(details.getRepairedNum().subtract(taskDetail.getRepairedNum()).compareTo(BigDecimal.ZERO) > 0 ? details.getRepairedNum().subtract(taskDetail.getRepairedNum()) : BigDecimal.ZERO); - repairMapper.addAuditDetails(details); - } - } - } - } - } else { - repairMapper.addAuditDetails(details); - } + if (CollectionUtils.isEmpty(repairMapper.getAuditDetailsById(details))) { + repairMapper.addAuditDetails(details); } } } diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/domain/TmTask.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/domain/TmTask.java index 1fe98ef2..f503504d 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/domain/TmTask.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/task/domain/TmTask.java @@ -35,6 +35,9 @@ public class TmTask extends BaseEntity { @ApiModelProperty(value = "任务类型(定义数据字典)") private Integer taskType; + @ApiModelProperty(value = "领料分任务类型(定义数据字典)") + private Integer splitType; + /** 任务状态(定义数据字典) */ @Excel(name = "任务状态(定义数据字典)") @ApiModelProperty(value = "任务状态(定义数据字典)")