dangsn
2023-07-30 8b6a2a8255d9da50b90a086222583ba1b4a77c99
待办任务增加显示项:上一步操作人以及处理意见
已修改3个文件
81 ■■■■■ 文件已修改
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/BladeFlow.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/constant/FlowEngineConstant.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-flow-api/src/main/java/com/vci/ubcs/flow/core/entity/BladeFlow.java
@@ -125,7 +125,7 @@
     */
    private String historyActivityId;
    /**
     * 历史活动流程
     * 历史活动名称
     */
    private String historyActivityName;
    /**
@@ -170,6 +170,21 @@
    private Map<String, Object> variables;
    /**
     * 历史活动处理人
     */
    private String historyActivityAssigne;
    /**
     * 历史活动处理人名称
     */
    private String historyActivityAssigneName;
    /**
     * 历史活动意见
     */
    private String historyActivityIdea;
    /**
     * 获取是否通过
     */
    public boolean isPass() {
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java
@@ -24,20 +24,21 @@
import com.vci.ubcs.flow.engine.constant.FlowEngineConstant;
import com.vci.ubcs.flow.engine.entity.FlowProcess;
import com.vci.ubcs.flow.engine.utils.FlowCache;
import com.vci.ubcs.system.user.cache.UserCache;
import com.vci.ubcs.system.user.entity.User;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.history.HistoricActivityInstance;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.history.HistoricProcessInstanceQuery;
import org.flowable.engine.runtime.Execution;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.flowable.engine.task.Comment;
import org.flowable.task.api.TaskQuery;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.Func;
@@ -45,6 +46,7 @@
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -323,6 +325,37 @@
            flow.setVariables(task.getProcessVariables());
            HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance(task.getProcessInstanceId());
            //获取上一任务信息
            HistoricActivityInstance historicActivityInstance = getPrevHistoricActivityInstance(task.getProcessInstanceId(),task.getId());
            flow.setHistoryActivityId(historicActivityInstance.getTaskId());
            flow.setHistoryActivityName(historicActivityInstance.getActivityName());
            //获取历史任务执行人
            if(historicActivityInstance.getActivityType().equals(FlowEngineConstant.USR_TASK)){
                User user = UserCache.getUser(TaskUtil.getUserId(historicActivityInstance.getAssignee()));
                flow.setHistoryActivityAssigne(historicActivityInstance.getAssignee());
                flow.setHistoryActivityAssigneName(user.getName());
                List<Comment> commentList = taskService.getTaskComments(historicActivityInstance.getTaskId());
                if (commentList.size() > 0) {
                    flow.setHistoryActivityIdea(commentList.get(0).getFullMessage());
                }
            }
            // 获取流程发起人名称
            if (FlowEngineConstant.START_EVENT.equals(historicActivityInstance.getActivityType())) {
                List<HistoricProcessInstance> processInstanceList = historyService.createHistoricProcessInstanceQuery()
                    .processInstanceId(task.getProcessInstanceId()).orderByProcessInstanceStartTime().asc().list();
                if (processInstanceList.size() > 0) {
                    if (StringUtil.isNotBlank(processInstanceList.get(0).getStartUserId())) {
                        String taskUser = processInstanceList.get(0).getStartUserId();
                        User user = UserCache.getUser(TaskUtil.getUserId(taskUser));
                        if (user != null) {
                            flow.setHistoryActivityAssigne(historicActivityInstance.getAssignee());
                            flow.setHistoryActivityAssigneName(user.getName());
                        }
                    }
                }
            }
            if (Func.isNotEmpty(historicProcessInstance)) {
                String[] businessKey = Func.toStrArray(StringPool.COLON, historicProcessInstance.getBusinessKey());
                flow.setBusinessTable(businessKey[0]);
@@ -342,6 +375,29 @@
        });
    }
    private HistoricActivityInstance getPrevHistoricActivityInstance(String processInstanceId, String taskDefinitionId) {
        List<HistoricActivityInstance> historicActivityInstanceList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId)
            .orderByHistoricActivityInstanceStartTime().asc()
            .orderByHistoricActivityInstanceEndTime().asc().list();
        List<HistoricActivityInstance> tempList = new ArrayList<>();
        int index = 0;
        for(HistoricActivityInstance historicActivityInstance : historicActivityInstanceList){
            if (StringUtils.equals(FlowEngineConstant.USR_TASK, historicActivityInstance.getActivityType())
                || FlowEngineConstant.START_EVENT.equals(historicActivityInstance.getActivityType())
                || FlowEngineConstant.END_EVENT.equals(historicActivityInstance.getActivityType())) {
                tempList.add(historicActivityInstance);
            }
            if(StringUtils.isNotEmpty(historicActivityInstance.getTaskId()) && historicActivityInstance.getTaskId().equals(taskDefinitionId)){
                index = tempList.indexOf(historicActivityInstance);
                break;
            }
        }
        if(index == 0){
            return tempList.get(0);
        }
        return tempList.get(index-1);
    }
    /**
     * 获取历史流程
     *
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/constant/FlowEngineConstant.java
@@ -49,4 +49,6 @@
    String END_EVENT = "endEvent";
    String USR_TASK = "userTask";
}