wangxianzhang 3 years ago
parent
commit
3497da5387
  1. 3
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java
  2. 25
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/OrgStatisticsFormDTO.java
  3. 24
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/MemberProjectInfoResultDTO.java
  4. 17
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/OrgCountDTO.java
  5. 25
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/OrgProjectDetailResultDTO.java
  6. 126
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/GovOrgController.java
  7. 9
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/datastats/DataStatsDao.java
  8. 4
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffRoleDao.java
  9. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govorg/CustomerAgencyDao.java
  10. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/govproject/ProjectDao.java
  11. 40
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/MemberProjectInfoExcel.java
  12. 47
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/excel/OrgProjectDetailExcel.java
  13. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/DataStatsService.java
  14. 157
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/datastats/impl/DataStatsServiceImpl.java
  15. 24
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/EpmetUserService.java
  16. 43
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/epmetuser/impl/EpmetUserServiceImpl.java
  17. 26
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/GovOrgService.java
  18. 195
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govorg/impl/GovOrgServiceImpl.java
  19. 36
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/GovProjectService.java
  20. 56
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/govproject/impl/GovProjectServiceImpl.java
  21. 51
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml
  22. 42
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffRoleDao.xml
  23. 10
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govorg/CustomerAgencyDao.xml
  24. 82
      epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/govproject/ProjectDao.xml
  25. 8
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/StaffServiceImpl.java

3
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";

25
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<String> agencyList;
}

24
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;
}

17
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;
}

25
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;
}

126
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<BuildingInfoCache>().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<PageData<OrgProjectDetailResultDTO>> orgProjectDetailList(@LoginUser TokenDto tokenDto, @RequestBody OrgStatisticsFormDTO formDTO) {
return new Result<PageData<OrgProjectDetailResultDTO>>().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<PageData<MemberProjectInfoResultDTO>> memberProjectInfoList(@LoginUser TokenDto tokenDto, @RequestBody OrgStatisticsFormDTO formDTO) {
return new Result<PageData<MemberProjectInfoResultDTO>>().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<OrgProjectDetailResultDTO> page = null;
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
OrgProjectDetailExcel sum = new OrgProjectDetailExcel();
do {
page = govOrgService.orgProjectDetailList(tokenDto, formDTO);
List<OrgProjectDetailExcel> 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<OrgProjectDetailExcel> 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<Object> 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<MemberProjectInfoResultDTO> page = null;
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
do {
page = govOrgService.memberProjectInfoList(tokenDto, formDTO);
List<MemberProjectInfoExcel> 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<Object> 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();
}
}
}
}

9
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<GridDateIdResultDTO> getGridProejctToProjectMain(GridLivelyFormDTO formDTO);
List<SubAgencyProjectResultDTO> getAgencyProjectTotal(OrgStatisticsFormDTO formDTO);
List<OrgCountDTO> getMemberCount(@Param("agencyId")String agencyId, @Param("dateId") String dateId);
List<MemberProjectInfoResultDTO> getMemberList(@Param("gridId") String gridId, @Param("dateId") String dateId);
}

4
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<StaffRoleEntity> {
*/
List<StaffRoleEntity> selectStaffByRole(@Param("customerId") String customerId, @Param("roleId") String roleId, @Param("userId") String userId);
List<OrgCountDTO> getMemberCount(@Param("customerId") String customerId);
List<MemberProjectInfoResultDTO> getMemberList(@Param("customerId") String customerId, @Param("orgIds") List<String> orgIds);
}

2
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<CustomerAgencyEntity> {
*/
LinkedList<GridLivelyResultDTO> subAgencyListAndGridSumNum(@Param("agencyId") String agencyId);
List<String> getSubAgencyList(@Param("agencyId") String agencyId);
}

7
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<ProjectEntity> {
* @author sun
*/
List<ResiEventReportOrgDTO> getEventOrgList(@Param("eventIds") List<String> eventIds);
List<OrgCountDTO> getGridProjectCount(OrgStatisticsFormDTO formDTO);
List<OrgCountDTO> getGridClosedProjectCount(OrgStatisticsFormDTO formDTO);
List<OrgCountDTO> getMemberProjectCount(OrgStatisticsFormDTO formDTO);
List<OrgCountDTO> getMemberClosedProjectCount(OrgStatisticsFormDTO formDTO);
}

40
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;
}

47
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;
}

10
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<GridDateIdResultDTO> getGridProejctToProjectMain(GridLivelyFormDTO formDTO);
Map<String, SubAgencyProjectResultDTO> getAgencyProjectTotal(OrgStatisticsFormDTO formDTO);
Map<String, Integer> getMemberMap(String agencyId);
PageData<MemberProjectInfoResultDTO> getMemberList(OrgStatisticsFormDTO formDTO);
}

157
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<GridDateIdResultDTO> getGridProejctToProjectMain(GridLivelyFormDTO formDTO) {
return dataStatsDao.getGridProejctToProjectMain(formDTO);
}
@Override
public Map<String, SubAgencyProjectResultDTO> getAgencyProjectTotal(OrgStatisticsFormDTO formDTO) {
List<SubAgencyProjectResultDTO> 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<String, Integer> getMemberMap(String agencyId) {
//当前日期前一天
String dateId = DateUtils.format(DateUtils.addDateDays(new Date(), NumConstant.ONE_NEG), DateUtils.DATE_PATTERN_YYYYMMDD);
List<OrgCountDTO> 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<MemberProjectInfoResultDTO> 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<MemberProjectInfoResultDTO> list = dataStatsDao.getMemberList(formDTO.getOrgId(), dateId);
PageInfo<MemberProjectInfoResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
}

24
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<ResisByPolicyRulesFormDTO.ResiRule> resiRule, List<String> houseIds);
/**
* 统计各组织下网格员数量
*
* @Param customerId
* @Return {@link Map< String, Integer>}
* @Author zhaoqifeng
* @Date 2022/7/27 14:58
*/
Map<String, Integer> getMemberCount(String customerId);
/**
* 获取组织下网格员列表
*
* @Param agencyId
* @Return {@link PageData< MemberProjectInfoResultDTO>}
* @Author zhaoqifeng
* @Date 2022/7/27 17:32
*/
PageData<MemberProjectInfoResultDTO> getMemberList(OrgStatisticsFormDTO formDTO);
}

43
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<ResisByPolicyRulesFormDTO.ResiRule> resiRule, List<String> 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<String, Integer> getMemberCount(String customerId) {
List<OrgCountDTO> 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<MemberProjectInfoResultDTO> getMemberList(OrgStatisticsFormDTO formDTO) {
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize());
List<MemberProjectInfoResultDTO> list = staffRoleDao.getMemberList(formDTO.getCustomerId(), formDTO.getAgencyList());
PageInfo<MemberProjectInfoResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
}

26
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<ResisByPolicyRulesFormDTO.StatRule> statRule, Integer pageNo, Integer pageSize);
List<IcNeighborHoodDTO> neighborhoodsByIds(List<String> neighborhoodIds);
/**
* 组织项目统计
*
* @Param tokenDto
* @Param formDTO
* @Return {@link PageData< MemberProjectInfoResultDTO>}
* @Author zhaoqifeng
* @Date 2022/7/27 9:43
*/
PageData<OrgProjectDetailResultDTO> orgProjectDetailList(TokenDto tokenDto, OrgStatisticsFormDTO formDTO);
/**
* 网格员项目相关统计
*
* @Param tokenDto
* @Param formDTO
* @Return {@link PageData< MemberProjectInfoResultDTO>}
* @Author zhaoqifeng
* @Date 2022/7/27 9:44
*/
PageData<MemberProjectInfoResultDTO> memberProjectInfoList(TokenDto tokenDto, OrgStatisticsFormDTO formDTO);
}

195
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<IcNeighborHoodDTO> neighborhoodsByIds(List<String> 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<OrgProjectDetailResultDTO> orgProjectDetailList(TokenDto tokenDto, OrgStatisticsFormDTO formDTO) {
List<OrgProjectDetailResultDTO> 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<CustomerGridEntity> 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<CustomerGridEntity> gridList = customerGridDao.selectList(wrapper);
//拼装数据
if (CollectionUtils.isNotEmpty(gridList)) {
//统计网格项目数
Map<String, Integer> projectMap = govProjectService.getGridProjectMap(formDTO);
//统计网格关闭项目数
Map<String, Integer> closedMap = govProjectService.getGridClosedProjectMap(formDTO);
//网格员统计
Map<String, Integer> 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<CustomerGridEntity> pageInfo = new PageInfo<>(gridList);
total = pageInfo.getTotal();
} else {
//获取组织列表
LambdaQueryWrapper<CustomerAgencyEntity> 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<CustomerAgencyEntity> agencyList = customerAgencyDao.selectList(wrapper);
//拼装数据
if (CollectionUtils.isNotEmpty(agencyList)) {
//项目相关统计
Map<String, SubAgencyProjectResultDTO> projectMap = dataStatsService.getAgencyProjectTotal(formDTO);
//网格员统计
Map<String, Integer> 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<String> 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<CustomerAgencyEntity> 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<MemberProjectInfoResultDTO> memberProjectInfoList(TokenDto tokenDto, OrgStatisticsFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
PageData<MemberProjectInfoResultDTO> 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<String> agencyIds = customerAgencyDao.getSubAgencyList(formDTO.getOrgId());
formDTO.setAgencyList(agencyIds);
//获取组织下的网格员
result = epmetUserService.getMemberList(formDTO);
} else {
//获取网格下的网格员
result = dataStatsService.getMemberList(formDTO);
}
if (CollectionUtils.isNotEmpty(result.getList())) {
//统计项目数
Map<String, Integer> projectMap = govProjectService.getMemberProjectMap(formDTO);
//统计关闭项目数
Map<String, Integer> 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;
}
}

36
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<IcEventEntity> 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<String, Integer> getGridProjectMap(OrgStatisticsFormDTO formDTO);
/**
* 网格关闭项目数
* @Param formDTO
* @Return {@link Map< String, Integer>}
* @Author zhaoqifeng
* @Date 2022/7/28 9:29
*/
Map<String, Integer> getGridClosedProjectMap(OrgStatisticsFormDTO formDTO);
/**
* 工作人员上报项目数
* @Param formDTO
* @Return {@link Map< String, Integer>}
* @Author zhaoqifeng
* @Date 2022/7/28 9:28
*/
Map<String, Integer> getMemberProjectMap(OrgStatisticsFormDTO formDTO);
/**
* 工作人员关闭项目数
* @Param formDTO
* @Return {@link Map< String, Integer>}
* @Author zhaoqifeng
* @Date 2022/7/28 9:29
*/
Map<String, Integer> getMemberClosedProjectMap(OrgStatisticsFormDTO formDTO);
}

56
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<String, Integer> getGridProjectMap(OrgStatisticsFormDTO formDTO) {
List<OrgCountDTO> 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<String, Integer> getGridClosedProjectMap(OrgStatisticsFormDTO formDTO) {
List<OrgCountDTO> 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<String, Integer> getMemberProjectMap(OrgStatisticsFormDTO formDTO) {
List<OrgCountDTO> 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<String, Integer> getMemberClosedProjectMap(OrgStatisticsFormDTO formDTO) {
List<OrgCountDTO> 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

51
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/datastats/DatsStatsDao.xml

@ -1206,4 +1206,55 @@
GROUP BY grid_id, date_id
</select>
<select id="getAgencyProjectTotal" resultType="com.epmet.dataaggre.dto.datastats.result.SubAgencyProjectResultDTO">
SELECT
AGENCY_ID,
SUM(PROJECT_INCR) AS "projectTotal",
SUM(CLOSED_INCR) AS "closedProjectTotal"
FROM
fact_agency_project_daily
WHERE DEL_FLAG = '0'
<if test="type == '0'">
AND AGENCY_ID = #{agencyId}
</if>
<if test="type == '1'">
AND PARENT_ID = #{agencyId}
</if>
<if test="null != startDate and '' != startDate">
AND DATE_ID <![CDATA[ >= ]]> #{startDate}
</if>
<if test="null != endDate and '' != endDate">
AND DATE_ID <![CDATA[ <= ]]> #{endDate}
</if>
GROUP BY AGENCY_ID
</select>
<select id="getMemberCount" resultType="com.epmet.dataaggre.dto.govorg.result.OrgCountDTO">
SELECT
GRID_ID AS "orgId",
COUNT( STAFF_ID ) AS "count"
FROM
fact_grid_member_statistics_daily
WHERE
DEL_FLAG = '0'
AND AGENCY_ID = #{agencyId}
AND DATE_ID = #{dateId}
GROUP BY
GRID_ID
</select>
<select id="getMemberList" resultType="com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO">
SELECT
STAFF_ID,
STAFF_NAME,
GRID_ID AS "orgId"
FROM
fact_grid_member_statistics_daily
WHERE
DEL_FLAG = '0'
AND GRID_ID = #{gridId}
AND DATE_ID = #{dateId}
ORDER BY
CONVERT ( STAFF_NAME USING gbk )
</select>
</mapper>

42
epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffRoleDao.xml

@ -93,4 +93,46 @@
AND b.STAFF_ID != #{userId}
</if>
</select>
<select id="getMemberCount" resultType="com.epmet.dataaggre.dto.govorg.result.OrgCountDTO">
SELECT
ORG_ID AS "orgId",
COUNT( a.STAFF_ID ) AS "count"
FROM
staff_role a
INNER JOIN gov_staff_role b ON a.ROLE_ID = b.ID
AND b.DEL_FLAG = '0'
AND b.ROLE_KEY = 'grid_member'
AND b.CUSTOMER_ID = #{customerId}
INNER JOIN customer_staff c ON c.USER_ID = a.STAFF_ID
AND c.DEL_FLAG = '0'
AND c.CUSTOMER_ID = #{customerId}
WHERE
a.DEL_FLAG = '0'
AND a.CUSTOMER_ID = #{customerId}
GROUP BY
ORG_ID
</select>
<select id="getMemberList" resultType="com.epmet.dataaggre.dto.govorg.result.MemberProjectInfoResultDTO">
SELECT
a.STAFF_ID ,
c.REAL_NAME AS "staffName",
a.ORG_ID
FROM
staff_role a
INNER JOIN gov_staff_role b ON a.ROLE_ID = b.ID
AND b.DEL_FLAG = '0'
AND b.ROLE_KEY = 'grid_member'
AND b.CUSTOMER_ID = #{customerId}
INNER JOIN customer_staff c ON c.USER_ID = a.STAFF_ID
AND c.DEL_FLAG = '0'
AND c.CUSTOMER_ID = #{customerId}
WHERE
a.DEL_FLAG = '0'
AND a.CUSTOMER_ID = #{customerId}
<foreach collection="orgIds" item="id" open="AND a.ORG_ID IN (" separator="," close=")">
#{id}
</foreach>
ORDER BY
CONVERT ( c.REAL_NAME USING gbk )
</select>
</mapper>

10
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
</select>
<select id="getSubAgencyList" resultType="java.lang.String">
SELECT
ID
FROM
customer_agency
WHERE
DEL_FLAG = '0'
AND (ID = #{agencyId}
OR PIDS LIKE CONCAT('%', #{agencyId}, '%'))
</select>
</mapper>

82
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
</select>
<select id="getGridProjectCount" resultType="com.epmet.dataaggre.dto.govorg.result.OrgCountDTO">
SELECT
GRID_ID AS "orgId",
COUNT( ID ) AS "count"
FROM
project
WHERE
DEL_FLAG = '0'
AND AGENCY_ID = #{agencyId}
<if test="null != startDate and '' != startDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ >= ]]> #{startDate}
</if>
<if test="null != endDate and '' != endDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ <= ]]> #{endDate}
</if>
GROUP BY
GRID_ID
</select>
<select id="getGridClosedProjectCount" resultType="com.epmet.dataaggre.dto.govorg.result.OrgCountDTO">
SELECT
GRID_ID AS "orgId",
COUNT( ID ) AS "count"
FROM
project_process
WHERE
DEL_FLAG = '0'
AND AGENCY_ID = #{agencyId}
AND OPERATION = 'close'
AND GRID_ID IS NOT NULL
AND GRID_ID != ''
<if test="null != startDate and '' != startDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ >= ]]> #{startDate}
</if>
<if test="null != endDate and '' != endDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ <= ]]> #{endDate}
</if>
GROUP BY
GRID_ID
</select>
<select id="getMemberProjectCount" resultType="com.epmet.dataaggre.dto.govorg.result.OrgCountDTO">
SELECT
CREATED_BY AS "orgId",
COUNT( ID ) AS "count"
FROM
project
WHERE
DEL_FLAG = '0'
AND CUSTOMER_ID = #{customerId}
<if test="'grid' == orgType">
AND GRID_ID = #{orgId}
</if>
<if test="null != startDate and '' != startDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ >= ]]> #{startDate}
</if>
<if test="null != endDate and '' != endDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ <= ]]> #{endDate}
</if>
GROUP BY
CREATED_BY
</select>
<select id="getMemberClosedProjectCount" resultType="com.epmet.dataaggre.dto.govorg.result.OrgCountDTO">
SELECT
STAFF_ID AS "orgId",
COUNT( ID ) AS "count"
FROM
project_process
WHERE
DEL_FLAG = '0'
AND CUSTOMER_ID = #{customerId}
AND OPERATION = 'close'
<if test="'grid' == orgType">
AND GRID_ID = #{orgId}
</if>
<if test="null != startDate and '' != startDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ >= ]]> #{startDate}
</if>
<if test="null != endDate and '' != endDate">
AND DATE_FORMAT(CREATED_TIME,"%Y%m%d") <![CDATA[ <= ]]> #{endDate}
</if>
GROUP BY
STAFF_ID
</select>
</mapper>

8
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());

Loading…
Cancel
Save