直转和减免审核逻辑编写

This commit is contained in:
马三炮 2025-03-06 16:45:40 +08:00
parent 4295427b2e
commit 886ae3c8d4
12 changed files with 208 additions and 49 deletions

View File

@ -28,13 +28,11 @@ import com.bonus.material.task.domain.TmTask;
import com.bonus.material.task.domain.TmTaskAgreement;
import com.bonus.material.task.mapper.TmTaskAgreementMapper;
import com.bonus.material.task.mapper.TmTaskMapper;
import com.bonus.material.work.domain.SysWorkflowNode;
import com.bonus.material.work.domain.SysWorkflowRecord;
import com.bonus.material.work.domain.SysWorkflowRecordHistory;
import com.bonus.material.work.domain.SysWorkflowType;
import com.bonus.material.work.mapper.SysWorkflowConfigMapper;
import com.bonus.material.work.mapper.SysWorkflowRecordHistoryMapper;
import com.bonus.material.work.mapper.SysWorkflowRecordMapper;
import com.bonus.material.work.mapper.SysWorkflowTypeMapper;
import com.bonus.material.work.mapper.*;
import com.bonus.material.work.service.SysWorkflowRecordService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DataAccessException;
@ -82,6 +80,11 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService {
@Resource
private SysWorkflowRecordHistoryMapper sysWorkflowRecordHistoryMapper;
@Resource
private SysWorkflowNodeMapper sysWorkflowNodeMapper;
/**
* 新增领用任务
*
@ -395,17 +398,19 @@ public class LeaseTaskServiceImpl implements ILeaseTaskService {
log.info("当前节点为{}",leaseApplyInfoNew.getNodeId());
SysWorkflowRecordHistory sysWorkflowRecordHistory = sysWorkflowRecordHistoryMapper.getWorkflowRecordHistoryByRecordId(leaseApplyInfoNew.getRecordId());
leaseApplyInfoNew.setNodeId(sysWorkflowRecordHistory.getNodeId());
//设置当前节点
if (1==leaseApplyInfoNew.getNodeSignType() && sysWorkflowRecordHistory.getNodeSort()==1){
leaseApplyInfoNew.setNodeId(sysWorkflowRecordHistory.getNextNodeId());
}
String configValue = sysWorkflowConfigMapper.selectConfigValueByNodeId(leaseApplyInfoNew.getNodeId());
SysWorkflowNode sysWorkflowNode = sysWorkflowNodeMapper.selectSysWorkflowNodeById(leaseApplyInfoNew.getNodeId());
leaseApplyInfoNew.setConfigValue(configValue);
//判断当前节点是否审核
sysWorkflowRecordHistory.setRecordId(leaseApplyInfoNew.getRecordId());
sysWorkflowRecordHistory.setNodeId(leaseApplyInfoNew.getNodeId());
List<SysWorkflowRecordHistory> SysWorkflowRecordHistoryList = sysWorkflowRecordHistoryMapper.seleteSysWorkflowRecordHistory(sysWorkflowRecordHistory);
//判断是或签还是会签0:或签 1:会签
if (0==leaseApplyInfoNew.getNodeSignType()){
if (0==sysWorkflowNode.getNodeSignType()){
//当前节点已经审核需要修改节点值
if (SysWorkflowRecordHistoryList.get(0)!=null){
String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(SysWorkflowRecordHistoryList.get(0).getNextNodeId());

View File

@ -2,6 +2,7 @@ package com.bonus.material.ma.domain;
import com.bonus.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
@ -158,4 +159,18 @@ public class DirectApplyInfo extends BaseEntity {
private String flowId;
@ApiModelProperty(value = "本流程节点id")
private Integer nodeId;
@ApiModelProperty(value = "下个流程节点id")
private Integer nextNodeId;
@ApiModelProperty(value = "流程配置值")
private String configValue;
@ApiModelProperty(value = "所属记录")
private Integer recordId;
@ApiModelProperty(value = "流程节点签名方式 0:或签 1:会签")
private Integer nodeSignType;
}

View File

@ -1,28 +1,50 @@
package com.bonus.material.record.service.impl;
import com.bonus.common.biz.domain.BmFileInfo;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.material.ma.domain.DirectApplyInfo;
import com.bonus.material.record.mapper.DerateRecordQueryMapper;
import com.bonus.material.record.mapper.SltRecordQueryMapper;
import com.bonus.material.record.service.IDerateReocrdQueryService;
import com.bonus.material.record.service.ISltReocrdQueryService;
import com.bonus.material.settlement.domain.SltAgreementInfo;
import com.bonus.material.settlement.domain.SltAgreementReduce;
import com.bonus.material.work.domain.SysWorkflowNode;
import com.bonus.material.work.domain.SysWorkflowRecordHistory;
import com.bonus.material.work.mapper.SysWorkflowConfigMapper;
import com.bonus.material.work.mapper.SysWorkflowNodeMapper;
import com.bonus.material.work.mapper.SysWorkflowRecordHistoryMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @description 减免记录查询
* @author hay
* @date 2025/2/19 10:47
*/
@Slf4j
@Service
public class DerateRecordQueryServiceImpl implements IDerateReocrdQueryService {
@Resource
private DerateRecordQueryMapper mapper;
@Resource
private SysWorkflowNodeMapper sysWorkflowNodeMapper;
@Resource
private SysWorkflowRecordHistoryMapper sysWorkflowRecordHistoryMapper;
@Resource
private SysWorkflowConfigMapper sysWorkflowConfigMapper;
@Override
public List<SltAgreementReduce> getList(SltAgreementInfo bean) {
return mapper.getList(bean);
@ -32,7 +54,62 @@ public class DerateRecordQueryServiceImpl implements IDerateReocrdQueryService {
public List<SltAgreementReduce> getAuditList(SltAgreementInfo bean) {
Long userId = SecurityUtils.getUserId();
bean.setUserId(userId);
return mapper.getAuditList(bean);
List<SltAgreementReduce> sltAgreementReduceList = mapper.getAuditList(bean);
try {
for (SltAgreementReduce sltAgreementReduceNew : sltAgreementReduceList) {
log.info("当前节点为{}",sltAgreementReduceNew.getNodeId());
SysWorkflowRecordHistory sysWorkflowRecordHistory = sysWorkflowRecordHistoryMapper.getWorkflowRecordHistoryByRecordId(sltAgreementReduceNew.getRecordId());
sltAgreementReduceNew.setNodeId(sysWorkflowRecordHistory.getNodeId());
//设置当前节点
if (1==sltAgreementReduceNew.getNodeSignType() && sysWorkflowRecordHistory.getNodeSort()==1){
sltAgreementReduceNew.setNodeId(sysWorkflowRecordHistory.getNextNodeId());
}
String configValue = sysWorkflowConfigMapper.selectConfigValueByNodeId(sltAgreementReduceNew.getNodeId());
SysWorkflowNode sysWorkflowNode = sysWorkflowNodeMapper.selectSysWorkflowNodeById(sltAgreementReduceNew.getNodeId());
sltAgreementReduceNew.setConfigValue(configValue);
//判断当前节点是否审核
sysWorkflowRecordHistory.setRecordId(sltAgreementReduceNew.getRecordId());
sysWorkflowRecordHistory.setNodeId(sltAgreementReduceNew.getNodeId());
List<SysWorkflowRecordHistory> sysWorkflowRecordHistoryList = sysWorkflowRecordHistoryMapper.seleteSysWorkflowRecordHistory(sysWorkflowRecordHistory);
//判断是或签还是会签0:或签 1:会签
if (0==sysWorkflowNode.getNodeSignType()){
//当前节点已经审核需要修改节点值
if (sysWorkflowRecordHistoryList.get(0)!=null){
String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId());
sltAgreementReduceNew.setNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId());
sltAgreementReduceNew.setConfigValue(configValueNew);
}
}else {
String[] ConfigValue = configValue.split(",");
List<String> filteredList = Arrays.stream(ConfigValue).collect(Collectors.toList());
for (SysWorkflowRecordHistory sysWorkflowRecordHistoryNew : sysWorkflowRecordHistoryList) {
if (sysWorkflowRecordHistoryNew != null) {
// 过滤数组元素
filteredList = filteredList.stream()
.filter(value -> value != null && !value.equals(sysWorkflowRecordHistoryNew.getCreateBy()))
.collect(Collectors.toList());
sltAgreementReduceNew.setConfigValue(filteredList.toString());
}
}
//判断是否这个节点的所有人都审核
if (filteredList.size() == 0) {
String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId());
sltAgreementReduceNew.setNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId());
sltAgreementReduceNew.setConfigValue(configValueNew);
} else {
if (sysWorkflowRecordHistoryList.size() > 0) {
sltAgreementReduceNew.setNodeId(sltAgreementReduceNew.getNodeId());
sltAgreementReduceNew.setConfigValue(filteredList.toString());
}
}
}
}
}catch (Exception e){
log.info("查询结果出错{}",e.getMessage());
throw new ServiceException("查询结果出错");
}
return sltAgreementReduceList;
}
@Override

View File

@ -228,8 +228,7 @@ public class SltAgreementInfo extends BaseEntity {
private BigDecimal scrapCost;
private BigDecimal loseCost;
private BigDecimal reductionCost;
//结算费用
private BigDecimal totalCostAll;
}

View File

@ -134,4 +134,19 @@ public class SltAgreementReduce extends BaseEntity {
private Integer proId;
private String projectName;
@ApiModelProperty(value = "本流程节点id")
private Integer nodeId;
@ApiModelProperty(value = "下个流程节点id")
private Integer nextNodeId;
@ApiModelProperty(value = "流程配置值")
private String configValue;
@ApiModelProperty(value = "所属记录")
private Integer recordId;
@ApiModelProperty(value = "流程节点签名方式 0:或签 1:会签")
private Integer nodeSignType;
}

View File

@ -1,22 +1,10 @@
package com.bonus.material.work.controller;
import cn.hutool.core.convert.Convert;
import com.bonus.common.biz.config.ListPagingUtil;
import com.bonus.common.biz.domain.lease.LeaseApplyInfo;
import com.bonus.common.core.utils.ServletUtils;
import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.core.web.page.TableDataInfo;
import com.bonus.common.log.annotation.SysLog;
import com.bonus.common.log.enums.OperaType;
import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.material.common.annotation.PreventRepeatSubmit;
import com.bonus.material.lease.domain.vo.LeaseApplyRequestVo;
import com.bonus.material.lease.service.ILeaseTaskService;
import com.bonus.material.ma.domain.DirectApplyInfo;
import com.bonus.material.ma.domain.DirectApplyInfoDetails;
import com.bonus.material.ma.domain.Type;
import com.bonus.material.settlement.domain.SltAgreementInfo;
import com.bonus.material.work.domain.DirectAudit;
import com.bonus.material.work.service.IDirectAuditService;
import io.swagger.annotations.Api;
@ -24,7 +12,6 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
@ -61,7 +48,7 @@ public class DirectAuditController extends BaseController {
@ApiOperation(value = "查看审批详情")
/* @ApiOperation(value = "查看审批详情")
@GetMapping("/getAuditInfo")
public AjaxResult getAuditInfo(DirectAudit du) {
try {
@ -69,7 +56,7 @@ public class DirectAuditController extends BaseController {
} catch (Exception e) {
return AjaxResult.success(new DirectApplyInfo());
}
}
}*/
/**
* 审核直转申请

View File

@ -16,4 +16,6 @@ public interface SysWorkflowNodeMapper {
int updateSysWorkflowNode(SysWorkflowNode sysWorkflowNode);
List<SysWorkflowNode> listByTaskId(SysWorkflowNode sysWorkflowNode);
SysWorkflowNode selectSysWorkflowNodeById(Integer nodeId);
}

View File

@ -7,24 +7,15 @@ import com.bonus.material.ma.domain.DirectApplyInfo;
import com.bonus.material.work.domain.DirectAudit;
import com.bonus.material.work.domain.SysWorkflowNode;
import com.bonus.material.work.domain.SysWorkflowRecord;
import com.bonus.material.work.domain.SysWorkflowRecordHistory;
import com.bonus.material.work.mapper.DirectAuditMapper;
import com.bonus.material.work.mapper.SysWorkflowNodeMapper;
import com.bonus.material.work.mapper.SysWorkflowRecordHistoryMapper;
import com.bonus.material.work.mapper.SysWorkflowRecordMapper;
import com.bonus.material.work.mapper.*;
import com.bonus.material.work.service.IDirectAuditService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -40,17 +31,68 @@ public class DirectAuditImpl implements IDirectAuditService {
private DirectAuditMapper mapper;
@Resource
private SysWorkflowNodeMapper wfnMapper;
private SysWorkflowNodeMapper sysWorkflowNodeMapper;
@Resource
private SysWorkflowRecordHistoryMapper hisMapper;
private SysWorkflowRecordHistoryMapper sysWorkflowRecordHistoryMapper;
@Resource
private SysWorkflowRecordMapper wfrMapper;
private SysWorkflowConfigMapper sysWorkflowConfigMapper;
@Override
public List<DirectApplyInfo> getList(DirectApplyInfo directApplyInfo) {
return mapper.getList(directApplyInfo);
List<DirectApplyInfo> directApplyInfoList = mapper.getList(directApplyInfo);
for (DirectApplyInfo directApplyInfoNew : directApplyInfoList) {
log.info("当前节点为{}",directApplyInfoNew.getNodeId());
SysWorkflowRecordHistory sysWorkflowRecordHistory = sysWorkflowRecordHistoryMapper.getWorkflowRecordHistoryByRecordId(directApplyInfoNew.getRecordId());
directApplyInfoNew.setNodeId(sysWorkflowRecordHistory.getNodeId());
//设置当前节点
if (1==directApplyInfoNew.getNodeSignType() && sysWorkflowRecordHistory.getNodeSort()==1){
directApplyInfoNew.setNodeId(sysWorkflowRecordHistory.getNextNodeId());
}
String configValue = sysWorkflowConfigMapper.selectConfigValueByNodeId(directApplyInfoNew.getNodeId());
SysWorkflowNode sysWorkflowNode = sysWorkflowNodeMapper.selectSysWorkflowNodeById(directApplyInfoNew.getNodeId());
directApplyInfoNew.setConfigValue(configValue);
//判断当前节点是否审核
sysWorkflowRecordHistory.setRecordId(directApplyInfoNew.getRecordId());
sysWorkflowRecordHistory.setNodeId(directApplyInfoNew.getNodeId());
List<SysWorkflowRecordHistory> sysWorkflowRecordHistoryList = sysWorkflowRecordHistoryMapper.seleteSysWorkflowRecordHistory(sysWorkflowRecordHistory);
//判断是或签还是会签0:或签 1:会签
if (0==sysWorkflowNode.getNodeSignType()){
//当前节点已经审核需要修改节点值
if (sysWorkflowRecordHistoryList.get(0)!=null){
String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId());
directApplyInfoNew.setNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId());
directApplyInfoNew.setConfigValue(configValueNew);
}
}else {
String[] ConfigValue = configValue.split(",");
List<String> filteredList = Arrays.stream(ConfigValue).collect(Collectors.toList());
for (SysWorkflowRecordHistory sysWorkflowRecordHistoryNew : sysWorkflowRecordHistoryList) {
if (sysWorkflowRecordHistoryNew != null) {
// 过滤数组元素
filteredList = filteredList.stream()
.filter(value -> value != null && !value.equals(sysWorkflowRecordHistoryNew.getCreateBy()))
.collect(Collectors.toList());
directApplyInfoNew.setConfigValue(filteredList.toString());
}
}
//判断是否这个节点的所有人都审核
if (filteredList.size() == 0) {
String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId());
directApplyInfoNew.setNodeId(sysWorkflowRecordHistoryList.get(0).getNextNodeId());
directApplyInfoNew.setConfigValue(configValueNew);
} else {
if (sysWorkflowRecordHistoryList.size() > 0) {
directApplyInfoNew.setNodeId(directApplyInfoNew.getNodeId());
directApplyInfoNew.setConfigValue(filteredList.toString());
}
}
}
}
return directApplyInfoList;
}
@ -102,7 +144,7 @@ public class DirectAuditImpl implements IDirectAuditService {
String isAccept = audit.getIsAccept();
String remark = audit.getRemark();
List<SysWorkflowNode> nodes = wfnMapper.selectSysWorkflowNodeList(node);
List<SysWorkflowNode> nodes = sysWorkflowNodeMapper.selectSysWorkflowNodeList(node);
int flowId = audit.getFlowId();
if(nodes !=null && nodes.size()>0){
@ -134,7 +176,7 @@ public class DirectAuditImpl implements IDirectAuditService {
his.setCreateBy(SecurityUtils.getUsername());
his.setCreateTime(new Date());
his.setRemark(remark);
hisMapper.addSysWorkflowRecordHistory(his) ;
sysWorkflowRecordHistoryMapper.addSysWorkflowRecordHistory(his) ;
}

View File

@ -86,6 +86,7 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis
List<SysWorkflowRecordHistory> sysWorkflowRecordHistoryList = sysWorkflowRecordHistoryMapper.seleteSysWorkflowRecordHistory(sysWorkflowRecordHistory);
//获取该节点需要审核人员信息
String configValueNew = sysWorkflowConfigMapper.selectConfigValueByNodeId(sysWorkflowRecordHistory.getNodeId());
sysWorkflowNode = sysWorkflowNodeList.get(sysWorkflowNodeList.size()-1);
String[] ConfigValue = configValueNew.split(",");
List<String> filteredList = Arrays.stream(ConfigValue).collect(Collectors.toList());
for (SysWorkflowRecordHistory sysWorkflowRecordHistoryNew : sysWorkflowRecordHistoryList) {
@ -95,7 +96,7 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis
.filter(value ->value != null && !value.equals(sysWorkflowRecordHistoryNew.getCreateBy()))
.collect(Collectors.toList());
//判断是否这个节点的所有人都审核
if (filteredList.size()==0){
if ((filteredList.size()==0&& sysWorkflowNode.getNodeSignType()==1 )||sysWorkflowNode.getNodeSignType()==0){
SysWorkflowRecord sysWorkflowRecord = new SysWorkflowRecord();
sysWorkflowRecord.setTaskId(sysWorkflowRecordHistory.getTaskId());
sysWorkflowRecord.setWorkflowStatus(2);

View File

@ -120,15 +120,19 @@
<select id="getAuditList" resultType="com.bonus.material.settlement.domain.SltAgreementReduce">
SELECT
sra.id as id,sra.id as taskId,
sra.id as id,swr.task_id as taskId,
sra.create_time as createTime,
su.user_name as createBy,
bu.unit_name as unitName,
bp.pro_name as projectName,
SUM(srd.lease_price * srd.num) as leasePrice,
SUM(srd.lease_money) as leaseMoney,
sra.`status`,
a.leaseMoneyAll as leaseMoneyAll
swr.workflow_status as status,
a.leaseMoneyAll as leaseMoneyAll,
swrs.node_id AS nodeId,
swrs.next_node_id AS nextNodeId,
swrs.record_id AS recordId,
swn.node_sign_type as nodeSignType
FROM
slt_reduce_apply sra
LEFT JOIN slt_reduce_details srd on sra.id=srd.apply_id
@ -140,7 +144,7 @@
LEFT JOIN sys_workflow_type swt on swr.workflow_id = swt.id
LEFT JOIN sys_workflow_node swn on swt.id = swn.type_id
LEFT JOIN sys_workflow_config swc on swn.id = swc.node_id
left join sys_workflow_record_history swrs on swr.id = swrs.record_id
LEFT JOIN
(
SELECT

View File

@ -4,7 +4,7 @@
<mapper namespace="com.bonus.material.work.mapper.DirectAuditMapper">
<select id="getList" resultType="com.bonus.material.ma.domain.DirectApplyInfo">
SELECT DISTINCT
SELECT
dai.Id,
dai.create_time AS createTime,
su.user_name AS createName,
@ -18,7 +18,11 @@
bpl1.pro_name AS leaseProName,
dai.lease_man as leaseMan ,
swr.workflow_status as flowStatus,
swr.task_id as flowId
swr.task_id as flowId,
swrs.node_id AS nodeId,
swrs.next_node_id AS nextNodeId,
swrs.record_id AS recordId,
swn.node_sign_type as nodeSignType
FROM
direct_apply_info dai
LEFT JOIN bm_agreement_info bai ON dai.back_agreement_id = bai.agreement_id
@ -30,6 +34,10 @@
LEFT JOIN direct_apply_details dad on dad.direct_id=dai.id
left join sys_user su on dai.create_by = su.user_id
left join sys_workflow_record swr on dai.id = swr.task_id
left join sys_workflow_type swt on swr.workflow_id = swt.id
left join sys_workflow_node swn on swt.id = swn.type_id
left join sys_workflow_config swc on swn.id = swc.node_id
left join sys_workflow_record_history swrs on swr.id = swrs.record_id
<where>
swr.task_id is not null
<if test="keyWord != null and keyWord != ''">
@ -52,7 +60,7 @@
<if test="isApp != null and taskStatus==0">and dai.status = 0 </if>
<if test="isApp != null and taskStatus==1">and (dai.status = 1 or dai.status = 2)</if>
</where>
order by dai.create_time desc
GROUP BY swr.task_id order by dai.create_time desc
</select>

View File

@ -83,6 +83,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
GROUP BY swn.id
</select>
<select id="selectSysWorkflowNodeById" resultType="com.bonus.material.work.domain.SysWorkflowNode">
select node_name as nodeName, node_sign_type as nodeSignType
from sys_workflow_node where id = #{nodeId}
</select>
</mapper>