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 9a190534ec..7344cbf38d 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 @@ -261,6 +261,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 250e13e29e..888f8544d1 100644 --- a/epmet-gateway/src/main/resources/bootstrap.yml +++ b/epmet-gateway/src/main/resources/bootstrap.yml @@ -510,6 +510,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 9bf4f1465c..e3961f7a7d 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 172.22.76.1:6379,172.22.76.20:6379,172.22.76.36:6379,172.22.76.1:6389,172.22.76.20:6389,172.22.76.36:6389 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 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..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 697456d206..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.*; @@ -1194,12 +1198,8 @@ public class GovOrgServiceImpl implements GovOrgService { dto.setOrgId(grid.getId()); dto.setOrgType(OrgConstant.GRID); dto.setOrgName(grid.getGridName()); - if (projectMap.containsKey(grid.getId())) { - dto.setProjectCount(projectMap.get(grid.getId())); - } - if (closedMap.containsKey(grid.getId())) { - dto.setClosedCount(closedMap.get(grid.getId())); - } + dto.setProjectCount(projectMap.getOrDefault(grid.getId(), NumConstant.ZERO)); + dto.setClosedCount(closedMap.getOrDefault(grid.getId(), NumConstant.ZERO)); if (memberMap.containsKey(grid.getId())) { dto.setMemberCount(Math.toIntExact(memberMap.get(grid.getId()))); if (NumConstant.ZERO != dto.getMemberCount()) { @@ -1302,12 +1302,9 @@ public class GovOrgServiceImpl implements GovOrgService { //统计关闭项目数 Map closedMap = govProjectService.getMemberClosedProjectMap(formDTO); result.getList().forEach(item -> { - if (projectMap.containsKey(item.getStaffId())) { - item.setProjectCount(projectMap.get(item.getStaffId())); - } - if (projectMap.containsKey(item.getStaffId())) { - item.setClosedCount(closedMap.get(item.getStaffId())); - } + item.setProjectCount(projectMap.getOrDefault(item.getStaffId(), NumConstant.ZERO)); + item.setClosedCount(closedMap.getOrDefault(item.getStaffId(), NumConstant.ZERO)); + if (OrgConstant.AGENCY.contains(formDTO.getOrgType())) { AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(item.getOrgId()); if (null != agencyInfo) { @@ -1474,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 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 82b58c2500..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; @@ -716,7 +718,7 @@ public class GovProjectServiceImpl implements GovProjectService { */ @Override public Map getMemberClosedProjectMap(OrgStatisticsFormDTO formDTO) { - List list = projectDao.getMemberProjectCount(formDTO); + List list = projectDao.getMemberClosedProjectCount(formDTO); if (CollectionUtils.isEmpty(list)) { return Collections.emptyMap(); } @@ -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 ca75f1fa60..af955a0722 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 @@ -169,6 +169,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 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 @@ + + + + + + + + diff --git a/epmet-module/epmet-job/epmet-job-server/pom.xml b/epmet-module/epmet-job/epmet-job-server/pom.xml index 34748f1dff..039a553e88 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/form/IcBulidingAddFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java index 91b93b2569..cafecc1f1b 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java @@ -86,7 +86,7 @@ public class IcBulidingAddFormDTO implements Serializable { /** * 排序 */ - @NotNull(message = "排序不能为空", groups = {AddShowGroup.class, UpdateShowGroup.class}) + // @NotNull(message = "排序不能为空", groups = {AddShowGroup.class, UpdateShowGroup.class}) private BigDecimal sort = NumConstant.ZERO_DECIMAL; /** 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-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java index e5cd12fdf8..5aad1c9b59 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/DepartmentServiceImpl.java @@ -51,7 +51,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import org.springframework.web.bind.annotation.RequestBody; import java.util.ArrayList; import java.util.Date; @@ -107,10 +106,11 @@ public class DepartmentServiceImpl implements DepartmentService { Result result = new Result(); AddDepartmentResultDTO addDepartmentResultDTO = new AddDepartmentResultDTO(); CustomerDepartmentEntity entity = ConvertUtils.sourceToTarget(formDTO, CustomerDepartmentEntity.class); - if (formDTO.getTotalUser() > NumConstant.ZERO) { + if (null != formDTO.getTotalUser() && formDTO.getTotalUser() > NumConstant.ZERO) { entity.setTotalUser(formDTO.getTotalUser()); + }else{ + entity.setTotalUser(NumConstant.ZERO); } - entity.setTotalUser(NumConstant.ZERO); //1:查询当前组织机构信息,获取客户Id CustomerAgencyEntity parentEntity = customerAgencyDao.selectById(formDTO.getAgencyId()); entity.setCustomerId(parentEntity.getCustomerId()); diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/OrgProjectListFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/OrgProjectListFormDTO.java new file mode 100644 index 0000000000..c2607974ee --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/OrgProjectListFormDTO.java @@ -0,0 +1,73 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +@Data +public class OrgProjectListFormDTO extends PageFormDTO implements Serializable { + private static final long serialVersionUID = -3317804468566708838L; + + /** + * 组织/网格Id + */ + private String orgId; + /** + * 组织agency 网格grid + */ + private String orgType; + /** + * 上报渠道 【来源:议题issue 项目立项:agency 事件:ic_event 工作人员上报:work_event】 + */ + private String origin; + /** + * 上报人姓名 + */ + private String staffName; + /** + * 手机号 + */ + private String mobile; + //手机号对应工作人员Id集合 + private List staffIds; + /** + * 事件内容 + */ + private String backGround; + /** + * 事件类型 一类、二类Id集合 + */ + private List firstIdList; + private List secondIdList; + /** + * 事件状态 处理中 pending,已结案 closed + */ + private String status; + /** + * 起始上报时间 精确到秒 + */ + private String startTime; + /** + * 终止上报时间 精确到秒 + */ + private String endTime; + /** + * 处置选项 筛选自己参与的项目 有值就按staffId查 + */ + private String staffId; + + /** + * 分页参数 + */ + private Integer pageNo = 1; + private Integer pageSize = 20; + private Boolean isPage = true; + + //token中信息 + private String userId; + private String customerId; + +} 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/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/OrgProjectListResultDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/OrgProjectListResultDTO.java new file mode 100644 index 0000000000..f734a13de8 --- /dev/null +++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/result/OrgProjectListResultDTO.java @@ -0,0 +1,106 @@ +package com.epmet.dto.result; + +import com.epmet.dto.form.FileDTO; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +@Data +public class OrgProjectListResultDTO implements Serializable { + + private static final long serialVersionUID = 2374701362057175388L; + + /** + * 项目ID + */ + private String projectId; + /** + * 所属组织ID + */ + private String agencyId; + /** + * 上报渠道 agency:网格上报 ic_event:居民上报 work_event:巡查上报 issue:议题上报 + */ + private String origin; + /** + * 一级分类 + */ + private String firstName; + private String firstId; + + /** + * 二级分类 + */ + private String secondName; + private String secondId; + + /** + * 事件标题 + */ + private String title; + + /** + * 所属网格 + */ + private String gridName; + private String gridId; + + /** + * 地址 + */ + private String address; + /** + * 报事人 + */ + private String staffName; + private String staffId; + /** + * 上报人电话 + */ + private String mobile; + /** + * 上报时间 + */ + private String createdTime; + /** + * 事件内容 + */ + private String backGround; + /** + * 结案说明 + */ + private String publicReply; + /** + * 办结时间 + */ + private String endTime; + /** + * 办结部门 + */ + private String departmentName; + + /** + * 处理建议[创建节点的公开答复] + */ + private String createPublicReply; + + /** + * 图片url集合 + */ + private List urlList; + private String imageUrl; + + /** + * 状态 处理中 pending,已结案 closed + */ + private String status; + private String statusValue; + /** + * 是否需要自己处理 true:需要 false:不需要 + */ + private Boolean processable = false; + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java index fb8bcad8fd..02f813b232 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java @@ -17,11 +17,21 @@ package com.epmet.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.constant.NumConstant; +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.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.AssertUtils; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.group.AddGroup; @@ -30,15 +40,20 @@ import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.dto.ProjectDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; +import com.epmet.excel.OrgProjectListExcel; import com.epmet.excel.ProjectExcel; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; import com.epmet.service.ProjectService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.PrintWriter; +import java.util.Date; import java.util.List; import java.util.Map; @@ -51,6 +66,7 @@ import java.util.Map; */ @RestController @RequestMapping("project") +@Slf4j public class ProjectController { @Autowired @@ -387,4 +403,52 @@ public class ProjectController { public Result> staffPendingProject(@RequestBody ProjectListFromDTO fromDTO){ return new Result>().ok(projectService.staffPendingProject(fromDTO)); } + + /** + * Desc: 数字平台-项目管理列表 + */ + @PostMapping("orgprojectlist") + public Result> orgProjectList(@LoginUser TokenDto tokenDto, @RequestBody OrgProjectListFormDTO formDTO) { + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + return new Result>().ok(projectService.orgProjectList(formDTO)); + } + + @PostMapping("orgprojectexport") + public void orgProjectExport(@LoginUser TokenDto tokenDto, @RequestBody OrgProjectListFormDTO formDTO, HttpServletResponse response) throws IOException { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setIsPage(false); + ExcelWriter excelWriter = null; + formDTO.setPageNo(NumConstant.ONE); + formDTO.setPageSize(NumConstant.ONE_THOUSAND); + try { + String fileName = "项目管理导出表" + DateUtils.format(new Date()) + ".xlsx"; + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), OrgProjectListExcel.class).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + PageData data = null; + List list = null; + do { + data = projectService.orgProjectList(formDTO); + list = ConvertUtils.sourceToTarget(data.getList(), OrgProjectListExcel.class); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + excelWriter.write(list, writeSheet); + } while (CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize()); + } 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(); + } + } + } + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java index 6c5e253e06..316fbc8de6 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/dao/ProjectDao.java @@ -299,4 +299,5 @@ public interface ProjectDao extends BaseDao { List getProjectManageList(ProjectManageListFormDTO formDTO); + List orgProjectList(OrgProjectListFormDTO formDTO); } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectProcessEntity.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectProcessEntity.java index 78599eb5bf..82a89bf6fa 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectProcessEntity.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/entity/ProjectProcessEntity.java @@ -56,7 +56,7 @@ public class ProjectProcessEntity extends BaseEpmetEntity { * 负负责人ID */ private String staffId; - + private String staffName; /** * 处理:结案close,退回return,部门流转transfer,创建项目created */ diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/OrgProjectListExcel.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/OrgProjectListExcel.java new file mode 100644 index 0000000000..0af3ccc4c9 --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/OrgProjectListExcel.java @@ -0,0 +1,126 @@ +package com.epmet.excel; + +import cn.afterturn.easypoi.excel.annotation.ExcelCollection; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import lombok.Data; + +import java.util.List; + +/** + * 事件管理表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-05-17 + */ +@Data +public class OrgProjectListExcel { + + private static final long serialVersionUID = 2374701362057175388L; + + /** + * 上报渠道 agency:网格上报 resi_event:居民上报 work_event:巡查上报 issue:议题上报 + */ + @ExcelProperty(value = "上报渠道") + @ColumnWidth(25) + private String origin; + /** + * 一级分类名称 + */ + @ExcelProperty(value = "一级分类") + @ColumnWidth(20) + private String firstName; + + /** + * 二级分类名称 + */ + @ExcelProperty(value = "二级分类") + @ColumnWidth(20) + private String secondName; + + /** + * 事件标题 + */ + @ExcelProperty(value = "事件标题") + @ColumnWidth(30) + private String title; + + /** + * 所属网格 + */ + @ExcelProperty(value = "所属网格") + @ColumnWidth(30) + private String gridName; + + /** + * 地址 + */ + @ExcelProperty(value = "地址") + @ColumnWidth(30) + private String address; + /** + * 报事人 + */ + @ExcelProperty(value = "报事人") + @ColumnWidth(20) + private String staffName; + /** + * 上报人电话 + */ + @ExcelProperty(value = "上报人电话") + @ColumnWidth(20) + private String mobile; + /** + * 上报时间 + */ + @ExcelProperty(value = "上报时间") + @ColumnWidth(25) + private String createdTime; + /** + * 事件内容 + */ + @ExcelProperty(value = "事件内容") + @ColumnWidth(40) + private String backGround; + /** + * 结案说明 + */ + @ExcelProperty(value = "结案说明") + @ColumnWidth(30) + private String publicReply; + /** + * 办结时间 + */ + @ExcelProperty(value = "办结时间") + @ColumnWidth(25) + private String endTime; + /** + * 办结部门 + */ + @ExcelProperty(value = "办结部门") + @ColumnWidth(30) + private String departmentName; + + /** + * 处理建议[创建节点的公开答复] + */ + @ExcelProperty(value = "处理建议") + @ColumnWidth(25) + private String createPublicReply; + + /** + * 图片url集合 + */ + @ExcelProperty(value = "图片") + @ColumnWidth(30) + private String imageUrl; + + /** + * 状态 处理中 pending,已结案 closed + */ + @ExcelProperty(value = "状态") + @ColumnWidth(20) + private String status; + + +} \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java index 2e5fd4fd76..c57ac318a6 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java @@ -396,4 +396,5 @@ public interface ProjectService extends BaseService { void projectListExport(HttpServletResponse response,ProjectManageListFormDTO formDTO) throws IOException; List staffPendingProject(ProjectListFromDTO fromDTO); + PageData orgProjectList(OrgProjectListFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java index 2b51ec32ce..b8b01aa5b9 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java @@ -25,10 +25,13 @@ import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg; import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.scan.param.TextScanParamDTO; import com.epmet.commons.tools.scan.param.TextTaskDTO; import com.epmet.commons.tools.scan.result.SyncScanResult; @@ -250,6 +253,10 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl staffList = formDTO.getStaffList(); @@ -636,6 +644,10 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl NumConstant.ZERO) diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java index 7d26d3f9a0..0267a6f59b 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java @@ -41,17 +41,13 @@ import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.*; import com.epmet.constant.*; -import com.epmet.dao.ProjectDao; -import com.epmet.dao.ProjectOrgRelationDao; -import com.epmet.dao.ProjectSatisfactionDetailDao; -import com.epmet.dao.ProjectSatisfactionStatisticsDao; +import com.epmet.dao.*; import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.*; import com.epmet.excel.ProjectListExportExcel; import com.epmet.feign.*; -import com.epmet.redis.ProjectRedis; import com.epmet.resi.group.constant.TopicConstant; import com.epmet.resi.group.dto.topic.ResiTopicDTO; import com.epmet.resi.group.dto.topic.form.TopicAttachmentFormDTO; @@ -158,6 +154,8 @@ public class ProjectServiceImpl extends BaseServiceImpl { if (issueDTO.getOrgId().equals(agency.getId())) { processEntity.setDepartmentName(agency.getOrganizationName()); @@ -1403,6 +1408,7 @@ public class ProjectServiceImpl extends BaseServiceImpl orgProjectList(OrgProjectListFormDTO formDTO) { + //1.整理查询条件 + if(StringUtils.isEmpty(formDTO.getOrgType())){ + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == staffInfo) { + throw new EpmetException("获取工作人员信息失败"); + } + formDTO.setOrgId(staffInfo.getAgencyId()); + formDTO.setOrgType("agency"); + } + if (StringUtils.isNoneBlank(formDTO.getMobile())) { + //有手机号筛选条件的选按手机号查找工作人员,在按staffId查项目 + GetByRealNamesFormDTO dto = new GetByRealNamesFormDTO(); + dto.setCustomerId(formDTO.getCustomerId()); + dto.setMobile(formDTO.getMobile()); + Result> staffResult = epmetUserOpenFeignClient.getByRealNames(dto); + if (!staffResult.success()) { + throw new RenException("获取工作人员基础信息失败......"); + } + if (null != staffResult.getData() && staffResult.getData().size() > NumConstant.ZERO) { + List staffIds = staffResult.getData().stream().map(CustomerStaffDTO::getUserId).collect(Collectors.toList()); + formDTO.setStaffIds(staffIds); + } + } + //2.按条件筛选数据 列表/导出查询 + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()); + List list = baseDao.orgProjectList(formDTO); + PageInfo pageInfo = new PageInfo<>(list); + if (list.size() < NumConstant.ONE) { + return new PageData<>(list, pageInfo.getTotal()); + } + //3.封装数据 + //3-1.查询分类信息 + IssueProjectCategoryDictListFormDTO dictFormDto = new IssueProjectCategoryDictListFormDTO(); + dictFormDto.setCustomerId(formDTO.getCustomerId()); + Result> categoryRes = govIssueOpenFeignClient.getCategoryList(dictFormDto); + if (!categoryRes.success() || org.springframework.util.CollectionUtils.isEmpty(categoryRes.getData())) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取项目分类名称异常"); + } + Map categoryMap = categoryRes.getData().stream().collect(Collectors.toMap(IssueProjectCategoryDictDTO::getId, IssueProjectCategoryDictDTO::getCategoryName)); + //3-2.封装数据 + for (OrgProjectListResultDTO dto : list) { + //分类名称 + dto.setFirstName(categoryMap.get(dto.getFirstId())); + dto.setSecondName(categoryMap.get(dto.getSecondId())); + try { + //工作人员基础信息 + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), dto.getStaffId()); + if (null != staffInfo) { + dto.setStaffName(staffInfo.getRealName()); + dto.setMobile(staffInfo.getMobile()); + } + //拼接网格名 + if (StringUtils.isNoneBlank(dto.getGridId())) { + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(dto.getGridId()); + if (null != gridInfo) { + dto.setGridName((StringUtils.isEmpty(gridInfo.getAllParentName()) ? "" : gridInfo.getAllParentName() + "-") + gridInfo.getGridNamePath()); + } + } else { + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(dto.getAgencyId()); + if (null != agencyInfo) { + dto.setGridName((StringUtils.isEmpty(agencyInfo.getAllParentName()) ? "" : agencyInfo.getAllParentName() + "-") + agencyInfo.getOrganizationName()); + } + } + } catch (Exception e) { + log.warn("获取组织/网格缓存失败"); + } + //图片url拼接 + if (!org.springframework.util.CollectionUtils.isEmpty(dto.getUrlList())) { + String imageUrl = StringUtils.join(dto.getUrlList().stream().map(FileDTO::getUrl).collect(Collectors.toList()),"
"); + dto.setImageUrl(imageUrl); + } + //判断未结案项目是否涉及需要当前工作人员处理[列表查询需要,导出的不需要这段逻辑] + if (formDTO.getIsPage() && "pending".equals(dto.getStatusValue())) { + //查询当前工作人员是否存在当前项目的未处理节点 + ProjectStaffDTO projectStaff = projectStaffDao.selectLatestByProjectIdAndStaffId(dto.getProjectId(), formDTO.getUserId()); + if (null != projectStaff) { + dto.setProcessable(true); + } + } + + } + return new PageData<>(list, pageInfo.getTotal()); + } + + } diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java index 3007780212..edb4bc0f89 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectTraceServiceImpl.java @@ -427,6 +427,10 @@ public class ProjectTraceServiceImpl implements ProjectTraceS projectService.insert(projectEntity); //3-2.项目进展表新增第一个节点数据 + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == staffInfo) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败"); + } ProjectProcessEntity processEntity = new ProjectProcessEntity(); processEntity.setProjectId(projectEntity.getId()); processEntity.setCustomerId(formDTO.getCustomerId()); @@ -437,6 +441,7 @@ public class ProjectTraceServiceImpl implements ProjectTraceS processEntity.setInternalRemark(formDTO.getInternalRemark()); processEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType()); processEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId()); + processEntity.setStaffName(staffInfo.getRealName()); agencyDeptGrid.getAgencyList().forEach(agency -> { if (loginUser.getAgencyId().equals(agency.getId())) { processEntity.setDepartmentName(agency.getOrganizationName()); @@ -760,6 +765,10 @@ public class ProjectTraceServiceImpl implements ProjectTraceS projectService.insert(projectEntity); //3-2.项目进展表新增第一个节点数据 + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == staffInfo) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败"); + } ProjectProcessEntity processEntity = new ProjectProcessEntity(); processEntity.setProjectId(projectEntity.getId()); processEntity.setCustomerId(formDTO.getCustomerId()); @@ -770,6 +779,7 @@ public class ProjectTraceServiceImpl implements ProjectTraceS processEntity.setInternalRemark(formDTO.getInternalRemark()); processEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId()); processEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType()); + processEntity.setStaffName(staffInfo.getRealName()); agencyDeptGrid.getAgencyList().forEach(agency -> { if (loginUser.getAgencyId().equals(agency.getId())) { processEntity.setDepartmentName(agency.getOrganizationName()); @@ -1281,6 +1291,10 @@ public class ProjectTraceServiceImpl implements ProjectTraceS projectService.insert(projectEntity); //3-2.项目进展表新增第一个节点数据 + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == staffInfo) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败"); + } ProjectProcessEntity processEntity = new ProjectProcessEntity(); processEntity.setProjectId(projectEntity.getId()); processEntity.setCustomerId(formDTO.getCustomerId()); @@ -1291,6 +1305,7 @@ public class ProjectTraceServiceImpl implements ProjectTraceS processEntity.setInternalRemark(formDTO.getInternalRemark()); processEntity.setAssistanceUnitId(formDTO.getAssistanceUnitId()); processEntity.setAssistanceUnitType(formDTO.getAssistanceUnitType()); + processEntity.setStaffName(staffInfo.getRealName()); agencyDeptGrid.getAgencyList().forEach(agency -> { if (loginUser.getAgencyId().equals(agency.getId())) { processEntity.setDepartmentName(agency.getOrganizationName()); diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.26__alter_project_process.sql b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.26__alter_project_process.sql new file mode 100644 index 0000000000..2c2d53913c --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/db/migration/V0.0.26__alter_project_process.sql @@ -0,0 +1,2 @@ +ALTER TABLE `epmet_gov_project`.`project_process` + ADD COLUMN `STAFF_NAME` varchar(64) NULL COMMENT '负责人姓名' AFTER `STAFF_ID`; \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml index 493f8bbf72..527e4bd62a 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectDao.xml @@ -620,4 +620,121 @@ GROUP BY t.PROJECT_ID ORDER BY p.CREATED_TIME DESC + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectProcessDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectProcessDao.xml index 8a774f3c21..6255a9b138 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectProcessDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ProjectProcessDao.xml @@ -92,7 +92,11 @@ ID AS processId, OPERATION_NAME AS processName, UNIX_TIMESTAMP(created_time) AS processTime, - DEPARTMENT_NAME, + CASE + WHEN STAFF_NAME IS NULL THEN + DEPARTMENT_NAME + ELSE CONCAT( DEPARTMENT_NAME, '(', STAFF_NAME, ')' ) + END AS "departmentName", PUBLIC_REPLY, INTERNAL_REMARK, IS_SEND, 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/GetByRealNamesFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GetByRealNamesFormDTO.java index 80719e6737..ec555aaa14 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GetByRealNamesFormDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/GetByRealNamesFormDTO.java @@ -23,4 +23,8 @@ public class GetByRealNamesFormDTO implements Serializable { * 工作人员姓名集合 */ private Set realNames; + /** + * 手机号模糊查询 + */ + private String mobile; } 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 f68830d81c..37cf258e14 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 @@ -496,4 +496,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 b329bee2b8..f0fcfceefc 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; @@ -3244,4 +3245,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 - #{name} - + + + #{name} + + + + AND mobile LIKE concat('%', #{mobile}, '%') +