package com.iailab.module.data.point.dao;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
import com.iailab.framework.tenant.core.db.dynamic.TenantDS;
import com.iailab.module.data.point.dto.DaPointDTO;
import com.iailab.module.data.point.entity.DaPointEntity;
import com.iailab.module.data.point.vo.DaPointPageReqVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author lirm
 * @Description
 * @createTime 2024年09月2日
 */
@TenantDS
@Mapper
public interface DaPointDao extends BaseMapperX<DaPointEntity> {

    IPage<DaPointDTO> getPageList(IPage<DaPointEntity> page, @Param("params") DaPointPageReqVO reqVO);

    List<DaPointDTO> getList(DaPointPageReqVO reqVO);

    List<DaPointDTO> getConstantPoint(Map<String, Object> params);

    List<DaPointDTO> getMeasurePoint(Map<String, Object> params);

    List<DaPointDTO> getMathPoint(Map<String, Object> params);

    List<DaPointDTO> getCumulatePoint(Map<String, Object> params);

    default IPage<DaPointDTO> selectPageList(DaPointPageReqVO reqVO) {
        return getPageList(getPage(reqVO), reqVO);
    }

    default DaPointEntity selectByPointName(String pointName) {
        return selectOne("point_name", pointName);
    }

    default DaPointEntity selectByPointNo(String pointNo) {
        return selectOne("point_no", pointNo);
    }
}