diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java index 987c2a2697..a7da3d564b 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java @@ -5,4 +5,6 @@ package com.epmet.dataaggre.constant; * @DateTime 2020/12/25 上午10:55 */ public interface OrgConstant { + String AGENCY = "agency"; + String GRID = "grid"; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/PartyMemberVanguardFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/PartyMemberVanguardFormDTO.java new file mode 100644 index 0000000000..2b70bbeaa0 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/PartyMemberVanguardFormDTO.java @@ -0,0 +1,18 @@ +package com.epmet.dataaggre.dto.datastats.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/5/18 14:25 + */ +@Data +public class PartyMemberVanguardFormDTO implements Serializable { + private static final long serialVersionUID = -4331281350678714877L; + private String agencyId; + private String orgId; + private String orgType; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardDetailResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardDetailResultDTO.java new file mode 100644 index 0000000000..929178031d --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardDetailResultDTO.java @@ -0,0 +1,74 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/5/18 14:27 + */ +@NoArgsConstructor +@Data +public class PartyMemberVanguardDetailResultDTO implements Serializable { + private static final long serialVersionUID = 8315392246739995430L; + /** + * 组织ID + */ + private String orgId; + /** + * 组织名 + */ + private String orgName; + /** + * 党员建组数 + */ + private Integer groupCount; + /** + * 党员建组数占比 + */ + private BigDecimal groupRatio; + /** + * 组内党员人数 + */ + private Integer groupMemberCount; + /** + * 组内党员人数占比 + */ + private BigDecimal groupMemberRatio; + /** + * 党员发布话题数 + */ + private Integer topicCount; + /** + * 党员发布话题数占比 + */ + private BigDecimal topicRatio; + /** + * 党员发布话题转议题数 + */ + private Integer issueCount; + /** + * 党员发布话题转议题数占比 + */ + private BigDecimal issueRatio; + /** + * 党员发布话题转项目数 + */ + private Integer projectCount; + /** + * 党员发布话题转项目数占比 + */ + private BigDecimal projectRatio; + /** + * 党员发布话题转项目结案数 + */ + private Integer projectClosedCount; + /** + * 党员发布话题转项目结案数占比 + */ + private BigDecimal projectClosedRatio; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardRankResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardRankResultDTO.java new file mode 100644 index 0000000000..9d2f643229 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/PartyMemberVanguardRankResultDTO.java @@ -0,0 +1,18 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/5/18 14:30 + */ +@Data +public class PartyMemberVanguardRankResultDTO implements Serializable { + private static final long serialVersionUID = -3103242333633668412L; + private List agencyRank; + private List gridRank; +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/PartyMemberVanguardController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/PartyMemberVanguardController.java new file mode 100644 index 0000000000..6acf23d69e --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/PartyMemberVanguardController.java @@ -0,0 +1,51 @@ +package com.epmet.dataaggre.controller; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.dataaggre.dto.datastats.form.PartyMemberVanguardFormDTO; +import com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO; +import com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardRankResultDTO; +import com.epmet.dataaggre.service.datastats.DataStatsService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/5/18 14:19 + */ +@RestController +@RequestMapping("vanguard") +public class PartyMemberVanguardController { + @Resource + private DataStatsService dataStatsService; + + /** + * 党员先锋--组织/网格详情 + * @author zhaoqifeng + * @date 2021/5/18 15:16 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("detail") + public Result vanguardDetail(@RequestBody PartyMemberVanguardFormDTO formDTO) { + PartyMemberVanguardDetailResultDTO result = dataStatsService.vanguardDetail(formDTO); + return new Result().ok(result); + } + + /** + * 党员先锋--下级组织排行 + * @author zhaoqifeng + * @date 2021/5/18 15:16 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("orgrank") + public Result vanguardRank(@RequestBody PartyMemberVanguardFormDTO formDTO) { + PartyMemberVanguardRankResultDTO result = dataStatsService.vanguardRank(formDTO); + return new Result().ok(result); + } +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java index d84e733e50..d6729152b5 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java @@ -172,4 +172,40 @@ public interface DataStatsDao { */ List getSubGridProject(@Param("gridIds") List gridIds, @Param("dateId") String dateId); + /** + * 查询组织党员先锋详情 + * @author zhaoqifeng + * @date 2021/5/18 14:40 + * @param agencyId + * @return com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO + */ + PartyMemberVanguardDetailResultDTO selectAgencyVanguardDetail(@Param("agencyId") String agencyId); + + /** + * 查询网格党员先锋详情 + * @author zhaoqifeng + * @date 2021/5/18 14:40 + * @param grid + * @return com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO + */ + PartyMemberVanguardDetailResultDTO selectGridVanguardDetail(@Param("grid") String grid); + + /** + * 查询组织党员先锋排行 + * @author zhaoqifeng + * @date 2021/5/18 15:02 + * @param agencyId + * @return java.util.List + */ + List selectAgencyVanguardRank(@Param("agencyId") String agencyId); + + /** + * 查询网格党员先锋排行 + * @author zhaoqifeng + * @date 2021/5/18 15:03 + * @param agencyId + * @return java.util.List + */ + List selectGridVanguardRank(@Param("agencyId") String agencyId); + } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java index 256aaeb15c..282a2d8f8a 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java @@ -1,6 +1,7 @@ package com.epmet.dataaggre.service.datastats; import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO; +import com.epmet.dataaggre.dto.datastats.form.PartyMemberVanguardFormDTO; import com.epmet.dataaggre.dto.datastats.form.GridBasicDataFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; @@ -100,4 +101,22 @@ public interface DataStatsService { */ List subGridProject(SubGridFormDTO formDTO); + /** + * 党员先锋--组织/网格详情 + * @author zhaoqifeng + * @date 2021/5/18 14:35 + * @param formDTO + * @return com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO + */ + PartyMemberVanguardDetailResultDTO vanguardDetail(PartyMemberVanguardFormDTO formDTO); + + /** + * 党员先锋--下级组织排行 + * @author zhaoqifeng + * @date 2021/5/18 14:36 + * @param formDTO + * @return com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO + */ + PartyMemberVanguardRankResultDTO vanguardRank(PartyMemberVanguardFormDTO formDTO); + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java index f8ddfde557..2fdbdc353e 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java @@ -4,8 +4,10 @@ import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.dataaggre.constant.DataSourceConstant; +import com.epmet.dataaggre.constant.OrgConstant; import com.epmet.dataaggre.dao.datastats.DataStatsDao; import com.epmet.dataaggre.dto.datastats.form.AgenctBasicDataFormDTO; +import com.epmet.dataaggre.dto.datastats.form.PartyMemberVanguardFormDTO; import com.epmet.dataaggre.dto.datastats.form.GridBasicDataFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; @@ -14,11 +16,13 @@ import com.epmet.dataaggre.entity.datastats.DimAgencyEntity; import com.epmet.dataaggre.entity.datastats.DimGridEntity; import com.epmet.dataaggre.service.datastats.DataStatsService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.*; @@ -920,4 +924,68 @@ public class DataStatsServiceImpl implements DataStatsService { return resultList; } + /** + * 党员先锋--组织/网格详情 + * + * @param formDTO + * @return com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO + * @author zhaoqifeng + * @date 2021/5/18 14:35 + */ + @Override + public PartyMemberVanguardDetailResultDTO vanguardDetail(PartyMemberVanguardFormDTO formDTO) { + PartyMemberVanguardDetailResultDTO result; + if (OrgConstant.AGENCY.equals(formDTO.getOrgType())) { + result = dataStatsDao.selectAgencyVanguardDetail(formDTO.getOrgId()); + } else { + result = dataStatsDao.selectGridVanguardDetail(formDTO.getOrgId()); + } + result.setGroupRatio(transform(result.getGroupRatio())); + result.setGroupMemberRatio(transform(result.getGroupMemberRatio())); + result.setTopicRatio(transform(result.getTopicRatio())); + result.setIssueRatio(transform(result.getIssueRatio())); + result.setProjectRatio(transform(result.getProjectRatio())); + result.setProjectClosedRatio(transform(result.getProjectClosedRatio())); + return result; + } + + /** + * 党员先锋--下级组织排行 + * + * @param formDTO + * @return com.epmet.dataaggre.dto.datastats.result.PartyMemberVanguardDetailResultDTO + * @author zhaoqifeng + * @date 2021/5/18 14:36 + */ + @Override + public PartyMemberVanguardRankResultDTO vanguardRank(PartyMemberVanguardFormDTO formDTO) { + List agencyRank = dataStatsDao.selectAgencyVanguardRank(formDTO.getAgencyId()); + List gridRank = dataStatsDao.selectGridVanguardRank(formDTO.getAgencyId()); + PartyMemberVanguardRankResultDTO result = new PartyMemberVanguardRankResultDTO(); + result.setAgencyRank(CollectionUtils.isNotEmpty(agencyRank)?agencyRank:Collections.emptyList()); + result.setGridRank(CollectionUtils.isNotEmpty(gridRank)?gridRank:Collections.emptyList()); + result.getAgencyRank().forEach(item -> { + item.setGroupRatio(transform(item.getGroupRatio())); + item.setGroupMemberRatio(transform(item.getGroupMemberRatio())); + item.setTopicRatio(transform(item.getTopicRatio())); + item.setIssueRatio(transform(item.getIssueRatio())); + item.setProjectRatio(transform(item.getProjectRatio())); + item.setProjectClosedRatio(transform(item.getProjectClosedRatio())); + }); + result.getGridRank().forEach(item -> { + item.setGroupRatio(transform(item.getGroupRatio())); + item.setGroupMemberRatio(transform(item.getGroupMemberRatio())); + item.setTopicRatio(transform(item.getTopicRatio())); + item.setIssueRatio(transform(item.getIssueRatio())); + item.setProjectRatio(transform(item.getProjectRatio())); + item.setProjectClosedRatio(transform(item.getProjectClosedRatio())); + }); + return result; + } + + private BigDecimal transform(BigDecimal count) { + return count.multiply(new BigDecimal(NumConstant.ONE_HUNDRED) ).setScale(NumConstant.ONE, + RoundingMode.HALF_UP); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml index 4096010837..ffaeff4e5d 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml @@ -356,5 +356,179 @@ ORDER BY project_total DESC + + + + \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java index 018dc35102..644830e3a2 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java @@ -878,7 +878,7 @@ public class DemoController { } @PostMapping("vanguard") - public Result partyMemberVanguard(StatsFormDTO formDTO) { + public Result partyMemberVanguard(@RequestBody StatsFormDTO formDTO) { statsPartyMemberVanguardService.agencyStats(formDTO); statsPartyMemberVanguardService.gridStats(formDTO); return new Result(); diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsPartyMemberVanguardServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsPartyMemberVanguardServiceImpl.java index 080a168591..7147774894 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsPartyMemberVanguardServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/StatsPartyMemberVanguardServiceImpl.java @@ -146,9 +146,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = topicStatic.get(item.getAgencyId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setTopicCount(dto.getCount()); + item.setTopicRatio(dto.getRatio()); + item.setTopicTotal(dto.getSum()); } }); } @@ -159,9 +159,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = issueStatic.get(item.getAgencyId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setIssueCount(dto.getCount()); + item.setIssueRatio(dto.getRatio()); + item.setIssueTotal(dto.getSum()); } }); } @@ -172,9 +172,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = projectStatic.get(item.getAgencyId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setProjectCount(dto.getCount()); + item.setProjectRatio(dto.getRatio()); + item.setProjectTotal(dto.getSum()); } }); } @@ -185,9 +185,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = closedStatic.get(item.getAgencyId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setProjectClosedCount(dto.getCount()); + item.setProjectClosedRatio(dto.getRatio()); + item.setProjectClosedTotal(dto.getSum()); } }); } @@ -214,7 +214,7 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang } //入参有客户Id的则按客户Id执行,没有的则全部客户都执行 if (null != formDTO && StringUtils.isNotBlank(formDTO.getCustomerId())) { - customerAgencyStats(formDTO.getCustomerId(), date); + customerGridStats(formDTO.getCustomerId(), date); } else { int pageNo = 1; int pageSize = 100; @@ -282,9 +282,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = topicStatic.get(item.getGridId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setTopicCount(dto.getCount()); + item.setTopicRatio(dto.getRatio()); + item.setTopicTotal(dto.getSum()); } }); } @@ -295,9 +295,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = issueStatic.get(item.getGridId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setIssueCount(dto.getCount()); + item.setIssueRatio(dto.getRatio()); + item.setIssueTotal(dto.getSum()); } }); } @@ -308,9 +308,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = projectStatic.get(item.getGridId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setProjectCount(dto.getCount()); + item.setProjectRatio(dto.getRatio()); + item.setProjectTotal(dto.getSum()); } }); } @@ -321,9 +321,9 @@ public class StatsPartyMemberVanguardServiceImpl implements StatsPartyMemberVang vanguardList.forEach(item -> { OrgStatisticsResultDTO dto = closedStatic.get(item.getGridId()); if (null != dto) { - item.setGroupMemberCount(dto.getCount()); - item.setGroupMemberRatio(dto.getRatio()); - item.setGroupMemberTotal(dto.getSum()); + item.setProjectClosedCount(dto.getCount()); + item.setProjectClosedRatio(dto.getRatio()); + item.setProjectClosedTotal(dto.getSum()); } }); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml index 92fe50a99c..dc6b766fb7 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectMainDailyDao.xml @@ -769,6 +769,7 @@ FROM fact_origin_project_main_daily WHERE CUSTOMER_ID = #{customerId} AND DATE_ID <= #{dateId} + AND ORIGIN = 'issue' GROUP BY AGENCY_ID