package com.java110.common.smo.impl; import com.java110.core.base.smo.BaseServiceSMO; import com.java110.core.smo.common.IResourceEntryStoreInnerServiceSMO; import com.java110.core.smo.store.IPurchaseApplyInnerServiceSMO; import com.java110.dto.PageDto; import com.java110.dto.purchaseApply.PurchaseApplyDto; import com.java110.dto.resourceStore.ResourceOrderDto; import com.java110.entity.audit.AuditUser; import org.activiti.engine.ProcessEngine; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.activiti.engine.task.TaskQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; //@Service("resourceEntryStoreSMOImpl") @RestController public class ResourceEntryStoreInnerServiceSMOImpl extends BaseServiceSMO implements IResourceEntryStoreInnerServiceSMO { @Autowired private ProcessEngine processEngine; @Autowired private RuntimeService runtimeService; @Autowired private TaskService taskService; @Autowired private IPurchaseApplyInnerServiceSMO purchaseApplyInnerServiceSMOImpl; /** * 启动流程 * * @return */ public ResourceOrderDto startProcess(@RequestBody ResourceOrderDto resourceOrderDto) { //将信息加入map,以便传入流程中 Map variables = new HashMap(); variables.put("resourceOrderDto", resourceOrderDto); //开启流程 ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("resourceEntry", variables); //将得到的实例流程id值赋给之前设置的变量 String processInstanceId = processInstance.getId(); // System.out.println("流程开启成功.......实例流程id:" + processInstanceId); resourceOrderDto.setProcessInstanceId(processInstanceId); return resourceOrderDto; } /** * 查询用户任务数 * * @param user * @return */ public long getUserTaskCount(@RequestBody AuditUser user) { TaskService taskService = processEngine.getTaskService(); TaskQuery query = taskService.createTaskQuery().processDefinitionKey("resourceEntry"); query.taskAssignee(user.getUserId()); return query.count(); } /** * 获取用户任务 * * @param user 用户信息 */ public List getUserTasks(@RequestBody AuditUser user) { TaskService taskService = processEngine.getTaskService(); TaskQuery query = taskService.createTaskQuery().processDefinitionKey("resourceEntry"); query.taskAssignee(user.getUserId()); query.orderByTaskCreateTime().desc(); List list = null; if(user.getPage() >=1){ user.setPage(user.getPage()-1); } if (user.getPage() != PageDto.DEFAULT_PAGE) { list = query.listPage(user.getPage(), user.getRow()); }else{ list = query.list(); } // List purchaseApplyDtos = new ArrayList<>(); // // for (Task task : list) { // String id = task.getId(); // //System.out.println("tasks:" + JSONObject.toJSONString(task)); // PurchaseApplyDto purchaseApplyDto = (PurchaseApplyDto) taskService.getVariable(id, "purchaseApplyDto"); // purchaseApplyDto.setTaskId(id); // purchaseApplyDto.setProcessInstanceId(task.getProcessInstanceId()); // purchaseApplyDtos.add(purchaseApplyDto); // } // return purchaseApplyDtos; List applyOrderIds = new ArrayList<>(); Map taskBusinessKeyMap = new HashMap<>(); for (Task task : list) { String processInstanceId = task.getProcessInstanceId(); //3.使用流程实例,查询 ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); //4.使用流程实例对象获取BusinessKey String business_key = pi.getBusinessKey(); applyOrderIds.add(business_key); taskBusinessKeyMap.put(business_key, task.getId()); } if (applyOrderIds == null || applyOrderIds.size() == 0) { return new ArrayList<>(); } //查询 投诉信息 PurchaseApplyDto purchaseApplyDto = new PurchaseApplyDto(); purchaseApplyDto.setStoreId(user.getStoreId()); purchaseApplyDto.setApplyOrderIds(applyOrderIds.toArray(new String[applyOrderIds.size()])); List tmpPurchaseApplyDtos = purchaseApplyInnerServiceSMOImpl.queryPurchaseApplyAndDetails(purchaseApplyDto); for (PurchaseApplyDto tmpPurchaseApplyDto : tmpPurchaseApplyDtos) { tmpPurchaseApplyDto.setTaskId(taskBusinessKeyMap.get(tmpPurchaseApplyDto.getApplyOrderId())); } return tmpPurchaseApplyDtos; } public boolean agreeCompleteTask(@RequestBody ResourceOrderDto resourceOrderDto) { TaskService taskService = processEngine.getTaskService(); Map variables = new HashMap(); variables.put("auditCode", resourceOrderDto.getAuditCode()); taskService.complete(resourceOrderDto.getTaskId(), variables); return true; } public boolean refuteCompleteTask(@RequestBody ResourceOrderDto resourceOrderDto) { TaskService taskService = processEngine.getTaskService(); Map variables = new HashMap(); variables.put("auditCode", resourceOrderDto.getAuditCode()); taskService.complete(resourceOrderDto.getTaskId(), variables); return true; } /** * 审核 当前任务 * * @param resourceOrderDto 资源订单 * @return */ public boolean complete(@RequestBody ResourceOrderDto resourceOrderDto) { TaskService taskService = processEngine.getTaskService(); taskService.complete(resourceOrderDto.getTaskId()); return true; } }