package cn.iocoder.yudao.module.smartfactory.dal.mysql.factoryinfo;

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.smartfactory.controller.admin.factoryinfo.vo.FactoryInfoPageReqVO;
import cn.iocoder.yudao.module.smartfactory.controller.admin.screendata.factory.vo.FactoryRollDataRespVO;
import cn.iocoder.yudao.module.smartfactory.dal.dataobject.factoryinfo.FactoryInfoDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 工厂信息 Mapper
 *
 * @author 姚君
 */
@Mapper
public interface FactoryInfoMapper extends BaseMapperX<FactoryInfoDO> {

    default PageResult<FactoryInfoDO> selectPage(FactoryInfoPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<FactoryInfoDO>()
                .likeIfPresent(FactoryInfoDO::getName, reqVO.getName())
                .likeIfPresent(FactoryInfoDO::getShortName, reqVO.getShortName())
                .likeIfPresent(FactoryInfoDO::getType, reqVO.getType())
                .eqIfPresent(FactoryInfoDO::getStatus, reqVO.getStatus())
                .betweenIfPresent(FactoryInfoDO::getCreateTime, reqVO.getCreateTime())
                .orderByAsc(FactoryInfoDO::getSort));
    }

    /**
     * 大屏数据 - 工厂基础滚动数据
     *
     * @return
     */
    List<FactoryRollDataRespVO> getFactoryRollData();

    /**
     * 根据工厂ID获取天气代码。
     *
     * @param factoryId 工厂的唯一标识符，类型为Long。
     * @return 返回与给定工厂ID相关联的天气代码，类型为String。
     */
    String getWeatherCodeByFactoryId(@Param("factoryId") Long factoryId, @Param("areaCode") String areaCode);
}