<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.product.dal.mysql.envtype.EnvTypeMapper">

    <!--
        一般情况下，尽可能使用 Mapper 进行 CRUD 增删改查即可。
        无法满足的场景，例如说多表关联查询，才使用 XML 编写 SQL。
        代码生成器暂时只生成 Mapper XML 文件本身，更多推荐 MybatisX 快速开发插件来生成查询。
        文档可见：https://www.iocoder.cn/MyBatis/x-plugins/
     -->

    <select id="getAvailableEnvType" resultType="cn.iocoder.yudao.module.product.dal.dataobject.envtype.EnvTypeDO">
        SELECT
            t.*
        FROM (
            SELECT
                pet.*
            FROM
                product_device_info pdi
            LEFT JOIN product_env_type pet ON pdi.env_type = pet.id
            WHERE
                pdi.deleted = 0
              AND pet.deleted = 0
              AND pdi.gateway_type = 1
              AND pdi.device_type = 2
              AND pdi.belong_business_id = #{businessInfoId}
            UNION ALL
            SELECT
                pet.*
            FROM
                product_slave_device psd
            LEFT JOIN product_env_type pet ON psd.env_type = pet.id
            WHERE
                psd.deleted = 0
              AND pet.deleted = 0
              AND psd.belong_business_id = #{businessInfoId}
        ) t
        GROUP BY
            t.id
    </select>

    <resultMap id="queryEnvTypeConfigMap" type="cn.iocoder.yudao.module.product.controller.admin.envtype.vo.EnvTypeDeviceConfigRespVO">
        <result column="land_id" property="landId"></result>
        <collection property="envTypes" column="land_id=land_id" select="queryEnvTypes"></collection>
    </resultMap>
    <select id="getEnvTypeConfigGroupByLandId" resultMap="queryEnvTypeConfigMap">
        SELECT land_id FROM configure_device_env_type WHERE deleted = 0 group by land_id
    </select>
    <select id="queryEnvTypes" resultType="cn.iocoder.yudao.module.product.controller.admin.envtype.vo.EnvTypeConfigRespVO">
        SELECT
            pet.*, cdet.id configId
        FROM
            configure_device_env_type cdet
        LEFT JOIN product_env_type pet ON pet.id = cdet.env_type_id
        WHERE cdet.deleted = 0 and pet.deleted = 0 AND cdet.land_id = #{land_id}
    </select>

</mapper>
