diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ServiceConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ServiceConstant.java index 221d7d3f69..8b819bcfb8 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ServiceConstant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/ServiceConstant.java @@ -143,4 +143,9 @@ public interface ServiceConstant { * 聚合查询服务 */ String DATA_AGGREGATOR_SERVER = "data-aggregator-server"; + + /** + * 插件pli-power服务 + */ + String PLI_POWER_SERVER = "pli-power-base-server"; } diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java index a13d6cf1db..163dee5e2f 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java @@ -259,6 +259,7 @@ public enum EpmetErrorCode { NOT_REGEIST_RESI(8927,"未注册居民"), UNIT_EXIST_HOUSES_ERROR(8928,"单元下存在房屋,不可修改单元数"), IC_VACCINE(8929,"已存在相同记录,请去修改原有记录"), + NOT_MATCH_IC_USER_ERROR(8930,"请联系社区工作人员"), MISMATCH(10086,"人员与房屋信息不匹配,请与工作人员联系。"), diff --git a/epmet-gateway/src/main/resources/bootstrap.yml b/epmet-gateway/src/main/resources/bootstrap.yml index e6bc80041f..d065eaa79a 100644 --- a/epmet-gateway/src/main/resources/bootstrap.yml +++ b/epmet-gateway/src/main/resources/bootstrap.yml @@ -502,6 +502,7 @@ epmet: # 内部认证url白名单(在白名单中的,就不会再校验登录了) internalAuthUrlsWhiteList: - /epmetuser/customerstaff/customerlist + - /epmetuser/icresiuser/icUserMatchGrid - /auth/wechat/** - /**/druid/** - /gov/project/project/platformcallback 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 4e8c469a72..3cd9be0084 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 + 13 192.168.1.140 @@ -390,6 +397,13 @@ epmet_heart_user EpmEt-db-UsEr + + + + + epmet_resi_partymember_user + EpmEt-db-UsEr + 13 192.168.1.140 @@ -522,6 +536,13 @@ root Abc@123456 + + + + + epmet + elink@833066 + 13 r-m5eh5czgb1nucti6azpd.redis.rds.aliyuncs.com @@ -654,6 +675,13 @@ epdc Elink@833066 + + + + + epmet_resi_partymember_user + EpmEt-db-UsEr + 5 r-m5evpexxjmi6xmsiwj.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/govorg/CustomerAgencyDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java index ba9043c0f4..7c3bbfd838 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java @@ -18,6 +18,7 @@ package com.epmet.dataaggre.dao.govorg; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO; import com.epmet.dataaggre.dto.govorg.result.*; import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; import org.apache.ibatis.annotations.Mapper; @@ -108,4 +109,5 @@ public interface CustomerAgencyDao extends BaseDao { List getSubAgencyList(@Param("agencyId") String agencyId); + List getSubAgencyListByAgency(@Param("customerId") String customerId, @Param("agencyId") String agencyId); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerGridDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerGridDao.java index 2d2c95b424..10721a9f7a 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerGridDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerGridDao.java @@ -18,6 +18,7 @@ package com.epmet.dataaggre.dao.govorg; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO; import com.epmet.dataaggre.dto.govorg.CustomerGridDTO; import com.epmet.dataaggre.dto.govorg.result.GridInfoResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridsInfoListResultDTO; @@ -84,4 +85,5 @@ public interface CustomerGridDao extends BaseDao { */ CustomerGridDTO getGridInfo(@Param("gridId") String gridId); + List getSubGridList(@Param("customerId") String customerId, @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/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 69126b76ec..fd5e87555f 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..fd2a4e5f85 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 = govOrgService.getSubAgencyOrGridList(formDTO.getCustomerId(), formDTO.getAgencyId()); + 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/govorg/GovOrgService.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java index ae942731a0..6a55f59e53 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java @@ -5,6 +5,7 @@ import com.epmet.commons.tools.redis.common.bean.BuildingInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO; import com.epmet.dataaggre.dto.epmetuser.result.StaffSelectResDTO; +import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO; import com.epmet.dataaggre.dto.govorg.CustomerAgencyDTO; import com.epmet.dataaggre.dto.govorg.CustomerDepartmentDTO; import com.epmet.dataaggre.dto.govorg.CustomerGridDTO; @@ -289,4 +290,6 @@ public interface GovOrgService { List getEnterpriseInfos(CoverageHomeSearchFormDTO formDTO); Integer getEnterpriseInfosCount(CoverageHomeSearchFormDTO formDTO); + ScreenAgencyOrGridListDTO getSubAgencyOrGridList(String customerId, String agencyId); + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java index b84b11d14f..96099374f8 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java @@ -14,6 +14,7 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.form.DingTextBriefNessFormDTO; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.enums.OrgLevelEnum; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; @@ -39,6 +40,9 @@ import com.epmet.dataaggre.dto.epmetuser.result.CustomerStaffResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.ListStaffResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.StaffRoleListResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.StaffSelectResDTO; +import com.epmet.dataaggre.dto.evaluationindex.ScreenAgencyOrGridListDTO; +import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerAgencyDTO; +import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO; import com.epmet.dataaggre.dto.govorg.*; import com.epmet.dataaggre.dto.govorg.form.*; import com.epmet.dataaggre.dto.govorg.result.*; @@ -1467,4 +1471,43 @@ public class GovOrgServiceImpl implements GovOrgService { public Integer getEnterpriseInfosCount(CoverageHomeSearchFormDTO formDTO) { return cityManagementDao.getEnterpriseInfosCount(formDTO); } + + @Override + public ScreenAgencyOrGridListDTO getSubAgencyOrGridList(String customerId, String agencyId) { + ScreenAgencyOrGridListDTO resultDTO = new ScreenAgencyOrGridListDTO(); + List agencyGridList = new ArrayList<>(); + //1.查询组织信息 + CustomerAgencyEntity dto = customerAgencyDao.selectById(agencyId); + if (dto == null) { + log.error(String.format("组织信息不存在,组织Id->%s", agencyId)); + return new ScreenAgencyOrGridListDTO(); + } + //2.根据组织级别判断查询直属组织或网格列表 + List agencyList = new ArrayList<>(); + List gridList = new ArrayList<>(); + if (!"community".equals(dto.getLevel())) { + //2-1.直属下级组织列表 + agencyList = customerAgencyDao.getSubAgencyListByAgency(customerId, agencyId); + agencyList.forEach(gr->{ + ScreenAgencyOrGridListDTO.AgencyGrid org = new ScreenAgencyOrGridListDTO.AgencyGrid(); + org.setOrgId(gr.getAgencyId()); + org.setOrgName(gr.getAgencyName()); + agencyGridList.add(org); + }); + } else { + //2-2.直属下级网格列表 + gridList = customerGridDao.getSubGridList(customerId, agencyId); + gridList.forEach(gr->{ + ScreenAgencyOrGridListDTO.AgencyGrid org = new ScreenAgencyOrGridListDTO.AgencyGrid(); + org.setOrgId(gr.getGridId()); + org.setOrgName(gr.getGridName()); + agencyGridList.add(org); + }); + } + + resultDTO.setLevel(dto.getLevel()); + resultDTO.setAgencyGridList(agencyGridList); + return resultDTO; + } + } 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 ca83782027..16e72ff8c6 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; @@ -181,4 +183,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 15a7bc37bd..f671a3ff47 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; @@ -930,4 +932,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/govorg/CustomerAgencyDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml index a77f1f22e0..9af0849b72 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml @@ -309,4 +309,21 @@ OR PIDS LIKE CONCAT('%', #{agencyId}, '%')) + + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml index 7f68c5d787..2457f87733 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerGridDao.xml @@ -181,4 +181,19 @@ AND cg.DEL_FLAG = '0' + + 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 7ec61960c9..07c5317658 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 @@ -546,4 +546,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 @@ + + + + + + + + diff --git a/epmet-module/epmet-job/epmet-job-server/pom.xml b/epmet-module/epmet-job/epmet-job-server/pom.xml index 94736be79e..b7c0c2084d 100644 --- a/epmet-module/epmet-job/epmet-job-server/pom.xml +++ b/epmet-module/epmet-job/epmet-job-server/pom.xml @@ -43,6 +43,11 @@ epmet-message-client 2.0.0 + + com.epmet + pli-power-base-client + 2.0.0 + org.springframework.boot spring-boot-starter-web diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/PliPowerService.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/PliPowerService.java new file mode 100644 index 0000000000..4fb990d033 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/PliPowerService.java @@ -0,0 +1,17 @@ +package com.epmet.service; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.plugin.power.dto.visit.form.VisitorLogoutFormDTO; + +public interface PliPowerService { + + /** + * 访客登出 + * + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author zhy + * @date 2022/5/30 10:25 + */ + Result visitorLogout(VisitorLogoutFormDTO formDTO); +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/PliPowerServiceImpl.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/PliPowerServiceImpl.java new file mode 100644 index 0000000000..ed54b7e6d9 --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/PliPowerServiceImpl.java @@ -0,0 +1,31 @@ +package com.epmet.service.impl; + +import com.epmet.commons.tools.utils.Result; +import com.epmet.plugin.power.dto.visit.form.VisitorLogoutFormDTO; +import com.epmet.plugin.power.feign.PliPowerFeignClient; +import com.epmet.service.PliPowerService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + + +/** + * @Description + * @ClassName StatsUserServiceImpl + * @Auth wangc + * @Date 2020-06-29 09:41 + */ +@Service +public class PliPowerServiceImpl implements PliPowerService { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Autowired + private PliPowerFeignClient pliPowerFeignClient; + + @Override + public Result visitorLogout(VisitorLogoutFormDTO formDTO) { + return pliPowerFeignClient.visitorLogout(formDTO); + } +} diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/PliVisitorLogoutTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/PliVisitorLogoutTask.java new file mode 100644 index 0000000000..41ffa19ecc --- /dev/null +++ b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/PliVisitorLogoutTask.java @@ -0,0 +1,41 @@ +package com.epmet.task; + +import com.alibaba.fastjson.JSON; +import com.epmet.commons.tools.utils.Result; +import com.epmet.plugin.power.dto.visit.form.VisitorLogoutFormDTO; +import com.epmet.service.PliPowerService; +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.Component; + +/** + * 访客登出 + * + * @author zhy + * @date 2022/5/30 10:23 + */ +@Component("pliVisitorLogoutTask") +public class PliVisitorLogoutTask implements ITask { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Autowired + private PliPowerService pliPowerService; + + @Override + public void run(String params) { + logger.info("VisitorLogoutTask定时任务正在执行,参数为:{}", params); + VisitorLogoutFormDTO formDTO = new VisitorLogoutFormDTO(); + if (StringUtils.isNotBlank(params)) { + formDTO = JSON.parseObject(params, VisitorLogoutFormDTO.class); + } + Result result = pliPowerService.visitorLogout(formDTO); + if (result.success()) { + logger.info("VisitorLogoutTask定时任务执行成功"); + } else { + logger.error("VisitorLogoutTask定时任务执行失败:" + result.getMsg()); + } + } +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffListResultDTO.java index 2bf18307ce..c5e0fafb4e 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffListResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/StaffListResultDTO.java @@ -41,4 +41,6 @@ public class StaffListResultDTO implements Serializable { */ private String mobile=""; + private Boolean staffEnabledStatus = false; + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java index 4354be6b51..f2c0392dc7 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java @@ -325,6 +325,7 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl> collect = agencyStaffList.stream().collect(Collectors.groupingBy(StaffListResultDTO::getStaffEnabledStatus)); + resultDTO.setAgencyStaffList(CollectionUtils.isNotEmpty(collect.get(true)) ? collect.get(true) : new ArrayList<>()); resultDTO.setDepartmentList(departmentList); resultDTO.setGridList(gridList); return resultDTO; diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectResponseFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectResponseFormDTO.java index 068d449a4a..05402a071d 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectResponseFormDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ProjectResponseFormDTO.java @@ -3,6 +3,7 @@ package com.epmet.dto.form; import lombok.Data; import org.hibernate.validator.constraints.Length; +import javax.validation.constraints.NotBlank; import java.io.Serializable; import java.util.List; @@ -29,6 +30,7 @@ public class ProjectResponseFormDTO implements Serializable { /** * 公开答复内容 */ + @NotBlank(message = "公开答复不能为空") @Length(max = 1000, message = "公开答复不能超过1000个字符") private String publicReply; /** diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReturnFromDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReturnFromDTO.java index 9953e31be7..7d34814d54 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReturnFromDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/ReturnFromDTO.java @@ -3,6 +3,7 @@ package com.epmet.dto.form; import lombok.Data; import org.hibernate.validator.constraints.Length; +import javax.validation.constraints.NotBlank; import java.io.Serializable; import java.util.List; @@ -30,6 +31,7 @@ public class ReturnFromDTO implements Serializable { /** * 公开答复内容 */ + @NotBlank(message = "公开答复不能为空") @Length(max = 1000, message = "公开答复不能超过1000个字符") private String publicReply; /** diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/TransferFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/TransferFormDTO.java index f6033bdd6a..ec3c6bd18a 100644 --- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/TransferFormDTO.java +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/TransferFormDTO.java @@ -22,6 +22,7 @@ public class TransferFormDTO implements Serializable { @NotBlank(message = "项目人员关联Id不能为空") private String projectStaffId; + @NotBlank(message = "公开答复不能为空") @Length(max=1000,message = "公开答复内容不能超过1000位") private String publicReply; diff --git a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/PartymemberRegisterRelationDTO.java b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/PartymemberRegisterRelationDTO.java index 35ebdcbb38..c2716ea00b 100644 --- a/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/PartymemberRegisterRelationDTO.java +++ b/epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/PartymemberRegisterRelationDTO.java @@ -44,6 +44,16 @@ public class PartymemberRegisterRelationDTO implements Serializable { */ private String customerId; + /** + * 所属组织机构Id + */ + private String agencyId; + + /** + * agencyId的所有上级,包含自己 + */ + private String agencyIdPath; + /** * 网格Id (customer_grid.id) */ diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/PartymemberRegisterRelationEntity.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/PartymemberRegisterRelationEntity.java index 07aa0380ff..360131ca94 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/PartymemberRegisterRelationEntity.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/entity/PartymemberRegisterRelationEntity.java @@ -40,6 +40,16 @@ public class PartymemberRegisterRelationEntity extends BaseEpmetEntity { */ private String customerId; + /** + * 所属组织机构Id + */ + private String agencyId; + + /** + * agencyId的所有上级,包含自己 + */ + private String agencyIdPath; + /** * 网格Id (customer_grid.id) */ diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java index ae67b95ebf..74b9ba9844 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java @@ -5,7 +5,10 @@ import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.EpmetRoleKeyConstant; import com.epmet.commons.tools.constant.NumConstant; 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.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.*; @@ -601,6 +604,13 @@ public class PartyMemberConfirmServiceImpl implements PartyMemberConfirmService PartymemberRegisterRelationEntity registerRelationEntity = new PartymemberRegisterRelationEntity(); registerRelationEntity.setCustomerId(partyMemberInfoDTO.getCustomerId()); registerRelationEntity.setGridId(partyMemberInfoDTO.getGridId()); + //表中新增字段 为其赋值 + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(partyMemberInfoDTO.getGridId()); + if (null == gridInfo) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取网格缓存失败", "获取网格缓存失败"); + } + registerRelationEntity.setAgencyId(gridInfo.getPid()); + registerRelationEntity.setAgencyIdPath(gridInfo.getPids()); registerRelationEntity.setUserId(partyMemberInfoDTO.getUserId()); registerRelationEntity.setFirstRegister(1); registerRelationEntity.setRegister(1); diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/PaCustomerDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/PaCustomerDTO.java new file mode 100644 index 0000000000..66abf30d75 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/PaCustomerDTO.java @@ -0,0 +1,71 @@ +package com.epmet.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Author zxc + * @DateTime 2022/8/5 15:03 + * @DESC + */ +@Data +public class PaCustomerDTO implements Serializable { + + /** + * 客户id,本主键和oper_crm.customer.id一致 + */ + private String id; + + /** + * 客户名称,默认是根组织名称 + */ + private String customerName; + + /** + * 是否已经完成客户信息初始化 0:未初始化,1:已初始化 + */ + private Integer isInitialize; + + /** + * 客户类型 mini 微信小程序客户 app 第三方app客户 + */ + private String type; + + /** + * 数据来源(dev:开发 test:体验 prod:生产) + */ + private String source; + + /** + * 删除标识:0.未删除 1.已删除 + */ + private Integer delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/RegisterRelationDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/RegisterRelationDTO.java index 0cc3ea4019..165651b81b 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/RegisterRelationDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/RegisterRelationDTO.java @@ -44,6 +44,16 @@ public class RegisterRelationDTO implements Serializable { */ private String customerId; + /** + * 所属组织机构Id + */ + private String agencyId; + + /** + * agencyId的所有上级,包含自己 + */ + private String agencyIdPath; + /** * 用户Id (user.id) */ diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcUserMatchGridFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcUserMatchGridFormDTO.java new file mode 100644 index 0000000000..1aa4d2db1e --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcUserMatchGridFormDTO.java @@ -0,0 +1,25 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2022/8/5 11:11 + * @DESC + */ +@Data +public class IcUserMatchGridFormDTO implements Serializable { + + private static final long serialVersionUID = -5252136149475817567L; + + public interface IcUserMatchGridForm{} + + @NotBlank(message = "idCard不能为空",groups = IcUserMatchGridForm.class) + private String idCard; + + @NotBlank(message = "appId不能为空",groups = IcUserMatchGridForm.class) + private String appId; +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcUserMatchGridResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcUserMatchGridResultDTO.java new file mode 100644 index 0000000000..d3fd271987 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcUserMatchGridResultDTO.java @@ -0,0 +1,22 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2022/8/5 11:14 + * @DESC + */ +@Data +public class IcUserMatchGridResultDTO implements Serializable { + + private static final long serialVersionUID = -3215965796907113918L; + + private String gridId; + + private String customerId; + + private String gridName; +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index 834ac2326c..f958d975d3 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -1293,5 +1293,17 @@ public class IcResiUserController implements ResultDataResolver { return new Result>>().ok(icResiUserService.listResiZhzl(pageFormDTO)); } + /** + * Desc: 居民首次进入小程序,可以根据输入身份证信息查询在数字社区居民信息中的网格,匹配不成功提示 + * @param tokenDto + * @param formDTO + * @author zxc + * @date 2022/8/5 11:17 + */ + @PostMapping("icUserMatchGrid") + public Result icUserMatchGrid(@RequestBody IcUserMatchGridFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO, IcUserMatchGridFormDTO.IcUserMatchGridForm.class); + return new Result().ok(icResiUserService.icUserMatchGrid(formDTO)); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/RegisterRelationEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/RegisterRelationEntity.java index ba4ff82087..2548d9b2ac 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/RegisterRelationEntity.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/RegisterRelationEntity.java @@ -40,6 +40,16 @@ public class RegisterRelationEntity extends BaseEpmetEntity { */ private String customerId; + /** + * 所属组织机构Id + */ + private String agencyId; + + /** + * agencyId的所有上级,包含自己 + */ + private String agencyIdPath; + /** * 用户Id (user.id) */ diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java index a79efcc6ba..550bb9563e 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java @@ -499,4 +499,13 @@ public interface IcResiUserService extends BaseService { * @return */ PageData> listResiZhzl(IcResiUserPageFormDTO pageFormDTO); + + /** + * Desc: 居民首次进入小程序,可以根据输入身份证信息查询在数字社区居民信息中的网格,匹配不成功提示 + * @param formDTO + * @author zxc + * @date 2022/8/5 11:17 + */ + IcUserMatchGridResultDTO icUserMatchGrid(IcUserMatchGridFormDTO formDTO); + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index b018309945..519528e55b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -20,6 +20,7 @@ package com.epmet.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; @@ -3219,4 +3220,55 @@ public class IcResiUserServiceImpl extends BaseServiceImpl(pageInfo.getList(), pageInfo.getTotal()); } + + /** + * Desc: 居民首次进入小程序,可以根据输入身份证信息查询在数字社区居民信息中的网格,匹配不成功提示 + * @param formDTO + * @author zxc + * @date 2022/8/5 11:17 + */ + @Override + public IcUserMatchGridResultDTO icUserMatchGrid(IcUserMatchGridFormDTO formDTO) { + PaCustomerDTO customerInfo = getCustomerInfo(formDTO.getAppId()); + if (null == customerInfo){ + throw new EpmetException("根据APPID查询客户信息失败:"+formDTO.getAppId()); + } + LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); + qw.eq(IcResiUserEntity::getCustomerId,customerInfo.getId()) + .eq(IcResiUserEntity::getIdCard,formDTO.getIdCard()); + IcResiUserEntity icResiUserEntity = baseDao.selectOne(qw); + if (null == icResiUserEntity){ + throw new EpmetException(EpmetErrorCode.NOT_MATCH_IC_USER_ERROR.getCode()); + } + IcUserMatchGridResultDTO result = new IcUserMatchGridResultDTO(); + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(icResiUserEntity.getGridId()); + if (null == gridInfo){ + throw new EpmetException("查询网格信息失败:"+icResiUserEntity.getGridId()); + } + result.setCustomerId(customerInfo.getId()); + result.setGridId(icResiUserEntity.getGridId()); + result.setGridName(gridInfo.getGridNamePath()); + return result; + } + + public PaCustomerDTO getCustomerInfo(String appId) { + JSONObject jsonObject = new JSONObject(); + String data = HttpClientManager.getInstance().sendPostByJSON("https://epmet-cloud.elinkservice.cn/api/third/customermp/getcustomermsg/" + appId, JSON.toJSONString(jsonObject)).getData(); + logger.info("ThirdLoginServiceImpl.getCustomerInfo:httpclient->url:https://epmet-cloud.elinkservice.cn/api/third/customermp/getcustomermsg/ ,结果->" + data); + JSONObject toResult = JSON.parseObject(data); + Result mapToResult = ConvertUtils.mapToEntity(toResult, Result.class); + if (null != toResult.get("code")) { + mapToResult.setCode(((Integer) toResult.get("code")).intValue()); + } + if (!mapToResult.success()) { + logger.error(String.format("根据appId查询客户Id失败,对应appId->" + appId)); + throw new RenException(mapToResult.getMsg()); + } + Object PublicCustomerResultDTO = mapToResult.getData(); + JSONObject json = JSON.parseObject(PublicCustomerResultDTO.toString()); + Map map = (Map) json.get("customer"); + PaCustomerDTO customer = ConvertUtils.mapToEntity(map, PaCustomerDTO.class); + logger.info("小程序登陆third服务获取客户用户信息PaCustomerDTO->" + customer); + return customer; + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/RegisterRelationServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/RegisterRelationServiceImpl.java index d63921e97a..bf7f42d6f9 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/RegisterRelationServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/RegisterRelationServiceImpl.java @@ -23,7 +23,11 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerOrgRedis; +import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.constant.UserConstant; @@ -344,6 +348,13 @@ public class RegisterRelationServiceImpl extends BaseServiceImpl