From 27c22b5912d6b5e12e021529a08d54b9c44a5372 Mon Sep 17 00:00:00 2001 From: wangchao Date: Tue, 19 May 2020 17:42:52 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=AE=AE=E9=A2=98=E6=97=A5=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=95=B0=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../result/IssuesToBeCountedResultDTO.java | 40 +++++++++ .../src/main/java/com/epmet/dao/IssueDao.java | 14 +++- .../dao/IssueVoteStatisticalDailyDao.java | 20 +++++ .../IssueVoteStatisticalDailyServiceImpl.java | 12 +++ .../src/main/resources/mapper/IssueDao.xml | 52 ++++++++++++ .../mapper/IssueVoteStatisticalDailyDao.xml | 81 +++++++++++++++++++ .../impl/ResiGroupMemberServiceImpl.java | 2 +- 7 files changed, 216 insertions(+), 5 deletions(-) create mode 100644 epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssuesToBeCountedResultDTO.java diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssuesToBeCountedResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssuesToBeCountedResultDTO.java new file mode 100644 index 0000000000..0b8f2532db --- /dev/null +++ b/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; +} diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java index a5eeaa6497..dddd6d4118 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueDao.java +++ b/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 { * @date 2020.05.14 13:34 **/ List selectClosedListGov(CommonIssueListFormDTO issueListFormDTO); + + /** + * @Description 生成昨日的议题日统计信息 + * @param + * @return List + * @author wangc + * @date 2020.05.19 15:00 + **/ + List getIssueVotingStatistical(); } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteStatisticalDailyDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteStatisticalDailyDao.java index 06cfea984f..7fa3df29c2 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteStatisticalDailyDao.java +++ b/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 { + /** + * @Description 生成昨日的议题日统计信息 + * @param + * @return List + * @author wangc + * @date 2020.05.19 15:00 + **/ + List getIssueVotingStatistical(); + + /** + * @Description 生成截止到昨日的议题日统计信息 + * @param + * @return List + * @author wangc + * @date 2020.05.19 15:00 + **/ + List getIssueVotingStatisticalUpToYesterday(); } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalDailyServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalDailyServiceImpl.java index 01de7abbd5..db1b43ecc0 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalDailyServiceImpl.java +++ b/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 issueStatisticalList = baseDao.getIssueVotingStatistical(); + Map> issueStatisticalMap = + issueStatisticalList.stream().collect(Collectors.groupingBy(IssuesToBeCountedResultDTO::getIssueId)); + List issueStatisticalListUpToYes = baseDao.getIssueVotingStatisticalUpToYesterday(); + Map> issueStatisticalMapUpTpYes = + issueStatisticalListUpToYes.stream().collect(Collectors.groupingBy(IssuesToBeCountedResultDTO::getIssueId)); + issueStatisticalMap.forEach((key,value) -> { + + }); + //1.获取所有表决中的议题以及在昨日表决截至的议题,将昨日新生成的议题单独拿出来 //2.对每一个表决中的议题校验有没有生成过前一天的统计数据,如果生成过则跳过次议题 diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml index f4cce88a94..6c3651d9a9 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml @@ -245,4 +245,56 @@ #{pageSize} + + + + \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml index fc9b69d379..6eff9f400f 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml @@ -22,5 +22,86 @@ + + + + + + + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java index 80ac752e56..d72cbeeb69 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java +++ b/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 Date: Wed, 20 May 2020 16:19:02 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=85=B3=E9=97=AD=E8=AE=AE=E9=A2=98?= =?UTF-8?q?=E3=80=81=E8=AE=AE=E9=A2=98=E8=BD=AC=E9=A1=B9=E7=9B=AE=E5=B1=85?= =?UTF-8?q?=E6=B0=91=E7=AB=AF=E8=AF=9D=E9=A2=98=E4=BA=BA=E8=AE=AE=E9=A2=98?= =?UTF-8?q?=E4=BA=BA=E7=9B=B8=E5=90=8C=E5=8F=91=E9=80=81=E4=B8=80=E6=9D=A1?= =?UTF-8?q?=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/service/impl/IssueServiceImpl.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java index ee5eb6bc52..683ebb5560 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java +++ b/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 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 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()); //所选人员如果即在部门下又在网格下则只发一条消息 From ed9b6a9ee83cc62c61e3b7c146439fb1c33d222a Mon Sep 17 00:00:00 2001 From: wangchao Date: Wed, 20 May 2020 16:32:16 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E8=AE=AE=E9=A2=98=E6=97=A5=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=95=B0=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IssueVoteStatisticalDailyController.java | 12 ++ .../com/epmet/dao/IssueVoteDetailDao.java | 10 + .../dao/IssueVoteStatisticalDailyDao.java | 27 +++ .../IssueVoteStatisticalDailyServiceImpl.java | 191 ++++++++++++++++- .../java/com/epmet/utils/ModuleConstants.java | 24 +++ .../src/main/resources/mapper/IssueDao.xml | 14 +- .../resources/mapper/IssueVoteDetailDao.xml | 8 + .../mapper/IssueVoteStatisticalDailyDao.xml | 193 +++++++++++++++++- .../impl/ResiGroupMemberServiceImpl.java | 4 +- 9 files changed, 457 insertions(+), 26 deletions(-) diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueVoteStatisticalDailyController.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueVoteStatisticalDailyController.java index 7e5506354a..6ff8f2e89b 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueVoteStatisticalDailyController.java +++ b/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(); + } } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java index 1b0b35cd83..2fc8b4ee66 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteDetailDao.java +++ b/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 { */ Integer checkoutVote(VoteFormDTO formDTO); + /** + * @Description getAttitudes + * @param + * @return + * @author wangc + * @date 2020.05.20 10:52 + **/ + Set getAttitudes(); } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteStatisticalDailyDao.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteStatisticalDailyDao.java index 7fa3df29c2..c6a6a36e1b 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteStatisticalDailyDao.java +++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueVoteStatisticalDailyDao.java @@ -50,4 +50,31 @@ public interface IssueVoteStatisticalDailyDao extends BaseDao getIssueVotingStatisticalUpToYesterday(); + + /** + * @Description 通过议题Id和统计日期查找日统计信息 + * @param entity + * @return + * @author wangc + * @date 2020.05.20 11:14 + **/ + IssueVoteStatisticalDailyEntity getDailyStatisticalCountByIssueIdAndStatisticalDate(IssueVoteStatisticalDailyEntity entity); + + /** + * @Description 批量添加 + * @param list List + * @return + * @author wangc + * @date 2020.05.20 14:54 + **/ + void insertBatch(List list); + + /** + * @Description 批量更新 + * @param list List + * @return + * @author wangc + * @date 2020.05.20 14:54 + **/ + void updateBatch(List list); } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalDailyServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalDailyServiceImpl.java index db1b43ecc0..adea467e4e 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueVoteStatisticalDailyServiceImpl.java +++ b/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 page(Map params) { IPage page = baseDao.selectPage( @@ -72,7 +81,9 @@ public class IssueVoteStatisticalDailyServiceImpl extends BaseServiceImpl 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 issueStatisticalList = baseDao.getIssueVotingStatistical(); Map> issueStatisticalMap = - issueStatisticalList.stream().collect(Collectors.groupingBy(IssuesToBeCountedResultDTO::getIssueId)); + issueStatisticalList.stream().collect(Collectors.groupingBy(IssuesToBeCountedResultDTO::getIssueId)); + //截至到昨天的统计List List issueStatisticalListUpToYes = baseDao.getIssueVotingStatisticalUpToYesterday(); - Map> issueStatisticalMapUpTpYes = + Map> issueStatisticalMapUpToYes = issueStatisticalListUpToYes.stream().collect(Collectors.groupingBy(IssuesToBeCountedResultDTO::getIssueId)); + //日统计信息会出现若统计日内无人点“同意”或者“反对”,则返回列表中只有表决的单方面数据,未被选举的数据没有,因此需要截至当日的统计列表 + //如果当日无人进行表决而昨日之前有表决,此时会返回一条议题记录,attitude为null,attitudeUpToYesterday不为null + //若昨日以及昨日之前都无人表决,此时attitude为null,attitudeUpToYesterday也为null + List dailyListToInsert = new LinkedList<>(); + List 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 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 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 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 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数(昨日新生成议题,保证数据的准确性) } } \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java index 8cf1e44e15..8a9e9f7fde 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/utils/ModuleConstants.java +++ b/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"; + } diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml index 4546d8da07..d31d8bd7cf 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueDao.xml +++ b/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 ) 1 - AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) ]]> 0 + AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) ]]> 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 ) ]]> 0 + AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) 1 + AND TO_DAYS( NOW( ) ) - TO_DAYS( CREATED_TIME ) ]]> 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 + diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml index 6e6166601b..62e0ed265a 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteDetailDao.xml @@ -27,4 +27,12 @@ AND created_by = #{createdBy} + + \ No newline at end of file diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml index 6eff9f400f..0c907f48be 100644 --- a/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml +++ b/epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueVoteStatisticalDailyDao.xml @@ -26,33 +26,36 @@ + + + + + + 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 + + ( + (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() + ) + + + + + + UPDATE issue_vote_statistical_daily + + + + + + when id = #{item.id} then #{item.supportCount} + + + + + + + + when id = #{item.id} then #{item.oppositionCount} + + + + + + + + when id = #{item.id} then #{item.totalCount} + + + + + + + + when id = #{item.id} then #{item.todayIncrement} + + + + + + + + when id = #{item.id} then #{item.supportIncrement} + + + + + + + + when id = #{item.id} then #{item.oppositionIncrement} + + + + + + + + when id = #{item.id} then #{item.updatedBy} + + + + + + + + when id = #{item.id} then #{item.votableCount} + + + + + + + + when id = #{item.id} then #{item.delFlag} + + + + + + + + when id = #{item.id} then #{item.updatedBy} + + + + + + updated_time = now() + + WHERE id = #{id} + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java index d72cbeeb69..6f8ade6604 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java +++ b/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 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; } From 8f39ccdb0b8cbb17a5e303c6183745279bb6bde5 Mon Sep 17 00:00:00 2001 From: wangchao Date: Wed, 20 May 2020 16:36:36 +0800 Subject: [PATCH 4/4] =?UTF-8?q?dto=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/result/IssuesToBeCountedResultDTO.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssuesToBeCountedResultDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssuesToBeCountedResultDTO.java index 0b8f2532db..9d6b823ec7 100644 --- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssuesToBeCountedResultDTO.java +++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/result/IssuesToBeCountedResultDTO.java @@ -37,4 +37,9 @@ public class IssuesToBeCountedResultDTO implements Serializable { * 票数 - 截至当日 * */ private Integer voteCountUpToYesterday; + + /** + * 态度 此列相应的可能对应 attitude为null + * */ + private String attitudeUpToYesterday; }