领用审批优化,加上会签的逻辑

This commit is contained in:
zfh 2025-03-04 18:53:36 +08:00
parent 97213e6e60
commit c205a38005
11 changed files with 87 additions and 50 deletions

View File

@ -29,7 +29,7 @@ public class SysWorkflowConfig {
/**
* 配置值
*/
private Integer configValue;
private String configValue;
/**
* 0关闭 1启用

View File

@ -78,7 +78,7 @@ public class SysWorkflowNode {
private String remark;
/**
* 审批结果0拒绝 1通过
* 审批结果0待审批 1通过 2已驳回
*/
private int isAccept;

View File

@ -11,4 +11,6 @@ public interface SysWorkflowConfigMapper {
int addSysWorkflowConfig(SysWorkflowConfig sysWorkflowConfig);
int deleteSysWorkflowConfig(SysWorkflowConfig sysWorkflowConfig);
String selectConfigValueByNodeId(Integer nodeId);
}

View File

@ -3,10 +3,12 @@ package com.bonus.material.work.mapper;
import com.bonus.material.work.domain.SysWorkflowRecord;
import com.bonus.material.work.domain.SysWorkflowRecordHistory;
import java.util.List;
public interface SysWorkflowRecordHistoryMapper {
int addSysWorkflowRecordHistory(SysWorkflowRecordHistory sysWorkflowRecordHistory);
SysWorkflowRecordHistory seleteSysWorkflowRecordHistory(SysWorkflowRecordHistory sysWorkflowRecordHistory);
List<SysWorkflowRecordHistory> seleteSysWorkflowRecordHistory(SysWorkflowRecordHistory sysWorkflowRecordHistory);
}

View File

@ -2,6 +2,7 @@ package com.bonus.material.work.mapper;
import com.bonus.material.work.domain.SysWorkflowRecord;
import com.bonus.material.work.domain.dto.SysWorkflowAuditDto;
import org.apache.ibatis.annotations.Param;
public interface SysWorkflowRecordMapper {
@ -11,6 +12,8 @@ public interface SysWorkflowRecordMapper {
// 修改审批流任务信息
int updateSysWorkflowRecord(SysWorkflowRecord sysWorkflowRecord);
// 根据任务id查询审批流任务信息
SysWorkflowAuditDto getSysWorkflowRecodeByTaskId(Integer taskId);
SysWorkflowAuditDto getSysWorkflowRecodeByTaskId(@Param("taskId") Integer taskId);
}

View File

@ -48,19 +48,17 @@ public class SysWorkflowNodeServiceImpl implements SysWorkflowNodeService {
sysWorkflowNode.setCreateBy(SecurityUtils.getLoginUser().getUserid().toString());
//保存创建时间
sysWorkflowNode.setCreateTime(DateUtils.getNowDate());
String[] ConfigValue = sysWorkflowNode.getConfigValues().split(",");
if (sysWorkflowNode.getConfigValues().isEmpty()){
throw new ServiceException("请选择审核人员");
}
int count = sysWorkflowNodeMapper.addSysWorkflowNode(sysWorkflowNode);
for (int i = 0; i < ConfigValue.length; i++) {
SysWorkflowConfig sysWorkflowConfig = new SysWorkflowConfig();
sysWorkflowConfig.setNodeId(sysWorkflowNode.getId());
sysWorkflowConfig.setConfigType(sysWorkflowNode.getNodeSignType());
sysWorkflowConfig.setConfigValue(Integer.valueOf(ConfigValue[i]));
//新增审核详情表信息
sysWorkflowConfigMapper.addSysWorkflowConfig(sysWorkflowConfig);
}
SysWorkflowConfig sysWorkflowConfig = new SysWorkflowConfig();
sysWorkflowConfig.setNodeId(sysWorkflowNode.getId());
sysWorkflowConfig.setConfigType(sysWorkflowNode.getNodeSignType());
sysWorkflowConfig.setConfigValue(sysWorkflowNode.getConfigValues());
//新增审核详情表信息
sysWorkflowConfigMapper.addSysWorkflowConfig(sysWorkflowConfig);
return count;
}
@ -85,39 +83,65 @@ public class SysWorkflowNodeServiceImpl implements SysWorkflowNodeService {
@Transactional
public int updateSysWorkflowNode(SysWorkflowNode sysWorkflowNode) {
int count = sysWorkflowNodeMapper.updateSysWorkflowNode(sysWorkflowNode);
String[] ConfigValue = sysWorkflowNode.getConfigValues().split(",");
if (sysWorkflowNode.getConfigValues().isEmpty()){
throw new ServiceException("请选择审核人员");
}
SysWorkflowConfig sysWorkflowConfig = new SysWorkflowConfig();
sysWorkflowConfig.setNodeId(sysWorkflowNode.getId());
sysWorkflowConfigMapper.deleteSysWorkflowConfig(sysWorkflowConfig);
for (int i = 0; i < ConfigValue.length; i++) {
sysWorkflowConfig.setNodeId(sysWorkflowNode.getId());
sysWorkflowConfig.setConfigType(sysWorkflowNode.getNodeSignType());
sysWorkflowConfig.setConfigValue(Integer.valueOf(ConfigValue[i]));
//新增审核详情表信息
sysWorkflowConfigMapper.addSysWorkflowConfig(sysWorkflowConfig);
}
sysWorkflowConfig.setNodeId(sysWorkflowNode.getId());
sysWorkflowConfig.setConfigType(sysWorkflowNode.getNodeSignType());
sysWorkflowConfig.setConfigValue(sysWorkflowNode.getConfigValues());
//新增审核详情表信息
sysWorkflowConfigMapper.addSysWorkflowConfig(sysWorkflowConfig);
return count;
}
@Override
public List<SysWorkflowNode> listByTaskId(SysWorkflowNode sysWorkflowNode) {
Long userId = SecurityUtils.getUserId();
List<SysWorkflowNode> sysWorkflowNodeList = sysWorkflowNodeMapper.listByTaskId(sysWorkflowNode);
for (SysWorkflowNode SysWorkflowNode: sysWorkflowNodeList) {
SysWorkflowRecordHistory sysWorkflowRecordHistory = new SysWorkflowRecordHistory();
sysWorkflowRecordHistory.setRecordId(SysWorkflowNode.getRecordId());
sysWorkflowRecordHistory.setNodeId(SysWorkflowNode.getNodeId());
System.out.println(sysWorkflowRecordHistory);
SysWorkflowRecordHistory sysWorkflowRecordHistoryNew = sysWorkflowRecordHistoryMapper.seleteSysWorkflowRecordHistory(sysWorkflowRecordHistory);
if (StringUtils.isNotNull(sysWorkflowRecordHistoryNew)){
SysWorkflowNode.setIsAccept(sysWorkflowRecordHistoryNew.getIsAccept());
SysWorkflowNode.setCreateTime(sysWorkflowRecordHistoryNew.getCreateTime());
SysWorkflowNode.setRemark(sysWorkflowRecordHistoryNew.getRemark());
List<SysWorkflowRecordHistory> sysWorkflowRecordHistoryList = sysWorkflowRecordHistoryMapper.seleteSysWorkflowRecordHistory(sysWorkflowRecordHistory);
if (StringUtils.isNotNull(sysWorkflowRecordHistoryList)){
//判断是或签还是会签0:或签 1:会签
if (0==SysWorkflowNode.getNodeSignType()){
SysWorkflowNode.setIsAccept(sysWorkflowRecordHistoryList.get(0).getIsAccept());
SysWorkflowNode.setCreateTime(sysWorkflowRecordHistoryList.get(0).getCreateTime());
SysWorkflowNode.setRemark(sysWorkflowRecordHistoryList.get(0).getRemark());
}else {
String[] ConfigValue =SysWorkflowNode.getConfigValues().split(",");
// 过滤数组元素
for (SysWorkflowRecordHistory sysWorkflowRecordHistoryNew : sysWorkflowRecordHistoryList) {
/*List<String> filteredList = Arrays.stream(ConfigValue)
.filter(value -> value.equals(sysWorkflowRecordHistoryNew.getCreateBy()))
.collect(Collectors.toList());
//判断是不是所有人都审核完成
if(filteredList.size()==0){
}*/
//查看当前人是否审核
if(userId.toString().equals(sysWorkflowRecordHistoryNew.getCreateBy())){
SysWorkflowNode.setIsAccept(sysWorkflowRecordHistoryNew.getIsAccept());
SysWorkflowNode.setCreateTime(sysWorkflowRecordHistoryNew.getCreateTime());
SysWorkflowNode.setRemark(sysWorkflowRecordHistoryNew.getRemark());
}
//查看别人审核是否有驳回的
if (sysWorkflowRecordHistoryNew.getIsAccept().equals(2)){
SysWorkflowNode.setIsAccept(sysWorkflowRecordHistoryNew.getIsAccept());
SysWorkflowNode.setCreateTime(sysWorkflowRecordHistoryNew.getCreateTime());
SysWorkflowNode.setRemark(sysWorkflowRecordHistoryNew.getRemark());
}
}
}
}
}
return sysWorkflowNodeList;
}
}

View File

@ -17,12 +17,14 @@ import com.bonus.material.work.mapper.SysWorkflowRecordMapper;
import com.bonus.material.work.mapper.SysWorkflowTypeMapper;
import com.bonus.material.work.service.SysWorkflowRecordHistoryService;
import com.bonus.material.work.service.SysWorkflowRecordService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
@Slf4j
@Service
public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHistoryService {
@ -50,6 +52,9 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis
@Override
@Transactional
public int updateSysWorkflowRecordHistory(SysWorkflowRecordHistory sysWorkflowRecordHistory) {
//保存审核人信息
Long userId = SecurityUtils.getUserId();
sysWorkflowRecordHistory.setCreateBy(userId.toString());
sysWorkflowRecordHistoryMapper.addSysWorkflowRecordHistory(sysWorkflowRecordHistory);
//根据当前审批状态修改流程状态
if (sysWorkflowRecordHistory.getIsAccept()==1){
@ -80,12 +85,10 @@ public class SysWorkflowRecordHistoryServiceImpl implements SysWorkflowRecordHis
sysWorkflowRecord.setWorkflowStatus(2);
sysWorkflowRecordMapper.updateSysWorkflowRecord(sysWorkflowRecord);
System.out.println("-------------节点更新任务信息为完成-------------");
SysWorkflowAuditDto sysWorkflowRecodeInfo = sysWorkflowRecordMapper.getSysWorkflowRecodeByTaskId(sysWorkflowRecordHistory.getTaskId());
if (sysWorkflowRecodeInfo == null) {
throw new ServiceException("任务类型为空");
}
// 根据任务类型修改业务状态
switch (sysWorkflowRecodeInfo.getTaskType()) {
// 领料任务:2

View File

@ -24,4 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<delete id="deleteSysWorkflowConfig">
delete from sys_workflow_config where node_id=#{nodeId}
</delete>
<select id="selectConfigValueByNodeId" resultType="java.lang.String">
select config_value from sys_workflow_config where node_id = #{nodeId}
</select>
</mapper>

View File

@ -70,7 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="listByTaskId" resultType="com.bonus.material.work.domain.SysWorkflowNode">
select swn.id as id, swn.type_id typeId, swn.node_name as nodeName, swn.node_sort as nodeSort,
swn.node_sign_type as nodeSignType, swn.node_sign_config as nodeSignConfig,swn.id as nodeId,
swrh.create_by as createBy,swn.is_enable as isEnable,
swrh.create_by as createBy,swn.is_enable as isEnable,sec.config_value as configValues,
GROUP_CONCAT(DISTINCT sec.config_value SEPARATOR ',') AS configValues,
swr.id as recordId
from sys_workflow_node swn

View File

@ -29,20 +29,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if>
</update>
<select id="getSysWorkflowRecodeByTaskId" resultType="com.bonus.material.work.domain.dto.SysWorkflowAuditDto">
select
a.id,
a.task_id,
a.task_type,
a.task_code,
a.workflow_id,
a.workflow_status
from sys_workflow_record a
<where>
<if test="taskId != null">
a.task_id = #{taskId}
</if>
</where>
limit 1
</select>
<select id="getSysWorkflowRecodeByTaskId" parameterType="Integer" resultType="com.bonus.material.work.domain.dto.SysWorkflowAuditDto">
select
a.id as id,
a.task_id as taskId,
a.task_type as taskType,
a.task_code as taskCode,
a.workflow_id as workflowId,
a.workflow_status as workflowStatus
from sys_workflow_record a
<where>
<if test="taskId != null">
and a.task_id = #{taskId}
</if>
</where>
</select>
</mapper>

View File

@ -27,9 +27,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim>
</insert>
<select id="seleteSysWorkflowRecordHistory" resultType="com.bonus.material.work.domain.SysWorkflowRecordHistory">
select swrh.is_accept as isAccept,swrh.create_time as createTime,swrh.remark as remark
from sys_workflow_record_history swrh
where swrh.record_id=#{recordId} and swrh.node_id= #{nodeId}
limit 1
select swrh.is_accept as isAccept,swrh.create_time as createTime,swrh.remark as remark,swrh.next_node_id as nextNodeId,
swrh.create_by as createBy
from sys_workflow_record_history swrh
where swrh.record_id=#{recordId} and swrh.node_id= #{nodeId}
</select>
</mapper>