diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java index f02e5faa46..ae05f1af6e 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/DataSourceConstant.java @@ -38,4 +38,5 @@ public interface DataSourceConstant { String EPMET_T_DUCK = "epmettduck"; String EPMETTDUCK="epmettduck"; String EPMET_HEART="heart"; + String RESI_PARTYMEMBER="partymember"; } diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/NowStatsDataFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/NowStatsDataFormDTO.java new file mode 100644 index 0000000000..06f1b6eab7 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/form/NowStatsDataFormDTO.java @@ -0,0 +1,59 @@ +package com.epmet.dataaggre.dto.datastats.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * @Description 数据统计页面查询-接口入参 + */ +@Data +public class NowStatsDataFormDTO implements Serializable { + + private static final long serialVersionUID = 6462094914874831738L; + + public interface CustomerDataManageForm{} + + /** + * 客户ID + */ + @NotBlank(message = "客户ID不能为空",groups = CustomerDataManageForm.class) + private String customerId; + + /** + * 组织ID + */ + @NotBlank(message = "组织ID不能为空",groups = CustomerDataManageForm.class) + private String agencyId; + + /** + * 区间:Interval 截止:end + */ + @NotBlank(message = "type不能为空",groups = CustomerDataManageForm.class) + private String type; + + /** + * 开始时间 精确到秒【yyyy-MM-dd HH:mm:ss】 + */ + private String startTime; + + /** + * 结束时间 精确到秒【yyyy-MM-dd HH:mm:ss】 + */ + @NotBlank(message = "结束时间不能为空",groups = CustomerDataManageForm.class) + private String endTime; + + + //组织或网格Id集合 + private List idList; + //数据类型【组织agency 网格grid】 + private String dataType; + + /** + * desc:是否是导出 + */ + private boolean export = false; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/NowStatsDataResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/NowStatsDataResultDTO.java new file mode 100644 index 0000000000..537179b3e1 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/datastats/result/NowStatsDataResultDTO.java @@ -0,0 +1,46 @@ +package com.epmet.dataaggre.dto.datastats.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description 数据统计页面查询-接口返参 + */ +@Data +public class NowStatsDataResultDTO { + + //组织、网格Id + private String orgId; + //组织、网格名称 + private String orgName; + //注册居民数 + private Integer resiUserCount = 0; + //注册党员数 + private Integer partyMemberCount = 0; + //事件总数 + private Integer icEventCount = 0; + //居民上报事件数【小程序端随手拍随时讲】 + private Integer resiEventCount = 0; + //平台录入事件数【数字平台录入的事件数】 + private Integer pcEventCount = 0; + //项目总数 + private Integer projectCount = 0; + //议题转项目数 + private Integer issueProjectCount = 0; + //事件立项数 + private Integer icEventProjectCount = 0; + //直接立项项目数 + private Integer agencyProjectCount = 0; + + + //组织的pids + private String pids; + //事件来源,0代表居民点 其他代表数字平台 + private String sourceType; + //项目来源 issue议题 agency立项 ic_event事件 + private String origin; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/RegisterRelationDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/RegisterRelationDTO.java index 2759e4f745..a3e354859a 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/RegisterRelationDTO.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/RegisterRelationDTO.java @@ -44,6 +44,16 @@ public class RegisterRelationDTO implements Serializable { */ private String customerId; + /** + * 所属组织机构Id + */ + private String agencyId; + + /** + * agencyId的所有上级,包含自己 + */ + private String agencyIdPath; + /** * 网格Id (customer_grid.id) */ diff --git a/epmet-module/data-aggregator/data-aggregator-server/pom.xml b/epmet-module/data-aggregator/data-aggregator-server/pom.xml index 1c61ede4bc..27873367ec 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/pom.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/pom.xml @@ -259,6 +259,13 @@ epmet_heart_user EpmEt-db-UsEr + + + + + epmet_resi_partymember_user + EpmEt-db-UsEr + 0 192.168.1.140 @@ -390,6 +397,13 @@ epmet_heart_user EpmEt-db-UsEr + + + + + epmet_resi_partymember_user + EpmEt-db-UsEr + 0 192.168.1.140 @@ -522,6 +536,13 @@ epmet elink@833066 + + + + + epmet + elink@833066 + 0 192.168.10.150 @@ -654,6 +675,13 @@ epmet_heart_user EpmEt-db-UsEr + + + + + epmet_resi_partymember_user + EpmEt-db-UsEr + 0 r-m5ez3n1j0qc3ykq2ut.redis.rds.aliyuncs.com diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java index a4d88b3a91..4ebceec4a4 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/DataStatsController.java @@ -1,11 +1,25 @@ package com.epmet.dataaggre.controller; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.fastjson.JSON; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.RenException; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.DateUtils; +import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dataaggre.dto.datastats.form.*; import com.epmet.dataaggre.dto.datastats.result.*; +import com.epmet.dataaggre.excel.NowStatsDataExcel; import com.epmet.dataaggre.service.datastats.DataStatsService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -13,13 +27,17 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; import java.text.ParseException; +import java.util.Date; import java.util.List; /** * @Author sun * @Description 数据统计服务 */ +@Slf4j @RestController @RequestMapping("datastats") public class DataStatsController { @@ -243,4 +261,48 @@ public class DataStatsController { return new Result().ok(dataStatsService.operateExport(formDTO)); } + /** + * @Description 数据统计页面查询【用户、项目、事件一些数据的实时统计查询】 + * 需求:数据统计页面查询:注册居民数、注册党员数、事件总数、居民上报事件数、平台录入事件数、项目总数、议题转项目数、事件立项数、立项数; + * 可根据组织(只选组织,查询直属下级数据)、选择统计类型(截止累计值/区间新增值,截止累计选择一天,区间选择时间段,精确到时分秒)筛选; + * 可点击查看总计,可导出,打开页面默认选中当前工作人员所在组织(页面参考灵山卫-人房信息统计页面) + * @author sun + */ + @PostMapping("nowstatsdata") + public Result> nowStatsData(@RequestBody NowStatsDataFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, NowStatsDataFormDTO.CustomerDataManageForm.class); + formDTO.setExport(false); + return new Result>().ok(dataStatsService.nowStatsData(formDTO)); + } + + @PostMapping("nowstatsdataexport") + public void nowStatsDataExport(@RequestBody NowStatsDataFormDTO formDTO, HttpServletResponse response) throws IOException { + formDTO.setExport(true); + ExcelWriter excelWriter = null; + try { + String fileName = "数据统计" + DateUtils.format(new Date()) + ".xlsx"; + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), NowStatsDataExcel.class).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + List data = null; + List list = null; + data = dataStatsService.nowStatsData(formDTO); + list = ConvertUtils.sourceToTarget(data, NowStatsDataExcel.class); + excelWriter.write(list, writeSheet); + } catch (EpmetException e) { + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-type", "application/json; charset=UTF-8"); + PrintWriter printWriter = response.getWriter(); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg()); + printWriter.write(JSON.toJSONString(result)); + printWriter.close(); + } catch (Exception e) { + log.error("export exception", e); + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/RegisterRelationDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/RegisterRelationDao.java index ced9de54cd..bb2f1d225b 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/RegisterRelationDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/RegisterRelationDao.java @@ -18,9 +18,13 @@ package com.epmet.dataaggre.dao.epmetuser; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO; +import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO; import com.epmet.dataaggre.entity.epmetuser.RegisterRelationEntity; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 注册关系表 用于统计客户网格的注册居民数 * @@ -29,5 +33,6 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface RegisterRelationDao extends BaseDao { - + + List selectNowResiUser(NowStatsDataFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/IcEventDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/IcEventDao.java index 7cbb6dd87f..c8e69a05a9 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/IcEventDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/IcEventDao.java @@ -1,6 +1,8 @@ package com.epmet.dataaggre.dao.govproject; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO; +import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO; import com.epmet.dataaggre.dto.govorg.form.CoverageHomeSearchFormDTO; import com.epmet.dataaggre.dto.govorg.result.EventInfoResultDTO; import com.epmet.dataaggre.entity.govproject.IcEventEntity; @@ -25,4 +27,5 @@ public interface IcEventDao extends BaseDao { */ List getEventInfos(CoverageHomeSearchFormDTO formDTO); + List getIcEvent(NowStatsDataFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java index 956e8b95ed..2c7792f6ee 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java @@ -18,6 +18,8 @@ package com.epmet.dataaggre.dao.govproject; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO; +import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO; import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO; import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO; import com.epmet.dataaggre.dto.govorg.result.OrgCountDTO; @@ -132,4 +134,6 @@ public interface ProjectDao extends BaseDao { List getMemberClosedProjectCount(OrgStatisticsFormDTO formDTO); List getAgencyProjectCount(OrgStatisticsFormDTO formDTO); List getAgencyClosedProjectCount(OrgStatisticsFormDTO formDTO); + + List getNowProject(NowStatsDataFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resipartymember/ResiPartymemberDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resipartymember/ResiPartymemberDao.java new file mode 100644 index 0000000000..06429e42db --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/resipartymember/ResiPartymemberDao.java @@ -0,0 +1,31 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dataaggre.dao.resipartymember; + +import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO; +import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface ResiPartymemberDao { + + List getNowPart(NowStatsDataFormDTO formDTO); + +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/RegisterRelationEntity.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/RegisterRelationEntity.java index 4c21db9b8d..60ee1dc873 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/RegisterRelationEntity.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/entity/epmetuser/RegisterRelationEntity.java @@ -40,6 +40,16 @@ public class RegisterRelationEntity extends BaseEpmetEntity { */ private String customerId; + /** + * 所属组织机构Id + */ + private String agencyId; + + /** + * agencyId的所有上级,包含自己 + */ + private String agencyIdPath; + /** * 网格Id (customer_grid.id) */ diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/NowStatsDataExcel.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/NowStatsDataExcel.java new file mode 100644 index 0000000000..0df02e5ab5 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/NowStatsDataExcel.java @@ -0,0 +1,68 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dataaggre.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +@Data +public class NowStatsDataExcel { + + //组织、网格名称 + @ExcelProperty(value = "组织名称") + @ColumnWidth(25) + private String orgName; + //注册居民数 + @ExcelProperty(value = "注册居民数") + @ColumnWidth(20) + private Integer resiUserCount; + //注册党员数 + @ExcelProperty(value = "注册党员数") + @ColumnWidth(20) + private Integer partyMemberCount; + //事件总数 + @ExcelProperty(value = "事件总数") + @ColumnWidth(20) + private Integer icEventCount; + //居民上报事件数【小程序端随手拍随时讲】 + @ExcelProperty(value = "居民上报事件数") + @ColumnWidth(20) + private Integer resiEventCount; + //平台录入事件数【数字平台录入的事件数】 + @ExcelProperty(value = "平台录入事件数") + @ColumnWidth(20) + private Integer pcEventCount; + //项目总数 + @ExcelProperty(value = "项目总数") + @ColumnWidth(20) + private Integer projectCount; + //议题转项目数 + @ExcelProperty(value = "议题转项目数") + @ColumnWidth(20) + private Integer issueProjectCount; + //事件立项数 + @ExcelProperty(value = "事件立项数") + @ColumnWidth(20) + private Integer icEventProjectCount; + //直接立项项目数 + @ExcelProperty(value = "立项数") + @ColumnWidth(20) + private Integer agencyProjectCount; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/PartymemberService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/PartymemberService.java new file mode 100644 index 0000000000..c610a16a1c --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/PartymemberService.java @@ -0,0 +1,12 @@ +package com.epmet.dataaggre.service; + +import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO; +import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO; + +import java.util.List; + +public interface PartymemberService { + + List getNowPart(NowStatsDataFormDTO formDTO); + +} \ 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 7ce06a88e5..650f40b83f 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 @@ -306,4 +306,6 @@ public interface DataStatsService { Map getMemberMap(String agencyId); PageData getMemberList(OrgStatisticsFormDTO formDTO); + + List nowStatsData(NowStatsDataFormDTO 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 bf56d8cdb8..5acc263059 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 @@ -40,10 +40,13 @@ import com.epmet.dataaggre.entity.datastats.DimAgencyEntity; import com.epmet.dataaggre.entity.datastats.FactAgencyGovernDailyEntity; import com.epmet.dataaggre.excel.CustomerDataManageExcel; + import com.epmet.dataaggre.service.PartymemberService; import com.epmet.dataaggre.service.datastats.DataStatsService; + import com.epmet.dataaggre.service.epmetuser.EpmetUserService; import com.epmet.dataaggre.service.epmetuser.StatsStaffPatrolRecordDailyService; import com.epmet.dataaggre.service.evaluationindex.EvaluationIndexService; import com.epmet.dataaggre.service.govorg.GovOrgService; + import com.epmet.dataaggre.service.govproject.GovProjectService; import com.epmet.dataaggre.service.opercrm.CustomerRelation; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -86,6 +89,12 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve private StatsStaffPatrolRecordDailyService statsStaffPatrolRecordDailyService; @Autowired private GovOrgService govOrgService; + @Autowired + private EpmetUserService epmetUserService; + @Autowired + private GovProjectService govProjectService; + @Autowired + private PartymemberService partymemberService; /** * @Param formDTO @@ -2310,4 +2319,112 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve PageInfo pageInfo = new PageInfo<>(list); return new PageData<>(list, pageInfo.getTotal()); } + + @Override + public List nowStatsData(NowStatsDataFormDTO formDTO) { + //1.必要参数校验及处理 + String startTimeForm = formDTO.getStartTime(); + if ("Interval".equals(formDTO.getType()) && StringUtils.isEmpty(startTimeForm)) { + throw new RenException("请选择开始时间或查询累计值"); + } + + //2.查询组织信息,判断要查询下级是组织还是网格数据 + ScreenAgencyOrGridListDTO agencyGrid = indexService.getSubAgencyOrGridList(formDTO.getAgencyId(), formDTO.isExport()); + if (null == agencyGrid) { + return new ArrayList<>(); + } + //组织或网格Id集合 + List idList = agencyGrid.getAgencyGridList().stream().map(ScreenAgencyOrGridListDTO.AgencyGrid::getOrgId).collect(Collectors.toList()); + formDTO.setDataType(!OrgLevelEnum.COMMUNITY.getCode().equals(agencyGrid.getLevel()) ? OrgTypeEnum.AGENCY.getCode() : OrgTypeEnum.GRID.getCode()); + formDTO.setIdList(idList); + + //3.按条件分别查询统计各业务实时数据 + //3-1.注册居民、注册党员数 + List user = epmetUserService.getNowResiUser(formDTO); + List party = partymemberService.getNowPart(formDTO); + //3-2.事件总数、居民上报事件数、平台录入事件数 + List event = govProjectService.getNowIcEvent(formDTO); + //3-3.项目总数、议题转项目数、事件立项数、组织立项数 + List project = govProjectService.getNowProject(formDTO); + Map userMap = new HashMap<>(); + Map partyMap = new HashMap<>(); + Map eventMap = new HashMap<>(); + Map projectMap = new HashMap<>(); + if ("grid".equals(formDTO.getDataType())) { + userMap = CollectionUtils.isEmpty(user) ? new HashMap<>() : user.stream().collect(Collectors.toMap(NowStatsDataResultDTO::getOrgId, m -> m, (k1, k2) -> k1)); + partyMap = CollectionUtils.isEmpty(party) ? new HashMap<>() : party.stream().collect(Collectors.toMap(NowStatsDataResultDTO::getOrgId, m -> m, (k1, k2) -> k1)); + eventMap = CollectionUtils.isEmpty(event) ? new HashMap<>() : event.stream().collect(Collectors.toMap(NowStatsDataResultDTO::getOrgId, m -> m, (k1, k2) -> k1)); + projectMap = CollectionUtils.isEmpty(project) ? new HashMap<>() : project.stream().collect(Collectors.toMap(NowStatsDataResultDTO::getOrgId, m -> m, (k1, k2) -> k1)); + } + + //4.封装数据 + List resultDTOList = new ArrayList<>(); + NowStatsDataResultDTO export = new NowStatsDataResultDTO(); + export.setOrgName("合计"); + for (ScreenAgencyOrGridListDTO.AgencyGrid org : agencyGrid.getAgencyGridList()) { + NowStatsDataResultDTO dto = new NowStatsDataResultDTO(); + dto.setOrgId(org.getOrgId()); + dto.setOrgName(org.getOrgName()); + //网格数据sql已统计好 + if ("grid".equals(formDTO.getDataType())) { + if (userMap.containsKey(org.getOrgId())) { + dto.setResiUserCount(userMap.get(org.getOrgId()).getResiUserCount()); + } + if (partyMap.containsKey(org.getOrgId())) { + dto.setPartyMemberCount(partyMap.get(org.getOrgId()).getPartyMemberCount()); + } + if (eventMap.containsKey(org.getOrgId())) { + dto.setIcEventCount(eventMap.get(org.getOrgId()).getIcEventCount()); + dto.setResiEventCount(eventMap.get(org.getOrgId()).getResiEventCount()); + dto.setPcEventCount(eventMap.get(org.getOrgId()).getPcEventCount()); + } + if (projectMap.containsKey(org.getOrgId())) { + dto.setProjectCount(projectMap.get(org.getOrgId()).getProjectCount()); + dto.setIssueProjectCount(projectMap.get(org.getOrgId()).getIssueProjectCount()); + dto.setIcEventProjectCount(projectMap.get(org.getOrgId()).getIcEventProjectCount()); + dto.setAgencyProjectCount(projectMap.get(org.getOrgId()).getAgencyProjectCount()); + } + } else { + //组织数据 需要java计算结果 + int resiUserCount = (int) user.stream().filter(u -> u.getPids().contains(org.getOrgId())).count(); + dto.setResiUserCount(resiUserCount); + + int partyMemberCount = (int) party.stream().filter(p -> p.getPids().contains(org.getOrgId())).count(); + dto.setPartyMemberCount(partyMemberCount); + + int resiEventCount = (int) event.stream().filter(e -> e.getPids().contains(org.getOrgId()) && "0".equals(e.getSourceType())).count(); + int pcEventCount = (int) event.stream().filter(e -> e.getPids().contains(org.getOrgId()) && !"0".equals(e.getSourceType())).count(); + int icEventCount = resiEventCount + pcEventCount; + dto.setIcEventCount(icEventCount); + dto.setResiEventCount(resiEventCount); + dto.setPcEventCount(pcEventCount); + + int issueProjectCount = (int) project.stream().filter(p -> p.getPids().contains(org.getOrgId()) && "issue".equals(p.getOrigin())).count(); + int icEventProjectCount = (int) project.stream().filter(p -> p.getPids().contains(org.getOrgId()) && "ic_event".equals(p.getOrigin())).count(); + int agencyProjectCount = (int) project.stream().filter(p -> p.getPids().contains(org.getOrgId()) && "agency".equals(p.getOrigin())).count(); + int projectCount = issueProjectCount + icEventProjectCount + agencyProjectCount; + dto.setProjectCount(projectCount); + dto.setIssueProjectCount(issueProjectCount); + dto.setIcEventProjectCount(icEventProjectCount); + dto.setAgencyProjectCount(agencyProjectCount); + } + resultDTOList.add(dto); + if (formDTO.isExport()) { + export.setResiUserCount(export.getResiUserCount() + dto.getResiUserCount()); + export.setPartyMemberCount(export.getPartyMemberCount() + dto.getPartyMemberCount()); + export.setIcEventCount(export.getIcEventCount() + dto.getIcEventCount()); + export.setResiEventCount(export.getResiEventCount() + dto.getResiEventCount()); + export.setPcEventCount(export.getPcEventCount() + dto.getPcEventCount()); + export.setProjectCount(export.getProjectCount() + dto.getProjectCount()); + export.setIssueProjectCount(export.getIssueProjectCount() + dto.getIssueProjectCount()); + export.setIcEventProjectCount(export.getIcEventProjectCount() + dto.getIcEventProjectCount()); + export.setAgencyProjectCount(export.getAgencyProjectCount() + dto.getAgencyProjectCount()); + } + } + if (formDTO.isExport()) { + resultDTOList.add(export); + } + return resultDTOList; + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java index 6f9ce93725..068b1176cd 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java @@ -1,6 +1,8 @@ package com.epmet.dataaggre.service.epmetuser; import com.epmet.commons.tools.page.PageData; +import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO; +import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO; import com.epmet.dataaggre.dto.epmetuser.form.*; import com.epmet.dataaggre.dto.epmetuser.result.*; import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; @@ -236,4 +238,6 @@ public interface EpmetUserService { Integer countVolunteers(String customerId, String agencyId, String staffOrgIds, String search, String resiCategory); List listVolunteers(String customerId, String agencyId, String staffOrgIds, String search, String resiCategory); + + List getNowResiUser(NowStatsDataFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java index 14d9bd5dc5..26c5ef1b3a 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java @@ -15,6 +15,8 @@ import com.epmet.constant.BadgeConstant; import com.epmet.constant.OrgInfoConstant; import com.epmet.dataaggre.constant.DataSourceConstant; import com.epmet.dataaggre.dao.epmetuser.*; +import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO; +import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO; import com.epmet.dataaggre.dto.epmetuser.CustomerStaffDTO; import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO; import com.epmet.dataaggre.dto.epmetuser.StaffPatrolDetailDTO; @@ -90,6 +92,8 @@ public class EpmetUserServiceImpl implements EpmetUserService { private IcResiUserDao icResiUserDao; @Resource private CustomerFootBarService customerFootBarService; + @Resource + private RegisterRelationDao registerRelationDao; /** * @Description 根据UserIds查询 @@ -912,4 +916,11 @@ public class EpmetUserServiceImpl implements EpmetUserService { return icResiUserDao.listVolunteersByCategory(customerId, agencyId, staffOrgIds, search, resiCategory); } } + + @Override + public List getNowResiUser(NowStatsDataFormDTO formDTO) { + //实时统计组织/网格下小程序端注册居民数 + List list = registerRelationDao.selectNowResiUser(formDTO); + return list; + } } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java index 12f901ed66..6b36beac2b 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java @@ -1,6 +1,8 @@ package com.epmet.dataaggre.service.govproject; import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO; +import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO; import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO; import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO; import com.epmet.dataaggre.dto.govorg.form.CoverageHomeSearchFormDTO; @@ -180,4 +182,7 @@ public interface GovProjectService { */ List getEventInfos(CoverageHomeSearchFormDTO formDTO); + List getNowIcEvent(NowStatsDataFormDTO formDTO); + + List getNowProject(NowStatsDataFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java index caa0bf8e87..4eefc02d34 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java @@ -21,8 +21,10 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.dataaggre.constant.DataSourceConstant; import com.epmet.dataaggre.dao.govproject.IcEventDao; import com.epmet.dataaggre.dao.govproject.ProjectDao; +import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO; import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectMonthResultDTO; import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectResultDTO; +import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO; import com.epmet.dataaggre.dto.govissue.IssueProjectCategoryDictDTO; import com.epmet.dataaggre.dto.govissue.result.IssueInfoDTO; import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO; @@ -797,4 +799,14 @@ public class GovProjectServiceImpl implements GovProjectService { return icEventDao.getEventInfos(formDTO); } + @Override + public List getNowIcEvent(NowStatsDataFormDTO formDTO) { + return icEventDao.getIcEvent(formDTO); + } + + @Override + public List getNowProject(NowStatsDataFormDTO formDTO) { + return projectDao.getNowProject(formDTO); + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/PartymemberServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/PartymemberServiceImpl.java new file mode 100644 index 0000000000..cdfab84c0f --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/PartymemberServiceImpl.java @@ -0,0 +1,24 @@ +package com.epmet.dataaggre.service.impl; + +import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO; +import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO; +import com.epmet.dataaggre.service.PartymemberService; +import com.epmet.dataaggre.service.resipartymember.ResiPartymemberService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@Service +public class PartymemberServiceImpl implements PartymemberService { + + @Autowired + private ResiPartymemberService resiPartymemberService; + + @Override + public List getNowPart(NowStatsDataFormDTO formDTO) { + return resiPartymemberService.getNowPart(formDTO); + } +} \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resipartymember/ResiPartymemberService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resipartymember/ResiPartymemberService.java new file mode 100644 index 0000000000..1d5bb43a23 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resipartymember/ResiPartymemberService.java @@ -0,0 +1,12 @@ +package com.epmet.dataaggre.service.resipartymember; + +import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO; +import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO; + +import java.util.List; + +public interface ResiPartymemberService { + + List getNowPart(NowStatsDataFormDTO formDTO); + +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resipartymember/impl/ResiPartymemberServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resipartymember/impl/ResiPartymemberServiceImpl.java new file mode 100644 index 0000000000..cb45cb5f17 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/resipartymember/impl/ResiPartymemberServiceImpl.java @@ -0,0 +1,29 @@ +package com.epmet.dataaggre.service.resipartymember.impl; + +import com.epmet.commons.dynamic.datasource.annotation.DataSource; +import com.epmet.dataaggre.constant.DataSourceConstant; +import com.epmet.dataaggre.dao.resipartymember.ResiPartymemberDao; +import com.epmet.dataaggre.dto.datastats.form.NowStatsDataFormDTO; +import com.epmet.dataaggre.dto.datastats.result.NowStatsDataResultDTO; +import com.epmet.dataaggre.service.resipartymember.ResiPartymemberService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Slf4j +@Service +@DataSource(DataSourceConstant.RESI_PARTYMEMBER) +public class ResiPartymemberServiceImpl implements ResiPartymemberService { + + @Autowired + private ResiPartymemberDao resiPartymemberDao; + + + @Override + public List getNowPart(NowStatsDataFormDTO formDTO) { + return resiPartymemberDao.getNowPart(formDTO); + } + +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/bootstrap.yml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/bootstrap.yml index aa857a1eaf..0237f7f5d7 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/bootstrap.yml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/bootstrap.yml @@ -161,6 +161,11 @@ dynamic: url: @datasource.druid.heart.url@ username: @datasource.druid.heart.username@ password: @datasource.druid.heart.password@ + partymember: + driver-class-name: com.mysql.cj.jdbc.Driver + url: @datasource.druid.partymember.url@ + username: @datasource.druid.partymember.username@ + password: @datasource.druid.partymember.password@ feign: hystrix: enabled: true diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/RegisterRelationDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/RegisterRelationDao.xml index 21a959c15e..2ecbd63552 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/RegisterRelationDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/RegisterRelationDao.xml @@ -3,4 +3,44 @@ + + \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/IcEventDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/IcEventDao.xml index c037d97239..fdba65d9cd 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/IcEventDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/IcEventDao.xml @@ -27,4 +27,48 @@ AND EVENT_CONTENT LIKE CONCAT('%',#{name},'%') + + + + \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml index 1b159cb69d..4b51beae89 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml @@ -539,4 +539,47 @@ AGENCY_ID + + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resipartymember/ResiPartymemberDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resipartymember/ResiPartymemberDao.xml new file mode 100644 index 0000000000..058581128d --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/resipartymember/ResiPartymemberDao.xml @@ -0,0 +1,46 @@ + + + + + + + +