package com.ruoyi.energymeter.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.energymeter.pojo.EnergyMeterDevice; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import java.time.LocalDateTime; import java.util.List; /** * 水电表绑定设备 Mapper。 */ @Mapper public interface EnergyMeterDeviceMapper extends BaseMapper { /** * 扫描全部租户下已启用、已验证、且为第三方接入的设备,用于系统级自动同步。 * 手工抄表设备由用户录表,不参与定时采集。 */ @Select("SELECT * FROM energy_meter_device WHERE enabled = 1 AND bind_status = 'VERIFIED' " + "AND source_type = 'PROVIDER' ORDER BY id") List selectScannableDevices(); /** * 记录采集成功并清空上次错误。 */ @Update("UPDATE energy_meter_device SET last_success_at = #{now}, last_error_code = NULL, " + "last_error_message = NULL WHERE id = #{id}") int markCollectSuccess(@Param("id") Long id, @Param("now") LocalDateTime now); /** * 记录采集失败的脱敏错误类别与摘要。 */ @Update("UPDATE energy_meter_device SET last_error_code = #{code}, last_error_message = #{message} WHERE id = #{id}") int markCollectFailure(@Param("id") Long id, @Param("code") String code, @Param("message") String message); }