forked from rongchao/epmet-cloud-rizhao
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							1069 lines
						
					
					
						
							42 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							1069 lines
						
					
					
						
							42 KiB
						
					
					
				
								<?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="com.epmet.dao.user.UserDao">
							 | 
						|
								
							 | 
						|
								    <!-- 查询注册用户的总量与增量 传参:注册用户or参与用户  |  网格Id集合  |  时间参数 格式[yyyy-MM-dd 00:00:00] -->
							 | 
						|
								<select id="selectResiTotalAndIncrByLevel" resultType="com.epmet.dto.user.result.CommonTotalAndIncCountResultDTO">
							 | 
						|
								    SELECT
							 | 
						|
								    count( DISTINCT USER_ID ) AS total,
							 | 
						|
								    (
							 | 
						|
								    SELECT
							 | 
						|
								    count( DISTINCT USER_ID )
							 | 
						|
								    FROM
							 | 
						|
								    REGISTER_RELATION
							 | 
						|
								    WHERE
							 | 
						|
								    DEL_FLAG = '0'
							 | 
						|
								    <choose>
							 | 
						|
								        <!-- 参与用户 -->
							 | 
						|
								        <when test='regOrPartiFlag == "parti"'>
							 | 
						|
								            AND (
							 | 
						|
								            ( FIRST_REGISTER = '1' AND REGISTER = '1' AND PARTICIPATION = '1' )
							 | 
						|
								            OR ( FIRST_REGISTER = '0' AND REGISTER = '0' AND PARTICIPATION = '1' )
							 | 
						|
								            )
							 | 
						|
								        </when>
							 | 
						|
								        <!-- 默认查注册用户 -->
							 | 
						|
								        <otherwise>
							 | 
						|
								            AND FIRST_REGISTER = '1'
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null == gridIds or gridIds.size == 0'>
							 | 
						|
								           AND GRID_ID = ''
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                GRID_ID = #{gridId}
							 | 
						|
								            </foreach>
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								
							 | 
						|
								    <choose>
							 | 
						|
								        <!--  不为空,默认查询创建时间在 昨天的增量 -->
							 | 
						|
								        <when test='null != targetDate'>
							 | 
						|
								            and DATE_FORMAT(CREATED_TIME,"%Y-%m-%d") = DATE_FORMAT(#{targetDate},"%Y-%m-%d")
							 | 
						|
								        </when>
							 | 
						|
								        <!--  为空,默认查询昨天的增量 -->
							 | 
						|
								        <otherwise>
							 | 
						|
								            and DATE_FORMAT(CREATED_TIME,"%Y-%m-%d") = DATE_FORMAT( DATE_SUB( CURDATE( ), INTERVAL 1 DAY ),"%Y-%m-%d")
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								    ) AS incr
							 | 
						|
								    FROM
							 | 
						|
								    REGISTER_RELATION
							 | 
						|
								    WHERE
							 | 
						|
								    DEL_FLAG = '0'
							 | 
						|
								    <choose>
							 | 
						|
								        <!-- 参与用户 -->
							 | 
						|
								        <when test='regOrPartiFlag == "parti"'>
							 | 
						|
								            AND (
							 | 
						|
								            ( FIRST_REGISTER = '1' AND REGISTER = '1' AND PARTICIPATION = '1' )
							 | 
						|
								            OR ( FIRST_REGISTER = '0' AND REGISTER = '0' AND PARTICIPATION = '1' )
							 | 
						|
								            )
							 | 
						|
								        </when>
							 | 
						|
								        <!-- 默认查注册用户 -->
							 | 
						|
								        <otherwise>
							 | 
						|
								            AND FIRST_REGISTER = '1'
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null == gridIds or gridIds.size == 0'>
							 | 
						|
								          AND  GRID_ID = ''
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                GRID_ID = #{gridId}
							 | 
						|
								            </foreach>
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								    <choose>
							 | 
						|
								        <!--  不为空,包含传进来的这一天 -->
							 | 
						|
								        <when test="null != targetDate">
							 | 
						|
								            and DATE_FORMAT(CREATED_TIME,"%Y-%m-%d")  <![CDATA[<=]]> DATE_FORMAT(#{targetDate},"%Y-%m-%d")
							 | 
						|
								        </when>
							 | 
						|
								        <!--  为空,默认截止到昨天 -->
							 | 
						|
								        <otherwise>
							 | 
						|
								            and DATE_FORMAT(CREATED_TIME,"%Y-%m-%d")  <![CDATA[<=]]> DATE_FORMAT(DATE_SUB( CURDATE( ), INTERVAL 1 DAY ),"%Y-%m-%d")
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								
							 | 
						|
								</select>
							 | 
						|
								
							 | 
						|
								    <!-- 查询指定网格范围下单位时间内新增的注册/参与用户Id  传参:注册用户or参与用户  |  网格Id集合  |  时间参数 格式[yyyy-MM-dd 00:00:00]-->
							 | 
						|
								<select id="selectIncrUserIds" resultType="string">
							 | 
						|
								    SELECT DISTINCT
							 | 
						|
								    USER_ID
							 | 
						|
								    FROM
							 | 
						|
								    REGISTER_RELATION
							 | 
						|
								    WHERE
							 | 
						|
								    DEL_FLAG = '0'
							 | 
						|
								    <choose>
							 | 
						|
								        <!-- 参与用户 -->
							 | 
						|
								        <when test='regOrPartiFlag == "parti"'>
							 | 
						|
								            AND (
							 | 
						|
								            ( FIRST_REGISTER = '1' AND REGISTER = '1' AND PARTICIPATION = '1' )
							 | 
						|
								            OR ( FIRST_REGISTER = '0' AND REGISTER = '0' AND PARTICIPATION = '1' )
							 | 
						|
								            )
							 | 
						|
								        </when>
							 | 
						|
								        <!-- 默认查注册用户 -->
							 | 
						|
								        <otherwise>
							 | 
						|
								            AND FIRST_REGISTER = '1'
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null == gridIds or gridIds.size == 0'>
							 | 
						|
								           AND GRID_ID = ''
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                GRID_ID = #{gridId}
							 | 
						|
								            </foreach>
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null != targetDate'>
							 | 
						|
								            and DATE_FORMAT(CREATED_TIME,"%Y-%m-%d") = DATE_FORMAT(#{targetDate},"%Y-%m-%d")
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            and DATE_FORMAT(CREATED_TIME,"%Y-%m-%d") = DATE_FORMAT(DATE_SUB( CURDATE( ), INTERVAL 1 DAY ),"%Y-%m-%d")
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								</select>
							 | 
						|
								
							 | 
						|
								    <!-- 查询指定网格范围下截至指定位时间累计的注册用户Id  传参:注册用户or参与用户  |  网格Id集合  | 时间参数 格式[yyyy-MM-dd 00:00:00]-->
							 | 
						|
								<select id="selectTotalUserIds" resultType="string">
							 | 
						|
								    SELECT DISTINCT
							 | 
						|
								    USER_ID
							 | 
						|
								    FROM
							 | 
						|
								    REGISTER_RELATION
							 | 
						|
								    WHERE
							 | 
						|
								    DEL_FLAG = '0'
							 | 
						|
								    <choose>
							 | 
						|
								        <!-- 参与用户 -->
							 | 
						|
								        <when test='regOrPartiFlag == "parti"'>
							 | 
						|
								            AND (
							 | 
						|
								            ( FIRST_REGISTER = '1' AND REGISTER = '1' AND PARTICIPATION = '1' )
							 | 
						|
								            OR ( FIRST_REGISTER = '0' AND REGISTER = '0' AND PARTICIPATION = '1' )
							 | 
						|
								            )
							 | 
						|
								        </when>
							 | 
						|
								        <!-- 默认查注册用户 -->
							 | 
						|
								        <otherwise>
							 | 
						|
								            AND FIRST_REGISTER = '1'
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null == gridIds or gridIds.size == 0'>
							 | 
						|
								            AND GRID_ID = ''
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                GRID_ID = #{gridId}
							 | 
						|
								            </foreach>
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='targetDate != null'>
							 | 
						|
								            and DATE_FORMAT(CREATED_TIME,"%Y-%m-%d")  <![CDATA[<=]]> DATE_FORMAT(#{targetDate},"%Y-%m-%d")
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            and DATE_FORMAT(CREATED_TIME,"%Y-%m-%d")  <![CDATA[<=]]> DATE_FORMAT(DATE_SUB( CURDATE( ), INTERVAL 1 DAY ),"%Y-%m-%d")
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								</select>
							 | 
						|
								
							 | 
						|
								    <!-- 查询党员的总量与增量  传参:用户Id集合(不用传注册or参与标识,用户Id会根据不同的flag范围不同) |  时间参数 格式[yyyy-MM-dd 00:00:00]-->
							 | 
						|
								<select id="selectPartyTotalAndIncr" resultType="com.epmet.dto.user.result.CommonTotalAndIncCountResultDTO">
							 | 
						|
								    SELECT
							 | 
						|
								    count( DISTINCT urole.USER_ID ) AS total,
							 | 
						|
								    (
							 | 
						|
								    SELECT
							 | 
						|
								    count( DISTINCT urole.USER_ID)
							 | 
						|
								    FROM
							 | 
						|
								    USER_ROLE urole
							 | 
						|
								    LEFT JOIN EPMET_ROLE erole ON urole.ROLE_ID = erole.ID
							 | 
						|
								    AND erole.DEL_FLAG = '0'
							 | 
						|
								    WHERE
							 | 
						|
								    urole.DEL_FLAG = '0'
							 | 
						|
								    <foreach collection="incrUserIds" item="incrUserId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								        urole.USER_ID = #{incrUserId}
							 | 
						|
								    </foreach>
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null != targetDate'>
							 | 
						|
								            and DATE_FORMAT(urole.CREATED_TIME,"%Y-%m-%d") = DATE_FORMAT(#{targetDate},"%Y-%m-%d")
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            and DATE_FORMAT(urole.CREATED_TIME,"%Y-%m-%d") = DATE_FORMAT(DATE_SUB( CURDATE( ), INTERVAL 1 DAY ),"%Y-%m-%d")
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								
							 | 
						|
								    AND erole.ROLE_NAME = '党员'
							 | 
						|
								    ) AS incr
							 | 
						|
								    FROM
							 | 
						|
								    USER_ROLE urole
							 | 
						|
								    LEFT JOIN EPMET_ROLE erole ON urole.ROLE_ID = erole.ID
							 | 
						|
								    AND erole.DEL_FLAG = '0'
							 | 
						|
								    WHERE
							 | 
						|
								    urole.DEL_FLAG = '0'
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null == userIds or userIds.size == 0'>
							 | 
						|
								            AND urole.USER_ID = ''
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            <foreach collection="userIds" item="userId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                urole.USER_ID = #{userId}
							 | 
						|
								            </foreach>
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null != targetDate'>
							 | 
						|
								            and DATE_FORMAT( urole.CREATED_TIME,"%Y-%m-%d")  <![CDATA[<=]]> DATE_FORMAT(#{targetDate},"%Y-%m-%d")
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            and DATE_FORMAT(urole.CREATED_TIME,"%Y-%m-%d")  <![CDATA[<=]]> DATE_FORMAT(DATE_SUB( CURDATE( ), INTERVAL 1 DAY ),"%Y-%m-%d")
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								    AND erole.ROLE_NAME = '党员'
							 | 
						|
								</select>
							 | 
						|
								
							 | 
						|
								    <!-- 查询热心居民的总量与增量 传参:用户Id集合(不用传注册or参与标识,用户Id会根据不同的flag范围不同) |  网格Id集合(与用户Id集合同理)  | 时间参数 格式[yyyy-MM-dd 00:00:00] -->
							 | 
						|
								<select id="selectWarmTotalAndIncr" resultType="com.epmet.dto.user.result.CommonTotalAndIncCountResultDTO">
							 | 
						|
								    SELECT
							 | 
						|
								    count( DISTINCT urole.USER_ID ) AS total,
							 | 
						|
								    (
							 | 
						|
								    SELECT
							 | 
						|
								    count( DISTINCT urole.USER_ID )
							 | 
						|
								    FROM
							 | 
						|
								    USER_ROLE urole
							 | 
						|
								    LEFT JOIN EPMET_ROLE erole ON urole.ROLE_ID = erole.ID
							 | 
						|
								    AND erole.DEL_FLAG = '0'
							 | 
						|
								    WHERE
							 | 
						|
								    urole.DEL_FLAG = '0'
							 | 
						|
								    <foreach collection="incrUserIds" item="incrUserId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								        urole.USER_ID = #{incrUserId}
							 | 
						|
								    </foreach>
							 | 
						|
								
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null == gridIds or gridIds.size == 0'>
							 | 
						|
								           AND urole.GRID_ID = ''
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                urole.GRID_ID = #{gridId}
							 | 
						|
								            </foreach>
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null != targetDate'>
							 | 
						|
								            and DATE_FORMAT(urole.CREATED_TIME,"%Y-%m-%d")=DATE_FORMAT(#{targetDate},"%Y-%m-%d")
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            and DATE_FORMAT(urole.CREATED_TIME,"%Y-%m-%d")=DATE_FORMAT(DATE_SUB( CURDATE( ), INTERVAL 1 DAY ),"%Y-%m-%d")
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								    AND erole.ROLE_NAME = '热心居民'
							 | 
						|
								    ) AS incr
							 | 
						|
								    FROM
							 | 
						|
								    USER_ROLE urole
							 | 
						|
								    LEFT JOIN EPMET_ROLE erole ON urole.ROLE_ID = erole.ID
							 | 
						|
								    AND erole.DEL_FLAG = '0'
							 | 
						|
								    WHERE
							 | 
						|
								    urole.DEL_FLAG = '0'
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null == gridIds or gridIds.size == 0'>
							 | 
						|
								          AND  urole.GRID_ID = ''
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                urole.GRID_ID = #{gridId}
							 | 
						|
								            </foreach>
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								    <foreach collection="userIds" item="userId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								        urole.USER_ID = #{userId}
							 | 
						|
								    </foreach>
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null != targetDate'>
							 | 
						|
								            and DATE_FORMAT(urole.CREATED_TIME,"%Y-%m-%d")  <![CDATA[<=]]> DATE_FORMAT(#{targetDate},"%Y-%m-%d")
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            and DATE_FORMAT(urole.CREATED_TIME,"%Y-%m-%d")  <![CDATA[<=]]> DATE_FORMAT(DATE_SUB( CURDATE( ), INTERVAL 1 DAY ),"%Y-%m-%d")
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								    AND erole.ROLE_NAME = '热心居民';
							 | 
						|
								
							 | 
						|
								</select>
							 | 
						|
								
							 | 
						|
								    <!-- 查询指定时间范围内网格新增的注册/参与用户Id  传参:注册用户or参与用户  |  网格Id集合  |  时间区间 -->
							 | 
						|
								<select id="selectIncrUserIdsWithinTimeRange" resultType="string">
							 | 
						|
								    SELECT DISTINCT
							 | 
						|
								    USER_ID
							 | 
						|
								    FROM
							 | 
						|
								    REGISTER_RELATION
							 | 
						|
								    WHERE
							 | 
						|
								    DEL_FLAG = '0'
							 | 
						|
								    <choose>
							 | 
						|
								        <!-- 参与用户 -->
							 | 
						|
								        <when test='regOrPartiFlag == "parti"'>
							 | 
						|
								            AND (
							 | 
						|
								            ( FIRST_REGISTER = '1' AND REGISTER = '1' AND PARTICIPATION = '1' )
							 | 
						|
								            OR ( FIRST_REGISTER = '0' AND REGISTER = '0' AND PARTICIPATION = '1' )
							 | 
						|
								            )
							 | 
						|
								        </when>
							 | 
						|
								        <!-- 默认查注册用户 -->
							 | 
						|
								        <otherwise>
							 | 
						|
								            AND FIRST_REGISTER = '1'
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null == gridIds or gridIds.size == 0'>
							 | 
						|
								            AND GRID_ID = ''
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                GRID_ID = #{gridId}
							 | 
						|
								            </foreach>
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								    AND CREATED_TIME <![CDATA[>=]]>  DATE_FORMAT(#{startDate},"%Y-%m-%d")
							 | 
						|
								    AND CREATED_TIME <![CDATA[<=]]>  DATE_FORMAT(#{endDate},"%Y-%m-%d")
							 | 
						|
								</select>
							 | 
						|
								
							 | 
						|
								    <!-- 查询指定时间范围内居民增量 传参:注册用户or参与用户   |  网格Id集合  |  时间区间-->
							 | 
						|
								<select id="selectResiIncrWithinTimeRange" resultType="integer">
							 | 
						|
								    SELECT
							 | 
						|
								    count( distinct USER_ID)
							 | 
						|
								    FROM
							 | 
						|
								    REGISTER_RELATION
							 | 
						|
								    WHERE
							 | 
						|
								    DEL_FLAG = '0'
							 | 
						|
								    <choose>
							 | 
						|
								        <!-- 参与用户 -->
							 | 
						|
								        <when test='regOrPartiFlag == "parti"'>
							 | 
						|
								            AND (
							 | 
						|
								            ( FIRST_REGISTER = '1' AND REGISTER = '1' AND PARTICIPATION = '1' )
							 | 
						|
								            OR ( FIRST_REGISTER = '0' AND REGISTER = '0' AND PARTICIPATION = '1' )
							 | 
						|
								            )
							 | 
						|
								        </when>
							 | 
						|
								        <!-- 默认查注册用户 -->
							 | 
						|
								        <otherwise>
							 | 
						|
								            AND FIRST_REGISTER = '1'
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null == gridIds or gridIds.size == 0'>
							 | 
						|
								            AND GRID_ID = ''
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                GRID_ID = #{gridId}
							 | 
						|
								            </foreach>
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								    AND CREATED_TIME <![CDATA[>=]]> DATE_FORMAT(#{startDate},"%Y-%m-%d")
							 | 
						|
								    AND CREATED_TIME <![CDATA[<=]]> DATE_FORMAT(#{endDate},"%Y-%m-%d")
							 | 
						|
								</select>
							 | 
						|
								
							 | 
						|
								    <!-- 查询指定时间范围内党员的增量 传参:用户Id集合 | 时间区间 -->
							 | 
						|
								<select id="selectPartyIncrWithinTimeRange" resultType="integer">
							 | 
						|
								    SELECT
							 | 
						|
								    count( DISTINCT urole.USER_ID)
							 | 
						|
								    FROM
							 | 
						|
								    USER_ROLE urole
							 | 
						|
								    LEFT JOIN EPMET_ROLE erole ON urole.ROLE_ID = erole.ID
							 | 
						|
								    AND erole.DEL_FLAG = '0'
							 | 
						|
								    WHERE
							 | 
						|
								    urole.DEL_FLAG = '0'
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null == incrUserIds or incrUserIds.size == 0'>
							 | 
						|
								            AND urole.USER_ID = ''
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            <foreach collection="incrUserIds" item="incrUserId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                urole.USER_ID = #{incrUserId}
							 | 
						|
								            </foreach>
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								    AND urole.CREATED_TIME <![CDATA[>=]]> DATE_FORMAT(#{startDate},"%Y-%m-%d")
							 | 
						|
								    AND urole.CREATED_TIME <![CDATA[<=]]> DATE_FORMAT(#{endDate},"%Y-%m-%d")
							 | 
						|
								    AND erole.ROLE_NAME = '党员'
							 | 
						|
								</select>
							 | 
						|
								
							 | 
						|
								    <!-- 查询指定时间范围内热心居民的增量 传参:用户Id集合 |  网格Id集合 | 时间区间 -->
							 | 
						|
								<select id="selectWarmIncrWithinTimeRange" resultType="integer">
							 | 
						|
								    SELECT
							 | 
						|
								    count( DISTINCT urole.USER_ID)
							 | 
						|
								    FROM
							 | 
						|
								    USER_ROLE urole
							 | 
						|
								    LEFT JOIN EPMET_ROLE erole ON urole.ROLE_ID = erole.ID
							 | 
						|
								    AND erole.DEL_FLAG = '0'
							 | 
						|
								    WHERE
							 | 
						|
								    urole.DEL_FLAG = '0'
							 | 
						|
								    <foreach collection="incrUserIds" item="incrUserId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								        urole.USER_ID = #{incrUserId}
							 | 
						|
								    </foreach>
							 | 
						|
								    <choose>
							 | 
						|
								        <when test='null == gridIds or gridIds.size == 0'>
							 | 
						|
								            AND GRID_ID = ''
							 | 
						|
								        </when>
							 | 
						|
								        <otherwise>
							 | 
						|
								            <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                GRID_ID = #{gridId}
							 | 
						|
								            </foreach>
							 | 
						|
								        </otherwise>
							 | 
						|
								    </choose>
							 | 
						|
								    AND urole.CREATED_TIME <![CDATA[>=]]> DATE_FORMAT(#{startDate},"%Y-%m-%d")
							 | 
						|
								    AND urole.CREATED_TIME <![CDATA[<=]]> DATE_FORMAT(#{endDate},"%Y-%m-%d")
							 | 
						|
								    AND erole.ROLE_NAME = '热心居民'
							 | 
						|
								</select>
							 | 
						|
								
							 | 
						|
								    <!-- 查询用户是不是党员 -->
							 | 
						|
								<select id="selectUserIsParty" resultType="com.epmet.dto.extract.result.UserPartyResultDTO">
							 | 
						|
								    SELECT ur.user_id   AS userId,
							 | 
						|
								           er.role_name AS roleName
							 | 
						|
								    FROM user_role ur
							 | 
						|
								             LEFT JOIN epmet_role er ON er.id = ur.role_id
							 | 
						|
								    WHERE ur.del_flag = 0
							 | 
						|
								      AND er.del_flag = 0
							 | 
						|
								      AND
							 | 
						|
								        (
							 | 
						|
								            <foreach collection="userIds" item="item" separator=" OR ">
							 | 
						|
								                ur.user_id = #{item}
							 | 
						|
								            </foreach>
							 | 
						|
								        )
							 | 
						|
								</select>
							 | 
						|
								
							 | 
						|
								    <select id="selectPartymembersByCustomerId" resultType="string">
							 | 
						|
								        SELECT
							 | 
						|
								        DISTINCT
							 | 
						|
								            role.USER_ID
							 | 
						|
								        FROM
							 | 
						|
								        USER_ROLE role
							 | 
						|
								        LEFT JOIN EPMET_ROLE rolename
							 | 
						|
								        ON role.ROLE_ID = rolename.ID AND rolename.DEL_FLAG = '0'
							 | 
						|
								        WHERE
							 | 
						|
								        role.DEL_FLAG = '0'
							 | 
						|
								        AND
							 | 
						|
								        role.CUSTOMER_ID = #{customerId}
							 | 
						|
								        AND
							 | 
						|
								        rolename.ROLE_KEY = 'partymember'
							 | 
						|
								    </select>
							 | 
						|
								
							 | 
						|
								    <select id="selectWarmHeartedByCustomerId" resultType="com.epmet.dto.extract.form.GridHeartedFormDTO">
							 | 
						|
								        SELECT
							 | 
						|
								        DISTINCT
							 | 
						|
								            role.USER_ID,
							 | 
						|
								            role.GRID_ID
							 | 
						|
								        FROM
							 | 
						|
								        USER_ROLE role
							 | 
						|
								        LEFT JOIN EPMET_ROLE rolename
							 | 
						|
								        ON role.ROLE_ID = rolename.ID AND rolename.DEL_FLAG = '0'
							 | 
						|
								        WHERE
							 | 
						|
								        role.DEL_FLAG = '0'
							 | 
						|
								        AND
							 | 
						|
								        role.CUSTOMER_ID = #{customerId}
							 | 
						|
								        AND
							 | 
						|
								        rolename.ROLE_KEY = 'warmhearted'
							 | 
						|
								    </select>
							 | 
						|
								
							 | 
						|
								    <!--   查询当前网格下,首次注册的用户ids  -->
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    <select id="selectGridRegUserIds" parameterType="map" resultType="java.lang.String">
							 | 
						|
								        SELECT DISTINCT
							 | 
						|
								            USER_ID
							 | 
						|
								        FROM
							 | 
						|
								            register_relation rr
							 | 
						|
								        WHERE
							 | 
						|
								            rr.DEL_FLAG = '0'
							 | 
						|
								            AND rr.CUSTOMER_ID =#{customerId}
							 | 
						|
								            and rr.GRID_ID=#{gridId}
							 | 
						|
								            AND rr.FIRST_REGISTER = '1'
							 | 
						|
								    </select>
							 | 
						|
								
							 | 
						|
								    <!-- 获取客户下的网格注册居民 -->
							 | 
						|
								    <select id="selectRegisteredUserByCustomerId" resultType="com.epmet.entity.evaluationindex.screen.ScreenPartyUserRankDataEntity">
							 | 
						|
								        SELECT
							 | 
						|
								            register.CUSTOMER_ID,
							 | 
						|
								            register.GRID_ID,
							 | 
						|
								            register.USER_ID,
							 | 
						|
								            IFNULL(base.SURNAME,resi.SURNAME) AS surname,
							 | 
						|
								            IFNULL(base.NAME,resi.NAME) AS name,
							 | 
						|
								            IFNULL(base.REAl_NAME,concat(resi.SURNAME,resi.NAME)) AS userName,
							 | 
						|
								            0 AS partyFlag,
							 | 
						|
								            0 AS POINT_TOTAL,
							 | 
						|
								            0 AS INDEX_SCORE
							 | 
						|
								        FROM
							 | 
						|
								            REGISTER_RELATION register
							 | 
						|
								            LEFT JOIN USER_BASE_INFO base ON register.USER_ID = base.USER_ID
							 | 
						|
								            AND base.DEL_FLAG = '0'
							 | 
						|
								            LEFT JOIN USER_RESI_INFO resi ON register.USER_ID = resi.USER_ID
							 | 
						|
											AND resi.DEL_FLAG = '0'
							 | 
						|
								        WHERE
							 | 
						|
								            register.DEL_FLAG = '0'
							 | 
						|
								            AND register.CUSTOMER_ID = #{customerId}
							 | 
						|
								            AND register.FIRST_REGISTER = '1'
							 | 
						|
								    </select>
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    <select id="selectScreenProjectData" resultType="com.epmet.dto.screen.ScreenProjectDataDTO">
							 | 
						|
								        SELECT
							 | 
						|
								        CONCAT( STREET, '-', SURNAME, CASE WHEN GENDER = '1' THEN '先生' WHEN GENDER = '2' THEN '女士' ELSE '先生/女士' END ) AS linkName,
							 | 
						|
								        MOBILE AS linkMobile,
							 | 
						|
								        USER_ID as topicId
							 | 
						|
								        FROM
							 | 
						|
								        user_base_info
							 | 
						|
								        WHERE
							 | 
						|
								        del_flag = '0'
							 | 
						|
								        <foreach collection="list" item="userId" open="AND (" separator=" OR " close=")">
							 | 
						|
								            user_id = #{userId}
							 | 
						|
								        </foreach>
							 | 
						|
								    </select>
							 | 
						|
								
							 | 
						|
								    <!--    根据工作员用户id, 返回这些人当中多少个网格员 -->
							 | 
						|
								    <select id="selectGridManagerTotal" parameterType="map" resultType="int">
							 | 
						|
								        SELECT
							 | 
						|
								            count( 1 )
							 | 
						|
								        FROM
							 | 
						|
								            staff_role sr
							 | 
						|
								        WHERE
							 | 
						|
								            sr.DEL_FLAG = '0'
							 | 
						|
								            AND sr.CUSTOMER_ID = #{customerId}
							 | 
						|
								            AND sr.ROLE_ID IN (
							 | 
						|
								                SELECT
							 | 
						|
								                    m.id AS roleId
							 | 
						|
								                FROM
							 | 
						|
								                    gov_staff_role m
							 | 
						|
								                WHERE
							 | 
						|
								                    m.DEL_FLAG = '0'
							 | 
						|
								                    AND m.CUSTOMER_ID = #{customerId}
							 | 
						|
								                AND m.ROLE_KEY = 'grid_member'
							 | 
						|
								            )
							 | 
						|
								        AND sr.STAFF_ID in
							 | 
						|
								        <foreach collection="staffIds" item="staffId" open="(" close=")" separator=",">
							 | 
						|
								            #{staffId}
							 | 
						|
								        </foreach>
							 | 
						|
								    </select>
							 | 
						|
								    <select id="selectStaffInfo" resultType="com.epmet.dto.screen.ScreenProjectDataDTO">
							 | 
						|
								        SELECT
							 | 
						|
								            USER_ID as ID,
							 | 
						|
								            REAL_NAME AS linkName,
							 | 
						|
								            MOBILE AS linkMobile
							 | 
						|
								        FROM
							 | 
						|
								            customer_staff
							 | 
						|
								        WHERE
							 | 
						|
								        del_flag = '0'
							 | 
						|
								        <foreach collection="list" item="userId" open="AND (" separator=" OR " close=")">
							 | 
						|
								            user_id = #{userId}
							 | 
						|
								        </foreach>
							 | 
						|
								    </select>
							 | 
						|
								    <select id="getStaffByRoleKey" resultType="com.epmet.dto.user.result.StaffRoleInfoDTO">
							 | 
						|
								        SELECT
							 | 
						|
								            sr.CUSTOMER_ID,
							 | 
						|
								            sr.ORG_ID AS "agencyId",
							 | 
						|
								            sr.STAFF_ID,
							 | 
						|
								            cs.REAL_NAME AS "staffName"
							 | 
						|
								        FROM
							 | 
						|
								            staff_role sr
							 | 
						|
								        INNER JOIN gov_staff_role gsr ON sr.ROLE_ID = gsr.ID
							 | 
						|
								        AND gsr.DEL_FLAG = '0'
							 | 
						|
								        INNER JOIN customer_staff cs ON sr.STAFF_ID = cs.USER_ID
							 | 
						|
								        AND cs.DEL_FLAG = '0'
							 | 
						|
								        WHERE
							 | 
						|
								            sr.DEL_FLAG = '0'
							 | 
						|
								          AND gsr.ROLE_KEY = #{roleKey}
							 | 
						|
								          AND sr.CUSTOMER_ID = #{customerId}
							 | 
						|
								    </select>
							 | 
						|
								    <select id="selectUserByRoleKey" resultType="com.epmet.dto.user.result.CustomerStaffDTO">
							 | 
						|
								       SELECT
							 | 
						|
								            s.*,
							 | 
						|
								            gsr.ROLE_NAME
							 | 
						|
								        FROM
							 | 
						|
								            customer_staff s
							 | 
						|
								            LEFT JOIN staff_role sr ON sr.STAFF_ID = s.USER_ID AND sr.DEL_FLAG = '0'
							 | 
						|
								            AND sr.CUSTOMER_ID = s.CUSTOMER_ID
							 | 
						|
								            LEFT JOIN gov_staff_role gsr ON gsr.ID = sr.ROLE_ID AND gsr.DEL_FLAG = '0'
							 | 
						|
								        WHERE
							 | 
						|
								            s.del_flag = '0'
							 | 
						|
								            AND gsr.CUSTOMER_ID = #{customerId}
							 | 
						|
								            AND gsr.ROLE_KEY = #{roleKey}
							 | 
						|
								            GROUP BY s.USER_ID
							 | 
						|
								    </select>
							 | 
						|
								    <select id="selectLastStaffPatrolList" resultType="com.epmet.dto.user.result.StatsStaffPatrolRecordDailyDTO">
							 | 
						|
								        SELECT
							 | 
						|
								            t.STAFF_ID,
							 | 
						|
								            t.GRID gridId,
							 | 
						|
								            t.PATROL_START_TIME latestPatrolTime,
							 | 
						|
								            t.STATUS latestPatrolStatus
							 | 
						|
								        FROM
							 | 
						|
								            ( SELECT  DEL_FLAG,CUSTOMER_ID,GRID, STAFF_ID, max( CREATED_TIME ) AS CREATED_TIME FROM staff_patrol_record GROUP BY GRID, STAFF_ID ) a
							 | 
						|
								            LEFT JOIN staff_patrol_record t ON t.GRID = a.GRID
							 | 
						|
								            AND t.STAFF_ID = a.STAFF_ID
							 | 
						|
								            AND t.CREATED_TIME = a.CREATED_TIME
							 | 
						|
								        WHERE
							 | 
						|
								            a.del_flag = '0'
							 | 
						|
								            AND a.CUSTOMER_ID = #{customerId}
							 | 
						|
								
							 | 
						|
								    </select>
							 | 
						|
								    <select id="selectStaffPatrolListByDateId" resultType="com.epmet.dto.user.result.StaffPatrolRecordResult">
							 | 
						|
								       SELECT
							 | 
						|
								            r.*
							 | 
						|
								        FROM
							 | 
						|
								            staff_patrol_record r
							 | 
						|
								        WHERE
							 | 
						|
								             r.del_flag = '0' and r.customer_id = #{customerId}
							 | 
						|
								            AND DATE_FORMAT( r.ACTRUAL_END_TIME, '%Y%m%d' ) = #{dateId}
							 | 
						|
								    </select>
							 | 
						|
								
							 | 
						|
								    <!-- 查询注册用户的总量与增量【新方法】 -->
							 | 
						|
								    <select id="selectResiTotalAndIncrByGridIds" resultType="com.epmet.dto.user.result.TotalAndIncrResultDTO">
							 | 
						|
								        SELECT
							 | 
						|
								            IFNULL(count( DISTINCT rr.USER_ID ),0) AS total,
							 | 
						|
								            rr.GRID_ID,
							 | 
						|
								            IFNULL(t.userCount,0) AS monthlyIncr,
							 | 
						|
								            IFNULL(d.userCount,0) AS dailyIncr
							 | 
						|
								        FROM REGISTER_RELATION rr
							 | 
						|
								        LEFT JOIN (
							 | 
						|
								                SELECT
							 | 
						|
								                    IFNULL(count(DISTINCT USER_ID),0) AS userCount,
							 | 
						|
								                    GRID_ID
							 | 
						|
								                FROM
							 | 
						|
								                    REGISTER_RELATION
							 | 
						|
								                WHERE
							 | 
						|
								                    DEL_FLAG = '0'
							 | 
						|
								                  <if test='regOrPartiFlag == "parti" '>
							 | 
						|
								                      AND ((FIRST_REGISTER = '1' AND REGISTER = '1' AND PARTICIPATION = '1') OR (FIRST_REGISTER = '0' AND REGISTER = '0' AND PARTICIPATION = '1'))
							 | 
						|
								                  </if>
							 | 
						|
								                  <if test='regOrPartiFlag == "reg" '>
							 | 
						|
								                      AND FIRST_REGISTER = '1'
							 | 
						|
								                  </if>
							 | 
						|
								                  <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                      GRID_ID = #{gridId}
							 | 
						|
								                  </foreach>
							 | 
						|
								                AND DATE_FORMAT(CREATED_TIME,"%Y-%m-%d") BETWEEN DATE_FORMAT(#{startDate},"%Y-%m-%d") AND DATE_FORMAT(
							 | 
						|
								                IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(), INTERVAL 1 DAY ))
							 | 
						|
								                ,"%Y-%m-%d")
							 | 
						|
								                GROUP BY GRID_ID
							 | 
						|
								            ) t ON ( t.grid_id = rr.GRID_ID )
							 | 
						|
								        LEFT JOIN (
							 | 
						|
								                SELECT
							 | 
						|
								                    IFNULL(count(DISTINCT USER_ID),0) AS userCount,
							 | 
						|
								                    GRID_ID
							 | 
						|
								                FROM REGISTER_RELATION
							 | 
						|
								                WHERE DEL_FLAG = '0'
							 | 
						|
								                    <if test='regOrPartiFlag == "parti" '>
							 | 
						|
								                        AND ((FIRST_REGISTER = '1' AND REGISTER = '1' AND PARTICIPATION = '1') OR (FIRST_REGISTER = '0' AND REGISTER = '0' AND PARTICIPATION = '1'))
							 | 
						|
								                    </if>
							 | 
						|
								                    <if test='regOrPartiFlag == "reg" '>
							 | 
						|
								                        AND FIRST_REGISTER = '1'
							 | 
						|
								                    </if>
							 | 
						|
								                    <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                        GRID_ID = #{gridId}
							 | 
						|
								                    </foreach>
							 | 
						|
								                    AND DATE_FORMAT(CREATED_TIME,"%Y-%m-%d") = DATE_FORMAT(IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(), INTERVAL 1 DAY )),"%Y-%m-%d")
							 | 
						|
								                GROUP BY GRID_ID
							 | 
						|
								        ) d ON ( d.grid_id = rr.GRID_ID )
							 | 
						|
								        WHERE
							 | 
						|
								            rr.DEL_FLAG = '0'
							 | 
						|
								            <if test='regOrPartiFlag == "parti" '>
							 | 
						|
								                AND ((rr.FIRST_REGISTER = '1' AND rr.REGISTER = '1' AND rr.PARTICIPATION = '1') OR (rr.FIRST_REGISTER = '0' AND rr.REGISTER = '0' AND rr.PARTICIPATION = '1'))
							 | 
						|
								            </if>
							 | 
						|
								            <if test='regOrPartiFlag == "reg" '>
							 | 
						|
								                AND rr.FIRST_REGISTER = '1'
							 | 
						|
								            </if>
							 | 
						|
								            <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                rr.GRID_ID = #{gridId}
							 | 
						|
								            </foreach>
							 | 
						|
								            AND DATE_FORMAT(rr.CREATED_TIME,"%Y-%m-%d") <![CDATA[<=]]> IF(null != #{targetDate} OR '' !=#{targetDate},DATE_FORMAT(#{targetDate},"%Y-%m-%d"),DATE_FORMAT( DATE_SUB( CURDATE( ), INTERVAL 1 DAY ),"%Y-%m-%d"))
							 | 
						|
								        GROUP BY GRID_ID
							 | 
						|
								    </select>
							 | 
						|
								
							 | 
						|
								    <resultMap id="selectIncrUserIdsByGridsMap" type="com.epmet.dto.user.result.IncrAndTotalUserIdsResultDTO">
							 | 
						|
								        <result property="gridId" column="gridId"/>
							 | 
						|
								        <result property="type" column="type"/>
							 | 
						|
								        <collection property="userIds" ofType="java.lang.String">
							 | 
						|
								            <result column="userId"/>
							 | 
						|
								        </collection>
							 | 
						|
								    </resultMap>
							 | 
						|
								    <!-- 查询指定网格范围下单位时间内新增的注册用户Id【新方法】 -->
							 | 
						|
								    <select id="selectIncrUserIdsByGrids" resultMap="selectIncrUserIdsByGridsMap">
							 | 
						|
								        (SELECT
							 | 
						|
								            DISTINCT(rr.USER_ID) AS userId,
							 | 
						|
								            r2.GRID_ID AS gridId,
							 | 
						|
								            'monthly' AS type
							 | 
						|
								        FROM REGISTER_RELATION rr
							 | 
						|
								        LEFT JOIN register_relation r2 ON (r2.GRID_ID = rr.GRID_ID AND r2.DEL_FLAG = 0)
							 | 
						|
								        WHERE
							 | 
						|
								            rr.DEL_FLAG = '0'
							 | 
						|
								            <if test='regOrPartiFlag == "parti" '>
							 | 
						|
								                AND ((rr.FIRST_REGISTER = '1' AND rr.REGISTER = '1' AND rr.PARTICIPATION = '1') OR (rr.FIRST_REGISTER = '0' AND rr.REGISTER = '0' AND rr.PARTICIPATION = '1'))
							 | 
						|
								            </if>
							 | 
						|
								            <if test='regOrPartiFlag == "reg" '>
							 | 
						|
								                AND rr.FIRST_REGISTER = '1'
							 | 
						|
								            </if>
							 | 
						|
								            <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                rr.GRID_ID = #{gridId}
							 | 
						|
								            </foreach>
							 | 
						|
								            AND DATE_FORMAT(rr.CREATED_TIME,"%Y-%m-%d") BETWEEN DATE_FORMAT(#{startDate},"%Y-%m-%d") AND
							 | 
						|
								            DATE_FORMAT(IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(),INTERVAL 1 DAY)),"%Y-%m-%d")
							 | 
						|
								        ) UNION ALL
							 | 
						|
								        (SELECT
							 | 
						|
								            DISTINCT(rr.USER_ID) AS userId,
							 | 
						|
								            r2.GRID_ID AS gridId,
							 | 
						|
								            'daily' AS type
							 | 
						|
								        FROM REGISTER_RELATION rr
							 | 
						|
								        LEFT JOIN register_relation r2 ON (r2.GRID_ID = rr.GRID_ID AND r2.DEL_FLAG = 0)
							 | 
						|
								        WHERE
							 | 
						|
								            rr.DEL_FLAG = '0'
							 | 
						|
								            <if test='regOrPartiFlag == "parti" '>
							 | 
						|
								                AND ((rr.FIRST_REGISTER = '1' AND rr.REGISTER = '1' AND rr.PARTICIPATION = '1') OR (rr.FIRST_REGISTER = '0' AND rr.REGISTER = '0' AND rr.PARTICIPATION = '1'))
							 | 
						|
								            </if>
							 | 
						|
								            <if test='regOrPartiFlag == "reg" '>
							 | 
						|
								                AND rr.FIRST_REGISTER = '1'
							 | 
						|
								            </if>
							 | 
						|
								            <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                rr.GRID_ID = #{gridId}
							 | 
						|
								            </foreach>
							 | 
						|
								            AND DATE_FORMAT(rr.CREATED_TIME,"%Y-%m-%d") = DATE_FORMAT(IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(),INTERVAL 1 DAY)),"%Y-%m-%d")
							 | 
						|
								        )
							 | 
						|
								    </select>
							 | 
						|
								
							 | 
						|
								    <!-- 查询热心居民的总量与增量【新方法】 -->
							 | 
						|
								    <select id="selectWarmTotalAndIncrByGrids" resultType="com.epmet.dto.user.result.WarmTotalAndIncrResultDTO">
							 | 
						|
								        SELECT
							 | 
						|
								            IFNULL(COUNT(DISTINCT ur.USER_ID),0) AS total,
							 | 
						|
								            ur.GRID_ID,
							 | 
						|
								            IFNULL(t.userCount,0) AS monthlyIncr,
							 | 
						|
								            IFNULL(d.userCount,0) AS dailyIncr
							 | 
						|
								        FROM USER_ROLE ur
							 | 
						|
								        LEFT JOIN EPMET_ROLE erole ON ( ur.ROLE_ID = erole.ID AND erole.DEL_FLAG = '0' )
							 | 
						|
								        LEFT JOIN (
							 | 
						|
								            SELECT
							 | 
						|
								                COUNT( DISTINCT ur.USER_ID ) AS userCount,
							 | 
						|
								                ur.GRID_ID
							 | 
						|
								            FROM USER_ROLE ur
							 | 
						|
								            LEFT JOIN EPMET_ROLE erole ON (ur.ROLE_ID = erole.ID AND erole.DEL_FLAG = '0')
							 | 
						|
								            WHERE ur.DEL_FLAG = '0'
							 | 
						|
								                <if test="null != incrMonthlyUserIds and incrMonthlyUserIds.size() > 0 ">
							 | 
						|
								                    <foreach collection="incrMonthlyUserIds" item="incrUserId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                        ur.USER_ID = #{incrUserId}
							 | 
						|
								                    </foreach>
							 | 
						|
								                </if>
							 | 
						|
								                <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                    ur.GRID_ID = #{gridId}
							 | 
						|
								                </foreach>
							 | 
						|
								                AND DATE_FORMAT(ur.CREATED_TIME,"%Y-%m-%d") BETWEEN DATE_FORMAT(#{startDate},"%Y-%m-%d") AND
							 | 
						|
								                DATE_FORMAT(IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(),INTERVAL 1 DAY)),"%Y-%m-%d")
							 | 
						|
								                AND erole.ROLE_NAME = '热心居民'
							 | 
						|
								            GROUP BY ur.GRID_ID
							 | 
						|
								        ) t ON ( t.GRID_ID = ur.GRID_ID )
							 | 
						|
								        LEFT JOIN (
							 | 
						|
								                SELECT
							 | 
						|
								                    COUNT( DISTINCT ur.USER_ID ) AS userCount,
							 | 
						|
								                    ur.GRID_ID
							 | 
						|
								                FROM USER_ROLE ur
							 | 
						|
								                LEFT JOIN EPMET_ROLE erole ON (ur.ROLE_ID = erole.ID AND erole.DEL_FLAG = '0')
							 | 
						|
								                WHERE ur.DEL_FLAG = '0'
							 | 
						|
								                    <if test="null != incrDailyUserIds and incrDailyUserIds.size() > 0 ">
							 | 
						|
								                        <foreach collection="incrDailyUserIds" item="incrUserId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                            ur.USER_ID = #{incrUserId}
							 | 
						|
								                        </foreach>
							 | 
						|
								                    </if>
							 | 
						|
								                    <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                        ur.GRID_ID = #{gridId}
							 | 
						|
								                    </foreach>
							 | 
						|
								                    AND DATE_FORMAT(ur.CREATED_TIME,"%Y-%m-%d") = DATE_FORMAT(IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(),INTERVAL 1 DAY)),"%Y-%m-%d")
							 | 
						|
								                    AND erole.ROLE_NAME = '热心居民'
							 | 
						|
								                GROUP BY ur.GRID_ID
							 | 
						|
								        ) d ON ( d.GRID_ID = ur.GRID_ID )
							 | 
						|
								        WHERE ur.DEL_FLAG = '0'
							 | 
						|
								            <if test="userIds.size() > 0 and null != userIds ">
							 | 
						|
								                <foreach collection="userIds" item="incrUserId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                    ur.USER_ID = #{incrUserId}
							 | 
						|
								                </foreach>
							 | 
						|
								            </if>
							 | 
						|
								            <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                ur.GRID_ID = #{gridId}
							 | 
						|
								            </foreach>
							 | 
						|
								        AND DATE_FORMAT(ur.CREATED_TIME,"%Y-%m-%d") <![CDATA[<=]]> IF(null != #{targetDate} OR '' !=#{targetDate},DATE_FORMAT(#{targetDate},"%Y-%m-%d"),DATE_FORMAT( DATE_SUB( CURDATE( ), INTERVAL 1 DAY ),"%Y-%m-%d"))
							 | 
						|
								            AND erole.ROLE_NAME = '热心居民'
							 | 
						|
								        GROUP BY ur.GRID_ID
							 | 
						|
								    </select>
							 | 
						|
								
							 | 
						|
								    <!-- 查询党员的总量与增量【新方法】 -->
							 | 
						|
								    <select id="selectPartyTotalAndIncrNew" resultType="com.epmet.dto.user.result.PartyTotalAndIncrResultDTO">
							 | 
						|
								        SELECT
							 | 
						|
								            IFNULL(count(DISTINCT urole.USER_ID),0) AS total,
							 | 
						|
								            rr.GRID_ID,
							 | 
						|
								            IFNULL(t.userCount,0) AS monthlyIncr,
							 | 
						|
								            IFNULL(d.userCount,0) AS dailyIncr
							 | 
						|
								        FROM USER_ROLE urole
							 | 
						|
								        LEFT JOIN EPMET_ROLE erole ON (urole.ROLE_ID = erole.ID AND erole.DEL_FLAG = '0')
							 | 
						|
								        LEFT JOIN register_relation rr ON (rr.USER_ID = urole.USER_ID)
							 | 
						|
								        LEFT JOIN (
							 | 
						|
								            SELECT
							 | 
						|
								                count(distinct urole.USER_ID) AS userCount,
							 | 
						|
								                rr.GRID_ID
							 | 
						|
								            FROM USER_ROLE urole
							 | 
						|
								            LEFT JOIN EPMET_ROLE erole ON (urole.ROLE_ID = erole.ID AND erole.DEL_FLAG = '0')
							 | 
						|
								            LEFT JOIN register_relation rr ON (rr.USER_ID = urole.USER_ID)
							 | 
						|
								            WHERE
							 | 
						|
								                urole.DEL_FLAG = '0'
							 | 
						|
								                AND erole.ROLE_NAME = '党员'
							 | 
						|
								                AND DATE_FORMAT(rr.CREATED_TIME,"%Y-%m-%d") BETWEEN DATE_FORMAT(#{startDate},"%Y-%m-%d") AND
							 | 
						|
								                DATE_FORMAT(IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(),INTERVAL 1 DAY)),"%Y-%m-%d")
							 | 
						|
								                <if test='regOrPartiFlag == "parti" '>
							 | 
						|
								                    AND ((rr.FIRST_REGISTER = '1' AND rr.REGISTER = '1' AND rr.PARTICIPATION = '1') OR (rr.FIRST_REGISTER = '0' AND rr.REGISTER = '0' AND rr.PARTICIPATION = '1'))
							 | 
						|
								                </if>
							 | 
						|
								                <if test='regOrPartiFlag == "reg" '>
							 | 
						|
								                    AND rr.FIRST_REGISTER = '1'
							 | 
						|
								                </if>
							 | 
						|
								            GROUP BY rr.GRID_ID
							 | 
						|
								        ) t ON (t.GRID_ID = rr.GRID_ID)
							 | 
						|
								        LEFT JOIN (
							 | 
						|
								                SELECT
							 | 
						|
								                    count(distinct urole.USER_ID) AS userCount,
							 | 
						|
								                    rr.GRID_ID
							 | 
						|
								                FROM USER_ROLE urole
							 | 
						|
								                LEFT JOIN EPMET_ROLE erole ON (urole.ROLE_ID = erole.ID AND erole.DEL_FLAG = '0')
							 | 
						|
								                LEFT JOIN register_relation rr ON (rr.USER_ID = urole.USER_ID)
							 | 
						|
								                WHERE
							 | 
						|
								                    urole.DEL_FLAG = '0'
							 | 
						|
								                    AND erole.ROLE_NAME = '党员'
							 | 
						|
								                    AND DATE_FORMAT(rr.CREATED_TIME,"%Y-%m-%d") = DATE_FORMAT(IF(null != #{targetDate} OR '' !=#{targetDate},#{targetDate},DATE_SUB(CURDATE(),INTERVAL 1 DAY)),"%Y-%m-%d")
							 | 
						|
								                    <if test='regOrPartiFlag == "parti" '>
							 | 
						|
								                        AND ((rr.FIRST_REGISTER = '1' AND rr.REGISTER = '1' AND rr.PARTICIPATION = '1') OR (rr.FIRST_REGISTER = '0' AND rr.REGISTER = '0' AND rr.PARTICIPATION = '1'))
							 | 
						|
								                    </if>
							 | 
						|
								                    <if test='regOrPartiFlag == "reg" '>
							 | 
						|
								                        AND rr.FIRST_REGISTER = '1'
							 | 
						|
								                    </if>
							 | 
						|
								                GROUP BY rr.GRID_ID
							 | 
						|
								        ) d ON (d.GRID_ID = rr.GRID_ID)
							 | 
						|
								        WHERE
							 | 
						|
								            urole.DEL_FLAG = '0'
							 | 
						|
								            AND DATE_FORMAT(rr.CREATED_TIME,"%Y-%m-%d") <![CDATA[<=]]> DATE_FORMAT( IF(null != #{targetDate} OR '' != #{targetDate},#{targetDate}, DATE_SUB(CURDATE(),INTERVAL 1 DAY)),'%Y-%m-%d')
							 | 
						|
								            <if test='regOrPartiFlag == "parti" '>
							 | 
						|
								                AND ((rr.FIRST_REGISTER = '1' AND rr.REGISTER = '1' AND rr.PARTICIPATION = '1') OR (rr.FIRST_REGISTER = '0' AND rr.REGISTER = '0' AND rr.PARTICIPATION = '1'))
							 | 
						|
								            </if>
							 | 
						|
								            <if test='regOrPartiFlag == "reg" '>
							 | 
						|
								                AND rr.FIRST_REGISTER = '1'
							 | 
						|
								            </if>
							 | 
						|
								          AND erole.ROLE_NAME = '党员'
							 | 
						|
								        GROUP BY rr.GRID_ID
							 | 
						|
								    </select>
							 | 
						|
								
							 | 
						|
								    <!-- 查询指定时间范围内注册/参与用户增量【新方法】 -->
							 | 
						|
								    <select id="selectIncrWithinTimeRangeByGrids" resultType="com.epmet.dto.user.result.IncrWithinTimeRangeResultDTO">
							 | 
						|
								        SELECT
							 | 
						|
								            IFNULL(COUNT( distinct USER_ID),0) AS userCount,
							 | 
						|
								            GRID_ID
							 | 
						|
								        FROM register_relation
							 | 
						|
								        WHERE
							 | 
						|
								            DEL_FLAG = '0'
							 | 
						|
								            <if test='regOrPartiFlag == "parti" '>
							 | 
						|
								                AND ((FIRST_REGISTER = '1' AND REGISTER = '1' AND PARTICIPATION = '1') OR (FIRST_REGISTER = '0' AND REGISTER = '0' AND PARTICIPATION = '1'))
							 | 
						|
								            </if>
							 | 
						|
								            <if test='regOrPartiFlag == "reg" '>
							 | 
						|
								                AND FIRST_REGISTER = '1'
							 | 
						|
								            </if>
							 | 
						|
								            <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								                GRID_ID = #{gridId}
							 | 
						|
								            </foreach>
							 | 
						|
								            AND CREATED_TIME <![CDATA[>=]]> DATE_FORMAT(#{startDate},"%Y-%m-%d")
							 | 
						|
								            AND CREATED_TIME <![CDATA[<=]]> DATE_FORMAT(#{endDate},"%Y-%m-%d")
							 | 
						|
								        GROUP BY GRID_ID
							 | 
						|
								    </select>
							 | 
						|
								
							 | 
						|
								    <!-- 查询指定网格范围下单位时间内全部的注册用户Id【新方法】 -->
							 | 
						|
								    <resultMap id="selectTotalUserIdsByGridsMap" type="com.epmet.dto.user.result.IncrAndTotalUserIdsResultDTO">
							 | 
						|
								        <result property="gridId" column="gridId"/>
							 | 
						|
								        <collection property="userIds" ofType="java.lang.String">
							 | 
						|
								            <result column="userId"/>
							 | 
						|
								        </collection>
							 | 
						|
								    </resultMap>
							 | 
						|
								    <select id="selectTotalUserIdsByGrids" resultMap="selectTotalUserIdsByGridsMap">
							 | 
						|
								        SELECT
							 | 
						|
								        DISTINCT(rr.USER_ID) AS userId,
							 | 
						|
								        r2.GRID_ID AS gridId
							 | 
						|
								        FROM REGISTER_RELATION rr
							 | 
						|
								        LEFT JOIN register_relation r2 ON (r2.GRID_ID = rr.GRID_ID AND r2.DEL_FLAG = 0)
							 | 
						|
								        WHERE
							 | 
						|
								        rr.DEL_FLAG = '0'
							 | 
						|
								        <if test='regOrPartiFlag == "parti" '>
							 | 
						|
								            AND ((rr.FIRST_REGISTER = '1' AND rr.REGISTER = '1' AND rr.PARTICIPATION = '1') OR (rr.FIRST_REGISTER = '0' AND rr.REGISTER = '0' AND rr.PARTICIPATION = '1'))
							 | 
						|
								        </if>
							 | 
						|
								        <if test='regOrPartiFlag == "reg" '>
							 | 
						|
								            AND rr.FIRST_REGISTER = '1'
							 | 
						|
								        </if>
							 | 
						|
								        <foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
							 | 
						|
								            rr.GRID_ID = #{gridId}
							 | 
						|
								        </foreach>
							 | 
						|
								            AND DATE_FORMAT(rr.CREATED_TIME,"%Y-%m-%d") <![CDATA[<=]]> IF(null != #{targetDate} OR '' !=#{targetDate},DATE_FORMAT(#{targetDate},"%Y-%m-%d"),DATE_FORMAT( DATE_SUB( CURDATE( ), INTERVAL 1 DAY ),"%Y-%m-%d"))
							 | 
						|
								    </select>
							 | 
						|
								
							 | 
						|
								    <delete id="delGmUploadEvent">
							 | 
						|
								        DELETE
							 | 
						|
								        FROM
							 | 
						|
								            stats_staff_patrol_record_daily
							 | 
						|
								        WHERE
							 | 
						|
								            customer_id = #{customerId}
							 | 
						|
								        AND date_id = #{dateId}
							 | 
						|
								        LIMIT 1000
							 | 
						|
								    </delete>
							 | 
						|
								
							 | 
						|
								    <insert id="saveOrUpGmUploadEvent">
							 | 
						|
								        INSERT INTO stats_staff_patrol_record_daily
							 | 
						|
								        (
							 | 
						|
								            id,
							 | 
						|
								            source_type,
							 | 
						|
								            customer_id,
							 | 
						|
								            source_customer_id,
							 | 
						|
								            date_id,
							 | 
						|
								            week_id,
							 | 
						|
								            month_id,
							 | 
						|
								            quarter_id,
							 | 
						|
								            year_id,
							 | 
						|
								            grid_id,
							 | 
						|
								            agency_id,
							 | 
						|
								            grid_pids,
							 | 
						|
								            staff_id,
							 | 
						|
								            patrol_total,
							 | 
						|
								            total_time,
							 | 
						|
								            report_project_count,
							 | 
						|
								            latest_patrol_time,
							 | 
						|
								            latest_patrol_status,
							 | 
						|
								            del_flag,
							 | 
						|
								            revision,
							 | 
						|
								            created_by,
							 | 
						|
								            created_time,
							 | 
						|
								            updated_by,
							 | 
						|
								            updated_time
							 | 
						|
								        )
							 | 
						|
								        VALUES
							 | 
						|
								        <foreach collection="list" item="i" separator=",">
							 | 
						|
								        (
							 | 
						|
								            REPLACE(UUID(), '-', ''),
							 | 
						|
								            #{i.sourceType},
							 | 
						|
								            #{i.parentCustomerId},
							 | 
						|
								            #{i.customerId},
							 | 
						|
								            #{i.dateId},
							 | 
						|
								            #{i.weekId},
							 | 
						|
								            #{i.monthId},
							 | 
						|
								            #{i.quarterId},
							 | 
						|
								            #{i.yearId},
							 | 
						|
								            #{i.gridId},
							 | 
						|
								            #{i.agencyId},
							 | 
						|
								            #{i.gridPids},
							 | 
						|
								            #{i.staffId},
							 | 
						|
								            #{i.patrolTotal},
							 | 
						|
								            #{i.totalTime},
							 | 
						|
								            #{i.reportProjectCount},
							 | 
						|
								            #{i.latestPatrolTime},
							 | 
						|
								            #{i.latestPatrolStatus},
							 | 
						|
								            0,
							 | 
						|
								            0,
							 | 
						|
								            'BASE_REPORT',
							 | 
						|
								            NOW(),
							 | 
						|
								            'BASE_REPORT',
							 | 
						|
								            NOW()
							 | 
						|
								        )
							 | 
						|
								        </foreach>
							 | 
						|
								        ON DUPLICATE KEY
							 | 
						|
								        UPDATE
							 | 
						|
								            source_type = values(source_type),
							 | 
						|
								            customer_id = values(customer_id),
							 | 
						|
								            source_customer_id = values(source_customer_id),
							 | 
						|
								            report_project_count = values(report_project_count),
							 | 
						|
								            updated_by = 'BASE_REPORT',
							 | 
						|
								            updated_time = NOW()
							 | 
						|
								    </insert>
							 | 
						|
								
							 | 
						|
								    <select id="getStaffBaseInfo" resultType="com.epmet.dto.user.result.CustomerStaffDTO">
							 | 
						|
								        SELECT
							 | 
						|
								            cs.*
							 | 
						|
								        FROM
							 | 
						|
								            customer_staff cs
							 | 
						|
								        WHERE 1=1
							 | 
						|
								        AND cs.customer_id = #{customerId}
							 | 
						|
								        <if test="staffIdList != null and staffIdList.size() > 0">
							 | 
						|
								            <foreach collection="staffIdList" item="staffId" open="AND cs.user_id IN (" separator="," close=")">
							 | 
						|
								                #{staffId}
							 | 
						|
								            </foreach>
							 | 
						|
								        </if>
							 | 
						|
								    </select>
							 | 
						|
								    <select id="getPatrolRecordList" resultType="com.epmet.dto.user.result.MidPatrolRecordResult">
							 | 
						|
								        SELECT
							 | 
						|
								            m.id,
							 | 
						|
								            m.customer_id,
							 | 
						|
								            m.grid,
							 | 
						|
								            m.grid_pids,
							 | 
						|
								            m.staff_id,
							 | 
						|
								            m.agency_id,
							 | 
						|
								            m.patrol_start_time,
							 | 
						|
								            m.patrol_end_time,
							 | 
						|
								            m.actrual_end_time,
							 | 
						|
								            m.total_time,
							 | 
						|
								            m.STATUS,
							 | 
						|
								            m.del_flag,
							 | 
						|
								            m.revision,
							 | 
						|
								            m.created_by,
							 | 
						|
								            m.created_time,
							 | 
						|
								            m.updated_by,
							 | 
						|
								            m.updated_time,
							 | 
						|
								            GROUP_CONCAT(d.LATITUDE,',',d.LONGITUDE ORDER BY d.CREATED_TIME ASC SEPARATOR ';') AS route
							 | 
						|
								        FROM
							 | 
						|
								            staff_patrol_record m
							 | 
						|
								            LEFT JOIN staff_patrol_detail d ON m.ID = d.STAFF_PATROL_REC_ID
							 | 
						|
								        WHERE
							 | 
						|
								            1 =1
							 | 
						|
								            <if test="objectId != null and objectId != ''">
							 | 
						|
								                AND  m.ID = #{objectId}
							 | 
						|
								            </if>
							 | 
						|
								            and m.CUSTOMER_ID = #{customerId}
							 | 
						|
								            AND m.DEL_FLAG = '0'
							 | 
						|
								            GROUP BY m.ID
							 | 
						|
								            order by m.created_time
							 | 
						|
								            LIMIT #{offset},#{pageSize}
							 | 
						|
								    </select>
							 | 
						|
								    <select id="getPatrolDetailList" resultType="com.epmet.dto.user.result.MidPatrolDetailResult">
							 | 
						|
								        select
							 | 
						|
								            id, customer_id, staff_patrol_rec_id,latitude, longitude, del_flag, revision, created_by, created_time, updated_by, updated_time
							 | 
						|
								        from staff_patrol_detail
							 | 
						|
								        WHERE
							 | 
						|
								            1=1
							 | 
						|
								            <if test="objectId != null and objectId != ''">
							 | 
						|
								                AND  staff_patrol_rec_id = #{objectId}
							 | 
						|
								            </if>
							 | 
						|
								            and CUSTOMER_ID = #{customerId}
							 | 
						|
								            AND DEL_FLAG = '0'
							 | 
						|
								            order by created_time
							 | 
						|
								            LIMIT #{offset},#{pageSize}
							 | 
						|
								    </select>
							 | 
						|
								
							 | 
						|
								    <!-- 从UserId列表中过滤符合条件的UserId列表出来 -->
							 | 
						|
								    <select id="filterUserIds" resultType="java.lang.String">
							 | 
						|
								        select distinct ur.USER_ID
							 | 
						|
								        from user_role ur
							 | 
						|
								                 inner join epmet_role er on (ur.ROLE_ID = er.ID)
							 | 
						|
								        where ur.DEL_FLAG = 0
							 | 
						|
								          and ur.USER_ID in
							 | 
						|
								          <foreach collection="userIds" open="(" item="userId" separator="," close=")">
							 | 
						|
								            #{userId}
							 | 
						|
								          </foreach>
							 | 
						|
								            and er.ROLE_KEY = #{roleKey}
							 | 
						|
								    </select>
							 | 
						|
								
							 | 
						|
								</mapper>
							 | 
						|
								
							 |