Browse Source

再次优化🙁

dev_shibei_match
zxc 4 years ago
parent
commit
df12e5cc9e
  1. 5
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/IncrAndTotalUserIdsResultDTO.java
  2. 4
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/PartyTotalAndIncrResultDTO.java
  3. 13
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/TotalAndIncrResultDTO.java
  4. 17
      epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/WarmTotalAndIncrResultDTO.java
  5. 30
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java
  6. 95
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java
  7. 4
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/util/ModuleConstant.java
  8. 128
      epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml

5
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/IncrAndTotalUserIdsResultDTO.java

@ -18,4 +18,9 @@ public class IncrAndTotalUserIdsResultDTO implements Serializable {
private String gridId;
private List<String> userIds;
/**
* userId类型dailymonthly
*/
private String type;
}

4
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/PartyTotalAndIncrResultDTO.java

@ -16,7 +16,9 @@ public class PartyTotalAndIncrResultDTO implements Serializable {
private String gridId;
private Integer incr;
private Integer dailyIncr;
private Integer monthlyIncr;
private Integer total;
}

13
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/TotalAndIncrResultDTO.java

@ -1,5 +1,6 @@
package com.epmet.dto.user.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
@ -14,9 +15,17 @@ public class TotalAndIncrResultDTO implements Serializable {
private static final long serialVersionUID = -3184476610188193106L;
private Integer total = 0;
private Integer total;
private Integer incr = 0;
private Integer dailyIncr;
private Integer monthlyIncr;
private String gridId;
public TotalAndIncrResultDTO() {
this.total = NumConstant.ZERO;
this.dailyIncr = NumConstant.ZERO;
this.monthlyIncr = NumConstant.ZERO;
}
}

17
epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/user/result/WarmTotalAndIncrResultDTO.java

@ -1,5 +1,6 @@
package com.epmet.dto.user.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.Data;
import java.io.Serializable;
@ -18,5 +19,19 @@ public class WarmTotalAndIncrResultDTO implements Serializable {
private Integer total;
private Integer incr;
/**
* 日增
*/
private Integer dailyIncr;
/**
* 月增
*/
private Integer monthlyIncr;
public WarmTotalAndIncrResultDTO() {
this.total = NumConstant.ZERO;
this.dailyIncr = NumConstant.ZERO;
this.monthlyIncr = NumConstant.ZERO;
}
}

30
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/dao/user/UserDao.java

@ -78,8 +78,8 @@ public interface UserDao {
* @author zxc
* @date 2021/7/27 1:31 下午
*/
List<WarmTotalAndIncrResultDTO> selectWarmTotalAndIncrByGrids(@Param("userIds") List<String> userIds, @Param("incrUserIds") List<String> incrUserIds, @Param("gridIds") Set<String> gridIds,
@Param("targetDate") Date targetDate,@Param("startDate") Date startDate);
List<WarmTotalAndIncrResultDTO> selectWarmTotalAndIncrByGrids(@Param("userIds") List<String> userIds, @Param("incrDailyUserIds") List<String> incrDailyUserIds, @Param("gridIds") Set<String> gridIds,
@Param("targetDate") Date targetDate,@Param("startDate") Date startDate,@Param("incrMonthlyUserIds") List<String> incrMonthlyUserIds);
/**
* @param
@ -90,6 +90,15 @@ public interface UserDao {
**/
List<String> selectIncrUserIds(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("targetDate") Date targetDate);
/**
* @param
* @return
* @Description 查询指定网格范围下截至指定位时间累计的注册用户Id
* @author wangc
* @date 2020.06.18 18:50
**/
List<String> selectTotalUserIds(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("targetDate") Date targetDate);
/**
* @Description 查询指定网格范围下单位时间内新增的注册用户Id新方法
* @Param regOrPartiFlag
@ -99,16 +108,17 @@ public interface UserDao {
* @date 2021/7/27 10:41 上午
*/
List<IncrAndTotalUserIdsResultDTO> selectIncrUserIdsByGrids(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("targetDate") Date targetDate,
@Param("selectType") String selectType,@Param("startDate")Date startDate);
@Param("startDate")Date startDate);
/**
* @param
* @return
* @Description 查询指定网格范围下截至指定位时间累计的注册用户Id
* @author wangc
* @date 2020.06.18 18:50
**/
List<String> selectTotalUserIds(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("targetDate") Date targetDate);
* @Description 查询指定网格范围下单位时间内全部的注册用户Id新方法
* @Param regOrPartiFlag
* @Param gridIds
* @Param targetDate
* @author zxc
* @date 2021/7/29 10:08 上午
*/
List<IncrAndTotalUserIdsResultDTO> selectTotalUserIdsByGrids(@Param("regOrPartiFlag") String regOrPartiFlag, @Param("gridIds") Set<String> gridIds, @Param("targetDate") Date targetDate);
/**
* @param

95
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java

@ -722,6 +722,8 @@ public class UserServiceImpl implements UserService {
if (CollectionUtils.isEmpty(gridIds)){
return;
}
// 是否是月初标志
Boolean isMonthBeginning = true;
dataPacket.setCustomerId(customerId);
//计算百分比使用,保留小数点后两位
NumberFormat numberFormat = NumberFormat.getInstance();
@ -731,27 +733,46 @@ public class UserServiceImpl implements UserService {
calendar.setTime(new Date());
calendar.add(Calendar.DATE, NumConstant.ONE_NEG);
//指定日期 OR T-1
calendar.setTime(calendar.getTime());
calendar.setTime(targetDate);
//如果目标日期不是是当月的第一天
if(calendar.get(Calendar.DATE) != calendar.getActualMinimum(Calendar.DAY_OF_MONTH)){
isMonthBeginning = false;
}
//求出这个月的第一天
calendar.set(Calendar.DAY_OF_MONTH, NumConstant.ONE);
calendar.set(Calendar.HOUR_OF_DAY, NumConstant.ZERO);
calendar.set(Calendar.MINUTE, NumConstant.ZERO);
calendar.set(Calendar.SECOND, NumConstant.ZERO);
//1.计算机关下注册用户一个时间单位内的累计与增长
//1.计算机关下注册用户一个时间单位内的累计与 [月增长,日增长]
List<TotalAndIncrResultDTO> regData = userDao.selectResiTotalAndIncrByGridIds(ModuleConstant.REG_OR_PARTI_FLAG_REG, gridIds, targetDate,calendar.getTime());
//2.查询注册用户的Id列表
// 增长
List<IncrAndTotalUserIdsResultDTO> incrRegUsers = userDao.selectIncrUserIdsByGrids(ModuleConstant.REG_OR_PARTI_FLAG_REG, gridIds, targetDate,"incr",calendar.getTime());
List<String> incrUserIds = new ArrayList<>();
List<IncrAndTotalUserIdsResultDTO> incrRegUsers = userDao.selectIncrUserIdsByGrids(ModuleConstant.REG_OR_PARTI_FLAG_REG, gridIds, targetDate,calendar.getTime());
List<String> incrDailyUserIds = new ArrayList<>();
List<String> incrMonthlyUserIds = new ArrayList<>();
if (!CollectionUtils.isEmpty(incrRegUsers)){
incrRegUsers.forEach(i -> {
if (!CollectionUtils.isEmpty(i.getUserIds())){
incrUserIds.addAll(i.getUserIds());
// 月增长 和 日增长 分开
Map<String, List<IncrAndTotalUserIdsResultDTO>> groupByType = incrRegUsers.stream().collect(Collectors.groupingBy(IncrAndTotalUserIdsResultDTO::getType));
if (!CollectionUtils.isEmpty(groupByType.get(ModuleConstant.DAILY))){
groupByType.get(ModuleConstant.DAILY).forEach(d -> {
if (!CollectionUtils.isEmpty(d.getUserIds())){
// 日增长
incrDailyUserIds.addAll(d.getUserIds());
}
});
}
if (!CollectionUtils.isEmpty(groupByType.get(ModuleConstant.MONTHLY))){
groupByType.get(ModuleConstant.MONTHLY).forEach(m -> {
if (!CollectionUtils.isEmpty(m.getUserIds())){
// 月增长
incrMonthlyUserIds.addAll(m.getUserIds());
}
});
}
}
// 全部
List<IncrAndTotalUserIdsResultDTO> totalRegUsers = userDao.selectIncrUserIdsByGrids(ModuleConstant.REG_OR_PARTI_FLAG_REG, gridIds, targetDate,"total",calendar.getTime());
List<IncrAndTotalUserIdsResultDTO> totalRegUsers = userDao.selectTotalUserIdsByGrids(ModuleConstant.REG_OR_PARTI_FLAG_REG, gridIds, targetDate);
List<String> totalUserIds = new ArrayList<>();
if (!CollectionUtils.isEmpty(totalRegUsers)){
totalRegUsers.forEach(t -> {
@ -761,25 +782,39 @@ public class UserServiceImpl implements UserService {
});
}
//3.查询机关下一个时间单位内热心居民的累计与增量(注册用户)
List<WarmTotalAndIncrResultDTO> warmRegData = userDao.selectWarmTotalAndIncrByGrids(totalUserIds, incrUserIds, gridIds, targetDate,calendar.getTime());
List<WarmTotalAndIncrResultDTO> warmRegData = userDao.selectWarmTotalAndIncrByGrids(totalUserIds, incrDailyUserIds, gridIds, targetDate,calendar.getTime(),incrMonthlyUserIds);
//4.查询机关下一个时间单位内党员的累计与增量(注册用户)
List<PartyTotalAndIncrResultDTO> partyRegData = userDao.selectPartyTotalAndIncrNew(targetDate, ModuleConstant.REG_OR_PARTI_FLAG_REG,calendar.getTime());
//参与用户
//1.计算机关下参与用户一个时间单位内的累计与增长
//1.计算机关下参与用户一个时间单位内的累计与 [月增长,日增长]
List<TotalAndIncrResultDTO> partiData = userDao.selectResiTotalAndIncrByGridIds(ModuleConstant.REG_OR_PARTI_FLAG_PARTI, gridIds, targetDate,calendar.getTime());
//2.查询参与用户的Id列表[增长]
List<IncrAndTotalUserIdsResultDTO> incrPartiUsers = userDao.selectIncrUserIdsByGrids(ModuleConstant.REG_OR_PARTI_FLAG_PARTI, gridIds, targetDate, "incr",calendar.getTime());
List<String> incrPartiUserIds = new ArrayList<>();
List<IncrAndTotalUserIdsResultDTO> incrPartiUsers = userDao.selectIncrUserIdsByGrids(ModuleConstant.REG_OR_PARTI_FLAG_PARTI, gridIds, targetDate, calendar.getTime());
List<String> incrDailyPartiUserIds = new ArrayList<>();
List<String> incrMonthlyPartiUserIds = new ArrayList<>();
if (!CollectionUtils.isEmpty(incrPartiUsers)){
incrPartiUsers.forEach(i -> {
if (!CollectionUtils.isEmpty(i.getUserIds())){
incrPartiUserIds.addAll(i.getUserIds());
// 月增长 和 天增长 分开
Map<String, List<IncrAndTotalUserIdsResultDTO>> groupByType = incrRegUsers.stream().collect(Collectors.groupingBy(IncrAndTotalUserIdsResultDTO::getType));
if (!CollectionUtils.isEmpty(groupByType.get(ModuleConstant.DAILY))){
groupByType.get(ModuleConstant.DAILY).forEach(d -> {
if (!CollectionUtils.isEmpty(d.getUserIds())){
// 日增长
incrDailyPartiUserIds.addAll(d.getUserIds());
}
});
}
if (!CollectionUtils.isEmpty(groupByType.get(ModuleConstant.MONTHLY))){
groupByType.get(ModuleConstant.MONTHLY).forEach(m -> {
if (!CollectionUtils.isEmpty(m.getUserIds())){
// 月增长
incrMonthlyPartiUserIds.addAll(m.getUserIds());
}
});
}
}
// 查询参与用户的Id列表[全部]
List<IncrAndTotalUserIdsResultDTO> totalPartiUsers = userDao.selectIncrUserIdsByGrids(ModuleConstant.REG_OR_PARTI_FLAG_PARTI, gridIds, targetDate, "total",calendar.getTime());
List<IncrAndTotalUserIdsResultDTO> totalPartiUsers = userDao.selectTotalUserIdsByGrids(ModuleConstant.REG_OR_PARTI_FLAG_PARTI, gridIds, targetDate);
List<String> totalPartiUserIds = new ArrayList<>();
if (!CollectionUtils.isEmpty(totalPartiUsers)){
totalPartiUsers.forEach(t -> {
@ -789,7 +824,7 @@ public class UserServiceImpl implements UserService {
});
}
//3.查询机关下一个时间单位内热心居民的累计与增量(参与用户)
List<WarmTotalAndIncrResultDTO> warmPartiData = userDao.selectWarmTotalAndIncrByGrids(totalPartiUserIds, incrPartiUserIds, gridIds, targetDate,calendar.getTime());
List<WarmTotalAndIncrResultDTO> warmPartiData = userDao.selectWarmTotalAndIncrByGrids(totalPartiUserIds, incrDailyPartiUserIds, gridIds, targetDate,calendar.getTime(),incrMonthlyPartiUserIds);
//4.查询机关下一个时间单位内党员的累计与增量(参与用户)
List<PartyTotalAndIncrResultDTO> partyPartiData = userDao.selectPartyTotalAndIncrNew(targetDate, ModuleConstant.REG_OR_PARTI_FLAG_PARTI,calendar.getTime());
@ -840,10 +875,10 @@ public class UserServiceImpl implements UserService {
if (gridId.equals(r.getGridId())){
regGridD.setResiTotal(r.getTotal());
regGridD.setRegTotal(r.getTotal());
regGridD.setRegIncr(r.getIncr());
regGridD.setRegIncr(r.getDailyIncr());
regGridM.setRegTotal(r.getTotal());
regGridM.setResiTotal(r.getTotal());
regGridM.setRegIncr(r.getIncr());
regGridM.setRegIncr(r.getMonthlyIncr());
break;
}
}
@ -852,9 +887,9 @@ public class UserServiceImpl implements UserService {
for (WarmTotalAndIncrResultDTO w : warmRegData) {
if (gridId.equals(w.getGridId())){
regGridD.setWarmHeartedTotal(w.getTotal());
regGridD.setWarmIncr(w.getIncr());
regGridD.setWarmIncr(w.getDailyIncr());
regGridM.setWarmHeartedTotal(w.getTotal());
regGridM.setWarmIncr(w.getIncr());
regGridM.setWarmIncr(w.getMonthlyIncr());
break;
}
}
@ -864,10 +899,10 @@ public class UserServiceImpl implements UserService {
if (gridId.equals(p.getGridId())){
partiGridD.setResiTotal(p.getTotal());
partiGridD.setRegTotal(p.getTotal());
partiGridD.setRegIncr(p.getIncr());
partiGridD.setRegIncr(p.getDailyIncr());
partiGridM.setRegTotal(p.getTotal());
partiGridM.setResiTotal(p.getTotal());
partiGridM.setRegIncr(p.getIncr());
partiGridM.setRegIncr(p.getMonthlyIncr());
break;
}
}
@ -876,11 +911,11 @@ public class UserServiceImpl implements UserService {
for (PartyTotalAndIncrResultDTO p : partyRegData) {
if (gridId.equals(p.getGridId())){
regGridD.setPartymemberTotal(p.getTotal());
regGridD.setPartymemberIncr(p.getIncr());
regGridD.setPartymemberIncr(p.getDailyIncr());
regGridM.setPartymemberTotal(p.getTotal());
regGridM.setPartymemberIncr(p.getIncr());
regGridM.setPartymemberIncr(p.getMonthlyIncr());
regGridM.setPartymemberTotal(p.getTotal());
regGridM.setPartymemberIncr(p.getIncr());
regGridM.setPartymemberIncr(p.getMonthlyIncr());
break;
}
}
@ -889,9 +924,9 @@ public class UserServiceImpl implements UserService {
for (WarmTotalAndIncrResultDTO w : warmPartiData) {
if (gridId.equals(w.getGridId())){
partiGridD.setWarmHeartedTotal(w.getTotal());
partiGridD.setWarmIncr(w.getIncr());
partiGridD.setWarmIncr(w.getDailyIncr());
partiGridM.setWarmHeartedTotal(w.getTotal());
partiGridM.setWarmIncr(w.getIncr());
partiGridM.setWarmIncr(w.getMonthlyIncr());
break;
}
}
@ -900,9 +935,9 @@ public class UserServiceImpl implements UserService {
for (PartyTotalAndIncrResultDTO p : partyPartiData) {
if (gridId.equals(p.getGridId())){
partiGridD.setPartymemberTotal(p.getTotal());
partiGridD.setPartymemberIncr(p.getIncr());
partiGridD.setPartymemberIncr(p.getDailyIncr());
partiGridM.setPartymemberTotal(p.getTotal());
partiGridM.setPartymemberIncr(p.getIncr());
partiGridM.setPartymemberIncr(p.getMonthlyIncr());
break;
}
}

4
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/util/ModuleConstant.java

@ -43,4 +43,8 @@ public interface ModuleConstant {
String TOPIC_STATUS_SHIFT_ISSUE = "shift_issue";
String NEED_UPDATE_STATUS_TOPIC = "needUpdateStatusTopic";
String MONTHLY = "monthly";
String DAILY = "daily";
}

128
epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/user/UserDao.xml

@ -632,7 +632,8 @@
SELECT
IFNULL(count( DISTINCT rr.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 REGISTER_RELATION rr
LEFT JOIN (
SELECT
@ -656,6 +657,24 @@
,"%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" '>
@ -673,15 +692,17 @@
<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="userIds"/>
</collection>
</resultMap>
<!-- 查询指定网格范围下单位时间内新增的注册用户Id【新方法】 -->
<select id="selectIncrUserIdsByGrids" resultMap="selectIncrUserIdsByGridsMap">
SELECT
(SELECT
DISTINCT(USER_ID) AS userIds,
GRID_ID
GRID_ID,
'monthly' AS type
FROM
REGISTER_RELATION
WHERE
@ -695,14 +716,27 @@
<foreach collection="gridIds" item="gridId" index="index" open="AND ( " separator=" OR " close=")">
GRID_ID = #{gridId}
</foreach>
<if test='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'
<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='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"))
<if test='regOrPartiFlag == "reg" '>
AND FIRST_REGISTER = '1'
</if>
GROUP BY GRID_ID
<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)
</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'
<if test="null != incrUserIds and incrUserIds.size() > 0 ">
<foreach collection="incrUserIds" item="incrUserId" index="index" open="AND ( " separator=" OR " close=")">
<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>
@ -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'
<if test="incrUserIds.size() > 0 and null != incrUserIds ">
<foreach collection="incrUserIds" item="incrUserId" index="index" open="AND ( " separator=" OR " close=")">
<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>
@ -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")
<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')
@ -811,6 +885,34 @@
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="userIds"/>
</collection>
</resultMap>
<select id="selectTotalUserIdsByGrids" resultMap="selectTotalUserIdsByGridsMap">
SELECT
DISTINCT(USER_ID) AS userIds,
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") <![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>
<delete id="delGmUploadEvent">
DELETE
FROM

Loading…
Cancel
Save