Browse Source

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

dev_shibei_match
wangchao 5 years ago
parent
commit
27c22b5912
  1. 40
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssuesToBeCountedResultDTO.java
  2. 14
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java
  3. 20
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteStatisticalDailyDao.java
  4. 12
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalDailyServiceImpl.java
  5. 52
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml
  6. 81
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml
  7. 2
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java

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

@ -0,0 +1,40 @@
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;
}

14
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java

@ -22,10 +22,7 @@ import com.epmet.dto.IssueDTO;
import com.epmet.dto.form.CommonIssueListFormDTO;
import com.epmet.dto.form.IssueDetailFormDTO;
import com.epmet.dto.form.ShiftProjectListFromDTO;
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;
@ -91,4 +88,13 @@ public interface IssueDao extends BaseDao<IssueEntity> {
* @date 2020.05.14 13:34
**/
List<ClosedIssueListGovResultDTO> selectClosedListGov(CommonIssueListFormDTO issueListFormDTO);
/**
* @Description 生成昨日的议题日统计信息
* @param
* @return List<IssuesToBeCountedResultDTO>
* @author wangc
* @date 2020.05.19 15:00
**/
List<IssuesToBeCountedResultDTO> getIssueVotingStatistical();
}

20
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,21 @@ 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();
}

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

@ -25,6 +25,7 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
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;
@ -36,6 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 议题表决按天统计表
@ -110,6 +112,16 @@ public class IssueVoteStatisticalDailyServiceImpl extends BaseServiceImpl<IssueV
**/
@Override
public void countVotingDailyStatistic() {
List<IssuesToBeCountedResultDTO> issueStatisticalList = baseDao.getIssueVotingStatistical();
Map<String,List<IssuesToBeCountedResultDTO>> issueStatisticalMap =
issueStatisticalList.stream().collect(Collectors.groupingBy(IssuesToBeCountedResultDTO::getIssueId));
List<IssuesToBeCountedResultDTO> issueStatisticalListUpToYes = baseDao.getIssueVotingStatisticalUpToYesterday();
Map<String,List<IssuesToBeCountedResultDTO>> issueStatisticalMapUpTpYes =
issueStatisticalListUpToYes.stream().collect(Collectors.groupingBy(IssuesToBeCountedResultDTO::getIssueId));
issueStatisticalMap.forEach((key,value) -> {
});
//1.获取所有表决中的议题以及在昨日表决截至的议题,将昨日新生成的议题单独拿出来
//2.对每一个表决中的议题校验有没有生成过前一天的统计数据,如果生成过则跳过次议题

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

@ -245,4 +245,56 @@
#{pageSize}
</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[<=]]> 1
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[>]]> 0
GROUP BY ISSUE_ID , ATTITUDE
) vote ON issue.ID = vote.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
GROUP BY ISSUE_ID , ATTITUDE
) totalvote ON issue.ID = totalvote.ISSUE_ID AND vote.ATTITUDE = totalvote.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>

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

@ -22,5 +22,86 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<!-- 生成昨日的话题统计信息 -->
<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[<=]]> 1
AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) <![CDATA[>]]> 0
GROUP BY ISSUE_ID , ATTITUDE
) vote ON issue.ID = vote.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
GROUP BY ISSUE_ID , ATTITUDE
) totalvote ON issue.ID = totalvote.ISSUE_ID AND vote.ATTITUDE = totalvote.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>
</mapper>

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

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

Loading…
Cancel
Save