diff --git a/mallinkAdmin/pom.xml b/mallinkAdmin/pom.xml
index 02c1bf92c..e692e554e 100644
--- a/mallinkAdmin/pom.xml
+++ b/mallinkAdmin/pom.xml
@@ -49,6 +49,7 @@
core
3.3.3
+
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/FlowAbleController.java b/mallinkAdmin/src/main/java/com/iformall/controller/FlowAbleController.java
new file mode 100644
index 000000000..52f94a82a
--- /dev/null
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/FlowAbleController.java
@@ -0,0 +1,223 @@
+package com.iformall.controller;
+
+import com.iformall.common.ResultData;
+import com.iformall.enums.EnumFlowKey;
+import com.iformall.service.FlowableService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.map.HashedMap;
+import org.flowable.bpmn.model.BpmnModel;
+import org.flowable.common.engine.impl.identity.Authentication;
+import org.flowable.engine.*;
+import org.flowable.engine.runtime.Execution;
+import org.flowable.engine.runtime.ProcessInstance;
+import org.flowable.engine.task.Comment;
+import org.flowable.image.ProcessDiagramGenerator;
+import org.flowable.task.api.Task;
+import org.flowable.task.api.history.HistoricTaskInstance;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.*;
+
+@RestController
+@Api(description = "工作流相关接口")
+@RequestMapping(value = "workflow")
+public class FlowAbleController extends BaseController {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ @Autowired
+ private RuntimeService runtimeService;
+ @Autowired
+ private TaskService taskService;
+ @Autowired
+ private RepositoryService repositoryService;
+ @Autowired
+ private ProcessEngine processEngine;
+
+ @ApiOperation("启动流程")
+ @PostMapping("/start")
+ public ResultData start(@RequestBody Map params) {
+ logger.debug("[" + getIpAddr() + "] FlowAbleController::start");
+
+ try{
+ //设置发起人
+ Authentication.setAuthenticatedUserId(super.getUser().getId().toString());
+ String firstTaskUserId = params.get("firstTaskUserId");
+ String secondTaskUserId = params.get("secondTaskUserId");
+ String remark = params.get("remark");
+ HashMap map = new HashMap<>();
+
+ // 设置节点处理人
+ map.put("firstTaskUser", firstTaskUserId);
+ map.put("secondTaskUser", secondTaskUserId);
+ // map info
+ map.put("starterId", super.getUser().getId());
+ map.put("starter", super.getUser().getName());
+ map.put("startTime",new Date().getTime());
+ map.put("remark",remark);
+
+ ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(EnumFlowKey.CONTRACT.getCode(), map);
+ logger.debug("流程启动,流程id:{}",processInstance.getId());
+ return new ResultData();
+ }catch (Exception e){
+ logger.error("启动流程发生错误",e);
+ throw new RuntimeException(e);
+ }finally {
+ Authentication.setAuthenticatedUserId(null);
+ }
+ }
+
+ /**
+ * 用户代办列表
+ */
+ @ApiOperation("用户代办列表")
+ @PostMapping(value = "/list")
+ @ResponseBody
+ public Object list(@RequestBody Map params) {
+ String userId = (String)params.get("userId");
+ Integer flowType = (Integer)params.get("flowType"); //1合同审批 2账单审批
+ String flowKey = "";
+ if(1 == flowType){
+ flowKey = EnumFlowKey.CONTRACT.getCode();
+ }else if(2 == flowType){
+ flowKey = EnumFlowKey.BILL.getCode();
+ }
+
+ List tasks = taskService.createTaskQuery().processDefinitionKey(flowKey).taskCandidateUser(userId).orderByTaskCreateTime().desc().list();
+ List