package com.qqflow.engine.domain.flow.mapper; import com.qqflow.engine.domain.flow.dto.analysis.AnalysisOverviewDTO; import com.qqflow.engine.domain.flow.dto.analysis.NodeStayStatDTO; import com.qqflow.engine.domain.flow.dto.analysis.ProcessEfficiencyDTO; import com.qqflow.engine.domain.flow.dto.analysis.StuckInstanceDTO; import com.qqflow.engine.domain.flow.dto.analysis.StatusDistributionDTO; import com.qqflow.engine.domain.flow.dto.analysis.TrendDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.time.LocalDateTime; import java.util.List; /** * 流程数据分析 Mapper */ @Mapper public interface AnalysisMapper { /** * 已完成流程效率统计 */ List selectCompletedEfficiency( @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime, @Param("processDefinitionId") Long processDefinitionId); /** * 进行中节点停留统计 */ List selectInProgressByNode( @Param("processDefinitionId") Long processDefinitionId); /** * 卡住流程实例数量 */ Long countStuckInstances( @Param("nodeId") String nodeId, @Param("processDefinitionId") Long processDefinitionId, @Param("minStayMinutes") Long minStayMinutes); /** * 卡住流程实例明细 */ List selectStuckInstances( @Param("nodeId") String nodeId, @Param("processDefinitionId") Long processDefinitionId, @Param("minStayMinutes") Long minStayMinutes, @Param("offset") Long offset, @Param("pageSize") Integer pageSize); /** * 流程实例概览统计(不含超时任务数) */ AnalysisOverviewDTO selectInstanceOverview( @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime, @Param("processDefinitionId") Long processDefinitionId); /** * 超时任务数 */ Long countTimeoutTasks(@Param("processDefinitionId") Long processDefinitionId); /** * 流程状态分布 */ List selectStatusDistribution( @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime, @Param("processDefinitionId") Long processDefinitionId); /** * 近30天流程趋势 */ List selectTrend( @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("processDefinitionId") Long processDefinitionId); }