
30 changed files with 2924 additions and 124 deletions
@ -0,0 +1,35 @@ |
|||
package com.yxt.supervise.feign.flowable; |
|||
|
|||
import lombok.Data; |
|||
/** |
|||
* task 查询参数 |
|||
*/ |
|||
@Data |
|||
public class BusinessTaskParam { |
|||
|
|||
public BusinessTaskParam(){} |
|||
|
|||
public BusinessTaskParam(String field, String value) { |
|||
this.field = field; |
|||
this.sqlOperationSymbol = SQLOperationSymbol.EQUAL; |
|||
this.value = value; |
|||
} |
|||
|
|||
public BusinessTaskParam(String field, String value, SQLOperationSymbol sqlOperationSymbol) { |
|||
this.field = field; |
|||
this.sqlOperationSymbol = sqlOperationSymbol; |
|||
this.value = value; |
|||
} |
|||
/** |
|||
* 字段 |
|||
*/ |
|||
private String field; |
|||
/** |
|||
* 运算符号 |
|||
*/ |
|||
private SQLOperationSymbol sqlOperationSymbol; |
|||
/** |
|||
* 值 |
|||
*/ |
|||
private String value; |
|||
} |
@ -0,0 +1,28 @@ |
|||
package com.yxt.supervise.feign.flowable; |
|||
|
|||
import com.yxt.common.core.query.Query; |
|||
import lombok.Data; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* task 查询参数 集合 |
|||
*/ |
|||
@Data |
|||
public class BusinessTaskQuery implements Query { |
|||
private List<BusinessTaskParam> fields = new ArrayList<>(); |
|||
|
|||
public static BusinessTaskQuery create(){ |
|||
BusinessTaskQuery bt = new BusinessTaskQuery(); |
|||
return bt; |
|||
} |
|||
public BusinessTaskQuery add(BusinessTaskParam param){ |
|||
if(fields==null){ |
|||
fields = new ArrayList<>(); |
|||
} |
|||
fields.add(param); |
|||
return this; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,65 @@ |
|||
package com.yxt.supervise.feign.flowable; |
|||
|
|||
import lombok.AllArgsConstructor; |
|||
import lombok.Builder; |
|||
import lombok.Data; |
|||
import lombok.NoArgsConstructor; |
|||
|
|||
import java.util.HashMap; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 业务系统调用flowable流程传递参数的格式 |
|||
*/ |
|||
@Data |
|||
@Builder |
|||
@AllArgsConstructor |
|||
@NoArgsConstructor |
|||
public class BusinessVariables { |
|||
/** |
|||
* 分公司sid |
|||
*/ |
|||
public static final String ORGPATH="orgPath"; |
|||
/** |
|||
* 流程定义的id |
|||
*/ |
|||
private String modelId; |
|||
/** |
|||
* 审批意见 |
|||
*/ |
|||
private String comment; |
|||
/** |
|||
* 流程实例的id |
|||
*/ |
|||
private String instanceId; |
|||
/** |
|||
* taskId |
|||
*/ |
|||
private String taskId; |
|||
/** |
|||
* 当前用户的id |
|||
*/ |
|||
private String userSid; |
|||
/** |
|||
* 当前用户部门的全路径 |
|||
*/ |
|||
private String orgSidPath; |
|||
/** |
|||
* 业务sid |
|||
*/ |
|||
private String businessSid; |
|||
/** |
|||
* 环节定义的ID |
|||
*/ |
|||
private String taskDefKey; |
|||
/** |
|||
* nextNodeUserSids 下一环节的用户sid |
|||
*/ |
|||
private String nextNodeUserSids; |
|||
/** |
|||
* 业务参数,按需传递 |
|||
*/ |
|||
private Map<String, Object> formVariables =new HashMap<>(); |
|||
/* @ApiModelProperty("机构sid:切换结构使用") |
|||
private String orgPath;*/ |
|||
} |
@ -0,0 +1,38 @@ |
|||
package com.yxt.supervise.feign.flowable; |
|||
|
|||
/** |
|||
* sql语句运算符号,“=”,“like”,"in",">","<" |
|||
*/ |
|||
public enum SQLOperationSymbol { |
|||
EQUAL("=","相等"), |
|||
LIKE("like","模糊查询"), |
|||
LT("<","大于"),//LESS THAN小于
|
|||
GT(">","小于"),//GT 就是 GREATER THAN大于
|
|||
GE(">=","大于等于"),// GREATER THAN OR EQUAL 大于等于
|
|||
LE("<=","小于等于"),//LESS THAN OR EQUAL 小于等于
|
|||
NE("<>","不等于"),//NOT EQUAL不等于
|
|||
NONE("","无"); |
|||
private String symbol; |
|||
private String desc; |
|||
|
|||
SQLOperationSymbol(String symbol, String desc) { |
|||
this.symbol = symbol; |
|||
this.desc = desc; |
|||
} |
|||
|
|||
public String getSymbol() { |
|||
return symbol; |
|||
} |
|||
|
|||
public void setSymbol(String symbol) { |
|||
this.symbol = symbol; |
|||
} |
|||
|
|||
public String getDesc() { |
|||
return desc; |
|||
} |
|||
|
|||
public void setDesc(String desc) { |
|||
this.desc = desc; |
|||
} |
|||
} |
@ -0,0 +1,27 @@ |
|||
package com.yxt.supervise.feign.flowable; |
|||
|
|||
import com.yxt.common.core.query.Query; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @author dimengzhe |
|||
* @date 2021/7/29 15:03 |
|||
* @description |
|||
*/ |
|||
@Data |
|||
public class StartProcessInstanceQuery implements Query { |
|||
private static final long serialVersionUID = -6372254084412955318L; |
|||
|
|||
@ApiModelProperty(value = "流程定义key", required = true) |
|||
// private String processDefinitionKey;
|
|||
private String processDefinitionId; |
|||
|
|||
@ApiModelProperty(value = "用户sid", required = true) |
|||
private String userSid; |
|||
|
|||
@ApiModelProperty(value = "启动流程变量") |
|||
private Map<String, Object> variables; |
|||
} |
@ -0,0 +1,68 @@ |
|||
package com.yxt.supervise.feign.flowable; |
|||
|
|||
public class UpdateFlowFieldVo { |
|||
|
|||
private String sid; |
|||
private String procDefId; |
|||
private String nodeState; |
|||
private String procInsId; |
|||
private String taskDefKey; |
|||
private String taskId; |
|||
private String nextNodeUserSids; |
|||
|
|||
public String getNextNodeUserSids() { |
|||
return nextNodeUserSids; |
|||
} |
|||
|
|||
public void setNextNodeUserSids(String nextNodeUserSids) { |
|||
this.nextNodeUserSids = nextNodeUserSids; |
|||
} |
|||
|
|||
public String getSid() { |
|||
return sid; |
|||
} |
|||
|
|||
public void setSid(String sid) { |
|||
this.sid = sid; |
|||
} |
|||
|
|||
public String getProcDefId() { |
|||
return procDefId; |
|||
} |
|||
|
|||
public void setProcDefId(String procDefId) { |
|||
this.procDefId = procDefId; |
|||
} |
|||
|
|||
public String getNodeState() { |
|||
return nodeState; |
|||
} |
|||
|
|||
public void setNodeState(String nodeState) { |
|||
this.nodeState = nodeState; |
|||
} |
|||
|
|||
public String getProcInsId() { |
|||
return procInsId; |
|||
} |
|||
|
|||
public void setProcInsId(String procInsId) { |
|||
this.procInsId = procInsId; |
|||
} |
|||
|
|||
public String getTaskDefKey() { |
|||
return taskDefKey; |
|||
} |
|||
|
|||
public void setTaskDefKey(String taskDefKey) { |
|||
this.taskDefKey = taskDefKey; |
|||
} |
|||
|
|||
public String getTaskId() { |
|||
return taskId; |
|||
} |
|||
|
|||
public void setTaskId(String taskId) { |
|||
this.taskId = taskId; |
|||
} |
|||
} |
@ -0,0 +1,15 @@ |
|||
package com.yxt.supervise.feign.flowable; |
|||
|
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class UserAndOrgPath { |
|||
/** |
|||
* 用户sid |
|||
*/ |
|||
private String userSid; |
|||
/** |
|||
* 组织及部门sid全路径 |
|||
*/ |
|||
private String orgPath; |
|||
} |
@ -0,0 +1,23 @@ |
|||
package com.yxt.supervise.feign.flowable.flowtask; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonProperty; |
|||
import com.yxt.common.core.vo.Vo; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @Author dimengzhe |
|||
* @Date 2022/7/28 16:24 |
|||
* @Description |
|||
*/ |
|||
@Data |
|||
public class AppUserVo implements Vo { |
|||
private static final long serialVersionUID = -3220584066025636920L; |
|||
@ApiModelProperty(value = "名称") |
|||
@JsonProperty("name") |
|||
private String assigneeName; |
|||
@ApiModelProperty(value = "头像") |
|||
@JsonProperty("image") |
|||
private String assigneeHeadImage; |
|||
|
|||
} |
@ -0,0 +1,42 @@ |
|||
package com.yxt.supervise.feign.flowable.flowtask; |
|||
|
|||
import com.yxt.common.core.query.Query; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @author dimengzhe |
|||
* @date 2021/8/4 18:22 |
|||
* @description |
|||
*/ |
|||
@Data |
|||
public class CompleteTaskQuery implements Query { |
|||
private static final long serialVersionUID = 5847441978537887466L; |
|||
|
|||
@ApiModelProperty(value = "用户sid") |
|||
private String userSid; |
|||
|
|||
@ApiModelProperty("任务Id") |
|||
private String taskId; |
|||
|
|||
@ApiModelProperty("用户Id") |
|||
private String userId; |
|||
|
|||
@ApiModelProperty("任务意见") |
|||
private String comment; |
|||
|
|||
@ApiModelProperty("流程实例Id") |
|||
private String instanceId; |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
@ApiModelProperty(value = "流程标题", required = false) |
|||
private String formTitle; |
|||
|
|||
@ApiModelProperty(value = "任务参数", required = false) |
|||
private Map<String, Object> variables; |
|||
} |
@ -0,0 +1,106 @@ |
|||
package com.yxt.supervise.feign.flowable.flowtask; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import com.yxt.common.core.domain.BaseEntity; |
|||
import com.yxt.supervise.system.flow.FlowCommentDto; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* <p>工作流任务<p> |
|||
* |
|||
* @author XuanXuan |
|||
* @date 2021-04-03 |
|||
*/ |
|||
@ApiModel("工作流任务相关-返回参数") |
|||
@Data |
|||
public class FlowTask extends BaseEntity implements Serializable { |
|||
|
|||
@ApiModelProperty("任务编号") |
|||
private String taskId; |
|||
|
|||
@ApiModelProperty("任务名称") |
|||
private String taskName; |
|||
|
|||
@ApiModelProperty("任务Key") |
|||
private String taskDefKey; |
|||
|
|||
@ApiModelProperty("任务执行人Id") |
|||
private Long assigneeId; |
|||
|
|||
@ApiModelProperty("部门名称") |
|||
private String deptName; |
|||
|
|||
@ApiModelProperty("流程发起人部门名称") |
|||
private String startDeptName; |
|||
|
|||
@ApiModelProperty("任务执行人名称") |
|||
private String assigneeName; |
|||
|
|||
@ApiModelProperty("任务执行人头像") |
|||
private String assigneeHeadImage; |
|||
|
|||
@ApiModelProperty("流程发起人Id") |
|||
private String startUserId; |
|||
|
|||
@ApiModelProperty("流程发起人名称") |
|||
private String startUserName; |
|||
|
|||
@ApiModelProperty("流程类型") |
|||
private String category; |
|||
|
|||
@ApiModelProperty("流程变量信息") |
|||
private Object procVars; |
|||
|
|||
@ApiModelProperty("局部变量信息") |
|||
private Object taskLocalVars; |
|||
|
|||
@ApiModelProperty("流程部署编号") |
|||
private String deployId; |
|||
|
|||
@ApiModelProperty("流程ID") |
|||
private String procDefId; |
|||
|
|||
@ApiModelProperty("流程key") |
|||
private String procDefKey; |
|||
|
|||
@ApiModelProperty("流程定义名称") |
|||
private String procDefName; |
|||
|
|||
@ApiModelProperty("流程定义内置使用版本") |
|||
private int procDefVersion; |
|||
|
|||
@ApiModelProperty("流程实例ID") |
|||
private String procInsId; |
|||
|
|||
@ApiModelProperty("历史流程实例ID") |
|||
private String hisProcInsId; |
|||
|
|||
@ApiModelProperty("任务耗时") |
|||
private String duration; |
|||
|
|||
@ApiModelProperty("任务意见") |
|||
private FlowCommentDto comment = new FlowCommentDto(); |
|||
|
|||
@ApiModelProperty("候选执行人") |
|||
private String candidate; |
|||
|
|||
/* @ApiModelProperty("任务创建时间") |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" ) |
|||
private String createTime;*/ |
|||
|
|||
@ApiModelProperty("任务完成时间") |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") |
|||
private String finishTime; |
|||
|
|||
@ApiModelProperty("流程完成时间") |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS" ) |
|||
private String processEndTime; |
|||
|
|||
@ApiModelProperty("环节的办理人信息") |
|||
private List<TaskUserInfo> taskUserInfos; |
|||
} |
@ -0,0 +1,186 @@ |
|||
package com.yxt.supervise.feign.flowable.flowtask; |
|||
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import com.yxt.supervise.feign.flowable.UserAndOrgPath; |
|||
import com.yxt.supervise.feign.flowable.utils.RecordQuery; |
|||
import com.yxt.supervise.feign.flowable.BusinessTaskQuery; |
|||
import com.yxt.supervise.feign.flowable.BusinessVariables; |
|||
import com.yxt.supervise.feign.flowable.StartProcessInstanceQuery; |
|||
import com.yxt.common.core.query.PagerQuery; |
|||
import com.yxt.common.core.result.ResultBean; |
|||
import com.yxt.supervise.system.flow.FlowRecordVo; |
|||
import com.yxt.supervise.system.flow.FlowTaskDto; |
|||
import com.yxt.supervise.system.flow.FlowTaskQuery; |
|||
import com.yxt.supervise.system.flow.FlowTaskVo; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import io.swagger.annotations.ApiParam; |
|||
import org.springframework.cloud.openfeign.FeignClient; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author dimengzhe |
|||
* @date 2021/7/29 14:37 |
|||
* @description |
|||
*/ |
|||
@FeignClient( |
|||
contextId = "supervise-flowable-FlowTask", |
|||
name = "supervise-flowable", |
|||
path = "v1/flowable/task", |
|||
fallback = FlowTaskFeignFallBack.class) |
|||
public interface FlowTaskFeign { |
|||
|
|||
@ApiOperation(value = "启动流程") |
|||
@PostMapping("/startProcessInstanceByKey") |
|||
@ResponseBody |
|||
ResultBean<String> startProcessInstanceByKey(@RequestBody StartProcessInstanceQuery startProcessInstanceQuery); |
|||
|
|||
@ApiOperation(value = "业务系统审批") |
|||
@PostMapping("/businessComplete") |
|||
@ResponseBody |
|||
ResultBean<FlowTask> businessComplete(@RequestBody BusinessVariables dto); |
|||
|
|||
@ApiOperation(value = "审批") |
|||
@PostMapping("/complete") |
|||
@ResponseBody |
|||
ResultBean<String> complete(@RequestBody FlowTaskVo flowTaskVo); |
|||
|
|||
@ApiOperation(value = "待办任务列表") |
|||
@PostMapping("/todoList") |
|||
@ResponseBody |
|||
ResultBean todoList(@RequestBody PagerQuery<FlowTaskQuery> taskQueryPagerQuery); |
|||
|
|||
@ApiOperation(value = "业务系统查询待办任务列表") |
|||
@PostMapping("/businessTodoList/{userSid}") |
|||
@ResponseBody |
|||
ResultBean<Page<FlowTaskDto>> businessTodoList(@ApiParam(value = "当前用户sid") @PathVariable(value = "userSid") String userSid, |
|||
@RequestBody PagerQuery<BusinessTaskQuery> taskQueryPagerQuery); |
|||
|
|||
@ApiOperation(value = "业务系统查询待办任务列表包含url") |
|||
@PostMapping("/businessTodoListForApp/{userSid}") |
|||
@ResponseBody |
|||
ResultBean<Page<FlowTaskDto>> businessTodoListForApp(@ApiParam(value = "当前用户sid") @PathVariable(value = "userSid") String userSid, |
|||
@RequestBody PagerQuery<BusinessTaskQuery> taskQueryPagerQuery); |
|||
|
|||
@ApiOperation(value = "业务系统查询待办任务列表数量") |
|||
@GetMapping("/getTodoNum/{userSid}") |
|||
ResultBean<Integer> getTodoNum(@PathVariable(value = "userSid") String userSid); |
|||
|
|||
@ApiOperation(value = "业务系统查询待办任务列表数量") |
|||
@PostMapping("/getTodoNum") |
|||
@ResponseBody |
|||
ResultBean<Integer> getTodoNum(@RequestBody UserAndOrgPath uaop); |
|||
|
|||
@ApiOperation(value = "已办任务列表") |
|||
@PostMapping("/doneList") |
|||
@ResponseBody |
|||
ResultBean doneList(@RequestBody PagerQuery<FlowTaskQuery> taskQueryPagerQuery); |
|||
|
|||
@ApiOperation(value = "业务系统查询已办任务列表") |
|||
@PostMapping("/businessDoneList/{userSid}") |
|||
@ResponseBody |
|||
ResultBean businessDoneList(@ApiParam(value = "当前用户sid") @PathVariable(value = "userSid") String userSid, |
|||
@RequestBody PagerQuery<BusinessTaskQuery> taskQueryPagerQuery); |
|||
|
|||
@ApiOperation(value = "业务系统查询已办任务列表_移动端") |
|||
@PostMapping("/businessDoneListForApp/{userSid}") |
|||
@ResponseBody |
|||
ResultBean<Page<FlowTaskDto>> businessDoneListForApp(@ApiParam(value = "当前用户sid") @PathVariable(value = "userSid") String userSid, |
|||
@RequestBody PagerQuery<BusinessTaskQuery> taskQueryPagerQuery); |
|||
|
|||
@ApiOperation(value = "流程历史流转记录") |
|||
@PostMapping(value = "/flowRecord") |
|||
@ResponseBody |
|||
ResultBean flowRecord(@RequestBody RecordQuery recordQuery); |
|||
|
|||
@ApiOperation(value = "取消申请") |
|||
@PostMapping(value = "/stopProcess/{userSid}") |
|||
@ResponseBody |
|||
ResultBean stopProcess(@ApiParam(value = "当前用户sid") @PathVariable(value = "userSid") String userSid, |
|||
@RequestBody FlowTaskVo flowTaskVo); |
|||
|
|||
@ApiOperation(value = "我的流程分页列表") |
|||
@PostMapping(value = "/myprocess") |
|||
@ResponseBody |
|||
ResultBean myprocess(@RequestBody PagerQuery<FlowTaskQuery> taskQueryPagerQuery); |
|||
|
|||
@ApiOperation(value = "业务系统查询我的流程分页列表") |
|||
@PostMapping(value = "/businessMyprocess/{userSid}") |
|||
@ResponseBody |
|||
ResultBean businessMyprocess(@ApiParam(value = "当前用户sid") @PathVariable(value = "userSid") String userSid, |
|||
@RequestBody PagerQuery<BusinessTaskQuery> taskQueryPagerQuery); |
|||
|
|||
@ApiOperation(value = "获取流程变量") |
|||
@GetMapping(value = "/processVariables/{taskId}") |
|||
@ResponseBody |
|||
ResultBean processVariables(@ApiParam(value = "流程任务Id") @PathVariable(value = "taskId") String taskId); |
|||
|
|||
/** |
|||
* 生成流程图 |
|||
* |
|||
* @param procInsId 任务ID |
|||
*/ |
|||
@RequestMapping("/flowViewer/{procInsId}") |
|||
public ResultBean getFlowViewer(@PathVariable("procInsId") String procInsId); |
|||
|
|||
@ApiOperation(value = "获取所有可回退的节点") |
|||
@PostMapping(value = "/returnList") |
|||
public ResultBean findReturnTaskList(@RequestBody FlowTaskVo flowTaskVo); |
|||
|
|||
|
|||
@ApiOperation(value = "退回任务") |
|||
@PostMapping(value = "/return") |
|||
public ResultBean taskReturn(@RequestBody FlowTaskVo flowTaskVo); |
|||
|
|||
@ApiOperation(value = "驳回任务") |
|||
@PostMapping(value = "/reject") |
|||
public ResultBean<List<LatestTaskVo>> taskReject(@RequestBody FlowTaskVo flowTaskVo); |
|||
|
|||
@ApiOperation(value = "撤回流程", response = FlowTaskDto.class) |
|||
@PostMapping(value = "/revokeProcess") |
|||
public ResultBean<List<LatestTaskVo>> revokeProcess(@RequestBody FlowTaskVo flowTaskVo); |
|||
|
|||
@ApiOperation(value = "终止流程") |
|||
@PostMapping(value = "/breakProcess") |
|||
public ResultBean breakProcess(@RequestBody FlowTaskVo flowTaskVo); |
|||
|
|||
@ApiOperation(value = "流程历史流转记录") |
|||
@GetMapping(value = "/flowRecord/{procInsId}/{deployId}") |
|||
public ResultBean flowRecord(@PathVariable(value = "procInsId") String procInsId, |
|||
@PathVariable(value = "deployId") String deployId); |
|||
|
|||
@ApiOperation(value = "业务系统流程历史流转记录") |
|||
@GetMapping(value = "/businessFlowRecord/{procInsId}") |
|||
public ResultBean<FlowRecordVo> businessFlowRecord(@PathVariable(value = "procInsId") String procInsId); |
|||
|
|||
@ApiOperation(value = "删除流程实例") |
|||
@DeleteMapping(value = "/deleteProcess/{procInsId}") |
|||
@ResponseBody |
|||
ResultBean deleteProcess(@PathVariable(value = "procInsId") String procInsId); |
|||
|
|||
@ApiOperation(value = "获取当前环节的下一分支节点") |
|||
@PostMapping(value = "/getNextTasks/{taskId}") |
|||
public ResultBean getNextTasks(@PathVariable(value = "taskId") String taskId); |
|||
|
|||
@ApiOperation(value = "根据流程实例的id获取最新待办环节") |
|||
@PostMapping(value = "/getLatestTasks/{procId}") |
|||
ResultBean<List<LatestTaskVo>> getLatestTasks(@PathVariable(value = "procId") String procId); |
|||
|
|||
|
|||
@ApiOperation(value = "根据流程实例的id获取最新待办环节") |
|||
@PostMapping(value = "/getProcessCirculationNodesByMap") |
|||
ResultBean getProcessCirculationNodesByMap(@RequestBody BusinessVariables bv); |
|||
|
|||
@ApiOperation("获取流程图") |
|||
@GetMapping("/readXml/{sid}") |
|||
ResultBean readXml(@PathVariable(value = "sid") String sid); |
|||
|
|||
@ApiOperation(value = "获取下一个环节") |
|||
@PostMapping(value = "/getNextNodesForSubmit") |
|||
ResultBean getNextNodesForSubmit(@RequestBody BusinessVariables bv); |
|||
|
|||
@ApiOperation(value = "根据流程实例的id获取最新待办环节") |
|||
@PostMapping(value = "/获取上一个环节") |
|||
ResultBean getPreviousNodesForReject(@RequestBody BusinessVariables bv); |
|||
} |
@ -0,0 +1,181 @@ |
|||
package com.yxt.supervise.feign.flowable.flowtask; |
|||
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
|||
import com.yxt.supervise.feign.flowable.UserAndOrgPath; |
|||
import com.yxt.supervise.feign.flowable.utils.RecordQuery; |
|||
import com.yxt.supervise.feign.flowable.BusinessTaskQuery; |
|||
import com.yxt.supervise.feign.flowable.BusinessVariables; |
|||
import com.yxt.supervise.feign.flowable.StartProcessInstanceQuery; |
|||
import com.yxt.common.core.query.PagerQuery; |
|||
import com.yxt.common.core.result.ResultBean; |
|||
import com.yxt.supervise.system.flow.FlowTaskDto; |
|||
import com.yxt.supervise.system.flow.FlowTaskQuery; |
|||
import com.yxt.supervise.system.flow.FlowTaskVo; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author dimengzhe |
|||
* @date 2021/8/20 15:43 |
|||
* @description |
|||
*/ |
|||
@Component |
|||
public class FlowTaskFeignFallBack implements FlowTaskFeign { |
|||
@Override |
|||
public ResultBean<String> startProcessInstanceByKey(StartProcessInstanceQuery startProcessInstanceQuery) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean<FlowTask>businessComplete (BusinessVariables dto) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean<String> complete(FlowTaskVo flowTaskVo) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean<Page<FlowTaskDto>> todoList(PagerQuery<FlowTaskQuery> taskQueryPagerQuery) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean<Page<FlowTaskDto>> businessTodoList(String userSid, PagerQuery<BusinessTaskQuery> taskQueryPagerQuery) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean<Page<FlowTaskDto>> businessTodoListForApp(String userSid, PagerQuery<BusinessTaskQuery> taskQueryPagerQuery) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean getTodoNum(String userSid) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean<Integer> getTodoNum(UserAndOrgPath uaop) { |
|||
return null; |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public ResultBean doneList(PagerQuery<FlowTaskQuery> taskQueryPagerQuery) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean businessDoneList(String userSid, PagerQuery<BusinessTaskQuery> taskQueryPagerQuery) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean businessDoneListForApp(String userSid, PagerQuery<BusinessTaskQuery> taskQueryPagerQuery) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean flowRecord(RecordQuery recordQuery) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean stopProcess(String userSid, FlowTaskVo flowTaskVo) { |
|||
return null; |
|||
} |
|||
|
|||
|
|||
@Override |
|||
public ResultBean myprocess(PagerQuery<FlowTaskQuery> taskQueryPagerQuery) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean businessMyprocess(String userSid, PagerQuery<BusinessTaskQuery> taskQueryPagerQuery) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean processVariables(String taskId) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean getFlowViewer(String procInsId) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean findReturnTaskList(FlowTaskVo flowTaskVo) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean taskReturn(FlowTaskVo flowTaskVo) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean taskReject(FlowTaskVo flowTaskVo) { |
|||
return null; |
|||
} |
|||
@Override |
|||
public ResultBean revokeProcess(FlowTaskVo flowTaskVo) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean breakProcess(FlowTaskVo flowTaskVo) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean flowRecord(String procInsId, String deployId) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean businessFlowRecord(String procInsId) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean deleteProcess(String procInsId) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean getNextTasks(String procInsId) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean getLatestTasks(String procId) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean getProcessCirculationNodesByMap(BusinessVariables bv) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean readXml(String deployId) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean getNextNodesForSubmit(BusinessVariables bv) { |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public ResultBean getPreviousNodesForReject(BusinessVariables bv) { |
|||
return null; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,46 @@ |
|||
package com.yxt.supervise.feign.flowable.flowtask; |
|||
|
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.HashMap; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* @author dimengzhe |
|||
* @date 2021/9/2 15:41 |
|||
* @description |
|||
*/ |
|||
@Data |
|||
@ApiModel("工作流任务相关--请求参数") |
|||
public class FlowTaskQueryOne { |
|||
|
|||
@ApiModelProperty("任务Id") |
|||
private String taskId; |
|||
|
|||
@ApiModelProperty("用户sid") |
|||
private String userSid; |
|||
|
|||
@ApiModelProperty("任务意见") |
|||
private String comment; |
|||
|
|||
@ApiModelProperty("流程实例Id") |
|||
private String instanceId; |
|||
|
|||
@ApiModelProperty("节点") |
|||
private String targetKey; |
|||
|
|||
@ApiModelProperty("流程变量信息") |
|||
private Map<String, Object> values=new HashMap<>(); |
|||
|
|||
@ApiModelProperty("审批人") |
|||
private String assignee; |
|||
|
|||
@ApiModelProperty("候选人") |
|||
private List<String> candidateUsers; |
|||
|
|||
@ApiModelProperty("审批组") |
|||
private List<String> candidateGroups; |
|||
} |
@ -0,0 +1,26 @@ |
|||
package com.yxt.supervise.feign.flowable.flowtask; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @author Xuan xuan |
|||
* @date 2021/4/21 20:55 |
|||
*/ |
|||
public class FlowViewerDto implements Serializable { |
|||
|
|||
private String key; |
|||
private boolean completed; |
|||
public String getKey() { |
|||
return key; |
|||
} |
|||
public void setKey(String key) { |
|||
this.key = key; |
|||
} |
|||
public boolean isCompleted() { |
|||
return completed; |
|||
} |
|||
public void setCompleted(boolean completed) { |
|||
this.completed = completed; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,34 @@ |
|||
package com.yxt.supervise.feign.flowable.flowtask; |
|||
|
|||
import com.yxt.common.core.vo.Vo; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @Description |
|||
* @Author liuguohui |
|||
* @Date 2022/1/11 |
|||
*/ |
|||
@ApiModel("最近环节") |
|||
@Data |
|||
public class LatestTaskVo implements Vo { |
|||
|
|||
@ApiModelProperty(value = "name_") |
|||
private String name_; |
|||
|
|||
@ApiModelProperty(value = "task_def_key_") |
|||
private String task_def_key_; |
|||
|
|||
@ApiModelProperty(value = "id_") |
|||
private String id_; |
|||
|
|||
@ApiModelProperty(value = "name_") |
|||
private String ASSIGNEE_; |
|||
|
|||
@ApiModelProperty(value = "orgPath") |
|||
private String orgPath; |
|||
|
|||
@ApiModelProperty(value = "incomingSourceRef") |
|||
private String incomingSourceRef; |
|||
} |
@ -0,0 +1,34 @@ |
|||
package com.yxt.supervise.feign.flowable.flowtask; |
|||
|
|||
import com.yxt.common.core.query.Query; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @author dimengzhe |
|||
* @date 2021/8/6 10:50 |
|||
* @description |
|||
*/ |
|||
@Data |
|||
public class TaskQuery implements Query { |
|||
private static final long serialVersionUID = -6335769975925521118L; |
|||
@ApiModelProperty(value = "用户sid") |
|||
private String userSid; |
|||
@ApiModelProperty(value = "表单名称") |
|||
private String formName; |
|||
@ApiModelProperty(value = "开始时间") |
|||
private String startTime; |
|||
@ApiModelProperty(value = "结束时间") |
|||
private String endTime; |
|||
@ApiModelProperty(value = "业务系统的sid") |
|||
private String businessKey; |
|||
@ApiModelProperty(value = "待办人") |
|||
private String assignee; |
|||
@ApiModelProperty(value = "流程实例id") |
|||
private String processInstanceId; |
|||
@ApiModelProperty(value = "审批状态") |
|||
private Integer flowStatus; |
|||
@ApiModelProperty(value = "节点名称") |
|||
private String taskName; |
|||
|
|||
} |
@ -0,0 +1,111 @@ |
|||
package com.yxt.supervise.feign.flowable.flowtask; |
|||
|
|||
import com.yxt.supervise.feign.flowable.utils.ORDERBY; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* QueryParamsVo |
|||
* |
|||
* @author bruce.liu |
|||
* @date 2021/04/22 15:03 |
|||
*/ |
|||
@Data |
|||
@ApiModel(value = "TaskQueryParamsVo", description = "查询任务实例的参数") |
|||
public class TaskQueryParamsVo implements Serializable { |
|||
//用户的工号
|
|||
@ApiModelProperty( |
|||
value = "用户的工号", |
|||
example = "00004737" |
|||
) |
|||
private String userCode; |
|||
//系统标识
|
|||
@ApiModelProperty( |
|||
value = "系统标识", |
|||
example = "flow" |
|||
) |
|||
private String appSn; |
|||
//系统标识
|
|||
@ApiModelProperty( |
|||
value = "系统标识列表", |
|||
example = "flow itp" |
|||
) |
|||
private List<String> appSns; |
|||
//表单名称
|
|||
@ApiModelProperty( |
|||
value = "表单名称", |
|||
example = "费用报销" |
|||
) |
|||
private String formName; |
|||
//开始时间
|
|||
@ApiModelProperty( |
|||
value = "开始时间", |
|||
example = "2020-08-05 08:12:41" |
|||
) |
|||
private String startTime; |
|||
//结束时间
|
|||
@ApiModelProperty( |
|||
value = "结束时间", |
|||
example = "2020-08-05 08:12:41" |
|||
) |
|||
private String endTime; |
|||
//业务系统的id
|
|||
@ApiModelProperty( |
|||
value = "业务主键", |
|||
example = "1234656" |
|||
) |
|||
private String businessKey; |
|||
//待办人
|
|||
@ApiModelProperty( |
|||
value = "待办人", |
|||
example = "00004737" |
|||
) |
|||
private String assignee; |
|||
//排序字段 1 升序 0 降序
|
|||
@ApiModelProperty( |
|||
value = "排序字段 1 升序 0 降序", |
|||
example = "0" |
|||
) |
|||
private Integer orderFlag = 0; |
|||
//流程实例ID
|
|||
@ApiModelProperty( |
|||
value = "流程实例ID", |
|||
example = "sfsafsfasfasfhkshdfwiey" |
|||
) |
|||
private String processInstanceId; |
|||
//模型key
|
|||
@ApiModelProperty( |
|||
value = "流程模型key", |
|||
example = "modelKey" |
|||
) |
|||
private String modelKey; |
|||
//流程状态 1 审批中,2结束
|
|||
@ApiModelProperty( |
|||
value = "流程状态 1 审批中,2结束", |
|||
example = "1" |
|||
) |
|||
private Integer flowStatus; |
|||
@ApiModelProperty( |
|||
value = "查询关键字", |
|||
example = "财务" |
|||
) |
|||
private String keyword; |
|||
@ApiModelProperty( |
|||
value = "节点名称", |
|||
example = "部门经理" |
|||
) |
|||
//节点名称
|
|||
private String taskName; |
|||
/** |
|||
* 排序 key:字段 value 是规则 |
|||
*/ |
|||
@ApiModelProperty( |
|||
value = "排序 key:字段 value 是规则" |
|||
) |
|||
private Map<String, ORDERBY> orderbyMap; |
|||
} |
@ -0,0 +1,31 @@ |
|||
package com.yxt.supervise.feign.flowable.flowtask; |
|||
|
|||
public class TaskUserInfo { |
|||
private String assigneeName; |
|||
private String assigneeHeadImage; |
|||
private String assigneeSid; |
|||
|
|||
public String getAssigneeSid() { |
|||
return assigneeSid; |
|||
} |
|||
|
|||
public void setAssigneeSid(String assigneeSid) { |
|||
this.assigneeSid = assigneeSid; |
|||
} |
|||
|
|||
public String getAssigneeName() { |
|||
return assigneeName; |
|||
} |
|||
|
|||
public void setAssigneeName(String assigneeName) { |
|||
this.assigneeName = assigneeName; |
|||
} |
|||
|
|||
public String getAssigneeHeadImage() { |
|||
return assigneeHeadImage; |
|||
} |
|||
|
|||
public void setAssigneeHeadImage(String assigneeHeadImage) { |
|||
this.assigneeHeadImage = assigneeHeadImage; |
|||
} |
|||
} |
@ -0,0 +1,81 @@ |
|||
package com.yxt.supervise.feign.flowable.flowtask; |
|||
|
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import com.yxt.common.core.vo.Vo; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
|
|||
/** |
|||
* @author dimengzhe |
|||
* @date 2021/8/6 10:29 |
|||
* @description 待办工作返回参数 |
|||
*/ |
|||
@Data |
|||
@ApiModel("工作流任务相关-返回参数") |
|||
public class TaskVo implements Vo { |
|||
private static final long serialVersionUID = 6590730229583603323L; |
|||
|
|||
@ApiModelProperty(value = "任务编号") |
|||
private String taskId; |
|||
@ApiModelProperty(value = "任务名称") |
|||
private String taskName; |
|||
@ApiModelProperty(value = "任务定义key") |
|||
private String taskDefKey; |
|||
@ApiModelProperty(value = "任务执行人sid") |
|||
private String assigneeSid; |
|||
|
|||
@ApiModelProperty(value = "任务执行人名称") |
|||
private String assigneeName; |
|||
|
|||
@ApiModelProperty("流程发起人sId") |
|||
private String startUserSid; |
|||
|
|||
@ApiModelProperty("流程发起人姓名") |
|||
private String startName; |
|||
@ApiModelProperty("流程类型") |
|||
private String category; |
|||
|
|||
@ApiModelProperty("流程变量信息") |
|||
private Object procVars; |
|||
|
|||
@ApiModelProperty("局部变量信息") |
|||
private Object taskLocalVars; |
|||
|
|||
@ApiModelProperty("流程部署编号") |
|||
private String deployId; |
|||
|
|||
@ApiModelProperty("流程ID") |
|||
private String procDefId; |
|||
|
|||
@ApiModelProperty("流程key") |
|||
private String procDefKey; |
|||
|
|||
@ApiModelProperty("流程定义名称") |
|||
private String procDefName; |
|||
|
|||
@ApiModelProperty("流程定义内置使用版本") |
|||
private int procDefVersion; |
|||
|
|||
@ApiModelProperty("流程实例ID") |
|||
private String procInsId; |
|||
|
|||
@ApiModelProperty("历史流程实例ID") |
|||
private String hisProcInsId; |
|||
|
|||
@ApiModelProperty("任务耗时") |
|||
private String duration; |
|||
|
|||
@ApiModelProperty("候选执行人") |
|||
private String candidate; |
|||
|
|||
@ApiModelProperty("任务创建时间") |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
|||
private Date createTime; |
|||
|
|||
@ApiModelProperty("任务完成时间") |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
|||
private Date finishTime; |
|||
} |
@ -0,0 +1,88 @@ |
|||
package com.yxt.supervise.feign.flowable.utils; |
|||
|
|||
|
|||
import com.yxt.common.base.utils.StringUtils; |
|||
|
|||
import java.nio.charset.Charset; |
|||
import java.nio.charset.StandardCharsets; |
|||
|
|||
/** |
|||
* 字符集工具类 |
|||
* |
|||
* @author ruoyi |
|||
*/ |
|||
public class CharsetKit |
|||
{ |
|||
/** ISO-8859-1 */ |
|||
public static final String ISO_8859_1 = "ISO-8859-1"; |
|||
/** UTF-8 */ |
|||
public static final String UTF_8 = "UTF-8"; |
|||
/** GBK */ |
|||
public static final String GBK = "GBK"; |
|||
|
|||
/** ISO-8859-1 */ |
|||
public static final Charset CHARSET_ISO_8859_1 = Charset.forName(ISO_8859_1); |
|||
/** UTF-8 */ |
|||
public static final Charset CHARSET_UTF_8 = Charset.forName(UTF_8); |
|||
/** GBK */ |
|||
public static final Charset CHARSET_GBK = Charset.forName(GBK); |
|||
|
|||
/** |
|||
* 转换为Charset对象 |
|||
* |
|||
* @param charset 字符集,为空则返回默认字符集 |
|||
* @return Charset |
|||
*/ |
|||
public static Charset charset(String charset) |
|||
{ |
|||
return StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset); |
|||
} |
|||
|
|||
/** |
|||
* 转换字符串的字符集编码 |
|||
* |
|||
* @param source 字符串 |
|||
* @param srcCharset 源字符集,默认ISO-8859-1 |
|||
* @param destCharset 目标字符集,默认UTF-8 |
|||
* @return 转换后的字符集 |
|||
*/ |
|||
public static String convert(String source, String srcCharset, String destCharset) |
|||
{ |
|||
return convert(source, Charset.forName(srcCharset), Charset.forName(destCharset)); |
|||
} |
|||
|
|||
/** |
|||
* 转换字符串的字符集编码 |
|||
* |
|||
* @param source 字符串 |
|||
* @param srcCharset 源字符集,默认ISO-8859-1 |
|||
* @param destCharset 目标字符集,默认UTF-8 |
|||
* @return 转换后的字符集 |
|||
*/ |
|||
public static String convert(String source, Charset srcCharset, Charset destCharset) |
|||
{ |
|||
if (null == srcCharset) |
|||
{ |
|||
srcCharset = StandardCharsets.ISO_8859_1; |
|||
} |
|||
|
|||
if (null == destCharset) |
|||
{ |
|||
destCharset = StandardCharsets.UTF_8; |
|||
} |
|||
|
|||
if (StringUtils.isEmpty(source) || srcCharset.equals(destCharset)) |
|||
{ |
|||
return source; |
|||
} |
|||
return new String(source.getBytes(srcCharset), destCharset); |
|||
} |
|||
|
|||
/** |
|||
* @return 系统字符集编码 |
|||
*/ |
|||
public static String systemCharset() |
|||
{ |
|||
return Charset.defaultCharset().name(); |
|||
} |
|||
} |
File diff suppressed because it is too large
@ -0,0 +1,165 @@ |
|||
package com.yxt.supervise.feign.flowable.utils; |
|||
|
|||
import java.lang.annotation.ElementType; |
|||
import java.lang.annotation.Retention; |
|||
import java.lang.annotation.RetentionPolicy; |
|||
import java.lang.annotation.Target; |
|||
import java.math.BigDecimal; |
|||
|
|||
/** |
|||
* 自定义导出Excel数据注解 |
|||
* |
|||
* @author ruoyi |
|||
*/ |
|||
@Retention(RetentionPolicy.RUNTIME) |
|||
@Target(ElementType.FIELD) |
|||
public @interface Excel |
|||
{ |
|||
/** |
|||
* 导出时在excel中排序 |
|||
*/ |
|||
public int sort() default Integer.MAX_VALUE; |
|||
|
|||
/** |
|||
* 导出到Excel中的名字. |
|||
*/ |
|||
public String name() default ""; |
|||
|
|||
/** |
|||
* 日期格式, 如: yyyy-MM-dd |
|||
*/ |
|||
public String dateFormat() default ""; |
|||
|
|||
/** |
|||
* 如果是字典类型,请设置字典的type值 (如: sys_user_sex) |
|||
*/ |
|||
public String dictType() default ""; |
|||
|
|||
/** |
|||
* 读取内容转表达式 (如: 0=男,1=女,2=未知) |
|||
*/ |
|||
public String readConverterExp() default ""; |
|||
|
|||
/** |
|||
* 分隔符,读取字符串组内容 |
|||
*/ |
|||
public String separator() default ","; |
|||
|
|||
/** |
|||
* BigDecimal 精度 默认:-1(默认不开启BigDecimal格式化) |
|||
*/ |
|||
public int scale() default -1; |
|||
|
|||
/** |
|||
* BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN |
|||
*/ |
|||
public int roundingMode() default BigDecimal.ROUND_HALF_EVEN; |
|||
|
|||
/** |
|||
* 导出类型(0数字 1字符串) |
|||
*/ |
|||
public ColumnType cellType() default ColumnType.STRING; |
|||
|
|||
/** |
|||
* 导出时在excel中每个列的高度 单位为字符 |
|||
*/ |
|||
public double height() default 14; |
|||
|
|||
/** |
|||
* 导出时在excel中每个列的宽 单位为字符 |
|||
*/ |
|||
public double width() default 16; |
|||
|
|||
/** |
|||
* 文字后缀,如% 90 变成90% |
|||
*/ |
|||
public String suffix() default ""; |
|||
|
|||
/** |
|||
* 当值为空时,字段的默认值 |
|||
*/ |
|||
public String defaultValue() default ""; |
|||
|
|||
/** |
|||
* 提示信息 |
|||
*/ |
|||
public String prompt() default ""; |
|||
|
|||
/** |
|||
* 设置只能选择不能输入的列内容. |
|||
*/ |
|||
public String[] combo() default {}; |
|||
|
|||
/** |
|||
* 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写. |
|||
*/ |
|||
public boolean isExport() default true; |
|||
|
|||
/** |
|||
* 另一个类中的属性名称,支持多级获取,以小数点隔开 |
|||
*/ |
|||
public String targetAttr() default ""; |
|||
|
|||
/** |
|||
* 是否自动统计数据,在最后追加一行统计数据总和 |
|||
*/ |
|||
public boolean isStatistics() default false; |
|||
|
|||
/** |
|||
* 导出字段对齐方式(0:默认;1:靠左;2:居中;3:靠右) |
|||
*/ |
|||
Align align() default Align.AUTO; |
|||
|
|||
public enum Align |
|||
{ |
|||
AUTO(0), LEFT(1), CENTER(2), RIGHT(3); |
|||
private final int value; |
|||
|
|||
Align(int value) |
|||
{ |
|||
this.value = value; |
|||
} |
|||
|
|||
public int value() |
|||
{ |
|||
return this.value; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 字段类型(0:导出导入;1:仅导出;2:仅导入) |
|||
*/ |
|||
Type type() default Type.ALL; |
|||
|
|||
public enum Type |
|||
{ |
|||
ALL(0), EXPORT(1), IMPORT(2); |
|||
private final int value; |
|||
|
|||
Type(int value) |
|||
{ |
|||
this.value = value; |
|||
} |
|||
|
|||
public int value() |
|||
{ |
|||
return this.value; |
|||
} |
|||
} |
|||
|
|||
public enum ColumnType |
|||
{ |
|||
NUMERIC(0), STRING(1), IMAGE(2); |
|||
private final int value; |
|||
|
|||
ColumnType(int value) |
|||
{ |
|||
this.value = value; |
|||
} |
|||
|
|||
public int value() |
|||
{ |
|||
return this.value; |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,14 @@ |
|||
package com.yxt.supervise.feign.flowable.utils; |
|||
|
|||
/** |
|||
* @author bruce.liu |
|||
* @Description 排序的enum |
|||
* @time 2021年4月16日 |
|||
*/ |
|||
public enum ORDERBY { |
|||
DESC, ASC; |
|||
|
|||
public ORDERBY reverse() { |
|||
return (this == ASC) ? DESC : ASC; |
|||
} |
|||
} |
@ -0,0 +1,104 @@ |
|||
package com.yxt.supervise.feign.flowable.utils; |
|||
|
|||
/** |
|||
* 流程定义:流程名称与代号枚举类 |
|||
*/ |
|||
public enum ProcDefEnum { |
|||
|
|||
/***************************正式流程id***********************************/ |
|||
|
|||
ORDERDEPOSITAPPROVE("简易订单-订金收取", "process_pkyns85b:4:575004"), |
|||
ORDERDEPOSITVEHICLEAPPROVE("简易订单-车辆预定", "process_pkyns85b:5:575008"), |
|||
ORDERAPPROVE("订单审批", "order_approve_96asleqi:1:227504"), |
|||
SALESPOLICY("销售政策审批流程", "process_biw9gfh7:2:727504"),//TODO:正式新2022-11-25
|
|||
FINBILLAPPLICATION("开票申请流程", "process_t5ksueur:1:252833"), |
|||
BUSCENTERADVANCEGINVOICEAPPLY("提前开票申请流程", "advance_ginvoiceapply:1:242664"), |
|||
ARREARSCARRYVEHICLE("欠款提车审批流程", "process_8ax1xxn3:1:795004"), |
|||
VEHICLEAPPLY("排产申请流程", "process_9egcg169:12:735004"),//TODO:正式新2022-11-25
|
|||
SCMCARTRANSFER("库存地点变更申请", "process_3bc4p2em:8:725008"), //TODO:正式新2022-11-25
|
|||
BASEVEHICLEACTUALSALES("未售买断", "process_6qx07b75:8:725012"),//ToDo:正式新2022-11-25
|
|||
FINCOSTAPPLY("费用申请", "process_u0pahv0s:6:725016"),//ToDo:正式新2022-11-25
|
|||
FINPAYAPPLY("付款申请", "process_gin2tntb:4:725020"),//ToDo:正式新2022-11-25
|
|||
RECORDAPPLICATION("入库申请", "process_xbwq2c7p:3:675024"),//TODO
|
|||
SCMVEHICLERETURN("采购退库", "process_md8aeoap:2:722508"),//ToDo:正式新2022-11-25
|
|||
SEALAPPLY("盖章申请", "process_7h0z66tp:1:240064"), |
|||
SALESORDER("销售订单审批流程", "process_p5ils2rn:7:827504"), |
|||
BASEOUTSOURCINGAPPLICATION("外采申请", "process_5tqysnjc:5:722504"),//ToDo:正式新2022-11-25
|
|||
BASEMODELMODPRICE("车型调价申请", "process_kydcif7k:7:722512"),//ToDo:正式新2022-11-25
|
|||
BASEINTERNALPURCHASE("调车申请", "process_i6luw5xq:3:722516"),//ToDo:正式新2022-11-25
|
|||
BASEACCADJAPPLY("调账申请", "process_r6pyzqoz:2:722520"), //ToDo:正式新2022-11-25
|
|||
BUSDELIVEREDAPPLY("出库申请", "process_wgt1n66l:3:770004"), |
|||
BASESHUNINVOICAPPLY("调车开票申请", "process_u4xrvaso:1:400008"), |
|||
BASEVEHINSTALLMODPRICE("上装调价申请", "process_s0a0svth:1:492508"), |
|||
SCMVEHREBATEWITHAPPLY("单车返利预提申请", "process_qegarc7r:1:535004"), |
|||
SCMVEHREBATECHECKAPPLY("单车返利核对申请", "process_3xtbbru8:1:560004"), |
|||
SCMSPECIALREBATEWITHAPPLY("专项返利预提申请", "process_l0yxpgs2:1:590004"), |
|||
SCMSPECIALREBATECHECKAPPLY("专项返利核对申请", "process_qw22vupn:1:590008"), |
|||
SCMSPECIALREBATECHEDISTRIBUTE("专项返利分配申请", "process_h3w1aval:1:615004"), |
|||
SCMCOLLECTIONREBATEWITHAPPLY("回款返利预提申请", "process_k4lodiyg:1:630004"), |
|||
SCMCOLLECTIONREBATECHECKAPPLY("回款返利核对申请", "process_fgrv1mbv:1:630008"), |
|||
CONTRACTAPPLY("合同审核", "process_gd8c9xd5:1:545008"), |
|||
BASEDISPACKAGEAPPLY("优惠包申请流程", "process_l8i6tqho:1:967504"), |
|||
PR("采购申请", "process_xb9q6w5v:8:1307630"), |
|||
|
|||
|
|||
/******************************测试流程id*********************************************/ |
|||
|
|||
/*ORDERDEPOSITAPPROVE("简易订单-订金收取", "process_pkyns85b:4:575004"), |
|||
ORDERDEPOSITVEHICLEAPPROVE("简易订单-车辆预定", "process_pkyns85b:5:575008"), |
|||
ORDERAPPROVE("订单审批", "order_approve_96asleqi:1:227504"), |
|||
RECORDAPPLICATION("入库申请", "process_xbwq2c7p:3:675024"), |
|||
SEALAPPLY("盖章申请", "process_7h0z66tp:1:240064"), |
|||
SALESORDER("销售订单审批流程", "process_p5ils2rn:7:1123496"), |
|||
BUSDELIVEREDAPPLY("出库申请", "process_wgt1n66l:2:357504"), |
|||
BASESHUNINVOICAPPLY("调车开票申请", "process_u4xrvaso:1:400008"), |
|||
BASEVEHINSTALLMODPRICE("上装调价申请", "process_s0a0svth:1:492508"), |
|||
SCMVEHREBATEWITHAPPLY("单车返利预提申请", "process_qegarc7r:1:535004"), |
|||
SCMVEHREBATECHECKAPPLY("单车返利核对申请", "process_3xtbbru8:1:560004"), |
|||
SCMSPECIALREBATEWITHAPPLY("专项返利预提申请", "process_l0yxpgs2:1:590004"), |
|||
SCMSPECIALREBATECHECKAPPLY("专项返利核对申请", "process_qw22vupn:1:590008"), |
|||
SCMSPECIALREBATECHEDISTRIBUTE("专项返利分配申请", "process_h3w1aval:1:615004"), |
|||
SCMCOLLECTIONREBATEWITHAPPLY("回款返利预提申请", "process_k4lodiyg:1:630004"), |
|||
SCMCOLLECTIONREBATECHECKAPPLY("回款返利核对申请", "process_fgrv1mbv:1:630008"), |
|||
CONTRACTAPPLY("合同审核", "process_gd8c9xd5:1:545008"), |
|||
SCMCARTRANSFER("库存地点变更申请", "process_3bc4p2em:8:860004"), //TODO:测试
|
|||
BASEVEHICLEACTUALSALES("未售买断", "process_6qx07b75:9:852504"),//ToDo:测试
|
|||
VEHICLEAPPLY("排产申请流程", "process_9egcg169:12:910004"),//TODO:测试
|
|||
FINCOSTAPPLY("费用申请","process_u0pahv0s:6:902504"),//ToDo:测试
|
|||
FINPAYAPPLY("付款申请","process_gin2tntb:4:902508"),//ToDo:测试
|
|||
ARREARSCARRYVEHICLE("欠款提车审批流程", "process_8ax1xxn3:2:862512"),//测试(新)2022、11、22
|
|||
BUSCENTERADVANCEGINVOICEAPPLY("提前开票申请流程", "process_zt1gov6e:4:862504"), //测试
|
|||
FINBILLAPPLICATION("开票申请流程", "process_sndce6s9:2:937504"),//测试(新)2022、11、22
|
|||
BASEOUTSOURCINGAPPLICATION("外采申请", "process_5tqysnjc:5:867504"),//测试外采流程定义id
|
|||
BASEMODELMODPRICE("车型调价申请", "process_kydcif7k:7:867520"),//测试车型调价流程定义id
|
|||
BASEINTERNALPURCHASE("调车申请", "process_i6luw5xq:4:892504"),//测试调车流程定义id
|
|||
BASEACCADJAPPLY("调账申请", "process_r6pyzqoz:2:867516"), //测试调账流程定义id
|
|||
SCMVEHICLERETURN("采购退库", "process_md8aeoap:2:867508"),//测试采购退库流程定义id
|
|||
SALESPOLICY("销售政策审批流程", "process_biw9gfh7:2:867524"),//测试销售政策流程定义id
|
|||
BASEDISPACKAGEAPPLY("优惠包申请流程", "process_l8i6tqho:1:967504"),//测试优惠包申请流程定义id*/
|
|||
; |
|||
|
|||
ProcDefEnum(String proDefName, String proDefId) { |
|||
this.proDefName = proDefName; |
|||
this.proDefId = proDefId; |
|||
|
|||
} |
|||
|
|||
/** |
|||
* 流程类型名称 |
|||
*/ |
|||
private final String proDefName; |
|||
|
|||
/** |
|||
* 流程代号 |
|||
*/ |
|||
private final String proDefId; |
|||
|
|||
public String getProDefName() { |
|||
return proDefName; |
|||
} |
|||
|
|||
public String getProDefId() { |
|||
return proDefId; |
|||
} |
|||
} |
@ -0,0 +1,38 @@ |
|||
package com.yxt.supervise.feign.flowable.utils; |
|||
|
|||
/** |
|||
* @author 10095 |
|||
* @version 1.0 |
|||
* @Description: 流程状态枚举类 |
|||
* @date 2022/03/01 |
|||
*/ |
|||
public enum ProcessStateEnum { |
|||
|
|||
STARTED("审批中", "started"), |
|||
FINISHED("已办结", "finished") |
|||
; |
|||
|
|||
|
|||
ProcessStateEnum(String stateName, String stateCode) { |
|||
this.stateName = stateName; |
|||
this.stateCode = stateCode; |
|||
} |
|||
|
|||
/** |
|||
* 状态名称 |
|||
*/ |
|||
private final String stateName; |
|||
|
|||
/** |
|||
* 状态代号 |
|||
*/ |
|||
private final String stateCode; |
|||
|
|||
public String getStateName() { |
|||
return stateName; |
|||
} |
|||
|
|||
public String getStateCode() { |
|||
return stateCode; |
|||
} |
|||
} |
@ -0,0 +1,19 @@ |
|||
package com.yxt.supervise.feign.flowable.utils; |
|||
|
|||
import com.yxt.common.core.query.Query; |
|||
import lombok.Data; |
|||
|
|||
/** |
|||
* @author dimengzhe |
|||
* @date 2021/8/23 14:18 |
|||
* @description |
|||
*/ |
|||
@Data |
|||
public class RecordQuery implements Query { |
|||
private static final long serialVersionUID = 480213691108105877L; |
|||
|
|||
private String procInsId; |
|||
private String deployId; |
|||
|
|||
|
|||
} |
@ -0,0 +1,137 @@ |
|||
package com.yxt.supervise.feign.flowable.utils; |
|||
|
|||
import com.yxt.common.base.utils.StringUtils; |
|||
import org.springframework.web.context.request.RequestAttributes; |
|||
import org.springframework.web.context.request.RequestContextHolder; |
|||
import org.springframework.web.context.request.ServletRequestAttributes; |
|||
|
|||
import javax.servlet.http.HttpServletRequest; |
|||
import javax.servlet.http.HttpServletResponse; |
|||
import javax.servlet.http.HttpSession; |
|||
import java.io.IOException; |
|||
|
|||
/** |
|||
* 客户端工具类 |
|||
* |
|||
* @author ruoyi |
|||
*/ |
|||
public class ServletUtils |
|||
{ |
|||
/** |
|||
* 获取String参数 |
|||
*/ |
|||
public static String getParameter(String name) |
|||
{ |
|||
return getRequest().getParameter(name); |
|||
} |
|||
|
|||
/** |
|||
* 获取String参数 |
|||
*/ |
|||
public static String getParameter(String name, String defaultValue) |
|||
{ |
|||
return Convert.toStr(getRequest().getParameter(name), defaultValue); |
|||
} |
|||
|
|||
/** |
|||
* 获取Integer参数 |
|||
*/ |
|||
public static Integer getParameterToInt(String name) |
|||
{ |
|||
return Convert.toInt(getRequest().getParameter(name)); |
|||
} |
|||
|
|||
/** |
|||
* 获取Integer参数 |
|||
*/ |
|||
public static Integer getParameterToInt(String name, Integer defaultValue) |
|||
{ |
|||
return Convert.toInt(getRequest().getParameter(name), defaultValue); |
|||
} |
|||
|
|||
/** |
|||
* 获取request |
|||
*/ |
|||
public static HttpServletRequest getRequest() |
|||
{ |
|||
return getRequestAttributes().getRequest(); |
|||
} |
|||
|
|||
/** |
|||
* 获取response |
|||
*/ |
|||
public static HttpServletResponse getResponse() |
|||
{ |
|||
return getRequestAttributes().getResponse(); |
|||
} |
|||
|
|||
/** |
|||
* 获取session |
|||
*/ |
|||
public static HttpSession getSession() |
|||
{ |
|||
return getRequest().getSession(); |
|||
} |
|||
|
|||
public static ServletRequestAttributes getRequestAttributes() |
|||
{ |
|||
RequestAttributes attributes = RequestContextHolder.getRequestAttributes(); |
|||
return (ServletRequestAttributes) attributes; |
|||
} |
|||
|
|||
/** |
|||
* 将字符串渲染到客户端 |
|||
* |
|||
* @param response 渲染对象 |
|||
* @param string 待渲染的字符串 |
|||
* @return null |
|||
*/ |
|||
public static String renderString(HttpServletResponse response, String string) |
|||
{ |
|||
try |
|||
{ |
|||
response.setStatus(200); |
|||
response.setContentType("application/json"); |
|||
response.setCharacterEncoding("utf-8"); |
|||
response.getWriter().print(string); |
|||
} |
|||
catch (IOException e) |
|||
{ |
|||
e.printStackTrace(); |
|||
} |
|||
return null; |
|||
} |
|||
|
|||
/** |
|||
* 是否是Ajax异步请求 |
|||
* |
|||
* @param request |
|||
*/ |
|||
public static boolean isAjaxRequest(HttpServletRequest request) |
|||
{ |
|||
String accept = request.getHeader("accept"); |
|||
if (accept != null && accept.indexOf("application/json") != -1) |
|||
{ |
|||
return true; |
|||
} |
|||
|
|||
String xRequestedWith = request.getHeader("X-Requested-With"); |
|||
if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1) |
|||
{ |
|||
return true; |
|||
} |
|||
|
|||
String uri = request.getRequestURI(); |
|||
if (StringUtils.inString(uri, ".json", ".xml")) |
|||
{ |
|||
return true; |
|||
} |
|||
|
|||
String ajax = request.getParameter("__ajax"); |
|||
if (StringUtils.inString(ajax, "json", "xml")) |
|||
{ |
|||
return true; |
|||
} |
|||
return false; |
|||
} |
|||
} |
@ -0,0 +1,37 @@ |
|||
package com.yxt.supervise.feign.flowable.utils; |
|||
|
|||
|
|||
import com.yxt.common.base.utils.StringUtils; |
|||
|
|||
/** |
|||
* sql操作工具类 |
|||
* |
|||
* @author ruoyi |
|||
*/ |
|||
public class SqlUtil |
|||
{ |
|||
/** |
|||
* 仅支持字母、数字、下划线、空格、逗号、小数点(支持多个字段排序) |
|||
*/ |
|||
public static String SQL_PATTERN = "[a-zA-Z0-9_\\ \\,\\.]+"; |
|||
|
|||
/** |
|||
* 检查字符,防止注入绕过 |
|||
*/ |
|||
public static String escapeOrderBySql(String value) |
|||
{ |
|||
if (StringUtils.isNotEmpty(value) && !isValidOrderBySql(value)) |
|||
{ |
|||
//throw new BaseException("参数不符合规范,不能进行查询");
|
|||
} |
|||
return value; |
|||
} |
|||
|
|||
/** |
|||
* 验证 order by 语法是否符合规范 |
|||
*/ |
|||
public static boolean isValidOrderBySql(String value) |
|||
{ |
|||
return value.matches(SQL_PATTERN); |
|||
} |
|||
} |
Loading…
Reference in new issue