Browse Source

Merge remote-tracking branch 'origin/dev_issue_project' into dev

master
yinzuomei 6 years ago
parent
commit
91cb11f034
  1. 45
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssuesToBeCountedResultDTO.java
  2. 12
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueVoteStatisticalDailyController.java
  3. 10
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java
  4. 10
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java
  5. 47
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteStatisticalDailyDao.java
  6. 18
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  7. 197
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalDailyServiceImpl.java
  8. 24
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java
  9. 56
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml
  10. 8
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml
  11. 258
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml
  12. 6
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java

45
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssuesToBeCountedResultDTO.java

@ -0,0 +1,45 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 要统计的议题信息
* @ClassName IssuesToBeCountedResultDTO
* @Auth wangc
* @Date 2020-05-19 14:06
*/
@Data
public class IssuesToBeCountedResultDTO implements Serializable {
private static final long serialVersionUID = -5554820175558769619L;
/**
* 议题Id
* */
private String issueId;
/**
* 议题状态
* */
private String issueStatus;
/**
* 态度 support | opposition
* */
private String attitude;
/**
* 票数 - 昨日一天
* */
private Integer voteCount;
/**
* 票数 - 截至当日
* */
private Integer voteCountUpToYesterday;
/**
* 态度 此列相应的可能对应 attitude为null
* */
private String attitudeUpToYesterday;
}

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/IssueDao.java

@ -27,6 +27,7 @@ import com.epmet.dto.result.ClosedIssueListGovResultDTO;
import com.epmet.dto.result.ClosedIssueListResultDTO;
import com.epmet.dto.result.IssueResultDTO;
import com.epmet.dto.result.VotingIssueListResultDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.IssueEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -107,4 +108,13 @@ public interface IssueDao extends BaseDao<IssueEntity> {
* @author zxc
*/
String operateTime(@Param("issueId")String issueId);
/**
* @Description 生成昨日的议题日统计信息
* @param
* @return List<IssuesToBeCountedResultDTO>
* @author wangc
* @date 2020.05.19 15:00
**/
List<IssuesToBeCountedResultDTO> getIssueVotingStatistical();
}

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();
}

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

@ -18,9 +18,12 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.result.IssuesToBeCountedResultDTO;
import com.epmet.entity.IssueVoteStatisticalDailyEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 议题表决按天统计表
*
@ -30,4 +33,48 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface IssueVoteStatisticalDailyDao extends BaseDao<IssueVoteStatisticalDailyEntity> {
/**
* @Description 生成昨日的议题日统计信息
* @param
* @return List<IssuesToBeCountedResultDTO>
* @author wangc
* @date 2020.05.19 15:00
**/
List<IssuesToBeCountedResultDTO> getIssueVotingStatistical();
/**
* @Description 生成截止到昨日的议题日统计信息
* @param
* @return List<IssuesToBeCountedResultDTO>
* @author wangc
* @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);
}

18
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java

@ -415,11 +415,14 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
msgDTO.setTitle(UserMessageConstant.ISSUE_TITLE);
msgDTO.setMessageContent(messageContent);
msgDTO.setReadFlag(ReadFlagConstant.UN_READ);
UserMessageFormDTO msgIssue = ConvertUtils.sourceToTarget(msgDTO,UserMessageFormDTO.class);
msgDTO.setUserId(topicDTO.getCreatedBy());
msgList.add(msgDTO);
msgIssue.setUserId(entity.getCreatedBy());
msgList.add(msgIssue);
//话题人和议题人是同一个人时则只发送一条居民消息
if (!topicDTO.getCreatedBy().equals(entity.getCreatedBy())) {
UserMessageFormDTO msgIssue = ConvertUtils.sourceToTarget(msgDTO,UserMessageFormDTO.class);
msgIssue.setUserId(entity.getCreatedBy());
msgList.add(msgIssue);
}
return messageFeignClient.saveUserMessageList(msgList);
}
@ -541,11 +544,14 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
String topicIssueMessage = String.format(UserMessageConstant.ISSUE_SHIFT_PROJECT_MSG, formDTO.getTopicDTO().getTopicContent(), issueProjectResultDTO.getOrgName());
msgDTO.setMessageContent(topicIssueMessage);
msgDTO.setReadFlag(ReadFlagConstant.UN_READ);
UserMessageFormDTO msgIssue = ConvertUtils.sourceToTarget(msgDTO,UserMessageFormDTO.class);
msgDTO.setUserId(formDTO.getTopicDTO().getCreatedBy());
msgList.add(msgDTO);
msgIssue.setUserId(entity.getCreatedBy());
msgList.add(msgIssue);
//话题人和议题人是同一个人时则只发送一条居民消息
if (!formDTO.getTopicDTO().getCreatedBy().equals(entity.getCreatedBy())) {
UserMessageFormDTO msgIssue = ConvertUtils.sourceToTarget(msgDTO, UserMessageFormDTO.class);
msgIssue.setUserId(entity.getCreatedBy());
msgList.add(msgIssue);
}
//2:创建项目工作人员消息对象
String projectStaffMessage = String.format(UserMessageConstant.PROJECT_RESLOVED_MSG, entity.getIssueTitle());
//所选人员如果即在部门下又在网格下则只发一条消息

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

@ -20,22 +20,28 @@ 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;
/**
* 议题表决按天统计表
@ -49,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(
@ -70,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;
}
@ -109,14 +122,182 @@ public class IssueVoteStatisticalDailyServiceImpl extends BaseServiceImpl<IssueV
* @date 2020.05.19 09:23
**/
@Override
@Transactional(rollbackFor = Exception.class)
public void countVotingDailyStatistic() {
//1.获取所有表决中的议题以及在昨日表决截至的议题,将昨日新生成的议题单独拿出来
//昨天的日期
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));
//截至到昨天的统计List
List<IssuesToBeCountedResultDTO> issueStatisticalListUpToYes = baseDao.getIssueVotingStatisticalUpToYesterday();
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);
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());
}
}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);
}
}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());
//2.对每一个表决中的议题校验有没有生成过前一天的统计数据,如果生成过则跳过次议题
dailyListToInsert.add(dailyStatisticalToInsert);
}
//3.如果没有生成过,取前一天的日统计信息与缓存中的表决数进行对比生成昨日数据(非昨日新生成议题)
}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";
}

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

@ -269,4 +269,60 @@
AND id = #{issueId}
</select>
<!-- 生成昨日的话题统计信息 -->
<select id="getIssueVotingStatistical" resultType="com.epmet.dto.result.IssuesToBeCountedResultDTO">
SELECT
issue.ID,
issue.ISSUE_STATUS,
vote.ATTITUDE,
vote.VOTE_COUNT,
totalvote.ATTITUDE AS ATTITUDE_UP_TO_YESTERDAY,
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[>]]> 0
GROUP BY ISSUE_ID , ATTITUDE
) 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[<=]]> 1
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[>]]> 0
GROUP BY ISSUE_ID , ATTITUDE
) vote ON issue.ID = vote.ISSUE_ID AND totalvote.ATTITUDE = vote.ATTITUDE
WHERE
issue.DEL_FLAG = '0'
AND (
issue.ISSUE_STATUS = 'voting'
OR (
TO_DAYS( NOW( ) ) - TO_DAYS( issue.CLOSED_TIME ) <![CDATA[<=]]> 1
AND
TO_DAYS( NOW( ) ) - TO_DAYS( issue.CLOSED_TIME ) <![CDATA[>]]> 0
)
OR (
TO_DAYS( NOW( ) ) - TO_DAYS( issue.SHIFTED_TIME ) <![CDATA[<=]]> 1
AND
TO_DAYS( NOW( ) ) - TO_DAYS( issue.SHIFTED_TIME ) > 0
)
)
ORDER BY
issue.ID
</select>
</mapper>

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>

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

@ -22,5 +22,263 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<!-- 生成昨日的话题统计信息 -->
<select id="getIssueVotingStatistical" resultType="com.epmet.dto.result.IssuesToBeCountedResultDTO">
SELECT
issue.ID AS ISSUE_ID,
issue.ISSUE_STATUS,
vote.ATTITUDE,
IFNULL(vote.VOTE_COUNT,0)AS VOTE_COUNT,
totalvote.ATTITUDE AS ATTITUDE_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[>]]> 0
GROUP BY ISSUE_ID , ATTITUDE
) 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[<=]]> 1
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[>]]> 0
GROUP BY ISSUE_ID , ATTITUDE
) vote ON issue.ID = vote.ISSUE_ID AND totalvote.ATTITUDE = vote.ATTITUDE
WHERE
issue.DEL_FLAG = '0'
AND (
issue.ISSUE_STATUS = 'voting'
OR (
TO_DAYS( NOW( ) ) - TO_DAYS( issue.CLOSED_TIME ) <![CDATA[<=]]> 1
AND
TO_DAYS( NOW( ) ) - TO_DAYS( issue.CLOSED_TIME ) <![CDATA[>]]> 0
)
OR (
TO_DAYS( NOW( ) ) - TO_DAYS( issue.SHIFTED_TIME ) <![CDATA[<=]]> 1
AND
TO_DAYS( NOW( ) ) - TO_DAYS( issue.SHIFTED_TIME ) > 0
)
)
ORDER BY
issue.ID
</select>
<!-- 生成截止到昨日的话题统计信息 -->
<select id="getIssueVotingStatisticalUpToYesterday" resultType="com.epmet.dto.result.IssuesToBeCountedResultDTO">
SELECT
issue.ID AS ISSUE_ID,
issue.ISSUE_STATUS,
totalvote.ATTITUDE,
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 ) > 0
GROUP BY ISSUE_ID , ATTITUDE
) totalvote ON issue.ID = totalvote.ISSUE_ID
WHERE
issue.DEL_FLAG = '0'
AND (
issue.ISSUE_STATUS = 'voting'
OR (
TO_DAYS( NOW( ) ) - TO_DAYS( issue.CLOSED_TIME ) <![CDATA[<=]]> 1 AND TO_DAYS( NOW( ) ) - TO_DAYS( issue.CLOSED_TIME ) > 0
)
OR (
TO_DAYS( NOW( ) ) - TO_DAYS( issue.SHIFTED_TIME ) <![CDATA[<=]]> 1 AND TO_DAYS( NOW( ) ) - TO_DAYS( issue.SHIFTED_TIME ) > 0
)
)
ORDER BY
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>

6
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;
}
@ -558,7 +558,7 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
}
/**
* @Description 得到所在网格下所有的居民数 去重
* @Description 得到所在网格下所有的居民数 去重 得到的是应表决数
* @param gridId
* @return
* @author wangc

Loading…
Cancel
Save