yangys
2025-09-09 3d558e1bb5091b76a6525f6fab015574e1755200
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/DoneQueryService.java
@@ -4,33 +4,19 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import org.flowable.engine.HistoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.history.HistoricProcessInstanceQuery;
import org.flowable.engine.task.Comment;
import org.flowable.task.api.Task;
import org.flowable.task.api.TaskInfoQuery;
import org.flowable.task.api.TaskQuery;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.flowable.task.api.history.HistoricTaskInstanceQuery;
import org.flowable.task.api.TaskInfo;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.flow.constants.FlowContants;
import org.springblade.mdm.flow.entity.FlowProgramFile;
import org.springblade.mdm.flow.entity.MdmFlowProcess;
import org.springblade.mdm.flow.mapper.DoneMapper;
import org.springblade.mdm.flow.util.MdmFlowCache;
import org.springblade.mdm.flow.vo.DoneQueryVO;
import org.springblade.mdm.flow.vo.FlowVO;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@@ -44,38 +30,41 @@
public class DoneQueryService {
   private final FlowProgramFileService flowProgramFileService;
   private final HistoryService historyService;
   private final IUserClient userClient;
   private final FlowCommonService flowCommonService;
   private final DoneMapper doneMapper;
   //
   public IPage<FlowVO> selectDonePage(IPage<FlowVO> page, String s, LocalDateTime createTimeBegin, LocalDateTime createTimeEnd, String keyword) {
   private final TaskService taskService;
   /**
    * 查询用户已办任务分页列表
    * @param queryVO 查询参数
    * @return
     */
   //public IPage<FlowVO> selectDonePage(IPage<FlowVO> page, LocalDateTime createTimeBegin, LocalDateTime createTimeEnd, String keyword) {
   public IPage<FlowVO> selectDonePage(DoneQueryVO queryVO) {
      //已办新查询
      String userId = "" + AuthUtil.getUserId();
      DoneQueryVO queryVO = new DoneQueryVO();
      queryVO.setSize(Long.valueOf(page.getSize()).intValue());
      queryVO.setCurrent(Long.valueOf(page.getCurrent()).intValue());
      queryVO.setUserId(userId);
      queryVO.setCreateTimeBegin(createTimeBegin);
      if(createTimeEnd != null){
         createTimeEnd = createTimeEnd.plusDays(1);
      if(queryVO.getCreateTimeEnd() != null){
         queryVO.setCreateTimeEnd(queryVO.getCreateTimeEnd().plusDays(1));
      }
      queryVO.setCreateTimeEnd(createTimeEnd);
      queryVO.setKeyword(keyword);
      IPage<FlowVO> pageDta = doneMapper.pageQuery(page,queryVO);
      IPage<FlowVO> pageDta = doneMapper.pageQuery(Condition.getPage(queryVO),queryVO);
      List<String> instIdList = pageDta.getRecords().stream().map(FlowVO::getProcessInstanceId).toList();
      if(!instIdList.isEmpty()) {
         List<HistoricProcessInstance> processList = getHistoricProcessInstances(instIdList);
         Map<String,Map<String,Object>> varmap = new HashMap<>();
         for(HistoricProcessInstance inst : processList) {
            varmap.put(inst.getId(),inst.getProcessVariables());
         }
         pageDta.getRecords().forEach(flowVO->{
            flowVO.setVariables(varmap.get(flowVO.getProcessInstanceId()));
            flowVO.setFile(this.getFileString(flowVO.getProcessInstanceId()));
            /*
            boolean active = flowCommonService.isProcessInstanceActive(flowVO.getProcessInstanceId());
            flowVO.setProcessIsFinished((Func.toStr(!active)));
             */
            if(!Func.toBoolean(flowVO.getProcessIsFinished())){
               flowVO.setCurrentTaskKeys(getCurrentTaskDefKeys(flowVO.getProcessInstanceId()));
            }
         });
      }
      return pageDta;
@@ -98,4 +87,13 @@
      return result;
   }
   String getCurrentTaskDefKeys(String processInstanceId) {
      List<Task> tasks = taskService.createTaskQuery()
         .processInstanceId(processInstanceId) // 根据流程实例ID查询
         .active() // 查询活动的任务
         .list();
      return tasks.stream().map(TaskInfo::getTaskDefinitionKey).collect(Collectors.joining(","));
   }
}