!635 合并 warmflow 功能分支
* update 优化 工作流设计器支持token传输 只需要放行token头获取即可
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* update 优化 无需多余set变量
* update 优化 避免重复处理
* update 优化 实体类隔离
* add 增加流程启动,办理接口
* update 调整流程驳回
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* update warmflow 1.3.7
* update 增加 warmflow oracle pg sqlserver sql脚本文件
* update 增加 warmflow oracle pg sqlserver sql脚本文件
* add 新增workflow不同的sql语句
* add 新增添加租户同步默认流程定义
* update 优化 流程列表查询 删除无用mapper
* update 导入流程 支持并发多文件上传
* update 调整流程定义查询
* update 优化 统一书写格式
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* update 优化发布事件增加租户ID
* update 调整驳回记录
* Revert "update 获取用户简略信息,祖级部门列表,部门负责人等"
* update 获取用户简略信息,祖级部门列表,部门负责人等
* update 更新warm-flow版本到v1.3.6-m1
* update 更新注释信息
* fix 临时修复 warm参数读取问题
* update warm-flow 1.3.4 => 1.3.5 优化流程图导入
* update 更新warm-flow版本到v1.3.5 2024-12-20
* update 增加抄送人名称
* update 我的抄送增加申请人以及更新时间
* update 优化监听事件注释
* update 优化流程分类名称翻译回显
* fix 修改根据流程分类id查询
* update 新增流程分类id查询
* fix 修复抄送错误
* fix 修复错误判空
* fix 修复错误判空
* update 新增删除流程事件
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* update 调整sql书写顺序
* fix 修复 抄送缺数据问题 与 已完成任务数据取错问题
* update 新增根据业务id查询流程实例详细信息
* update 调整变量参数
* update 调整分类接口
* update 统一业务id参数
* update 调整返回参数
* update 增加业务id通用查询条件
* update 优化代码 修复bug
* update 优化新增流程分类判断
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* update 调整驳回
* update 优化错误注释
* update 优化流程分类sql语句
* update 调整驳回
* update 删除流程分类状态
* update 增加流程定义防重
* [fix]
* update 优化代码 修复bug
* update 优化流程定义增加类别树查询
* update 新增翻译根据流程分类ID查询流程分类名称
* update 根据分页对象构建表格分页数据对象
* update 优化流程定义列表名称
* update 优化流程分类校验
* update 导入流程 支持自定义类别
* update 流程案例 增加表单路径
* update 流程定义查询返回表单路径
* update 优化任务业务层
* fix 修复 请假天数不准确问题
* update 优化驳回 撤销
* update 删除类别查询权限 通用查询不需要加权限
* fix 修复 变量名修改错误
* Merge branch 'warm-flow-future' of https://gitee.com/dromara/RuoYi-Vue…
* update 调整驳回
* update 表名类名统一命名
* Merge branch 'warm-flow-future' of https://gitee.com/dromara/RuoYi-Vue…
* update 挑战者驳回 撤销
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* fix 修复会签 票签撤销问题
* update 调整并行环节撤销错误 增加办理校验
* Merge branch 'warm-flow-future' of https://gitee.com/dromara/RuoYi-Vue…
* update 优化获取办理人
* update 优化 workflow模块增加doc依赖输出接口文档
* Revert "update 优化 删除无用方法"
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* Merge branch 'warm-flow-future' of https://gitee.com/dromara/RuoYi-Vue…
* update 调整代办人查询错误 增加示例
* update 优化 重构代码
* update 优化 重构代码
* update 优化 将工作流消息推送改为sse
* add 添加模型
* update 调整审批记录
* update 调整请假案例
* fix 修复流程定义查询错误
* update 调整流程实例查询错误
* update 调整获取当前登录任务实例
* add 添加消息发送
* update 调整办理监听
* [add]
* [fix]
* update 重构 将工作流查询逻辑封装为单独的service类
* [update]
* [add]
* 办理附件提交
* 申请人查询修改
* update 回退优化 删除无用方法
* update 优化任务办理人翻译实现
* update 优化任务分配人枚举
* update 优化 删除无用方法
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* [add]
* update 优化全局任务办理监听
* update 删除无用引入
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* update 优化激活/挂起取反逻辑
* !614 style workflow xml 格式
* style workflow xml 格式
* !612 fix FlwInstanceMapper xml错误
* fix FlwInstanceMapper xml错误
* update 优化 后端代码
* update 优化接口请求路径
* update 调整已办排序
* add 添加任务作废
* update 调整任务办理操作
* update 调整加签,减签校验
* update 调整加签
* add 添加获取当前任务的办理人接口
* add 添加任务查询会签,票签比例
* update 调整任务,实例查询
* update 调整任务委托,转办,优化部分代码等
* update 调整流程定义视图
* add 添加任务,流程实例常用查询接口
* Merge branch 'dev' into warm-flow-future
* update 优化工作流常量使用
* update 优化流程记录运行时长获取
* update 优化任务管理控制层
* update 回复业务状态枚举
* update 优化业务状态枚举
* update 调整昵称翻译
* update 调整修改办理人接口
* update 调整流程全局监听,调整任务办理人批量修改,优化代码
* update 优化查询可驳回节点
* update 优化添加抄送人
* update 优化增加人员类型枚举,删除无用常量
* update 优化请假天数工具类,删除缓存,加锁处理,可以采用外部传参的形式处理redis部分
* update 优化请假天数计算
* update 优化任务完成时间处理
* update 优化任务办理人获取
* update 优化任务操作,委派、转办、加签、减签、修改办理人等
* add 新增warm-flow-all.sql
* del 删除多余SQL
* del 删除无用vo
* del 删除表单管理信息
* del 删除节点配置信息
* update 优化节点类型常量获取
* update 优化权限办理人获取
* update 优化权限办理人获取判断
* update 提交等待新版本待优化的开始监听信息
* update 新增获取部门负责人
* add 新增分派办理人监听器
* update 优化或者字符串用户ID
* update 用户前缀去掉
* update 调整流程实例状态查询
* add 添加流程撤销
* add 添加流程抄送
* add 新增办理人权限处理器
* update 升级warm-flow1.3.4
* Merge branch 'dev' into warm-flow-future
* update 调整流程定义复制
* update 调整流程启动设置启动人变量
* update 调整流程定义删除
* update 调整流程定义导入
* update 调整工作流任务,流程定义等查询
* update 调整工作流人员翻译查询
* update 调整转办,加签等参数
* update 调整流程办理设置办理人
* update 调整流程设计保存
* update 调整流程状态,移除过时方法,调整查询办理人
* update 补充工作流请求增加鉴权
* update 工作流请求增加鉴权
* update 新增流程完成监听器
* update 新增流程启动监听器
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* update 更新warm-flow版本
* update 优化workflow表sql格式
* update 优化,增加岗位权限判空处理
* update 当前用户所有权限岗位ID改为从token获取
* update 当前用户所有权限增加岗位ID权限
* update 更新通过岗位ID查询用户
* update 优化激活/挂起流程定义判断
* Revert "add 新增异常处理器和工作流封装包"
* add 新增异常处理器和工作流封装包
* update 优化待办任务查询以及任务流转
* update 优化工作流工具,避免多次获取请求
* fix 修改无效标识
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* update 查询部门并返回任务指派的列表根据部门树搜索
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* update 优化任务办理人分组
* update 优化任务办理人查询
* update 优化任务办理人查询
* update 优化任务办理人
* update 完善任务办理人
* add 新增角色办理人
* !596 优化工作流代码逻辑
* update 优化工作流工具冗余代码
* update 优化工作流代码逻辑
* update 调整办理 驳回 终止等状态
* update 调整流程定义查询
* 解决冲突提交 warmflow代码
* update 升级warm-flow到1.3.0 调整流程办理 ,驳回,终止等 添加自定义监听
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* update 调整流程xml查询
* update 调整驳回
* update 升级warm-flow
* update 调整任务办理设置办理人
* 调整转办,委托参数
* update warm-flow 1.2.4 => 1.2.7
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* update 调整抄送错误
* 添加已办,未办
* Merge branch 'warm-flow-future' of https://gitee.com/dromara/RuoYi-Vue…
* add 添加我发起的单据接口
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* update 调整流程实例,待办查询
* remove 删除无用校验
* add 添加待办人查询
* Merge branch 'dev' into warm-flow-future
* update 调整字段错误,流程导入
* add 添加流程激活/挂起接口 升级warm-flow到1.2.4
* add 添加历史流程定义查询 调整流程发布
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* Merge remote-tracking branch 'origin/dev' into warm-flow-future
* update 优化 TenantSpringCacheManager 处理逻辑
* fix 修复 一级缓存key未区分租户问题
* update 优化 角色权限判断
* update 更新 readme
* update 优化 增加删除标志位常量优化查询代码
* fix 修复 登出无法正确删除对应的租户数据问题
* update 优化 sse 拦截网络中断io异常
* fix 修复 登录错误锁定不区分租户问题
* update 优化 sse 关闭连接各种异常问题
* update 优化 监控使用独立web依赖
* fix 修复 代码生成 错误匹配表名问题
* update 优化 适配 anyline 新改动
* update anyline 8.7.2-20240728
* update 脱敏策略优化增加密码
* add 新增 更多脱敏策略
* update 优化oss查询代码
* update 优化 sse发送消息 增加token有效期判断
* fix 修复 登出后重新登录 sse推送报错问题
* fix 修复 代码生成 数据源切换问题
* update anyline 8.7.2-20240726
* fix 修复 代码生成 表结构缓存问题
* update snailjob 1.1.0 => 1.1.1
* fix 修复 代码生成 表结构缓存问题
* update 优化 sse 自动装配
* 初始化添加warm-flow
已添加51个文件
已复制1个文件
已重命名3个文件
已删除96个文件
已修改30个文件
| | |
| | | <!-- é¢åè¿è¡æ¶çD-ORMä¾èµ --> |
| | | <anyline.version>8.7.2-20241022</anyline.version> |
| | | <!--工使µé
ç½®--> |
| | | <flowable.version>7.0.1</flowable.version> |
| | | <warm-flow.version>1.3.7</warm-flow.version> |
| | | |
| | | <!-- æä»¶çæ¬ --> |
| | | <maven-jar-plugin.version>3.2.2</maven-jar-plugin.version> |
| | |
| | | <scope>import</scope> |
| | | </dependency> |
| | | |
| | | <!-- Warm-Flowå½äº§å·¥ä½æµå¼æ, å¨çº¿ææ¡£ï¼http://warm-flow.cn/ --> |
| | | <dependency> |
| | | <groupId>org.flowable</groupId> |
| | | <artifactId>flowable-bom</artifactId> |
| | | <version>${flowable.version}</version> |
| | | <type>pom</type> |
| | | <scope>import</scope> |
| | | <groupId>org.dromara.warm</groupId> |
| | | <artifactId>warm-flow-mybatis-plus-sb3-starter</artifactId> |
| | | <version>${warm-flow.version}</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.dromara.warm</groupId> |
| | | <artifactId>warm-flow-plugin-ui-sb-web</artifactId> |
| | | <version>${warm-flow.version}</version> |
| | | </dependency> |
| | | |
| | | <!-- JustAuth çä¾èµé
ç½®--> |
| | |
| | | - /error |
| | | - /*/api-docs |
| | | - /*/api-docs/** |
| | | - /warm-flow-ui/token-name |
| | | |
| | | # å¤ç§æ·é
ç½® |
| | | tenant: |
| | |
| | | # æé¤é¾æ¥ï¼å¤ä¸ªç¨éå·åéï¼ |
| | | excludeUrls: |
| | | - /system/notice |
| | | - /workflow/model/save |
| | | - /workflow/model/editModelXml |
| | | - /warm-flow/save-xml |
| | | |
| | | # å
¨å±çº¿ç¨æ± ç¸å
³é
ç½® |
| | | # å¦ä½¿ç¨JDK21è¯·ç´æ¥ä½¿ç¨èæçº¿ç¨ ä¸è¦å¼å¯æ¤é
ç½® |
| | |
| | | # è®¾ç½®è®¿é®æºå°å |
| | | allowedOrigins: '*' |
| | | |
| | | --- #flowableé
ç½® |
| | | flowable: |
| | | # å¼å
³ ç¨äºå¯å¨/åç¨å·¥ä½æµ |
| | | --- # warm-flow工使µé
ç½® |
| | | warm-flow: |
| | | # æ¯å¦å¼å¯å·¥ä½æµï¼é»è®¤true |
| | | enabled: true |
| | | process.enabled: ${flowable.enabled} |
| | | eventregistry.enabled: ${flowable.enabled} |
| | | async-executor-activate: false #å
³é宿¶ä»»å¡JOB |
| | | # å°databaseSchemaUpdate设置为trueãå½Flowableåç°åºä¸æ°æ®åºè¡¨ç»æä¸ä¸è´æ¶ï¼ä¼èªå¨å°æ°æ®åºè¡¨ç»æåçº§è³æ°çæ¬ã |
| | | database-schema-update: true |
| | | activity-font-name: å®ä½ |
| | | label-font-name: å®ä½ |
| | | annotation-font-name: å®ä½ |
| | | # å
³éå个模åçæè¡¨ï¼ç®ååªä½¿ç¨å·¥ä½æµåºç¡è¡¨ |
| | | idm: |
| | | enabled: false |
| | | cmmn: |
| | | enabled: false |
| | | dmn: |
| | | enabled: false |
| | | app: |
| | | enabled: false |
| | | # æ¯å¦å¼å¯è®¾è®¡å¨ui |
| | | ui: true |
| | | # é»è®¤Authorizationï¼å¦ææå¤ä¸ªtokenï¼ç¨éå·åé |
| | | token-name: ${sa-token.token-name},clientid |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.core.domain.dto; |
| | | |
| | | 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 CompleteTaskDTO implements Serializable { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * ä»»å¡id |
| | | */ |
| | | private Long taskId; |
| | | |
| | | /** |
| | | * éä»¶id |
| | | */ |
| | | private String fileId; |
| | | |
| | | /** |
| | | * æé人å |
| | | */ |
| | | private List<FlowCopyDTO> 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; |
| | | } |
| | | |
| | | } |
copy from ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/WfCopy.java
copy to ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/FlowCopyDTO.java
Îļþ´Ó ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/WfCopy.java ¸´ÖÆ |
| | |
| | | package org.dromara.workflow.domain.vo; |
| | | package org.dromara.common.core.domain.dto; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serial; |
| | | import java.io.Serializable; |
| | | |
| | | |
| | | /** |
| | | * æé |
| | |
| | | * @author may |
| | | */ |
| | | @Data |
| | | public class WfCopy implements Serializable { |
| | | public class FlowCopyDTO implements Serializable { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.core.domain.dto; |
| | | |
| | | |
| | | 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 StartProcessDTO 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; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.core.domain.dto; |
| | | |
| | | 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 TaskAssigneeDTO implements Serializable { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * æ»å¤§å° |
| | | */ |
| | | private Long total = 0L; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | private List<TaskHandler> list; |
| | | |
| | | public TaskAssigneeDTO(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; |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.core.domain.event; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serial; |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * å 餿µç¨çå¬ |
| | | * |
| | | * @author AprilWind |
| | | */ |
| | | @Data |
| | | public class ProcessDeleteEvent implements Serializable { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * ç§æ·ID |
| | | */ |
| | | private String tenantId; |
| | | |
| | | /** |
| | | * æµç¨å®ä¹ç¼ç |
| | | */ |
| | | private String flowCode; |
| | | |
| | | /** |
| | | * ä¸å¡id |
| | | */ |
| | | private String businessId; |
| | | |
| | | } |
| | |
| | | * |
| | | * @author may |
| | | */ |
| | | |
| | | @Data |
| | | public class ProcessEvent implements Serializable { |
| | | |
| | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * æµç¨å®ä¹key |
| | | * ç§æ·ID |
| | | */ |
| | | private String key; |
| | | private String tenantId; |
| | | |
| | | /** |
| | | * æµç¨å®ä¹ç¼ç |
| | | */ |
| | | private String flowCode; |
| | | |
| | | /** |
| | | * ä¸å¡id |
| | | */ |
| | | private String businessKey; |
| | | private String businessId; |
| | | |
| | | /** |
| | | * ç¶æ |
| | |
| | | * å½ä¸ºtrueæ¶ä¸ºç³è¯·äººèç¹åç |
| | | */ |
| | | private boolean submit; |
| | | |
| | | |
| | | } |
| | |
| | | * |
| | | * @author may |
| | | */ |
| | | |
| | | @Data |
| | | public class ProcessTaskEvent implements Serializable { |
| | | |
| | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * æµç¨å®ä¹key |
| | | * ç§æ·ID |
| | | */ |
| | | private String key; |
| | | private String tenantId; |
| | | |
| | | /** |
| | | * 审æ¹èç¹key |
| | | * æµç¨å®ä¹ç¼ç |
| | | */ |
| | | private String taskDefinitionKey; |
| | | private String flowCode; |
| | | |
| | | /** |
| | | * 审æ¹èç¹ç¼ç |
| | | */ |
| | | private String nodeCode; |
| | | |
| | | /** |
| | | * ä»»å¡id |
| | | */ |
| | | private String taskId; |
| | | private Long taskId; |
| | | |
| | | /** |
| | | * ä¸å¡id |
| | | */ |
| | | private String businessKey; |
| | | private String businessId; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.core.domain.model; |
| | | |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.io.Serial; |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * ä»»å¡å让人 |
| | | * |
| | | * @author AprilWind |
| | | */ |
| | | @Data |
| | | @NoArgsConstructor |
| | | public class TaskAssigneeBody 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; |
| | | |
| | | } |
| | |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * ä¸å¡ç¶ææä¸¾ |
| | |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum BusinessStatusEnum { |
| | | |
| | | /** |
| | | * å·²æ¤é |
| | | */ |
| | | CANCEL("cancel", "å·²æ¤é"), |
| | | |
| | | /** |
| | | * è稿 |
| | | */ |
| | | DRAFT("draft", "è稿"), |
| | | |
| | | /** |
| | | * å¾
å®¡æ ¸ |
| | | */ |
| | | WAITING("waiting", "å¾
å®¡æ ¸"), |
| | | |
| | | /** |
| | | * 已宿 |
| | | */ |
| | | FINISH("finish", "已宿"), |
| | | |
| | | /** |
| | | * å·²ä½åº |
| | | */ |
| | | INVALID("invalid", "å·²ä½åº"), |
| | | |
| | | /** |
| | | * å·²éå |
| | | */ |
| | | BACK("back", "å·²éå"), |
| | | |
| | | /** |
| | | * å·²ç»æ¢ |
| | | */ |
| | |
| | | */ |
| | | private final String desc; |
| | | |
| | | private static final Map<String, BusinessStatusEnum> STATUS_MAP = Arrays.stream(BusinessStatusEnum.values()) |
| | | .collect(Collectors.toConcurrentMap(BusinessStatusEnum::getStatus, Function.identity())); |
| | | |
| | | /** |
| | | * è·åä¸å¡ç¶æ |
| | | * æ ¹æ®ç¶æè·å对åºç BusinessStatusEnum æä¸¾ |
| | | * |
| | | * @param status ç¶æ |
| | | * @param status ä¸å¡ç¶æç |
| | | * @return 对åºç BusinessStatusEnum æä¸¾ï¼å¦ææ¾ä¸å°åè¿å null |
| | | */ |
| | | public static BusinessStatusEnum getByStatus(String status) { |
| | | // ä½¿ç¨ STATUS_MAP è·å对åºçæä¸¾ï¼è¥æ¾ä¸å°åè¿å null |
| | | return STATUS_MAP.get(status); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ç¶æè·å对åºçä¸å¡ç¶ææè¿°ä¿¡æ¯ |
| | | * |
| | | * @param status ä¸å¡ç¶æç |
| | | * @return è¿åä¸å¡ç¶ææè¿°ï¼è¥ç¶æç ä¸ºç©ºææªæ¾å°å¯¹åºçæä¸¾ï¼è¿å空å符串 |
| | | */ |
| | | public static String findByStatus(String status) { |
| | | if (StringUtils.isBlank(status)) { |
| | | return StrUtil.EMPTY; |
| | | } |
| | | return Arrays.stream(BusinessStatusEnum.values()) |
| | | .filter(statusEnum -> statusEnum.getStatus().equals(status)) |
| | | .findFirst() |
| | | .map(BusinessStatusEnum::getDesc) |
| | | .orElse(StrUtil.EMPTY); |
| | | BusinessStatusEnum statusEnum = STATUS_MAP.get(status); |
| | | return (statusEnum != null) ? statusEnum.getDesc() : StrUtil.EMPTY; |
| | | } |
| | | |
| | | /** |
| | | * 夿æ¯å¦ä¸ºæå®çç¶æä¹ä¸ï¼è稿ãå·²æ¤éæå·²éå |
| | | * |
| | | * @param status è¦æ£æ¥çç¶æ |
| | | * @return å¦æç¶æä¸ºè稿ãå·²æ¤éæå·²éåä¹ä¸ï¼åè¿å trueï¼å¦åè¿å false |
| | | */ |
| | | public static boolean isDraftOrCancelOrBack(String status) { |
| | | return DRAFT.status.equals(status) || CANCEL.status.equals(status) || BACK.status.equals(status); |
| | | } |
| | | |
| | | /** |
| | | * 夿æ¯å¦ä¸ºæ¤éï¼éåï¼ä½åºï¼ç»æ¢ |
| | | * |
| | | * @param status status |
| | | * @return ç»æ |
| | | */ |
| | | public static boolean initialState(String status) { |
| | | return CANCEL.status.equals(status) || BACK.status.equals(status) || INVALID.status.equals(status) || TERMINATION.status.equals(status); |
| | | } |
| | | |
| | | /** |
| | | * è·åè¿è¡ä¸çå®ä¾ç¶æå表 |
| | | * |
| | | * @return å
å«è¿è¡ä¸å®ä¾ç¶æçä¸å¯åå表 |
| | | * ï¼å
å« DRAFTãWAITINGãBACK å CANCEL ç¶æï¼ |
| | | */ |
| | | public static List<String> runningStatus() { |
| | | return Arrays.asList(DRAFT.status, WAITING.status, BACK.status, CANCEL.status); |
| | | } |
| | | |
| | | /** |
| | | * è·åç»æå®ä¾çç¶æå表 |
| | | * |
| | | * @return å
å«ç»æå®ä¾ç¶æçä¸å¯åå表 |
| | | * ï¼å
å« FINISHãINVALID å TERMINATION ç¶æï¼ |
| | | */ |
| | | public static List<String> finishStatus() { |
| | | return Arrays.asList(FINISH.status, INVALID.status, TERMINATION.status); |
| | | } |
| | | |
| | | /** |
| | |
| | | throw new ServiceException("æµç¨ç¶æä¸ºç©ºï¼"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.common.core.service; |
| | | |
| | | import org.dromara.common.core.domain.dto.TaskAssigneeDTO; |
| | | import org.dromara.common.core.domain.model.TaskAssigneeBody; |
| | | |
| | | /** |
| | | * 工使µè®¾è®¡å¨è·å任塿§è¡äºº |
| | | * |
| | | * @author Lion Li |
| | | */ |
| | | public interface TaskAssigneeService { |
| | | |
| | | /** |
| | | * æ¥è¯¢è§è²å¹¶è¿åä»»å¡ææ´¾çåè¡¨ï¼æ¯æå页 |
| | | * |
| | | * @param taskQuery æ¥è¯¢æ¡ä»¶ |
| | | * @return åç人 |
| | | */ |
| | | TaskAssigneeDTO selectRolesByTaskAssigneeList(TaskAssigneeBody taskQuery); |
| | | |
| | | /** |
| | | * æ¥è¯¢å²ä½å¹¶è¿åä»»å¡ææ´¾çåè¡¨ï¼æ¯æå页 |
| | | * |
| | | * @param taskQuery æ¥è¯¢æ¡ä»¶ |
| | | * @return åç人 |
| | | */ |
| | | TaskAssigneeDTO selectPostsByTaskAssigneeList(TaskAssigneeBody taskQuery); |
| | | |
| | | /** |
| | | * æ¥è¯¢é¨é¨å¹¶è¿åä»»å¡ææ´¾çåè¡¨ï¼æ¯æå页 |
| | | * |
| | | * @param taskQuery æ¥è¯¢æ¡ä»¶ |
| | | * @return åç人 |
| | | */ |
| | | TaskAssigneeDTO selectDeptsByTaskAssigneeList(TaskAssigneeBody taskQuery); |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¨æ·å¹¶è¿åä»»å¡ææ´¾çåè¡¨ï¼æ¯æå页 |
| | | * |
| | | * @param taskQuery æ¥è¯¢æ¡ä»¶ |
| | | * @return åç人 |
| | | */ |
| | | TaskAssigneeDTO selectUsersByTaskAssigneeList(TaskAssigneeBody taskQuery); |
| | | |
| | | } |
| | |
| | | package org.dromara.common.core.service; |
| | | |
| | | import org.dromara.common.core.domain.dto.CompleteTaskDTO; |
| | | import org.dromara.common.core.domain.dto.StartProcessDTO; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | /** |
| | | * è¿è¡ä¸çå®ä¾ å é¤ç¨å®ä¾ï¼å é¤åå²è®°å½ï¼å é¤ä¸å¡ä¸æµç¨å
³èä¿¡æ¯ |
| | | * |
| | | * @param businessKeys ä¸å¡id |
| | | * @param businessIds ä¸å¡id |
| | | * @return ç»æ |
| | | */ |
| | | boolean deleteRunAndHisInstance(List<String> businessKeys); |
| | | boolean deleteInstance(List<Long> businessIds); |
| | | |
| | | /** |
| | | * è·åå½åæµç¨ç¶æ |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | * @return ç¶æ |
| | | */ |
| | | String getBusinessStatusByTaskId(String taskId); |
| | | String getBusinessStatusByTaskId(Long taskId); |
| | | |
| | | /** |
| | | * è·åå½åæµç¨ç¶æ |
| | | * |
| | | * @param businessKey ä¸å¡id |
| | | * @param businessId ä¸å¡id |
| | | * @return ç¶æ |
| | | */ |
| | | String getBusinessStatus(String businessKey); |
| | | String getBusinessStatus(String businessId); |
| | | |
| | | /** |
| | | * 设置æµç¨åé(å
¨å±åé) |
| | | * 设置æµç¨åé |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | * @param variableName åéåç§° |
| | | * @param value åéå¼ |
| | | * @param instanceId æµç¨å®ä¾id |
| | | * @param variable æµç¨åé |
| | | */ |
| | | 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); |
| | | void setVariable(Long instanceId, Map<String, Object> variable); |
| | | |
| | | /** |
| | | * æç
§ä¸å¡idæ¥è¯¢æµç¨å®ä¾id |
| | | * |
| | | * @param businessKey ä¸å¡id |
| | | * @param businessId ä¸å¡id |
| | | * @return ç»æ |
| | | */ |
| | | String getInstanceIdByBusinessKey(String businessKey); |
| | | Long getInstanceIdByBusinessId(String businessId); |
| | | |
| | | /** |
| | | * æ°å¢ç§æ·æµç¨å®ä¹ |
| | | * |
| | | * @param tenantId ç§æ·id |
| | | */ |
| | | void syncDef(String tenantId); |
| | | |
| | | /** |
| | | * å¯å¨æµç¨ |
| | | * |
| | | * @param startProcess åæ° |
| | | * @return ç»æ |
| | | */ |
| | | Map<String, Object> startWorkFlow(StartProcessDTO startProcess); |
| | | |
| | | /** |
| | | * åçä»»å¡ |
| | | * |
| | | * @param completeTask åæ° |
| | | * @return ç»æ |
| | | */ |
| | | boolean completeTask(CompleteTaskDTO completeTask); |
| | | } |
| | |
| | | |
| | | import java.util.Set; |
| | | |
| | | |
| | | /** |
| | | * ç»å½é´æå©æ |
| | | * <p> |
| | |
| | | private final GenTableColumnMapper genTableColumnMapper; |
| | | private final IdentifierGenerator identifierGenerator; |
| | | |
| | | private static final String[] TABLE_IGNORE = new String[]{"sj_", "act_", "flw_", "gen_"}; |
| | | private static final String[] TABLE_IGNORE = new String[]{"sj_", "flow_", "gen_"}; |
| | | |
| | | /** |
| | | * æ¥è¯¢ä¸å¡å段å表 |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Constants; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.dromara.common.mybatis.annotation.DataColumn; |
| | | import org.dromara.common.mybatis.annotation.DataPermission; |
| | |
| | | List<SysDeptVo> selectDeptList(@Param(Constants.WRAPPER) Wrapper<SysDept> queryWrapper); |
| | | |
| | | /** |
| | | * å页æ¥è¯¢é¨é¨ç®¡çæ°æ® |
| | | * |
| | | * @param queryWrapper æ¥è¯¢æ¡ä»¶ |
| | | * @return é¨é¨ä¿¡æ¯éå |
| | | */ |
| | | @DataPermission({ |
| | | @DataColumn(key = "deptName", value = "dept_id"), |
| | | }) |
| | | Page<SysDeptVo> selectPageDeptList(@Param("page") Page<SysDeptVo> page, @Param(Constants.WRAPPER) Wrapper<SysDept> queryWrapper); |
| | | |
| | | /** |
| | | * ç»è®¡æå®é¨é¨IDçé¨é¨æ°é |
| | | * |
| | | * @param deptId é¨é¨ID |
| | |
| | | SysPost post = MapstructUtils.convert(bo, SysPost.class); |
| | | return baseMapper.updateById(post); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.system.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.dromara.common.core.constant.SystemConstants; |
| | | import org.dromara.common.core.domain.dto.TaskAssigneeDTO; |
| | | import org.dromara.common.core.domain.model.TaskAssigneeBody; |
| | | import org.dromara.common.core.service.TaskAssigneeService; |
| | | import org.dromara.common.core.utils.StreamUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import org.dromara.system.domain.SysDept; |
| | | import org.dromara.system.domain.SysPost; |
| | | import org.dromara.system.domain.SysRole; |
| | | import org.dromara.system.domain.SysUser; |
| | | import org.dromara.system.domain.vo.SysDeptVo; |
| | | import org.dromara.system.domain.vo.SysPostVo; |
| | | import org.dromara.system.domain.vo.SysRoleVo; |
| | | import org.dromara.system.domain.vo.SysUserVo; |
| | | import org.dromara.system.mapper.SysDeptMapper; |
| | | import org.dromara.system.mapper.SysPostMapper; |
| | | import org.dromara.system.mapper.SysRoleMapper; |
| | | import org.dromara.system.mapper.SysUserMapper; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 工使µè®¾è®¡å¨è·å任塿§è¡äºº |
| | | * |
| | | * @author Lion Li |
| | | */ |
| | | @RequiredArgsConstructor |
| | | @Service |
| | | public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { |
| | | |
| | | private final SysPostMapper postMapper; |
| | | private final SysDeptMapper deptMapper; |
| | | private final SysUserMapper userMapper; |
| | | private final SysRoleMapper roleMapper; |
| | | |
| | | /** |
| | | * æ¥è¯¢è§è²å¹¶è¿åä»»å¡ææ´¾çåè¡¨ï¼æ¯æå页 |
| | | * |
| | | * @param taskQuery æ¥è¯¢æ¡ä»¶ |
| | | * @return åç人 |
| | | */ |
| | | @Override |
| | | public TaskAssigneeDTO selectRolesByTaskAssigneeList(TaskAssigneeBody taskQuery) { |
| | | PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); |
| | | QueryWrapper<SysRole> wrapper = Wrappers.query(); |
| | | wrapper.eq("r.del_flag", SystemConstants.NORMAL) |
| | | .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), "r.role_name", taskQuery.getHandlerCode()) |
| | | .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), "r.role_key", taskQuery.getHandlerName()) |
| | | .between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()), |
| | | "r.create_time", taskQuery.getBeginTime(), taskQuery.getEndTime()) |
| | | .orderByAsc("r.role_sort").orderByAsc("r.create_time"); |
| | | Page<SysRoleVo> page = roleMapper.selectPageRoleList(pageQuery.build(), wrapper); |
| | | // 使ç¨å°è£
çåæ®µæ å°æ¹æ³è¿è¡è½¬æ¢ |
| | | List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), |
| | | SysRoleVo::getRoleId, SysRoleVo::getRoleKey, SysRoleVo::getRoleName, null, SysRoleVo::getCreateTime); |
| | | return new TaskAssigneeDTO(page.getTotal(), handlers); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢å²ä½å¹¶è¿åä»»å¡ææ´¾çåè¡¨ï¼æ¯æå页 |
| | | * |
| | | * @param taskQuery æ¥è¯¢æ¡ä»¶ |
| | | * @return åç人 |
| | | */ |
| | | @Override |
| | | public TaskAssigneeDTO selectPostsByTaskAssigneeList(TaskAssigneeBody taskQuery) { |
| | | PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); |
| | | LambdaQueryWrapper<SysPost> wrapper = Wrappers.<SysPost>lambdaQuery() |
| | | .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysPost::getPostCategory, taskQuery.getHandlerCode()) |
| | | .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), SysPost::getPostName, taskQuery.getHandlerName()) |
| | | .between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()), |
| | | SysPost::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime()); |
| | | if (StringUtils.isNotBlank(taskQuery.getGroupId())) { |
| | | Long belongDeptId = Long.valueOf(taskQuery.getGroupId()); |
| | | wrapper.and(x -> { |
| | | List<SysDept> deptList = deptMapper.selectListByParentId(belongDeptId); |
| | | List<Long> deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); |
| | | deptIds.add(belongDeptId); |
| | | x.in(SysPost::getDeptId, deptIds); |
| | | }); |
| | | } |
| | | Page<SysPostVo> page = postMapper.selectPagePostList(pageQuery.build(), wrapper); |
| | | // 使ç¨å°è£
çåæ®µæ å°æ¹æ³è¿è¡è½¬æ¢ |
| | | List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), |
| | | SysPostVo::getPostId, SysPostVo::getPostCategory, SysPostVo::getPostName, SysPostVo::getDeptId, SysPostVo::getCreateTime); |
| | | return new TaskAssigneeDTO(page.getTotal(), handlers); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢é¨é¨å¹¶è¿åä»»å¡ææ´¾çåè¡¨ï¼æ¯æå页 |
| | | * |
| | | * @param taskQuery æ¥è¯¢æ¡ä»¶ |
| | | * @return åç人 |
| | | */ |
| | | @Override |
| | | public TaskAssigneeDTO selectDeptsByTaskAssigneeList(TaskAssigneeBody taskQuery) { |
| | | PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); |
| | | LambdaQueryWrapper<SysDept> wrapper = Wrappers.<SysDept>lambdaQuery() |
| | | .eq(SysDept::getDelFlag, SystemConstants.NORMAL) |
| | | .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysDept::getDeptCategory, taskQuery.getHandlerCode()) |
| | | .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), SysDept::getDeptName, taskQuery.getHandlerName()) |
| | | .between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()), |
| | | SysDept::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime()) |
| | | .orderByAsc(SysDept::getAncestors) |
| | | .orderByAsc(SysDept::getParentId) |
| | | .orderByAsc(SysDept::getOrderNum) |
| | | .orderByAsc(SysDept::getDeptId); |
| | | if (StringUtils.isNotBlank(taskQuery.getGroupId())) { |
| | | //é¨é¨æ æç´¢ |
| | | wrapper.and(x -> { |
| | | Long parentId = Long.valueOf(taskQuery.getGroupId()); |
| | | List<SysDept> deptList = deptMapper.selectListByParentId(parentId); |
| | | List<Long> deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); |
| | | deptIds.add(parentId); |
| | | x.in(SysDept::getDeptId, deptIds); |
| | | }); |
| | | } |
| | | Page<SysDeptVo> page = deptMapper.selectPageDeptList(pageQuery.build(), wrapper); |
| | | // 使ç¨å°è£
çåæ®µæ å°æ¹æ³è¿è¡è½¬æ¢ |
| | | List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), |
| | | SysDeptVo::getDeptId, SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, SysDeptVo::getParentId, SysDeptVo::getCreateTime); |
| | | return new TaskAssigneeDTO(page.getTotal(), handlers); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¨æ·å¹¶è¿åä»»å¡ææ´¾çåè¡¨ï¼æ¯æå页 |
| | | * |
| | | * @param taskQuery æ¥è¯¢æ¡ä»¶ |
| | | * @return åç人 |
| | | */ |
| | | @Override |
| | | public TaskAssigneeDTO selectUsersByTaskAssigneeList(TaskAssigneeBody taskQuery) { |
| | | PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); |
| | | QueryWrapper<SysUser> wrapper = Wrappers.query(); |
| | | wrapper.eq("u.del_flag", SystemConstants.NORMAL) |
| | | .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), "u.user_name", taskQuery.getHandlerCode()) |
| | | .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), "u.nick_name", taskQuery.getHandlerName()) |
| | | .between(taskQuery.getBeginTime() != null && taskQuery.getEndTime() != null, |
| | | "u.create_time", taskQuery.getBeginTime(), taskQuery.getEndTime()) |
| | | .orderByAsc("u.user_id"); |
| | | if (StringUtils.isNotBlank(taskQuery.getGroupId())) { |
| | | //é¨é¨æ æç´¢ |
| | | wrapper.and(x -> { |
| | | Long parentId = Long.valueOf(taskQuery.getGroupId()); |
| | | List<SysDept> deptList = deptMapper.selectListByParentId(parentId); |
| | | List<Long> deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); |
| | | deptIds.add(parentId); |
| | | x.in("u.dept_id", deptIds); |
| | | }); |
| | | } |
| | | Page<SysUserVo> page = userMapper.selectPageUserList(pageQuery.build(), wrapper); |
| | | // 使ç¨å°è£
çåæ®µæ å°æ¹æ³è¿è¡è½¬æ¢ |
| | | List<TaskAssigneeDTO.TaskHandler> handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), |
| | | SysUserVo::getUserId, SysUserVo::getUserName, SysUserVo::getNickName, SysUserVo::getDeptId, SysUserVo::getCreateTime); |
| | | return new TaskAssigneeDTO(page.getTotal(), handlers); |
| | | } |
| | | |
| | | } |
| | |
| | | import org.dromara.common.core.constant.SystemConstants; |
| | | import org.dromara.common.core.constant.TenantConstants; |
| | | import org.dromara.common.core.exception.ServiceException; |
| | | import org.dromara.common.core.service.WorkflowService; |
| | | import org.dromara.common.core.utils.MapstructUtils; |
| | | import org.dromara.common.core.utils.SpringUtils; |
| | | import org.dromara.common.core.utils.StreamUtils; |
| | |
| | | private final SysDictTypeMapper dictTypeMapper; |
| | | private final SysDictDataMapper dictDataMapper; |
| | | private final SysConfigMapper configMapper; |
| | | private final WorkflowService workflowService; |
| | | |
| | | /** |
| | | * æ¥è¯¢ç§æ· |
| | |
| | | |
| | | // è·åææç§æ·ç¼å· |
| | | List<String> tenantIds = baseMapper.selectObjs( |
| | | new LambdaQueryWrapper<SysTenant>().select(SysTenant::getTenantId), x -> {return Convert.toStr(x);}); |
| | | new LambdaQueryWrapper<SysTenant>().select(SysTenant::getTenantId), x -> { |
| | | return Convert.toStr(x); |
| | | }); |
| | | String tenantId = generateTenantId(tenantIds); |
| | | add.setTenantId(tenantId); |
| | | boolean flag = baseMapper.insert(add) > 0; |
| | |
| | | config.setTenantId(tenantId); |
| | | } |
| | | configMapper.insertBatch(sysConfigList); |
| | | //æ°å¢ç§æ·æµç¨å®ä¹ |
| | | workflowService.syncDef(tenantId); |
| | | return true; |
| | | } |
| | | |
| | |
| | | // è·åææç§æ·ç¼å· |
| | | List<String> tenantIds = baseMapper.selectObjs( |
| | | new LambdaQueryWrapper<SysTenant>().select(SysTenant::getTenantId) |
| | | .eq(SysTenant::getStatus, SystemConstants.NORMAL), x -> {return Convert.toStr(x);}); |
| | | .eq(SysTenant::getStatus, SystemConstants.NORMAL), x -> { |
| | | return Convert.toStr(x); |
| | | }); |
| | | List<SysDictType> saveTypeList = new ArrayList<>(); |
| | | List<SysDictData> saveDataList = new ArrayList<>(); |
| | | Set<String> set = new HashSet<>(); |
| | |
| | | from sys_dept ${ew.getCustomSqlSegment} |
| | | </select> |
| | | |
| | | <select id="selectPageDeptList" resultMap="SysDeptResult"> |
| | | select |
| | | <if test="ew.getSqlSelect != null"> |
| | | ${ew.getSqlSelect} |
| | | </if> |
| | | <if test="ew.getSqlSelect == null"> |
| | | * |
| | | </if> |
| | | from sys_dept ${ew.getCustomSqlSegment} |
| | | </select> |
| | | |
| | | <select id="countDeptById" resultType="Long"> |
| | | select count(*) from sys_dept where del_flag = '0' and dept_id = #{deptId} |
| | | </select> |
| | |
| | | |
| | | <dependencies> |
| | | |
| | | <!--å¼å
¥flowableä¾èµ--> |
| | | <dependency> |
| | | <groupId>org.flowable</groupId> |
| | | <artifactId>flowable-spring-boot-autoconfigure</artifactId> |
| | | <exclusions> |
| | | <exclusion> |
| | | <groupId>org.flowable</groupId> |
| | | <artifactId>flowable-spring-security</artifactId> |
| | | </exclusion> |
| | | </exclusions> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>org.flowable</groupId> |
| | | <artifactId>flowable-spring-configurator</artifactId> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>org.flowable</groupId> |
| | | <artifactId>flowable-spring-boot-starter-actuator</artifactId> |
| | | </dependency> |
| | | |
| | | <!-- ç»å¶flowableæµç¨å¾ --> |
| | | <dependency> |
| | | <groupId>org.flowable</groupId> |
| | | <artifactId>flowable-image-generator</artifactId> |
| | | </dependency> |
| | | |
| | | <!-- flowable json è½¬æ¢ --> |
| | | <dependency> |
| | | <groupId>org.flowable</groupId> |
| | | <artifactId>flowable-json-converter</artifactId> |
| | | <version>6.8.0</version> |
| | | </dependency> |
| | | |
| | | <!-- svg转pngå¾çå·¥å
·--> |
| | | <dependency> |
| | | <groupId>org.apache.xmlgraphics</groupId> |
| | | <artifactId>batik-all</artifactId> |
| | | <version>1.17</version> |
| | | <exclusions> |
| | | <exclusion> |
| | | <groupId>xalan</groupId> |
| | | <artifactId>xalan</artifactId> |
| | | </exclusion> |
| | | </exclusions> |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-common-sse</artifactId> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-common-websocket</artifactId> |
| | | <artifactId>ruoyi-common-doc</artifactId> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | |
| | | <groupId>org.dromara</groupId> |
| | | <artifactId>ruoyi-common-security</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.dromara.warm</groupId> |
| | | <artifactId>warm-flow-mybatis-plus-sb3-starter</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.dromara.warm</groupId> |
| | | <artifactId>warm-flow-plugin-ui-sb-web</artifactId> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | </project> |
| | |
| | | */ |
| | | public interface FlowConstant { |
| | | |
| | | String MESSAGE_CURRENT_TASK_IS_NULL = "å½åä»»å¡ä¸åå¨æä½ ä¸æ¯ä»»å¡åç人ï¼"; |
| | | |
| | | String MESSAGE_SUSPENDED = "å½åä»»å¡å·²æèµ·ä¸å¯å®¡æ¹ï¼"; |
| | | |
| | | /** |
| | | * è¿çº¿ |
| | | */ |
| | | String SEQUENCE_FLOW = "sequenceFlow"; |
| | | |
| | | /** |
| | | * å¹¶è¡ç½å
³ |
| | | */ |
| | | String PARALLEL_GATEWAY = "parallelGateway"; |
| | | |
| | | /** |
| | | * æå®ç½å
³ |
| | | */ |
| | | String EXCLUSIVE_GATEWAY = "exclusiveGateway"; |
| | | |
| | | /** |
| | | * å
å«ç½å
³ |
| | | */ |
| | | String INCLUSIVE_GATEWAY = "inclusiveGateway"; |
| | | |
| | | /** |
| | | * ç»æèç¹ |
| | | */ |
| | | String END_EVENT = "endEvent"; |
| | | |
| | | |
| | | /** |
| | | * æµç¨å§æ´¾æ è¯ |
| | | */ |
| | | String PENDING = "PENDING"; |
| | | |
| | | /** |
| | | * åé人æ è¯ |
| | | */ |
| | | String CANDIDATE = "candidate"; |
| | | |
| | | /** |
| | | * ä¼ç¾ä»»å¡æ»æ° |
| | | */ |
| | | String NUMBER_OF_INSTANCES = "nrOfInstances"; |
| | | |
| | | /** |
| | | * æ£å¨æ§è¡çä¼ç¾æ»æ° |
| | | */ |
| | | String NUMBER_OF_ACTIVE_INSTANCES = "nrOfActiveInstances"; |
| | | |
| | | /** |
| | | * 已宿çä¼ç¾ä»»å¡æ»æ° |
| | | */ |
| | | String NUMBER_OF_COMPLETED_INSTANCES = "nrOfCompletedInstances"; |
| | | |
| | | /** |
| | | * 循ç¯çç´¢å¼å¼ï¼å¯ä»¥ä½¿ç¨elementIndexVariable屿§ä¿®æ¹loopCounterçåéå |
| | | */ |
| | | String LOOP_COUNTER = "loopCounter"; |
| | | |
| | | String ZIP = "ZIP"; |
| | | |
| | | /** |
| | | * ä¸å¡ä¸æµç¨å®ä¾å
³è对象 |
| | | */ |
| | | String BUSINESS_INSTANCE_DTO = "businessInstanceDTO"; |
| | | |
| | | /** |
| | | * æµç¨å®ä¹é
ç½® |
| | | */ |
| | | String WF_DEFINITION_CONFIG_VO = "wfDefinitionConfigVo"; |
| | | |
| | | /** |
| | | * èç¹é
ç½® |
| | | */ |
| | | String WF_NODE_CONFIG_VO = "wfNodeConfigVo"; |
| | | |
| | | /** |
| | | * æµç¨å起人 |
| | | */ |
| | |
| | | /** |
| | | * ä¸å¡id |
| | | */ |
| | | String BUSINESS_KEY = "businessKey"; |
| | | String BUSINESS_ID = "businessId"; |
| | | |
| | | /** |
| | | * æµç¨å®ä¹id |
| | | * ä»»å¡id |
| | | */ |
| | | String PROCESS_DEFINITION_ID = "processDefinitionId"; |
| | | String TASK_ID = "taskId"; |
| | | |
| | | /** |
| | | * å¼å¯è·³è¿è¡¨è¾¾å¼åé |
| | | * å§æ |
| | | */ |
| | | String FLOWABLE_SKIP_EXPRESSION_ENABLED = "_FLOWABLE_SKIP_EXPRESSION_ENABLED"; |
| | | String DELEGATE_TASK = "delegateTask"; |
| | | |
| | | /** |
| | | * æ¨¡åæ è¯keyå½åè§èæ£åè¡¨è¾¾å¼ |
| | | * 转å |
| | | */ |
| | | String MODEL_KEY_PATTERN = "^[a-zA-Z][a-zA-Z0-9_]{0,254}$"; |
| | | String TRANSFER_TASK = "transferTask"; |
| | | |
| | | /** |
| | | * ç¨æ·ä»»å¡ |
| | | * å ç¾ |
| | | */ |
| | | String USER_TASK = "userTask"; |
| | | String ADD_SIGNATURE = "addSignature"; |
| | | |
| | | /** |
| | | * ä¼ç¾ |
| | | * åç¾ |
| | | */ |
| | | String MULTI_INSTANCE = "multiInstance"; |
| | | String REDUCTION_SIGNATURE = "reductionSignature"; |
| | | |
| | | /** |
| | | * æ¯ |
| | | * æµç¨åç±»Id转åç§° |
| | | */ |
| | | String TRUE = "0"; |
| | | String CATEGORY_ID_TO_NAME = "category_id_to_name"; |
| | | |
| | | /** |
| | | * å¦ |
| | | * æµç¨åç±»åç§° |
| | | */ |
| | | String FALSE = "1"; |
| | | String FLOW_CATEGORY_NAME = "flow_category_name#30d"; |
| | | |
| | | /** |
| | | * é»è®¤ç§æ·OAç³è¯·åç±»id |
| | | */ |
| | | Long FLOW_CATEGORY_ID = 100L; |
| | | |
| | | } |
| | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.Map; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * æ¶æ¯ç±»åæä¸¾ |
| | |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum MessageTypeEnum { |
| | | |
| | | /** |
| | | * ç«å
ä¿¡ |
| | | */ |
| | | SYSTEM_MESSAGE("1", "ç«å
ä¿¡"), |
| | | |
| | | /** |
| | | * é®ç®± |
| | | */ |
| | | EMAIL_MESSAGE("2", "é®ç®±"), |
| | | |
| | | /** |
| | | * çä¿¡ |
| | | */ |
| | |
| | | |
| | | private final String desc; |
| | | |
| | | private final static Map<String, MessageTypeEnum> MESSAGE_TYPE_ENUM_MAP = new ConcurrentHashMap<>(MessageTypeEnum.values().length); |
| | | |
| | | static { |
| | | for (MessageTypeEnum messageType : MessageTypeEnum.values()) { |
| | | MESSAGE_TYPE_ENUM_MAP.put(messageType.code, messageType); |
| | | } |
| | | } |
| | | private static final Map<String, MessageTypeEnum> MESSAGE_TYPE_ENUM_MAP = Arrays.stream(values()) |
| | | .collect(Collectors.toConcurrentMap(MessageTypeEnum::getCode, Function.identity())); |
| | | |
| | | /** |
| | | * æ ¹æ®æ¶æ¯ç±»å code è·å MessageTypeEnum |
| | | * |
| | | * @param code æ¶æ¯ç±»åcode |
| | | * @return MessageTypeEnum |
| | | */ |
| | | public static MessageTypeEnum getByCode(String code) { |
| | | return MESSAGE_TYPE_ENUM_MAP.get(code); |
| | | return MESSAGE_TYPE_ENUM_MAP.getOrDefault(code, null); |
| | | } |
| | | |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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()); |
| | | } |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | |
| | | } |
| | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Getter; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * ä»»å¡ç¶ææä¸¾ |
| | |
| | | @Getter |
| | | @AllArgsConstructor |
| | | public enum TaskStatusEnum { |
| | | |
| | | /** |
| | | * æ¤é |
| | | */ |
| | | CANCEL("cancel", "æ¤é"), |
| | | |
| | | /** |
| | | * éè¿ |
| | | */ |
| | | PASS("pass", "éè¿"), |
| | | |
| | | /** |
| | | * å¾
å®¡æ ¸ |
| | | */ |
| | | WAITING("waiting", "å¾
å®¡æ ¸"), |
| | | |
| | | /** |
| | | * ä½åº |
| | | */ |
| | | INVALID("invalid", "ä½åº"), |
| | | |
| | | /** |
| | | * éå |
| | | */ |
| | | BACK("back", "éå"), |
| | | |
| | | /** |
| | | * ç»æ¢ |
| | | */ |
| | | TERMINATION("termination", "ç»æ¢"), |
| | | |
| | | /** |
| | | * 转å |
| | | */ |
| | | TRANSFER("transfer", "转å"), |
| | | |
| | | /** |
| | | * å§æ |
| | | */ |
| | | PENDING("pending", "å§æ"), |
| | | DEPUTE("depute", "å§æ"), |
| | | |
| | | /** |
| | | * æé |
| | | */ |
| | | COPY("copy", "æé"), |
| | | |
| | | /** |
| | | * å ç¾ |
| | | */ |
| | | SIGN("sign", "å ç¾"), |
| | | |
| | | /** |
| | | * åç¾ |
| | | */ |
| | | SIGN_OFF("sign_off", "åç¾"), |
| | | |
| | | /** |
| | | * è¶
æ¶ |
| | | */ |
| | |
| | | */ |
| | | private final String desc; |
| | | |
| | | private static final Map<String, String> STATUS_DESC_MAP = Arrays.stream(values()) |
| | | .collect(Collectors.toConcurrentMap(TaskStatusEnum::getStatus, TaskStatusEnum::getDesc)); |
| | | |
| | | /** |
| | | * ä»»å¡ä¸å¡ç¶æ |
| | | * |
| | | * @param status ç¶æ |
| | | */ |
| | | public static String findByStatus(String status) { |
| | | if (StringUtils.isBlank(status)) { |
| | | return StrUtil.EMPTY; |
| | | } |
| | | |
| | | return Arrays.stream(TaskStatusEnum.values()) |
| | | .filter(statusEnum -> statusEnum.getStatus().equals(status)) |
| | | .findFirst() |
| | | .map(TaskStatusEnum::getDesc) |
| | | .orElse(StrUtil.EMPTY); |
| | | // ä»ç¼åä¸ç´æ¥è·åæè¿° |
| | | return STATUS_DESC_MAP.getOrDefault(status, StrUtil.EMPTY); |
| | | } |
| | | |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.config; |
| | | |
| | | |
| | | import org.springframework.context.annotation.Configuration; |
| | | |
| | | /** |
| | | * warmFlowé
ç½® |
| | | * |
| | | * @author may |
| | | */ |
| | | @Configuration |
| | | public class WarmFlowConfig { |
| | | |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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.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 |
| | | */ |
| | | @Validated |
| | | @RequiredArgsConstructor |
| | | @RestController |
| | | @RequestMapping("/workflow/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<Long>>> categoryTree(FlowCategoryBo categoryBo) { |
| | | return R.ok(flwCategoryService.selectCategoryTreeList(categoryBo)); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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.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("/workflow/definition") |
| | | public class FlwDefinitionController extends BaseController { |
| | | |
| | | private final IFlwDefinitionService flwDefinitionService; |
| | | private final DefService defService; |
| | | |
| | | /** |
| | | * æ¥è¯¢æµç¨å®ä¹å表 |
| | | * |
| | | * @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() |
| | | @Transactional(rollbackFor = Exception.class) |
| | | 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}") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | 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") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R<Boolean> importDef(MultipartFile file, String category) { |
| | | return R.ok(flwDefinitionService.importXml(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); |
| | | } |
| | | |
| | | /** |
| | | * è·åæµç¨å®ä¹xmlå符串 |
| | | * |
| | | * @param id æµç¨å®ä¹id |
| | | */ |
| | | @GetMapping("/xmlString/{id}") |
| | | public R<String> xmlString(@PathVariable Long id) { |
| | | return R.ok("æä½æå", defService.xmlString(id)); |
| | | } |
| | | |
| | | /** |
| | | * æ¿æ´»/æèµ·æµç¨å®ä¹ |
| | | * |
| | | * @param id æµç¨å®ä¹id |
| | | * @param active æ¿æ´»/æèµ· |
| | | */ |
| | | @RepeatSubmit() |
| | | @PutMapping("/active/{id}") |
| | | public R<Boolean> active(@PathVariable Long id, @RequestParam boolean active) { |
| | | return R.ok(active ? defService.active(id) : defService.unActive(id)); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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.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 |
| | | */ |
| | | @Validated |
| | | @RequiredArgsConstructor |
| | | @RestController |
| | | @RequestMapping("/workflow/instance") |
| | | public class FlwInstanceController extends BaseController { |
| | | |
| | | private final IFlwInstanceService flwInstanceService; |
| | | private final InsService insService; |
| | | |
| | | /** |
| | | * æ¥è¯¢æ£å¨è¿è¡çæµç¨å®ä¾å表 |
| | | * |
| | | * @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 String 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)); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.controller; |
| | | |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.dromara.common.core.domain.R; |
| | | import org.dromara.common.core.domain.dto.UserDTO; |
| | | 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.warm.flow.core.entity.Node; |
| | | 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; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * ä»»å¡ç®¡ç æ§å¶å± |
| | | * |
| | | * @author may |
| | | */ |
| | | @Validated |
| | | @RequiredArgsConstructor |
| | | @RestController |
| | | @RequestMapping("/workflow/task") |
| | | public class FlwTaskController extends BaseController { |
| | | |
| | | private final IFlwTaskService flwTaskService; |
| | | |
| | | /** |
| | | * å¯å¨ä»»å¡ |
| | | * |
| | | * @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 = flwTaskService.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(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<UserDTO>> currentTaskAllUser(@PathVariable Long taskId) { |
| | | return R.ok(flwTaskService.currentTaskAllUser(taskId)); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.domain; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableLogic; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import org.dromara.common.tenant.core.TenantEntity; |
| | | |
| | | import java.io.Serial; |
| | | |
| | | /** |
| | | * æµç¨å类对象 wf_category |
| | | * |
| | | * @author may |
| | | * @date 2023-06-27 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @TableName("flow_category") |
| | | public class FlowCategory extends TenantEntity { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * æµç¨åç±»ID |
| | | */ |
| | | @TableId(value = "category_id") |
| | | private Long categoryId; |
| | | |
| | | /** |
| | | * ç¶æµç¨åç±»id |
| | | */ |
| | | private Long parentId; |
| | | |
| | | /** |
| | | * ç¥çº§å表 |
| | | */ |
| | | private String ancestors; |
| | | |
| | | /** |
| | | * æµç¨åç±»åç§° |
| | | */ |
| | | private String categoryName; |
| | | |
| | | /** |
| | | * æ¾ç¤ºé¡ºåº |
| | | */ |
| | | private Long orderNum; |
| | | |
| | | /** |
| | | * å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼ |
| | | */ |
| | | @TableLogic |
| | | private String delFlag; |
| | | |
| | | } |
| | |
| | | package org.dromara.workflow.domain.bo; |
| | | |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import lombok.Data; |
| | | import org.dromara.common.core.validate.AddGroup; |
| | | |
| | | import java.io.Serial; |
| | | import java.io.Serializable; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | |
| | | |
| | | /** |
| | |
| | | /** |
| | | * ä»»å¡ID |
| | | */ |
| | | @NotBlank(message = "ä»»å¡IDä¸è½ä¸ºç©º", groups = AddGroup.class) |
| | | private String taskId; |
| | | @NotNull(message = "ä»»å¡IDä¸è½ä¸ºç©º", groups = AddGroup.class) |
| | | private Long taskId; |
| | | |
| | | /** |
| | | * æ¶æ¯ç±»å |
| | |
| | | * 驳åçèç¹id(ç®åæªä½¿ç¨ï¼ç´æ¥é©³åå°ç³è¯·äºº) |
| | | */ |
| | | @NotBlank(message = "驳åçèç¹ä¸è½ä¸ºç©º", groups = AddGroup.class) |
| | | private String targetActivityId; |
| | | private String nodeCode; |
| | | |
| | | /** |
| | | * åçæè§ |
| | | */ |
| | | private String message; |
| | | |
| | | /** |
| | | * éç¥ |
| | | */ |
| | | private String notice; |
| | | |
| | | /** |
| | | * æµç¨åé |
| | | */ |
| | | 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; |
| | | } |
| | | } |
| | |
| | | package org.dromara.workflow.domain.bo; |
| | | |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import lombok.Data; |
| | | import org.dromara.common.core.validate.AddGroup; |
| | | import org.dromara.workflow.domain.vo.WfCopy; |
| | | |
| | | import java.io.Serial; |
| | | import java.io.Serializable; |
| | |
| | | /** |
| | | * ä»»å¡id |
| | | */ |
| | | @NotBlank(message = "ä»»å¡idä¸è½ä¸ºç©º", groups = {AddGroup.class}) |
| | | private String taskId; |
| | | @NotNull(message = "ä»»å¡idä¸è½ä¸ºç©º", groups = {AddGroup.class}) |
| | | private Long taskId; |
| | | |
| | | /** |
| | | * éä»¶id |
| | |
| | | /** |
| | | * æé人å |
| | | */ |
| | | private List<WfCopy> wfCopyList; |
| | | private List<FlowCopyBo> flowCopyList; |
| | | |
| | | /** |
| | | * æ¶æ¯ç±»å |
| | |
| | | private String message; |
| | | |
| | | /** |
| | | * æ¶æ¯éç¥ |
| | | */ |
| | | private String notice; |
| | | |
| | | /** |
| | | * æµç¨åé |
| | | */ |
| | | private Map<String, Object> variables; |
| | | |
| | | /** |
| | | * æ©å±åé(æ¤å¤ä¸ºéå·åéçossId) |
| | | * @return |
| | | */ |
| | | private String ext; |
| | | |
| | | public Map<String, Object> getVariables() { |
| | | if (variables == null) { |
| | | return new HashMap<>(16); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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 FlowCancelBo implements Serializable { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * ä»»å¡ID |
| | | */ |
| | | @NotBlank(message = "ä¸å¡IDä¸è½ä¸ºç©º", groups = AddGroup.class) |
| | | private String businessId; |
| | | |
| | | /** |
| | | * åçæè§ |
| | | */ |
| | | private String message; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | |
| | | } |
ÎļþÃû´Ó ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/WfCopy.java ÐÞ¸Ä |
| | |
| | | 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; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | |
| | | } |
ÎļþÃû´Ó ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TerminationBo.java ÐÞ¸Ä |
| | |
| | | package org.dromara.workflow.domain.bo; |
| | | |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import lombok.Data; |
| | | import org.dromara.common.core.validate.AddGroup; |
| | | |
| | |
| | | * @author may |
| | | */ |
| | | @Data |
| | | public class TerminationBo implements Serializable { |
| | | public class FlowTerminationBo implements Serializable { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
| | |
| | | /** |
| | | * ä»»å¡id |
| | | */ |
| | | @NotBlank(message = "ä»»å¡id为空", groups = AddGroup.class) |
| | | private String taskId; |
| | | @NotNull(message = "ä»»å¡id为空", groups = AddGroup.class) |
| | | private Long taskId; |
| | | |
| | | /** |
| | | * å®¡æ¹æè§ |
| | |
| | | * ä¸å¡å¯ä¸å¼id |
| | | */ |
| | | @NotBlank(message = "ä¸å¡IDä¸è½ä¸ºç©º", groups = {AddGroup.class}) |
| | | private String businessKey; |
| | | private String businessId; |
| | | |
| | | /** |
| | | * 表å |
| | | * æµç¨å®ä¹ç¼ç |
| | | */ |
| | | @NotBlank(message = "表åä¸è½ä¸ºç©º", groups = {AddGroup.class}) |
| | | private String tableName; |
| | | @NotBlank(message = "æµç¨å®ä¹ç¼ç ä¸è½ä¸ºç©º", groups = {AddGroup.class}) |
| | | private String flowCode; |
| | | |
| | | /** |
| | | * æµç¨åéï¼åç«¯ä¼æäº¤ä¸ä¸ªå
ç´ {'entity': {ä¸å¡è¯¦æ
æ°æ®å¯¹è±¡}} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | |
| | | } |
| | |
| | | /** |
| | | * 请åå¤©æ° |
| | | */ |
| | | @NotNull(message = "请å天æ°ä¸è½ä¸ºç©º", groups = {AddGroup.class, EditGroup.class}) |
| | | private Integer leaveDays; |
| | | |
| | | /** |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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.common.excel.annotation.ExcelDictFormat; |
| | | import org.dromara.common.excel.convert.ExcelDictConvert; |
| | | 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; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | } |
ÎļþÃû´Ó ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/VariableVo.java ÐÞ¸Ä |
| | |
| | | * @author may |
| | | */ |
| | | @Data |
| | | public class VariableVo implements Serializable { |
| | | public class FlowVariableVo implements Serializable { |
| | | |
| | | @Serial |
| | | private static final long serialVersionUID = 1L; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.handler; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.domain.event.ProcessDeleteEvent; |
| | | import org.dromara.common.core.domain.event.ProcessEvent; |
| | | import org.dromara.common.core.domain.event.ProcessTaskEvent; |
| | | import org.dromara.common.core.utils.SpringUtils; |
| | | import org.dromara.common.tenant.helper.TenantHelper; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * æµç¨çå¬æå¡ |
| | | * |
| | | * @author may |
| | | * @date 2024-06-02 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class FlowProcessEventHandler { |
| | | |
| | | /** |
| | | * æ»ä½æµç¨çå¬(ä¾å¦: èç¨¿ï¼æ¤éï¼éåï¼ä½åºï¼ç»æ¢ï¼å·²å®æç) |
| | | * |
| | | * @param flowCode æµç¨å®ä¹ç¼ç |
| | | * @param businessId ä¸å¡id |
| | | * @param status ç¶æ |
| | | * @param submit å½ä¸ºtrueæ¶ä¸ºç³è¯·äººèç¹åç |
| | | */ |
| | | public void processHandler(String flowCode, String businessId, String status, boolean submit) { |
| | | String tenantId = TenantHelper.getTenantId(); |
| | | log.info("å叿µç¨äºä»¶ï¼ç§æ·ID: {}, æµç¨ç¶æ: {}, æµç¨ç¼ç : {}, ä¸å¡ID: {}, æ¯å¦ç³è¯·äººèç¹åç: {}", tenantId, status, flowCode, businessId, submit); |
| | | ProcessEvent processEvent = new ProcessEvent(); |
| | | processEvent.setTenantId(tenantId); |
| | | processEvent.setFlowCode(flowCode); |
| | | processEvent.setBusinessId(businessId); |
| | | processEvent.setStatus(status); |
| | | processEvent.setSubmit(submit); |
| | | SpringUtils.context().publishEvent(processEvent); |
| | | } |
| | | |
| | | /** |
| | | * æ§è¡åçä»»å¡çå¬ |
| | | * |
| | | * @param flowCode æµç¨å®ä¹ç¼ç |
| | | * @param nodeCode 审æ¹èç¹ç¼ç |
| | | * @param taskId ä»»å¡id |
| | | * @param businessId ä¸å¡id |
| | | */ |
| | | public void processTaskHandler(String flowCode, String nodeCode, Long taskId, String businessId) { |
| | | String tenantId = TenantHelper.getTenantId(); |
| | | log.info("å叿µç¨ä»»å¡äºä»¶, ç§æ·ID: {}, æµç¨ç¼ç : {}, èç¹ç¼ç : {}, ä»»å¡ID: {}, ä¸å¡ID: {}", tenantId, flowCode, nodeCode, taskId, businessId); |
| | | ProcessTaskEvent processTaskEvent = new ProcessTaskEvent(); |
| | | processTaskEvent.setTenantId(tenantId); |
| | | processTaskEvent.setFlowCode(flowCode); |
| | | processTaskEvent.setNodeCode(nodeCode); |
| | | processTaskEvent.setTaskId(taskId); |
| | | processTaskEvent.setBusinessId(businessId); |
| | | SpringUtils.context().publishEvent(processTaskEvent); |
| | | } |
| | | |
| | | /** |
| | | * å 餿µç¨çå¬ |
| | | * |
| | | * @param flowCode æµç¨å®ä¹ç¼ç |
| | | * @param businessId ä¸å¡ID |
| | | */ |
| | | public void processDeleteHandler(String flowCode, String businessId) { |
| | | String tenantId = TenantHelper.getTenantId(); |
| | | log.info("åå¸å 餿µç¨äºä»¶, ç§æ·ID: {}, æµç¨ç¼ç : {}, ä¸å¡ID: {}", tenantId, flowCode, businessId); |
| | | ProcessDeleteEvent processDeleteEvent = new ProcessDeleteEvent(); |
| | | processDeleteEvent.setTenantId(tenantId); |
| | | processDeleteEvent.setFlowCode(flowCode); |
| | | processDeleteEvent.setBusinessId(businessId); |
| | | SpringUtils.context().publishEvent(processDeleteEvent); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.handler; |
| | | |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.domain.model.LoginUser; |
| | | import org.dromara.workflow.common.enums.TaskAssigneeEnum; |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.warm.flow.core.dto.FlowParams; |
| | | import org.dromara.warm.flow.core.handler.PermissionHandler; |
| | | import org.dromara.warm.flow.core.service.impl.TaskServiceImpl; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | import java.util.stream.Stream; |
| | | |
| | | /** |
| | | * åç人æéå¤çå¨ |
| | | * |
| | | * @author AprilWind |
| | | */ |
| | | @RequiredArgsConstructor |
| | | @Component |
| | | @Slf4j |
| | | public class WorkflowPermissionHandler implements PermissionHandler { |
| | | |
| | | /** |
| | | * 审æ¹åè·åå½ååç人ï¼åçæ¶ä¼æ ¡éªç该æééå |
| | | * åç»å¨{@link TaskServiceImpl#checkAuth(Task, FlowParams)} ä¸è°ç¨ |
| | | * è¿åå½åç¨æ·æééå |
| | | */ |
| | | @Override |
| | | public List<String> permissions() { |
| | | LoginUser loginUser = LoginHelper.getLoginUser(); |
| | | if (ObjectUtil.isNull(loginUser)) { |
| | | return new ArrayList<>(); |
| | | } |
| | | // 使ç¨ä¸ä¸ªæµæ¥æå»ºæéå表 |
| | | return Stream.of( |
| | | // è§è²æéåç¼ |
| | | loginUser.getRoles().stream() |
| | | .map(role -> TaskAssigneeEnum.ROLE.getCode() + role.getRoleId()), |
| | | |
| | | // å²ä½æéåç¼ |
| | | Stream.ofNullable(loginUser.getPosts()) |
| | | .flatMap(Collection::stream) |
| | | .map(post -> TaskAssigneeEnum.POST.getCode() + post.getPostId()), |
| | | |
| | | // ç¨æ·åé¨é¨æé |
| | | Stream.of(String.valueOf(loginUser.getUserId()), |
| | | TaskAssigneeEnum.DEPT.getCode() + loginUser.getDeptId() |
| | | ) |
| | | ) |
| | | .flatMap(stream -> stream) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | /** |
| | | * è·åå½ååç人 |
| | | * |
| | | * @return å½ååç人 |
| | | */ |
| | | @Override |
| | | public String getHandler() { |
| | | return LoginHelper.getUserIdStr(); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.listener; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.enums.BusinessStatusEnum; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.warm.flow.core.entity.Definition; |
| | | import org.dromara.warm.flow.core.entity.Instance; |
| | | import org.dromara.warm.flow.core.entity.Task; |
| | | import org.dromara.warm.flow.core.listener.GlobalListener; |
| | | import org.dromara.warm.flow.core.listener.ListenerVariable; |
| | | import org.dromara.warm.flow.orm.entity.FlowTask; |
| | | import org.dromara.workflow.handler.FlowProcessEventHandler; |
| | | import org.dromara.workflow.service.IFlwInstanceService; |
| | | import org.dromara.workflow.service.IFlwTaskService; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * å
¨å±ä»»å¡åççå¬ |
| | | * |
| | | * @author may |
| | | */ |
| | | @Component |
| | | @Slf4j |
| | | @RequiredArgsConstructor |
| | | public class WorkflowGlobalListener implements GlobalListener { |
| | | |
| | | private final IFlwTaskService taskService; |
| | | private final IFlwInstanceService instanceService; |
| | | private final FlowProcessEventHandler flowProcessEventHandler; |
| | | |
| | | /** |
| | | * å建çå¬å¨ï¼ä»»å¡åå»ºæ¶æ§è¡ |
| | | * |
| | | * @param listenerVariable çå¬å¨åé |
| | | */ |
| | | @Override |
| | | public void create(ListenerVariable listenerVariable) { |
| | | Instance instance = listenerVariable.getInstance(); |
| | | Definition definition = listenerVariable.getDefinition(); |
| | | String businessId = instance.getBusinessId(); |
| | | String flowStatus = instance.getFlowStatus(); |
| | | Task task = listenerVariable.getTask(); |
| | | if (task != null && BusinessStatusEnum.WAITING.getStatus().equals(flowStatus)) { |
| | | // 夿æµç¨ç¶æï¼åå¸å®¡æ¹ä¸äºä»¶ï¼ |
| | | flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), task.getNodeCode(), task.getId(), businessId); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å¼å§çå¬å¨ï¼ä»»å¡å¼å§åçæ¶æ§è¡ |
| | | * |
| | | * @param listenerVariable çå¬å¨åé |
| | | */ |
| | | @Override |
| | | public void start(ListenerVariable listenerVariable) { |
| | | } |
| | | |
| | | /** |
| | | * åæ´¾çå¬å¨ï¼å¨æä¿®æ¹ä»£åä»»å¡ä¿¡æ¯ |
| | | * |
| | | * @param listenerVariable çå¬å¨åé |
| | | */ |
| | | @Override |
| | | public void assignment(ListenerVariable listenerVariable) { |
| | | } |
| | | |
| | | /** |
| | | * 宿çå¬å¨ï¼å½åä»»å¡å®æåæ§è¡ |
| | | * |
| | | * @param listenerVariable çå¬å¨åé |
| | | */ |
| | | @Override |
| | | public void finish(ListenerVariable listenerVariable) { |
| | | Instance instance = listenerVariable.getInstance(); |
| | | Definition definition = listenerVariable.getDefinition(); |
| | | String businessId = instance.getBusinessId(); |
| | | String flowStatus = instance.getFlowStatus(); |
| | | // 夿æµç¨ç¶æï¼åå¸ï¼æ¤éï¼éåï¼ä½åºï¼ç»æ¢ï¼å·²å®æäºä»¶ï¼ |
| | | String status = determineFlowStatus(instance, flowStatus); |
| | | if (StringUtils.isNotBlank(status)) { |
| | | flowProcessEventHandler.processHandler(definition.getFlowCode(), businessId, status, false); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®æµç¨å®ä¾åå½åæµç¨ç¶æç¡®å®æç»ç¶æ |
| | | * |
| | | * @param instance æµç¨å®ä¾ |
| | | * @param flowStatus æµç¨å®ä¾å½åç¶æ |
| | | * @return æµç¨æç»ç¶æ |
| | | */ |
| | | private String determineFlowStatus(Instance instance, String flowStatus) { |
| | | if (StringUtils.isNotBlank(flowStatus) && BusinessStatusEnum.initialState(flowStatus)) { |
| | | log.info("æµç¨å®ä¾å½åç¶æ: {}", flowStatus); |
| | | return flowStatus; |
| | | } else { |
| | | Long instanceId = instance.getId(); |
| | | List<FlowTask> flowTasks = taskService.selectByInstId(instanceId); |
| | | if (CollUtil.isEmpty(flowTasks)) { |
| | | String status = BusinessStatusEnum.FINISH.getStatus(); |
| | | // æ´æ°æµç¨ç¶æä¸ºå·²å®æ |
| | | instanceService.updateStatus(instanceId, status); |
| | | log.info("æµç¨å·²ç»æï¼ç¶ææ´æ°ä¸º: {}", status); |
| | | return status; |
| | | } |
| | | log.warn("æµç¨æªç»æï¼å®ä¾ID: {}", instanceId); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import org.dromara.common.mybatis.annotation.DataColumn; |
| | | import org.dromara.common.mybatis.annotation.DataPermission; |
| | | import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; |
| | | import org.dromara.common.mybatis.helper.DataBaseHelper; |
| | | import org.dromara.workflow.domain.FlowCategory; |
| | | import org.dromara.workflow.domain.vo.FlowCategoryVo; |
| | | |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | import java.util.stream.Stream; |
| | | |
| | | /** |
| | | * æµç¨åç±»Mapperæ¥å£ |
| | | * |
| | | * @author may |
| | | * @date 2023-06-27 |
| | | */ |
| | | public interface FlwCategoryMapper extends BaseMapperPlus<FlowCategory, FlowCategoryVo> { |
| | | |
| | | /** |
| | | * ç»è®¡æå®æµç¨åç±»IDçåç±»æ°é |
| | | * |
| | | * @param categoryId æµç¨åç±»ID |
| | | * @return 该æµç¨åç±»IDçåç±»æ°é |
| | | */ |
| | | @DataPermission({ |
| | | @DataColumn(key = "deptName", value = "createDept") |
| | | }) |
| | | long countCategoryById(Long categoryId); |
| | | |
| | | /** |
| | | * æ ¹æ®ç¶æµç¨åç±»IDæ¥è¯¢å
¶ææåæµç¨åç±»çå表 |
| | | * |
| | | * @param parentId ç¶æµç¨åç±»ID |
| | | * @return å
å«åæµç¨åç±»çå表 |
| | | */ |
| | | default List<FlowCategory> selectListByParentId(Long parentId) { |
| | | return this.selectList(new LambdaQueryWrapper<FlowCategory>() |
| | | .select(FlowCategory::getCategoryId) |
| | | .apply(DataBaseHelper.findInSet(parentId, "ancestors"))); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ç¶æµç¨åç±»IDæ¥è¯¢å
æ¬ç¶IDåå
¶ææåæµç¨åç±»IDçå表 |
| | | * |
| | | * @param parentId ç¶æµç¨åç±»ID |
| | | * @return å
å«ç¶IDååæµç¨åç±»IDçå表 |
| | | */ |
| | | default List<Long> selectCategoryIdsByParentId(Long parentId) { |
| | | return Stream.concat( |
| | | this.selectListByParentId(parentId).stream() |
| | | .map(FlowCategory::getCategoryId), |
| | | Stream.of(parentId) |
| | | ).collect(Collectors.toList()); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Constants; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.dromara.workflow.domain.bo.FlowInstanceBo; |
| | | import org.dromara.workflow.domain.vo.FlowInstanceVo; |
| | | |
| | | /** |
| | | * å®ä¾ä¿¡æ¯Mapperæ¥å£ |
| | | * |
| | | * @author may |
| | | * @date 2024-03-02 |
| | | */ |
| | | public interface FlwInstanceMapper { |
| | | |
| | | /** |
| | | * æµç¨å®ä¾ä¿¡æ¯ |
| | | * |
| | | * @param page å页 |
| | | * @param queryWrapper æ¡ä»¶ |
| | | * @return ç»æ |
| | | */ |
| | | Page<FlowInstanceVo> selectInstanceList(@Param("page") Page<FlowInstanceVo> page, @Param(Constants.WRAPPER) Wrapper<FlowInstanceBo> queryWrapper); |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Constants; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.dromara.workflow.domain.bo.FlowTaskBo; |
| | | import org.dromara.workflow.domain.vo.FlowHisTaskVo; |
| | | import org.dromara.workflow.domain.vo.FlowTaskVo; |
| | | |
| | | import java.util.List; |
| | | |
| | | |
| | | /** |
| | | * ä»»å¡ä¿¡æ¯Mapperæ¥å£ |
| | | * |
| | | * @author may |
| | | * @date 2024-03-02 |
| | | */ |
| | | public interface FlwTaskMapper { |
| | | |
| | | /** |
| | | * è·åå¾
åä¿¡æ¯ |
| | | * |
| | | * @param page å页 |
| | | * @param queryWrapper æ¡ä»¶ |
| | | * @return ç»æ |
| | | */ |
| | | Page<FlowTaskVo> getListRunTask(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper); |
| | | |
| | | /** |
| | | * è·åå¾
åä¿¡æ¯ |
| | | * |
| | | * @param queryWrapper æ¡ä»¶ |
| | | * @return ç»æ |
| | | */ |
| | | List<FlowTaskVo> getListRunTask(@Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper); |
| | | |
| | | /** |
| | | * è·åå·²å |
| | | * |
| | | * @param page å页 |
| | | * @param queryWrapper æ¡ä»¶ |
| | | * @return ç»æ |
| | | */ |
| | | Page<FlowHisTaskVo> getListFinishTask(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper); |
| | | |
| | | /** |
| | | * æ¥è¯¢å½åç¨æ·çæé |
| | | * |
| | | * @param page å页 |
| | | * @param queryWrapper æ¡ä»¶ |
| | | * @return ç»æ |
| | | */ |
| | | Page<FlowTaskVo> getTaskCopyByPage(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) QueryWrapper<FlowTaskBo> queryWrapper); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.service; |
| | | |
| | | import cn.hutool.core.lang.tree.Tree; |
| | | import org.dromara.workflow.domain.bo.FlowCategoryBo; |
| | | import org.dromara.workflow.domain.vo.FlowCategoryVo; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * æµç¨åç±»Serviceæ¥å£ |
| | | * |
| | | * @author may |
| | | */ |
| | | public interface IFlwCategoryService { |
| | | |
| | | /** |
| | | * æ¥è¯¢æµç¨åç±» |
| | | * |
| | | * @param categoryId ä¸»é® |
| | | * @return æµç¨åç±» |
| | | */ |
| | | FlowCategoryVo queryById(Long categoryId); |
| | | |
| | | /** |
| | | * æ ¹æ®æµç¨åç±»IDæ¥è¯¢æµç¨åç±»åç§° |
| | | * |
| | | * @param categoryId æµç¨åç±»ID |
| | | * @return æµç¨åç±»åç§° |
| | | */ |
| | | String selectCategoryNameById(String categoryId); |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¬¦åæ¡ä»¶çæµç¨åç±»å表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @return æµç¨åç±»å表 |
| | | */ |
| | | List<FlowCategoryVo> queryList(FlowCategoryBo bo); |
| | | |
| | | /** |
| | | * æ¥è¯¢æµç¨åç±»æ ç»æä¿¡æ¯ |
| | | * |
| | | * @param category æµç¨åç±»ä¿¡æ¯ |
| | | * @return æµç¨åç±»æ ä¿¡æ¯éå |
| | | */ |
| | | List<Tree<Long>> selectCategoryTreeList(FlowCategoryBo category); |
| | | |
| | | /** |
| | | * æ ¡éªæµç¨åç±»æ¯å¦ææ°æ®æé |
| | | * |
| | | * @param categoryId æµç¨åç±»ID |
| | | */ |
| | | void checkCategoryDataScope(Long categoryId); |
| | | |
| | | /** |
| | | * æ ¡éªæµç¨åç±»åç§°æ¯å¦å¯ä¸ |
| | | * |
| | | * @param category æµç¨åç±»ä¿¡æ¯ |
| | | * @return ç»æ |
| | | */ |
| | | boolean checkCategoryNameUnique(FlowCategoryBo category); |
| | | |
| | | /** |
| | | * æ¥è¯¢æµç¨åç±»æ¯å¦å卿µç¨å®ä¹ |
| | | * |
| | | * @param categoryId æµç¨åç±»ID |
| | | * @return ç»æ true åå¨ false ä¸åå¨ |
| | | */ |
| | | boolean checkCategoryExistDefinition(Long categoryId); |
| | | |
| | | /** |
| | | * æ¯å¦å卿µç¨åç±»åèç¹ |
| | | * |
| | | * @param categoryId æµç¨åç±»ID |
| | | * @return ç»æ |
| | | */ |
| | | boolean hasChildByCategoryId(Long categoryId); |
| | | |
| | | /** |
| | | * æ°å¢æµç¨åç±» |
| | | * |
| | | * @param bo æµç¨åç±» |
| | | * @return æ¯å¦æ°å¢æå |
| | | */ |
| | | int insertByBo(FlowCategoryBo bo); |
| | | |
| | | /** |
| | | * ä¿®æ¹æµç¨åç±» |
| | | * |
| | | * @param bo æµç¨åç±» |
| | | * @return æ¯å¦ä¿®æ¹æå |
| | | */ |
| | | int updateByBo(FlowCategoryBo bo); |
| | | |
| | | /** |
| | | * å 餿µç¨åç±»ä¿¡æ¯ |
| | | * |
| | | * @param categoryId ä¸»é® |
| | | * @return æ¯å¦å 餿å |
| | | */ |
| | | int deleteWithValidById(Long categoryId); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.service; |
| | | |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | import org.dromara.warm.flow.orm.entity.FlowDefinition; |
| | | import org.dromara.workflow.domain.vo.FlowDefinitionVo; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * æµç¨å®ä¹ æå¡å± |
| | | * |
| | | * @author may |
| | | */ |
| | | public interface IFlwDefinitionService { |
| | | |
| | | /** |
| | | * æ¥è¯¢æµç¨å®ä¹å表 |
| | | * |
| | | * @param flowDefinition åæ° |
| | | * @param pageQuery å页 |
| | | * @return è¿åå页å表 |
| | | */ |
| | | TableDataInfo<FlowDefinitionVo> queryList(FlowDefinition flowDefinition, PageQuery pageQuery); |
| | | |
| | | /** |
| | | * æ¥è¯¢æªåå¸çæµç¨å®ä¹å表 |
| | | * |
| | | * @param flowDefinition åæ° |
| | | * @param pageQuery å页 |
| | | * @return è¿åå页å表 |
| | | */ |
| | | TableDataInfo<FlowDefinitionVo> unPublishList(FlowDefinition flowDefinition, PageQuery pageQuery); |
| | | |
| | | |
| | | /** |
| | | * å叿µç¨å®ä¹ |
| | | * |
| | | * @param id æµç¨å®ä¹id |
| | | * @return ç»æ |
| | | */ |
| | | boolean publish(Long id); |
| | | |
| | | /** |
| | | * å¯¼åºæµç¨å®ä¹ |
| | | * |
| | | * @param id æµç¨å®ä¹id |
| | | * @param response ååº |
| | | * @throws IOException å¼å¸¸ |
| | | */ |
| | | void exportDef(Long id, HttpServletResponse response) throws IOException; |
| | | |
| | | /** |
| | | * 导å
¥æµç¨å®ä¹ |
| | | * |
| | | * @param file æä»¶ |
| | | * @param category åç±» |
| | | * @return ç»æ |
| | | */ |
| | | boolean importXml(MultipartFile file, String category); |
| | | |
| | | /** |
| | | * å 餿µç¨å®ä¹ |
| | | * |
| | | * @param ids æµç¨å®ä¹id |
| | | * @return ç»æ |
| | | */ |
| | | boolean removeDef(List<Long> ids); |
| | | |
| | | /** |
| | | * æ°å¢ç§æ·æµç¨å®ä¹ |
| | | * |
| | | * @param tenantId ç§æ·id |
| | | */ |
| | | void syncDef(String tenantId); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.service; |
| | | |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | import org.dromara.warm.flow.orm.entity.FlowInstance; |
| | | 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 java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * æµç¨å®ä¾ æå¡å± |
| | | * |
| | | * @author may |
| | | */ |
| | | public interface IFlwInstanceService { |
| | | |
| | | /** |
| | | * å页æ¥è¯¢æ£å¨è¿è¡çæµç¨å®ä¾ |
| | | * |
| | | * @param flowInstanceBo æµç¨å®ä¾ |
| | | * @param pageQuery å页 |
| | | * @return ç»æ |
| | | */ |
| | | TableDataInfo<FlowInstanceVo> selectRunningInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery); |
| | | |
| | | /** |
| | | * å页æ¥è¯¢å·²ç»æçæµç¨å®ä¾ |
| | | * |
| | | * @param flowInstanceBo æµç¨å®ä¾ |
| | | * @param pageQuery å页 |
| | | * @return ç»æ |
| | | */ |
| | | TableDataInfo<FlowInstanceVo> selectFinishInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery); |
| | | |
| | | /** |
| | | * æ ¹æ®ä¸å¡idæ¥è¯¢æµç¨å®ä¾è¯¦ç»ä¿¡æ¯ |
| | | * |
| | | * @param businessId ä¸å¡id |
| | | * @return ç»æ |
| | | */ |
| | | FlowInstanceVo queryByBusinessId(Long businessId); |
| | | |
| | | /** |
| | | * æç
§ä¸å¡idæ¥è¯¢æµç¨å®ä¾ |
| | | * |
| | | * @param businessId ä¸å¡id |
| | | * @return ç»æ |
| | | */ |
| | | FlowInstance selectInstByBusinessId(String businessId); |
| | | |
| | | /** |
| | | * æç
§å®ä¾idæ¥è¯¢æµç¨å®ä¾ |
| | | * |
| | | * @param instanceId å®ä¾id |
| | | * @return ç»æ |
| | | */ |
| | | FlowInstance selectInstById(Long instanceId); |
| | | |
| | | /** |
| | | * æç
§å®ä¾idæ¥è¯¢æµç¨å®ä¾ |
| | | * |
| | | * @param instanceIds å®ä¾id |
| | | * @return ç»æ |
| | | */ |
| | | List<FlowInstance> selectInstListByIdList(List<Long> instanceIds); |
| | | |
| | | /** |
| | | * æç
§ä¸å¡idå 餿µç¨å®ä¾ |
| | | * |
| | | * @param businessIds ä¸å¡id |
| | | * @return ç»æ |
| | | */ |
| | | boolean deleteByBusinessIds(List<Long> businessIds); |
| | | |
| | | /** |
| | | * æç
§å®ä¾idå 餿µç¨å®ä¾ |
| | | * |
| | | * @param instanceIds å®ä¾id |
| | | * @return ç»æ |
| | | */ |
| | | boolean deleteByInstanceIds(List<Long> instanceIds); |
| | | |
| | | /** |
| | | * æ¤éæµç¨ |
| | | * |
| | | * @param bo åæ° |
| | | * @return ç»æ |
| | | */ |
| | | boolean cancelProcessApply(FlowCancelBo bo); |
| | | |
| | | /** |
| | | * è·åå½åç»é人åèµ·çæµç¨å®ä¾ |
| | | * |
| | | * @param instanceBo æµç¨å®ä¾ |
| | | * @param pageQuery å页 |
| | | * @return ç»æ |
| | | */ |
| | | TableDataInfo<FlowInstanceVo> selectCurrentInstanceList(FlowInstanceBo instanceBo, PageQuery pageQuery); |
| | | |
| | | /** |
| | | * è·åæµç¨å¾,æµç¨è®°å½ |
| | | * |
| | | * @param businessId ä¸å¡id |
| | | * @return ç»æ |
| | | */ |
| | | Map<String, Object> flowImage(String businessId); |
| | | |
| | | /** |
| | | * æç
§å®ä¾idæ´æ°ç¶æ |
| | | * |
| | | * @param instanceId å®ä¾id |
| | | * @param status ç¶æ |
| | | */ |
| | | void updateStatus(Long instanceId, String status); |
| | | |
| | | /** |
| | | * è·åæµç¨åé |
| | | * |
| | | * @param instanceId å®ä¾id |
| | | * @return ç»æ |
| | | */ |
| | | Map<String, Object> instanceVariable(String instanceId); |
| | | |
| | | /** |
| | | * 设置æµç¨åé |
| | | * |
| | | * @param instanceId å®ä¾id |
| | | * @param variable æµç¨åé |
| | | */ |
| | | void setVariable(Long instanceId, Map<String, Object> variable); |
| | | |
| | | /** |
| | | * æä»»å¡idæ¥è¯¢å®ä¾ |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | * @return ç»æ |
| | | */ |
| | | FlowInstance selectByTaskId(Long taskId); |
| | | |
| | | /** |
| | | * æä»»å¡idæ¥è¯¢å®ä¾ |
| | | * |
| | | * @param taskIdList ä»»å¡id |
| | | * @return ç»æ |
| | | */ |
| | | List<FlowInstance> selectByTaskIdList(List<Long> taskIdList); |
| | | |
| | | /** |
| | | * ä½åºæµç¨ |
| | | * |
| | | * @param bo æµç¨å®ä¾ |
| | | * @return ç»æ |
| | | */ |
| | | boolean processInvalid(FlowInvalidBo bo); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.service; |
| | | |
| | | import org.dromara.common.core.domain.dto.UserDTO; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * æµç¨è®¾è®¡å¨-è·ååç人 |
| | | * |
| | | * @author AprilWind |
| | | */ |
| | | public interface IFlwTaskAssigneeService { |
| | | |
| | | /** |
| | | * æ ¹æ®å卿 è¯ç¬¦ï¼storageIdï¼è§£æåé
ç±»ååIDï¼å¹¶è·å对åºçç¨æ·å表 |
| | | * |
| | | * @param storageId å
å«åé
ç±»ååIDçå符串ï¼ä¾å¦ "user:123" æ "role:456"ï¼ |
| | | * @return ä¸åé
ç±»ååIDå¹é
çç¨æ·å表ï¼å¦ææ ¼å¼æ æåè¿å空å表 |
| | | */ |
| | | List<UserDTO> fetchUsersByStorageId(String storageId); |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.service; |
| | | |
| | | import org.dromara.common.core.domain.dto.UserDTO; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | import org.dromara.warm.flow.core.entity.Node; |
| | | import org.dromara.warm.flow.orm.entity.FlowHisTask; |
| | | import org.dromara.warm.flow.orm.entity.FlowTask; |
| | | import org.dromara.workflow.domain.bo.*; |
| | | import org.dromara.workflow.domain.vo.FlowHisTaskVo; |
| | | import org.dromara.workflow.domain.vo.FlowTaskVo; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * ä»»å¡ æå¡å± |
| | | * |
| | | * @author may |
| | | */ |
| | | public interface IFlwTaskService { |
| | | |
| | | /** |
| | | * å¯å¨ä»»å¡ |
| | | * |
| | | * @param startProcessBo å¯å¨æµç¨åæ° |
| | | * @return ç»æ |
| | | */ |
| | | Map<String, Object> startWorkFlow(StartProcessBo startProcessBo); |
| | | |
| | | /** |
| | | * åçä»»å¡ |
| | | * |
| | | * @param completeTaskBo åçä»»å¡åæ° |
| | | * @return ç»æ |
| | | */ |
| | | boolean completeTask(CompleteTaskBo completeTaskBo); |
| | | |
| | | /** |
| | | * æ¥è¯¢å½åç¨æ·çå¾
åä»»å¡ |
| | | * |
| | | * @param flowTaskBo åæ° |
| | | * @param pageQuery å页 |
| | | * @return ç»æ |
| | | */ |
| | | TableDataInfo<FlowTaskVo> pageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery); |
| | | |
| | | /** |
| | | * æ¥è¯¢å½åç§æ·ææå¾
åä»»å¡ |
| | | * |
| | | * @param flowTaskBo åæ° |
| | | * @param pageQuery å页 |
| | | * @return ç»æ |
| | | */ |
| | | TableDataInfo<FlowHisTaskVo> pageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery); |
| | | |
| | | /** |
| | | * æ¥è¯¢å¾
åä»»å¡ |
| | | * |
| | | * @param flowTaskBo åæ° |
| | | * @param pageQuery å页 |
| | | * @return ç»æ |
| | | */ |
| | | TableDataInfo<FlowTaskVo> pageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery); |
| | | |
| | | /** |
| | | * æ¥è¯¢å·²åä»»å¡ |
| | | * |
| | | * @param flowTaskBo åæ° |
| | | * @param pageQuery å页 |
| | | * @return ç»æ |
| | | */ |
| | | TableDataInfo<FlowHisTaskVo> pageByAllTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery); |
| | | |
| | | /** |
| | | * æ¥è¯¢å½åç¨æ·çæé |
| | | * |
| | | * @param flowTaskBo åæ° |
| | | * @param pageQuery å页 |
| | | * @return ç»æ |
| | | */ |
| | | TableDataInfo<FlowTaskVo> pageByTaskCopy(FlowTaskBo flowTaskBo, PageQuery pageQuery); |
| | | |
| | | /** |
| | | * ä¿®æ¹ä»»å¡åç人 |
| | | * |
| | | * @param taskIdList ä»»å¡id |
| | | * @param userId ç¨æ·id |
| | | * @return ç»æ |
| | | */ |
| | | boolean updateAssignee(List<Long> taskIdList, String userId); |
| | | |
| | | /** |
| | | * 驳åå®¡æ¹ |
| | | * |
| | | * @param bo åæ° |
| | | * @return ç»æ |
| | | */ |
| | | boolean backProcess(BackProcessBo bo); |
| | | |
| | | /** |
| | | * è·åå¯é©³åçåç½®èç¹ |
| | | * |
| | | * @param definitionId æµç¨å®ä¹id |
| | | * @param nowNodeCode å½åèç¹ |
| | | * @return ç»æ |
| | | */ |
| | | List<Node> getBackTaskNode(Long definitionId, String nowNodeCode); |
| | | |
| | | /** |
| | | * ç»æ¢ä»»å¡ |
| | | * |
| | | * @param bo åæ° |
| | | * @return ç»æ |
| | | */ |
| | | boolean terminationTask(FlowTerminationBo bo); |
| | | |
| | | /** |
| | | * æç
§ä»»å¡idæ¥è¯¢ä»»å¡ |
| | | * |
| | | * @param taskIdList ä»»å¡id |
| | | * @return ç»æ |
| | | */ |
| | | List<FlowTask> selectByIdList(List<Long> taskIdList); |
| | | |
| | | /** |
| | | * æç
§ä»»å¡idæ¥è¯¢ä»»å¡ |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | * @return ç»æ |
| | | */ |
| | | FlowTaskVo selectById(Long taskId); |
| | | |
| | | /** |
| | | * æç
§ä»»å¡idæ¥è¯¢ä»»å¡ |
| | | * |
| | | * @param taskIdList ä»»å¡id |
| | | * @return ç»æ |
| | | */ |
| | | List<FlowHisTask> selectHisTaskByIdList(List<Long> taskIdList); |
| | | |
| | | /** |
| | | * æç
§ä»»å¡idæ¥è¯¢ä»»å¡ |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | * @return ç»æ |
| | | */ |
| | | FlowHisTask selectHisTaskById(Long taskId); |
| | | |
| | | /** |
| | | * æç
§å®ä¾idæ¥è¯¢ä»»å¡ |
| | | * |
| | | * @param instanceIdList æµç¨å®ä¾id |
| | | * @return ç»æ |
| | | */ |
| | | List<FlowTask> selectByInstIdList(List<Long> instanceIdList); |
| | | |
| | | /** |
| | | * æç
§å®ä¾idæ¥è¯¢ä»»å¡ |
| | | * |
| | | * @param instanceId æµç¨å®ä¾id |
| | | * @return ç»æ |
| | | */ |
| | | List<FlowTask> selectByInstId(Long instanceId); |
| | | |
| | | /** |
| | | * ä»»å¡æä½ |
| | | * |
| | | * @param bo åæ° |
| | | * @param taskOperation æä½ç±»åï¼å§æ´¾ delegateTaskã转å transferTaskãå ç¾ addSignatureãåç¾ reductionSignature |
| | | * @return ç»æ |
| | | */ |
| | | boolean taskOperation(TaskOperationBo bo, String taskOperation); |
| | | |
| | | /** |
| | | * è·å任塿æåç人 |
| | | * |
| | | * @param taskIdList ä»»å¡id |
| | | * @return ç»æ |
| | | */ |
| | | Map<Long, List<UserDTO>> currentTaskAllUser(List<Long> taskIdList); |
| | | |
| | | /** |
| | | * è·åå½åä»»å¡çææåç人 |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | * @return ç»æ |
| | | */ |
| | | List<UserDTO> currentTaskAllUser(Long taskId); |
| | | } |
| | |
| | | import org.dromara.workflow.domain.bo.TestLeaveBo; |
| | | import org.dromara.workflow.domain.vo.TestLeaveVo; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | /** |
| | | * æ ¡éªå¹¶æ¹éå é¤è¯·åä¿¡æ¯ |
| | | */ |
| | | Boolean deleteWithValidByIds(Collection<Long> ids); |
| | | Boolean deleteWithValidByIds(List<Long> ids); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.service.impl; |
| | | |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.translation.annotation.TranslationType; |
| | | import org.dromara.common.translation.core.TranslationInterface; |
| | | import org.dromara.workflow.common.constant.FlowConstant; |
| | | import org.dromara.workflow.service.IFlwCategoryService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * æµç¨åç±»åç§°ç¿»è¯å®ç° |
| | | * |
| | | * @author AprilWind |
| | | */ |
| | | @Slf4j |
| | | @RequiredArgsConstructor |
| | | @Service |
| | | @TranslationType(type = FlowConstant.CATEGORY_ID_TO_NAME) |
| | | public class CategoryNameTranslationImpl implements TranslationInterface<String> { |
| | | |
| | | private final IFlwCategoryService flwCategoryService; |
| | | |
| | | @Override |
| | | public String translation(Object key, String other) { |
| | | if (key instanceof String categoryId) { |
| | | return flwCategoryService.selectCategoryNameById(categoryId); |
| | | } |
| | | return null; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.lang.tree.Tree; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.dromara.common.core.constant.SystemConstants; |
| | | import org.dromara.common.core.exception.ServiceException; |
| | | import org.dromara.common.core.utils.*; |
| | | import org.dromara.common.mybatis.helper.DataBaseHelper; |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.warm.flow.core.service.DefService; |
| | | import org.dromara.warm.flow.orm.entity.FlowDefinition; |
| | | import org.dromara.workflow.common.constant.FlowConstant; |
| | | import org.dromara.workflow.domain.FlowCategory; |
| | | import org.dromara.workflow.domain.bo.FlowCategoryBo; |
| | | import org.dromara.workflow.domain.vo.FlowCategoryVo; |
| | | import org.dromara.workflow.mapper.FlwCategoryMapper; |
| | | import org.dromara.workflow.service.IFlwCategoryService; |
| | | import org.springframework.cache.annotation.CacheEvict; |
| | | import org.springframework.cache.annotation.Cacheable; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * æµç¨åç±»Serviceä¸å¡å±å¤ç |
| | | * |
| | | * @author may |
| | | */ |
| | | @RequiredArgsConstructor |
| | | @Service |
| | | public class FlwCategoryServiceImpl implements IFlwCategoryService { |
| | | |
| | | private final FlwCategoryMapper baseMapper; |
| | | private final DefService defService; |
| | | |
| | | /** |
| | | * æ¥è¯¢æµç¨åç±» |
| | | * |
| | | * @param categoryId ä¸»é® |
| | | * @return æµç¨åç±» |
| | | */ |
| | | @Override |
| | | public FlowCategoryVo queryById(Long categoryId) { |
| | | FlowCategoryVo category = baseMapper.selectVoById(categoryId); |
| | | if (ObjectUtil.isNull(category)) { |
| | | return null; |
| | | } |
| | | FlowCategoryVo parentCategory = baseMapper.selectVoOne(new LambdaQueryWrapper<FlowCategory>() |
| | | .select(FlowCategory::getCategoryName).eq(FlowCategory::getCategoryId, category.getParentId())); |
| | | category.setParentName(ObjectUtils.notNullGetter(parentCategory, FlowCategoryVo::getCategoryName)); |
| | | return category; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®æµç¨åç±»IDæ¥è¯¢æµç¨åç±»åç§° |
| | | * |
| | | * @param categoryId æµç¨åç±»ID |
| | | * @return æµç¨åç±»åç§° |
| | | */ |
| | | @Cacheable(cacheNames = FlowConstant.FLOW_CATEGORY_NAME, key = "#categoryId") |
| | | @Override |
| | | public String selectCategoryNameById(String categoryId) { |
| | | if (StringUtils.isBlank(categoryId)) { |
| | | return null; |
| | | } |
| | | FlowCategory category = baseMapper.selectOne(new LambdaQueryWrapper<FlowCategory>() |
| | | .select(FlowCategory::getCategoryName).eq(FlowCategory::getCategoryId, categoryId)); |
| | | return ObjectUtils.notNullGetter(category, FlowCategory::getCategoryName); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ç¬¦åæ¡ä»¶çæµç¨åç±»å表 |
| | | * |
| | | * @param bo æ¥è¯¢æ¡ä»¶ |
| | | * @return æµç¨åç±»å表 |
| | | */ |
| | | @Override |
| | | public List<FlowCategoryVo> queryList(FlowCategoryBo bo) { |
| | | LambdaQueryWrapper<FlowCategory> lqw = buildQueryWrapper(bo); |
| | | return baseMapper.selectVoList(lqw); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢æµç¨åç±»æ ç»æä¿¡æ¯ |
| | | * |
| | | * @param category æµç¨åç±»ä¿¡æ¯ |
| | | * @return æµç¨åç±»æ ä¿¡æ¯éå |
| | | */ |
| | | @Override |
| | | public List<Tree<Long>> selectCategoryTreeList(FlowCategoryBo category) { |
| | | LambdaQueryWrapper<FlowCategory> lqw = buildQueryWrapper(category); |
| | | List<FlowCategoryVo> categorys = baseMapper.selectVoList(lqw); |
| | | if (CollUtil.isEmpty(categorys)) { |
| | | return CollUtil.newArrayList(); |
| | | } |
| | | // è·åå½ååè¡¨ä¸æ¯ä¸ä¸ªèç¹çparentIdï¼ç¶åå¨åè¡¨ä¸æ¥æ¾æ¯å¦æidä¸å
¶parentId对åºï¼è¥æ 对åºï¼åè¡¨ææ¤æ¶èç¹å表ä¸ï¼è¯¥èç¹å¨å½åå表ä¸å±äºé¡¶çº§èç¹ |
| | | List<Tree<Long>> treeList = CollUtil.newArrayList(); |
| | | for (FlowCategoryVo d : categorys) { |
| | | Long parentId = d.getParentId(); |
| | | FlowCategoryVo categoryVo = StreamUtils.findFirst(categorys, it -> it.getCategoryId().longValue() == parentId); |
| | | if (ObjectUtil.isNull(categoryVo)) { |
| | | List<Tree<Long>> trees = TreeBuildUtils.build(categorys, parentId, (dept, tree) -> |
| | | tree.setId(dept.getCategoryId()) |
| | | .setParentId(dept.getParentId()) |
| | | .setName(dept.getCategoryName()) |
| | | .setWeight(dept.getOrderNum())); |
| | | Tree<Long> tree = StreamUtils.findFirst(trees, it -> it.getId().longValue() == d.getCategoryId()); |
| | | treeList.add(tree); |
| | | } |
| | | } |
| | | return treeList; |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªæµç¨åç±»æ¯å¦ææ°æ®æé |
| | | * |
| | | * @param categoryId æµç¨åç±»ID |
| | | */ |
| | | @Override |
| | | public void checkCategoryDataScope(Long categoryId) { |
| | | if (ObjectUtil.isNull(categoryId)) { |
| | | return; |
| | | } |
| | | if (LoginHelper.isSuperAdmin()) { |
| | | return; |
| | | } |
| | | if (baseMapper.countCategoryById(categoryId) == 0) { |
| | | throw new ServiceException("没ææéè®¿é®æµç¨åç±»æ°æ®ï¼"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªæµç¨åç±»åç§°æ¯å¦å¯ä¸ |
| | | * |
| | | * @param category æµç¨åç±»ä¿¡æ¯ |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public boolean checkCategoryNameUnique(FlowCategoryBo category) { |
| | | boolean exist = baseMapper.exists(new LambdaQueryWrapper<FlowCategory>() |
| | | .eq(FlowCategory::getCategoryName, category.getCategoryName()) |
| | | .eq(FlowCategory::getParentId, category.getParentId()) |
| | | .ne(ObjectUtil.isNotNull(category.getCategoryId()), FlowCategory::getCategoryId, category.getCategoryId())); |
| | | return !exist; |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢æµç¨åç±»æ¯å¦å卿µç¨å®ä¹ |
| | | * |
| | | * @param categoryId æµç¨åç±»ID |
| | | * @return ç»æ true åå¨ false ä¸åå¨ |
| | | */ |
| | | @Override |
| | | public boolean checkCategoryExistDefinition(Long categoryId) { |
| | | FlowDefinition definition = new FlowDefinition(); |
| | | definition.setCategory(categoryId.toString()); |
| | | return defService.exists(definition); |
| | | } |
| | | |
| | | /** |
| | | * æ¯å¦å卿µç¨åç±»åèç¹ |
| | | * |
| | | * @param categoryId æµç¨åç±»ID |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public boolean hasChildByCategoryId(Long categoryId) { |
| | | return baseMapper.exists(new LambdaQueryWrapper<FlowCategory>() |
| | | .eq(FlowCategory::getParentId, categoryId)); |
| | | } |
| | | |
| | | private LambdaQueryWrapper<FlowCategory> buildQueryWrapper(FlowCategoryBo bo) { |
| | | LambdaQueryWrapper<FlowCategory> lqw = Wrappers.lambdaQuery(); |
| | | lqw.eq(FlowCategory::getDelFlag, SystemConstants.NORMAL); |
| | | lqw.eq(ObjectUtil.isNotNull(bo.getCategoryId()), FlowCategory::getCategoryId, bo.getCategoryId()); |
| | | lqw.eq(ObjectUtil.isNotNull(bo.getParentId()), FlowCategory::getParentId, bo.getParentId()); |
| | | lqw.like(StringUtils.isNotBlank(bo.getCategoryName()), FlowCategory::getCategoryName, bo.getCategoryName()); |
| | | lqw.orderByAsc(FlowCategory::getAncestors); |
| | | lqw.orderByAsc(FlowCategory::getParentId); |
| | | lqw.orderByAsc(FlowCategory::getOrderNum); |
| | | lqw.orderByAsc(FlowCategory::getCategoryId); |
| | | return lqw; |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢æµç¨åç±» |
| | | * |
| | | * @param bo æµç¨åç±» |
| | | * @return æ¯å¦æ°å¢æå |
| | | */ |
| | | @Override |
| | | public int insertByBo(FlowCategoryBo bo) { |
| | | FlowCategory info = baseMapper.selectById(bo.getParentId()); |
| | | FlowCategory category = MapstructUtils.convert(bo, FlowCategory.class); |
| | | category.setAncestors(info.getAncestors() + StringUtils.SEPARATOR + category.getParentId()); |
| | | return baseMapper.insert(category); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹æµç¨åç±» |
| | | * |
| | | * @param bo æµç¨åç±» |
| | | * @return æ¯å¦ä¿®æ¹æå |
| | | */ |
| | | @CacheEvict(cacheNames = FlowConstant.FLOW_CATEGORY_NAME, key = "#bo.categoryId") |
| | | @Override |
| | | public int updateByBo(FlowCategoryBo bo) { |
| | | FlowCategory category = MapstructUtils.convert(bo, FlowCategory.class); |
| | | FlowCategory oldCategory = baseMapper.selectById(category.getCategoryId()); |
| | | if (ObjectUtil.isNull(oldCategory)) { |
| | | throw new ServiceException("æµç¨åç±»ä¸åå¨ï¼æ æ³ä¿®æ¹"); |
| | | } |
| | | if (!oldCategory.getParentId().equals(category.getParentId())) { |
| | | // å¦ææ¯æ°ç¶æµç¨åç±» åæ ¡éªæ¯å¦å
·ææ°ç¶æµç¨åç±»æé é¿å
è¶æ |
| | | this.checkCategoryDataScope(category.getParentId()); |
| | | FlowCategory newParentCategory = baseMapper.selectById(category.getParentId()); |
| | | if (ObjectUtil.isNotNull(newParentCategory)) { |
| | | String newAncestors = newParentCategory.getAncestors() + StringUtils.SEPARATOR + newParentCategory.getCategoryId(); |
| | | String oldAncestors = oldCategory.getAncestors(); |
| | | category.setAncestors(newAncestors); |
| | | updateCategoryChildren(category.getCategoryId(), newAncestors, oldAncestors); |
| | | } |
| | | } else { |
| | | category.setAncestors(oldCategory.getAncestors()); |
| | | } |
| | | return baseMapper.updateById(category); |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹åå
ç´ å
³ç³» |
| | | * |
| | | * @param categoryId 被修æ¹çæµç¨åç±»ID |
| | | * @param newAncestors æ°çç¶IDéå |
| | | * @param oldAncestors æ§çç¶IDéå |
| | | */ |
| | | private void updateCategoryChildren(Long categoryId, String newAncestors, String oldAncestors) { |
| | | List<FlowCategory> children = baseMapper.selectList(new LambdaQueryWrapper<FlowCategory>() |
| | | .apply(DataBaseHelper.findInSet(categoryId, "ancestors"))); |
| | | List<FlowCategory> list = new ArrayList<>(); |
| | | for (FlowCategory child : children) { |
| | | FlowCategory category = new FlowCategory(); |
| | | category.setCategoryId(child.getCategoryId()); |
| | | category.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors)); |
| | | list.add(category); |
| | | } |
| | | if (CollUtil.isNotEmpty(list)) { |
| | | baseMapper.updateBatchById(list); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å 餿µç¨åç±»ä¿¡æ¯ |
| | | * |
| | | * @param categoryId ä¸»é® |
| | | * @return æ¯å¦å 餿å |
| | | */ |
| | | @CacheEvict(cacheNames = FlowConstant.FLOW_CATEGORY_NAME, key = "#categoryId") |
| | | @Override |
| | | public int deleteWithValidById(Long categoryId) { |
| | | return baseMapper.deleteById(categoryId); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.service.impl; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.convert.Convert; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dom4j.Document; |
| | | import org.dom4j.io.OutputFormat; |
| | | import org.dom4j.io.XMLWriter; |
| | | import org.dromara.common.core.exception.ServiceException; |
| | | import org.dromara.common.core.utils.StreamUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | | import org.dromara.common.mybatis.core.page.TableDataInfo; |
| | | import org.dromara.warm.flow.core.dto.FlowCombine; |
| | | import org.dromara.warm.flow.core.entity.Definition; |
| | | import org.dromara.warm.flow.core.enums.NodeType; |
| | | import org.dromara.warm.flow.core.enums.PublishStatus; |
| | | import org.dromara.warm.flow.core.service.DefService; |
| | | import org.dromara.warm.flow.orm.entity.FlowDefinition; |
| | | import org.dromara.warm.flow.orm.entity.FlowHisTask; |
| | | import org.dromara.warm.flow.orm.entity.FlowNode; |
| | | import org.dromara.warm.flow.orm.entity.FlowSkip; |
| | | import org.dromara.warm.flow.orm.mapper.FlowDefinitionMapper; |
| | | import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; |
| | | import org.dromara.warm.flow.orm.mapper.FlowNodeMapper; |
| | | import org.dromara.warm.flow.orm.mapper.FlowSkipMapper; |
| | | import org.dromara.workflow.common.constant.FlowConstant; |
| | | import org.dromara.workflow.domain.FlowCategory; |
| | | import org.dromara.workflow.domain.vo.FlowDefinitionVo; |
| | | import org.dromara.workflow.mapper.FlwCategoryMapper; |
| | | import org.dromara.workflow.service.IFlwDefinitionService; |
| | | import org.dromara.workflow.utils.WorkflowUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | import static org.dromara.common.core.constant.TenantConstants.DEFAULT_TENANT_ID; |
| | | |
| | | /** |
| | | * æµç¨å®ä¹ æå¡å±å®ç° |
| | | * |
| | | * @author may |
| | | */ |
| | | @Slf4j |
| | | @RequiredArgsConstructor |
| | | @Service |
| | | public class FlwDefinitionServiceImpl implements IFlwDefinitionService { |
| | | |
| | | private final DefService defService; |
| | | private final FlowDefinitionMapper flowDefinitionMapper; |
| | | private final FlowHisTaskMapper flowHisTaskMapper; |
| | | private final FlwCategoryMapper flwCategoryMapper; |
| | | private final FlowNodeMapper flowNodeMapper; |
| | | private final FlowSkipMapper flowSkipMapper; |
| | | |
| | | /** |
| | | * æ¥è¯¢æµç¨å®ä¹å表 |
| | | * |
| | | * @param flowDefinition æµç¨å®ä¹ä¿¡æ¯ |
| | | * @param pageQuery å页 |
| | | * @return è¿åå页å表 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<FlowDefinitionVo> queryList(FlowDefinition flowDefinition, PageQuery pageQuery) { |
| | | LambdaQueryWrapper<FlowDefinition> wrapper = buildQueryWrapper(flowDefinition); |
| | | wrapper.eq(FlowDefinition::getIsPublish, PublishStatus.PUBLISHED.getKey()); |
| | | Page<FlowDefinition> page = flowDefinitionMapper.selectPage(pageQuery.build(), wrapper); |
| | | TableDataInfo<FlowDefinitionVo> build = TableDataInfo.build(); |
| | | build.setRows(BeanUtil.copyToList(page.getRecords(), FlowDefinitionVo.class)); |
| | | build.setTotal(page.getTotal()); |
| | | return build; |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢æªåå¸çæµç¨å®ä¹å表 |
| | | * |
| | | * @param flowDefinition æµç¨å®ä¹ä¿¡æ¯ |
| | | * @param pageQuery å页 |
| | | * @return è¿åå页å表 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<FlowDefinitionVo> unPublishList(FlowDefinition flowDefinition, PageQuery pageQuery) { |
| | | LambdaQueryWrapper<FlowDefinition> wrapper = buildQueryWrapper(flowDefinition); |
| | | wrapper.in(FlowDefinition::getIsPublish, Arrays.asList(PublishStatus.UNPUBLISHED.getKey(), PublishStatus.EXPIRED.getKey())); |
| | | Page<FlowDefinition> page = flowDefinitionMapper.selectPage(pageQuery.build(), wrapper); |
| | | TableDataInfo<FlowDefinitionVo> build = TableDataInfo.build(); |
| | | build.setRows(BeanUtil.copyToList(page.getRecords(), FlowDefinitionVo.class)); |
| | | build.setTotal(page.getTotal()); |
| | | return build; |
| | | } |
| | | |
| | | private LambdaQueryWrapper<FlowDefinition> buildQueryWrapper(FlowDefinition flowDefinition) { |
| | | LambdaQueryWrapper<FlowDefinition> wrapper = Wrappers.lambdaQuery(); |
| | | wrapper.like(StringUtils.isNotBlank(flowDefinition.getFlowCode()), FlowDefinition::getFlowCode, flowDefinition.getFlowCode()); |
| | | wrapper.like(StringUtils.isNotBlank(flowDefinition.getFlowName()), FlowDefinition::getFlowName, flowDefinition.getFlowName()); |
| | | if (StringUtils.isNotBlank(flowDefinition.getCategory())) { |
| | | List<Long> categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowDefinition.getCategory())); |
| | | wrapper.in(FlowDefinition::getCategory, categoryIds); |
| | | } |
| | | wrapper.orderByDesc(FlowDefinition::getCreateTime); |
| | | return wrapper; |
| | | } |
| | | |
| | | /** |
| | | * å叿µç¨å®ä¹ |
| | | * |
| | | * @param id æµç¨å®ä¹id |
| | | */ |
| | | @Override |
| | | public boolean publish(Long id) { |
| | | List<FlowNode> flowNodes = flowNodeMapper.selectList(new LambdaQueryWrapper<FlowNode>().eq(FlowNode::getDefinitionId, id)); |
| | | List<String> errorMsg = new ArrayList<>(); |
| | | if (CollUtil.isNotEmpty(flowNodes)) { |
| | | for (FlowNode flowNode : flowNodes) { |
| | | String applyNodeCode = WorkflowUtils.applyNodeCode(id); |
| | | if (StringUtils.isBlank(flowNode.getPermissionFlag()) && !applyNodeCode.equals(flowNode.getNodeCode()) && NodeType.BETWEEN.getKey().equals(flowNode.getNodeType())) { |
| | | errorMsg.add(flowNode.getNodeName()); |
| | | } |
| | | } |
| | | if (CollUtil.isNotEmpty(errorMsg)) { |
| | | throw new ServiceException("èç¹ã" + StringUtils.join(errorMsg, ",") + "ãæªé
ç½®åç人!"); |
| | | } |
| | | } |
| | | return defService.publish(id); |
| | | } |
| | | |
| | | /** |
| | | * 导å
¥æµç¨å®ä¹ |
| | | * |
| | | * @param file æä»¶ |
| | | */ |
| | | @Override |
| | | public boolean importXml(MultipartFile file, String category) { |
| | | try { |
| | | FlowCombine combine = defService.readXml(file.getInputStream()); |
| | | // æµç¨å®ä¹ |
| | | Definition definition = combine.getDefinition(); |
| | | definition.setCategory(category); |
| | | defService.importFlow(combine); |
| | | } catch (Exception e) { |
| | | log.error("导å
¥æµç¨å®ä¹é误: {}", e.getMessage(), e); |
| | | throw new RuntimeException(e); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * å¯¼åºæµç¨å®ä¹ |
| | | * |
| | | * @param id æµç¨å®ä¹id |
| | | * @param response ååº |
| | | * @throws IOException å¼å¸¸ |
| | | */ |
| | | @Override |
| | | public void exportDef(Long id, HttpServletResponse response) throws IOException { |
| | | Document document = defService.exportXml(id); |
| | | // 设置çæxmlçæ ¼å¼ |
| | | OutputFormat of = OutputFormat.createPrettyPrint(); |
| | | // 设置ç¼ç æ ¼å¼ |
| | | of.setEncoding("UTF-8"); |
| | | of.setIndent(true); |
| | | of.setIndent(" "); |
| | | of.setNewlines(true); |
| | | |
| | | // å建ä¸ä¸ªxmlææ¡£ç¼è¾å¨ |
| | | XMLWriter writer = new XMLWriter(response.getOutputStream(), of); |
| | | writer.setEscapeText(false); |
| | | response.reset(); |
| | | response.setCharacterEncoding("UTF-8"); |
| | | response.setContentType("application/x-msdownload"); |
| | | response.setHeader("Content-Disposition", "attachment;"); |
| | | writer.write(document); |
| | | writer.close(); |
| | | } |
| | | |
| | | /** |
| | | * å 餿µç¨å®ä¹ |
| | | * |
| | | * @param ids æµç¨å®ä¹id |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean removeDef(List<Long> ids) { |
| | | LambdaQueryWrapper<FlowHisTask> wrapper = Wrappers.lambdaQuery(); |
| | | wrapper.in(FlowHisTask::getDefinitionId, ids); |
| | | List<FlowHisTask> flowHisTasks = flowHisTaskMapper.selectList(wrapper); |
| | | if (CollUtil.isNotEmpty(flowHisTasks)) { |
| | | List<FlowDefinition> flowDefinitions = flowDefinitionMapper.selectByIds(StreamUtils.toList(flowHisTasks, FlowHisTask::getDefinitionId)); |
| | | if (CollUtil.isNotEmpty(flowDefinitions)) { |
| | | String join = StreamUtils.join(flowDefinitions, FlowDefinition::getFlowCode); |
| | | log.error("æµç¨å®ä¹ã{}ã已被使ç¨ä¸å¯è¢«å é¤ï¼", join); |
| | | throw new ServiceException("æµç¨å®ä¹ã" + join + "ã已被使ç¨ä¸å¯è¢«å é¤ï¼"); |
| | | } |
| | | } |
| | | try { |
| | | defService.removeDef(ids); |
| | | } catch (Exception e) { |
| | | log.error("Error removing flow definitions: {}", e.getMessage(), e); |
| | | throw new RuntimeException("Failed to remove flow definitions", e); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢ç§æ·æµç¨å®ä¹ |
| | | * |
| | | * @param tenantId ç§æ·id |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void syncDef(String tenantId) { |
| | | List<FlowDefinition> flowDefinitions = flowDefinitionMapper.selectList(new LambdaQueryWrapper<FlowDefinition>().eq(FlowDefinition::getTenantId, DEFAULT_TENANT_ID)); |
| | | if (CollUtil.isEmpty(flowDefinitions)) { |
| | | return; |
| | | } |
| | | FlowCategory flowCategory = flwCategoryMapper.selectOne(new LambdaQueryWrapper<FlowCategory>() |
| | | .eq(FlowCategory::getTenantId, DEFAULT_TENANT_ID).eq(FlowCategory::getCategoryId, FlowConstant.FLOW_CATEGORY_ID)); |
| | | flowCategory.setCategoryId(null); |
| | | flowCategory.setTenantId(tenantId); |
| | | flwCategoryMapper.insert(flowCategory); |
| | | List<Long> defIds = StreamUtils.toList(flowDefinitions, FlowDefinition::getId); |
| | | List<FlowNode> flowNodes = flowNodeMapper.selectList(new LambdaQueryWrapper<FlowNode>().in(FlowNode::getDefinitionId, defIds)); |
| | | List<FlowSkip> flowSkips = flowSkipMapper.selectList(new LambdaQueryWrapper<FlowSkip>().in(FlowSkip::getDefinitionId, defIds)); |
| | | for (FlowDefinition definition : flowDefinitions) { |
| | | FlowDefinition flowDefinition = BeanUtil.toBean(definition, FlowDefinition.class); |
| | | flowDefinition.setId(null); |
| | | flowDefinition.setTenantId(tenantId); |
| | | flowDefinition.setIsPublish(0); |
| | | flowDefinition.setCategory(String.valueOf(flowCategory.getCategoryId())); |
| | | int insert = flowDefinitionMapper.insert(flowDefinition); |
| | | if (insert <= 0) { |
| | | log.info("忥æµç¨å®ä¹ã{}ã失败ï¼", definition.getFlowCode()); |
| | | continue; |
| | | } |
| | | log.info("忥æµç¨å®ä¹ã{}ãæåï¼", definition.getFlowCode()); |
| | | Long definitionId = flowDefinition.getId(); |
| | | if (CollUtil.isNotEmpty(flowNodes)) { |
| | | List<FlowNode> nodes = StreamUtils.filter(flowNodes, node -> node.getDefinitionId().equals(definition.getId())); |
| | | if (CollUtil.isNotEmpty(nodes)) { |
| | | List<FlowNode> flowNodeList = BeanUtil.copyToList(nodes, FlowNode.class); |
| | | flowNodeList.forEach(e -> { |
| | | e.setId(null); |
| | | e.setDefinitionId(definitionId); |
| | | e.setTenantId(tenantId); |
| | | e.setPermissionFlag(null); |
| | | }); |
| | | flowNodeMapper.insertOrUpdate(flowNodeList); |
| | | } |
| | | } |
| | | if (CollUtil.isNotEmpty(flowSkips)) { |
| | | List<FlowSkip> skips = StreamUtils.filter(flowSkips, skip -> skip.getDefinitionId().equals(definition.getId())); |
| | | if (CollUtil.isNotEmpty(skips)) { |
| | | List<FlowSkip> flowSkipList = BeanUtil.copyToList(skips, FlowSkip.class); |
| | | flowSkipList.forEach(e -> { |
| | | e.setId(null); |
| | | e.setDefinitionId(definitionId); |
| | | e.setTenantId(tenantId); |
| | | }); |
| | | flowSkipMapper.insertOrUpdate(flowSkipList); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.service.impl; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.convert.Convert; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.domain.dto.UserDTO; |
| | | import org.dromara.common.core.enums.BusinessStatusEnum; |
| | | import org.dromara.common.core.exception.ServiceException; |
| | | import org.dromara.common.core.utils.StreamUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | 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.warm.flow.core.FlowFactory; |
| | | import org.dromara.warm.flow.core.constant.ExceptionCons; |
| | | import org.dromara.warm.flow.core.dto.FlowParams; |
| | | import org.dromara.warm.flow.core.entity.Definition; |
| | | import org.dromara.warm.flow.core.entity.Instance; |
| | | import org.dromara.warm.flow.core.entity.Task; |
| | | import org.dromara.warm.flow.core.enums.NodeType; |
| | | import org.dromara.warm.flow.core.service.DefService; |
| | | import org.dromara.warm.flow.core.service.InsService; |
| | | import org.dromara.warm.flow.core.service.TaskService; |
| | | import org.dromara.warm.flow.orm.entity.FlowHisTask; |
| | | import org.dromara.warm.flow.orm.entity.FlowInstance; |
| | | import org.dromara.warm.flow.orm.entity.FlowTask; |
| | | import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; |
| | | import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper; |
| | | import org.dromara.workflow.common.enums.TaskStatusEnum; |
| | | 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.FlowHisTaskVo; |
| | | import org.dromara.workflow.domain.vo.FlowInstanceVo; |
| | | import org.dromara.workflow.domain.vo.FlowVariableVo; |
| | | import org.dromara.workflow.handler.FlowProcessEventHandler; |
| | | import org.dromara.workflow.mapper.FlwCategoryMapper; |
| | | import org.dromara.workflow.mapper.FlwInstanceMapper; |
| | | import org.dromara.workflow.service.IFlwInstanceService; |
| | | import org.dromara.workflow.service.IFlwTaskService; |
| | | import org.dromara.workflow.utils.WorkflowUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * æµç¨å®ä¾ æå¡å±å®ç° |
| | | * |
| | | * @author may |
| | | */ |
| | | @Slf4j |
| | | @RequiredArgsConstructor |
| | | @Service |
| | | public class FlwInstanceServiceImpl implements IFlwInstanceService { |
| | | |
| | | private final InsService insService; |
| | | private final DefService defService; |
| | | private final FlowHisTaskMapper flowHisTaskMapper; |
| | | private final FlowInstanceMapper flowInstanceMapper; |
| | | private final FlwInstanceMapper flwInstanceMapper; |
| | | private final TaskService taskService; |
| | | private final IFlwTaskService flwTaskService; |
| | | private final FlowProcessEventHandler flowProcessEventHandler; |
| | | private final FlwCategoryMapper flwCategoryMapper; |
| | | |
| | | /** |
| | | * å页æ¥è¯¢æ£å¨è¿è¡çæµç¨å®ä¾ |
| | | * |
| | | * @param flowInstanceBo æµç¨å®ä¾ |
| | | * @param pageQuery å页 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<FlowInstanceVo> selectRunningInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) { |
| | | QueryWrapper<FlowInstanceBo> queryWrapper = buildQueryWrapper(flowInstanceBo); |
| | | queryWrapper.in("fi.flow_status", BusinessStatusEnum.runningStatus()); |
| | | Page<FlowInstanceVo> page = flwInstanceMapper.selectInstanceList(pageQuery.build(), queryWrapper); |
| | | return TableDataInfo.build(page); |
| | | } |
| | | |
| | | /** |
| | | * å页æ¥è¯¢å·²ç»æçæµç¨å®ä¾ |
| | | * |
| | | * @param flowInstanceBo æµç¨å®ä¾ |
| | | * @param pageQuery å页 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<FlowInstanceVo> selectFinishInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) { |
| | | QueryWrapper<FlowInstanceBo> queryWrapper = buildQueryWrapper(flowInstanceBo); |
| | | queryWrapper.in("fi.flow_status", BusinessStatusEnum.finishStatus()); |
| | | Page<FlowInstanceVo> page = flwInstanceMapper.selectInstanceList(pageQuery.build(), queryWrapper); |
| | | return TableDataInfo.build(page); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ä¸å¡idæ¥è¯¢æµç¨å®ä¾è¯¦ç»ä¿¡æ¯ |
| | | * |
| | | * @param businessId ä¸å¡id |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public FlowInstanceVo queryByBusinessId(Long businessId) { |
| | | FlowInstance instance = this.selectInstByBusinessId(String.valueOf(businessId)); |
| | | FlowInstanceVo instanceVo = BeanUtil.toBean(instance, FlowInstanceVo.class); |
| | | Definition definition = defService.getById(instanceVo.getDefinitionId()); |
| | | instanceVo.setFlowName(definition.getFlowName()); |
| | | instanceVo.setFlowCode(definition.getFlowCode()); |
| | | instanceVo.setVersion(definition.getVersion()); |
| | | instanceVo.setFormCustom(definition.getFormCustom()); |
| | | instanceVo.setFormPath(definition.getFormPath()); |
| | | instanceVo.setCategory(definition.getCategory()); |
| | | return instanceVo; |
| | | } |
| | | |
| | | /** |
| | | * éç¨æ¥è¯¢æ¡ä»¶ |
| | | * |
| | | * @param flowInstanceBo æ¥è¯¢æ¡ä»¶ |
| | | * @return æ¥è¯¢æ¡ä»¶æé æ¹æ³ |
| | | */ |
| | | private QueryWrapper<FlowInstanceBo> buildQueryWrapper(FlowInstanceBo flowInstanceBo) { |
| | | QueryWrapper<FlowInstanceBo> queryWrapper = Wrappers.query(); |
| | | queryWrapper.like(StringUtils.isNotBlank(flowInstanceBo.getNodeName()), "fi.node_name", flowInstanceBo.getNodeName()); |
| | | queryWrapper.like(StringUtils.isNotBlank(flowInstanceBo.getFlowName()), "fd.flow_name", flowInstanceBo.getFlowName()); |
| | | queryWrapper.like(StringUtils.isNotBlank(flowInstanceBo.getFlowCode()), "fd.flow_code", flowInstanceBo.getFlowCode()); |
| | | if (StringUtils.isNotBlank(flowInstanceBo.getCategory())) { |
| | | List<Long> categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowInstanceBo.getCategory())); |
| | | queryWrapper.in("fd.category", categoryIds); |
| | | } |
| | | queryWrapper.eq(StringUtils.isNotBlank(flowInstanceBo.getBusinessId()), "fi.business_id", flowInstanceBo.getBusinessId()); |
| | | queryWrapper.in(CollUtil.isNotEmpty(flowInstanceBo.getCreateByIds()), "fi.create_by", flowInstanceBo.getCreateByIds()); |
| | | queryWrapper.eq("fi.del_flag", "0"); |
| | | queryWrapper.orderByDesc("fi.create_time"); |
| | | return queryWrapper; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ä¸å¡idæ¥è¯¢æµç¨å®ä¾ |
| | | * |
| | | * @param businessId ä¸å¡id |
| | | */ |
| | | @Override |
| | | public FlowInstance selectInstByBusinessId(String businessId) { |
| | | return flowInstanceMapper.selectOne(new LambdaQueryWrapper<FlowInstance>().eq(FlowInstance::getBusinessId, businessId)); |
| | | } |
| | | |
| | | /** |
| | | * æç
§å®ä¾idæ¥è¯¢æµç¨å®ä¾ |
| | | * |
| | | * @param instanceId å®ä¾id |
| | | */ |
| | | @Override |
| | | public FlowInstance selectInstById(Long instanceId) { |
| | | return flowInstanceMapper.selectById(instanceId); |
| | | } |
| | | |
| | | /** |
| | | * æç
§å®ä¾idæ¥è¯¢æµç¨å®ä¾ |
| | | * |
| | | * @param instanceIds å®ä¾id |
| | | */ |
| | | @Override |
| | | public List<FlowInstance> selectInstListByIdList(List<Long> instanceIds) { |
| | | return flowInstanceMapper.selectByIds(instanceIds); |
| | | } |
| | | |
| | | /** |
| | | * æç
§ä¸å¡idå 餿µç¨å®ä¾ |
| | | * |
| | | * @param businessIds ä¸å¡id |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean deleteByBusinessIds(List<Long> businessIds) { |
| | | List<FlowInstance> flowInstances = flowInstanceMapper.selectList(new LambdaQueryWrapper<FlowInstance>().in(FlowInstance::getBusinessId, businessIds)); |
| | | if (CollUtil.isEmpty(flowInstances)) { |
| | | log.warn("æªæ¾å°å¯¹åºçæµç¨å®ä¾ä¿¡æ¯ï¼æ æ³æ§è¡å 餿ä½ã"); |
| | | return false; |
| | | } |
| | | return insService.remove(StreamUtils.toList(flowInstances, FlowInstance::getId)); |
| | | } |
| | | |
| | | /** |
| | | * æç
§å®ä¾idå 餿µç¨å®ä¾ |
| | | * |
| | | * @param instanceIds å®ä¾id |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean deleteByInstanceIds(List<Long> instanceIds) { |
| | | // è·åå®ä¾ä¿¡æ¯ |
| | | List<Instance> instances = insService.getByIds(instanceIds); |
| | | if (CollUtil.isEmpty(instances)) { |
| | | log.warn("æªæ¾å°å¯¹åºçæµç¨å®ä¾ä¿¡æ¯ï¼æ æ³æ§è¡å 餿ä½ã"); |
| | | return false; |
| | | } |
| | | // è·åå®ä¹ä¿¡æ¯ |
| | | Map<Long, Definition> definitionMap = defService.getByIds( |
| | | StreamUtils.toList(instances, Instance::getDefinitionId) |
| | | ).stream().collect(Collectors.toMap(Definition::getId, definition -> definition)); |
| | | |
| | | // éä¸è§¦åå é¤äºä»¶ |
| | | instances.forEach(instance -> { |
| | | Definition definition = definitionMap.get(instance.getDefinitionId()); |
| | | if (ObjectUtil.isNull(definition)) { |
| | | log.warn("å®ä¾ ID: {} 对åºçæµç¨å®ä¹ä¿¡æ¯æªæ¾å°ï¼è·³è¿å é¤äºä»¶è§¦åã", instance.getId()); |
| | | return; |
| | | } |
| | | flowProcessEventHandler.processDeleteHandler(definition.getFlowCode(), instance.getBusinessId()); |
| | | }); |
| | | |
| | | // å é¤å®ä¾ |
| | | return insService.remove(instanceIds); |
| | | } |
| | | |
| | | /** |
| | | * æ¤éæµç¨ |
| | | * |
| | | * @param bo åæ° |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean cancelProcessApply(FlowCancelBo bo) { |
| | | try { |
| | | Instance instance = selectInstByBusinessId(bo.getBusinessId()); |
| | | if (instance == null) { |
| | | throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE); |
| | | } |
| | | Definition definition = defService.getById(instance.getDefinitionId()); |
| | | if (definition == null) { |
| | | throw new ServiceException(ExceptionCons.NOT_FOUNT_DEF); |
| | | } |
| | | String message = bo.getMessage(); |
| | | BusinessStatusEnum.checkCancelStatus(instance.getFlowStatus()); |
| | | String applyNodeCode = WorkflowUtils.applyNodeCode(definition.getId()); |
| | | //æ¤é |
| | | WorkflowUtils.backTask(message, instance.getId(), applyNodeCode, BusinessStatusEnum.CANCEL.getStatus(), BusinessStatusEnum.CANCEL.getStatus()); |
| | | //夿æç¾èç¹æ¯å¦æå¤ä¸ªï¼åªä¿çä¸ä¸ª |
| | | List<Task> currentTaskList = taskService.list(FlowFactory.newTask().setInstanceId(instance.getId())); |
| | | if (CollUtil.isNotEmpty(currentTaskList)) { |
| | | if (currentTaskList.size() > 1) { |
| | | currentTaskList.remove(0); |
| | | WorkflowUtils.deleteRunTask(StreamUtils.toList(currentTaskList, Task::getId)); |
| | | } |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | log.error("æ¤é失败: {}", e.getMessage(), e); |
| | | throw new ServiceException(e.getMessage()); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * è·åå½åç»é人åèµ·çæµç¨å®ä¾ |
| | | * |
| | | * @param instanceBo æµç¨å®ä¾ |
| | | * @param pageQuery å页 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<FlowInstanceVo> selectCurrentInstanceList(FlowInstanceBo instanceBo, PageQuery pageQuery) { |
| | | QueryWrapper<FlowInstanceBo> queryWrapper = buildQueryWrapper(instanceBo); |
| | | queryWrapper.eq("fi.create_by", LoginHelper.getUserIdStr()); |
| | | Page<FlowInstanceVo> page = flwInstanceMapper.selectInstanceList(pageQuery.build(), queryWrapper); |
| | | return TableDataInfo.build(page); |
| | | } |
| | | |
| | | /** |
| | | * è·åæµç¨å¾,æµç¨è®°å½ |
| | | * |
| | | * @param businessId ä¸å¡id |
| | | */ |
| | | @Override |
| | | public Map<String, Object> flowImage(String businessId) { |
| | | Map<String, Object> map = new HashMap<>(16); |
| | | FlowInstance flowInstance = this.selectInstByBusinessId(businessId); |
| | | if (flowInstance == null) { |
| | | throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE); |
| | | } |
| | | //è¿è¡ä¸çä»»å¡ |
| | | List<FlowHisTaskVo> list = new ArrayList<>(); |
| | | List<FlowTask> flowTaskList = flwTaskService.selectByInstId(flowInstance.getId()); |
| | | if (CollUtil.isNotEmpty(flowTaskList)) { |
| | | List<FlowHisTaskVo> flowHisTaskVos = BeanUtil.copyToList(flowTaskList, FlowHisTaskVo.class); |
| | | for (FlowHisTaskVo flowHisTaskVo : flowHisTaskVos) { |
| | | flowHisTaskVo.setFlowStatus(TaskStatusEnum.WAITING.getStatus()); |
| | | flowHisTaskVo.setUpdateTime(null); |
| | | flowHisTaskVo.setRunDuration(null); |
| | | List<UserDTO> allUser = flwTaskService.currentTaskAllUser(flowHisTaskVo.getId()); |
| | | if (CollUtil.isNotEmpty(allUser)) { |
| | | String join = StreamUtils.join(allUser, e -> String.valueOf(e.getUserId())); |
| | | flowHisTaskVo.setApprover(join); |
| | | } |
| | | if (BusinessStatusEnum.isDraftOrCancelOrBack(flowInstance.getFlowStatus())) { |
| | | flowHisTaskVo.setApprover(LoginHelper.getUserIdStr()); |
| | | flowHisTaskVo.setApproveName(LoginHelper.getLoginUser().getNickname()); |
| | | } |
| | | } |
| | | list.addAll(flowHisTaskVos); |
| | | } |
| | | //åå²ä»»å¡ |
| | | LambdaQueryWrapper<FlowHisTask> wrapper = Wrappers.lambdaQuery(); |
| | | wrapper.eq(FlowHisTask::getInstanceId, flowInstance.getId()); |
| | | wrapper.eq(FlowHisTask::getNodeType, NodeType.BETWEEN.getKey()); |
| | | wrapper.orderByDesc(FlowHisTask::getCreateTime).orderByDesc(FlowHisTask::getUpdateTime); |
| | | List<FlowHisTask> flowHisTasks = flowHisTaskMapper.selectList(wrapper); |
| | | if (CollUtil.isNotEmpty(flowHisTasks)) { |
| | | list.addAll(BeanUtil.copyToList(flowHisTasks, FlowHisTaskVo.class)); |
| | | } |
| | | |
| | | map.put("list", list); |
| | | try { |
| | | String flowChart = defService.flowChart(flowInstance.getId()); |
| | | map.put("image", flowChart); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * æç
§å®ä¾idæ´æ°ç¶æ |
| | | * |
| | | * @param instanceId å®ä¾id |
| | | * @param status ç¶æ |
| | | */ |
| | | @Override |
| | | public void updateStatus(Long instanceId, String status) { |
| | | LambdaUpdateWrapper<FlowInstance> wrapper = new LambdaUpdateWrapper<>(); |
| | | wrapper.set(FlowInstance::getFlowStatus, status); |
| | | wrapper.eq(FlowInstance::getId, instanceId); |
| | | flowInstanceMapper.update(wrapper); |
| | | } |
| | | |
| | | /** |
| | | * è·åæµç¨åé |
| | | * |
| | | * @param instanceId å®ä¾id |
| | | */ |
| | | @Override |
| | | public Map<String, Object> instanceVariable(String instanceId) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | FlowInstance flowInstance = flowInstanceMapper.selectById(instanceId); |
| | | Map<String, Object> variableMap = flowInstance.getVariableMap(); |
| | | List<FlowVariableVo> list = new ArrayList<>(); |
| | | if (CollUtil.isNotEmpty(variableMap)) { |
| | | for (Map.Entry<String, Object> entry : variableMap.entrySet()) { |
| | | FlowVariableVo flowVariableVo = new FlowVariableVo(); |
| | | flowVariableVo.setKey(entry.getKey()); |
| | | flowVariableVo.setValue(entry.getValue().toString()); |
| | | list.add(flowVariableVo); |
| | | } |
| | | } |
| | | map.put("variableList", list); |
| | | map.put("variable", flowInstance.getVariable()); |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 设置æµç¨åé |
| | | * |
| | | * @param instanceId å®ä¾id |
| | | * @param variable æµç¨åé |
| | | */ |
| | | @Override |
| | | public void setVariable(Long instanceId, Map<String, Object> variable) { |
| | | Instance instance = insService.getById(instanceId); |
| | | if (instance != null) { |
| | | taskService.mergeVariable(instance, variable); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æä»»å¡idæ¥è¯¢å®ä¾ |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | */ |
| | | @Override |
| | | public FlowInstance selectByTaskId(Long taskId) { |
| | | Task task = taskService.getById(taskId); |
| | | if (task == null) { |
| | | FlowHisTask flowHisTask = flwTaskService.selectHisTaskById(taskId); |
| | | if (flowHisTask != null) { |
| | | return this.selectInstById(flowHisTask.getInstanceId()); |
| | | } |
| | | } else { |
| | | return this.selectInstById(task.getInstanceId()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * æä»»å¡idæ¥è¯¢å®ä¾ |
| | | * |
| | | * @param taskIdList ä»»å¡id |
| | | */ |
| | | @Override |
| | | public List<FlowInstance> selectByTaskIdList(List<Long> taskIdList) { |
| | | if (CollUtil.isEmpty(taskIdList)) { |
| | | return Collections.emptyList(); |
| | | } |
| | | Set<Long> instanceIds = new HashSet<>(); |
| | | List<FlowTask> flowTaskList = flwTaskService.selectByIdList(taskIdList); |
| | | for (FlowTask flowTask : flowTaskList) { |
| | | instanceIds.add(flowTask.getInstanceId()); |
| | | } |
| | | List<FlowHisTask> flowHisTaskList = flwTaskService.selectHisTaskByIdList(taskIdList); |
| | | for (FlowHisTask flowHisTask : flowHisTaskList) { |
| | | instanceIds.add(flowHisTask.getInstanceId()); |
| | | } |
| | | if (!instanceIds.isEmpty()) { |
| | | return this.selectInstListByIdList(new ArrayList<>(instanceIds)); |
| | | } |
| | | return Collections.emptyList(); |
| | | } |
| | | |
| | | /** |
| | | * ä½åºæµç¨ |
| | | * |
| | | * @param bo åæ° |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean processInvalid(FlowInvalidBo bo) { |
| | | try { |
| | | Instance instance = insService.getById(bo.getId()); |
| | | if (instance != null) { |
| | | BusinessStatusEnum.checkInvalidStatus(instance.getFlowStatus()); |
| | | } |
| | | List<FlowTask> flowTaskList = flwTaskService.selectByInstId(bo.getId()); |
| | | for (FlowTask flowTask : flowTaskList) { |
| | | FlowParams flowParams = new FlowParams(); |
| | | flowParams.message(bo.getComment()); |
| | | flowParams.flowStatus(BusinessStatusEnum.INVALID.getStatus()) |
| | | .hisStatus(TaskStatusEnum.INVALID.getStatus()); |
| | | flowParams.ignore(true); |
| | | taskService.termination(flowTask.getId(), flowParams); |
| | | } |
| | | return true; |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage(), e); |
| | | throw new ServiceException(e.getMessage()); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.service.impl; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.domain.dto.DeptDTO; |
| | | import org.dromara.common.core.domain.dto.TaskAssigneeDTO; |
| | | import org.dromara.common.core.domain.dto.UserDTO; |
| | | import org.dromara.common.core.domain.model.TaskAssigneeBody; |
| | | import org.dromara.common.core.enums.FormatsType; |
| | | import org.dromara.common.core.exception.ServiceException; |
| | | import org.dromara.common.core.service.DeptService; |
| | | import org.dromara.common.core.service.TaskAssigneeService; |
| | | import org.dromara.common.core.service.UserService; |
| | | import org.dromara.common.core.utils.DateUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.warm.flow.ui.dto.HandlerFunDto; |
| | | import org.dromara.warm.flow.ui.dto.HandlerQuery; |
| | | import org.dromara.warm.flow.ui.dto.TreeFunDto; |
| | | import org.dromara.warm.flow.ui.service.HandlerSelectService; |
| | | import org.dromara.warm.flow.ui.vo.HandlerSelectVo; |
| | | import org.dromara.workflow.common.enums.TaskAssigneeEnum; |
| | | import org.dromara.workflow.service.IFlwTaskAssigneeService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Optional; |
| | | |
| | | /** |
| | | * æµç¨è®¾è®¡å¨-è·ååç人æé设置å表 |
| | | * |
| | | * @author AprilWind |
| | | */ |
| | | @Slf4j |
| | | @RequiredArgsConstructor |
| | | @Service |
| | | public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, HandlerSelectService { |
| | | |
| | | private static final String DEFAULT_GROUP_NAME = "é»è®¤åç»"; |
| | | private final TaskAssigneeService taskAssigneeService; |
| | | private final UserService userService; |
| | | private final DeptService deptService; |
| | | |
| | | /** |
| | | * è·ååç人æé设置å表tabsé¡µç¾ |
| | | * |
| | | * @return tabsé¡µç¾ |
| | | */ |
| | | @Override |
| | | public List<String> getHandlerType() { |
| | | return TaskAssigneeEnum.getAssigneeTypeList(); |
| | | } |
| | | |
| | | /** |
| | | * è·ååçå表, åæ¶æå»ºå·¦ä¾§é¨é¨æ ç¶ç»æ |
| | | * |
| | | * @param query æ¥è¯¢æ¡ä»¶ |
| | | * @return HandlerSelectVo |
| | | */ |
| | | @Override |
| | | public HandlerSelectVo getHandlerSelect(HandlerQuery query) { |
| | | // è·åä»»å¡åçç±»å |
| | | TaskAssigneeEnum type = TaskAssigneeEnum.fromDesc(query.getHandlerType()); |
| | | // è½¬æ¢æ¥è¯¢æ¡ä»¶ä¸º TaskAssigneeBody |
| | | TaskAssigneeBody taskQuery = BeanUtil.toBean(query, TaskAssigneeBody.class); |
| | | |
| | | // ç»ä¸æ¥è¯¢å¹¶æå»ºä¸å¡æ°æ® |
| | | TaskAssigneeDTO dto = fetchTaskAssigneeData(type, taskQuery); |
| | | List<DeptDTO> depts = fetchDeptData(type); |
| | | |
| | | return getHandlerSelectVo(buildHandlerData(dto, type), buildDeptTree(depts)); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ä»»å¡åçç±»åæ¥è¯¢å¯¹åºçæ°æ® |
| | | */ |
| | | private TaskAssigneeDTO fetchTaskAssigneeData(TaskAssigneeEnum type, TaskAssigneeBody taskQuery) { |
| | | return switch (type) { |
| | | case USER -> taskAssigneeService.selectUsersByTaskAssigneeList(taskQuery); |
| | | case ROLE -> taskAssigneeService.selectRolesByTaskAssigneeList(taskQuery); |
| | | case DEPT -> taskAssigneeService.selectDeptsByTaskAssigneeList(taskQuery); |
| | | case POST -> taskAssigneeService.selectPostsByTaskAssigneeList(taskQuery); |
| | | default -> throw new ServiceException("Unsupported handler type"); |
| | | }; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ä»»å¡åçç±»åè·åé¨é¨æ°æ® |
| | | */ |
| | | private List<DeptDTO> fetchDeptData(TaskAssigneeEnum type) { |
| | | if (type == TaskAssigneeEnum.USER || type == TaskAssigneeEnum.DEPT || type == TaskAssigneeEnum.POST) { |
| | | return deptService.selectDeptsByList(); |
| | | } |
| | | return new ArrayList<>(); |
| | | } |
| | | |
| | | /** |
| | | * æå»ºé¨é¨æ ç¶ç»æ |
| | | */ |
| | | private TreeFunDto<DeptDTO> buildDeptTree(List<DeptDTO> depts) { |
| | | return new TreeFunDto<>(depts) |
| | | .setId(dept -> String.valueOf(dept.getDeptId())) |
| | | .setName(DeptDTO::getDeptName) |
| | | .setParentId(dept -> String.valueOf(dept.getParentId())); |
| | | } |
| | | |
| | | /** |
| | | * æå»ºä»»å¡åçäººæ°æ® |
| | | */ |
| | | private HandlerFunDto<TaskAssigneeDTO.TaskHandler> buildHandlerData(TaskAssigneeDTO dto, TaskAssigneeEnum type) { |
| | | return new HandlerFunDto<>(dto.getList(), dto.getTotal()) |
| | | .setStorageId(assignee -> type.getCode() + assignee.getStorageId()) |
| | | .setHandlerCode(assignee -> StringUtils.blankToDefault(assignee.getHandlerCode(), "æ ")) |
| | | .setHandlerName(assignee -> StringUtils.blankToDefault(assignee.getHandlerName(), "æ ")) |
| | | .setGroupName(assignee -> StringUtils.defaultIfBlank( |
| | | Optional.ofNullable(assignee.getGroupName()) |
| | | .map(deptService::selectDeptNameByIds) |
| | | .orElse(DEFAULT_GROUP_NAME), DEFAULT_GROUP_NAME)) |
| | | .setCreateTime(assignee -> DateUtils.parseDateToStr(FormatsType.YYYY_MM_DD_HH_MM_SS, assignee.getCreateTime())); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®å卿 è¯ç¬¦ï¼storageIdï¼è§£æåé
ç±»ååIDï¼å¹¶è·å对åºçç¨æ·å表 |
| | | * |
| | | * @param storageId å
å«åé
ç±»ååIDçå符串ï¼ä¾å¦ "user:123" æ "role:456"ï¼ |
| | | * @return ä¸åé
ç±»ååIDå¹é
çç¨æ·å表ï¼å¦ææ ¼å¼æ æåè¿å空å表 |
| | | */ |
| | | @Override |
| | | public List<UserDTO> fetchUsersByStorageId(String storageId) { |
| | | String[] parts = storageId.split(StrUtil.COLON, 2); |
| | | if (parts.length < 2) { |
| | | return getUsersByType(TaskAssigneeEnum.USER, List.of(Long.valueOf(parts[0]))); |
| | | } |
| | | return getUsersByType(TaskAssigneeEnum.fromCode(parts[0] + StrUtil.COLON), List.of(Long.valueOf(parts[1]))); |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®æå®çä»»å¡åé
ç±»åï¼TaskAssigneeEnumï¼å ID å表ï¼è·å对åºçç¨æ·ä¿¡æ¯å表 |
| | | * |
| | | * @param type ä»»å¡åé
ç±»åï¼è¡¨ç¤ºç¨æ·ãè§è²ãé¨é¨æå
¶ä»ï¼TaskAssigneeEnum æä¸¾å¼ï¼ |
| | | * @param ids 䏿å®åé
ç±»åå
³èç ID å表ï¼ä¾å¦ç¨æ·IDãè§è²IDãé¨é¨IDçï¼ |
| | | * @return è¿åå
å«ç¨æ·ä¿¡æ¯çå表ãå¦æç±»åä¸ºç¨æ·ï¼USERï¼ï¼åéè¿ç¨æ·IDå表æ¥è¯¢ï¼ |
| | | * å¦æç±»å为è§è²ï¼ROLEï¼ï¼åéè¿è§è²IDå表æ¥è¯¢ï¼ |
| | | * å¦æç±»å为é¨é¨ï¼DEPTï¼ï¼åéè¿é¨é¨IDå表æ¥è¯¢ï¼ |
| | | * å¦æç±»å为å²ä½ï¼POSTï¼ææ æ³è¯å«çç±»åï¼åè¿å空å表 |
| | | */ |
| | | private List<UserDTO> getUsersByType(TaskAssigneeEnum type, List<Long> ids) { |
| | | return switch (type) { |
| | | case USER -> userService.selectListByIds(ids); |
| | | case ROLE -> userService.selectUsersByRoleIds(ids); |
| | | case DEPT -> userService.selectUsersByDeptIds(ids); |
| | | case POST -> userService.selectUsersByPostIds(ids); |
| | | }; |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.dromara.workflow.service.impl; |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.convert.Convert; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.domain.dto.UserDTO; |
| | | import org.dromara.common.core.enums.BusinessStatusEnum; |
| | | import org.dromara.common.core.exception.ServiceException; |
| | | import org.dromara.common.core.service.UserService; |
| | | import org.dromara.common.core.utils.SpringUtils; |
| | | import org.dromara.common.core.utils.StreamUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.core.utils.ValidatorUtils; |
| | | import org.dromara.common.core.validate.AddGroup; |
| | | import org.dromara.common.core.validate.EditGroup; |
| | | 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.warm.flow.core.dto.FlowParams; |
| | | import org.dromara.warm.flow.core.entity.*; |
| | | import org.dromara.warm.flow.core.enums.NodeType; |
| | | import org.dromara.warm.flow.core.enums.SkipType; |
| | | import org.dromara.warm.flow.core.service.*; |
| | | import org.dromara.warm.flow.orm.entity.*; |
| | | import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; |
| | | import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper; |
| | | import org.dromara.warm.flow.orm.mapper.FlowNodeMapper; |
| | | import org.dromara.warm.flow.orm.mapper.FlowTaskMapper; |
| | | import org.dromara.workflow.common.enums.TaskAssigneeType; |
| | | import org.dromara.workflow.common.enums.TaskStatusEnum; |
| | | import org.dromara.workflow.domain.bo.*; |
| | | import org.dromara.workflow.domain.vo.FlowHisTaskVo; |
| | | import org.dromara.workflow.domain.vo.FlowTaskVo; |
| | | import org.dromara.workflow.handler.FlowProcessEventHandler; |
| | | import org.dromara.workflow.handler.WorkflowPermissionHandler; |
| | | import org.dromara.workflow.mapper.FlwCategoryMapper; |
| | | import org.dromara.workflow.mapper.FlwTaskMapper; |
| | | import org.dromara.workflow.service.IFlwTaskService; |
| | | import org.dromara.workflow.utils.WorkflowUtils; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static org.dromara.workflow.common.constant.FlowConstant.*; |
| | | |
| | | /** |
| | | * ä»»å¡ æå¡å±å®ç° |
| | | * |
| | | * @author may |
| | | */ |
| | | @Slf4j |
| | | @RequiredArgsConstructor |
| | | @Service |
| | | public class FlwTaskServiceImpl implements IFlwTaskService { |
| | | |
| | | private final TaskService taskService; |
| | | private final InsService insService; |
| | | private final FlowInstanceMapper flowInstanceMapper; |
| | | private final FlwTaskMapper flwTaskMapper; |
| | | private final UserService userService; |
| | | private final FlowTaskMapper flowTaskMapper; |
| | | private final FlowHisTaskMapper flowHisTaskMapper; |
| | | private final FlowProcessEventHandler flowProcessEventHandler; |
| | | private final DefService defService; |
| | | private final HisTaskService hisTaskService; |
| | | private final IdentifierGenerator identifierGenerator; |
| | | private final NodeService nodeService; |
| | | private final FlowNodeMapper flowNodeMapper; |
| | | private final FlwCategoryMapper flwCategoryMapper; |
| | | |
| | | /** |
| | | * å¯å¨ä»»å¡ |
| | | * |
| | | * @param startProcessBo å¯å¨æµç¨åæ° |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Map<String, Object> startWorkFlow(StartProcessBo startProcessBo) { |
| | | String businessId = startProcessBo.getBusinessId(); |
| | | if (StringUtils.isBlank(businessId)) { |
| | | throw new ServiceException("å¯å¨å·¥ä½æµæ¶å¿
é¡»å
å«ä¸å¡ID"); |
| | | } |
| | | // å¯å¨æµç¨å®ä¾ï¼æäº¤ç³è¯·ï¼ |
| | | Map<String, Object> variables = startProcessBo.getVariables(); |
| | | // æµç¨å起人 |
| | | variables.put(INITIATOR, LoginHelper.getUserIdStr()); |
| | | // ä¸å¡id |
| | | variables.put(BUSINESS_ID, businessId); |
| | | FlowInstance flowInstance = flowInstanceMapper.selectOne(new LambdaQueryWrapper<>(FlowInstance.class) |
| | | .eq(FlowInstance::getBusinessId, businessId)); |
| | | if (ObjectUtil.isNotNull(flowInstance)) { |
| | | BusinessStatusEnum.checkStartStatus(flowInstance.getFlowStatus()); |
| | | List<Task> taskList = taskService.list(new FlowTask().setInstanceId(flowInstance.getId())); |
| | | return Map.of(PROCESS_INSTANCE_ID, taskList.get(0).getInstanceId(), TASK_ID, taskList.get(0).getId()); |
| | | } |
| | | FlowParams flowParams = new FlowParams(); |
| | | flowParams.flowCode(startProcessBo.getFlowCode()); |
| | | flowParams.variable(startProcessBo.getVariables()); |
| | | flowParams.flowStatus(BusinessStatusEnum.DRAFT.getStatus()); |
| | | Instance instance; |
| | | try { |
| | | instance = insService.start(businessId, flowParams); |
| | | } catch (Exception e) { |
| | | throw new ServiceException(e.getMessage()); |
| | | } |
| | | // ç³è¯·äººæ§è¡æµç¨ |
| | | List<Task> taskList = taskService.list(new FlowTask().setInstanceId(instance.getId())); |
| | | if (taskList.size() > 1) { |
| | | throw new ServiceException("è¯·æ£æ¥æµç¨ç¬¬ä¸ä¸ªç¯èæ¯å¦ä¸ºç³è¯·äººï¼"); |
| | | } |
| | | return Map.of(PROCESS_INSTANCE_ID, instance.getId(), TASK_ID, taskList.get(0).getId()); |
| | | } |
| | | |
| | | /** |
| | | * åçä»»å¡ |
| | | * |
| | | * @param completeTaskBo åçä»»å¡åæ° |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean completeTask(CompleteTaskBo completeTaskBo) { |
| | | try { |
| | | // è·åä»»å¡IDå¹¶æ¥è¯¢å¯¹åºçæµç¨ä»»å¡åå®ä¾ä¿¡æ¯ |
| | | Long taskId = completeTaskBo.getTaskId(); |
| | | List<String> messageType = completeTaskBo.getMessageType(); |
| | | String notice = completeTaskBo.getNotice(); |
| | | // è·åæé人 |
| | | List<FlowCopyBo> flowCopyList = completeTaskBo.getFlowCopyList(); |
| | | FlowTask flowTask = flowTaskMapper.selectById(taskId); |
| | | Instance ins = insService.getById(flowTask.getInstanceId()); |
| | | // è·åæµç¨å®ä¹ä¿¡æ¯ |
| | | Definition definition = defService.getById(flowTask.getDefinitionId()); |
| | | // æ£æ¥æµç¨ç¶ææ¯å¦ä¸ºè稿ãå·²æ¤éæå·²éåç¶æï¼è¥æ¯åæ§è¡æµç¨æäº¤çå¬ |
| | | if (BusinessStatusEnum.isDraftOrCancelOrBack(ins.getFlowStatus())) { |
| | | flowProcessEventHandler.processHandler(definition.getFlowCode(), ins.getBusinessId(), ins.getFlowStatus(), true); |
| | | } |
| | | // æå»ºæµç¨åæ°ï¼å
æ¬åéã跳转类åãæ¶æ¯ãå¤ç人ãæéçä¿¡æ¯ |
| | | FlowParams flowParams = new FlowParams(); |
| | | flowParams.variable(completeTaskBo.getVariables()); |
| | | flowParams.skipType(SkipType.PASS.getKey()); |
| | | flowParams.message(completeTaskBo.getMessage()); |
| | | flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus()).hisStatus(TaskStatusEnum.PASS.getStatus()); |
| | | |
| | | flowParams.hisTaskExt(completeTaskBo.getFileId()); |
| | | // æ§è¡ä»»å¡è·³è½¬ï¼å¹¶æ ¹æ®è¿åçå¤ç人设置ä¸ä¸æ¥å¤ç人 |
| | | Instance instance = taskService.skip(taskId, flowParams); |
| | | this.setHandler(instance, flowTask, flowCopyList); |
| | | // æ¶æ¯éç¥ |
| | | WorkflowUtils.sendMessage(definition.getFlowName(), ins.getId(), messageType, notice); |
| | | return true; |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage(), e); |
| | | throw new ServiceException(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 设置åç人 |
| | | * |
| | | * @param instance å®ä¾ |
| | | * @param task (å½åä»»å¡)æªåççä»»å¡ |
| | | * @param flowCopyList æé人 |
| | | */ |
| | | private void setHandler(Instance instance, FlowTask task, List<FlowCopyBo> flowCopyList) { |
| | | if (ObjectUtil.isNull(instance)) { |
| | | return; |
| | | } |
| | | // æ·»å æé人 |
| | | this.setCopy(task, flowCopyList); |
| | | // æ ¹æ®æµç¨å®ä¾IDæ¥è¯¢ææå
³èçä»»å¡ |
| | | List<FlowTask> flowTasks = this.selectByInstId(instance.getId()); |
| | | List<User> userList = new ArrayList<>(); |
| | | // éåä»»å¡å表ï¼å¤çæ¯ä¸ªä»»å¡çåç人 |
| | | for (FlowTask flowTask : flowTasks) { |
| | | // è·åä¸å½åä»»å¡å
³èçç¨æ·å表 |
| | | List<User> associatedUsers = WorkflowUtils.getFlowUserService().getByAssociateds(Collections.singletonList(flowTask.getId())); |
| | | if (CollUtil.isNotEmpty(associatedUsers)) { |
| | | userList.addAll(WorkflowUtils.buildUser(associatedUsers, flowTask.getId())); |
| | | } |
| | | } |
| | | // æ¹éå é¤ç°æä»»å¡çåçäººè®°å½ |
| | | if (CollUtil.isNotEmpty(flowTasks)) { |
| | | WorkflowUtils.getFlowUserService().deleteByTaskIds(StreamUtils.toList(flowTasks, FlowTask::getId)); |
| | | } |
| | | // ç¡®ä¿è¦ä¿åç userList ä¸ä¸ºç©º |
| | | if (CollUtil.isNotEmpty(userList)) { |
| | | WorkflowUtils.getFlowUserService().saveBatch(userList); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ·»å æé人 |
| | | * |
| | | * @param task ä»»å¡ä¿¡æ¯ |
| | | * @param flowCopyList æé人 |
| | | */ |
| | | public void setCopy(FlowTask task, List<FlowCopyBo> flowCopyList) { |
| | | if (CollUtil.isEmpty(flowCopyList)) { |
| | | return; |
| | | } |
| | | // æ·»å æéäººè®°å½ |
| | | FlowHisTask flowHisTask = flowHisTaskMapper.selectList(new LambdaQueryWrapper<>(FlowHisTask.class).eq(FlowHisTask::getTaskId, task.getId())).get(0); |
| | | FlowNode flowNode = new FlowNode(); |
| | | flowNode.setNodeCode(flowHisTask.getTargetNodeCode()); |
| | | flowNode.setNodeName(flowHisTask.getTargetNodeName()); |
| | | //çææ°çä»»å¡id |
| | | long taskId = identifierGenerator.nextId(null).longValue(); |
| | | task.setId(taskId); |
| | | task.setNodeName("ãæéã" + task.getNodeName()); |
| | | Date updateTime = new Date(flowHisTask.getUpdateTime().getTime() - 1000); |
| | | FlowParams flowParams = FlowParams.build(); |
| | | flowParams.skipType(SkipType.NONE.getKey()); |
| | | flowParams.hisStatus(TaskStatusEnum.COPY.getStatus()); |
| | | flowParams.message("ãæéç»ã" + StreamUtils.join(flowCopyList, FlowCopyBo::getUserName)); |
| | | HisTask hisTask = hisTaskService.setSkipHisTask(task, flowNode, flowParams); |
| | | hisTask.setCreateTime(updateTime); |
| | | hisTask.setUpdateTime(updateTime); |
| | | hisTaskService.save(hisTask); |
| | | List<User> userList = flowCopyList.stream() |
| | | .map(flowCopy -> { |
| | | FlowUser flowUser = new FlowUser(); |
| | | flowUser.setType(TaskAssigneeType.COPY.getCode()); |
| | | flowUser.setProcessedBy(String.valueOf(flowCopy.getUserId())); |
| | | flowUser.setAssociated(taskId); |
| | | return flowUser; |
| | | }).collect(Collectors.toList()); |
| | | // æ¹éä¿åæé人å |
| | | WorkflowUtils.getFlowUserService().saveBatch(userList); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢å½åç¨æ·çå¾
åä»»å¡ |
| | | * |
| | | * @param flowTaskBo åæ° |
| | | * @param pageQuery å页 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<FlowTaskVo> pageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { |
| | | QueryWrapper<FlowTaskBo> queryWrapper = buildQueryWrapper(flowTaskBo); |
| | | queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); |
| | | queryWrapper.in("t.processed_by", SpringUtils.getBean(WorkflowPermissionHandler.class).permissions()); |
| | | queryWrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); |
| | | Page<FlowTaskVo> page = this.getFlowTaskVoPage(pageQuery, queryWrapper); |
| | | return TableDataInfo.build(page); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢å½åç¨æ·çå·²åä»»å¡ |
| | | * |
| | | * @param flowTaskBo åæ° |
| | | * @param pageQuery å页 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<FlowHisTaskVo> pageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { |
| | | QueryWrapper<FlowTaskBo> queryWrapper = buildQueryWrapper(flowTaskBo); |
| | | queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); |
| | | queryWrapper.in("t.approver", LoginHelper.getUserIdStr()); |
| | | queryWrapper.orderByDesc("t.create_time").orderByDesc("t.update_time"); |
| | | Page<FlowHisTaskVo> page = flwTaskMapper.getListFinishTask(pageQuery.build(), queryWrapper); |
| | | return TableDataInfo.build(page); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢å¾
åä»»å¡ |
| | | * |
| | | * @param flowTaskBo åæ° |
| | | * @param pageQuery å页 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<FlowTaskVo> pageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { |
| | | QueryWrapper<FlowTaskBo> queryWrapper = buildQueryWrapper(flowTaskBo); |
| | | queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); |
| | | Page<FlowTaskVo> page = getFlowTaskVoPage(pageQuery, queryWrapper); |
| | | return TableDataInfo.build(page); |
| | | } |
| | | |
| | | private Page<FlowTaskVo> getFlowTaskVoPage(PageQuery pageQuery, QueryWrapper<FlowTaskBo> queryWrapper) { |
| | | Page<FlowTaskVo> page = flwTaskMapper.getListRunTask(pageQuery.build(), queryWrapper); |
| | | List<FlowTaskVo> records = page.getRecords(); |
| | | if (CollUtil.isNotEmpty(records)) { |
| | | List<Long> taskIds = StreamUtils.toList(records, FlowTaskVo::getId); |
| | | Map<Long, List<UserDTO>> listMap = currentTaskAllUser(taskIds); |
| | | records.forEach(t -> { |
| | | List<UserDTO> userList = listMap.getOrDefault(t.getId(), Collections.emptyList()); |
| | | if (CollUtil.isNotEmpty(userList)) { |
| | | t.setAssigneeIds(StreamUtils.join(userList, e -> String.valueOf(e.getUserId()))); |
| | | t.setAssigneeNames(StreamUtils.join(userList, UserDTO::getNickName)); |
| | | } |
| | | }); |
| | | } |
| | | return page; |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢å·²åä»»å¡ |
| | | * |
| | | * @param flowTaskBo åæ° |
| | | * @param pageQuery å页 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<FlowHisTaskVo> pageByAllTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { |
| | | QueryWrapper<FlowTaskBo> queryWrapper = buildQueryWrapper(flowTaskBo); |
| | | Page<FlowHisTaskVo> page = flwTaskMapper.getListFinishTask(pageQuery.build(), queryWrapper); |
| | | return TableDataInfo.build(page); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢å½åç¨æ·çæé |
| | | * |
| | | * @param flowTaskBo åæ° |
| | | * @param pageQuery å页 |
| | | */ |
| | | @Override |
| | | public TableDataInfo<FlowTaskVo> pageByTaskCopy(FlowTaskBo flowTaskBo, PageQuery pageQuery) { |
| | | QueryWrapper<FlowTaskBo> queryWrapper = buildQueryWrapper(flowTaskBo); |
| | | queryWrapper.in("t.processed_by", LoginHelper.getUserIdStr()); |
| | | Page<FlowTaskVo> page = flwTaskMapper.getTaskCopyByPage(pageQuery.build(), queryWrapper); |
| | | return TableDataInfo.build(page); |
| | | } |
| | | |
| | | private QueryWrapper<FlowTaskBo> buildQueryWrapper(FlowTaskBo flowTaskBo) { |
| | | QueryWrapper<FlowTaskBo> wrapper = Wrappers.query(); |
| | | wrapper.like(StringUtils.isNotBlank(flowTaskBo.getNodeName()), "t.node_name", flowTaskBo.getNodeName()); |
| | | wrapper.like(StringUtils.isNotBlank(flowTaskBo.getFlowName()), "t.flow_name", flowTaskBo.getFlowName()); |
| | | wrapper.like(StringUtils.isNotBlank(flowTaskBo.getFlowCode()), "t.flow_code", flowTaskBo.getFlowCode()); |
| | | wrapper.in(CollUtil.isNotEmpty(flowTaskBo.getCreateByIds()), "t.create_by", flowTaskBo.getCreateByIds()); |
| | | if (StringUtils.isNotBlank(flowTaskBo.getCategory())) { |
| | | List<Long> categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowTaskBo.getCategory())); |
| | | wrapper.in("t.category", categoryIds); |
| | | } |
| | | wrapper.orderByDesc("t.create_time"); |
| | | return wrapper; |
| | | } |
| | | |
| | | /** |
| | | * 驳åä»»å¡ |
| | | * |
| | | * @param bo åæ° |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean backProcess(BackProcessBo bo) { |
| | | try { |
| | | Long taskId = bo.getTaskId(); |
| | | String notice = bo.getNotice(); |
| | | List<String> messageType = bo.getMessageType(); |
| | | String message = bo.getMessage(); |
| | | FlowTask task = flowTaskMapper.selectById(taskId); |
| | | if (ObjectUtil.isNull(task)) { |
| | | throw new ServiceException("ä»»å¡ä¸åå¨ï¼"); |
| | | } |
| | | Instance inst = insService.getById(task.getInstanceId()); |
| | | BusinessStatusEnum.checkBackStatus(inst.getFlowStatus()); |
| | | Long definitionId = task.getDefinitionId(); |
| | | Definition definition = defService.getById(definitionId); |
| | | String applyNodeCode = WorkflowUtils.applyNodeCode(definitionId); |
| | | FlowParams flowParams = FlowParams.build(); |
| | | flowParams.nodeCode(bo.getNodeCode()); |
| | | flowParams.message(message); |
| | | flowParams.skipType(SkipType.REJECT.getKey()); |
| | | flowParams.flowStatus(applyNodeCode.equals(bo.getNodeCode()) ? TaskStatusEnum.BACK.getStatus() : TaskStatusEnum.WAITING.getStatus()) |
| | | .hisStatus(TaskStatusEnum.BACK.getStatus()); |
| | | taskService.skip(task.getId(), flowParams); |
| | | |
| | | Instance instance = insService.getById(inst.getId()); |
| | | this.setHandler(instance, task, null); |
| | | // æ¶æ¯éç¥ |
| | | WorkflowUtils.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice); |
| | | return true; |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage(), e); |
| | | throw new ServiceException(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * è·åå¯é©³åçåç½®èç¹ |
| | | * |
| | | * @param definitionId æµç¨å®ä¹id |
| | | * @param nowNodeCode å½åèç¹ |
| | | */ |
| | | @Override |
| | | public List<Node> getBackTaskNode(Long definitionId, String nowNodeCode) { |
| | | List<Node> nodeCodes = nodeService.getByNodeCodes(Collections.singletonList(nowNodeCode), definitionId); |
| | | if (!CollUtil.isNotEmpty(nodeCodes)) { |
| | | return nodeCodes; |
| | | } |
| | | //夿æ¯å¦é
ç½®äºåºå®é©³åèç¹ |
| | | Node node = nodeCodes.get(0); |
| | | if (StringUtils.isNotBlank(node.getAnyNodeSkip())) { |
| | | return nodeService.getByNodeCodes(Collections.singletonList(node.getAnyNodeSkip()), definitionId); |
| | | } |
| | | //è·åå¯é©³åçåç½®èç¹ |
| | | List<Node> nodes = nodeService.previousNodeList(definitionId, nowNodeCode); |
| | | if (CollUtil.isNotEmpty(nodes)) { |
| | | return StreamUtils.filter(nodes, e -> NodeType.BETWEEN.getKey().equals(e.getNodeType())); |
| | | } |
| | | return nodes; |
| | | } |
| | | |
| | | /** |
| | | * ç»æ¢ä»»å¡ |
| | | * |
| | | * @param bo åæ° |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean terminationTask(FlowTerminationBo bo) { |
| | | try { |
| | | Long taskId = bo.getTaskId(); |
| | | Task task = taskService.getById(taskId); |
| | | if (task == null) { |
| | | throw new ServiceException("ä»»å¡ä¸åå¨ï¼"); |
| | | } |
| | | Instance instance = insService.getById(task.getInstanceId()); |
| | | if (ObjectUtil.isNotNull(instance)) { |
| | | BusinessStatusEnum.checkInvalidStatus(instance.getFlowStatus()); |
| | | } |
| | | FlowParams flowParams = new FlowParams(); |
| | | flowParams.message(bo.getComment()); |
| | | flowParams.flowStatus(BusinessStatusEnum.TERMINATION.getStatus()) |
| | | .hisStatus(TaskStatusEnum.TERMINATION.getStatus()); |
| | | taskService.termination(taskId, flowParams); |
| | | return true; |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage(), e); |
| | | throw new ServiceException(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æç
§ä»»å¡idæ¥è¯¢ä»»å¡ |
| | | * |
| | | * @param taskIdList ä»»å¡id |
| | | */ |
| | | @Override |
| | | public List<FlowTask> selectByIdList(List<Long> taskIdList) { |
| | | return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class) |
| | | .in(FlowTask::getId, taskIdList)); |
| | | } |
| | | |
| | | /** |
| | | * æç
§ä»»å¡idæ¥è¯¢ä»»å¡ |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | */ |
| | | @Override |
| | | public FlowTaskVo selectById(Long taskId) { |
| | | Task task = taskService.getById(taskId); |
| | | if (ObjectUtil.isNull(task)) { |
| | | return null; |
| | | } |
| | | FlowTaskVo flowTaskVo = BeanUtil.toBean(task, FlowTaskVo.class); |
| | | Instance instance = insService.getById(task.getInstanceId()); |
| | | Definition definition = defService.getById(task.getDefinitionId()); |
| | | flowTaskVo.setFlowStatus(instance.getFlowStatus()); |
| | | flowTaskVo.setVersion(definition.getVersion()); |
| | | flowTaskVo.setFlowCode(definition.getFlowCode()); |
| | | flowTaskVo.setFlowName(definition.getFlowName()); |
| | | flowTaskVo.setBusinessId(instance.getBusinessId()); |
| | | List<Node> nodeList = nodeService.getByNodeCodes(Collections.singletonList(flowTaskVo.getNodeCode()), instance.getDefinitionId()); |
| | | if (CollUtil.isNotEmpty(nodeList)) { |
| | | Node node = nodeList.get(0); |
| | | flowTaskVo.setNodeRatio(node.getNodeRatio()); |
| | | } |
| | | return flowTaskVo; |
| | | } |
| | | |
| | | /** |
| | | * æç
§ä»»å¡idæ¥è¯¢ä»»å¡ |
| | | * |
| | | * @param taskIdList ä»»å¡id |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public List<FlowHisTask> selectHisTaskByIdList(List<Long> taskIdList) { |
| | | return flowHisTaskMapper.selectList(new LambdaQueryWrapper<>(FlowHisTask.class) |
| | | .in(FlowHisTask::getId, taskIdList)); |
| | | } |
| | | |
| | | /** |
| | | * æç
§ä»»å¡idæ¥è¯¢ä»»å¡ |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public FlowHisTask selectHisTaskById(Long taskId) { |
| | | return flowHisTaskMapper.selectOne(new LambdaQueryWrapper<>(FlowHisTask.class) |
| | | .eq(FlowHisTask::getId, taskId)); |
| | | } |
| | | |
| | | /** |
| | | * æç
§å®ä¾idæ¥è¯¢ä»»å¡ |
| | | * |
| | | * @param instanceIdList æµç¨å®ä¾id |
| | | */ |
| | | @Override |
| | | public List<FlowTask> selectByInstIdList(List<Long> instanceIdList) { |
| | | return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class) |
| | | .in(FlowTask::getInstanceId, instanceIdList)); |
| | | } |
| | | |
| | | /** |
| | | * æç
§å®ä¾idæ¥è¯¢ä»»å¡ |
| | | * |
| | | * @param instanceId æµç¨å®ä¾id |
| | | */ |
| | | @Override |
| | | public List<FlowTask> selectByInstId(Long instanceId) { |
| | | return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class) |
| | | .eq(FlowTask::getInstanceId, instanceId)); |
| | | } |
| | | |
| | | /** |
| | | * ä»»å¡æä½ |
| | | * |
| | | * @param bo åæ° |
| | | * @param taskOperation æä½ç±»åï¼å§æ´¾ delegateTaskã转å transferTaskãå ç¾ addSignatureãåç¾ reductionSignature |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean taskOperation(TaskOperationBo bo, String taskOperation) { |
| | | FlowParams flowParams = new FlowParams(); |
| | | flowParams.message(bo.getMessage()); |
| | | if (LoginHelper.isSuperAdmin() || LoginHelper.isTenantAdmin()) { |
| | | flowParams.ignore(true); |
| | | } |
| | | |
| | | // æ ¹æ®æä½ç±»åæå»º FlowParams |
| | | switch (taskOperation) { |
| | | case DELEGATE_TASK, TRANSFER_TASK -> { |
| | | ValidatorUtils.validate(bo, AddGroup.class); |
| | | flowParams.addHandlers(Collections.singletonList(bo.getUserId())); |
| | | } |
| | | case ADD_SIGNATURE -> { |
| | | ValidatorUtils.validate(bo, EditGroup.class); |
| | | flowParams.addHandlers(bo.getUserIds()); |
| | | } |
| | | case REDUCTION_SIGNATURE -> { |
| | | ValidatorUtils.validate(bo, EditGroup.class); |
| | | flowParams.reductionHandlers(bo.getUserIds()); |
| | | } |
| | | default -> { |
| | | log.error("Invalid operation type:{} ", taskOperation); |
| | | throw new ServiceException("Invalid operation type " + taskOperation); |
| | | } |
| | | } |
| | | |
| | | Long taskId = bo.getTaskId(); |
| | | FlowTaskVo flowTaskVo = selectById(taskId); |
| | | if ("addSignature".equals(taskOperation) || "reductionSignature".equals(taskOperation)) { |
| | | if (flowTaskVo.getNodeRatio().compareTo(BigDecimal.ZERO) == 0) { |
| | | throw new ServiceException(flowTaskVo.getNodeName() + "䏿¯ä¼ç¾èç¹ï¼"); |
| | | } |
| | | } |
| | | // 设置任å¡ç¶æå¹¶æ§è¡å¯¹åºçä»»å¡æä½ |
| | | switch (taskOperation) { |
| | | //å§æ´¾ä»»å¡ |
| | | case DELEGATE_TASK -> { |
| | | flowParams.hisStatus(TaskStatusEnum.DEPUTE.getStatus()); |
| | | return taskService.depute(taskId, flowParams); |
| | | } |
| | | //转åä»»å¡ |
| | | case TRANSFER_TASK -> { |
| | | flowParams.hisStatus(TaskStatusEnum.TRANSFER.getStatus()); |
| | | return taskService.transfer(taskId, flowParams); |
| | | } |
| | | //å ç¾ï¼å¢å åç人 |
| | | case ADD_SIGNATURE -> { |
| | | flowParams.hisStatus(TaskStatusEnum.SIGN.getStatus()); |
| | | return taskService.addSignature(taskId, flowParams); |
| | | } |
| | | //åç¾ï¼åå°åç人 |
| | | case REDUCTION_SIGNATURE -> { |
| | | flowParams.hisStatus(TaskStatusEnum.SIGN_OFF.getStatus()); |
| | | return taskService.reductionSignature(taskId, flowParams); |
| | | } |
| | | default -> { |
| | | log.error("Invalid operation type:{} ", taskOperation); |
| | | throw new ServiceException("Invalid operation type " + taskOperation); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * ä¿®æ¹ä»»å¡åçäººï¼æ¤æ¹æ³å°ä¼æ¹éä¿®æ¹ææä»»å¡çåçäººï¼ |
| | | * |
| | | * @param taskIdList ä»»å¡id |
| | | * @param userId ç¨æ·id |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean updateAssignee(List<Long> taskIdList, String userId) { |
| | | if (CollUtil.isEmpty(taskIdList)) { |
| | | return false; |
| | | } |
| | | try { |
| | | List<FlowTask> flowTasks = this.selectByIdList(taskIdList); |
| | | // æ¹éå é¤ç°æä»»å¡çåçäººè®°å½ |
| | | if (CollUtil.isNotEmpty(flowTasks)) { |
| | | WorkflowUtils.getFlowUserService().deleteByTaskIds(StreamUtils.toList(flowTasks, FlowTask::getId)); |
| | | List<User> userList = flowTasks.stream() |
| | | .map(flowTask -> { |
| | | FlowUser flowUser = new FlowUser(); |
| | | flowUser.setType(TaskAssigneeType.APPROVER.getCode()); |
| | | flowUser.setProcessedBy(userId); |
| | | flowUser.setAssociated(flowTask.getId()); |
| | | return flowUser; |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | if (CollUtil.isNotEmpty(userList)) { |
| | | WorkflowUtils.getFlowUserService().saveBatch(userList); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage(), e); |
| | | throw new ServiceException(e.getMessage()); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * è·å任塿æåç人 |
| | | * |
| | | * @param taskIdList ä»»å¡id |
| | | */ |
| | | @Override |
| | | public Map<Long, List<UserDTO>> currentTaskAllUser(List<Long> taskIdList) { |
| | | Map<Long, List<UserDTO>> map = new HashMap<>(); |
| | | // è·åä¸å½åä»»å¡å
³èçç¨æ·å表 |
| | | List<User> associatedUsers = WorkflowUtils.getFlowUserService().getByAssociateds(taskIdList); |
| | | Map<Long, List<User>> listMap = StreamUtils.groupByKey(associatedUsers, User::getAssociated); |
| | | for (Map.Entry<Long, List<User>> entry : listMap.entrySet()) { |
| | | List<User> value = entry.getValue(); |
| | | if (CollUtil.isNotEmpty(value)) { |
| | | List<UserDTO> userDTOS = userService.selectListByIds(StreamUtils.toList(value, e -> Long.valueOf(e.getProcessedBy()))); |
| | | map.put(entry.getKey(), userDTOS); |
| | | } |
| | | } |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * è·åå½åä»»å¡çææåç人 |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | */ |
| | | @Override |
| | | public List<UserDTO> currentTaskAllUser(Long taskId) { |
| | | // è·åä¸å½åä»»å¡å
³èçç¨æ·å表 |
| | | List<User> userList = WorkflowUtils.getFlowUserService().getByAssociateds(Collections.singletonList(taskId)); |
| | | if (CollUtil.isEmpty(userList)) { |
| | | return Collections.emptyList(); |
| | | } |
| | | return userService.selectListByIds(StreamUtils.toList(userList, e -> Long.valueOf(e.getProcessedBy()))); |
| | | } |
| | | } |
| | |
| | | package org.dromara.workflow.service.impl; |
| | | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.dromara.common.core.domain.event.ProcessDeleteEvent; |
| | | import org.dromara.common.core.domain.event.ProcessEvent; |
| | | import org.dromara.common.core.domain.event.ProcessTaskEvent; |
| | | import org.dromara.common.core.enums.BusinessStatusEnum; |
| | | import org.dromara.common.core.service.WorkflowService; |
| | | import org.dromara.common.core.utils.MapstructUtils; |
| | | import org.dromara.common.core.utils.StreamUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.mybatis.core.domain.BaseEntity; |
| | | import org.dromara.common.mybatis.core.page.PageQuery; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public TestLeaveVo insertByBo(TestLeaveBo bo) { |
| | | long day = DateUtil.betweenDay(bo.getStartDate(), bo.getEndDate(), true); |
| | | // æªæ¢æ¥æä¹ç®ä¸å¤© |
| | | bo.setLeaveDays((int) day + 1); |
| | | TestLeave add = MapstructUtils.convert(bo, TestLeave.class); |
| | | if (StringUtils.isBlank(add.getStatus())) { |
| | | add.setStatus(BusinessStatusEnum.DRAFT.getStatus()); |
| | |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public Boolean deleteWithValidByIds(Collection<Long> ids) { |
| | | List<String> idList = StreamUtils.toList(ids, String::valueOf); |
| | | workflowService.deleteRunAndHisInstance(idList); |
| | | public Boolean deleteWithValidByIds(List<Long> ids) { |
| | | workflowService.deleteInstance(ids); |
| | | return baseMapper.deleteByIds(ids) > 0; |
| | | } |
| | | |
| | | /** |
| | | * æ»ä½æµç¨çå¬(ä¾å¦: æäº¤ éå æ¤é ç»æ¢ ä½åºç) |
| | | * æ£å¸¸ä½¿ç¨åªé#processEvent.key=='leave1' |
| | | * æ»ä½æµç¨çå¬(ä¾å¦: èç¨¿ï¼æ¤éï¼éåï¼ä½åºï¼ç»æ¢ï¼å·²å®æç) |
| | | * æ£å¸¸ä½¿ç¨åªé#processEvent.flowCode=='leave1' |
| | | * 示ä¾ä¸ºäºæ¹ä¾¿å使ç¨startsWithå¹é
äºå
¨é¨ç¤ºä¾key |
| | | * |
| | | * @param processEvent åæ° |
| | | */ |
| | | @EventListener(condition = "#processEvent.key.startsWith('leave')") |
| | | @EventListener(condition = "#processEvent.flowCode.startsWith('leave')") |
| | | public void processHandler(ProcessEvent processEvent) { |
| | | log.info("å½å任塿§è¡äº{}", processEvent.toString()); |
| | | TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); |
| | | TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessId())); |
| | | testLeave.setStatus(processEvent.getStatus()); |
| | | if (processEvent.isSubmit()) { |
| | | testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); |
| | |
| | | |
| | | /** |
| | | * æ§è¡åçä»»å¡çå¬ |
| | | * 示ä¾ï¼ä¹å¯éè¿ @EventListener(condition = "#processTaskEvent.key=='leave1'")è¿è¡å¤æ |
| | | * 示ä¾ï¼ä¹å¯éè¿ @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")è¿è¡å¤æ |
| | | * 卿¹æ³ä¸å¤ææµç¨èç¹key |
| | | * if ("xxx".equals(processTaskEvent.getTaskDefinitionKey())) { |
| | | * if ("xxx".equals(processTaskEvent.getNodeCode())) { |
| | | * //æ§è¡ä¸å¡é»è¾ |
| | | * } |
| | | * |
| | | * @param processTaskEvent åæ° |
| | | */ |
| | | @EventListener(condition = "#processTaskEvent.key.startsWith('leave')") |
| | | @EventListener(condition = "#processTaskEvent.flowCode.startsWith('leave')") |
| | | public void processTaskHandler(ProcessTaskEvent processTaskEvent) { |
| | | // æædemoæ¡ä¾çç³è¯·äººèç¹id |
| | | String[] ids = {"Activity_14633hx", "Activity_19b1i4j", "Activity_0uscrk3", |
| | | "Activity_0uscrk3", "Activity_0x6b71j", "Activity_0zy3g6j", "Activity_06a55t0"}; |
| | | if (StringUtils.equalsAny(processTaskEvent.getTaskDefinitionKey(), ids)) { |
| | | log.info("å½å任塿§è¡äº{}", processTaskEvent.toString()); |
| | | TestLeave testLeave = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessKey())); |
| | | testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); |
| | | baseMapper.updateById(testLeave); |
| | | } |
| | | log.info("å½å任塿§è¡äº{}", processTaskEvent.toString()); |
| | | TestLeave testLeave = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessId())); |
| | | testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); |
| | | baseMapper.updateById(testLeave); |
| | | } |
| | | |
| | | /** |
| | | * çå¬å 餿µç¨äºä»¶ |
| | | * æ£å¸¸ä½¿ç¨åªé#processDeleteEvent.flowCode=='leave1' |
| | | * 示ä¾ä¸ºäºæ¹ä¾¿å使ç¨startsWithå¹é
äºå
¨é¨ç¤ºä¾key |
| | | * |
| | | * @param processDeleteEvent åæ° |
| | | */ |
| | | @EventListener(condition = "#processDeleteEvent.flowCode.startsWith('leave')") |
| | | public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent) { |
| | | log.info("çå¬å 餿µç¨äºä»¶ï¼å½å任塿§è¡äº{}", processDeleteEvent.toString()); |
| | | TestLeave testLeave = baseMapper.selectById(Long.valueOf(processDeleteEvent.getBusinessId())); |
| | | if (ObjectUtil.isNull(testLeave)) { |
| | | return; |
| | | } |
| | | baseMapper.deleteById(testLeave.getId()); |
| | | } |
| | | |
| | | } |
| | |
| | | package org.dromara.workflow.service.impl; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.dromara.common.core.domain.dto.CompleteTaskDTO; |
| | | import org.dromara.common.core.domain.dto.StartProcessDTO; |
| | | import org.dromara.common.core.service.WorkflowService; |
| | | import org.dromara.workflow.domain.ActHiProcinst; |
| | | import org.dromara.workflow.service.IActHiProcinstService; |
| | | import org.dromara.workflow.service.IActProcessInstanceService; |
| | | import org.dromara.workflow.utils.WorkflowUtils; |
| | | import org.flowable.engine.TaskService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.warm.flow.orm.entity.FlowInstance; |
| | | import org.dromara.workflow.domain.bo.CompleteTaskBo; |
| | | import org.dromara.workflow.domain.bo.StartProcessBo; |
| | | import org.dromara.workflow.service.IFlwDefinitionService; |
| | | import org.dromara.workflow.service.IFlwInstanceService; |
| | | import org.dromara.workflow.service.IFlwTaskService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | |
| | | @Service |
| | | public class WorkflowServiceImpl implements WorkflowService { |
| | | |
| | | @Autowired(required = false) |
| | | private TaskService taskService; |
| | | private final IActProcessInstanceService actProcessInstanceService; |
| | | private final IActHiProcinstService actHiProcinstService; |
| | | private final IFlwInstanceService flwInstanceService; |
| | | private final IFlwDefinitionService flwDefinitionService; |
| | | private final IFlwTaskService flwTaskService; |
| | | |
| | | /** |
| | | * è¿è¡ä¸çå®ä¾ å é¤ç¨å®ä¾ï¼å é¤åå²è®°å½ï¼å é¤ä¸å¡ä¸æµç¨å
³èä¿¡æ¯ |
| | | * å 餿µç¨å®ä¾ |
| | | * |
| | | * @param businessKeys ä¸å¡id |
| | | * @param businessIds ä¸å¡id |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public boolean deleteRunAndHisInstance(List<String> businessKeys) { |
| | | return actProcessInstanceService.deleteRunAndHisInstance(businessKeys); |
| | | public boolean deleteInstance(List<Long> businessIds) { |
| | | return flwInstanceService.deleteByBusinessIds(businessIds); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param taskId ä»»å¡id |
| | | */ |
| | | @Override |
| | | public String getBusinessStatusByTaskId(String taskId) { |
| | | return WorkflowUtils.getBusinessStatusByTaskId(taskId); |
| | | public String getBusinessStatusByTaskId(Long taskId) { |
| | | FlowInstance flowInstance = flwInstanceService.selectByTaskId(taskId); |
| | | return ObjectUtil.isNotNull(flowInstance) ? flowInstance.getFlowStatus() : StringUtils.EMPTY; |
| | | } |
| | | |
| | | /** |
| | | * è·åå½åæµç¨ç¶æ |
| | | * |
| | | * @param businessKey ä¸å¡id |
| | | * @param businessId ä¸å¡id |
| | | */ |
| | | @Override |
| | | public String getBusinessStatus(String businessKey) { |
| | | return WorkflowUtils.getBusinessStatus(businessKey); |
| | | public String getBusinessStatus(String businessId) { |
| | | FlowInstance flowInstance = flwInstanceService.selectInstByBusinessId(businessId); |
| | | return ObjectUtil.isNotNull(flowInstance) ? flowInstance.getFlowStatus() : StringUtils.EMPTY; |
| | | } |
| | | |
| | | /** |
| | | * 设置æµç¨åé(å
¨å±åé) |
| | | * 设置æµç¨åé |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | * @param variableName åéåç§° |
| | | * @param value åéå¼ |
| | | * @param instanceId æµç¨å®ä¾id |
| | | * @param variables æµç¨åé |
| | | */ |
| | | @Override |
| | | public void setVariable(String taskId, String variableName, Object value) { |
| | | taskService.setVariable(taskId, variableName, value); |
| | | } |
| | | |
| | | /** |
| | | * 设置æµç¨åé(å
¨å±åé) |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | * @param variables æµç¨åé |
| | | */ |
| | | @Override |
| | | public void setVariables(String taskId, Map<String, Object> variables) { |
| | | taskService.setVariables(taskId, variables); |
| | | } |
| | | |
| | | /** |
| | | * 设置æµç¨åé(æ¬å°åé,éå
¨å±åé) |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | * @param variableName åéåç§° |
| | | * @param value åéå¼ |
| | | */ |
| | | @Override |
| | | public void setVariableLocal(String taskId, String variableName, Object value) { |
| | | taskService.setVariableLocal(taskId, variableName, value); |
| | | } |
| | | |
| | | /** |
| | | * 设置æµç¨åé(æ¬å°åé,éå
¨å±åé) |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | * @param variables æµç¨åé |
| | | */ |
| | | @Override |
| | | public void setVariablesLocal(String taskId, Map<String, Object> variables) { |
| | | taskService.setVariablesLocal(taskId, variables); |
| | | public void setVariable(Long instanceId, Map<String, Object> variables) { |
| | | flwInstanceService.setVariable(instanceId, variables); |
| | | } |
| | | |
| | | /** |
| | | * æç
§ä¸å¡idæ¥è¯¢æµç¨å®ä¾id |
| | | * |
| | | * @param businessKey ä¸å¡id |
| | | * @param businessId ä¸å¡id |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public String getInstanceIdByBusinessKey(String businessKey) { |
| | | ActHiProcinst actHiProcinst = actHiProcinstService.selectByBusinessKey(businessKey); |
| | | if (actHiProcinst == null) { |
| | | return StrUtil.EMPTY; |
| | | } |
| | | return actHiProcinst.getId(); |
| | | public Long getInstanceIdByBusinessId(String businessId) { |
| | | FlowInstance flowInstance = flwInstanceService.selectInstByBusinessId(businessId); |
| | | return ObjectUtil.isNotNull(flowInstance) ? flowInstance.getId() : null; |
| | | } |
| | | |
| | | /** |
| | | * æ°å¢ç§æ·æµç¨å®ä¹ |
| | | * |
| | | * @param tenantId ç§æ·id |
| | | */ |
| | | @Override |
| | | public void syncDef(String tenantId) { |
| | | flwDefinitionService.syncDef(tenantId); |
| | | } |
| | | |
| | | /** |
| | | * å¯å¨æµç¨ |
| | | * |
| | | * @param startProcess åæ° |
| | | */ |
| | | @Override |
| | | public Map<String, Object> startWorkFlow(StartProcessDTO startProcess) { |
| | | return flwTaskService.startWorkFlow(BeanUtil.toBean(startProcess, StartProcessBo.class)); |
| | | } |
| | | |
| | | /** |
| | | * åçä»»å¡ |
| | | * |
| | | * @param completeTask åæ° |
| | | */ |
| | | @Override |
| | | public boolean completeTask(CompleteTaskDTO completeTask) { |
| | | return flwTaskService.completeTask(BeanUtil.toBean(completeTask, CompleteTaskBo.class)); |
| | | } |
| | | } |
| | |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import lombok.AccessLevel; |
| | | import lombok.NoArgsConstructor; |
| | | import org.dromara.common.core.domain.dto.RoleDTO; |
| | | import org.dromara.common.core.domain.dto.UserDTO; |
| | | import org.dromara.common.core.service.UserService; |
| | | import org.dromara.common.core.utils.SpringUtils; |
| | | import org.dromara.common.core.utils.StreamUtils; |
| | | import org.dromara.common.core.utils.StringUtils; |
| | | import org.dromara.common.mail.utils.MailUtils; |
| | | import org.dromara.common.satoken.utils.LoginHelper; |
| | | import org.dromara.common.tenant.helper.TenantHelper; |
| | | import org.dromara.common.websocket.dto.WebSocketMessageDto; |
| | | import org.dromara.common.websocket.utils.WebSocketUtils; |
| | | import org.dromara.workflow.common.constant.FlowConstant; |
| | | import org.dromara.common.sse.dto.SseMessageDto; |
| | | import org.dromara.common.sse.utils.SseMessageUtils; |
| | | import org.dromara.warm.flow.core.constant.ExceptionCons; |
| | | import org.dromara.warm.flow.core.dto.FlowParams; |
| | | import org.dromara.warm.flow.core.entity.Node; |
| | | import org.dromara.warm.flow.core.entity.Task; |
| | | import org.dromara.warm.flow.core.entity.User; |
| | | import org.dromara.warm.flow.core.enums.NodeType; |
| | | import org.dromara.warm.flow.core.enums.SkipType; |
| | | import org.dromara.warm.flow.core.service.NodeService; |
| | | import org.dromara.warm.flow.core.service.TaskService; |
| | | import org.dromara.warm.flow.core.service.UserService; |
| | | import org.dromara.warm.flow.core.utils.AssertUtil; |
| | | import org.dromara.warm.flow.orm.entity.FlowNode; |
| | | import org.dromara.warm.flow.orm.entity.FlowTask; |
| | | import org.dromara.warm.flow.orm.entity.FlowUser; |
| | | import org.dromara.warm.flow.orm.mapper.FlowNodeMapper; |
| | | import org.dromara.warm.flow.orm.mapper.FlowTaskMapper; |
| | | import org.dromara.workflow.common.enums.MessageTypeEnum; |
| | | import org.dromara.workflow.common.enums.TaskStatusEnum; |
| | | import org.dromara.workflow.domain.ActHiTaskinst; |
| | | import org.dromara.workflow.domain.vo.MultiInstanceVo; |
| | | import org.dromara.workflow.domain.vo.ParticipantVo; |
| | | import org.dromara.workflow.flowable.cmd.UpdateHiTaskInstCmd; |
| | | import org.dromara.workflow.mapper.ActHiTaskinstMapper; |
| | | import org.flowable.bpmn.model.BpmnModel; |
| | | import org.flowable.bpmn.model.FlowNode; |
| | | import org.flowable.common.engine.api.delegate.Expression; |
| | | import org.flowable.engine.ProcessEngine; |
| | | import org.flowable.engine.history.HistoricProcessInstance; |
| | | import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior; |
| | | import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior; |
| | | import org.flowable.identitylink.api.history.HistoricIdentityLink; |
| | | import org.flowable.task.api.Task; |
| | | import org.flowable.task.api.TaskQuery; |
| | | import org.flowable.task.api.history.HistoricTaskInstance; |
| | | import org.flowable.task.service.impl.persistence.entity.TaskEntity; |
| | | import org.dromara.workflow.service.IFlwTaskAssigneeService; |
| | | import org.dromara.workflow.service.IFlwTaskService; |
| | | |
| | | import java.util.*; |
| | | import java.util.ArrayList; |
| | | import java.util.HashSet; |
| | | import java.util.List; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | |
| | | |
| | | /** |
| | | * 工使µå·¥å
· |
| | |
| | | @NoArgsConstructor(access = AccessLevel.PRIVATE) |
| | | public class WorkflowUtils { |
| | | |
| | | private static final ProcessEngine PROCESS_ENGINE = SpringUtils.getBean(ProcessEngine.class); |
| | | private static final ActHiTaskinstMapper ACT_HI_TASKINST_MAPPER = SpringUtils.getBean(ActHiTaskinstMapper.class); |
| | | private static final IFlwTaskAssigneeService TASK_ASSIGNEE_SERVICE = SpringUtils.getBean(IFlwTaskAssigneeService.class); |
| | | private static final IFlwTaskService FLW_TASK_SERVICE = SpringUtils.getBean(IFlwTaskService.class); |
| | | private static final FlowNodeMapper FLOW_NODE_MAPPER = SpringUtils.getBean(FlowNodeMapper.class); |
| | | private static final FlowTaskMapper FLOW_TASK_MAPPER = SpringUtils.getBean(FlowTaskMapper.class); |
| | | private static final UserService USER_SERVICE = SpringUtils.getBean(UserService.class); |
| | | private static final TaskService TASK_SERVICE = SpringUtils.getBean(TaskService.class); |
| | | private static final NodeService NODE_SERVICE = SpringUtils.getBean(NodeService.class); |
| | | |
| | | /** |
| | | * å建ä¸ä¸ªæ°ä»»å¡ |
| | | * |
| | | * @param currentTask åæ° |
| | | * è·å工使µç¨æ·service |
| | | */ |
| | | public static TaskEntity createNewTask(Task currentTask) { |
| | | TaskEntity task = null; |
| | | if (ObjectUtil.isNotEmpty(currentTask)) { |
| | | task = (TaskEntity) PROCESS_ENGINE.getTaskService().newTask(); |
| | | task.setCategory(currentTask.getCategory()); |
| | | task.setDescription(currentTask.getDescription()); |
| | | task.setAssignee(currentTask.getAssignee()); |
| | | task.setName(currentTask.getName()); |
| | | task.setProcessDefinitionId(currentTask.getProcessDefinitionId()); |
| | | task.setProcessInstanceId(currentTask.getProcessInstanceId()); |
| | | task.setTaskDefinitionKey(currentTask.getTaskDefinitionKey()); |
| | | task.setPriority(currentTask.getPriority()); |
| | | task.setCreateTime(new Date()); |
| | | task.setTenantId(TenantHelper.getTenantId()); |
| | | PROCESS_ENGINE.getTaskService().saveTask(task); |
| | | } |
| | | if (ObjectUtil.isNotNull(task)) { |
| | | UpdateHiTaskInstCmd updateHiTaskInstCmd = new UpdateHiTaskInstCmd(Collections.singletonList(task.getId()), task.getProcessDefinitionId(), task.getProcessInstanceId()); |
| | | PROCESS_ENGINE.getManagementService().executeCommand(updateHiTaskInstCmd); |
| | | } |
| | | return task; |
| | | public static UserService getFlowUserService() { |
| | | return USER_SERVICE; |
| | | } |
| | | |
| | | /** |
| | | * æéä»»å¡ |
| | | * æå»ºå·¥ä½æµç¨æ· |
| | | * |
| | | * @param parentTaskList ç¶çº§ä»»å¡ |
| | | * @param userIds 人åid |
| | | * @param userList åçç¨æ· |
| | | * @param taskId ä»»å¡ID |
| | | * @return ç¨æ· |
| | | */ |
| | | public static void createCopyTask(List<Task> parentTaskList, List<Long> userIds) { |
| | | List<Task> list = new ArrayList<>(); |
| | | String tenantId = TenantHelper.getTenantId(); |
| | | for (Task parentTask : parentTaskList) { |
| | | for (Long userId : userIds) { |
| | | TaskEntity newTask = (TaskEntity) PROCESS_ENGINE.getTaskService().newTask(); |
| | | newTask.setParentTaskId(parentTask.getId()); |
| | | newTask.setAssignee(userId.toString()); |
| | | newTask.setName("ãæéã-" + parentTask.getName()); |
| | | newTask.setProcessDefinitionId(parentTask.getProcessDefinitionId()); |
| | | newTask.setProcessInstanceId(parentTask.getProcessInstanceId()); |
| | | newTask.setTaskDefinitionKey(parentTask.getTaskDefinitionKey()); |
| | | newTask.setTenantId(tenantId); |
| | | list.add(newTask); |
| | | public static Set<User> buildUser(List<User> userList, Long taskId) { |
| | | if (CollUtil.isEmpty(userList)) { |
| | | return Set.of(); |
| | | } |
| | | Set<User> list = new HashSet<>(); |
| | | Set<String> processedBySet = new HashSet<>(); |
| | | for (User user : userList) { |
| | | // æ ¹æ® processedBy åç¼å¤æå¤ç人类åï¼åå«è·åç¨æ·å表 |
| | | List<UserDTO> users = TASK_ASSIGNEE_SERVICE.fetchUsersByStorageId(user.getProcessedBy()); |
| | | // 转æ¢ä¸º FlowUser å¹¶æ·»å å°ç»æéå |
| | | if (CollUtil.isNotEmpty(users)) { |
| | | users.forEach(dto -> { |
| | | String processedBy = String.valueOf(dto.getUserId()); |
| | | if (!processedBySet.contains(processedBy)) { |
| | | FlowUser flowUser = new FlowUser(); |
| | | flowUser.setType(user.getType()); |
| | | flowUser.setProcessedBy(processedBy); |
| | | flowUser.setAssociated(taskId); |
| | | list.add(flowUser); |
| | | processedBySet.add(processedBy); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | PROCESS_ENGINE.getTaskService().bulkSaveTasks(list); |
| | | if (CollUtil.isNotEmpty(list) && CollUtil.isNotEmpty(parentTaskList)) { |
| | | String processInstanceId = parentTaskList.get(0).getProcessInstanceId(); |
| | | String processDefinitionId = parentTaskList.get(0).getProcessDefinitionId(); |
| | | List<String> taskIds = StreamUtils.toList(list, Task::getId); |
| | | ActHiTaskinst actHiTaskinst = new ActHiTaskinst(); |
| | | actHiTaskinst.setProcDefId(processDefinitionId); |
| | | actHiTaskinst.setProcInstId(processInstanceId); |
| | | actHiTaskinst.setScopeType(TaskStatusEnum.COPY.getStatus()); |
| | | actHiTaskinst.setTenantId(tenantId); |
| | | LambdaUpdateWrapper<ActHiTaskinst> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.in(ActHiTaskinst::getId, taskIds); |
| | | ACT_HI_TASKINST_MAPPER.update(actHiTaskinst, updateWrapper); |
| | | for (Task task : list) { |
| | | PROCESS_ENGINE.getTaskService().addComment(task.getId(), task.getProcessInstanceId(), TaskStatusEnum.COPY.getStatus(), StrUtil.EMPTY); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * è·åå½åä»»å¡åä¸è
|
| | | * |
| | | * @param taskId ä»»å¡id |
| | | */ |
| | | public static ParticipantVo getCurrentTaskParticipant(String taskId, UserService userService) { |
| | | ParticipantVo participantVo = new ParticipantVo(); |
| | | List<HistoricIdentityLink> linksForTask = PROCESS_ENGINE.getHistoryService().getHistoricIdentityLinksForTask(taskId); |
| | | Task task = QueryUtils.taskQuery().taskId(taskId).singleResult(); |
| | | if (task != null && CollUtil.isNotEmpty(linksForTask)) { |
| | | List<HistoricIdentityLink> groupList = StreamUtils.filter(linksForTask, e -> StringUtils.isNotBlank(e.getGroupId())); |
| | | if (CollUtil.isNotEmpty(groupList)) { |
| | | List<Long> groupIds = StreamUtils.toList(groupList, e -> Long.valueOf(e.getGroupId())); |
| | | List<Long> userIds = userService.selectUserIdsByRoleIds(groupIds); |
| | | if (CollUtil.isNotEmpty(userIds)) { |
| | | participantVo.setGroupIds(groupIds); |
| | | List<UserDTO> userList = userService.selectListByIds(userIds); |
| | | if (CollUtil.isNotEmpty(userList)) { |
| | | List<Long> userIdList = StreamUtils.toList(userList, UserDTO::getUserId); |
| | | List<String> nickNames = StreamUtils.toList(userList, UserDTO::getNickName); |
| | | participantVo.setCandidate(userIdList); |
| | | participantVo.setCandidateName(nickNames); |
| | | participantVo.setClaim(!StringUtils.isBlank(task.getAssignee())); |
| | | } |
| | | } |
| | | } else { |
| | | List<HistoricIdentityLink> candidateList = StreamUtils.filter(linksForTask, e -> FlowConstant.CANDIDATE.equals(e.getType())); |
| | | List<Long> userIdList = new ArrayList<>(); |
| | | for (HistoricIdentityLink historicIdentityLink : linksForTask) { |
| | | try { |
| | | userIdList.add(Long.valueOf(historicIdentityLink.getUserId())); |
| | | } catch (NumberFormatException ignored) { |
| | | |
| | | } |
| | | } |
| | | List<UserDTO> userList = userService.selectListByIds(userIdList); |
| | | if (CollUtil.isNotEmpty(userList)) { |
| | | List<Long> userIds = StreamUtils.toList(userList, UserDTO::getUserId); |
| | | List<String> nickNames = StreamUtils.toList(userList, UserDTO::getNickName); |
| | | participantVo.setCandidate(userIds); |
| | | participantVo.setCandidateName(nickNames); |
| | | // 夿å½å任塿¯å¦å
·æå¤ä¸ªåç人 |
| | | if (CollUtil.isNotEmpty(candidateList) && candidateList.size() > 1) { |
| | | // 妿 assignee åå¨ï¼å设置å½åä»»å¡å·²ç»è¢«è®¤é¢ |
| | | participantVo.setClaim(StringUtils.isNotBlank(task.getAssignee())); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return participantVo; |
| | | } |
| | | |
| | | /** |
| | | * 夿å½åèç¹æ¯å¦ä¸ºä¼ç¾èç¹ |
| | | * |
| | | * @param processDefinitionId æµç¨å®ä¹id |
| | | * @param taskDefinitionKey æµç¨å®ä¹id |
| | | */ |
| | | public static MultiInstanceVo isMultiInstance(String processDefinitionId, String taskDefinitionKey) { |
| | | BpmnModel bpmnModel = PROCESS_ENGINE.getRepositoryService().getBpmnModel(processDefinitionId); |
| | | FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(taskDefinitionKey); |
| | | MultiInstanceVo multiInstanceVo = new MultiInstanceVo(); |
| | | //夿æ¯å¦ä¸ºå¹¶è¡ä¼ç¾èç¹ |
| | | if (flowNode.getBehavior() instanceof ParallelMultiInstanceBehavior behavior && behavior.getCollectionExpression() != null) { |
| | | Expression collectionExpression = behavior.getCollectionExpression(); |
| | | String assigneeList = collectionExpression.getExpressionText(); |
| | | String assignee = behavior.getCollectionElementVariable(); |
| | | multiInstanceVo.setType(behavior); |
| | | multiInstanceVo.setAssignee(assignee); |
| | | multiInstanceVo.setAssigneeList(assigneeList); |
| | | return multiInstanceVo; |
| | | //夿æ¯å¦ä¸ºä¸²è¡ä¼ç¾èç¹ |
| | | } else if (flowNode.getBehavior() instanceof SequentialMultiInstanceBehavior behavior && behavior.getCollectionExpression() != null) { |
| | | Expression collectionExpression = behavior.getCollectionExpression(); |
| | | String assigneeList = collectionExpression.getExpressionText(); |
| | | String assignee = behavior.getCollectionElementVariable(); |
| | | multiInstanceVo.setType(behavior); |
| | | multiInstanceVo.setAssignee(assignee); |
| | | multiInstanceVo.setAssigneeList(assigneeList); |
| | | return multiInstanceVo; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * è·åå½åæµç¨ç¶æ |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | */ |
| | | public static String getBusinessStatusByTaskId(String taskId) { |
| | | HistoricTaskInstance historicTaskInstance = QueryUtils.hisTaskInstanceQuery().taskId(taskId).singleResult(); |
| | | HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(historicTaskInstance.getProcessInstanceId()).singleResult(); |
| | | return historicProcessInstance.getBusinessStatus(); |
| | | } |
| | | |
| | | /** |
| | | * è·åå½åæµç¨ç¶æ |
| | | * |
| | | * @param businessKey ä¸å¡id |
| | | */ |
| | | public static String getBusinessStatus(String businessKey) { |
| | | HistoricProcessInstance historicProcessInstance = QueryUtils.hisBusinessKeyQuery(businessKey).singleResult(); |
| | | return historicProcessInstance.getBusinessStatus(); |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * åéæ¶æ¯ |
| | | * |
| | | * @param list ä»»å¡ |
| | | * @param name æµç¨åç§° |
| | | * @param flowName æµç¨å®ä¹åç§° |
| | | * @param messageType æ¶æ¯ç±»å |
| | | * @param message æ¶æ¯å
容ï¼ä¸ºç©ºååéé»è®¤é
ç½®çæ¶æ¯å
容 |
| | | */ |
| | | public static void sendMessage(List<Task> list, String name, List<String> messageType, String message, UserService userService) { |
| | | Set<Long> userIds = new HashSet<>(); |
| | | public static void sendMessage(String flowName, Long instId, List<String> messageType, String message) { |
| | | List<UserDTO> userList = new ArrayList<>(); |
| | | List<FlowTask> list = FLW_TASK_SERVICE.selectByInstId(instId); |
| | | if (StringUtils.isBlank(message)) { |
| | | message = "ææ°çã" + name + "ãåæ®å·²ç»æäº¤è³æ¨çå¾
åï¼è¯·æ¨åæ¶å¤çã"; |
| | | message = "ææ°çã" + flowName + "ãåæ®å·²ç»æäº¤è³æ¨ï¼è¯·æ¨åæ¶å¤çã"; |
| | | } |
| | | for (Task t : list) { |
| | | ParticipantVo taskParticipant = WorkflowUtils.getCurrentTaskParticipant(t.getId(), userService); |
| | | if (CollUtil.isNotEmpty(taskParticipant.getGroupIds())) { |
| | | List<Long> userIdList = userService.selectUserIdsByRoleIds(taskParticipant.getGroupIds()); |
| | | if (CollUtil.isNotEmpty(userIdList)) { |
| | | userIds.addAll(userIdList); |
| | | } |
| | | } |
| | | List<Long> candidate = taskParticipant.getCandidate(); |
| | | if (CollUtil.isNotEmpty(candidate)) { |
| | | userIds.addAll(candidate); |
| | | for (Task task : list) { |
| | | List<UserDTO> users = FLW_TASK_SERVICE.currentTaskAllUser(task.getId()); |
| | | if (CollUtil.isNotEmpty(users)) { |
| | | userList.addAll(users); |
| | | } |
| | | } |
| | | if (CollUtil.isNotEmpty(userIds)) { |
| | | List<UserDTO> userList = userService.selectListByIds(new ArrayList<>(userIds)); |
| | | if (CollUtil.isNotEmpty(userList)) { |
| | | for (String code : messageType) { |
| | | MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); |
| | | if (ObjectUtil.isNotEmpty(messageTypeEnum)) { |
| | | switch (messageTypeEnum) { |
| | | case SYSTEM_MESSAGE: |
| | | WebSocketMessageDto dto = new WebSocketMessageDto(); |
| | | dto.setSessionKeys(new ArrayList<>(userIds)); |
| | | SseMessageDto dto = new SseMessageDto(); |
| | | dto.setUserIds(StreamUtils.toList(userList, UserDTO::getUserId).stream().distinct().collect(Collectors.toList())); |
| | | dto.setMessage(message); |
| | | WebSocketUtils.publishMessage(dto); |
| | | SseMessageUtils.publishMessage(dto); |
| | | break; |
| | | case EMAIL_MESSAGE: |
| | | MailUtils.sendText(StreamUtils.join(userList, UserDTO::getEmail), "åæ®å®¡æ¹æé", message); |
| | |
| | | case SMS_MESSAGE: |
| | | //todo çä¿¡åé |
| | | break; |
| | | default: |
| | | throw new IllegalStateException("Unexpected value: " + messageTypeEnum); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®ä»»å¡idæ¥è¯¢ å½åç¨æ·çä»»å¡ï¼æ£æ¥ å½åäººå æ¯å¦æ¯è¯¥ taskId çåç人 |
| | | * 驳å |
| | | * |
| | | * @param taskId ä»»å¡id |
| | | * @return ç»æ |
| | | * @param message å®¡æ¹æè§ |
| | | * @param instanceId æµç¨å®ä¾id |
| | | * @param targetNodeCode ç®æ èç¹ |
| | | * @param flowStatus æµç¨ç¶æ |
| | | * @param flowHisStatus èç¹æä½ç¶æ |
| | | */ |
| | | public static Task getTaskByCurrentUser(String taskId) { |
| | | TaskQuery taskQuery = QueryUtils.taskQuery(); |
| | | taskQuery.taskId(taskId).taskCandidateOrAssigned(String.valueOf(LoginHelper.getUserId())); |
| | | |
| | | List<RoleDTO> roles = LoginHelper.getLoginUser().getRoles(); |
| | | if (CollUtil.isNotEmpty(roles)) { |
| | | List<String> groupIds = StreamUtils.toList(roles, e -> String.valueOf(e.getRoleId())); |
| | | taskQuery.taskCandidateGroupIn(groupIds); |
| | | public static void backTask(String message, Long instanceId, String targetNodeCode, String flowStatus, String flowHisStatus) { |
| | | List<FlowTask> list = FLW_TASK_SERVICE.selectByInstId(instanceId); |
| | | if (CollUtil.isNotEmpty(list)) { |
| | | List<FlowTask> tasks = StreamUtils.filter(list, e -> e.getNodeCode().equals(targetNodeCode)); |
| | | if (list.size() == tasks.size()) { |
| | | return; |
| | | } |
| | | } |
| | | return taskQuery.singleResult(); |
| | | for (FlowTask task : list) { |
| | | List<UserDTO> userList = FLW_TASK_SERVICE.currentTaskAllUser(task.getId()); |
| | | FlowParams flowParams = FlowParams.build(); |
| | | flowParams.nodeCode(targetNodeCode); |
| | | flowParams.message(message); |
| | | flowParams.skipType(SkipType.PASS.getKey()); |
| | | flowParams.flowStatus(flowStatus).hisStatus(flowHisStatus); |
| | | flowParams.ignore(true); |
| | | //è§£å³ä¼ç¾æ²¡æéé®é¢ |
| | | if (CollUtil.isNotEmpty(userList)) { |
| | | flowParams.handler(userList.get(0).getUserId().toString()); |
| | | } |
| | | TASK_SERVICE.skip(task.getId(), flowParams); |
| | | } |
| | | //è§£å³ä¼ç¾å¤äººå®¡æ¹é®é¢ |
| | | backTask(message, instanceId, targetNodeCode, flowStatus, flowHisStatus); |
| | | } |
| | | |
| | | /** |
| | | * ç³è¯·äººèç¹ç¼ç |
| | | * |
| | | * @param definitionId æµç¨å®ä¹id |
| | | * @return ç³è¯·äººèç¹ç¼ç |
| | | */ |
| | | public static String applyNodeCode(Long definitionId) { |
| | | //è·åå·²åå¸çæµç¨èç¹ |
| | | List<FlowNode> flowNodes = FLOW_NODE_MAPPER.selectList(new LambdaQueryWrapper<FlowNode>().eq(FlowNode::getDefinitionId, definitionId)); |
| | | AssertUtil.isTrue(CollUtil.isEmpty(flowNodes), ExceptionCons.NOT_PUBLISH_NODE); |
| | | Node startNode = flowNodes.stream().filter(t -> NodeType.isStart(t.getNodeType())).findFirst().orElse(null); |
| | | AssertUtil.isNull(startNode, ExceptionCons.LOST_START_NODE); |
| | | Node nextNode = NODE_SERVICE.getNextNode(definitionId, startNode.getNodeCode(), null, SkipType.NONE.getKey()); |
| | | return nextNode.getNodeCode(); |
| | | } |
| | | |
| | | /** |
| | | * å é¤è¿è¡ä¸çä»»å¡ |
| | | * |
| | | * @param taskIds ä»»å¡id |
| | | */ |
| | | public static void deleteRunTask(List<Long> taskIds) { |
| | | if (CollUtil.isEmpty(taskIds)) { |
| | | return; |
| | | } |
| | | USER_SERVICE.deleteByTaskIds(taskIds); |
| | | FLOW_TASK_MAPPER.deleteByIds(taskIds); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="org.dromara.workflow.mapper.FlwCategoryMapper"> |
| | | |
| | | <select id="countCategoryById" resultType="Long"> |
| | | select count(*) from flow_category where del_flag = '0' and category_id = #{categoryId} |
| | | </select> |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="org.dromara.workflow.mapper.FlwInstanceMapper"> |
| | | <resultMap type="org.dromara.workflow.domain.vo.FlowInstanceVo" id="FlowInstanceResult"> |
| | | </resultMap> |
| | | |
| | | <select id="selectInstanceList" resultMap="FlowInstanceResult"> |
| | | select fi.id, |
| | | fi.create_time, |
| | | fi.update_time, |
| | | fi.tenant_id, |
| | | fi.del_flag, |
| | | fi.definition_id, |
| | | fi.business_id, |
| | | fi.node_type, |
| | | fi.node_code, |
| | | fi.node_name, |
| | | fi.variable, |
| | | fi.flow_status, |
| | | fi.activity_status, |
| | | fi.create_by, |
| | | fi.ext, |
| | | fd.flow_name, |
| | | fd.flow_code, |
| | | fd.version, |
| | | fd.form_custom, |
| | | fd.form_path, |
| | | fd.category |
| | | from flow_instance fi |
| | | left join flow_definition fd on fi.definition_id = fd.id |
| | | ${ew.getCustomSqlSegment} |
| | | </select> |
| | | |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="org.dromara.workflow.mapper.FlwTaskMapper"> |
| | | <resultMap type="org.dromara.workflow.domain.vo.FlowTaskVo" id="FlowTaskResult"> |
| | | </resultMap> |
| | | <resultMap type="org.dromara.workflow.domain.vo.FlowHisTaskVo" id="FlowHisTaskResult"> |
| | | </resultMap> |
| | | |
| | | <select id="getListRunTask" resultMap="FlowTaskResult"> |
| | | select * from ( |
| | | select distinct |
| | | t.id, |
| | | t.node_code, |
| | | t.node_name, |
| | | t.node_type, |
| | | t.definition_id, |
| | | t.instance_id, |
| | | t.create_time, |
| | | t.update_time, |
| | | t.tenant_id, |
| | | i.business_id, |
| | | i.flow_status, |
| | | i.create_by, |
| | | d.flow_name, |
| | | d.flow_code, |
| | | d.form_custom, |
| | | d.category, |
| | | COALESCE(t.form_path, d.form_path) as form_path, |
| | | d.version, |
| | | uu.processed_by, |
| | | uu.type |
| | | from flow_task as t |
| | | left join flow_user uu on uu.associated = t.id |
| | | left join flow_definition d on t.definition_id = d.id |
| | | left join flow_instance i on t.instance_id = i.id |
| | | where t.node_type = 1 |
| | | and t.del_flag = '0' |
| | | and uu.del_flag = '0' |
| | | and uu.type in ('1','2','3') |
| | | ) t |
| | | ${ew.getCustomSqlSegment} |
| | | </select> |
| | | |
| | | <select id="getListFinishTask" resultMap="FlowHisTaskResult"> |
| | | select * from ( |
| | | select |
| | | a.id, |
| | | a.node_code, |
| | | a.node_name, |
| | | a.cooperate_type, |
| | | a.approver, |
| | | a.collaborator, |
| | | a.node_type, |
| | | a.target_node_code, |
| | | a.target_node_name, |
| | | a.definition_id, |
| | | a.instance_id, |
| | | a.flow_status flow_task_status, |
| | | a.message, |
| | | a.ext, |
| | | a.create_time, |
| | | a.update_time, |
| | | a.tenant_id, |
| | | a.form_custom, |
| | | a.form_path, |
| | | b.flow_status, |
| | | b.business_id, |
| | | b.create_by, |
| | | c.flow_name, |
| | | c.flow_code, |
| | | c.category, |
| | | c.version |
| | | from flow_his_task a |
| | | left join flow_instance b on a.instance_id = b.id |
| | | left join flow_definition c on a.definition_id = c.id |
| | | where a.del_flag ='0' |
| | | and b.del_flag = '0' |
| | | and c.del_flag = '0' |
| | | and a.node_type in ('1','3','4') |
| | | ) t |
| | | ${ew.getCustomSqlSegment} |
| | | </select> |
| | | |
| | | <select id="getTaskCopyByPage" resultMap="FlowTaskResult"> |
| | | select * from ( |
| | | select |
| | | b.id, |
| | | b.update_time, |
| | | c.business_id, |
| | | c.flow_status, |
| | | c.create_by, |
| | | a.processed_by, |
| | | a.create_time, |
| | | b.form_custom, |
| | | b.form_path, |
| | | b.node_name, |
| | | b.node_code, |
| | | d.flow_name, |
| | | d.flow_code, |
| | | d.category, |
| | | d.version |
| | | from flow_user a |
| | | left join flow_his_task b on a.associated = b.task_id |
| | | left join flow_instance c on b.instance_id = c.id |
| | | left join flow_definition d on c.definition_id=d.id |
| | | where a.type = '4' |
| | | and a.del_flag = '0' |
| | | and b.del_flag = '0' |
| | | and d.del_flag = '0' |
| | | ) t |
| | | ${ew.getCustomSqlSegment} |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | |
| | | <definition flowCode="leave1" flowName="请åç³è¯·-æ®é" version="1" category="1" formCustom="N" formPath="/workflow/leaveEdit/index"> |
| | | <node nodeType="start" nodeCode="d5ee3ddf-3968-4379-a86f-9ceabde5faac" nodeName="å¼å§" nodeRatio="0.000" coordinate="200,200|200,200" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="220,200;310,200" skipType="PASS">dd515cdd-59f6-446f-94ca-25ca062afb42</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="dd515cdd-59f6-446f-94ca-25ca062afb42" nodeName="ç³è¯·äºº" nodeRatio="0.000" coordinate="360,200|360,200" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="410,200;490,200" skipType="PASS">78fa8e5b-e809-44ed-978a-41092409ebcf</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="78fa8e5b-e809-44ed-978a-41092409ebcf" nodeName="ç»é¿" permissionFlag="role:1" nodeRatio="0.000" coordinate="540,200|540,200" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="590,200;670,200" skipType="PASS">a8abf15f-b83e-428a-86cc-033555ea9bbe</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="a8abf15f-b83e-428a-86cc-033555ea9bbe" nodeName="é¨é¨ä¸»ç®¡" permissionFlag="role:3,role:4" nodeRatio="0.000" coordinate="720,200|720,200" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="770,200;880,200" skipType="PASS">8b82b7d7-8660-455e-b880-d6d22ea3eb6d</skip> |
| | | </node> |
| | | <node nodeType="end" nodeCode="8b82b7d7-8660-455e-b880-d6d22ea3eb6d" nodeName="ç»æ" nodeRatio="0.000" coordinate="900,200|900,200" skipAnyNode="N" formCustom="N"/> |
| | | </definition> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | |
| | | <definition flowCode="leave2" flowName="请åç³è¯·-æä»ç½å
³" version="2" category="1" formCustom="N" formPath="/workflow/leaveEdit/index"> |
| | | <node nodeType="start" nodeCode="cef3895c-f7d8-4598-8bf3-8ec2ef6ce84a" nodeName="å¼å§" nodeRatio="0.000" coordinate="300,240|300,240" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="320,240;390,240" skipType="PASS">fdcae93b-b69c-498a-b231-09255e74bcbd</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="fdcae93b-b69c-498a-b231-09255e74bcbd" nodeName="ç³è¯·äºº" nodeRatio="0.000" coordinate="440,240|440,240" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="490,240;535,240" skipType="PASS">7b8c7ead-7dc8-4951-a7f3-f0c41995909e</skip> |
| | | </node> |
| | | <node nodeType="serial" nodeCode="7b8c7ead-7dc8-4951-a7f3-f0c41995909e" nodeRatio="0.000" coordinate="560,240" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="560,265;560,320;670,320" skipType="PASS" skipCondition="@@le@@|leaveDays@@le@@2">b3528155-dcb7-4445-bbdf-3d00e3499e86</skip> |
| | | <skip coordinate="560,215;560,160;670,160|560,187" skipType="PASS" skipName="大äºä¸¤å¤©" skipCondition="@@gt@@|leaveDays@@gt@@2">5ed2362b-fc0c-4d52-831f-95208b830605</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="b3528155-dcb7-4445-bbdf-3d00e3499e86" nodeName="ç»é¿" permissionFlag="3,4" nodeRatio="0.000" coordinate="720,320|720,320" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="770,320;860,320;860,280" skipType="PASS">c9fa6d7d-2a74-4e78-b947-0cad8a6af869</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="c9fa6d7d-2a74-4e78-b947-0cad8a6af869" nodeName="æ»ç»ç" permissionFlag="role:1" nodeRatio="0.000" coordinate="860,240|860,240" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="910,240;980,240" skipType="PASS">40aa65fd-0712-4d23-b6f7-d0432b920fd1</skip> |
| | | </node> |
| | | <node nodeType="end" nodeCode="40aa65fd-0712-4d23-b6f7-d0432b920fd1" nodeName="ç»æ" nodeRatio="0.000" coordinate="1000,240|1000,240" skipAnyNode="N" formCustom="N"/> |
| | | <node nodeType="between" nodeCode="5ed2362b-fc0c-4d52-831f-95208b830605" nodeName="é¨é¨é¢å¯¼" permissionFlag="role:1" nodeRatio="0.000" coordinate="720,160|720,160" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="770,160;860,160;860,200" skipType="PASS">c9fa6d7d-2a74-4e78-b947-0cad8a6af869</skip> |
| | | </node> |
| | | </definition> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | |
| | | <definition flowCode="leave3" flowName="请åç³è¯·-å¹¶è¡ç½å
³" version="1" category="1" formCustom="N" formPath="/workflow/leaveEdit/index"> |
| | | <node nodeType="start" nodeCode="a80ecf9f-f465-4ae5-a429-e30ec5d0f957" nodeName="å¼å§" nodeRatio="0.000" coordinate="380,220|380,220" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="400,220;470,220" skipType="PASS">b7bbb571-06de-455c-8083-f83c07bf0b99</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="b7bbb571-06de-455c-8083-f83c07bf0b99" nodeName="ç³è¯·äºº" nodeRatio="0.000" coordinate="520,220|520,220" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="570,220;655,220" skipType="PASS">84d7ed24-bb44-4ba1-bf1f-e6f5092d3f0a</skip> |
| | | </node> |
| | | <node nodeType="parallel" nodeCode="84d7ed24-bb44-4ba1-bf1f-e6f5092d3f0a" nodeRatio="0.000" coordinate="680,220" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="680,195;680,140;750,140" skipType="PASS">4b7743cd-940c-431b-926f-e7b614fbf1fe</skip> |
| | | <skip coordinate="680,245;680,300;750,300" skipType="PASS">762cb975-37d8-4276-b6db-79a4c3606394</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="4b7743cd-940c-431b-926f-e7b614fbf1fe" nodeName="å¸åºé¨" permissionFlag="role:1" nodeRatio="0.000" coordinate="800,140|800,140" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="850,140;920,140;920,195" skipType="PASS">b66b6563-f9fe-41cc-a782-f7837bb6f3d2</skip> |
| | | </node> |
| | | <node nodeType="parallel" nodeCode="b66b6563-f9fe-41cc-a782-f7837bb6f3d2" nodeRatio="0.000" coordinate="920,220" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="945,220;975,220;975,220;960,220;960,220;990,220" skipType="PASS">23e7429e-2b47-4431-b93e-40db7c431ce6</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="23e7429e-2b47-4431-b93e-40db7c431ce6" nodeName="CEO" permissionFlag="1" nodeRatio="0.000" coordinate="1040,220|1040,220" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="1090,220;1140,220" skipType="PASS">f5ace37f-5a5e-4e64-a6f6-913ab9a71cd1</skip> |
| | | </node> |
| | | <node nodeType="end" nodeCode="f5ace37f-5a5e-4e64-a6f6-913ab9a71cd1" nodeName="ç»æ" nodeRatio="0.000" coordinate="1160,220|1160,220" skipAnyNode="N" formCustom="N"/> |
| | | <node nodeType="between" nodeCode="762cb975-37d8-4276-b6db-79a4c3606394" nodeName="综åé¨" permissionFlag="role:3,role:4" nodeRatio="0.000" coordinate="800,300|800,300" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="850,300;920,300;920,245" skipType="PASS">b66b6563-f9fe-41cc-a782-f7837bb6f3d2</skip> |
| | | </node> |
| | | </definition> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | |
| | | <definition flowCode="leave4" flowName="请åç³è¯·-ä¼ç¾" version="1" category="103" formCustom="N" formPath="/workflow/leaveEdit/index"> |
| | | <node nodeType="start" nodeCode="9ce8bf00-f25b-4fc6-91b8-827082fc4876" nodeName="å¼å§" nodeRatio="0.000" coordinate="320,240|320,240" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="340,240;410,240" skipType="PASS">e90b98ef-35b4-410c-a663-bae8b7624b9f</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="e90b98ef-35b4-410c-a663-bae8b7624b9f" nodeName="ç³è¯·äºº" nodeRatio="0.000" coordinate="460,240|460,240" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="510,240;590,240" skipType="PASS">768b5b1a-6726-4d67-8853-4cc70d5b1045</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="768b5b1a-6726-4d67-8853-4cc70d5b1045" nodeName="ç¾åä¹60éè¿" permissionFlag="${userList}" nodeRatio="60.000" coordinate="640,240|640,240" skipAnyNode="N" anyNodeSkip="e90b98ef-35b4-410c-a663-bae8b7624b9f" formCustom="N"> |
| | | <skip coordinate="690,240;770,240" skipType="PASS">2f9f2e21-9bcf-42a3-a07c-13037aad22d1</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="2f9f2e21-9bcf-42a3-a07c-13037aad22d1" nodeName="å
¨é¨å®¡æ¹éè¿" permissionFlag="role:1,role:3" nodeRatio="100.000" coordinate="820,240|820,240" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="870,240;950,240" skipType="PASS">27461e01-3d9f-4530-8fe3-bd5ec7f9571f</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="27461e01-3d9f-4530-8fe3-bd5ec7f9571f" nodeName="CEO" permissionFlag="1" nodeRatio="0.000" coordinate="1000,240|1000,240" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="1050,240;1080,240;1080,240;1070,240;1070,240;1100,240" skipType="PASS">b62b88c3-8d8d-4969-911e-2aaea219e7fc</skip> |
| | | </node> |
| | | <node nodeType="end" nodeCode="b62b88c3-8d8d-4969-911e-2aaea219e7fc" nodeName="ç»æ" nodeRatio="0.000" coordinate="1120,240|1120,240" skipAnyNode="N" formCustom="N"/> |
| | | </definition> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | |
| | | <definition flowCode="leave5" flowName="请åç³è¯·-å¹¶è¡ä¼ç¾ç½å
³" version="1" category="103" formCustom="N" formPath="/workflow/leaveEdit/index"> |
| | | <node nodeType="start" nodeCode="ebebaf26-9cb6-497e-8119-4c9fed4c597c" nodeName="å¼å§" nodeRatio="0.000" coordinate="300,220|300,220" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="320,220;350,220;350,220;340,220;340,220;370,220" skipType="PASS">e1b04e96-dc81-4858-a309-2fe945d2f374</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="e1b04e96-dc81-4858-a309-2fe945d2f374" nodeName="ç³è¯·äºº" nodeRatio="0.000" coordinate="420,220|420,220" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="470,220;535,220" skipType="PASS">3e743f4f-51ca-41d4-8e94-21f5dd9b59c9</skip> |
| | | </node> |
| | | <node nodeType="parallel" nodeCode="3e743f4f-51ca-41d4-8e94-21f5dd9b59c9" nodeRatio="0.000" coordinate="560,220" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="560,245;560,320;650,320" skipType="PASS">c80f273e-1f17-4bd8-9ad1-04a4a94ea862</skip> |
| | | <skip coordinate="560,195;560,120;650,120" skipType="PASS">1e3e8d3b-18ae-4d6c-a814-ce0d724adfa4</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="c80f273e-1f17-4bd8-9ad1-04a4a94ea862" nodeName="ä¼ç¾" permissionFlag="role:1,role:3" nodeRatio="100.000" coordinate="700,320|700,320" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="750,320;860,320;860,245" skipType="PASS">1a20169e-3d82-4926-a151-e2daad28de1b</skip> |
| | | </node> |
| | | <node nodeType="parallel" nodeCode="1a20169e-3d82-4926-a151-e2daad28de1b" nodeRatio="0.000" coordinate="860,220" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="885,220;950,220" skipType="PASS">7a8f0473-e409-442e-a843-5c2b813d00e9</skip> |
| | | </node> |
| | | <node nodeType="between" nodeCode="7a8f0473-e409-442e-a843-5c2b813d00e9" nodeName="CEO" permissionFlag="1" nodeRatio="0.000" coordinate="1000,220|1000,220" skipAnyNode="N" formCustom="N"> |
| | | <skip coordinate="1050,220;1120,220" skipType="PASS">03c4d2bc-58b5-4408-a2e4-65afb046f169</skip> |
| | | </node> |
| | | <node nodeType="end" nodeCode="03c4d2bc-58b5-4408-a2e4-65afb046f169" nodeName="ç»æ" nodeRatio="0.000" coordinate="1140,220|1140,220" skipAnyNode="N" formCustom="N"/> |
| | | <node nodeType="between" nodeCode="1e3e8d3b-18ae-4d6c-a814-ce0d724adfa4" nodeName="ç¾åä¹60票ç¾" permissionFlag="${userList}" nodeRatio="60.000" coordinate="700,120|700,120" skipAnyNode="N" anyNodeSkip="e1b04e96-dc81-4858-a309-2fe945d2f374" formCustom="N"> |
| | | <skip coordinate="750,120;860,120;860,195" skipType="PASS">1a20169e-3d82-4926-a151-e2daad28de1b</skip> |
| | | </node> |
| | | </definition> |
| | |
| | | insert into sys_menu values('11616', '工使µ' , '0', '6', 'workflow', '', '', '1', '0', 'M', '0', '0', '', 'workflow', 103, 1, sysdate, NULL, NULL, ''); |
| | | insert into sys_menu values('11617', '模å管ç', '11616', '2', 'model', 'workflow/model/index', '', '1', '1', 'C', '0', '0', 'workflow:model:list', 'model', 103, 1, sysdate, NULL, NULL, ''); |
| | | insert into sys_menu values('11618', 'æçä»»å¡', '0', '7', 'task', '', '', '1', '0', 'M', '0', '0', '', 'my-task', 103, 1, sysdate, NULL, NULL, ''); |
| | | insert into sys_menu values('11619', 'æçå¾
å', '11618', '2', 'taskWaiting', 'workflow/task/taskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, sysdate, NULL, NULL, ''); |
| | | insert into sys_menu values('11632', 'æçå·²å', '11618', '3', 'taskFinish', 'workflow/task/taskFinish', '', '1', '1', 'C', '0', '0', '', 'finish', 103, 1, sysdate, NULL, NULL, ''); |
| | | insert into sys_menu values('11633', 'æçæé', '11618', '4', 'taskCopyList', 'workflow/task/taskCopyList', '', '1', '1', 'C', '0', '0', '', 'my-copy', 103, 1, sysdate, NULL, NULL, ''); |
| | | insert into sys_menu values('11620', 'æµç¨å®ä¹', '11616', '3', 'processDefinition', 'workflow/processDefinition/index', '', '1', '1', 'C', '0', '0', '', 'process-definition', 103, 1, sysdate, NULL, NULL, ''); |
| | | insert into sys_menu values('11621', 'æµç¨å®ä¾', '11630', '1', 'processInstance', 'workflow/processInstance/index', '', '1', '1', 'C', '0', '0', '', 'tree-table', 103, 1, sysdate, NULL, NULL, ''); |
| | | insert into sys_menu values('11622', 'æµç¨åç±»', '11616', '1', 'category', 'workflow/category/index', '', '1', '0', 'C', '0', '0', 'workflow:category:list', 'category', 103, 1, sysdate, NULL, NULL, ''); |
| | | insert into sys_menu values('11629', 'æåèµ·ç', '11618', '1', 'myDocument', 'workflow/task/myDocument', '', '1', '1', 'C', '0', '0', '', 'guide', 103, 1, sysdate, NULL, NULL, ''); |
| | | insert into sys_menu values('11630', 'æµç¨çæ§', '11616', '4', 'monitor', '', '', '1', '0', 'M', '0', '0', '', 'monitor', 103, 1, sysdate, NULL, NULL, ''); |
| | | insert into sys_menu values('11631', 'å¾
åä»»å¡', '11630', '2', 'allTaskWaiting', 'workflow/task/allTaskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, sysdate, NULL, NULL, ''); |
| | | |
| | | |
| | | -- æµç¨å类管çç¸å
³æé® |
| | | insert into sys_menu values ('11623', 'æµç¨åç±»æ¥è¯¢', '11622', '1', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:query', '#', 103, 1, sysdate, null, null, ''); |
| | | insert into sys_menu values ('11624', 'æµç¨åç±»æ°å¢', '11622', '2', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:add', '#', 103, 1, sysdate, null, null, ''); |
| | | insert into sys_menu values ('11625', 'æµç¨å类修æ¹', '11622', '3', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:edit', '#', 103, 1, sysdate, null, null, ''); |
| | | insert into sys_menu values ('11626', 'æµç¨åç±»å é¤', '11622', '4', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:remove','#', 103, 1, sysdate, null, null, ''); |
| | | insert into sys_menu values ('11627', 'æµç¨å类导åº', '11622', '5', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:export','#', 103, 1, sysdate, null, null, ''); |
| | | |
| | | -- 请ååä¿¡æ¯ |
| | | create table TEST_LEAVE |
| | | create table FLOW_DEFINITION |
| | | ( |
| | | ID NUMBER(20) not null |
| | | constraint PK_TEST_LEAVE |
| | | primary key, |
| | | LEAVE_TYPE VARCHAR2(255), |
| | | START_DATE DATE, |
| | | END_DATE DATE, |
| | | LEAVE_DAYS NUMBER(10), |
| | | REMARK VARCHAR2(255), |
| | | STATUS VARCHAR2(255), |
| | | CREATE_DEPT NUMBER(20), |
| | | CREATE_BY NUMBER(20), |
| | | ID NUMBER (20) not null, |
| | | FLOW_CODE VARCHAR2 (40) not null, |
| | | FLOW_NAME VARCHAR2 (100) not null, |
| | | CATEGORY VARCHAR2 (100), |
| | | VERSION VARCHAR2 (20) not null, |
| | | IS_PUBLISH NUMBER (1) default 0 not null, |
| | | FORM_CUSTOM VARCHAR2 (1) default 'N', |
| | | FORM_PATH VARCHAR2 (100), |
| | | ACTIVITY_STATUS NUMBER (1) default 1, |
| | | LISTENER_TYPE VARCHAR2 (100), |
| | | LISTENER_PATH VARCHAR2 (500), |
| | | EXT VARCHAR2 (500), |
| | | CREATE_TIME DATE, |
| | | UPDATE_BY NUMBER(20), |
| | | UPDATE_TIME DATE, |
| | | TENANT_ID VARCHAR2(20) |
| | | DEL_FLAG VARCHAR2 (1) default '0', |
| | | TENANT_ID VARCHAR2 (40) |
| | | ); |
| | | |
| | | comment on table TEST_LEAVE is '请åç³è¯·è¡¨'; |
| | | comment on column TEST_LEAVE.ID is '主é®'; |
| | | comment on column TEST_LEAVE.LEAVE_TYPE is '请åç±»å'; |
| | | comment on column TEST_LEAVE.START_DATE is 'å¼å§æ¶é´'; |
| | | comment on column TEST_LEAVE.END_DATE is 'ç»ææ¶é´'; |
| | | comment on column TEST_LEAVE.LEAVE_DAYS is '请å天æ°'; |
| | | comment on column TEST_LEAVE.REMARK is '请ååå '; |
| | | comment on column TEST_LEAVE.STATUS is 'ç¶æ'; |
| | | comment on column TEST_LEAVE.CREATE_DEPT is 'å建é¨é¨'; |
| | | comment on column TEST_LEAVE.CREATE_BY is 'å建è
'; |
| | | comment on column TEST_LEAVE.CREATE_TIME is 'å建æ¶é´'; |
| | | comment on column TEST_LEAVE.UPDATE_BY is 'æ´æ°è
'; |
| | | comment on column TEST_LEAVE.UPDATE_TIME is 'æ´æ°æ¶é´'; |
| | | comment on column TEST_LEAVE.TENANT_ID is 'ç§æ·ç¼å·'; |
| | | alter table FLOW_DEFINITION add constraint PK_FLOW_DEFINITION primary key (ID); |
| | | |
| | | -- æµç¨å类信æ¯è¡¨ |
| | | create table WF_CATEGORY |
| | | comment on table FLOW_DEFINITION is 'æµç¨å®ä¹è¡¨'; |
| | | comment on column FLOW_DEFINITION.ID is '主é®id'; |
| | | comment on column FLOW_DEFINITION.FLOW_CODE is 'æµç¨ç¼ç '; |
| | | comment on column FLOW_DEFINITION.FLOW_NAME is 'æµç¨åç§°'; |
| | | comment on column FLOW_DEFINITION.CATEGORY is 'æµç¨ç±»å«'; |
| | | comment on column FLOW_DEFINITION.VERSION is 'æµç¨çæ¬'; |
| | | comment on column FLOW_DEFINITION.IS_PUBLISH is 'æ¯å¦åå¸ (0æªåå¸ 1å·²åå¸ 9失æ)'; |
| | | comment on column FLOW_DEFINITION.FORM_CUSTOM is '审æ¹è¡¨åæ¯å¦èªå®ä¹ (Yæ¯ Nå¦)'; |
| | | comment on column FLOW_DEFINITION.FORM_PATH is '审æ¹è¡¨åè·¯å¾'; |
| | | comment on column FLOW_DEFINITION.ACTIVITY_STATUS is 'æµç¨æ¿æ´»ç¶æï¼0æèµ· 1æ¿æ´»ï¼'; |
| | | comment on column FLOW_DEFINITION.LISTENER_TYPE is 'çå¬å¨ç±»å'; |
| | | comment on column FLOW_DEFINITION.LISTENER_PATH is 'çå¬å¨è·¯å¾'; |
| | | comment on column FLOW_DEFINITION.EXT is 'æ©å±å段ï¼é¢çç»ä¸å¡ç³»ç»ä½¿ç¨'; |
| | | comment on column FLOW_DEFINITION.CREATE_TIME is 'å建æ¶é´'; |
| | | comment on column FLOW_DEFINITION.UPDATE_TIME is 'æ´æ°æ¶é´'; |
| | | comment on column FLOW_DEFINITION.DEL_FLAG is 'å 餿 å¿'; |
| | | comment on column FLOW_DEFINITION.TENANT_ID is 'ç§æ·id'; |
| | | |
| | | create table FLOW_NODE |
| | | ( |
| | | ID NUMBER(20) not null |
| | | constraint PK_WF_CATEGORY |
| | | primary key, |
| | | CATEGORY_NAME VARCHAR2(255), |
| | | CATEGORY_CODE VARCHAR2(255) |
| | | constraint UNI_CATEGORY_CODE |
| | | unique, |
| | | PARENT_ID NUMBER(20), |
| | | SORT_NUM NUMBER(10), |
| | | TENANT_ID VARCHAR2(20), |
| | | CREATE_DEPT NUMBER(20), |
| | | CREATE_BY NUMBER(20), |
| | | CREATE_TIME DATE, |
| | | UPDATE_BY NUMBER(20), |
| | | UPDATE_TIME DATE |
| | | ID NUMBER (20) not null, |
| | | NODE_TYPE NUMBER (1) not null, |
| | | DEFINITION_ID NUMBER (20) not null, |
| | | NODE_CODE VARCHAR2 (100) not null, |
| | | NODE_NAME VARCHAR2 (100), |
| | | NODE_RATIO NUMBER (6,3), |
| | | COORDINATE VARCHAR2 (100), |
| | | SKIP_ANY_NODE VARCHAR2 (100) default 'N', |
| | | ANY_NODE_SKIP VARCHAR2 (100), |
| | | LISTENER_TYPE VARCHAR2 (100), |
| | | LISTENER_PATH VARCHAR2 (500), |
| | | HANDLER_TYPE VARCHAR2 (100), |
| | | HANDLER_PATH VARCHAR2 (400), |
| | | FORM_CUSTOM VARCHAR2 (1) default 'N', |
| | | FORM_PATH VARCHAR2 (100), |
| | | VERSION VARCHAR2 (20), |
| | | CREATE_TIME DATE, |
| | | UPDATE_TIME DATE, |
| | | DEL_FLAG VARCHAR2 (1) default '0', |
| | | TENANT_ID VARCHAR2 (40), |
| | | PERMISSION_FLAG VARCHAR2 (200) |
| | | ); |
| | | |
| | | comment on table WF_CATEGORY is 'æµç¨åç±»'; |
| | | comment on column WF_CATEGORY.ID is '主é®'; |
| | | comment on column WF_CATEGORY.CATEGORY_NAME is 'åç±»åç§°'; |
| | | comment on column WF_CATEGORY.CATEGORY_CODE is 'åç±»ç¼ç '; |
| | | comment on column WF_CATEGORY.PARENT_ID is 'ç¶çº§id'; |
| | | comment on column WF_CATEGORY.SORT_NUM is 'æåº'; |
| | | comment on column WF_CATEGORY.TENANT_ID is 'ç§æ·ç¼å·'; |
| | | comment on column WF_CATEGORY.CREATE_DEPT is 'å建é¨é¨'; |
| | | comment on column WF_CATEGORY.CREATE_BY is 'å建è
'; |
| | | comment on column WF_CATEGORY.CREATE_TIME is 'å建æ¶é´'; |
| | | comment on column WF_CATEGORY.UPDATE_BY is 'æ´æ°è
'; |
| | | comment on column WF_CATEGORY.UPDATE_TIME is 'æ´æ°æ¶é´'; |
| | | INSERT INTO wf_category values (1, 'OA', 'OA', 0, 0, '000000', 103, 1, sysdate, 1, sysdate); |
| | | alter table FLOW_NODE add constraint PK_FLOW_NODE primary key (ID); |
| | | |
| | | create table WF_TASK_BACK_NODE |
| | | comment on table FLOW_NODE is 'æµç¨èç¹è¡¨'; |
| | | comment on column FLOW_NODE.ID is '主é®id'; |
| | | comment on column FLOW_NODE.NODE_TYPE is 'èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼'; |
| | | comment on column FLOW_NODE.DEFINITION_ID is '对åºflow_definition表çid'; |
| | | comment on column FLOW_NODE.NODE_CODE is 'æµç¨èç¹ç¼ç '; |
| | | comment on column FLOW_NODE.NODE_NAME is 'æµç¨èç¹åç§°'; |
| | | comment on column FLOW_NODE.NODE_RATIO is 'æµç¨ç¾ç½²æ¯ä¾å¼'; |
| | | comment on column FLOW_NODE.COORDINATE is 'åæ '; |
| | | comment on column FLOW_NODE.SKIP_ANY_NODE is 'æ¯å¦å¯ä»¥éåä»»æèç¹ï¼Yæ¯ Nå¦ï¼å³å°å é¤'; |
| | | comment on column FLOW_NODE.ANY_NODE_SKIP is 'ä»»æç»ç¹è·³è½¬'; |
| | | comment on column FLOW_NODE.LISTENER_TYPE is 'çå¬å¨ç±»å'; |
| | | comment on column FLOW_NODE.LISTENER_PATH is 'çå¬å¨è·¯å¾'; |
| | | comment on column FLOW_NODE.HANDLER_TYPE is 'å¤çå¨ç±»å'; |
| | | comment on column FLOW_NODE.HANDLER_PATH is 'å¤çå¨è·¯å¾'; |
| | | comment on column FLOW_NODE.FORM_CUSTOM is '审æ¹è¡¨åæ¯å¦èªå®ä¹ (Yæ¯ Nå¦)'; |
| | | comment on column FLOW_NODE.FORM_PATH is '审æ¹è¡¨åè·¯å¾'; |
| | | comment on column FLOW_NODE.VERSION is 'çæ¬'; |
| | | comment on column FLOW_NODE.CREATE_TIME is 'å建æ¶é´'; |
| | | comment on column FLOW_NODE.UPDATE_TIME is 'æ´æ°æ¶é´'; |
| | | comment on column FLOW_NODE.DEL_FLAG is 'å 餿 å¿'; |
| | | comment on column FLOW_NODE.TENANT_ID is 'ç§æ·id'; |
| | | comment on column FLOW_NODE.PERMISSION_FLAG is 'æéæ è¯ï¼æéç±»å:æéæ è¯ï¼å¯ä»¥å¤ä¸ªï¼ç¨éå·éå¼)'; |
| | | |
| | | create table FLOW_SKIP |
| | | ( |
| | | ID NUMBER(20) not null |
| | | constraint PK_WF_TASK_BACK_NODE |
| | | primary key, |
| | | NODE_ID VARCHAR2(255) not null, |
| | | NODE_NAME VARCHAR2(255) not null, |
| | | ORDER_NO NUMBER(20) not null, |
| | | INSTANCE_ID VARCHAR2(255) not null, |
| | | TASK_TYPE VARCHAR2(255) not null, |
| | | ASSIGNEE VARCHAR2(2000) not null, |
| | | TENANT_ID VARCHAR2(20), |
| | | CREATE_DEPT NUMBER(20), |
| | | CREATE_BY NUMBER(20), |
| | | CREATE_TIME DATE, |
| | | UPDATE_BY NUMBER(20), |
| | | UPDATE_TIME DATE |
| | | ID NUMBER (20) not null, |
| | | DEFINITION_ID NUMBER (20) not null, |
| | | NOW_NODE_CODE VARCHAR2 (100) not null, |
| | | NOW_NODE_TYPE NUMBER (1), |
| | | NEXT_NODE_CODE VARCHAR2 (100) not null, |
| | | NEXT_NODE_TYPE NUMBER (1), |
| | | SKIP_NAME VARCHAR2 (100), |
| | | SKIP_TYPE VARCHAR2 (40), |
| | | SKIP_CONDITION VARCHAR2 (200), |
| | | COORDINATE VARCHAR2 (100), |
| | | CREATE_TIME DATE, |
| | | UPDATE_TIME DATE, |
| | | DEL_FLAG VARCHAR2 (1) default '0', |
| | | TENANT_ID VARCHAR2 (40) |
| | | ); |
| | | comment on table WF_TASK_BACK_NODE is 'èç¹å®¡æ¹è®°å½'; |
| | | comment on column WF_TASK_BACK_NODE.ID is '主é®'; |
| | | comment on column WF_TASK_BACK_NODE.NODE_ID is 'èç¹id'; |
| | | comment on column WF_TASK_BACK_NODE.NODE_NAME is 'èç¹åç§°'; |
| | | comment on column WF_TASK_BACK_NODE.ORDER_NO is 'æåº'; |
| | | comment on column WF_TASK_BACK_NODE.INSTANCE_ID is 'æµç¨å®ä¾id'; |
| | | comment on column WF_TASK_BACK_NODE.TASK_TYPE is 'èç¹ç±»å'; |
| | | comment on column WF_TASK_BACK_NODE.ASSIGNEE is '审æ¹äºº'; |
| | | comment on column WF_TASK_BACK_NODE.TENANT_ID is 'ç§æ·ç¼å·'; |
| | | comment on column WF_TASK_BACK_NODE.CREATE_DEPT is 'å建é¨é¨'; |
| | | comment on column WF_TASK_BACK_NODE.CREATE_BY is 'å建è
'; |
| | | comment on column WF_TASK_BACK_NODE.CREATE_TIME is 'å建æ¶é´'; |
| | | comment on column WF_TASK_BACK_NODE.UPDATE_BY is 'æ´æ°è
'; |
| | | comment on column WF_TASK_BACK_NODE.UPDATE_TIME is 'æ´æ°æ¶é´'; |
| | | |
| | | create table WF_DEFINITION_CONFIG |
| | | alter table FLOW_SKIP add constraint PK_FLOW_SKIP primary key (ID); |
| | | |
| | | comment on table FLOW_SKIP is 'èç¹è·³è½¬å
³è表'; |
| | | comment on column FLOW_SKIP.ID is '主é®id'; |
| | | comment on column FLOW_SKIP.DEFINITION_ID is 'æµç¨å®ä¹id'; |
| | | comment on column FLOW_SKIP.NOW_NODE_CODE is 'å½åæµç¨èç¹ç±»å (0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³)'; |
| | | comment on column FLOW_SKIP.NOW_NODE_TYPE is 'ä¸ä¸ä¸ªæµç¨èç¹ç±»å (0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³)'; |
| | | comment on column FLOW_SKIP.NEXT_NODE_CODE is 'ä¸ä¸ä¸ªæµç¨èç¹ç¼ç '; |
| | | comment on column FLOW_SKIP.NEXT_NODE_TYPE is 'ä¸ä¸ä¸ªæµç¨èç¹ç±»å (0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³)'; |
| | | comment on column FLOW_SKIP.SKIP_NAME is '跳转åç§°'; |
| | | comment on column FLOW_SKIP.SKIP_TYPE is '跳转类å (PASS审æ¹éè¿ REJECTéå)'; |
| | | comment on column FLOW_SKIP.SKIP_CONDITION is '跳转æ¡ä»¶'; |
| | | comment on column FLOW_SKIP.COORDINATE is 'åæ '; |
| | | comment on column FLOW_SKIP.CREATE_TIME is 'å建æ¶é´'; |
| | | comment on column FLOW_SKIP.UPDATE_TIME is 'æ´æ°æ¶é´'; |
| | | comment on column FLOW_SKIP.DEL_FLAG is 'å 餿 å¿'; |
| | | comment on column FLOW_SKIP.TENANT_ID is 'ç§æ·id'; |
| | | |
| | | create table FLOW_INSTANCE |
| | | ( |
| | | ID NUMBER(20) NOT NULL |
| | | CONSTRAINT PK_WF_DEFINITION_CONFIG |
| | | PRIMARY KEY, |
| | | TABLE_NAME VARCHAR2(255) NOT NULL, |
| | | DEFINITION_ID VARCHAR2(255) NOT NULL, |
| | | PROCESS_KEY VARCHAR2(255) NOT NULL, |
| | | VERSION NUMBER(10) NOT NULL, |
| | | REMARK VARCHAR2(500), |
| | | TENANT_ID VARCHAR2(20), |
| | | CREATE_DEPT NUMBER(20), |
| | | CREATE_BY NUMBER(20), |
| | | CREATE_TIME DATE, |
| | | UPDATE_BY NUMBER(20), |
| | | UPDATE_TIME DATE, |
| | | constraint uni_definition_id |
| | | unique (definition_id) |
| | | ID NUMBER not null, |
| | | DEFINITION_ID NUMBER not null, |
| | | BUSINESS_ID VARCHAR2 (40) not null, |
| | | NODE_TYPE NUMBER (1), |
| | | NODE_CODE VARCHAR2 (100), |
| | | NODE_NAME VARCHAR2 (100), |
| | | VARIABLE CLOB, |
| | | FLOW_STATUS VARCHAR2 (20), |
| | | ACTIVITY_STATUS NUMBER (1) default 1, |
| | | CREATE_BY VARCHAR2 (64) default '', |
| | | CREATE_TIME DATE, |
| | | UPDATE_TIME DATE, |
| | | EXT VARCHAR2 (500), |
| | | DEL_FLAG VARCHAR2 (1) default '0', |
| | | TENANT_ID VARCHAR2 (40) |
| | | ); |
| | | comment on table WF_DEFINITION_CONFIG is 'æµç¨å®ä¹é
ç½®'; |
| | | comment on column WF_DEFINITION_CONFIG.ID is '主é®'; |
| | | comment on column WF_DEFINITION_CONFIG.TABLE_NAME is '表å'; |
| | | comment on column WF_DEFINITION_CONFIG.DEFINITION_ID is 'æµç¨å®ä¹ID'; |
| | | comment on column WF_DEFINITION_CONFIG.PROCESS_KEY is 'æµç¨KEY'; |
| | | comment on column WF_DEFINITION_CONFIG.VERSION is 'æµç¨çæ¬'; |
| | | comment on column WF_DEFINITION_CONFIG.TENANT_ID is 'ç§æ·ç¼å·'; |
| | | comment on column WF_DEFINITION_CONFIG.REMARK is '夿³¨'; |
| | | comment on column WF_DEFINITION_CONFIG.CREATE_DEPT is 'å建é¨é¨'; |
| | | comment on column WF_DEFINITION_CONFIG.CREATE_BY is 'å建è
'; |
| | | comment on column WF_DEFINITION_CONFIG.CREATE_TIME is 'å建æ¶é´'; |
| | | comment on column WF_DEFINITION_CONFIG.UPDATE_BY is 'æ´æ°è
'; |
| | | comment on column WF_DEFINITION_CONFIG.UPDATE_TIME is 'æ´æ°æ¶é´'; |
| | | |
| | | create table WF_FORM_MANAGE |
| | | alter table FLOW_INSTANCE add constraint PK_FLOW_INSTANCE primary key (ID); |
| | | |
| | | comment on table FLOW_INSTANCE is 'æµç¨å®ä¾è¡¨'; |
| | | comment on column FLOW_INSTANCE.ID is '主é®id'; |
| | | comment on column FLOW_INSTANCE.DEFINITION_ID is '对åºflow_definition表çid'; |
| | | comment on column FLOW_INSTANCE.BUSINESS_ID is 'ä¸å¡id'; |
| | | comment on column FLOW_INSTANCE.NODE_TYPE is 'å¼å§èç¹ç±»å (0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³)'; |
| | | comment on column FLOW_INSTANCE.NODE_CODE is 'å¼å§èç¹ç¼ç '; |
| | | comment on column FLOW_INSTANCE.NODE_NAME is 'å¼å§èç¹åç§°'; |
| | | comment on column FLOW_INSTANCE.VARIABLE is 'ä»»å¡åé'; |
| | | comment on column FLOW_INSTANCE.FLOW_STATUS is 'æµç¨ç¶æï¼0å¾
æäº¤ 1审æ¹ä¸ 2 审æ¹éè¿ 3èªå¨éè¿ 4ç»æ¢ 5ä½åº 6æ¤é 7åå 8已宿 9å·²éå 10失æï¼'; |
| | | comment on column FLOW_INSTANCE.ACTIVITY_STATUS is 'æµç¨æ¿æ´»ç¶æï¼0æèµ· 1æ¿æ´»ï¼'; |
| | | comment on column FLOW_INSTANCE.CREATE_BY is 'å建è
'; |
| | | comment on column FLOW_INSTANCE.CREATE_TIME is 'å建æ¶é´'; |
| | | comment on column FLOW_INSTANCE.UPDATE_TIME is 'æ´æ°æ¶é´'; |
| | | comment on column FLOW_INSTANCE.EXT is 'æ©å±å段ï¼é¢çç»ä¸å¡ç³»ç»ä½¿ç¨'; |
| | | comment on column FLOW_INSTANCE.DEL_FLAG is 'å 餿 å¿'; |
| | | comment on column FLOW_INSTANCE.TENANT_ID is 'ç§æ·id'; |
| | | |
| | | create table FLOW_TASK |
| | | ( |
| | | ID NUMBER(20) NOT NULL |
| | | CONSTRAINT PK_WF_FORM_MANAGE |
| | | PRIMARY KEY, |
| | | FORM_NAME VARCHAR2(255) NOT NULL, |
| | | FORM_TYPE VARCHAR2(255) NOT NULL, |
| | | ROUTER VARCHAR2(255) NOT NULL, |
| | | REMARK VARCHAR2(500), |
| | | TENANT_ID VARCHAR2(20), |
| | | CREATE_DEPT NUMBER(20), |
| | | CREATE_BY NUMBER(20), |
| | | CREATE_TIME DATE, |
| | | UPDATE_BY NUMBER(20), |
| | | UPDATE_TIME DATE |
| | | ID NUMBER (20) not null, |
| | | DEFINITION_ID NUMBER (20) not null, |
| | | INSTANCE_ID NUMBER (20) not null, |
| | | NODE_CODE VARCHAR2 (100), |
| | | NODE_NAME VARCHAR2 (100), |
| | | NODE_TYPE NUMBER (1), |
| | | FORM_CUSTOM VARCHAR2 (1) default 'N', |
| | | FORM_PATH VARCHAR2 (100), |
| | | CREATE_TIME DATE, |
| | | UPDATE_TIME DATE, |
| | | DEL_FLAG VARCHAR2 (1) default '0', |
| | | TENANT_ID VARCHAR2 (40) |
| | | ); |
| | | |
| | | comment on table WF_FORM_MANAGE is '表å管ç'; |
| | | comment on column WF_FORM_MANAGE.ID is '主é®'; |
| | | comment on column WF_FORM_MANAGE.FORM_NAME is '表ååç§°'; |
| | | comment on column WF_FORM_MANAGE.FORM_TYPE is '表åç±»å'; |
| | | comment on column WF_FORM_MANAGE.ROUTER is 'è·¯ç±å°å/表åID'; |
| | | comment on column WF_FORM_MANAGE.REMARK is '夿³¨'; |
| | | comment on column WF_FORM_MANAGE.TENANT_ID is 'ç§æ·ç¼å·'; |
| | | comment on column WF_FORM_MANAGE.CREATE_DEPT is 'å建é¨é¨'; |
| | | comment on column WF_FORM_MANAGE.CREATE_BY is 'å建è
'; |
| | | comment on column WF_FORM_MANAGE.CREATE_TIME is 'å建æ¶é´'; |
| | | comment on column WF_FORM_MANAGE.UPDATE_BY is 'æ´æ°è
'; |
| | | comment on column WF_FORM_MANAGE.UPDATE_TIME is 'æ´æ°æ¶é´'; |
| | | alter table FLOW_TASK add constraint PK_FLOW_TASK primary key (ID); |
| | | |
| | | insert into wf_form_manage(id, form_name, form_type, router, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time) VALUES (1, '请åç³è¯·', 'static', '/workflow/leaveEdit/index', NULL, '000000', 103, 1, sysdate, 1, sysdate); |
| | | comment on table FLOW_TASK is 'å¾
åä»»å¡è¡¨'; |
| | | comment on column FLOW_TASK.ID is '主é®id'; |
| | | comment on column FLOW_TASK.DEFINITION_ID is '对åºflow_definition表çid'; |
| | | comment on column FLOW_TASK.INSTANCE_ID is '对åºflow_instance表çid'; |
| | | comment on column FLOW_TASK.NODE_CODE is 'èç¹ç¼ç '; |
| | | comment on column FLOW_TASK.NODE_NAME is 'èç¹åç§°'; |
| | | comment on column FLOW_TASK.NODE_TYPE is 'èç¹ç±»å (0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³)'; |
| | | comment on column FLOW_TASK.FORM_CUSTOM is '审æ¹è¡¨åæ¯å¦èªå®ä¹ (Yæ¯ Nå¦)'; |
| | | comment on column FLOW_TASK.FORM_PATH is '审æ¹è¡¨åè·¯å¾'; |
| | | comment on column FLOW_TASK.CREATE_TIME is 'å建æ¶é´'; |
| | | comment on column FLOW_TASK.UPDATE_TIME is 'æ´æ°æ¶é´'; |
| | | comment on column FLOW_TASK.DEL_FLAG is 'å 餿 å¿'; |
| | | comment on column FLOW_TASK.TENANT_ID is 'ç§æ·id'; |
| | | |
| | | create table WF_NODE_CONFIG |
| | | create table FLOW_HIS_TASK |
| | | ( |
| | | ID NUMBER(20) NOT NULL |
| | | CONSTRAINT PK_WF_NODE_CONFIG |
| | | PRIMARY KEY, |
| | | FORM_ID NUMBER(20), |
| | | FORM_TYPE VARCHAR2(255), |
| | | NODE_NAME VARCHAR2(255) NOT NULL, |
| | | NODE_ID VARCHAR2(255) NOT NULL, |
| | | DEFINITION_ID VARCHAR2(255) NOT NULL, |
| | | APPLY_USER_TASK CHAR(1) DEFAULT '0', |
| | | TENANT_ID VARCHAR2(20), |
| | | CREATE_DEPT NUMBER(20), |
| | | CREATE_BY NUMBER(20), |
| | | CREATE_TIME DATE, |
| | | UPDATE_BY NUMBER(20), |
| | | UPDATE_TIME DATE |
| | | ID NUMBER (20) not null, |
| | | DEFINITION_ID NUMBER (20) not null, |
| | | INSTANCE_ID NUMBER (20) not null, |
| | | TASK_ID NUMBER (20) not null, |
| | | NODE_CODE VARCHAR2 (100), |
| | | NODE_NAME VARCHAR2 (100), |
| | | NODE_TYPE NUMBER (1), |
| | | TARGET_NODE_CODE VARCHAR2 (100), |
| | | TARGET_NODE_NAME VARCHAR2 (100), |
| | | APPROVER VARCHAR2 (40), |
| | | COOPERATE_TYPE NUMBER (1) default 0, |
| | | COLLABORATOR VARCHAR2 (40), |
| | | SKIP_TYPE VARCHAR2 (10), |
| | | FLOW_STATUS VARCHAR2 (20), |
| | | FORM_CUSTOM VARCHAR2 (1) default 'N', |
| | | FORM_PATH VARCHAR2 (100), |
| | | MESSAGE VARCHAR2 (500), |
| | | EXT VARCHAR2 (500), |
| | | CREATE_TIME DATE, |
| | | UPDATE_TIME DATE, |
| | | DEL_FLAG VARCHAR2 (1) default '0', |
| | | TENANT_ID VARCHAR2 (40) |
| | | ); |
| | | |
| | | comment on table WF_NODE_CONFIG is 'èç¹é
ç½®'; |
| | | comment on column WF_NODE_CONFIG.ID is '主é®'; |
| | | comment on column WF_NODE_CONFIG.FORM_ID is '表åid'; |
| | | comment on column WF_NODE_CONFIG.FORM_TYPE is '表åç±»å'; |
| | | comment on column WF_NODE_CONFIG.NODE_ID is 'èç¹id'; |
| | | comment on column WF_NODE_CONFIG.NODE_NAME is 'èç¹åç§°'; |
| | | comment on column WF_NODE_CONFIG.DEFINITION_ID is 'æµç¨å®ä¹id'; |
| | | comment on column WF_NODE_CONFIG.APPLY_USER_TASK is 'æ¯å¦ä¸ºç³è¯·äººèç¹ ï¼0æ¯ 1å¦ï¼'; |
| | | comment on column WF_NODE_CONFIG.TENANT_ID is 'ç§æ·ç¼å·'; |
| | | comment on column WF_NODE_CONFIG.CREATE_DEPT is 'å建é¨é¨'; |
| | | comment on column WF_NODE_CONFIG.CREATE_BY is 'å建è
'; |
| | | comment on column WF_NODE_CONFIG.CREATE_TIME is 'å建æ¶é´'; |
| | | comment on column WF_NODE_CONFIG.UPDATE_BY is 'æ´æ°è
'; |
| | | comment on column WF_NODE_CONFIG.UPDATE_TIME is 'æ´æ°æ¶é´'; |
| | | alter table FLOW_HIS_TASK add constraint PK_FLOW_HIS_TASK primary key (ID); |
| | | |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11638, '请åç³è¯·', 5, 1, 'leave', 'workflow/leave/index', 1, 0, 'C', '0', '0', 'workflow:leave:list', '#', 103, 1, sysdate, NULL, NULL, '请åç³è¯·èå'); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11639, '请åç³è¯·æ¥è¯¢', 11638, 1, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, sysdate, NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11640, '请åç³è¯·æ°å¢', 11638, 2, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:add', '#', 103, 1, sysdate, NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11641, '请åç³è¯·ä¿®æ¹', 11638, 3, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:edit', '#', 103, 1, sysdate, NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11642, '请åç³è¯·å é¤', 11638, 4, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:remove', '#', 103, 1, sysdate, NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11643, '请åç³è¯·å¯¼åº', 11638, 5, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:export', '#', 103, 1, sysdate, NULL, NULL, ''); |
| | | comment on table FLOW_HIS_TASK is 'åå²ä»»å¡è®°å½è¡¨'; |
| | | comment on column FLOW_HIS_TASK.ID is '主é®id'; |
| | | comment on column FLOW_HIS_TASK.DEFINITION_ID is '对åºflow_definition表çid'; |
| | | comment on column FLOW_HIS_TASK.INSTANCE_ID is '对åºflow_instance表çid'; |
| | | comment on column FLOW_HIS_TASK.TASK_ID is '对åºflow_task表çid'; |
| | | comment on column FLOW_HIS_TASK.NODE_CODE is 'å¼å§èç¹ç¼ç '; |
| | | comment on column FLOW_HIS_TASK.NODE_NAME is 'å¼å§èç¹åç§°'; |
| | | comment on column FLOW_HIS_TASK.NODE_TYPE is 'å¼å§èç¹ç±»å (0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³)'; |
| | | comment on column FLOW_HIS_TASK.TARGET_NODE_CODE is 'ç®æ èç¹ç¼ç '; |
| | | comment on column FLOW_HIS_TASK.TARGET_NODE_NAME is 'ç®æ èç¹åç§°'; |
| | | comment on column FLOW_HIS_TASK.SKIP_TYPE is 'æµè½¬ç±»åï¼PASSéè¿ REJECTéå NONEæ å¨ä½ï¼'; |
| | | comment on column FLOW_HIS_TASK.FLOW_STATUS is 'æµç¨ç¶æï¼1审æ¹ä¸ 2 审æ¹éè¿ 9å·²éå 10失æï¼'; |
| | | comment on column FLOW_HIS_TASK.FORM_CUSTOM is '审æ¹è¡¨åæ¯å¦èªå®ä¹ (Yæ¯ Nå¦)'; |
| | | comment on column FLOW_HIS_TASK.FORM_PATH is '审æ¹è¡¨åè·¯å¾'; |
| | | comment on column FLOW_HIS_TASK.MESSAGE is 'å®¡æ¹æè§'; |
| | | comment on column FLOW_HIS_TASK.EXT is 'æ©å±å段ï¼é¢çç»ä¸å¡ç³»ç»ä½¿ç¨'; |
| | | comment on column FLOW_HIS_TASK.CREATE_TIME is 'ä»»å¡å¼å§æ¶é´'; |
| | | comment on column FLOW_HIS_TASK.UPDATE_TIME is '审æ¹å®ææ¶é´'; |
| | | comment on column FLOW_HIS_TASK.DEL_FLAG is 'å 餿 å¿'; |
| | | comment on column FLOW_HIS_TASK.TENANT_ID is 'ç§æ·id'; |
| | | comment on column FLOW_HIS_TASK.APPROVER is '审æ¹è
'; |
| | | comment on column FLOW_HIS_TASK.COOPERATE_TYPE is 'å使¹å¼(1å®¡æ¹ 2转å 3å§æ´¾ 4ä¼ç¾ 5ç¥¨ç¾ 6å ç¾ 7åç¾)'; |
| | | comment on column FLOW_HIS_TASK.COLLABORATOR is 'åä½äºº'; |
| | | |
| | | INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (13, '000000', 'ä¸å¡ç¶æ', 'wf_business_status', 103, 1, sysdate, NULL, NULL, 'ä¸å¡ç¶æå表'); |
| | | INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (14, '000000', '表åç±»å', 'wf_form_type', 103, 1, sysdate, NULL, NULL, '表åç±»åå表'); |
| | | create table FLOW_USER |
| | | ( |
| | | ID NUMBER (20) not null, |
| | | TYPE VARCHAR2 (1) not null, |
| | | PROCESSED_BY VARCHAR2 (80), |
| | | ASSOCIATED NUMBER (20) not null, |
| | | CREATE_TIME DATE, |
| | | CREATE_BY VARCHAR2 (80), |
| | | UPDATE_TIME DATE, |
| | | DEL_FLAG VARCHAR2 (1) default '0', |
| | | TENANT_ID VARCHAR2 (40) |
| | | ); |
| | | |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (39, '000000', 1, 'å·²æ¤é', 'cancel', 'wf_business_status', '', 'danger', 'N', 103, 1, sysdate, NULL, NULL, 'å·²æ¤é'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (40, '000000', 2, 'è稿', 'draft', 'wf_business_status', '', 'info', 'N', 103, 1, sysdate, NULL, NULL, 'è稿'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (41, '000000', 3, 'å¾
å®¡æ ¸', 'waiting', 'wf_business_status', '', 'primary', 'N', 103, 1,sysdate, NULL, NULL, 'å¾
å®¡æ ¸'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (42, '000000', 4, '已宿', 'finish', 'wf_business_status', '', 'success', 'N', 103, 1, sysdate, NULL, NULL, '已宿'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (43, '000000', 5, 'å·²ä½åº', 'invalid', 'wf_business_status', '', 'danger', 'N', 103, 1, sysdate, NULL, NULL, 'å·²ä½åº'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (44, '000000', 6, 'å·²éå', 'back', 'wf_business_status', '', 'danger', 'N', 103, 1, sysdate, NULL, NULL, 'å·²éå'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (45, '000000', 7, 'å·²ç»æ¢', 'termination', 'wf_business_status', '', 'danger', 'N', 103, 1,sysdate, NULL, NULL, 'å·²ç»æ¢'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (46, '000000', 1, 'èªå®ä¹è¡¨å', 'static', 'wf_form_type', '', 'success', 'N', 103, 1, sysdate, NULL, NULL, 'èªå®ä¹è¡¨å'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (47, '000000', 2, 'å¨æè¡¨å', 'dynamic', 'wf_form_type', '', 'primary', 'N', 103, 1, sysdate, NULL, NULL, 'å¨æè¡¨å'); |
| | | alter table FLOW_USER add constraint PK_FLOW_USER primary key (ID); |
| | | |
| | | -- 表å管ç SQL |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11628, '表å管ç', '11616', '5', 'formManage', 'workflow/formManage/index', 1, 0, 'C', '0', '0', 'workflow:formManage:list', 'tree-table', 103, 1, sysdate, null, null, '表å管çèå'); |
| | | comment on table FLOW_USER is 'å¾
åä»»å¡è¡¨'; |
| | | comment on column FLOW_USER.ID is '主é®id'; |
| | | comment on column FLOW_USER.TYPE is '人åç±»åï¼1å¾
åä»»å¡ç审æ¹äººæé 2å¾
åä»»å¡ç转å人æé 3å¾
åä»»å¡çå§æäººæéï¼'; |
| | | comment on column FLOW_USER.PROCESSED_BY is 'æé人)'; |
| | | comment on column FLOW_USER.ASSOCIATED is 'ä»»å¡è¡¨id'; |
| | | comment on column FLOW_USER.CREATE_TIME is 'å建æ¶é´'; |
| | | comment on column FLOW_USER.CREATE_BY is 'èç¹åç§°'; |
| | | comment on column FLOW_USER.UPDATE_TIME is 'æ´æ°æ¶é´'; |
| | | comment on column FLOW_USER.DEL_FLAG is 'å 餿 å¿'; |
| | | comment on column FLOW_USER.TENANT_ID is 'ç§æ·id'; |
| | | |
| | | -- 表å管çæé® SQL |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11644, '表åç®¡çæ¥è¯¢', 11628, '1', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:query', '', 103, 1, sysdate, null, null, ''); |
| | | create index USER_PROCESSED_TYPE on FLOW_USER (PROCESSED_BY, TYPE); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11645, '表åç®¡çæ°å¢', 11628, '2', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:add', '', 103, 1, sysdate, null, null, ''); |
| | | -- ---------------------------- |
| | | -- æµç¨å类表 |
| | | -- ---------------------------- |
| | | CREATE TABLE flow_category |
| | | ( |
| | | category_id NUMBER (20) NOT NULL, |
| | | tenant_id VARCHAR2 (20) DEFAULT '000000', |
| | | parent_id NUMBER (20) DEFAULT 0, |
| | | ancestors VARCHAR2 (500) DEFAULT '', |
| | | category_name VARCHAR2 (30) NOT NULL, |
| | | order_num NUMBER (4) DEFAULT 0, |
| | | del_flag CHAR(1) DEFAULT '0', |
| | | create_dept NUMBER (20), |
| | | create_by NUMBER (20), |
| | | create_time DATE, |
| | | update_by NUMBER (20), |
| | | update_time DATE |
| | | ); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11646, '表å管çä¿®æ¹', 11628, '3', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:edit', '', 103, 1, sysdate, null, null, ''); |
| | | alter table flow_category add constraint pk_flow_category primary key (category_id); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11647, '表å管çå é¤', 11628, '4', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:remove', '', 103, 1, sysdate, null, null, ''); |
| | | COMMENT ON TABLE flow_category IS 'æµç¨åç±»'; |
| | | COMMENT ON COLUMN flow_category.category_id IS 'æµç¨åç±»ID'; |
| | | COMMENT ON COLUMN flow_category.tenant_id IS 'ç§æ·ç¼å·'; |
| | | COMMENT ON COLUMN flow_category.parent_id IS 'ç¶æµç¨åç±»id'; |
| | | COMMENT ON COLUMN flow_category.ancestors IS 'ç¥çº§å表'; |
| | | COMMENT ON COLUMN flow_category.category_name IS 'æµç¨åç±»åç§°'; |
| | | COMMENT ON COLUMN flow_category.order_num IS 'æ¾ç¤ºé¡ºåº'; |
| | | COMMENT ON COLUMN flow_category.del_flag IS 'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼'; |
| | | COMMENT ON COLUMN flow_category.create_dept IS 'å建é¨é¨'; |
| | | COMMENT ON COLUMN flow_category.create_by IS 'å建è
'; |
| | | COMMENT ON COLUMN flow_category.create_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN flow_category.update_by IS 'æ´æ°è
'; |
| | | COMMENT ON COLUMN flow_category.update_time IS 'æ´æ°æ¶é´'; |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11648, '表å管ç导åº', 11628, '5', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:export', 'tree-table', 103, 1, sysdate, null, null, ''); |
| | | INSERT INTO flow_category VALUES (100, '000000', 0, '0', 'OA审æ¹', 0, '0', 103, 1, SYSDATE, NULL, NULL); |
| | | INSERT INTO flow_category VALUES (101, '000000', 100, '0,100', 'åå¤ç®¡ç', 0, '0', 103, 1, SYSDATE, NULL, NULL); |
| | | INSERT INTO flow_category VALUES (102, '000000', 100, '0,100', '人äºç®¡ç', 0, '0', 103, 1, SYSDATE, NULL, NULL); |
| | | INSERT INTO flow_category VALUES (103, '000000', 101, '0,100,101', '请å', 0, '0', 103, 1, SYSDATE, NULL, NULL); |
| | | INSERT INTO flow_category VALUES (104, '000000', 101, '0,100,101', 'åºå·®', 1, '0', 103, 1, SYSDATE, NULL, NULL); |
| | | INSERT INTO flow_category VALUES (105, '000000', 101, '0,100,101', 'å ç', 2, '0', 103, 1, SYSDATE, NULL, NULL); |
| | | INSERT INTO flow_category VALUES (106, '000000', 101, '0,100,101', 'æ¢ç', 3, '0', 103, 1, SYSDATE, NULL, NULL); |
| | | INSERT INTO flow_category VALUES (107, '000000', 101, '0,100,101', 'å¤åº', 4, '0', 103, 1, SYSDATE, NULL, NULL); |
| | | INSERT INTO flow_category VALUES (108, '000000', 102, '0,100,102', '转æ£', 1, '0', 103, 1, SYSDATE, NULL, NULL); |
| | | INSERT INTO flow_category VALUES (109, '000000', 102, '0,100,102', '离è', 2, '0', 103, 1, SYSDATE, NULL, NULL); |
| | | |
| | | |
| | | -- ---------------------------- |
| | | -- 请ååä¿¡æ¯ |
| | | -- ---------------------------- |
| | | CREATE TABLE test_leave |
| | | ( |
| | | id NUMBER (20) NOT NULL, |
| | | tenant_id VARCHAR2 (20) DEFAULT '000000', |
| | | leave_type VARCHAR2 (255) NOT NULL, |
| | | start_date DATE NOT NULL, |
| | | end_date DATE NOT NULL, |
| | | leave_days NUMBER (10) NOT NULL, |
| | | remark VARCHAR2 (255), |
| | | status VARCHAR2 (255), |
| | | create_dept NUMBER (20), |
| | | create_by NUMBER (20), |
| | | create_time DATE, |
| | | update_by NUMBER (20), |
| | | update_time DATE |
| | | ); |
| | | |
| | | alter table test_leave add constraint pk_test_leave primary key (id); |
| | | |
| | | COMMENT ON TABLE test_leave IS '请åç³è¯·è¡¨'; |
| | | COMMENT ON COLUMN test_leave.id IS 'ID'; |
| | | COMMENT ON COLUMN test_leave.tenant_id IS 'ç§æ·ç¼å·'; |
| | | COMMENT ON COLUMN test_leave.leave_type IS '请åç±»å'; |
| | | COMMENT ON COLUMN test_leave.start_date IS 'å¼å§æ¶é´'; |
| | | COMMENT ON COLUMN test_leave.end_date IS 'ç»ææ¶é´'; |
| | | COMMENT ON COLUMN test_leave.leave_days IS '请å天æ°'; |
| | | COMMENT ON COLUMN test_leave.remark IS '请ååå '; |
| | | COMMENT ON COLUMN test_leave.status IS 'ç¶æ'; |
| | | COMMENT ON COLUMN test_leave.create_dept IS 'å建é¨é¨'; |
| | | COMMENT ON COLUMN test_leave.create_by IS 'å建è
'; |
| | | COMMENT ON COLUMN test_leave.create_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN test_leave.update_by IS 'æ´æ°è
'; |
| | | COMMENT ON COLUMN test_leave.update_time IS 'æ´æ°æ¶é´'; |
| | | |
| | | INSERT INTO sys_menu VALUES ('11616', '工使µ', '0', '6', 'workflow', '', '', '1', '0', 'M', '0', '0', '', 'workflow', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11618', 'æçä»»å¡', '0', '7', 'task', '', '', '1', '0', 'M', '0', '0', '', 'my-task', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11619', 'æçå¾
å', '11618', '2', 'taskWaiting', 'workflow/task/taskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11632', 'æçå·²å', '11618', '3', 'taskFinish', 'workflow/task/taskFinish', '', '1', '1', 'C', '0', '0', '', 'finish', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11633', 'æçæé', '11618', '4', 'taskCopyList', 'workflow/task/taskCopyList', '', '1', '1', 'C', '0', '0', '', 'my-copy', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11620', 'æµç¨å®ä¹', '11616', '3', 'processDefinition', 'workflow/processDefinition/index', '', '1', '1', 'C', '0', '0', '', 'process-definition', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11621', 'æµç¨å®ä¾', '11630', '1', 'processInstance', 'workflow/processInstance/index', '', '1', '1', 'C', '0', '0', '', 'tree-table', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11622', 'æµç¨åç±»', '11616', '1', 'category', 'workflow/category/index', '', '1', '0', 'C', '0', '0', 'workflow:category:list', 'category', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11629', 'æåèµ·ç', '11618', '1', 'myDocument', 'workflow/task/myDocument', '', '1', '1', 'C', '0', '0', '', 'guide', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11630', 'æµç¨çæ§', '11616', '4', 'monitor', '', '', '1', '0', 'M', '0', '0', '', 'monitor', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11631', 'å¾
åä»»å¡', '11630', '2', 'allTaskWaiting', 'workflow/task/allTaskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | |
| | | INSERT INTO sys_menu VALUES ('11623', 'æµç¨åç±»æ¥è¯¢', '11622', '1', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:query', '#', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11624', 'æµç¨åç±»æ°å¢', '11622', '2', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:add', '#', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11625', 'æµç¨å类修æ¹', '11622', '3', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:edit', '#', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11626', 'æµç¨åç±»å é¤', '11622', '4', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:remove', '#', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11627', 'æµç¨å类导åº', '11622', '5', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | |
| | | INSERT INTO sys_menu VALUES ('11638', '请åç³è¯·', '5', '1', 'leave', 'workflow/leave/index', '', '1', '0', 'C', '0', '0', 'workflow:leave:list', '#', 103, 1, SYSDATE, NULL, NULL, '请åç³è¯·èå'); |
| | | INSERT INTO sys_menu VALUES ('11639', '请åç³è¯·æ¥è¯¢', '11638', '1', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11640', '请åç³è¯·æ°å¢', '11638', '2', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:add', '#', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11641', '请åç³è¯·ä¿®æ¹', '11638', '3', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:edit', '#', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11642', '请åç³è¯·å é¤', '11638', '4', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:remove', '#', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11643', '请åç³è¯·å¯¼åº', '11638', '5', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); |
| | | |
| | | INSERT INTO sys_dict_type VALUES (13, '000000', 'ä¸å¡ç¶æ', 'wf_business_status', 103, 1, SYSDATE, NULL, NULL, 'ä¸å¡ç¶æå表'); |
| | | INSERT INTO sys_dict_type VALUES (14, '000000', '表åç±»å', 'wf_form_type', 103, 1, SYSDATE, NULL, NULL, '表åç±»åå表'); |
| | | INSERT INTO sys_dict_type VALUES (15, '000000', 'ä»»å¡ç¶æ', 'wf_task_status', 103, 1, SYSDATE, NULL, NULL, 'ä»»å¡ç¶æ'); |
| | | INSERT INTO sys_dict_data VALUES (39, '000000', 1, 'å·²æ¤é', 'cancel', 'wf_business_status', '', 'danger', 'N', 103, 1, SYSDATE, NULL, NULL, 'å·²æ¤é'); |
| | | INSERT INTO sys_dict_data VALUES (40, '000000', 2, 'è稿', 'draft', 'wf_business_status', '', 'info', 'N', 103, 1, SYSDATE, NULL, NULL, 'è稿'); |
| | | INSERT INTO sys_dict_data VALUES (41, '000000', 3, 'å¾
å®¡æ ¸', 'waiting', 'wf_business_status', '', 'primary', 'N', 103, 1, SYSDATE, NULL, NULL, 'å¾
å®¡æ ¸'); |
| | | INSERT INTO sys_dict_data VALUES (42, '000000', 4, '已宿', 'finish', 'wf_business_status', '', 'success', 'N', 103, 1, SYSDATE, NULL, NULL, '已宿'); |
| | | INSERT INTO sys_dict_data VALUES (43, '000000', 5, 'å·²ä½åº', 'invalid', 'wf_business_status', '', 'danger', 'N', 103, 1, SYSDATE, NULL, NULL, 'å·²ä½åº'); |
| | | INSERT INTO sys_dict_data VALUES (44, '000000', 6, 'å·²éå', 'back', 'wf_business_status', '', 'danger', 'N', 103, 1, SYSDATE, NULL, NULL, 'å·²éå'); |
| | | INSERT INTO sys_dict_data VALUES (45, '000000', 7, 'å·²ç»æ¢', 'termination', 'wf_business_status', '', 'danger', 'N', 103, 1, SYSDATE, NULL, NULL, 'å·²ç»æ¢'); |
| | | INSERT INTO sys_dict_data VALUES (46, '000000', 1, 'èªå®ä¹è¡¨å', 'static', 'wf_form_type', '', 'success', 'N', 103, 1, SYSDATE, NULL, NULL, 'èªå®ä¹è¡¨å'); |
| | | INSERT INTO sys_dict_data VALUES (47, '000000', 2, 'å¨æè¡¨å', 'dynamic', 'wf_form_type', '', 'primary', 'N', 103, 1, SYSDATE, NULL, NULL, 'å¨æè¡¨å'); |
| | | INSERT INTO sys_dict_data VALUES (48, '000000', 1, 'æ¤é', 'cancel', 'wf_task_status', '', 'danger', 'N', 103, 1, SYSDATE, NULL, NULL, 'æ¤é'); |
| | | INSERT INTO sys_dict_data VALUES (49, '000000', 2, 'éè¿', 'pass', 'wf_task_status', '', 'success', 'N', 103, 1, SYSDATE, NULL, NULL, 'éè¿'); |
| | | INSERT INTO sys_dict_data VALUES (50, '000000', 3, 'å¾
å®¡æ ¸', 'waiting', 'wf_task_status', '', 'primary', 'N', 103, 1, SYSDATE, NULL, NULL, 'å¾
å®¡æ ¸'); |
| | | INSERT INTO sys_dict_data VALUES (51, '000000', 4, 'ä½åº', 'invalid', 'wf_task_status', '', 'danger', 'N', 103, 1, SYSDATE, NULL, NULL, 'ä½åº'); |
| | | INSERT INTO sys_dict_data VALUES (52, '000000', 5, 'éå', 'back', 'wf_task_status', '', 'danger', 'N', 103, 1, SYSDATE, NULL, NULL, 'éå'); |
| | | INSERT INTO sys_dict_data VALUES (53, '000000', 6, 'ç»æ¢', 'termination', 'wf_task_status', '', 'danger', 'N', 103, 1, SYSDATE, NULL, NULL, 'ç»æ¢'); |
| | | INSERT INTO sys_dict_data VALUES (54, '000000', 7, '转å', 'transfer', 'wf_task_status', '', 'primary', 'N', 103, 1, SYSDATE, NULL, NULL, '转å'); |
| | | INSERT INTO sys_dict_data VALUES (55, '000000', 8, 'å§æ', 'depute', 'wf_task_status', '', 'primary', 'N', 103, 1, SYSDATE, NULL, NULL, 'å§æ'); |
| | | INSERT INTO sys_dict_data VALUES (56, '000000', 9, 'æé', 'copy', 'wf_task_status', '', 'primary', 'N', 103, 1, SYSDATE, NULL, NULL, 'æé'); |
| | | INSERT INTO sys_dict_data VALUES (57, '000000', 10, 'å ç¾', 'sign', 'wf_task_status', '', 'primary', 'N', 103, 1, SYSDATE, NULL, NULL, 'å ç¾'); |
| | | INSERT INTO sys_dict_data VALUES (58, '000000', 11, 'åç¾', 'sign_off', 'wf_task_status', '', 'danger', 'N', 103, 1, SYSDATE, NULL, NULL, 'åç¾'); |
| | | INSERT INTO sys_dict_data VALUES (59, '000000', 11, 'è¶
æ¶', 'timeout', 'wf_task_status', '', 'danger', 'N', 103, 1, SYSDATE, NULL, NULL, 'è¶
æ¶'); |
| | |
| | | insert into sys_menu values('11616', '工使µ' , '0', '6', 'workflow', '', '', '1', '0', 'M', '0', '0', '', 'workflow', 103, 1, now(), NULL, NULL, ''); |
| | | insert into sys_menu values('11617', '模å管ç', '11616', '2', 'model', 'workflow/model/index', '', '1', '1', 'C', '0', '0', 'workflow:model:list', 'model', 103, 1, now(), NULL, NULL, ''); |
| | | insert into sys_menu values('11618', 'æçä»»å¡', '0', '7', 'task', '', '', '1', '0', 'M', '0', '0', '', 'my-task', 103, 1, now(), NULL, NULL, ''); |
| | | insert into sys_menu values('11619', 'æçå¾
å', '11618', '2', 'taskWaiting', 'workflow/task/taskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, now(), NULL, NULL, ''); |
| | | insert into sys_menu values('11632', 'æçå·²å', '11618', '3', 'taskFinish', 'workflow/task/taskFinish', '', '1', '1', 'C', '0', '0', '', 'finish', 103, 1, now(), NULL, NULL, ''); |
| | | insert into sys_menu values('11633', 'æçæé', '11618', '4', 'taskCopyList', 'workflow/task/taskCopyList', '', '1', '1', 'C', '0', '0', '', 'my-copy', 103, 1, now(), NULL, NULL, ''); |
| | | insert into sys_menu values('11620', 'æµç¨å®ä¹', '11616', '3', 'processDefinition', 'workflow/processDefinition/index', '', '1', '1', 'C', '0', '0', '', 'process-definition', 103, 1, now(), NULL, NULL, ''); |
| | | insert into sys_menu values('11621', 'æµç¨å®ä¾', '11630', '1', 'processInstance', 'workflow/processInstance/index', '', '1', '1', 'C', '0', '0', '', 'tree-table', 103, 1, now(), NULL, NULL, ''); |
| | | insert into sys_menu values('11622', 'æµç¨åç±»', '11616', '1', 'category', 'workflow/category/index', '', '1', '0', 'C', '0', '0', 'workflow:category:list', 'category', 103, 1, now(), NULL, NULL, ''); |
| | | insert into sys_menu values('11629', 'æåèµ·ç', '11618', '1', 'myDocument', 'workflow/task/myDocument', '', '1', '1', 'C', '0', '0', '', 'guide', 103, 1, now(), NULL, NULL, ''); |
| | | insert into sys_menu values('11630', 'æµç¨çæ§', '11616', '4', 'monitor', '', '', '1', '0', 'M', '0', '0', '', 'monitor', 103, 1, now(), NULL, NULL, ''); |
| | | insert into sys_menu values('11631', 'å¾
åä»»å¡', '11630', '2', 'allTaskWaiting', 'workflow/task/allTaskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, now(), NULL, NULL, ''); |
| | | -- ---------------------------- |
| | | -- 0ãwarm-flow-all.sqlï¼å°åï¼https://gitee.com/dromara/warm-flow/blob/master/sql/postgresql/postgresql-warm-flow-all.sql |
| | | -- ---------------------------- |
| | | CREATE TABLE flow_definition |
| | | ( |
| | | id int8 NOT NULL, -- 主é®id |
| | | flow_code varchar(40) NOT NULL, -- æµç¨ç¼ç |
| | | flow_name varchar(100) NOT NULL, -- æµç¨åç§° |
| | | category varchar(100) NULL, -- æµç¨ç±»å« |
| | | "version" varchar(20) NOT NULL, -- æµç¨çæ¬ |
| | | is_publish int2 NOT NULL DEFAULT 0, -- æ¯å¦åå¸ï¼0æªåå¸ 1å·²åå¸ 9失æï¼ |
| | | form_custom bpchar(1) NULL DEFAULT 'N':: character varying, -- 审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼ |
| | | form_path varchar(100) NULL, -- 审æ¹è¡¨åè·¯å¾ |
| | | activity_status int2 NOT NULL DEFAULT 1, -- æµç¨æ¿æ´»ç¶æï¼0æèµ· 1æ¿æ´»ï¼ |
| | | listener_type varchar(100) NULL, -- çå¬å¨ç±»å |
| | | listener_path varchar(400) NULL, -- çå¬å¨è·¯å¾ |
| | | ext varchar(500) NULL, -- æ©å±å段ï¼é¢çç»ä¸å¡ç³»ç»ä½¿ç¨ |
| | | create_time timestamp NULL, -- å建æ¶é´ |
| | | update_time timestamp NULL, -- æ´æ°æ¶é´ |
| | | del_flag bpchar(1) NULL DEFAULT '0':: character varying, -- å 餿 å¿ |
| | | tenant_id varchar(40) NULL, -- ç§æ·id |
| | | CONSTRAINT flow_definition_pkey PRIMARY KEY (id) |
| | | ); |
| | | COMMENT ON TABLE flow_definition IS 'æµç¨å®ä¹è¡¨'; |
| | | |
| | | COMMENT ON COLUMN flow_definition.id IS '主é®id'; |
| | | COMMENT ON COLUMN flow_definition.flow_code IS 'æµç¨ç¼ç '; |
| | | COMMENT ON COLUMN flow_definition.flow_name IS 'æµç¨åç§°'; |
| | | COMMENT ON COLUMN flow_definition.category IS 'æµç¨ç±»å«'; |
| | | COMMENT ON COLUMN flow_definition."version" IS 'æµç¨çæ¬'; |
| | | COMMENT ON COLUMN flow_definition.is_publish IS 'æ¯å¦åå¸ï¼0æªåå¸ 1å·²åå¸ 9失æï¼'; |
| | | COMMENT ON COLUMN flow_definition.form_custom IS '审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼'; |
| | | COMMENT ON COLUMN flow_definition.form_path IS '审æ¹è¡¨åè·¯å¾'; |
| | | COMMENT ON COLUMN flow_definition.activity_status IS 'æµç¨æ¿æ´»ç¶æï¼0æèµ· 1æ¿æ´»ï¼'; |
| | | COMMENT ON COLUMN flow_definition.listener_type IS 'çå¬å¨ç±»å'; |
| | | COMMENT ON COLUMN flow_definition.listener_path IS 'çå¬å¨è·¯å¾'; |
| | | COMMENT ON COLUMN flow_definition.ext IS 'æ©å±å段ï¼é¢çç»ä¸å¡ç³»ç»ä½¿ç¨'; |
| | | COMMENT ON COLUMN flow_definition.create_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN flow_definition.update_time IS 'æ´æ°æ¶é´'; |
| | | COMMENT ON COLUMN flow_definition.del_flag IS 'å 餿 å¿'; |
| | | COMMENT ON COLUMN flow_definition.tenant_id IS 'ç§æ·id'; |
| | | |
| | | CREATE TABLE flow_node |
| | | ( |
| | | id int8 NOT NULL, -- 主é®id |
| | | node_type int2 NOT NULL, -- èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼ |
| | | definition_id int8 NOT NULL, -- æµç¨å®ä¹id |
| | | node_code varchar(100) NOT NULL, -- æµç¨èç¹ç¼ç |
| | | node_name varchar(100) NULL, -- æµç¨èç¹åç§° |
| | | permission_flag varchar(200) NULL, -- æéæ è¯ï¼æéç±»å:æéæ è¯ï¼å¯ä»¥å¤ä¸ªï¼ç¨éå·éå¼) |
| | | node_ratio numeric(6, 3) NULL, -- æµç¨ç¾ç½²æ¯ä¾å¼ |
| | | coordinate varchar(100) NULL, -- åæ |
| | | skip_any_node varchar(100) NULL DEFAULT 'N':: character varying, -- æ¯å¦å¯ä»¥éåä»»æèç¹ï¼Yæ¯ Nå¦ï¼å³å°å é¤ |
| | | any_node_skip varchar(100) NULL, -- ä»»æç»ç¹è·³è½¬ |
| | | listener_type varchar(100) NULL, -- çå¬å¨ç±»å |
| | | listener_path varchar(400) NULL, -- çå¬å¨è·¯å¾ |
| | | handler_type varchar(100) NULL, -- å¤çå¨ç±»å |
| | | handler_path varchar(400) NULL, -- å¤çå¨è·¯å¾ |
| | | form_custom bpchar(1) NULL DEFAULT 'N':: character varying, -- 审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼ |
| | | form_path varchar(100) NULL, -- 审æ¹è¡¨åè·¯å¾ |
| | | "version" varchar(20) NOT NULL, -- çæ¬ |
| | | create_time timestamp NULL, -- å建æ¶é´ |
| | | update_time timestamp NULL, -- æ´æ°æ¶é´ |
| | | del_flag bpchar(1) NULL DEFAULT '0':: character varying, -- å 餿 å¿ |
| | | tenant_id varchar(40) NULL, -- ç§æ·id |
| | | CONSTRAINT flow_node_pkey PRIMARY KEY (id) |
| | | ); |
| | | COMMENT ON TABLE flow_node IS 'æµç¨èç¹è¡¨'; |
| | | |
| | | COMMENT ON COLUMN flow_node.id IS '主é®id'; |
| | | COMMENT ON COLUMN flow_node.node_type IS 'èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼'; |
| | | COMMENT ON COLUMN flow_node.definition_id IS 'æµç¨å®ä¹id'; |
| | | COMMENT ON COLUMN flow_node.node_code IS 'æµç¨èç¹ç¼ç '; |
| | | COMMENT ON COLUMN flow_node.node_name IS 'æµç¨èç¹åç§°'; |
| | | COMMENT ON COLUMN flow_node.permission_flag IS 'æéæ è¯ï¼æéç±»å:æéæ è¯ï¼å¯ä»¥å¤ä¸ªï¼ç¨éå·éå¼)'; |
| | | COMMENT ON COLUMN flow_node.node_ratio IS 'æµç¨ç¾ç½²æ¯ä¾å¼'; |
| | | COMMENT ON COLUMN flow_node.coordinate IS 'åæ '; |
| | | COMMENT ON COLUMN flow_node.skip_any_node IS 'æ¯å¦å¯ä»¥éåä»»æèç¹ï¼Yæ¯ Nå¦ï¼å³å°å é¤'; |
| | | COMMENT ON COLUMN flow_node.any_node_skip IS 'ä»»æç»ç¹è·³è½¬'; |
| | | COMMENT ON COLUMN flow_node.listener_type IS 'çå¬å¨ç±»å'; |
| | | COMMENT ON COLUMN flow_node.listener_path IS 'çå¬å¨è·¯å¾'; |
| | | COMMENT ON COLUMN flow_node.handler_type IS 'å¤çå¨ç±»å'; |
| | | COMMENT ON COLUMN flow_node.handler_path IS 'å¤çå¨è·¯å¾'; |
| | | COMMENT ON COLUMN flow_node.form_custom IS '审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼'; |
| | | COMMENT ON COLUMN flow_node.form_path IS '审æ¹è¡¨åè·¯å¾'; |
| | | COMMENT ON COLUMN flow_node."version" IS 'çæ¬'; |
| | | COMMENT ON COLUMN flow_node.create_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN flow_node.update_time IS 'æ´æ°æ¶é´'; |
| | | COMMENT ON COLUMN flow_node.del_flag IS 'å 餿 å¿'; |
| | | COMMENT ON COLUMN flow_node.tenant_id IS 'ç§æ·id'; |
| | | |
| | | |
| | | -- æµç¨å类管çç¸å
³æé® |
| | | insert into sys_menu values ('11623', 'æµç¨åç±»æ¥è¯¢', '11622', '1', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:query', '#', 103, 1, now(), null, null, ''); |
| | | insert into sys_menu values ('11624', 'æµç¨åç±»æ°å¢', '11622', '2', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:add', '#', 103, 1, now(), null, null, ''); |
| | | insert into sys_menu values ('11625', 'æµç¨å类修æ¹', '11622', '3', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:edit', '#', 103, 1, now(), null, null, ''); |
| | | insert into sys_menu values ('11626', 'æµç¨åç±»å é¤', '11622', '4', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:remove','#', 103, 1, now(), null, null, ''); |
| | | insert into sys_menu values ('11627', 'æµç¨å类导åº', '11622', '5', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:export','#', 103, 1, now(), null, null, ''); |
| | | CREATE TABLE flow_skip |
| | | ( |
| | | id int8 NOT NULL, -- 主é®id |
| | | definition_id int8 NOT NULL, -- æµç¨å®ä¹id |
| | | now_node_code varchar(100) NOT NULL, -- å½åæµç¨èç¹çç¼ç |
| | | now_node_type int2 NULL, -- å½åèç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼ |
| | | next_node_code varchar(100) NOT NULL, -- ä¸ä¸ä¸ªæµç¨èç¹çç¼ç |
| | | next_node_type int2 NULL, -- ä¸ä¸ä¸ªèç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼ |
| | | skip_name varchar(100) NULL, -- 跳转åç§° |
| | | skip_type varchar(40) NULL, -- 跳转类åï¼PASS审æ¹éè¿ REJECTéåï¼ |
| | | skip_condition varchar(200) NULL, -- 跳转æ¡ä»¶ |
| | | coordinate varchar(100) NULL, -- åæ |
| | | create_time timestamp NULL, -- å建æ¶é´ |
| | | update_time timestamp NULL, -- æ´æ°æ¶é´ |
| | | del_flag bpchar(1) NULL DEFAULT '0':: character varying, -- å 餿 å¿ |
| | | tenant_id varchar(40) NULL, -- ç§æ·id |
| | | CONSTRAINT flow_skip_pkey PRIMARY KEY (id) |
| | | ); |
| | | COMMENT ON TABLE flow_skip IS 'èç¹è·³è½¬å
³è表'; |
| | | |
| | | COMMENT ON COLUMN flow_skip.id IS '主é®id'; |
| | | COMMENT ON COLUMN flow_skip.definition_id IS 'æµç¨å®ä¹id'; |
| | | COMMENT ON COLUMN flow_skip.now_node_code IS 'å½åæµç¨èç¹çç¼ç '; |
| | | COMMENT ON COLUMN flow_skip.now_node_type IS 'å½åèç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼'; |
| | | COMMENT ON COLUMN flow_skip.next_node_code IS 'ä¸ä¸ä¸ªæµç¨èç¹çç¼ç '; |
| | | COMMENT ON COLUMN flow_skip.next_node_type IS 'ä¸ä¸ä¸ªèç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼'; |
| | | COMMENT ON COLUMN flow_skip.skip_name IS '跳转åç§°'; |
| | | COMMENT ON COLUMN flow_skip.skip_type IS '跳转类åï¼PASS审æ¹éè¿ REJECTéåï¼'; |
| | | COMMENT ON COLUMN flow_skip.skip_condition IS '跳转æ¡ä»¶'; |
| | | COMMENT ON COLUMN flow_skip.coordinate IS 'åæ '; |
| | | COMMENT ON COLUMN flow_skip.create_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN flow_skip.update_time IS 'æ´æ°æ¶é´'; |
| | | COMMENT ON COLUMN flow_skip.del_flag IS 'å 餿 å¿'; |
| | | COMMENT ON COLUMN flow_skip.tenant_id IS 'ç§æ·id'; |
| | | |
| | | CREATE TABLE flow_instance |
| | | ( |
| | | id int8 NOT NULL, -- 主é®id |
| | | definition_id int8 NOT NULL, -- 对åºflow_definition表çid |
| | | business_id varchar(40) NOT NULL, -- ä¸å¡id |
| | | node_type int2 NOT NULL, -- èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼ |
| | | node_code varchar(40) NOT NULL, -- æµç¨èç¹ç¼ç |
| | | node_name varchar(100) NULL, -- æµç¨èç¹åç§° |
| | | variable text NULL, -- ä»»å¡åé |
| | | flow_status varchar(20) NOT NULL, -- æµç¨ç¶æï¼0å¾
æäº¤ 1审æ¹ä¸ 2 审æ¹éè¿ 8已宿 9å·²éå 10失æï¼ |
| | | activity_status int2 NOT NULL DEFAULT 1, -- æµç¨æ¿æ´»ç¶æï¼0æèµ· 1æ¿æ´»ï¼ |
| | | create_by varchar(64) NULL DEFAULT '':: character varying, -- å建è
|
| | | create_time timestamp NULL, -- å建æ¶é´ |
| | | update_time timestamp NULL, -- æ´æ°æ¶é´ |
| | | ext varchar(500) NULL, -- æ©å±å段ï¼é¢çç»ä¸å¡ç³»ç»ä½¿ç¨ |
| | | del_flag bpchar(1) NULL DEFAULT '0':: character varying, -- å 餿 å¿ |
| | | tenant_id varchar(40) NULL, -- ç§æ·id |
| | | CONSTRAINT flow_instance_pkey PRIMARY KEY (id) |
| | | ); |
| | | COMMENT ON TABLE flow_instance IS 'æµç¨å®ä¾è¡¨'; |
| | | |
| | | COMMENT ON COLUMN flow_instance.id IS '主é®id'; |
| | | COMMENT ON COLUMN flow_instance.definition_id IS '对åºflow_definition表çid'; |
| | | COMMENT ON COLUMN flow_instance.business_id IS 'ä¸å¡id'; |
| | | COMMENT ON COLUMN flow_instance.node_type IS 'èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼'; |
| | | COMMENT ON COLUMN flow_instance.node_code IS 'æµç¨èç¹ç¼ç '; |
| | | COMMENT ON COLUMN flow_instance.node_name IS 'æµç¨èç¹åç§°'; |
| | | COMMENT ON COLUMN flow_instance.variable IS 'ä»»å¡åé'; |
| | | COMMENT ON COLUMN flow_instance.flow_status IS 'æµç¨ç¶æï¼0å¾
æäº¤ 1审æ¹ä¸ 2 审æ¹éè¿ 3èªå¨éè¿ 4ç»æ¢ 5ä½åº 6æ¤é 7åå 8已宿 9å·²éå 10失æï¼'; |
| | | COMMENT ON COLUMN flow_instance.activity_status IS 'æµç¨æ¿æ´»ç¶æï¼0æèµ· 1æ¿æ´»ï¼'; |
| | | COMMENT ON COLUMN flow_instance.create_by IS 'å建è
'; |
| | | COMMENT ON COLUMN flow_instance.create_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN flow_instance.update_time IS 'æ´æ°æ¶é´'; |
| | | COMMENT ON COLUMN flow_instance.ext IS 'æ©å±å段ï¼é¢çç»ä¸å¡ç³»ç»ä½¿ç¨'; |
| | | COMMENT ON COLUMN flow_instance.del_flag IS 'å 餿 å¿'; |
| | | COMMENT ON COLUMN flow_instance.tenant_id IS 'ç§æ·id'; |
| | | |
| | | CREATE TABLE flow_task |
| | | ( |
| | | id int8 NOT NULL, -- 主é®id |
| | | definition_id int8 NOT NULL, -- 对åºflow_definition表çid |
| | | instance_id int8 NOT NULL, -- 对åºflow_instance表çid |
| | | node_code varchar(100) NOT NULL, -- èç¹ç¼ç |
| | | node_name varchar(100) NULL, -- èç¹åç§° |
| | | node_type int2 NOT NULL, -- èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼ |
| | | form_custom bpchar(1) NULL DEFAULT 'N':: character varying, -- 审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼ |
| | | form_path varchar(100) NULL, -- 审æ¹è¡¨åè·¯å¾ |
| | | create_time timestamp NULL, -- å建æ¶é´ |
| | | update_time timestamp NULL, -- æ´æ°æ¶é´ |
| | | del_flag bpchar(1) NULL DEFAULT '0':: character varying, -- å 餿 å¿ |
| | | tenant_id varchar(40) NULL, -- ç§æ·id |
| | | CONSTRAINT flow_task_pkey PRIMARY KEY (id) |
| | | ); |
| | | COMMENT ON TABLE flow_task IS 'å¾
åä»»å¡è¡¨'; |
| | | |
| | | COMMENT ON COLUMN flow_task.id IS '主é®id'; |
| | | COMMENT ON COLUMN flow_task.definition_id IS '对åºflow_definition表çid'; |
| | | COMMENT ON COLUMN flow_task.instance_id IS '对åºflow_instance表çid'; |
| | | COMMENT ON COLUMN flow_task.node_code IS 'èç¹ç¼ç '; |
| | | COMMENT ON COLUMN flow_task.node_name IS 'èç¹åç§°'; |
| | | COMMENT ON COLUMN flow_task.node_type IS 'èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼'; |
| | | COMMENT ON COLUMN flow_task.form_custom IS '审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼'; |
| | | COMMENT ON COLUMN flow_task.form_path IS '审æ¹è¡¨åè·¯å¾'; |
| | | COMMENT ON COLUMN flow_task.create_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN flow_task.update_time IS 'æ´æ°æ¶é´'; |
| | | COMMENT ON COLUMN flow_task.del_flag IS 'å 餿 å¿'; |
| | | COMMENT ON COLUMN flow_task.tenant_id IS 'ç§æ·id'; |
| | | |
| | | CREATE TABLE flow_his_task |
| | | ( |
| | | id int8 NOT NULL, -- 主é®id |
| | | definition_id int8 NOT NULL, -- 对åºflow_definition表çid |
| | | instance_id int8 NOT NULL, -- 对åºflow_instance表çid |
| | | task_id int8 NOT NULL, -- 对åºflow_task表çid |
| | | node_code varchar(100) NULL, -- å¼å§èç¹ç¼ç |
| | | node_name varchar(100) NULL, -- å¼å§èç¹åç§° |
| | | node_type int2 NULL, -- å¼å§èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼ |
| | | target_node_code varchar(100) NULL, -- ç®æ èç¹ç¼ç |
| | | target_node_name varchar(100) NULL, -- ç»æèç¹åç§° |
| | | approver varchar(40) NULL, -- 审æ¹è
|
| | | cooperate_type int2 NOT NULL DEFAULT 0, -- å使¹å¼(1å®¡æ¹ 2转å 3å§æ´¾ 4ä¼ç¾ 5ç¥¨ç¾ 6å ç¾ 7åç¾) |
| | | collaborator varchar(40) NULL, -- åä½äºº(åªæè½¬åãä¼ç¾ã票ç¾ãå§æ´¾) |
| | | skip_type varchar(10) NULL, -- æµè½¬ç±»åï¼PASSéè¿ REJECTéå NONEæ å¨ä½ï¼ |
| | | flow_status varchar(20) NOT NULL, -- æµç¨ç¶æï¼0å¾
æäº¤ 1审æ¹ä¸ 2 审æ¹éè¿ 8已宿 9å·²éå 10失æï¼ |
| | | form_custom bpchar(1) NULL DEFAULT 'N':: character varying, -- 审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼ |
| | | form_path varchar(100) NULL, -- 审æ¹è¡¨åè·¯å¾ |
| | | ext varchar(500) NULL, -- æ©å±å段ï¼é¢çç»ä¸å¡ç³»ç»ä½¿ç¨ |
| | | message varchar(500) NULL, -- å®¡æ¹æè§ |
| | | create_time timestamp NULL, -- å建æ¶é´ |
| | | update_time timestamp NULL, -- æ´æ°æ¶é´ |
| | | del_flag bpchar(1) NULL DEFAULT '0':: character varying, -- å 餿 å¿ |
| | | tenant_id varchar(40) NULL, -- ç§æ·id |
| | | CONSTRAINT flow_his_task_pkey PRIMARY KEY (id) |
| | | ); |
| | | COMMENT ON TABLE flow_his_task IS 'åå²ä»»å¡è®°å½è¡¨'; |
| | | |
| | | COMMENT ON COLUMN flow_his_task.id IS '主é®id'; |
| | | COMMENT ON COLUMN flow_his_task.definition_id IS '对åºflow_definition表çid'; |
| | | COMMENT ON COLUMN flow_his_task.instance_id IS '对åºflow_instance表çid'; |
| | | COMMENT ON COLUMN flow_his_task.task_id IS '对åºflow_task表çid'; |
| | | COMMENT ON COLUMN flow_his_task.node_code IS 'å¼å§èç¹ç¼ç '; |
| | | COMMENT ON COLUMN flow_his_task.node_name IS 'å¼å§èç¹åç§°'; |
| | | COMMENT ON COLUMN flow_his_task.node_type IS 'å¼å§èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼'; |
| | | COMMENT ON COLUMN flow_his_task.target_node_code IS 'ç®æ èç¹ç¼ç '; |
| | | COMMENT ON COLUMN flow_his_task.target_node_name IS 'ç»æèç¹åç§°'; |
| | | COMMENT ON COLUMN flow_his_task.approver IS '审æ¹è
'; |
| | | COMMENT ON COLUMN flow_his_task.cooperate_type IS 'å使¹å¼(1å®¡æ¹ 2转å 3å§æ´¾ 4ä¼ç¾ 5ç¥¨ç¾ 6å ç¾ 7åç¾)'; |
| | | COMMENT ON COLUMN flow_his_task.collaborator IS 'åä½äºº'; |
| | | COMMENT ON COLUMN flow_his_task.skip_type IS 'æµè½¬ç±»åï¼PASSéè¿ REJECTéå NONEæ å¨ä½ï¼'; |
| | | COMMENT ON COLUMN flow_his_task.flow_status IS 'æµç¨ç¶æï¼1审æ¹ä¸ 2 审æ¹éè¿ 9å·²éå 10失æï¼'; |
| | | COMMENT ON COLUMN flow_his_task.form_custom IS '审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼'; |
| | | COMMENT ON COLUMN flow_his_task.form_path IS '审æ¹è¡¨åè·¯å¾'; |
| | | COMMENT ON COLUMN flow_his_task.message IS 'å®¡æ¹æè§'; |
| | | COMMENT ON COLUMN flow_his_task.ext IS 'æ©å±å段ï¼é¢çç»ä¸å¡ç³»ç»ä½¿ç¨'; |
| | | COMMENT ON COLUMN flow_his_task.create_time IS 'ä»»å¡å¼å§æ¶é´'; |
| | | COMMENT ON COLUMN flow_his_task.update_time IS '审æ¹å®ææ¶é´'; |
| | | COMMENT ON COLUMN flow_his_task.del_flag IS 'å 餿 å¿'; |
| | | COMMENT ON COLUMN flow_his_task.tenant_id IS 'ç§æ·id'; |
| | | |
| | | CREATE TABLE flow_user |
| | | ( |
| | | id int8 NOT NULL, -- 主é®id |
| | | "type" bpchar(1) NOT NULL, -- 人åç±»åï¼1å¾
åä»»å¡ç审æ¹äººæé 2å¾
åä»»å¡ç转å人æé 3æµç¨å®ä¾çæé人æé 4å¾
åä»»å¡çå§æäººæéï¼ |
| | | processed_by varchar(80) NULL, -- æé人 |
| | | associated int8 NOT NULL, -- ä»»å¡è¡¨id |
| | | create_time timestamp NULL, -- å建æ¶é´ |
| | | create_by varchar(80) NULL, -- å建人 |
| | | update_time timestamp NULL, -- æ´æ°æ¶é´ |
| | | del_flag bpchar(1) NULL DEFAULT '0':: character varying, -- å 餿 å¿ |
| | | tenant_id varchar(40) NULL, -- ç§æ·id |
| | | CONSTRAINT flow_user_pk PRIMARY KEY (id) |
| | | ); |
| | | CREATE INDEX user_processed_type ON flow_user USING btree (processed_by, type); |
| | | COMMENT ON TABLE flow_user IS 'æµç¨ç¨æ·è¡¨'; |
| | | |
| | | COMMENT ON COLUMN flow_user.id IS '主é®id'; |
| | | COMMENT ON COLUMN flow_user."type" IS '人åç±»åï¼1å¾
åä»»å¡ç审æ¹äººæé 2å¾
åä»»å¡ç转å人æé 3å¾
åä»»å¡çå§æäººæéï¼'; |
| | | COMMENT ON COLUMN flow_user.processed_by IS 'æé人'; |
| | | COMMENT ON COLUMN flow_user.associated IS 'ä»»å¡è¡¨id'; |
| | | COMMENT ON COLUMN flow_user.create_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN flow_user.create_by IS 'å建人'; |
| | | COMMENT ON COLUMN flow_user.update_time IS 'æ´æ°æ¶é´'; |
| | | COMMENT ON COLUMN flow_user.del_flag IS 'å 餿 å¿'; |
| | | COMMENT ON COLUMN flow_user.tenant_id IS 'ç§æ·id'; |
| | | |
| | | -- ---------------------------- |
| | | -- æµç¨å类表 |
| | | -- ---------------------------- |
| | | CREATE TABLE flow_category |
| | | ( |
| | | category_id int8 NOT NULL, |
| | | tenant_id VARCHAR(20) DEFAULT '000000'::varchar, |
| | | parent_id int8 DEFAULT 0, |
| | | ancestors VARCHAR(500) DEFAULT ''::varchar, |
| | | category_name VARCHAR(30) NOT NULL, |
| | | order_num INT DEFAULT 0, |
| | | del_flag CHAR DEFAULT '0'::bpchar, |
| | | create_dept int8, |
| | | create_by int8, |
| | | create_time TIMESTAMP, |
| | | update_by int8, |
| | | update_time TIMESTAMP, |
| | | PRIMARY KEY (category_id) |
| | | ); |
| | | |
| | | COMMENT ON TABLE flow_category IS 'æµç¨åç±»'; |
| | | COMMENT ON COLUMN flow_category.category_id IS 'æµç¨åç±»ID'; |
| | | COMMENT ON COLUMN flow_category.tenant_id IS 'ç§æ·ç¼å·'; |
| | | COMMENT ON COLUMN flow_category.parent_id IS 'ç¶æµç¨åç±»id'; |
| | | COMMENT ON COLUMN flow_category.ancestors IS 'ç¥çº§å表'; |
| | | COMMENT ON COLUMN flow_category.category_name IS 'æµç¨åç±»åç§°'; |
| | | COMMENT ON COLUMN flow_category.order_num IS 'æ¾ç¤ºé¡ºåº'; |
| | | COMMENT ON COLUMN flow_category.del_flag IS 'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼'; |
| | | COMMENT ON COLUMN flow_category.create_dept IS 'å建é¨é¨'; |
| | | COMMENT ON COLUMN flow_category.create_by IS 'å建è
'; |
| | | COMMENT ON COLUMN flow_category.create_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN flow_category.update_by IS 'æ´æ°è
'; |
| | | COMMENT ON COLUMN flow_category.update_time IS 'æ´æ°æ¶é´'; |
| | | |
| | | INSERT INTO flow_category VALUES (100, '000000', 0, '0', 'OA审æ¹', 0, '0', 103, 1, now(), NULL, NULL); |
| | | INSERT INTO flow_category VALUES (101, '000000', 100, '0,100', 'åå¤ç®¡ç', 0, '0', 103, 1, now(), NULL, NULL); |
| | | INSERT INTO flow_category VALUES (102, '000000', 100, '0,100', '人äºç®¡ç', 0, '0', 103, 1, now(), NULL, NULL); |
| | | INSERT INTO flow_category VALUES (103, '000000', 101, '0,100,101', '请å', 0, '0', 103, 1, now(), NULL, NULL); |
| | | INSERT INTO flow_category VALUES (104, '000000', 101, '0,100,101', 'åºå·®', 1, '0', 103, 1, now(), NULL, NULL); |
| | | INSERT INTO flow_category VALUES (105, '000000', 101, '0,100,101', 'å ç', 2, '0', 103, 1, now(), NULL, NULL); |
| | | INSERT INTO flow_category VALUES (106, '000000', 101, '0,100,101', 'æ¢ç', 3, '0', 103, 1, now(), NULL, NULL); |
| | | INSERT INTO flow_category VALUES (107, '000000', 101, '0,100,101', 'å¤åº', 4, '0', 103, 1, now(), NULL, NULL); |
| | | INSERT INTO flow_category VALUES (108, '000000', 102, '0,100,102', '转æ£', 1, '0', 103, 1, now(), NULL, NULL); |
| | | INSERT INTO flow_category VALUES (109, '000000', 102, '0,100,102', '离è', 2, '0', 103, 1, now(), NULL, NULL); |
| | | |
| | | -- ---------------------------- |
| | | -- 请ååä¿¡æ¯ |
| | | create table test_leave |
| | | -- ---------------------------- |
| | | CREATE TABLE test_leave |
| | | ( |
| | | id bigint not null |
| | | constraint test_leave_pk |
| | | primary key, |
| | | leave_type varchar(255), |
| | | start_date timestamp, |
| | | end_date timestamp, |
| | | leave_days bigint, |
| | | remark varchar(255), |
| | | status varchar(255), |
| | | create_dept bigint, |
| | | create_by bigint, |
| | | create_time timestamp, |
| | | update_by bigint, |
| | | update_time timestamp, |
| | | tenant_id varchar(20) |
| | | id int8 NOT NULL, |
| | | tenant_id VARCHAR(20) DEFAULT '000000'::varchar, |
| | | leave_type VARCHAR(255) NOT NULL, |
| | | start_date TIMESTAMP NOT NULL, |
| | | end_date TIMESTAMP NOT NULL, |
| | | leave_days int2 NOT NULL, |
| | | remark VARCHAR(255), |
| | | status VARCHAR(255), |
| | | create_dept int8, |
| | | create_by int8, |
| | | create_time TIMESTAMP, |
| | | update_by int8, |
| | | update_time TIMESTAMP, |
| | | PRIMARY KEY (id) |
| | | ); |
| | | |
| | | comment on table test_leave is '请åç³è¯·è¡¨'; |
| | | comment on column test_leave.id is '主é®'; |
| | | comment on column test_leave.leave_type is '请åç±»å'; |
| | | comment on column test_leave.start_date is 'å¼å§æ¶é´'; |
| | | comment on column test_leave.end_date is 'ç»ææ¶é´'; |
| | | comment on column test_leave.remark is '请ååå '; |
| | | comment on column test_leave.status is 'ç¶æ'; |
| | | comment on column test_leave.create_dept is 'å建é¨é¨'; |
| | | comment on column test_leave.create_by is 'å建è
'; |
| | | comment on column test_leave.create_time is 'å建æ¶é´'; |
| | | comment on column test_leave.update_by is 'æ´æ°è
'; |
| | | comment on column test_leave.update_time is 'æ´æ°æ¶é´'; |
| | | comment on column test_leave.tenant_id is 'ç§æ·ç¼ç '; |
| | | COMMENT ON TABLE test_leave IS '请åç³è¯·è¡¨'; |
| | | COMMENT ON COLUMN test_leave.id IS 'id'; |
| | | COMMENT ON COLUMN test_leave.tenant_id IS 'ç§æ·ç¼å·'; |
| | | COMMENT ON COLUMN test_leave.leave_type IS '请åç±»å'; |
| | | COMMENT ON COLUMN test_leave.start_date IS 'å¼å§æ¶é´'; |
| | | COMMENT ON COLUMN test_leave.end_date IS 'ç»ææ¶é´'; |
| | | COMMENT ON COLUMN test_leave.leave_days IS '请å天æ°'; |
| | | COMMENT ON COLUMN test_leave.remark IS '请ååå '; |
| | | COMMENT ON COLUMN test_leave.status IS 'ç¶æ'; |
| | | COMMENT ON COLUMN test_leave.create_dept IS 'å建é¨é¨'; |
| | | COMMENT ON COLUMN test_leave.create_by IS 'å建è
'; |
| | | COMMENT ON COLUMN test_leave.create_time IS 'å建æ¶é´'; |
| | | COMMENT ON COLUMN test_leave.update_by IS 'æ´æ°è
'; |
| | | COMMENT ON COLUMN test_leave.update_time IS 'æ´æ°æ¶é´'; |
| | | |
| | | alter table test_leave |
| | | owner to postgres; |
| | | INSERT INTO sys_menu VALUES ('11616', '工使µ', '0', '6', 'workflow', '', '', '1', '0', 'M', '0', '0', '', 'workflow', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11618', 'æçä»»å¡', '0', '7', 'task', '', '', '1', '0', 'M', '0', '0', '', 'my-task', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11619', 'æçå¾
å', '11618', '2', 'taskWaiting', 'workflow/task/taskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11632', 'æçå·²å', '11618', '3', 'taskFinish', 'workflow/task/taskFinish', '', '1', '1', 'C', '0', '0', '', 'finish', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11633', 'æçæé', '11618', '4', 'taskCopyList', 'workflow/task/taskCopyList', '', '1', '1', 'C', '0', '0', '', 'my-copy', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11620', 'æµç¨å®ä¹', '11616', '3', 'processDefinition', 'workflow/processDefinition/index', '', '1', '1', 'C', '0', '0', '', 'process-definition', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11621', 'æµç¨å®ä¾', '11630', '1', 'processInstance', 'workflow/processInstance/index', '', '1', '1', 'C', '0', '0', '', 'tree-table', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11622', 'æµç¨åç±»', '11616', '1', 'category', 'workflow/category/index', '', '1', '0', 'C', '0', '0', 'workflow:category:list', 'category', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11629', 'æåèµ·ç', '11618', '1', 'myDocument', 'workflow/task/myDocument', '', '1', '1', 'C', '0', '0', '', 'guide', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11630', 'æµç¨çæ§', '11616', '4', 'monitor', '', '', '1', '0', 'M', '0', '0', '', 'monitor', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11631', 'å¾
åä»»å¡', '11630', '2', 'allTaskWaiting', 'workflow/task/allTaskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11623', 'æµç¨åç±»æ¥è¯¢', '11622', '1', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:query', '#', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11624', 'æµç¨åç±»æ°å¢', '11622', '2', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:add', '#', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11625', 'æµç¨å类修æ¹', '11622', '3', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:edit', '#', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11626', 'æµç¨åç±»å é¤', '11622', '4', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:remove', '#', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11627', 'æµç¨å类导åº', '11622', '5', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:export', '#', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11638', '请åç³è¯·', '5', '1', 'leave', 'workflow/leave/index', '', '1', '0', 'C', '0', '0', 'workflow:leave:list', '#', 103, 1, now(), NULL, NULL, '请åç³è¯·èå'); |
| | | INSERT INTO sys_menu VALUES ('11639', '请åç³è¯·æ¥è¯¢', '11638', '1', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11640', '请åç³è¯·æ°å¢', '11638', '2', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:add', '#', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11641', '请åç³è¯·ä¿®æ¹', '11638', '3', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:edit', '#', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11642', '请åç³è¯·å é¤', '11638', '4', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:remove', '#', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu VALUES ('11643', '请åç³è¯·å¯¼åº', '11638', '5', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:export', '#', 103, 1, now(), NULL, NULL, ''); |
| | | |
| | | -- æµç¨å类信æ¯è¡¨ |
| | | create table wf_category |
| | | ( |
| | | id bigint not null |
| | | constraint wf_category_pk |
| | | primary key, |
| | | category_name varchar(255), |
| | | category_code varchar(255), |
| | | parent_id bigint, |
| | | sort_num bigint, |
| | | tenant_id varchar(20), |
| | | create_dept bigint, |
| | | create_by bigint, |
| | | create_time timestamp, |
| | | update_by bigint, |
| | | update_time timestamp |
| | | ); |
| | | INSERT INTO sys_dict_type VALUES (13, '000000', 'ä¸å¡ç¶æ', 'wf_business_status', 103, 1, now(), NULL, NULL, 'ä¸å¡ç¶æå表'); |
| | | INSERT INTO sys_dict_type VALUES (14, '000000', '表åç±»å', 'wf_form_type', 103, 1, now(), NULL, NULL, '表åç±»åå表'); |
| | | INSERT INTO sys_dict_type VALUES (15, '000000', 'ä»»å¡ç¶æ', 'wf_task_status', 103, 1, now(), NULL, NULL, 'ä»»å¡ç¶æ'); |
| | | INSERT INTO sys_dict_data VALUES (39, '000000', 1, 'å·²æ¤é', 'cancel', 'wf_business_status', '', 'danger', 'N', 103, 1, now(), NULL, NULL, 'å·²æ¤é'); |
| | | INSERT INTO sys_dict_data VALUES (40, '000000', 2, 'è稿', 'draft', 'wf_business_status', '', 'info', 'N', 103, 1, now(), NULL, NULL, 'è稿'); |
| | | INSERT INTO sys_dict_data VALUES (41, '000000', 3, 'å¾
å®¡æ ¸', 'waiting', 'wf_business_status', '', 'primary', 'N', 103, 1, now(), NULL, NULL, 'å¾
å®¡æ ¸'); |
| | | INSERT INTO sys_dict_data VALUES (42, '000000', 4, '已宿', 'finish', 'wf_business_status', '', 'success', 'N', 103, 1, now(), NULL, NULL, '已宿'); |
| | | INSERT INTO sys_dict_data VALUES (43, '000000', 5, 'å·²ä½åº', 'invalid', 'wf_business_status', '', 'danger', 'N', 103, 1, now(), NULL, NULL, 'å·²ä½åº'); |
| | | INSERT INTO sys_dict_data VALUES (44, '000000', 6, 'å·²éå', 'back', 'wf_business_status', '', 'danger', 'N', 103, 1, now(), NULL, NULL, 'å·²éå'); |
| | | INSERT INTO sys_dict_data VALUES (45, '000000', 7, 'å·²ç»æ¢', 'termination', 'wf_business_status', '', 'danger', 'N', 103, 1, now(), NULL, NULL, 'å·²ç»æ¢'); |
| | | INSERT INTO sys_dict_data VALUES (46, '000000', 1, 'èªå®ä¹è¡¨å', 'static', 'wf_form_type', '', 'success', 'N', 103, 1, now(), NULL, NULL, 'èªå®ä¹è¡¨å'); |
| | | INSERT INTO sys_dict_data VALUES (47, '000000', 2, 'å¨æè¡¨å', 'dynamic', 'wf_form_type', '', 'primary', 'N', 103, 1, now(), NULL, NULL, 'å¨æè¡¨å'); |
| | | INSERT INTO sys_dict_data VALUES (48, '000000', 1, 'æ¤é', 'cancel', 'wf_task_status', '', 'danger', 'N', 103, 1, now(), NULL, NULL, 'æ¤é'); |
| | | INSERT INTO sys_dict_data VALUES (49, '000000', 2, 'éè¿', 'pass', 'wf_task_status', '', 'success', 'N', 103, 1, now(), NULL, NULL, 'éè¿'); |
| | | INSERT INTO sys_dict_data VALUES (50, '000000', 3, 'å¾
å®¡æ ¸', 'waiting', 'wf_task_status', '', 'primary', 'N', 103, 1, now(), NULL, NULL, 'å¾
å®¡æ ¸'); |
| | | INSERT INTO sys_dict_data VALUES (51, '000000', 4, 'ä½åº', 'invalid', 'wf_task_status', '', 'danger', 'N', 103, 1, now(), NULL, NULL, 'ä½åº'); |
| | | INSERT INTO sys_dict_data VALUES (52, '000000', 5, 'éå', 'back', 'wf_task_status', '', 'danger', 'N', 103, 1, now(), NULL, NULL, 'éå'); |
| | | INSERT INTO sys_dict_data VALUES (53, '000000', 6, 'ç»æ¢', 'termination', 'wf_task_status', '', 'danger', 'N', 103, 1, now(), NULL, NULL, 'ç»æ¢'); |
| | | INSERT INTO sys_dict_data VALUES (54, '000000', 7, '转å', 'transfer', 'wf_task_status', '', 'primary', 'N', 103, 1, now(), NULL, NULL, '转å'); |
| | | INSERT INTO sys_dict_data VALUES (55, '000000', 8, 'å§æ', 'depute', 'wf_task_status', '', 'primary', 'N', 103, 1, now(), NULL, NULL, 'å§æ'); |
| | | INSERT INTO sys_dict_data VALUES (56, '000000', 9, 'æé', 'copy', 'wf_task_status', '', 'primary', 'N', 103, 1, now(), NULL, NULL, 'æé'); |
| | | INSERT INTO sys_dict_data VALUES (57, '000000', 10, 'å ç¾', 'sign', 'wf_task_status', '', 'primary', 'N', 103, 1, now(), NULL, NULL, 'å ç¾'); |
| | | INSERT INTO sys_dict_data VALUES (58, '000000', 11, 'åç¾', 'sign_off', 'wf_task_status', '', 'danger', 'N', 103, 1, now(), NULL, NULL, 'åç¾'); |
| | | INSERT INTO sys_dict_data VALUES (59, '000000', 11, 'è¶
æ¶', 'timeout', 'wf_task_status', '', 'danger', 'N', 103, 1, now(), NULL, NULL, 'è¶
æ¶'); |
| | | |
| | | comment on table wf_category is 'æµç¨åç±»'; |
| | | comment on column wf_category.id is '主é®'; |
| | | comment on column wf_category.category_name is 'åç±»åç§°'; |
| | | comment on column wf_category.category_code is 'åç±»ç¼ç '; |
| | | comment on column wf_category.parent_id is 'ç¶çº§id'; |
| | | comment on column wf_category.sort_num is 'æåº'; |
| | | comment on column wf_category.tenant_id is 'ç§æ·id'; |
| | | comment on column wf_category.create_dept is 'å建é¨é¨'; |
| | | comment on column wf_category.create_by is 'å建è
'; |
| | | comment on column wf_category.create_time is 'å建æ¶é´'; |
| | | comment on column wf_category.update_by is 'ä¿®æ¹è
'; |
| | | comment on column wf_category.update_time is 'ä¿®æ¹æ¶é´'; |
| | | |
| | | alter table wf_category |
| | | owner to postgres; |
| | | |
| | | create unique index uni_category_code |
| | | on wf_category (category_code); |
| | | |
| | | INSERT INTO wf_category values (1, 'OA', 'OA', 0, 0, '000000', 103, 1, now(), 1, now()); |
| | | |
| | | create table wf_task_back_node |
| | | ( |
| | | id bigint not null |
| | | constraint pk_wf_task_back_node |
| | | primary key, |
| | | node_id varchar(255) not null, |
| | | node_name varchar(255) not null, |
| | | order_no bigint not null, |
| | | instance_id varchar(255) not null, |
| | | task_type varchar(255) not null, |
| | | assignee varchar(2000) not null, |
| | | tenant_id varchar(20), |
| | | create_dept bigint, |
| | | create_by bigint, |
| | | create_time timestamp, |
| | | update_by bigint, |
| | | update_time timestamp |
| | | ); |
| | | |
| | | comment on table wf_task_back_node is 'èç¹å®¡æ¹è®°å½'; |
| | | comment on column wf_task_back_node.id is '主é®'; |
| | | comment on column wf_task_back_node.node_id is 'èç¹id'; |
| | | comment on column wf_task_back_node.node_name is 'èç¹åç§°'; |
| | | comment on column wf_task_back_node.order_no is 'æåº'; |
| | | comment on column wf_task_back_node.instance_id is 'æµç¨å®ä¾id'; |
| | | comment on column wf_task_back_node.task_type is 'èç¹ç±»å'; |
| | | comment on column wf_task_back_node.assignee is '审æ¹äºº'; |
| | | comment on column wf_task_back_node.tenant_id is 'ç§æ·id'; |
| | | comment on column wf_task_back_node.create_dept is 'å建é¨é¨'; |
| | | comment on column wf_task_back_node.create_by is 'å建è
'; |
| | | comment on column wf_task_back_node.create_time is 'å建æ¶é´'; |
| | | comment on column wf_task_back_node.update_by is 'ä¿®æ¹è
'; |
| | | comment on column wf_task_back_node.update_time is 'ä¿®æ¹æ¶é´'; |
| | | |
| | | alter table wf_task_back_node |
| | | owner to postgres; |
| | | |
| | | create table wf_definition_config |
| | | ( |
| | | id bigint not null |
| | | constraint pk_wf_definition_config |
| | | primary key, |
| | | table_name varchar(255) not null, |
| | | definition_id varchar(255) not null, |
| | | process_key varchar(255) not null, |
| | | version bigint not null, |
| | | tenant_id varchar(20), |
| | | remark varchar(500), |
| | | create_dept bigint, |
| | | create_by bigint, |
| | | create_time timestamp, |
| | | update_by bigint, |
| | | update_time timestamp |
| | | ); |
| | | |
| | | comment on table wf_definition_config is 'æµç¨å®ä¹é
ç½®'; |
| | | comment on column wf_definition_config.id is '主é®'; |
| | | comment on column wf_definition_config.table_name is '表å'; |
| | | comment on column wf_definition_config.definition_id is 'æµç¨å®ä¹ID'; |
| | | comment on column wf_definition_config.process_key is 'æµç¨KEY'; |
| | | comment on column wf_definition_config.version is 'æµç¨çæ¬'; |
| | | comment on column wf_definition_config.tenant_id is 'ç§æ·id'; |
| | | comment on column wf_definition_config.remark is '夿³¨'; |
| | | comment on column wf_definition_config.create_dept is 'å建é¨é¨'; |
| | | comment on column wf_definition_config.create_by is 'å建è
'; |
| | | comment on column wf_definition_config.create_time is 'å建æ¶é´'; |
| | | comment on column wf_definition_config.update_by is 'ä¿®æ¹è
'; |
| | | comment on column wf_definition_config.update_time is 'ä¿®æ¹æ¶é´'; |
| | | |
| | | alter table wf_definition_config |
| | | owner to postgres; |
| | | create unique index uni_definition_id |
| | | on wf_definition_config (definition_id); |
| | | |
| | | create table wf_form_manage |
| | | ( |
| | | id bigint not null |
| | | constraint pk_wf_form_manage |
| | | primary key, |
| | | form_name varchar(255) not null, |
| | | form_type varchar(255) not null, |
| | | router varchar(255) not null, |
| | | remark varchar(500), |
| | | tenant_id varchar(20), |
| | | create_dept bigint, |
| | | create_by bigint, |
| | | create_time timestamp, |
| | | update_by bigint, |
| | | update_time timestamp |
| | | ); |
| | | |
| | | comment on table wf_form_manage is '表å管ç'; |
| | | comment on column wf_form_manage.id is '主é®'; |
| | | comment on column wf_form_manage.form_name is '表ååç§°'; |
| | | comment on column wf_form_manage.form_type is '表åç±»å'; |
| | | comment on column wf_form_manage.router is 'è·¯ç±å°å/表åID'; |
| | | comment on column wf_form_manage.remark is '夿³¨'; |
| | | comment on column wf_form_manage.tenant_id is 'ç§æ·id'; |
| | | comment on column wf_form_manage.create_dept is 'å建é¨é¨'; |
| | | comment on column wf_form_manage.create_by is 'å建è
'; |
| | | comment on column wf_form_manage.create_time is 'å建æ¶é´'; |
| | | comment on column wf_form_manage.update_by is 'ä¿®æ¹è
'; |
| | | comment on column wf_form_manage.update_time is 'ä¿®æ¹æ¶é´'; |
| | | |
| | | insert into wf_form_manage(id, form_name, form_type, router, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time) VALUES (1, '请åç³è¯·', 'static', '/workflow/leaveEdit/index', NULL, '000000', 103, 1, now(), 1, now()); |
| | | |
| | | create table wf_node_config |
| | | ( |
| | | id bigint not null |
| | | constraint pk_wf_node_config |
| | | primary key, |
| | | form_id bigint, |
| | | form_type varchar(255), |
| | | node_name varchar(255) not null, |
| | | node_id varchar(255) not null, |
| | | definition_id varchar(255) not null, |
| | | apply_user_task char(1) default '0', |
| | | tenant_id varchar(20), |
| | | create_dept bigint, |
| | | create_by bigint, |
| | | create_time timestamp, |
| | | update_by bigint, |
| | | update_time timestamp |
| | | ); |
| | | |
| | | comment on table wf_node_config is 'èç¹é
ç½®'; |
| | | comment on column wf_node_config.id is '主é®'; |
| | | comment on column wf_node_config.form_id is '表åid'; |
| | | comment on column wf_node_config.form_type is '表åç±»å'; |
| | | comment on column wf_node_config.node_id is 'èç¹id'; |
| | | comment on column wf_node_config.node_name is 'èç¹åç§°'; |
| | | comment on column wf_node_config.definition_id is 'æµç¨å®ä¹id'; |
| | | comment on column wf_node_config.apply_user_task is 'æ¯å¦ä¸ºç³è¯·äººèç¹ ï¼0æ¯ 1å¦ï¼'; |
| | | comment on column wf_node_config.tenant_id is 'ç§æ·id'; |
| | | comment on column wf_node_config.create_dept is 'å建é¨é¨'; |
| | | comment on column wf_node_config.create_by is 'å建è
'; |
| | | comment on column wf_node_config.create_time is 'å建æ¶é´'; |
| | | comment on column wf_node_config.update_by is 'ä¿®æ¹è
'; |
| | | comment on column wf_node_config.update_time is 'ä¿®æ¹æ¶é´'; |
| | | |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11638, '请åç³è¯·', 5, 1, 'leave', 'workflow/leave/index', 1, 0, 'C', '0', '0', 'workflow:leave:list', '#', 103, 1, now(), NULL, NULL, '请åç³è¯·èå'); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11639, '请åç³è¯·æ¥è¯¢', 11638, 1, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11640, '请åç³è¯·æ°å¢', 11638, 2, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:add', '#', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11641, '请åç³è¯·ä¿®æ¹', 11638, 3, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:edit', '#', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11642, '请åç³è¯·å é¤', 11638, 4, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:remove', '#', 103, 1, now(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11643, '请åç³è¯·å¯¼åº', 11638, 5, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:export', '#', 103, 1, now(), NULL, NULL, ''); |
| | | |
| | | INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (13, '000000', 'ä¸å¡ç¶æ', 'wf_business_status', 103, 1, now(), NULL, NULL, 'ä¸å¡ç¶æå表'); |
| | | INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (14, '000000', '表åç±»å', 'wf_form_type', 103, 1, now(), NULL, NULL, '表åç±»åå表'); |
| | | |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (39, '000000', 1, 'å·²æ¤é', 'cancel', 'wf_business_status', '', 'danger', 'N', 103, 1, now(), NULL, NULL, 'å·²æ¤é'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (40, '000000', 2, 'è稿', 'draft', 'wf_business_status', '', 'info', 'N', 103, 1, now(), NULL, NULL, 'è稿'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (41, '000000', 3, 'å¾
å®¡æ ¸', 'waiting', 'wf_business_status', '', 'primary', 'N', 103, 1,now(), NULL, NULL, 'å¾
å®¡æ ¸'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (42, '000000', 4, '已宿', 'finish', 'wf_business_status', '', 'success', 'N', 103, 1, now(), NULL, NULL, '已宿'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (43, '000000', 5, 'å·²ä½åº', 'invalid', 'wf_business_status', '', 'danger', 'N', 103, 1, now(), NULL, NULL, 'å·²ä½åº'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (44, '000000', 6, 'å·²éå', 'back', 'wf_business_status', '', 'danger', 'N', 103, 1, now(), NULL, NULL, 'å·²éå'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (45, '000000', 7, 'å·²ç»æ¢', 'termination', 'wf_business_status', '', 'danger', 'N', 103, 1,now(), NULL, NULL, 'å·²ç»æ¢'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (46, '000000', 1, 'èªå®ä¹è¡¨å', 'static', 'wf_form_type', '', 'success', 'N', 103, 1, now(), NULL, NULL, 'èªå®ä¹è¡¨å'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (47, '000000', 2, 'å¨æè¡¨å', 'dynamic', 'wf_form_type', '', 'primary', 'N', 103, 1, now(), NULL, NULL, 'å¨æè¡¨å'); |
| | | |
| | | -- 表å管ç SQL |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11628, '表å管ç', '11616', '5', 'formManage', 'workflow/formManage/index', 1, 0, 'C', '0', '0', 'workflow:formManage:list', 'tree-table', 103, 1, now(), null, null, '表å管çèå'); |
| | | |
| | | -- 表å管çæé® SQL |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11644, '表åç®¡çæ¥è¯¢', 11628, '1', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:query', '', 103, 1, now(), null, null, ''); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11645, '表åç®¡çæ°å¢', 11628, '2', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:add', '', 103, 1, now(), null, null, ''); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11646, '表å管çä¿®æ¹', 11628, '3', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:edit', '', 103, 1, now(), null, null, ''); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11647, '表å管çå é¤', 11628, '4', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:remove', '', 103, 1, now(), null, null, ''); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11648, '表å管ç导åº', 11628, '5', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:export', 'tree-table', 103, 1, now(), null, null, ''); |
| | |
| | | insert into sys_menu values('11616', '工使µ' , '0', '6', 'workflow', '', '', '1', '0', 'M', '0', '0', '', 'workflow', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11617', '模å管ç', '11616', '2', 'model', 'workflow/model/index', '', '1', '1', 'C', '0', '0', 'workflow:model:list', 'model', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11618', 'æçä»»å¡', '0', '7', 'task', '', '', '1', '0', 'M', '0', '0', '', 'my-task', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11619', 'æçå¾
å', '11618', '2', 'taskWaiting', 'workflow/task/taskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11632', 'æçå·²å', '11618', '3', 'taskFinish', 'workflow/task/taskFinish', '', '1', '1', 'C', '0', '0', '', 'finish', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11633', 'æçæé', '11618', '4', 'taskCopyList', 'workflow/task/taskCopyList', '', '1', '1', 'C', '0', '0', '', 'my-copy', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11620', 'æµç¨å®ä¹', '11616', '3', 'processDefinition', 'workflow/processDefinition/index', '', '1', '1', 'C', '0', '0', '', 'process-definition', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11621', 'æµç¨å®ä¾', '11630', '1', 'processInstance', 'workflow/processInstance/index', '', '1', '1', 'C', '0', '0', '', 'tree-table', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11622', 'æµç¨åç±»', '11616', '1', 'category', 'workflow/category/index', '', '1', '0', 'C', '0', '0', 'workflow:category:list', 'category', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11629', 'æåèµ·ç', '11618', '1', 'myDocument', 'workflow/task/myDocument', '', '1', '1', 'C', '0', '0', '', 'guide', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11630', 'æµç¨çæ§', '11616', '4', 'monitor', '', '', '1', '0', 'M', '0', '0', '', 'monitor', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11631', 'å¾
åä»»å¡', '11630', '2', 'allTaskWaiting', 'workflow/task/allTaskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, sysdate(), NULL, NULL, ''); |
| | | -- ---------------------------- |
| | | -- 0ãwarm-flow-all.sqlï¼å°åï¼https://gitee.com/dromara/warm-flow/blob/master/sql/mysql/warm-flow-all.sql |
| | | -- ---------------------------- |
| | | CREATE TABLE `flow_definition` |
| | | ( |
| | | `id` bigint unsigned NOT NULL COMMENT '主é®id', |
| | | `flow_code` varchar(40) NOT NULL COMMENT 'æµç¨ç¼ç ', |
| | | `flow_name` varchar(100) NOT NULL COMMENT 'æµç¨åç§°', |
| | | `category` varchar(100) DEFAULT NULL COMMENT 'æµç¨ç±»å«', |
| | | `version` varchar(20) NOT NULL COMMENT 'æµç¨çæ¬', |
| | | `is_publish` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'æ¯å¦åå¸ï¼0æªåå¸ 1å·²åå¸ 9失æï¼', |
| | | `form_custom` char(1) DEFAULT 'N' COMMENT '审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼', |
| | | `form_path` varchar(100) DEFAULT NULL COMMENT '审æ¹è¡¨åè·¯å¾', |
| | | `activity_status` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'æµç¨æ¿æ´»ç¶æï¼0æèµ· 1æ¿æ´»ï¼', |
| | | `listener_type` varchar(100) DEFAULT NULL COMMENT 'çå¬å¨ç±»å', |
| | | `listener_path` varchar(400) DEFAULT NULL COMMENT 'çå¬å¨è·¯å¾', |
| | | `ext` varchar(500) DEFAULT NULL COMMENT 'ä¸å¡è¯¦æ
åä¸å¡è¡¨å¯¹è±¡jsonå符串', |
| | | `create_time` datetime DEFAULT NULL COMMENT 'å建æ¶é´', |
| | | `update_time` datetime DEFAULT NULL COMMENT 'æ´æ°æ¶é´', |
| | | `del_flag` char(1) DEFAULT '0' COMMENT 'å 餿 å¿', |
| | | `tenant_id` varchar(40) DEFAULT NULL COMMENT 'ç§æ·id', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE=InnoDB COMMENT='æµç¨å®ä¹è¡¨'; |
| | | |
| | | CREATE TABLE `flow_node` |
| | | ( |
| | | `id` bigint unsigned NOT NULL COMMENT '主é®id', |
| | | `node_type` tinyint(1) NOT NULL COMMENT 'èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼', |
| | | `definition_id` bigint NOT NULL COMMENT 'æµç¨å®ä¹id', |
| | | `node_code` varchar(100) NOT NULL COMMENT 'æµç¨èç¹ç¼ç ', |
| | | `node_name` varchar(100) DEFAULT NULL COMMENT 'æµç¨èç¹åç§°', |
| | | `permission_flag` varchar(200) DEFAULT NULL COMMENT 'æéæ è¯ï¼æéç±»å:æéæ è¯ï¼å¯ä»¥å¤ä¸ªï¼ç¨éå·éå¼)', |
| | | `node_ratio` DECIMAL(6,3) DEFAULT NULL COMMENT 'æµç¨ç¾ç½²æ¯ä¾å¼', |
| | | `coordinate` varchar(100) DEFAULT NULL COMMENT 'åæ ', |
| | | `skip_any_node` varchar(100) DEFAULT 'N' COMMENT 'æ¯å¦å¯ä»¥éåä»»æèç¹ï¼Yæ¯ Nå¦ï¼å³å°å é¤', |
| | | `any_node_skip` varchar(100) DEFAULT NULL COMMENT 'ä»»æç»ç¹è·³è½¬', |
| | | `listener_type` varchar(100) DEFAULT NULL COMMENT 'çå¬å¨ç±»å', |
| | | `listener_path` varchar(400) DEFAULT NULL COMMENT 'çå¬å¨è·¯å¾', |
| | | `handler_type` varchar(100) DEFAULT NULL COMMENT 'å¤çå¨ç±»å', |
| | | `handler_path` varchar(400) DEFAULT NULL COMMENT 'å¤çå¨è·¯å¾', |
| | | `form_custom` char(1) DEFAULT 'N' COMMENT '审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼', |
| | | `form_path` varchar(100) DEFAULT NULL COMMENT '审æ¹è¡¨åè·¯å¾', |
| | | `version` varchar(20) NOT NULL COMMENT 'çæ¬', |
| | | `create_time` datetime DEFAULT NULL COMMENT 'å建æ¶é´', |
| | | `update_time` datetime DEFAULT NULL COMMENT 'æ´æ°æ¶é´', |
| | | `del_flag` char(1) DEFAULT '0' COMMENT 'å 餿 å¿', |
| | | `tenant_id` varchar(40) DEFAULT NULL COMMENT 'ç§æ·id', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE=InnoDB COMMENT='æµç¨èç¹è¡¨'; |
| | | |
| | | CREATE TABLE `flow_skip` |
| | | ( |
| | | `id` bigint unsigned NOT NULL COMMENT '主é®id', |
| | | `definition_id` bigint NOT NULL COMMENT 'æµç¨å®ä¹id', |
| | | `now_node_code` varchar(100) NOT NULL COMMENT 'å½åæµç¨èç¹çç¼ç ', |
| | | `now_node_type` tinyint(1) DEFAULT NULL COMMENT 'å½åèç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼', |
| | | `next_node_code` varchar(100) NOT NULL COMMENT 'ä¸ä¸ä¸ªæµç¨èç¹çç¼ç ', |
| | | `next_node_type` tinyint(1) DEFAULT NULL COMMENT 'ä¸ä¸ä¸ªèç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼', |
| | | `skip_name` varchar(100) DEFAULT NULL COMMENT '跳转åç§°', |
| | | `skip_type` varchar(40) DEFAULT NULL COMMENT '跳转类åï¼PASS审æ¹éè¿ REJECTéåï¼', |
| | | `skip_condition` varchar(200) DEFAULT NULL COMMENT '跳转æ¡ä»¶', |
| | | `coordinate` varchar(100) DEFAULT NULL COMMENT 'åæ ', |
| | | `create_time` datetime DEFAULT NULL COMMENT 'å建æ¶é´', |
| | | `update_time` datetime DEFAULT NULL COMMENT 'æ´æ°æ¶é´', |
| | | `del_flag` char(1) DEFAULT '0' COMMENT 'å 餿 å¿', |
| | | `tenant_id` varchar(40) DEFAULT NULL COMMENT 'ç§æ·id', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE=InnoDB COMMENT='èç¹è·³è½¬å
³è表'; |
| | | |
| | | CREATE TABLE `flow_instance` |
| | | ( |
| | | `id` bigint NOT NULL COMMENT '主é®id', |
| | | `definition_id` bigint NOT NULL COMMENT '对åºflow_definition表çid', |
| | | `business_id` varchar(40) NOT NULL COMMENT 'ä¸å¡id', |
| | | `node_type` tinyint(1) NOT NULL COMMENT 'èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼', |
| | | `node_code` varchar(40) NOT NULL COMMENT 'æµç¨èç¹ç¼ç ', |
| | | `node_name` varchar(100) DEFAULT NULL COMMENT 'æµç¨èç¹åç§°', |
| | | `variable` text COMMENT 'ä»»å¡åé', |
| | | `flow_status` varchar(20) NOT NULL COMMENT 'æµç¨ç¶æï¼0å¾
æäº¤ 1审æ¹ä¸ 2 审æ¹éè¿ 3èªå¨éè¿ 4ç»æ¢ 5ä½åº 6æ¤é 7åå 8已宿 9å·²éå 10失æï¼', |
| | | `activity_status` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'æµç¨æ¿æ´»ç¶æï¼0æèµ· 1æ¿æ´»ï¼', |
| | | `create_by` varchar(64) DEFAULT '' COMMENT 'å建è
', |
| | | `create_time` datetime DEFAULT NULL COMMENT 'å建æ¶é´', |
| | | `update_time` datetime DEFAULT NULL COMMENT 'æ´æ°æ¶é´', |
| | | `ext` varchar(500) DEFAULT NULL COMMENT 'æ©å±å段ï¼é¢çç»ä¸å¡ç³»ç»ä½¿ç¨', |
| | | `del_flag` char(1) DEFAULT '0' COMMENT 'å 餿 å¿', |
| | | `tenant_id` varchar(40) DEFAULT NULL COMMENT 'ç§æ·id', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE=InnoDB COMMENT='æµç¨å®ä¾è¡¨'; |
| | | |
| | | CREATE TABLE `flow_task` |
| | | ( |
| | | `id` bigint NOT NULL COMMENT '主é®id', |
| | | `definition_id` bigint NOT NULL COMMENT '对åºflow_definition表çid', |
| | | `instance_id` bigint NOT NULL COMMENT '对åºflow_instance表çid', |
| | | `node_code` varchar(100) NOT NULL COMMENT 'èç¹ç¼ç ', |
| | | `node_name` varchar(100) DEFAULT NULL COMMENT 'èç¹åç§°', |
| | | `node_type` tinyint(1) NOT NULL COMMENT 'èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼', |
| | | `form_custom` char(1) DEFAULT 'N' COMMENT '审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼', |
| | | `form_path` varchar(100) DEFAULT NULL COMMENT '审æ¹è¡¨åè·¯å¾', |
| | | `create_time` datetime DEFAULT NULL COMMENT 'å建æ¶é´', |
| | | `update_time` datetime DEFAULT NULL COMMENT 'æ´æ°æ¶é´', |
| | | `del_flag` char(1) DEFAULT '0' COMMENT 'å 餿 å¿', |
| | | `tenant_id` varchar(40) DEFAULT NULL COMMENT 'ç§æ·id', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE=InnoDB COMMENT='å¾
åä»»å¡è¡¨'; |
| | | |
| | | CREATE TABLE `flow_his_task` |
| | | ( |
| | | `id` bigint(20) unsigned NOT NULL COMMENT '主é®id', |
| | | `definition_id` bigint(20) NOT NULL COMMENT '对åºflow_definition表çid', |
| | | `instance_id` bigint(20) NOT NULL COMMENT '对åºflow_instance表çid', |
| | | `task_id` bigint(20) NOT NULL COMMENT '对åºflow_task表çid', |
| | | `node_code` varchar(100) DEFAULT NULL COMMENT 'å¼å§èç¹ç¼ç ', |
| | | `node_name` varchar(100) DEFAULT NULL COMMENT 'å¼å§èç¹åç§°', |
| | | `node_type` tinyint(1) DEFAULT NULL COMMENT 'å¼å§èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼', |
| | | `target_node_code` varchar(100) DEFAULT NULL COMMENT 'ç®æ èç¹ç¼ç ', |
| | | `target_node_name` varchar(100) DEFAULT NULL COMMENT 'ç»æèç¹åç§°', |
| | | `approver` varchar(40) DEFAULT NULL COMMENT '审æ¹è
', |
| | | `cooperate_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'å使¹å¼(1å®¡æ¹ 2转å 3å§æ´¾ 4ä¼ç¾ 5ç¥¨ç¾ 6å ç¾ 7åç¾)', |
| | | `collaborator` varchar(40) DEFAULT NULL COMMENT 'åä½äºº', |
| | | `skip_type` varchar(10) NOT NULL COMMENT 'æµè½¬ç±»åï¼PASSéè¿ REJECTéå NONEæ å¨ä½ï¼', |
| | | `flow_status` varchar(20) NOT NULL COMMENT 'æµç¨ç¶æï¼1审æ¹ä¸ 2 审æ¹éè¿ 9å·²éå 10失æï¼', |
| | | `form_custom` char(1) DEFAULT 'N' COMMENT '审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼', |
| | | `form_path` varchar(100) DEFAULT NULL COMMENT '审æ¹è¡¨åè·¯å¾', |
| | | `message` varchar(500) DEFAULT NULL COMMENT 'å®¡æ¹æè§', |
| | | `ext` varchar(500) DEFAULT NULL COMMENT 'ä¸å¡è¯¦æ
åä¸å¡è¡¨å¯¹è±¡jsonå符串', |
| | | `create_time` datetime DEFAULT NULL COMMENT 'ä»»å¡å¼å§æ¶é´', |
| | | `update_time` datetime DEFAULT NULL COMMENT '审æ¹å®ææ¶é´', |
| | | `del_flag` char(1) DEFAULT '0' COMMENT 'å 餿 å¿', |
| | | `tenant_id` varchar(40) DEFAULT NULL COMMENT 'ç§æ·id', |
| | | PRIMARY KEY (`id`) USING BTREE |
| | | ) ENGINE = InnoDB COMMENT ='åå²ä»»å¡è®°å½è¡¨'; |
| | | |
| | | |
| | | -- æµç¨å类管çç¸å
³æé® |
| | | insert into sys_menu values ('11623', 'æµç¨åç±»æ¥è¯¢', '11622', '1', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:query', '#', 103, 1, sysdate(), null, null, ''); |
| | | insert into sys_menu values ('11624', 'æµç¨åç±»æ°å¢', '11622', '2', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:add', '#', 103, 1, sysdate(), null, null, ''); |
| | | insert into sys_menu values ('11625', 'æµç¨å类修æ¹', '11622', '3', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:edit', '#', 103, 1, sysdate(), null, null, ''); |
| | | insert into sys_menu values ('11626', 'æµç¨åç±»å é¤', '11622', '4', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:remove','#', 103, 1, sysdate(), null, null, ''); |
| | | insert into sys_menu values ('11627', 'æµç¨å类导åº', '11622', '5', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:export','#', 103, 1, sysdate(), null, null, ''); |
| | | CREATE TABLE `flow_user` |
| | | ( |
| | | `id` bigint unsigned NOT NULL COMMENT '主é®id', |
| | | `type` char(1) NOT NULL COMMENT '人åç±»åï¼1å¾
åä»»å¡ç审æ¹äººæé 2å¾
åä»»å¡ç转å人æé 3å¾
åä»»å¡çå§æäººæéï¼', |
| | | `processed_by` varchar(80) DEFAULT NULL COMMENT 'æé人', |
| | | `associated` bigint NOT NULL COMMENT 'ä»»å¡è¡¨id', |
| | | `create_time` datetime DEFAULT NULL COMMENT 'å建æ¶é´', |
| | | `create_by` varchar(80) DEFAULT NULL COMMENT 'å建人', |
| | | `update_time` datetime DEFAULT NULL COMMENT 'æ´æ°æ¶é´', |
| | | `del_flag` char(1) DEFAULT '0' COMMENT 'å 餿 å¿', |
| | | `tenant_id` varchar(40) DEFAULT NULL COMMENT 'ç§æ·id', |
| | | PRIMARY KEY (`id`) USING BTREE, |
| | | KEY `user_processed_type` (`processed_by`,`type`) |
| | | ) ENGINE=InnoDB COMMENT='æµç¨ç¨æ·è¡¨'; |
| | | |
| | | -- ---------------------------- |
| | | -- æµç¨å类表 |
| | | -- ---------------------------- |
| | | create table flow_category |
| | | ( |
| | | category_id bigint(20) not null comment 'æµç¨åç±»ID', |
| | | tenant_id varchar(20) default '000000' comment 'ç§æ·ç¼å·', |
| | | parent_id bigint(20) default 0 comment 'ç¶æµç¨åç±»id', |
| | | ancestors varchar(500) default '' comment 'ç¥çº§å表', |
| | | category_name varchar(30) not null comment 'æµç¨åç±»åç§°', |
| | | order_num int(4) default 0 comment 'æ¾ç¤ºé¡ºåº', |
| | | del_flag char(1) default '0' comment 'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼', |
| | | create_dept bigint(20) null comment 'å建é¨é¨', |
| | | create_by bigint(20) null comment 'å建è
', |
| | | create_time datetime null comment 'å建æ¶é´', |
| | | update_by bigint(20) null comment 'æ´æ°è
', |
| | | update_time datetime null comment 'æ´æ°æ¶é´', |
| | | primary key (category_id) |
| | | ) engine = innodb comment = 'æµç¨åç±»'; |
| | | |
| | | INSERT INTO flow_category values (100, '000000', 0, '0', 'OA审æ¹', 0, '0', 103, 1, sysdate(), null, null); |
| | | INSERT INTO flow_category values (101, '000000', 100, '0,100', 'åå¤ç®¡ç', 0, '0', 103, 1, sysdate(), null, null); |
| | | INSERT INTO flow_category values (102, '000000', 100, '0,100', '人äºç®¡ç', 0, '0', 103, 1, sysdate(), null, null); |
| | | INSERT INTO flow_category values (103, '000000', 101, '0,100,101', '请å', 0, '0', 103, 1, sysdate(), null, null); |
| | | INSERT INTO flow_category values (104, '000000', 101, '0,100,101', 'åºå·®', 1, '0', 103, 1, sysdate(), null, null); |
| | | INSERT INTO flow_category values (105, '000000', 101, '0,100,101', 'å ç', 2, '0', 103, 1, sysdate(), null, null); |
| | | INSERT INTO flow_category values (106, '000000', 101, '0,100,101', 'æ¢ç', 3, '0', 103, 1, sysdate(), null, null); |
| | | INSERT INTO flow_category values (107, '000000', 101, '0,100,101', 'å¤åº', 4, '0', 103, 1, sysdate(), null, null); |
| | | INSERT INTO flow_category values (108, '000000', 102, '0,100,102', '转æ£', 1, '0', 103, 1, sysdate(), null, null); |
| | | INSERT INTO flow_category values (109, '000000', 102, '0,100,102', '离è', 2, '0', 103, 1, sysdate(), null, null); |
| | | |
| | | -- ---------------------------- |
| | | -- 请ååä¿¡æ¯ |
| | | -- ---------------------------- |
| | | create table test_leave |
| | | ( |
| | | id bigint not null comment '主é®', |
| | | leave_type varchar(255) not null comment '请åç±»å', |
| | | start_date datetime not null comment 'å¼å§æ¶é´', |
| | | end_date datetime not null comment 'ç»ææ¶é´', |
| | | leave_days int(10) not null comment '请å天æ°', |
| | | remark varchar(255) null comment '请ååå ', |
| | | status varchar(255) null comment 'ç¶æ', |
| | | create_dept bigint null comment 'å建é¨é¨', |
| | | create_by bigint null comment 'å建è
', |
| | | create_time datetime null comment 'å建æ¶é´', |
| | | update_by bigint null comment 'æ´æ°è
', |
| | | update_time datetime null comment 'æ´æ°æ¶é´', |
| | | tenant_id varchar(20) null comment 'ç§æ·ç¼å·', |
| | | PRIMARY KEY (id) USING BTREE |
| | | ) ENGINE = InnoDB COMMENT = '请åç³è¯·è¡¨'; |
| | | |
| | | -- æµç¨å类信æ¯è¡¨ |
| | | create table wf_category |
| | | ( |
| | | id bigint not null comment '主é®' |
| | | primary key, |
| | | category_name varchar(255) null comment 'åç±»åç§°', |
| | | category_code varchar(255) null comment 'åç±»ç¼ç ', |
| | | parent_id bigint null comment 'ç¶çº§id', |
| | | sort_num int(19) null comment 'æåº', |
| | | tenant_id varchar(20) null comment 'ç§æ·ç¼å·', |
| | | create_dept bigint null comment 'å建é¨é¨', |
| | | create_by bigint null comment 'å建è
', |
| | | create_time datetime null comment 'å建æ¶é´', |
| | | update_by bigint null comment 'æ´æ°è
', |
| | | update_time datetime null comment 'æ´æ°æ¶é´', |
| | | constraint uni_category_code |
| | | unique (category_code) |
| | | ) engine=innodb comment= 'æµç¨åç±»'; |
| | | INSERT INTO wf_category values (1, 'OA', 'OA', 0, 0, '000000', 103, 1, sysdate(), 1, sysdate()); |
| | | |
| | | create table wf_task_back_node |
| | | ( |
| | | id bigint not null |
| | | primary key, |
| | | node_id varchar(255) not null comment 'èç¹id', |
| | | node_name varchar(255) not null comment 'èç¹åç§°', |
| | | order_no int not null comment 'æåº', |
| | | instance_id varchar(255) null comment 'æµç¨å®ä¾id', |
| | | task_type varchar(255) not null comment 'èç¹ç±»å', |
| | | assignee varchar(2000) not null comment '审æ¹äºº', |
| | | tenant_id varchar(20) null comment 'ç§æ·ç¼å·', |
| | | create_dept bigint null comment 'å建é¨é¨', |
| | | create_by bigint null comment 'å建è
', |
| | | create_time datetime null comment 'å建æ¶é´', |
| | | update_by bigint null comment 'æ´æ°è
', |
| | | update_time datetime null comment 'æ´æ°æ¶é´' |
| | | ) |
| | | comment 'èç¹å®¡æ¹è®°å½'; |
| | | |
| | | create table wf_definition_config |
| | | ( |
| | | id bigint not null comment '主é®' |
| | | primary key, |
| | | table_name varchar(255) not null comment '表å', |
| | | definition_id varchar(255) not null comment 'æµç¨å®ä¹ID', |
| | | process_key varchar(255) not null comment 'æµç¨KEY', |
| | | version int(10) not null comment 'æµç¨çæ¬', |
| | | create_dept bigint null comment 'å建é¨é¨', |
| | | create_by bigint null comment 'å建è
', |
| | | create_time datetime null comment 'å建æ¶é´', |
| | | update_by bigint null comment 'æ´æ°è
', |
| | | update_time datetime null comment 'æ´æ°æ¶é´', |
| | | remark varchar(500) default '' null comment '夿³¨', |
| | | tenant_id varchar(20) null comment 'ç§æ·ç¼å·', |
| | | constraint uni_definition_id |
| | | unique (definition_id) |
| | | ) |
| | | comment 'æµç¨å®ä¹é
ç½®'; |
| | | |
| | | create table wf_form_manage |
| | | ( |
| | | id bigint not null comment '主é®' |
| | | primary key, |
| | | form_name varchar(255) not null comment '表ååç§°', |
| | | form_type varchar(255) not null comment '表åç±»å', |
| | | router varchar(255) not null comment 'è·¯ç±å°å/表åID', |
| | | remark varchar(500) null comment '夿³¨', |
| | | tenant_id varchar(20) null comment 'ç§æ·ç¼å·', |
| | | id bigint(20) not null comment 'id', |
| | | tenant_id varchar(20) default '000000' comment 'ç§æ·ç¼å·', |
| | | leave_type varchar(255) not null comment '请åç±»å', |
| | | start_date datetime not null comment 'å¼å§æ¶é´', |
| | | end_date datetime not null comment 'ç»ææ¶é´', |
| | | leave_days int(10) not null comment '请å天æ°', |
| | | remark varchar(255) null comment '请ååå ', |
| | | status varchar(255) null comment 'ç¶æ', |
| | | create_dept bigint null comment 'å建é¨é¨', |
| | | create_by bigint null comment 'å建è
', |
| | | create_time datetime null comment 'å建æ¶é´', |
| | | update_by bigint null comment 'æ´æ°è
', |
| | | update_time datetime null comment 'æ´æ°æ¶é´' |
| | | ) |
| | | comment '表å管ç'; |
| | | update_time datetime null comment 'æ´æ°æ¶é´', |
| | | PRIMARY KEY (id) USING BTREE |
| | | ) ENGINE = InnoDB COMMENT = '请åç³è¯·è¡¨'; |
| | | |
| | | insert into wf_form_manage(id, form_name, form_type, router, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time) VALUES (1, '请åç³è¯·', 'static', '/workflow/leaveEdit/index', NULL, '000000', 103, 1, sysdate(), 1, sysdate()); |
| | | insert into sys_menu values ('11616', '工使µ', '0', '6', 'workflow', '', '', '1', '0', 'M', '0', '0', '', 'workflow', 103, 1, sysdate(),NULL, NULL, ''); |
| | | insert into sys_menu values ('11618', 'æçä»»å¡', '0', '7', 'task', '', '', '1', '0', 'M', '0', '0', '', 'my-task', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values ('11619', 'æçå¾
å', '11618', '2', 'taskWaiting', 'workflow/task/taskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values ('11632', 'æçå·²å', '11618', '3', 'taskFinish', 'workflow/task/taskFinish', '', '1', '1', 'C', '0', '0', '', 'finish', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values ('11633', 'æçæé', '11618', '4', 'taskCopyList', 'workflow/task/taskCopyList', '', '1', '1', 'C', '0', '0', '', 'my-copy', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values ('11620', 'æµç¨å®ä¹', '11616', '3', 'processDefinition', 'workflow/processDefinition/index', '', '1', '1', 'C', '0', '0', '', 'process-definition', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values ('11621', 'æµç¨å®ä¾', '11630', '1', 'processInstance', 'workflow/processInstance/index', '', '1', '1', 'C', '0', '0', '', 'tree-table', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values ('11622', 'æµç¨åç±»', '11616', '1', 'category', 'workflow/category/index', '', '1', '0', 'C', '0', '0', 'workflow:category:list', 'category', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values ('11629', 'æåèµ·ç', '11618', '1', 'myDocument', 'workflow/task/myDocument', '', '1', '1', 'C', '0', '0', '', 'guide', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values ('11630', 'æµç¨çæ§', '11616', '4', 'monitor', '', '', '1', '0', 'M', '0', '0', '', 'monitor', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu values ('11631', 'å¾
åä»»å¡', '11630', '2', 'allTaskWaiting', 'workflow/task/allTaskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, sysdate(), NULL, NULL, ''); |
| | | -- æµç¨å类管çç¸å
³æé® |
| | | insert into sys_menu values ('11623', 'æµç¨åç±»æ¥è¯¢', '11622', '1', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:query', '#', 103, 1,sysdate(), null, null, ''); |
| | | insert into sys_menu values ('11624', 'æµç¨åç±»æ°å¢', '11622', '2', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:add', '#', 103, 1,sysdate(), null, null, ''); |
| | | insert into sys_menu values ('11625', 'æµç¨å类修æ¹', '11622', '3', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:edit', '#', 103, 1,sysdate(), null, null, ''); |
| | | insert into sys_menu values ('11626', 'æµç¨åç±»å é¤', '11622', '4', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:remove', '#', 103,1, sysdate(), null, null, ''); |
| | | insert into sys_menu values ('11627', 'æµç¨å类导åº', '11622', '5', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:export', '#', 103,1, sysdate(), null, null, ''); |
| | | -- è¯·åæµè¯ç¸å
³æé® |
| | | insert into sys_menu VALUES (11638, '请åç³è¯·', 5, 1, 'leave', 'workflow/leave/index', '', 1, 0, 'C', '0', '0', 'workflow:leave:list', '#', 103, 1, sysdate(), NULL, NULL, '请åç³è¯·èå'); |
| | | insert into sys_menu VALUES (11639, '请åç³è¯·æ¥è¯¢', 11638, 1, '#', '', '', 1, 0, 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu VALUES (11640, '请åç³è¯·æ°å¢', 11638, 2, '#', '', '', 1, 0, 'F', '0', '0', 'workflow:leave:add', '#', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu VALUES (11641, '请åç³è¯·ä¿®æ¹', 11638, 3, '#', '', '', 1, 0, 'F', '0', '0', 'workflow:leave:edit', '#', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu VALUES (11642, '请åç³è¯·å é¤', 11638, 4, '#', '', '', 1, 0, 'F', '0', '0', 'workflow:leave:remove', '#', 103, 1, sysdate(), NULL, NULL, ''); |
| | | insert into sys_menu VALUES (11643, '请åç³è¯·å¯¼åº', 11638, 5, '#', '', '', 1, 0, 'F', '0', '0', 'workflow:leave:export', '#', 103, 1, sysdate(), NULL, NULL, ''); |
| | | |
| | | create table wf_node_config |
| | | ( |
| | | id bigint not null comment '主é®' |
| | | primary key, |
| | | form_id bigint null comment '表åid', |
| | | form_type varchar(255) null comment '表åç±»å', |
| | | node_name varchar(255) not null comment 'èç¹åç§°', |
| | | node_id varchar(255) not null comment 'èç¹id', |
| | | definition_id varchar(255) not null comment 'æµç¨å®ä¹id', |
| | | apply_user_task char(1) default '0' comment 'æ¯å¦ä¸ºç³è¯·äººèç¹ ï¼0æ¯ 1å¦ï¼', |
| | | create_dept bigint null comment 'å建é¨é¨', |
| | | create_by bigint null comment 'å建è
', |
| | | create_time datetime null comment 'å建æ¶é´', |
| | | update_by bigint null comment 'æ´æ°è
', |
| | | update_time datetime null comment 'æ´æ°æ¶é´', |
| | | tenant_id varchar(20) null comment 'ç§æ·ç¼å·' |
| | | ) |
| | | comment 'èç¹é
ç½®'; |
| | | INSERT INTO sys_dict_type VALUES (13, '000000', 'ä¸å¡ç¶æ', 'wf_business_status', 103, 1, sysdate(), NULL, NULL, 'ä¸å¡ç¶æå表'); |
| | | INSERT INTO sys_dict_type VALUES (14, '000000', '表åç±»å', 'wf_form_type', 103, 1, sysdate(), NULL, NULL, '表åç±»åå表'); |
| | | INSERT INTO sys_dict_type VALUES (15, '000000', 'ä»»å¡ç¶æ', 'wf_task_status', 103, 1, sysdate(), NULL, NULL, 'ä»»å¡ç¶æ'); |
| | | INSERT INTO sys_dict_data VALUES (39, '000000', 1, 'å·²æ¤é', 'cancel', 'wf_business_status', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL,'å·²æ¤é'); |
| | | INSERT INTO sys_dict_data VALUES (40, '000000', 2, 'è稿', 'draft', 'wf_business_status', '', 'info', 'N', 103, 1, sysdate(), NULL, NULL, 'è稿'); |
| | | INSERT INTO sys_dict_data VALUES (41, '000000', 3, 'å¾
å®¡æ ¸', 'waiting', 'wf_business_status', '', 'primary', 'N', 103, 1, sysdate(), NULL, NULL,'å¾
å®¡æ ¸'); |
| | | INSERT INTO sys_dict_data VALUES (42, '000000', 4, '已宿', 'finish', 'wf_business_status', '', 'success', 'N', 103, 1, sysdate(), NULL, NULL,'已宿'); |
| | | INSERT INTO sys_dict_data VALUES (43, '000000', 5, 'å·²ä½åº', 'invalid', 'wf_business_status', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL,'å·²ä½åº'); |
| | | INSERT INTO sys_dict_data VALUES (44, '000000', 6, 'å·²éå', 'back', 'wf_business_status', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL,'å·²éå'); |
| | | INSERT INTO sys_dict_data VALUES (45, '000000', 7, 'å·²ç»æ¢', 'termination', 'wf_business_status', '', 'danger', 'N', 103, 1, sysdate(), NULL,NULL, 'å·²ç»æ¢'); |
| | | INSERT INTO sys_dict_data VALUES (46, '000000', 1, 'èªå®ä¹è¡¨å', 'static', 'wf_form_type', '', 'success', 'N', 103, 1, sysdate(), NULL, NULL,'èªå®ä¹è¡¨å'); |
| | | INSERT INTO sys_dict_data VALUES (47, '000000', 2, 'å¨æè¡¨å', 'dynamic', 'wf_form_type', '', 'primary', 'N', 103, 1, sysdate(), NULL, NULL,'å¨æè¡¨å'); |
| | | INSERT INTO sys_dict_data VALUES (48, '000000', 1, 'æ¤é', 'cancel', 'wf_task_status', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL, 'æ¤é'); |
| | | INSERT INTO sys_dict_data VALUES (49, '000000', 2, 'éè¿', 'pass', 'wf_task_status', '', 'success', 'N', 103, 1, sysdate(), NULL, NULL, 'éè¿'); |
| | | INSERT INTO sys_dict_data VALUES (50, '000000', 3, 'å¾
å®¡æ ¸', 'waiting', 'wf_task_status', '', 'primary', 'N', 103, 1, sysdate(), NULL, NULL, 'å¾
å®¡æ ¸'); |
| | | INSERT INTO sys_dict_data VALUES (51, '000000', 4, 'ä½åº', 'invalid', 'wf_task_status', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL, 'ä½åº'); |
| | | INSERT INTO sys_dict_data VALUES (52, '000000', 5, 'éå', 'back', 'wf_task_status', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL, 'éå'); |
| | | INSERT INTO sys_dict_data VALUES (53, '000000', 6, 'ç»æ¢', 'termination', 'wf_task_status', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL, 'ç»æ¢'); |
| | | INSERT INTO sys_dict_data VALUES (54, '000000', 7, '转å', 'transfer', 'wf_task_status', '', 'primary', 'N', 103, 1, sysdate(), NULL, NULL, '转å'); |
| | | INSERT INTO sys_dict_data VALUES (55, '000000', 8, 'å§æ', 'depute', 'wf_task_status', '', 'primary', 'N', 103, 1, sysdate(), NULL, NULL, 'å§æ'); |
| | | INSERT INTO sys_dict_data VALUES (56, '000000', 9, 'æé', 'copy', 'wf_task_status', '', 'primary', 'N', 103, 1, sysdate(), NULL, NULL, 'æé'); |
| | | INSERT INTO sys_dict_data VALUES (57, '000000', 10, 'å ç¾', 'sign', 'wf_task_status', '', 'primary', 'N', 103, 1, sysdate(), NULL, NULL, 'å ç¾'); |
| | | INSERT INTO sys_dict_data VALUES (58, '000000', 11, 'åç¾', 'sign_off', 'wf_task_status', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL, 'åç¾'); |
| | | INSERT INTO sys_dict_data VALUES (59, '000000', 11, 'è¶
æ¶', 'timeout', 'wf_task_status', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL, 'è¶
æ¶'); |
| | | |
| | | |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11638, '请åç³è¯·', 5, 1, 'leave', 'workflow/leave/index', 1, 0, 'C', '0', '0', 'workflow:leave:list', '#', 103, 1, sysdate(), NULL, NULL, '请åç³è¯·èå'); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11639, '请åç³è¯·æ¥è¯¢', 11638, 1, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, sysdate(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11640, '请åç³è¯·æ°å¢', 11638, 2, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:add', '#', 103, 1, sysdate(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11641, '请åç³è¯·ä¿®æ¹', 11638, 3, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:edit', '#', 103, 1, sysdate(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11642, '请åç³è¯·å é¤', 11638, 4, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:remove', '#', 103, 1, sysdate(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11643, '请åç³è¯·å¯¼åº', 11638, 5, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:export', '#', 103, 1, sysdate(), NULL, NULL, ''); |
| | | |
| | | INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (13, '000000', 'ä¸å¡ç¶æ', 'wf_business_status', 103, 1, sysdate(), NULL, NULL, 'ä¸å¡ç¶æå表'); |
| | | INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (14, '000000', '表åç±»å', 'wf_form_type', 103, 1, sysdate(), NULL, NULL, '表åç±»åå表'); |
| | | |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (39, '000000', 1, 'å·²æ¤é', 'cancel', 'wf_business_status', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL, 'å·²æ¤é'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (40, '000000', 2, 'è稿', 'draft', 'wf_business_status', '', 'info', 'N', 103, 1, sysdate(), NULL, NULL, 'è稿'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (41, '000000', 3, 'å¾
å®¡æ ¸', 'waiting', 'wf_business_status', '', 'primary', 'N', 103, 1,sysdate(), NULL, NULL, 'å¾
å®¡æ ¸'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (42, '000000', 4, '已宿', 'finish', 'wf_business_status', '', 'success', 'N', 103, 1, sysdate(), NULL, NULL, '已宿'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (43, '000000', 5, 'å·²ä½åº', 'invalid', 'wf_business_status', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL, 'å·²ä½åº'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (44, '000000', 6, 'å·²éå', 'back', 'wf_business_status', '', 'danger', 'N', 103, 1, sysdate(), NULL, NULL, 'å·²éå'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (45, '000000', 7, 'å·²ç»æ¢', 'termination', 'wf_business_status', '', 'danger', 'N', 103, 1,sysdate(), NULL, NULL, 'å·²ç»æ¢'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (46, '000000', 1, 'èªå®ä¹è¡¨å', 'static', 'wf_form_type', '', 'success', 'N', 103, 1, sysdate(), NULL, NULL, 'èªå®ä¹è¡¨å'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (47, '000000', 2, 'å¨æè¡¨å', 'dynamic', 'wf_form_type', '', 'primary', 'N', 103, 1, sysdate(), NULL, NULL, 'å¨æè¡¨å'); |
| | | |
| | | -- 表å管ç SQL |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11628, '表å管ç', '11616', '5', 'formManage', 'workflow/formManage/index', 1, 0, 'C', '0', '0', 'workflow:formManage:list', 'tree-table', 103, 1, sysdate(), null, null, '表å管çèå'); |
| | | |
| | | -- 表å管çæé® SQL |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11644, '表åç®¡çæ¥è¯¢', 11628, '1', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:query', '', 103, 1, sysdate(), null, null, ''); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11645, '表åç®¡çæ°å¢', 11628, '2', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:add', '', 103, 1, sysdate(), null, null, ''); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11646, '表å管çä¿®æ¹', 11628, '3', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:edit', '', 103, 1, sysdate(), null, null, ''); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11647, '表å管çå é¤', 11628, '4', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:remove', '', 103, 1, sysdate(), null, null, ''); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11648, '表å管ç导åº', 11628, '5', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:export', 'tree-table', 103, 1, sysdate(), null, null, ''); |
| | |
| | | 'TABLE', N'sys_social', |
| | | 'COLUMN', N'update_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'社ä¼åå
³ç³»è¡¨', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'sys_social' |
| | | GO |
| | | |
| | | CREATE TABLE sys_tenant |
| | | ( |
| | |
| | | insert into sys_menu values('11616', '工使µ' , '0', '6', 'workflow', '', '', '1', '0', 'M', '0', '0', '', 'workflow', 103, 1, getdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11617', '模å管ç', '11616', '2', 'model', 'workflow/model/index', '', '1', '1', 'C', '0', '0', 'workflow:model:list', 'model', 103, 1, getdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11618', 'æçä»»å¡', '0', '7', 'task', '', '', '1', '0', 'M', '0', '0', '', 'my-task', 103, 1, getdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11619', 'æçå¾
å', '11618', '2', 'taskWaiting', 'workflow/task/taskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, getdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11632', 'æçå·²å', '11618', '3', 'taskFinish', 'workflow/task/taskFinish', '', '1', '1', 'C', '0', '0', '', 'finish', 103, 1, getdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11633', 'æçæé', '11618', '4', 'taskCopyList', 'workflow/task/taskCopyList', '', '1', '1', 'C', '0', '0', '', 'my-copy', 103, 1, getdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11620', 'æµç¨å®ä¹', '11616', '3', 'processDefinition', 'workflow/processDefinition/index', '', '1', '1', 'C', '0', '0', '', 'process-definition', 103, 1, getdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11621', 'æµç¨å®ä¾', '11630', '1', 'processInstance', 'workflow/processInstance/index', '', '1', '1', 'C', '0', '0', '', 'tree-table', 103, 1, getdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11622', 'æµç¨åç±»', '11616', '1', 'category', 'workflow/category/index', '', '1', '0', 'C', '0', '0', 'workflow:category:list', 'category', 103, 1, getdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11629', 'æåèµ·ç', '11618', '1', 'myDocument', 'workflow/task/myDocument', '', '1', '1', 'C', '0', '0', '', 'guide', 103, 1, getdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11630', 'æµç¨çæ§', '11616', '4', 'monitor', '', '', '1', '0', 'M', '0', '0', '', 'monitor', 103, 1, getdate(), NULL, NULL, ''); |
| | | insert into sys_menu values('11631', 'å¾
åä»»å¡', '11630', '2', 'allTaskWaiting', 'workflow/task/allTaskWaiting', '', '1', '1', 'C', '0', '0', '', 'waiting', 103, 1, getdate(), NULL, NULL, ''); |
| | | CREATE TABLE flow_definition ( |
| | | id bigint NOT NULL, |
| | | flow_code nvarchar(40) NOT NULL, |
| | | flow_name nvarchar(100) NOT NULL, |
| | | category nvarchar(100) NULL, |
| | | version nvarchar(20) NOT NULL, |
| | | is_publish tinyint DEFAULT('0') NULL, |
| | | form_custom nchar(1) DEFAULT('N') NULL, |
| | | form_path nvarchar(100) NULL, |
| | | activity_status tinyint DEFAULT('1') NULL, |
| | | listener_type nvarchar(100) NULL, |
| | | listener_path nvarchar(400) NULL, |
| | | ext nvarchar(500) NULL, |
| | | create_time datetime2(7) NULL, |
| | | update_time datetime2(7) NULL, |
| | | del_flag nchar(1) DEFAULT('0') NULL, |
| | | tenant_id nvarchar(40) NULL, |
| | | CONSTRAINT PK__flow_def__3213E83FEE39AE33 PRIMARY KEY CLUSTERED (id) |
| | | WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) |
| | | ON [PRIMARY] |
| | | ) |
| | | ON [PRIMARY] |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'主é®id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨ç¼ç ', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'flow_code' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨åç§°', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'flow_name' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨ç±»å«', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'category' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨çæ¬', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'version' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ¯å¦åå¸ï¼0æªåå¸ 1å·²åå¸ 9失æï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'is_publish' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'form_custom' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'审æ¹è¡¨åè·¯å¾', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'form_path' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨æ¿æ´»ç¶æï¼0æèµ· 1æ¿æ´»ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'activity_status' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'çå¬å¨ç±»å', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'listener_type' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'çå¬å¨è·¯å¾', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'listener_path' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ä¸å¡è¯¦æ
åä¸å¡è¡¨å¯¹è±¡jsonå符串', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'ext' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'create_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ´æ°æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'update_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å 餿 å¿', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'del_flag' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç§æ·id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition', |
| | | 'COLUMN', N'tenant_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨å®ä¹è¡¨', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_definition' |
| | | GO |
| | | |
| | | CREATE TABLE flow_node ( |
| | | id bigint NOT NULL, |
| | | node_type tinyint NOT NULL, |
| | | definition_id bigint NOT NULL, |
| | | node_code nvarchar(100) NOT NULL, |
| | | node_name nvarchar(100) NULL, |
| | | permission_flag nvarchar(200) NULL, |
| | | node_ratio decimal(6,3) NULL, |
| | | coordinate nvarchar(100) NULL, |
| | | skip_any_node nvarchar(100) DEFAULT('N') NULL, |
| | | any_node_skip nvarchar(100) NULL, |
| | | listener_type nvarchar(100) NULL, |
| | | listener_path nvarchar(400) NULL, |
| | | handler_type nvarchar(100) NULL, |
| | | handler_path nvarchar(400) NULL, |
| | | form_custom nchar(1) DEFAULT('N') NULL, |
| | | form_path nvarchar(100) NULL, |
| | | version nvarchar(20) NOT NULL, |
| | | create_time datetime2(7) NULL, |
| | | update_time datetime2(7) NULL, |
| | | del_flag nchar(1) DEFAULT('0') NULL, |
| | | tenant_id nvarchar(40) NULL, |
| | | CONSTRAINT PK__flow_nod__3213E83F372470DE PRIMARY KEY CLUSTERED (id) |
| | | WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) |
| | | ON [PRIMARY] |
| | | ) |
| | | ON [PRIMARY] |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'主é®id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'node_type' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨å®ä¹id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'definition_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨èç¹ç¼ç ', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'node_code' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨èç¹åç§°', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'node_name' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æéæ è¯ï¼æéç±»å:æéæ è¯ï¼å¯ä»¥å¤ä¸ªï¼ç¨éå·éå¼)', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'permission_flag' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨ç¾ç½²æ¯ä¾å¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'node_ratio' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'åæ ', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'coordinate' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ¯å¦å¯ä»¥éåä»»æèç¹ï¼Yæ¯ Nå¦ï¼å³å°å é¤', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'skip_any_node' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ä»»æç»ç¹è·³è½¬', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'any_node_skip' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'çå¬å¨ç±»å', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'listener_type' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'çå¬å¨è·¯å¾', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'listener_path' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å¤çå¨ç±»å', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'handler_type' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å¤çå¨è·¯å¾', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'handler_path' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'form_custom' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'审æ¹è¡¨åè·¯å¾', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'form_path' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'çæ¬', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'version' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'create_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ´æ°æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'update_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å 餿 å¿', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'del_flag' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç§æ·id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node', |
| | | 'COLUMN', N'tenant_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨èç¹è¡¨', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_node' |
| | | GO |
| | | |
| | | CREATE TABLE flow_skip ( |
| | | id bigint NOT NULL, |
| | | definition_id bigint NOT NULL, |
| | | now_node_code nvarchar(100) NOT NULL, |
| | | now_node_type tinyint NULL, |
| | | next_node_code nvarchar(100) NOT NULL, |
| | | next_node_type tinyint NULL, |
| | | skip_name nvarchar(100) NULL, |
| | | skip_type nvarchar(40) NULL, |
| | | skip_condition nvarchar(200) NULL, |
| | | coordinate nvarchar(100) NULL, |
| | | create_time datetime2(7) NULL, |
| | | update_time datetime2(7) NULL, |
| | | del_flag nchar(1) DEFAULT('0') NULL, |
| | | tenant_id nvarchar(40) NULL, |
| | | CONSTRAINT PK__flow_ski__3213E83F073FEE6E PRIMARY KEY CLUSTERED (id) |
| | | WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) |
| | | ON [PRIMARY] |
| | | ) |
| | | ON [PRIMARY] |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'主é®id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip', |
| | | 'COLUMN', N'id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨å®ä¹id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip', |
| | | 'COLUMN', N'definition_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å½åæµç¨èç¹çç¼ç ', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip', |
| | | 'COLUMN', N'now_node_code' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å½åèç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip', |
| | | 'COLUMN', N'now_node_type' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ä¸ä¸ä¸ªæµç¨èç¹çç¼ç ', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip', |
| | | 'COLUMN', N'next_node_code' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ä¸ä¸ä¸ªèç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip', |
| | | 'COLUMN', N'next_node_type' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'跳转åç§°', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip', |
| | | 'COLUMN', N'skip_name' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'跳转类åï¼PASS审æ¹éè¿ REJECTéåï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip', |
| | | 'COLUMN', N'skip_type' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'跳转æ¡ä»¶', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip', |
| | | 'COLUMN', N'skip_condition' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'åæ ', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip', |
| | | 'COLUMN', N'coordinate' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip', |
| | | 'COLUMN', N'create_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ´æ°æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip', |
| | | 'COLUMN', N'update_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å 餿 å¿', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip', |
| | | 'COLUMN', N'del_flag' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç§æ·id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip', |
| | | 'COLUMN', N'tenant_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'èç¹è·³è½¬å
³è表', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_skip' |
| | | GO |
| | | |
| | | CREATE TABLE flow_instance ( |
| | | id bigint NOT NULL, |
| | | definition_id bigint NOT NULL, |
| | | business_id nvarchar(40) NOT NULL, |
| | | node_type tinyint NOT NULL, |
| | | node_code nvarchar(40) NOT NULL, |
| | | node_name nvarchar(100) NULL, |
| | | variable nvarchar(max) NULL, |
| | | flow_status nvarchar(20) NOT NULL, |
| | | activity_status tinyint DEFAULT('1') NULL, |
| | | create_by nvarchar(64) NULL, |
| | | create_time datetime2(7) NULL, |
| | | update_time datetime2(7) NULL, |
| | | ext nvarchar(500) NULL, |
| | | del_flag nchar(1) DEFAULT('0') NULL, |
| | | tenant_id nvarchar(40) NULL, |
| | | CONSTRAINT PK__flow_ins__3213E83F5190FEE1 PRIMARY KEY CLUSTERED (id) |
| | | WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) |
| | | ON [PRIMARY] |
| | | ) |
| | | ON [PRIMARY] |
| | | TEXTIMAGE_ON [PRIMARY] |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'主é®id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'对åºflow_definition表çid', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'definition_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ä¸å¡id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'business_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'node_type' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨èç¹ç¼ç ', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'node_code' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨èç¹åç§°', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'node_name' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ä»»å¡åé', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'variable' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨ç¶æï¼0å¾
æäº¤ 1审æ¹ä¸ 2 审æ¹éè¿ 3èªå¨éè¿ 4ç»æ¢ 5ä½åº 6æ¤é 7åå 8已宿 9å·²éå 10失æï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'flow_status' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨æ¿æ´»ç¶æï¼0æèµ· 1æ¿æ´»ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'activity_status' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建è
', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'create_by' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'create_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ´æ°æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'update_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ©å±å段ï¼é¢çç»ä¸å¡ç³»ç»ä½¿ç¨', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'ext' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å 餿 å¿', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'del_flag' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç§æ·id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance', |
| | | 'COLUMN', N'tenant_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨å®ä¾è¡¨', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_instance' |
| | | GO |
| | | |
| | | CREATE TABLE flow_task ( |
| | | id bigint NOT NULL, |
| | | definition_id bigint NOT NULL, |
| | | instance_id bigint NOT NULL, |
| | | node_code nvarchar(100) NOT NULL, |
| | | node_name nvarchar(100) NULL, |
| | | node_type tinyint NOT NULL, |
| | | form_custom nchar(1) DEFAULT('N') NULL, |
| | | form_path nvarchar(100) NULL, |
| | | create_time datetime2(7) NULL, |
| | | update_time datetime2(7) NULL, |
| | | del_flag nchar(1) DEFAULT('0') NULL, |
| | | tenant_id nvarchar(40) NULL, |
| | | CONSTRAINT PK__flow_tas__3213E83F5AE1F1BA PRIMARY KEY CLUSTERED (id) |
| | | WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) |
| | | ON [PRIMARY] |
| | | ) |
| | | ON [PRIMARY] |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'主é®id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_task', |
| | | 'COLUMN', N'id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'对åºflow_definition表çid', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_task', |
| | | 'COLUMN', N'definition_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'对åºflow_instance表çid', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_task', |
| | | 'COLUMN', N'instance_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'èç¹ç¼ç ', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_task', |
| | | 'COLUMN', N'node_code' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'èç¹åç§°', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_task', |
| | | 'COLUMN', N'node_name' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_task', |
| | | 'COLUMN', N'node_type' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_task', |
| | | 'COLUMN', N'form_custom' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'审æ¹è¡¨åè·¯å¾', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_task', |
| | | 'COLUMN', N'form_path' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_task', |
| | | 'COLUMN', N'create_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ´æ°æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_task', |
| | | 'COLUMN', N'update_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å 餿 å¿', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_task', |
| | | 'COLUMN', N'del_flag' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç§æ·id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_task', |
| | | 'COLUMN', N'tenant_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å¾
åä»»å¡è¡¨', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_task' |
| | | GO |
| | | |
| | | CREATE TABLE flow_his_task ( |
| | | id bigint NOT NULL, |
| | | definition_id bigint NOT NULL, |
| | | instance_id bigint NOT NULL, |
| | | task_id bigint NOT NULL, |
| | | node_code nvarchar(100) NULL, |
| | | node_name nvarchar(100) NULL, |
| | | node_type tinyint NULL, |
| | | target_node_code nvarchar(100) NULL, |
| | | target_node_name nvarchar(100) NULL, |
| | | approver nvarchar(40) NULL, |
| | | cooperate_type tinyint DEFAULT('0') NULL, |
| | | collaborator nvarchar(40) NULL, |
| | | skip_type nvarchar(10) NOT NULL, |
| | | flow_status nvarchar(20) NOT NULL, |
| | | form_custom nchar(1) DEFAULT('N') NULL, |
| | | form_path nvarchar(100) NULL, |
| | | message nvarchar(500) NULL, |
| | | ext nvarchar(500) NULL, |
| | | create_time datetime2(7) NULL, |
| | | update_time datetime2(7) NULL, |
| | | del_flag nchar(1) DEFAULT('0') NULL, |
| | | tenant_id nvarchar(40) NULL, |
| | | CONSTRAINT PK__flow_his__3213E83F67951564 PRIMARY KEY CLUSTERED (id) |
| | | WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) |
| | | ON [PRIMARY] |
| | | ) |
| | | ON [PRIMARY] |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'主é®id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'对åºflow_definition表çid', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'definition_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'对åºflow_instance表çid', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'instance_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'对åºflow_task表çid', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'task_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å¼å§èç¹ç¼ç ', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'node_code' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å¼å§èç¹åç§°', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'node_name' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å¼å§èç¹ç±»åï¼0å¼å§èç¹ 1ä¸é´èç¹ 2ç»æèç¹ 3äºæ¥ç½å
³ 4å¹¶è¡ç½å
³ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'node_type' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç®æ èç¹ç¼ç ', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'target_node_code' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç»æèç¹åç§°', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'target_node_name' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'审æ¹è
', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'approver' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å使¹å¼(1å®¡æ¹ 2转å 3å§æ´¾ 4ä¼ç¾ 5ç¥¨ç¾ 6å ç¾ 7åç¾)', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'cooperate_type' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'åä½äºº', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'collaborator' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµè½¬ç±»åï¼PASSéè¿ REJECTéå NONEæ å¨ä½ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'skip_type' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨ç¶æï¼1审æ¹ä¸ 2 审æ¹éè¿ 9å·²éå 10失æï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'flow_status' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'审æ¹è¡¨åæ¯å¦èªå®ä¹ï¼Yæ¯ Nå¦ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'form_custom' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'审æ¹è¡¨åè·¯å¾', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'form_path' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å®¡æ¹æè§', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'message' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ä¸å¡è¯¦æ
åä¸å¡è¡¨å¯¹è±¡jsonå符串', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'ext' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ä»»å¡å¼å§æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'create_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'审æ¹å®ææ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'update_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å 餿 å¿', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'del_flag' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç§æ·id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task', |
| | | 'COLUMN', N'tenant_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'åå²ä»»å¡è®°å½è¡¨', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_his_task' |
| | | GO |
| | | |
| | | CREATE TABLE flow_user ( |
| | | id bigint NOT NULL, |
| | | type nchar(1) NOT NULL, |
| | | processed_by nvarchar(80) NULL, |
| | | associated bigint NOT NULL, |
| | | create_time datetime2(7) NULL, |
| | | create_by nvarchar(80) NULL, |
| | | update_time datetime2(7) NULL, |
| | | del_flag nchar(1) DEFAULT('0') NULL, |
| | | tenant_id nvarchar(40) NULL, |
| | | CONSTRAINT PK__flow_use__3213E83FFA38CA8B PRIMARY KEY CLUSTERED (id) |
| | | WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) |
| | | ON [PRIMARY] |
| | | ) |
| | | ON [PRIMARY] |
| | | GO |
| | | |
| | | CREATE NONCLUSTERED INDEX user_processed_type ON flow_user (processed_by ASC, type ASC) |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'主é®id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_user', |
| | | 'COLUMN', N'id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'人åç±»åï¼1å¾
åä»»å¡ç审æ¹äººæé 2å¾
åä»»å¡ç转å人æé 3å¾
åä»»å¡çå§æäººæéï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_user', |
| | | 'COLUMN', N'type' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æé人', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_user', |
| | | 'COLUMN', N'processed_by' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ä»»å¡è¡¨id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_user', |
| | | 'COLUMN', N'associated' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_user', |
| | | 'COLUMN', N'create_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建人', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_user', |
| | | 'COLUMN', N'create_by' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ´æ°æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_user', |
| | | 'COLUMN', N'update_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å 餿 å¿', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_user', |
| | | 'COLUMN', N'del_flag' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç§æ·id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_user', |
| | | 'COLUMN', N'tenant_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨ç¨æ·è¡¨', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_user' |
| | | GO |
| | | |
| | | CREATE TABLE flow_category ( |
| | | category_id bigint NOT NULL, |
| | | tenant_id nvarchar(20) DEFAULT('000000') NULL, |
| | | parent_id bigint DEFAULT(0) NULL, |
| | | ancestors nvarchar(500) DEFAULT('') NULL, |
| | | category_name nvarchar(30) NOT NULL, |
| | | order_num int DEFAULT(0) NULL, |
| | | del_flag nchar(1) DEFAULT('0') NULL, |
| | | create_dept bigint NULL, |
| | | create_by bigint NULL, |
| | | create_time datetime2(7) NULL, |
| | | update_by bigint NULL, |
| | | update_time datetime2(7) NULL, |
| | | CONSTRAINT PK__flow_cat__D54EE9B4AE98B9C1 PRIMARY KEY CLUSTERED (category_id) |
| | | WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) |
| | | ON [PRIMARY] |
| | | ) |
| | | ON [PRIMARY] |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨åç±»ID', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_category', |
| | | 'COLUMN', N'category_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç§æ·ç¼å·', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_category', |
| | | 'COLUMN', N'tenant_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç¶æµç¨åç±»id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_category', |
| | | 'COLUMN', N'parent_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç¥çº§å表', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_category', |
| | | 'COLUMN', N'ancestors' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨åç±»åç§°', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_category', |
| | | 'COLUMN', N'category_name' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ¾ç¤ºé¡ºåº', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_category', |
| | | 'COLUMN', N'order_num' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å 餿 å¿ï¼0代表åå¨ 2代表å é¤ï¼', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_category', |
| | | 'COLUMN', N'del_flag' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建é¨é¨', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_category', |
| | | 'COLUMN', N'create_dept' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建è
', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_category', |
| | | 'COLUMN', N'create_by' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_category', |
| | | 'COLUMN', N'create_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ´æ°è
', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_category', |
| | | 'COLUMN', N'update_by' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ´æ°æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_category', |
| | | 'COLUMN', N'update_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æµç¨åç±»', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'flow_category' |
| | | GO |
| | | |
| | | INSERT flow_category VALUES (100, N'000000', 0, N'0', N'OA审æ¹', 0, N'0', 103, 1, getdate(), NULL, NULL); |
| | | GO |
| | | INSERT flow_category VALUES (101, N'000000', 100, N'0,100', N'åå¤ç®¡ç', 0, N'0', 103, 1, getdate(), NULL, NULL); |
| | | GO |
| | | INSERT flow_category VALUES (102, N'000000', 100, N'0,100', N'人äºç®¡ç', 0, N'0', 103, 1, getdate(), NULL, NULL); |
| | | GO |
| | | INSERT flow_category VALUES (103, N'000000', 101, N'0,100,101', N'请å', 0, N'0', 103, 1, getdate(), NULL, NULL); |
| | | GO |
| | | INSERT flow_category VALUES (104, N'000000', 101, N'0,100,101', N'åºå·®', 1, N'0', 103, 1, getdate(), NULL, NULL); |
| | | GO |
| | | INSERT flow_category VALUES (105, N'000000', 101, N'0,100,101', N'å ç', 2, N'0', 103, 1, getdate(), NULL, NULL); |
| | | GO |
| | | INSERT flow_category VALUES (106, N'000000', 101, N'0,100,101', N'æ¢ç', 3, N'0', 103, 1, getdate(), NULL, NULL); |
| | | GO |
| | | INSERT flow_category VALUES (107, N'000000', 101, N'0,100,101', N'å¤åº', 4, N'0', 103, 1, getdate(), NULL, NULL); |
| | | GO |
| | | INSERT flow_category VALUES (108, N'000000', 102, N'0,100,102', N'转æ£', 1, N'0', 103, 1, getdate(), NULL, NULL); |
| | | GO |
| | | INSERT flow_category VALUES (109, N'000000', 102, N'0,100,102', N'离è', 2, N'0', 103, 1, getdate(), NULL, NULL); |
| | | GO |
| | | |
| | | CREATE TABLE test_leave ( |
| | | id bigint NOT NULL, |
| | | tenant_id nvarchar(20) DEFAULT('000000') NULL, |
| | | leave_type nvarchar(255) NOT NULL, |
| | | start_date datetime2(7) NOT NULL, |
| | | end_date datetime2(7) NOT NULL, |
| | | leave_days int NOT NULL, |
| | | remark nvarchar(255) NULL, |
| | | status nvarchar(255) NULL, |
| | | create_dept bigint NULL, |
| | | create_by bigint NULL, |
| | | create_time datetime2(7) NULL, |
| | | update_by bigint NULL, |
| | | update_time datetime2(7) NULL, |
| | | CONSTRAINT PK__test_lea__3213E83F348788FA PRIMARY KEY CLUSTERED (id) |
| | | WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) |
| | | ON [PRIMARY] |
| | | ) |
| | | ON [PRIMARY] |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'id', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'test_leave', |
| | | 'COLUMN', N'id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç§æ·ç¼å·', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'test_leave', |
| | | 'COLUMN', N'tenant_id' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'请åç±»å', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'test_leave', |
| | | 'COLUMN', N'leave_type' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å¼å§æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'test_leave', |
| | | 'COLUMN', N'start_date' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç»ææ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'test_leave', |
| | | 'COLUMN', N'end_date' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'请å天æ°', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'test_leave', |
| | | 'COLUMN', N'leave_days' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'请ååå ', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'test_leave', |
| | | 'COLUMN', N'remark' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'ç¶æ', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'test_leave', |
| | | 'COLUMN', N'status' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建é¨é¨', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'test_leave', |
| | | 'COLUMN', N'create_dept' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建è
', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'test_leave', |
| | | 'COLUMN', N'create_by' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'å建æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'test_leave', |
| | | 'COLUMN', N'create_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ´æ°è
', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'test_leave', |
| | | 'COLUMN', N'update_by' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'æ´æ°æ¶é´', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'test_leave', |
| | | 'COLUMN', N'update_time' |
| | | GO |
| | | |
| | | EXEC sp_addextendedproperty |
| | | 'MS_Description', N'请åç³è¯·è¡¨', |
| | | 'SCHEMA', N'dbo', |
| | | 'TABLE', N'test_leave' |
| | | GO |
| | | |
| | | INSERT sys_menu VALUES (11616, N'工使µ', 0, 6, N'workflow', NULL, N'', 1, 0, N'M', N'0', N'0', N'', N'workflow', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11618, N'æçä»»å¡', 0, 7, N'task', NULL, N'', 1, 0, N'M', N'0', N'0', N'', N'my-task', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11619, N'æçå¾
å', 11618, 2, N'taskWaiting', N'workflow/task/taskWaiting', N'', 1, 1, N'C', N'0', N'0', N'', N'waiting', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11632, N'æçå·²å', 11618, 3, N'taskFinish', N'workflow/task/taskFinish', N'', 1, 1, N'C', N'0', N'0', N'', N'finish', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11633, N'æçæé', 11618, 4, N'taskCopyList', N'workflow/task/taskCopyList', N'', 1, 1, N'C', N'0', N'0', N'', N'my-copy', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11620, N'æµç¨å®ä¹', 11616, 3, N'processDefinition', N'workflow/processDefinition/index', N'', 1, 1, N'C', N'0', N'0', N'', N'process-definition', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11621, N'æµç¨å®ä¾', 11630, 1, N'processInstance', N'workflow/processInstance/index', N'', 1, 1, N'C', N'0', N'0', N'', N'tree-table', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11622, N'æµç¨åç±»', 11616, 1, N'category', N'workflow/category/index', N'', 1, 0, N'C', N'0', N'0', N'workflow:category:list', N'category', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11629, N'æåèµ·ç', 11618, 1, N'myDocument', N'workflow/task/myDocument', N'', 1, 1, N'C', N'0', N'0', N'', N'guide', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11630, N'æµç¨çæ§', 11616, 4, N'monitor', NULL, N'', 1, 0, N'M', N'0', N'0', N'', N'monitor', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11631, N'å¾
åä»»å¡', 11630, 2, N'allTaskWaiting', N'workflow/task/allTaskWaiting', N'', 1, 1, N'C', N'0', N'0', N'', N'waiting', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | |
| | | -- æµç¨å类管çç¸å
³æé® |
| | | insert into sys_menu values ('11623', 'æµç¨åç±»æ¥è¯¢', '11622', '1', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:query', '#', 103, 1, getdate(), null, null, ''); |
| | | insert into sys_menu values ('11624', 'æµç¨åç±»æ°å¢', '11622', '2', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:add', '#', 103, 1, getdate(), null, null, ''); |
| | | insert into sys_menu values ('11625', 'æµç¨å类修æ¹', '11622', '3', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:edit', '#', 103, 1, getdate(), null, null, ''); |
| | | insert into sys_menu values ('11626', 'æµç¨åç±»å é¤', '11622', '4', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:remove','#', 103, 1, getdate(), null, null, ''); |
| | | insert into sys_menu values ('11627', 'æµç¨å类导åº', '11622', '5', '#', '', '', 1, 0, 'F', '0', '0', 'workflow:category:export','#', 103, 1, getdate(), null, null, ''); |
| | | -- 请ååä¿¡æ¯ |
| | | create table test_leave |
| | | ( |
| | | id bigint not null |
| | | primary key, |
| | | leave_type nvarchar(255) not null, |
| | | start_date datetime2 not null, |
| | | end_date datetime2 not null, |
| | | leave_days int not null, |
| | | remark nvarchar(255), |
| | | status nvarchar(255), |
| | | create_dept bigint, |
| | | create_by bigint, |
| | | create_time datetime2, |
| | | update_by bigint, |
| | | update_time datetime2, |
| | | tenant_id nvarchar(20) |
| | | ) |
| | | go |
| | | INSERT sys_menu VALUES (11623, N'æµç¨åç±»æ¥è¯¢', 11622, 1, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'workflow:category:query', N'#', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11624, N'æµç¨åç±»æ°å¢', 11622, 2, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'workflow:category:add', N'#', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11625, N'æµç¨å类修æ¹', 11622, 3, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'workflow:category:edit', N'#', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11626, N'æµç¨åç±»å é¤', 11622, 4, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'workflow:category:remove', N'#', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11627, N'æµç¨å类导åº', 11622, 5, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'workflow:category:export', N'#', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'请åç³è¯·è¡¨', 'SCHEMA', 'dbo', 'TABLE', 'test_leave' |
| | | go |
| | | -- è¯·åæµè¯ç¸å
³æé® |
| | | INSERT sys_menu VALUES (11638, N'请åç³è¯·', 5, 1, N'leave', N'workflow/leave/index', N'', 1, 0, N'C', N'0', N'0', N'workflow:leave:list', N'#', 103, 1, GETDATE(), NULL, NULL, N'请åç³è¯·èå'); |
| | | GO |
| | | INSERT sys_menu VALUES (11639, N'请åç³è¯·æ¥è¯¢', 11638, 1, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'workflow:leave:query', N'#', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11640, N'请åç³è¯·æ°å¢', 11638, 2, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'workflow:leave:add', N'#', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11641, N'请åç³è¯·ä¿®æ¹', 11638, 3, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'workflow:leave:edit', N'#', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11642, N'请åç³è¯·å é¤', 11638, 4, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'workflow:leave:remove', N'#', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | GO |
| | | INSERT sys_menu VALUES (11643, N'请åç³è¯·å¯¼åº', 11638, 5, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'workflow:leave:export', N'#', 103, 1, GETDATE(), NULL, NULL, N''); |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'主é®', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', 'id' |
| | | go |
| | | INSERT sys_dict_type VALUES (13, N'000000', N'ä¸å¡ç¶æ', N'wf_business_status', 103, 1, GETDATE(), NULL, NULL, N'ä¸å¡ç¶æå表'); |
| | | GO |
| | | INSERT sys_dict_type VALUES (14, N'000000', N'表åç±»å', N'wf_form_type', 103, 1, GETDATE(), NULL, NULL, N'表åç±»åå表'); |
| | | GO |
| | | INSERT sys_dict_type VALUES (15, N'000000', N'ä»»å¡ç¶æ', N'wf_task_status', 103, 1, GETDATE(), NULL, NULL, N'ä»»å¡ç¶æ'); |
| | | GO |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'请åç±»å', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', |
| | | 'leave_type' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å¼å§æ¶é´', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', |
| | | 'start_date' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'ç»ææ¶é´', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', 'end_date' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'请å天æ°', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', |
| | | 'leave_days' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'请ååå ', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', 'remark' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'ç¶æ', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', 'status' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建é¨é¨', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', |
| | | 'create_dept' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建è
', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', 'create_by' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建æ¶é´', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', |
| | | 'create_time' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æ´æ°è
', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', 'update_by' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æ´æ°æ¶é´', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', |
| | | 'update_time' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'ç§æ·ç¼å·', 'SCHEMA', 'dbo', 'TABLE', 'test_leave', 'COLUMN', 'tenant_id' |
| | | go |
| | | |
| | | -- æµç¨å类信æ¯è¡¨ |
| | | create table wf_category |
| | | ( |
| | | id bigint not null |
| | | primary key, |
| | | category_name nvarchar(255), |
| | | category_code nvarchar(255) |
| | | constraint uni_category_code |
| | | unique, |
| | | parent_id bigint, |
| | | sort_num int, |
| | | tenant_id nvarchar(20), |
| | | create_dept bigint, |
| | | create_by bigint, |
| | | create_time datetime2, |
| | | update_by bigint, |
| | | update_time datetime2 |
| | | ) |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æµç¨åç±»', 'SCHEMA', 'dbo', 'TABLE', 'wf_category' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'主é®', 'SCHEMA', 'dbo', 'TABLE', 'wf_category', 'COLUMN', 'id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'åç±»åç§°', 'SCHEMA', 'dbo', 'TABLE', 'wf_category', 'COLUMN', |
| | | 'category_name' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'åç±»ç¼ç ', 'SCHEMA', 'dbo', 'TABLE', 'wf_category', 'COLUMN', |
| | | 'category_code' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'ç¶çº§id', 'SCHEMA', 'dbo', 'TABLE', 'wf_category', 'COLUMN', 'parent_id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æåº', 'SCHEMA', 'dbo', 'TABLE', 'wf_category', 'COLUMN', 'sort_num' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'ç§æ·ç¼å·', 'SCHEMA', 'dbo', 'TABLE', 'wf_category', 'COLUMN', |
| | | 'tenant_id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建é¨é¨', 'SCHEMA', 'dbo', 'TABLE', 'wf_category', 'COLUMN', |
| | | 'create_dept' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建è
', 'SCHEMA', 'dbo', 'TABLE', 'wf_category', 'COLUMN', 'create_by' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建æ¶é´', 'SCHEMA', 'dbo', 'TABLE', 'wf_category', 'COLUMN', |
| | | 'create_time' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æ´æ°è
', 'SCHEMA', 'dbo', 'TABLE', 'wf_category', 'COLUMN', 'update_by' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æ´æ°æ¶é´', 'SCHEMA', 'dbo', 'TABLE', 'wf_category', 'COLUMN', |
| | | 'update_time' |
| | | go |
| | | |
| | | INSERT INTO wf_category values (1, 'OA', 'OA', 0, 0, '000000', 103, 1, getdate(), 1, getdate()); |
| | | |
| | | create table wf_task_back_node |
| | | ( |
| | | id bigint not null primary key, |
| | | node_id nvarchar(255) not null, |
| | | node_name nvarchar(255) not null, |
| | | order_no int not null, |
| | | instance_id nvarchar(255) not null, |
| | | task_type nvarchar(255) not null, |
| | | assignee nvarchar(2000) not null, |
| | | tenant_id nvarchar(20), |
| | | create_dept bigint, |
| | | create_by bigint, |
| | | create_time datetime2, |
| | | update_by bigint, |
| | | update_time datetime2 |
| | | ) |
| | | |
| | | go |
| | | exec sp_addextendedproperty 'MS_Description', N'èç¹å®¡æ¹è®°å½', 'SCHEMA', 'dbo', 'TABLE', 'wf_task_back_node' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'主é®', 'SCHEMA', 'dbo', 'TABLE', 'wf_task_back_node', 'COLUMN', 'id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'èç¹id', 'SCHEMA', 'dbo', 'TABLE', 'wf_task_back_node', 'COLUMN', |
| | | 'node_id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'èç¹åç§°', 'SCHEMA', 'dbo', 'TABLE', 'wf_task_back_node', 'COLUMN', |
| | | 'node_name' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æåº', 'SCHEMA', 'dbo', 'TABLE', 'wf_task_back_node', 'COLUMN', 'order_no' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æµç¨å®ä¾id', 'SCHEMA', 'dbo', 'TABLE', 'wf_task_back_node', 'COLUMN', 'instance_id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'èç¹ç±»å', 'SCHEMA', 'dbo', 'TABLE', 'wf_task_back_node', 'COLUMN', 'task_type' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'审æ¹äºº', 'SCHEMA', 'dbo', 'TABLE', 'wf_task_back_node', 'COLUMN', 'assignee' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'ç§æ·ç¼å·', 'SCHEMA', 'dbo', 'TABLE', 'wf_task_back_node', 'COLUMN', |
| | | 'tenant_id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建é¨é¨', 'SCHEMA', 'dbo', 'TABLE', 'wf_task_back_node', 'COLUMN', |
| | | 'create_dept' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建è
', 'SCHEMA', 'dbo', 'TABLE', 'wf_task_back_node', 'COLUMN', 'create_by' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建æ¶é´', 'SCHEMA', 'dbo', 'TABLE', 'wf_task_back_node', 'COLUMN', |
| | | 'create_time' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æ´æ°è
', 'SCHEMA', 'dbo', 'TABLE', 'wf_task_back_node', 'COLUMN', 'update_by' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æ´æ°æ¶é´', 'SCHEMA', 'dbo', 'TABLE', 'wf_task_back_node', 'COLUMN', |
| | | 'update_time' |
| | | go |
| | | |
| | | create table wf_definition_config |
| | | ( |
| | | id bigint not null primary key, |
| | | table_name nvarchar(255) not null, |
| | | definition_id nvarchar(255) not null |
| | | constraint uni_definition_id |
| | | unique, |
| | | process_key nvarchar(255) not null, |
| | | version bigint not null, |
| | | remark nvarchar(500) DEFAULT ('') null, |
| | | tenant_id nvarchar(20), |
| | | create_dept bigint, |
| | | create_by bigint, |
| | | create_time datetime2, |
| | | update_by bigint, |
| | | update_time datetime2 |
| | | ) |
| | | |
| | | go |
| | | exec sp_addextendedproperty 'MS_Description', N'æµç¨å®ä¹é
ç½®', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'主é®', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config', 'COLUMN', 'id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'表å', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config', 'COLUMN', |
| | | 'table_name' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æµç¨å®ä¹ID', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config', 'COLUMN', |
| | | 'definition_id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æµç¨KEY', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config', 'COLUMN', |
| | | 'process_key' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æµç¨çæ¬', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config', 'COLUMN', |
| | | 'version' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'夿³¨', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config', 'COLUMN', |
| | | 'remark' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'ç§æ·ç¼å·', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config', 'COLUMN', |
| | | 'tenant_id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建é¨é¨', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config', 'COLUMN', |
| | | 'create_dept' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建è
', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config', 'COLUMN', 'create_by' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建æ¶é´', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config', 'COLUMN', |
| | | 'create_time' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æ´æ°è
', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config', 'COLUMN', 'update_by' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æ´æ°æ¶é´', 'SCHEMA', 'dbo', 'TABLE', 'wf_definition_config', 'COLUMN', |
| | | 'update_time' |
| | | go |
| | | |
| | | create table wf_form_manage |
| | | ( |
| | | id bigint not null primary key, |
| | | form_name nvarchar(255) not null, |
| | | form_type nvarchar(255) not null, |
| | | router nvarchar(255) not null, |
| | | remark nvarchar(500) null, |
| | | tenant_id nvarchar(20), |
| | | create_dept bigint, |
| | | create_by bigint, |
| | | create_time datetime2, |
| | | update_by bigint, |
| | | update_time datetime2 |
| | | ) |
| | | |
| | | go |
| | | exec sp_addextendedproperty 'MS_Description', N'表å管ç', 'SCHEMA', 'dbo', 'TABLE', 'wf_form_manage' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'主é®', 'SCHEMA', 'dbo', 'TABLE', 'wf_form_manage', 'COLUMN', 'id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'表ååç§°', 'SCHEMA', 'dbo', 'TABLE', 'wf_form_manage', 'COLUMN', |
| | | 'form_name' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'表åç±»å', 'SCHEMA', 'dbo', 'TABLE', 'wf_form_manage', 'COLUMN', |
| | | 'form_type' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'è·¯ç±å°å/表åID', 'SCHEMA', 'dbo', 'TABLE', 'wf_form_manage', 'COLUMN', |
| | | 'router' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'夿³¨', 'SCHEMA', 'dbo', 'TABLE', 'wf_form_manage', 'COLUMN', |
| | | 'remark' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'ç§æ·ç¼å·', 'SCHEMA', 'dbo', 'TABLE', 'wf_form_manage', 'COLUMN', |
| | | 'tenant_id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建é¨é¨', 'SCHEMA', 'dbo', 'TABLE', 'wf_form_manage', 'COLUMN', |
| | | 'create_dept' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建è
', 'SCHEMA', 'dbo', 'TABLE', 'wf_form_manage', 'COLUMN', 'create_by' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建æ¶é´', 'SCHEMA', 'dbo', 'TABLE', 'wf_form_manage', 'COLUMN', |
| | | 'create_time' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æ´æ°è
', 'SCHEMA', 'dbo', 'TABLE', 'wf_form_manage', 'COLUMN', 'update_by' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æ´æ°æ¶é´', 'SCHEMA', 'dbo', 'TABLE', 'wf_form_manage', 'COLUMN', |
| | | 'update_time' |
| | | go |
| | | |
| | | insert into wf_form_manage(id, form_name, form_type, router, remark, tenant_id, create_dept, create_by, create_time, update_by, update_time) VALUES (1, '请åç³è¯·', 'static', '/workflow/leaveEdit/index', NULL, '000000', 103, 1, getdate(), 1, getdate()); |
| | | |
| | | create table wf_node_config |
| | | ( |
| | | id bigint not null primary key, |
| | | form_id bigint, |
| | | form_type nvarchar(255) , |
| | | node_name nvarchar(255) not null, |
| | | node_id nvarchar(255) not null, |
| | | definition_id nvarchar(255) not null, |
| | | apply_user_task nchar default ('0') null, |
| | | tenant_id nvarchar(20), |
| | | create_dept bigint, |
| | | create_by bigint, |
| | | create_time datetime2, |
| | | update_by bigint, |
| | | update_time datetime2 |
| | | ) |
| | | |
| | | go |
| | | exec sp_addextendedproperty 'MS_Description', N'èç¹é
ç½®', 'SCHEMA', 'dbo', 'TABLE', 'wf_node_config' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'主é®', 'SCHEMA', 'dbo', 'TABLE', 'wf_node_config', 'COLUMN', 'id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'表åid', 'SCHEMA', 'dbo', 'TABLE', 'wf_node_config', 'COLUMN', |
| | | 'form_id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'表åç±»å', 'SCHEMA', 'dbo', 'TABLE', 'wf_node_config', 'COLUMN', |
| | | 'form_type' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'èç¹åç§°', 'SCHEMA', 'dbo', 'TABLE', 'wf_node_config', 'COLUMN', |
| | | 'node_name' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'èç¹id', 'SCHEMA', 'dbo', 'TABLE', 'wf_node_config', 'COLUMN', |
| | | 'node_id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æµç¨å®ä¹id', 'SCHEMA', 'dbo', 'TABLE', 'wf_node_config', 'COLUMN', |
| | | 'definition_id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æ¯å¦ä¸ºç³è¯·äººèç¹ ï¼0æ¯ 1å¦ï¼', 'SCHEMA', 'dbo', 'TABLE', 'wf_node_config', 'COLUMN', |
| | | 'apply_user_task' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'ç§æ·ç¼å·', 'SCHEMA', 'dbo', 'TABLE', 'wf_node_config', 'COLUMN', |
| | | 'tenant_id' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建é¨é¨', 'SCHEMA', 'dbo', 'TABLE', 'wf_node_config', 'COLUMN', |
| | | 'create_dept' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建è
', 'SCHEMA', 'dbo', 'TABLE', 'wf_node_config', 'COLUMN', 'create_by' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'å建æ¶é´', 'SCHEMA', 'dbo', 'TABLE', 'wf_node_config', 'COLUMN', |
| | | 'create_time' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æ´æ°è
', 'SCHEMA', 'dbo', 'TABLE', 'wf_node_config', 'COLUMN', 'update_by' |
| | | go |
| | | |
| | | exec sp_addextendedproperty 'MS_Description', N'æ´æ°æ¶é´', 'SCHEMA', 'dbo', 'TABLE', 'wf_node_config', 'COLUMN', |
| | | 'update_time' |
| | | go |
| | | |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11638, '请åç³è¯·', 5, 1, 'leave', 'workflow/leave/index', 1, 0, 'C', '0', '0', 'workflow:leave:list', '#', 103, 1, getdate(), NULL, NULL, '请åç³è¯·èå'); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11639, '请åç³è¯·æ¥è¯¢', 11638, 1, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, getdate(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11640, '请åç³è¯·æ°å¢', 11638, 2, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:add', '#', 103, 1, getdate(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11641, '请åç³è¯·ä¿®æ¹', 11638, 3, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:edit', '#', 103, 1, getdate(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11642, '请åç³è¯·å é¤', 11638, 4, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:remove', '#', 103, 1, getdate(), NULL, NULL, ''); |
| | | INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (11643, '请åç³è¯·å¯¼åº', 11638, 5, '#', '', 1, 0, 'F', '0', '0', 'workflow:leave:export', '#', 103, 1, getdate(), NULL, NULL, ''); |
| | | |
| | | INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (13, '000000', 'ä¸å¡ç¶æ', 'wf_business_status', 103, 1, getdate(), NULL, NULL, 'ä¸å¡ç¶æå表'); |
| | | INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (14, '000000', '表åç±»å', 'wf_form_type', 103, 1, getdate(), NULL, NULL, '表åç±»åå表'); |
| | | |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (39, '000000', 1, 'å·²æ¤é', 'cancel', 'wf_business_status', '', 'danger', 'N', 103, 1, getdate(), NULL, NULL, 'å·²æ¤é'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (40, '000000', 2, 'è稿', 'draft', 'wf_business_status', '', 'info', 'N', 103, 1, getdate(), NULL, NULL, 'è稿'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (41, '000000', 3, 'å¾
å®¡æ ¸', 'waiting', 'wf_business_status', '', 'primary', 'N', 103, 1,getdate(), NULL, NULL, 'å¾
å®¡æ ¸'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (42, '000000', 4, '已宿', 'finish', 'wf_business_status', '', 'success', 'N', 103, 1, getdate(), NULL, NULL, '已宿'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (43, '000000', 5, 'å·²ä½åº', 'invalid', 'wf_business_status', '', 'danger', 'N', 103, 1, getdate(), NULL, NULL, 'å·²ä½åº'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (44, '000000', 6, 'å·²éå', 'back', 'wf_business_status', '', 'danger', 'N', 103, 1, getdate(), NULL, NULL, 'å·²éå'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (45, '000000', 7, 'å·²ç»æ¢', 'termination', 'wf_business_status', '', 'danger', 'N', 103, 1,getdate(), NULL, NULL, 'å·²ç»æ¢'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (46, '000000', 1, 'èªå®ä¹è¡¨å', 'static', 'wf_form_type', '', 'success', 'N', 103, 1, getdate(), NULL, NULL, 'èªå®ä¹è¡¨å'); |
| | | INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, create_dept, create_by, create_time, update_by, update_time, remark) VALUES (47, '000000', 2, 'å¨æè¡¨å', 'dynamic', 'wf_form_type', '', 'primary', 'N', 103, 1, getdate(), NULL, NULL, 'å¨æè¡¨å'); |
| | | |
| | | -- 表å管ç SQL |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11628, '表å管ç', '11616', '5', 'formManage', 'workflow/formManage/index', 1, 0, 'C', '0', '0', 'workflow:formManage:list', 'tree-table', 103, 1, getdate(), null, null, '表å管çèå'); |
| | | |
| | | -- 表å管çæé® SQL |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11644, '表åç®¡çæ¥è¯¢', 11628, '1', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:query', '', 103, 1, getdate(), null, null, ''); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11645, '表åç®¡çæ°å¢', 11628, '2', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:add', '', 103, 1, getdate(), null, null, ''); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11646, '表å管çä¿®æ¹', 11628, '3', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:edit', '', 103, 1, getdate(), null, null, ''); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11647, '表å管çå é¤', 11628, '4', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:remove', '', 103, 1, getdate(), null, null, ''); |
| | | |
| | | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) |
| | | values(11648, '表å管ç导åº', 11628, '5', '#', '', 1, 0, 'F', '0', '0', 'workflow:formManage:export', 'tree-table', 103, 1, getdate(), null, null, ''); |
| | | INSERT sys_dict_data VALUES (39, N'000000', 1, N'å·²æ¤é', N'cancel', N'wf_business_status', N'', N'danger', N'N', 103, 1, GETDATE(), NULL, NULL, N'å·²æ¤é'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (40, N'000000', 2, N'è稿', N'draft', N'wf_business_status', N'', N'info', N'N', 103, 1, GETDATE(), NULL, NULL, N'è稿'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (41, N'000000', 3, N'å¾
å®¡æ ¸', N'waiting', N'wf_business_status', N'', N'primary', N'N', 103, 1, GETDATE(), NULL, NULL, N'å¾
å®¡æ ¸'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (42, N'000000', 4, N'已宿', N'finish', N'wf_business_status', N'', N'success', N'N', 103, 1, GETDATE(), NULL, NULL, N'已宿'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (43, N'000000', 5, N'å·²ä½åº', N'invalid', N'wf_business_status', N'', N'danger', N'N', 103, 1, GETDATE(), NULL, NULL, N'å·²ä½åº'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (44, N'000000', 6, N'å·²éå', N'back', N'wf_business_status', N'', N'danger', N'N', 103, 1, GETDATE(), NULL, NULL, N'å·²éå'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (45, N'000000', 7, N'å·²ç»æ¢', N'termination', N'wf_business_status', N'', N'danger', N'N', 103, 1, GETDATE(), NULL, NULL, N'å·²ç»æ¢'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (46, N'000000', 1, N'èªå®ä¹è¡¨å', N'static', N'wf_form_type', N'', N'success', N'N', 103, 1, GETDATE(), NULL, NULL, N'èªå®ä¹è¡¨å'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (47, N'000000', 2, N'å¨æè¡¨å', N'dynamic', N'wf_form_type', N'', N'primary', N'N', 103, 1, GETDATE(), NULL, NULL, N'å¨æè¡¨å'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (48, N'000000', 1, N'æ¤é', N'cancel', N'wf_task_status', N'', N'danger', N'N', 103, 1, GETDATE(), NULL, NULL, N'æ¤é'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (49, N'000000', 2, N'éè¿', N'pass', N'wf_task_status', N'', N'success', N'N', 103, 1, GETDATE(), NULL, NULL, N'éè¿'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (50, N'000000', 3, N'å¾
å®¡æ ¸', N'waiting', N'wf_task_status', N'', N'primary', N'N', 103, 1, GETDATE(), NULL, NULL, N'å¾
å®¡æ ¸'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (51, N'000000', 4, N'ä½åº', N'invalid', N'wf_task_status', N'', N'danger', N'N', 103, 1, GETDATE(), NULL, NULL, N'ä½åº'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (52, N'000000', 5, N'éå', N'back', N'wf_task_status', N'', N'danger', N'N', 103, 1, GETDATE(), NULL, NULL, N'éå'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (53, N'000000', 6, N'ç»æ¢', N'termination', N'wf_task_status', N'', N'danger', N'N', 103, 1, GETDATE(), NULL, NULL, N'ç»æ¢'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (54, N'000000', 7, N'转å', N'transfer', N'wf_task_status', N'', N'primary', N'N', 103, 1, GETDATE(), NULL, NULL, N'转å'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (55, N'000000', 8, N'å§æ', N'depute', N'wf_task_status', N'', N'primary', N'N', 103, 1, GETDATE(), NULL, NULL, N'å§æ'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (56, N'000000', 9, N'æé', N'copy', N'wf_task_status', N'', N'primary', N'N', 103, 1, GETDATE(), NULL, NULL, N'æé'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (57, N'000000', 10, N'å ç¾', N'sign', N'wf_task_status', N'', N'primary', N'N', 103, 1, GETDATE(), NULL, NULL, N'å ç¾'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (58, N'000000', 11, N'åç¾', N'sign_off', N'wf_task_status', N'', N'danger', N'N', 103, 1, GETDATE(), NULL, NULL, N'åç¾'); |
| | | GO |
| | | INSERT sys_dict_data VALUES (59, N'000000', 11, N'è¶
æ¶', N'timeout', N'wf_task_status', N'', N'danger', N'N', 103, 1, GETDATE(), NULL, NULL, N'è¶
æ¶'); |
| | | GO |