| | |
| | | |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.java110.core.annotation.Java110Transactional; |
| | | import com.java110.core.base.smo.BaseServiceSMO; |
| | | import com.java110.core.factory.GenerateCodeFactory; |
| | | import com.java110.dto.PageDto; |
| | | import com.java110.dto.auditMessage.AuditMessageDto; |
| | | import com.java110.dto.oaWorkflowData.OaWorkflowDataDto; |
| | | import com.java110.dto.user.UserDto; |
| | | import com.java110.dto.workflow.WorkflowDto; |
| | | import com.java110.entity.audit.AuditUser; |
| | | import com.java110.intf.common.IOaWorkflowUserInnerServiceSMO; |
| | | import com.java110.intf.common.IWorkflowInnerServiceSMO; |
| | | import com.java110.intf.oa.IOaWorkflowDataInnerServiceSMO; |
| | | import com.java110.intf.user.IUserInnerServiceSMO; |
| | | import com.java110.po.oaWorkflowData.OaWorkflowDataPo; |
| | | import com.java110.utils.util.Assert; |
| | | import com.java110.utils.util.DateUtil; |
| | | import com.java110.utils.util.StringUtil; |
| | | import org.activiti.bpmn.model.*; |
| | | import org.activiti.engine.*; |
| | | import org.activiti.engine.history.HistoricActivityInstance; |
| | | import org.activiti.engine.history.HistoricProcessInstance; |
| | | import org.activiti.engine.history.HistoricTaskInstance; |
| | | import org.activiti.engine.history.HistoricTaskInstanceQuery; |
| | | import org.activiti.engine.impl.identity.Authentication; |
| | | import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity; |
| | | import org.activiti.engine.query.Query; |
| | | import org.activiti.engine.runtime.Execution; |
| | | import org.activiti.engine.runtime.ProcessInstance; |
| | | import org.activiti.engine.task.Comment; |
| | | import org.activiti.engine.task.Task; |
| | | import org.activiti.engine.task.TaskQuery; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import com.java110.core.log.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | |
| | | @Autowired |
| | | private RepositoryService repositoryService; |
| | | |
| | | @Autowired |
| | | private IOaWorkflowDataInnerServiceSMO oaWorkflowDataInnerServiceSMOImpl; |
| | | |
| | | |
| | | /** |
| | | * 启动流程 |
| | |
| | | //variables.put("reqJson", reqJson); |
| | | variables.put("startUserId", reqJson.getString("createUserId")); |
| | | variables.put("nextUserId", reqJson.getString("createUserId")); |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserId(reqJson.getString("createUserId")); |
| | | List<UserDto> users = userInnerServiceSMOImpl.getUsers(userDto); |
| | | |
| | | Assert.listOnlyOne(users, "用户不存在"); |
| | | |
| | | ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(getWorkflowDto(reqJson.getString("flowId")), reqJson.getString("id"), variables); |
| | | //将得到的实例流程id值赋给之前设置的变量 |
| | | String processInstanceId = processInstance.getId(); |
| | |
| | | reqJson.put("processInstanceId", processInstanceId); |
| | | //第一个节点自动提交 |
| | | //autoFinishFirstTask(reqJson); |
| | | //刷入扩展表 |
| | | OaWorkflowDataPo oaWorkflowDataPo = null; |
| | | oaWorkflowDataPo = new OaWorkflowDataPo(); |
| | | oaWorkflowDataPo.setBusinessKey(reqJson.getString("id")); |
| | | oaWorkflowDataPo.setFlowId(reqJson.getString("flowId")); |
| | | oaWorkflowDataPo.setContext(reqJson.getString("auditMessage")); |
| | | oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId)); |
| | | oaWorkflowDataPo.setEvent(OaWorkflowDataDto.EVENT_COMMIT); |
| | | oaWorkflowDataPo.setPreDataId("-1"); |
| | | oaWorkflowDataPo.setStaffId(reqJson.getString("createUserId")); |
| | | oaWorkflowDataPo.setStaffName(users.get(0).getName()); |
| | | oaWorkflowDataPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | oaWorkflowDataPo.setStoreId(reqJson.getString("storeId")); |
| | | oaWorkflowDataInnerServiceSMOImpl.saveOaWorkflowData(oaWorkflowDataPo); |
| | | return reqJson; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | @Java110Transactional |
| | | public boolean completeTask(@RequestBody JSONObject reqJson) { |
| | | TaskService taskService = processEngine.getTaskService(); |
| | | Task task = taskService.createTaskQuery().taskId(reqJson.getString("taskId")).singleResult(); |
| | | if (task == null) { |
| | | throw new IllegalArgumentException("任务已处理"); |
| | | } |
| | | |
| | | //判断是否为结束流程 |
| | | if ("1500".equals(reqJson.getString("auditCode"))) { |
| | | doTaskFinish(reqJson); |
| | | } else { |
| | | //扩展 工作流功能 |
| | | doTaskAuditAgree(reqJson); |
| | | } |
| | | |
| | | String processInstanceId = task.getProcessInstanceId(); |
| | | Authentication.setAuthenticatedUserId(reqJson.getString("nextUserId")); |
| | | taskService.addComment(reqJson.getString("taskId"), processInstanceId, reqJson.getString("auditMessage")); |
| | | Map<String, Object> variables = new HashMap<String, Object>(); |
| | | variables.put("nextUserId", reqJson.getString("nextUserId")); |
| | | //variables.put("startUserId", reqJson.getString("startUserId")); |
| | | variables.put("auditCode", reqJson.getString("auditCode")); |
| | | taskService.complete(reqJson.getString("taskId"), variables); |
| | | |
| | | ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); |
| | | if (pi == null) { |
| | | return true; |
| | |
| | | return false; |
| | | } |
| | | |
| | | private void doTaskFinish(JSONObject reqJson) { |
| | | OaWorkflowDataDto oaWorkflowDataDto = new OaWorkflowDataDto(); |
| | | oaWorkflowDataDto.setStoreId(reqJson.getString("storeId")); |
| | | oaWorkflowDataDto.setBusinessKey(reqJson.getString("id")); |
| | | oaWorkflowDataDto.setPage(1); |
| | | oaWorkflowDataDto.setRow(1); |
| | | List<OaWorkflowDataDto> oaWorkflowDataDtos = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatas(oaWorkflowDataDto); |
| | | |
| | | if (oaWorkflowDataDtos == null || oaWorkflowDataDtos.size() < 1) { |
| | | return; |
| | | } |
| | | //修改 当前 为完成 |
| | | OaWorkflowDataPo oaWorkflowDataPo = new OaWorkflowDataPo(); |
| | | oaWorkflowDataPo.setDataId(oaWorkflowDataDtos.get(0).getDataId()); |
| | | oaWorkflowDataPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | oaWorkflowDataPo.setContext(reqJson.getString("auditMessage")); |
| | | oaWorkflowDataInnerServiceSMOImpl.updateOaWorkflowData(oaWorkflowDataPo); |
| | | } |
| | | |
| | | /** |
| | | * 处理 审核状态 |
| | | * |
| | | * @param reqJson |
| | | */ |
| | | private void doTaskAuditAgree(JSONObject reqJson) { |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserId(reqJson.getString("nextUserId")); |
| | | List<UserDto> users = userInnerServiceSMOImpl.getUsers(userDto); |
| | | |
| | | Assert.listOnlyOne(users, "用户不存在"); |
| | | |
| | | String preDataId = "-1"; |
| | | //查询当前节点 |
| | | OaWorkflowDataDto oaWorkflowDataDto = new OaWorkflowDataDto(); |
| | | oaWorkflowDataDto.setStoreId(reqJson.getString("storeId")); |
| | | oaWorkflowDataDto.setBusinessKey(reqJson.getString("id")); |
| | | oaWorkflowDataDto.setPage(1); |
| | | oaWorkflowDataDto.setRow(1); |
| | | List<OaWorkflowDataDto> oaWorkflowDataDtos = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatas(oaWorkflowDataDto); |
| | | |
| | | OaWorkflowDataPo oaWorkflowDataPo = null; |
| | | if (oaWorkflowDataDtos == null || oaWorkflowDataDtos.size() < 1) { |
| | | oaWorkflowDataPo = new OaWorkflowDataPo(); |
| | | oaWorkflowDataPo.setBusinessKey(reqJson.getString("id")); |
| | | oaWorkflowDataPo.setFlowId(reqJson.getString("flowId")); |
| | | oaWorkflowDataPo.setContext(""); |
| | | oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId)); |
| | | oaWorkflowDataPo.setEvent(OaWorkflowDataDto.EVENT_COMMIT); |
| | | oaWorkflowDataPo.setPreDataId(preDataId); |
| | | oaWorkflowDataPo.setStaffId(reqJson.getString("nextUserId")); |
| | | oaWorkflowDataPo.setStaffName(users.get(0).getName()); |
| | | oaWorkflowDataPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | oaWorkflowDataPo.setStoreId(reqJson.getString("storeId")); |
| | | oaWorkflowDataInnerServiceSMOImpl.saveOaWorkflowData(oaWorkflowDataPo); |
| | | return; |
| | | } |
| | | //修改 当前 为完成 |
| | | oaWorkflowDataPo = new OaWorkflowDataPo(); |
| | | oaWorkflowDataPo.setDataId(oaWorkflowDataDtos.get(0).getDataId()); |
| | | oaWorkflowDataPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | oaWorkflowDataPo.setContext(reqJson.getString("auditMessage")); |
| | | oaWorkflowDataInnerServiceSMOImpl.updateOaWorkflowData(oaWorkflowDataPo); |
| | | |
| | | //如果为-1 不插入任务 |
| | | if ("-1".equals(reqJson.getString("nextUserId"))) { |
| | | return; |
| | | } |
| | | |
| | | oaWorkflowDataPo = new OaWorkflowDataPo(); |
| | | oaWorkflowDataPo.setBusinessKey(reqJson.getString("id")); |
| | | oaWorkflowDataPo.setFlowId(reqJson.getString("flowId")); |
| | | oaWorkflowDataPo.setContext(""); |
| | | oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId)); |
| | | oaWorkflowDataPo.setEvent(OaWorkflowDataDto.EVENT_COMMIT); |
| | | oaWorkflowDataPo.setPreDataId(oaWorkflowDataDtos.get(0).getDataId()); |
| | | oaWorkflowDataPo.setStaffId(reqJson.getString("nextUserId")); |
| | | oaWorkflowDataPo.setStaffName(users.get(0).getName()); |
| | | oaWorkflowDataPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | oaWorkflowDataPo.setStoreId(reqJson.getString("storeId")); |
| | | oaWorkflowDataInnerServiceSMOImpl.saveOaWorkflowData(oaWorkflowDataPo); |
| | | } |
| | | |
| | | /** |
| | | * 转办 |
| | | * |
| | | * @param reqJson |
| | | * @return |
| | | */ |
| | | @Java110Transactional |
| | | public boolean changeTaskToOtherUser(@RequestBody JSONObject reqJson) { |
| | | |
| | | //查询当前节点 |
| | | OaWorkflowDataDto oaWorkflowDataDto = new OaWorkflowDataDto(); |
| | | oaWorkflowDataDto.setStoreId(reqJson.getString("storeId")); |
| | | oaWorkflowDataDto.setBusinessKey(reqJson.getString("id")); |
| | | oaWorkflowDataDto.setPage(1); |
| | | oaWorkflowDataDto.setRow(1); |
| | | List<OaWorkflowDataDto> oaWorkflowDataDtos = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatas(oaWorkflowDataDto); |
| | | |
| | | Assert.listOnlyOne(oaWorkflowDataDtos, "数据错误未包含上级数据"); |
| | | |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserId(reqJson.getString("nextUserId")); |
| | | List<UserDto> users = userInnerServiceSMOImpl.getUsers(userDto); |
| | | |
| | | Assert.listOnlyOne(users, "用户不存在"); |
| | | |
| | | TaskService taskService = processEngine.getTaskService(); |
| | | Task task = taskService.createTaskQuery().taskId(reqJson.getString("taskId")).singleResult(); |
| | | String processInstanceId = task.getProcessInstanceId(); |
| | | taskService.addComment(reqJson.getString("taskId"), processInstanceId, reqJson.getString("auditMessage")); |
| | | taskService.setAssignee(reqJson.getString("taskId"), reqJson.getString("nextUserId")); |
| | | //taskService.setOwner(reqJson.getString("taskId"), reqJson.getString("nextUserId")); |
| | | |
| | | OaWorkflowDataPo oaWorkflowDataPo = null; |
| | | //修改 当前 为完成 |
| | | oaWorkflowDataPo = new OaWorkflowDataPo(); |
| | | oaWorkflowDataPo.setDataId(oaWorkflowDataDtos.get(0).getDataId()); |
| | | oaWorkflowDataPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | oaWorkflowDataPo.setContext(reqJson.getString("auditMessage")); |
| | | oaWorkflowDataInnerServiceSMOImpl.updateOaWorkflowData(oaWorkflowDataPo); |
| | | |
| | | oaWorkflowDataPo = new OaWorkflowDataPo(); |
| | | oaWorkflowDataPo.setBusinessKey(reqJson.getString("id")); |
| | | oaWorkflowDataPo.setFlowId(reqJson.getString("flowId")); |
| | | oaWorkflowDataPo.setContext(""); |
| | | oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId)); |
| | | oaWorkflowDataPo.setEvent(OaWorkflowDataDto.EVENT_TRANSFER); |
| | | oaWorkflowDataPo.setPreDataId(oaWorkflowDataDtos.get(0).getDataId()); |
| | | oaWorkflowDataPo.setStaffId(reqJson.getString("nextUserId")); |
| | | oaWorkflowDataPo.setStaffName(users.get(0).getName()); |
| | | oaWorkflowDataPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | oaWorkflowDataPo.setStoreId(reqJson.getString("storeId")); |
| | | oaWorkflowDataInnerServiceSMOImpl.saveOaWorkflowData(oaWorkflowDataPo); |
| | | return true; |
| | | } |
| | | |
| | | @Java110Transactional |
| | | public boolean goBackTask(@RequestBody JSONObject reqJson) { |
| | | TaskService taskService = processEngine.getTaskService(); |
| | | Task task = taskService.createTaskQuery().taskId(reqJson.getString("taskId")).singleResult(); |
| | | if (task == null) { |
| | | throw new IllegalArgumentException("流程未启动或已执行完成,无法退回"); |
| | | throw new IllegalArgumentException("任务已处理"); |
| | | } |
| | | List<HistoricTaskInstance> htiList = historyService.createHistoricTaskInstanceQuery() |
| | | .processInstanceBusinessKey(reqJson.getString("id")) |
| | | .orderByTaskCreateTime() |
| | | .asc() |
| | | .list(); |
| | | String myTaskId = null; |
| | | HistoricTaskInstance myTask = null; |
| | | for (HistoricTaskInstance hti : htiList) { |
| | | if (reqJson.getString("curUserId").equals(hti.getAssignee())) { |
| | | myTaskId = hti.getId(); |
| | | myTask = hti; |
| | | break; |
| | | } |
| | | // //退回给提交者 |
| | | // if ("1400".equals(reqJson.getString("auditCode"))) { |
| | | // String processInstanceId = task.getProcessInstanceId(); |
| | | // Authentication.setAuthenticatedUserId(reqJson.getString("startUserId")); |
| | | // taskService.addComment(reqJson.getString("taskId"), processInstanceId, reqJson.getString("auditMessage")); |
| | | // Map<String, Object> variables = new HashMap<String, Object>(); |
| | | // variables.put("nextUserId", reqJson.getString("startUserId")); |
| | | // variables.put("auditCode", reqJson.getString("auditCode")); |
| | | // taskService.complete(reqJson.getString("taskId"), variables); |
| | | // |
| | | // return true; |
| | | // } |
| | | |
| | | String event = doTaskAuditUnAgree(reqJson); |
| | | if (OaWorkflowDataDto.EVENT_COMMIT.equals(event)) { //提交状态 |
| | | String processInstanceId = task.getProcessInstanceId(); |
| | | Authentication.setAuthenticatedUserId(reqJson.getString("nextUserId")); |
| | | taskService.addComment(reqJson.getString("taskId"), processInstanceId, reqJson.getString("auditMessage")); |
| | | Map<String, Object> variables = new HashMap<String, Object>(); |
| | | variables.put("nextUserId", reqJson.getString("nextUserId")); |
| | | variables.put("auditCode", reqJson.getString("auditCode")); |
| | | taskService.complete(reqJson.getString("taskId"), variables); |
| | | } else { //转单 |
| | | taskService.setAssignee(reqJson.getString("taskId"), reqJson.getString("nextUserId")); |
| | | } |
| | | if (null == myTaskId) { |
| | | throw new IllegalArgumentException("该任务非当前用户提交,无法退回"); |
| | | } |
| | | |
| | | String processDefinitionId = myTask.getProcessDefinitionId(); |
| | | ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).singleResult(); |
| | | BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); |
| | | |
| | | //变量 |
| | | // Map<String, VariableInstance> variables = runtimeService.getVariableInstances(currentTask.getExecutionId()); |
| | | String myActivityId = null; |
| | | List<HistoricActivityInstance> haiList = historyService.createHistoricActivityInstanceQuery() |
| | | .executionId(myTask.getExecutionId()).finished().list(); |
| | | for (HistoricActivityInstance hai : haiList) { |
| | | if (myTaskId.equals(hai.getTaskId())) { |
| | | myActivityId = hai.getActivityId(); |
| | | break; |
| | | } |
| | | } |
| | | FlowNode myFlowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(myActivityId); |
| | | |
| | | |
| | | Execution execution = runtimeService.createExecutionQuery().executionId(task.getExecutionId()).singleResult(); |
| | | String activityId = execution.getActivityId(); |
| | | logger.warn("------->> activityId:" + activityId); |
| | | FlowNode flowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(activityId); |
| | | |
| | | //记录原活动方向 |
| | | List<SequenceFlow> oriSequenceFlows = new ArrayList<SequenceFlow>(); |
| | | oriSequenceFlows.addAll(flowNode.getOutgoingFlows()); |
| | | |
| | | //清理活动方向 |
| | | flowNode.getOutgoingFlows().clear(); |
| | | //建立新方向 |
| | | List<SequenceFlow> newSequenceFlowList = new ArrayList<SequenceFlow>(); |
| | | SequenceFlow newSequenceFlow = new SequenceFlow(); |
| | | newSequenceFlow.setId("newSequenceFlowId"); |
| | | newSequenceFlow.setSourceFlowElement(flowNode); |
| | | newSequenceFlow.setTargetFlowElement(myFlowNode); |
| | | newSequenceFlowList.add(newSequenceFlow); |
| | | flowNode.setOutgoingFlows(newSequenceFlowList); |
| | | |
| | | Authentication.setAuthenticatedUserId(reqJson.getString("curUserId")); |
| | | taskService.addComment(task.getId(), task.getProcessInstanceId(), "退回," + reqJson.getString("auditMessage")); |
| | | |
| | | Map<String, Object> currentVariables = new HashMap<String, Object>(); |
| | | currentVariables.put("applier", reqJson.getString("curUserId")); |
| | | //完成任务 |
| | | taskService.complete(task.getId(), currentVariables); |
| | | //恢复原方向 |
| | | flowNode.setOutgoingFlows(oriSequenceFlows); |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * 审核不同意 退回 |
| | | * |
| | | * @param reqJson |
| | | */ |
| | | private String doTaskAuditUnAgree(JSONObject reqJson) { |
| | | //查询当前节点 |
| | | OaWorkflowDataDto oaWorkflowDataDto = new OaWorkflowDataDto(); |
| | | oaWorkflowDataDto.setStoreId(reqJson.getString("storeId")); |
| | | oaWorkflowDataDto.setBusinessKey(reqJson.getString("id")); |
| | | oaWorkflowDataDto.setPage(1); |
| | | oaWorkflowDataDto.setRow(1); |
| | | List<OaWorkflowDataDto> oaWorkflowDataDtos = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatas(oaWorkflowDataDto); |
| | | |
| | | Assert.listOnlyOne(oaWorkflowDataDtos, "没有上级处理人"); |
| | | |
| | | if ("-1".equals(oaWorkflowDataDtos.get(0).getPreDataId())) { |
| | | throw new IllegalArgumentException("没有上级处理人"); |
| | | } |
| | | |
| | | oaWorkflowDataDto = new OaWorkflowDataDto(); |
| | | oaWorkflowDataDto.setStoreId(reqJson.getString("storeId")); |
| | | oaWorkflowDataDto.setDataId(oaWorkflowDataDtos.get(0).getPreDataId()); |
| | | oaWorkflowDataDto.setPage(1); |
| | | oaWorkflowDataDto.setRow(1); |
| | | List<OaWorkflowDataDto> preOaWorkflowDataDtos = oaWorkflowDataInnerServiceSMOImpl.queryOaWorkflowDatas(oaWorkflowDataDto); |
| | | |
| | | //将现在节点处理为完成 |
| | | OaWorkflowDataPo oaWorkflowDataPo = new OaWorkflowDataPo(); |
| | | oaWorkflowDataPo.setDataId(oaWorkflowDataDtos.get(0).getDataId()); |
| | | oaWorkflowDataPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | oaWorkflowDataPo.setContext(reqJson.getString("auditMessage")); |
| | | oaWorkflowDataInnerServiceSMOImpl.updateOaWorkflowData(oaWorkflowDataPo); |
| | | |
| | | reqJson.put("nextUserId", preOaWorkflowDataDtos.get(0).getStaffId()); |
| | | if ("1400".equals(reqJson.getString("auditCode"))) { |
| | | reqJson.put("nextUserId", reqJson.getString("startUserId")); |
| | | } |
| | | oaWorkflowDataPo = new OaWorkflowDataPo(); |
| | | oaWorkflowDataPo.setBusinessKey(preOaWorkflowDataDtos.get(0).getBusinessKey()); |
| | | oaWorkflowDataPo.setFlowId(preOaWorkflowDataDtos.get(0).getFlowId()); |
| | | oaWorkflowDataPo.setContext(""); |
| | | oaWorkflowDataPo.setDataId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_dataId)); |
| | | oaWorkflowDataPo.setEvent(preOaWorkflowDataDtos.get(0).getEvent()); |
| | | oaWorkflowDataPo.setPreDataId(oaWorkflowDataDtos.get(0).getPreDataId()); |
| | | oaWorkflowDataPo.setStaffId(reqJson.getString("nextUserId")); |
| | | oaWorkflowDataPo.setStaffName(preOaWorkflowDataDtos.get(0).getStaffName()); |
| | | oaWorkflowDataPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | oaWorkflowDataPo.setStoreId(preOaWorkflowDataDtos.get(0).getStoreId()); |
| | | oaWorkflowDataInnerServiceSMOImpl.saveOaWorkflowData(oaWorkflowDataPo); |
| | | |
| | | return oaWorkflowDataDtos.get(0).getEvent(); |
| | | } |
| | | |
| | | public List<AuditMessageDto> getAuditMessage(@RequestBody JSONObject reqJson) { |
| | |
| | | //获取当前节点输出连线 |
| | | List<SequenceFlow> outgoingFlows = flowNode.getOutgoingFlows(); |
| | | JSONObject taskObj = null; |
| | | taskObj = new JSONObject(); |
| | | taskObj.put("assignee", "-1"); // 默认 不需要指定下一个处理人 表示结束 |
| | | boolean isReturn = false; |
| | | //遍历输出连线 |
| | | for (SequenceFlow outgoingFlow : outgoingFlows) { |
| | | taskObj = new JSONObject(); |
| | | //获取输出节点元素 |
| | | FlowElement targetFlowElement = outgoingFlow.getTargetFlowElement(); |
| | | isReturn = false; |
| | | //排除非用户任务接点 |
| | | if (targetFlowElement instanceof UserTask) { |
| | | //判断输出节点的el表达式 |
| | | Map vars = new HashMap(); |
| | | vars.put("auditCode","1200"); |
| | | vars.put("auditCode", "1200"); |
| | | if (isCondition(outgoingFlow.getConditionExpression(), vars)) { |
| | | //true 获取输出节点名称 |
| | | taskObj.put("back",outgoingFlow.getTargetFlowElement().getName()); |
| | | taskObj.put("back", outgoingFlow.getTargetFlowElement().getName()); |
| | | isReturn = true; |
| | | } |
| | | vars.put("auditCode","1400"); |
| | | vars.put("auditCode", "1400"); |
| | | if (isCondition(outgoingFlow.getConditionExpression(), vars)) { |
| | | //true 获取输出节点名称 |
| | | taskObj.put("backIndex",outgoingFlow.getTargetFlowElement().getName()); |
| | | taskObj.put("backIndex", outgoingFlow.getTargetFlowElement().getName()); |
| | | isReturn = true; |
| | | } |
| | | tasks.add(taskObj); |
| | | //结束 |
| | | vars.put("auditCode", "1500"); |
| | | if (isCondition(outgoingFlow.getConditionExpression(), vars)) { |
| | | //true 获取输出节点名称 |
| | | taskObj.put("exit", outgoingFlow.getTargetFlowElement().getName()); |
| | | isReturn = true; |
| | | } |
| | | if (!isReturn) { |
| | | String assignee = ((UserTask) targetFlowElement).getAssignee(); |
| | | if (!StringUtil.isEmpty(assignee) && assignee.indexOf("${") < 0) { |
| | | taskObj.put("assignee", assignee); // 下一节点处理人 |
| | | } |
| | | if ("${startUserId}".equals(assignee)) { |
| | | taskObj.put("assignee", reqJson.getString("startUserId")); // 开始人 |
| | | } |
| | | if ("${nextUserId}".equals(assignee)) { |
| | | taskObj.put("assignee", "-2"); // 需要前台指定 |
| | | } |
| | | taskObj.put("next", outgoingFlow.getTargetFlowElement().getName()); |
| | | } |
| | | } |
| | | //如果下一个为 结束节点 |
| | | if (targetFlowElement instanceof EndEvent) { |
| | | //true 获取输出节点名称 |
| | | taskObj.put("exit", "1"); |
| | | } |
| | | } |
| | | tasks.add(taskObj); |
| | | return tasks; |
| | | } |
| | | |
| | |
| | | String[] exprArr = expression.split("[{}$&]"); |
| | | for (String expr : exprArr) { |
| | | //是否包含键message |
| | | if (expr.contains("message")) { |
| | | if (!vars.containsKey("message")) { |
| | | if (expr.contains("auditCode")) { |
| | | if (!vars.containsKey("auditCode")) { |
| | | continue; |
| | | } |
| | | if (expr.contains("==")) { |
| | |
| | | if (valExpr.endsWith("'")) { |
| | | valExpr = valExpr.substring(0, valExpr.length() - 1); |
| | | } |
| | | if (primes.length == 2 && valExpr.equals(vars.get("message"))) { |
| | | if (primes.length == 2 && valExpr.equals(vars.get("auditCode"))) { |
| | | return true; |
| | | } |
| | | } |