AND ((FIRST_REGISTER = '1' AND REGISTER = '1' AND PARTICIPATION = '1') OR (FIRST_REGISTER = '0' AND REGISTER = '0' AND PARTICIPATION = '1'))
</if>
<iftest='regOrPartiFlag == "reg" '>
AND FIRST_REGISTER = '1'
</if>
<foreachcollection="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")
<foreachcollection="gridIds"item="gridId"index="index"open="AND ( "separator=" OR "close=")">
GRID_ID = #{gridId}
</foreach>
<iftest='selectType == "incr" '>
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) UNION ALL
(SELECT
DISTINCT(USER_ID) AS userIds,
GRID_ID,
'daily' AS type
FROM REGISTER_RELATION
WHERE
DEL_FLAG = '0'
<iftest='regOrPartiFlag == "parti" '>
AND ((FIRST_REGISTER = '1' AND REGISTER = '1' AND PARTICIPATION = '1') OR (FIRST_REGISTER = '0' AND REGISTER = '0' AND PARTICIPATION = '1'))
</if>
<iftest='selectType == "total" '>
AND DATE_FORMAT(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"))
<iftest='regOrPartiFlag == "reg" '>
AND FIRST_REGISTER = '1'
</if>
GROUP BY GRID_ID
<foreachcollection="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)
</select>
<!-- 查询热心居民的总量与增量【新方法】 -->
@ -710,7 +744,8 @@
SELECT
IFNULL(COUNT(DISTINCT ur.USER_ID),0) AS total,
ur.GRID_ID,
IFNULL(t.userCount,0) AS incr
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 (
@ -720,8 +755,8 @@
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'
<iftest="null != incrUserIds and incrUserIds.size() > 0 ">
<foreachcollection="incrUserIds"item="incrUserId"index="index"open="AND ( "separator=" OR "close=")">
<iftest="null != incrMonthlyUserIds and incrMonthlyUserIds.size() > 0 ">
<foreachcollection="incrMonthlyUserIds"item="incrUserId"index="index"open="AND ( "separator=" OR "close=")">
ur.USER_ID = #{incrUserId}
</foreach>
</if>
@ -733,9 +768,28 @@
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'
<iftest="incrUserIds.size() > 0 and null != incrUserIds ">
<foreachcollection="incrUserIds"item="incrUserId"index="index"open="AND ( "separator=" OR "close=")">
<iftest="null != incrDailyUserIds and incrDailyUserIds.size() > 0 ">
<foreachcollection="incrDailyUserIds"item="incrUserId"index="index"open="AND ( "separator=" OR "close=")">
ur.USER_ID = #{incrUserId}
</foreach>
</if>
<foreachcollection="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'
<iftest="userIds.size() > 0 and null != userIds ">
<foreachcollection="userIds"item="incrUserId"index="index"open="AND ( "separator=" OR "close=")">
ur.USER_ID = #{incrUserId}
</foreach>
</if>
@ -752,7 +806,8 @@
SELECT
IFNULL(count(urole.USER_ID),0) AS total,
rr.GRID_ID,
IFNULL(t.userCount,0) AS incr
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)
@ -776,6 +831,25 @@
</if>
GROUP BY rr.GRID_ID
) t ON (t.GRID_ID = rr.GRID_ID)
LEFT JOIN (
SELECT
count(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")
<iftest='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>
<iftest='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')