!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("defaultOpinionCond1", extActProcessNode.getDefaultOpinion2());
|
||||
}
|
||||
// 流程标识和当前节点编码,供前端做驳回目标过滤
|
||||
map.put("processKey", pd.getKey());
|
||||
map.put("taskDefinitionKey", task.getTaskDefinitionKey());
|
||||
//--update--end------author:scott-----date:20220705-----for:【VUEN-1332】流程节点配置智能化-------------
|
||||
|
||||
// 流程审批日志
|
||||
|
||||
+53
-2
@@ -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.ExtActProcessNodeDeployment;
|
||||
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.service.IExtActFlowDataService;
|
||||
import org.jeecg.modules.extbpm.process.service.IExtActProcessNodeDeploymentService;
|
||||
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.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
@@ -67,6 +70,8 @@ public class ExtActProcessNodeController {
|
||||
private IExtActProcessNodePermissionService extActProcessNodePermissionService;
|
||||
@Autowired
|
||||
private IExtActFlowDataService extActFlowDataService;
|
||||
@Autowired
|
||||
private IExtActProcessNodeRejectTargetService extActProcessNodeRejectTargetService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
@@ -142,7 +147,7 @@ public class ExtActProcessNodeController {
|
||||
result.success("删除成功!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -158,12 +163,58 @@ public class ExtActProcessNodeController {
|
||||
if(ids==null || "".equals(ids.trim())) {
|
||||
result.error500("参数不识别!");
|
||||
}else {
|
||||
this.extActProcessNodeService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
List<String> idList = Arrays.asList(ids.split(","));
|
||||
this.extActProcessNodeService.removeByIds(idList);
|
||||
result.success("删除成功!");
|
||||
}
|
||||
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查询
|
||||
* @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