181 changed files with 6493 additions and 10383 deletions
@ -0,0 +1,45 @@ |
|||
package org.dromara.system.api; |
|||
|
|||
import org.dromara.system.api.domain.bo.RemoteTaskAssigneeBo; |
|||
import org.dromara.system.api.domain.vo.RemoteTaskAssigneeVo; |
|||
|
|||
/** |
|||
* 工作流设计器获取任务执行人 |
|||
* |
|||
* @author Lion Li |
|||
*/ |
|||
public interface RemoteTaskAssigneeService { |
|||
|
|||
/** |
|||
* 查询角色并返回任务指派的列表,支持分页 |
|||
* |
|||
* @param taskQuery 查询条件 |
|||
* @return 办理人 |
|||
*/ |
|||
RemoteTaskAssigneeVo selectRolesByTaskAssigneeList(RemoteTaskAssigneeBo taskQuery); |
|||
|
|||
/** |
|||
* 查询岗位并返回任务指派的列表,支持分页 |
|||
* |
|||
* @param taskQuery 查询条件 |
|||
* @return 办理人 |
|||
*/ |
|||
RemoteTaskAssigneeVo selectPostsByTaskAssigneeList(RemoteTaskAssigneeBo taskQuery); |
|||
|
|||
/** |
|||
* 查询部门并返回任务指派的列表,支持分页 |
|||
* |
|||
* @param taskQuery 查询条件 |
|||
* @return 办理人 |
|||
*/ |
|||
RemoteTaskAssigneeVo selectDeptsByTaskAssigneeList(RemoteTaskAssigneeBo taskQuery); |
|||
|
|||
/** |
|||
* 查询用户并返回任务指派的列表,支持分页 |
|||
* |
|||
* @param taskQuery 查询条件 |
|||
* @return 办理人 |
|||
*/ |
|||
RemoteTaskAssigneeVo selectUsersByTaskAssigneeList(RemoteTaskAssigneeBo taskQuery); |
|||
|
|||
} |
@ -0,0 +1,56 @@ |
|||
package org.dromara.system.api.domain.bo; |
|||
|
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 任务受让人 |
|||
* |
|||
* @author AprilWind |
|||
*/ |
|||
@Data |
|||
@NoArgsConstructor |
|||
public class RemoteTaskAssigneeBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 权限编码 |
|||
*/ |
|||
private String handlerCode; |
|||
|
|||
/** |
|||
* 权限名称 |
|||
*/ |
|||
private String handlerName; |
|||
|
|||
/** |
|||
* 权限分组 |
|||
*/ |
|||
private String groupId; |
|||
|
|||
/** |
|||
* 开始时间 |
|||
*/ |
|||
private String beginTime; |
|||
|
|||
/** |
|||
* 结束时间 |
|||
*/ |
|||
private String endTime; |
|||
|
|||
/** |
|||
* 当前页 |
|||
*/ |
|||
private Integer pageNum = 1; |
|||
|
|||
/** |
|||
* 每页显示条数 |
|||
*/ |
|||
private Integer pageSize = 10; |
|||
|
|||
} |
@ -0,0 +1,37 @@ |
|||
package org.dromara.system.api.domain.vo; |
|||
|
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 部门 |
|||
* |
|||
* @author AprilWind |
|||
*/ |
|||
|
|||
@Data |
|||
@NoArgsConstructor |
|||
public class RemoteDeptVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 部门ID |
|||
*/ |
|||
private Long deptId; |
|||
|
|||
/** |
|||
* 父部门ID |
|||
*/ |
|||
private Long parentId; |
|||
|
|||
/** |
|||
* 部门名称 |
|||
*/ |
|||
private String deptName; |
|||
|
|||
} |
@ -0,0 +1,101 @@ |
|||
package org.dromara.system.api.domain.vo; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
import java.util.function.Function; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* 任务受让人 |
|||
* |
|||
* @author AprilWind |
|||
*/ |
|||
@Data |
|||
@NoArgsConstructor |
|||
public class RemoteTaskAssigneeVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 总大小 |
|||
*/ |
|||
private Long total = 0L; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
private List<TaskHandler> list; |
|||
|
|||
public RemoteTaskAssigneeVo(Long total, List<TaskHandler> list) { |
|||
this.total = total; |
|||
this.list = list; |
|||
} |
|||
|
|||
/** |
|||
* 将源列表转换为 TaskHandler 列表 |
|||
* |
|||
* @param <T> 通用类型 |
|||
* @param sourceList 待转换的源列表 |
|||
* @param storageId 提取 storageId 的函数 |
|||
* @param handlerCode 提取 handlerCode 的函数 |
|||
* @param handlerName 提取 handlerName 的函数 |
|||
* @param groupName 提取 groupName 的函数 |
|||
* @param createTimeMapper 提取 createTime 的函数 |
|||
* @return 转换后的 TaskHandler 列表 |
|||
*/ |
|||
public static <T> List<TaskHandler> convertToHandlerList( |
|||
List<T> sourceList, |
|||
Function<T, Long> storageId, |
|||
Function<T, String> handlerCode, |
|||
Function<T, String> handlerName, |
|||
Function<T, Long> groupName, |
|||
Function<T, Date> createTimeMapper) { |
|||
return sourceList.stream() |
|||
.map(item -> new TaskHandler( |
|||
String.valueOf(storageId.apply(item)), |
|||
handlerCode.apply(item), |
|||
handlerName.apply(item), |
|||
groupName != null ? String.valueOf(groupName.apply(item)) : null, |
|||
createTimeMapper.apply(item) |
|||
)).collect(Collectors.toList()); |
|||
} |
|||
|
|||
@Data |
|||
@NoArgsConstructor |
|||
@AllArgsConstructor |
|||
public static class TaskHandler { |
|||
|
|||
/** |
|||
* 主键 |
|||
*/ |
|||
private String storageId; |
|||
|
|||
/** |
|||
* 权限编码 |
|||
*/ |
|||
private String handlerCode; |
|||
|
|||
/** |
|||
* 权限名称 |
|||
*/ |
|||
private String handlerName; |
|||
|
|||
/** |
|||
* 权限分组 |
|||
*/ |
|||
private String groupName; |
|||
|
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
private Date createTime; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,46 @@ |
|||
package org.dromara.system.api.model; |
|||
|
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 岗位 |
|||
* |
|||
* @author AprilWind |
|||
*/ |
|||
@Data |
|||
@NoArgsConstructor |
|||
public class PostDTO implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 岗位ID |
|||
*/ |
|||
private Long postId; |
|||
|
|||
/** |
|||
* 部门id |
|||
*/ |
|||
private Long deptId; |
|||
|
|||
/** |
|||
* 岗位编码 |
|||
*/ |
|||
private String postCode; |
|||
|
|||
/** |
|||
* 岗位名称 |
|||
*/ |
|||
private String postName; |
|||
|
|||
/** |
|||
* 岗位类别编码 |
|||
*/ |
|||
private String postCategory; |
|||
|
|||
} |
@ -0,0 +1,88 @@ |
|||
package org.dromara.workflow.api; |
|||
|
|||
import org.dromara.workflow.api.domain.RemoteCompleteTask; |
|||
import org.dromara.workflow.api.domain.RemoteStartProcess; |
|||
import org.dromara.workflow.api.domain.RemoteStartProcessReturn; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 通用 工作流服务 |
|||
* |
|||
* @Author ZETA |
|||
* @Date 2024/6/3 |
|||
*/ |
|||
public interface RemoteWorkflowService { |
|||
|
|||
/** |
|||
* 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 |
|||
* |
|||
* @param businessIds 业务id |
|||
* @return 结果 |
|||
*/ |
|||
boolean deleteInstance(List<Long> businessIds); |
|||
|
|||
/** |
|||
* 获取当前流程状态 |
|||
* |
|||
* @param taskId 任务id |
|||
* @return 状态 |
|||
*/ |
|||
String getBusinessStatusByTaskId(Long taskId); |
|||
|
|||
/** |
|||
* 获取当前流程状态 |
|||
* |
|||
* @param businessId 业务id |
|||
* @return 状态 |
|||
*/ |
|||
String getBusinessStatus(String businessId); |
|||
|
|||
/** |
|||
* 设置流程变量 |
|||
* |
|||
* @param instanceId 流程实例id |
|||
* @param variable 流程变量 |
|||
*/ |
|||
void setVariable(Long instanceId, Map<String, Object> variable); |
|||
|
|||
/** |
|||
* 获取流程变量 |
|||
* |
|||
* @param instanceId 流程实例id |
|||
*/ |
|||
Map<String, Object> instanceVariable(Long instanceId); |
|||
|
|||
/** |
|||
* 按照业务id查询流程实例id |
|||
* |
|||
* @param businessId 业务id |
|||
* @return 结果 |
|||
*/ |
|||
Long getInstanceIdByBusinessId(String businessId); |
|||
|
|||
/** |
|||
* 新增租户流程定义 |
|||
* |
|||
* @param tenantId 租户id |
|||
*/ |
|||
void syncDef(String tenantId); |
|||
|
|||
/** |
|||
* 启动流程 |
|||
* |
|||
* @param startProcess 参数 |
|||
* @return 结果 |
|||
*/ |
|||
RemoteStartProcessReturn startWorkFlow(RemoteStartProcess startProcess); |
|||
|
|||
/** |
|||
* 办理任务 |
|||
* |
|||
* @param completeTask 参数 |
|||
* @return 结果 |
|||
*/ |
|||
boolean completeTask(RemoteCompleteTask completeTask); |
|||
|
|||
} |
@ -0,0 +1,71 @@ |
|||
package org.dromara.workflow.api.domain; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.HashMap; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.Objects; |
|||
|
|||
/** |
|||
* 办理任务请求对象 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class RemoteCompleteTask implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 任务id |
|||
*/ |
|||
private Long taskId; |
|||
|
|||
/** |
|||
* 附件id |
|||
*/ |
|||
private String fileId; |
|||
|
|||
/** |
|||
* 抄送人员 |
|||
*/ |
|||
private List<RemoteFlowCopy> flowCopyList; |
|||
|
|||
/** |
|||
* 消息类型 |
|||
*/ |
|||
private List<String> messageType; |
|||
|
|||
/** |
|||
* 办理意见 |
|||
*/ |
|||
private String message; |
|||
|
|||
/** |
|||
* 消息通知 |
|||
*/ |
|||
private String notice; |
|||
|
|||
/** |
|||
* 流程变量 |
|||
*/ |
|||
private Map<String, Object> variables; |
|||
|
|||
/** |
|||
* 扩展变量(此处为逗号分隔的ossId) |
|||
*/ |
|||
private String ext; |
|||
|
|||
public Map<String, Object> getVariables() { |
|||
if (variables == null) { |
|||
return new HashMap<>(16); |
|||
} |
|||
variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue())); |
|||
return variables; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,30 @@ |
|||
package org.dromara.workflow.api.domain; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
|
|||
/** |
|||
* 抄送 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class RemoteFlowCopy implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 用户id |
|||
*/ |
|||
private Long userId; |
|||
|
|||
/** |
|||
* 用户名称 |
|||
*/ |
|||
private String userName; |
|||
|
|||
} |
@ -0,0 +1,45 @@ |
|||
package org.dromara.workflow.api.domain; |
|||
|
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.HashMap; |
|||
import java.util.Map; |
|||
import java.util.Objects; |
|||
|
|||
/** |
|||
* 启动流程对象 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class RemoteStartProcess implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 业务唯一值id |
|||
*/ |
|||
private String businessId; |
|||
|
|||
/** |
|||
* 流程定义编码 |
|||
*/ |
|||
private String flowCode; |
|||
|
|||
/** |
|||
* 流程变量,前端会提交一个元素{'entity': {业务详情数据对象}} |
|||
*/ |
|||
private Map<String, Object> variables; |
|||
|
|||
public Map<String, Object> getVariables() { |
|||
if (variables == null) { |
|||
return new HashMap<>(16); |
|||
} |
|||
variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue())); |
|||
return variables; |
|||
} |
|||
} |
@ -0,0 +1,30 @@ |
|||
package org.dromara.workflow.api.domain; |
|||
|
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 启动流程返回对象 |
|||
* |
|||
* @author Lion Li |
|||
*/ |
|||
@Data |
|||
public class RemoteStartProcessReturn implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 流程实例id |
|||
*/ |
|||
private Long processInstanceId; |
|||
|
|||
/** |
|||
* 任务id |
|||
*/ |
|||
private Long taskId; |
|||
|
|||
} |
@ -1,78 +0,0 @@ |
|||
package org.dromara.workflow.api.domain; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 通用 工作流服务 |
|||
* |
|||
* @Author ZETA |
|||
* @Date 2024/6/3 |
|||
*/ |
|||
public interface RemoteWorkflowService { |
|||
|
|||
/** |
|||
* 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 |
|||
* |
|||
* @param businessKeys 业务id |
|||
* @return 结果 |
|||
*/ |
|||
boolean deleteRunAndHisInstance(List<String> businessKeys); |
|||
|
|||
/** |
|||
* 获取当前流程状态 |
|||
* |
|||
* @param taskId 任务id |
|||
*/ |
|||
String getBusinessStatusByTaskId(String taskId); |
|||
|
|||
/** |
|||
* 获取当前流程状态 |
|||
* |
|||
* @param businessKey 业务id |
|||
*/ |
|||
String getBusinessStatus(String businessKey); |
|||
|
|||
/** |
|||
* 设置流程变量(全局变量) |
|||
* |
|||
* @param taskId 任务id |
|||
* @param variableName 变量名称 |
|||
* @param value 变量值 |
|||
*/ |
|||
void setVariable(String taskId, String variableName, Object value); |
|||
|
|||
/** |
|||
* 设置流程变量(全局变量) |
|||
* |
|||
* @param taskId 任务id |
|||
* @param variables 流程变量 |
|||
*/ |
|||
void setVariables(String taskId, Map<String, Object> variables); |
|||
|
|||
/** |
|||
* 设置流程变量(本地变量,非全局变量) |
|||
* |
|||
* @param taskId 任务id |
|||
* @param variableName 变量名称 |
|||
* @param value 变量值 |
|||
*/ |
|||
void setVariableLocal(String taskId, String variableName, Object value); |
|||
|
|||
/** |
|||
* 设置流程变量(本地变量,非全局变量) |
|||
* |
|||
* @param taskId 任务id |
|||
* @param variables 流程变量 |
|||
*/ |
|||
void setVariablesLocal(String taskId, Map<String, Object> variables); |
|||
|
|||
/** |
|||
* 按照业务id查询流程实例id |
|||
* |
|||
* @param businessKey 业务id |
|||
* @return 结果 |
|||
*/ |
|||
String getInstanceIdByBusinessKey(String businessKey); |
|||
|
|||
} |
@ -0,0 +1,41 @@ |
|||
package org.dromara.workflow.api.event; |
|||
|
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
import org.dromara.common.core.utils.SpringUtils; |
|||
import org.springframework.cloud.bus.event.RemoteApplicationEvent; |
|||
|
|||
import java.io.Serial; |
|||
|
|||
/** |
|||
* 删除流程监听 |
|||
* |
|||
* @author AprilWind |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
public class ProcessDeleteEvent extends RemoteApplicationEvent { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 租户ID |
|||
*/ |
|||
private String tenantId; |
|||
|
|||
/** |
|||
* 流程定义编码 |
|||
*/ |
|||
private String flowCode; |
|||
|
|||
/** |
|||
* 业务id |
|||
*/ |
|||
private String businessId; |
|||
|
|||
public ProcessDeleteEvent() { |
|||
super(new Object(), SpringUtils.getApplicationName(), DEFAULT_DESTINATION_FACTORY.getDestination(null)); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,74 @@ |
|||
package org.dromara.common.core.constant; |
|||
|
|||
/** |
|||
* 用户常量信息 |
|||
* |
|||
* @author Lion Li |
|||
*/ |
|||
public interface SystemConstants { |
|||
|
|||
/** |
|||
* 正常状态 |
|||
*/ |
|||
String NORMAL = "0"; |
|||
|
|||
/** |
|||
* 异常状态 |
|||
*/ |
|||
String DISABLE = "1"; |
|||
|
|||
/** |
|||
* 是否为系统默认(是) |
|||
*/ |
|||
String YES = "Y"; |
|||
|
|||
/** |
|||
* 是否菜单外链(是) |
|||
*/ |
|||
String YES_FRAME = "0"; |
|||
|
|||
/** |
|||
* 是否菜单外链(否) |
|||
*/ |
|||
String NO_FRAME = "1"; |
|||
|
|||
/** |
|||
* 菜单类型(目录) |
|||
*/ |
|||
String TYPE_DIR = "M"; |
|||
|
|||
/** |
|||
* 菜单类型(菜单) |
|||
*/ |
|||
String TYPE_MENU = "C"; |
|||
|
|||
/** |
|||
* 菜单类型(按钮) |
|||
*/ |
|||
String TYPE_BUTTON = "F"; |
|||
|
|||
/** |
|||
* Layout组件标识 |
|||
*/ |
|||
String LAYOUT = "Layout"; |
|||
|
|||
/** |
|||
* ParentView组件标识 |
|||
*/ |
|||
String PARENT_VIEW = "ParentView"; |
|||
|
|||
/** |
|||
* InnerLink组件标识 |
|||
*/ |
|||
String INNER_LINK = "InnerLink"; |
|||
|
|||
/** |
|||
* 超级管理员ID |
|||
*/ |
|||
Long SUPER_ADMIN_ID = 1L; |
|||
|
|||
/** |
|||
* 根部门祖级列表 |
|||
*/ |
|||
String ROOT_DEPT_ANCESTORS = "0"; |
|||
} |
@ -0,0 +1,146 @@ |
|||
package org.dromara.common.core.enums; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Getter; |
|||
import org.dromara.common.core.utils.StringUtils; |
|||
|
|||
/* |
|||
* 日期格式 |
|||
* "yyyy":4位数的年份,例如:2023年表示为"2023"。 |
|||
* "yy":2位数的年份,例如:2023年表示为"23"。 |
|||
* "MM":2位数的月份,取值范围为01到12,例如:7月表示为"07"。 |
|||
* "M":不带前导零的月份,取值范围为1到12,例如:7月表示为"7"。 |
|||
* "dd":2位数的日期,取值范围为01到31,例如:22日表示为"22"。 |
|||
* "d":不带前导零的日期,取值范围为1到31,例如:22日表示为"22"。 |
|||
* "EEEE":星期的全名,例如:星期三表示为"Wednesday"。 |
|||
* "E":星期的缩写,例如:星期三表示为"Wed"。 |
|||
* "DDD" 或 "D":一年中的第几天,取值范围为001到366,例如:第200天表示为"200"。 |
|||
* 时间格式 |
|||
* "HH":24小时制的小时数,取值范围为00到23,例如:下午5点表示为"17"。 |
|||
* "hh":12小时制的小时数,取值范围为01到12,例如:下午5点表示为"05"。 |
|||
* "mm":分钟数,取值范围为00到59,例如:30分钟表示为"30"。 |
|||
* "ss":秒数,取值范围为00到59,例如:45秒表示为"45"。 |
|||
* "SSS":毫秒数,取值范围为000到999,例如:123毫秒表示为"123"。 |
|||
*/ |
|||
|
|||
/** |
|||
* 日期格式与时间格式枚举 |
|||
*/ |
|||
@Getter |
|||
@AllArgsConstructor |
|||
public enum FormatsType { |
|||
|
|||
/** |
|||
* 例如:2023年表示为"23" |
|||
*/ |
|||
YY("yy"), |
|||
|
|||
/** |
|||
* 例如:2023年表示为"2023" |
|||
*/ |
|||
YYYY("yyyy"), |
|||
|
|||
/** |
|||
* 例例如,2023年7月可以表示为 "2023-07" |
|||
*/ |
|||
YYYY_MM("yyyy-MM"), |
|||
|
|||
/** |
|||
* 例如,日期 "2023年7月22日" 可以表示为 "2023-07-22" |
|||
*/ |
|||
YYYY_MM_DD("yyyy-MM-dd"), |
|||
|
|||
/** |
|||
* 例如,当前时间如果是 "2023年7月22日下午3点30分",则可以表示为 "2023-07-22 15:30" |
|||
*/ |
|||
YYYY_MM_DD_HH_MM("yyyy-MM-dd HH:mm"), |
|||
|
|||
/** |
|||
* 例如,当前时间如果是 "2023年7月22日下午3点30分45秒",则可以表示为 "2023-07-22 15:30:45" |
|||
*/ |
|||
YYYY_MM_DD_HH_MM_SS("yyyy-MM-dd HH:mm:ss"), |
|||
|
|||
/** |
|||
* 例如:下午3点30分45秒,表示为 "15:30:45" |
|||
*/ |
|||
HH_MM_SS("HH:mm:ss"), |
|||
|
|||
/** |
|||
* 例例如,2023年7月可以表示为 "2023/07" |
|||
*/ |
|||
YYYY_MM_SLASH("yyyy/MM"), |
|||
|
|||
/** |
|||
* 例如,日期 "2023年7月22日" 可以表示为 "2023/07/22" |
|||
*/ |
|||
YYYY_MM_DD_SLASH("yyyy/MM/dd"), |
|||
|
|||
/** |
|||
* 例如,当前时间如果是 "2023年7月22日下午3点30分45秒",则可以表示为 "2023/07/22 15:30:45" |
|||
*/ |
|||
YYYY_MM_DD_HH_MM_SLASH("yyyy/MM/dd HH:mm"), |
|||
|
|||
/** |
|||
* 例如,当前时间如果是 "2023年7月22日下午3点30分45秒",则可以表示为 "2023/07/22 15:30:45" |
|||
*/ |
|||
YYYY_MM_DD_HH_MM_SS_SLASH("yyyy/MM/dd HH:mm:ss"), |
|||
|
|||
/** |
|||
* 例例如,2023年7月可以表示为 "2023.07" |
|||
*/ |
|||
YYYY_MM_DOT("yyyy.MM"), |
|||
|
|||
/** |
|||
* 例如,日期 "2023年7月22日" 可以表示为 "2023.07.22" |
|||
*/ |
|||
YYYY_MM_DD_DOT("yyyy.MM.dd"), |
|||
|
|||
/** |
|||
* 例如,当前时间如果是 "2023年7月22日下午3点30分",则可以表示为 "2023.07.22 15:30" |
|||
*/ |
|||
YYYY_MM_DD_HH_MM_DOT("yyyy.MM.dd HH:mm"), |
|||
|
|||
/** |
|||
* 例如,当前时间如果是 "2023年7月22日下午3点30分45秒",则可以表示为 "2023.07.22 15:30:45" |
|||
*/ |
|||
YYYY_MM_DD_HH_MM_SS_DOT("yyyy.MM.dd HH:mm:ss"), |
|||
|
|||
/** |
|||
* 例如,2023年7月可以表示为 "202307" |
|||
*/ |
|||
YYYYMM("yyyyMM"), |
|||
|
|||
/** |
|||
* 例如,2023年7月22日可以表示为 "20230722" |
|||
*/ |
|||
YYYYMMDD("yyyyMMdd"), |
|||
|
|||
/** |
|||
* 例如,2023年7月22日下午3点可以表示为 "2023072215" |
|||
*/ |
|||
YYYYMMDDHH("yyyyMMddHH"), |
|||
|
|||
/** |
|||
* 例如,2023年7月22日下午3点30分可以表示为 "202307221530" |
|||
*/ |
|||
YYYYMMDDHHMM("yyyyMMddHHmm"), |
|||
|
|||
/** |
|||
* 例如,2023年7月22日下午3点30分45秒可以表示为 "20230722153045" |
|||
*/ |
|||
YYYYMMDDHHMMSS("yyyyMMddHHmmss"); |
|||
|
|||
/** |
|||
* 时间格式 |
|||
*/ |
|||
private final String timeFormat; |
|||
|
|||
public static FormatsType getFormatsType(String str) { |
|||
for (FormatsType value : values()) { |
|||
if (StringUtils.contains(str, value.getTimeFormat())) { |
|||
return value; |
|||
} |
|||
} |
|||
throw new RuntimeException("'FormatsType' not found By " + str); |
|||
} |
|||
} |
@ -0,0 +1,60 @@ |
|||
package org.dromara.common.core.utils; |
|||
|
|||
import cn.hutool.core.util.ObjectUtil; |
|||
import lombok.AccessLevel; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.util.function.Function; |
|||
|
|||
/** |
|||
* 对象工具类 |
|||
* |
|||
* @author 秋辞未寒 |
|||
*/ |
|||
@NoArgsConstructor(access = AccessLevel.PRIVATE) |
|||
public class ObjectUtils extends ObjectUtil { |
|||
|
|||
/** |
|||
* 如果对象不为空,则获取对象中的某个字段 ObjectUtils.notNullGetter(user, User::getName); |
|||
* |
|||
* @param obj 对象 |
|||
* @param func 获取方法 |
|||
* @return 对象字段 |
|||
*/ |
|||
public static <T, E> E notNullGetter(T obj, Function<T, E> func) { |
|||
if (isNotNull(obj) && isNotNull(func)) { |
|||
return func.apply(obj); |
|||
} |
|||
return null; |
|||
} |
|||
|
|||
/** |
|||
* 如果对象不为空,则获取对象中的某个字段,否则返回默认值 |
|||
* |
|||
* @param obj 对象 |
|||
* @param func 获取方法 |
|||
* @param defaultValue 默认值 |
|||
* @return 对象字段 |
|||
*/ |
|||
public static <T, E> E notNullGetter(T obj, Function<T, E> func, E defaultValue) { |
|||
if (isNotNull(obj) && isNotNull(func)) { |
|||
return func.apply(obj); |
|||
} |
|||
return defaultValue; |
|||
} |
|||
|
|||
/** |
|||
* 如果值不为空,则返回值,否则返回默认值 |
|||
* |
|||
* @param obj 对象 |
|||
* @param defaultValue 默认值 |
|||
* @return 对象字段 |
|||
*/ |
|||
public static <T> T notNull(T obj, T defaultValue) { |
|||
if (isNotNull(obj)) { |
|||
return obj; |
|||
} |
|||
return defaultValue; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,14 @@ |
|||
package org.dromara.workflow.common; |
|||
|
|||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
|||
|
|||
import java.lang.annotation.ElementType; |
|||
import java.lang.annotation.Retention; |
|||
import java.lang.annotation.RetentionPolicy; |
|||
import java.lang.annotation.Target; |
|||
|
|||
@Retention(RetentionPolicy.RUNTIME) |
|||
@Target({ ElementType.TYPE, ElementType.METHOD }) |
|||
@ConditionalOnProperty(value = "warm-flow.enabled", havingValue = "true") |
|||
public @interface ConditionalOnEnable { |
|||
} |
@ -1,54 +0,0 @@ |
|||
package org.dromara.workflow.common.enums; |
|||
|
|||
import cn.hutool.core.util.StrUtil; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Getter; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
|
|||
import java.util.Arrays; |
|||
|
|||
/** |
|||
* 任务状态枚举 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Getter |
|||
@AllArgsConstructor |
|||
public enum FormTypeEnum { |
|||
/** |
|||
* 自定义表单 |
|||
*/ |
|||
STATIC("static", "自定义表单"), |
|||
/** |
|||
* 动态表单 |
|||
*/ |
|||
DYNAMIC("dynamic", "动态表单"); |
|||
|
|||
/** |
|||
* 类型 |
|||
*/ |
|||
private final String type; |
|||
|
|||
/** |
|||
* 描述 |
|||
*/ |
|||
private final String desc; |
|||
|
|||
/** |
|||
* 表单类型 |
|||
* |
|||
* @param formType 表单类型 |
|||
*/ |
|||
public static String findByType(String formType) { |
|||
if (StringUtils.isBlank(formType)) { |
|||
return StrUtil.EMPTY; |
|||
} |
|||
|
|||
return Arrays.stream(FormTypeEnum.values()) |
|||
.filter(statusEnum -> statusEnum.getType().equals(formType)) |
|||
.findFirst() |
|||
.map(FormTypeEnum::getDesc) |
|||
.orElse(StrUtil.EMPTY); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,109 @@ |
|||
package org.dromara.workflow.common.enums; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Getter; |
|||
import org.dromara.common.core.exception.ServiceException; |
|||
|
|||
import java.util.Arrays; |
|||
import java.util.List; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* 任务分配人枚举 |
|||
* |
|||
* @author AprilWind |
|||
*/ |
|||
@Getter |
|||
@AllArgsConstructor |
|||
public enum TaskAssigneeEnum { |
|||
|
|||
/** |
|||
* 用户 |
|||
*/ |
|||
USER("用户", ""), |
|||
|
|||
/** |
|||
* 角色 |
|||
*/ |
|||
ROLE("角色", "role:"), |
|||
|
|||
/** |
|||
* 部门 |
|||
*/ |
|||
DEPT("部门", "dept:"), |
|||
|
|||
/** |
|||
* 岗位 |
|||
*/ |
|||
POST("岗位", "post:"); |
|||
|
|||
private final String desc; |
|||
private final String code; |
|||
|
|||
/** |
|||
* 根据描述获取对应的枚举类型 |
|||
* <p> |
|||
* 通过传入描述,查找并返回匹配的枚举项。如果未找到匹配项,会抛出 {@link ServiceException}。 |
|||
* </p> |
|||
* |
|||
* @param desc 描述,用于匹配对应的枚举项 |
|||
* @return TaskAssigneeEnum 返回对应的枚举类型 |
|||
* @throws ServiceException 如果未找到匹配的枚举项 |
|||
*/ |
|||
public static TaskAssigneeEnum fromDesc(String desc) { |
|||
for (TaskAssigneeEnum type : values()) { |
|||
if (type.getDesc().equals(desc)) { |
|||
return type; |
|||
} |
|||
} |
|||
throw new ServiceException("未知的办理人类型: " + desc); |
|||
} |
|||
|
|||
/** |
|||
* 根据代码获取对应的枚举类型 |
|||
* <p> |
|||
* 通过传入代码,查找并返回匹配的枚举项。如果未找到匹配项,会抛出 {@link ServiceException}。 |
|||
* </p> |
|||
* |
|||
* @param code 代码,用于匹配对应的枚举项 |
|||
* @return TaskAssigneeEnum 返回对应的枚举类型 |
|||
* @throws IllegalArgumentException 如果未找到匹配的枚举项 |
|||
*/ |
|||
public static TaskAssigneeEnum fromCode(String code) { |
|||
for (TaskAssigneeEnum type : values()) { |
|||
if (type.getCode().equals(code)) { |
|||
return type; |
|||
} |
|||
} |
|||
throw new ServiceException("未知的办理人类型代码: " + code); |
|||
} |
|||
|
|||
/** |
|||
* 获取所有办理人类型的描述列表 |
|||
* <p> |
|||
* 获取当前枚举类所有项的描述字段列表,通常用于展示选择项。 |
|||
* </p> |
|||
* |
|||
* @return List<String> 返回所有办理人类型的描述列表 |
|||
*/ |
|||
public static List<String> getAssigneeTypeList() { |
|||
return Arrays.stream(values()) |
|||
.map(TaskAssigneeEnum::getDesc) |
|||
.collect(Collectors.toList()); |
|||
} |
|||
|
|||
/** |
|||
* 获取所有办理人类型的代码列表 |
|||
* <p> |
|||
* 获取当前枚举类所有项的代码字段列表,通常用于程序内部逻辑的判断。 |
|||
* </p> |
|||
* |
|||
* @return List<String> 返回所有办理人类型的代码列表 |
|||
*/ |
|||
public static List<String> getAssigneeCodeList() { |
|||
return Arrays.stream(values()) |
|||
.map(TaskAssigneeEnum::getCode) |
|||
.collect(Collectors.toList()); |
|||
} |
|||
} |
|||
|
@ -0,0 +1,49 @@ |
|||
package org.dromara.workflow.common.enums; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Getter; |
|||
|
|||
/** |
|||
* 人员类型 |
|||
* |
|||
* @author AprilWind |
|||
*/ |
|||
@Getter |
|||
@AllArgsConstructor |
|||
public enum TaskAssigneeType { |
|||
|
|||
/** |
|||
* 待办任务的审批人权限 |
|||
* <p>该权限表示用户是待办任务的审批人,负责审核任务的执行情况。</p> |
|||
*/ |
|||
APPROVER("1", "待办任务的审批人权限"), |
|||
|
|||
/** |
|||
* 待办任务的转办人权限 |
|||
* <p>该权限表示用户是待办任务的转办人,负责将任务分配给其他人员。</p> |
|||
*/ |
|||
TRANSFER("2", "待办任务的转办人权限"), |
|||
|
|||
/** |
|||
* 待办任务的委托人权限 |
|||
* <p>该权限表示用户是待办任务的委托人,能够委托其他人代为处理任务。</p> |
|||
*/ |
|||
DELEGATE("3", "待办任务的委托人权限"), |
|||
|
|||
/** |
|||
* 待办任务的抄送人权限 |
|||
* <p>该权限表示用户是待办任务的抄送人,仅接收任务信息的通知,不参与任务的审批或处理。</p> |
|||
*/ |
|||
COPY("4", "待办任务的抄送人权限"); |
|||
|
|||
/** |
|||
* 类型 |
|||
*/ |
|||
private final String code; |
|||
|
|||
/** |
|||
* 描述 |
|||
*/ |
|||
private final String description; |
|||
|
|||
} |
@ -0,0 +1,16 @@ |
|||
package org.dromara.workflow.config; |
|||
|
|||
import org.dromara.workflow.common.ConditionalOnEnable; |
|||
import org.springframework.context.annotation.Configuration; |
|||
|
|||
/** |
|||
* warmFlow配置 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@ConditionalOnEnable |
|||
@Configuration |
|||
public class WarmFlowConfig { |
|||
|
|||
} |
|||
|
@ -1,148 +0,0 @@ |
|||
package org.dromara.workflow.controller; |
|||
|
|||
import jakarta.servlet.http.HttpServletResponse; |
|||
import jakarta.validation.constraints.NotBlank; |
|||
import jakarta.validation.constraints.NotEmpty; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.dromara.common.core.domain.R; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.core.validate.EditGroup; |
|||
import org.dromara.common.idempotent.annotation.RepeatSubmit; |
|||
import org.dromara.common.log.annotation.Log; |
|||
import org.dromara.common.log.enums.BusinessType; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
import org.dromara.common.web.core.BaseController; |
|||
import org.dromara.workflow.domain.bo.ModelBo; |
|||
import org.dromara.workflow.domain.vo.ModelVo; |
|||
import org.dromara.workflow.service.IActModelService; |
|||
import org.flowable.engine.RepositoryService; |
|||
import org.flowable.engine.repository.Model; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.Arrays; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 模型管理 控制层 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Validated |
|||
@RequiredArgsConstructor |
|||
@RestController |
|||
@RequestMapping("/model") |
|||
public class ActModelController extends BaseController { |
|||
|
|||
@Autowired(required = false) |
|||
private RepositoryService repositoryService; |
|||
private final IActModelService actModelService; |
|||
|
|||
|
|||
/** |
|||
* 分页查询模型 |
|||
* |
|||
* @param modelBo 模型参数 |
|||
*/ |
|||
@GetMapping("/list") |
|||
public TableDataInfo<Model> page(ModelBo modelBo, PageQuery pageQuery) { |
|||
return actModelService.page(modelBo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 新增模型 |
|||
* |
|||
* @param modelBo 模型请求对象 |
|||
*/ |
|||
@Log(title = "模型管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/save") |
|||
public R<Void> saveNewModel(@Validated(AddGroup.class) @RequestBody ModelBo modelBo) { |
|||
return toAjax(actModelService.saveNewModel(modelBo)); |
|||
} |
|||
|
|||
/** |
|||
* 查询模型 |
|||
* |
|||
* @param id 模型id |
|||
*/ |
|||
@GetMapping("/getInfo/{id}") |
|||
public R<ModelVo> getInfo(@NotBlank(message = "模型id不能为空") @PathVariable String id) { |
|||
return R.ok(actModelService.getInfo(id)); |
|||
} |
|||
|
|||
/** |
|||
* 修改模型信息 |
|||
* |
|||
* @param modelBo 模型数据 |
|||
*/ |
|||
@Log(title = "模型管理", businessType = BusinessType.UPDATE) |
|||
@RepeatSubmit() |
|||
@PutMapping(value = "/update") |
|||
public R<Void> update(@RequestBody ModelBo modelBo) { |
|||
return toAjax(actModelService.update(modelBo)); |
|||
} |
|||
|
|||
/** |
|||
* 编辑XMl模型 |
|||
* |
|||
* @param modelBo 模型数据 |
|||
*/ |
|||
@Log(title = "模型管理", businessType = BusinessType.UPDATE) |
|||
@RepeatSubmit() |
|||
@PutMapping(value = "/editModelXml") |
|||
public R<Void> editModel(@Validated(EditGroup.class) @RequestBody ModelBo modelBo) { |
|||
return toAjax(actModelService.editModelXml(modelBo)); |
|||
} |
|||
|
|||
/** |
|||
* 删除流程模型 |
|||
* |
|||
* @param ids 模型id |
|||
*/ |
|||
@Log(title = "模型管理", businessType = BusinessType.DELETE) |
|||
@RepeatSubmit() |
|||
@DeleteMapping("/{ids}") |
|||
@Transactional(rollbackFor = Exception.class) |
|||
public R<Void> delete(@NotEmpty(message = "主键不能为空") @PathVariable String[] ids) { |
|||
Arrays.stream(ids).parallel().forEachOrdered(repositoryService::deleteModel); |
|||
return R.ok(); |
|||
} |
|||
|
|||
/** |
|||
* 模型部署 |
|||
* |
|||
* @param id 模型id |
|||
*/ |
|||
@Log(title = "模型管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/modelDeploy/{id}") |
|||
public R<Void> deploy(@NotBlank(message = "模型id不能为空") @PathVariable("id") String id) { |
|||
return toAjax(actModelService.modelDeploy(id)); |
|||
} |
|||
|
|||
/** |
|||
* 导出模型zip压缩包 |
|||
* |
|||
* @param modelIds 模型id |
|||
* @param response 相应 |
|||
*/ |
|||
@GetMapping("/export/zip/{modelIds}") |
|||
public void exportZip(@NotEmpty(message = "模型id不能为空") @PathVariable List<String> modelIds, |
|||
HttpServletResponse response) { |
|||
actModelService.exportZip(modelIds, response); |
|||
} |
|||
|
|||
/** |
|||
* 复制模型 |
|||
* |
|||
* @param modelBo 模型数据 |
|||
*/ |
|||
@PostMapping("/copyModel") |
|||
public R<Void> copyModel(@RequestBody ModelBo modelBo) { |
|||
return toAjax(actModelService.copyModel(modelBo)); |
|||
} |
|||
} |
@ -1,147 +0,0 @@ |
|||
package org.dromara.workflow.controller; |
|||
|
|||
import jakarta.validation.constraints.NotBlank; |
|||
import jakarta.validation.constraints.NotEmpty; |
|||
import jakarta.validation.constraints.NotNull; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.dromara.common.core.domain.R; |
|||
import org.dromara.common.idempotent.annotation.RepeatSubmit; |
|||
import org.dromara.common.log.annotation.Log; |
|||
import org.dromara.common.log.enums.BusinessType; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
import org.dromara.common.web.core.BaseController; |
|||
import org.dromara.workflow.domain.bo.ProcessDefinitionBo; |
|||
import org.dromara.workflow.domain.vo.ProcessDefinitionVo; |
|||
import org.dromara.workflow.service.IActProcessDefinitionService; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.*; |
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
import java.util.Arrays; |
|||
import java.util.HashMap; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
|
|||
/** |
|||
* 流程定义管理 控制层 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Validated |
|||
@RequiredArgsConstructor |
|||
@RestController |
|||
@RequestMapping("/processDefinition") |
|||
public class ActProcessDefinitionController extends BaseController { |
|||
|
|||
private final IActProcessDefinitionService actProcessDefinitionService; |
|||
|
|||
/** |
|||
* 分页查询 |
|||
* |
|||
* @param bo 参数 |
|||
*/ |
|||
@GetMapping("/list") |
|||
public TableDataInfo<ProcessDefinitionVo> page(ProcessDefinitionBo bo, PageQuery pageQuery) { |
|||
return actProcessDefinitionService.page(bo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 查询历史流程定义列表 |
|||
* |
|||
* @param key 流程定义key |
|||
*/ |
|||
@GetMapping("/getListByKey/{key}") |
|||
public R<List<ProcessDefinitionVo>> getListByKey(@NotEmpty(message = "流程定义key不能为空") @PathVariable String key) { |
|||
return R.ok("操作成功", actProcessDefinitionService.getListByKey(key)); |
|||
} |
|||
|
|||
/** |
|||
* 查看流程定义图片 |
|||
* |
|||
* @param processDefinitionId 流程定义id |
|||
*/ |
|||
@GetMapping("/definitionImage/{processDefinitionId}") |
|||
public R<String> definitionImage(@PathVariable String processDefinitionId) { |
|||
return R.ok("操作成功", actProcessDefinitionService.definitionImage(processDefinitionId)); |
|||
} |
|||
|
|||
/** |
|||
* 查看流程定义xml文件 |
|||
* |
|||
* @param processDefinitionId 流程定义id |
|||
*/ |
|||
@GetMapping("/definitionXml/{processDefinitionId}") |
|||
public R<Map<String, Object>> definitionXml(@NotBlank(message = "流程定义id不能为空") @PathVariable String processDefinitionId) { |
|||
Map<String, Object> map = new HashMap<>(); |
|||
String xmlStr = actProcessDefinitionService.definitionXml(processDefinitionId); |
|||
map.put("xml", Arrays.asList(xmlStr.split("\n"))); |
|||
map.put("xmlStr", xmlStr); |
|||
return R.ok(map); |
|||
} |
|||
|
|||
/** |
|||
* 删除流程定义 |
|||
* |
|||
* @param deploymentIds 部署id |
|||
* @param processDefinitionIds 流程定义id |
|||
*/ |
|||
@Log(title = "流程定义管理", businessType = BusinessType.DELETE) |
|||
@DeleteMapping("/{deploymentIds}/{processDefinitionIds}") |
|||
public R<Void> deleteDeployment(@NotNull(message = "流程部署id不能为空") @PathVariable List<String> deploymentIds, |
|||
@NotNull(message = "流程定义id不能为空") @PathVariable List<String> processDefinitionIds) { |
|||
return toAjax(actProcessDefinitionService.deleteDeployment(deploymentIds, processDefinitionIds)); |
|||
} |
|||
|
|||
/** |
|||
* 激活或者挂起流程定义 |
|||
* |
|||
* @param processDefinitionId 流程定义id |
|||
*/ |
|||
@Log(title = "流程定义管理", businessType = BusinessType.UPDATE) |
|||
@RepeatSubmit() |
|||
@PutMapping("/updateDefinitionState/{processDefinitionId}") |
|||
public R<Void> updateDefinitionState(@NotBlank(message = "流程定义id不能为空") @PathVariable String processDefinitionId) { |
|||
return toAjax(actProcessDefinitionService.updateDefinitionState(processDefinitionId)); |
|||
} |
|||
|
|||
/** |
|||
* 迁移流程定义 |
|||
* |
|||
* @param currentProcessDefinitionId 当前流程定义id |
|||
* @param fromProcessDefinitionId 需要迁移到的流程定义id |
|||
*/ |
|||
@Log(title = "流程定义管理", businessType = BusinessType.UPDATE) |
|||
@RepeatSubmit() |
|||
@PutMapping("/migrationDefinition/{currentProcessDefinitionId}/{fromProcessDefinitionId}") |
|||
public R<Void> migrationDefinition(@NotBlank(message = "当前流程定义id") @PathVariable String currentProcessDefinitionId, |
|||
@NotBlank(message = "需要迁移到的流程定义id") @PathVariable String fromProcessDefinitionId) { |
|||
return toAjax(actProcessDefinitionService.migrationDefinition(currentProcessDefinitionId, fromProcessDefinitionId)); |
|||
} |
|||
|
|||
/** |
|||
* 流程定义转换为模型 |
|||
* |
|||
* @param processDefinitionId 流程定义id |
|||
*/ |
|||
@Log(title = "流程定义管理", businessType = BusinessType.UPDATE) |
|||
@RepeatSubmit() |
|||
@PutMapping("/convertToModel/{processDefinitionId}") |
|||
public R<Void> convertToModel(@NotEmpty(message = "流程定义id不能为空") @PathVariable String processDefinitionId) { |
|||
return toAjax(actProcessDefinitionService.convertToModel(processDefinitionId)); |
|||
} |
|||
|
|||
/** |
|||
* 通过zip或xml部署流程定义 |
|||
* |
|||
* @param file 文件 |
|||
* @param categoryCode 分类 |
|||
*/ |
|||
@Log(title = "流程定义管理", businessType = BusinessType.INSERT) |
|||
@PostMapping("/deployByFile") |
|||
public void deployByFile(@RequestParam("file") MultipartFile file, @RequestParam("categoryCode") String categoryCode) { |
|||
actProcessDefinitionService.deployByFile(file, categoryCode); |
|||
} |
|||
|
|||
} |
@ -1,160 +0,0 @@ |
|||
package org.dromara.workflow.controller; |
|||
|
|||
import jakarta.validation.constraints.NotBlank; |
|||
import jakarta.validation.constraints.NotNull; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.dromara.common.core.domain.R; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.idempotent.annotation.RepeatSubmit; |
|||
import org.dromara.common.log.annotation.Log; |
|||
import org.dromara.common.log.enums.BusinessType; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
import org.dromara.common.web.core.BaseController; |
|||
import org.dromara.workflow.domain.bo.ProcessInstanceBo; |
|||
import org.dromara.workflow.domain.bo.ProcessInvalidBo; |
|||
import org.dromara.workflow.domain.bo.TaskUrgingBo; |
|||
import org.dromara.workflow.domain.vo.ActHistoryInfoVo; |
|||
import org.dromara.workflow.domain.vo.ProcessInstanceVo; |
|||
import org.dromara.workflow.service.IActProcessInstanceService; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.Arrays; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 流程实例管理 控制层 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Validated |
|||
@RequiredArgsConstructor |
|||
@RestController |
|||
@RequestMapping("/processInstance") |
|||
public class ActProcessInstanceController extends BaseController { |
|||
|
|||
private final IActProcessInstanceService actProcessInstanceService; |
|||
|
|||
/** |
|||
* 分页查询正在运行的流程实例 |
|||
* |
|||
* @param bo 参数 |
|||
*/ |
|||
@GetMapping("/getPageByRunning") |
|||
public TableDataInfo<ProcessInstanceVo> getPageByRunning(ProcessInstanceBo bo, PageQuery pageQuery) { |
|||
return actProcessInstanceService.getPageByRunning(bo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 分页查询已结束的流程实例 |
|||
* |
|||
* @param bo 参数 |
|||
*/ |
|||
@GetMapping("/getPageByFinish") |
|||
public TableDataInfo<ProcessInstanceVo> getPageByFinish(ProcessInstanceBo bo, PageQuery pageQuery) { |
|||
return actProcessInstanceService.getPageByFinish(bo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 通过业务id获取历史流程图 |
|||
* |
|||
* @param businessKey 业务id |
|||
*/ |
|||
@GetMapping("/getHistoryImage/{businessKey}") |
|||
public R<String> getHistoryImage(@NotBlank(message = "业务id不能为空") @PathVariable String businessKey) { |
|||
return R.ok("操作成功", actProcessInstanceService.getHistoryImage(businessKey)); |
|||
} |
|||
|
|||
/** |
|||
* 通过业务id获取历史流程图运行中,历史等节点 |
|||
* |
|||
* @param businessKey 业务id |
|||
*/ |
|||
@GetMapping("/getHistoryList/{businessKey}") |
|||
public R<Map<String, Object>> getHistoryList(@NotBlank(message = "业务id不能为空") @PathVariable String businessKey) { |
|||
return R.ok("操作成功", actProcessInstanceService.getHistoryList(businessKey)); |
|||
} |
|||
|
|||
/** |
|||
* 获取审批记录 |
|||
* |
|||
* @param businessKey 业务id |
|||
*/ |
|||
@GetMapping("/getHistoryRecord/{businessKey}") |
|||
public R<List<ActHistoryInfoVo>> getHistoryRecord(@NotBlank(message = "业务id不能为空") @PathVariable String businessKey) { |
|||
return R.ok(actProcessInstanceService.getHistoryRecord(businessKey)); |
|||
} |
|||
|
|||
/** |
|||
* 作废流程实例,不会删除历史记录(删除运行中的实例) |
|||
* |
|||
* @param processInvalidBo 参数 |
|||
*/ |
|||
@Log(title = "流程实例管理", businessType = BusinessType.DELETE) |
|||
@RepeatSubmit() |
|||
@PostMapping("/deleteRunInstance") |
|||
public R<Void> deleteRunInstance(@Validated(AddGroup.class) @RequestBody ProcessInvalidBo processInvalidBo) { |
|||
return toAjax(actProcessInstanceService.deleteRunInstance(processInvalidBo)); |
|||
} |
|||
|
|||
/** |
|||
* 运行中的实例 删除程实例,删除历史记录,删除业务与流程关联信息 |
|||
* |
|||
* @param businessKeys 业务id |
|||
*/ |
|||
@Log(title = "流程实例管理", businessType = BusinessType.DELETE) |
|||
@RepeatSubmit() |
|||
@DeleteMapping("/deleteRunAndHisInstance/{businessKeys}") |
|||
public R<Void> deleteRunAndHisInstance(@NotNull(message = "业务id不能为空") @PathVariable String[] businessKeys) { |
|||
return toAjax(actProcessInstanceService.deleteRunAndHisInstance(Arrays.asList(businessKeys))); |
|||
} |
|||
|
|||
/** |
|||
* 已完成的实例 删除程实例,删除历史记录,删除业务与流程关联信息 |
|||
* |
|||
* @param businessKeys 业务id |
|||
*/ |
|||
@Log(title = "流程实例管理", businessType = BusinessType.DELETE) |
|||
@RepeatSubmit() |
|||
@DeleteMapping("/deleteFinishAndHisInstance/{businessKeys}") |
|||
public R<Void> deleteFinishAndHisInstance(@NotNull(message = "业务id不能为空") @PathVariable String[] businessKeys) { |
|||
return toAjax(actProcessInstanceService.deleteFinishAndHisInstance(Arrays.asList(businessKeys))); |
|||
} |
|||
|
|||
/** |
|||
* 撤销流程申请 |
|||
* |
|||
* @param businessKey 业务id |
|||
*/ |
|||
@Log(title = "流程实例管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/cancelProcessApply/{businessKey}") |
|||
public R<Void> cancelProcessApply(@NotBlank(message = "业务id不能为空") @PathVariable String businessKey) { |
|||
return toAjax(actProcessInstanceService.cancelProcessApply(businessKey)); |
|||
} |
|||
|
|||
/** |
|||
* 分页查询当前登录人单据 |
|||
* |
|||
* @param bo 参数 |
|||
*/ |
|||
@GetMapping("/getPageByCurrent") |
|||
public TableDataInfo<ProcessInstanceVo> getPageByCurrent(ProcessInstanceBo bo, PageQuery pageQuery) { |
|||
return actProcessInstanceService.getPageByCurrent(bo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 任务催办(给当前任务办理人发送站内信,邮件,短信等) |
|||
* |
|||
* @param taskUrgingBo 任务催办 |
|||
*/ |
|||
@Log(title = "流程实例管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/taskUrging") |
|||
public R<Void> taskUrging(@RequestBody TaskUrgingBo taskUrgingBo) { |
|||
return toAjax(actProcessInstanceService.taskUrging(taskUrgingBo)); |
|||
} |
|||
|
|||
} |
@ -1,295 +0,0 @@ |
|||
package org.dromara.workflow.controller; |
|||
|
|||
import cn.hutool.core.collection.CollUtil; |
|||
import cn.hutool.core.convert.Convert; |
|||
import jakarta.validation.constraints.NotBlank; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.dromara.common.core.domain.R; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.idempotent.annotation.RepeatSubmit; |
|||
import org.dromara.common.log.annotation.Log; |
|||
import org.dromara.common.log.enums.BusinessType; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
import org.dromara.common.satoken.utils.LoginHelper; |
|||
import org.dromara.common.web.core.BaseController; |
|||
import org.dromara.workflow.domain.WfTaskBackNode; |
|||
import org.dromara.workflow.domain.bo.*; |
|||
import org.dromara.workflow.domain.vo.TaskVo; |
|||
import org.dromara.workflow.domain.vo.VariableVo; |
|||
import org.dromara.workflow.service.IActTaskService; |
|||
import org.dromara.workflow.service.IWfTaskBackNodeService; |
|||
import org.dromara.workflow.utils.QueryUtils; |
|||
import org.flowable.engine.TaskService; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 任务管理 控制层 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Validated |
|||
@RequiredArgsConstructor |
|||
@RestController |
|||
@RequestMapping("/task") |
|||
public class ActTaskController extends BaseController { |
|||
|
|||
@Autowired(required = false) |
|||
private TaskService taskService; |
|||
private final IActTaskService actTaskService; |
|||
private final IWfTaskBackNodeService wfTaskBackNodeService; |
|||
|
|||
|
|||
/** |
|||
* 启动任务 |
|||
* |
|||
* @param startProcessBo 启动流程参数 |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/startWorkFlow") |
|||
public R<Map<String, Object>> startWorkFlow(@Validated(AddGroup.class) @RequestBody StartProcessBo startProcessBo) { |
|||
Map<String, Object> map = actTaskService.startWorkFlow(startProcessBo); |
|||
return R.ok("提交成功", map); |
|||
} |
|||
|
|||
/** |
|||
* 办理任务 |
|||
* |
|||
* @param completeTaskBo 办理任务参数 |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/completeTask") |
|||
public R<Void> completeTask(@Validated(AddGroup.class) @RequestBody CompleteTaskBo completeTaskBo) { |
|||
return toAjax(actTaskService.completeTask(completeTaskBo)); |
|||
} |
|||
|
|||
/** |
|||
* 查询当前用户的待办任务 |
|||
* |
|||
* @param taskBo 参数 |
|||
*/ |
|||
@GetMapping("/getPageByTaskWait") |
|||
public TableDataInfo<TaskVo> getPageByTaskWait(TaskBo taskBo, PageQuery pageQuery) { |
|||
return actTaskService.getPageByTaskWait(taskBo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 查询当前租户所有待办任务 |
|||
* |
|||
* @param taskBo 参数 |
|||
*/ |
|||
@GetMapping("/getPageByAllTaskWait") |
|||
public TableDataInfo<TaskVo> getPageByAllTaskWait(TaskBo taskBo, PageQuery pageQuery) { |
|||
return actTaskService.getPageByAllTaskWait(taskBo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 查询当前用户的已办任务 |
|||
* |
|||
* @param taskBo 参数 |
|||
*/ |
|||
@GetMapping("/getPageByTaskFinish") |
|||
public TableDataInfo<TaskVo> getPageByTaskFinish(TaskBo taskBo, PageQuery pageQuery) { |
|||
return actTaskService.getPageByTaskFinish(taskBo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 查询当前用户的抄送 |
|||
* |
|||
* @param taskBo 参数 |
|||
*/ |
|||
@GetMapping("/getPageByTaskCopy") |
|||
public TableDataInfo<TaskVo> getPageByTaskCopy(TaskBo taskBo, PageQuery pageQuery) { |
|||
return actTaskService.getPageByTaskCopy(taskBo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 查询当前租户所有已办任务 |
|||
* |
|||
* @param taskBo 参数 |
|||
*/ |
|||
@GetMapping("/getPageByAllTaskFinish") |
|||
public TableDataInfo<TaskVo> getPageByAllTaskFinish(TaskBo taskBo, PageQuery pageQuery) { |
|||
return actTaskService.getPageByAllTaskFinish(taskBo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 签收(拾取)任务 |
|||
* |
|||
* @param taskId 任务id |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/claim/{taskId}") |
|||
public R<Void> claimTask(@NotBlank(message = "任务id不能为空") @PathVariable String taskId) { |
|||
try { |
|||
taskService.claim(taskId, Convert.toStr(LoginHelper.getUserId())); |
|||
return R.ok(); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
return R.fail("签收任务失败:" + e.getMessage()); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 归还(拾取的)任务 |
|||
* |
|||
* @param taskId 任务id |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/returnTask/{taskId}") |
|||
public R<Void> returnTask(@NotBlank(message = "任务id不能为空") @PathVariable String taskId) { |
|||
try { |
|||
taskService.setAssignee(taskId, null); |
|||
return R.ok(); |
|||
} catch (Exception e) { |
|||
e.printStackTrace(); |
|||
return R.fail("归还任务失败:" + e.getMessage()); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 委派任务 |
|||
* |
|||
* @param delegateBo 参数 |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/delegateTask") |
|||
public R<Void> delegateTask(@Validated({AddGroup.class}) @RequestBody DelegateBo delegateBo) { |
|||
return toAjax(actTaskService.delegateTask(delegateBo)); |
|||
} |
|||
|
|||
/** |
|||
* 终止任务 |
|||
* |
|||
* @param terminationBo 参数 |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.DELETE) |
|||
@RepeatSubmit() |
|||
@PostMapping("/terminationTask") |
|||
public R<Void> terminationTask(@RequestBody TerminationBo terminationBo) { |
|||
return toAjax(actTaskService.terminationTask(terminationBo)); |
|||
} |
|||
|
|||
/** |
|||
* 转办任务 |
|||
* |
|||
* @param transmitBo 参数 |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/transferTask") |
|||
public R<Void> transferTask(@Validated({AddGroup.class}) @RequestBody TransmitBo transmitBo) { |
|||
return toAjax(actTaskService.transferTask(transmitBo)); |
|||
} |
|||
|
|||
/** |
|||
* 会签任务加签 |
|||
* |
|||
* @param addMultiBo 参数 |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/addMultiInstanceExecution") |
|||
public R<Void> addMultiInstanceExecution(@Validated({AddGroup.class}) @RequestBody AddMultiBo addMultiBo) { |
|||
return toAjax(actTaskService.addMultiInstanceExecution(addMultiBo)); |
|||
} |
|||
|
|||
/** |
|||
* 会签任务减签 |
|||
* |
|||
* @param deleteMultiBo 参数 |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/deleteMultiInstanceExecution") |
|||
public R<Void> deleteMultiInstanceExecution(@Validated({AddGroup.class}) @RequestBody DeleteMultiBo deleteMultiBo) { |
|||
return toAjax(actTaskService.deleteMultiInstanceExecution(deleteMultiBo)); |
|||
} |
|||
|
|||
/** |
|||
* 驳回审批 |
|||
* |
|||
* @param backProcessBo 参数 |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/backProcess") |
|||
public R<String> backProcess(@Validated({AddGroup.class}) @RequestBody BackProcessBo backProcessBo) { |
|||
return R.ok(actTaskService.backProcess(backProcessBo)); |
|||
} |
|||
|
|||
/** |
|||
* 获取当前任务 |
|||
* |
|||
* @param taskId 任务id |
|||
*/ |
|||
@GetMapping("/getTaskById/{taskId}") |
|||
public R<TaskVo> getTaskById(@PathVariable String taskId) { |
|||
return R.ok(QueryUtils.getTask(taskId)); |
|||
} |
|||
|
|||
|
|||
/** |
|||
* 修改任务办理人 |
|||
* |
|||
* @param taskIds 任务id |
|||
* @param userId 办理人id |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.UPDATE) |
|||
@RepeatSubmit() |
|||
@PutMapping("/updateAssignee/{taskIds}/{userId}") |
|||
public R<Void> updateAssignee(@PathVariable String[] taskIds, @PathVariable String userId) { |
|||
return toAjax(actTaskService.updateAssignee(taskIds, userId)); |
|||
} |
|||
|
|||
/** |
|||
* 查询流程变量 |
|||
* |
|||
* @param taskId 任务id |
|||
*/ |
|||
@GetMapping("/getInstanceVariable/{taskId}") |
|||
public R<List<VariableVo>> getProcessInstVariable(@PathVariable String taskId) { |
|||
return R.ok(actTaskService.getInstanceVariable(taskId)); |
|||
} |
|||
|
|||
/** |
|||
* 获取可驳回得任务节点 |
|||
* |
|||
* @param processInstanceId 流程实例id |
|||
*/ |
|||
@GetMapping("/getTaskNodeList/{processInstanceId}") |
|||
public R<List<WfTaskBackNode>> getNodeList(@PathVariable String processInstanceId) { |
|||
return R.ok(CollUtil.reverse(wfTaskBackNodeService.getListByInstanceId(processInstanceId))); |
|||
} |
|||
|
|||
/** |
|||
* 查询工作流任务用户选择加签人员 |
|||
* |
|||
* @param taskId 任务id |
|||
*/ |
|||
@GetMapping("/getTaskUserIdsByAddMultiInstance/{taskId}") |
|||
public R<String> getTaskUserIdsByAddMultiInstance(@PathVariable String taskId) { |
|||
return R.ok(actTaskService.getTaskUserIdsByAddMultiInstance(taskId)); |
|||
} |
|||
|
|||
/** |
|||
* 查询工作流选择减签人员 |
|||
* |
|||
* @param taskId 任务id |
|||
*/ |
|||
@GetMapping("/getListByDeleteMultiInstance/{taskId}") |
|||
public R<List<TaskVo>> getListByDeleteMultiInstance(@PathVariable String taskId) { |
|||
return R.ok(actTaskService.getListByDeleteMultiInstance(taskId)); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,132 @@ |
|||
package org.dromara.workflow.controller; |
|||
|
|||
import cn.dev33.satoken.annotation.SaCheckPermission; |
|||
import cn.hutool.core.lang.tree.Tree; |
|||
import jakarta.servlet.http.HttpServletResponse; |
|||
import jakarta.validation.constraints.NotNull; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.dromara.common.core.domain.R; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.core.validate.EditGroup; |
|||
import org.dromara.common.excel.utils.ExcelUtil; |
|||
import org.dromara.common.idempotent.annotation.RepeatSubmit; |
|||
import org.dromara.common.log.annotation.Log; |
|||
import org.dromara.common.log.enums.BusinessType; |
|||
import org.dromara.common.web.core.BaseController; |
|||
import org.dromara.workflow.common.ConditionalOnEnable; |
|||
import org.dromara.workflow.domain.bo.FlowCategoryBo; |
|||
import org.dromara.workflow.domain.vo.FlowCategoryVo; |
|||
import org.dromara.workflow.service.IFlwCategoryService; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 流程分类 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@ConditionalOnEnable |
|||
@Validated |
|||
@RequiredArgsConstructor |
|||
@RestController |
|||
@RequestMapping("/category") |
|||
public class FlwCategoryController extends BaseController { |
|||
|
|||
private final IFlwCategoryService flwCategoryService; |
|||
|
|||
/** |
|||
* 查询流程分类列表 |
|||
*/ |
|||
@SaCheckPermission("workflow:category:list") |
|||
@GetMapping("/list") |
|||
public R<List<FlowCategoryVo>> list(FlowCategoryBo bo) { |
|||
List<FlowCategoryVo> list = flwCategoryService.queryList(bo); |
|||
return R.ok(list); |
|||
} |
|||
|
|||
/** |
|||
* 导出流程分类列表 |
|||
*/ |
|||
@SaCheckPermission("workflow:category:export") |
|||
@Log(title = "流程分类", businessType = BusinessType.EXPORT) |
|||
@PostMapping("/export") |
|||
public void export(FlowCategoryBo bo, HttpServletResponse response) { |
|||
List<FlowCategoryVo> list = flwCategoryService.queryList(bo); |
|||
ExcelUtil.exportExcel(list, "流程分类", FlowCategoryVo.class, response); |
|||
} |
|||
|
|||
/** |
|||
* 获取流程分类详细信息 |
|||
* |
|||
* @param categoryId 主键 |
|||
*/ |
|||
@SaCheckPermission("workflow:category:query") |
|||
@GetMapping("/{categoryId}") |
|||
public R<FlowCategoryVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long categoryId) { |
|||
flwCategoryService.checkCategoryDataScope(categoryId); |
|||
return R.ok(flwCategoryService.queryById(categoryId)); |
|||
} |
|||
|
|||
/** |
|||
* 新增流程分类 |
|||
*/ |
|||
@SaCheckPermission("workflow:category:add") |
|||
@Log(title = "流程分类", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping() |
|||
public R<Void> add(@Validated(AddGroup.class) @RequestBody FlowCategoryBo category) { |
|||
if (!flwCategoryService.checkCategoryNameUnique(category)) { |
|||
return R.fail("新增流程分类'" + category.getCategoryName() + "'失败,流程分类名称已存在"); |
|||
} |
|||
return toAjax(flwCategoryService.insertByBo(category)); |
|||
} |
|||
|
|||
/** |
|||
* 修改流程分类 |
|||
*/ |
|||
@SaCheckPermission("workflow:category:edit") |
|||
@Log(title = "流程分类", businessType = BusinessType.UPDATE) |
|||
@RepeatSubmit() |
|||
@PutMapping() |
|||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody FlowCategoryBo category) { |
|||
Long categoryId = category.getCategoryId(); |
|||
flwCategoryService.checkCategoryDataScope(categoryId); |
|||
if (!flwCategoryService.checkCategoryNameUnique(category)) { |
|||
return R.fail("修改流程分类'" + category.getCategoryName() + "'失败,流程分类名称已存在"); |
|||
} else if (category.getParentId().equals(categoryId)) { |
|||
return R.fail("修改流程分类'" + category.getCategoryName() + "'失败,上级流程分类不能是自己"); |
|||
} |
|||
return toAjax(flwCategoryService.updateByBo(category)); |
|||
} |
|||
|
|||
/** |
|||
* 删除流程分类 |
|||
* |
|||
* @param categoryId 主键 |
|||
*/ |
|||
@SaCheckPermission("workflow:category:remove") |
|||
@Log(title = "流程分类", businessType = BusinessType.DELETE) |
|||
@DeleteMapping("/{categoryId}") |
|||
public R<Void> remove(@PathVariable Long categoryId) { |
|||
if (flwCategoryService.hasChildByCategoryId(categoryId)) { |
|||
return R.warn("存在下级流程分类,不允许删除"); |
|||
} |
|||
if (flwCategoryService.checkCategoryExistDefinition(categoryId)) { |
|||
return R.warn("流程分类存在流程定义,不允许删除"); |
|||
} |
|||
return toAjax(flwCategoryService.deleteWithValidById(categoryId)); |
|||
} |
|||
|
|||
/** |
|||
* 获取流程分类树列表 |
|||
* |
|||
* @param categoryBo 流程分类 |
|||
*/ |
|||
@GetMapping("/categoryTree") |
|||
public R<List<Tree<String>>> categoryTree(FlowCategoryBo categoryBo) { |
|||
return R.ok(flwCategoryService.selectCategoryTreeList(categoryBo)); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,194 @@ |
|||
package org.dromara.workflow.controller; |
|||
|
|||
import jakarta.servlet.http.HttpServletResponse; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.dromara.common.core.domain.R; |
|||
import org.dromara.common.idempotent.annotation.RepeatSubmit; |
|||
import org.dromara.common.log.annotation.Log; |
|||
import org.dromara.common.log.enums.BusinessType; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
import org.dromara.common.web.core.BaseController; |
|||
import org.dromara.warm.flow.core.entity.Definition; |
|||
import org.dromara.warm.flow.core.service.DefService; |
|||
import org.dromara.warm.flow.orm.entity.FlowDefinition; |
|||
import org.dromara.workflow.common.ConditionalOnEnable; |
|||
import org.dromara.workflow.domain.vo.FlowDefinitionVo; |
|||
import org.dromara.workflow.service.IFlwDefinitionService; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.*; |
|||
import org.springframework.web.multipart.MultipartFile; |
|||
|
|||
import java.io.IOException; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 流程定义管理 控制层 |
|||
* |
|||
* @author may |
|||
*/ |
|||
|
|||
@Validated |
|||
@RequiredArgsConstructor |
|||
@RestController |
|||
@RequestMapping("/definition") |
|||
public class FlwDefinitionController extends BaseController { |
|||
|
|||
private final DefService defService; |
|||
private final IFlwDefinitionService flwDefinitionService; |
|||
|
|||
/** |
|||
* 查询流程定义列表 |
|||
* |
|||
* @param flowDefinition 参数 |
|||
* @param pageQuery 分页 |
|||
*/ |
|||
@GetMapping("/list") |
|||
public TableDataInfo<FlowDefinitionVo> list(FlowDefinition flowDefinition, PageQuery pageQuery) { |
|||
return flwDefinitionService.queryList(flowDefinition, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 查询未发布的流程定义列表 |
|||
* |
|||
* @param flowDefinition 参数 |
|||
* @param pageQuery 分页 |
|||
*/ |
|||
@GetMapping("/unPublishList") |
|||
public TableDataInfo<FlowDefinitionVo> unPublishList(FlowDefinition flowDefinition, PageQuery pageQuery) { |
|||
return flwDefinitionService.unPublishList(flowDefinition, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 获取流程定义详细信息 |
|||
* |
|||
* @param id 流程定义id |
|||
*/ |
|||
@GetMapping(value = "/{id}") |
|||
public R<Definition> getInfo(@PathVariable Long id) { |
|||
return R.ok(defService.getById(id)); |
|||
} |
|||
|
|||
/** |
|||
* 新增流程定义 |
|||
* |
|||
* @param flowDefinition 参数 |
|||
*/ |
|||
@Log(title = "流程定义", businessType = BusinessType.INSERT) |
|||
@PostMapping |
|||
@RepeatSubmit() |
|||
@Transactional(rollbackFor = Exception.class) |
|||
public R<Boolean> add(@RequestBody FlowDefinition flowDefinition) { |
|||
return R.ok(defService.checkAndSave(flowDefinition)); |
|||
} |
|||
|
|||
/** |
|||
* 修改流程定义 |
|||
* |
|||
* @param flowDefinition 参数 |
|||
*/ |
|||
@Log(title = "流程定义", businessType = BusinessType.UPDATE) |
|||
@PutMapping |
|||
@RepeatSubmit() |
|||
@Transactional(rollbackFor = Exception.class) |
|||
public R<Boolean> edit(@RequestBody FlowDefinition flowDefinition) { |
|||
return R.ok(defService.updateById(flowDefinition)); |
|||
} |
|||
|
|||
/** |
|||
* 发布流程定义 |
|||
* |
|||
* @param id 流程定义id |
|||
*/ |
|||
@Log(title = "流程定义", businessType = BusinessType.INSERT) |
|||
@PutMapping("/publish/{id}") |
|||
@RepeatSubmit() |
|||
public R<Boolean> publish(@PathVariable Long id) { |
|||
return R.ok(flwDefinitionService.publish(id)); |
|||
} |
|||
|
|||
/** |
|||
* 取消发布流程定义 |
|||
* |
|||
* @param id 流程定义id |
|||
*/ |
|||
@Log(title = "流程定义", businessType = BusinessType.INSERT) |
|||
@PutMapping("/unPublish/{id}") |
|||
@RepeatSubmit() |
|||
@Transactional(rollbackFor = Exception.class) |
|||
public R<Boolean> unPublish(@PathVariable Long id) { |
|||
return R.ok(defService.unPublish(id)); |
|||
} |
|||
|
|||
/** |
|||
* 删除流程定义 |
|||
*/ |
|||
@Log(title = "流程定义", businessType = BusinessType.DELETE) |
|||
@DeleteMapping("/{ids}") |
|||
public R<Void> remove(@PathVariable List<Long> ids) { |
|||
return toAjax(flwDefinitionService.removeDef(ids)); |
|||
} |
|||
|
|||
/** |
|||
* 复制流程定义 |
|||
* |
|||
* @param id 流程定义id |
|||
*/ |
|||
@Log(title = "流程定义", businessType = BusinessType.INSERT) |
|||
@PostMapping("/copy/{id}") |
|||
@RepeatSubmit() |
|||
@Transactional(rollbackFor = Exception.class) |
|||
public R<Boolean> copy(@PathVariable Long id) { |
|||
return R.ok(defService.copyDef(id)); |
|||
} |
|||
|
|||
/** |
|||
* 导入流程定义 |
|||
* |
|||
* @param file 文件 |
|||
* @param category 分类 |
|||
*/ |
|||
@Log(title = "流程定义", businessType = BusinessType.IMPORT) |
|||
@PostMapping("/importDef") |
|||
public R<Boolean> importDef(MultipartFile file, String category) { |
|||
return R.ok(flwDefinitionService.importJson(file, category)); |
|||
} |
|||
|
|||
/** |
|||
* 导出流程定义 |
|||
* |
|||
* @param id 流程定义id |
|||
* @param response 响应 |
|||
* @throws IOException 异常 |
|||
*/ |
|||
@Log(title = "流程定义", businessType = BusinessType.EXPORT) |
|||
@PostMapping("/exportDef/{id}") |
|||
public void exportDef(@PathVariable Long id, HttpServletResponse response) throws IOException { |
|||
flwDefinitionService.exportDef(id, response); |
|||
} |
|||
|
|||
/** |
|||
* 获取流程定义JSON字符串 |
|||
* |
|||
* @param id 流程定义id |
|||
*/ |
|||
@GetMapping("/xmlString/{id}") |
|||
public R<String> xmlString(@PathVariable Long id) { |
|||
return R.ok("操作成功", defService.exportJson(id)); |
|||
} |
|||
|
|||
/** |
|||
* 激活/挂起流程定义 |
|||
* |
|||
* @param id 流程定义id |
|||
* @param active 激活/挂起 |
|||
*/ |
|||
@RepeatSubmit() |
|||
@PutMapping("/active/{id}") |
|||
@Transactional(rollbackFor = Exception.class) |
|||
public R<Boolean> active(@PathVariable Long id, @RequestParam boolean active) { |
|||
return R.ok(active ? defService.active(id) : defService.unActive(id)); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,157 @@ |
|||
package org.dromara.workflow.controller; |
|||
|
|||
import lombok.RequiredArgsConstructor; |
|||
import org.dromara.common.core.domain.R; |
|||
import org.dromara.common.idempotent.annotation.RepeatSubmit; |
|||
import org.dromara.common.log.annotation.Log; |
|||
import org.dromara.common.log.enums.BusinessType; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
import org.dromara.common.web.core.BaseController; |
|||
import org.dromara.warm.flow.core.service.InsService; |
|||
import org.dromara.workflow.common.ConditionalOnEnable; |
|||
import org.dromara.workflow.domain.bo.FlowCancelBo; |
|||
import org.dromara.workflow.domain.bo.FlowInstanceBo; |
|||
import org.dromara.workflow.domain.bo.FlowInvalidBo; |
|||
import org.dromara.workflow.domain.vo.FlowInstanceVo; |
|||
import org.dromara.workflow.service.IFlwInstanceService; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 流程实例管理 控制层 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@ConditionalOnEnable |
|||
@Validated |
|||
@RequiredArgsConstructor |
|||
@RestController |
|||
@RequestMapping("/instance") |
|||
public class FlwInstanceController extends BaseController { |
|||
|
|||
private final InsService insService; |
|||
private final IFlwInstanceService flwInstanceService; |
|||
|
|||
/** |
|||
* 查询正在运行的流程实例列表 |
|||
* |
|||
* @param flowInstanceBo 流程实例 |
|||
* @param pageQuery 分页 |
|||
*/ |
|||
@GetMapping("/pageByRunning") |
|||
public TableDataInfo<FlowInstanceVo> selectRunningInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) { |
|||
return flwInstanceService.selectRunningInstanceList(flowInstanceBo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 查询已结束的流程实例列表 |
|||
* |
|||
* @param flowInstanceBo 流程实例 |
|||
* @param pageQuery 分页 |
|||
*/ |
|||
@GetMapping("/pageByFinish") |
|||
public TableDataInfo<FlowInstanceVo> selectFinishInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) { |
|||
return flwInstanceService.selectFinishInstanceList(flowInstanceBo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 根据业务id查询流程实例详细信息 |
|||
* |
|||
* @param businessId 业务id |
|||
*/ |
|||
@GetMapping("/getInfo/{businessId}") |
|||
public R<FlowInstanceVo> getInfo(@PathVariable Long businessId) { |
|||
return R.ok(flwInstanceService.queryByBusinessId(businessId)); |
|||
} |
|||
|
|||
/** |
|||
* 按照业务id删除流程实例 |
|||
* |
|||
* @param businessIds 业务id |
|||
*/ |
|||
@DeleteMapping("/deleteByBusinessIds/{businessIds}") |
|||
public R<Void> deleteByBusinessIds(@PathVariable List<Long> businessIds) { |
|||
return toAjax(flwInstanceService.deleteByBusinessIds(businessIds)); |
|||
} |
|||
|
|||
/** |
|||
* 按照实例id删除流程实例 |
|||
* |
|||
* @param instanceIds 实例id |
|||
*/ |
|||
@DeleteMapping("/deleteByInstanceIds/{instanceIds}") |
|||
public R<Void> deleteByInstanceIds(@PathVariable List<Long> instanceIds) { |
|||
return toAjax(flwInstanceService.deleteByInstanceIds(instanceIds)); |
|||
} |
|||
|
|||
/** |
|||
* 撤销流程 |
|||
* |
|||
* @param bo 参数 |
|||
*/ |
|||
@RepeatSubmit() |
|||
@PutMapping("/cancelProcessApply") |
|||
public R<Void> cancelProcessApply(@RequestBody FlowCancelBo bo) { |
|||
return toAjax(flwInstanceService.cancelProcessApply(bo)); |
|||
} |
|||
|
|||
/** |
|||
* 激活/挂起流程实例 |
|||
* |
|||
* @param id 流程实例id |
|||
* @param active 激活/挂起 |
|||
*/ |
|||
@RepeatSubmit() |
|||
@PutMapping("/active/{id}") |
|||
public R<Boolean> active(@PathVariable Long id, @RequestParam boolean active) { |
|||
return R.ok(active ? insService.active(id) : insService.unActive(id)); |
|||
} |
|||
|
|||
/** |
|||
* 获取当前登陆人发起的流程实例 |
|||
* |
|||
* @param flowInstanceBo 参数 |
|||
* @param pageQuery 分页 |
|||
*/ |
|||
@GetMapping("/pageByCurrent") |
|||
public TableDataInfo<FlowInstanceVo> selectCurrentInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) { |
|||
return flwInstanceService.selectCurrentInstanceList(flowInstanceBo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 获取流程图,流程记录 |
|||
* |
|||
* @param businessId 业务id |
|||
*/ |
|||
@GetMapping("/flowImage/{businessId}") |
|||
public R<Map<String, Object>> flowImage(@PathVariable String businessId) { |
|||
return R.ok(flwInstanceService.flowImage(businessId)); |
|||
} |
|||
|
|||
/** |
|||
* 获取流程变量 |
|||
* |
|||
* @param instanceId 流程实例id |
|||
*/ |
|||
@GetMapping("/instanceVariable/{instanceId}") |
|||
public R<Map<String, Object>> instanceVariable(@PathVariable Long instanceId) { |
|||
return R.ok(flwInstanceService.instanceVariable(instanceId)); |
|||
} |
|||
|
|||
/** |
|||
* 作废流程 |
|||
* |
|||
* @param bo 参数 |
|||
*/ |
|||
@Log(title = "流程实例管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/invalid") |
|||
public R<Boolean> invalid(@Validated @RequestBody FlowInvalidBo bo) { |
|||
return R.ok(flwInstanceService.processInvalid(bo)); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,201 @@ |
|||
package org.dromara.workflow.controller; |
|||
|
|||
import lombok.RequiredArgsConstructor; |
|||
import org.dromara.common.core.domain.R; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.idempotent.annotation.RepeatSubmit; |
|||
import org.dromara.common.log.annotation.Log; |
|||
import org.dromara.common.log.enums.BusinessType; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
import org.dromara.common.web.core.BaseController; |
|||
import org.dromara.system.api.domain.vo.RemoteUserVo; |
|||
import org.dromara.warm.flow.core.entity.Node; |
|||
import org.dromara.workflow.api.domain.RemoteStartProcessReturn; |
|||
import org.dromara.workflow.common.ConditionalOnEnable; |
|||
import org.dromara.workflow.domain.bo.*; |
|||
import org.dromara.workflow.domain.vo.FlowHisTaskVo; |
|||
import org.dromara.workflow.domain.vo.FlowTaskVo; |
|||
import org.dromara.workflow.service.IFlwTaskService; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 任务管理 控制层 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@ConditionalOnEnable |
|||
@Validated |
|||
@RequiredArgsConstructor |
|||
@RestController |
|||
@RequestMapping("/task") |
|||
public class FlwTaskController extends BaseController { |
|||
|
|||
private final IFlwTaskService flwTaskService; |
|||
|
|||
/** |
|||
* 启动任务 |
|||
* |
|||
* @param startProcessBo 启动流程参数 |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/startWorkFlow") |
|||
public R<RemoteStartProcessReturn> startWorkFlow(@Validated(AddGroup.class) @RequestBody StartProcessBo startProcessBo) { |
|||
RemoteStartProcessReturn startProcessReturn = flwTaskService.startWorkFlow(startProcessBo); |
|||
return R.ok("提交成功", startProcessReturn); |
|||
} |
|||
|
|||
/** |
|||
* 办理任务 |
|||
* |
|||
* @param completeTaskBo 办理任务参数 |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/completeTask") |
|||
public R<Void> completeTask(@Validated(AddGroup.class) @RequestBody CompleteTaskBo completeTaskBo) { |
|||
return toAjax(flwTaskService.completeTask(completeTaskBo)); |
|||
} |
|||
|
|||
/** |
|||
* 查询当前用户的待办任务 |
|||
* |
|||
* @param flowTaskBo 参数 |
|||
* @param pageQuery 分页 |
|||
*/ |
|||
@GetMapping("/pageByTaskWait") |
|||
public TableDataInfo<FlowTaskVo> pageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { |
|||
return flwTaskService.pageByTaskWait(flowTaskBo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 查询当前用户的已办任务 |
|||
* |
|||
* @param flowTaskBo 参数 |
|||
* @param pageQuery 分页 |
|||
*/ |
|||
|
|||
@GetMapping("/pageByTaskFinish") |
|||
public TableDataInfo<FlowHisTaskVo> pageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { |
|||
return flwTaskService.pageByTaskFinish(flowTaskBo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 查询待办任务 |
|||
* |
|||
* @param flowTaskBo 参数 |
|||
* @param pageQuery 分页 |
|||
*/ |
|||
@GetMapping("/pageByAllTaskWait") |
|||
public TableDataInfo<FlowTaskVo> pageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { |
|||
return flwTaskService.pageByAllTaskWait(flowTaskBo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 查询已办任务 |
|||
* |
|||
* @param flowTaskBo 参数 |
|||
* @param pageQuery 分页 |
|||
*/ |
|||
@GetMapping("/pageByAllTaskFinish") |
|||
public TableDataInfo<FlowHisTaskVo> pageByAllTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { |
|||
return flwTaskService.pageByAllTaskFinish(flowTaskBo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 查询当前用户的抄送 |
|||
* |
|||
* @param flowTaskBo 参数 |
|||
* @param pageQuery 分页 |
|||
*/ |
|||
@GetMapping("/pageByTaskCopy") |
|||
public TableDataInfo<FlowTaskVo> pageByTaskCopy(FlowTaskBo flowTaskBo, PageQuery pageQuery) { |
|||
return flwTaskService.pageByTaskCopy(flowTaskBo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 根据taskId查询代表任务 |
|||
* |
|||
* @param taskId 任务id |
|||
*/ |
|||
@GetMapping("/getTask/{taskId}") |
|||
public R<FlowTaskVo> getTask(@PathVariable Long taskId) { |
|||
return R.ok(flwTaskService.selectById(taskId)); |
|||
} |
|||
|
|||
/** |
|||
* 终止任务 |
|||
* |
|||
* @param bo 参数 |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/terminationTask") |
|||
public R<Boolean> terminationTask(@RequestBody FlowTerminationBo bo) { |
|||
return R.ok(flwTaskService.terminationTask(bo)); |
|||
} |
|||
|
|||
/** |
|||
* 任务操作 |
|||
* |
|||
* @param bo 参数 |
|||
* @param taskOperation 操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.UPDATE) |
|||
@RepeatSubmit |
|||
@PostMapping("/taskOperation/{taskOperation}") |
|||
public R<Void> taskOperation(@Validated @RequestBody TaskOperationBo bo, @PathVariable String taskOperation) { |
|||
return toAjax(flwTaskService.taskOperation(bo, taskOperation)); |
|||
} |
|||
|
|||
/** |
|||
* 修改任务办理人 |
|||
* |
|||
* @param taskIdList 任务id |
|||
* @param userId 办理人id |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.UPDATE) |
|||
@RepeatSubmit() |
|||
@PutMapping("/updateAssignee/{userId}") |
|||
public R<Void> updateAssignee(@RequestBody List<Long> taskIdList, @PathVariable String userId) { |
|||
return toAjax(flwTaskService.updateAssignee(taskIdList, userId)); |
|||
} |
|||
|
|||
/** |
|||
* 驳回审批 |
|||
* |
|||
* @param bo 参数 |
|||
*/ |
|||
@Log(title = "任务管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/backProcess") |
|||
public R<Void> backProcess(@Validated({AddGroup.class}) @RequestBody BackProcessBo bo) { |
|||
return toAjax(flwTaskService.backProcess(bo)); |
|||
} |
|||
|
|||
/** |
|||
* 获取可驳回的前置节点 |
|||
* |
|||
* @param definitionId 流程定义id |
|||
* @param nowNodeCode 当前节点 |
|||
*/ |
|||
@GetMapping("/getBackTaskNode/{definitionId}/{nowNodeCode}") |
|||
public R<List<Node>> getBackTaskNode(@PathVariable Long definitionId, @PathVariable String nowNodeCode) { |
|||
return R.ok(flwTaskService.getBackTaskNode(definitionId, nowNodeCode)); |
|||
} |
|||
|
|||
/** |
|||
* 获取当前任务的所有办理人 |
|||
* |
|||
* @param taskId 任务id |
|||
*/ |
|||
@GetMapping("/currentTaskAllUser/{taskId}") |
|||
public R<List<RemoteUserVo>> currentTaskAllUser(@PathVariable Long taskId) { |
|||
return R.ok(flwTaskService.currentTaskAllUser(taskId)); |
|||
} |
|||
|
|||
} |
@ -1,106 +0,0 @@ |
|||
package org.dromara.workflow.controller; |
|||
|
|||
import cn.dev33.satoken.annotation.SaCheckPermission; |
|||
import jakarta.servlet.http.HttpServletResponse; |
|||
import jakarta.validation.constraints.NotEmpty; |
|||
import jakarta.validation.constraints.NotNull; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.dromara.common.core.domain.R; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.core.validate.EditGroup; |
|||
import org.dromara.common.excel.utils.ExcelUtil; |
|||
import org.dromara.common.idempotent.annotation.RepeatSubmit; |
|||
import org.dromara.common.log.annotation.Log; |
|||
import org.dromara.common.log.enums.BusinessType; |
|||
import org.dromara.common.web.core.BaseController; |
|||
import org.dromara.workflow.domain.bo.WfCategoryBo; |
|||
import org.dromara.workflow.domain.vo.WfCategoryVo; |
|||
import org.dromara.workflow.service.IWfCategoryService; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 流程分类 |
|||
* |
|||
* @author may |
|||
* @date 2023-06-28 |
|||
*/ |
|||
@Validated |
|||
@RequiredArgsConstructor |
|||
@RestController |
|||
@RequestMapping("/category") |
|||
public class WfCategoryController extends BaseController { |
|||
|
|||
private final IWfCategoryService wfCategoryService; |
|||
|
|||
/** |
|||
* 查询流程分类列表 |
|||
*/ |
|||
@SaCheckPermission("workflow:category:list") |
|||
@GetMapping("/list") |
|||
public R<List<WfCategoryVo>> list(WfCategoryBo bo) { |
|||
List<WfCategoryVo> list = wfCategoryService.queryList(bo); |
|||
return R.ok(list); |
|||
|
|||
} |
|||
|
|||
/** |
|||
* 导出流程分类列表 |
|||
*/ |
|||
@SaCheckPermission("workflow:category:export") |
|||
@Log(title = "流程分类", businessType = BusinessType.EXPORT) |
|||
@PostMapping("/export") |
|||
public void export(WfCategoryBo bo, HttpServletResponse response) { |
|||
List<WfCategoryVo> list = wfCategoryService.queryList(bo); |
|||
ExcelUtil.exportExcel(list, "流程分类", WfCategoryVo.class, response); |
|||
} |
|||
|
|||
/** |
|||
* 获取流程分类详细信息 |
|||
* |
|||
* @param id 主键 |
|||
*/ |
|||
@SaCheckPermission("workflow:category:query") |
|||
@GetMapping("/{id}") |
|||
public R<WfCategoryVo> getInfo(@NotNull(message = "主键不能为空") |
|||
@PathVariable Long id) { |
|||
return R.ok(wfCategoryService.queryById(id)); |
|||
} |
|||
|
|||
/** |
|||
* 新增流程分类 |
|||
*/ |
|||
@SaCheckPermission("workflow:category:add") |
|||
@Log(title = "流程分类", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping() |
|||
public R<Void> add(@Validated(AddGroup.class) @RequestBody WfCategoryBo bo) { |
|||
return toAjax(wfCategoryService.insertByBo(bo)); |
|||
} |
|||
|
|||
/** |
|||
* 修改流程分类 |
|||
*/ |
|||
@SaCheckPermission("workflow:category:edit") |
|||
@Log(title = "流程分类", businessType = BusinessType.UPDATE) |
|||
@RepeatSubmit() |
|||
@PutMapping() |
|||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WfCategoryBo bo) { |
|||
return toAjax(wfCategoryService.updateByBo(bo)); |
|||
} |
|||
|
|||
/** |
|||
* 删除流程分类 |
|||
* |
|||
* @param ids 主键串 |
|||
*/ |
|||
@SaCheckPermission("workflow:category:remove") |
|||
@Log(title = "流程分类", businessType = BusinessType.DELETE) |
|||
@DeleteMapping("/{ids}") |
|||
public R<Void> remove(@NotEmpty(message = "主键不能为空") |
|||
@PathVariable Long[] ids) { |
|||
return toAjax(wfCategoryService.deleteWithValidByIds(List.of(ids), true)); |
|||
} |
|||
} |
@ -1,79 +0,0 @@ |
|||
package org.dromara.workflow.controller; |
|||
|
|||
import java.util.List; |
|||
|
|||
import lombok.RequiredArgsConstructor; |
|||
import jakarta.validation.constraints.*; |
|||
import org.dromara.workflow.domain.bo.WfDefinitionConfigBo; |
|||
import org.springframework.web.bind.annotation.*; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.dromara.common.idempotent.annotation.RepeatSubmit; |
|||
import org.dromara.common.log.annotation.Log; |
|||
import org.dromara.common.web.core.BaseController; |
|||
import org.dromara.common.core.domain.R; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.log.enums.BusinessType; |
|||
import org.dromara.workflow.domain.vo.WfDefinitionConfigVo; |
|||
import org.dromara.workflow.service.IWfDefinitionConfigService; |
|||
|
|||
/** |
|||
* 流程定义配置 |
|||
* |
|||
* @author may |
|||
* @date 2024-03-18 |
|||
*/ |
|||
@Validated |
|||
@RequiredArgsConstructor |
|||
@RestController |
|||
@RequestMapping("/definitionConfig") |
|||
public class WfDefinitionConfigController extends BaseController { |
|||
|
|||
private final IWfDefinitionConfigService wfDefinitionConfigService; |
|||
|
|||
|
|||
/** |
|||
* 获取流程定义配置详细信息 |
|||
* |
|||
* @param definitionId 主键 |
|||
*/ |
|||
@GetMapping("/getByDefId/{definitionId}") |
|||
public R<WfDefinitionConfigVo> getByDefId(@NotBlank(message = "流程定义ID不能为空") |
|||
@PathVariable String definitionId) { |
|||
return R.ok(wfDefinitionConfigService.getByDefId(definitionId)); |
|||
} |
|||
|
|||
/** |
|||
* 新增流程定义配置 |
|||
*/ |
|||
@Log(title = "流程定义配置", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping("/saveOrUpdate") |
|||
public R<Void> saveOrUpdate(@Validated(AddGroup.class) @RequestBody WfDefinitionConfigBo bo) { |
|||
return toAjax(wfDefinitionConfigService.saveOrUpdate(bo)); |
|||
} |
|||
|
|||
/** |
|||
* 删除流程定义配置 |
|||
* |
|||
* @param ids 主键串 |
|||
*/ |
|||
@Log(title = "流程定义配置", businessType = BusinessType.DELETE) |
|||
@DeleteMapping("/{ids}") |
|||
public R<Void> remove(@NotEmpty(message = "主键不能为空") |
|||
@PathVariable Long[] ids) { |
|||
return toAjax(wfDefinitionConfigService.deleteByIds(List.of(ids))); |
|||
} |
|||
|
|||
/** |
|||
* 查询流程定义配置排除当前查询的流程定义 |
|||
* |
|||
* @param tableName 表名 |
|||
* @param definitionId 流程定义id |
|||
*/ |
|||
@GetMapping("/getByTableNameNotDefId/{tableName}/{definitionId}") |
|||
public R<List<WfDefinitionConfigVo>> getByTableNameNotDefId(@NotBlank(message = "表名不能为空") @PathVariable String tableName, |
|||
@NotBlank(message = "流程定义ID不能为空") @PathVariable String definitionId) { |
|||
return R.ok(wfDefinitionConfigService.getByTableNameNotDefId(tableName, definitionId)); |
|||
} |
|||
|
|||
} |
@ -1,115 +0,0 @@ |
|||
package org.dromara.workflow.controller; |
|||
|
|||
import cn.dev33.satoken.annotation.SaCheckPermission; |
|||
import jakarta.servlet.http.HttpServletResponse; |
|||
import jakarta.validation.constraints.NotEmpty; |
|||
import jakarta.validation.constraints.NotNull; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.dromara.common.core.domain.R; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.core.validate.EditGroup; |
|||
import org.dromara.common.excel.utils.ExcelUtil; |
|||
import org.dromara.common.idempotent.annotation.RepeatSubmit; |
|||
import org.dromara.common.log.annotation.Log; |
|||
import org.dromara.common.log.enums.BusinessType; |
|||
import org.dromara.common.mybatis.core.page.PageQuery; |
|||
import org.dromara.common.mybatis.core.page.TableDataInfo; |
|||
import org.dromara.common.web.core.BaseController; |
|||
import org.dromara.workflow.domain.bo.WfFormManageBo; |
|||
import org.dromara.workflow.domain.vo.WfFormManageVo; |
|||
import org.dromara.workflow.service.IWfFormManageService; |
|||
import org.springframework.validation.annotation.Validated; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 表单管理 |
|||
* |
|||
* @author may |
|||
* @date 2024-03-29 |
|||
*/ |
|||
@Validated |
|||
@RequiredArgsConstructor |
|||
@RestController |
|||
@RequestMapping("/formManage") |
|||
public class WfFormManageController extends BaseController { |
|||
|
|||
private final IWfFormManageService wfFormManageService; |
|||
|
|||
/** |
|||
* 查询表单管理列表 |
|||
*/ |
|||
@SaCheckPermission("workflow:formManage:list") |
|||
@GetMapping("/list") |
|||
public TableDataInfo<WfFormManageVo> list(WfFormManageBo bo, PageQuery pageQuery) { |
|||
return wfFormManageService.queryPageList(bo, pageQuery); |
|||
} |
|||
|
|||
/** |
|||
* 查询表单管理列表 |
|||
*/ |
|||
@SaCheckPermission("workflow:formManage:list") |
|||
@GetMapping("/list/selectList") |
|||
public R<List<WfFormManageVo>> selectList() { |
|||
return R.ok(wfFormManageService.selectList()); |
|||
} |
|||
|
|||
/** |
|||
* 导出表单管理列表 |
|||
*/ |
|||
@SaCheckPermission("workflow:formManage:export") |
|||
@Log(title = "表单管理", businessType = BusinessType.EXPORT) |
|||
@PostMapping("/export") |
|||
public void export(WfFormManageBo bo, HttpServletResponse response) { |
|||
List<WfFormManageVo> list = wfFormManageService.queryList(bo); |
|||
ExcelUtil.exportExcel(list, "表单管理", WfFormManageVo.class, response); |
|||
} |
|||
|
|||
/** |
|||
* 获取表单管理详细信息 |
|||
* |
|||
* @param id 主键 |
|||
*/ |
|||
@SaCheckPermission("workflow:formManage:query") |
|||
@GetMapping("/{id}") |
|||
public R<WfFormManageVo> getInfo(@NotNull(message = "主键不能为空") |
|||
@PathVariable Long id) { |
|||
return R.ok(wfFormManageService.queryById(id)); |
|||
} |
|||
|
|||
/** |
|||
* 新增表单管理 |
|||
*/ |
|||
@SaCheckPermission("workflow:formManage:add") |
|||
@Log(title = "表单管理", businessType = BusinessType.INSERT) |
|||
@RepeatSubmit() |
|||
@PostMapping() |
|||
public R<Void> add(@Validated(AddGroup.class) @RequestBody WfFormManageBo bo) { |
|||
return toAjax(wfFormManageService.insertByBo(bo)); |
|||
} |
|||
|
|||
/** |
|||
* 修改表单管理 |
|||
*/ |
|||
@SaCheckPermission("workflow:formManage:edit") |
|||
@Log(title = "表单管理", businessType = BusinessType.UPDATE) |
|||
@RepeatSubmit() |
|||
@PutMapping() |
|||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WfFormManageBo bo) { |
|||
return toAjax(wfFormManageService.updateByBo(bo)); |
|||
} |
|||
|
|||
/** |
|||
* 删除表单管理 |
|||
* |
|||
* @param ids 主键串 |
|||
*/ |
|||
@SaCheckPermission("workflow:formManage:remove") |
|||
@Log(title = "表单管理", businessType = BusinessType.DELETE) |
|||
@DeleteMapping("/{ids}") |
|||
public R<Void> remove(@NotEmpty(message = "主键不能为空") |
|||
@PathVariable Long[] ids) { |
|||
return toAjax(wfFormManageService.deleteByIds(List.of(ids))); |
|||
} |
|||
} |
@ -1,152 +0,0 @@ |
|||
package org.dromara.workflow.domain; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* 流程实例对象 act_hi_procinst |
|||
* |
|||
* @author may |
|||
* @date 2023-07-22 |
|||
*/ |
|||
@Data |
|||
@TableName("act_hi_procinst") |
|||
public class ActHiProcinst implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableId(value = "ID_") |
|||
private String id; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "REV_") |
|||
private Long rev; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "PROC_INST_ID_") |
|||
private String procInstId; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "BUSINESS_KEY_") |
|||
private String businessKey; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "PROC_DEF_ID_") |
|||
private String procDefId; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "START_TIME_") |
|||
private Date startTime; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "END_TIME_") |
|||
private Date endTime; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "DURATION_") |
|||
private Long duration; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "START_USER_ID_") |
|||
private String startUserId; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "START_ACT_ID_") |
|||
private String startActId; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "END_ACT_ID_") |
|||
private String endActId; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "SUPER_PROCESS_INSTANCE_ID_") |
|||
private String superProcessInstanceId; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "DELETE_REASON_") |
|||
private String deleteReason; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "TENANT_ID_") |
|||
private String tenantId; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "NAME_") |
|||
private String name; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "CALLBACK_ID_") |
|||
private String callbackId; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "CALLBACK_TYPE_") |
|||
private String callbackType; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "REFERENCE_ID_") |
|||
private String referenceId; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "REFERENCE_TYPE_") |
|||
private String referenceType; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "PROPAGATED_STAGE_INST_ID_") |
|||
private String propagatedStageInstId; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "BUSINESS_STATUS_") |
|||
private String businessStatus; |
|||
|
|||
|
|||
} |
@ -1,193 +0,0 @@ |
|||
package org.dromara.workflow.domain; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.*; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
|
|||
import java.io.Serial; |
|||
|
|||
/** |
|||
* 流程历史任务对象 act_hi_taskinst |
|||
* |
|||
* @author may |
|||
* @date 2024-03-02 |
|||
*/ |
|||
@Data |
|||
@TableName("act_hi_taskinst") |
|||
public class ActHiTaskinst implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableId(value = "ID_") |
|||
private String id; |
|||
|
|||
/** |
|||
* 版本 |
|||
*/ |
|||
@TableField(value = "REV_") |
|||
private Long rev; |
|||
|
|||
/** |
|||
* 流程定义id |
|||
*/ |
|||
@TableField(value = "PROC_DEF_ID_") |
|||
private String procDefId; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "TASK_DEF_ID_") |
|||
private String taskDefId; |
|||
|
|||
/** |
|||
* 任务节点id |
|||
*/ |
|||
@TableField(value = "TASK_DEF_KEY_") |
|||
private String taskDefKey; |
|||
|
|||
/** |
|||
* 流程实例id |
|||
*/ |
|||
@TableField(value = "PROC_INST_ID_") |
|||
private String procInstId; |
|||
|
|||
/** |
|||
* 流程执行id |
|||
*/ |
|||
@TableField(value = "EXECUTION_ID") |
|||
private String executionId; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "SCOPE_ID_") |
|||
private String scopeId; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "SUB_SCOPE_ID_") |
|||
private String subScopeId; |
|||
|
|||
/** |
|||
* 先用当前字段标识抄送类型 |
|||
*/ |
|||
@TableField(value = "SCOPE_TYPE_") |
|||
private String scopeType; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "SCOPE_DEFINITION_ID_") |
|||
private String scopeDefinitionId; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "PROPAGATED_STAGE_INST_ID_") |
|||
private String propagatedStageInstId; |
|||
|
|||
/** |
|||
* 任务名称 |
|||
*/ |
|||
@TableField(value = "NAME_") |
|||
private String name; |
|||
|
|||
/** |
|||
* 父级id |
|||
*/ |
|||
@TableField(value = "PARENT_TASK_ID_") |
|||
private String parentTaskId; |
|||
|
|||
/** |
|||
* 描述 |
|||
*/ |
|||
@TableField(value = "DESCRIPTION_") |
|||
private String description; |
|||
|
|||
/** |
|||
* 办理人 |
|||
*/ |
|||
@TableField(value = "OWNER_") |
|||
private String owner; |
|||
|
|||
/** |
|||
* 办理人 |
|||
*/ |
|||
@TableField(value = "ASSIGNEE_") |
|||
private String assignee; |
|||
|
|||
/** |
|||
* 开始事件 |
|||
*/ |
|||
@TableField(value = "START_TIME_") |
|||
private Date startTime; |
|||
|
|||
/** |
|||
* 认领时间 |
|||
*/ |
|||
@TableField(value = "CLAIM_TIME_") |
|||
private Date claimTime; |
|||
|
|||
/** |
|||
* 结束时间 |
|||
*/ |
|||
@TableField(value = "END_TIME_") |
|||
private Date endTime; |
|||
|
|||
/** |
|||
* 持续时间 |
|||
*/ |
|||
@TableField(value = "DURATION_") |
|||
private Long duration; |
|||
|
|||
/** |
|||
* 删除原因 |
|||
*/ |
|||
@TableField(value = "DELETE_REASON_") |
|||
private String deleteReason; |
|||
|
|||
/** |
|||
* 优先级 |
|||
*/ |
|||
@TableField(value = "PRIORITY_") |
|||
private Long priority; |
|||
|
|||
/** |
|||
* 到期时间 |
|||
*/ |
|||
@TableField(value = "DUE_DATE_") |
|||
private Date dueDate; |
|||
|
|||
/** |
|||
* |
|||
*/ |
|||
@TableField(value = "FORM_KEY_") |
|||
private String formKey; |
|||
|
|||
/** |
|||
* 分类 |
|||
*/ |
|||
@TableField(value = "CATEGORY_") |
|||
private String category; |
|||
|
|||
/** |
|||
* 最后修改时间 |
|||
*/ |
|||
@TableField(value = "LAST_UPDATED_TIME_") |
|||
private Date lastUpdatedTime; |
|||
|
|||
/** |
|||
* 租户id |
|||
*/ |
|||
@TableField(value = "TENANT_ID_") |
|||
private String tenantId; |
|||
|
|||
|
|||
} |
@ -1,56 +0,0 @@ |
|||
package org.dromara.workflow.domain; |
|||
|
|||
import org.dromara.common.mybatis.core.domain.BaseEntity; |
|||
import com.baomidou.mybatisplus.annotation.*; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
|
|||
import java.io.Serial; |
|||
|
|||
/** |
|||
* 流程定义配置对象 wf_definition_config |
|||
* |
|||
* @author may |
|||
* @date 2024-03-18 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
@TableName("wf_definition_config") |
|||
public class WfDefinitionConfig extends BaseEntity { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 主键 |
|||
*/ |
|||
@TableId(value = "id") |
|||
private Long id; |
|||
|
|||
/** |
|||
* 表名 |
|||
*/ |
|||
private String tableName; |
|||
|
|||
/** |
|||
* 流程定义ID |
|||
*/ |
|||
private String definitionId; |
|||
|
|||
/** |
|||
* 流程KEY |
|||
*/ |
|||
private String processKey; |
|||
|
|||
/** |
|||
* 流程版本 |
|||
*/ |
|||
private Integer version; |
|||
|
|||
/** |
|||
* 备注 |
|||
*/ |
|||
private String remark; |
|||
|
|||
|
|||
} |
@ -1,51 +0,0 @@ |
|||
package org.dromara.workflow.domain; |
|||
|
|||
import org.dromara.common.tenant.core.TenantEntity; |
|||
import com.baomidou.mybatisplus.annotation.*; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
|
|||
import java.io.Serial; |
|||
|
|||
/** |
|||
* 表单管理对象 wf_form_manage |
|||
* |
|||
* @author may |
|||
* @date 2024-03-29 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
@TableName("wf_form_manage") |
|||
public class WfFormManage extends TenantEntity { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 主键 |
|||
*/ |
|||
@TableId(value = "id") |
|||
private Long id; |
|||
|
|||
/** |
|||
* 表单名称 |
|||
*/ |
|||
private String formName; |
|||
|
|||
/** |
|||
* 表单类型 |
|||
*/ |
|||
private String formType; |
|||
|
|||
/** |
|||
* 路由地址/表单ID |
|||
*/ |
|||
private String router; |
|||
|
|||
/** |
|||
* 备注 |
|||
*/ |
|||
private String remark; |
|||
|
|||
|
|||
} |
@ -1,61 +0,0 @@ |
|||
package org.dromara.workflow.domain; |
|||
|
|||
import org.dromara.common.tenant.core.TenantEntity; |
|||
import com.baomidou.mybatisplus.annotation.*; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
|
|||
import java.io.Serial; |
|||
|
|||
/** |
|||
* 节点配置对象 wf_node_config |
|||
* |
|||
* @author may |
|||
* @date 2024-03-30 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
@TableName("wf_node_config") |
|||
public class WfNodeConfig extends TenantEntity { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 主键 |
|||
*/ |
|||
@TableId(value = "id") |
|||
private Long id; |
|||
|
|||
/** |
|||
* 表单id |
|||
*/ |
|||
private Long formId; |
|||
|
|||
/** |
|||
* 表单类型 |
|||
*/ |
|||
private String formType; |
|||
|
|||
/** |
|||
* 节点名称 |
|||
*/ |
|||
private String nodeName; |
|||
|
|||
/** |
|||
* 节点id |
|||
*/ |
|||
private String nodeId; |
|||
|
|||
/** |
|||
* 流程定义id |
|||
*/ |
|||
private String definitionId; |
|||
|
|||
/** |
|||
* 是否为申请人节点 (0是 1否) |
|||
*/ |
|||
private String applyUserTask; |
|||
|
|||
|
|||
} |
@ -1,61 +0,0 @@ |
|||
package org.dromara.workflow.domain; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
import org.dromara.common.tenant.core.TenantEntity; |
|||
|
|||
import java.io.Serial; |
|||
|
|||
/** |
|||
* 节点驳回记录 wf_task_back_node |
|||
* |
|||
* @author may |
|||
* @date 2024-03-13 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
@TableName("wf_task_back_node") |
|||
public class WfTaskBackNode extends TenantEntity { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 主键 |
|||
*/ |
|||
@TableId(value = "id") |
|||
private Long id; |
|||
|
|||
/** |
|||
* 实例id |
|||
*/ |
|||
private String instanceId; |
|||
|
|||
/** |
|||
* 节点id |
|||
*/ |
|||
private String nodeId; |
|||
|
|||
/** |
|||
* 节点名称 |
|||
*/ |
|||
private String nodeName; |
|||
|
|||
/** |
|||
* 排序 |
|||
*/ |
|||
private Integer orderNo; |
|||
|
|||
/** |
|||
* 节点类型 |
|||
*/ |
|||
private String taskType; |
|||
|
|||
/** |
|||
* 办理人 |
|||
*/ |
|||
private String assignee; |
|||
|
|||
} |
@ -1,40 +0,0 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import jakarta.validation.constraints.NotBlank; |
|||
import jakarta.validation.constraints.NotEmpty; |
|||
import lombok.Data; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 加签参数请求 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class AddMultiBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 任务ID |
|||
*/ |
|||
@NotBlank(message = "任务ID不能为空", groups = AddGroup.class) |
|||
private String taskId; |
|||
|
|||
/** |
|||
* 加签人员id |
|||
*/ |
|||
@NotEmpty(message = "加签人员不能为空", groups = AddGroup.class) |
|||
private List<Long> assignees; |
|||
|
|||
/** |
|||
* 加签人员名称 |
|||
*/ |
|||
@NotEmpty(message = "加签人员不能为空", groups = AddGroup.class) |
|||
private List<String> assigneeNames; |
|||
} |
@ -1,38 +0,0 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import jakarta.validation.constraints.NotBlank; |
|||
import lombok.Data; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 委派任务请求对象 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class DelegateBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 委派人id |
|||
*/ |
|||
@NotBlank(message = "委派人id不能为空", groups = {AddGroup.class}) |
|||
private String userId; |
|||
|
|||
/** |
|||
* 委派人名称 |
|||
*/ |
|||
@NotBlank(message = "委派人名称不能为空", groups = {AddGroup.class}) |
|||
private String nickName; |
|||
|
|||
/** |
|||
* 任务id |
|||
*/ |
|||
@NotBlank(message = "任务id不能为空", groups = {AddGroup.class}) |
|||
private String taskId; |
|||
} |
@ -1,52 +0,0 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import jakarta.validation.constraints.NotBlank; |
|||
import jakarta.validation.constraints.NotEmpty; |
|||
import lombok.Data; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 减签参数请求 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class DeleteMultiBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 任务ID |
|||
*/ |
|||
@NotBlank(message = "任务ID不能为空", groups = AddGroup.class) |
|||
private String taskId; |
|||
|
|||
/** |
|||
* 减签人员 |
|||
*/ |
|||
@NotEmpty(message = "减签人员不能为空", groups = AddGroup.class) |
|||
private List<String> taskIds; |
|||
|
|||
/** |
|||
* 执行id |
|||
*/ |
|||
@NotEmpty(message = "执行id不能为空", groups = AddGroup.class) |
|||
private List<String> executionIds; |
|||
|
|||
/** |
|||
* 人员id |
|||
*/ |
|||
@NotEmpty(message = "减签人员id不能为空", groups = AddGroup.class) |
|||
private List<Long> assigneeIds; |
|||
|
|||
/** |
|||
* 人员名称 |
|||
*/ |
|||
@NotEmpty(message = "减签人员不能为空", groups = AddGroup.class) |
|||
private List<String> assigneeNames; |
|||
} |
@ -0,0 +1,47 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import io.github.linpeilie.annotations.AutoMapper; |
|||
import jakarta.validation.constraints.NotBlank; |
|||
import jakarta.validation.constraints.NotNull; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.core.validate.EditGroup; |
|||
import org.dromara.common.mybatis.core.domain.BaseEntity; |
|||
import org.dromara.workflow.domain.FlowCategory; |
|||
|
|||
/** |
|||
* 流程分类业务对象 wf_category |
|||
* |
|||
* @author may |
|||
* @date 2023-06-27 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
@AutoMapper(target = FlowCategory.class, reverseConvertGenerate = false) |
|||
public class FlowCategoryBo extends BaseEntity { |
|||
|
|||
/** |
|||
* 流程分类ID |
|||
*/ |
|||
@NotNull(message = "流程分类ID不能为空", groups = { EditGroup.class }) |
|||
private Long categoryId; |
|||
|
|||
/** |
|||
* 父流程分类id |
|||
*/ |
|||
@NotNull(message = "父流程分类id不能为空", groups = {AddGroup.class, EditGroup.class}) |
|||
private Long parentId; |
|||
|
|||
/** |
|||
* 流程分类名称 |
|||
*/ |
|||
@NotBlank(message = "流程分类名称不能为空", groups = {AddGroup.class, EditGroup.class}) |
|||
private String categoryName; |
|||
|
|||
/** |
|||
* 显示顺序 |
|||
*/ |
|||
private Long orderNum; |
|||
|
|||
} |
@ -1,17 +1,18 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
|
|||
/** |
|||
* 抄送 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class WfCopy implements Serializable { |
|||
public class FlowCopyBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
@ -0,0 +1,55 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 流程实例请求对象 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class FlowInstanceBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 流程定义名称 |
|||
*/ |
|||
private String flowName; |
|||
|
|||
/** |
|||
* 流程定义编码 |
|||
*/ |
|||
private String flowCode; |
|||
|
|||
/** |
|||
* 任务发起人 |
|||
*/ |
|||
private String startUserId; |
|||
|
|||
/** |
|||
* 业务id |
|||
*/ |
|||
private String businessId; |
|||
|
|||
/** |
|||
* 流程分类id |
|||
*/ |
|||
private String category; |
|||
|
|||
/** |
|||
* 任务名称 |
|||
*/ |
|||
private String nodeName; |
|||
|
|||
/** |
|||
* 申请人Ids |
|||
*/ |
|||
private List<Long> createByIds; |
|||
|
|||
} |
@ -0,0 +1,31 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import jakarta.validation.constraints.NotNull; |
|||
import lombok.Data; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 作废请求对象 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class FlowInvalidBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 流程实例id |
|||
*/ |
|||
@NotNull(message = "流程实例id为空", groups = AddGroup.class) |
|||
private Long id; |
|||
|
|||
/** |
|||
* 审批意见 |
|||
*/ |
|||
private String comment; |
|||
} |
@ -0,0 +1,55 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 任务请求对象 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class FlowTaskBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 任务名称 |
|||
*/ |
|||
private String nodeName; |
|||
|
|||
/** |
|||
* 流程定义名称 |
|||
*/ |
|||
private String flowName; |
|||
|
|||
/** |
|||
* 流程定义编码 |
|||
*/ |
|||
private String flowCode; |
|||
|
|||
/** |
|||
* 流程分类id |
|||
*/ |
|||
private String category; |
|||
|
|||
/** |
|||
* 流程实例id |
|||
*/ |
|||
private Long instanceId; |
|||
|
|||
/** |
|||
* 权限列表 |
|||
*/ |
|||
private List<String> permissionList; |
|||
|
|||
/** |
|||
* 申请人Ids |
|||
*/ |
|||
private List<Long> createByIds; |
|||
|
|||
} |
@ -1,66 +0,0 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import jakarta.validation.constraints.NotBlank; |
|||
import jakarta.validation.constraints.Pattern; |
|||
import lombok.Data; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.core.validate.EditGroup; |
|||
import org.dromara.workflow.common.constant.FlowConstant; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 模型请求对象 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class ModelBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 模型id |
|||
*/ |
|||
@NotBlank(message = "模型ID不能为空", groups = {EditGroup.class}) |
|||
private String id; |
|||
|
|||
/** |
|||
* 模型名称 |
|||
*/ |
|||
@NotBlank(message = "模型名称不能为空", groups = {AddGroup.class}) |
|||
private String name; |
|||
|
|||
/** |
|||
* 模型标识key |
|||
*/ |
|||
@NotBlank(message = "模型标识key不能为空", groups = {AddGroup.class}) |
|||
@Pattern(regexp = FlowConstant.MODEL_KEY_PATTERN, message = "模型标识key只能字符或者下划线开头", groups = {AddGroup.class}) |
|||
private String key; |
|||
|
|||
/** |
|||
* 模型分类 |
|||
*/ |
|||
@NotBlank(message = "模型分类不能为空", groups = {AddGroup.class}) |
|||
private String categoryCode; |
|||
|
|||
/** |
|||
* 模型XML |
|||
*/ |
|||
@NotBlank(message = "模型XML不能为空", groups = {AddGroup.class}) |
|||
private String xml; |
|||
|
|||
/** |
|||
* 模型SVG图片 |
|||
*/ |
|||
@NotBlank(message = "模型SVG不能为空", groups = {EditGroup.class}) |
|||
private String svg; |
|||
|
|||
/** |
|||
* 备注 |
|||
*/ |
|||
private String description; |
|||
|
|||
} |
@ -1,34 +0,0 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 流程定义请求对象 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class ProcessDefinitionBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 流程定义名称key |
|||
*/ |
|||
private String key; |
|||
|
|||
/** |
|||
* 流程定义名称 |
|||
*/ |
|||
private String name; |
|||
|
|||
/** |
|||
* 模型分类 |
|||
*/ |
|||
private String categoryCode; |
|||
|
|||
} |
@ -1,43 +0,0 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 流程实例请求对象 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class ProcessInstanceBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 流程名称 |
|||
*/ |
|||
private String name; |
|||
|
|||
/** |
|||
* 流程key |
|||
*/ |
|||
private String key; |
|||
|
|||
/** |
|||
* 任务发起人 |
|||
*/ |
|||
private String startUserId; |
|||
|
|||
/** |
|||
* 业务id |
|||
*/ |
|||
private String businessKey; |
|||
|
|||
/** |
|||
* 模型分类 |
|||
*/ |
|||
private String categoryCode; |
|||
} |
@ -1,39 +0,0 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
|
|||
/** |
|||
* 用户加签查询 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class SysUserMultiBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 人员名称 |
|||
*/ |
|||
private String userName; |
|||
|
|||
/** |
|||
* 人员名称 |
|||
*/ |
|||
private String nickName; |
|||
|
|||
/** |
|||
* 部门id |
|||
*/ |
|||
private String deptId; |
|||
|
|||
/** |
|||
* 任务id |
|||
*/ |
|||
private String taskId; |
|||
} |
@ -1,33 +0,0 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 任务请求对象 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class TaskBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 任务名称 |
|||
*/ |
|||
private String name; |
|||
|
|||
/** |
|||
* 流程定义名称 |
|||
*/ |
|||
private String processDefinitionName; |
|||
|
|||
/** |
|||
* 流程定义key |
|||
*/ |
|||
private String processDefinitionKey; |
|||
} |
@ -0,0 +1,48 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import jakarta.validation.constraints.NotNull; |
|||
import lombok.Data; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.core.validate.EditGroup; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
|
|||
|
|||
/** |
|||
* 任务操作业务对象,用于描述任务委派、转办、加签等操作的必要参数 |
|||
* 包含了用户ID、任务ID、任务相关的消息、以及加签/减签的用户ID |
|||
* |
|||
* @author AprilWind |
|||
*/ |
|||
@Data |
|||
public class TaskOperationBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 委派/转办人的用户ID(必填,准对委派/转办人操作) |
|||
*/ |
|||
@NotNull(message = "委派/转办人id不能为空", groups = {AddGroup.class}) |
|||
private String userId; |
|||
|
|||
/** |
|||
* 加签/减签人的用户ID列表(必填,针对加签/减签操作) |
|||
*/ |
|||
@NotNull(message = "加签/减签id不能为空", groups = {EditGroup.class}) |
|||
private List<String> userIds; |
|||
|
|||
/** |
|||
* 任务ID(必填) |
|||
*/ |
|||
@NotNull(message = "任务id不能为空") |
|||
private Long taskId; |
|||
|
|||
/** |
|||
* 意见或备注信息(可选) |
|||
*/ |
|||
private String message; |
|||
|
|||
} |
@ -1,34 +0,0 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 任务催办 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class TaskUrgingBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 流程实例id |
|||
*/ |
|||
private String processInstanceId; |
|||
|
|||
/** |
|||
* 消息类型 |
|||
*/ |
|||
private List<String> messageType; |
|||
|
|||
/** |
|||
* 催办内容(为空默认系统内置信息) |
|||
*/ |
|||
private String message; |
|||
} |
@ -1,37 +0,0 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import jakarta.validation.constraints.NotBlank; |
|||
import lombok.Data; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 终转办务请求对象 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class TransmitBo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 任务id |
|||
*/ |
|||
@NotBlank(message = "任务id为空", groups = AddGroup.class) |
|||
private String taskId; |
|||
|
|||
/** |
|||
* 转办人id |
|||
*/ |
|||
@NotBlank(message = "转办人不能为空", groups = AddGroup.class) |
|||
private String userId; |
|||
|
|||
/** |
|||
* 审批意见 |
|||
*/ |
|||
private String comment; |
|||
} |
@ -1,54 +0,0 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import io.github.linpeilie.annotations.AutoMapper; |
|||
import jakarta.validation.constraints.NotBlank; |
|||
import jakarta.validation.constraints.NotNull; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.core.validate.EditGroup; |
|||
import org.dromara.common.mybatis.core.domain.BaseEntity; |
|||
import org.dromara.workflow.domain.WfCategory; |
|||
|
|||
/** |
|||
* 流程分类业务对象 wf_category |
|||
* |
|||
* @author may |
|||
* @date 2023-06-27 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
@AutoMapper(target = WfCategory.class, reverseConvertGenerate = false) |
|||
public class WfCategoryBo extends BaseEntity { |
|||
|
|||
/** |
|||
* 主键 |
|||
*/ |
|||
@NotNull(message = "主键不能为空", groups = {EditGroup.class}) |
|||
private Long id; |
|||
|
|||
/** |
|||
* 分类名称 |
|||
*/ |
|||
@NotBlank(message = "分类名称不能为空", groups = {AddGroup.class, EditGroup.class}) |
|||
private String categoryName; |
|||
|
|||
/** |
|||
* 分类编码 |
|||
*/ |
|||
@NotBlank(message = "分类编码不能为空", groups = {AddGroup.class, EditGroup.class}) |
|||
private String categoryCode; |
|||
|
|||
/** |
|||
* 父级id |
|||
*/ |
|||
@NotNull(message = "父级id不能为空", groups = {AddGroup.class, EditGroup.class}) |
|||
private Long parentId; |
|||
|
|||
/** |
|||
* 排序 |
|||
*/ |
|||
private Long sortNum; |
|||
|
|||
|
|||
} |
@ -1,59 +0,0 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import org.dromara.workflow.domain.WfDefinitionConfig; |
|||
import org.dromara.common.mybatis.core.domain.BaseEntity; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.core.validate.EditGroup; |
|||
import io.github.linpeilie.annotations.AutoMapper; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
import jakarta.validation.constraints.*; |
|||
|
|||
/** |
|||
* 流程定义配置业务对象 wf_form_definition |
|||
* |
|||
* @author may |
|||
* @date 2024-03-18 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
@AutoMapper(target = WfDefinitionConfig.class, reverseConvertGenerate = false) |
|||
public class WfDefinitionConfigBo extends BaseEntity { |
|||
|
|||
/** |
|||
* 主键 |
|||
*/ |
|||
@NotNull(message = "主键不能为空", groups = {EditGroup.class}) |
|||
private Long id; |
|||
|
|||
/** |
|||
* 表名 |
|||
*/ |
|||
@NotBlank(message = "表名不能为空", groups = {AddGroup.class}) |
|||
private String tableName; |
|||
|
|||
/** |
|||
* 流程定义ID |
|||
*/ |
|||
@NotBlank(message = "流程定义ID不能为空", groups = {AddGroup.class}) |
|||
private String definitionId; |
|||
|
|||
/** |
|||
* 流程KEY |
|||
*/ |
|||
@NotBlank(message = "流程KEY不能为空", groups = {AddGroup.class}) |
|||
private String processKey; |
|||
|
|||
/** |
|||
* 流程版本 |
|||
*/ |
|||
@NotNull(message = "流程版本不能为空", groups = {AddGroup.class}) |
|||
private Integer version; |
|||
|
|||
/** |
|||
* 备注 |
|||
*/ |
|||
private String remark; |
|||
|
|||
|
|||
} |
@ -1,53 +0,0 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import org.dromara.workflow.domain.WfFormManage; |
|||
import org.dromara.common.mybatis.core.domain.BaseEntity; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.core.validate.EditGroup; |
|||
import io.github.linpeilie.annotations.AutoMapper; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
import jakarta.validation.constraints.*; |
|||
|
|||
/** |
|||
* 表单管理业务对象 wf_form_manage |
|||
* |
|||
* @author may |
|||
* @date 2024-03-29 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
@AutoMapper(target = WfFormManage.class, reverseConvertGenerate = false) |
|||
public class WfFormManageBo extends BaseEntity { |
|||
|
|||
/** |
|||
* 主键 |
|||
*/ |
|||
@NotNull(message = "主键不能为空", groups = { EditGroup.class }) |
|||
private Long id; |
|||
|
|||
/** |
|||
* 表单名称 |
|||
*/ |
|||
@NotBlank(message = "表单名称不能为空", groups = { AddGroup.class, EditGroup.class }) |
|||
private String formName; |
|||
|
|||
/** |
|||
* 表单类型 |
|||
*/ |
|||
@NotBlank(message = "表单类型不能为空", groups = { AddGroup.class, EditGroup.class }) |
|||
private String formType; |
|||
/** |
|||
* 路由地址/表单ID |
|||
*/ |
|||
@NotBlank(message = "路由地址/表单ID不能为空", groups = { AddGroup.class, EditGroup.class }) |
|||
private String router; |
|||
|
|||
|
|||
/** |
|||
* 备注 |
|||
*/ |
|||
private String remark; |
|||
|
|||
|
|||
} |
@ -1,63 +0,0 @@ |
|||
package org.dromara.workflow.domain.bo; |
|||
|
|||
import org.dromara.workflow.domain.WfNodeConfig; |
|||
import org.dromara.common.mybatis.core.domain.BaseEntity; |
|||
import org.dromara.common.core.validate.AddGroup; |
|||
import org.dromara.common.core.validate.EditGroup; |
|||
import io.github.linpeilie.annotations.AutoMapper; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
import jakarta.validation.constraints.*; |
|||
|
|||
/** |
|||
* 节点配置业务对象 wf_node_config |
|||
* |
|||
* @author may |
|||
* @date 2024-03-30 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
@AutoMapper(target = WfNodeConfig.class, reverseConvertGenerate = false) |
|||
public class WfNodeConfigBo extends BaseEntity { |
|||
|
|||
/** |
|||
* 主键 |
|||
*/ |
|||
@NotNull(message = "主键不能为空", groups = {EditGroup.class}) |
|||
private Long id; |
|||
|
|||
/** |
|||
* 表单id |
|||
*/ |
|||
private Long formId; |
|||
|
|||
/** |
|||
* 表单类型 |
|||
*/ |
|||
private String formType; |
|||
|
|||
/** |
|||
* 节点名称 |
|||
*/ |
|||
@NotBlank(message = "节点名称不能为空", groups = {AddGroup.class, EditGroup.class}) |
|||
private String nodeName; |
|||
|
|||
/** |
|||
* 节点id |
|||
*/ |
|||
@NotBlank(message = "节点id不能为空", groups = {AddGroup.class, EditGroup.class}) |
|||
private String nodeId; |
|||
|
|||
/** |
|||
* 流程定义id |
|||
*/ |
|||
@NotBlank(message = "流程定义id不能为空", groups = {AddGroup.class, EditGroup.class}) |
|||
private String definitionId; |
|||
|
|||
/** |
|||
* 是否为申请人节点 (0是 1否) |
|||
*/ |
|||
@NotBlank(message = "是否为申请人节点不能为空", groups = {AddGroup.class, EditGroup.class}) |
|||
private String applyUserTask; |
|||
|
|||
} |
@ -1,93 +0,0 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import lombok.Data; |
|||
import org.dromara.common.translation.annotation.Translation; |
|||
import org.dromara.common.translation.constant.TransConstant; |
|||
import org.flowable.engine.task.Attachment; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 流程审批记录视图 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class ActHistoryInfoVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
/** |
|||
* 任务id |
|||
*/ |
|||
private String id; |
|||
/** |
|||
* 节点id |
|||
*/ |
|||
private String taskDefinitionKey; |
|||
/** |
|||
* 任务名称 |
|||
*/ |
|||
private String name; |
|||
/** |
|||
* 流程实例id |
|||
*/ |
|||
private String processInstanceId; |
|||
/** |
|||
* 版本 |
|||
*/ |
|||
private Integer version; |
|||
/** |
|||
* 开始时间 |
|||
*/ |
|||
private Date startTime; |
|||
/** |
|||
* 结束时间 |
|||
*/ |
|||
private Date endTime; |
|||
/** |
|||
* 运行时长 |
|||
*/ |
|||
private String runDuration; |
|||
/** |
|||
* 状态 |
|||
*/ |
|||
private String status; |
|||
/** |
|||
* 状态 |
|||
*/ |
|||
private String statusName; |
|||
/** |
|||
* 办理人id |
|||
*/ |
|||
private String assignee; |
|||
|
|||
/** |
|||
* 办理人名称 |
|||
*/ |
|||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "assignee") |
|||
private String nickName; |
|||
|
|||
/** |
|||
* 办理人id |
|||
*/ |
|||
private String owner; |
|||
|
|||
/** |
|||
* 审批信息id |
|||
*/ |
|||
private String commentId; |
|||
|
|||
/** |
|||
* 审批信息 |
|||
*/ |
|||
private String comment; |
|||
|
|||
/** |
|||
* 审批附件 |
|||
*/ |
|||
private List<Attachment> attachmentList; |
|||
} |
@ -0,0 +1,67 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
|||
import com.alibaba.excel.annotation.ExcelProperty; |
|||
import io.github.linpeilie.annotations.AutoMapper; |
|||
import lombok.Data; |
|||
import org.dromara.workflow.domain.FlowCategory; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
|
|||
|
|||
/** |
|||
* 流程分类视图对象 wf_category |
|||
* |
|||
* @author may |
|||
* @date 2023-06-27 |
|||
*/ |
|||
@Data |
|||
@ExcelIgnoreUnannotated |
|||
@AutoMapper(target = FlowCategory.class) |
|||
public class FlowCategoryVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 流程分类ID |
|||
*/ |
|||
@ExcelProperty(value = "流程分类ID") |
|||
private Long categoryId; |
|||
|
|||
/** |
|||
* 父级id |
|||
*/ |
|||
private Long parentId; |
|||
|
|||
/** |
|||
* 父类别名称 |
|||
*/ |
|||
private String parentName; |
|||
|
|||
/** |
|||
* 祖级列表 |
|||
*/ |
|||
private String ancestors; |
|||
|
|||
/** |
|||
* 流程分类名称 |
|||
*/ |
|||
@ExcelProperty(value = "流程分类名称") |
|||
private String categoryName; |
|||
|
|||
/** |
|||
* 显示顺序 |
|||
*/ |
|||
@ExcelProperty(value = "显示顺序") |
|||
private Long orderNum; |
|||
|
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
@ExcelProperty(value = "创建时间") |
|||
private Date createTime; |
|||
|
|||
} |
@ -0,0 +1,104 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import lombok.Data; |
|||
import org.dromara.common.translation.annotation.Translation; |
|||
import org.dromara.workflow.common.constant.FlowConstant; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* 流程定义视图 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class FlowDefinitionVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
private Long id; |
|||
|
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
private Date createTime; |
|||
|
|||
/** |
|||
* 更新时间 |
|||
*/ |
|||
private Date updateTime; |
|||
|
|||
/** |
|||
* 租户ID |
|||
*/ |
|||
private String tenantId; |
|||
|
|||
/** |
|||
* 删除标记 |
|||
*/ |
|||
private String delFlag; |
|||
|
|||
/** |
|||
* 流程定义编码 |
|||
*/ |
|||
private String flowCode; |
|||
|
|||
/** |
|||
* 流程定义名称 |
|||
*/ |
|||
private String flowName; |
|||
|
|||
/** |
|||
* 流程分类id |
|||
*/ |
|||
private String category; |
|||
|
|||
/** |
|||
* 流程分类名称 |
|||
*/ |
|||
@Translation(type = FlowConstant.CATEGORY_ID_TO_NAME, mapper = "category") |
|||
private String categoryName; |
|||
|
|||
/** |
|||
* 流程版本 |
|||
*/ |
|||
private String version; |
|||
|
|||
/** |
|||
* 是否发布(0未发布 1已发布 9失效) |
|||
*/ |
|||
private Integer isPublish; |
|||
|
|||
/** |
|||
* 审批表单是否自定义(Y是 N否) |
|||
*/ |
|||
private String formCustom; |
|||
|
|||
/** |
|||
* 审批表单路径 |
|||
*/ |
|||
private String formPath; |
|||
|
|||
/** |
|||
* 流程激活状态(0挂起 1激活) |
|||
*/ |
|||
private Integer activityStatus; |
|||
|
|||
/** |
|||
* 监听器类型 |
|||
*/ |
|||
private String listenerType; |
|||
|
|||
/** |
|||
* 监听器路径 |
|||
*/ |
|||
private String listenerPath; |
|||
|
|||
/** |
|||
* 扩展字段,预留给业务系统使用 |
|||
*/ |
|||
private String ext; |
|||
} |
@ -0,0 +1,244 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import lombok.Data; |
|||
import org.dromara.common.core.utils.DateUtils; |
|||
import org.dromara.common.translation.annotation.Translation; |
|||
import org.dromara.common.translation.constant.TransConstant; |
|||
import org.dromara.warm.flow.core.enums.CooperateType; |
|||
import org.dromara.workflow.common.constant.FlowConstant; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 历史任务视图 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class FlowHisTaskVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
private Long id; |
|||
|
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
private Date createTime; |
|||
|
|||
/** |
|||
* 更新时间 |
|||
*/ |
|||
private Date updateTime; |
|||
|
|||
/** |
|||
* 租户ID |
|||
*/ |
|||
private String tenantId; |
|||
|
|||
/** |
|||
* 删除标记 |
|||
*/ |
|||
private String delFlag; |
|||
|
|||
/** |
|||
* 对应flow_definition表的id |
|||
*/ |
|||
private Long definitionId; |
|||
|
|||
/** |
|||
* 流程定义名称 |
|||
*/ |
|||
private String flowName; |
|||
|
|||
/** |
|||
* 流程实例表id |
|||
*/ |
|||
private Long instanceId; |
|||
|
|||
/** |
|||
* 任务表id |
|||
*/ |
|||
private Long taskId; |
|||
|
|||
/** |
|||
* 协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签) |
|||
*/ |
|||
private Integer cooperateType; |
|||
|
|||
/** |
|||
* 协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签) |
|||
*/ |
|||
private String cooperateTypeName; |
|||
|
|||
/** |
|||
* 业务id |
|||
*/ |
|||
private String businessId; |
|||
|
|||
/** |
|||
* 开始节点编码 |
|||
*/ |
|||
private String nodeCode; |
|||
|
|||
/** |
|||
* 开始节点名称 |
|||
*/ |
|||
private String nodeName; |
|||
|
|||
/** |
|||
* 开始节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) |
|||
*/ |
|||
private Integer nodeType; |
|||
|
|||
/** |
|||
* 目标节点编码 |
|||
*/ |
|||
private String targetNodeCode; |
|||
|
|||
/** |
|||
* 结束节点名称 |
|||
*/ |
|||
private String targetNodeName; |
|||
|
|||
/** |
|||
* 审批者 |
|||
*/ |
|||
private String approver; |
|||
|
|||
/** |
|||
* 审批者 |
|||
*/ |
|||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "approver") |
|||
private String approveName; |
|||
|
|||
/** |
|||
* 协作人(只有转办、会签、票签、委派) |
|||
*/ |
|||
private String collaborator; |
|||
|
|||
/** |
|||
* 权限标识 permissionFlag的list形式 |
|||
*/ |
|||
private List<String> permissionList; |
|||
|
|||
/** |
|||
* 跳转类型(PASS通过 REJECT退回 NONE无动作) |
|||
*/ |
|||
private String skipType; |
|||
|
|||
/** |
|||
* 流程状态 |
|||
*/ |
|||
private String flowStatus; |
|||
|
|||
/** |
|||
* 任务状态 |
|||
*/ |
|||
private String flowTaskStatus; |
|||
|
|||
/** |
|||
* 流程状态 |
|||
*/ |
|||
private String flowStatusName; |
|||
|
|||
/** |
|||
* 审批意见 |
|||
*/ |
|||
private String message; |
|||
|
|||
/** |
|||
* 业务详情 存业务类的json |
|||
*/ |
|||
private String ext; |
|||
|
|||
/** |
|||
* 创建者 |
|||
*/ |
|||
private String createBy; |
|||
|
|||
/** |
|||
* 申请人 |
|||
*/ |
|||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy") |
|||
private String createByName; |
|||
|
|||
/** |
|||
* 流程分类id |
|||
*/ |
|||
private String category; |
|||
|
|||
/** |
|||
* 流程分类名称 |
|||
*/ |
|||
@Translation(type = FlowConstant.CATEGORY_ID_TO_NAME, mapper = "category") |
|||
private String categoryName; |
|||
|
|||
/** |
|||
* 审批表单是否自定义(Y是 N否) |
|||
*/ |
|||
private String formCustom; |
|||
|
|||
/** |
|||
* 审批表单路径 |
|||
*/ |
|||
private String formPath; |
|||
|
|||
/** |
|||
* 流程定义编码 |
|||
*/ |
|||
private String flowCode; |
|||
|
|||
/** |
|||
* 流程版本号 |
|||
*/ |
|||
private String version; |
|||
|
|||
/** |
|||
* 运行时长 |
|||
*/ |
|||
private String runDuration; |
|||
|
|||
/** |
|||
* 设置创建时间并计算任务运行时长 |
|||
* |
|||
* @param createTime 创建时间 |
|||
*/ |
|||
public void setCreateTime(Date createTime) { |
|||
this.createTime = createTime; |
|||
updateRunDuration(); |
|||
} |
|||
|
|||
/** |
|||
* 设置更新时间并计算任务运行时长 |
|||
* |
|||
* @param updateTime 更新时间 |
|||
*/ |
|||
public void setUpdateTime(Date updateTime) { |
|||
this.updateTime = updateTime; |
|||
updateRunDuration(); |
|||
} |
|||
|
|||
/** |
|||
* 更新运行时长 |
|||
*/ |
|||
private void updateRunDuration() { |
|||
// 如果创建时间和更新时间均不为空,计算它们之间的时长
|
|||
if (this.updateTime != null && this.createTime != null) { |
|||
this.runDuration = DateUtils.getTimeDifference(this.updateTime, this.createTime); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 设置协作方式,并通过协作方式获取名称 |
|||
*/ |
|||
public void setCooperateType(Integer cooperateType) { |
|||
this.cooperateType = cooperateType; |
|||
this.cooperateTypeName = CooperateType.getValueByKey(cooperateType); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,137 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import lombok.Data; |
|||
import org.dromara.common.translation.annotation.Translation; |
|||
import org.dromara.common.translation.constant.TransConstant; |
|||
import org.dromara.workflow.common.constant.FlowConstant; |
|||
|
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* 流程实例视图 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class FlowInstanceVo { |
|||
|
|||
private Long id; |
|||
|
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
private Date createTime; |
|||
|
|||
/** |
|||
* 更新时间 |
|||
*/ |
|||
private Date updateTime; |
|||
|
|||
/** |
|||
* 租户ID |
|||
*/ |
|||
private String tenantId; |
|||
|
|||
/** |
|||
* 删除标记 |
|||
*/ |
|||
private String delFlag; |
|||
|
|||
/** |
|||
* 对应flow_definition表的id |
|||
*/ |
|||
private Long definitionId; |
|||
|
|||
/** |
|||
* 流程定义名称 |
|||
*/ |
|||
private String flowName; |
|||
|
|||
/** |
|||
* 流程定义编码 |
|||
*/ |
|||
private String flowCode; |
|||
|
|||
/** |
|||
* 业务id |
|||
*/ |
|||
private String businessId; |
|||
|
|||
/** |
|||
* 节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) |
|||
*/ |
|||
private Integer nodeType; |
|||
|
|||
/** |
|||
* 流程节点编码 每个流程的nodeCode是唯一的,即definitionId+nodeCode唯一,在数据库层面做了控制 |
|||
*/ |
|||
private String nodeCode; |
|||
|
|||
/** |
|||
* 流程节点名称 |
|||
*/ |
|||
private String nodeName; |
|||
|
|||
/** |
|||
* 流程变量 |
|||
*/ |
|||
private String variable; |
|||
|
|||
/** |
|||
* 流程状态(0待提交 1审批中 2 审批通过 3自动通过 8已完成 9已退回 10失效) |
|||
*/ |
|||
private String flowStatus; |
|||
|
|||
/** |
|||
* 流程状态 |
|||
*/ |
|||
private String flowStatusName; |
|||
|
|||
/** |
|||
* 流程激活状态(0挂起 1激活) |
|||
*/ |
|||
private Integer activityStatus; |
|||
|
|||
/** |
|||
* 审批表单是否自定义(Y是 N否) |
|||
*/ |
|||
private String formCustom; |
|||
|
|||
/** |
|||
* 审批表单路径 |
|||
*/ |
|||
private String formPath; |
|||
|
|||
/** |
|||
* 扩展字段,预留给业务系统使用 |
|||
*/ |
|||
private String ext; |
|||
|
|||
/** |
|||
* 流程定义版本 |
|||
*/ |
|||
private String version; |
|||
|
|||
/** |
|||
* 创建者 |
|||
*/ |
|||
private String createBy; |
|||
|
|||
/** |
|||
* 申请人 |
|||
*/ |
|||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy") |
|||
private String createByName; |
|||
|
|||
/** |
|||
* 流程分类id |
|||
*/ |
|||
private String category; |
|||
|
|||
/** |
|||
* 流程分类名称 |
|||
*/ |
|||
@Translation(type = FlowConstant.CATEGORY_ID_TO_NAME, mapper = "category") |
|||
private String categoryName; |
|||
|
|||
} |
@ -0,0 +1,176 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import lombok.Data; |
|||
import org.dromara.common.translation.annotation.Translation; |
|||
import org.dromara.common.translation.constant.TransConstant; |
|||
import org.dromara.warm.flow.core.entity.User; |
|||
import org.dromara.workflow.common.constant.FlowConstant; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.math.BigDecimal; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 任务视图 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class FlowTaskVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
private Long id; |
|||
|
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
private Date createTime; |
|||
|
|||
/** |
|||
* 更新时间 |
|||
*/ |
|||
private Date updateTime; |
|||
|
|||
/** |
|||
* 租户ID |
|||
*/ |
|||
private String tenantId; |
|||
|
|||
/** |
|||
* 删除标记 |
|||
*/ |
|||
private String delFlag; |
|||
|
|||
/** |
|||
* 对应flow_definition表的id |
|||
*/ |
|||
private Long definitionId; |
|||
|
|||
/** |
|||
* 流程实例表id |
|||
*/ |
|||
private Long instanceId; |
|||
|
|||
/** |
|||
* 流程定义名称 |
|||
*/ |
|||
private String flowName; |
|||
|
|||
/** |
|||
* 业务id |
|||
*/ |
|||
private String businessId; |
|||
|
|||
/** |
|||
* 节点编码 |
|||
*/ |
|||
private String nodeCode; |
|||
|
|||
/** |
|||
* 节点名称 |
|||
*/ |
|||
private String nodeName; |
|||
|
|||
/** |
|||
* 节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) |
|||
*/ |
|||
private Integer nodeType; |
|||
|
|||
/** |
|||
* 权限标识 permissionFlag的list形式 |
|||
*/ |
|||
private List<String> permissionList; |
|||
|
|||
/** |
|||
* 流程用户列表 |
|||
*/ |
|||
private List<User> userList; |
|||
|
|||
/** |
|||
* 审批表单是否自定义(Y是 N否) |
|||
*/ |
|||
private String formCustom; |
|||
|
|||
/** |
|||
* 审批表单 |
|||
*/ |
|||
private String formPath; |
|||
|
|||
/** |
|||
* 流程定义编码 |
|||
*/ |
|||
private String flowCode; |
|||
|
|||
/** |
|||
* 流程版本号 |
|||
*/ |
|||
private String version; |
|||
|
|||
/** |
|||
* 流程状态 |
|||
*/ |
|||
private String flowStatus; |
|||
|
|||
/** |
|||
* 流程分类id |
|||
*/ |
|||
private String category; |
|||
|
|||
/** |
|||
* 流程分类名称 |
|||
*/ |
|||
@Translation(type = FlowConstant.CATEGORY_ID_TO_NAME, mapper = "category") |
|||
private String categoryName; |
|||
|
|||
/** |
|||
* 流程状态 |
|||
*/ |
|||
@Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "flowStatus", other = "wf_business_status") |
|||
private String flowStatusName; |
|||
|
|||
/** |
|||
* 办理人类型 |
|||
*/ |
|||
private String type; |
|||
|
|||
/** |
|||
* 办理人ids |
|||
*/ |
|||
private String assigneeIds; |
|||
|
|||
/** |
|||
* 办理人名称 |
|||
*/ |
|||
private String assigneeNames; |
|||
|
|||
/** |
|||
* 抄送人id |
|||
*/ |
|||
private String processedBy; |
|||
|
|||
/** |
|||
* 抄送人名称 |
|||
*/ |
|||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "processedBy") |
|||
private String processedByName; |
|||
|
|||
/** |
|||
* 流程签署比例值 大于0为票签,会签 |
|||
*/ |
|||
private BigDecimal nodeRatio; |
|||
|
|||
/** |
|||
* 申请人id |
|||
*/ |
|||
private String createBy; |
|||
|
|||
/** |
|||
* 申请人名称 |
|||
*/ |
|||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy") |
|||
private String createByName; |
|||
} |
@ -1,47 +0,0 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 节点图形信息 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class GraphicInfoVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
/** |
|||
* x坐标 |
|||
*/ |
|||
private double x; |
|||
|
|||
/** |
|||
* y坐标 |
|||
*/ |
|||
private double y; |
|||
|
|||
/** |
|||
* 节点高度 |
|||
*/ |
|||
private double height; |
|||
|
|||
/** |
|||
* 节点宽度 |
|||
*/ |
|||
private double width; |
|||
|
|||
/** |
|||
* 节点id |
|||
*/ |
|||
private String nodeId; |
|||
|
|||
/** |
|||
* 节点名称 |
|||
*/ |
|||
private String nodeName; |
|||
} |
@ -1,48 +0,0 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 模型视图对象 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class ModelVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 模型id |
|||
*/ |
|||
private String id; |
|||
|
|||
/** |
|||
* 模型名称 |
|||
*/ |
|||
private String name; |
|||
|
|||
/** |
|||
* 模型标识key |
|||
*/ |
|||
private String key; |
|||
|
|||
/** |
|||
* 模型分类 |
|||
*/ |
|||
private String categoryCode; |
|||
|
|||
/** |
|||
* 模型XML |
|||
*/ |
|||
private String xml; |
|||
|
|||
/** |
|||
* 备注 |
|||
*/ |
|||
private String description; |
|||
} |
@ -1,33 +0,0 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 多实例信息 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class MultiInstanceVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 会签类型(串行,并行) |
|||
*/ |
|||
private Object type; |
|||
|
|||
/** |
|||
* 会签人员KEY |
|||
*/ |
|||
private String assignee; |
|||
|
|||
/** |
|||
* 会签人员集合KEY |
|||
*/ |
|||
private String assigneeList; |
|||
} |
@ -1,43 +0,0 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 参与者 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class ParticipantVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 组id(角色id) |
|||
*/ |
|||
private List<Long> groupIds; |
|||
|
|||
/** |
|||
* 候选人id(用户id) 当组id不为空时,将组内人员查出放入candidate |
|||
*/ |
|||
private List<Long> candidate; |
|||
|
|||
/** |
|||
* 候选人名称(用户名称) 当组id不为空时,将组内人员查出放入candidateName |
|||
*/ |
|||
private List<String> candidateName; |
|||
|
|||
/** |
|||
* 是否认领标识 |
|||
* 当为空时默认当前任务不需要认领 |
|||
* 当为true时当前任务说明为候选模式并且有人已经认领了任务可以归还, |
|||
* 当为false时当前任务说明为候选模式该任务未认领, |
|||
*/ |
|||
private Boolean claim; |
|||
|
|||
} |
@ -1,70 +0,0 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* 流程定义视图 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class ProcessDefinitionVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 流程定义id |
|||
*/ |
|||
private String id; |
|||
|
|||
/** |
|||
* 流程定义名称 |
|||
*/ |
|||
private String name; |
|||
|
|||
/** |
|||
* 流程定义标识key |
|||
*/ |
|||
private String key; |
|||
|
|||
/** |
|||
* 流程定义版本 |
|||
*/ |
|||
private int version; |
|||
|
|||
/** |
|||
* 流程定义挂起或激活 1激活 2挂起 |
|||
*/ |
|||
private int suspensionState; |
|||
|
|||
/** |
|||
* 流程xml名称 |
|||
*/ |
|||
private String resourceName; |
|||
|
|||
/** |
|||
* 流程图片名称 |
|||
*/ |
|||
private String diagramResourceName; |
|||
|
|||
/** |
|||
* 流程部署id |
|||
*/ |
|||
private String deploymentId; |
|||
|
|||
/** |
|||
* 流程部署时间 |
|||
*/ |
|||
private Date deploymentTime; |
|||
|
|||
/** |
|||
* 流程定义配置 |
|||
*/ |
|||
private WfDefinitionConfigVo wfDefinitionConfigVo; |
|||
|
|||
} |
@ -1,100 +0,0 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 流程实例视图 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class ProcessInstanceVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 流程实例id |
|||
*/ |
|||
private String id; |
|||
|
|||
/** |
|||
* 流程定义id |
|||
*/ |
|||
private String processDefinitionId; |
|||
|
|||
/** |
|||
* 流程定义名称 |
|||
*/ |
|||
private String processDefinitionName; |
|||
|
|||
/** |
|||
* 流程定义key |
|||
*/ |
|||
private String processDefinitionKey; |
|||
|
|||
/** |
|||
* 流程定义版本 |
|||
*/ |
|||
private Integer processDefinitionVersion; |
|||
|
|||
/** |
|||
* 部署id |
|||
*/ |
|||
private String deploymentId; |
|||
|
|||
/** |
|||
* 业务id |
|||
*/ |
|||
private String businessKey; |
|||
|
|||
/** |
|||
* 是否挂起 |
|||
*/ |
|||
private Boolean isSuspended; |
|||
|
|||
/** |
|||
* 租户id |
|||
*/ |
|||
private String tenantId; |
|||
|
|||
/** |
|||
* 启动时间 |
|||
*/ |
|||
private Date startTime; |
|||
|
|||
/** |
|||
* 结束时间 |
|||
*/ |
|||
private Date endTime; |
|||
|
|||
/** |
|||
* 启动人id |
|||
*/ |
|||
private String startUserId; |
|||
|
|||
/** |
|||
* 流程状态 |
|||
*/ |
|||
private String businessStatus; |
|||
|
|||
/** |
|||
* 流程状态 |
|||
*/ |
|||
private String businessStatusName; |
|||
|
|||
/** |
|||
* 待办任务集合 |
|||
*/ |
|||
private List<TaskVo> taskVoList; |
|||
|
|||
/** |
|||
* 节点配置 |
|||
*/ |
|||
private WfNodeConfigVo wfNodeConfigVo; |
|||
} |
@ -1,173 +0,0 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import lombok.Data; |
|||
import org.dromara.common.translation.annotation.Translation; |
|||
import org.dromara.common.translation.constant.TransConstant; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* 任务视图 |
|||
* |
|||
* @author may |
|||
*/ |
|||
@Data |
|||
public class TaskVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 任务id |
|||
*/ |
|||
private String id; |
|||
|
|||
/** |
|||
* 任务名称 |
|||
*/ |
|||
private String name; |
|||
|
|||
/** |
|||
* 描述 |
|||
*/ |
|||
private String description; |
|||
|
|||
/** |
|||
* 优先级 |
|||
*/ |
|||
private Integer priority; |
|||
|
|||
/** |
|||
* 负责此任务的人员的用户id |
|||
*/ |
|||
private String owner; |
|||
|
|||
/** |
|||
* 办理人id |
|||
*/ |
|||
private Long assignee; |
|||
|
|||
/** |
|||
* 办理人 |
|||
*/ |
|||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "assignee") |
|||
private String assigneeName; |
|||
|
|||
|
|||
/** |
|||
* 流程实例id |
|||
*/ |
|||
private String processInstanceId; |
|||
|
|||
/** |
|||
* 执行id |
|||
*/ |
|||
private String executionId; |
|||
|
|||
/** |
|||
* 无用 |
|||
*/ |
|||
private String taskDefinitionId; |
|||
|
|||
/** |
|||
* 流程定义id |
|||
*/ |
|||
private String processDefinitionId; |
|||
|
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
private Date createTime; |
|||
|
|||
/** |
|||
* 已办任务-创建时间 |
|||
*/ |
|||
private Date startTime; |
|||
|
|||
/** |
|||
* 结束时间 |
|||
*/ |
|||
private Date endTime; |
|||
|
|||
/** |
|||
* 节点id |
|||
*/ |
|||
private String taskDefinitionKey; |
|||
|
|||
/** |
|||
* 任务截止日期 |
|||
*/ |
|||
private Date dueDate; |
|||
|
|||
/** |
|||
* 流程类别 |
|||
*/ |
|||
private String category; |
|||
|
|||
/** |
|||
* 父级任务id |
|||
*/ |
|||
private String parentTaskId; |
|||
|
|||
/** |
|||
* 租户id |
|||
*/ |
|||
private String tenantId; |
|||
|
|||
/** |
|||
* 认领时间 |
|||
*/ |
|||
private Date claimTime; |
|||
|
|||
/** |
|||
* 流程状态 |
|||
*/ |
|||
private String businessStatus; |
|||
|
|||
/** |
|||
* 流程状态 |
|||
*/ |
|||
private String businessStatusName; |
|||
|
|||
/** |
|||
* 流程定义名称 |
|||
*/ |
|||
private String processDefinitionName; |
|||
|
|||
/** |
|||
* 流程定义key |
|||
*/ |
|||
private String processDefinitionKey; |
|||
|
|||
/** |
|||
* 流程定义版本 |
|||
*/ |
|||
private Integer processDefinitionVersion; |
|||
|
|||
/** |
|||
* 参与者 |
|||
*/ |
|||
private ParticipantVo participantVo; |
|||
|
|||
/** |
|||
* 是否会签 |
|||
*/ |
|||
private Boolean multiInstance; |
|||
|
|||
/** |
|||
* 业务id |
|||
*/ |
|||
private String businessKey; |
|||
|
|||
/** |
|||
* 流程定义配置 |
|||
*/ |
|||
private WfDefinitionConfigVo wfDefinitionConfigVo; |
|||
|
|||
/** |
|||
* 节点配置 |
|||
*/ |
|||
private WfNodeConfigVo wfNodeConfigVo; |
|||
} |
@ -1,58 +0,0 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
|||
import com.alibaba.excel.annotation.ExcelProperty; |
|||
import io.github.linpeilie.annotations.AutoMapper; |
|||
import lombok.Data; |
|||
import org.dromara.workflow.domain.WfCategory; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
|
|||
/** |
|||
* 流程分类视图对象 wf_category |
|||
* |
|||
* @author may |
|||
* @date 2023-06-27 |
|||
*/ |
|||
@Data |
|||
@ExcelIgnoreUnannotated |
|||
@AutoMapper(target = WfCategory.class) |
|||
public class WfCategoryVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 主键 |
|||
*/ |
|||
@ExcelProperty(value = "主键") |
|||
private Long id; |
|||
|
|||
/** |
|||
* 分类名称 |
|||
*/ |
|||
@ExcelProperty(value = "分类名称") |
|||
private String categoryName; |
|||
|
|||
/** |
|||
* 分类编码 |
|||
*/ |
|||
@ExcelProperty(value = "分类编码") |
|||
private String categoryCode; |
|||
|
|||
/** |
|||
* 父级id |
|||
*/ |
|||
@ExcelProperty(value = "父级id") |
|||
private Long parentId; |
|||
|
|||
/** |
|||
* 排序 |
|||
*/ |
|||
@ExcelProperty(value = "排序") |
|||
private Long sortNum; |
|||
|
|||
|
|||
} |
@ -1,70 +0,0 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import org.dromara.workflow.domain.WfDefinitionConfig; |
|||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
|||
import com.alibaba.excel.annotation.ExcelProperty; |
|||
import io.github.linpeilie.annotations.AutoMapper; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
|
|||
/** |
|||
* 流程定义配置视图对象 wf_definition_config |
|||
* |
|||
* @author may |
|||
* @date 2024-03-18 |
|||
*/ |
|||
@Data |
|||
@ExcelIgnoreUnannotated |
|||
@AutoMapper(target = WfDefinitionConfig.class) |
|||
public class WfDefinitionConfigVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 主键 |
|||
*/ |
|||
@ExcelProperty(value = "主键") |
|||
private Long id; |
|||
|
|||
/** |
|||
* 表名 |
|||
*/ |
|||
@ExcelProperty(value = "表名") |
|||
private String tableName; |
|||
|
|||
/** |
|||
* 流程定义ID |
|||
*/ |
|||
@ExcelProperty(value = "流程定义ID") |
|||
private String definitionId; |
|||
|
|||
/** |
|||
* 流程KEY |
|||
*/ |
|||
@ExcelProperty(value = "流程KEY") |
|||
private String processKey; |
|||
|
|||
|
|||
/** |
|||
* 流程版本 |
|||
*/ |
|||
@ExcelProperty(value = "流程版本") |
|||
private Integer version; |
|||
|
|||
/** |
|||
* 备注 |
|||
*/ |
|||
@ExcelProperty(value = "备注") |
|||
private String remark; |
|||
|
|||
/** |
|||
* 表单管理 |
|||
*/ |
|||
private WfFormManageVo wfFormManageVo; |
|||
|
|||
|
|||
} |
@ -1,63 +0,0 @@ |
|||
package org.dromara.workflow.domain.vo; |
|||
|
|||
import org.dromara.workflow.domain.WfFormManage; |
|||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; |
|||
import com.alibaba.excel.annotation.ExcelProperty; |
|||
import io.github.linpeilie.annotations.AutoMapper; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
|
|||
/** |
|||
* 表单管理视图对象 wf_form_manage |
|||
* |
|||
* @author may |
|||
* @date 2024-03-29 |
|||
*/ |
|||
@Data |
|||
@ExcelIgnoreUnannotated |
|||
@AutoMapper(target = WfFormManage.class) |
|||
public class WfFormManageVo implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** |
|||
* 主键 |
|||
*/ |
|||
@ExcelProperty(value = "主键") |
|||
private Long id; |
|||
|
|||
/** |
|||
* 表单名称 |
|||
*/ |
|||
@ExcelProperty(value = "表单名称") |
|||
private String formName; |
|||
|
|||
/** |
|||
* 表单类型 |
|||
*/ |
|||
@ExcelProperty(value = "表单类型") |
|||
private String formType; |
|||
|
|||
/** |
|||
* 表单类型名称 |
|||
*/ |
|||
private String formTypeName; |
|||
|
|||
/** |
|||
* 路由地址/表单ID |
|||
*/ |
|||
@ExcelProperty(value = "路由地址/表单ID") |
|||
private String router; |
|||
|
|||
/** |
|||
* 备注 |
|||
*/ |
|||
@ExcelProperty(value = "备注") |
|||
private String remark; |
|||
|
|||
|
|||
} |
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue