java110-interface/src/main/java/com/java110/intf/common/IResourceEntryStoreInnerServiceSMO.java
@@ -64,4 +64,21 @@ */ @RequestMapping(value = "/complete", method = RequestMethod.GET) public boolean complete(@RequestBody ResourceOrderDto resourceOrderDto); /** * 查询用户任务数 * * @param user * @return */ @RequestMapping(value = "/getUserHistoryTaskCount", method = RequestMethod.POST) public long getUserHistoryTaskCount(@RequestBody AuditUser user); /** * 获取用户审批的任务 * * @param user 用户信息 */ @RequestMapping(value = "/getUserHistoryTasks", method = RequestMethod.POST) public List<PurchaseApplyDto> getUserHistoryTasks(@RequestBody AuditUser user); } java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeAuditUserConstant.java
@@ -34,6 +34,11 @@ public static final String LIST_AUDITORDERS = "auditUser.listAuditOrders"; /** * 查询 审核历史订单 */ public static final String LIST_AUDIT_HISTORY_ORDERS = "auditUser.listAuditHistoryOrders"; /** * 查询 审核投诉 */ public static final String LIST_AUDIT_COMPLAINTS = "auditUser.listAuditComplaints"; service-api/src/main/java/com/java110/api/listener/auditOrder/ListAuditHistoryOrdersListener.java
New file @@ -0,0 +1,119 @@ package com.java110.api.listener.auditOrder; import com.alibaba.fastjson.JSONObject; import com.java110.api.listener.AbstractServiceApiListener; import com.java110.core.annotation.Java110Listener; import com.java110.core.context.DataFlowContext; import com.java110.core.event.service.api.ServiceDataFlowEvent; import com.java110.dto.purchaseApply.PurchaseApplyDto; import com.java110.entity.audit.AuditUser; import com.java110.intf.common.IResourceEntryStoreInnerServiceSMO; import com.java110.utils.constant.ServiceCodeAuditUserConstant; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import com.java110.vo.api.resourceOrder.ApiResourceOrderDataVo; import com.java110.vo.api.resourceOrder.ApiResourceOrderVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import java.util.ArrayList; import java.util.List; /** * 查询审核订单侦听类 */ @Java110Listener("listAuditHistoryOrdersListener") public class ListAuditHistoryOrdersListener extends AbstractServiceApiListener { @Autowired private IResourceEntryStoreInnerServiceSMO resourceEntryStoreInnerServiceSMOImpl; @Override public String getServiceCode() { return ServiceCodeAuditUserConstant.LIST_AUDIT_HISTORY_ORDERS; } @Override public HttpMethod getHttpMethod() { return HttpMethod.GET; } @Override public int getOrder() { return DEFAULT_ORDER; } public IResourceEntryStoreInnerServiceSMO getResourceEntryStoreInnerServiceSMOImpl() { return resourceEntryStoreInnerServiceSMOImpl; } public void setResourceEntryStoreInnerServiceSMOImpl(IResourceEntryStoreInnerServiceSMO resourceEntryStoreInnerServiceSMOImpl) { this.resourceEntryStoreInnerServiceSMOImpl = resourceEntryStoreInnerServiceSMOImpl; } @Override protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) { Assert.hasKeyAndValue(reqJson, "storeId", "必填,请填写商户ID"); Assert.hasKeyAndValue(reqJson, "userId", "必填,请填写用户ID"); Assert.hasKeyAndValue(reqJson, "row", "必填,请填写每页显示数"); Assert.hasKeyAndValue(reqJson, "page", "必填,请填写页数"); super.validatePageInfo(reqJson); } @Override protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) { AuditUser auditUser = new AuditUser(); auditUser.setUserId(reqJson.getString("userId")); auditUser.setPage(reqJson.getInteger("page")); auditUser.setRow(reqJson.getInteger("row")); auditUser.setStoreId(reqJson.getString("storeId")); long count = resourceEntryStoreInnerServiceSMOImpl.getUserHistoryTaskCount(auditUser); List<ApiResourceOrderDataVo> auditOrders = null; if (count > 0) { List<PurchaseApplyDto> purchaseApplyDtos = resourceEntryStoreInnerServiceSMOImpl.getUserHistoryTasks(auditUser); auditOrders = BeanConvertUtil.covertBeanList(purchaseApplyDtos, ApiResourceOrderDataVo.class); for (ApiResourceOrderDataVo apiResourceOrderDataVo : auditOrders) { switch (apiResourceOrderDataVo.getState()) { case "1000": apiResourceOrderDataVo.setStateName("待审核"); break; case "1001": apiResourceOrderDataVo.setStateName("审核中"); break; case "1002": apiResourceOrderDataVo.setStateName("已审核"); break; } if (apiResourceOrderDataVo.getResOrderType().equals("10000")) { apiResourceOrderDataVo.setResOrderTypeName("采购申请"); } else { apiResourceOrderDataVo.setResOrderTypeName("出库申请"); } } } else { auditOrders = new ArrayList<>(); } ApiResourceOrderVo apiResourceOrderVo = new ApiResourceOrderVo(); apiResourceOrderVo.setTotal((int) count); apiResourceOrderVo.setRecords((int) Math.ceil((double) count / (double) reqJson.getInteger("row"))); apiResourceOrderVo.setResourceOrders(auditOrders); ResponseEntity<String> responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(apiResourceOrderVo), HttpStatus.OK); context.setResponseEntity(responseEntity); } } service-common/src/main/java/com/java110/common/smo/impl/PurchaseApplyUserInnerServiceSMOImpl.java
@@ -99,7 +99,7 @@ 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())) { service-common/src/main/java/com/java110/common/smo/impl/ResourceEntryStoreInnerServiceSMOImpl.java
@@ -2,19 +2,24 @@ import com.java110.core.base.smo.BaseServiceSMO; import com.java110.dto.workflow.WorkflowDto; import com.java110.intf.common.IResourceEntryStoreInnerServiceSMO; import com.java110.intf.common.IWorkflowInnerServiceSMO; import com.java110.intf.store.IPurchaseApplyInnerServiceSMO; import com.java110.dto.PageDto; import com.java110.dto.purchaseApply.PurchaseApplyDto; import com.java110.dto.resourceStore.ResourceOrderDto; import com.java110.dto.workflow.WorkflowDto; import com.java110.entity.audit.AuditUser; import com.java110.intf.common.IResourceEntryStoreInnerServiceSMO; import com.java110.intf.common.IWorkflowInnerServiceSMO; import com.java110.intf.store.IPurchaseApplyInnerServiceSMO; import com.java110.utils.util.Assert; 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.engine.history.HistoricProcessInstance; import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.history.HistoricTaskInstanceQuery; import org.activiti.engine.query.Query; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.activiti.engine.task.TaskQuery; @@ -92,12 +97,12 @@ query.taskAssignee(user.getUserId()); query.orderByTaskCreateTime().desc(); List<Task> list = null; if(user.getPage() >=1){ user.setPage(user.getPage()-1); if (user.getPage() >= 1) { user.setPage(user.getPage() - 1); } if (user.getPage() != PageDto.DEFAULT_PAGE) { list = query.listPage(user.getPage(), user.getRow()); }else{ } else { list = query.list(); } @@ -173,7 +178,6 @@ } private String getWorkflowDto(String storeId) { //开启流程 //WorkflowDto.DEFAULT_PROCESS + workflowDto.getFlowId() @@ -181,8 +185,7 @@ workflowDto.setFlowType(WorkflowDto.FLOW_TYPE_PURCHASE); 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())) { @@ -191,4 +194,80 @@ return WorkflowDto.DEFAULT_PROCESS + tmpWorkflowDto.getFlowId(); } /** * 查询用户任务数 * * @param user * @return */ public long getUserHistoryTaskCount(@RequestBody AuditUser user) { HistoryService historyService = processEngine.getHistoryService(); // Query query = historyService.createHistoricTaskInstanceQuery() // .processDefinitionKey("complaint") // .taskAssignee(user.getUserId()); HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery() .processDefinitionKey(getWorkflowDto(user.getStoreId())) .taskAssignee(user.getUserId()); if (!StringUtil.isEmpty(user.getAuditLink()) && "START".equals(user.getAuditLink())) { historicTaskInstanceQuery.taskName("complaint"); } else if (!StringUtil.isEmpty(user.getAuditLink()) && "AUDIT".equals(user.getAuditLink())) { historicTaskInstanceQuery.taskName("complaitDealUser"); } Query query = historicTaskInstanceQuery; return query.count(); } /** * 获取用户审批的任务 * * @param user 用户信息 */ public List<PurchaseApplyDto> getUserHistoryTasks(@RequestBody AuditUser user) { HistoryService historyService = processEngine.getHistoryService(); HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery() .processDefinitionKey(getWorkflowDto(user.getStoreId())) .taskAssignee(user.getUserId()); // if (!StringUtil.isEmpty(user.getAuditLink()) && "START".equals(user.getAuditLink())) { // historicTaskInstanceQuery.taskName("complaint"); // } else if (!StringUtil.isEmpty(user.getAuditLink()) && "AUDIT".equals(user.getAuditLink())) { // historicTaskInstanceQuery.taskName("complaitDealUser"); // } Query query = historicTaskInstanceQuery.orderByHistoricTaskInstanceStartTime().desc(); List<HistoricTaskInstance> list = null; if (user.getPage() != PageDto.DEFAULT_PAGE) { list = query.listPage((user.getPage() - 1) * user.getRow(), user.getRow()); } else { list = query.list(); } List<String> applyOrderIds = new ArrayList<>(); Map<String, String> taskBusinessKeyMap = new HashMap<>(); for (HistoricTaskInstance task : list) { String processInstanceId = task.getProcessInstanceId(); //3.使用流程实例,查询 HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); //4.使用流程实例对象获取BusinessKey String business_key = pi.getBusinessKey(); applyOrderIds.add(business_key); taskBusinessKeyMap.put(business_key, task.getId()); } //查询 投诉信息 PurchaseApplyDto purchaseApplyDto = new PurchaseApplyDto(); purchaseApplyDto.setStoreId(user.getStoreId()); purchaseApplyDto.setApplyOrderIds(applyOrderIds.toArray(new String[applyOrderIds.size()])); List<PurchaseApplyDto> tmpPurchaseApplyDtos = purchaseApplyInnerServiceSMOImpl.queryPurchaseApplyAndDetails(purchaseApplyDto); for (PurchaseApplyDto tmpPurchaseApplyDto : tmpPurchaseApplyDtos) { tmpPurchaseApplyDto.setTaskId(taskBusinessKeyMap.get(tmpPurchaseApplyDto.getApplyOrderId())); } return tmpPurchaseApplyDtos; } }