Commit fc53b550 authored by 赵啸非's avatar 赵啸非

一件事统一办

parent e729697c
package com.mortals.xhx.common.code;
import com.mortals.framework.ap.SysConstains;
import com.mortals.framework.common.IBaseEnum;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 审核状态
* @author
*
*/
public enum ApproveStateEnum implements IBaseEnum {
UN_AUDIT(1, "未审核", SysConstains.STYLE_DEFAULT),
AUDITING(2, "审核中", SysConstains.STYLE_PRIMARY),
AUDIT_FIN(3, "审核完成", SysConstains.STYLE_PRIMARY);
private int value;
private String desc;
private String style;
ApproveStateEnum(int value, String desc, String style) {
this.value = value;
this.desc = desc;
this.style = style;
}
@Override
public int getValue() {
return this.value;
}
public String getDesc() {
return desc;
}
public String getStyle()
{
return style;
}
public static ApproveStateEnum getByValue(int value) {
for (ApproveStateEnum examStatus : ApproveStateEnum.values()) {
if (examStatus.getValue() == value) {
return examStatus;
}
}
return null;
}
/**
* 获取Map集合
* @param eItem 不包含项
* @return
*/
public static Map<String,String> getEnumMap(int... eItem) {
Map<String,String> resultMap= new LinkedHashMap<String,String>();
for (ApproveStateEnum item : ApproveStateEnum.values()) {
try{
boolean hasE = false;
for (int e : eItem){
if(item.getValue()==e){
hasE = true;
break;
}
}
if(!hasE){
resultMap.put(item.getValue()+"", item.getDesc());
}
}catch(Exception ex){
}
}
return resultMap;
}
}
package com.mortals.xhx.common.code;
import java.io.Serializable;
/**
* 审批模式
*
* @author: zxfei
* @date: 2021/8/26 9:58
*/
public enum CommentTypeEnum implements Serializable {
SP("审批"),
QS("签收"),
FQS("反签收"),
BH("驳回"),
CH("撤回"),
ZC("暂存"),
XTZX("系统执行"),
TJ("提交"),
CXTJ("重新提交"),
SPJS("审批结束"),
LCZZ("流程终止"),
WP("委派"),
ZH("知会"),
ZY("转阅"),
YY("已阅"),
ZB("转办"),
SQ("授权"),
SPBJQ("审批并加签"),
HJQ("后加签"),
QJQ("前加签"),
CFTG("重复跳过"),
XT("协同"),
PS("评审");
private String name;//名称
/**
* 通过type获取Msg
*
* @param type
* @return
* @Description:
*/
public static String getEnumMsgByType(String type) {
for (CommentTypeEnum e : CommentTypeEnum.values()) {
if (e.toString().equals(type)) {
return e.name;
}
}
return "";
}
CommentTypeEnum(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.mortals.xhx.common.code;
import java.io.Serializable;
/**
* 流程的状态
*
* @author: zxfei
* @date: 2021/8/26 9:58
*/
public enum ProcessStatusEnum implements Serializable {
SPZ("审批中"),
BH("驳回"),
CH("撤回"),
JQ("加签"),
ZC("暂存"),
ZB("转办"),
BJ("办结"),
ZZ("终止");
private String msg;
private String type;
ProcessStatusEnum(String msg) {
this.msg = msg;
}
/**
* 通过type获取Msg
*
* @param type
* @return
* @Description:
*/
public static String getEnumMsgByType(String type) {
for (ProcessStatusEnum e : ProcessStatusEnum.values()) {
if (e.toString().equals(type)) {
return e.msg;
}
}
return "";
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
\ No newline at end of file
package com.mortals.xhx.common.code;
import java.io.Serializable;
/**
* 启动参数
*
* @author: zxfei
* @date: 2021/8/26 9:59
*/
public enum StartVariableEnum implements Serializable {
USER("user", "人员信息"),
UDEPT("udept", "人员部门变量"),
UCOMPANY("ucompany", "人员公司变量"),
COMPANY_ROLE("company", "公司角色层级审批领导"),
MATRIX_COMPANY_ROLE("mcompany", "矩阵公司角色"),
MATRIX_DEPT_ROLE("mdept", "矩阵部门角色"),
FORM("form", "表单"),
LCDB("lcdb", "流程底表"),
LINE("line", "汇报线");
private String code;
private String msg;
StartVariableEnum(String code, String msg) {
this.msg = msg;
this.code = code;
}
/**
* 通过code获取Msg
*
* @param code
* @return
* @Description:
*/
public static String getEnumMsgByCode(String code) {
for (StartVariableEnum e : StartVariableEnum.values()) {
if (e.getCode().equals(code)) {
return e.msg;
}
}
return "";
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
......@@ -79,4 +79,10 @@ public final class BusizParams {
*/
public static String SYS_PARAM_FILE_DOMAIN = "file_domain";
/**
* 流程参数
*/
public static String SYS_PARAM_FLOW_KEY = "oneThingKey";
}
......@@ -18,11 +18,18 @@ public class FlowNextPdu implements Serializable {
private String type;
/**
* 数据类型(fixed,dynamc两种)
*/
private String dateType;
private String vars;
//指定人员
private List<SysUser> userList;
private String name;
private String assignee;
private List<String> candidateUsers;
//指定租
private List<SysRole> roleList;
private List<String> candidateGroups;
}
......@@ -20,34 +20,54 @@ import java.util.Date;
@NoArgsConstructor
@ApiModel("流程定义")
public class FlowProcDefPdu implements Serializable {
/**
* 流程id
*/
@ApiModelProperty("流程id")
private String id;
/**
* 流程名称
*/
@ApiModelProperty("流程名称")
private String name;
/**
* 流程key
*/
@ApiModelProperty("流程key")
private String key;
/**
* 流程分类
*/
@ApiModelProperty("流程分类")
private String category;
/**
* 配置表单名称
*/
@ApiModelProperty("配置表单名称")
private String formName;
/**
* 配置表单id
*/
@ApiModelProperty("配置表单id")
private Long formId;
/**
* 版本
*/
@ApiModelProperty("版本")
private int version;
/**
* 部署id
*/
@ApiModelProperty("部署ID")
private String deploymentId;
/**
* 流程定义状态: 1:激活 , 2:中止
*/
@ApiModelProperty("流程定义状态: 1:激活 , 2:中止")
private int suspensionState;
/**
* 部署时间
*/
@ApiModelProperty("部署时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date deploymentTime;
......
package com.mortals.xhx.common.pdu.flow;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.xhx.feign.AttachmentEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
......@@ -99,7 +100,13 @@ public class FlowTaskPdu implements Serializable {
@ApiModelProperty("流程变量信息")
private Map<String, Object> values;
private String userId;
@ApiModelProperty("附件信息")
private List<AttachmentEntity> attachmentList;
/**
* 用户名称
*/
private String userCode;
@ApiModelProperty("审批人")
private String assignee;
......@@ -110,7 +117,7 @@ public class FlowTaskPdu implements Serializable {
@ApiModelProperty("审批组")
private List<String> candidateGroups;
@ApiModelProperty("租户Id")
private String tenantId;
@ApiModelProperty("业务平台标识")
private String platformSn;
}
package com.mortals.xhx.common.pdu.flow;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
@Getter
@Setter
@ApiModel("工作流任务相关-返回参数")
public class FlowTaskVars implements Serializable {
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("节点")
private String targetKey;
private String name;
@ApiModelProperty("审批人")
private String assignee;
@ApiModelProperty("候选人")
private List<String> candidateUsers;
@ApiModelProperty("审批组")
private List<String> candidateGroups;
@ApiModelProperty("el表达式")
private String el;
@ApiModelProperty("是否多实例并行,0否1是")
private Integer multiple;
private List<String> assigneeList;
public static void main(String[] args) {
String temp="[{\"el\":\"${assignee1}\",\"multiple\":0,\"name\":\"行政审批\",\"targetKey\":\"Activity_04yxg8r\",\"assignee\":\"finegirl\",\"assigneeName\":\"张三\"},{\"el\":\"${assignee2}\",\"multiple\":0,\"name\":\"经理审批\",\"targetKey\":\"Activity_0m7qwz2\",\"assignee\":\"zhaoxiaofei\",\"assigneeName\":\"赵啸非\"},{\"el\":\"assigneeList\",\"multiple\":1,\"name\":\"领导会签\",\"targetKey\":\"Activity_1uv5dhe\",\"assigneeList\":[\"zhang1\",\"zhangbao\"],\"assigneeName\":\"张1,张宝,\"}]\n";
List<FlowTaskVars> list = JSON.parseObject(temp, new TypeReference<List<FlowTaskVars>>() {
});
//构建提交参数
JSONObject jsonObject = new JSONObject();
for(FlowTaskVars var:list){
//判断是否并联
if(var.getMultiple()==0){
//key
String el = var.getEl();
String key = el.substring(2, el.length() - 1);
//值
String assignee = var.getAssignee();
jsonObject.put(key,assignee);
}else{
//key
String key = var.getEl();
JSONArray jsonArray = new JSONArray();
jsonArray.addAll(var.getAssigneeList());
jsonObject.put(key,jsonArray);
}
}
System.out.println(JSON.toJSONString(jsonObject));
}
}
......@@ -36,6 +36,8 @@ public class FlowTaskVoPdu implements Serializable {
@ApiModelProperty("节点")
private String targetKey;
private String name;
@ApiModelProperty("流程变量信息")
private Map<String, Object> values;
......@@ -51,4 +53,11 @@ public class FlowTaskVoPdu implements Serializable {
@ApiModelProperty("租户Id")
private String tenantId;
@ApiModelProperty("el表达式")
private String el;
@ApiModelProperty("是否多实例并行,0否1是")
private Integer multiple;
}
package com.mortals.xhx.feign;
import lombok.Data;
/**
* 附件实体类
*
* @author: zxfei
* @date: 2021/8/26 17:46
* @description:
**/
@Data
public class AttachmentEntity {
/**
* 附件名称
*/
protected String name;
/**
* 附件描述
*/
protected String desc;
/**
* 附件类型
*/
protected String type;
/**
* 附件下载地址
*/
protected String url;
}
package com.mortals.xhx.feign;
import com.mortals.xhx.common.code.CommentTypeEnum;
import com.mortals.xhx.common.code.ProcessStatusEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 流程执行过程中的基本参数Req
*
* @author: zxfei
* @date: 2021/8/26 9:55
*/
@Data
public abstract class BaseTaskReq implements Serializable {
/**********************任务相关的参数**********************/
/**
* 任务id 必填
*/
@ApiModelProperty(value = "任务id", required = true)
private String taskId;
/**
* 流程实例的id
*/
@ApiModelProperty(value = "流程实例的id", required = true)
private String processInstanceId;
/**
* 节点id 选填
*/
@ApiModelProperty(value = "节点id")
private String activityId;
/**
* 节点名称 选填
*/
@ApiModelProperty(value = "节点名称")
private String activityName;
/**
* 流程实例状态 必填
*/
@ApiModelProperty(value = "流程实例状态", required = true)
private ProcessStatusEnum processStatusEnum;
/**********************审批意见的参数**********************/
/**
* 操作人code 必填
*/
@ApiModelProperty(value = "操作人code", required = true)
private String userCode;
/**
* 审批意见 必填
*/
@ApiModelProperty(value = "审批意见", required = true)
private String message;
/**
* 审批意见类型 必填
*/
@ApiModelProperty(value = "审批意见类型", required = true)
private CommentTypeEnum commentTypeEnum;
}
package com.mortals.xhx.feign.api;
import com.mortals.xhx.common.pdu.sms.SmsSendReq;
import com.mortals.xhx.feign.IFeign;
import com.mortals.framework.exception.AppException;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
/**
* @描述
* @创建人 zxfei
* @创建时间 2021/1/19
* @修改人和其它信息
*/
@FeignClient(name = "${application.register.service-name:coops-gate-api/m}")
public interface IApiGateFeign extends IFeign {
/**
* 短信发送
* @param
* @return
* @throws AppException
*/
@PostMapping(value = "/sms/send")
String smsSend(SmsSendReq smsSendReq) throws AppException;
}
package com.mortals.xhx.feign.flowable;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result;
import com.mortals.xhx.common.pdu.api.ApiRespPdu;
import com.mortals.xhx.common.pdu.flow.FlowProcDefPdu;
import com.mortals.xhx.feign.IFeign;
import io.swagger.annotations.ApiParam;
import com.mortals.xhx.feign.req.BaseFlowReq;
import com.mortals.xhx.feign.req.BaseQuery;
import com.mortals.xhx.feign.req.DefinitionReq;
import com.mortals.xhx.feign.rsp.ApiResp;
import com.mortals.xhx.feign.rsp.DefinitionDeployRsp;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* 工作流流程定义
* 工作流程访问
*
* @author: zxfei
* @date: 2021/8/31 9:34
*/
@FeignClient(name = "${application.register.service-name:government-workflow}")
@FeignClient(name = "${application.register.service-name:workflow-manager/m}")
public interface IApiFlowDefinitionFeign extends IFeign {
/**
* 获取列表
* 流程部署列表查询
*
* @param userId
* @param pageInfo
* @param req
* @return
*/
@PostMapping("/flowable/def/list")
ApiRespPdu<Result<FlowProcDefPdu>> list(@RequestParam(value = "userId") String userId,
@RequestParam(value = "tenantId") String tenantId,
@RequestBody PageInfo pageInfo);
@PostMapping("/api/definition/deploy/list")
ApiResp<DefinitionDeployRsp> deploymentsList(@RequestBody BaseFlowReq<BaseQuery> req);
/**
* 保存流程设计器内的xml文件
*
* @param name
* @param category
* @param bpmnXml
* @return
*/
@PostMapping("/flowable/def/save")
ApiRespPdu<String> save(@RequestParam(required = false) String name,
@RequestParam(required = false) String category,
@RequestParam(required = false) String bpmnXml,
@RequestParam(required = false) String tenantId);
/**
* 启动流程
* 激活或挂起流程定义(已经部署)
*
* @param procDefId 部署的流程 Id,来自 ACT_RE_PROCDEF
* @param userId 业务发起人
* @param dataKey 业务数据 Key,业务键,一般为表单数据的 ID,仅作为表单数据与流程实例关联的依据
* @param variables 变量集合,json对象
* @param req
* @return
* @throws AppException
*/
@PostMapping("/flowable/def/start")
ApiRespPdu<String> start(@RequestParam(value = "procDefId") String procDefId,
@RequestParam(value = "tenantId") String tenantId,
@RequestParam(value = "userId") String userId,
@RequestParam(value = "dataKey") String dataKey,
@RequestBody Map<String, Object> variables);
@PostMapping("/api/definition/deploy/updateState")
ApiResp<String> updateState(@RequestBody DefinitionReq req);
/**
* 激活或挂起流程定义
* 激活或挂起流程定义(已经部署)
*
* @param state 状态"1:激活,2:挂起"
* @param deployId 流程部署ID
* @param req
* @return
*/
@PostMapping(value = "/flowable/def/updateState")
ApiRespPdu<String> updateState(@RequestParam Integer state,
@RequestParam String deployId,
@RequestParam String tenantId);
@PostMapping("/api/definition/deploy/readXml")
ApiResp<String> readXml(@RequestBody DefinitionReq req);
/**
* 删除流程
*
* @param deployId 流程部署ID
* @return
*/
@PostMapping(value = "/flowable/def/delete")
ApiRespPdu<String> delete(@RequestParam String deployId);
/**
* 读取xml文件
*
* @param deployId 流程定义id
*/
@PostMapping("/flowable/def/readXml")
ApiRespPdu<String> readXml(@RequestParam(value = "deployId") String deployId);
/**
* 根据流程定义 ID 获取流程图 返回BASE64图片
*
* @param deployId 流程定义id
* @return base64图片数据
* @throws AppException
*/
@PostMapping("/flowable/def/readImage")
ApiRespPdu<String> readImage(@RequestParam("deployId") String deployId);
}
}
\ No newline at end of file
package com.mortals.xhx.feign.flowable;
import com.mortals.xhx.common.pdu.api.ApiRespPdu;
import com.mortals.xhx.common.pdu.flow.FlowTaskVoPdu;
import com.mortals.xhx.common.pdu.flow.FlowViewerPdu;
import com.mortals.xhx.feign.IFeign;
import com.mortals.xhx.feign.processinstance.ProcessCommonReq;
import com.mortals.xhx.feign.processinstance.ProcessDeleteReq;
import com.mortals.xhx.feign.processinstance.ProcessStopReq;
import com.mortals.xhx.feign.processinstance.ProcessUpdateStateReq;
import com.mortals.xhx.feign.rsp.ApiResp;
import com.mortals.xhx.feign.runtime.StartProcessInstanceReq;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -13,66 +20,72 @@ import java.util.List;
import java.util.Map;
/**
* 工作流流程实例管理
* 工作流流程实例
*
* @author: finegirl
* @date: 2021/7/31 19:52
*/
@FeignClient(name = "${application.register.service-name:government-workflow}")
@FeignClient(name = "${application.register.service-name:workflow-manager/m}")
public interface IApiFlowInstanceFeign extends IFeign {
/**
* 根据流程定义id启动流程实例
* 启动流程
*
* @param deployId 流程定义id
* @param variables 变量集合,json对象
* @param req
* @return
*/
@PostMapping("/flowable/instance/startById")
ApiRespPdu<String> startById(@RequestParam(value = "deployId") String deployId,
@RequestBody Map<String, Object> variables);
@PostMapping("/api/flow/process/start")
ApiResp<String> processStart(@RequestBody StartProcessInstanceReq req);
/**
* 激活或挂起流程实例
*
* @param state 1:激活,2:挂起
* @param instanceId 流程实例ID
* @param req
* @return
*/
@PostMapping("/flowable/instance/updateState")
ApiRespPdu<String> updateState(@RequestParam Integer state,
@RequestParam String instanceId);
@PostMapping("/api/flow/process/updateState")
ApiResp updateState(@RequestBody ProcessUpdateStateReq req);
/**
* 止流程
* 止流程
*
* @param processId 流程ID
* @param req
* @return
*/
@RequestMapping("/flowable/instance/stopProcess")
ApiRespPdu<String> stopProcess(@RequestParam(value = "processId") String processId);
@PostMapping("/api/flow/process/stop")
ApiResp<String> stopProcess(@RequestBody ProcessStopReq req);
/**
* 删除流程实例
* 删除流程
*
* @param instanceId 流程实例ID
* @param deleteReason 删除原因
* @param req
* @return
*/
@PostMapping("/flowable/instance/deleteProcess")
ApiRespPdu<String> deleteProcess(@RequestParam String instanceId,
@RequestParam String deleteReason);
@PostMapping("/api/flow/process/delete")
ApiResp<String> deleteProcess(@RequestBody ProcessDeleteReq req);
/**
* 获取流程执行过程
*
* @param procInsId
* @param req
* @return
*/
@PostMapping("/flowable/instance/getFlowViewer")
ApiRespPdu<List<FlowViewerPdu>> getFlowViewer(String procInsId);
@PostMapping("/api/flow/process/getFlowViewer")
ApiResp<List<FlowViewerPdu>> getFlowViewer(@RequestBody ProcessCommonReq req);
/**
* 根据流程实例ID 获取当前流程运行情况 返回BASE64图片
*
* @param req
* @return base64图片数据
*/
@PostMapping("/api/flow/process/getImage")
ApiResp<String> processReadImage(@RequestBody ProcessCommonReq req);
}
@PostMapping("/api/flow/process/getAllProcessInstanceEl")
ApiResp<List<FlowTaskVoPdu>> getAllProcessInstanceEl(@RequestBody StartProcessInstanceReq req);
}
\ No newline at end of file
package com.mortals.xhx.feign.flowable;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result;
import com.mortals.xhx.common.pdu.api.ApiRespPdu;
import com.mortals.xhx.common.pdu.flow.*;
import com.mortals.xhx.common.pdu.flow.FlowNextPdu;
import com.mortals.xhx.common.pdu.flow.FlowUserTaskPdu;
import com.mortals.xhx.feign.IFeign;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.mortals.xhx.feign.req.BaseFlowReq;
import com.mortals.xhx.feign.req.BaseQuery;
import com.mortals.xhx.feign.rsp.ApiResp;
import com.mortals.xhx.feign.rsp.TaskRsp;
import com.mortals.xhx.feign.task.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Map;
......@@ -20,184 +21,154 @@ import java.util.Map;
* @author: finegirl
* @date: 2021/7/31 19:52
*/
@FeignClient(name = "${application.register.service-name:government-workflow}")
@FeignClient(name = "${application.register.service-name:workflow-manager/m}")
public interface IApiFlowTaskFeign extends IFeign {
/**
* 我发起的流程
*
* @param userId
* @param pageInfo
* @return
*/
@PostMapping("/flowable/task/myProcess")
ApiRespPdu<Result<FlowTaskPdu>> myProcess(@RequestParam(value = "userId") String userId,
@RequestParam(value = "tenantId") String tenantId,
@RequestBody PageInfo pageInfo);
/**
* 撤回流程
*
* @param flowTaskPdu
* @param req
* @return
*/
@PostMapping("/flowable/task/revokeProcess")
ApiRespPdu<String> revokeProcess(@RequestBody FlowTaskPdu flowTaskPdu);
/**
* 取消申请
*
* @param flowTaskVoPdu
* @return
*/
@PostMapping("/flowable/task/stopProcess")
ApiRespPdu<String> stopProcess(@RequestBody FlowTaskVoPdu flowTaskVoPdu);
@PostMapping("/api/flow/task/myProcess")
ApiResp<TaskRsp> myProcess(@RequestBody BaseFlowReq<BaseQuery> req);
/**
* 获取待办列表
* 获取的列表需要和业务系统数据合并
*
* @param userId
* @param pageInfo
* @param req
* @return
*/
@PostMapping("/flowable/task/todoList")
ApiRespPdu<Result<FlowTaskPdu>> todoList(@RequestParam(value = "userId") String userId,
@RequestParam(value = "tenantId") String tenantId,
@RequestBody PageInfo pageInfo);
@PostMapping("/api/flow/task/todoList")
ApiResp<TaskRsp> todoList(@RequestBody BaseFlowReq<BaseQuery> req);
/**
* 获取已办任务
* 获取的列表需要和业务系统数据合并
*
* @param userId
* @param pageInfo
* @param req
* @return
*/
@PostMapping("/flowable/task/finishedList")
ApiRespPdu<Result<FlowTaskPdu>> finishedList(@RequestParam(value = "userId") String userId,
@RequestParam(value = "tenantId") String tenantId,
@RequestBody PageInfo pageInfo);
@PostMapping("/api/flow/task/finishedList")
ApiResp<TaskRsp> finishedList(@RequestBody BaseFlowReq<BaseQuery> req);
/**
* 流程历史流转记录
*
* @param procInsId
* @param deployId
* @param req
* @return
*/
@PostMapping("/flowable/task/flowRecord")
ApiRespPdu<List<FlowTaskPdu>> flowRecord(@RequestParam(required = false) String procInsId,
@RequestParam(required = false) String deployId);
@PostMapping("/api/flow/task/flowRecord")
ApiResp<TaskRsp> flowRecord(@RequestBody BaseFlowReq<BaseQuery> req);
/**
* 获取流程变量
*
* @param taskId
* @param req
* @return
*/
@PostMapping("/flowable/task/processVariables")
ApiRespPdu<Map<String, Object>> processVariables(@RequestParam String taskId);
@PostMapping("/api/flow/task/processVariables")
ApiResp<Map<String, Object>> processVariables(@RequestBody CommonTaskReq req);
/**
* 审批任务
* 撤回流程
*
* @param flowTaskVoPdu
* @param req
* @return
*/
@PostMapping("/flowable/task/complete")
ApiRespPdu<String> complete(@RequestBody FlowTaskVoPdu flowTaskVoPdu);
@PostMapping("/api/flow/task/revokeProcess")
ApiResp revokeProcess(@RequestBody RevokeTaskReq req);
/**
* 驳回任务
* 取消申请
*
* @param flowTaskVoPdu
* @param commonTaskReq
* @return
*/
@PostMapping("/flowable/task/reject")
ApiRespPdu<String> reject(@RequestBody FlowTaskVoPdu flowTaskVoPdu);
@PostMapping("/api/flow/task/stopProcess")
ApiResp stopProcess(@RequestBody CommonTaskReq commonTaskReq);
/**
* 退回任务
* 审批任务
*
* @param flowTaskVoPdu
* @param req
* @return
*/
@PostMapping("/flowable/task/return")
ApiRespPdu<String> taskReturn(@RequestBody FlowTaskVoPdu flowTaskVoPdu);
@PostMapping("/api/flow/task/complete")
ApiResp<String> complete(@RequestBody CompleteTaskReq req);
/**
* 删除任务
* 驳回任务
*
* @param flowTaskPdu
* @param req
* @return
*/
@PostMapping("/flowable/task/delete")
ApiRespPdu<String> delete(@RequestBody FlowTaskVoPdu flowTaskPdu);
@PostMapping("/api/flow/task/reject")
ApiResp<String> reject(@RequestBody RejectTaskReq req);
/**
* 认领/签收任务
* 退回任务
*
* @param flowTaskPdu
* @param req
* @return
*/
@PostMapping("/flowable/task/claim")
ApiRespPdu<String> claim(@RequestBody FlowTaskVoPdu flowTaskPdu);
@PostMapping("/api/flow/task/return")
ApiResp<String> taskReturn(@RequestBody ReturnTaskReq req);
/**
* 取消认领/签收任务
* 删除任务
*
* @param flowTaskPdu
* @param req
* @return
*/
@PostMapping("/flowable/task/unClaim")
ApiRespPdu<String> unClaim(@RequestBody FlowTaskVoPdu flowTaskPdu);
@PostMapping("/api/flow/task/delete")
ApiResp<String> delete(@RequestBody DeleteTaskReq req);
/**
* 委派任务
*
* @param flowTaskPdu
* @param req
* @return
*/
@PostMapping("/flowable/task/delegate")
ApiRespPdu<String> delegateTask(@RequestBody FlowTaskVoPdu flowTaskPdu);
@PostMapping("/api/flow/task/delegate")
ApiResp<String> delegateTask(@RequestBody DelegateTaskReq req);
/**
* 转办任务
*
* @param flowTaskPdu
* @param req
* @return
*/
@PostMapping("/flowable/task/assign")
ApiRespPdu<String> assignTask(@RequestBody FlowTaskVoPdu flowTaskPdu);
@PostMapping("/api/flow/task/assign")
ApiResp<String> assignTask(@RequestBody TurnTaskReq req);
/**
* 获取所有可回退的节点
*
* @param flowTaskVoPdu
* @param req
* @return
*/
@PostMapping("/flowable/task/findReturnTaskList")
ApiRespPdu<List<FlowUserTaskPdu>> findReturnTaskList(@RequestBody FlowTaskVoPdu flowTaskVoPdu);
@PostMapping("/api/flow/task/findReturnTaskList")
ApiResp<List<FlowUserTaskPdu>> findReturnTaskList(@RequestBody CommonTaskReq req);
/**
* 获取下一节点
*
* @param flowTaskVoPdu
* @param req
* @return
*/
@PostMapping("/flowable/task/nextFlowNode")
ApiRespPdu<FlowNextPdu> getNextFlowNode(@RequestBody FlowTaskVoPdu flowTaskVoPdu);
@PostMapping("/api/flow/task/nextFlowNode")
ApiResp<FlowNextPdu> nextFlowNode(@RequestBody CommonTaskReq req);
}
package com.mortals.xhx.feign.processinstance;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 实例查询Query
*
* @author: zxfei
* @date: 2021/8/24 20:42
*/
@Data
public class InstanceQueryParamsReq {
/**
* 用户的工号 必填
*/
@ApiModelProperty(value = "用户的工号")
private String userCode;
/**
* 平台应用标识 必填
*/
@ApiModelProperty(value = "平台应用标识")
private String platformSn;
/**
* 开始时间
*/
@ApiModelProperty(value = "开始时间")
private String startTime;
/**
* 结束时间
*/
@ApiModelProperty(value = "结束时间")
private String endTime;
/**
* 业务系统的id
*/
@ApiModelProperty(value = "业务系统的id")
private String businessKey;
/**
* 排序字段 1 升序 0 降序
*/
@ApiModelProperty(value = "排序字段 1 升序 0 降序")
private Integer orderFlag = 0;
/**
* 流程实例ID
*/
@ApiModelProperty(value = "流程实例ID")
private String processInstanceId;
/**
* 流程定义KEY
*/
@ApiModelProperty(value = "流程定义KEY")
private String processDefinitionKey;
/**
* 流程状态
*/
@ApiModelProperty(value = "流程状态")
private String processType;
/**
* 发起人工号集合
*/
@ApiModelProperty(value = "发起人工号集合")
private String startedUserIds;
}
package com.mortals.xhx.feign.processinstance;
import lombok.Data;
/**
* 实例通用请求
* @author: zxfei
* @date: 2021/8/26 10:42
* @description:
**/
@Data
public class ProcessCommonReq {
/**
* 处理人Id
*/
private String userCode;
/**
* 流程实例id
*/
private String processInstanceId;
}
package com.mortals.xhx.feign.processinstance;
import lombok.Data;
/**
* @author: zxfei
* @date: 2021/8/26 10:42
* @description:
**/
@Data
public class ProcessDeleteReq {
/**
* 处理人Id 必填
*/
private String userCode;
/**
* 流程实例id 必填
*/
private String processInstanceId;
/**
* 删除原因 必填
*/
private String deleteReason;
}
package com.mortals.xhx.feign.processinstance;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 流程实例返回数据对象
*
* @author: zxfei
* @date: 2021/8/26 10:31
*/
@Data
@ApiModel(value = "ProcessInstanceInfo" , description = "查询流程实例返回对象")
public class ProcessInstanceInfo implements Serializable {
private static final long serialVersionUID = -5038515846218363889L;
/**
* 流程实例id
*/
private String processInstanceId;
/**
* 流程定义id
*/
private String processDefinitionId;
/**
* 流程定义的名称
*/
private String processDefinitionName;
/**
* 流程定义的key
*/
private String processDefinitionKey;
/**
* 流程定义类型
*/
private Integer processDefinitionType;
/**
* 流程定义的版本号
*/
private Integer processDefinitionVersion;
/**
* 分类编号
*/
private String categoryCode;
/**
* 部署id
*/
private String deploymentId;
/**
* 业务表单的id
*/
private String businessKey;
/**
* 办理人
*/
private String assignees;
/**
* 应用id
*/
private String appId;
/**
* 平台应用标识
*/
private String appSn;
/**
* 创建时间
*/
@JsonFormat(timezone = "GMT+8" , pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**
* 挂起状态 1激活 2挂起 @see ProcessInstanceStatusEnum
*/
private Integer pState;
/**
* 删除标记
*/
private String reason;
/**
* 创建人的id
*/
private String startedUserId;
/**
* 创建人的名称
*/
private String startedUserName;
/**
* 创建人ids
*/
private List<String> startedUserIds;
/**
* 默认所有的
*/
private Boolean finishFlag = false;
/**
* 流程实例状态 @see {@link ProcessStatusEnum}
*/
private String processStatus;
/**
* 流程实例状态名称
*/
private String processStatusName;
/**
* 表单的名称
*/
private String formName;
/**
* 流程创建人姓名
*/
private String startPersonName;
/**
* 流程的创建时间
*/
@JsonFormat(timezone = "GMT+8" , pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
/**
* 结束时间
*/
@JsonFormat(timezone = "GMT+8" , pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
private String startTimeStr;
private String endTimeStr;
/**
* 系统名称
*/
private String appName;
/**
* 业务系统的url
*/
private String businessUrl;
/**
* 总耗时
*/
private String totalTime;
/**
* 当前办理人(当前流程是多人办理)
*/
// private List<ApproverVo> currentAssignees;
public ProcessInstanceInfo() {
}
public ProcessInstanceInfo(String processInstanceId, String businessKey, String formName, String startedUserId) {
this.processInstanceId = processInstanceId;
this.businessKey = businessKey;
this.formName = formName;
this.startedUserId = startedUserId;
}
}
package com.mortals.xhx.feign.processinstance;
import lombok.Data;
/**
* @author: zxfei
* @date: 2021/8/26 10:42
* @description:
**/
@Data
public class ProcessStopReq {
/**
* 处理人Id 必填
*/
private String userCode;
/**
* 流程实例id
*/
private String processInstanceId;
}
package com.mortals.xhx.feign.processinstance;
import lombok.Data;
/**
* @author: zxfei
* @date: 2021/8/26 10:42
* @description:
**/
@Data
public class ProcessUpdateStateReq {
/**
* 处理人Id 必填
*/
private String userCode;
/**
* 流程实例id 必填
*/
private String processInstanceId;
/**
* 激活或挂起流程实例(1:激活,2:挂起) 必填
*/
private Integer suspensionState;
}
package com.mortals.xhx.feign.req;
import lombok.Data;
/**
* 工作流请求头信息
*
* @author: zxfei
* @date: 2021/8/25 9:50
*/
@Data
public class ApiReq<T> {
/**
* 业务平台标识(唯一)
*/
private String tenantId;
/**
* 实体数据()
*/
private T entity;
}
package com.mortals.xhx.feign.req;
import com.mortals.xhx.common.pdu.api.Page;
import lombok.Data;
/**
* 流程通用Req
*
* @author: zxfei
* @date: 2021/8/24 20:40
*/
@Data
public class BaseFlowReq<T> {
/**
* 分页对象
*/
private Page page;
/**
* 列表查询对象
*/
private T query;
}
package com.mortals.xhx.feign.req;
import lombok.Data;
/**
* 基础Query
*
* @author: zxfei
* @date: 2021/8/24 20:42
*/
@Data
public class BaseQuery {
/**
* 业务平台标识(唯一)
*/
private String platformSn;
/**
* 业务平台用户
*/
private String userCode;
/**
* 流程实例ID
*/
private String processInstanceId;
/**
* 流程部署ID
*/
private String deployId;
}
package com.mortals.xhx.feign.req;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
/**
* 工作流定义实体请求类
*
* @author: zxfei
* @date: 2021/8/25 10:29
*/
@Getter
@Setter
public class DefinitionReq implements Serializable {
/**
* 业务系统标识
*/
private String platformSn;
/**
* 流程部署ID
*/
private String deployId;
/**
* 流程部署状态(1:激活,2:挂起)
*/
private Integer state;
}
package com.mortals.xhx.feign.req;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* 工作流任务相关-请求参数
*
* @author: zxfei
* @date: 2021/8/25 11:13
*/
@Getter
@Setter
public class FlowTaskReq implements Serializable {
/**
* 任务Id
*/
private String taskId;
/**
* 用户Id
*/
private String userId;
/**
* 任务意见
*/
private String comment;
/**
* 流程实例Id
*/
private String instanceId;
/**
* 节点
*/
private String targetKey;
/**
* 流程变量信息
*/
private Map<String, Object> values;
/**
* 审批人
*/
private String assignee;
/**
* 候选人
*/
private List<String> candidateUsers;
/**
* 候选审批组
*/
private List<String> candidateGroups;
}
package com.mortals.xhx.feign.rsp;
import com.mortals.xhx.common.code.YesNoEnum;
import lombok.Data;
/**
* @author karlhoo
*/
@Data
public class ApiResp<T> {
/**
* 结果编码
*/
private int code;
/**
* 结果描述
*/
private String msg;
/**
* 响应数据
*/
private T data;
public boolean isSuccess() {
if (YesNoEnum.YES.getValue() == code) {
return true;
}
return false;
}
}
package com.mortals.xhx.feign.rsp;
import com.mortals.xhx.common.pdu.api.Page;
import lombok.Data;
import java.util.List;
/**
* 流程部署列表(业务端可发起的实例)
*
* @author: zxfei
* @date: 2021/8/24 20:51
*/
@Data
public class DefinitionDeployRsp {
private Page page;
private List<FlowProcDef> list;
}
package com.mortals.xhx.feign.rsp;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 流程定义类
*
* @author: zxfei
* @date: 2021/8/24 22:29
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FlowProcDef implements Serializable {
/**
* 流程定义id
*/
private String id;
/**
* 流程名称
*/
private String name;
/**
* 流程key
*/
private String key;
/**
* 流程key
*/
private String processDefinitionKey;
/**
* 流程分类
*/
private String category;
/**
* 版本
*/
private int version;
/**
* 流程部署id
*/
private String deployId;
/**
* 流程部署id
*/
private String deploymentId;
/**
* 流程定义状态: 1:激活 , 2:中止
*/
private int suspensionState;
/**
* 部署时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date deploymentTime;
}
package com.mortals.xhx.feign.rsp;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 流程启动响应类
*
* @author: zxfei
* @date: 2021/8/24 22:29
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FlowProcStartInfo implements Serializable {
/**
* 流程实例id
*/
private String proInstanceId;
}
package com.mortals.xhx.feign.rsp;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.xhx.common.pdu.flow.FlowCommentPdu;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 工作流任务相关-返回参数
*
* @author: zxfei
* @date: 2021/8/25 11:13
*/
@Getter
@Setter
public class FlowTaskInfo implements Serializable {
/**
* 任务编号
*/
private String taskId;
/**
* 任务名称
*/
private String taskName;
/**
* 任务Key
*/
private String taskDefKey;
/**
* 任务执行人Id
*/
private String assigneeId;
/**
* 任务执行人名称
*/
private String assigneeName;
/**
* 流程发起人Id
*/
private String startUserId;
/**
* 流程发起人名称
*/
private String startUserName;
/**
* 流程类型
*/
private String category;
/**
* 流程变量信息
*/
private Object procVars;
/**
* 局部变量信息
*/
private Object taskLocalVars;
/**
* 流程部署ID
*/
private String deployId;
/**
* 流程定义ID
*/
private String procDefId;
/**
* 流程key
*/
private String procDefKey;
/**
* 流程定义名称
*/
private String procDefName;
/**
* 流程定义使用版本
*/
private int procDefVersion;
/**
* 流程实例ID
*/
private String procInsId;
/**
* 历史流程实例ID
*/
private String hisProcInsId;
/**
* 任务耗时
*/
private String duration;
/**
* 任务意见
*/
private FlowCommentPdu comment;
/**
* 候选执行人(多个人都能办理当前任务)
*/
private String candidate;
/**
* 任务创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**
* 任务完成时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date finishTime;
/**
* 流程变量信息
*/
private Map<String, Object> values;
/**
* 用户id
*/
private String userId;
/**
* 审批人
*/
private String assignee;
/**
* 候选人
*/
private List<String> candidateUsers;
/**
* 候选审批组
*/
private List<String> candidateGroups;
/**
* 业务系统编号
*/
private String tenantId;
}
package com.mortals.xhx.feign.rsp;
import com.mortals.xhx.common.pdu.api.Page;
import com.mortals.xhx.common.pdu.flow.FlowTaskPdu;
import lombok.Data;
import java.util.List;
/**
* 流程任务详细返回
*
* @author: zxfei
* @date: 2021/8/24 20:51
*/
@Data
public class TaskRsp {
private Page page;
private List<FlowTaskPdu> list;
}
package com.mortals.xhx.feign.runtime;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.mortals.framework.util.DateUtils;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.Map;
/**
* 启动流程参数
*
* @author: zxfei
* @date: 2021/8/26 10:45
*/
@Data
public class StartProcessInstanceReq implements Serializable {
/**
* 流程部署key 必填
*/
@ApiModelProperty(value = "流程定义key" , required = true)
private String processDefinitionKey;
/**
* 业务系统表单id 必填
*/
@ApiModelProperty(value = "业务系统唯一标识" , required = true)
private String businessKey;
/**
* 业务表单显示名称 必填(如请假单)
*/
@ApiModelProperty(value = "表单显示名称" , required = true)
private String formName;
/**
* 启动流程变量 选填
*/
@ApiModelProperty(value = "启动流程变量")
private Map<String, Object> variables;
/**
* 申请人id号 必填
*/
@ApiModelProperty(value = "申请人id号")
private String userCode;
/**
* 平台系统标识 必填
*/
@ApiModelProperty(value = "平台系统标识" , required = true)
private String platformSn;
/**
* 流程提交人工号 通常和申请人id一致即可 必填
*/
@ApiModelProperty(value = "流程提交人工号 通常和申请人id一致即可" , required = true)
private String creator;
public static void main(String[] args) {
DateTime dateTime = DateUtil.offsetMonth(new Date(), 2);
System.out.println(DateUtils.getStrDate(dateTime));
}
}
package com.mortals.xhx.feign.task;
import com.mortals.xhx.feign.BaseTaskReq;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 任务参数
*
* @author: zxfei
* @date: 2021/8/26 17:23
*/
@Data
@ApiModel(value = "CommonTaskReq" , description = "任务参数")
public class CommonTaskReq extends BaseTaskReq implements Serializable {
/**
* 平台系统标识 必填
*/
@ApiModelProperty(value = "平台系统标识" , required = true)
private String platformSn;
}
package com.mortals.xhx.feign.task;
import com.alibaba.fastjson.JSON;
import com.mortals.xhx.feign.AttachmentEntity;
import com.mortals.xhx.feign.BaseTaskReq;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 任务执行(审批参数)
*
* @author: zxfei
* @date: 2021/8/26 17:23
*/
@Data
@ApiModel(value = "CompleteTask" , description = "审批参数")
public class CompleteTaskReq extends BaseTaskReq implements Serializable {
private static final long serialVersionUID = -5583096980348786337L;
/**
* 流程标题 选填 只有在重新发起的时候才会修改表单标题
*/
@ApiModelProperty(value = "流程标题")
private String formTitle;
/**
* 任务参数 选填
*/
@ApiModelProperty(value = "任务参数")
private Map<String, Object> variables;
/**
* 任务参数 附件 选填
*/
@ApiModelProperty(value = "附件参数")
private List<AttachmentEntity> attachments;
}
package com.mortals.xhx.feign.task;
import com.mortals.xhx.feign.BaseTaskReq;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
/**
* 任务委派(审批参数)
*
* @author: zxfei
* @date: 2021/8/26 17:23
*/
@Data
@ApiModel(value = "DelegateTaskReq" , description = "审批参数")
public class DelegateTaskReq extends BaseTaskReq implements Serializable {
/**
* 委派人
*/
private String delegateUserCode;
}
package com.mortals.xhx.feign.task;
import com.mortals.xhx.feign.BaseTaskReq;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
/**
* 任务删除(审批参数)
*
* @author: zxfei
* @date: 2021/8/26 17:23
*/
@Data
@ApiModel(value = "DeleteTaskReq" , description = "审批参数")
public class DeleteTaskReq extends BaseTaskReq implements Serializable {
}
package com.mortals.xhx.feign.task;
import com.mortals.xhx.feign.BaseTaskReq;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
/**
* 任务驳回(审批参数)
*
* @author: zxfei
* @date: 2021/8/26 17:23
*/
@Data
@ApiModel(value = "RejectTaskReq" , description = "审批参数")
public class RejectTaskReq extends BaseTaskReq implements Serializable {
}
package com.mortals.xhx.feign.task;
import com.mortals.xhx.feign.BaseTaskReq;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
/**
* 任务驳回(审批参数)
*
* @author: zxfei
* @date: 2021/8/26 17:23
*/
@Data
@ApiModel(value = "RejectTaskReq" , description = "审批参数")
public class ReturnTaskReq extends BaseTaskReq implements Serializable {
}
package com.mortals.xhx.feign.task;
import com.mortals.xhx.feign.BaseTaskReq;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
/**
* 任务撤回(审批参数)
*
* @author: zxfei
* @date: 2021/8/26 17:23
*/
@Data
@ApiModel(value = "RevokeTaskReq" , description = "审批参数")
public class RevokeTaskReq extends BaseTaskReq implements Serializable {
}
package com.mortals.xhx.feign.task;
import com.mortals.xhx.feign.BaseTaskReq;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
/**
* 任务转办(审批参数)
*
* @author: zxfei
* @date: 2021/8/26 17:23
*/
@Data
@ApiModel(value = "RejectTaskReq", description = "审批参数")
public class TurnTaskReq extends BaseTaskReq implements Serializable {
/**
* 被转办人工号 必填
*/
private String turnToUserId;
}
......@@ -16,7 +16,7 @@
"core-js": "3.8.1",
"echarts": "^4.3.0",
"element-react": "^1.4.34",
"element-ui": "^2.13.2",
"element-ui": "^2.15.5",
"file-saver": "2.0.4",
"form-gen-parser": "^1.0.3",
"fuse.js": "6.4.3",
......
......@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>工作流管理平台</title>
<link rel="stylesheet" href="https://unpkg.com/element-ui@2.13.2/lib/theme-chalk/index.css">
<link rel="stylesheet" href="https://unpkg.com/element-ui@2.15.5/lib/theme-chalk/index.css">
</head>
<body>
<noscript>
......@@ -17,6 +17,6 @@
<script src="https://unpkg.com/vue@2.6.14/dist/vue.runtime.min.js"></script>
<script src="https://unpkg.com/vuex@3.6.0/dist/vuex.min.js"></script>
<script src="https://unpkg.com/vue-router@3.4.9/dist/vue-router.min.js"></script>
<script src="https://unpkg.com/element-ui@2.13.2/lib/index.js"></script>
<script src="https://unpkg.com/element-ui@2.15.5/lib/index.js"></script>
</body>
</html>
......@@ -27,11 +27,7 @@ export function updateState(params) {
// 指定流程办理人员列表
export function userList(query) {
return normalCallPost('/user/list', query)
// return request({
// url: '/flowable/definition/userList',
// method: 'get',
// params: query
// })
}
// 指定流程办理组列表(由角色确定)
......
......@@ -10,11 +10,13 @@ export function complete(data) {
// 委派任务
export function delegate(data) {
return normalCallPost('/task/process/delegate', data)
// return request({
// url: '/flowable/task/delegate',
// method: 'post',
// data: data
// })
}
// 转办任务
export function assignTask(data) {
return normalCallPost('/task/process/assignTask', data)
}
// 退回任务
......
......@@ -70,7 +70,7 @@ export class TreeCache extends Cache {
export const treeCache = new TreeCache('/data/area/list', 6000);
export const treeCache = new TreeCache('/area/list', 6000);
/**
* 获取父级节点的id列表
......
......@@ -48,6 +48,7 @@ const layouts = {
}
function renderFrom(h) {
console.log(this)
const { formConfCopy } = this
return (
......
......@@ -40,6 +40,10 @@ const router = new Router({
...restBuilder('healthinfo/apply', 'healthinfo/apply'), //健康列表
...restBuilder('information', 'information'), //办件列表
...restBuilder('member', 'member'), // 一件事管理-微信人员
...restBuilder('onething', 'onething'), // 一件事管理-微信人员提交审核材料
//在此添加业务模块
builder('/basics/index', 'basics/index'),//事项工作台
......
......@@ -17,14 +17,12 @@
],
columns: [
{type: "selection", width: 60},
{label: "材料名", prop: "materialname"},
{label: "材料地址", prop: "yburl"},
{label: "填报须知", prop: "remarksub"},
{label: "受理标准", prop: "remark"},
{label: "要求提供材料的依据", prop: "clausecontent"},
{label: "备注", prop: "summary"},
{label: "变更时间", prop: "updatetime", formatter: this.formatterDate},
{label: "变更用户loginName", prop: "updateuser"},
{label: "材料名", prop: "materialName"},
{label: "材料必要性", prop: "isMust",formatter:this.formatter},
{label: "材料类型", prop: "materialType",formatter:this.formatter},
{label: "材料形式", prop: "materialProperty",formatter:this.formatter},
{label: "纸质材料份数", prop: "paperNum"},
{
label: "操作",
width: 180,
......
......@@ -2,7 +2,7 @@
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig" notAdd notDel>
<el-button
<!-- <el-button
slot="table-head-left2"
icon="el-icon-plus"
size="mini"
......@@ -17,9 +17,17 @@
size="mini"
@click="handleExport"
>导出</el-button
>
> -->
</LayoutTable>
<el-dialog
title="流程预览图"
:visible.sync="viewImageDialog.visible"
width="80%"
>
<img :src="'data:image/png;base64,' + viewImageDialog.img" />
</el-dialog>
<!-- 添加或修改流程定义对话框 -->
<el-dialog :title="title" :visible.sync="open" width="80%" append-to-body>
<el-table v-loading="processLoading" fit :data="definitionList" border>
......@@ -56,8 +64,8 @@
</el-table-column>
</el-table>
<pagination
v-show="definitionTotal>0"
<pagination
v-show="definitionTotal > 0"
:total="definitionTotal"
:page.sync="formquery.pageInfo.currPage"
:limit.sync="formquery.pageInfo.prePageResult"
......@@ -112,7 +120,7 @@ export default {
};
this.resetForm("form");
},
/** 新增按钮操作 */
handleAdd() {
this.open = true;
......@@ -122,13 +130,13 @@ export default {
this.definitionList = res.data.result;
this.definitionTotal = res.data.pageInfo.totalResult;
this.formquery.pageInfo=res.data.pageInfo;
this.formquery.pageInfo = res.data.pageInfo;
this.processLoading = false;
});
},
/** 发起流程申请 */
handleStartProcess(row) {
console.log("发起流程申请",row);
console.log("发起流程申请", row);
this.$router.push({
path: "/flowable/task/record/index",
query: {
......@@ -142,7 +150,7 @@ export default {
handleStop(row) {
console.log(row);
const params = {
instanceId: row.procInsId,
processInstanceId: row.procInsId,
};
stopProcess(params).then((res) => {
this.$message.success(res.msg);
......@@ -161,6 +169,23 @@ export default {
},
});
},
/** 预览当前流程图 */
handleView(row) {
console.log("预览当前流程图", row);
this.viewImageDialog.img = "";
this.$post("/task/process/preViewImage", {
processInstanceId: row.procInsId,
})
.then((res) => {
this.viewImageDialog.img = res.pic;
this.viewImageDialog.visible = true;
})
.catch((error) => {
this.$message.error(error.message);
});
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
......@@ -203,12 +228,24 @@ export default {
type: "warning",
}
)
.then(function () {
return delDeployment(ids);
})
.then(() => {
this.getData();
this.$message.success("删除成功");
this.$post("/task/process/deleteProcess", {
processInstanceId: row.procInsId,
deleteReason: "强制删除",
})
.then((res) => {
this.getData();
this.$message.success("删除成功");
})
.catch((error) => {
this.$message.error(error.message);
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除",
});
});
},
/** 导出按钮操作 */
......@@ -229,6 +266,10 @@ export default {
},
data() {
return {
viewImageDialog: {
visible: false,
img: "",
},
// 遮罩层
loading: true,
processLoading: true,
......@@ -278,8 +319,7 @@ export default {
totalPage: 0,
totalResult: 0,
},
query: {}
,
query: {},
},
// 表单参数
......@@ -295,14 +335,9 @@ export default {
},
],
columns: [
{
type: "selection",
width: 60,
},
{
prop: "procInsId",
label: "流程编号",
label: "流程实例编号",
},
{
......@@ -346,7 +381,7 @@ export default {
{
prop: "assigneeName",
label: "办理人",
formatter:this.formatter
formatter: this.formatter,
},
{
......@@ -391,6 +426,18 @@ export default {
>
删除
</el-button>
<span> </span>
<el-button
size="mini"
type="text"
icon="el-icon-view"
onClick={() => {
this.handleView(row);
}}
>
预览
</el-button>
</el-row>
);
},
......
......@@ -215,10 +215,6 @@ window.addEventListener('onmessageWS', getsocketData)
},
],
columns: [
{
type: "selection",
width: 60,
},
{
prop: "taskId",
......@@ -235,14 +231,6 @@ window.addEventListener('onmessageWS', getsocketData)
label: "任务节点",
},
{
prop: "procDefVersion",
label: "流程版本",
formatter: (row) => {
return <el-tag size="medium">v{row.procDefVersion}</el-tag>;
},
},
{
prop: "startUserName",
label: "流程发起人",
......
......@@ -12,7 +12,7 @@ module.exports = {
lintOnSave:false,
devServer: {
disableHostCheck: true,
port: 8081,
port: 8082,
hot: true,//自动保存
proxy: {
'/m': {
......
......@@ -3680,6 +3680,18 @@ element-ui@^2.12.0, element-ui@^2.13.2:
resize-observer-polyfill "^1.5.0"
throttle-debounce "^1.0.1"
element-ui@^2.15.5:
version "2.15.5"
resolved "https://registry.nlark.com/element-ui/download/element-ui-2.15.5.tgz#dfb376dc5cd60adab21c991bd4fac3e67e5300f4"
integrity sha1-37N23FzWCtqyHJkb1PrD5n5TAPQ=
dependencies:
async-validator "~1.8.1"
babel-helper-vue-jsx-merge-props "^2.0.0"
deepmerge "^1.2.0"
normalize-wheel "^1.0.1"
resize-observer-polyfill "^1.5.0"
throttle-debounce "^1.0.1"
elliptic@^6.5.3:
version "6.5.4"
resolved "https://registry.nlark.com/elliptic/download/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
......
......@@ -67,6 +67,23 @@
<version>2.5.2</version>
</dependency>
<dependency>
<groupId>io.github.yedaxia</groupId>
<artifactId>japidocs</artifactId>
<version>1.4.4</version>
</dependency>
<dependency>
<groupId>com.github.shalousun</groupId>
<artifactId>smart-doc</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
......
......@@ -50,7 +50,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
@Slf4j
@Aspect
@Configuration(proxyBeanMethods = false)
@Profile({"develop", "test"})
@Profile({"develop1", "test"})
public class RequestLogAspect {
private static final ParameterNameDiscoverer PARAMETER_NAME_DISCOVERER = new DefaultParameterNameDiscoverer();
......
///*
//package com.mortals.coops.base.login.web;
//
//import javax.servlet.Filter;
//
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
//import org.springframework.boot.web.servlet.FilterRegistrationBean;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
//import com.mortals.iot.portal.sso.client.web.SsoBaseConfiguration;
//
//@Configuration
//public class SsoConfiguration extends SsoBaseConfiguration {
//
// @Bean
// @ConditionalOnBean(SsoController.class)
// public FilterRegistrationBean<Filter> getSsoLoginFilterRegBean() {
// Filter filter = getSsoLoginFilter();
// FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<Filter>();
// bean.setFilter(filter);
// bean.addUrlPatterns("/*");
// bean.setOrder(2);
// return bean;
// }
//
// @Value("${cookie.ssoServerUrl}")
// @Override
// public void setSsoServerUrl(String ssoServerUrl) {
// super.setSsoServerUrl(ssoServerUrl);
// }
//
// @Value("#{ '${application.auth.unloginUrl:}'!='' ? '${application.auth.unloginUrl:}':'${spring.application.auth.unloginUrl:}' }")
// @Override
// public void setUncheckLoginUrls(String uncheckLoginUrl) {
// super.setUncheckLoginUrls(uncheckLoginUrl);
// }
//
// @Value("${cookie.key}")
// @Override
// public void setCookieSec(String cookieSec) {
// super.setCookieSec(cookieSec);
// }
//
// @Value("${cookie.domain}")
// @Override
// public void setCookieDomain(String cookieDomain) {
// super.setCookieDomain(cookieDomain);
// }
//
// @Value("${platform.mark}")
// @Override
// public void setPlatformMark(String platformMark) {
// super.setPlatformMark(platformMark);
// }
//}
//*/
//package com.mortals.coops.base.login.web;
//
//import java.net.URLEncoder;
//import java.util.Date;
//import java.util.List;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
//import com.mortals.coops.base.system.user.model.UserEntity;
//import org.apache.commons.lang.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.BeanUtils;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.context.request.RequestAttributes;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//
//import com.alibaba.fastjson.JSONObject;
//import com.mortals.framework.model.Context;
//import com.mortals.iot.portal.sso.client.SsoClient;
//import com.mortals.iot.portal.sso.client.model.SsoCookie;
//import com.mortals.iot.portal.sso.client.model.SsoUser;
//import com.mortals.iot.portal.sso.client.model.SsoUserQueryReq;
//
////@RestController
//public class SsoController extends LoginController {
//
// private static Logger log = LoggerFactory.getLogger(SsoController.class);
//
// public SsoController() {
// log.info("============SSO登录模式,启动业务平台============");
// }
//
// @Override
// public String login(HttpServletRequest request, HttpServletResponse response, LoginForm loginForm)
// throws Exception {
// // 统一登录时进入>>>>>>>>>>>>>
//// log.info("request.getServerName()=====" + request.getServerName());
// // SsoClient.getConfiguration().setCookieDomain(request.getServerName());
// //SsoClient.getConfiguration().setCookieDomain("192.168.2.81");
// String sign = request.getParameter("sign");
// SsoCookie ssoCookie = null;
// String originHeads = request.getHeader("Origin");
// response.setHeader("Access-Control-Allow-Origin", originHeads);
// response.setHeader("Access-Control-Allow-Credentials", "true");
// if (sign != null && !sign.isEmpty()) {
// ssoCookie = SsoClient.decryptSign(request, response);
// if (ssoCookie == null || ssoCookie.getSsoUser() == null) {// 解密失败
// log.error("解密失败,返回到登录:" + sign);
// this.logout(request, response);
// } else {
// UserEntity localUser = saveUser(ssoCookie.getSsoUser());// 保存用户信息到本地
// super.recordSysLog(request, localUser, "用户登录");
// // 转换为业务平台用户信息,并种植cookie,以解决sso和业务平台用户ID不一至问题
// BeanUtils.copyProperties(localUser, ssoCookie.getSsoUser());
// SsoClient.setLoginCookie(ssoCookie, response);
// }
// return "";
// }
// // <<<<<<<<<<<<<
// // 非统一登录时进入>>>>>>>>>>>>>
// logout(request, response);
// return null;
// }
//
// /*
// * sso时,重写此方法,用于检查是否需要重定向到sso服务地址(未登录、已登录、修改密码重定向)
// */
// @Override
// public void logout(HttpServletRequest request, HttpServletResponse response) throws Exception {
// JSONObject ret = new JSONObject();
// JSONObject data = new JSONObject();
// String redirect = StringUtils.defaultString(request.getParameter("redirect"));
// if (!redirect.isEmpty() && SsoClient.getConfiguration().getChangePwdUrl().endsWith(redirect)) {// 修改密码跳转
// response.sendRedirect(SsoClient.getConfiguration().getChangePwdUrl());
// } else if (!redirect.isEmpty()) {// 未登录和已登录跳转
// SsoCookie info = SsoClient.getLoginCookie(request);
// if (info == null || info.getSsoUser() == null) {// 未登录
//// log.error("从请求中获取cookie失败");
// redirect = URLEncoder.encode(redirect, "UTF-8");
// response.sendRedirect(SsoClient.getConfiguration().getLogoutUrl(redirect));
// } else {// 已登录
// response.sendRedirect("/");
// }
// } else {// 正常退出
// this.doLogout(request, response);
// }
// ret.put(KEY_RESULT_DATA, data);
// ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
// this.writeResponse(response, ret.toJSONString());
// }
//
// public void doLogout(HttpServletRequest request, HttpServletResponse response) throws Exception {
// recordSysLog(request, "退出登录");
// super.removeCurrUser(request, response);
// super.deleteBlackCookie(request, response);
// SsoClient.deleteLoginCookie(response);
// }
//
// /**
// * 同步用户信息 demo
// * @param req
// */
// @RequestMapping(value = "syncSsoUsers")
// public void syncSsoUsers(SsoUserQueryReq req) {
// SsoUserQueryReq queryReq = new SsoUserQueryReq();
// List<SsoUser> ssoUsers = SsoClient.querySsoUser(queryReq);
// ssoUsers.stream().forEach(user -> {
// saveUser(user); // 保存用户信息到本地
// });
// }
//
// /**
// * 保存登录用户信息到本地用户表
// * @param ssoUser
// */
// private UserEntity saveUser(SsoUser ssoUser) {
// RequestAttributes requstAttr = RequestContextHolder.getRequestAttributes();
// HttpServletRequest request = ((ServletRequestAttributes) requstAttr).getRequest();
// String ip = this.getRequestIP(request);
// // 用户不存时,添加用户到本地用户表
// UserEntity query = new UserEntity();
// query.setId(ssoUser.getId());
// List<UserEntity> userEntities = getService().find(query, null);
// Date currDate = new Date();
// if (userEntities.isEmpty()) {
// try {
// UserEntity entity = new UserEntity();
// BeanUtils.copyProperties(ssoUser, entity);
// entity.setCreateTime(currDate);
// entity.setUpdateTime(currDate);
// entity.setLastLoginTime(currDate);
// entity.setLastLoginAddress(ip);
// return getService().save(entity, getContext());
// } catch (Exception e) {
// if (e instanceof org.springframework.dao.DuplicateKeyException) {
// userEntities = getService().find(query, null);
// } else {
// throw e;
// }
// }
// }
// if (userEntities.isEmpty()) {
// throw new RuntimeException("未找到匹配的用户信息");
// }
// UserEntity entity = userEntities.stream().findFirst().get();
// UserEntity uUserEntity = new UserEntity();
// uUserEntity.setId(entity.getId());
// uUserEntity.setUpdateTime(currDate);
// uUserEntity.setLastLoginTime(currDate);
// uUserEntity.setLastLoginAddress(ip);
// uUserEntity.setRealName(ssoUser.getRealName());
// uUserEntity.setMobile(ssoUser.getMobile());
// uUserEntity.setUserType(ssoUser.getUserType());
// uUserEntity.setStatus(ssoUser.getStatus());
// uUserEntity.setCustomerId(ssoUser.getCustomerId());
//
// Context context = getContext();
// context.setUser(entity);
// getService().update(uUserEntity, context);
// return entity;
// }
//}
......@@ -65,7 +65,7 @@ public class UploadServiceImpl implements UploadService {
}
String newName = seqGeneratorService.nextOrderId(1024) + "." + extension;
String newName = seqGeneratorService.nextOrderId(1023) + "." + extension;
String filePathAll = filePath + newName;
File uploadFile = new File(filePathAll);
......
package com.mortals.xhx.busiz;
import lombok.Data;
@Data
public class StartOneThingReq {
private Long oneThingId;
}
package com.mortals.xhx.busiz;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mortals.xhx.base.framework.config.InterceptorConfig;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.ApiRespCodeEnum;
import com.mortals.xhx.common.code.ApproveStateEnum;
import com.mortals.xhx.common.code.OneThingTypeEnum;
import com.mortals.xhx.common.keys.BusizParams;
import com.mortals.xhx.feign.flowable.IApiFlowInstanceFeign;
import com.mortals.xhx.feign.rsp.ApiResp;
import com.mortals.xhx.feign.runtime.StartProcessInstanceReq;
import com.mortals.xhx.module.member.model.MemberEntity;
import com.mortals.xhx.module.member.service.MemberService;
import com.mortals.xhx.module.onething.model.OnethingEntity;
import com.mortals.xhx.module.onething.service.OnethingService;
import lombok.extern.apachecommons.CommonsLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.Map;
/**
* 一件事微信对外服务接口
*
* @author: zxfei
* @date: 2021/8/24 20:28
*/
@RestController
@CommonsLog
@RequestMapping("/api/one/")
public class WxOneThingApiController {
@Autowired
private OnethingService onethingService;
@Autowired
private ParamService paramService;
@Autowired
private IApiFlowInstanceFeign apiFlowInstanceFeign;
@Autowired
private MemberService memberService;
@Autowired
private InterceptorConfig config;
/**
* 微信用户提交材料
*
* @param entity
* @return
*/
@PostMapping("thing/create")
public ApiResp<String> createThing(@RequestBody OnethingEntity entity) {
ApiResp rsp = new ApiResp<>();
rsp.setMsg(ApiRespCodeEnum.SUCCESS.getLabel());
rsp.setCode(ApiRespCodeEnum.SUCCESS.getValue());
try {
entity.setType(OneThingTypeEnum.UNSUBMIT.getValue());
entity.setStatus(ApproveStateEnum.UN_AUDIT.getValue());
entity.setCreateUser("admin");
entity.setCreateTime(new Date());
OnethingEntity save = onethingService.save(entity);
rsp.setData(save.getId());
} catch (Exception e) {
log.error("流程实例化终止失败", e);
rsp.setCode(ApiRespCodeEnum.FAILED.getValue());
rsp.setMsg(e.getMessage());
return rsp;
}
log.info("响应【材料创建】【响应体】--> " + JSONObject.toJSONString(rsp));
return rsp;
}
/**
* 发起流程
*
* @param req
* @return
*/
@PostMapping("thing/start")
public ApiResp<String> startProcess(@RequestBody StartOneThingReq req) {
ApiResp rsp = new ApiResp<>();
rsp.setMsg(ApiRespCodeEnum.SUCCESS.getLabel());
rsp.setCode(ApiRespCodeEnum.SUCCESS.getValue());
try {
OnethingEntity onethingEntity = onethingService.get(req.getOneThingId());
MemberEntity memberEntity = memberService.get(onethingEntity.getMemberId());
//获取流程定义key 发起流程 当前通过param参数固定获取
String oneThingKey = paramService.getValueByKey(BusizParams.SYS_PARAM_FLOW_KEY);
//通过流程key获取基础提交参数
String vars = paramService.getValueByKey(oneThingKey);
ObjectMapper mapper = new ObjectMapper();
Map<String,Object> variables = mapper.readValue(vars, Map.class);
StartProcessInstanceReq startProcessInstanceReq = new StartProcessInstanceReq();
startProcessInstanceReq.setProcessDefinitionKey(oneThingKey);
startProcessInstanceReq.setBusinessKey(onethingEntity.getId().toString());
startProcessInstanceReq.setFormName("一件事一次办");
startProcessInstanceReq.setUserCode(memberEntity.getOpenId());
startProcessInstanceReq.setPlatformSn(config.getTenantId());
startProcessInstanceReq.setVariables(variables);
ApiResp<String> resp = apiFlowInstanceFeign.processStart(startProcessInstanceReq);
onethingEntity.setProcessInstanceId(resp.getData());
onethingEntity.setType(OneThingTypeEnum.SUBMIT.getValue());
onethingEntity.setStatus(ApproveStateEnum.AUDITING.getValue());
onethingService.update(onethingEntity);
rsp.setData(resp.getData());
} catch (Exception e) {
log.error("发起审批流程", e);
rsp.setCode(ApiRespCodeEnum.FAILED.getValue());
rsp.setMsg(e.getMessage());
return rsp;
}
log.info("响应【材料创建】【响应体】--> " + JSONObject.toJSONString(rsp));
return rsp;
}
}
###材料创建
POST {{baseUrl}}/m//api/one/thing/create
Content-Type: application/json
{
"memberId": 1,
"matterid": 41,
"uploadtime": 683,
"address": "黎桥8号, 江阴, 沪 949973",
"linkman": "fon85y",
"phone": 802,
"updateTime":12255555,
"manner": 0,
"getnum": "aumqil",
"number": "l6xlee",
"optionContent": "ep6etx",
"isRevoke": 1,
"siteid": 143
}
###发起审批
POST {{baseUrl}}/m//api/one/thing/start
Content-Type: application/json
{
"oneThingId": 2
}
package com.mortals.xhx.common.code;
/**
* @author karlhoo
*/
public enum ApiRespCodeEnum {
/** 接收成功 */
SUCCESS(1, "接收成功"),
/** 执行失败 */
FAILED(2,"执行失败"),
;
private final Integer value;
private final String label;
ApiRespCodeEnum(Integer value, String label) {
this.value = value;
this.label = label;
}
public int getValue() {
return this.value;
}
public String getLabel() {
return this.label;
}
}
......@@ -5,6 +5,7 @@ public final class Constant {
/** 基础代码版本 Z-BASE.MANAGER-S1.0.0 */
public final static String BASEMANAGER_VERSION = "Z-BASE.MANAGER-S1.0.0";
public final static String Param_materialProperty = "materialProperty";
public final static String Param_materialType = "materialType";
public final static String Param_electronicgs = "electronicgs";
public final static String Param_materialSourceSm = "materialSourceSm";
......
......@@ -34,7 +34,7 @@ public class RequestInstanceController {
variables.put("initiator", req.getTransmission().getUserId());
variables.put("_FLOWABLE_SKIP_EXPRESSION_ENABLED", true);
respPdu = apiFlowInstanceFeign.startById(req.getTransmission().getProcDefId(), variables);
//respPdu = apiFlowInstanceFeign.startById(req.getTransmission().getProcDefId(), variables);
} catch (Exception e) {
log.error("error", e);
}
......@@ -46,7 +46,7 @@ public class RequestInstanceController {
ApiRespPdu<String> respPdu = new ApiRespPdu<>();
try {
respPdu = apiFlowInstanceFeign.updateState(req.getTransmission().getState(),req.getTransmission().getProcessInstanceId());
//respPdu = apiFlowInstanceFeign.updateState(req.getTransmission().getState(),req.getTransmission().getProcessInstanceId());
} catch (Exception e) {
log.error("error", e);
}
......
......@@ -8,9 +8,11 @@ import com.mortals.xhx.common.pdu.api.ApiRespPdu;
import com.mortals.xhx.common.pdu.flow.DefinitionVoPdu;
import com.mortals.xhx.common.pdu.flow.FlowProcDefPdu;
import com.mortals.xhx.common.pdu.flow.FlowSaveXmlPdu;
import com.mortals.xhx.common.pdu.flow.FlowTaskVoPdu;
import com.mortals.xhx.module.flowable.model.FlowableDefinitionEntity;
import com.mortals.xhx.module.flowable.model.FlowableDefinitionQuery;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
......@@ -40,4 +42,6 @@ public interface FlowableDefinitionService extends ICRUDService<FlowableDefiniti
String deleteDefinition(DefinitionVoPdu definitionVoPdu,Context context);
List<FlowTaskVoPdu> getAllProcessInstanceEl(String processDefinitionKey);
}
\ No newline at end of file
package com.mortals.xhx.module.member.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.member.model.MemberEntity;
/**
* <p>Title: 微信会员基本信息</p>
* <p>Description: MemberDao DAO接口 </p>
* @author
* @version 1.0.0
*/
public interface MemberDao extends ICRUDDao<MemberEntity,Long>{
}
package com.mortals.xhx.module.member.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.module.member.dao.MemberDao;
import com.mortals.xhx.module.member.model.MemberEntity;
/**
* <p>Title: 微信会员基本信息</p>
* <p>Description: MemberDaoImpl DAO接口 </p>
* @author
* @version 1.0.0
*/
@Repository("memberDao")
public class MemberDaoImpl extends BaseCRUDDaoMybatis<MemberEntity,Long> implements MemberDao {
}
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment