Преглед изворни кода

优化 查询审批意见查看

java110 пре 5 година
родитељ
комит
f7b8f85ac3

+ 75 - 0
java110-bean/src/main/java/com/java110/dto/workflow/WorkflowAuditInfoDto.java

@@ -0,0 +1,75 @@
+package com.java110.dto.workflow;
+
+import java.io.Serializable;
+
+/**
+ * @ClassName WorkflowAuditInfoDto
+ * @Description TODO
+ * @Author wuxw
+ * @Date 2020/6/21 22:10
+ * @Version 1.0
+ * add by wuxw 2020/6/21
+ **/
+public class WorkflowAuditInfoDto implements Serializable {
+
+    private String businessKey;
+
+    private String auditName;
+
+    private String auditTime;
+
+    private String duration;
+
+    private String userId;
+
+    private String message;
+
+
+    public String getBusinessKey() {
+        return businessKey;
+    }
+
+    public void setBusinessKey(String businessKey) {
+        this.businessKey = businessKey;
+    }
+
+    public String getAuditName() {
+        return auditName;
+    }
+
+    public void setAuditName(String auditName) {
+        this.auditName = auditName;
+    }
+
+    public String getAuditTime() {
+        return auditTime;
+    }
+
+    public void setAuditTime(String auditTime) {
+        this.auditTime = auditTime;
+    }
+
+    public String getDuration() {
+        return duration;
+    }
+
+    public void setDuration(String duration) {
+        this.duration = duration;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+}

+ 13 - 3
java110-core/src/main/java/com/java110/core/smo/common/IWorkflowInnerServiceSMO.java

@@ -1,6 +1,7 @@
 package com.java110.core.smo.common;
 package com.java110.core.smo.common;
 
 
 import com.java110.core.feign.FeignConfiguration;
 import com.java110.core.feign.FeignConfiguration;
+import com.java110.dto.workflow.WorkflowAuditInfoDto;
 import com.java110.dto.workflow.WorkflowDto;
 import com.java110.dto.workflow.WorkflowDto;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -24,7 +25,6 @@ public interface IWorkflowInnerServiceSMO {
     /**
     /**
      * <p>查询小区楼信息</p>
      * <p>查询小区楼信息</p>
      *
      *
-     *
      * @param workflowDto 数据对象分享
      * @param workflowDto 数据对象分享
      * @return WorkflowDto 对象数据
      * @return WorkflowDto 对象数据
      */
      */
@@ -41,7 +41,8 @@ public interface IWorkflowInnerServiceSMO {
     int queryWorkflowsCount(@RequestBody WorkflowDto workflowDto);
     int queryWorkflowsCount(@RequestBody WorkflowDto workflowDto);
 
 
     @RequestMapping(value = "/getWorkflowImage", method = RequestMethod.POST)
     @RequestMapping(value = "/getWorkflowImage", method = RequestMethod.POST)
-    public String getWorkflowImage(@RequestBody WorkflowDto workflowDto);
+    String getWorkflowImage(@RequestBody WorkflowDto workflowDto);
+
     /**
     /**
      * @Date:2017/11/24
      * @Date:2017/11/24
      * @Description:创建流程并部署
      * @Description:创建流程并部署
@@ -50,5 +51,14 @@ public interface IWorkflowInnerServiceSMO {
     WorkflowDto addFlowDeployment(@RequestBody WorkflowDto workflowDto);
     WorkflowDto addFlowDeployment(@RequestBody WorkflowDto workflowDto);
 
 
     @RequestMapping(value = "/getRunWorkflowImage", method = RequestMethod.POST)
     @RequestMapping(value = "/getRunWorkflowImage", method = RequestMethod.POST)
-    public String getRunWorkflowImage(@RequestBody String businessKey);
+    String getRunWorkflowImage(@RequestBody String businessKey);
+
+    /**
+     * 查询审核历史
+     *
+     * @param workflowAuditInfoDto
+     * @return
+     */
+    @RequestMapping(value = "/queryWorkflowAuditHistory", method = RequestMethod.POST)
+    List<WorkflowAuditInfoDto> queryWorkflowAuditHistory(@RequestBody WorkflowAuditInfoDto workflowAuditInfoDto);
 }
 }

+ 6 - 0
java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeWorkflowConstant.java

@@ -38,4 +38,10 @@ public class ServiceCodeWorkflowConstant {
     public static final String LIST_RUN_WORKFLOW_IMAGE = "workflow.listRunWorkflowImage";
     public static final String LIST_RUN_WORKFLOW_IMAGE = "workflow.listRunWorkflowImage";
 
 
 
 
+    /**
+     * 查询 工作流 审批信息
+     */
+    public static final String LIST_WORKFLOW_AUDIT_INFO = "workflow.listWorkflowAuditInfo";
+
+
 }
 }

+ 67 - 0
service-api/src/main/java/com/java110/api/listener/workflow/ListWorkflowAuditInfoListener.java

@@ -0,0 +1,67 @@
+package com.java110.api.listener.workflow;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiPlusListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.core.smo.common.IWorkflowInnerServiceSMO;
+import com.java110.dto.workflow.WorkflowAuditInfoDto;
+import com.java110.utils.constant.ServiceCodeWorkflowConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+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.List;
+
+/**
+ * 查询小区侦听类
+ */
+@Java110Listener("listWorkflowAuditInfoListener")
+public class ListWorkflowAuditInfoListener extends AbstractServiceApiPlusListener {
+
+    @Autowired
+    private IWorkflowInnerServiceSMO workflowInnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeWorkflowConstant.LIST_WORKFLOW_AUDIT_INFO;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.GET;
+    }
+
+
+    public IWorkflowInnerServiceSMO getWorkflowInnerServiceSMOImpl() {
+        return workflowInnerServiceSMOImpl;
+    }
+
+    public void setWorkflowInnerServiceSMOImpl(IWorkflowInnerServiceSMO workflowInnerServiceSMOImpl) {
+        this.workflowInnerServiceSMOImpl = workflowInnerServiceSMOImpl;
+    }
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中请包含小区ID");
+        Assert.hasKeyAndValue(reqJson, "businessKey", "请求报文中未包含业务ID");
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+
+
+        WorkflowAuditInfoDto workflowAuditInfoDto = BeanConvertUtil.covertBean(reqJson, WorkflowAuditInfoDto.class);
+        List<WorkflowAuditInfoDto> workflowAuditInfoDtos = workflowInnerServiceSMOImpl.queryWorkflowAuditHistory(workflowAuditInfoDto);
+        ResultVo resultVo = new ResultVo(ResultVo.CODE_OK, ResultVo.MSG_OK, workflowAuditInfoDtos);
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+        context.setResponseEntity(responseEntity);
+
+
+    }
+}

+ 67 - 0
service-common/src/main/java/com/java110/common/smo/impl/WorkflowInnerServiceSMOImpl.java

@@ -7,11 +7,13 @@ import com.java110.core.smo.common.IWorkflowInnerServiceSMO;
 import com.java110.core.smo.user.IUserInnerServiceSMO;
 import com.java110.core.smo.user.IUserInnerServiceSMO;
 import com.java110.dto.PageDto;
 import com.java110.dto.PageDto;
 import com.java110.dto.user.UserDto;
 import com.java110.dto.user.UserDto;
+import com.java110.dto.workflow.WorkflowAuditInfoDto;
 import com.java110.dto.workflow.WorkflowDto;
 import com.java110.dto.workflow.WorkflowDto;
 import com.java110.dto.workflow.WorkflowStepDto;
 import com.java110.dto.workflow.WorkflowStepDto;
 import com.java110.dto.workflow.WorkflowStepStaffDto;
 import com.java110.dto.workflow.WorkflowStepStaffDto;
 import com.java110.utils.util.Base64Convert;
 import com.java110.utils.util.Base64Convert;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.StringUtil;
 import com.java110.utils.util.StringUtil;
 import org.activiti.bpmn.BpmnAutoLayout;
 import org.activiti.bpmn.BpmnAutoLayout;
 import org.activiti.bpmn.model.BpmnModel;
 import org.activiti.bpmn.model.BpmnModel;
@@ -28,11 +30,14 @@ import org.activiti.engine.ProcessEngine;
 import org.activiti.engine.ProcessEngines;
 import org.activiti.engine.ProcessEngines;
 import org.activiti.engine.RepositoryService;
 import org.activiti.engine.RepositoryService;
 import org.activiti.engine.RuntimeService;
 import org.activiti.engine.RuntimeService;
+import org.activiti.engine.TaskService;
 import org.activiti.engine.history.HistoricActivityInstance;
 import org.activiti.engine.history.HistoricActivityInstance;
+import org.activiti.engine.history.HistoricActivityInstanceQuery;
 import org.activiti.engine.history.HistoricProcessInstance;
 import org.activiti.engine.history.HistoricProcessInstance;
 import org.activiti.engine.impl.RepositoryServiceImpl;
 import org.activiti.engine.impl.RepositoryServiceImpl;
 import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
 import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
 import org.activiti.engine.repository.Deployment;
 import org.activiti.engine.repository.Deployment;
+import org.activiti.engine.task.Comment;
 import org.activiti.image.ProcessDiagramGenerator;
 import org.activiti.image.ProcessDiagramGenerator;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
@@ -44,6 +49,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStream;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -73,6 +79,9 @@ public class WorkflowInnerServiceSMOImpl extends BaseServiceSMO implements IWork
     @Autowired
     @Autowired
     private RepositoryService repositoryService;
     private RepositoryService repositoryService;
 
 
+    @Autowired
+    private TaskService taskService;
+
     @Override
     @Override
     public List<WorkflowDto> queryWorkflows(@RequestBody WorkflowDto workflowDto) {
     public List<WorkflowDto> queryWorkflows(@RequestBody WorkflowDto workflowDto) {
 
 
@@ -499,6 +508,64 @@ public class WorkflowInnerServiceSMOImpl extends BaseServiceSMO implements IWork
         return workflowServiceDaoImpl.queryWorkflowsCount(BeanConvertUtil.beanCovertMap(workflowDto));
         return workflowServiceDaoImpl.queryWorkflowsCount(BeanConvertUtil.beanCovertMap(workflowDto));
     }
     }
 
 
+    /**
+     * 查询审核历史
+     * @param workflowAuditInfoDto
+     * @return
+     */
+    public List<WorkflowAuditInfoDto> queryWorkflowAuditHistory(@RequestBody WorkflowAuditInfoDto workflowAuditInfoDto) {
+        //List<TaskBo> taskBoList = new ArrayList<TaskBo>();
+        HistoricProcessInstance hisProcessInstance = (HistoricProcessInstance) historyService
+                .createHistoricProcessInstanceQuery()
+                .processInstanceBusinessKey(workflowAuditInfoDto.getBusinessKey()).singleResult();
+        // 该流程实例的所有节点审批记录
+        List<HistoricActivityInstance> hisActInstList = getHisUserTaskActivityInstanceList(hisProcessInstance
+                .getId());
+        List<WorkflowAuditInfoDto> workflowAuditInfoDtos = new ArrayList<>();
+        WorkflowAuditInfoDto tmpWorkflowAuditInfoDto = null;
+        for (Iterator iterator = hisActInstList.iterator(); iterator.hasNext(); ) {
+            // 需要转换成HistoricActivityInstance
+            HistoricActivityInstance activityInstance = (HistoricActivityInstance) iterator
+                    .next();
+            if (activityInstance.getEndTime() == null) {
+                continue;
+            }
+            //如果还没结束则不放里面
+            List<Comment> comments = taskService.getTaskComments(activityInstance.getTaskId());
+            if (comments == null || comments.size() < 1) {
+                continue;
+            }
+            for (Comment comment : comments) {
+                tmpWorkflowAuditInfoDto = new WorkflowAuditInfoDto();
+                tmpWorkflowAuditInfoDto.setAuditName(activityInstance.getActivityName());
+                tmpWorkflowAuditInfoDto.setAuditTime(DateUtil.getFormatTimeString(activityInstance.getEndTime(), DateUtil.DATE_FORMATE_STRING_A));
+                tmpWorkflowAuditInfoDto.setDuration(activityInstance.getDurationInMillis() + "");
+                tmpWorkflowAuditInfoDto.setUserId(comment.getUserId());
+                tmpWorkflowAuditInfoDto.setMessage(comment.getFullMessage());
+                workflowAuditInfoDtos.add(tmpWorkflowAuditInfoDto);
+            }
+        }
+        return workflowAuditInfoDtos;
+    }
+
+    /**
+     * @param processInstanceId
+     * @return
+     * @CreateUser:xxxx
+     * @ReturnType:List
+     * @CreateDate:2014-6-25下午5:03:13
+     * @UseFor :在 ACT_HI_ACTINST 表中找到对应流程实例的userTask节点 不包括startEvent
+     */
+    private List<HistoricActivityInstance> getHisUserTaskActivityInstanceList(
+            String processInstanceId) {
+        List<HistoricActivityInstance> hisActivityInstanceList = ((HistoricActivityInstanceQuery) historyService
+                .createHistoricActivityInstanceQuery()
+                .processInstanceId(processInstanceId).activityType("userTask")
+                .finished().orderByHistoricActivityInstanceEndTime().desc())
+                .list();
+        return hisActivityInstanceList;
+    }
+
     public IWorkflowServiceDao getWorkflowServiceDaoImpl() {
     public IWorkflowServiceDao getWorkflowServiceDaoImpl() {
         return workflowServiceDaoImpl;
         return workflowServiceDaoImpl;
     }
     }