diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java index fd52f94968..bcbded2bd6 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java @@ -440,6 +440,28 @@ public class RedisKeys { return rootPrefix.concat("thirdplatform:accesstoken:").concat(platformId); } + /** + * @Description 第三方平台信息key + * @param platformId + * @return java.lang.String + * @author wxz + * @date 2021.08.31 14:44:35 + */ + public static String getThirdPlatformInfoKey(String platformId) { + return rootPrefix.concat("thirdplatform:info:").concat(platformId); + } + + /** + * @Description 第三方平台操作urlkey + * @param platformId + * @return java.lang.String + * @author wxz + * @date 2021.08.31 15:15:15 + */ + public static String getThirdPlatformActionUrlKey(String platformId) { + return rootPrefix.concat("thirdplatform:actions:").concat(platformId); + } + /** * @return 设置组员已读、未读标识 * @param source :act notice diff --git a/epmet-gateway/src/main/resources/bootstrap.yml b/epmet-gateway/src/main/resources/bootstrap.yml index 23c16efb82..4f65034c7d 100644 --- a/epmet-gateway/src/main/resources/bootstrap.yml +++ b/epmet-gateway/src/main/resources/bootstrap.yml @@ -481,6 +481,7 @@ epmet: - /message/template/** - /data/aggregator/project/projectdistribution - /data/aggregator/epmetuser/open-staffdetail + - /data/aggregator/epmetuser/gridmemberpatrollist - /data/aggregator/pub/** #stats external包下 公共的类只外部暴露方法 纯外部使用的 暴漏整个 - /data/stats/statsuser/gm-uploadevent @@ -494,6 +495,7 @@ epmet: - /data/stats/project/** - /data/stats/basereport/** - /data/stats/governance/** + - /third/private-epmet/push-component-access-token # 对外开放接口认证白名单 diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/GridMemberPatrolListFormDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/GridMemberPatrolListFormDTO.java new file mode 100644 index 0000000000..a7ffd9dc56 --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/form/GridMemberPatrolListFormDTO.java @@ -0,0 +1,43 @@ +package com.epmet.dataaggre.dto.epmetuser.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * @Description 对外接口--网格员排名-巡查记录-接口入参 + * @Auth sun + */ +@Data +public class GridMemberPatrolListFormDTO implements Serializable { + + private static final long serialVersionUID = -3381286960911634231L; + /** + * 组织id + */ + @NotBlank(message = "组织Id不能为空", groups = GridMemberPatrolListFormDTO.Member.class) + private String agencyId; + /** + * 维度Id(月:202108;年:2021) + */ + @NotBlank(message = "维度Id不能为空", groups = GridMemberPatrolListFormDTO.Member.class) + private String dimId; + /** + * 维度类型(月:month;年:year) + */ + @NotBlank(message = "维度类型不能为空", groups = GridMemberPatrolListFormDTO.Member.class) + private String dimType; + /** + * 排序字段(上报事件:project巡查时长:patrolTime处理件数:dealEvent) + */ + private String sort = "project"; + //按条件查询数据的最大日维度Id + private String dateId; + + public interface Member extends CustomerClientShowGroup {} +} diff --git a/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/GridMemberPatrolListResultDTO.java b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/GridMemberPatrolListResultDTO.java new file mode 100644 index 0000000000..9a2035680d --- /dev/null +++ b/epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/epmetuser/result/GridMemberPatrolListResultDTO.java @@ -0,0 +1,31 @@ +package com.epmet.dataaggre.dto.epmetuser.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 对外接口--网格员排名-巡查记录-接口返参 + * @Auth sun + */ +@Data +public class GridMemberPatrolListResultDTO implements Serializable { + private static final long serialVersionUID = 7129564173128153335L; + + //工作人员用户id + private String staffId = ""; + //真名 + private String staffName = ""; + //上报事件(项目)数 + private Integer reportProjectCount = 0; + //巡查总时长【单位:分钟】 + private Integer patrolTotalTime = 0; + //处理件数(议题转项目数+议题关闭数+项目响应数+项目吹哨数+项目结案数) + private Integer eventCount = 0; + @JsonIgnore + private String dateId; + @JsonIgnore + private Integer timeNum; + +} diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java index 25cbe6a146..ad2d3bebf4 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/EpmetUserController.java @@ -270,4 +270,18 @@ public class EpmetUserController { ExcelUtils.exportExcelToTarget(response, null, resultDTOS, StaffPatrollExcel.class); } + /** + * @Param formDTO + * @Description 对外接口--网格员排名-巡查记录 + * @author sun + */ + @PostMapping("gridmemberpatrollist") + public Result> gridMemberPatrolList(@RequestBody GridMemberPatrolListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, GridMemberPatrolListFormDTO.Member.class); + if(!"month".equals(formDTO.getDimType())&&!"year".equals(formDTO.getDimType())){ + throw new RenException("参数错误,维度类型参数值错误"); + } + return new Result>().ok(epmetUserService.gridMemberPatrolList(formDTO)); + } + } 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 e9772bf321..9cf5a3a6e1 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 @@ -21,6 +21,8 @@ import com.epmet.dataaggre.dto.datastats.FactGroupActDailyDTO; import com.epmet.dataaggre.dto.datastats.form.SubAgencyFormDTO; import com.epmet.dataaggre.dto.datastats.form.SubGridFormDTO; import com.epmet.dataaggre.dto.datastats.result.*; +import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; +import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO; import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; import com.epmet.dataaggre.entity.datastats.DimAgencyEntity; @@ -300,4 +302,10 @@ public interface DataStatsDao { * @return */ TotalAndIncrResultDTO getAgencySumGroup(@Param("agencyList") List agencyList, @Param("dateId") String dateId); + + /** + * @Description 查询当前组织及下级所有网格员维度对应最大dated数据 + * @author sun + */ + List selectGirdMemberPatrol(GridMemberPatrolListFormDTO formDTO); } diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java index 36385a7cbd..a18928719c 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/dao/epmetuser/StaffPatrolRecordDao.java @@ -19,6 +19,7 @@ package com.epmet.dataaggre.dao.epmetuser; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dataaggre.dto.epmetuser.form.GridMemberPatrolListFormDTO; import com.epmet.dataaggre.dto.epmetuser.form.StaffListFormDTO; import com.epmet.dataaggre.dto.epmetuser.result.StaffListResultDTO; import com.epmet.dataaggre.entity.epmetuser.StaffPatrolRecordEntity; @@ -53,4 +54,10 @@ public interface StaffPatrolRecordDao extends BaseDao { * @author sun */ StaffListResultDTO selectPersonalPatrolList(@Param("staffId") String staffId); + + /** + * @Description 按维度汇总当前组织及下级网格员巡查数据 + * @author sun + */ + List gridMemberPatrol(GridMemberPatrolListFormDTO formDTO); } 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 8d0cb5fa76..d4756648a0 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 @@ -3,6 +3,8 @@ package com.epmet.dataaggre.service.datastats; 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.form.GridMemberPatrolListFormDTO; +import com.epmet.dataaggre.dto.epmetuser.result.GridMemberPatrolListResultDTO; import com.epmet.dataaggre.dto.govorg.result.GridMemberDataAnalysisResultDTO; import com.epmet.dataaggre.dto.resigroup.ActCategoryDictDTO; import com.epmet.dataaggre.dto.resigroup.result.GroupActRankDetailDTO; @@ -221,4 +223,10 @@ public interface DataStatsService { * @date 2021/8/12 2:23 下午 */ UserAndGroupTotalResultDTO getUserAndGroupTotal(BaseDataFormDTO formDTO); + + /** + * @Description 查询当前组织及下级所有网格员维度对应最大dated数据 + * @author sun + */ + List getGirdMemberPatrol(GridMemberPatrolListFormDTO 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 6a8896618d..748ba3cf82 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,5 +1,6 @@ package com.epmet.dataaggre.service.datastats.impl; + 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.constant.StrConstant; @@ -12,7 +13,9 @@ 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.result.PatrolDailySumResult; + 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.ScreenCustomerAgencyDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenCustomerGridDTO; import com.epmet.dataaggre.dto.evaluationindex.ScreenGovernRankDataDailyDTO; @@ -1486,27 +1489,22 @@ public class DataStatsServiceImpl implements DataStatsService { formDTO.setDateId(format.format(yesterday)); } String startDate = null; - String actulStartDate = null; - String endDate = null; + String endDate = formDTO.getDateId(); Date dateIdDate = DateUtils.parse(formDTO.getDateId(), DateUtils.DATE_PATTERN_YYYYMMDD); boolean isYesterday = DateUtils.getBeforeNDay(1,DateUtils.DATE_PATTERN_YYYYMMDD).equals(formDTO.getDateId()); switch (formDTO.getType()){ case "yesterday": - startDate = DateUtils.getBeforeNDay(formDTO.getDateId(),1); + startDate = formDTO.getDateId(); endDate = formDTO.getDateId(); - actulStartDate = formDTO.getDateId(); break; case "thisWeek": - actulStartDate = DateUtils.getWeekStart(formDTO.getDateId()); - startDate = DateUtils.getBeforeNDay(actulStartDate,1); - DateUtils.format(DateUtils.addDateDays(yesterday, -1),DateUtils.DATE_PATTERN_YYYYMMDD); + startDate = DateUtils.getWeekStart(formDTO.getDateId()); if (!isYesterday){ endDate = DateUtils.getWeekEnd(formDTO.getDateId()); } break; case "thisMonth": - actulStartDate = DateUtils.format(DateUtils.getMonthStart(dateIdDate),DateUtils.DATE_PATTERN_YYYYMMDD); - startDate = DateUtils.getBeforeNDay(actulStartDate,1); + startDate = DateUtils.format(DateUtils.getMonthStart(dateIdDate),DateUtils.DATE_PATTERN_YYYYMMDD); if (!isYesterday) { endDate = DateUtils.format(DateUtils.getMonthEnd(dateIdDate), DateUtils.DATE_PATTERN_YYYYMMDD); } @@ -1516,6 +1514,7 @@ public class DataStatsServiceImpl implements DataStatsService { } formDTO.setStartDateId(startDate); formDTO.setEndDateId(endDate); + log.info("getSubWorkFact do select param:{}", JSON.toJSONString(formDTO)); List result = new ArrayList<>(); //如果是社区 则下级是网格 查询网格的数据 if (OrgLevelEnum.COMMUNITY.getCode().equals(formDTO.getAgencyLevel())){ @@ -1541,7 +1540,7 @@ public class DataStatsServiceImpl implements DataStatsService { Map closeProjectStartMap = closeProjectStart.stream().collect(Collectors.toMap(SubGridProjectResultDTO::getGridId, SubGridProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1)); Map closeProjectEndMap = closeProjectEnd.stream().collect(Collectors.toMap(SubGridProjectResultDTO::getGridId, SubGridProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1)); //巡查次数和时间 - List patrolList = statsStaffPatrolRecordDailyService.getPatrolSumList(gridIdList,actulStartDate,formDTO.getEndDateId()); + List patrolList = statsStaffPatrolRecordDailyService.getPatrolSumList(gridIdList,formDTO.getStartDateId(),formDTO.getEndDateId()); Map patrolListMap = patrolList.stream().collect(Collectors.toMap(PatrolDailySumResult::getFullAgencyId, o -> o, (o1, o2) -> o1)); subAgencyList.forEach(agency->{ @@ -1582,7 +1581,7 @@ public class DataStatsServiceImpl implements DataStatsService { Map closeProjectEndMap = closeProjectEnd.stream().collect(Collectors.toMap(SubAgencyProjectResultDTO::getAgencyId, SubAgencyProjectResultDTO::getClosedProjectTotal, (o1, o2) -> o1)); //巡查次数和时间 List agencyFullIds = subAgencyList.stream().map(o -> o.getPids().concat(StrConstant.COLON).concat(o.getAgencyId())).collect(Collectors.toList()); - List patrolList = statsStaffPatrolRecordDailyService.getPatrolSumList(agencyFullIds,actulStartDate,formDTO.getEndDateId()); + List patrolList = statsStaffPatrolRecordDailyService.getPatrolSumList(agencyFullIds,formDTO.getStartDateId(),formDTO.getEndDateId()); Map patrolListMap = patrolList.stream().collect(Collectors.toMap(PatrolDailySumResult::getFullAgencyId, o -> o, (o1, o2) -> o1)); subAgencyList.forEach(agency->{ @@ -1600,7 +1599,9 @@ public class DataStatsServiceImpl implements DataStatsService { }); } - List newResult = result.stream().sorted(Comparator.comparing(o -> o.getTopicToIssueTotal() + o.getIssueToProjectTotal() + o.getClosedProjectTotal() + o.getPatrolTotal())).collect(Collectors.toList()); + List newResult = result.stream().sorted(Comparator.comparing(o -> o.getTopicToIssueTotal() + o.getIssueToProjectTotal() + o.getClosedProjectTotal() + o.getPatrolTotal())) + .collect(Collectors.toList()); + Collections.reverse(newResult); return newResult; } @@ -1830,4 +1831,13 @@ public class DataStatsServiceImpl implements DataStatsService { return result; } + /** + * @Description 查询当前组织及下级所有网格员维度对应最大dated数据 + * @author sun + */ + @Override + public List getGirdMemberPatrol(GridMemberPatrolListFormDTO formDTO) { + return dataStatsDao.selectGirdMemberPatrol(formDTO); + } + } 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 dad8570062..5f0a73ad1e 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 @@ -2,6 +2,7 @@ package com.epmet.dataaggre.service.epmetuser; import com.epmet.dataaggre.dto.epmetuser.CustomerStaffDTO; import com.epmet.dataaggre.dto.epmetuser.form.*; +import com.epmet.dataaggre.dto.epmetuser.form.*; import com.epmet.dataaggre.dto.epmetuser.result.*; import com.epmet.dataaggre.dto.govorg.form.OrgStaffListFormDTO; import com.epmet.dataaggre.dto.govorg.form.StaffDetailV2FormDTO; @@ -97,6 +98,13 @@ public interface EpmetUserService { */ UserEventLogoResultDTO mentionMeEvent(String userId); + /** + * @Param formDTO + * @Description 对外接口--网格员排名-巡查记录 + * @author sun + */ + List gridMemberPatrolList(GridMemberPatrolListFormDTO formDTO); + /** * @Param formDTO * @Description 通讯录】姓名检索工作人员 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 b53313b3e7..92a02290bd 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 @@ -29,6 +29,7 @@ import com.epmet.dataaggre.dto.govorg.result.StaffOrgRelationResultDTO; import com.epmet.dataaggre.entity.epmetuser.CustomerStaffEntity; import com.epmet.dataaggre.entity.epmetuser.GovStaffRoleEntity; import com.epmet.dataaggre.entity.epmetuser.ResiUserBadgeEntity; +import com.epmet.dataaggre.service.datastats.DataStatsService; import com.epmet.dataaggre.entity.epmetuser.StaffRoleEntity; import com.epmet.dataaggre.service.epmetuser.EpmetUserService; import com.epmet.dataaggre.service.epmetuser.StaffPatrolDetailService; @@ -74,6 +75,8 @@ public class EpmetUserServiceImpl implements EpmetUserService { private ResiUserBadgeDao resiUserBadgeDao; @Autowired private GovProjectService govProjectService; + @Autowired + private DataStatsService dataStatsService; @Resource private GovStaffRoleDao govStaffRoleDao; @@ -439,6 +442,47 @@ public class EpmetUserServiceImpl implements EpmetUserService { return resultDTO; } + /** + * @Param formDTO + * @Description 对外接口--网格员排名-巡查记录 + * @author sun + */ + @Override + public List gridMemberPatrolList(GridMemberPatrolListFormDTO formDTO) { + //1.查询当前组织及下级所有网格员维度对应最大dated数据【例查询2021年8月数据,则是查询8月对应的最大daeId那天的网格员数据】 + List resultList = dataStatsService.getGirdMemberPatrol(formDTO); + if (CollectionUtils.isEmpty(resultList)) { + return new ArrayList<>(); + } + + //2.按维度汇总当前组织及下级网格员巡查数据 + //【如果查询当前月或本年度数据,则需要排除最大dateId的数据,因为上边查的统计数据只有t-1的,巡查数据是t的,避免多计算了当天的巡查项目数和时长数】 + formDTO.setDateId(resultList.get(0).getDateId()); + List patrolList = staffPatrolRecordDao.gridMemberPatrol(formDTO); + + //3.以统计数据为准封装结果数据 + resultList.forEach(re -> patrolList.stream().filter(l -> re.getStaffId().equals(l.getStaffId())).forEach(s -> { + re.setReportProjectCount(s.getReportProjectCount()); + re.setPatrolTotalTime((s.getTimeNum() > NumConstant.ZERO ? s.getTimeNum() / 60 : 0)); + })); + + //4.按排序字段排序并返回 + Collections.sort(resultList, new Comparator() { + @Override + public int compare(GridMemberPatrolListResultDTO o1, GridMemberPatrolListResultDTO o2) { + if ("patrolTime".equals(formDTO.getSort())) { + return o2.getPatrolTotalTime().compareTo(o1.getPatrolTotalTime()); + } else if ("dealEvent".equals(formDTO.getSort())) { + return o2.getEventCount().compareTo(o1.getEventCount()); + } else { + return o2.getReportProjectCount().compareTo(o1.getReportProjectCount()); + } + } + }); + + return resultList; + } + /** * @Param formDTO * @Description 【通讯录】姓名检索工作人员 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 5a563a5e4b..9f99415f2b 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 @@ -767,4 +767,34 @@ + + diff --git a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml index d68f007efe..9dc97b4c5a 100644 --- a/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml +++ b/epmet-module/data-aggregator/data-aggregator-server/src/main/resources/mapper/epmetuser/StaffPatrolRecordDao.xml @@ -121,4 +121,24 @@ AND ssp.staff_id = #{staffId} + + diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/user/result/GridManagerListGeneralResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/user/result/GridManagerListGeneralResultDTO.java new file mode 100644 index 0000000000..bb7e6c781a --- /dev/null +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/user/result/GridManagerListGeneralResultDTO.java @@ -0,0 +1,94 @@ +package com.epmet.user.result; + +import com.epmet.commons.tools.constant.NumConstant; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/6/7 2:57 下午 + * @DESC + */ +@Data +public class GridManagerListGeneralResultDTO implements Serializable { + + private static final long serialVersionUID = -2770911125810373090L; + + /** + * 工作人员id + */ + private String staffId; + + /** + * 工作人员手机号 + */ + private String mobile; + + /** + * 经度 + */ + private String longitude; + + /** + * 纬度 + */ + private String latitude; + + /** + * 网格ID + */ + private String gridId; + + /** + * 正在巡查:patrolling;否则返回空字符串 + */ + private String status; + + /** + * 网格名称,最多显示上两级 + */ + private String gridName; + + /** + * 姓名 + */ + private String staffName; + + /** + * 巡查时长 + */ + private Integer patrolDuration; + + /** + * 巡查次数 + */ + private Integer patrolCount; + + /** + * 中心点位 + */ + @JsonIgnore + private String centerMark; + + /** + * 经纬度赋值状态 + */ + @JsonIgnore + private Boolean llStatus; + + public GridManagerListGeneralResultDTO() { + this.staffId = ""; + this.longitude = ""; + this.latitude = ""; + this.gridId = ""; + this.status = ""; + this.gridName = ""; + this.staffName = ""; + this.centerMark = ""; + this.llStatus = false; + this.patrolDuration = NumConstant.ZERO; + this.patrolCount = NumConstant.ZERO; + } +} diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/user/StaffPatrolDetailController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/user/StaffPatrolDetailController.java index e20e1e7d5c..f01e9dbe77 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/user/StaffPatrolDetailController.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/user/StaffPatrolDetailController.java @@ -11,6 +11,7 @@ import com.epmet.user.result.GridManagerListResultDTO; import com.epmet.dto.result.PatrolTrackResultDTO; import com.epmet.dto.result.RecordListResultDTO; import com.epmet.dto.result.PatrolCountResultDTO; +import com.epmet.user.result.GridManagerListGeneralResultDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -77,4 +78,16 @@ public class StaffPatrolDetailController { return new Result().ok(staffPatrolService.patrolCount(formDTO)); } + /** + * @Description 网格员分布 + * @Param formDTO + * @author zxc + * @date 2021/8/25 3:00 下午 + */ + @PostMapping("gridmanagerlistgeneral") + public Result> gridManagerListGeneral(@RequestBody GridManagerListFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO, GridManagerListFormDTO.GridManagerListForm.class); + return new Result>().ok(staffPatrolService.gridManagerListGeneral(formDTO)); + } + } diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/StaffPatrolDetailService.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/StaffPatrolDetailService.java index 95fc1eb064..8bc7a6c4b6 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/StaffPatrolDetailService.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/StaffPatrolDetailService.java @@ -8,6 +8,7 @@ import com.epmet.user.result.GridManagerListResultDTO; import com.epmet.dto.result.PatrolTrackResultDTO; import com.epmet.dto.result.RecordListResultDTO; import com.epmet.dto.result.PatrolCountResultDTO; +import com.epmet.user.result.GridManagerListGeneralResultDTO; import java.util.List; @@ -27,6 +28,14 @@ public interface StaffPatrolDetailService{ */ List gridManagerList(GridManagerListFormDTO formDTO); + /** + * @Description 网格员分布 + * @Param formDTO + * @author zxc + * @date 2021/8/25 3:00 下午 + */ + List gridManagerListGeneral(GridManagerListFormDTO formDTO); + /** * @Description 002、查看巡查记录 * @Param formDTO diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/impl/StaffPatrolDetailServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/impl/StaffPatrolDetailServiceImpl.java index 6f01a162ac..adec1862e9 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/impl/StaffPatrolDetailServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/user/impl/StaffPatrolDetailServiceImpl.java @@ -3,7 +3,6 @@ package com.epmet.datareport.service.user.impl; import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.datareport.constant.PatrolConstant; import com.epmet.datareport.dao.user.StaffPatrolDetailDao; @@ -19,6 +18,7 @@ import com.epmet.dto.form.RecordListFormDTO; import com.epmet.dto.form.PatrolCountFormDTO; import com.epmet.user.result.GridManagerListResultDTO; import com.epmet.dto.result.PatrolCountResultDTO; +import com.epmet.user.result.GridManagerListGeneralResultDTO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -136,6 +136,34 @@ public class StaffPatrolDetailServiceImpl implements StaffPatrolDetailService { return result; } + /** + * @Description 网格员分布 + * @Param formDTO + * @author zxc + * @date 2021/8/25 3:00 下午 + */ + @Override + public List gridManagerListGeneral(GridManagerListFormDTO formDTO) { + List resultTwo = this.gridManagerList(formDTO); + List result = ConvertUtils.sourceToTarget(resultTwo, GridManagerListGeneralResultDTO.class); + Result> listResult = epmetUserOpenFeignClient.patrolInfo(formDTO.getAgencyId()); + if (!listResult.success()){ + throw new RenException("查询巡查次数和时长失败"); + } + List data = listResult.getData(); + if (!CollectionUtils.isEmpty(data)){ + result.forEach(r -> { + data.forEach(d -> { + if (r.getGridId().equals(d.getGridId()) && r.getStaffId().equals(d.getStaffId())){ + r.setPatrolCount(d.getPatrolCount()); + r.setPatrolDuration(d.getPatrolDuration()); + } + }); + }); + } + return result; + } + /** * @Description 根据中心点位截取经纬度 * @Param centMark diff --git a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml index f0e65a8bd1..3e058e209a 100644 --- a/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml +++ b/epmet-module/data-report/data-report-server/src/main/resources/mapper/screen/ScreenCustomerAgencyDao.xml @@ -341,7 +341,7 @@ AND cg.AREA_CODE LIKE CONCAT(#{areaCode},'%') - AND cg.ALL_PARENT_IDS LIKE CONCAT(#{agencyId}, '%') + AND cg.ALL_PARENT_IDS LIKE CONCAT('%',#{agencyId}, '%') diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screencoll/form/PartyBranchDataFormDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screencoll/form/PartyBranchDataFormDTO.java index 21144c89ab..b1f01ed63b 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screencoll/form/PartyBranchDataFormDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screencoll/form/PartyBranchDataFormDTO.java @@ -1,7 +1,9 @@ package com.epmet.dto.screencoll.form; import lombok.Data; +import org.hibernate.validator.constraints.Length; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -17,46 +19,57 @@ public class PartyBranchDataFormDTO implements Serializable { /** * 年Id :yyyy */ + @NotBlank(message = "yearId不能为空") + @Length(max = 4,message = "yyyy") private String yearId; /** * 月份Id :yyyyMM */ + @NotBlank(message = "monthId不能为空") + @Length(max = 6,message = "格式:yyyyMM") private String monthId; /** * 数据类别 party:支部建设;union:联合建设党员志愿服务:voluntaryservice */ + @NotBlank(message = "type不能为空") private String type; /** * 组织类别 agency:组织;部门:department;网格:grid */ + @NotBlank(message = "orgType不能为空") private String orgType; /** * 组织Id 可以为网格,机关id */ + @NotBlank(message = "orgId不能为空") private String orgId; /** * 上级组织Id */ + @NotBlank(message = "parentId不能为空") private String parentId; /** * 组织名称 */ + @NotBlank(message = "orgName不能为空") private String orgName; /** * 会议分类名称 */ + @NotBlank(message = "meetCategoryName不能为空") private String meetCategoryName; /** * 会议分类id */ + @NotBlank(message = "meetCategoryId不能为空") private String meetCategoryId; /** diff --git a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screencoll/form/PartyBranchDataListFormDTO.java b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screencoll/form/PartyBranchDataListFormDTO.java index 8c6a92e7b6..cfda49c5e0 100644 --- a/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screencoll/form/PartyBranchDataListFormDTO.java +++ b/epmet-module/data-statistical/data-statistical-client/src/main/java/com/epmet/dto/screencoll/form/PartyBranchDataListFormDTO.java @@ -1,7 +1,12 @@ package com.epmet.dto.screencoll.form; import lombok.Data; +import org.hibernate.validator.constraints.Length; +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.List; @@ -18,12 +23,17 @@ public class PartyBranchDataListFormDTO implements Serializable { /** * 当为true时后台将删除本月数据 */ + @NotNull(message = "isFirst不能为空") private Boolean isFirst; /** * yyyyMM */ + @NotBlank(message = "monthId不能为空") + @Length(max = 6,message = "格式:yyyyMM") private String monthId; + @Valid + @NotEmpty(message = "数据集合不能为空") private List dataList; } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/aspect/RequestLogAspect.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/aspect/RequestLogAspect.java index 49581cf63c..be7ca7996f 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/aspect/RequestLogAspect.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/aspect/RequestLogAspect.java @@ -21,7 +21,7 @@ import javax.servlet.http.HttpServletRequest; public class RequestLogAspect extends BaseRequestLogAspect { @Override - @Around(value = "execution(* com.epmet.controller.*Controller*.*(..)) ") + @Around(value = "execution(* com.epmet.controller..*Controller*.*(..)) ") public Object proceed(ProceedingJoinPoint point) throws Throwable { return super.proceed(point, getRequest()); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/external/ShiBeiScreenCollController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/external/ShiBeiScreenCollController.java index f142adbf6d..d99bece157 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/external/ShiBeiScreenCollController.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/external/ShiBeiScreenCollController.java @@ -1,6 +1,7 @@ package com.epmet.controller.external; import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.indexcollect.form.CustomerBizOrgFormDTO; import com.epmet.dto.screencoll.form.*; import com.epmet.service.evaluationindex.screen.ShiBeiScreenCollService; @@ -59,6 +60,7 @@ public class ShiBeiScreenCollController { **/ @PostMapping("meetdata") public Result meetData(@RequestHeader("CustomerId") String customerId, @RequestBody PartyBranchDataListFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO); shiBeiScreenCollService.insertPartyBranchData(formDTO, customerId); return new Result(); } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java index 852a5aec52..f62cfe09f8 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/mq/ProjectChangedCustomListener.java @@ -2,7 +2,6 @@ package com.epmet.mq; import com.alibaba.fastjson.JSON; import com.epmet.commons.rocketmq.messages.ProjectChangedMQMsg; -import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.distributedlock.DistributedLock; import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.redis.RedisKeys; @@ -12,8 +11,6 @@ import com.epmet.dto.extract.form.ExtractOriginFormDTO; import com.epmet.service.evaluationindex.extract.todata.FactOriginExtractService; import com.epmet.service.evaluationindex.extract.toscreen.ScreenExtractService; import com.epmet.util.DimIdGenerator; -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; @@ -23,7 +20,6 @@ import org.apache.rocketmq.common.message.MessageExt; import org.redisson.api.RLock; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.data.redis.core.RedisTemplate; import javax.annotation.PreDestroy; import java.util.Date; @@ -119,11 +115,12 @@ public class ProjectChangedCustomListener implements MessageListenerConcurrently extractOriginFormDTO.setDateId(dateId); Future aBoolean = SpringContextUtils.getBean(FactOriginExtractService.class).submitProjectRelationData(extractOriginFormDTO,null); try { - aBoolean.get(); + Object o = aBoolean.get(); + log.info("submitProjectRelationData result:{}",o); } catch (InterruptedException e) { - e.printStackTrace(); + log.error("submitProjectRelationData tread InterruptedException",e); } catch (ExecutionException e) { - e.printStackTrace(); + log.error("submitProjectRelationData tread ExecutionException",e); } if (aBoolean.isDone()){ // 指标库,实时数据只更新:【screen_project_data】 diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java index f05f6e5f70..f4f616a722 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/extract/todata/impl/ProjectExtractServiceImpl.java @@ -35,6 +35,7 @@ import com.epmet.service.project.ProjectService; import com.epmet.service.stats.DimCustomerService; import com.epmet.service.topic.TopicService; import com.epmet.util.DimIdGenerator; +import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -478,9 +479,11 @@ public class ProjectExtractServiceImpl implements ProjectExtractService { formattingData.add(dest); }); - if(!CollectionUtils.isEmpty(formattingData)) { - factOriginProjectOrgPeriodDailyDao.deleteByProjectIds(null,param.getCustomerId()); - factOriginProjectOrgPeriodDailyDao.insertBatch(formattingData); + if (!CollectionUtils.isEmpty(formattingData)) { + factOriginProjectOrgPeriodDailyDao.deleteByProjectIds(null, param.getCustomerId()); + Lists.partition(formattingData, NumConstant.ONE_HUNDRED) + .forEach(part -> factOriginProjectOrgPeriodDailyDao.insertBatch(part)); + } } diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryGridDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryGridDailyServiceImpl.java index 3a8752e20e..f2552dfa32 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryGridDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryGridDailyServiceImpl.java @@ -147,8 +147,17 @@ public class ScreenProjectCategoryGridDailyServiceImpl extends BaseServiceImpl{ dto.setDateId(dateId); }); + del(customerId,dateId); boolean insertRes=insertBatch(ConvertUtils.sourceToTarget(listDTO, ScreenProjectCategoryGridDailyEntity.class)); log.info("insertRes is {}",insertRes); } + @Transactional(rollbackFor = Exception.class) + public void del(String customerId,String dateId){ + Integer num = NumConstant.ZERO; + do { + num = baseDao.deleteByDateIdAndCustomerId(customerId, dateId); + }while (num > NumConstant.ZERO && num == NumConstant.ONE_THOUSAND); + } + } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java index 4a1ae47b8b..902981793a 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/evaluationindex/screen/impl/ScreenProjectCategoryOrgDailyServiceImpl.java @@ -17,6 +17,7 @@ package com.epmet.service.evaluationindex.screen.impl; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.dynamic.datasource.annotation.DataSource; @@ -242,6 +243,9 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl agencyIdList){ List result = new ArrayList<>(); + Map> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel)); + List orgIds = groupByLevel.get(level).stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); + del(customerId,dateId,orgIds); if (isGrid){ // 是社区级别 List categoryInfos = gridDailyDao.selectCategoryInfo(customerId, dateId,null,null); @@ -274,11 +278,8 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl orgIds = new ArrayList<>(); - Map> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel)); List levelAgencyInfo = groupByLevel.get(level); if (!CollectionUtils.isEmpty(levelAgencyInfo)){ - orgIds = levelAgencyInfo.stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); List screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds,customerId); if (!CollectionUtils.isEmpty(result)){ if (!CollectionUtils.isEmpty(screenProjectCategory)){ @@ -306,7 +307,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl {r.setOrgType(level);r.setDateId(dateId);}); } } - deleteAndInsert(customerId,dateId,result,orgIds); + insert(result); } /** @@ -357,7 +358,16 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl relationInfo,List agencyIdList){ List result = new ArrayList<>(); - List orgIds = new ArrayList<>(); + Map> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel)); + List orgIds = groupByLevel.get(level).stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); + if (ScreenConstant.DISTRICT.equals(level)){ + // 添加此 锦水、孔村、榆山 orgId,删除时使用 + orgIds.add(PingYinConstant.JIN_SHUI_AGENCY_ID); + orgIds.add(PingYinConstant.KONG_CUN_AGENCY_ID); + orgIds.add(PingYinConstant.YU_SHAN_AGENCY_ID); + } + log.info("groupByLevel:{}"+JSON.toJSONString(groupByLevel)+"orgIds:{}"+JSON.toJSONString(orgIds)); + del(customerId,dateId,orgIds); if (isGrid){ // community级别走这 List categoryInfos = gridDailyDao.selectCategoryInfo(customerId, dateId,null,null); @@ -367,6 +377,7 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl categoryProjectResultDTOS = baseDao.selectOrgCategoryInfo(customerId, dateId, level); + log.info("分类标签:{}"+JSON.toJSONString(categoryProjectResultDTOS)); List belongGridInfos = gridService.selectBelongGridInfo(customerId, level); if (!CollectionUtils.isEmpty(belongGridInfos)){ // 存在直属网格 @@ -395,60 +406,98 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl customerIds = relationInfo.stream().map(m -> m.getCustomerId()).collect(Collectors.toList()); + // 子客户单独存一份【三个街道的】 + List sonCustomerList = new ArrayList<>(); // 父客户存在的分类 List categoryProjectExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, true); - // 内部客户进行分组 - Map> groupByCategoryCode = categoryProjectResultDTOS.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getCategoryCode)); - // 这时的result集合要清空,因为被上边使用 【result = ConvertUtils.sourceToTarget(categoryProjectResultDTOS,ScreenProjectCategoryOrgDailyEntity.class);】 - result.clear(); - List finalResult = result; - groupByCategoryCode.forEach((code, list) -> { - ScreenProjectCategoryOrgDailyEntity e = new ScreenProjectCategoryOrgDailyEntity(); - e.setCustomerId(customerId); - e.setCategoryOriginCustomerId(customerId); - e.setCategoryCode(code); - e.setOrgId(entity.getAgencyId()); - e.setProjectTotal(CollectionUtils.isEmpty(list) ? NumConstant.ZERO : list.stream().collect(Collectors.summingInt(CategoryProjectResultDTO::getProjectTotal))); - e.setPid(entity.getPid()); - e.setPids(StringUtils.isEmpty(entity.getPids()) ? NumConstant.ZERO_STR : entity.getPids()); - // 因为根据categoryCode分组,所以level都一样,取第一条的 - e.setLevel(list.get(NumConstant.ZERO).getLevel()); - finalResult.add(e); - }); + log.info("父客户存在的分类{}"+ JSON.toJSONString(categoryProjectExists)); + // 父客户不存在的分类 + List categoryProjectNotExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, false); + log.info("父客户不存在的分类{}"+ JSON.toJSONString(categoryProjectNotExists)); + if (!CollectionUtils.isEmpty(categoryProjectExists)){ + sonCustomerList.addAll(categoryProjectExists); + } + if (!CollectionUtils.isEmpty(categoryProjectNotExists)){ + sonCustomerList.addAll(categoryProjectNotExists); + } + if (!CollectionUtils.isEmpty(sonCustomerList)){ + List finalSonResult = result; + sonCustomerList.forEach(s -> { + ScreenProjectCategoryOrgDailyEntity e = ConvertUtils.sourceToTarget(s, ScreenProjectCategoryOrgDailyEntity.class); + e.setOrgType(ScreenConstant.STREET); + e.setDateId(dateId); + e.setPid(entity.getPid()); + e.setCustomerId(customerId); + finalSonResult.add(e); + }); + } // 内部客户与外部客户 相同的分类累加 if (!CollectionUtils.isEmpty(categoryProjectExists)){ - finalResult.forEach(f -> { + categoryProjectResultDTOS.forEach(f -> { categoryProjectExists.forEach(c -> { if (f.getCategoryCode().equals(c.getCategoryCode())){ f.setProjectTotal(f.getProjectTotal() + c.getProjectTotal()); + c.setStatus(true); } }); }); } - // 父客户不存在的分类 - List categoryProjectNotExists = baseDao.selectOrgCategoryMoreCustomerInfo(customerIds, dateId, level, customerId, false); + List finalResult = result; + categoryProjectResultDTOS.forEach(c -> { + ScreenProjectCategoryOrgDailyEntity e = ConvertUtils.sourceToTarget(c, ScreenProjectCategoryOrgDailyEntity.class); + e.setCustomerId(customerId); + e.setCategoryOriginCustomerId(customerId); + e.setOrgId(entity.getAgencyId()); + e.setPid(entity.getPid()); + e.setPids(StringUtils.isEmpty(entity.getPids()) ? NumConstant.ZERO_STR : entity.getPids()); + finalResult.add(e); + }); + log.info("组合后的数据{}:"+JSON.toJSONString(finalResult)); + // 父客户存在分类,但是父客户没有使用过此分类 + Map> groupByStatus = categoryProjectExists.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getStatus)); + List twoResult = new ArrayList<>(); + if (!CollectionUtils.isEmpty(groupByStatus.get(false))){ + twoResult.addAll(groupByStatus.get(false)); + } if (!CollectionUtils.isEmpty(categoryProjectNotExists)){ - List entities = ConvertUtils.sourceToTarget(categoryProjectNotExists, ScreenProjectCategoryOrgDailyEntity.class); - result.addAll(entities); + twoResult.addAll(categoryProjectNotExists); + } + if (!CollectionUtils.isEmpty(twoResult)){ + Map> groupOrigin = twoResult.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getCategoryOriginCustomerId)); + List finalResult1 = result; + groupOrigin.forEach((originCustomerId, list) -> { + // 父客户存在但是未使用的分类 + 父客户不存在的分类,根据categoryCode分组 + Map> sonGroupByCode = list.stream().collect(Collectors.groupingBy(CategoryProjectResultDTO::getCategoryCode)); + sonGroupByCode.forEach((code,list2) -> { + ScreenProjectCategoryOrgDailyEntity e = new ScreenProjectCategoryOrgDailyEntity(); + e.setCustomerId(customerId); + e.setCategoryOriginCustomerId(originCustomerId); + e.setCategoryCode(code); + e.setOrgId(entity.getAgencyId()); + e.setProjectTotal(CollectionUtils.isEmpty(list2) ? NumConstant.ZERO : list2.stream().collect(Collectors.summingInt(CategoryProjectResultDTO::getProjectTotal))); + e.setPid(entity.getPid()); + e.setPids(StringUtils.isEmpty(entity.getPids()) ? NumConstant.ZERO_STR : entity.getPids()); + // 因为根据categoryCode分组,所以level都一样,取第一条的 + e.setLevel(list2.get(NumConstant.ZERO).getLevel()); + finalResult1.add(e); + }); + }); + } - // 添加此 锦水、孔村、榆山 orgId,删除时使用 - orgIds.add(PingYinConstant.JIN_SHUI_AGENCY_ID); - orgIds.add(PingYinConstant.KONG_CUN_AGENCY_ID); - orgIds.add(PingYinConstant.YU_SHAN_AGENCY_ID); } } // 目前不考虑计算子客户组织直接创建的项目,只算内部客户 - Map> groupByLevel = agencyIdList.stream().collect(Collectors.groupingBy(CustomerAgencyInfoResultDTO::getLevel)); List levelAgencyInfo = groupByLevel.get(level); if (!CollectionUtils.isEmpty(levelAgencyInfo)) { - List orgIdss = levelAgencyInfo.stream().map(m -> m.getAgencyId()).collect(Collectors.toList()); - orgIds.addAll(orgIdss); // 查询客户下,组织直接立项的,各项目分类下的项目数量【筛选组织创建的项目,fact_origin_project_main_daily表gridId为空】 List screenProjectCategory = factOriginProjectCategoryDailyService.selectListProjectCategoryByOrg(orgIds, customerId); + log.info("直接立项的统计:"+screenProjectCategory); if (!CollectionUtils.isEmpty(result)) { if (!CollectionUtils.isEmpty(screenProjectCategory)) { result.forEach(r -> { @@ -485,21 +534,30 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl needInsert,List orgIds){ + public void insert(List needInsert){ if (CollectionUtils.isEmpty(needInsert)){ return; } + List> partition = ListUtils.partition(needInsert, NumConstant.ONE_HUNDRED); + partition.forEach(p -> { + insertBatch(p); + }); + } + + @Transactional(rollbackFor = Exception.class) + public void del(String customerId, String dateId,List orgIds){ if (CollectionUtils.isEmpty(orgIds)){ return; } @@ -507,10 +565,6 @@ public class ScreenProjectCategoryOrgDailyServiceImpl extends BaseServiceImpl NumConstant.ZERO && row == NumConstant.ONE_THOUSAND); - List> partition = ListUtils.partition(needInsert, NumConstant.ONE_HUNDRED); - partition.forEach(p -> { - insertBatch(p); - }); } } \ No newline at end of file diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectCategoryDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectCategoryDailyDao.xml index 2a466396bd..a33bda9bed 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectCategoryDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/extract/FactOriginProjectCategoryDailyDao.xml @@ -91,6 +91,7 @@ UNION ALL SELECT c.CUSTOMER_ID, + c.CUSTOMER_ID AS categoryOriginCustomerId, left(c.CATEGORY_CODE, 4) AS CATEGORY_CODE, '1' AS `LEVEL`, p.AGENCY_ID AS orgId, diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml index 72f1a188a1..cdce01974a 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/evaluationindex/screen/ScreenProjectCategoryOrgDailyDao.xml @@ -47,7 +47,7 @@ @@ -131,6 +132,7 @@ ) AND cd.EPMET_CATEGORY_CODE IS NOT NULL + AND cd.EPMET_CATEGORY_CODE != '' AND od.pid = '0' AND od.date_id = #{dateId} GROUP BY od.CATEGORY_CODE,od.pid @@ -155,7 +157,7 @@ #{customer} ) - AND cd.EPMET_CATEGORY_CODE IS NULL + AND (cd.EPMET_CATEGORY_CODE IS NULL OR cd.EPMET_CATEGORY_CODE = '') AND od.pid = '0' AND od.date_id = #{dateId} GROUP BY od.CATEGORY_CODE,od.pid diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerStaffGridDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerStaffGridDao.xml index 75b9aa5b40..0dada73cae 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerStaffGridDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/org/CustomerStaffGridDao.xml @@ -16,7 +16,7 @@ grid.PIDS gridPids FROM customer_staff_grid sg - LEFT JOIN customer_grid grid ON grid.id = sg.grid_id + LEFT JOIN customer_grid grid ON grid.id = sg.grid_id AND grid.DEL_FLAG = '0' WHERE sg.del_flag = '0' diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/partymember/PartyMemberDao.xml b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/partymember/PartyMemberDao.xml index 1a6a74ddd4..59933198f7 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/partymember/PartyMemberDao.xml +++ b/epmet-module/data-statistical/data-statistical-server/src/main/resources/mapper/partymember/PartyMemberDao.xml @@ -10,14 +10,18 @@ GRID_ID, USER_ID, ID_CARD, - STR_TO_DATE( SUBSTRING( ID_CARD, 7, 8 ),'%Y%m%d') AS birthday + ( + case when LENGTH(ID_CARD)=15 then STR_TO_DATE( concat('19',SUBSTRING( ID_CARD, 7, 6 )),'%Y%m%d') + else STR_TO_DATE( SUBSTRING( ID_CARD, 7, 8 ),'%Y%m%d') + end + )as birthday FROM partymember_info WHERE DEL_FLAG = 0 - AND ( CONFIRM_RESULT = 'auto_confirm_success' OR CONFIRM_RESULT = 'approved' ) - AND CUSTOMER_ID = #{customerId} - AND DATE_FORMAT( UPDATED_TIME, '%Y%m%d' ) = #{dateId} + AND ( CONFIRM_RESULT = 'auto_confirm_success' OR CONFIRM_RESULT = 'approved' ) + AND CUSTOMER_ID = #{customerId} + AND DATE_FORMAT( UPDATED_TIME, '%Y%m%d' ) = #{dateId} + + diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/ThirdplatformCustomerRegisterDao.xml b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/ThirdplatformCustomerRegisterDao.xml index 9ab368a8bc..66d039fc3c 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/ThirdplatformCustomerRegisterDao.xml +++ b/epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/ThirdplatformCustomerRegisterDao.xml @@ -36,6 +36,20 @@ and DEL_FLAG = 0 + + + insert into thirdplatform_customer_register ( diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventDao.xml b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventDao.xml index f9fc875f7e..3284be99e6 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventDao.xml +++ b/epmet-module/gov-project/gov-project-server/src/main/resources/mapper/ResiEventDao.xml @@ -5,8 +5,8 @@ + - @@ -36,20 +36,29 @@ and ro.ORG_ID = #{orgId} AND ro.ORG_READ = 'un_read' - ORDER BY re.CREATED_TIME AND ro.ORG_READ = 'read' AND re.`STATUS` = 'processing' - ORDER BY re.LATEST_OPERATED_TIME DESC AND ro.ORG_READ = 'read' AND re.`STATUS` = 'closed_case' - ORDER BY re.CLOSE_CASE_TIME DESC )t - LEFT JOIN resi_event_attachment rea ON (rea.RESI_EVENT_ID = t.eventId AND rea.DEL_FLAG = '0' AND rea.ATTACHMENT_TYPE = 'image' AND (rea.SORT = 3 OR rea.SORT = 1 OR rea.SORT = 2)) + LEFT JOIN resi_event_attachment rea + ON (rea.RESI_EVENT_ID = t.eventId + and rea.DEL_FLAG = '0' + AND rea.ATTACHMENT_TYPE = 'image') + + ORDER BY t.eventTime,rea.sort asc + + + ORDER BY t.eventTime DESC,rea.sort asc + + + ORDER BY t.eventTime DESC,rea.sort asc + diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/TagCustomerDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/TagCustomerDao.xml index 183eb8317f..83ed4289ad 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/TagCustomerDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/TagCustomerDao.xml @@ -31,7 +31,7 @@ VALUES ( - #{tag.id},#{tag.customerId}, #{tag.tagName}, #{tag.tagColor} #{tag.useCount}, #{tag.delFlag}, #{tag.revision}, #{tag.createdBy}, NOW(), #{tag.updatedBy}, NOW() + #{tag.id},#{tag.customerId}, #{tag.tagName}, #{tag.tagColor}, #{tag.useCount}, #{tag.delFlag}, #{tag.revision}, #{tag.createdBy}, NOW(), #{tag.updatedBy}, NOW() ) ON DUPLICATE KEY UPDATE diff --git a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java index 80cc4cc91e..1610de67c6 100644 --- a/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java +++ b/epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java @@ -193,7 +193,7 @@ public class PartyMemberConfirmServiceImpl implements PartyMemberConfirmService PartymemberInfoEntity.class); PartymemberInfoDTO info = partymemberInfoService.getPartyMemberInfoByUser(partyMemberInfoDTO.getCustomerId(), partyMemberInfoDTO.getUserId()); if (null != info) { - partyMemberInfoDTO.setId(info.getId()); + partyMemberInfoEntity.setId(info.getId()); } if (confirmAutoDTO == null || !confirmAutoDTO.getComparisonResults()) { log.info("submit confirmAutoDTO return null or false:{}",JSON.toJSONString(confirmAutoDTO)); diff --git a/epmet-openapi/epmet-openapi-sdk/pom.xml b/epmet-openapi/epmet-openapi-sdk/pom.xml new file mode 100644 index 0000000000..c006c05b10 --- /dev/null +++ b/epmet-openapi/epmet-openapi-sdk/pom.xml @@ -0,0 +1,15 @@ + + + + epmet-openapi + com.epmet + 2.0.0 + + 4.0.0 + + epmet-openapi-sdk + + + \ No newline at end of file diff --git a/epmet-openapi/epmet-openapi-sdk/src/main/java/com/epmet/openapi/sdk/encrypt/Md5Util.java b/epmet-openapi/epmet-openapi-sdk/src/main/java/com/epmet/openapi/sdk/encrypt/Md5Util.java new file mode 100644 index 0000000000..0838048629 --- /dev/null +++ b/epmet-openapi/epmet-openapi-sdk/src/main/java/com/epmet/openapi/sdk/encrypt/Md5Util.java @@ -0,0 +1,133 @@ +package com.epmet.openapi.sdk.encrypt; + +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class Md5Util { + /** + * 加密盐 值 + */ + public static final String SALT = "EPMET_UMD_SALT"; + + public static String md5(String string) throws Exception { + if (string == null || string.trim().length() == 0) { + return null; + } + return getMD5(string.getBytes("GBK")); + } + + private static final char hexDigits[] = { // 用来将字节转换成 16 进制表示的字符 + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; + + private static String getMD5(byte[] source) throws Exception { + String s = null; + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(source); + byte tmp[] = md.digest(); // MD5 的计算结果是一个 128 位的长整数, + // 用字节表示就是 16 个字节 + char str[] = new char[16 * 2]; // 每个字节用 16 进制表示的话,使用两个字符, + // 所以表示成 16 进制需要 32 个字符 + int k = 0; // 表示转换结果中对应的字符位置 + for (int i = 0; i < 16; i++) { // 从第一个字节开始,对 MD5 的每一个字节 + // 转换成 16 进制字符的转换 + byte byte0 = tmp[i]; // 取第 i 个字节 + str[k++] = hexDigits[byte0 >>> 4 & 0xf]; // 取字节中高 4 位的数字转换, + // >>> 为逻辑右移,将符号位一起右移 + str[k++] = hexDigits[byte0 & 0xf]; // 取字节中低 4 位的数字转换 + } + s = new String(str); // 换后的结果转换为字符串 + return s; + } + + private static String byteArrayToHexString(byte b[]) { + StringBuffer resultSb = new StringBuffer(); + for (int i = 0; i < b.length; i++) + resultSb.append(byteToHexString(b[i])); + + return resultSb.toString(); + } + + private static String byteToHexString(byte b) { + int n = b; + if (n < 0) + n += 256; + int d1 = n / 16; + int d2 = n % 16; + return hexDigits[d1] + "" + hexDigits[d2]; + } + + public static String MD5Encode(String origin, String charsetname) throws Exception { + String resultString = null; + resultString = new String(origin); + MessageDigest md = MessageDigest.getInstance("MD5"); + if (charsetname == null || "".equals(charsetname)) + resultString = byteArrayToHexString(md.digest(resultString + .getBytes())); + else + resultString = byteArrayToHexString(md.digest(resultString + .getBytes(charsetname))); + return resultString; + } + + + public static void main(String[] args) { + for (int i = 0; i < 5; i++) { + String uuid = "03a1dcd8cb1811eabac1c03fd56f7847"; + System.out.println(get12Char(uuid)); + } + } + + /** + * 获取短字符 + * + * @param str + * @return 大写 + */ + public static String get12Char(String str) { + String arr[] = ShortText(str); + String rst = (arr[0] + arr[1]).toUpperCase(); + return rst.substring(0, 4) + rst.substring(4, 8) + rst.substring(8, 12); + } + + private static String[] ShortText(String string) { + String[] chars = new String[]{ // 要使用生成URL的字符 + "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", + "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", + "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", + "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", + "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}; + + String hex = ""; + + MessageDigest md = null; + try { + md = MessageDigest.getInstance("MD5"); + hex = byteArrayToHexString(md.digest(SALT.concat(string) + .getBytes("utf-8"))); + } catch (Exception e) { + e.printStackTrace(); + } + + int hexLen = hex.length(); + int subHexLen = hexLen / 8; + String[] ShortStr = new String[4]; + + for (int i = 0; i < subHexLen; i++) { + String outChars = ""; + int j = i + 1; + String subHex = hex.substring(i * 8, j * 8); + long idx = Long.valueOf("3FFFFFFF", 16) & Long.valueOf(subHex, 16); + + for (int k = 0; k < 6; k++) { + int index = (int) (Long.valueOf("0000003D", 16) & idx); + outChars += chars[index]; + idx = idx >> 5; + } + ShortStr[i] = outChars; + } + + return ShortStr; + } + +} diff --git a/epmet-openapi/epmet-openapi-sdk/src/main/java/com/epmet/openapi/sdk/sign/OpenApiSignUtils.java b/epmet-openapi/epmet-openapi-sdk/src/main/java/com/epmet/openapi/sdk/sign/OpenApiSignUtils.java new file mode 100644 index 0000000000..e44b17aa30 --- /dev/null +++ b/epmet-openapi/epmet-openapi-sdk/src/main/java/com/epmet/openapi/sdk/sign/OpenApiSignUtils.java @@ -0,0 +1,109 @@ +package com.epmet.openapi.sdk.sign; + +import com.epmet.openapi.sdk.encrypt.Md5Util; + +import java.util.*; + +/** + * OpenApi签名工具 + */ +public class OpenApiSignUtils { + + /** + * @Description 创建签名 + * @return + * @author wxz + * @date 2021.03.22 16:47 + */ + public static String createSign(Map contentMap, String signKey) throws Exception { + String str2beSigned = mapToSignStr(contentMap); + str2beSigned = str2beSigned.concat("&sign_key=").concat(signKey); + return Md5Util.md5(str2beSigned); + } + + /** + * @Description 验签 + * @return + * @author wxz + * @date 2021.03.22 16:51 + */ + public static boolean checkSign(Map contentMap, String signKey) throws Exception { + String newSign = createSign(contentMap, signKey); + return newSign.equals(contentMap.get("sign")); + } + + /** + * @Description map转化为签名明文 + * @return + * @author wxz + * @date 2021.03.22 16:47 + */ + public static String mapToSignStr(Map map) { + Set keySet = map.keySet(); + String[] keyArray = (String[])keySet.toArray(new String[keySet.size()]); + Arrays.sort(keyArray); + StringBuilder sb = new StringBuilder(); + + for(int i = 0; i < keyArray.length; ++i) { + String key = keyArray[i]; + String val = (String)map.get(key); + if (val != null && val.trim().length() > 0 && !"sign".equals(key)) { + if (!sb.toString().isEmpty()) { + sb.append("&"); + } + + sb.append(key).append("=").append((String)map.get(key)); + } + } + + return sb.toString(); + } + + public static void main(String[] args) throws Exception { + generateGetAccessTokenSign(); + System.out.println("=============="); + generateGetOrgDetailSign(); + } + + private static void generateGetAccessTokenSign() throws Exception { + long now = System.currentTimeMillis(); + System.out.println(now); + + String uuid = UUID.randomUUID().toString().replace("-", ""); + + HashMap content = new HashMap<>(); + content.put("app_id", "7d98b8af2d05752b4225709c4cfd4bd0"); + content.put("timestamp", String.valueOf(now)); + content.put("nonce", uuid); + content.put("auth_type", "take_token"); + + String secret = "3209ee9f41704482be1a1fb5873a25376f2899191ca846119d44168316bc3e44"; + + String sign = createSign(content, secret); + + System.out.println("时间戳:" + now); + System.out.println("随机数:" + uuid); + System.out.println("签名:" + sign); + } + + private static void generateGetOrgDetailSign() throws Exception { + long now = System.currentTimeMillis(); + String uuid = UUID.randomUUID().toString().replace("-", "");; + System.out.println("时间戳:" + now); + System.out.println("随机数:" + uuid); + + HashMap content = new HashMap<>(); + //content.put("orgId", "aaa"); + //content.put("test", null); + content.put("gridId", "12128e0f614f1c00a058ea9a107033b2"); + content.put("app_id", "7d98b8af2d05752b4225709c4cfd4bd0"); + content.put("timestamp", String.valueOf(now)); + content.put("nonce", uuid); + content.put("auth_type", "take_token"); + + String secret = "3209ee9f41704482be1a1fb5873a25376f2899191ca846119d44168316bc3e44"; + + String sign = createSign(content, secret); + System.out.println("签名:" + sign); + } +} diff --git a/epmet-openapi/pom.xml b/epmet-openapi/pom.xml index 9db62073f3..a3be582a53 100644 --- a/epmet-openapi/pom.xml +++ b/epmet-openapi/pom.xml @@ -13,6 +13,7 @@ epmet-openapi epmet-openapi-scan + epmet-openapi-sdk \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PatrolYuShanResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PatrolYuShanResultDTO.java new file mode 100644 index 0000000000..73e75b5587 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PatrolYuShanResultDTO.java @@ -0,0 +1,30 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2021/8/25 3:50 下午 + * @DESC + */ +@Data +public class PatrolYuShanResultDTO implements Serializable { + + private static final long serialVersionUID = -54918706294182026L; + + private String staffId; + + private String gridId; + + /** + * 巡查时长 + */ + private Integer patrolDuration; + + /** + * 巡查次数 + */ + private Integer patrolCount; +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index 19935ac620..2c913bd585 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -626,4 +626,13 @@ public interface EpmetUserOpenFeignClient { */ @PostMapping("/epmetuser/statsstaffpatrolrecorddaily/patrolcount") Result patrolCount(@RequestBody PatrolCountFormDTO formDTO); + + /** + * @Description 查询巡查次数和时长 + * @Param agencyId + * @author zxc + * @date 2021/8/25 3:59 下午 + */ + @PostMapping("/epmetuser/statsstaffpatrolrecorddaily/patrolinfo") + Result> patrolInfo(@RequestParam("agencyId")String agencyId); } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index 093fcb3ec8..a68cab52f5 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -445,4 +445,9 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien public Result patrolCount(PatrolCountFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "patrolCount", formDTO); } + + @Override + public Result> patrolInfo(String agencyId) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "patrolInfo", agencyId); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StatsStaffPatrolRecordDailyController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StatsStaffPatrolRecordDailyController.java index be2943f19d..06bfa933d2 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StatsStaffPatrolRecordDailyController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StatsStaffPatrolRecordDailyController.java @@ -2,12 +2,15 @@ package com.epmet.controller; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.result.PatrolYuShanResultDTO; import com.epmet.service.StatsStaffPatrolRecordDailyService; import com.epmet.dto.form.PatrolCountFormDTO; import com.epmet.dto.result.PatrolCountResultDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * [天]工作人员巡查记录统计 @@ -33,4 +36,15 @@ public class StatsStaffPatrolRecordDailyController { ValidatorUtils.validateEntity(formDTO, PatrolCountFormDTO.PatrolCountForm.class); return new Result().ok(statsStaffPatrolRecordDailyService.patrolCount(formDTO)); } + + /** + * @Description 查询巡查次数和时长 + * @Param agencyId + * @author zxc + * @date 2021/8/25 4:02 下午 + */ + @PostMapping("patrolinfo") + public Result> patrolInfo(@RequestParam("agencyId")String agencyId){ + return new Result>().ok(statsStaffPatrolRecordDailyService.patrolInfo(agencyId)); + } } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StatsStaffPatrolRecordDailyDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StatsStaffPatrolRecordDailyDao.java index 58779caaa0..b937e41f31 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StatsStaffPatrolRecordDailyDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/StatsStaffPatrolRecordDailyDao.java @@ -18,6 +18,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.result.PatrolYuShanResultDTO; import com.epmet.dto.result.SelectPatrolCountResultDTO; import com.epmet.entity.StatsStaffPatrolRecordDailyEntity; import org.apache.ibatis.annotations.Mapper; @@ -71,5 +72,13 @@ public interface StatsStaffPatrolRecordDailyDao extends BaseDao selectPatrolCount(@Param("agencyId")String agencyId, @Param("dateId")String dateId); + + /** + * @Description 查询巡查次数和时长 + * @Param agencyId + * @author zxc + * @date 2021/8/25 4:02 下午 + */ + List patrolInfo(@Param("agencyId")String agencyId); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StatsStaffPatrolRecordDailyService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StatsStaffPatrolRecordDailyService.java index a73d0ac373..9458dcc86f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StatsStaffPatrolRecordDailyService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/StatsStaffPatrolRecordDailyService.java @@ -1,10 +1,13 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.dto.result.PatrolYuShanResultDTO; import com.epmet.entity.StatsStaffPatrolRecordDailyEntity; import com.epmet.dto.form.PatrolCountFormDTO; import com.epmet.dto.result.PatrolCountResultDTO; +import java.util.List; + /** * [天]工作人员巡查记录统计 * @@ -21,4 +24,12 @@ public interface StatsStaffPatrolRecordDailyService extends BaseService patrolInfo(String agencyId); + } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsStaffPatrolRecordDailyServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsStaffPatrolRecordDailyServiceImpl.java index 5f54160a06..4d2913cd43 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsStaffPatrolRecordDailyServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/StatsStaffPatrolRecordDailyServiceImpl.java @@ -5,6 +5,7 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.constant.PatrolConstant; import com.epmet.dao.StatsStaffPatrolRecordDailyDao; +import com.epmet.dto.result.PatrolYuShanResultDTO; import com.epmet.dto.result.SelectPatrolCountResultDTO; import com.epmet.entity.StatsStaffPatrolRecordDailyEntity; import com.epmet.service.StatsStaffPatrolRecordDailyService; @@ -45,4 +46,15 @@ public class StatsStaffPatrolRecordDailyServiceImpl extends BaseServiceImpl patrolInfo(String agencyId) { + return baseDao.patrolInfo(agencyId); + } } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/StatsStaffPatrolRecordDailyDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/StatsStaffPatrolRecordDailyDao.xml index a93e2f1740..f1ae028345 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/StatsStaffPatrolRecordDailyDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/StatsStaffPatrolRecordDailyDao.xml @@ -52,4 +52,17 @@ ORDER BY STAFF_ID DESC) t GROUP BY t.STATUS + + + \ No newline at end of file