package cn.iocoder.yudao.module.pms.dal.mysql.yanfan.things;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.pms.controller.admin.yanfan.thingsmodel.vo.IotYfThingsModelPageReqVO;
import cn.iocoder.yudao.module.pms.dal.dataobject.yanfan.things.IotYfThingsModelDO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * yf物模型 Mapper
 *
 * @author 超级管理员
 */
@Mapper
public interface IotYfThingsModelMapper extends BaseMapperX<IotYfThingsModelDO> {

    default PageResult<IotYfThingsModelDO> selectPage(IotYfThingsModelPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<IotYfThingsModelDO>()
                .likeIfPresent(IotYfThingsModelDO::getModelName, reqVO.getModelName())
                .eqIfPresent(IotYfThingsModelDO::getProductId, reqVO.getProductId())
                .likeIfPresent(IotYfThingsModelDO::getProductName, reqVO.getProductName())
                .likeIfPresent(IotYfThingsModelDO::getTenantName, reqVO.getTenantName())
                .eqIfPresent(IotYfThingsModelDO::getIdentifier, reqVO.getIdentifier())
                .eqIfPresent(IotYfThingsModelDO::getType, reqVO.getType())
                .eqIfPresent(IotYfThingsModelDO::getDatatype, reqVO.getDatatype())
                .eqIfPresent(IotYfThingsModelDO::getSpecs, reqVO.getSpecs())
                .eqIfPresent(IotYfThingsModelDO::getIsChart, reqVO.getIsChart())
                .eqIfPresent(IotYfThingsModelDO::getIsMonitor, reqVO.getIsMonitor())
                .eqIfPresent(IotYfThingsModelDO::getIsHistory, reqVO.getIsHistory())
                .eqIfPresent(IotYfThingsModelDO::getIsReadonly, reqVO.getIsReadonly())
                .eqIfPresent(IotYfThingsModelDO::getIsSharePerm, reqVO.getIsSharePerm())
                .eqIfPresent(IotYfThingsModelDO::getModelOrder, reqVO.getModelOrder())
                .eqIfPresent(IotYfThingsModelDO::getDelFlag, reqVO.getDelFlag())
                .eqIfPresent(IotYfThingsModelDO::getCreateBy, reqVO.getCreateBy())
                .betweenIfPresent(IotYfThingsModelDO::getCreateTime, reqVO.getCreateTime())
                .eqIfPresent(IotYfThingsModelDO::getUpdateBy, reqVO.getUpdateBy())
                .eqIfPresent(IotYfThingsModelDO::getRemark, reqVO.getRemark())
                .eqIfPresent(IotYfThingsModelDO::getTempSlaveId, reqVO.getTempSlaveId())
                .eqIfPresent(IotYfThingsModelDO::getFormula, reqVO.getFormula())
                .eqIfPresent(IotYfThingsModelDO::getReverseFormula, reqVO.getReverseFormula())
                .eqIfPresent(IotYfThingsModelDO::getRegAddr, reqVO.getRegAddr())
                .eqIfPresent(IotYfThingsModelDO::getBitOption, reqVO.getBitOption())
                .eqIfPresent(IotYfThingsModelDO::getValueType, reqVO.getValueType())
                .eqIfPresent(IotYfThingsModelDO::getIsParams, reqVO.getIsParams())
                .eqIfPresent(IotYfThingsModelDO::getQuantity, reqVO.getQuantity())
                .eqIfPresent(IotYfThingsModelDO::getCode, reqVO.getCode())
                .eqIfPresent(IotYfThingsModelDO::getParseType, reqVO.getParseType())
                .eqIfPresent(IotYfThingsModelDO::getIsApp, reqVO.getIsApp())
                .eqIfPresent(IotYfThingsModelDO::getClientId, reqVO.getClientId())
                .eqIfPresent(IotYfThingsModelDO::getDeptId, reqVO.getDeptId())
                .orderByDesc(IotYfThingsModelDO::getModelId));
    }

    default List<IotYfThingsModelDO> selectList(IotYfThingsModelPageReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<IotYfThingsModelDO>()
                .likeIfPresent(IotYfThingsModelDO::getModelName, reqVO.getModelName())
                .eqIfPresent(IotYfThingsModelDO::getProductId, reqVO.getProductId())
                .likeIfPresent(IotYfThingsModelDO::getProductName, reqVO.getProductName())
                .likeIfPresent(IotYfThingsModelDO::getTenantName, reqVO.getTenantName())
                .eqIfPresent(IotYfThingsModelDO::getIdentifier, reqVO.getIdentifier())
                .eqIfPresent(IotYfThingsModelDO::getType, reqVO.getType())
                .eqIfPresent(IotYfThingsModelDO::getDatatype, reqVO.getDatatype())
                .eqIfPresent(IotYfThingsModelDO::getSpecs, reqVO.getSpecs())
                .eqIfPresent(IotYfThingsModelDO::getIsChart, reqVO.getIsChart())
                .eqIfPresent(IotYfThingsModelDO::getIsMonitor, reqVO.getIsMonitor())
                .eqIfPresent(IotYfThingsModelDO::getIsHistory, reqVO.getIsHistory())
                .eqIfPresent(IotYfThingsModelDO::getIsReadonly, reqVO.getIsReadonly())
                .eqIfPresent(IotYfThingsModelDO::getIsSharePerm, reqVO.getIsSharePerm())
                .eqIfPresent(IotYfThingsModelDO::getModelOrder, reqVO.getModelOrder())
                .eqIfPresent(IotYfThingsModelDO::getDelFlag, reqVO.getDelFlag())
                .eqIfPresent(IotYfThingsModelDO::getCreateBy, reqVO.getCreateBy())
                .betweenIfPresent(IotYfThingsModelDO::getCreateTime, reqVO.getCreateTime())
                .eqIfPresent(IotYfThingsModelDO::getUpdateBy, reqVO.getUpdateBy())
                .eqIfPresent(IotYfThingsModelDO::getRemark, reqVO.getRemark())
                .eqIfPresent(IotYfThingsModelDO::getTempSlaveId, reqVO.getTempSlaveId())
                .eqIfPresent(IotYfThingsModelDO::getFormula, reqVO.getFormula())
                .eqIfPresent(IotYfThingsModelDO::getReverseFormula, reqVO.getReverseFormula())
                .eqIfPresent(IotYfThingsModelDO::getRegAddr, reqVO.getRegAddr())
                .eqIfPresent(IotYfThingsModelDO::getBitOption, reqVO.getBitOption())
                .eqIfPresent(IotYfThingsModelDO::getValueType, reqVO.getValueType())
                .eqIfPresent(IotYfThingsModelDO::getIsParams, reqVO.getIsParams())
                .eqIfPresent(IotYfThingsModelDO::getQuantity, reqVO.getQuantity())
                .eqIfPresent(IotYfThingsModelDO::getCode, reqVO.getCode())
                .eqIfPresent(IotYfThingsModelDO::getParseType, reqVO.getParseType())
                .eqIfPresent(IotYfThingsModelDO::getIsApp, reqVO.getIsApp())
                .eqIfPresent(IotYfThingsModelDO::getClientId, reqVO.getClientId())
                .eqIfPresent(IotYfThingsModelDO::getDeptId, reqVO.getDeptId())
                .orderByDesc(IotYfThingsModelDO::getModelId));
    }

    List<IotYfThingsModelDO> selectAllByTemplateId(Long templateId);
    List<IotYfThingsModelDO> selectThingsModelList(IotYfThingsModelPageReqVO thingsModel);
}
