gongchunyi
昨天 e9b4ceeea014f9d81263672f3d9c46a567c39591
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.ruoyi.energymeter.mapper;
 
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.energymeter.pojo.EnergyMeterSyncRun;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
 
import java.time.LocalDateTime;
import java.util.List;
 
/**
 * 同步批次 Mapper。
 */
@Mapper
public interface EnergyMeterSyncRunMapper extends BaseMapper<EnergyMeterSyncRun> {
 
    @Select("SELECT * FROM energy_meter_sync_run WHERE run_key = #{runKey} LIMIT 1")
    EnergyMeterSyncRun selectByRunKey(@Param("runKey") String runKey);
 
    /**
     * 汇总批次任务状态并回写统计字段。
     */
    int refreshTotals(@Param("runId") Long runId);
 
    /**
     * 查询长时间停在 RUNNING、但已没有待执行任务的批次,用于崩溃后兜底汇总。
     */
    @Select("SELECT r.* FROM energy_meter_sync_run r WHERE r.status = 'RUNNING' AND r.create_time < #{deadline} "
            + "AND NOT EXISTS (SELECT 1 FROM energy_meter_sync_task t WHERE t.run_id = r.id "
            + "AND t.status IN ('PENDING', 'RUNNING', 'RETRY')) ORDER BY r.id LIMIT #{limit}")
    List<EnergyMeterSyncRun> selectStuckRuns(@Param("deadline") LocalDateTime deadline,
                                             @Param("limit") int limit);
}