Browse Source

城市管理事件

master
yinzuomei 3 years ago
parent
commit
1f9e1c21c8
  1. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java
  2. 3
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java
  3. 9
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/CoverageAnalisisDataListFormDTO.java
  4. 15
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/CoverageAnalisisDataListLeftFormDTO.java
  5. 19
      epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/CoverageAnalisisDataListResultDTO.java
  6. 8
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/CoverageController.java
  7. 3
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/CoverageService.java
  8. 97
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/CoverageServiceImpl.java

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java

@ -110,4 +110,6 @@ public interface StrConstant {
String YES = "是";
String NO = "否";
String ELLIPSIS="......";
}

3
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/constant/OrgConstant.java

@ -14,4 +14,7 @@ public interface OrgConstant {
String GRID_ID="GRID_ID";
String GENDER="GENDER";
String HOUSE_TYPE_KEY="HOUSE_TYPE";
String AGENCY_ID="agencyId";
String AGENC_PATH="agencyPath";
}

9
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/CoverageAnalisisDataListFormDTO.java

@ -9,7 +9,16 @@ import java.util.List;
*/
@Data
public class CoverageAnalisisDataListFormDTO {
/**
* 目前都是组织id
*/
private String orgId;
/**
* agency
* grid
*/
private String orgType;
/**
* 图层类型列表
*/

15
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/form/CoverageAnalisisDataListLeftFormDTO.java

@ -15,15 +15,18 @@ import java.util.List;
public class CoverageAnalisisDataListLeftFormDTO {
public interface ShowGroup extends CustomerClientShowGroup {
}
/**
*
* 目前都是组织id
*/
@NotBlank(message = "组织不能为空", groups = ShowGroup.class)
private String orgId;
/**
* agency
* grid
*/
@NotBlank(message = "组织类型不能为空", groups = ShowGroup.class)
private String orgType;
/**
* 图层类型列表
*/
@ -34,12 +37,8 @@ public class CoverageAnalisisDataListLeftFormDTO {
*/
private List<String> categoryKeys;
// 以下3个参数固定
private Integer pageNo = 1;
private Integer pageSize = 20;
private Boolean isPage = false;
private String customerId;
private String staffId;
}

19
epmet-module/data-aggregator/data-aggregator-client/src/main/java/com/epmet/dataaggre/dto/govorg/result/CoverageAnalisisDataListResultDTO.java

@ -1,8 +1,10 @@
package com.epmet.dataaggre.dto.govorg.result;
import com.epmet.commons.tools.constant.StrConstant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
@Data
@NoArgsConstructor
@ -40,4 +42,21 @@ public class CoverageAnalisisDataListResultDTO {
*/
private String longitude;
/**
* 经度,纬度120.38862649282282,36.07138835989835
*/
private String longLat;
public CoverageAnalisisDataListResultDTO(String id, String categoryKey, String categoryName, String placeType, String content, String latitude, String longitude) {
this.id=id;
this.categoryKey=categoryKey;
this.categoryName=categoryName;
this.placeType=placeType;
this.content=content;
this.latitude=latitude;
this.longitude=longitude;
if(StringUtils.isNotBlank(latitude)&&StringUtils.isNotBlank(longitude)){
this.longLat=longitude.concat(StrConstant.COMMA).concat(latitude);
}
}
}

8
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/CoverageController.java

@ -5,6 +5,7 @@ import com.epmet.commons.tools.dto.result.ZhzlCategorySelectDTO;
import com.epmet.commons.tools.enums.ZhzlResiCategoryEnum;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dataaggre.dto.coverage.AnalysisGovernedTargetsResult;
import com.epmet.dataaggre.dto.coverage.AnalysisResourceCategoriesResult;
@ -42,13 +43,16 @@ public class CoverageController {
*/
@RequestMapping("dataList")
public Result<PageData<CoverageAnalisisDataListResultDTO>> dataList(@RequestBody CoverageAnalisisDataListFormDTO input) {
// 获取跟组织的坐标
String customerId = EpmetRequestHolder.getLoginUserCustomerId();
String staffId = EpmetRequestHolder.getLoginUserId();
List<String> coverageTypes = input.getCoverageTypes();
List<String> categoryKeys = input.getCategoryKeys();
if (CollectionUtils.isEmpty(coverageTypes)) {
return new Result().ok(new PageData<>(new ArrayList<>(), 0));
}
PageData<CoverageAnalisisDataListResultDTO> page = coverageService.analysisDataList(coverageTypes, categoryKeys,
PageData<CoverageAnalisisDataListResultDTO> page = coverageService.analysisDataList(customerId,staffId,input.getOrgId(),input.getOrgType(),coverageTypes, categoryKeys,
input.getSearch(), input.getPageNo(), input.getPageSize(), input.getIsPage());
return new Result<PageData<CoverageAnalisisDataListResultDTO>>().ok(page);
}
@ -106,7 +110,7 @@ public class CoverageController {
public Result<PageData<CoverageAnalisisDataListResultDTOV2>> dataListLeft(@LoginUser TokenDto tokenDto, @RequestBody CoverageAnalisisDataListLeftFormDTO formDTO) {
List<String> coverageTypes = formDTO.getCoverageTypes();
List<String> categoryKeys = formDTO.getCategoryKeys();
if (CollectionUtils.isEmpty(coverageTypes)) {
if (CollectionUtils.isEmpty(coverageTypes)||CollectionUtils.isEmpty(categoryKeys)) {
return new Result().ok(new PageData<>(new ArrayList<>(), 0));
}
formDTO.setCustomerId(tokenDto.getCustomerId());

3
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/CoverageService.java

@ -24,7 +24,8 @@ public interface CoverageService {
* @param pageSize 页面大小
* @return
*/
PageData<CoverageAnalisisDataListResultDTO> analysisDataList(List<String> coverageTypes, List<String> categoryKeys,
PageData<CoverageAnalisisDataListResultDTO> analysisDataList(String customerId,String staffId,String orgId,String orgType,
List<String> coverageTypes, List<String> categoryKeys,
String search, Integer pageNo, Integer pageSize, Boolean isPage);
/**

97
epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/CoverageServiceImpl.java

@ -1,14 +1,19 @@
package com.epmet.dataaggre.service.impl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.CoverageEnums;
import com.epmet.commons.tools.enums.CoveragePlaceTypeEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.BuildingInfoCache;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.dataaggre.constant.OrgConstant;
import com.epmet.dataaggre.dto.coverage.AnalysisGovernedTargetsResult;
import com.epmet.dataaggre.dto.coverage.AnalysisResourceCategoriesResult;
import com.epmet.dataaggre.dto.epmetuser.result.IcResiInfoResultDTO;
@ -33,6 +38,7 @@ import com.epmet.dataaggre.service.heart.HeartService;
import com.epmet.dataaggre.service.opercustomize.IcResiCategoryWarnService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -97,12 +103,11 @@ public class CoverageServiceImpl implements CoverageService {
* @return
*/
@Override
public PageData<CoverageAnalisisDataListResultDTO> analysisDataList(List<String> coverageTypes, List<String> categoryKeys,
public PageData<CoverageAnalisisDataListResultDTO> analysisDataList(String customerId,String staffId,String orgId,String orgType,
List<String> coverageTypes, List<String> categoryKeys,
String search, Integer pageNo, Integer pageSize, Boolean isPage) {
// 获取跟组织的坐标
String customerId = EpmetRequestHolder.getLoginUserCustomerId();
String staffId = EpmetRequestHolder.getLoginUserId();
CustomerAgencyEntity rootAgency = govOrgService.getRootAgencyByCustomerId(customerId);
// 1.根据categoryKeys分类key列表,查询他们和图层时间的关系,映射为一个map
@ -122,15 +127,9 @@ public class CoverageServiceImpl implements CoverageService {
}
// 2.循环coverageTypes,使用key到map中查询(为了顺序),得到categoryKeys列表之后,根据实际情况做相应的查询
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, staffId);
if (staffInfo == null) {
String msg = "未找到当前登录人信息。staffId:" + EpmetRequestHolder.getLoginUserId();
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), msg, msg);
}
String staffPids = getStaffPidsFromStaffInfo(staffInfo);
String agencyId = staffInfo.getAgencyId();
Map<String,String> agencyMap=getStaffPidsFromStaffInfo(customerId,staffId,orgId,orgType);
String agencyPath = agencyMap.get(OrgConstant.AGENC_PATH);
String agencyId = agencyMap.get(OrgConstant.AGENCY_ID);
// 分页不太好分,先查出所有的数据,然后partation()吧
int start = (pageNo - 1) * pageSize;
@ -158,7 +157,7 @@ public class CoverageServiceImpl implements CoverageService {
}
for (GovOrgCoverageService.CategoryCoverageMapping e : ccm) {
Integer tempCount = doDataListCount(EpmetRequestHolder.getLoginUserCustomerId(), agencyId, staffPids, e.getPlaceType(),
Integer tempCount = doDataListCount(EpmetRequestHolder.getLoginUserCustomerId(), agencyId, agencyPath, e.getPlaceType(),
e.getCategoryKey(), search);
lastTotalCount = totalCount;
totalCount += tempCount;
@ -167,7 +166,7 @@ public class CoverageServiceImpl implements CoverageService {
// 不分页,查询所有
// 检索数据
List<CoverageAnalisisDataListResultDTO> dataSegment = doDataListSearch(
EpmetRequestHolder.getLoginUserCustomerId(), agencyId, staffPids, e.getPlaceType(),
EpmetRequestHolder.getLoginUserCustomerId(), agencyId, agencyPath, e.getPlaceType(),
e.getCategoryKey(), search, null, null, isPage, rootAgency);
rls.addAll(dataSegment);
continue;
@ -189,7 +188,7 @@ public class CoverageServiceImpl implements CoverageService {
// 检索数据
List<CoverageAnalisisDataListResultDTO> dataSegment = doDataListSearch(
EpmetRequestHolder.getLoginUserCustomerId(), agencyId, staffPids, e.getPlaceType(),
EpmetRequestHolder.getLoginUserCustomerId(), agencyId, agencyPath, e.getPlaceType(),
e.getCategoryKey(), search, 1, end, isPage, rootAgency);
if (firstTimeDataAppear) {
@ -239,6 +238,41 @@ public class CoverageServiceImpl implements CoverageService {
}
}
private Map<String, String> getStaffPidsFromStaffInfo(String customerId, String staffId, String orgId, String orgType) {
Map<String, String> map = new HashMap<>();
String agencyPath = StrConstant.EPMETY_STR;
String agencyId = StrConstant.EPMETY_STR;
if (StringUtils.isBlank(orgId)) {
// 默认查询的是当前登录用户所属组织及下级
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, staffId);
if (staffInfo == null) {
String msg = "未找到当前登录人信息。staffId:" + EpmetRequestHolder.getLoginUserId();
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), msg, msg);
}
// staffPids
agencyPath = getStaffPidsFromStaffInfo(staffInfo);
agencyId = staffInfo.getAgencyId();
} else {
// 根据传入的组织id来
if (OrgConstant.AGENCY.equals(orgType)) {
AgencyInfoCache agencyInfoCache = CustomerOrgRedis.getAgencyInfo(orgId);
if (agencyInfoCache == null) {
String msg = "查询组织缓存信息异常。orgId:" + orgId;
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), msg, msg);
}
agencyId = orgId;
if (StringUtils.isNotBlank(agencyInfoCache.getPids()) && !"0".equals(agencyInfoCache.getPids()) && !"0".equals(agencyInfoCache)) {
agencyPath = agencyInfoCache.getPids().concat(":").concat(agencyId);
} else {
agencyPath = orgId;
}
}
}
map.put(OrgConstant.AGENCY_ID, agencyId);
map.put(OrgConstant.AGENC_PATH, agencyPath);
return map;
}
/**
* 计算数据条数
* @param customerId
@ -346,7 +380,8 @@ public class CoverageServiceImpl implements CoverageService {
return icEventEntities.stream()
.map(e -> new CoverageAnalisisDataListResultDTO(
e.getId(), categoryKey, isPage ? categoryDict.getCategoryName() : null, placeType, isPage ? e.getName() : null,
e.getId(), categoryKey, isPage ? categoryDict.getCategoryName() : null, placeType,
e.getEventContent().length() < 51 ? e.getEventContent() : e.getEventContent().substring(NumConstant.ZERO, NumConstant.FIFTY).concat(StrConstant.ELLIPSIS),
e.getLatitude(), e.getLongitude()))
.collect(Collectors.toList());
@ -601,9 +636,31 @@ public class CoverageServiceImpl implements CoverageService {
*/
@Override
public PageData<CoverageAnalisisDataListResultDTOV2> dataListLeft(CoverageAnalisisDataListLeftFormDTO formDTO) {
//todo
return null;
PageData<CoverageAnalisisDataListResultDTO> page = analysisDataList(formDTO.getCustomerId(), formDTO.getStaffId(), formDTO.getOrgId(), formDTO.getOrgType(),
formDTO.getCoverageTypes(), formDTO.getCategoryKeys(),
StrConstant.EPMETY_STR,// 搜索关键词 默认空字符串
NumConstant.ONE,
NumConstant.TWENTY,
false // 不分页
);
List<CoverageAnalisisDataListResultDTOV2> list = new ArrayList<>();
if (CollectionUtils.isNotEmpty(page.getList())) {
Map<String, List<CoverageAnalisisDataListResultDTO>> group = page.getList().stream().collect(Collectors.groupingBy(CoverageAnalisisDataListResultDTO::getLongLat));
if (MapUtils.isNotEmpty(group)) {
for (Map.Entry<String, List<CoverageAnalisisDataListResultDTO>> entry : group.entrySet()) {
if (CollectionUtils.isEmpty(entry.getValue())) {
continue;
}
CoverageAnalisisDataListResultDTOV2 res = new CoverageAnalisisDataListResultDTOV2();
res.setLatitude(entry.getValue().get(NumConstant.ZERO).getLatitude());
res.setLongitude(entry.getValue().get(NumConstant.ZERO).getLongitude());
res.setDataList(entry.getValue());
list.add(res);
}
}
}
// int totalCount = CollectionUtils.isNotEmpty(list) ? list.size() : NumConstant.ZERO;//这个是实际返回的几个坐标点
// page.getTotal()是多少条业务数据
return new PageData<>(list, page.getTotal());
}
}
Loading…
Cancel
Save