update 流程节点绑定审批人
This commit is contained in:
+36
-74
@@ -5,22 +5,22 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.aspect.annotation.DictPoint;
|
||||
import com.jero.common.constant.enums.LanguageEnum;
|
||||
import com.jero.common.util.MessageUtils;
|
||||
import com.jero.modules.activiti.entity.ProcessModelNode;
|
||||
import com.jero.modules.activiti.entity.ProcessNode;
|
||||
import com.jero.modules.activiti.entity.ProcessNodeOrigin;
|
||||
import com.jero.modules.activiti.service.LawsProcessNodeOriginService;
|
||||
import com.jero.modules.activiti.service.LawsProcessNodeService;
|
||||
import com.jero.modules.activiti.service.ProcessNodeLinkService;
|
||||
import com.jero.modules.activiti.service.ProcessNodeService;
|
||||
import com.jero.modules.activiti.service.ProcessModelNodeService;
|
||||
import com.jero.modules.activiti.service.ProcessService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import com.jero.modules.laws.common.constant.ResultCommon;
|
||||
import io.swagger.annotations.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.activiti.bpmn.converter.BpmnXMLConverter;
|
||||
import org.activiti.bpmn.model.BpmnModel;
|
||||
import org.activiti.editor.language.json.converter.BpmnJsonConverter;
|
||||
import org.activiti.engine.*;
|
||||
import org.activiti.engine.repository.Deployment;
|
||||
import org.activiti.engine.repository.ProcessDefinition;
|
||||
import org.activiti.engine.repository.ProcessDefinitionQuery;
|
||||
import org.activiti.engine.runtime.ProcessInstance;
|
||||
@@ -32,7 +32,6 @@ import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -57,53 +56,11 @@ public class ActivitiController {
|
||||
@Resource
|
||||
private TaskService taskService;
|
||||
@Resource
|
||||
private LawsProcessNodeOriginService processNodeOriginService;
|
||||
private ProcessNodeService processNodeService;
|
||||
@Resource
|
||||
private LawsProcessNodeService processNodeService;
|
||||
@ApiOperation(value="部署流程图")
|
||||
@GetMapping("/deploy")
|
||||
public Result<Map<String, String>> deploy(@RequestParam(value = "name", required = false) String name,
|
||||
@RequestParam(value = "classpathResource") String classpathResource,
|
||||
@RequestParam(value = "resourceName") String resourceName,
|
||||
@RequestPart(value = "files", required = false) MultipartFile file) {
|
||||
if (StringUtils.isBlank(name)) {
|
||||
//根据流程定义Key查询
|
||||
name = "出差申请流程";
|
||||
}
|
||||
|
||||
// 3、使用RepositoryService进行部署
|
||||
Deployment deployment = null;
|
||||
try {
|
||||
deployment = repositoryService.createDeployment()
|
||||
//.addClasspathResource("bpmn/diagram_1.bpmn20.xml") // 添加bpmn资源
|
||||
//.addClasspathResource("bpmn/business-trips.png") // 添加png资源
|
||||
//.addClasspathResource(classpathResource)
|
||||
.addInputStream(resourceName, file.getInputStream())
|
||||
.disableSchemaValidation()
|
||||
.key(name)
|
||||
.name(name)
|
||||
.deploy();
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// 4、输出部署信息
|
||||
Map<String, String> map = new HashMap<>();
|
||||
|
||||
map.put("流程部署id:", deployment.getId());
|
||||
map.put("流程部署名称:", deployment.getName());
|
||||
map.put("流程部署key:", deployment.getKey());
|
||||
|
||||
//创建一个流程定义查询
|
||||
ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
|
||||
processDefinitionQuery.deploymentId(deployment.getId());
|
||||
ProcessDefinition processDefinition = processDefinitionQuery.singleResult();
|
||||
String processDefinitionId = processDefinition.getId();
|
||||
map.put("流程定义Id:", processDefinitionId);
|
||||
|
||||
return Result.OK(map);
|
||||
}
|
||||
private ProcessModelNodeService modelNodeService;
|
||||
@Resource
|
||||
private ProcessNodeLinkService processNodeLinkService;
|
||||
|
||||
@ApiOperation(value="启动流程")
|
||||
@PostMapping("/start")
|
||||
@@ -114,7 +71,7 @@ public class ActivitiController {
|
||||
// 2、获取RunTimeService
|
||||
RuntimeService runtimeService = processEngine.getRuntimeService();
|
||||
|
||||
// 3、根据流程定义Id启动流程
|
||||
// 3、根据流程key启动流程
|
||||
ProcessInstance processInstance = runtimeService
|
||||
.startProcessInstanceByKey(key, map);
|
||||
String processDefinitionId = processInstance.getProcessDefinitionId();
|
||||
@@ -125,25 +82,6 @@ public class ActivitiController {
|
||||
map1.put("流程实例id:", processInstance.getId());
|
||||
map1.put("当前活动Id:", processInstance.getActivityId());
|
||||
|
||||
//从流程节点源表中保存一份流程节点信息到流程节点表
|
||||
LambdaQueryWrapper<ProcessNodeOrigin> processNodeOriginLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
processNodeOriginLambdaQueryWrapper.eq(ProcessNodeOrigin::getNodeType,"userTask")
|
||||
.orderByAsc(ProcessNodeOrigin::getSort);
|
||||
|
||||
List<ProcessNodeOrigin> processNodeOrigins = processNodeOriginService.list(processNodeOriginLambdaQueryWrapper);
|
||||
List<ProcessNode> processNodes = new ArrayList<>();
|
||||
for (ProcessNodeOrigin processNodeOrigin : processNodeOrigins) {
|
||||
ProcessNode processNode = new ProcessNode();
|
||||
BeanUtils.copyProperties(processNodeOrigin, processNode);
|
||||
processNode.setId(null);
|
||||
processNodes.add(processNode);
|
||||
}
|
||||
processNodeService.saveBatch(processNodes);
|
||||
for (ProcessNode processNode : processNodes) {
|
||||
if (processNode.getNodeName().equals("填写基本信息,在线编辑,分发其他起草人")) {
|
||||
//todo 关联关系
|
||||
}
|
||||
}
|
||||
String mainDrafter = map.get("mainDrafter").toString();
|
||||
|
||||
return Result.OK(map1);
|
||||
@@ -333,4 +271,28 @@ public class ActivitiController {
|
||||
LanguageEnum language = MessageUtils.getLanguage();
|
||||
return Result.OK(msg1 + "\n" + msg2);
|
||||
}
|
||||
@DictPoint
|
||||
@GetMapping("/getNodeList")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "processDefinitionId", value = "流程定义id"),
|
||||
@ApiImplicitParam(name = "processInstanceId", value = "流程实例id(这个参数会去查绑定好的用户)")
|
||||
})
|
||||
@ApiOperation("获得节点列表")
|
||||
public Result<List<ProcessNode>> getNodeList(String processDefinitionId,String processInstanceId) {
|
||||
//查询节点信息
|
||||
|
||||
List<ProcessNode> nodeList = processNodeService.getNodeList(processDefinitionId,processInstanceId);
|
||||
return Result.OK(nodeList);
|
||||
}
|
||||
|
||||
@PostMapping("/saveNodeUserLink")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "processDefinitionId", value = "流程定义id"),
|
||||
@ApiImplicitParam(name = "processInstanceId", value = "流程实例id")
|
||||
})
|
||||
@ApiOperation("保存节点用户关系")
|
||||
public Result<String> saveNodeUserLink(String processDefinitionId,String processInstanceId,@RequestBody Map<String,Object> map) {
|
||||
processNodeLinkService.saveNodeUserLink(processDefinitionId,processInstanceId,map);
|
||||
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
||||
}
|
||||
}
|
||||
|
||||
+6
-49
@@ -10,7 +10,7 @@ import com.jero.common.util.MessageUtils;
|
||||
import com.jero.modules.activiti.entity.ProcessModelNode;
|
||||
import com.jero.modules.activiti.listener.CompleteListener;
|
||||
import com.jero.modules.activiti.listener.CreateListener;
|
||||
import com.jero.modules.activiti.service.LawsProcessNodeOriginService;
|
||||
import com.jero.modules.activiti.service.ProcessNodeService;
|
||||
import com.jero.modules.activiti.service.ProcessModelNodeService;
|
||||
import com.jero.modules.activiti.util.CreatedTools;
|
||||
import com.jero.modules.activiti.vo.AddTaskVO;
|
||||
@@ -35,11 +35,8 @@ import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.xml.stream.XMLInputFactory;
|
||||
import javax.xml.stream.XMLStreamReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
@@ -61,7 +58,7 @@ public class ModelerController {
|
||||
@Autowired
|
||||
private ObjectMapper objectMapper;
|
||||
@Resource
|
||||
private LawsProcessNodeOriginService processNodeOriginService;
|
||||
private ProcessNodeService processNodeService;
|
||||
@Resource
|
||||
private ProcessModelNodeService processModelNodeService;
|
||||
//@Autowired
|
||||
@@ -102,12 +99,12 @@ public class ModelerController {
|
||||
ActivitiListener createListener = new ActivitiListener();
|
||||
createListener.setEvent(TaskListener.EVENTNAME_CREATE);
|
||||
createListener.setImplementationType("class");
|
||||
createListener.setImplementation(CreateListener.class.toString());
|
||||
createListener.setImplementation(CreateListener.class.getName());
|
||||
taskListeners.add(createListener);
|
||||
ActivitiListener completeListener = new ActivitiListener();
|
||||
completeListener.setEvent(TaskListener.EVENTNAME_COMPLETE);
|
||||
completeListener.setImplementationType("class");
|
||||
completeListener.setImplementation(CompleteListener.class.toString());
|
||||
completeListener.setImplementation(CompleteListener.class.getName());
|
||||
taskListeners.add(completeListener);
|
||||
userTask.setTaskListeners(taskListeners);
|
||||
}
|
||||
@@ -119,47 +116,6 @@ public class ModelerController {
|
||||
return Result.OK(modelId);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "新建模板")
|
||||
@ApiImplicitParam(name = "category_id", value = "类型id")
|
||||
@SuppressWarnings("deprecation")
|
||||
@GetMapping("/create")
|
||||
public void newModel(HttpServletRequest request, HttpServletResponse response)
|
||||
throws IOException {
|
||||
// 初始化一个空模型
|
||||
Model model = repositoryService.newModel();
|
||||
|
||||
// 设置一些默认信息
|
||||
String name = "";
|
||||
String description = "";
|
||||
int revision = 1;
|
||||
String key = "m_" + CreatedTools.getCreated();
|
||||
// 设置子系统
|
||||
//model.setTenantId("子系统1");
|
||||
//model.setCategory(category_id);
|
||||
|
||||
ObjectNode modelNode = objectMapper.createObjectNode();
|
||||
modelNode.put(ModelDataJsonConstants.MODEL_NAME, name);
|
||||
modelNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
|
||||
modelNode.put(ModelDataJsonConstants.MODEL_REVISION, revision);
|
||||
|
||||
model.setName(name);
|
||||
model.setKey(key);
|
||||
model.setMetaInfo(modelNode.toString());
|
||||
|
||||
repositoryService.saveModel(model);
|
||||
String id = model.getId();
|
||||
|
||||
// 完善ModelEditorSource
|
||||
ObjectNode editorNode = objectMapper.createObjectNode();
|
||||
editorNode.put("id", "canvas");
|
||||
editorNode.put("resourceId", "canvas");
|
||||
ObjectNode stencilSetNode = objectMapper.createObjectNode();
|
||||
stencilSetNode.put("namespace", "http://b3mn.org/stencilset/bpmn2.0#");
|
||||
editorNode.put("stencilset", stencilSetNode);
|
||||
repositoryService.addModelEditorSource(id, editorNode.toString().getBytes("utf-8"));
|
||||
response.sendRedirect(request.getContextPath() + "/modeler.html?modelId=" + id);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "模板列表")
|
||||
@ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "名称"),
|
||||
@ApiImplicitParam(name = "category", value = "类型") })
|
||||
@@ -281,7 +237,8 @@ public class ModelerController {
|
||||
processDefinitionQuery.deploymentId(deployment.getId());
|
||||
ProcessDefinition processDefinition = processDefinitionQuery.singleResult();
|
||||
String processDefinitionId = processDefinition.getId();
|
||||
processNodeOriginService.copyNodeFromModel(modelId,processDefinitionId);
|
||||
processNodeService.copyNodeFromModel(modelId,processDefinitionId);
|
||||
|
||||
// 4、输出部署信息
|
||||
Map<String, String> map = new HashMap<>();
|
||||
map.put("流程部署id:", deployment.getId());
|
||||
|
||||
Reference in New Issue
Block a user