diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/user/UserAnalysisDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/user/UserAnalysisDao.xml
index a36fe93ab5..29e482c554 100644
--- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/user/UserAnalysisDao.xml
+++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/user/UserAnalysisDao.xml
@@ -57,8 +57,8 @@
m.id,
m.DATE_ID AS currentDate,
m.DATE_ID AS dateId,
- m.REG_TOTAL AS regTotal,
- 0 AS partiTotal,
+ m.REG_TOTAL AS partiTotal,
+ 0 AS regTotal,
m.PARTYMEMBER_TOTAL AS partymemberTotal,
m.PARTYMEMBER_PROPORTION*100 AS partymemberProportionValue,
m.WARM_HEARTED_TOTAL AS warmHeartedTotal,
diff --git a/epmet-module/data-statistical/data-statistical-server/pom.xml b/epmet-module/data-statistical/data-statistical-server/pom.xml
index 3c2cbaf611..8a9a478a65 100644
--- a/epmet-module/data-statistical/data-statistical-server/pom.xml
+++ b/epmet-module/data-statistical/data-statistical-server/pom.xml
@@ -159,7 +159,7 @@
6379
123456
- true
+ false
122.152.200.70:8848
fcd6fc8f-ca3a-4b01-8026-2b05cdc5976b
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java
index a4e9ecbc6a..77df964e59 100644
--- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/topic/impl/TopicServiceImpl.java
@@ -921,4 +921,333 @@ public class TopicServiceImpl implements TopicService {
}
+ /**
+ * @Description 根据话题状态的维度自动匹配、分析数据
+ * @param
+ * @return
+ * @author wangc
+ * @date 2020.06.30 17:04
+ **/
+ void analyzeTopicGroupByIssueStatus(Map> subGridOfAgency, List agencies, Map> gridGroupMap, Map> topicOperationMap, Date targetDate, TopicStatisticalData dataPacket, List statusDimension, DimIdGenerator.DimIdBean timeDimension){
+ //Boolean isMonthEnd = false;
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(new Date());
+ //前一天零点
+ calendar.add(Calendar.DATE, NumConstant.ONE_NEG);
+ calendar.set(Calendar.HOUR_OF_DAY, NumConstant.ZERO);
+ calendar.set(Calendar.MINUTE, NumConstant.ZERO);
+ calendar.set(Calendar.SECOND, NumConstant.ZERO);
+ Date targetDateCheck = null == targetDate ? calendar.getTime() : targetDate;
+
+ calendar.setTime(targetDateCheck);
+ //如果目标日期是当月的最后一天
+ //if(calendar.get(Calendar.DATE) == calendar.getActualMaximum(Calendar.DAY_OF_MONTH)){
+ //求出这个月的第一天
+ calendar.setTime(new Date());
+ 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);
+
+ // isMonthEnd = true;
+ //}
+
+ //计算百分比使用,保留小数点后两位
+ NumberFormat numberFormat = NumberFormat.getInstance();
+ numberFormat.setMaximumFractionDigits(NumConstant.SIX);
+
+ Map statusMap = new HashMap<>();
+ statusDimension.forEach(status -> statusMap.put(status.getId(),status));
+ Map agencyMap = new HashMap<>();
+ agencies.forEach(agency -> {agencyMap.put(agency.getAgencyId(),agency);});
+
+
+ List groupList = new LinkedList<>();
+ for(Map.Entry> entry : gridGroupMap.entrySet()){
+ if(null != entry.getValue() && entry.getValue().size() > NumConstant.ZERO)
+ groupList.addAll(entry.getValue());
+ }
+
+ //key -> groupId
+ Map groupTopicData = traverseGroupTopic(groupList,topicOperationMap);
+ Map gridDistinct = new HashMap<>();
+ agencies.forEach(agency -> {
+ if(null != agency.getGridIds() && agency.getGridIds().size() > NumConstant.ZERO){
+ agency.getGridIds().forEach(grid -> {
+ gridDistinct.put(grid,false);
+ });
+ }
+ });
+
+ for(Map.Entry> entry : subGridOfAgency.entrySet()){
+
+ FactTopicIssueAgencyDailyDTO issueAgencyD = new FactTopicIssueAgencyDailyDTO();
+ FactTopicTotalAgencyDailyDTO totalAgencyD = new FactTopicTotalAgencyDailyDTO();
+
+ //initAgencyDailyDTO(entry.getKey(),agencyMap.get(entry.getKey()).getPid(),agencyMap.get(entry.getKey()).getCustomerId(),timeDimension,statusMap,issueAgencyD,totalAgencyD);
+
+
+ statusMap.forEach((k,v) -> {
+ //无状态标识
+ boolean noStatusFlag = false;
+ if(StringUtils.equals(k,"discussing")){
+ noStatusFlag = true;
+ }
+ final boolean noStatusFlagFinal = noStatusFlag;
+
+ //k:状态的key
+ //对应状态key的一条话题-状态记录
+ FactTopicStatusAgencyDailyDTO topicAgencyD = new FactTopicStatusAgencyDailyDTO();
+ topicAgencyD.setTopicStatusId(k);
+ //initAgencyDailyDTO
+
+ if(null != entry.getValue() && entry.getValue().size() > NumConstant.ZERO){
+ entry.getValue().forEach(gridId -> {
+
+
+ FactTopicStatusGridDailyDTO topicGridD = new FactTopicStatusGridDailyDTO();
+
+ topicGridD.setTopicStatusId(k);
+
+ FactTopicIssueGridDailyDTO issueGridD = new FactTopicIssueGridDailyDTO();
+ FactTopicTotalGridDailyDTO totalGirdD = new FactTopicTotalGridDailyDTO();
+
+ //init
+ //if(noStatusFlagFinal){
+ //initGridDailyDTO(entry.getKey(),gridId,agencyMap.get(entry.getKey()).getCustomerId(),timeDimension,statusMap,issueGridD,totalGirdD,topicGridD_discussing);
+ //}else{
+ //initGridDailyDTO(entry.getKey(),gridId,agencyMap.get(entry.getKey()).getCustomerId(),timeDimension,statusMap,topicGridD_discussing);
+ //}
+
+
+ List groups = gridGroupMap.get(gridId);
+ if(null != groups && groups.size() > NumConstant.ZERO) {
+ groups.forEach(group -> {
+ if (null != group && StringUtils.isNotBlank(group.getGroupId())) {
+
+ if(noStatusFlagFinal) {
+ issueAgencyD.setIssueIncr(issueAgencyD.getIssueIncr() + groupTopicData.get(group.getGroupId()).getIssueIncr());
+ issueAgencyD.setIssueTotal(issueAgencyD.getIssueTotal() + groupTopicData.get(group.getGroupId()).getIssueTotal());
+ totalAgencyD.setIssueTotalCount(issueAgencyD.getIssueTotal());
+ totalAgencyD.setHiddenTotalCount(totalAgencyD.getHiddenTotalCount() + groupTopicData.get(group.getGroupId()).getHiddenTotal());
+ totalAgencyD.setTopicIncr(totalAgencyD.getTopicIncr() + groupTopicData.get(group.getGroupId()).getTopicIncr());
+ totalAgencyD.setTopicTotal(totalAgencyD.getTopicTotal() + groupTopicData.get(group.getGroupId()).getTotal());
+ issueGridD.setIssueIncr(issueGridD.getIssueIncr() + groupTopicData.get(group.getGroupId()).getIssueIncr());
+ issueGridD.setIssueTotal(issueGridD.getIssueTotal() + groupTopicData.get(group.getGroupId()).getIssueTotal());
+ totalGirdD.setIssueTotalCount(issueGridD.getIssueTotal());
+ totalGirdD.setHiddenTotalCount(totalGirdD.getHiddenTotalCount() + groupTopicData.get(group.getGroupId()).getHiddenTotal());
+ totalGirdD.setTopicIncr(totalGirdD.getTopicIncr() + groupTopicData.get(group.getGroupId()).getTopicIncr());
+ totalGirdD.setTopicTotal(totalGirdD.getTopicTotal() + groupTopicData.get(group.getGroupId()).getTotal());
+ }
+
+
+
+ GroupTopicData data = groupTopicData.get(group.getGroupId());
+ if (null != data) {
+
+ //根据当前的话题状态key,去data中取相应的数据
+ switch(k){
+ case "discussing":
+
+ topicAgencyD.setTopicCount(topicAgencyD.getTopicCount() + data.getDiscussingTotal());
+ topicAgencyD.setTopicIncrement(topicAgencyD.getTopicIncrement() + data.getDiscussingIncr());
+
+ topicGridD.setTopicCount(topicGridD.getTopicCount() + data.getDiscussingTotal());
+ topicGridD.setTopicIncrement(topicGridD.getTopicIncrement() + data.getDiscussingIncr());
+ break;
+ case "hidden":
+
+ topicAgencyD.setTopicCount(topicAgencyD.getTopicCount() + data.getHiddenTotal());
+ topicAgencyD.setTopicIncrement(topicAgencyD.getTopicIncrement() + data.getHiddenIncr());
+
+ topicGridD.setTopicCount(topicGridD.getTopicCount() + data.getHiddenTotal());
+ topicGridD.setTopicIncrement(topicGridD.getTopicIncrement() + data.getHiddenIncr());
+ break;
+ case "closed":
+
+ topicAgencyD.setTopicCount(topicAgencyD.getTopicCount() + data.getClosedTotal());
+ topicAgencyD.setTopicIncrement(topicAgencyD.getTopicIncrement() + data.getClosedIncr());
+
+ topicGridD.setTopicCount(topicGridD.getTopicCount() + data.getClosedTotal());
+ topicGridD.setTopicIncrement(topicGridD.getTopicIncrement() + data.getClosedIncr());
+ break;
+ }
+
+ }
+
+ }
+
+
+ });
+ }
+ //网格-百分比
+ //setGridTopicProportion(numberFormat, topicGridD, totalGirdD);
+
+ if(!gridDistinct.get(gridId)) {
+
+ //setGridDailyDataPacket(dataPacket, issueGridD, totalGirdD, topicGridD_discussing, topicGridD_hidden, topicGridD_closed);
+ /*
+ if(noStatusFlagFinal){
+ set :: issueGridD | totalGridD | topicGridD
+ }else{
+ set :: topicGridD
+ }
+ */
+ gridDistinct.put(gridId,true);
+ }
+
+
+
+ });
+
+
+ }
+ //机关-百分比
+ //setAgencyTopicProportion(numberFormat,topicAgencyD,totalAgencyD);
+
+
+
+ //setAgencyDailyDataPacket(dataPacket,issueAgencyD,totalAgencyD,topicAgencyD_discussing,topicAgencyD_hidden,topicAgencyD_closed);
+ /*
+ if(noStatusFlagFinal){
+ set :: issueAgencyD | totalAgencyD | topicAgencyD
+ }else{
+ set :: topicAgencyD
+ }
+ */
+
+ });
+
+
+ }
+
+ gridDistinct.forEach((k,v) -> {
+ gridDistinct.put(k,false);
+ });
+
+ List topicsBetweenTimeRange = topicDao.selectGroupOrderByGridBetweenTimeRange(calendar.getTime(),targetDate,dataPacket.getCustomerId());
+ //key : gridId
+ Map> GridGroupMapBetweenTimeRange =
+ topicsBetweenTimeRange.stream().collect(Collectors.groupingBy(ResiGroupTopicResultDTO::getGridId));
+ List groupListBetweenTimeRange = new LinkedList<>();
+
+ for(Map.Entry> entryBetweenTimeRange : GridGroupMapBetweenTimeRange.entrySet()){
+ if(null != entryBetweenTimeRange.getValue() && entryBetweenTimeRange.getValue().size() > NumConstant.ZERO)
+ groupListBetweenTimeRange.addAll(entryBetweenTimeRange.getValue());
+ }
+ List operationsBetweenTimeRange =
+ topicDao.selectTopicOperationRecordBetweenTimeRange(calendar.getTime(),targetDate);
+
+ //key: topicId
+ Map> topicOperationMapBetweenTimeRange =
+ operationsBetweenTimeRange.stream().collect(Collectors.groupingBy(ResiTopicOperationResultDTO::getTopicId));
+ //key: groupId
+ Map groupTopicDataBetweenTimeRange = traverseGroupTopic(groupListBetweenTimeRange,topicOperationMapBetweenTimeRange);
+
+ for(Map.Entry> entry : subGridOfAgency.entrySet()){
+
+ FactTopicIssueAgencyMonthlyDTO issueAgencyM = new FactTopicIssueAgencyMonthlyDTO();
+
+
+ //initAgencyMonthlyDTO(entry.getKey(),agencyMap.get(entry.getKey()).getPid(),agencyMap.get(entry.getKey()).getCustomerId(),timeDimension,statusMap,issueAgencyM);
+
+
+ statusMap.forEach((k,v) -> {
+ boolean noStatusFlag = false;
+ if(StringUtils.equals(k,"discussing")){
+ noStatusFlag = true;
+ }
+ final boolean noStatusFlagFinal = noStatusFlag;
+
+ FactTopicStatusAgencyMonthlyDTO topicAgencyM = new FactTopicStatusAgencyMonthlyDTO();
+ topicAgencyM.setTopicStatusId(k);
+
+ if(null != entry.getValue() && entry.getValue().size() > NumConstant.ZERO){
+ entry.getValue().forEach(gridId -> {
+
+
+ FactTopicIssueGridMonthlyDTO issueGridM = new FactTopicIssueGridMonthlyDTO();
+ initGridMonthlyDTO(entry.getKey(),gridId,agencyMap.get(entry.getKey()).getCustomerId(),timeDimension,issueGridM);
+
+
+ List groups = gridGroupMap.get(gridId);
+ if(null != groups) {
+ groups.forEach(group -> {
+ if (null != group && StringUtils.isNotBlank(group.getGroupId())) {
+
+ if(noStatusFlagFinal) {
+
+ issueAgencyM.setIssueIncr(issueAgencyM.getIssueIncr() + groupTopicDataBetweenTimeRange.get(group.getGroupId()).getIssueIncr());
+ issueAgencyM.setIssueTotal(issueAgencyM.getIssueTotal() + groupTopicDataBetweenTimeRange.get(group.getGroupId()).getIssueTotal());
+ issueGridM.setIssueIncr(issueGridM.getIssueIncr() + groupTopicDataBetweenTimeRange.get(group.getGroupId()).getIssueIncr());
+ issueGridM.setIssueTotal(issueGridM.getIssueTotal() + groupTopicDataBetweenTimeRange.get(group.getGroupId()).getIssueTotal());
+
+ }
+
+ GroupTopicData data = groupTopicDataBetweenTimeRange.get(group.getGroupId());
+ if (null != data) {
+
+ switch(k){
+ case "discussing":
+
+ topicAgencyM.setTopicCount(topicAgencyM.getTopicCount() + data.getDiscussingTotal());
+ topicAgencyM.setTopicIncr(topicAgencyM.getTopicIncr() + data.getDiscussingIncr());
+ break;
+ case "hidden":
+
+ topicAgencyM.setTopicCount(topicAgencyM.getTopicCount() + data.getHiddenTotal());
+ topicAgencyM.setTopicIncr(topicAgencyM.getTopicIncr() + data.getHiddenIncr());
+ break;
+ case "closed":
+
+ topicAgencyM.setTopicCount(topicAgencyM.getTopicCount() + data.getClosedTotal());
+ topicAgencyM.setTopicIncr(topicAgencyM.getTopicIncr() + data.getClosedIncr());
+ break;
+ }
+
+
+ }
+
+ }
+
+
+ });
+ }
+
+ if(!gridDistinct.get(gridId)) {
+
+ setGridMonthlyDataPacket(dataPacket, issueGridM);
+ }
+
+ gridDistinct.put(gridId,true);
+ });
+
+
+ }
+
+ //机关-百分比
+ //Integer topicTotal = dataPacket.getTotalAgencyDailyList().stream().filter( obj -> StringUtils.equals(obj.getAgencyId(),entry.getKey())).findFirst().get().getTopicTotal();
+ //setAgencyTopicMonthlyProportion(numberFormat,topicAgencyM,topicTotal);
+
+
+ /*
+ if(noStatusFlagFinal){
+ set :: issueAgencyM | topicAgencyM
+ }else{
+ set topicAgencyM
+ }
+
+ */
+ });
+
+
+
+ }
+
+
+
+
+ }
+
+
}
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java
index f7655f12a7..3882b0d524 100644
--- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/user/impl/UserServiceImpl.java
@@ -186,15 +186,17 @@ public class UserServiceImpl implements UserService {
Boolean isMonthBeginning = true;
Calendar calendar =Calendar.getInstance();
+ //求出T-1
calendar.setTime(new Date());
calendar.add(Calendar.DATE, NumConstant.ONE_NEG);
Date targetDateCheck = null == targetDate ? calendar.getTime() : targetDate;
+ //指定日期 OR T-1
calendar.setTime(targetDateCheck);
//如果目标日期不是是当月的第一天
if(calendar.get(Calendar.DATE) != calendar.getActualMinimum(Calendar.DAY_OF_MONTH)){
//求出这个月的第一天
- calendar.setTime(new Date());
+
calendar.set(Calendar.DAY_OF_MONTH, NumConstant.ONE);
calendar.set(Calendar.HOUR_OF_DAY, NumConstant.ZERO);
calendar.set(Calendar.MINUTE, NumConstant.ZERO);
@@ -255,7 +257,7 @@ public class UserServiceImpl implements UserService {
regAgencyD.setPartymemberTotal(partyRegData.getTotal());
regAgencyD.setRegIncr(regData.getIncr());
regAgencyD.setWarmIncr(warmRegData.getIncr());
- regAgencyD.setPartymemberIncr(partiData.getIncr());
+ regAgencyD.setPartymemberIncr(partyPartiData.getIncr());
regAgencyD.setResiProportion(new BigDecimal(NumConstant.ONE));
regAgencyD.setPartymemberProportion(null == regData.getTotal() || regData.getTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float)partyRegData.getTotal()/(float)regData.getTotal() )));
regAgencyD.setWarmHeartedProportion(null == regData.getTotal() || regData.getTotal() == NumConstant.ZERO ? BigDecimal.ZERO : new BigDecimal(numberFormat.format((float)warmRegData.getTotal()/(float)regData.getTotal() )));
@@ -312,7 +314,7 @@ public class UserServiceImpl implements UserService {
regAgencyM.setPartymemberTotal(partyRegData.getTotal());
regAgencyM.setRegIncr(regData.getIncr());
regAgencyM.setWarmIncr(warmRegData.getIncr());
- regAgencyM.setPartymemberIncr(partiData.getIncr());
+ regAgencyM.setPartymemberIncr(partyPartiData.getIncr());
regAgencyM.setResiProportion(new BigDecimal(NumConstant.ONE));
regAgencyM.setPartymemberProportion(regAgencyD.getPartymemberProportion());
regAgencyM.setWarmHeartedProportion(regAgencyD.getWarmHeartedProportion());