yangys
2025-06-17 b4d30b66da35dcd6fe569bd2296a5cc6bbfaba6e
todo-list日期格式调整
已修改2个文件
58 ■■■■■ 文件已修改
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
@@ -19,9 +19,11 @@
import org.springblade.system.feign.IUserSearchClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@@ -42,7 +44,7 @@
    @GetMapping("todo-list")
    @ApiOperationSupport(order = 3)
    @Operation(summary = "待办任务", description = "传入流程信息")
    public R<IPage<FlowVO>> todoList(@Parameter(description = "关键字") String keyword, @Parameter(description = "创建时间开始") LocalDate createTimeBegin, @Parameter(description = "创建时间截止") LocalDate createTimeEnd, Query query) {
    public R<IPage<FlowVO>> todoList(@Parameter(description = "关键字") String keyword, @Parameter(description = "创建时间开始") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime createTimeBegin, @Parameter(description = "创建时间截止")  @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime createTimeEnd, Query query) {
        IPage<FlowVO> pages = businessService.selectTodoPage(Condition.getPage(query), createTimeBegin,createTimeEnd,keyword);
        return R.data(pages);
    }
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java
@@ -6,8 +6,10 @@
import org.flowable.engine.HistoryService;
import org.flowable.engine.TaskService;
import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.task.Comment;
import org.flowable.task.api.Task;
import org.flowable.task.api.TaskQuery;
import org.flowable.task.api.history.HistoricTaskInstance;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.*;
@@ -21,9 +23,12 @@
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * 流程业务实现类
@@ -38,7 +43,15 @@
    private final HistoryService historyService;
    private final IUserClient userClient;
    public IPage<FlowVO> selectTodoPage(IPage<FlowVO> page, LocalDate createTimeBegin, LocalDate createTimeEnd, String keyword) {
    /**
     * 查询我的流程(个人待办列表)
     * @param page
     * @param createTimeBegin
     * @param createTimeEnd
     * @param keyword
     * @return
     */
    public IPage<FlowVO> selectTodoPage(IPage<FlowVO> page, LocalDateTime createTimeBegin, LocalDateTime createTimeEnd, String keyword) {
        //String taskUser = TaskUtil.getTaskUser();
        String userId = "" + AuthUtil.getUserId();
        List<FlowVO> flowList = new LinkedList<>();
@@ -46,11 +59,13 @@
        TaskQuery todoQuery = taskService.createTaskQuery().taskAssignee(userId).active().includeProcessVariables();
        if (Func.isNotEmpty(createTimeBegin)) {
            todoQuery.taskCreatedAfter(DateUtil.toDate(createTimeBegin));
            //如果查询实例的开始时间:todoQuery.taskInProgressStartDueAfter()
            ////如果查询实例的开始时间:只能用以下这个,先查出实例id来
            //todoQuery.processInstanceIdIn()
        }
        if (Func.isNotEmpty(createTimeEnd)) {
            todoQuery.taskCreatedBefore(DateUtil.toDate(createTimeEnd));
            //todoQuery.taskInProgressStartTimeBefore(DateUtil.toDate(createTimeEnd));
        }
        if (Func.isNotEmpty(keyword)) {
            addKeywordCondition(todoQuery, keyword);
@@ -251,6 +266,7 @@
        if (bladeFlow.getEndDate() != null) {
            taskQuery.taskCreatedBefore(bladeFlow.getEndDate());
        }
        List<Task> tasks = taskQuery.list();
        tasks.forEach(task -> {
            FlowVO flow = new FlowVO();
@@ -280,6 +296,12 @@
            if(ru.isSuccess()) {
                flow.setStartUserName(ru.getData().getName());
            }
            ;
            List<Comment> comments = lastStepComments(task);//taskService.getTaskComments(task.getId());
            if(!comments.isEmpty()){
                flow.setComment(comments.get(0).getFullMessage());
            }
            MdmFlowProcess processDefinition = MdmFlowCache.getProcessDefinition(task.getProcessDefinitionId());
            flow.setCategory(processDefinition.getCategory());
@@ -295,6 +317,32 @@
        });
    }
    List<Comment> lastStepComments(Task currentTask){
        List<HistoricTaskInstance> previousTasks = historyService.createHistoricActivityInstanceQuery()
            .processInstanceId(currentTask.getProcessInstanceId())
            .activityType("userTask") // 直接查询用户任务类型
            .orderByHistoricActivityInstanceEndTime()
            .desc()
            .list()
            .stream()
            .filter(activity -> !activity.getActivityId().equals(currentTask.getTaskDefinitionKey()))
            .map(activity -> historyService.createHistoricTaskInstanceQuery()
                .taskDefinitionKey(activity.getActivityId())
                .processInstanceId(activity.getProcessInstanceId())
                .orderByHistoricTaskInstanceEndTime()
                .desc()
                .list()
            )
            .flatMap(List::stream)
            .toList();
        List<Comment> comments;
        if (!previousTasks.isEmpty()) {
            return  taskService.getTaskComments(previousTasks.get(0).getId());
        }else{
            return Collections.emptyList();
        }
    }
    /**
     * 获取历史流程
     *