diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java index 5119475926..f6e180eb7f 100644 --- a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java @@ -10,7 +10,8 @@ public interface OrgConstant { String PROVINCE = "province"; String CITY = "city"; String DISTRICT = "district"; - + String STREET = "street"; + String COMMUNITY = "community"; String GRID_ID="GRID_ID"; String GENDER="GENDER"; String HOUSE_TYPE_KEY="HOUSE_TYPE"; diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/OrgStatisticsFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/OrgStatisticsFormDTO.java new file mode 100644 index 0000000000..559a08d9f9 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/OrgStatisticsFormDTO.java @@ -0,0 +1,25 @@ +package com.epmet.dataaggre.dto.govorg.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/7/27 9:27 + */ +@Data +public class OrgStatisticsFormDTO extends PageFormDTO implements Serializable { + private static final long serialVersionUID = -1043502365053945317L; + private String customerId; + private String agencyId; + private String orgId; + private String orgType; + private String type; + private String startDate; + private String endDate; + private List agencyList; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/MemberProjectInfoResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/MemberProjectInfoResultDTO.java new file mode 100644 index 0000000000..e0c941e8e3 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/MemberProjectInfoResultDTO.java @@ -0,0 +1,24 @@ +package com.epmet.dataaggre.dto.govorg.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/7/27 9:33 + */ +@NoArgsConstructor +@Data +public class MemberProjectInfoResultDTO implements Serializable { + + private static final long serialVersionUID = -4880909768378661921L; + private String staffId; + private String staffName; + private String orgId; + private String orgName; + private Integer projectCount = 0; + private Integer closedCount = 0; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/OrgCountDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/OrgCountDTO.java new file mode 100644 index 0000000000..1163413ab7 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/OrgCountDTO.java @@ -0,0 +1,17 @@ +package com.epmet.dataaggre.dto.govorg.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/7/27 14:56 + */ +@Data +public class OrgCountDTO implements Serializable { + private static final long serialVersionUID = -1875812403619088015L; + private String orgId; + private Integer count; +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/OrgProjectDetailResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/OrgProjectDetailResultDTO.java new file mode 100644 index 0000000000..8f8c980c61 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/OrgProjectDetailResultDTO.java @@ -0,0 +1,25 @@ +package com.epmet.dataaggre.dto.govorg.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @Description + * @Author zhaoqifeng + * @Date 2022/7/27 9:32 + */ +@NoArgsConstructor +@Data +public class OrgProjectDetailResultDTO implements Serializable { + private static final long serialVersionUID = 6333117500929136144L; + private String orgId; + private String orgType; + private String orgName; + private Integer memberCount = 0; + private Integer projectCount = 0; + private Integer closedCount = 0; + private Integer projectAve = 0; + private Integer closedAve = 0; +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java index 134278d433..83ae19c53b 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java @@ -3,6 +3,7 @@ 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.annotation.RequirePermission; import com.epmet.commons.tools.aop.NoRepeatSubmit; @@ -18,7 +19,9 @@ import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.user.LoginUserUtil; 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.beans.GridMemberDataAnalysisExcelExportBean; import com.epmet.dataaggre.dto.epmetuser.result.StaffSelectResDTO; @@ -27,6 +30,8 @@ import com.epmet.dataaggre.dto.govorg.CustomerGridDTO; import com.epmet.dataaggre.dto.govorg.form.*; import com.epmet.dataaggre.dto.govorg.result.*; import com.epmet.dataaggre.enums.GridMemberDataAnalysisEnums; +import com.epmet.dataaggre.excel.MemberProjectInfoExcel; +import com.epmet.dataaggre.excel.OrgProjectDetailExcel; import com.epmet.dataaggre.service.AggreGridService; import com.epmet.dataaggre.service.govorg.GovOrgService; import lombok.extern.slf4j.Slf4j; @@ -39,11 +44,13 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.FileInputStream; import java.io.IOException; +import java.io.PrintWriter; import java.net.URLEncoder; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; /** @@ -439,4 +446,123 @@ public class GovOrgController { } return new Result().ok(govOrgService.queryBuildingInfo(buildingId)); } + + /** + * 组织项目统计 + * @Param tokenDto + * @Param formDTO + * @Return {@link Result< PageData< OrgProjectDetailResultDTO>>} + * @Author zhaoqifeng + * @Date 2022/7/28 10:34 + */ + @PostMapping("orgProjectDetailList") + public Result> orgProjectDetailList(@LoginUser TokenDto tokenDto, @RequestBody OrgStatisticsFormDTO formDTO) { + return new Result>().ok(govOrgService.orgProjectDetailList(tokenDto, formDTO)); + } + + /** + * 网格员项目统计 + * @Param tokenDto + * @Param formDTO + * @Return {@link Result< PageData< MemberProjectInfoResultDTO>>} + * @Author zhaoqifeng + * @Date 2022/7/28 10:34 + */ + @PostMapping("memberProjectInfoList") + public Result> memberProjectInfoList(@LoginUser TokenDto tokenDto, @RequestBody OrgStatisticsFormDTO formDTO) { + return new Result>().ok(govOrgService.memberProjectInfoList(tokenDto, formDTO)); + } + + @NoRepeatSubmit + @PostMapping("orgProjectDetailList/export") + public void orgProjectExport(@LoginUser TokenDto tokenDto, @RequestBody OrgStatisticsFormDTO formDTO, HttpServletResponse response) throws Exception { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setIsPage(false); + formDTO.setPageSize(NumConstant.TEN_THOUSAND); + + ExcelWriter excelWriter = null; + AtomicInteger i = new AtomicInteger(1); + try { + String fileName = "组织事件统计.xlsx"; + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), OrgProjectDetailExcel.class).build(); + PageData page = null; + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + OrgProjectDetailExcel sum = new OrgProjectDetailExcel(); + do { + page = govOrgService.orgProjectDetailList(tokenDto, formDTO); + List list = ConvertUtils.sourceToTarget(page.getList(), OrgProjectDetailExcel.class); + list.forEach(item -> { + item.setIndex(i.getAndIncrement()); + }); + + sum.setMemberCount(sum.getMemberCount() + list.stream().mapToInt(OrgProjectDetailExcel::getMemberCount).sum()); + sum.setProjectCount(sum.getProjectCount() + list.stream().mapToInt(OrgProjectDetailExcel::getProjectCount).sum()); + sum.setClosedCount(sum.getClosedCount() + list.stream().mapToInt(OrgProjectDetailExcel::getClosedCount).sum()); + sum.setProjectAve(sum.getProjectAve() + list.stream().mapToInt(OrgProjectDetailExcel::getProjectAve).sum()); + sum.setClosedAve(sum.getClosedAve() + list.stream().mapToInt(OrgProjectDetailExcel::getClosedAve).sum()); + excelWriter.write(list, writeSheet); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + } while (org.apache.commons.collections4.CollectionUtils.isNotEmpty(page.getList()) && page.getList().size() == formDTO.getPageSize()); + sum.setIndex(i.getAndIncrement()); + sum.setOrgName("合计"); + List list = new ArrayList<>(); + list.add(sum); + 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(); + } + } + } + + @NoRepeatSubmit + @PostMapping("memberProjectInfoList/export") + public void memberProjectExport(@LoginUser TokenDto tokenDto, @RequestBody OrgStatisticsFormDTO formDTO, HttpServletResponse response) throws Exception { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setIsPage(false); + formDTO.setPageSize(NumConstant.TEN_THOUSAND); + + ExcelWriter excelWriter = null; + AtomicInteger i = new AtomicInteger(1); + try { + String fileName = "网格员事件统计.xlsx"; + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), MemberProjectInfoExcel.class).build(); + PageData page = null; + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + do { + page = govOrgService.memberProjectInfoList(tokenDto, formDTO); + List list = ConvertUtils.sourceToTarget(page.getList(), MemberProjectInfoExcel.class); + list.forEach(item -> { + item.setIndex(i.getAndIncrement()); + }); + excelWriter.write(list, writeSheet); + formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE); + } while (org.apache.commons.collections4.CollectionUtils.isNotEmpty(page.getList()) && page.getList().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(); + } + } + } + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java index af97c5e52c..d32ddf47ed 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java @@ -26,7 +26,10 @@ import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO; import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO; import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; +import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO; import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO; +import com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO; +import com.epmet.dataaggre.dto.govorg.result.OrgCountDTO; import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO; import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; @@ -373,4 +376,10 @@ public interface DataStatsDao { */ List getGridProejctToProjectMain(GridLivelyFormDTO formDTO); + List getAgencyProjectTotal(OrgStatisticsFormDTO formDTO); + + List getMemberCount(@Param("agencyId")String agencyId, @Param("dateId") String dateId); + + List getMemberList(@Param("gridId") String gridId, @Param("dateId") String dateId); + } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffRoleDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffRoleDao.java index e508cb2666..6f49f5a6d0 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffRoleDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffRoleDao.java @@ -21,6 +21,8 @@ import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dataaggre.dto.epmetuser.result.RoleListResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.StaffRoleListResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO; +import com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO; +import com.epmet.dataaggre.dto.govorg.result.OrgCountDTO; import com.epmet.dataaggre.entity.epmetuser.StaffRoleEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -74,4 +76,6 @@ public interface StaffRoleDao extends BaseDao { */ List selectStaffByRole(@Param("customerId") String customerId, @Param("roleId") String roleId, @Param("userId") String userId); + List getMemberCount(@Param("customerId") String customerId); + List getMemberList(@Param("customerId") String customerId, @Param("orgIds") List orgIds); } \ 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 076b7af7bd..ba9043c0f4 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 @@ -106,4 +106,6 @@ public interface CustomerAgencyDao extends BaseDao { */ LinkedList subAgencyListAndGridSumNum(@Param("agencyId") String agencyId); + List getSubAgencyList(@Param("agencyId") String agencyId); + } 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 d57b251c2b..49b903cca5 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 @@ -19,6 +19,8 @@ package com.epmet.dataaggre.dao.govproject; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO; +import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO; +import com.epmet.dataaggre.dto.govorg.result.OrgCountDTO; import com.epmet.dataaggre.dto.govproject.ProjectDTO; import com.epmet.dataaggre.dto.govproject.ProjectRelatedPersonnelDTO; import com.epmet.dataaggre.dto.govproject.ResiEventDTO; @@ -123,4 +125,9 @@ public interface ProjectDao extends BaseDao { * @author sun */ List getEventOrgList(@Param("eventIds") List eventIds); + + List getGridProjectCount(OrgStatisticsFormDTO formDTO); + List getGridClosedProjectCount(OrgStatisticsFormDTO formDTO); + List getMemberProjectCount(OrgStatisticsFormDTO formDTO); + List getMemberClosedProjectCount(OrgStatisticsFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/MemberProjectInfoExcel.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/MemberProjectInfoExcel.java new file mode 100644 index 0000000000..a742bd1546 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/MemberProjectInfoExcel.java @@ -0,0 +1,40 @@ +package com.epmet.dataaggre.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.HeadStyle; +import com.alibaba.excel.enums.poi.FillPatternTypeEnum; +import lombok.Data; + +/** + * 数字平台党员信息表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-05-17 + */ +@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 44) +@Data +public class MemberProjectInfoExcel { + + @ColumnWidth(10) + @ExcelProperty(value = "序号",order = 1) + private Integer index; + + @ColumnWidth(30) + @ExcelProperty(value = "网格员",order = 2) + private String staffName; + + @ColumnWidth(40) + @ExcelProperty(value = "所属组织",order = 3) + private String orgName; + + @ColumnWidth(20) + @ExcelProperty(value = "上报数量",order = 4) + private Integer projectCount = 0; + + @ColumnWidth(20) + @ExcelProperty(value = "办结数",order = 5) + private Integer closedCount = 0; + + +} \ No newline at end of file diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/OrgProjectDetailExcel.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/OrgProjectDetailExcel.java new file mode 100644 index 0000000000..49aeaf9317 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/OrgProjectDetailExcel.java @@ -0,0 +1,47 @@ +package com.epmet.dataaggre.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.HeadStyle; +import com.alibaba.excel.enums.poi.FillPatternTypeEnum; +import lombok.Data; + +/** + * 数字平台党员信息表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-05-17 + */ +@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 44) +@Data +public class OrgProjectDetailExcel { + + @ColumnWidth(10) + @ExcelProperty(value = "序号",order = 1) + private Integer index; + + @ColumnWidth(40) + @ExcelProperty(value = "所属组织",order = 2) + private String orgName; + + @ColumnWidth(20) + @ExcelProperty(value = "网格员数",order = 3) + private Integer memberCount = 0; + + @ColumnWidth(20) + @ExcelProperty(value = "上报数量",order = 4) + private Integer projectCount = 0; + + @ColumnWidth(20) + @ExcelProperty(value = "办结数",order = 5) + private Integer closedCount = 0; + + @ColumnWidth(20) + @ExcelProperty(value = "人均上报",order = 6) + private Integer projectAve = 0; + + @ColumnWidth(20) + @ExcelProperty(value = "人均办结",order = 7) + private Integer closedAve = 0; + +} \ 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 754ee01d50..7ce06a88e5 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java @@ -1,5 +1,6 @@ package com.epmet.dataaggre.service.datastats; +import com.epmet.commons.tools.page.PageData; import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; import com.epmet.dataaggre.dto.datastats.form.*; import com.epmet.dataaggre.dto.datastats.result.*; @@ -7,8 +8,10 @@ import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO; import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO; import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; +import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO; import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; +import com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO; import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO; import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; @@ -16,6 +19,7 @@ import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; import javax.servlet.http.HttpServletResponse; import java.text.ParseException; import java.util.List; +import java.util.Map; /** * @Author sun @@ -296,4 +300,10 @@ public interface DataStatsService { * @author sun */ List getGridProejctToProjectMain(GridLivelyFormDTO formDTO); + + Map getAgencyProjectTotal(OrgStatisticsFormDTO formDTO); + + Map getMemberMap(String agencyId); + + PageData getMemberList(OrgStatisticsFormDTO 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 8682ec5876..bf56d8cdb8 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 @@ -1,63 +1,69 @@ package com.epmet.dataaggre.service.datastats.impl; import cn.afterturn.easypoi.excel.entity.ExportParams; -import com.alibaba.fastjson.JSON; -import com.epmet.commons.dynamic.datasource.annotation.DataSource; -import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.enums.OrgLevelEnum; -import com.epmet.commons.tools.enums.OrgTypeEnum; -import com.epmet.commons.tools.exception.RenException; -import com.epmet.commons.tools.feign.ResultDataResolver; -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.poi.excel.ExportMultiView; -import com.epmet.dataaggre.constant.DataSourceConstant; -import com.epmet.dataaggre.constant.OrgConstant; -import com.epmet.dataaggre.dao.datastats.DataStatsDao; -import com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao; -import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; -import com.epmet.dataaggre.dto.datastats.form.*; -import com.epmet.dataaggre.dto.datastats.result.*; -import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO; -import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; -import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO; -import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult; -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.evaluationindex.ScreenGovernRankDataDailyDTO; -import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; -import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO; -import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; -import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO; -import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; -import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; -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.datastats.DataStatsService; -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.opercrm.CustomerRelation; -import com.github.pagehelper.PageHelper; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import javax.servlet.http.HttpServletResponse; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.text.NumberFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicReference; -import java.util.stream.Collectors; + import com.alibaba.fastjson.JSON; + import com.epmet.commons.dynamic.datasource.annotation.DataSource; + import com.epmet.commons.tools.constant.NumConstant; + import com.epmet.commons.tools.enums.OrgLevelEnum; + import com.epmet.commons.tools.enums.OrgTypeEnum; + import com.epmet.commons.tools.exception.RenException; + import com.epmet.commons.tools.feign.ResultDataResolver; + import com.epmet.commons.tools.page.PageData; + 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.poi.excel.ExportMultiView; + import com.epmet.dataaggre.constant.DataSourceConstant; + import com.epmet.dataaggre.constant.OrgConstant; + import com.epmet.dataaggre.dao.datastats.DataStatsDao; + import com.epmet.dataaggre.dao.datastats.FactGridMemberStatisticsDailyDao; + import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; + import com.epmet.dataaggre.dto.datastats.form.*; + import com.epmet.dataaggre.dto.datastats.result.*; + import com.epmet.dataaggre.dto.epmetuser.FactIcuserCategoryAnalysisDailyDTO; + import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; + import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO; + import com.epmet.dataaggre.dto.epmetuser.result.PatrolDailySumResult; + 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.evaluationindex.ScreenGovernRankDataDailyDTO; + import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; + import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO; + import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO; + import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; + import com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO; + import com.epmet.dataaggre.dto.govorg.result.OrgCountDTO; + import com.epmet.dataaggre.dto.govproject.form.ProjectTotalFormDTO; + import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; + import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; + 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.datastats.DataStatsService; + 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.opercrm.CustomerRelation; + import com.github.pagehelper.PageHelper; + import com.github.pagehelper.PageInfo; + import lombok.extern.slf4j.Slf4j; + import org.apache.commons.collections4.CollectionUtils; + import org.apache.commons.lang3.StringUtils; + import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.stereotype.Service; + + import javax.servlet.http.HttpServletResponse; + import java.math.BigDecimal; + import java.math.RoundingMode; + import java.text.NumberFormat; + import java.text.ParseException; + import java.text.SimpleDateFormat; + import java.util.*; + import java.util.concurrent.atomic.AtomicInteger; + import java.util.concurrent.atomic.AtomicReference; + import java.util.function.Function; + import java.util.stream.Collectors; /** * @Author sun @@ -2267,4 +2273,41 @@ public class DataStatsServiceImpl implements DataStatsService, ResultDataResolve public List getGridProejctToProjectMain(GridLivelyFormDTO formDTO) { return dataStatsDao.getGridProejctToProjectMain(formDTO); } + + @Override + public Map getAgencyProjectTotal(OrgStatisticsFormDTO formDTO) { + List list = dataStatsDao.getAgencyProjectTotal(formDTO); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyMap(); + } + return list.stream().collect(Collectors.toMap(SubAgencyProjectResultDTO::getAgencyId, Function.identity())); + } + + /** + * 组织下网格的网格员数量统计 + * @Param agencyId + * @Return {@link Map< String, Integer>} + * @Author zhaoqifeng + * @Date 2022/7/27 16:11 + */ + @Override + public Map getMemberMap(String agencyId) { + //当前日期前一天 + String dateId = DateUtils.format(DateUtils.addDateDays(new Date(), NumConstant.ONE_NEG), DateUtils.DATE_PATTERN_YYYYMMDD); + List list = dataStatsDao.getMemberCount(agencyId, dateId); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyMap(); + } + return list.stream().collect(Collectors.toMap(OrgCountDTO::getOrgId, OrgCountDTO::getCount, (o1, o2) -> o1)); + } + + @Override + public PageData getMemberList(OrgStatisticsFormDTO formDTO) { + //当前日期前一天 + String dateId = DateUtils.format(DateUtils.addDateDays(new Date(), NumConstant.ONE_NEG), DateUtils.DATE_PATTERN_YYYYMMDD); + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = dataStatsDao.getMemberList(formDTO.getOrgId(), dateId); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); + } } 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 01b9dae907..894e1fea1c 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,19 +1,22 @@ package com.epmet.dataaggre.service.epmetuser; +import com.epmet.commons.tools.page.PageData; import com.epmet.dataaggre.dto.epmetuser.form.*; import com.epmet.dataaggre.dto.epmetuser.result.*; import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO; +import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO; import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO; import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO; +import com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO; import com.epmet.dataaggre.dto.govproject.result.ProjectAnalysisResultDTO; import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity; import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.UserBaseInfoDTO; import java.util.List; -import java.util.Set; +import java.util.Map; /** * @Author zxc @@ -208,4 +211,23 @@ public interface EpmetUserService { Integer getTotalByPolicyRules(String customerId, String orgIdPath, String orgId, String orgType, String neighborHoodId, String buildingId, String unitId, String houseId, String idCard, String name, List resiRule, List houseIds); + /** + * 统计各组织下网格员数量 + * + * @Param customerId + * @Return {@link Map< String, Integer>} + * @Author zhaoqifeng + * @Date 2022/7/27 14:58 + */ + Map getMemberCount(String customerId); + + /** + * 获取组织下网格员列表 + * + * @Param agencyId + * @Return {@link PageData< MemberProjectInfoResultDTO>} + * @Author zhaoqifeng + * @Date 2022/7/27 17:32 + */ + PageData getMemberList(OrgStatisticsFormDTO 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 000affa6ff..4e31dd4a5d 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 @@ -7,6 +7,7 @@ import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.form.IdAndNameDTO; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.enums.OrgTypeEnum; +import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; @@ -25,11 +26,9 @@ import com.epmet.dataaggre.dto.govorg.CustomerDepartmentDTO; import com.epmet.dataaggre.dto.govorg.CustomerGridDTO; import com.epmet.dataaggre.dto.govorg.form.GridLivelyFormDTO; import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO; +import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO; import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO; -import com.epmet.dataaggre.dto.govorg.result.GridDateIdResultDTO; -import com.epmet.dataaggre.dto.govorg.result.GridStaffResultDTO; -import com.epmet.dataaggre.dto.govorg.result.StaffOrgNameResultDTO; -import com.epmet.dataaggre.dto.govorg.result.StaffOrgRelationResultDTO; +import com.epmet.dataaggre.dto.govorg.result.*; import com.epmet.dataaggre.dto.govproject.result.ProjectAnalysisResultDTO; import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity; import com.epmet.dataaggre.entity.epmetuser.GovStaffRoleEntity; @@ -46,6 +45,7 @@ import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.UserBaseInfoDTO; import com.epmet.dto.result.StaffRoleResultDTO; import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; @@ -857,4 +857,39 @@ public class EpmetUserServiceImpl implements EpmetUserService { public Integer getTotalByPolicyRules(String customerId, String orgIdPath, String orgId, String orgType, String neighborHoodId, String buildingId, String unitId, String houseId, String idCard, String name, List resiRule, List houseIds) { return icResiUserDao.getTotalByPolicyRules(customerId, orgIdPath, orgId, orgType, neighborHoodId, buildingId, unitId, houseId, idCard, name, resiRule, houseIds); } + + /** + * 统计各组织下网格员数量 + * + * @param customerId + * @Param customerId + * @Return {@link Map< String, Integer>} + * @Author zhaoqifeng + * @Date 2022/7/27 14:58 + */ + @Override + public Map getMemberCount(String customerId) { + List list = staffRoleDao.getMemberCount(customerId); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyMap(); + } + return list.stream().collect(Collectors.toMap(OrgCountDTO::getOrgId, OrgCountDTO::getCount, (o1, o2) -> o1)); + } + + /** + * 获取组织下网格员列表 + * + * @param formDTO + * @Param agencyId + * @Return {@link PageData < MemberProjectInfoResultDTO>} + * @Author zhaoqifeng + * @Date 2022/7/27 17:32 + */ + @Override + public PageData getMemberList(OrgStatisticsFormDTO formDTO) { + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + List list = staffRoleDao.getMemberList(formDTO.getCustomerId(), formDTO.getAgencyList()); + PageInfo pageInfo = new PageInfo<>(list); + return new PageData<>(list, pageInfo.getTotal()); + } } 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 ee502bd493..aee2f7dbd7 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 @@ -1,5 +1,6 @@ package com.epmet.dataaggre.service.govorg; +import com.epmet.commons.tools.page.PageData; 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; @@ -11,13 +12,10 @@ import com.epmet.dataaggre.dto.govorg.form.*; import com.epmet.dataaggre.dto.govorg.result.*; import com.epmet.dataaggre.dto.resigroup.result.OrgInfoCommonDTO; import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; -import com.epmet.dataaggre.entity.govorg.IcHouseEntity; import com.epmet.dto.IcNeighborHoodDTO; -import com.epmet.dto.result.NeighborHoodListResultDTO; import javax.servlet.http.HttpServletResponse; import java.util.List; -import java.util.Set; /** * @Author zxc @@ -223,4 +221,26 @@ public interface GovOrgService { List statRule, Integer pageNo, Integer pageSize); List neighborhoodsByIds(List neighborhoodIds); + + /** + * 组织项目统计 + * + * @Param tokenDto + * @Param formDTO + * @Return {@link PageData< MemberProjectInfoResultDTO>} + * @Author zhaoqifeng + * @Date 2022/7/27 9:43 + */ + PageData orgProjectDetailList(TokenDto tokenDto, OrgStatisticsFormDTO formDTO); + + /** + * 网格员项目相关统计 + * + * @Param tokenDto + * @Param formDTO + * @Return {@link PageData< MemberProjectInfoResultDTO>} + * @Author zhaoqifeng + * @Date 2022/7/27 9:44 + */ + PageData memberProjectInfoList(TokenDto tokenDto, OrgStatisticsFormDTO formDTO); } 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 86999e17bd..99318e966c 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 @@ -5,7 +5,6 @@ import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dingtalk.api.request.OapiRobotSendRequest; import com.epmet.commons.dynamic.datasource.annotation.DataSource; import com.epmet.commons.tools.constant.Constant; @@ -18,6 +17,7 @@ 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.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.redis.common.CustomerOrgRedis; @@ -27,11 +27,13 @@ import com.epmet.commons.tools.redis.common.bean.BuildingInfoCache; import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.EpmetRequestHolder; +import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.HttpClientManager; import com.epmet.commons.tools.utils.Result; import com.epmet.dataaggre.constant.DataSourceConstant; +import com.epmet.dataaggre.constant.OrgConstant; import com.epmet.dataaggre.dao.govorg.*; +import com.epmet.dataaggre.dto.datastats.result.SubAgencyProjectResultDTO; import com.epmet.dataaggre.dto.epmetuser.form.ResisByPolicyRulesFormDTO; import com.epmet.dataaggre.dto.epmetuser.result.ListStaffResultDTO; import com.epmet.dataaggre.dto.epmetuser.result.StaffRoleListResultDTO; @@ -41,7 +43,7 @@ import com.epmet.dataaggre.dto.govorg.form.*; import com.epmet.dataaggre.dto.govorg.result.*; import com.epmet.dataaggre.dto.resigroup.result.OrgInfoCommonDTO; import com.epmet.dataaggre.entity.govorg.CustomerAgencyEntity; -import com.epmet.dataaggre.entity.govorg.IcHouseEntity; +import com.epmet.dataaggre.entity.govorg.CustomerGridEntity; import com.epmet.dataaggre.excel.GridLivelyDetailExcel; import com.epmet.dataaggre.excel.GridLivelyExcel; import com.epmet.dataaggre.service.commonservice.AreaCodeService; @@ -49,11 +51,13 @@ import com.epmet.dataaggre.service.datastats.DataStatsService; import com.epmet.dataaggre.service.epmetuser.EpmetUserService; 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.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.feign.OssFeignClient; import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.fileupload.FileItem; @@ -66,6 +70,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.commons.CommonsMultipartFile; +import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -117,6 +122,8 @@ public class GovOrgServiceImpl implements GovOrgService { private IcHouseDao houseDao; @Autowired private IcNeighborhoodDao neighborhoodDao; + @Resource + private GovProjectService govProjectService; /** * @param staffId @@ -1130,4 +1137,186 @@ public class GovOrgServiceImpl implements GovOrgService { public List neighborhoodsByIds(List neighborhoodIds) { return neighborhoodDao.neighborhoodsByIds(neighborhoodIds); } + + /** + * 组织项目统计 + * + * @param tokenDto + * @param formDTO + * @Param tokenDto + * @Param formDTO + * @Return {@link PageData < MemberProjectInfoResultDTO>} + * @Author zhaoqifeng + * @Date 2022/7/27 9:43 + */ + @Override + public PageData orgProjectDetailList(TokenDto tokenDto, OrgStatisticsFormDTO formDTO) { + List resultList = new ArrayList<>(); + if (StringUtils.isBlank(formDTO.getAgencyId())) { + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + if (null == staffInfo) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败"); + } + formDTO.setAgencyId(staffInfo.getAgencyId()); + } + if (StringUtils.isEmpty(formDTO.getStartDate()) && StringUtils.isEmpty(formDTO.getEndDate())) { + //当前日期前一天 + String dateId = DateUtils.format(DateUtils.addDateDays(new Date(), NumConstant.ONE_NEG), DateUtils.DATE_PATTERN_YYYYMMDD); + formDTO.setEndDate(dateId); + } + CustomerAgencyEntity agencyEntity = customerAgencyDao.selectById(formDTO.getAgencyId()); + if (null == agencyEntity) { + return new PageData<>(Collections.emptyList(), NumConstant.ZERO); + } + PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()); + long total = 0; + if (OrgConstant.COMMUNITY.equals(agencyEntity.getLevel()) && NumConstant.ONE_STR.equals(formDTO.getType())) { + //获取网格列表 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(CustomerGridEntity::getCustomerId, tokenDto.getCustomerId()); + wrapper.eq(CustomerGridEntity::getPid, formDTO.getAgencyId()); + wrapper.last("ORDER BY CONVERT ( GRID_NAME USING gbk ) ASC"); + List gridList = customerGridDao.selectList(wrapper); + //拼装数据 + if (CollectionUtils.isNotEmpty(gridList)) { + //统计网格项目数 + Map projectMap = govProjectService.getGridProjectMap(formDTO); + //统计网格关闭项目数 + Map closedMap = govProjectService.getGridClosedProjectMap(formDTO); + //网格员统计 + Map memberMap = dataStatsService.getMemberMap(formDTO.getAgencyId()); + resultList = gridList.stream().map(grid -> { + OrgProjectDetailResultDTO dto = new OrgProjectDetailResultDTO(); + 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())); + } + if (memberMap.containsKey(grid.getId())) { + dto.setMemberCount(memberMap.get(grid.getId())); + dto.setProjectAve(dto.getProjectCount()/memberMap.get(grid.getId())); + dto.setClosedAve(dto.getClosedCount()/memberMap.get(grid.getId())); + } + return dto; + }).collect(Collectors.toList()); + } + //获取统计数据 + PageInfo pageInfo = new PageInfo<>(gridList); + total = pageInfo.getTotal(); + } else { + //获取组织列表 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(CustomerAgencyEntity::getCustomerId, tokenDto.getCustomerId()); + if (NumConstant.ZERO_STR.equals(formDTO.getType())) { + wrapper.eq(CustomerAgencyEntity::getId, formDTO.getAgencyId()); + } else { + wrapper.eq(CustomerAgencyEntity::getPid, formDTO.getAgencyId()); + } + wrapper.last("ORDER BY CONVERT ( ORGANIZATION_NAME USING gbk ) ASC"); + List agencyList = customerAgencyDao.selectList(wrapper); + //拼装数据 + if (CollectionUtils.isNotEmpty(agencyList)) { + //项目相关统计 + Map projectMap = dataStatsService.getAgencyProjectTotal(formDTO); + //网格员统计 + Map memberMap = epmetUserService.getMemberCount(tokenDto.getCustomerId()); + + resultList = agencyList.stream().map(agency -> { + OrgProjectDetailResultDTO dto = new OrgProjectDetailResultDTO(); + dto.setOrgId(agency.getId()); + dto.setOrgType(OrgConstant.AGENCY); + dto.setOrgName(agency.getOrganizationName()); + if (projectMap.containsKey(agency.getId())) { + dto.setProjectCount(projectMap.get(agency.getId()).getProjectTotal()); + dto.setClosedCount(projectMap.get(agency.getId()).getClosedProjectTotal()); + } + //获取当前组织的所有下级组织ID(包含本级) + List agencyIds = customerAgencyDao.getSubAgencyList(agency.getId()); + //将下级组织网格员数加起来 + int memberCount = agencyIds.stream().filter(memberMap::containsKey).mapToInt(memberMap::get).sum(); + dto.setMemberCount(memberCount); + if (memberCount != NumConstant.ZERO) { + dto.setProjectAve(dto.getProjectCount()/memberCount); + dto.setClosedAve(dto.getClosedCount()/memberCount); + } + return dto; + + }).collect(Collectors.toList()); + } + //获取统计数据 + PageInfo pageInfo = new PageInfo<>(agencyList); + total = pageInfo.getTotal(); + } + return new PageData<>(resultList, total); + } + + /** + * 网格员项目相关统计 + * + * @param tokenDto + * @param formDTO + * @Param tokenDto + * @Param formDTO + * @Return {@link PageData< MemberProjectInfoResultDTO>} + * @Author zhaoqifeng + * @Date 2022/7/27 9:44 + */ + @Override + public PageData memberProjectInfoList(TokenDto tokenDto, OrgStatisticsFormDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + PageData result; + if (StringUtils.isBlank(formDTO.getOrgId())) { + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + if (null == staffInfo) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取用户信息失败", "获取用户信息失败"); + } + formDTO.setOrgId(staffInfo.getAgencyId()); + formDTO.setOrgType(OrgConstant.AGENCY); + } + if (StringUtils.isEmpty(formDTO.getStartDate()) && StringUtils.isEmpty(formDTO.getEndDate())) { + //当前日期前一天 + String dateId = DateUtils.format(DateUtils.addDateDays(new Date(), NumConstant.ONE_NEG), DateUtils.DATE_PATTERN_YYYYMMDD); + formDTO.setEndDate(dateId); + } + if (OrgConstant.AGENCY.contains(formDTO.getOrgType())) { + //获取当前组织的所有下级组织ID(包含本级) + List agencyIds = customerAgencyDao.getSubAgencyList(formDTO.getOrgId()); + formDTO.setAgencyList(agencyIds); + //获取组织下的网格员 + result = epmetUserService.getMemberList(formDTO); + } else { + //获取网格下的网格员 + result = dataStatsService.getMemberList(formDTO); + } + if (CollectionUtils.isNotEmpty(result.getList())) { + //统计项目数 + Map projectMap = govProjectService.getMemberProjectMap(formDTO); + //统计关闭项目数 + 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())); + } + if (OrgConstant.AGENCY.contains(formDTO.getOrgType())) { + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(item.getOrgId()); + if (null != agencyInfo) { + item.setOrgName(agencyInfo.getOrganizationName()); + } + } else { + GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(item.getOrgId()); + if (null != gridInfo) { + item.setOrgName(gridInfo.getGridName()); + } + } + }); + } + return result; + } } 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 8e55c81ea8..988cf08e3b 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 @@ -2,13 +2,14 @@ package com.epmet.dataaggre.service.govproject; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO; +import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO; import com.epmet.dataaggre.dto.govproject.form.*; import com.epmet.dataaggre.dto.govproject.result.*; import com.epmet.dataaggre.entity.govproject.IcEventEntity; -import com.sun.org.apache.xpath.internal.operations.Bool; import java.util.LinkedList; import java.util.List; +import java.util.Map; /** * @Author zxc @@ -121,5 +122,36 @@ public interface GovProjectService { */ List searchIcEventEntities(String customerId, String staffOrgIds, String search, Boolean isDifficultPoint, Boolean isPage, Integer pageNo, Integer pageSize); - + /** + * 网格上报项目数 + * @Param formDTO + * @Return {@link Map< String, Integer>} + * @Author zhaoqifeng + * @Date 2022/7/28 9:29 + */ + Map getGridProjectMap(OrgStatisticsFormDTO formDTO); + /** + * 网格关闭项目数 + * @Param formDTO + * @Return {@link Map< String, Integer>} + * @Author zhaoqifeng + * @Date 2022/7/28 9:29 + */ + Map getGridClosedProjectMap(OrgStatisticsFormDTO formDTO); + /** + * 工作人员上报项目数 + * @Param formDTO + * @Return {@link Map< String, Integer>} + * @Author zhaoqifeng + * @Date 2022/7/28 9:28 + */ + Map getMemberProjectMap(OrgStatisticsFormDTO formDTO); + /** + * 工作人员关闭项目数 + * @Param formDTO + * @Return {@link Map< String, Integer>} + * @Author zhaoqifeng + * @Date 2022/7/28 9:29 + */ + Map getMemberClosedProjectMap(OrgStatisticsFormDTO 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 3306542979..cc15ad0628 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 @@ -26,6 +26,8 @@ import com.epmet.dataaggre.dto.datastats.result.FactAgencyProjectResultDTO; import com.epmet.dataaggre.dto.govissue.IssueProjectCategoryDictDTO; import com.epmet.dataaggre.dto.govissue.result.IssueInfoDTO; import com.epmet.dataaggre.dto.govissue.result.IssueListResultDTO; +import com.epmet.dataaggre.dto.govorg.form.OrgStatisticsFormDTO; +import com.epmet.dataaggre.dto.govorg.result.OrgCountDTO; import com.epmet.dataaggre.dto.govproject.ProjectDTO; import com.epmet.dataaggre.dto.govproject.ProjectRelatedPersonnelDTO; import com.epmet.dataaggre.dto.govproject.ResiEventDTO; @@ -798,6 +800,60 @@ public class GovProjectServiceImpl implements GovProjectService { return icEventDao.selectList(query); } + @Override + public Map getGridProjectMap(OrgStatisticsFormDTO formDTO) { + List list = projectDao.getGridProjectCount(formDTO); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyMap(); + } + return list.stream().collect(Collectors.toMap(OrgCountDTO::getOrgId, OrgCountDTO::getCount, (o1, o2) -> o1)); + } + + @Override + public Map getGridClosedProjectMap(OrgStatisticsFormDTO formDTO) { + List list = projectDao.getGridClosedProjectCount(formDTO); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyMap(); + } + return list.stream().collect(Collectors.toMap(OrgCountDTO::getOrgId, OrgCountDTO::getCount, (o1, o2) -> o1)); + } + + /** + * 工作人员上报项目数 + * + * @param formDTO + * @Param formDTO + * @Return {@link Map< String, Integer>} + * @Author zhaoqifeng + * @Date 2022/7/28 9:28 + */ + @Override + public Map getMemberProjectMap(OrgStatisticsFormDTO formDTO) { + List list = projectDao.getMemberProjectCount(formDTO); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyMap(); + } + return list.stream().collect(Collectors.toMap(OrgCountDTO::getOrgId, OrgCountDTO::getCount, (o1, o2) -> o1)); + } + + /** + * 工作人员关闭项目数 + * + * @param formDTO + * @Param formDTO + * @Return {@link Map< String, Integer>} + * @Author zhaoqifeng + * @Date 2022/7/28 9:29 + */ + @Override + public Map getMemberClosedProjectMap(OrgStatisticsFormDTO formDTO) { + List list = projectDao.getMemberProjectCount(formDTO); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyMap(); + } + return list.stream().collect(Collectors.toMap(OrgCountDTO::getOrgId, OrgCountDTO::getCount, (o1, o2) -> o1)); + } + /** * 构造事件查询 * @param customerId diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml index 330f564b25..ffee14d53f 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml @@ -1206,4 +1206,55 @@ GROUP BY grid_id, date_id + + + + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffRoleDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffRoleDao.xml index cbe39ede21..894a034659 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffRoleDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffRoleDao.xml @@ -93,4 +93,46 @@ AND b.STAFF_ID != #{userId} + + \ 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 e5594fdb5e..a77f1f22e0 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 @@ -298,5 +298,15 @@ AND pid = #{agencyId} ORDER BY created_time ASC + 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 d51eb40628..8abc47d1a5 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 @@ -426,5 +426,87 @@ GROUP BY LEFT(c.CATEGORY_CODE,#{categoryOneLength}) ORDER BY total DESC + + + + diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java index 80a0733c5c..e62100cf8d 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java @@ -193,9 +193,11 @@ public class StaffServiceImpl implements StaffService { } return new Result().error(EpmetErrorCode.STAFF_EDIT_FAILED.getCode(), EpmetErrorCode.STAFF_EDIT_FAILED.getMsg()); } - Result roleUserAccess = govAccessFeignClient.roleUser(new RoleUserFormDTO(fromDTO.getNewRoles(), fromDTO.getStaffId(),fromDTO.getCustomerId())); - if (!roleUserAccess.success()){ - throw new EpmetException("save data to gov-role-user failure"); + if (tokenDto.getClient().equals("web")){ + Result roleUserAccess = govAccessFeignClient.roleUser(new RoleUserFormDTO(fromDTO.getNewRoles(), fromDTO.getStaffId(),fromDTO.getCustomerId())); + if (!roleUserAccess.success()){ + throw new EpmetException("save data to gov-role-user failure"); + } } //2021.8.24 sun 人员信息编辑时删除工作人员的缓存信息 CustomerStaffRedis.delStaffInfoFormCache(fromDTO.getCustomerId(), fromDTO.getStaffId());