From 036ce253b375c2614b1c7f35bcb2eedec96d4dea Mon Sep 17 00:00:00 2001 From: "liang.chao" <1360241448@qq.com> Date: Mon, 22 Jul 2024 20:49:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=B4=E4=BF=AE=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bonus/sgzb/base/domain/RepairTask.java | 6 + .../sgzb/base/domain/RepairTaskDetails.java | 2 + .../bonus/sgzb/base/mapper/RepairMapper.java | 9 +- .../base/service/impl/RepairServiceImpl.java | 115 +++++++++++------- .../resources/mapper/base/RepairMapper.xml | 47 ++++++- 5 files changed, 128 insertions(+), 51 deletions(-) diff --git a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/RepairTask.java b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/RepairTask.java index 543043c7..f9485ada 100644 --- a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/RepairTask.java +++ b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/RepairTask.java @@ -153,6 +153,12 @@ public class RepairTask { /** 驳回原因 */ private String remark; + /** 待修状态为已完成的typeId */ + private String typeId; + /** 待修状态为已完成的typeId */ + private String typeIds; + /** 待修状态为已完成的maId */ + private String maId; /** 0:未提交 1:已提交 */ private Integer commit; } diff --git a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/RepairTaskDetails.java b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/RepairTaskDetails.java index 82ae42e6..3082b636 100644 --- a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/RepairTaskDetails.java +++ b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/domain/RepairTaskDetails.java @@ -56,6 +56,8 @@ public class RepairTaskDetails { */ @ApiModelProperty(value = "维修报废数量") private int scrapNum; + @ApiModelProperty(value = "是否提交(0:未提交 1已提交)") + private Integer commit; /** * 待修状态 */ diff --git a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/mapper/RepairMapper.java b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/mapper/RepairMapper.java index f5e0c443..f634fc5a 100644 --- a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/mapper/RepairMapper.java +++ b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/mapper/RepairMapper.java @@ -1,13 +1,16 @@ package com.bonus.sgzb.base.mapper; +import com.bonus.sgzb.app.domain.TmTask; import com.bonus.sgzb.base.domain.RepairApplyRecord; import com.bonus.sgzb.base.domain.RepairPartDetails; import com.bonus.sgzb.base.domain.RepairTask; import com.bonus.sgzb.base.domain.RepairTaskDetails; import com.bonus.sgzb.base.domain.vo.DictVo; import com.bonus.sgzb.system.api.domain.SysUser; +import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.SelectKey; import java.math.BigDecimal; import java.util.ArrayList; @@ -130,7 +133,7 @@ public interface RepairMapper { * @param task * @return */ - int getUnFinish(RepairTask task); + int getUnFinish(RepairTaskDetails task); /** * 根据value获取字典数据 @@ -163,4 +166,8 @@ public interface RepairMapper { int addRepairCost(@Param("bean") RepairApplyRecord bean, @Param("costs") BigDecimal costs,@Param("partType") String partType); List getRepairTaskListByOne(RepairTask bean); + + List getRepairMaTypeId(RepairTask repairTask); + + int updateCommit(RepairTask task); } diff --git a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/impl/RepairServiceImpl.java b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/impl/RepairServiceImpl.java index 12e82afd..55a37bdc 100644 --- a/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/impl/RepairServiceImpl.java +++ b/sgzb-modules/sgzb-base/src/main/java/com/bonus/sgzb/base/service/impl/RepairServiceImpl.java @@ -1,5 +1,6 @@ package com.bonus.sgzb.base.service.impl; +import com.bonus.sgzb.app.domain.TmTask; import com.bonus.sgzb.base.domain.RepairApplyRecord; import com.bonus.sgzb.base.domain.RepairPartDetails; import com.bonus.sgzb.base.domain.RepairTask; @@ -22,6 +23,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * @author c liu @@ -37,23 +39,23 @@ public class RepairServiceImpl implements RepairService { public List getRepairTaskList(RepairTask bean) { List repairTaskList = new ArrayList<>(); //判断是查询预报废驳回的维修数据还是退料过来的维修数据 - if(bean.getBackSource().equals(BigDecimal.ROUND_DOWN)){ + if (bean.getBackSource().equals(BigDecimal.ROUND_DOWN)) { repairTaskList = mapper.getRepairTaskListByOne(bean); - }else { + } else { repairTaskList = mapper.getRepairTaskList(bean); } - if (SecurityUtils.getLoginUser().getRoles().contains("admin")){ + if (SecurityUtils.getLoginUser().getRoles().contains("admin")) { return repairTaskList; } List repairTasks = new ArrayList<>(); Long deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId(); for (RepairTask repairTask : repairTaskList) { - if (Objects.equals(deptId, 101L) && repairTask.getCompanyIds().contains("101")){ + if (Objects.equals(deptId, 101L) && repairTask.getCompanyIds().contains("101")) { repairTasks.add(repairTask); } - if (Objects.equals(deptId, 102L) && repairTask.getCompanyIds().contains("102")){ + if (Objects.equals(deptId, 102L) && repairTask.getCompanyIds().contains("102")) { repairTasks.add(repairTask); } } @@ -67,15 +69,13 @@ public class RepairServiceImpl implements RepairService { @Override public List getRepairMaTypeList(RepairTaskDetails bean) { - Long companyId = SecurityUtils.getLoginUser().getSysUser().getCompanyId(); - bean.setCompanyId(companyId); List repairMaTypeList = mapper.getRepairMaTypeList(bean); return repairMaTypeList; } @Override @Transactional(rollbackFor = Exception.class) - public AjaxResult submitRepairApply( RepairApplyRecord bean) { + public AjaxResult submitRepairApply(RepairApplyRecord bean) { RepairTaskDetails details = mapper.getById(bean.getId()); LoginUser loginUser = SecurityUtils.getLoginUser(); bean.setCreateBy(loginUser.getUserid()); @@ -86,18 +86,18 @@ public class RepairServiceImpl implements RepairService { String fcType = "2"; String sfPart = "1"; String bsfPart = "0"; - if (partList != null && partList.size()>0){ + if (partList != null && partList.size() > 0) { bean.setRepairNum(partList.get(0).getRepairNum()); bean.setRepairer(partList.get(0).getRepairer()); } switch (bean.getRepairType()) { - case "1":{ + case "1": { int repairNum = details.getRepairedNum() + bean.getRepairNum(); int num = repairNum + details.getScrapNum(); if (num > details.getRepairNum()) { throw new ServiceException("维修数量大于维修总量"); } - mapper.updateRepairedNum(bean.getId(), repairNum,bean.getRepairer(),loginUser.getUserid()); + mapper.updateRepairedNum(bean.getId(), repairNum, bean.getRepairer(), loginUser.getUserid()); break; } case "2": { @@ -106,7 +106,7 @@ public class RepairServiceImpl implements RepairService { if (num > details.getRepairNum()) { throw new ServiceException("维修数量大于维修总量"); } - mapper.updateRepairedNumTwo(bean.getId(), repairNum,loginUser.getUserid()); + mapper.updateRepairedNumTwo(bean.getId(), repairNum, loginUser.getUserid()); break; } case "3": { @@ -115,17 +115,17 @@ public class RepairServiceImpl implements RepairService { if (num > details.getRepairNum()) { throw new ServiceException("维修数量大于维修总量"); } - mapper.updateScrapNum(bean.getId(), scrapNum,loginUser.getUserid()); + mapper.updateScrapNum(bean.getId(), scrapNum, loginUser.getUserid()); break; } default: break; } - if (partList != null && partList.size()>0){ - if (nbType.equals(bean.getRepairType())){ - for (RepairPartDetails partDetails : partList){ - if(partDetails.getPartId() != null){ - if (partDetails.getPartCost() == null || partDetails.getPartCost().isEmpty()){ + if (partList != null && partList.size() > 0) { + if (nbType.equals(bean.getRepairType())) { + for (RepairPartDetails partDetails : partList) { + if (partDetails.getPartId() != null) { + if (partDetails.getPartCost() == null || partDetails.getPartCost().isEmpty()) { partDetails.setPartCost("0"); } partDetails.setTaskId(bean.getTaskId()); @@ -137,44 +137,44 @@ public class RepairServiceImpl implements RepairService { } } } - if (fcType.equals(bean.getRepairType())){ + if (fcType.equals(bean.getRepairType())) { bean.setPartName(partList.get(0).getPartName()); bean.setPartType(partList.get(0).getPartType()); bean.setRepairContent(partList.get(0).getRepairContent()); - if (partList.get(0).getSupplierId() == null){ + if (partList.get(0).getSupplierId() == null) { throw new ServiceException("请选择返厂厂家"); - }else { + } else { bean.setSupplierId(partList.get(0).getSupplierId()); } - if (bean.getPartPrice() == null || bean.getPartPrice().isEmpty()){ + if (bean.getPartPrice() == null || bean.getPartPrice().isEmpty()) { bean.setPartPrice("0"); - }else { + } else { bean.setPartPrice(partList.get(0).getPartPrice()); } bean.setPartNum(partList.get(0).getPartNum()); } - for (RepairPartDetails partDetails : partList){ - if (sfPart.equals(partDetails.getPartType())){ - if (StringUtils.isEmpty(partDetails.getPartCost())){ + for (RepairPartDetails partDetails : partList) { + if (sfPart.equals(partDetails.getPartType())) { + if (StringUtils.isEmpty(partDetails.getPartCost())) { partDetails.setPartCost("0"); } BigDecimal partCost = new BigDecimal(partDetails.getPartCost()); sfCosts = sfCosts.add(partCost); } else if (bsfPart.equals(partDetails.getPartType())) { - if (StringUtils.isEmpty(partDetails.getPartCost())){ + if (StringUtils.isEmpty(partDetails.getPartCost())) { partDetails.setPartCost("0"); } BigDecimal partCost = new BigDecimal(partDetails.getPartCost()); bsfCosts = bsfCosts.add(partCost); - } else{ + } else { throw new ServiceException("请选择配件收费类型"); } } - if (!"0".equals(sfCosts.toString())){ - mapper.addRepairCost(bean,sfCosts,sfPart); + if (!"0".equals(sfCosts.toString())) { + mapper.addRepairCost(bean, sfCosts, sfPart); } - if (!"0".equals(bsfCosts.toString())){ - mapper.addRepairCost(bean,bsfCosts,bsfPart); + if (!"0".equals(bsfCosts.toString())) { + mapper.addRepairCost(bean, bsfCosts, bsfPart); } } mapper.addRecord(bean); @@ -185,13 +185,13 @@ public class RepairServiceImpl implements RepairService { @Transactional(rollbackFor = Exception.class) public AjaxResult fastRepairApply(List list) { LoginUser loginUser = SecurityUtils.getLoginUser(); - for (RepairTaskDetails bean : list){ + for (RepairTaskDetails bean : list) { int repairedNum = bean.getRepairNum() - bean.getRepairedNum() - bean.getScrapNum(); - if (repairedNum <= 0){ + if (repairedNum <= 0) { throw new ServiceException("选中的数据中包含待维修数量为0的机具,请重新选择"); } } - for (RepairTaskDetails bean : list){ + for (RepairTaskDetails bean : list) { int repairedNum = bean.getRepairNum() - bean.getRepairedNum() - bean.getScrapNum(); RepairApplyRecord partDetails = new RepairApplyRecord(); partDetails.setTaskId(bean.getTaskId()); @@ -203,7 +203,7 @@ public class RepairServiceImpl implements RepairService { partDetails.setCompanyId(bean.getCompanyId()); mapper.addRecord(partDetails); int i = repairedNum + bean.getRepairedNum(); - mapper.updateRepairedNumTwo(bean.getId(),i,loginUser.getUserid()); + mapper.updateRepairedNumTwo(bean.getId(), i, loginUser.getUserid()); } return AjaxResult.success(); } @@ -211,20 +211,43 @@ public class RepairServiceImpl implements RepairService { @Override @Transactional(rollbackFor = Exception.class) public AjaxResult endRepairTask(List taskList) { + int num = 0; LoginUser loginUser = SecurityUtils.getLoginUser(); - for (RepairTask task : taskList){ - int i = mapper.getUnFinish(task); - if (i > 0){ + for (RepairTask task : taskList) { + task.setCreateBy(loginUser.getUserid()); + List detailsList = new ArrayList<>(); + List repairMaTypeId = mapper.getRepairMaTypeId(task); + // 判断是否全部维修完成 + boolean b = repairMaTypeId.stream().allMatch(t -> "1".equals(t.getStatus())); + if (b) { + // 修改状态为 维修完成 + mapper.updateTaskStatus(taskList, loginUser.getUserid()); + } + for (RepairTaskDetails repairTaskDetails : repairMaTypeId) { + task.setTypeId(repairTaskDetails.getTypeId()); + task.setMaId(repairTaskDetails.getMaId()); + List list = mapper.getDetailsListByTaskId(task); + // 已经提交过的 再次提交不会再生成一遍 + if (list.size() > 0) { + mapper.updateCommit(task); + } + detailsList.addAll(list); + } + List collect = repairMaTypeId.stream().filter(t -> t.getCommit() == 0).collect(Collectors.toList()); + for (RepairTaskDetails taskDetails : collect) { + taskDetails.setTaskId(task.getTaskId()); + int i = mapper.getUnFinish(taskDetails); + if (i > 0) { + num++; + } + } + if (num == 0) { throw new ServiceException("选中的数据中包含维修未完成的,请完成维修再进行提交审核"); } - } - int i = mapper.updateTaskStatus(taskList,loginUser.getUserid()); - for (RepairTask task : taskList){ - task.setCreateBy(loginUser.getUserid()); + Long agreementId = mapper.getAgreementId(task); - List detailsList = mapper.getDetailsListByTaskId(task); mapper.addTask(task); - for (RepairTaskDetails details : detailsList){ + for (RepairTaskDetails details : detailsList) { details.setCreateBy(loginUser.getUserid()); details.setTaskId(task.getTaskId()); mapper.addAuditDetails(details); @@ -244,7 +267,7 @@ public class RepairServiceImpl implements RepairService { @Override public int completeRepair(ArrayList ids) { LoginUser loginUser = SecurityUtils.getLoginUser(); - return mapper.completeRepair(ids,loginUser.getUserid()); + return mapper.completeRepair(ids, loginUser.getUserid()); } @Override diff --git a/sgzb-modules/sgzb-base/src/main/resources/mapper/base/RepairMapper.xml b/sgzb-modules/sgzb-base/src/main/resources/mapper/base/RepairMapper.xml index 0e22ced5..493cc882 100644 --- a/sgzb-modules/sgzb-base/src/main/resources/mapper/base/RepairMapper.xml +++ b/sgzb-modules/sgzb-base/src/main/resources/mapper/base/RepairMapper.xml @@ -68,6 +68,16 @@ update_time = now() where id = #{id} + + update repair_apply_details set commit = 1 + where task_id = #{taskId} + + and type_id = #{typeId} + + + and ma_id = #{maId} + + select count(*) from repair_apply_details - where task_id = #{taskId} and status = '0' + where task_id = #{taskId} + + and type_id = #{typeId} + + + and ma_id = #{maId} + + and status = '1' +