审核优化

This commit is contained in:
mashuai 2025-12-02 18:16:53 +08:00
parent 958a675a89
commit 5edcb90a8f
11 changed files with 217 additions and 14 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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<ApprovalInstance> 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<ApprovalRecord> 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("修改失败");

View File

@ -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("获取装备周转率数据失败");
}

View File

@ -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<ApprovalInstance> 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<ApprovalRecord> 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("修改失败");

View File

@ -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);
}

View File

@ -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<ToBeRepair> 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<ApprovalInstance> 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<ApprovalRecord> 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<ToBeRepair> getRepairList(ToBeRepair bean) {
try {
List<ToBeRepair> list = mapper.getRepairList(bean);
for (ToBeRepair toBeRepair : list) {
/*for (ToBeRepair toBeRepair : list) {
List<ToBeRepair> 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);

View File

@ -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'
<if test="taskStatus != null and taskStatus != ''">
and cd.review_status = #{taskStatus}
</if>

View File

@ -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'
<if test="taskStatus != null and taskStatus != ''">
and cd.review_status = #{taskStatus}
</if>
@ -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 id="addChangeInfoNew" keyProperty="id" useGeneratedKeys="true">
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})
</insert>
<insert id="addDetails">

View File

@ -120,7 +120,22 @@
update cs_device_change_details
set del_flag = '1'
where change_id = #{changeId}
and review_status = '2'
</update>
<update id="updateRepairTask">
update cs_device_change
set
review_status = #{status},
update_time = NOW()
where id = #{changeId}
</update>
<update id="auditInfoById">
update cs_device_change
set review_status = #{auditStatus},
review_by = #{createUser},
review_time=NOW()
where id = #{changeId}
</update>
<select id="selectToBeRepairList" resultType="com.bonus.material.repair.domain.ToBeRepair">
@ -222,14 +237,19 @@
ELSE 0
END) as toolNum,
cdc.create_user as createUser,
cdc.create_time as createTime
cdc.create_time as createTime,
cdc.review_status as status
FROM cs_device_change cdc
LEFT JOIN cs_device_change_details cdcd ON cdcd.change_id = cdc.id
WHERE cdc.type = '4'
and cdc.del_flag='0'
and cdc.del_flag = '0'
and cdcd.del_flag = '0'
<if test="startTime!=null and startTime!='' and endTime!=null and endTime!='' ">
AND cdc.create_time BETWEEN CONCAT(#{startTime}, ' 00:00:00') AND CONCAT(#{endTime}, ' 23:59:59')
</if>
<if test="status != null and status!=''">
AND cdc.review_status = #{status}
</if>
GROUP BY cdc.id
ORDER BY cdc.create_time DESC
</select>
@ -374,4 +394,15 @@
`code`=#{code}
and type_id=#{typeId}
</select>
<select id="selectInfoId" resultType="com.bonus.material.repair.domain.ToBeRepair">
SELECT
id as id,
change_id as changeId
FROM
cs_device_change_details
WHERE
id = #{id}
LIMIT 1
</select>
</mapper>