public List<Map<String, String>> doStartFlow(String key, Long[] ids) throws Exception { // 声明返回的信息 List<Map<String, String>> returnValue = new ArrayList<Map<String, String>>(); Map<String, String> returnMap; // 循环Id数组 for (Long id : ids) { returnMap = new HashMap<String, String>(); Case4InfractBusiness cib = this.caseBusinessDao.load(id); // 声明变量 Map<String, Object> variables = new HashMap<String, Object>(); // 设置任务能够完成办理的条件控制值 车队长任务 variables.put("completeTaskCodition", "t020MotorcadeLeaderCheck_s"); // 发起流程 String procInstId = this.workflowService.startFlowByKey(key, this.returnParam(cib, variables)); // 完成第一步办理 Task task = this.taskService.createTaskQuery().processInstanceId(procInstId).singleResult(); this.workflowService.completeTask(task.getId()); // 同步附件到第一个任务 this.syscAttach(cib, procInstId, task.getId()); // 保存流程与营运违章信息的关系 WorkflowModuleRelation workflowModuleRelation = new WorkflowModuleRelation(); workflowModuleRelation.setMid(id); workflowModuleRelation.setPid(procInstId); workflowModuleRelation.setMtype(Case4InfractBusiness.class.getSimpleName()); this.workflowModuleRelationService.save(workflowModuleRelation); // 将状态更改为处理中 cib.setStatus(CaseBase.STATUS_HANDLING); this.caseBusinessDao.save(cib); // 记录发起的流程信息 returnMap.put("moduleId", String.valueOf(id)); returnMap.put("procInstId", procInstId); returnValue.add(returnMap); } return returnValue; }
/** * 结案操作 * * @param fromBusinessId * @param closeDate * @return */ public Case4InfractBusiness doCloseFile(Long fromBusinessId, Calendar closeDate) { Case4InfractBusiness business = this.caseBusinessDao.load(fromBusinessId); if (business == null) throw new CoreException("要处理的营运违章已不存在!businessId=" + fromBusinessId); // 更新营运违章相关信息 business.setStatus(CaseBase.STATUS_CLOSED); // 设置创建人信息和最后修改人信息 SystemContext context = SystemContextHolder.get(); business.setModifier(context.getUserHistory()); business.setModifiedDate(Calendar.getInstance()); // 设置结案人,结案日期 business.setCloserId(context.getUserHistory().getId()); business.setCloserName(context.getUserHistory().getName()); business.setCloseDate(closeDate); return this.caseBusinessDao.save(business); }