mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-30 03:01:53 +08:00
【代码评审】工作流:抄送的实现逻辑
This commit is contained in:
parent
3a433e8226
commit
14c8b591d3
@ -31,8 +31,7 @@ public class BpmSimpleModelNodeVO {
|
|||||||
@Schema(description = "模型节点名称", example = "领导审批")
|
@Schema(description = "模型节点名称", example = "领导审批")
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
// TODO @jason:要不改成 placeholder 和一般 Element-Plus 组件一致。占位符,用于展示。@芋艿。这个不是 placeholder 占位符的含义。节点配置后。节点展示的内容,不知道取什么名字好???
|
// TODO @jason:和 gpt 大模型对了下这个字段的命名,貌似叫 displayText 合适点。可以等最后我们全局替换下。(优先级:低)
|
||||||
// TODO @jason:【回复】占位文本(showText)是指当一个文本框没有被 focus 的时候显示的是提示文字,当他被点击之后就显示空白。。。虽然不是完全精准,但是 placeholder 相对正式点~
|
|
||||||
@Schema(description = "节点展示内容", example = "指定成员: 芋道源码")
|
@Schema(description = "节点展示内容", example = "指定成员: 芋道源码")
|
||||||
private String showText;
|
private String showText;
|
||||||
|
|
||||||
@ -43,7 +42,7 @@ public class BpmSimpleModelNodeVO {
|
|||||||
private List<BpmSimpleModelNodeVO> conditionNodes; // 补充说明:有且仅有条件、并行、包容等分支会使用
|
private List<BpmSimpleModelNodeVO> conditionNodes; // 补充说明:有且仅有条件、并行、包容等分支会使用
|
||||||
|
|
||||||
@Schema(description = "节点的属性")
|
@Schema(description = "节点的属性")
|
||||||
private Map<String, Object> attributes; // TODO @jason:建议是字段分拆下;类似说:
|
private Map<String, Object> attributes; // TODO @jason:这个字段,目前只有条件表达式使用;是不是搞的更巨像。TODO @芋艿
|
||||||
|
|
||||||
// TODO @jason:看看是不是可以简化;@芋艿: 暂时先放着。不知道后面是否会用到
|
// TODO @jason:看看是不是可以简化;@芋艿: 暂时先放着。不知道后面是否会用到
|
||||||
/**
|
/**
|
||||||
@ -95,8 +94,8 @@ public class BpmSimpleModelNodeVO {
|
|||||||
*/
|
*/
|
||||||
private AssignEmptyHandler assignEmptyHandler;
|
private AssignEmptyHandler assignEmptyHandler;
|
||||||
|
|
||||||
@Data
|
|
||||||
@Schema(description = "审批节点拒绝处理策略")
|
@Schema(description = "审批节点拒绝处理策略")
|
||||||
|
@Data
|
||||||
public static class RejectHandler {
|
public static class RejectHandler {
|
||||||
|
|
||||||
@Schema(description = "拒绝处理类型", example = "1")
|
@Schema(description = "拒绝处理类型", example = "1")
|
||||||
@ -107,9 +106,9 @@ public class BpmSimpleModelNodeVO {
|
|||||||
private String returnNodeId;
|
private String returnNodeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Data
|
|
||||||
@Schema(description = "审批节点超时处理策略")
|
@Schema(description = "审批节点超时处理策略")
|
||||||
@Valid
|
@Valid
|
||||||
|
@Data
|
||||||
public static class TimeoutHandler {
|
public static class TimeoutHandler {
|
||||||
|
|
||||||
@Schema(description = "是否开启超时处理", requiredMode = Schema.RequiredMode.REQUIRED, example = "false")
|
@Schema(description = "是否开启超时处理", requiredMode = Schema.RequiredMode.REQUIRED, example = "false")
|
||||||
@ -130,8 +129,8 @@ public class BpmSimpleModelNodeVO {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Data
|
|
||||||
@Schema(description = "空处理策略")
|
@Schema(description = "空处理策略")
|
||||||
|
@Data
|
||||||
@Valid
|
@Valid
|
||||||
public static class AssignEmptyHandler {
|
public static class AssignEmptyHandler {
|
||||||
|
|
||||||
@ -145,10 +144,12 @@ public class BpmSimpleModelNodeVO {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Data
|
|
||||||
@Schema(description = "操作按钮设置")
|
@Schema(description = "操作按钮设置")
|
||||||
|
@Data
|
||||||
|
@Valid
|
||||||
public static class OperationButtonSetting {
|
public static class OperationButtonSetting {
|
||||||
|
|
||||||
|
// TODO @jason:是不是按钮的标识?id 会和数据库的 id 自增有点模糊,key 标识会更合理一点点哈。
|
||||||
@Schema(description = "按钮 Id", example = "1")
|
@Schema(description = "按钮 Id", example = "1")
|
||||||
private Integer id;
|
private Integer id;
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.strategy;
|
package cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.strategy;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.iocoder.yudao.framework.common.util.string.StrUtils;
|
import cn.iocoder.yudao.framework.common.util.string.StrUtils;
|
||||||
import cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.BpmTaskCandidateStrategy;
|
import cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.BpmTaskCandidateStrategy;
|
||||||
@ -9,7 +8,6 @@ import cn.iocoder.yudao.module.system.api.dept.DeptApi;
|
|||||||
import org.flowable.engine.delegate.DelegateExecution;
|
import org.flowable.engine.delegate.DelegateExecution;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -31,7 +29,7 @@ public class BpmTaskCandidateDeptLeaderMultiStrategy extends BpmTaskCandidateAbs
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void validateParam(String param) {
|
public void validateParam(String param) {
|
||||||
// 参数格式: | 分隔 。左边为部门(多个部门用 , 分隔)。 右边为部门层级
|
// 参数格式: | 分隔:1)左边为部门(多个部门用 , 分隔)。2)右边为部门层级
|
||||||
String[] params = param.split("\\|");
|
String[] params = param.split("\\|");
|
||||||
Assert.isTrue(params.length == 2, "参数格式不匹配");
|
Assert.isTrue(params.length == 2, "参数格式不匹配");
|
||||||
deptApi.validateDeptList(StrUtils.splitToLong(params[0], ","));
|
deptApi.validateDeptList(StrUtils.splitToLong(params[0], ","));
|
||||||
@ -40,8 +38,6 @@ public class BpmTaskCandidateDeptLeaderMultiStrategy extends BpmTaskCandidateAbs
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<Long> calculateUsers(DelegateExecution execution, String param) {
|
public Set<Long> calculateUsers(DelegateExecution execution, String param) {
|
||||||
// 参数格式: | 分隔 。左边为部门(多个部门用 , 分隔)。 右边为部门层级
|
|
||||||
// 参数格式: ,分割。前面的部门Id. 可以为多个。 最后一个为部门层级
|
|
||||||
String[] params = param.split("\\|");
|
String[] params = param.split("\\|");
|
||||||
return getMultiLevelDeptLeaderIds(StrUtils.splitToLong(params[0], ","), Integer.valueOf(params[1]));
|
return getMultiLevelDeptLeaderIds(StrUtils.splitToLong(params[0], ","), Integer.valueOf(params[1]));
|
||||||
}
|
}
|
||||||
|
@ -454,7 +454,7 @@ public class SimpleModelUtils {
|
|||||||
addFormFieldsPermission(node.getFieldsPermission(), userTask);
|
addFormFieldsPermission(node.getFieldsPermission(), userTask);
|
||||||
// 添加操作按钮配置属性元素
|
// 添加操作按钮配置属性元素
|
||||||
addButtonsSetting(node.getButtonsSetting(), userTask);
|
addButtonsSetting(node.getButtonsSetting(), userTask);
|
||||||
// 处理多实例
|
// 处理多实例(审批方式)
|
||||||
processMultiInstanceLoopCharacteristics(node.getApproveMethod(), node.getApproveRatio(), userTask);
|
processMultiInstanceLoopCharacteristics(node.getApproveMethod(), node.getApproveRatio(), userTask);
|
||||||
// 添加任务被拒绝的处理元素
|
// 添加任务被拒绝的处理元素
|
||||||
addTaskRejectElements(node.getRejectHandler(), userTask);
|
addTaskRejectElements(node.getRejectHandler(), userTask);
|
||||||
|
Loading…
Reference in New Issue
Block a user