From 5edcb90a8fa956132e70dcf8662daf71cf181675 Mon Sep 17 00:00:00 2001 From: mashuai Date: Tue, 2 Dec 2025 18:16:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EquipmentOutboundSelfCallback.java | 2 +- .../impl/EquipmentRepairCallback.java | 2 +- .../impl/EquipmentReturnCallback.java | 2 +- .../service/impl/BackChangeServiceImpl.java | 43 ++++++++++++ .../controller/CityScreenController.java | 2 +- .../service/DevChangeServiceImpl.java | 44 ++++++++++++ .../material/repair/mapper/RepairMapper.java | 21 ++++++ .../service/impl/RepairServiceImpl.java | 67 +++++++++++++++++-- .../mapper/material/back/BackChangeMapper.xml | 1 + .../material/devchange/DevChangeMapper.xml | 10 ++- .../mapper/material/repair/RepairMapper.xml | 37 +++++++++- 11 files changed, 217 insertions(+), 14 deletions(-) diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/approval/strategy/impl/EquipmentOutboundSelfCallback.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/approval/strategy/impl/EquipmentOutboundSelfCallback.java index 3194521..dda2010 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/approval/strategy/impl/EquipmentOutboundSelfCallback.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/approval/strategy/impl/EquipmentOutboundSelfCallback.java @@ -62,7 +62,7 @@ public class EquipmentOutboundSelfCallback implements IApprovalCallback { // 4. 构造审批参数 CsDeviceInfo approveParam = new CsDeviceInfo(); approveParam.setId(changeId); - approveParam.setTaskStatus("1"); // 1-通过 + approveParam.setTaskStatus("2"); // 2-通过 // 5. 调用原有的审批业务逻辑 AjaxResult result = devChangeService.approve(approveParam); diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/approval/strategy/impl/EquipmentRepairCallback.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/approval/strategy/impl/EquipmentRepairCallback.java index 62bf6ca..fb0986d 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/approval/strategy/impl/EquipmentRepairCallback.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/approval/strategy/impl/EquipmentRepairCallback.java @@ -63,7 +63,7 @@ public class EquipmentRepairCallback implements IApprovalCallback { // 4. 将所有明细的审批状态设置为"通过" for (ToBeRepair detail : detailsList) { - detail.setAuditStatus("1"); // 1-通过 + detail.setAuditStatus("2"); // 2-通过 } bean.setToBeRepairList(detailsList); diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/approval/strategy/impl/EquipmentReturnCallback.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/approval/strategy/impl/EquipmentReturnCallback.java index 5a2b52f..87ca9b7 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/approval/strategy/impl/EquipmentReturnCallback.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/approval/strategy/impl/EquipmentReturnCallback.java @@ -67,7 +67,7 @@ public class EquipmentReturnCallback implements IApprovalCallback { BackCsDeviceDetails approveParam = new BackCsDeviceDetails(); approveParam.setChangeId(changeId); approveParam.setId(changeId); - approveParam.setTaskStatus("1"); // 1-通过 + approveParam.setTaskStatus("2"); // 2-通过 // 5. 调用原有的审批业务逻辑 AjaxResult result = backChangeService.approve(approveParam); diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/back/service/impl/BackChangeServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/back/service/impl/BackChangeServiceImpl.java index 17a1d12..1b1b5b3 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/back/service/impl/BackChangeServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/back/service/impl/BackChangeServiceImpl.java @@ -2,10 +2,15 @@ package com.bonus.material.back.service.impl; import com.alibaba.cloud.commons.lang.StringUtils; import com.alibaba.nacos.common.utils.CollectionUtils; +import com.bonus.common.biz.enums.ApprovalStatusEnum; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.security.utils.SecurityUtils; import com.bonus.material.approval.annotation.ApprovalRequired; +import com.bonus.material.approval.domain.ApprovalInstance; +import com.bonus.material.approval.domain.ApprovalRecord; +import com.bonus.material.approval.mapper.ApprovalInstanceMapper; +import com.bonus.material.approval.mapper.ApprovalRecordMapper; import com.bonus.material.back.domain.BackCsDeviceDetails; import com.bonus.material.back.domain.BackCsDeviceInfo; import com.bonus.material.back.domain.BackCsDeviceVo; @@ -34,6 +39,12 @@ public class BackChangeServiceImpl implements BackChangeService { @Resource private BackChangeMapper mapper; + @Resource + private ApprovalInstanceMapper instanceMapper; + + @Resource + private ApprovalRecordMapper recordMapper; + /** * 获取添加设备详情 * @@ -210,6 +221,38 @@ public class BackChangeServiceImpl implements BackChangeService { if (num < 1) { throw new RuntimeException("添加设备详情失败"); } + // 根据id,针对编辑进行审批流重置修改 + // 根据主id查询目前审批流是否存在驳回数据,驳回需重置审批 + ApprovalInstance approvalInstance = new ApprovalInstance(); + approvalInstance.setBusinessId(csDeviceVo.getDevInfo().getId().toString()); + List approvalInstances = instanceMapper.selectInstanceList(approvalInstance); + if (CollectionUtils.isNotEmpty(approvalInstances)) { + ApprovalInstance instance = approvalInstances.get(0); + if ("3".equals(instance.getStatus())) { + // 如果当前节点为第一节点,则状态修改为待审批 + if (instance.getCurrentNodeOrder() == 1) { + num = instanceMapper.updateInstanceStatus(instance.getId(), ApprovalStatusEnum.PENDING.getCode()); + } else { + // 审批中 + num = instanceMapper.updateInstanceStatus(instance.getId(), ApprovalStatusEnum.IN_PROGRESS.getCode()); + } + if (num < 1) { + throw new RuntimeException("修改审批实例状态失败"); + } + // 根据当前节点及id去记录表查询是否存在驳回记录,存在即删除 + List approvalRecords = recordMapper.selectRecordListByNode(instance.getId(), instance.getCurrentNodeId()); + if (CollectionUtils.isNotEmpty(approvalRecords)) { + ApprovalRecord approvalRecord = approvalRecords.get(0); + // 如果是驳回状态,则删除 + if ("2".equals(approvalRecord.getApproveResult())) { + num = recordMapper.deleteRecordById(approvalRecord.getId()); + if (num < 1) { + throw new RuntimeException("删除审批记录失败"); + } + } + } + } + } } catch (Exception e) { log.error(e.getMessage()); throw new RuntimeException("修改失败"); diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/cityScreen/controller/CityScreenController.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/cityScreen/controller/CityScreenController.java index dd8d928..8216d5d 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/cityScreen/controller/CityScreenController.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/cityScreen/controller/CityScreenController.java @@ -100,7 +100,7 @@ public class CityScreenController extends BaseController { dateVO.setList(list); try { int total = cityScreenMapper.countEquipmentTurnoverRate(dto); - dateVO.setTotal(total); + dateVO.setTotal(list.size()); } catch (Exception e) { throw new ServiceException("获取装备周转率数据失败"); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeServiceImpl.java index d32df27..0f12c99 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeServiceImpl.java @@ -3,10 +3,15 @@ package com.bonus.material.devchange.service; import com.alibaba.cloud.commons.lang.StringUtils; import com.alibaba.fastjson.JSON; import com.alibaba.nacos.common.utils.CollectionUtils; +import com.bonus.common.biz.enums.ApprovalStatusEnum; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.security.utils.SecurityUtils; import com.bonus.material.approval.annotation.ApprovalRequired; +import com.bonus.material.approval.domain.ApprovalInstance; +import com.bonus.material.approval.domain.ApprovalRecord; +import com.bonus.material.approval.mapper.ApprovalInstanceMapper; +import com.bonus.material.approval.mapper.ApprovalRecordMapper; import com.bonus.material.common.constants.TypeConstants; import com.bonus.material.common.enums.TypeEnums; import com.bonus.material.devchange.domain.*; @@ -17,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; @@ -27,6 +33,12 @@ public class DevChangeServiceImpl implements DevChangeService { @Autowired private DevChangeMapper mapper; + @Resource + private ApprovalInstanceMapper instanceMapper; + + @Resource + private ApprovalRecordMapper recordMapper; + /** * 查询设备 最大的数据 * @@ -359,6 +371,38 @@ public class DevChangeServiceImpl implements DevChangeService { if (num < 1) { throw new RuntimeException("添加设备详情失败"); } + // 根据id,针对编辑进行审批流重置修改 + // 根据主id查询目前审批流是否存在驳回数据,驳回需重置审批 + ApprovalInstance approvalInstance = new ApprovalInstance(); + approvalInstance.setBusinessId(csDeviceVo.getDevInfo().getId().toString()); + List approvalInstances = instanceMapper.selectInstanceList(approvalInstance); + if (CollectionUtils.isNotEmpty(approvalInstances)) { + ApprovalInstance instance = approvalInstances.get(0); + if ("3".equals(instance.getStatus())) { + // 如果当前节点为第一节点,则状态修改为待审批 + if (instance.getCurrentNodeOrder() == 1) { + num = instanceMapper.updateInstanceStatus(instance.getId(), ApprovalStatusEnum.PENDING.getCode()); + } else { + // 审批中 + num = instanceMapper.updateInstanceStatus(instance.getId(), ApprovalStatusEnum.IN_PROGRESS.getCode()); + } + if (num < 1) { + throw new RuntimeException("修改审批实例状态失败"); + } + // 根据当前节点及id去记录表查询是否存在驳回记录,存在即删除 + List approvalRecords = recordMapper.selectRecordListByNode(instance.getId(), instance.getCurrentNodeId()); + if (CollectionUtils.isNotEmpty(approvalRecords)) { + ApprovalRecord approvalRecord = approvalRecords.get(0); + // 如果是驳回状态,则删除 + if ("2".equals(approvalRecord.getApproveResult())) { + num = recordMapper.deleteRecordById(approvalRecord.getId()); + if (num < 1) { + throw new RuntimeException("删除审批记录失败"); + } + } + } + } + } } catch (Exception e) { log.error(e.getMessage()); throw new RuntimeException("修改失败"); diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/mapper/RepairMapper.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/mapper/RepairMapper.java index 820aa64..b99be93 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/mapper/RepairMapper.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/mapper/RepairMapper.java @@ -121,4 +121,25 @@ public interface RepairMapper { * @return */ ToBeRepair selectMaDevInfoByTypeIdAndCode(ToBeRepair toBeRepair); + + /** + * 修改设备信息 + * @param bean + * @return + */ + int updateRepairTask(ToBeRepair bean); + + /** + * 获取设备主表信息 + * @param toBeRepair + * @return + */ + ToBeRepair selectInfoId(ToBeRepair toBeRepair); + + /** + * 审核主表 + * @param info + * @return + */ + int auditInfoById(ToBeRepair info); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java index 0fc50a2..8edf7f2 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/repair/service/impl/RepairServiceImpl.java @@ -1,11 +1,17 @@ package com.bonus.material.repair.service.impl; +import com.alibaba.nacos.common.utils.CollectionUtils; import com.bonus.common.biz.domain.BmFileInfo; +import com.bonus.common.biz.enums.ApprovalStatusEnum; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.security.utils.SecurityUtils; import com.bonus.material.approval.annotation.ApprovalRequired; +import com.bonus.material.approval.domain.ApprovalInstance; +import com.bonus.material.approval.domain.ApprovalRecord; +import com.bonus.material.approval.mapper.ApprovalInstanceMapper; +import com.bonus.material.approval.mapper.ApprovalRecordMapper; import com.bonus.material.common.constants.TypeConstants; import com.bonus.material.common.enums.TypeEnums; import com.bonus.material.devchange.domain.CsDeviceInfo; @@ -32,6 +38,12 @@ public class RepairServiceImpl implements RepairService { @Resource private RepairMapper mapper; + @Resource + private ApprovalInstanceMapper instanceMapper; + + @Resource + private ApprovalRecordMapper recordMapper; + @Override public List getToBeRepairList(ToBeRepair bean) { @@ -87,6 +99,12 @@ public class RepairServiceImpl implements RepairService { if (bean.getToBeRepairList().size() <= 0) { return AjaxResult.error("请添加维修数据"); } + //修改主表任务为待审核 + bean.setStatus("0"); + int num = mapper.updateRepairTask(bean); + if (num < 1) { + throw new Exception("修改设备任务失败"); + } String username = SecurityUtils.getLoginUser().getSysUser().getNickName(); //先删除详情中被驳回的数据 int re1 = mapper.deleteChangeDetailsByChangeId(bean); @@ -116,6 +134,38 @@ public class RepairServiceImpl implements RepairService { throw new Exception("添加设备详情失败"); } } + // 根据id,针对编辑进行审批流重置修改 + // 根据主id查询目前审批流是否存在驳回数据,驳回需重置审批 + ApprovalInstance approvalInstance = new ApprovalInstance(); + approvalInstance.setBusinessId(bean.getChangeId().toString()); + List approvalInstances = instanceMapper.selectInstanceList(approvalInstance); + if (CollectionUtils.isNotEmpty(approvalInstances)) { + ApprovalInstance instance = approvalInstances.get(0); + if ("3".equals(instance.getStatus())) { + // 如果当前节点为第一节点,则状态修改为待审批 + if (instance.getCurrentNodeOrder() == 1) { + num = instanceMapper.updateInstanceStatus(instance.getId(), ApprovalStatusEnum.PENDING.getCode()); + } else { + // 审批中 + num = instanceMapper.updateInstanceStatus(instance.getId(), ApprovalStatusEnum.IN_PROGRESS.getCode()); + } + if (num < 1) { + throw new RuntimeException("修改审批实例状态失败"); + } + // 根据当前节点及id去记录表查询是否存在驳回记录,存在即删除 + List approvalRecords = recordMapper.selectRecordListByNode(instance.getId(), instance.getCurrentNodeId()); + if (CollectionUtils.isNotEmpty(approvalRecords)) { + ApprovalRecord approvalRecord = approvalRecords.get(0); + // 如果是驳回状态,则删除 + if ("2".equals(approvalRecord.getApproveResult())) { + num = recordMapper.deleteRecordById(approvalRecord.getId()); + if (num < 1) { + throw new RuntimeException("删除审批记录失败"); + } + } + } + } + } return AjaxResult.success("修改成功"); } catch (Exception e) { @@ -128,7 +178,7 @@ public class RepairServiceImpl implements RepairService { public List getRepairList(ToBeRepair bean) { try { List list = mapper.getRepairList(bean); - for (ToBeRepair toBeRepair : list) { + /*for (ToBeRepair toBeRepair : list) { List detailsList = mapper.getDetailsList(toBeRepair); if (detailsList != null && !detailsList.isEmpty()) { boolean has0 = false; @@ -193,7 +243,7 @@ public class RepairServiceImpl implements RepairService { list = list.stream() .filter(item -> statusFilter.equals(item.getStatus())) .collect(Collectors.toList()); - } + }*/ return list; } catch (Exception e) { @@ -286,10 +336,19 @@ public class RepairServiceImpl implements RepairService { toBeRepair.setCreateUser(username); int res = mapper.auditData(toBeRepair); if (res <= 0) { - throw new Exception("审核数据失败"); + throw new Exception("审核详情表数据失败"); + } + // 根据id查询changeId + ToBeRepair info = mapper.selectInfoId(toBeRepair); + info.setAuditStatus(toBeRepair.getAuditStatus()); + info.setCreateBy(userId.toString()); + // 审核主表 + res = mapper.auditInfoById(info); + if (res <= 0) { + throw new Exception("审核主表数据失败"); } //如果是审核通过,需要增加周期表数据以及更新台账信息 - if ("1".equals(toBeRepair.getAuditStatus())){ + if ("2".equals(toBeRepair.getAuditStatus())){ if ("工具".equals(toBeRepair.getType())){ //根据typeId和code查询台账信息 ToBeRepair bean1 = mapper.selectByTypeIdAndCode(toBeRepair); diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/back/BackChangeMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/back/BackChangeMapper.xml index 7ece2a0..611790b 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/back/BackChangeMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/back/BackChangeMapper.xml @@ -418,6 +418,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" LEFT JOIN cs_device_change_details cdc ON cd.id = cdc.change_id WHERE cdc.del_flag = '0' and cd.type = '1' + and cd.del_flag = '0' and cd.review_status = #{taskStatus} diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/devchange/DevChangeMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/devchange/DevChangeMapper.xml index 57cc05c..01430ab 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/devchange/DevChangeMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/devchange/DevChangeMapper.xml @@ -416,6 +416,8 @@ pro_county as proCounty, use_time as useTime, code as code, + use_start_time as useStartTime, + use_end_time as useEndTime, CASE -- 已完成:所有子表记录 is_finished = 1 WHEN NOT EXISTS ( @@ -481,6 +483,7 @@ LEFT JOIN cs_device_change_details cdc ON cd.id = cdc.change_id WHERE cdc.del_flag = '0' and cd.type = '2' + and cd.del_flag = '0' and cd.review_status = #{taskStatus} @@ -612,7 +615,7 @@ LEFT JOIN cs_device_change_details cdc ON cd.id = cdc.change_id AND cdc.del_flag = '0' - WHERE cd.review_status = '1' + WHERE cd.review_status = '2' AND cd.type = '2' AND cd.lease_type = '0' GROUP BY @@ -973,10 +976,11 @@ insert into cs_device_change(change_status, type, lease_type, pro_code, pro_name, pro_type, voltage_level, use_unit, pro_province, pro_city, - pro_county, create_time, create_user, del_flag, change_unit, code, use_time,review_status) + pro_county, create_time, create_user, del_flag, change_unit, code, use_time,review_status, + use_start_time, use_end_time) values ( #{changeStatus}, #{type}, #{leaseType}, #{proCode}, #{proName}, #{proType}, #{voltageLevel}, #{useUnit}, #{proProvince}, #{proCity}, #{proCounty}, - now(), #{createBy}, 0, #{changeUnit}, #{code}, #{useTime}, #{taskStatus}) + now(), #{createBy}, 0, #{changeUnit}, #{code}, #{useTime}, #{taskStatus}, #{useStartTime}, #{useEndTime}) diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/repair/RepairMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/repair/RepairMapper.xml index 7650d2f..bc7935a 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/repair/RepairMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/repair/RepairMapper.xml @@ -120,7 +120,22 @@ update cs_device_change_details set del_flag = '1' where change_id = #{changeId} - and review_status = '2' + + + + update cs_device_change + set + review_status = #{status}, + update_time = NOW() + where id = #{changeId} + + + + update cs_device_change + set review_status = #{auditStatus}, + review_by = #{createUser}, + review_time=NOW() + where id = #{changeId} @@ -374,4 +394,15 @@ `code`=#{code} and type_id=#{typeId} + + \ No newline at end of file