Browse Source

议题日统计数定时任务逻辑修改

dev_shibei_match
wangchao 5 years ago
parent
commit
ed9b6a9ee8
  1. 12
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueVoteStatisticalDailyController.java
  2. 10
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java
  3. 27
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteStatisticalDailyDao.java
  4. 191
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalDailyServiceImpl.java
  5. 24
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java
  6. 14
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml
  7. 8
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml
  8. 193
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml
  9. 4
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java

12
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueVoteStatisticalDailyController.java

@ -91,4 +91,16 @@ public class IssueVoteStatisticalDailyController {
ExcelUtils.exportExcelToTarget(response, null, list, IssueVoteStatisticalDailyExcel.class);
}
/**
* @Description 定时任务 每天生成生成昨日的议题表决日统计数
* @param
* @return
* @author wangc
* @date 2020.05.20 15:39
**/
@PostMapping(value = "dailystasticalvotejob")
public Result dailyStasticalVoteJob(){
issueVoteStatisticalDailyService.countVotingDailyStatistic();
return new Result();
}
}

10
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java

@ -22,6 +22,8 @@ import com.epmet.dto.form.VoteFormDTO;
import com.epmet.entity.IssueVoteDetailEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.Set;
/**
* 议题表决记录表
*
@ -38,4 +40,12 @@ public interface IssueVoteDetailDao extends BaseDao<IssueVoteDetailEntity> {
*/
Integer checkoutVote(VoteFormDTO formDTO);
/**
* @Description getAttitudes
* @param
* @return
* @author wangc
* @date 2020.05.20 10:52
**/
Set<String> getAttitudes();
}

27
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteStatisticalDailyDao.java

@ -50,4 +50,31 @@ public interface IssueVoteStatisticalDailyDao extends BaseDao<IssueVoteStatistic
* @date 2020.05.19 15:00
**/
List<IssuesToBeCountedResultDTO> getIssueVotingStatisticalUpToYesterday();
/**
* @Description 通过议题Id和统计日期查找日统计信息
* @param entity
* @return
* @author wangc
* @date 2020.05.20 11:14
**/
IssueVoteStatisticalDailyEntity getDailyStatisticalCountByIssueIdAndStatisticalDate(IssueVoteStatisticalDailyEntity entity);
/**
* @Description 批量添加
* @param list List<IssueVoteStatisticalDailyEntity>
* @return
* @author wangc
* @date 2020.05.20 14:54
**/
void insertBatch(List<IssueVoteStatisticalDailyEntity> list);
/**
* @Description 批量更新
* @param list List<IssueVoteStatisticalDailyEntity>
* @return
* @author wangc
* @date 2020.05.20 14:54
**/
void updateBatch(List<IssueVoteStatisticalDailyEntity> list);
}

191
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalDailyServiceImpl.java

@ -20,23 +20,27 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.IssueVoteDetailDao;
import com.epmet.dao.IssueVoteStatisticalDailyDao;
import com.epmet.dto.IssueVoteStatisticalDailyDTO;
import com.epmet.dto.result.IssuesToBeCountedResultDTO;
import com.epmet.entity.IssueVoteStatisticalDailyEntity;
import com.epmet.redis.IssueVoteStatisticalDailyRedis;
import com.epmet.service.IssueVoteStatisticalDailyService;
import com.epmet.utils.ModuleConstants;
import oracle.sql.NUMBER;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -51,6 +55,11 @@ public class IssueVoteStatisticalDailyServiceImpl extends BaseServiceImpl<IssueV
@Autowired
private IssueVoteStatisticalDailyRedis issueVoteStatisticalDailyRedis;
@Autowired
private IssueVoteDetailDao issueVoteDetailDao;
protected static final Logger logger = LoggerFactory.getLogger(IssueVoteStatisticalDailyServiceImpl.class);
@Override
public PageData<IssueVoteStatisticalDailyDTO> page(Map<String, Object> params) {
IPage<IssueVoteStatisticalDailyEntity> page = baseDao.selectPage(
@ -72,7 +81,9 @@ public class IssueVoteStatisticalDailyServiceImpl extends BaseServiceImpl<IssueV
QueryWrapper<IssueVoteStatisticalDailyEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
wrapper.eq(FieldConstant.DEL_FLAG,NumConstant.ZERO_STR);
wrapper.eq(StringUtils.isNotBlank((String)params.get(ModuleConstants.FIELD_JAVA_ISSUE_ID)), ModuleConstants.FIELD_SQL_ISSUE_ID,params.get(ModuleConstants.FIELD_JAVA_ISSUE_ID));
wrapper.eq(null == params.get(ModuleConstants.FIELD_JAVA_STATISTICAL_DATE),ModuleConstants.FIELD_SQL_STATISTICAL_DATE,params.get(ModuleConstants.FIELD_JAVA_STATISTICAL_DATE));
return wrapper;
}
@ -111,24 +122,182 @@ public class IssueVoteStatisticalDailyServiceImpl extends BaseServiceImpl<IssueV
* @date 2020.05.19 09:23
**/
@Override
@Transactional(rollbackFor = Exception.class)
public void countVotingDailyStatistic() {
//昨天的日期
Date yesterday = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
//昨天一日的统计List
List<IssuesToBeCountedResultDTO> issueStatisticalList = baseDao.getIssueVotingStatistical();
Map<String,List<IssuesToBeCountedResultDTO>> issueStatisticalMap =
issueStatisticalList.stream().collect(Collectors.groupingBy(IssuesToBeCountedResultDTO::getIssueId));
issueStatisticalList.stream().collect(Collectors.groupingBy(IssuesToBeCountedResultDTO::getIssueId));
//截至到昨天的统计List
List<IssuesToBeCountedResultDTO> issueStatisticalListUpToYes = baseDao.getIssueVotingStatisticalUpToYesterday();
Map<String,List<IssuesToBeCountedResultDTO>> issueStatisticalMapUpTpYes =
Map<String,List<IssuesToBeCountedResultDTO>> issueStatisticalMapUpToYes =
issueStatisticalListUpToYes.stream().collect(Collectors.groupingBy(IssuesToBeCountedResultDTO::getIssueId));
//日统计信息会出现若统计日内无人点“同意”或者“反对”,则返回列表中只有表决的单方面数据,未被选举的数据没有,因此需要截至当日的统计列表
//如果当日无人进行表决而昨日之前有表决,此时会返回一条议题记录,attitude为null,attitudeUpToYesterday不为null
//若昨日以及昨日之前都无人表决,此时attitude为null,attitudeUpToYesterday也为null
List<IssueVoteStatisticalDailyEntity> dailyListToInsert = new LinkedList<>();
List<IssueVoteStatisticalDailyEntity> dailyListToUpdate = new LinkedList<>();
issueStatisticalMap.forEach((key,value) -> {
//key为议题Id
//当List不为空时
if(null != value && value.size() > NumConstant.ZERO){
IssueVoteStatisticalDailyEntity dailyStatisticalToInsert = new IssueVoteStatisticalDailyEntity();
dailyStatisticalToInsert.setIssueId(key);
dailyStatisticalToInsert.setStatisticalDate(yesterday);
dailyStatisticalToInsert.setCreatedBy(ModuleConstants.CREATED_OR_UPDATED_BY_SYSTEM);
//此列无意义,统一存0
dailyStatisticalToInsert.setVotableCount(NumConstant.ZERO);
});
IssueVoteStatisticalDailyEntity dailyStatisticalToUpdate = new IssueVoteStatisticalDailyEntity();
dailyStatisticalToUpdate.setIssueId(key);
dailyStatisticalToUpdate.setStatisticalDate(yesterday);
dailyStatisticalToUpdate.setUpdatedBy(ModuleConstants.CREATED_OR_UPDATED_BY_SYSTEM);
//判断数据库中是否有此数据
IssueVoteStatisticalDailyEntity
existedInfo =
baseDao.getDailyStatisticalCountByIssueIdAndStatisticalDate(dailyStatisticalToUpdate);
//1.获取所有表决中的议题以及在昨日表决截至的议题,将昨日新生成的议题单独拿出来
for(IssuesToBeCountedResultDTO o : value){
//o的attitudeUpToYesterday有三种值:opposition 、 support 、 null
//当o的attitudeUpToYesterday为null时,List中只有一条
//当o的attitudeUpToYesterday不为null时,List中可能存在一条或者两条
if(null != existedInfo){
//数据库中已有此记录 - update
dailyStatisticalToUpdate.setId(existedInfo.getId());
if(StringUtils.isBlank(o.getAttitudeUpToYesterday())){
//昨日无人表决,昨日之前也无人表决
dailyStatisticalToUpdate.setOppositionCount(NumConstant.ZERO);
dailyStatisticalToUpdate.setSupportCount(NumConstant.ZERO);
dailyStatisticalToUpdate.setTotalCount(NumConstant.ZERO);
dailyStatisticalToUpdate.setOppositionIncrement(NumConstant.ZERO);
dailyStatisticalToUpdate.setSupportIncrement(NumConstant.ZERO);
dailyStatisticalToUpdate.setTodayIncrement(NumConstant.ZERO);
}else if(StringUtils.equals(o.getAttitudeUpToYesterday(),ModuleConstants.ISSUE_VOTING_ATTITUDE_SUPPORT)){
dailyStatisticalToUpdate.setSupportCount(o.getVoteCountUpToYesterday());
dailyStatisticalToUpdate.setSupportIncrement(o.getVoteCount());
}else if(StringUtils.equals(o.getAttitudeUpToYesterday(),ModuleConstants.ISSUE_VOTING_ATTITUDE_OPPOSITION)){
dailyStatisticalToUpdate.setOppositionCount(o.getVoteCountUpToYesterday());
dailyStatisticalToUpdate.setOppositionIncrement(o.getVoteCount());
}
//2.对每一个表决中的议题校验有没有生成过前一天的统计数据,如果生成过则跳过次议题
}else{
//数据库中没有此纪录 - insert
if(StringUtils.isBlank(o.getAttitudeUpToYesterday())){
//昨日无人表决,昨日之前也无人表决
dailyStatisticalToInsert.setOppositionCount(NumConstant.ZERO);
dailyStatisticalToInsert.setSupportCount(NumConstant.ZERO);
dailyStatisticalToInsert.setTotalCount(NumConstant.ZERO);
dailyStatisticalToInsert.setOppositionIncrement(NumConstant.ZERO);
dailyStatisticalToInsert.setSupportIncrement(NumConstant.ZERO);
dailyStatisticalToInsert.setTodayIncrement(NumConstant.ZERO);
}else if(StringUtils.equals(o.getAttitudeUpToYesterday(),ModuleConstants.ISSUE_VOTING_ATTITUDE_SUPPORT)){
dailyStatisticalToInsert.setSupportCount(o.getVoteCountUpToYesterday());
dailyStatisticalToInsert.setSupportIncrement(o.getVoteCount());
}else if(StringUtils.equals(o.getAttitudeUpToYesterday(),ModuleConstants.ISSUE_VOTING_ATTITUDE_OPPOSITION)){
dailyStatisticalToInsert.setOppositionCount(o.getVoteCountUpToYesterday());
dailyStatisticalToInsert.setOppositionIncrement(o.getVoteCount());
}
}
}
//遍历完List之后,检查是否有因为昨日未表决过某钟态度而漏掉昨日之前的表决信息
if(null != existedInfo){
if(null == dailyStatisticalToUpdate.getOppositionCount()){
//昨日无人反对该议题
dailyStatisticalToUpdate.setOppositionIncrement(NumConstant.ZERO);
if(null != issueStatisticalMapUpToYes.get(key)){
Optional<IssuesToBeCountedResultDTO> first =
issueStatisticalMapUpToYes.get(key).stream().filter(
obj -> ModuleConstants.ISSUE_VOTING_ATTITUDE_OPPOSITION.equals(obj.getAttitude())).findFirst();
if(first.isPresent()){
dailyStatisticalToUpdate.setOppositionCount(first.get().getVoteCountUpToYesterday());
}else{
dailyStatisticalToUpdate.setOppositionCount(NumConstant.ZERO);
}
}else{
dailyStatisticalToUpdate.setOppositionCount(NumConstant.ZERO);
}
//3.如果没有生成过,取前一天的日统计信息与缓存中的表决数进行对比生成昨日数据(非昨日新生成议题)
}else if(null == dailyStatisticalToUpdate.getSupportCount()){
//昨日无人赞同该议题
dailyStatisticalToUpdate.setSupportIncrement(NumConstant.ZERO);
if(null != issueStatisticalMapUpToYes.get(key)){
Optional<IssuesToBeCountedResultDTO> first =
issueStatisticalMapUpToYes.get(key).stream().filter(
obj -> ModuleConstants.ISSUE_VOTING_ATTITUDE_SUPPORT.equals(obj.getAttitude())).findFirst();
if(first.isPresent()){
dailyStatisticalToUpdate.setSupportCount(first.get().getVoteCountUpToYesterday());
}else{
dailyStatisticalToUpdate.setSupportCount(NumConstant.ZERO);
}
}else{
dailyStatisticalToUpdate.setSupportCount(NumConstant.ZERO);
}
}
//不会同时出现oppositionCount与supportCount同时为null的现象
//因为这表示该议题从未被表决过,已经在上方逻辑进行处理
dailyStatisticalToUpdate.setTotalCount(dailyStatisticalToUpdate.getOppositionCount() + dailyStatisticalToUpdate.getSupportCount());
dailyStatisticalToUpdate.setTodayIncrement(dailyStatisticalToUpdate.getOppositionIncrement() + dailyStatisticalToUpdate.getSupportIncrement());
dailyListToUpdate.add(dailyStatisticalToUpdate);
}else{
if(null == dailyStatisticalToInsert.getOppositionCount()){
//昨日无人反对该议题
dailyStatisticalToInsert.setOppositionIncrement(NumConstant.ZERO);
if(null != issueStatisticalMapUpToYes.get(key)){
Optional<IssuesToBeCountedResultDTO> first =
issueStatisticalMapUpToYes.get(key).stream().filter(
obj -> ModuleConstants.ISSUE_VOTING_ATTITUDE_OPPOSITION.equals(obj.getAttitude())).findFirst();
if(first.isPresent()){
dailyStatisticalToInsert.setOppositionCount(first.get().getVoteCountUpToYesterday());
}else{
dailyStatisticalToInsert.setOppositionCount(NumConstant.ZERO);
}
}else{
dailyStatisticalToInsert.setOppositionCount(NumConstant.ZERO);
}
}else if(null == dailyStatisticalToInsert.getSupportCount()){
//昨日无人赞同该议题
dailyStatisticalToInsert.setSupportIncrement(NumConstant.ZERO);
if(null != issueStatisticalMapUpToYes.get(key)){
Optional<IssuesToBeCountedResultDTO> first =
issueStatisticalMapUpToYes.get(key).stream().filter(
obj -> ModuleConstants.ISSUE_VOTING_ATTITUDE_SUPPORT.equals(obj.getAttitude())).findFirst();
if(first.isPresent()){
dailyStatisticalToInsert.setSupportCount(first.get().getVoteCountUpToYesterday());
}else{
dailyStatisticalToInsert.setSupportCount(NumConstant.ZERO);
}
}else{
dailyStatisticalToInsert.setSupportCount(NumConstant.ZERO);
}
}
//不会同时出现oppositionCount与supportCount同时为null的现象
//因为这表示该议题从未被表决过,已经在上方逻辑进行处理
dailyStatisticalToInsert.setTotalCount(dailyStatisticalToInsert.getOppositionCount() + dailyStatisticalToInsert.getSupportCount());
dailyStatisticalToInsert.setTodayIncrement(dailyStatisticalToInsert.getOppositionIncrement() + dailyStatisticalToInsert.getSupportIncrement());
dailyListToInsert.add(dailyStatisticalToInsert);
}
}else{
//当List为空时
//不会出现List为空的现象
logger.warn(String.format("遍历issueStatisticalMap时候出现List为空现象,issueId:【%s】",key));
}
});
if(dailyListToInsert.size() > NumConstant.ZERO){
baseDao.insertBatch(dailyListToInsert);
}
if(dailyListToUpdate.size() > NumConstant.ZERO){
baseDao.updateBatch(dailyListToUpdate);
}
//4.获取人员投票详情对昨日的count数(昨日新生成议题,保证数据的准确性)
}
}

24
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java

@ -69,4 +69,28 @@ public interface ModuleConstants {
String EMPTY_STR = "";
String FIELD_SQL_ISSUE_ID = "ISSUE_ID";
String FIELD_JAVA_ISSUE_ID = "issueId";
String FIELD_SQL_ATTITUDE = "ATTITUDE";
String FIELD_JAVA_ATTITUDE = "attitude";
String FIELD_SQL_STATISTICAL_DATE = "STATISTICAL_DATE";
String FIELD_JAVA_STATISTICAL_DATE = "statisticalDate";
/**
* 议题表决态度 赞成
* */
String ISSUE_VOTING_ATTITUDE_SUPPORT = "support";
/**
* 议题表决态度 反对
* */
String ISSUE_VOTING_ATTITUDE_OPPOSITION = "opposition";
String CREATED_OR_UPDATED_BY_SYSTEM = "system";
}

14
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml

@ -270,25 +270,28 @@
totalvote.VOTE_COUNT AS VOTE_COUNT_UP_TO_YESTERDAY
FROM
ISSUE issue
LEFT JOIN (
SELECT ISSUE_ID ,
ATTITUDE,
count(ATTITUDE) AS VOTE_COUNT
FROM issue_vote_detail
WHERE DEL_FLAG = '0'
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[<=]]> 1
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[>]]> 0
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[>]]> 0
GROUP BY ISSUE_ID , ATTITUDE
) vote ON issue.ID = vote.ISSUE_ID
) totalvote ON issue.ID = totalvote.ISSUE_ID
LEFT JOIN (
SELECT ISSUE_ID ,
ATTITUDE,
count(ATTITUDE) AS VOTE_COUNT
FROM issue_vote_detail
WHERE DEL_FLAG = '0'
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[>]]> 0
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[<=]]> 1
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[>]]> 0
GROUP BY ISSUE_ID , ATTITUDE
) totalvote ON issue.ID = totalvote.ISSUE_ID AND vote.ATTITUDE = totalvote.ATTITUDE
) vote ON issue.ID = vote.ISSUE_ID AND totalvote.ATTITUDE = vote.ATTITUDE
WHERE
issue.DEL_FLAG = '0'
AND (
@ -307,6 +310,7 @@
ORDER BY
issue.ID
</select>

8
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml

@ -27,4 +27,12 @@
AND created_by = #{createdBy}
</select>
<!-- 动态获取表决中状态 -->
<select id="getAttitudes" resultType="string">
SELECT
DISTINCT
ATTITUDE
FROM
ISSUE_VOTE_DETAIL
</select>
</mapper>

193
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml

@ -26,33 +26,36 @@
<select id="getIssueVotingStatistical" resultType="com.epmet.dto.result.IssuesToBeCountedResultDTO">
SELECT
issue.ID,
issue.ID AS ISSUE_ID,
issue.ISSUE_STATUS,
vote.ATTITUDE,
vote.VOTE_COUNT,
IFNULL(vote.VOTE_COUNT,0)AS VOTE_COUNT,
totalvote.ATTITUDE AS ATTITUDE_UP_TO_YESTERDAY,
totalvote.VOTE_COUNT AS VOTE_COUNT_UP_TO_YESTERDAY
IFNULL(totalvote.VOTE_COUNT,0) AS VOTE_COUNT_UP_TO_YESTERDAY
FROM
ISSUE issue
LEFT JOIN (
SELECT ISSUE_ID ,
ATTITUDE,
count(ATTITUDE) AS VOTE_COUNT
FROM issue_vote_detail
WHERE DEL_FLAG = '0'
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[<=]]> 1
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[>]]> 0
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[>]]> 0
GROUP BY ISSUE_ID , ATTITUDE
) vote ON issue.ID = vote.ISSUE_ID
) totalvote ON issue.ID = totalvote.ISSUE_ID
LEFT JOIN (
SELECT ISSUE_ID ,
ATTITUDE,
count(ATTITUDE) AS VOTE_COUNT
FROM issue_vote_detail
WHERE DEL_FLAG = '0'
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[>]]> 0
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[<=]]> 1
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[>]]> 0
GROUP BY ISSUE_ID , ATTITUDE
) totalvote ON issue.ID = totalvote.ISSUE_ID AND vote.ATTITUDE = totalvote.ATTITUDE
) vote ON issue.ID = vote.ISSUE_ID AND totalvote.ATTITUDE = vote.ATTITUDE
WHERE
issue.DEL_FLAG = '0'
AND (
@ -102,6 +105,180 @@
issue.ID
</select>
<!-- 通过议题Id和统计日期查找日统计信息 -->
<select id="getDailyStatisticalCountByIssueIdAndStatisticalDate" parameterType="com.epmet.entity.IssueVoteStatisticalDailyEntity" resultType="com.epmet.entity.IssueVoteStatisticalDailyEntity">
SELECT
*
FROM
issue_vote_statistical_daily
WHERE
DEL_FLAG = '0'
AND
STATISTICAL_DATE = #{statisticalDate}
AND
ISSUE_ID = #{issueId}
</select>
<!-- 批量添加 -->
<insert id="insertBatch" parameterType="java.util.List">
INSERT INTO issue_vote_statistical_daily
(
id,
issue_id,
statistical_date,
support_count,
opposition_count,
total_count,
today_increment,
support_increment,
opposition_increment,
votable_count,
created_by,
created_time,
updated_by,
updated_time
) values
<foreach collection="list" item="item" index="index" separator=",">
(
(SELECT REPLACE(UUID(), '-', '') AS id),
#{item.issueId},
#{item.statisticalDate},
#{item.supportCount},
#{item.oppositionCount},
#{item.totalCount},
#{item.todayIncrement},
#{item.supportIncrement},
#{item.oppositionIncrement},
#{item.votableCount},
#{item.createdBy},
now(),
#{item.createdBy},
now()
)
</foreach>
</insert>
<!-- 批量更新 -->
<update id="updateBatch" parameterType="java.util.ArrayList">
UPDATE issue_vote_statistical_daily
<trim prefix="set" suffixOverrides=",">
<trim prefix="support_count =(case" suffix="end),">
<foreach collection="list" item="item">
<if test='null != item.supportCount'>
when id = #{item.id} then #{item.supportCount}
</if>
</foreach>
</trim>
<trim prefix="opposition_count =(case" suffix="end),">
<foreach collection="list" item="item">
<if test='null != item.oppositionCount'>
when id = #{item.id} then #{item.oppositionCount}
</if>
</foreach>
</trim>
<trim prefix="total_count =(case" suffix="end),">
<foreach collection="list" item="item">
<if test='null != item.totalCount'>
when id = #{item.id} then #{item.totalCount}
</if>
</foreach>
</trim>
<trim prefix="today_increment =(case" suffix="end),">
<foreach collection="list" item="item">
<if test='null != item.todayIncrement'>
when id = #{item.id} then #{item.todayIncrement}
</if>
</foreach>
</trim>
<trim prefix="support_increment =(case" suffix="end),">
<foreach collection="list" item="item">
<if test='null != item.supportIncrement'>
when id = #{item.id} then #{item.supportIncrement}
</if>
</foreach>
</trim>
<trim prefix="opposition_increment =(case" suffix="end),">
<foreach collection="list" item="item">
<if test='null != item.oppositionIncrement'>
when id = #{item.id} then #{item.oppositionIncrement}
</if>
</foreach>
</trim>
<trim prefix="updated_by =(case" suffix="end),">
<foreach collection="list" item="item">
<if test='null != item.updatedBy'>
when id = #{item.id} then #{item.updatedBy}
</if>
</foreach>
</trim>
<trim prefix="votable_count =(case" suffix="end),">
<foreach collection="list" item="item">
<if test='null != item.votableCount'>
when id = #{item.id} then #{item.votableCount}
</if>
</foreach>
</trim>
<trim prefix="del_flag =(case" suffix="end),">
<foreach collection="list" item="item">
<if test='null != item.delFlag'>
when id = #{item.id} then #{item.delFlag}
</if>
</foreach>
</trim>
<trim prefix="updated_by =(case" suffix="end),">
<foreach collection="list" item="item">
<if test='null != item.updatedBy'>
when id = #{item.id} then #{item.updatedBy}
</if>
</foreach>
</trim>
updated_time = now()
</trim>
WHERE id = #{id}
</update>
</mapper>

4
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java

@ -134,8 +134,8 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
QueryWrapper<ResiGroupMemberEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
wrapper.eq(FieldConstant.DEL_FLAG,NumConstant.ZERO_STR);
wrapper.eq(TopicConstant.CUSTOMER_USER_ID,params.get(TopicConstant.CUSTOMER_USER_ID));
wrapper.eq(TopicConstant.RESI_GROUP_ID,params.get(TopicConstant.RESI_GROUP_ID));
wrapper.eq(StringUtils.isNotBlank((String)params.get(TopicConstant.CUSTOMER_USER_ID)),TopicConstant.CUSTOMER_USER_ID,params.get(TopicConstant.CUSTOMER_USER_ID));
wrapper.eq(StringUtils.isNotBlank((String)params.get(TopicConstant.RESI_GROUP_ID)),TopicConstant.RESI_GROUP_ID,params.get(TopicConstant.RESI_GROUP_ID));
return wrapper;
}

Loading…
Cancel
Save