Browse Source

新增:报事-可上报的目标级别列表

dev_shibei_match
wxz 4 years ago
parent
commit
a665b9f1e0
  1. 66
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/enums/OrgLevelEnums.java
  2. 18
      epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/form/ResiEventTargetLevelFormDTO.java
  3. 2
      epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/result/ResiEventNpcResultDTO.java
  4. 31
      epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/result/ResiEventTargetLevelResultDTO.java
  5. 36
      epmet-module/resi-home/resi-home-server/src/main/java/com/epmet/controller/ResiEventController.java
  6. 10
      epmet-module/resi-home/resi-home-server/src/main/java/com/epmet/service/ResiEventService.java
  7. 60
      epmet-module/resi-home/resi-home-server/src/main/java/com/epmet/service/impl/ResiEventServiceImpl.java

66
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/enums/OrgLevelEnums.java

@ -0,0 +1,66 @@
package com.epmet.enums;
import lombok.extern.slf4j.Slf4j;
import java.util.Optional;
/**
* @Description 入职级别枚举
* @author wxz
* @date 2021.08.03 14:29:01
*/
@Slf4j
public enum OrgLevelEnums {
GRID("grid", "网格"),
COMMUNITY("community", "社区"),
STREET("street", "街道"),
DISTRICT("district", "区"),
CITY("city", "市"),
PROVINCE("province", "省"),
DEPARTMENT("department", "部门"),
;
private String level;
private String levelName;
OrgLevelEnums(String level, String levelName) {
this.level = level;
this.levelName = levelName;
}
/**
* @Description 级别枚举对象
* @return
* @author wxz
* @date 2021.08.03 14:46
*/
public static OrgLevelEnums getLevelObject(String level) {
for (OrgLevelEnums l :OrgLevelEnums.values()) {
if (l.getLevel().equals(level)) {
return l;
}
}
return null;
}
/**
* @Description 级别中文名称
* @return
* @author wxz
* @date 2021.08.03 14:47
*/
public static String getLevelName(String level) {
OrgLevelEnums levelObject = getLevelObject(level);
return levelObject == null ? null : levelObject.getLevelName();
}
public String getLevel() {
return level;
}
public String getLevelName() {
return levelName;
}
}

18
epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/form/ResiEventTargetLevelFormDTO.java

@ -0,0 +1,18 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Description 群众直报-上报目标级别查询
* @author wxz
* @date 2021.08.03 13:47:23
*/
@Data
public class ResiEventTargetLevelFormDTO {
@NotBlank(message = "网格ID不能为空")
private String gridId;
}

2
epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/result/ResiEventNpcResultDTO.java

@ -25,4 +25,6 @@ public class ResiEventNpcResultDTO {
private String headImgUrl; private String headImgUrl;
private String agencyId; private String agencyId;
private String pids;
} }

31
epmet-module/resi-home/resi-home-client/src/main/java/com/epmet/dto/result/ResiEventTargetLevelResultDTO.java

@ -0,0 +1,31 @@
package com.epmet.dto.result;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description 群众直报目标层级Result
* @author wxz
* @date 2021.08.03 13:43:58
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResiEventTargetLevelResultDTO implements Comparable {
private String orgLevel;
private String levelName;
private String orgId;
private String orgPid;
private String orgPids;
//排序索引,用于排序
private Integer index;
@Override
public int compareTo(Object o) {
ResiEventTargetLevelResultDTO df = (ResiEventTargetLevelResultDTO) o;
return this.index.compareTo(df.getIndex());
}
}

36
epmet-module/resi-home/resi-home-server/src/main/java/com/epmet/controller/ResiEventController.java

@ -3,7 +3,9 @@ package com.epmet.controller;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.ResiEventNpcListFormDTO; import com.epmet.dto.form.ResiEventNpcListFormDTO;
import com.epmet.dto.form.ResiEventTargetLevelFormDTO;
import com.epmet.dto.result.ResiEventNpcResultDTO; import com.epmet.dto.result.ResiEventNpcResultDTO;
import com.epmet.dto.result.ResiEventTargetLevelResultDTO;
import com.epmet.service.ResiEventService; import com.epmet.service.ResiEventService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -11,13 +13,16 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.TreeSet;
/** /**
* @Description 群众直报/报事controller
* @author wxz * @author wxz
* @Description 群众直报/报事controller
* @date 2021.08.02 09:58:40 * @date 2021.08.02 09:58:40
*/ */
@RestController @RestController
@RequestMapping("resi-event") @RequestMapping("resi-event")
public class ResiEventController { public class ResiEventController {
@ -26,17 +31,38 @@ public class ResiEventController {
private ResiEventService resiEventService; private ResiEventService resiEventService;
/** /**
* @Description 查询人大代表列表
* @return * @return
* @Description 查询人大代表列表
* @author wxz * @author wxz
* @date 2021.08.03 09:17 * @date 2021.08.03 09:17
*/ */
@PostMapping("/npc-list-ingrid") @PostMapping("/npc-list-ingrid")
public Result<List<ResiEventNpcResultDTO>> listNpc(@RequestBody ResiEventNpcListFormDTO input) { public Result<HashMap<String, List<ResiEventNpcResultDTO>>> listNpc(@RequestBody ResiEventNpcListFormDTO input) {
ValidatorUtils.validateEntity(input); ValidatorUtils.validateEntity(input);
String gridId = input.getGridId(); String gridId = input.getGridId();
List<ResiEventNpcResultDTO> npcs = resiEventService.listNpcByGrid(gridId); List<ResiEventNpcResultDTO> npcs = resiEventService.listNpcByGrid(gridId);
return new Result<List<ResiEventNpcResultDTO>>().ok(npcs);
HashMap<String, List<ResiEventNpcResultDTO>> wrapper = new HashMap<>();
wrapper.put("reportTargets", npcs);
return new Result<HashMap<String, List<ResiEventNpcResultDTO>>>().ok(wrapper);
}
/**
* @return
* @Description 查询上报目标列表
* @author wxz
* @date 2021.08.03 13:47
*/
@PostMapping("/report-target-level-list")
public Result<HashMap> listReportTargetLevels(@RequestBody ResiEventTargetLevelFormDTO input) {
ValidatorUtils.validateEntity(input);
String gridId = input.getGridId();
TreeSet<ResiEventTargetLevelResultDTO> targetList = resiEventService.listReportTargetLevels(gridId);
HashMap<String, TreeSet<ResiEventTargetLevelResultDTO>> warpper = new HashMap<>();
warpper.put("reportTargets", targetList);
return new Result<HashMap>().ok(warpper);
} }
} }

10
epmet-module/resi-home/resi-home-server/src/main/java/com/epmet/service/ResiEventService.java

@ -1,8 +1,10 @@
package com.epmet.service; package com.epmet.service;
import com.epmet.dto.result.ResiEventNpcResultDTO; import com.epmet.dto.result.ResiEventNpcResultDTO;
import com.epmet.dto.result.ResiEventTargetLevelResultDTO;
import java.util.List; import java.util.List;
import java.util.TreeSet;
/** /**
* @Description 报事service * @Description 报事service
@ -17,4 +19,12 @@ public interface ResiEventService {
* @date 2021.08.03 09:29 * @date 2021.08.03 09:29
*/ */
List<ResiEventNpcResultDTO> listNpcByGrid(String gridId); List<ResiEventNpcResultDTO> listNpcByGrid(String gridId);
/**
* @Description 查询上报目标列表
* @return
* @author wxz
* @date 2021.08.03 13:50
*/
TreeSet<ResiEventTargetLevelResultDTO> listReportTargetLevels(String gridId);
} }

60
epmet-module/resi-home/resi-home-server/src/main/java/com/epmet/service/impl/ResiEventServiceImpl.java

@ -1,22 +1,25 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.feign.ResultDataResolver; import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.BadgeConstant; import com.epmet.constant.BadgeConstant;
import com.epmet.constant.OrgInfoConstant;
import com.epmet.dto.form.ListUserByBadgeFormDTO; import com.epmet.dto.form.ListUserByBadgeFormDTO;
import com.epmet.dto.result.GridInfoResultDTO; import com.epmet.dto.form.OrgInfoFormDTO;
import com.epmet.dto.result.ListUserByBadgeResultDTO; import com.epmet.dto.result.*;
import com.epmet.dto.result.ResiEventNpcResultDTO; import com.epmet.enums.OrgLevelEnums;
import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.service.ResiEventService; import com.epmet.service.ResiEventService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* @author wxz * @author wxz
@ -39,6 +42,7 @@ public class ResiEventServiceImpl implements ResiEventService, ResultDataResolve
Result<GridInfoResultDTO> gridInfoResult = govOrgOpenFeignClient.queryGridInfo(gridId); Result<GridInfoResultDTO> gridInfoResult = govOrgOpenFeignClient.queryGridInfo(gridId);
GridInfoResultDTO gridInfoData = getResultDataOrThrowsException(gridInfoResult, ServiceConstant.GOV_ORG_SERVER, null, null); GridInfoResultDTO gridInfoData = getResultDataOrThrowsException(gridInfoResult, ServiceConstant.GOV_ORG_SERVER, null, null);
String parentAgencyId = gridInfoData.getParentAgencyId(); String parentAgencyId = gridInfoData.getParentAgencyId();
String pids = gridInfoData.getPids();
//查询人大代表列表 //查询人大代表列表
ListUserByBadgeFormDTO npcForm = new ListUserByBadgeFormDTO(gridId, BadgeConstant.BADGE_KEY_NPC); ListUserByBadgeFormDTO npcForm = new ListUserByBadgeFormDTO(gridId, BadgeConstant.BADGE_KEY_NPC);
@ -46,9 +50,53 @@ public class ResiEventServiceImpl implements ResiEventService, ResultDataResolve
List<ListUserByBadgeResultDTO> npcData = getResultDataOrThrowsException(npcResult, ServiceConstant.EPMET_USER_SERVER, null, null); List<ListUserByBadgeResultDTO> npcData = getResultDataOrThrowsException(npcResult, ServiceConstant.EPMET_USER_SERVER, null, null);
List<ResiEventNpcResultDTO> npcResultList = npcData.stream() List<ResiEventNpcResultDTO> npcResultList = npcData.stream()
.map(npc -> new ResiEventNpcResultDTO(npc.getUserId(), gridId, "人大代表-".concat(npc.getRealName()), npc.getHeadImgUrl(), parentAgencyId)) .map(npc -> new ResiEventNpcResultDTO(npc.getUserId(), gridId, "人大代表-".concat(npc.getRealName()), npc.getHeadImgUrl(), parentAgencyId, pids))
.collect(Collectors.toList()); .collect(Collectors.toList());
return npcResultList; return npcResultList;
} }
/**
* @Description 此处会调用org上游接口批量获取父级组织信息由于上游接口排序不可控因此此处需要使用TreeSet做排序
* @return
* @author wxz
* @date 2021.08.03 15:51
*/
@Override
public TreeSet<ResiEventTargetLevelResultDTO> listReportTargetLevels(String gridId) {
TreeSet<ResiEventTargetLevelResultDTO> targetLevels = new TreeSet<>();
Result<GridInfoResultDTO> gridInfoResult = govOrgOpenFeignClient.queryGridInfo(gridId);
GridInfoResultDTO gridInfoData = getResultDataOrThrowsException(gridInfoResult, ServiceConstant.GOV_ORG_SERVER, null, null);
String pidsPath = gridInfoData.getPids();
List<String> parentOrgIds = Arrays.asList(pidsPath.split(":"));
// 翻转列表
Collections.reverse(parentOrgIds);
// 一.网格信息(只有一条,但是为了适应接口,组装成了列表)
List<String> currentGridId = Arrays.asList(gridId);
Result<List<OrgInfoResultDTO>> currentGridInfoResult = govOrgOpenFeignClient.selectOrgInfo(new OrgInfoFormDTO(OrgInfoConstant.GRID, currentGridId));
List<OrgInfoResultDTO> currentGridInfos = getResultDataOrThrowsException(currentGridInfoResult, ServiceConstant.GOV_ORG_SERVER, null, null);
OrgInfoResultDTO currentGridInfo = currentGridInfos.get(0);
// 因为上游接口的值对应问题,这里只好做一个适配,拼接起来,希望上游代码不要再改了...
String pids = currentGridInfo.getPids().concat(":").concat(currentGridInfo.getAgencyId());
// 父ID列表的index排序字段是从0开始,网格要排在他们前面,则网格的index为-1
targetLevels.add(new ResiEventTargetLevelResultDTO(OrgLevelEnums.GRID.getLevel(), OrgLevelEnums.GRID.getLevelName(), currentGridInfo.getOrgId(), currentGridInfo.getAgencyId(), pids, -1));
// 二.父级组织信息
Result<List<OrgInfoResultDTO>> parentOrgInfoResult = govOrgOpenFeignClient.selectOrgInfo(new OrgInfoFormDTO(OrgInfoConstant.AGENCY, parentOrgIds));
List<OrgInfoResultDTO> parentOrgInfos = getResultDataOrThrowsException(parentOrgInfoResult, ServiceConstant.GOV_ORG_SERVER, null, null);
parentOrgInfos.forEach(porg -> {
String levelName = OrgLevelEnums.getLevelName(porg.getLevel());
if (StringUtils.isBlank(levelName)) {
throw new RenException(String.format("根据级别%s没有找到对应的组织级别枚举", porg.getLevel()));
}
//parentOrgIds.indexOf(porg.getOrgId()为当前orgId在pids中的位置,得到之后,赋值给index字段,treeset会利用这个字段进行排序
ResiEventTargetLevelResultDTO pLevel = new ResiEventTargetLevelResultDTO(porg.getLevel(), levelName, porg.getOrgId(), porg.getPid(), porg.getPids(), parentOrgIds.indexOf(porg.getOrgId()));
targetLevels.add(pLevel);
});
return targetLevels;
}
} }

Loading…
Cancel
Save