package cn.iocoder.yudao.module.mes.dal.mysql.em.alert; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.mes.controller.admin.em.alert.vo.MesEmAlertPageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.em.alert.MesEmAlertDO; import org.apache.ibatis.annotations.Mapper; import java.time.LocalDate; import java.util.List; /** * MES 能耗预警 Mapper * * @author 超级管理员 */ @Mapper public interface MesEmAlertMapper extends BaseMapperX { default PageResult selectPage(MesEmAlertPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(MesEmAlertDO::getMeterName, reqVO.getMeterName()) .eqIfPresent(MesEmAlertDO::getEnergyType, reqVO.getEnergyType()) .eqIfPresent(MesEmAlertDO::getAlertType, reqVO.getAlertType()) .eqIfPresent(MesEmAlertDO::getAlertLevel, reqVO.getAlertLevel()) .eqIfPresent(MesEmAlertDO::getStatus, reqVO.getStatus()) .betweenIfPresent(MesEmAlertDO::getAlertDate, reqVO.getAlertDate()) .orderByDesc(MesEmAlertDO::getAlertDate) .orderByDesc(MesEmAlertDO::getId)); } default MesEmAlertDO selectByUnique(Long meterId, Integer alertType, LocalDate alertDate, Long objectId) { return selectOne(new LambdaQueryWrapperX() .eq(MesEmAlertDO::getMeterId, meterId) .eq(MesEmAlertDO::getAlertType, alertType) .eq(MesEmAlertDO::getAlertDate, alertDate) .eq(MesEmAlertDO::getObjectId, objectId)); } default List selectRecent(LocalDate begin, LocalDate end, int limit) { return selectList(new LambdaQueryWrapperX() .ge(MesEmAlertDO::getAlertDate, begin) .le(MesEmAlertDO::getAlertDate, end) .orderByDesc(MesEmAlertDO::getAlertDate) .orderByDesc(MesEmAlertDO::getId) .last("LIMIT " + limit)); } default Long selectPendingCount() { return selectCount(new LambdaQueryWrapperX() .eq(MesEmAlertDO::getStatus, 0)); } default Long selectCountByDateRange(LocalDate begin, LocalDate end) { return selectCount(new LambdaQueryWrapperX() .between(MesEmAlertDO::getAlertDate, begin, end)); } default int deleteByMeterIdAndDate(Long meterId, LocalDate alertDate) { return delete(new LambdaQueryWrapperX() .eq(MesEmAlertDO::getMeterId, meterId) .eq(MesEmAlertDO::getAlertDate, alertDate)); } }