!95 feat(bpm): 新增节点驳回目标配置表及纯增量后端接口
Merge pull request !95 from wsm/feature/node_reject
This commit is contained in:
@@ -0,0 +1,12 @@
|
|||||||
|
-- 流程节点驳回目标节点配置表
|
||||||
|
-- 一对多:一个源节点可配置多个可驳回的目标节点
|
||||||
|
CREATE TABLE IF NOT EXISTS `ext_act_process_node_reject_target` (
|
||||||
|
`id` varchar(64) NOT NULL COMMENT '主键ID',
|
||||||
|
`process_id` varchar(64) NOT NULL COMMENT '流程ID(对应ext_act_process_node.process_id)',
|
||||||
|
`source_node_code` varchar(100) NOT NULL COMMENT '源节点CODE(当前配置驳回的节点)',
|
||||||
|
`target_node_code` varchar(100) NOT NULL COMMENT '目标节点CODE(可以驳回到的节点)',
|
||||||
|
`target_node_name` varchar(200) DEFAULT NULL COMMENT '目标节点名称',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `idx_process_source` (`process_id`, `source_node_code`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程节点驳回目标配置';
|
||||||
|
、
|
||||||
+3
@@ -357,6 +357,9 @@ public class ActTaskController {
|
|||||||
map.put("defaultOpinionCond0", extActProcessNode.getDefaultOpinion());
|
map.put("defaultOpinionCond0", extActProcessNode.getDefaultOpinion());
|
||||||
map.put("defaultOpinionCond1", extActProcessNode.getDefaultOpinion2());
|
map.put("defaultOpinionCond1", extActProcessNode.getDefaultOpinion2());
|
||||||
}
|
}
|
||||||
|
// 流程标识和当前节点编码,供前端做驳回目标过滤
|
||||||
|
map.put("processKey", pd.getKey());
|
||||||
|
map.put("taskDefinitionKey", task.getTaskDefinitionKey());
|
||||||
//--update--end------author:scott-----date:20220705-----for:【VUEN-1332】流程节点配置智能化-------------
|
//--update--end------author:scott-----date:20220705-----for:【VUEN-1332】流程节点配置智能化-------------
|
||||||
|
|
||||||
// 流程审批日志
|
// 流程审批日志
|
||||||
|
|||||||
+52
-1
@@ -22,12 +22,15 @@ import org.jeecg.modules.extbpm.process.entity.ExtActFlowData;
|
|||||||
import org.jeecg.modules.extbpm.process.entity.ExtActProcessNode;
|
import org.jeecg.modules.extbpm.process.entity.ExtActProcessNode;
|
||||||
import org.jeecg.modules.extbpm.process.entity.ExtActProcessNodeDeployment;
|
import org.jeecg.modules.extbpm.process.entity.ExtActProcessNodeDeployment;
|
||||||
import org.jeecg.modules.extbpm.process.entity.ExtActProcessNodePermission;
|
import org.jeecg.modules.extbpm.process.entity.ExtActProcessNodePermission;
|
||||||
|
import org.jeecg.modules.extbpm.process.entity.ExtActProcessNodeRejectTarget;
|
||||||
import org.jeecg.modules.extbpm.process.pojo.BizTaskDTO;
|
import org.jeecg.modules.extbpm.process.pojo.BizTaskDTO;
|
||||||
import org.jeecg.modules.extbpm.process.service.IExtActFlowDataService;
|
import org.jeecg.modules.extbpm.process.service.IExtActFlowDataService;
|
||||||
import org.jeecg.modules.extbpm.process.service.IExtActProcessNodeDeploymentService;
|
import org.jeecg.modules.extbpm.process.service.IExtActProcessNodeDeploymentService;
|
||||||
import org.jeecg.modules.extbpm.process.service.IExtActProcessNodePermissionService;
|
import org.jeecg.modules.extbpm.process.service.IExtActProcessNodePermissionService;
|
||||||
|
import org.jeecg.modules.extbpm.process.service.IExtActProcessNodeRejectTargetService;
|
||||||
import org.jeecg.modules.extbpm.process.service.IExtActProcessNodeService;
|
import org.jeecg.modules.extbpm.process.service.IExtActProcessNodeService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@@ -67,6 +70,8 @@ public class ExtActProcessNodeController {
|
|||||||
private IExtActProcessNodePermissionService extActProcessNodePermissionService;
|
private IExtActProcessNodePermissionService extActProcessNodePermissionService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IExtActFlowDataService extActFlowDataService;
|
private IExtActFlowDataService extActFlowDataService;
|
||||||
|
@Autowired
|
||||||
|
private IExtActProcessNodeRejectTargetService extActProcessNodeRejectTargetService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页列表查询
|
* 分页列表查询
|
||||||
@@ -158,12 +163,58 @@ public class ExtActProcessNodeController {
|
|||||||
if(ids==null || "".equals(ids.trim())) {
|
if(ids==null || "".equals(ids.trim())) {
|
||||||
result.error500("参数不识别!");
|
result.error500("参数不识别!");
|
||||||
}else {
|
}else {
|
||||||
this.extActProcessNodeService.removeByIds(Arrays.asList(ids.split(",")));
|
List<String> idList = Arrays.asList(ids.split(","));
|
||||||
|
this.extActProcessNodeService.removeByIds(idList);
|
||||||
result.success("删除成功!");
|
result.success("删除成功!");
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping(value = "/queryRejectTargets")
|
||||||
|
public Result<List<ExtActProcessNodeRejectTarget>> queryRejectTargets(
|
||||||
|
@RequestParam(name="processId", required=true) String processId,
|
||||||
|
@RequestParam(name="sourceNodeCode", required=true) String sourceNodeCode) {
|
||||||
|
Result<List<ExtActProcessNodeRejectTarget>> result = new Result<>();
|
||||||
|
List<ExtActProcessNodeRejectTarget> list = extActProcessNodeRejectTargetService.queryBySourceNode(processId, sourceNodeCode);
|
||||||
|
result.setResult(list);
|
||||||
|
result.setSuccess(true);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存节点的驳回目标配置(先删旧、后插新)
|
||||||
|
*/
|
||||||
|
@Transactional
|
||||||
|
@PostMapping(value = "/saveRejectTargets")
|
||||||
|
public Result<?> saveRejectTargets(
|
||||||
|
@RequestParam(name="processId", required=true) String processId,
|
||||||
|
@RequestParam(name="sourceNodeCode", required=true) String sourceNodeCode,
|
||||||
|
@RequestBody(required = false) List<ExtActProcessNodeRejectTarget> rejectTargetList) {
|
||||||
|
// 删除旧配置
|
||||||
|
LambdaQueryWrapper<ExtActProcessNodeRejectTarget> deleteWrapper = new LambdaQueryWrapper<>();
|
||||||
|
deleteWrapper.eq(ExtActProcessNodeRejectTarget::getProcessId, processId);
|
||||||
|
deleteWrapper.eq(ExtActProcessNodeRejectTarget::getSourceNodeCode, sourceNodeCode);
|
||||||
|
extActProcessNodeRejectTargetService.remove(deleteWrapper);
|
||||||
|
// 插入新配置
|
||||||
|
if (rejectTargetList != null && !rejectTargetList.isEmpty()) {
|
||||||
|
extActProcessNodeRejectTargetService.saveBatch(rejectTargetList);
|
||||||
|
}
|
||||||
|
return Result.ok("保存成功");
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 根据 processKey + nodeCode 查询可驳回的目标节点CODE列表(运行时过滤用)
|
||||||
|
*/
|
||||||
|
@GetMapping(value = "/queryRejectTargetCodes")
|
||||||
|
public Result<List<String>> queryRejectTargetCodes(
|
||||||
|
@RequestParam(name="processKey", required=true) String processKey,
|
||||||
|
@RequestParam(name="nodeCode", required=true) String nodeCode) {
|
||||||
|
Result<List<String>> result = new Result<>();
|
||||||
|
List<String> list = extActProcessNodeRejectTargetService.queryRejectTargetCodesByProcessKeyAndNodeCode(processKey, nodeCode);
|
||||||
|
result.setResult(list);
|
||||||
|
result.setSuccess(true);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过id查询
|
* 通过id查询
|
||||||
* @param id
|
* @param id
|
||||||
|
|||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
package org.jeecg.modules.extbpm.process.entity;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 流程节点驳回目标配置
|
||||||
|
* @author: jeecg-boot
|
||||||
|
* @date: 2026-07-27
|
||||||
|
* @version: V1.0
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName("ext_act_process_node_reject_target")
|
||||||
|
public class ExtActProcessNodeRejectTarget implements Serializable {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**id*/
|
||||||
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
|
private java.lang.String id;
|
||||||
|
/**流程ID*/
|
||||||
|
private java.lang.String processId;
|
||||||
|
/**源节点CODE(当前配置驳回的节点)*/
|
||||||
|
private java.lang.String sourceNodeCode;
|
||||||
|
/**目标节点CODE(可以驳回到的节点)*/
|
||||||
|
private java.lang.String targetNodeCode;
|
||||||
|
/**目标节点名称*/
|
||||||
|
private java.lang.String targetNodeName;
|
||||||
|
}
|
||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
package org.jeecg.modules.extbpm.process.mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.jeecg.modules.extbpm.process.entity.ExtActProcessNodeRejectTarget;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 流程节点驳回目标配置
|
||||||
|
* @author: jeecg-boot
|
||||||
|
* @date: 2026-07-27
|
||||||
|
* @version: V1.0
|
||||||
|
*/
|
||||||
|
public interface ExtActProcessNodeRejectTargetMapper extends BaseMapper<ExtActProcessNodeRejectTarget> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过 processKey + nodeCode 查询可驳回的目标节点CODE列表(运行时过滤用)
|
||||||
|
*/
|
||||||
|
List<String> queryRejectTargetCodesByProcessKeyAndNodeCode(
|
||||||
|
@Param("processKey") String processKey,
|
||||||
|
@Param("nodeCode") String nodeCode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询某源节点的所有驳回目标配置(配置页面回显用)
|
||||||
|
*/
|
||||||
|
List<ExtActProcessNodeRejectTarget> queryBySourceNode(
|
||||||
|
@Param("processId") String processId,
|
||||||
|
@Param("sourceNodeCode") String sourceNodeCode);
|
||||||
|
}
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="org.jeecg.modules.extbpm.process.mapper.ExtActProcessNodeRejectTargetMapper">
|
||||||
|
|
||||||
|
<resultMap id="ExtActProcessNodeRejectTarget" type="org.jeecg.modules.extbpm.process.entity.ExtActProcessNodeRejectTarget">
|
||||||
|
<result column="id" property="id" jdbcType="VARCHAR"/>
|
||||||
|
<result column="process_id" property="processId" jdbcType="VARCHAR"/>
|
||||||
|
<result column="source_node_code" property="sourceNodeCode" jdbcType="VARCHAR"/>
|
||||||
|
<result column="target_node_code" property="targetNodeCode" jdbcType="VARCHAR"/>
|
||||||
|
<result column="target_node_name" property="targetNodeName" jdbcType="VARCHAR"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<!-- 通过 processKey + nodeCode 查询可驳回目标节点CODE(运行时过滤) -->
|
||||||
|
<select id="queryRejectTargetCodesByProcessKeyAndNodeCode" resultType="java.lang.String">
|
||||||
|
SELECT rt.target_node_code
|
||||||
|
FROM ext_act_process_node_reject_target rt
|
||||||
|
INNER JOIN ext_act_process_node eapn
|
||||||
|
ON rt.process_id = eapn.process_id
|
||||||
|
AND rt.source_node_code = eapn.process_node_code
|
||||||
|
INNER JOIN ext_act_process eap
|
||||||
|
ON eapn.process_id = eap.id
|
||||||
|
WHERE eap.process_key = #{processKey}
|
||||||
|
AND eapn.process_node_code = #{nodeCode}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 查询某源节点的所有驳回目标配置(配置页面回显) -->
|
||||||
|
<select id="queryBySourceNode" resultMap="ExtActProcessNodeRejectTarget">
|
||||||
|
SELECT id, process_id, source_node_code, target_node_code, target_node_name
|
||||||
|
FROM ext_act_process_node_reject_target
|
||||||
|
WHERE process_id = #{processId}
|
||||||
|
AND source_node_code = #{sourceNodeCode}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
package org.jeecg.modules.extbpm.process.service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.jeecg.modules.extbpm.process.entity.ExtActProcessNodeRejectTarget;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 流程节点驳回目标配置
|
||||||
|
* @author: jeecg-boot
|
||||||
|
* @date: 2026-07-27
|
||||||
|
* @version: V1.0
|
||||||
|
*/
|
||||||
|
public interface IExtActProcessNodeRejectTargetService extends IService<ExtActProcessNodeRejectTarget> {
|
||||||
|
|
||||||
|
List<String> queryRejectTargetCodesByProcessKeyAndNodeCode(String processKey, String nodeCode);
|
||||||
|
|
||||||
|
List<ExtActProcessNodeRejectTarget> queryBySourceNode(String processId, String sourceNodeCode);
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
package org.jeecg.modules.extbpm.process.service.impl;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.jeecg.modules.extbpm.process.entity.ExtActProcessNodeRejectTarget;
|
||||||
|
import org.jeecg.modules.extbpm.process.mapper.ExtActProcessNodeRejectTargetMapper;
|
||||||
|
import org.jeecg.modules.extbpm.process.service.IExtActProcessNodeRejectTargetService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 流程节点驳回目标配置
|
||||||
|
* @author: jeecg-boot
|
||||||
|
* @date: 2026-07-27
|
||||||
|
* @version: V1.0
|
||||||
|
*/
|
||||||
|
@Service("extActProcessNodeRejectTargetService")
|
||||||
|
public class ExtActProcessNodeRejectTargetServiceImpl
|
||||||
|
extends ServiceImpl<ExtActProcessNodeRejectTargetMapper, ExtActProcessNodeRejectTarget>
|
||||||
|
implements IExtActProcessNodeRejectTargetService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ExtActProcessNodeRejectTargetMapper extActProcessNodeRejectTargetMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> queryRejectTargetCodesByProcessKeyAndNodeCode(String processKey, String nodeCode) {
|
||||||
|
return extActProcessNodeRejectTargetMapper.queryRejectTargetCodesByProcessKeyAndNodeCode(processKey, nodeCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ExtActProcessNodeRejectTarget> queryBySourceNode(String processId, String sourceNodeCode) {
|
||||||
|
return extActProcessNodeRejectTargetMapper.queryBySourceNode(processId, sourceNodeCode);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user