审核优化

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. 构造审批参数 // 4. 构造审批参数
CsDeviceInfo approveParam = new CsDeviceInfo(); CsDeviceInfo approveParam = new CsDeviceInfo();
approveParam.setId(changeId); approveParam.setId(changeId);
approveParam.setTaskStatus("1"); // 1-通过 approveParam.setTaskStatus("2"); // 2-通过
// 5. 调用原有的审批业务逻辑 // 5. 调用原有的审批业务逻辑
AjaxResult result = devChangeService.approve(approveParam); AjaxResult result = devChangeService.approve(approveParam);

View File

@ -63,7 +63,7 @@ public class EquipmentRepairCallback implements IApprovalCallback {
// 4. 将所有明细的审批状态设置为"通过" // 4. 将所有明细的审批状态设置为"通过"
for (ToBeRepair detail : detailsList) { for (ToBeRepair detail : detailsList) {
detail.setAuditStatus("1"); // 1-通过 detail.setAuditStatus("2"); // 2-通过
} }
bean.setToBeRepairList(detailsList); bean.setToBeRepairList(detailsList);

View File

@ -67,7 +67,7 @@ public class EquipmentReturnCallback implements IApprovalCallback {
BackCsDeviceDetails approveParam = new BackCsDeviceDetails(); BackCsDeviceDetails approveParam = new BackCsDeviceDetails();
approveParam.setChangeId(changeId); approveParam.setChangeId(changeId);
approveParam.setId(changeId); approveParam.setId(changeId);
approveParam.setTaskStatus("1"); // 1-通过 approveParam.setTaskStatus("2"); // 2-通过
// 5. 调用原有的审批业务逻辑 // 5. 调用原有的审批业务逻辑
AjaxResult result = backChangeService.approve(approveParam); 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.cloud.commons.lang.StringUtils;
import com.alibaba.nacos.common.utils.CollectionUtils; 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.utils.DateUtils;
import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils; import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.material.approval.annotation.ApprovalRequired; 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.BackCsDeviceDetails;
import com.bonus.material.back.domain.BackCsDeviceInfo; import com.bonus.material.back.domain.BackCsDeviceInfo;
import com.bonus.material.back.domain.BackCsDeviceVo; import com.bonus.material.back.domain.BackCsDeviceVo;
@ -34,6 +39,12 @@ public class BackChangeServiceImpl implements BackChangeService {
@Resource @Resource
private BackChangeMapper mapper; private BackChangeMapper mapper;
@Resource
private ApprovalInstanceMapper instanceMapper;
@Resource
private ApprovalRecordMapper recordMapper;
/** /**
* 获取添加设备详情 * 获取添加设备详情
* *
@ -210,6 +221,38 @@ public class BackChangeServiceImpl implements BackChangeService {
if (num < 1) { if (num < 1) {
throw new RuntimeException("添加设备详情失败"); 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) { } catch (Exception e) {
log.error(e.getMessage()); log.error(e.getMessage());
throw new RuntimeException("修改失败"); throw new RuntimeException("修改失败");

View File

@ -100,7 +100,7 @@ public class CityScreenController extends BaseController {
dateVO.setList(list); dateVO.setList(list);
try { try {
int total = cityScreenMapper.countEquipmentTurnoverRate(dto); int total = cityScreenMapper.countEquipmentTurnoverRate(dto);
dateVO.setTotal(total); dateVO.setTotal(list.size());
} catch (Exception e) { } catch (Exception e) {
throw new ServiceException("获取装备周转率数据失败"); 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.cloud.commons.lang.StringUtils;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.common.utils.CollectionUtils; 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.utils.DateUtils;
import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils; import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.material.approval.annotation.ApprovalRequired; 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.constants.TypeConstants;
import com.bonus.material.common.enums.TypeEnums; import com.bonus.material.common.enums.TypeEnums;
import com.bonus.material.devchange.domain.*; 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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@ -27,6 +33,12 @@ public class DevChangeServiceImpl implements DevChangeService {
@Autowired @Autowired
private DevChangeMapper mapper; private DevChangeMapper mapper;
@Resource
private ApprovalInstanceMapper instanceMapper;
@Resource
private ApprovalRecordMapper recordMapper;
/** /**
* 查询设备 最大的数据 * 查询设备 最大的数据
* *
@ -359,6 +371,38 @@ public class DevChangeServiceImpl implements DevChangeService {
if (num < 1) { if (num < 1) {
throw new RuntimeException("添加设备详情失败"); 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) { } catch (Exception e) {
log.error(e.getMessage()); log.error(e.getMessage());
throw new RuntimeException("修改失败"); throw new RuntimeException("修改失败");

View File

@ -121,4 +121,25 @@ public interface RepairMapper {
* @return * @return
*/ */
ToBeRepair selectMaDevInfoByTypeIdAndCode(ToBeRepair toBeRepair); 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; 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.domain.BmFileInfo;
import com.bonus.common.biz.enums.ApprovalStatusEnum;
import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils; import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.material.approval.annotation.ApprovalRequired; 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.constants.TypeConstants;
import com.bonus.material.common.enums.TypeEnums; import com.bonus.material.common.enums.TypeEnums;
import com.bonus.material.devchange.domain.CsDeviceInfo; import com.bonus.material.devchange.domain.CsDeviceInfo;
@ -32,6 +38,12 @@ public class RepairServiceImpl implements RepairService {
@Resource @Resource
private RepairMapper mapper; private RepairMapper mapper;
@Resource
private ApprovalInstanceMapper instanceMapper;
@Resource
private ApprovalRecordMapper recordMapper;
@Override @Override
public List<ToBeRepair> getToBeRepairList(ToBeRepair bean) { public List<ToBeRepair> getToBeRepairList(ToBeRepair bean) {
@ -87,6 +99,12 @@ public class RepairServiceImpl implements RepairService {
if (bean.getToBeRepairList().size() <= 0) { if (bean.getToBeRepairList().size() <= 0) {
return AjaxResult.error("请添加维修数据"); return AjaxResult.error("请添加维修数据");
} }
//修改主表任务为待审核
bean.setStatus("0");
int num = mapper.updateRepairTask(bean);
if (num < 1) {
throw new Exception("修改设备任务失败");
}
String username = SecurityUtils.getLoginUser().getSysUser().getNickName(); String username = SecurityUtils.getLoginUser().getSysUser().getNickName();
//先删除详情中被驳回的数据 //先删除详情中被驳回的数据
int re1 = mapper.deleteChangeDetailsByChangeId(bean); int re1 = mapper.deleteChangeDetailsByChangeId(bean);
@ -116,6 +134,38 @@ public class RepairServiceImpl implements RepairService {
throw new Exception("添加设备详情失败"); 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("修改成功"); return AjaxResult.success("修改成功");
} catch (Exception e) { } catch (Exception e) {
@ -128,7 +178,7 @@ public class RepairServiceImpl implements RepairService {
public List<ToBeRepair> getRepairList(ToBeRepair bean) { public List<ToBeRepair> getRepairList(ToBeRepair bean) {
try { try {
List<ToBeRepair> list = mapper.getRepairList(bean); List<ToBeRepair> list = mapper.getRepairList(bean);
for (ToBeRepair toBeRepair : list) { /*for (ToBeRepair toBeRepair : list) {
List<ToBeRepair> detailsList = mapper.getDetailsList(toBeRepair); List<ToBeRepair> detailsList = mapper.getDetailsList(toBeRepair);
if (detailsList != null && !detailsList.isEmpty()) { if (detailsList != null && !detailsList.isEmpty()) {
boolean has0 = false; boolean has0 = false;
@ -193,7 +243,7 @@ public class RepairServiceImpl implements RepairService {
list = list.stream() list = list.stream()
.filter(item -> statusFilter.equals(item.getStatus())) .filter(item -> statusFilter.equals(item.getStatus()))
.collect(Collectors.toList()); .collect(Collectors.toList());
} }*/
return list; return list;
} catch (Exception e) { } catch (Exception e) {
@ -286,10 +336,19 @@ public class RepairServiceImpl implements RepairService {
toBeRepair.setCreateUser(username); toBeRepair.setCreateUser(username);
int res = mapper.auditData(toBeRepair); int res = mapper.auditData(toBeRepair);
if (res <= 0) { 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())){ if ("工具".equals(toBeRepair.getType())){
//根据typeId和code查询台账信息 //根据typeId和code查询台账信息
ToBeRepair bean1 = mapper.selectByTypeIdAndCode(toBeRepair); 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 LEFT JOIN cs_device_change_details cdc ON cd.id = cdc.change_id
WHERE WHERE
cdc.del_flag = '0' and cd.type = '1' cdc.del_flag = '0' and cd.type = '1'
and cd.del_flag = '0'
<if test="taskStatus != null and taskStatus != ''"> <if test="taskStatus != null and taskStatus != ''">
and cd.review_status = #{taskStatus} and cd.review_status = #{taskStatus}
</if> </if>

View File

@ -416,6 +416,8 @@
pro_county as proCounty, pro_county as proCounty,
use_time as useTime, use_time as useTime,
code as code, code as code,
use_start_time as useStartTime,
use_end_time as useEndTime,
CASE CASE
-- 已完成:所有子表记录 is_finished = 1 -- 已完成:所有子表记录 is_finished = 1
WHEN NOT EXISTS ( WHEN NOT EXISTS (
@ -481,6 +483,7 @@
LEFT JOIN cs_device_change_details cdc ON cd.id = cdc.change_id LEFT JOIN cs_device_change_details cdc ON cd.id = cdc.change_id
WHERE WHERE
cdc.del_flag = '0' and cd.type = '2' cdc.del_flag = '0' and cd.type = '2'
and cd.del_flag = '0'
<if test="taskStatus != null and taskStatus != ''"> <if test="taskStatus != null and taskStatus != ''">
and cd.review_status = #{taskStatus} and cd.review_status = #{taskStatus}
</if> </if>
@ -612,7 +615,7 @@
LEFT JOIN cs_device_change_details cdc LEFT JOIN cs_device_change_details cdc
ON cd.id = cdc.change_id ON cd.id = cdc.change_id
AND cdc.del_flag = '0' AND cdc.del_flag = '0'
WHERE cd.review_status = '1' WHERE cd.review_status = '2'
AND cd.type = '2' AND cd.type = '2'
AND cd.lease_type = '0' AND cd.lease_type = '0'
GROUP BY GROUP BY
@ -973,10 +976,11 @@
<insert id="addChangeInfoNew" keyProperty="id" useGeneratedKeys="true"> <insert id="addChangeInfoNew" keyProperty="id" useGeneratedKeys="true">
insert into cs_device_change(change_status, type, lease_type, pro_code, pro_name, 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_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}, values ( #{changeStatus}, #{type}, #{leaseType}, #{proCode}, #{proName}, #{proType},
#{voltageLevel}, #{useUnit}, #{proProvince}, #{proCity}, #{proCounty}, #{voltageLevel}, #{useUnit}, #{proProvince}, #{proCity}, #{proCounty},
now(), #{createBy}, 0, #{changeUnit}, #{code}, #{useTime}, #{taskStatus}) now(), #{createBy}, 0, #{changeUnit}, #{code}, #{useTime}, #{taskStatus}, #{useStartTime}, #{useEndTime})
</insert> </insert>
<insert id="addDetails"> <insert id="addDetails">

View File

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