package com.persagy.server.datacenter.dao.mappers

import com.persagy.server.datacenter.models.entities.dict.Family
import org.apache.ibatis.annotations.Mapper
import org.apache.ibatis.annotations.Param
import org.apache.ibatis.annotations.Select
import org.springframework.stereotype.Repository

/**
 * 方案接口
 *
 * @author 张维新
 */
@Mapper
@Repository
interface SchemeMapper {

    /**
     * 导入方案
     */
    @Select("insert into dict.property_def_project_info(first_tag,first_name,second_tag,second_name,info_point_name,info_point_code,datatype,type,flag,inputmode,unit,datasource,note,priority,visible,editable,sort,un_disabled,project_id) \n" +
            "select first_tag,first_name,second_tag,second_name,info_point_name,info_point_code,datatype,type,flag,inputmode,unit,datasource,note,priority,visible,editable,sort,un_disabled,#{projectId} from dict.datacenter_property_def_scheme WHERE scheme_id = #{schemeId}")
    fun setSchemeDict(@Param("projectId") projectId:String, @Param("schemeId") schemeId:String)

    /**
     * 自定义信息点
     */
    @Select("insert into dict.property_def_project_info(first_tag,first_name,second_tag,second_name,info_point_name,info_point_code,datatype,type,flag,inputmode,unit,datasource,note,priority,visible,editable,sort,un_disabled,project_id) \n" +
            "select first_tag,first_name,second_tag,second_name,info_point_name,info_point_code,datatype,type,flag,inputmode,unit,datasource,note,priority,visible,editable,sort,un_disabled,#{projectId} from dict.data_platform_scheme_info WHERE scheme_id = #{schemeId}")
    fun setSchemecustomDict(@Param("projectId") projectId:String, @Param("schemeId") schemeId:String)

    /**
     * 自定义信息点
     */
    @Select("insert into dict.property_def_project_info(first_tag,first_name,second_tag,second_name,info_point_name,info_point_code,datatype,type,flag,inputmode,unit,datasource,note,priority,visible,editable,sort,un_disabled,project_id) \n" +
            "select first_tag,first_name,second_tag,second_name,info_point_name,info_point_code,datatype,type,flag,inputmode,unit,datasource,note,priority,False,editable,sort,un_disabled,#{projectId} from dict.data_platform_scheme_info WHERE scheme_id = #{schemeId}")
    fun setSchemecustomDictFalse(@Param("projectId") projectId:String, @Param("schemeId") schemeId:String)

    /**
     * 导入原始字典
     */
    @Select("insert into dict.property_def_project_info(first_tag,first_name,second_tag,second_name,info_point_name,info_point_code,datatype,type,flag,inputmode,unit,datasource,note,priority,visible,editable,sort,un_disabled,project_id) \n" +
            "select first_tag,first_name,second_tag,second_name,info_point_name,info_point_code,datatype,type,flag,inputmode,unit,datasource,note,priority,visible,editable,sort,un_disabled,#{projectId} from dict.property_def_control_info ")
    fun setControlDict(@Param("projectId") projectId:String)

    /**
     * 操作自定义字典表数据
     */
    @Select("SELECT dictcustom.dict()")
    fun setDict():Boolean

    @Select("SELECT update_equip_ispace(#{projectId},#{oldBimId},#{bimId},#{floorId})")
    fun rUpDateEquipAndSapce(@Param("projectId") projectId: String,@Param("oldBimId") oldBimId: String,@Param("bimId") bimId: String,@Param("floorId") floorId: String):Boolean

    /**
     * 统计项目下有多少种设备类型
     *
     */
    @Select("SELECT category as code,(SELECT name FROM dict.class_def WHERE id = category) FROM equipment WHERE project_id = #{projectId} GROUP BY category")
    fun equipType(@Param("projectId") projectId: String):ArrayList<Family>


    /**
     * 信息点导入到项目定制化表
     */
    @Select("INSERT INTO dict.def_funcid_project (id,class_code,category,code,name,type,group_id,project_id,data_type,formater,data_source,input_mode,first_tag,second_tag,idx,priority,unit,note,can_sub,is_multiple,is_region,sub_flag,readonly,visible,editable,sort,un_disabled,object_type,key_word,last_update,create_time,first_name,second_name ) SELECT id,class_code,category,code,name,type,group_id,#{projectId},data_type,formater,data_source,input_mode,first_tag,second_tag,idx,priority,unit,note,can_sub,is_multiple,is_region,sub_flag,readonly,visible,editable,sort,un_disabled,object_type,key_word,last_update,create_time,first_name,second_name FROM dict.def_funcid WHERE group_id = #{groupId} AND class_code = #{code}")
    fun dictInfo(@Param("projectId") projectId: String,@Param("groupId") groupId: String ,@Param("code") code:String )





} // interface SchemeMapper