【代码评审】工作流:抄送的实现逻辑

This commit is contained in:
YunaiV 2024-08-17 22:57:44 +08:00
parent 3a433e8226
commit 14c8b591d3
3 changed files with 11 additions and 14 deletions

View File

@ -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;

View File

@ -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]));
} }

View File

@ -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);