|
@@ -1,35 +1,39 @@
|
|
package com.qmth.sop.server.api;
|
|
package com.qmth.sop.server.api;
|
|
|
|
|
|
-import com.qmth.sop.business.bean.auth.FormPropertyBean;
|
|
|
|
|
|
+import com.google.gson.reflect.TypeToken;
|
|
|
|
+import com.qmth.sop.business.bean.FormPropertyBean;
|
|
|
|
+import com.qmth.sop.business.bean.result.FlowFormWidgetResult;
|
|
import com.qmth.sop.business.service.ActivitiConsumerService;
|
|
import com.qmth.sop.business.service.ActivitiConsumerService;
|
|
|
|
+import com.qmth.sop.common.util.GsonUtil;
|
|
import com.qmth.sop.common.util.JacksonUtil;
|
|
import com.qmth.sop.common.util.JacksonUtil;
|
|
import io.swagger.annotations.*;
|
|
import io.swagger.annotations.*;
|
|
import org.activiti.engine.FormService;
|
|
import org.activiti.engine.FormService;
|
|
import org.activiti.engine.RepositoryService;
|
|
import org.activiti.engine.RepositoryService;
|
|
import org.activiti.engine.TaskService;
|
|
import org.activiti.engine.TaskService;
|
|
-import org.activiti.engine.form.FormProperty;
|
|
|
|
-import org.activiti.engine.form.StartFormData;
|
|
|
|
-import org.activiti.engine.form.TaskFormData;
|
|
|
|
import org.activiti.engine.repository.DeploymentBuilder;
|
|
import org.activiti.engine.repository.DeploymentBuilder;
|
|
import org.activiti.engine.runtime.ProcessInstance;
|
|
import org.activiti.engine.runtime.ProcessInstance;
|
|
import org.activiti.engine.task.Task;
|
|
import org.activiti.engine.task.Task;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
+import org.springframework.core.io.ClassPathResource;
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
+import java.io.IOException;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
+import java.util.zip.ZipInputStream;
|
|
|
|
|
|
-@Api(tags = "测试流程表单Controller")
|
|
|
|
|
|
+@Api(tags = "测试流程表单htmlController")
|
|
@RestController
|
|
@RestController
|
|
-@RequestMapping("/activiti/form")
|
|
|
|
-public class ActivitiFromController {
|
|
|
|
- private final static Logger log = LoggerFactory.getLogger(ActivitiFromController.class);
|
|
|
|
|
|
+@RequestMapping("/activiti/form/html")
|
|
|
|
+public class ActivitiFromHtmlController {
|
|
|
|
+ private final static Logger log = LoggerFactory.getLogger(ActivitiFromHtmlController.class);
|
|
|
|
|
|
@Resource
|
|
@Resource
|
|
private ActivitiConsumerService activitiConsumerService;
|
|
private ActivitiConsumerService activitiConsumerService;
|
|
@@ -51,9 +55,15 @@ public class ActivitiFromController {
|
|
@ApiOperation(value = "创建流程接口")
|
|
@ApiOperation(value = "创建流程接口")
|
|
@RequestMapping(value = "/createDeployment", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/createDeployment", method = RequestMethod.POST)
|
|
@ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = Object.class)})
|
|
@ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = Object.class)})
|
|
- public Map<String, Object> createDeployment() {
|
|
|
|
|
|
+ public Map<String, Object> createDeployment() throws IOException {
|
|
DeploymentBuilder builder = repositoryService.createDeployment();
|
|
DeploymentBuilder builder = repositoryService.createDeployment();
|
|
- builder.addClasspathResource("testform1.bpmn");
|
|
|
|
|
|
+// builder.addClasspathResource("testform3.bpmn");
|
|
|
|
+// builder.addClasspathResource("start.form");
|
|
|
|
+// builder.addClasspathResource("dept-leader-audit.form");
|
|
|
|
+ ClassPathResource resource = new ClassPathResource("testform3.zip");
|
|
|
|
+// ClassPathResource resource = new ClassPathResource("testform4.zip");
|
|
|
|
+ ZipInputStream zip = new ZipInputStream(resource.getInputStream());
|
|
|
|
+ builder.addZipInputStream(zip);
|
|
return getFlowStartFormData(builder.deploy().getId());
|
|
return getFlowStartFormData(builder.deploy().getId());
|
|
}
|
|
}
|
|
|
|
|
|
@@ -68,10 +78,15 @@ public class ActivitiFromController {
|
|
public Map<String, Object> getFlowStartFormData(@ApiParam(value = "部署流程id", required = true) @RequestParam String deploymentId) {
|
|
public Map<String, Object> getFlowStartFormData(@ApiParam(value = "部署流程id", required = true) @RequestParam String deploymentId) {
|
|
Map<String, Object> map = new HashMap<>();
|
|
Map<String, Object> map = new HashMap<>();
|
|
String processDefinitionId = activitiConsumerService.findProcessDefinitionIdByDeploymentId(deploymentId);
|
|
String processDefinitionId = activitiConsumerService.findProcessDefinitionIdByDeploymentId(deploymentId);
|
|
- StartFormData formData = formService.getStartFormData(processDefinitionId);
|
|
|
|
- List<FormProperty> formProperties = formData.getFormProperties();
|
|
|
|
- log.info("start formProperties:{}", JacksonUtil.parseJson(formProperties));
|
|
|
|
- map.put("FormProperty", new FormPropertyBean(null, null, formProperties));
|
|
|
|
|
|
+// ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult();
|
|
|
|
+// boolean hasStartFormKey = processDefinition.hasStartFormKey();
|
|
|
|
+ Object o = formService.getRenderedStartForm(processDefinitionId);
|
|
|
|
+ if (Objects.nonNull(o)) {
|
|
|
|
+ log.info("start formProperties:{}", JacksonUtil.parseJson(o));
|
|
|
|
+ List<FlowFormWidgetResult> list = GsonUtil.fromJson(JacksonUtil.parseJson(o), new TypeToken<List<FlowFormWidgetResult>>() {
|
|
|
|
+ }.getType());
|
|
|
|
+ map.put("FormProperty", new FormPropertyBean(null, null, list));
|
|
|
|
+ }
|
|
map.put("processDefinitionId", processDefinitionId);
|
|
map.put("processDefinitionId", processDefinitionId);
|
|
map.put("deploymentId", deploymentId);
|
|
map.put("deploymentId", deploymentId);
|
|
return map;
|
|
return map;
|
|
@@ -99,11 +114,15 @@ public class ActivitiFromController {
|
|
for (Task t : taskList) {
|
|
for (Task t : taskList) {
|
|
String flowTaskId = t.getId();
|
|
String flowTaskId = t.getId();
|
|
String processInstanceId = t.getProcessInstanceId();
|
|
String processInstanceId = t.getProcessInstanceId();
|
|
- TaskFormData taskFormData = formService.getTaskFormData(flowTaskId);
|
|
|
|
- List<FormProperty> formProperties = taskFormData.getFormProperties();
|
|
|
|
|
|
+ Object o = formService.getRenderedTaskForm(flowTaskId);
|
|
|
|
+// List<FormProperty> formProperties = taskFormData.getFormProperties();
|
|
log.info("taskId:{},flowId:{}", flowTaskId, processInstanceId);
|
|
log.info("taskId:{},flowId:{}", flowTaskId, processInstanceId);
|
|
- log.info("task formProperties:{}", JacksonUtil.parseJson(formProperties));
|
|
|
|
- formPropertyList.add(new FormPropertyBean(processInstanceId, flowTaskId, t.getAssignee(), formProperties));
|
|
|
|
|
|
+ if (Objects.nonNull(o)) {
|
|
|
|
+ log.info("task formProperties:{}", JacksonUtil.parseJson(o));
|
|
|
|
+ List<FlowFormWidgetResult> list = GsonUtil.fromJson(JacksonUtil.parseJson(o), new TypeToken<List<FlowFormWidgetResult>>() {
|
|
|
|
+ }.getType());
|
|
|
|
+ formPropertyList.add(new FormPropertyBean(processInstanceId, flowTaskId, t.getAssignee(), list));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
varMap.put("formProperties", formPropertyList);
|
|
varMap.put("formProperties", formPropertyList);
|
|
}
|
|
}
|
|
@@ -120,6 +139,7 @@ public class ActivitiFromController {
|
|
@ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = Object.class)})
|
|
@ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = Object.class)})
|
|
public Map<String, Object> startActivityDemo(@ApiParam(value = "流程定义id", required = true) @RequestParam String processDefinitionId,
|
|
public Map<String, Object> startActivityDemo(@ApiParam(value = "流程定义id", required = true) @RequestParam String processDefinitionId,
|
|
@ApiParam(value = "审批人id", required = true) @RequestParam String approveId,
|
|
@ApiParam(value = "审批人id", required = true) @RequestParam String approveId,
|
|
|
|
+ @ApiParam(value = "上传文件") @RequestParam(required = false) MultipartFile file,
|
|
HttpServletRequest request) {
|
|
HttpServletRequest request) {
|
|
Map<String, Object> varMap = new HashMap<>();
|
|
Map<String, Object> varMap = new HashMap<>();
|
|
Map<String, String> formDataMap = new HashMap<>();
|
|
Map<String, String> formDataMap = new HashMap<>();
|
|
@@ -131,6 +151,7 @@ public class ActivitiFromController {
|
|
formDataMap.put(key, value[0]);
|
|
formDataMap.put(key, value[0]);
|
|
}
|
|
}
|
|
varMap.putAll(formDataMap);
|
|
varMap.putAll(formDataMap);
|
|
|
|
+
|
|
ProcessInstance processInstance = formService.submitStartFormData(processDefinitionId, formDataMap);
|
|
ProcessInstance processInstance = formService.submitStartFormData(processDefinitionId, formDataMap);
|
|
if (Objects.nonNull(processInstance)) {
|
|
if (Objects.nonNull(processInstance)) {
|
|
List<Task> taskList = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
|
|
List<Task> taskList = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
|
|
@@ -139,11 +160,14 @@ public class ActivitiFromController {
|
|
for (Task t : taskList) {
|
|
for (Task t : taskList) {
|
|
String flowTaskId = t.getId();
|
|
String flowTaskId = t.getId();
|
|
String processInstanceId = t.getProcessInstanceId();
|
|
String processInstanceId = t.getProcessInstanceId();
|
|
- TaskFormData taskFormData = formService.getTaskFormData(flowTaskId);
|
|
|
|
- List<FormProperty> formProperties = taskFormData.getFormProperties();
|
|
|
|
|
|
+ Object o = formService.getRenderedTaskForm(flowTaskId);
|
|
log.info("flowTaskId:{},flowId:{}", flowTaskId, processInstanceId);
|
|
log.info("flowTaskId:{},flowId:{}", flowTaskId, processInstanceId);
|
|
- log.info("task formProperties:{}", JacksonUtil.parseJson(formProperties));
|
|
|
|
- formPropertyList.add(new FormPropertyBean(processInstanceId, flowTaskId, formProperties));
|
|
|
|
|
|
+ if (Objects.nonNull(o)) {
|
|
|
|
+ log.info("task formProperties:{}", JacksonUtil.parseJson(o));
|
|
|
|
+ List<FlowFormWidgetResult> list = GsonUtil.fromJson(JacksonUtil.parseJson(o), new TypeToken<List<FlowFormWidgetResult>>() {
|
|
|
|
+ }.getType());
|
|
|
|
+ formPropertyList.add(new FormPropertyBean(processInstanceId, flowTaskId, list));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
varMap.put("formProperties", formPropertyList);
|
|
varMap.put("formProperties", formPropertyList);
|
|
}
|
|
}
|
|
@@ -168,15 +192,16 @@ public class ActivitiFromController {
|
|
String flowTaskId = t.getId();
|
|
String flowTaskId = t.getId();
|
|
String processInstanceId = t.getProcessInstanceId();
|
|
String processInstanceId = t.getProcessInstanceId();
|
|
String processDefinitionId = t.getProcessDefinitionId();
|
|
String processDefinitionId = t.getProcessDefinitionId();
|
|
- TaskFormData taskFormData = formService.getTaskFormData(flowTaskId);
|
|
|
|
- List<FormProperty> formProperties = taskFormData.getFormProperties();
|
|
|
|
- for (FormProperty f : formProperties) {
|
|
|
|
- log.info("datePattern:{}", f.getType().getInformation("datePattern"));
|
|
|
|
- log.info("values:{}", f.getType().getInformation("values"));
|
|
|
|
|
|
+ log.info("用户id:{},taskId:{},flowId:{},processDefinitionId:{},formKey:{}", userId, flowTaskId, processInstanceId, processDefinitionId, t.getFormKey());
|
|
|
|
+ if (Objects.nonNull(t.getFormKey())) {
|
|
|
|
+ Object o = formService.getRenderedTaskForm(flowTaskId);
|
|
|
|
+ if (Objects.nonNull(o)) {
|
|
|
|
+ log.info("task formProperties:{}", JacksonUtil.parseJson(o));
|
|
|
|
+ List<FlowFormWidgetResult> list = GsonUtil.fromJson(JacksonUtil.parseJson(o), new TypeToken<List<FlowFormWidgetResult>>() {
|
|
|
|
+ }.getType());
|
|
|
|
+ formPropertyList.add(new FormPropertyBean(processInstanceId, flowTaskId, userId, list));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- log.info("用户id:{},taskId:{},flowId:{},processDefinitionId:{}", userId, flowTaskId, processInstanceId, processDefinitionId);
|
|
|
|
- log.info("task formProperties:{}", JacksonUtil.parseJson(formProperties));
|
|
|
|
- formPropertyList.add(new FormPropertyBean(processInstanceId, flowTaskId, userId, formProperties));
|
|
|
|
varMap.put("formProperties", formPropertyList);
|
|
varMap.put("formProperties", formPropertyList);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -192,7 +217,8 @@ public class ActivitiFromController {
|
|
@ApiOperation(value = "流程提交接口")
|
|
@ApiOperation(value = "流程提交接口")
|
|
@RequestMapping(value = "/complete", method = RequestMethod.POST)
|
|
@RequestMapping(value = "/complete", method = RequestMethod.POST)
|
|
@ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = Object.class)})
|
|
@ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = Object.class)})
|
|
- public Map<String, Object> complete(@ApiParam(value = "流程taskId", required = true) @RequestParam String taskId, HttpServletRequest request) {
|
|
|
|
|
|
+ public Map<String, Object> complete(@ApiParam(value = "流程taskId", required = true) @RequestParam String taskId,
|
|
|
|
+ @ApiParam(value = "上传文件") @RequestParam(required = false) MultipartFile[] files, HttpServletRequest request) {
|
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
|
Map<String, Object> varMap = new HashMap<>();
|
|
Map<String, Object> varMap = new HashMap<>();
|
|
Map<String, String> formDataMap = new HashMap<>();
|
|
Map<String, String> formDataMap = new HashMap<>();
|
|
@@ -213,11 +239,14 @@ public class ActivitiFromController {
|
|
List<FormPropertyBean> formPropertyList = new LinkedList<>();
|
|
List<FormPropertyBean> formPropertyList = new LinkedList<>();
|
|
for (Task t : taskList) {
|
|
for (Task t : taskList) {
|
|
String nextFlowTaskId = t.getId();
|
|
String nextFlowTaskId = t.getId();
|
|
- TaskFormData taskFormData = formService.getTaskFormData(nextFlowTaskId);
|
|
|
|
- List<FormProperty> formProperties = taskFormData.getFormProperties();
|
|
|
|
|
|
+ Object o = formService.getRenderedTaskForm(nextFlowTaskId);
|
|
log.info("userId:{},taskId:{},flowId:{},processDefinitionId:{}", t.getAssignee(), nextFlowTaskId, processInstanceId, processDefinitionId);
|
|
log.info("userId:{},taskId:{},flowId:{},processDefinitionId:{}", t.getAssignee(), nextFlowTaskId, processInstanceId, processDefinitionId);
|
|
- log.info("task formProperties:{}", JacksonUtil.parseJson(formProperties));
|
|
|
|
- formPropertyList.add(new FormPropertyBean(processInstanceId, nextFlowTaskId, formProperties));
|
|
|
|
|
|
+ if (Objects.nonNull(o)) {
|
|
|
|
+ log.info("task formProperties:{}", JacksonUtil.parseJson(o));
|
|
|
|
+ List<FlowFormWidgetResult> list = GsonUtil.fromJson(JacksonUtil.parseJson(o), new TypeToken<List<FlowFormWidgetResult>>() {
|
|
|
|
+ }.getType());
|
|
|
|
+ formPropertyList.add(new FormPropertyBean(processInstanceId, flowTaskId, t.getAssignee(), list));
|
|
|
|
+ }
|
|
varMap.put("formProperties", formPropertyList);
|
|
varMap.put("formProperties", formPropertyList);
|
|
}
|
|
}
|
|
}
|
|
}
|