| | |
| | | import com.java110.core.base.smo.BaseServiceSMO; |
| | | import com.java110.dto.PageDto; |
| | | import com.java110.dto.contract.ContractDto; |
| | | import com.java110.dto.purchaseApply.PurchaseApplyDto; |
| | | import com.java110.dto.workflow.WorkflowDto; |
| | | import com.java110.entity.audit.AuditUser; |
| | | import com.java110.intf.common.IContractApplyUserInnerServiceSMO; |
| | | import com.java110.intf.common.IWorkflowInnerServiceSMO; |
| | | import com.java110.intf.store.IContractInnerServiceSMO; |
| | | import com.java110.po.contract.ContractPo; |
| | | import com.java110.utils.util.Assert; |
| | | import com.java110.utils.util.FlowUtil; |
| | | import com.java110.utils.util.StringUtil; |
| | | import org.activiti.engine.HistoryService; |
| | | import org.activiti.engine.ProcessEngine; |
| | | import org.activiti.engine.RuntimeService; |
| | | import org.activiti.engine.TaskService; |
| | | import org.activiti.bpmn.model.*; |
| | | import org.activiti.engine.*; |
| | | import org.activiti.engine.history.HistoricProcessInstance; |
| | | import org.activiti.engine.history.HistoricTaskInstance; |
| | | import org.activiti.engine.history.HistoricTaskInstanceQuery; |
| | |
| | | |
| | | @Autowired |
| | | private IWorkflowInnerServiceSMO workflowInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private RepositoryService repositoryService; |
| | | |
| | | /** |
| | | * 启动流程 |
| | |
| | | variables.put("contractDto", contractDto); |
| | | variables.put("userId", contractDto.getCurrentUserId()); |
| | | variables.put("startUserId", contractDto.getCurrentUserId()); |
| | | variables.put("nextUserId", contractDto.getNextUserId()); |
| | | //开启流程 |
| | | ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(getWorkflowDto(contractDto.getStoreId()),contractDto.getContractId(), variables); |
| | | ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(getWorkflowDto(contractDto.getStoreId()), contractDto.getContractId(), variables); |
| | | //将得到的实例流程id值赋给之前设置的变量 |
| | | String processInstanceId = processInstance.getId(); |
| | | // System.out.println("流程开启成功.......实例流程id:" + processInstanceId); |
| | |
| | | String business_key = pi.getBusinessKey(); |
| | | contractIds.add(business_key); |
| | | taskBusinessKeyMap.put(business_key, task.getId()); |
| | | |
| | | //计算是否有 审核按钮 |
| | | BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId()); |
| | | FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(task.getTaskDefinitionKey()); |
| | | //获取当前节点输出连线 |
| | | List<SequenceFlow> outgoingFlows = flowNode.getOutgoingFlows(); |
| | | //计算是否有结束按钮 |
| | | boolean isReturn; |
| | | for (SequenceFlow outgoingFlow : outgoingFlows) { |
| | | //获取输出节点元素 |
| | | FlowElement targetFlowElement = outgoingFlow.getTargetFlowElement(); |
| | | isReturn = false; |
| | | //排除非用户任务接点 |
| | | if (targetFlowElement instanceof UserTask) { |
| | | //判断输出节点的el表达式 |
| | | Map vars = new HashMap(); |
| | | vars.put("flag", "false"); // 1100 |
| | | if (FlowUtil.isCondition(outgoingFlow.getConditionExpression(), vars)) { |
| | | isReturn = true; |
| | | } |
| | | if (!isReturn) { |
| | | String assignee = ((UserTask) targetFlowElement).getAssignee(); |
| | | if (!StringUtil.isEmpty(assignee) && assignee.indexOf("${") < 0) { |
| | | taskBusinessKeyMap.put(business_key+"_hasAudit", task.getId()); |
| | | } |
| | | if ("${startUserId}".equals(assignee)) { |
| | | taskBusinessKeyMap.put(business_key+"_hasAudit", task.getId()); |
| | | } |
| | | if ("${nextUserId}".equals(assignee)) { |
| | | taskBusinessKeyMap.put(business_key+"_hasAudit", task.getId()); |
| | | } |
| | | } |
| | | } |
| | | //如果下一个为 结束节点 |
| | | if (targetFlowElement instanceof EndEvent) { |
| | | //true 获取输出节点名称 |
| | | taskBusinessKeyMap.put(business_key+"_hasEnd", task.getId()); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | if (contractIds == null || contractIds.size() == 0) { |
| | |
| | | |
| | | for (ContractDto tmpContractDto : tmpContractDtos) { |
| | | tmpContractDto.setTaskId(taskBusinessKeyMap.get(tmpContractDto.getContractId())); |
| | | tmpContractDto.setHasAudit(taskBusinessKeyMap.get(tmpContractDto.getContractId()+"_hasAudit")); |
| | | tmpContractDto.setHasEnd(taskBusinessKeyMap.get(tmpContractDto.getContractId()+"_hasEnd")); |
| | | } |
| | | return tmpContractDtos; |
| | | } |
| | |
| | | workflowDto.setFlowType(WorkflowDto.FLOW_TYPE_CONTRACT_APPLY); |
| | | workflowDto.setStoreId(storeId); |
| | | List<WorkflowDto> workflowDtos = workflowInnerServiceSMOImpl.queryWorkflows(workflowDto); |
| | | Assert.listOnlyOne(workflowDtos, "未找到 投诉建议流程或找到多条,请在物业账号系统管理下流程管理中配置流程"); |
| | | Assert.listOnlyOne(workflowDtos, "未找到 合同起草续签流程或找到多条,请在物业账号系统管理下流程管理中配置流程"); |
| | | |
| | | WorkflowDto tmpWorkflowDto = workflowDtos.get(0); |
| | | if (StringUtil.isEmpty(tmpWorkflowDto.getProcessDefinitionKey())) { |
| | |
| | | variables.put("currentUserId", contractDto.getCurrentUserId()); |
| | | variables.put("flag", "1200".equals(contractDto.getAuditCode()) ? "false" : "true"); |
| | | variables.put("startUserId", contractDto.getStartUserId()); |
| | | variables.put("nextUserId", contractDto.getNextUserId()); |
| | | taskService.complete(contractDto.getTaskId(), variables); |
| | | |
| | | ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); |
| | |
| | | return false; |
| | | } |
| | | |
| | | //删除任务 |
| | | public boolean deleteTask(@RequestBody ContractPo contractDto) { |
| | | TaskService taskService = processEngine.getTaskService(); |
| | | |
| | | TaskQuery query = taskService.createTaskQuery().processInstanceBusinessKey(contractDto.getContractId()); |
| | | query.orderByTaskCreateTime().desc(); |
| | | List<Task> list = query.list(); |
| | | |
| | | if (list == null || list.size() < 1) { |
| | | return true; |
| | | } |
| | | |
| | | for (Task task : list) { |
| | | String processInstanceId = task.getProcessInstanceId(); |
| | | //3.使用流程实例,查询 |
| | | runtimeService.deleteProcessInstance(processInstanceId, "取消合同"); |
| | | |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | |
| | | } |