<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.3//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zw.platform.repository.modules.DeviceRegisterDao">
    <!-- 查询围栏绑定 -->
    <select id="findListByDeviceId"
            parameterType="string"
            resultType="com.zw.platform.domain.topspeed_entering.DeviceRegister">
		SELECT t.id,t.device_id,t.sim_number,t.brand,t.device_type FROM zw_m_unknow_device t WHERE t.device_id LIKE '%'+#{deviceId}+'%' AND t.flag = '1' ORDER BY t.create_data_time
	</select>

    <select id="findByDeviceId"
            parameterType="string"
            resultType="com.zw.platform.domain.topspeed_entering.DeviceRegister">
        SELECT t.id,t.device_id,t.sim_number,t.brand,t.device_type FROM zw_m_unknow_device t WHERE t.device_id = #{deviceId} ORDER BY t.create_data_time
    </select>

    <select id="findListInUser"
            resultType="com.zw.platform.domain.topspeed_entering.DeviceRegister">
        <!-- SELECT t.id,t.device_id,t.brand,t.sim_number,t.device_type,1 AS status FROM zw_m_unknow_device t WHERE t.flag =
        '1' AND t.device_id IN (
        select ti.deviceNumber from
        ( SELECT de.id as id,de.device_number as deviceNumber,de.device_name deviceName,de.is_start as
        isStart,de.device_type as deviceType,de.channel_number as channelNumber,
        de.is_video as isVideo,de.bar_code as barCode,de.manu_facturer as manuFacturer,DATE_FORMAT( de.install_time,
        '%Y-%m-%d') as installTimeStr, de.install_time as installTime,
        v.brand,dg.group_id as groupName,de.create_data_time as create_data_time
        FROM zw_m_device_info de
        inner JOIN zw_m_device_group dg ON de.id = dg.device_id AND dg.flag = 1
        inner JOIN zw_m_config m ON de.id = m.device_id AND m.flag=1
        inner JOIN zw_m_vehicle_info v ON m.vehicle_id = v.id AND v.flag=1
        WHERE de.flag = 1
        AND dg.group_id IN
        <foreach item="item" collection="groupList" separator="," open="("
                 close=")">
            #{item}
        </foreach>
        union
        SELECT de1.id as id,de1.device_number as deviceNumber,de1.device_name deviceName,
        de1.is_start as isStart,de1.device_type as deviceType,de1.channel_number as channelNumber,
        de1.is_video as isVideo,de1.bar_code as barCode,de1.manu_facturer as manuFacturer,DATE_FORMAT( de1.install_time,
        '%Y-%m-%d') as installTimeStr, de1.install_time as installTime,
        '',dg1.group_id as groupName,de1.create_data_time as create_data_time
        FROM zw_m_device_info de1,zw_m_device_group dg1
        WHERE de1.id = dg1.device_id AND dg1.flag = 1 AND de1.flag = 1
        AND dg1.group_id IN
        <foreach item="item" collection="groupList" separator="," open="("
                 close=")">
            #{item}
        </foreach>
        AND de1.id NOT IN(SELECT zw_m_device_info.id FROM
        zw_m_device_info,zw_m_config WHERE zw_m_device_info.id =
        zw_m_config.device_id AND zw_m_device_info.flag = 1 AND
        zw_m_config.flag = 1)) ti
        )ORDER BY t.create_data_time -->
        
         SELECT ud.id,ud.unique_number,ud.device_id,ud.brand,ud.sim_number,ud.fake_ip,ud.device_type,1 AS status FROM zw_m_unknow_device ud WHERE ud.flag =1 AND ud.unique_number IN (
        	SELECT di1.device_number FROM zw_m_device_info di1 
        	INNER JOIN zw_m_device_group dg1 ON dg1.device_id=di1.id AND dg1.flag=1
       		AND dg1.group_id IN
	        <foreach item="item" collection="groupList" separator="," open="("
	                 close=")">
	            #{item}
	        </foreach>
        	WHERE di1.flag=1 AND di1.device_number NOT IN (
        		SELECT di2.device_number FROM zw_m_device_info di2 
        		INNER JOIN zw_m_config c ON c.device_id=di2.id AND c.flag=1
        		WHERE di2.flag = 1
        	)
      	)
      	AND ud.device_type &lt;&gt; '5'
        ORDER BY ud.create_data_time
    </select>


    <select id="findListOutUser"
            resultType="com.zw.platform.domain.topspeed_entering.DeviceRegister">
        SELECT ud.id,ud.unique_number,ud.device_id,ud.brand,ud.sim_number,ud.fake_ip,ud.device_type,0 AS status FROM zw_m_unknow_device ud WHERE ud.flag =1 AND ud.unique_number NOT IN (
        	<!-- SELECT di1.device_number FROM zw_m_device_info di1 
        	INNER JOIN zw_m_config c ON c.device_id=di1.id AND c.flag=1
        	INNER JOIN zw_m_device_group dg1 ON dg1.device_id=di1.id AND dg1.flag=1
        	WHERE di1.flag = 1
        	UNION -->
			SELECT di2.device_number FROM zw_m_device_info di2 
			WHERE di2.flag=1        	
      	) 
      	AND ud.device_type &lt;&gt; '5'
        ORDER BY ud.create_data_time
    </select>
    
    <select id="findSIMListInUser"
            resultType="com.zw.platform.domain.topspeed_entering.DeviceRegister">
         SELECT ud.id,ud.device_id,ud.brand,ud.sim_number,ud.device_type,1 AS status FROM zw_m_unknow_device ud WHERE ud.flag =1 AND ud.sim_number IN (
        	SELECT sim1.simcard_number FROM zw_m_sim_card_info sim1 WHERE sim1.flag=1 AND sim1.simcard_number NOT IN (
        		SELECT sim2.simcard_number FROM zw_m_sim_card_info sim2 
        		INNER JOIN zw_m_config c ON c.sim_card_id=sim2.id AND c.flag=1
        		INNER JOIN zw_m_sim_group dg1 ON dg1.sim_id=sim2.id AND dg1.flag=1
        		AND dg1.group_id IN
		        <foreach item="item" collection="groupList" separator="," open="("
		                 close=")">
		            #{item}
		        </foreach>
        		WHERE sim1.flag = 1
        	)
      	)
      	AND ud.device_type IN ('8','9','10') 
        ORDER BY ud.create_data_time
    </select>
	
	<select id="findSIMListOutUser"
            resultType="com.zw.platform.domain.topspeed_entering.DeviceRegister">
        SELECT ud.id,ud.device_id,ud.brand,ud.sim_number,ud.device_type,0 AS status FROM zw_m_unknow_device ud WHERE ud.flag =1 AND ud.sim_number NOT IN (
			SELECT sim1.simcard_number FROM zw_m_sim_card_info sim1 
			INNER JOIN zw_m_sim_group dg2 ON dg2.sim_id=sim1.id AND dg2.flag=1
			AND dg2.group_id IN
	        <foreach item="item" collection="groupList" separator="," open="("
	                 close=")">
	            #{item}
	        </foreach>
			WHERE sim1.flag=1        	
      	) 
      	AND ud.device_type IN ('8','9','10') 
        ORDER BY ud.create_data_time
    </select>
	
    <select id="deleteByDeviceId"
            parameterType="string">
        UPDATE zw_m_unknow_device t SET t.flag = '0' WHERE t.unique_number = #{deviceId}
    </select>
</mapper>