package com.genersoft.iot.vmp.gb28181.dao;
import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel;
import com.genersoft.iot.vmp.gb28181.bean.Group;
import com.genersoft.iot.vmp.gb28181.bean.GroupTree;
import org.apache.ibatis.annotations.*;
import java.util.List;
import java.util.Set;
@Mapper
public interface GroupMapper {
    @Insert("INSERT INTO wvp_common_group (device_id, name, parent_id, parent_device_id, business_group, create_time, update_time) " +
            "VALUES (#{deviceId}, #{name}, #{parentId}, #{parentDeviceId}, #{businessGroup}, #{createTime}, #{updateTime})")
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    int add(Group group);
    @Insert("INSERT INTO wvp_common_group (device_id, name, business_group, create_time, update_time) " +
            "VALUES (#{deviceId}, #{name}, #{businessGroup}, #{createTime}, #{updateTime})")
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    int addBusinessGroup(Group group);
    @Delete("DELETE FROM wvp_common_group WHERE id=#{id}")
    int delete(@Param("id") int id);
    @Update(" UPDATE wvp_common_group " +
            " SET update_time=#{updateTime}, device_id=#{deviceId}, name=#{name}, parent_id=#{parentId}, parent_device_id=#{parentDeviceId}, business_group=#{businessGroup}" +
            " WHERE id = #{id}")
    int update(Group group);
    @Select(value = {" "})
    List query(@Param("query") String query, @Param("parentId") String parentId, @Param("businessGroup") String businessGroup);
    @Select("SELECT * from wvp_common_group WHERE parent_id = #{parentId} ")
    List getChildren(@Param("parentId") int parentId);
    @Select("SELECT * from wvp_common_group WHERE id = #{id} ")
    Group queryOne(@Param("id") int id);
    @Insert(" ")
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    int batchAdd(List groupList);
    @Select(" ")
    List queryForTree(@Param("query") String query, @Param("parentId") Integer parentId);
    @Select(" ")
    List queryForTreeByBusinessGroup(@Param("query") String query,
                                                @Param("businessGroup") String businessGroup);
    @Select(" ")
    List queryBusinessGroupForTree(@Param("query") String query);
    @Select("SELECT * from wvp_common_group WHERE device_id = #{deviceId} and business_group = #{businessGroup}")
    Group queryOneByDeviceId(@Param("deviceId") String deviceId, @Param("businessGroup") String businessGroup);
    @Delete("")
    int batchDelete(List allChildren);
    @Select("SELECT * from wvp_common_group WHERE device_id = #{businessGroup} and business_group = #{businessGroup} ")
    Group queryBusinessGroup(@Param("businessGroup") String businessGroup);
    @Select("SELECT * from wvp_common_group WHERE business_group = #{businessGroup} ")
    List queryByBusinessGroup(@Param("businessGroup") String businessGroup);
    @Delete("DELETE FROM wvp_common_group WHERE business_group = #{businessGroup}")
    int deleteByBusinessGroup(@Param("businessGroup") String businessGroup);
    @Update(" UPDATE wvp_common_group " +
            " SET parent_device_id=#{group.deviceId}, business_group = #{group.businessGroup}" +
            " WHERE parent_id = #{parentId}")
    int updateChild(@Param("parentId") Integer parentId, Group group);
    @Select(" ")
    List queryInGroupListByDeviceId(List groupList);
    @Select(" ")
    Set queryInChannelList(List channelList);
    @Select(" ")
    Set queryParentInChannelList(Set groupSet);
    @Select(" ")
    List queryForPlatform(@Param("platformId") Integer platformId);
    @Select(" ")
    Set queryNotShareForPlatformByChannelList(List channelList, @Param("platformId") Integer platformId);
    @Select(" ")
    Set queryNotShareForPlatformByGroupList(Set allGroup, @Param("platformId") Integer platformId);
    @Select(" ")
    Set queryByChannelList(List channelList);
    @Update(" ")
    void updateParentId(List groupListForAdd);
    @Update(" ")
    void updateParentIdWithBusinessGroup(List groupListForAdd);
}