Browse Source

Merge remote-tracking branch 'origin/dev_ic_data' into develop

master
yinzuomei 4 years ago
parent
commit
8ae7744fdf
  1. 3
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java
  2. 14
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/external/ScreenProjectDataCollController.java
  3. 93
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java
  4. BIN
      epmet-module/data-statistical/data-statistical-server/src/test/java/resources/评价指标体系算法需求-备注3.0版新权重.xlsx
  5. 20
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/DemandDetailFormDTO.java
  6. 19
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java
  7. 3
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandRecResultDTO.java
  8. 23
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/IcResiUserReportDemandRes.java
  9. 30
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java
  10. 1
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcResiDemandDictDao.java
  11. 20
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcUserDemandRecDao.java
  12. 9
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcResiDemandDictService.java
  13. 17
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java
  14. 14
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcResiDemandDictServiceImpl.java
  15. 132
      epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java
  16. 13
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcResiDemandDictDao.xml
  17. 85
      epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml
  18. 5
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CustomerGridFormDTO.java
  19. 1
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerGridController.java
  20. 50
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  21. 2
      epmet-module/open-data-worker/open-data-worker-server/deploy/docker-compose-prod.yml
  22. 1
      epmet-module/open-data-worker/open-data-worker-server/pom.xml
  23. 14
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/RocketMQConsumerRegister.java
  24. 9
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataOrgChangeEventListener.java
  25. 8
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataPatrolChangeEventListener.java
  26. 8
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataProjectChangeEventListener.java
  27. 8
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataStaffChangeEventListener.java
  28. 2
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExDeptService.java
  29. 2
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExUserService.java
  30. 17
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java
  31. 3
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExDeptServiceImpl.java
  32. 4
      epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExUserServiceImpl.java
  33. 5
      epmet-module/open-data-worker/open-data-worker-server/src/main/resources/bootstrap.yml
  34. 0
      epmet-module/open-data-worker/open-data-worker-server/src/main/resources/db/migration/init_db.sql
  35. 4
      epmet-module/open-data-worker/open-data-worker-server/src/main/resources/mapper/ExUserDao.xml
  36. 1
      epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberServiceImpl.java
  37. 4
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java
  38. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/UserResiInfoDTO.java
  39. 6
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EditInfoFormDTO.java
  40. 6
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/InfoSubmitFromDTO.java
  41. 4
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PersonDataFormDTO.java
  42. 36
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiUserFormDTO.java
  43. 4
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyResiUserInfoResultDTO.java
  44. 4
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyselfMsgResultDTO.java
  45. 11
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java
  46. 15
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiUserResDTO.java
  47. 9
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
  48. 11
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
  49. 4
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  50. 13
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserController.java
  51. 4
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java
  52. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBaseInfoDao.java
  53. 11
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java
  54. 8
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/UserResiInfoEntity.java
  55. 10
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java
  56. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java
  57. 9
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserService.java
  58. 28
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java
  59. 8
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java
  60. 32
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java
  61. 55
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java
  62. 1
      epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.19__user_resi_infoaddidnum.sql
  63. 16
      epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml
  64. 14
      epmet-user/epmet-user-server/src/main/resources/mapper/UserBaseInfoDao.xml
  65. 3
      epmet-user/epmet-user-server/src/main/resources/mapper/UserDao.xml
  66. 27
      epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml

3
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java

@ -16,6 +16,9 @@ public enum DictTypeEnum {
SCALE("scale", "人员规模", 6),
PARTY_UNIT_TYPE("party_unit_type", "联建单位分类", 7),
GENDER("gender", "性别", 8),
USER_DEMAND_STATUS("user_demand_status", "居民需求状态",8),
USER_DEMAND_REPORT_TYPE("user_demand_report_type","居民需求上报类型",9),
USER_DEMAND_SERVICE_TYPE("user_demand_service_type","居民需求服务方类型",10)
;
private final String code;

14
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/external/ScreenProjectDataCollController.java

@ -1,7 +1,9 @@
package com.epmet.controller.external;
import com.epmet.commons.rocketmq.messages.DisputeProcessMQMsg;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.SystemMessageType;
import com.epmet.dto.screen.*;
import com.epmet.dto.screen.form.CategoryDictFormDTO;
import com.epmet.dto.screen.form.ScreenProjectDataInfoFormDTO;
@ -13,6 +15,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
* @Description 事件/项目采集接口入口
* @ClassName ScreenProjectDataCollController
@ -135,6 +140,15 @@ public class ScreenProjectDataCollController {
param.setCustomerId(customerId);
ValidatorUtils.validateEntity(param, ScreenCollFormDTO.CustomerIdShowGroup.class, ScreenCollFormDTO.DateIdShowGroup.class, ScreenCollFormDTO.DataListShowGroup.class);
projectDataService.collect(param);
//发送MQ消息,上报事件
param.getDataList().forEach(item -> {
List<String> projectList = new ArrayList<>();
projectList.add(item.getProjectId());
DisputeProcessMQMsg msg = new DisputeProcessMQMsg(param.getCustomerId(), projectList, SystemMessageType.PROJECT_ADD);
projectDataService.sendProjectChangeMq(msg);
});
return new Result();
}

93
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/service/impl/DataReportingServiceImpl.java

@ -1,5 +1,6 @@
package com.epmet.service.impl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
@ -40,6 +41,9 @@ import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection;
/**
* @dscription 省网格化平台数据上报--数据查询
* @author sun
@ -141,23 +145,28 @@ public class DataReportingServiceImpl implements DataReportingService {
Map<String, CustomerProjectCategoryDictEntity> epmetCodeMap = new HashMap<>();
Result<String> parentCustomer = operCrmOpenFeignClient.getExternalAndParentCustomerId(formDTO.getCustomerId());
if (StringUtils.isNotBlank(parentCustomer.getData())) {
customerProjectCategoryDictService.getByCategoryCodeMap(parentCustomer.getData());
epmetCodeMap = customerProjectCategoryDictService.getByCategoryCodeMap(parentCustomer.getData());
}
Map<String, CustomerProjectCategoryDictEntity> codeMap = customerProjectCategoryDictService.getByCategoryCodeMap(formDTO.getCustomerId());;
//项目ID不为空时,因为只有一条,可以直接处理
Map<String, CustomerProjectCategoryDictEntity> finalEpmetCodeMap = epmetCodeMap;
if (CollectionUtils.isNotEmpty(formDTO.getProjectId())) {
list = projectList.stream().map(project -> {
EventInfoResultDTO dto = getEventInfoResultDTO(project, epmetCodeMap, codeMap);
EventInfoResultDTO dto = getEventInfoResultDTO(project, finalEpmetCodeMap, codeMap);
if (OrgTypeConstant.AGENCY.equals(project.getOrgType())) {
ScreenCustomerAgencyEntity agency = screenCustomerAgencyService.getAgencyById(project.getOrgId());
dto.setOrgId(project.getOrgId());
dto.setOrgCode(agency.getCode());
dto.setOrgName(agency.getAgencyName());
if (null != agency) {
dto.setOrgCode(agency.getCode());
dto.setOrgName(agency.getAgencyName());
}
} else {
ScreenCustomerGridDTO grid = screenCustomerGridService.getGridById(project.getOrgId());
dto.setOrgId(project.getOrgId());
dto.setOrgCode(grid.getCode());
dto.setOrgName(grid.getGridName());
if (null != grid) {
dto.setOrgCode(grid.getCode());
dto.setOrgName(grid.getGridName());
}
}
return dto;
}).collect(Collectors.toList());
@ -166,22 +175,26 @@ public class DataReportingServiceImpl implements DataReportingService {
Map<String, ScreenCustomerAgencyEntity> agencyMap = screenCustomerAgencyService.getAgencyList(formDTO.getCustomerId());
Map<String, ScreenCustomerGridDTO> gridMap = screenCustomerGridService.getGridList(formDTO.getCustomerId());
list = projectList.stream().map(project -> {
EventInfoResultDTO dto = getEventInfoResultDTO(project, epmetCodeMap, codeMap);
EventInfoResultDTO dto = getEventInfoResultDTO(project, finalEpmetCodeMap, codeMap);
if (OrgTypeConstant.AGENCY.equals(project.getOrgType())) {
ScreenCustomerAgencyEntity agency = agencyMap.get(project.getOrgId());
dto.setOrgId(project.getOrgId());
dto.setOrgCode(agency.getCode());
dto.setOrgName(agency.getAgencyName());
if (null != agency) {
dto.setOrgCode(agency.getCode());
dto.setOrgName(agency.getAgencyName());
}
} else {
ScreenCustomerGridDTO grid = gridMap.get(project.getOrgId());
dto.setOrgId(project.getOrgId());
dto.setOrgCode(grid.getCode());
dto.setOrgName(grid.getGridName());
if (null != grid) {
dto.setOrgCode(grid.getCode());
dto.setOrgName(grid.getGridName());
}
}
return dto;
}).collect(Collectors.toList());
}
return list.stream().filter(item -> StringUtils.isNotBlank(item.getEventCategory())).collect(Collectors.toList());
return list.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(EventInfoResultDTO::getId))), ArrayList::new));
}
private EventInfoResultDTO getEventInfoResultDTO(ScreenProjectDataDTO project, Map<String, CustomerProjectCategoryDictEntity> epmetCodeMap, Map<String, CustomerProjectCategoryDictEntity> codeMap) {
@ -198,8 +211,22 @@ public class DataReportingServiceImpl implements DataReportingService {
"46c55cb862d6d5e6d05d2ab61a1cc07e".equals(project.getCustomerId())) {
CustomerProjectCategoryDictEntity categoryEntity = codeMap.get(categoryCode);
if (null != categoryEntity) {
categoryCode = categoryEntity.getEpmetCategoryCode();
parentCode = epmetCodeMap.get(categoryEntity.getEpmetCategoryCode()).getParentCategoryCode();
String code = categoryEntity.getEpmetCategoryCode();
if (StringUtils.isBlank(code)) {
//没有对应平阴的分类code,那么一级分类和二级分类都为空
categoryCode = null;
parentCode = null;
} else {
//如果是对应一级分类,则二级分类为空。如果对应平阴二级分类,则取对应的一级分类
CustomerProjectCategoryDictEntity epmetCode = epmetCodeMap.get(code);
if (NumConstant.ONE == epmetCode.getLevel()) {
categoryCode = null;
parentCode = code;
} else {
categoryCode = code;
parentCode = epmetCode.getParentCategoryCode();
}
}
} else {
categoryCode = null;
parentCode = null;
@ -218,16 +245,18 @@ public class DataReportingServiceImpl implements DataReportingService {
if (OrgTypeConstant.AGENCY.equals(project.getFinishOrgType())) {
//如果是孔村的项目办结层级需要降一级
if("2fe0065f70ca0e23ce4c26fca5f1d933".equals(project.getCustomerId())) {
switch (project.getFinishOrgLevel()) {
case OrgTypeConstant.DISTRICT:
dto.setCompleteLevel("04");
break;
case OrgTypeConstant.STREET:
case OrgTypeConstant.COMMUNITY:
dto.setCompleteLevel("06");
break;
default:
break;
if (StringUtils.isNotBlank(project.getFinishOrgLevel())) {
switch (project.getFinishOrgLevel()) {
case OrgTypeConstant.DISTRICT:
dto.setCompleteLevel("3");
break;
case OrgTypeConstant.STREET:
case OrgTypeConstant.COMMUNITY:
dto.setCompleteLevel("4");
break;
default:
break;
}
}
} else {
dto.setCompleteLevel(getCompleteLevel(project.getFinishOrgLevel()));
@ -237,10 +266,12 @@ public class DataReportingServiceImpl implements DataReportingService {
String[] orgIds = project.getOrgIdPath().split(StrConstant.COLON);
int size = orgIds.length;
ScreenCustomerAgencyEntity agency = screenCustomerAgencyService.getAgencyById(orgIds[size - 1]);
dto.setCompleteLevel(getCompleteLevel(agency.getLevel()));
if (null != agency) {
dto.setCompleteLevel(getCompleteLevel(agency.getLevel()));
}
} else {
//办结组织是网格时,办结层级为网格
dto.setCompleteLevel("07");
dto.setCompleteLevel("5");
}
}
dto.setStatus(getProjectStatus(project.getProjectStatusCode()));
@ -253,15 +284,15 @@ public class DataReportingServiceImpl implements DataReportingService {
private String getCompleteLevel(String level) {
switch (level) {
case OrgTypeConstant.PROVINCE:
return "01";
return "0";
case OrgTypeConstant.CITY:
return "02";
return "1";
case OrgTypeConstant.DISTRICT:
return "03";
return "2";
case OrgTypeConstant.STREET:
return "04";
return "3";
case OrgTypeConstant.COMMUNITY:
return "06";
return "4";
default:
return null;
}

BIN
epmet-module/data-statistical/data-statistical-server/src/test/java/resources/评价指标体系算法需求-备注3.0版新权重.xlsx

Binary file not shown.

20
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/DemandDetailFormDTO.java

@ -0,0 +1,20 @@
package com.epmet.dto.form.demand;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@Data
public class DemandDetailFormDTO implements Serializable {
private static final long serialVersionUID = 514538389753713095L;
public interface AddUserInternalGroup {
}
@NotBlank(message = "demandRecId不能为空", groups = AddUserInternalGroup.class)
private String demandRecId;
@NotBlank(message = "tokenDto获取客户id不能为空", groups = IcResiUserDemandFromDTO.AddUserInternalGroup.class)
private String customerId;
}

19
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/demand/IcResiUserDemandFromDTO.java

@ -11,10 +11,29 @@ public class IcResiUserDemandFromDTO implements Serializable {
public interface AddUserInternalGroup {
}
/**
* 居民信息录入的居民的id
*/
@NotBlank(message = "userId不能为空", groups = AddUserInternalGroup.class)
private String userId;
/**
* icresiuser/persondata接口返参中有此值
*/
private String epmetUserId;
@NotNull(message = "pageNo不能为空", groups = AddUserInternalGroup.class)
private Integer pageNo;
@NotNull(message = "pageSize不能为空", groups = AddUserInternalGroup.class)
private Integer pageSize;
/**
* 研判分析界面查看同类型的需求可以用此接口只需传入分类编码
*/
private String firstCategoryCode;
@NotBlank(message = "tokenDto获取客户id不能为空", groups = AddUserInternalGroup.class)
private String customerId;
}

3
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/DemandRecResultDTO.java

@ -22,7 +22,8 @@ public class DemandRecResultDTO implements Serializable {
private String categoryCode;
private String parentCode;
private String categoryName;
private String firstCategoryCode;
private String firstCategoryName;
//社区帮办:community;楼长帮办:building_caption;党员帮办:party;自身上报:self_help

23
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/demand/IcResiUserReportDemandRes.java

@ -1,10 +1,33 @@
package com.epmet.dto.result.demand;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class IcResiUserReportDemandRes implements Serializable {
private static final long serialVersionUID = 7043350476644105434L;
private String demandRecId;
@JsonIgnore
private String categoryCode;
@JsonIgnore
private String parentCode;
private String categoryName;
private String content;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date wantServiceTime;
@JsonIgnore
private String status;
private String statusName;
}

30
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/controller/IcUserDemandRecController.java

@ -184,13 +184,33 @@ public class IcUserDemandRecController {
/**
* 数据分析-个人档案居民需求列表
* @param fromDTO
* 数据分析-个人档案居民需求列表table
*
* @param formDTO
* @return
*/
@PostMapping("mydemand")
public Result<PageData<IcResiUserReportDemandRes>> queryMyDemand(@RequestBody IcResiUserDemandFromDTO fromDTO){
ValidatorUtils.validateEntity(fromDTO,IcResiUserDemandFromDTO.AddUserInternalGroup.class);
return null;
public Result<PageData<IcResiUserReportDemandRes>> queryMyDemand(@LoginUser TokenDto tokenDto,@RequestBody IcResiUserDemandFromDTO formDTO){
formDTO.setCustomerId(tokenDto.getCustomerId());
ValidatorUtils.validateEntity(formDTO,IcResiUserDemandFromDTO.AddUserInternalGroup.class);
return new Result<PageData<IcResiUserReportDemandRes>>().ok(icUserDemandRecService.queryMyDemand(formDTO));
}
/**
* 数据分析-个人档案居民需求列表-查看需求详情
*
* @param formDTO
* @return
*/
@PostMapping("demandDetail")
public Result<DemandRecResultDTO> queryDemandDetail(@LoginUser TokenDto tokenDto, @RequestBody DemandDetailFormDTO formDTO){
formDTO.setCustomerId(tokenDto.getCustomerId());
ValidatorUtils.validateEntity(formDTO,DemandDetailFormDTO.AddUserInternalGroup.class);
return new Result<DemandRecResultDTO>().ok(icUserDemandRecService.queryDemandDetail(formDTO));
}
}

1
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcResiDemandDictDao.java

@ -65,4 +65,5 @@ public interface IcResiDemandDictDao extends BaseDao<IcResiDemandDictEntity> {
List<IcResiDemandDictEntity> selectSecondCodes(@Param("customerId") String customerId, @Param("cateogryCodes") List<String> categoryCodes);
String selectNameByCode(@Param("customerId")String customerId, @Param("categoryCode") String categoryCode);
}

20
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/dao/IcUserDemandRecDao.java

@ -18,10 +18,13 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.demand.IcResiUserDemandFromDTO;
import com.epmet.dto.form.demand.UserDemandPageFormDTO;
import com.epmet.dto.result.demand.DemandRecResultDTO;
import com.epmet.dto.result.demand.IcResiUserReportDemandRes;
import com.epmet.entity.IcUserDemandRecEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -36,4 +39,21 @@ public interface IcUserDemandRecDao extends BaseDao<IcUserDemandRecEntity> {
List<DemandRecResultDTO> pageSelect(UserDemandPageFormDTO formDTO);
/**
* 数据分析-个人档案居民需求列表table
*
* @param formDTO
* @return
*/
List<IcResiUserReportDemandRes> selectUserDemand(IcResiUserDemandFromDTO formDTO);
/**
* 数据分析-个人档案居民需求详情
*
* @param customerId
* @param demandRecId
* @return
*/
DemandRecResultDTO selectDemandRecDetail(@Param("customerId") String customerId, @Param("demandRecId") String demandRecId);
}

9
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcResiDemandDictService.java

@ -109,4 +109,13 @@ public interface IcResiDemandDictService extends BaseService<IcResiDemandDictEnt
* @return
*/
List<IcResiDemandDictEntity> listByCodes(String customerId, List<String> categoryCodes);
/**
* 查询当前分类的名称
*
* @param customerId
* @param categoryCode
* @return
*/
String getCategoryName(String customerId, String categoryCode);
}

17
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/IcUserDemandRecService.java

@ -22,6 +22,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.IcUserDemandRecDTO;
import com.epmet.dto.form.demand.*;
import com.epmet.dto.result.demand.DemandRecResultDTO;
import com.epmet.dto.result.demand.IcResiUserReportDemandRes;
import com.epmet.entity.IcUserDemandRecEntity;
import java.util.List;
@ -127,4 +128,20 @@ public interface IcUserDemandRecService extends BaseService<IcUserDemandRecEntit
* @param formDTO
*/
void finish(FinishStaffFromDTO formDTO);
/**
* 数据分析-个人档案居民需求列表table
*
* @param formDTO
* @return
*/
PageData<IcResiUserReportDemandRes> queryMyDemand(IcResiUserDemandFromDTO formDTO);
/**
* 数据分析-个人档案居民需求列表-查看需求详情
*
* @param formDTO
* @return
*/
DemandRecResultDTO queryDemandDetail(DemandDetailFormDTO formDTO);
}

14
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcResiDemandDictServiceImpl.java

@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
@ -227,5 +228,18 @@ public class IcResiDemandDictServiceImpl extends BaseServiceImpl<IcResiDemandDic
return baseDao.selectSecondCodes(customerId,categoryCodes);
}
/**
* 查询当前分类的名称
*
* @param customerId
* @param categoryCode
* @return
*/
@Override
public String getCategoryName(String customerId, String categoryCode) {
String categoryName=baseDao.selectNameByCode(customerId,categoryCode);
return StringUtils.isNotBlank(categoryName)?categoryName: StrConstant.EPMETY_STR;
}
}

132
epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/IcUserDemandRecServiceImpl.java

@ -24,7 +24,9 @@ import com.epmet.commons.tools.constant.FieldConstant;
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.DictTypeEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
@ -42,7 +44,9 @@ import com.epmet.dto.form.demand.*;
import com.epmet.dto.result.AllGridsByUserIdResultDTO;
import com.epmet.dto.result.UserBaseInfoResultDTO;
import com.epmet.dto.result.demand.DemandRecResultDTO;
import com.epmet.dto.result.demand.IcResiUserReportDemandRes;
import com.epmet.entity.*;
import com.epmet.feign.EpmetAdminOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.service.IcResiDemandDictService;
@ -50,6 +54,7 @@ import com.epmet.service.IcUserDemandRecService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
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;
@ -79,7 +84,8 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
private IcResiDemandDictService demandDictService;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private EpmetAdminOpenFeignClient adminOpenFeignClient;
@Override
public PageData<IcUserDemandRecDTO> page(Map<String, Object> params) {
@ -238,6 +244,17 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
}
userInfoMap=userInfoRes.getData().stream().collect(Collectors.toMap(UserBaseInfoResultDTO::getUserId, UserBaseInfoResultDTO::getRealName));
}
//查询字典表
Result<Map<String, String>> reportTypeRes=adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_REPORT_TYPE.getCode());
Map<String,String> reportTypeMap=reportTypeRes.success()&& MapUtils.isNotEmpty(reportTypeRes.getData())?reportTypeRes.getData():new HashMap<>();
Result<Map<String, String>> statusRes=adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_STATUS.getCode());
Map<String,String> statusMap=statusRes.success()&& MapUtils.isNotEmpty(statusRes.getData())?statusRes.getData():new HashMap<>();
Result<Map<String, String>> serviceTypeRes=adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_SERVICE_TYPE.getCode());
Map<String,String> serviceTypeMap=serviceTypeRes.success()&& MapUtils.isNotEmpty(serviceTypeRes.getData())?serviceTypeRes.getData():new HashMap<>();
for(DemandRecResultDTO res:list){
if (null != gridInfoMap && gridInfoMap.containsKey(res.getGridId())) {
res.setGridName(gridInfoMap.get(res.getGridId()).getGridName());
@ -246,12 +263,13 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
if (null != dictMap && dictMap.containsKey(res.getCategoryCode())) {
res.setCategoryName(dictMap.get(res.getCategoryCode()));
}
res.setFirstCategoryName(demandDictService.getCategoryName(formDTO.getCustomerId(), res.getFirstCategoryCode()));
if (null != userInfoMap && userInfoMap.containsKey(res.getServerId())) {
res.setServiceName(userInfoMap.get(res.getServerId()));
}
//社区帮办:community;楼长帮办:building_caption;党员帮办:party;自身上报:self_help
switch(res.getReportType()){
res.setReportTypeName(reportTypeMap.containsKey(res.getReportType())?reportTypeMap.get(res.getReportType()):StrConstant.EPMETY_STR);
/*switch(res.getReportType()){
case UserDemandConstant.COMMUNITY_REPORT :
res.setReportTypeName("社区帮办");
break;
@ -264,9 +282,10 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
case UserDemandConstant.SELF_HELP_REPORT :
res.setReportTypeName("自身上报");
break;
}
}*/
//待处理:pending;已取消canceled;已派单:assigned;已接单:have_order;已完成:finished
switch(res.getStatus()){
res.setStatusName(statusMap.containsKey(res.getStatus())?statusMap.get(res.getStatus()):StrConstant.EPMETY_STR);
/*switch(res.getStatus()){
case UserDemandConstant.PENDING :
res.setStatusName("待处理");
break;
@ -282,9 +301,10 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
case UserDemandConstant.FINISHED :
res.setStatusName("已完成");
break;
}
}*/
//服务方类型:志愿者:volunteer;社会组织:social_org;社区自组织:community_org;区域党建单位:party_unit;
switch(res.getServiceType()){
res.setServiceShowName(serviceTypeMap.containsKey(res.getServiceType())?res.getServiceName().concat("(").concat(serviceTypeMap.get(res.getServiceType())).concat(")"):StrConstant.EPMETY_STR);
/*switch(res.getServiceType()){
case UserDemandConstant.VOLUNTEER :
res.setServiceShowName(res.getServiceName().concat("(志愿者)"));
break;
@ -297,7 +317,7 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
case UserDemandConstant.PARTY_UNIT :
res.setServiceShowName(res.getServiceName().concat("(区域化党建单位)"));
break;
}
}*/
}
}
return new PageData<>(list, pageInfo.getTotal());
@ -437,4 +457,100 @@ public class IcUserDemandRecServiceImpl extends BaseServiceImpl<IcUserDemandRecD
demandSatisfactionDao.insert(satisfactionEntity);
}
/**
* 数据分析-个人档案居民需求列表table
*
* @param formDTO
* @return
*/
@Override
public PageData<IcResiUserReportDemandRes> queryMyDemand(IcResiUserDemandFromDTO formDTO) {
/*//1、查询当前居民在小程序里是否有用户id
ResiUserFormDTO resiUserFormDTO=new ResiUserFormDTO();
resiUserFormDTO.setCustomerId(formDTO.getCustomerId());
resiUserFormDTO.setIcResiUserId(formDTO.getUserId());
Result<ResiUserResDTO> userRes=epmetUserOpenFeignClient.findUser(resiUserFormDTO);
if(!userRes.success()){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"/epmetuser/user/finduser接口异常","查找居民端小程序用户信息异常");
}
formDTO.setEpmetUserId(userRes.getData().getEpmetUserId());*/
//icresiuser/persondata接口已经返回去epmetUserId,这里就不需要再查询了。直接让前端传过来
//2、小程序内自己上报+赋能平台待录入的
PageInfo<IcResiUserReportDemandRes> pageInfo = PageHelper.startPage(formDTO.getPageNo(),
formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.selectUserDemand(formDTO));
List<IcResiUserReportDemandRes> list = pageInfo.getList();
if (CollectionUtils.isNotEmpty(list)) {
// 1、状态字典
Result<Map<String, String>> statusRes = adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_STATUS.getCode());
Map<String, String> statusMap = statusRes.success() && MapUtils.isNotEmpty(statusRes.getData()) ? statusRes.getData() : new HashMap<>();
//2、查询分类名称
List<String> categoryCodes = list.stream().map(IcResiUserReportDemandRes::getCategoryCode).collect(Collectors.toList());
List<IcResiDemandDictEntity> dictList = demandDictService.listByCodes(formDTO.getCustomerId(), categoryCodes);
Map<String, String> dictMap = dictList.stream().collect(Collectors.toMap(IcResiDemandDictEntity::getCategoryCode, IcResiDemandDictEntity::getCategoryName));
for (IcResiUserReportDemandRes resDto : list) {
resDto.setStatusName(statusMap.containsKey(resDto.getStatus()) ? statusMap.get(resDto.getStatus()) : StrConstant.EPMETY_STR);
if (null != dictMap && dictMap.containsKey(resDto.getCategoryCode())) {
resDto.setCategoryName(dictMap.get(resDto.getCategoryCode()));
}
}
}
return new PageData<>(list, pageInfo.getTotal());
}
/**
* 数据分析-个人档案居民需求列表-查看需求详情
*
* @param formDTO
* @return
*/
@Override
public DemandRecResultDTO queryDemandDetail(DemandDetailFormDTO formDTO) {
DemandRecResultDTO res = baseDao.selectDemandRecDetail(formDTO.getCustomerId(), formDTO.getDemandRecId());
if (null != res) {
CustomerGridFormDTO customerGridFormDTO = new CustomerGridFormDTO();
customerGridFormDTO.setGridId(res.getGridId());
Result<CustomerGridDTO> gridInfoRes = govOrgOpenFeignClient.getGridBaseInfoByGridId(customerGridFormDTO);
res.setGridName(gridInfoRes.success() && null != gridInfoRes.getData() ? gridInfoRes.getData().getGridNamePath() : StrConstant.EPMETY_STR);
res.setCategoryName(demandDictService.getCategoryName(formDTO.getCustomerId(), res.getCategoryCode()));
res.setFirstCategoryName(demandDictService.getCategoryName(formDTO.getCustomerId(),res.getFirstCategoryCode()));
if (UserDemandConstant.VOLUNTEER.equals(res.getServiceType())) {
// 如果服务方是志愿者,需要查询小程序端的志愿者姓名
List<String> userIdList = Arrays.asList(res.getServerId());
Result<List<UserBaseInfoResultDTO>> userInfoRes = epmetUserOpenFeignClient.queryUserBaseInfo(userIdList);
if (!userInfoRes.success() || CollectionUtils.isEmpty(userInfoRes.getData())) {
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), "查询志愿者信息异常");
}
res.setServiceName(userInfoRes.getData().get(NumConstant.ZERO).getRealName());
}
//查询字典表
Result<Map<String, String>> reportTypeRes = adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_REPORT_TYPE.getCode());
Map<String, String> reportTypeMap = reportTypeRes.success() && MapUtils.isNotEmpty(reportTypeRes.getData()) ? reportTypeRes.getData() : new HashMap<>();
Result<Map<String, String>> statusRes = adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_STATUS.getCode());
Map<String, String> statusMap = statusRes.success() && MapUtils.isNotEmpty(statusRes.getData()) ? statusRes.getData() : new HashMap<>();
Result<Map<String, String>> serviceTypeRes = adminOpenFeignClient.dictMap(DictTypeEnum.USER_DEMAND_SERVICE_TYPE.getCode());
Map<String, String> serviceTypeMap = serviceTypeRes.success() && MapUtils.isNotEmpty(serviceTypeRes.getData()) ? serviceTypeRes.getData() : new HashMap<>();
//社区帮办:community;楼长帮办:building_caption;党员帮办:party;自身上报:self_help
res.setReportTypeName(reportTypeMap.containsKey(res.getReportType()) ? reportTypeMap.get(res.getReportType()) : StrConstant.EPMETY_STR);
//待处理:pending;已取消canceled;已派单:assigned;已接单:have_order;已完成:finished
res.setStatusName(statusMap.containsKey(res.getStatus()) ? statusMap.get(res.getStatus()) : StrConstant.EPMETY_STR);
//服务方类型:志愿者:volunteer;社会组织:social_org;社区自组织:community_org;区域党建单位:party_unit;
res.setServiceShowName(serviceTypeMap.containsKey(res.getServiceType()) ? res.getServiceName().concat("(").concat(serviceTypeMap.get(res.getServiceType())).concat(")") : StrConstant.EPMETY_STR);
}
return res;
}
}

13
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcResiDemandDictDao.xml

@ -223,4 +223,17 @@
</foreach>
</if>
</select>
<select id="selectNameByCode" parameterType="map" resultType="java.lang.String">
SELECT
( CASE WHEN m.PARENT_CODE != '0' THEN concat( p.CATEGORY_NAME, '-', m.CATEGORY_NAME ) ELSE m.CATEGORY_NAME END ) AS categoryName
FROM
ic_resi_demand_dict m
LEFT JOIN ic_resi_demand_dict p ON ( m.PARENT_CODE = p.CATEGORY_CODE AND p.DEL_FLAG = '0' AND m.CUSTOMER_ID = p.CUSTOMER_ID )
WHERE
m.DEL_FLAG = '0'
AND m.CUSTOMER_ID = #{customerId}
AND m.CATEGORY_CODE = #{categoryCode}
</select>
</mapper>

85
epmet-module/epmet-heart/epmet-heart-server/src/main/resources/mapper/IcUserDemandRecDao.xml

@ -70,7 +70,12 @@
s.SERVICE_END_TIME as serviceEndTime,
IFNULL(s.FINISH_DESC,'') as finishDesc,
'' AS serviceShowName,
s.id as serviceId
s.id as serviceId,
(
case when r.PARENT_CODE !='0' then r.PARENT_CODE
ELSE R.CATEGORY_CODE
END
) as firstCategoryCode
FROM
ic_user_demand_rec r
left JOIN ic_user_demand_service s ON ( r.id = s.DEMAND_REC_ID AND s.DEL_FLAG = '0' )
@ -116,4 +121,82 @@
</if>
order by r.WANT_SERVICE_TIME desc,r.CREATED_TIME asc
</select>
<select id="selectUserDemand" parameterType="com.epmet.dto.form.demand.IcResiUserDemandFromDTO" resultType="com.epmet.dto.result.demand.IcResiUserReportDemandRes">
SELECT
r.id as demandRecId,
r.CATEGORY_CODE as categoryCode,
r.PARENT_CODE as parentCode,
r.CONTENT,
r.`STATUS`,
r.WANT_SERVICE_TIME as wantServiceTime
FROM
ic_user_demand_rec r
WHERE
r.DEL_FLAG = '0'
<choose>
<when test="null!=epmetUserId and epmetUserId!='' ">
AND (r.DEMAND_USER_ID = #{userId} or r.DEMAND_USER_ID=#{epmetUserId})
</when>
<otherwise>
AND r.DEMAND_USER_ID = #{userId}
</otherwise>
</choose>
<if test="null !=firstCategoryCode and firstCategoryCode!=''">
and r.CATEGORY_CODE like concat(#{firstCategoryCode},'%')
</if>
ORDER BY
r.WANT_SERVICE_TIME DESC
</select>
<select id="selectDemandRecDetail" parameterType="java.lang.String" resultType="com.epmet.dto.result.demand.DemandRecResultDTO">
SELECT
r.ID as demandRecId,
r.GRID_ID as gridId,
r.agency_id as agencyId,
r.CATEGORY_CODE as categoryCode,
r.PARENT_CODE as parentCode,
r.CONTENT,
r.REPORT_TYPE as reportType,
r.REPORT_TIME as reportTime,
r.REPORT_USER_NAME as reportUserName,
r.REPORT_USER_MOBILE as reportUserMobile,
r.`STATUS` as status,
r.DEMAND_USER_ID as demandUserId,
r.DEMAND_USER_NAME as demandUserName,
r.DEMAND_USER_MOBILE as demandUserMobile,
concat(r.DEMAND_USER_NAME,'(',r.DEMAND_USER_MOBILE,')') as demandUser,
r.WANT_SERVICE_TIME as wantServiceTime,
IFNULL(r.FINISH_RESULT,'') as finishResult,
r.CANCEL_TIME as cancelTime,
r.EVALUATE_FLAG as evaluateFlag,
IFNULL(sa.SCORE,0) as score,
IFNULL( s.SERVICE_TYPE, '' ) AS serviceType,
IFNULL( s.SERVER_ID, '' ) AS serverId,
(
CASE WHEN s.SERVICE_TYPE='social_org' then (select m1.SOCIETY_NAME as socialOrgName from ic_society_org m1 where m1.id=s.SERVER_ID)
WHEN s.SERVICE_TYPE='community_org' then (select m2.ORGANIZATION_NAME as communityName from ic_community_self_organization m2 where m2.id=s.SERVER_ID)
WHEN s.SERVICE_TYPE='party_unit' then (select m3.UNIT_NAME as partyUnitName from ic_party_unit m3 where m3.id=s.SERVER_ID)
else ''
end
) as serviceName,
s.SERVICE_START_TIME as serviceStartTime,
s.SERVICE_END_TIME as serviceEndTime,
IFNULL(s.FINISH_DESC,'') as finishDesc,
'' AS serviceShowName,
s.id as serviceId,
(
case when r.PARENT_CODE !='0' then r.PARENT_CODE
ELSE R.CATEGORY_CODE
END
) as firstCategoryCode
FROM
ic_user_demand_rec r
left JOIN ic_user_demand_service s ON ( r.id = s.DEMAND_REC_ID AND s.DEL_FLAG = '0' )
left join ic_user_demand_satisfaction sa on(r.id=sa.DEMAND_REC_ID AND sa.DEL_FLAG = '0')
WHERE
r.DEL_FLAG = '0'
AND r.CUSTOMER_ID = #{customerId}
and r.id=#{demandRecId}
</select>
</mapper>

5
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CustomerGridFormDTO.java

@ -31,11 +31,12 @@ import java.io.Serializable;
public class CustomerGridFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 网格Id
*/
@NotBlank(message = "网格ID不能为空")
@NotBlank(message = "网格ID不能为空", groups = {Grid.class})
private String gridId;
public interface Grid{}
}

1
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/CustomerGridController.java

@ -103,6 +103,7 @@ public class CustomerGridController {
*/
@PostMapping("getcustomergridbygridid")
public Result<CustomerGridDTO> getCustomerGridByGridId(@RequestBody CustomerGridFormDTO customerGridFormDTO) {
ValidatorUtils.validateEntity(customerGridFormDTO, CustomerGridFormDTO.Grid.class);
return customerGridService.getCustomerGridByGridId(customerGridFormDTO);
}

50
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -71,6 +71,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Function;
@ -2789,4 +2790,53 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
return baseDao.selectByOriginId(originId);
}
/**
* @Description 获取固定时间段之间固定时间的集合
* @param start 开始时间
* @param end 结束时间
* @param interval 间隔时间
* @author zxc
* @date 2021/11/22 3:48 下午
*/
public static List<String> getIntervalTimeList(String start,String end,Integer interval) {
Date startDate = convertStringToDate("HH:mm", start);
Date endDate = convertStringToDate("HH:mm", end);
List<String> list = new ArrayList<>();
while (startDate.getTime() <= endDate.getTime()) {
list.add(convertDateToString("HH:mm", startDate));
Calendar calendar = Calendar.getInstance();
calendar.setTime(startDate);
calendar.add(Calendar.MINUTE, interval);
if (calendar.getTime().getTime() > endDate.getTime()) {
if (!startDate.equals(endDate)) {
list.add(convertDateToString("HH:mm", endDate));
}
startDate = calendar.getTime();
} else {
startDate = calendar.getTime();
}
}
list.remove(list.size() - NumConstant.ONE);
list.add(list.size(),"24:00");
return list;
}
public static Date convertStringToDate(String format, String dateStr) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
try {
Date date = simpleDateFormat.parse(dateStr);
return date;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static String convertDateToString(String format, Date date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
return simpleDateFormat.format(date);
}
}

2
epmet-module/open-data-worker/open-data-worker-server/deploy/docker-compose-prod.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
gov-voice-server:
container_name: open-data-worker-server-prod
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/open-data-worker-server:0.3.69
image: registry-vpc.cn-qingdao.aliyuncs.com/epmet-cloud-master/open-data-worker-server:0.3.1
ports:
- "8107:8107"
network_mode: host # 使用现有网络

1
epmet-module/open-data-worker/open-data-worker-server/pom.xml

@ -2,6 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<version>0.3.1</version>
<parent>
<artifactId>open-data-worker</artifactId>
<groupId>com.epmet</groupId>

14
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/RocketMQConsumerRegister.java

@ -4,11 +4,13 @@ import com.epmet.commons.rocketmq.constants.ConsomerGroupConstants;
import com.epmet.commons.rocketmq.constants.TopicConstants;
import com.epmet.commons.rocketmq.register.MQAbstractRegister;
import com.epmet.commons.rocketmq.register.MQConsumerProperties;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.opendata.mq.listener.OpenDataOrgChangeEventListener;
import com.epmet.opendata.mq.listener.OpenDataPatrolChangeEventListener;
import com.epmet.opendata.mq.listener.OpenDataProjectChangeEventListener;
import com.epmet.opendata.mq.listener.OpenDataStaffChangeEventListener;
import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
@ -19,35 +21,39 @@ import org.springframework.stereotype.Component;
@Component
public class RocketMQConsumerRegister extends MQAbstractRegister {
@Autowired
private DistributedLock distributedLock;
@Override
public void registerAllListeners(String env, MQConsumerProperties consumerProperties) {
// 客户初始化监听器注册
register(consumerProperties,
ConsomerGroupConstants.OPEN_DATA_ORG_CHANGE_EVENT_LISTENER_GROUP,
MessageModel.CLUSTERING,
TopicConstants.ORG,
"*",
new OpenDataOrgChangeEventListener());
new OpenDataOrgChangeEventListener(distributedLock));
register(consumerProperties,
ConsomerGroupConstants.OPEN_DATA_STAFF_CHANGE_EVENT_LISTENER_GROUP,
MessageModel.CLUSTERING,
TopicConstants.STAFF,
"*",
new OpenDataStaffChangeEventListener());
new OpenDataStaffChangeEventListener(distributedLock));
register(consumerProperties,
ConsomerGroupConstants.OPEN_DATA_PATROL_CHANGE_EVENT_LISTENER_GROUP,
MessageModel.CLUSTERING,
TopicConstants.PATROL,
"*",
new OpenDataPatrolChangeEventListener());
new OpenDataPatrolChangeEventListener(distributedLock));
register(consumerProperties,
ConsomerGroupConstants.OPEN_DATA_PROJECT_CHANGE_EVENT_LISTENER_GROUP,
MessageModel.CLUSTERING,
TopicConstants.PROJECT,
"*",
new OpenDataProjectChangeEventListener());
new OpenDataProjectChangeEventListener(distributedLock));
// ...其他监听器类似
}

9
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataOrgChangeEventListener.java

@ -35,6 +35,13 @@ public class OpenDataOrgChangeEventListener implements MessageListenerConcurrent
private RedisUtils redisUtils;
private DistributedLock distributedLock;
public OpenDataOrgChangeEventListener(DistributedLock distributedLock) {
this.distributedLock = distributedLock;
}
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
@ -62,10 +69,8 @@ public class OpenDataOrgChangeEventListener implements MessageListenerConcurrent
logger.info("【开放数据事件监听器】-组织信息变更-收到消息内容:{},操作:{}", msg, tags);
OrgOrStaffMQMsg obj = JSON.parseObject(msg, OrgOrStaffMQMsg.class);
DistributedLock distributedLock = null;
RLock lock = null;
try {
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
lock = distributedLock.getLock(String.format("lock:open_data_org:%s", obj.getOrgId()),
30L, 30L, TimeUnit.SECONDS);

8
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataPatrolChangeEventListener.java

@ -37,6 +37,12 @@ public class OpenDataPatrolChangeEventListener implements MessageListenerConcurr
private RedisUtils redisUtils;
private DistributedLock distributedLock;
public OpenDataPatrolChangeEventListener(DistributedLock distributedLock) {
this.distributedLock = distributedLock;
}
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
@ -67,10 +73,8 @@ public class OpenDataPatrolChangeEventListener implements MessageListenerConcurr
log.warn("consumeMessage msg body is blank");
return;
}
DistributedLock distributedLock = null;
RLock lock = null;
try {
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
lock = distributedLock.getLock(String.format("lock:open_data_patrol:%s", msgObj.getPatrolId()),
30L, 30L, TimeUnit.SECONDS);
UpsertPatrolRecordForm patrolRecordForm = new UpsertPatrolRecordForm();

8
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataProjectChangeEventListener.java

@ -38,6 +38,12 @@ public class OpenDataProjectChangeEventListener implements MessageListenerConcur
private RedisUtils redisUtils;
private DistributedLock distributedLock;
public OpenDataProjectChangeEventListener(DistributedLock distributedLock) {
this.distributedLock = distributedLock;
}
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
@ -68,10 +74,8 @@ public class OpenDataProjectChangeEventListener implements MessageListenerConcur
DisputeProcessMQMsg obj = JSON.parseObject(msg, DisputeProcessMQMsg.class);
EventInfoFormDTO formDTO = ConvertUtils.sourceToTarget(obj, EventInfoFormDTO.class);
DistributedLock distributedLock = null;
RLock lock = null;
try {
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
lock = distributedLock.getLock(String.format("lock:open_data_project:%s", obj.getProjectId()),
30L, 30L, TimeUnit.SECONDS);
SpringContextUtils.getBean(BaseDisputeProcessService.class).getEventinfo(formDTO);

8
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/mq/listener/OpenDataStaffChangeEventListener.java

@ -38,6 +38,12 @@ public class OpenDataStaffChangeEventListener implements MessageListenerConcurre
private RedisUtils redisUtils;
private DistributedLock distributedLock;
public OpenDataStaffChangeEventListener(DistributedLock distributedLock) {
this.distributedLock = distributedLock;
}
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
@ -67,10 +73,8 @@ public class OpenDataStaffChangeEventListener implements MessageListenerConcurre
logger.info("【开放数据事件监听器】-工作人员信息变更-收到消息内容:{}, 操作:{}, blockedMsgLabel:{}", msg, tags, pendingMsgLabel);
OrgOrStaffMQMsg obj = JSON.parseObject(msg, OrgOrStaffMQMsg.class);
DistributedLock distributedLock = null;
RLock lock = null;
try {
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
lock = distributedLock.getLock(String.format("lock:open_data_staff:%s", obj.getOrgId()),
30L, 30L, TimeUnit.SECONDS);

2
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExDeptService.java

@ -46,4 +46,4 @@ public interface ExDeptService extends BaseService<ExDeptEntity> {
**/
void getGridBaseInfo(ExDeptFormDTO formDTO);
}
}

2
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/ExUserService.java

@ -31,7 +31,7 @@ import java.util.Map;
*/
public interface ExUserService extends BaseService<ExUserEntity> {
Map<String, Integer> getUserMap();
Map<String, Integer> getUserMap(String customerId);
/**
* @Author sun

17
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/BaseDisputeProcessServiceImpl.java

@ -32,6 +32,7 @@ import com.epmet.opendata.service.BaseDisputeProcessService;
import com.epmet.opendata.service.ExDeptService;
import com.epmet.opendata.service.ExUserService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -74,7 +75,7 @@ public class BaseDisputeProcessServiceImpl extends BaseServiceImpl<BaseDisputePr
throw new RenException(result.getInternalMsg());
}
Map<String, Integer> deptMap = exDeptService.getDeptMap();
Map<String, Integer> userMap = exUserService.getUserMap();
Map<String, Integer> userMap = exUserService.getUserMap(formDTO.getCustomerId());
List<EventInfoResultDTO> list = result.getData();
saveEvent(formDTO, deptMap, userMap, list);
//分批次循环
@ -100,13 +101,23 @@ public class BaseDisputeProcessServiceImpl extends BaseServiceImpl<BaseDisputePr
entity.setEventName(item.getEventName());
entity.setHappenDate(item.getHappenDate());
entity.setHappenPlace(item.getHappenPlace());
entity.setEventDescription(item.getEventDescription());
String eventDescription = item.getEventDescription();
//如果不为空 长度控制1000以内
if (StringUtils.isNotBlank(eventDescription) && eventDescription.length() > NumConstant.ONE_THOUSAND){
eventDescription = eventDescription.substring(NumConstant.ZERO,NumConstant.ONE_THOUSAND);
}
entity.setEventDescription(eventDescription);
entity.setLng(null == item.getLng()?null:item.getLng().toPlainString());
entity.setLat(null == item.getLat()?null:item.getLat().toPlainString());
entity.setCreateBy(null == userMap.get(item.getReporterId())?null:String.valueOf(userMap.get(item.getReporterId())));
entity.setCreateDate(item.getReportTime());
entity.setUpdateDate(new Date());
entity.setStatus(item.getStatus());
//业务不确定
if (("03").equals(item.getStatus())) {
entity.setSuccessfulOrNot("Y");
}
entity.setEventNo(("py_").concat(item.getId()));
entity.setFirstEventCategory(item.getParentEventCategory());
entity.setSource("01");
entity.setSecondEventCategory(item.getEventCategory());
@ -119,4 +130,4 @@ public class BaseDisputeProcessServiceImpl extends BaseServiceImpl<BaseDisputePr
baseConflictsResolveService.saveOrUpdateBatch(resolveList, formDTO.getPageSize());
}
}
}
}

3
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExDeptServiceImpl.java

@ -56,7 +56,6 @@ public class ExDeptServiceImpl extends BaseServiceImpl<ExDeptDao, ExDeptEntity>
@Override
public Map<String, Integer> getDeptMap() {
LambdaQueryWrapper<ExDeptEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.isNotNull(ExDeptEntity::getGridCode);
List<ExDeptEntity> entityList = baseDao.selectList(wrapper);
if (CollectionUtils.isEmpty(entityList)) {
return Collections.emptyMap();
@ -136,4 +135,4 @@ public class ExDeptServiceImpl extends BaseServiceImpl<ExDeptDao, ExDeptEntity>
}
}
}

4
epmet-module/open-data-worker/open-data-worker-server/src/main/java/com/epmet/opendata/service/impl/ExUserServiceImpl.java

@ -51,8 +51,9 @@ public class ExUserServiceImpl extends BaseServiceImpl<ExUserDao, ExUserEntity>
private DataStatisticalOpenFeignClient dataStatisticalOpenFeignClient;
@Override
public Map<String, Integer> getUserMap() {
public Map<String, Integer> getUserMap(String customerId) {
LambdaQueryWrapper<ExUserEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ExUserEntity::getQxCustomerId, customerId);
List<ExUserEntity> list = baseDao.selectList(wrapper);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyMap();
@ -82,6 +83,7 @@ public class ExUserServiceImpl extends BaseServiceImpl<ExUserDao, ExUserEntity>
entity.setQxUserName(r.getNickName());
entity.setQxMobile(r.getPhonenumber());
entity.setQxCustomerId(formDTO.getCustomerId());
entityList.add(entity);
});
//3.更新数据,不能新增,市平台信息表中必填的

5
epmet-module/open-data-worker/open-data-worker-server/src/main/resources/bootstrap.yml

@ -112,6 +112,11 @@ hystrix:
isolation:
thread:
timeoutInMilliseconds: 60000 #缺省为1000
threadpool:
default:
coreSize: 10
maxQueueSize: 500
queueSizeRejectionThreshold: 500
ribbon:
ReadTimeout: 300000

0
epmet-module/open-data-worker/open-data-worker-server/src/main/resources/init_db.sql → epmet-module/open-data-worker/open-data-worker-server/src/main/resources/db/migration/init_db.sql

4
epmet-module/open-data-worker/open-data-worker-server/src/main/resources/mapper/ExUserDao.xml

@ -33,9 +33,9 @@
</trim>
WHERE 1=1
<foreach collection="list" item="item" open="AND( " separator=" OR " index="index" close=")">
<foreach collection="list" item="item" open="AND ( " separator=" OR " index="index" close=")">
(qx_user_id = #{item.qxUserId} )
</foreach>
</update>
</mapper>
</mapper>

1
epmet-module/resi-mine/resi-mine-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberServiceImpl.java

@ -10,7 +10,6 @@ import com.epmet.resi.mine.dto.from.PartyMemberSubmitFromDTO;
import com.epmet.resi.mine.dto.from.VerificationCodeFromDTO;
import com.epmet.resi.mine.dto.result.PartyMemberInitResultDTO;
import com.epmet.resi.partymember.dto.partymember.PartymemberInfoDTO;
import org.apache.poi.ss.formula.constant.ErrorConstant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

4
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/service/impl/PartyMemberConfirmServiceImpl.java

@ -580,6 +580,8 @@ public class PartyMemberConfirmServiceImpl implements PartyMemberConfirmService
userResiInfoDTO.setDistrict(partyMemberInfoDTO.getEstate());
userResiInfoDTO.setBuildingAddress(partyMemberInfoDTO.getBuilding());
userResiInfoDTO.setCustomerId(partyMemberInfoDTO.getCustomerId());
//注册居民需要录入身份证号
userResiInfoDTO.setIdNum(partyMemberInfoDTO.getIdCard());
Result result = epmetUserFeignClient.saveResiInfo(userResiInfoDTO);
log.info("isResiRegister epmetUserFeignClient.saveResiInfo result:{}",JSON.toJSONString(result));
if (!result.success()){
@ -608,7 +610,7 @@ public class PartyMemberConfirmServiceImpl implements PartyMemberConfirmService
/**
* 保存或者更新热心居民申请行为记录表
* 保存或者更新党员认证行为记录表
*
* @param visitId 主键
* @param fromDTO 参数

5
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/UserResiInfoDTO.java

@ -66,6 +66,11 @@ public class UserResiInfoDTO implements Serializable {
*/
private String name;
/**
* 身份证号,1206新增
*/
private String idNum;
/**
* 街道
*/

6
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/EditInfoFormDTO.java

@ -36,6 +36,12 @@ public class EditInfoFormDTO implements Serializable {
*/
@NotBlank(message = "名不能为空")
private String name;
//@NotBlank(message = "身份证号不能为空")
//@Length(max=18,message = "身份证号不能超过18位")
//别的小程序不统一升级,没办法限制必填。
private String idNum;
/**
* 路牌号
*/

6
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/InfoSubmitFromDTO.java

@ -22,7 +22,6 @@ import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
/**
@ -57,6 +56,11 @@ public class InfoSubmitFromDTO implements Serializable {
@Length(max=20,message = "名称不能超过20个字")
private String name;
//@NotBlank(message = "身份证号不能为空")
//@Length(max=18,message = "身份证号不能超过18位")
//别的小程序不统一升级,没办法限制必填。
private String idNum;
/**
* 街道
*/

4
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PersonDataFormDTO.java

@ -19,4 +19,8 @@ public class PersonDataFormDTO implements Serializable {
@NotBlank(message = "userId不能为空",groups = PersonDataForm.class)
private String userId;
@NotBlank(message = "tokenDto获取customerId不能为空",groups = PersonDataForm.class)
private String customerId;
}

36
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiUserFormDTO.java

@ -0,0 +1,36 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 根据身份证号找人也可根据epmetUserId查询或者icResiUserId
*/
@Data
public class ResiUserFormDTO implements Serializable {
public interface AddUserInternalGroup {
}
/**
* 身份证号
*/
private String idNum;
/**
* epemt_user.user.id
*/
private String epmetUserId;
/**
* ic_resi_user.id
*/
private String icResiUserId;
@NotBlank(message = "客户id不能为空", groups = AddUserInternalGroup.class)
private String customerId;
//@NotBlank(message = "findType不能为空;根据身份证号:byIdNum;根据ic居民:byIc;根据小程序里的居民:byEpmetUser", groups = AddUserInternalGroup.class)
//private String findType;
}

4
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyResiUserInfoResultDTO.java

@ -22,6 +22,10 @@ public class MyResiUserInfoResultDTO implements Serializable {
* 是否已注册居民true ,false
* */
private Boolean registerFlag;
/**
* 是否录入身份证号true ,false
* */
private Boolean completeIdNum;
/**
* 微信昵称可为空
* */

4
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/MyselfMsgResultDTO.java

@ -38,4 +38,8 @@ public class MyselfMsgResultDTO implements Serializable {
* */
private String gridId;
/**
* 身份证号
* */
private String idNum;
}

11
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/PersonDataResultDTO.java

@ -7,7 +7,6 @@ import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @Author zxc
@ -19,6 +18,16 @@ public class PersonDataResultDTO implements Serializable {
private static final long serialVersionUID = 5210308218052783909L;
/**
* epemt_user.user.id
*/
private String epmetUserId;
/**
* ic_resi_user.id
*/
private String icResiUserId;
/**
* 工作单位
*/

15
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiUserResDTO.java

@ -0,0 +1,15 @@
package com.epmet.dto.result;
import com.epmet.dto.form.ResiUserFormDTO;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@Data
public class ResiUserResDTO implements Serializable {
private String idNum;
private String customerId;
private String epmetUserId;
private String icResiUserId;
}

9
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java

@ -660,4 +660,13 @@ public interface EpmetUserOpenFeignClient {
**/
@PostMapping(value = "epmetuser/customerstaff/getbyrealnames")
Result<List<CustomerStaffDTO>> getByRealNames(@RequestBody GetByRealNamesFormDTO formDTO);
/**
* 根据身份证号找人也可根据epmetUserId查询或者icResiUserId
*
* @param formDTO
* @return
*/
@PostMapping(value = "/epmetuser/user/finduser")
Result<ResiUserResDTO> findUser(@RequestBody ResiUserFormDTO formDTO);
}

11
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java

@ -479,4 +479,15 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien
public Result<List<CustomerStaffDTO>> getByRealNames(GetByRealNamesFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getByRealNames", formDTO);
}
/**
* 根据身份证号找人
*
* @param formDTO
* @return
*/
@Override
public Result<ResiUserResDTO> findUser(ResiUserFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "findUser", formDTO);
}
}

4
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java

@ -426,7 +426,9 @@ public class IcResiUserController {
* @date 2021/11/3 9:21 上午
*/
@PostMapping("persondata")
public Result<PersonDataResultDTO> personData(@RequestBody PersonDataFormDTO formDTO) {
public Result<PersonDataResultDTO> personData(@LoginUser TokenDto tokenDto,@RequestBody PersonDataFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
ValidatorUtils.validateEntity(formDTO,PersonDataFormDTO.PersonDataForm.class);
return new Result<PersonDataResultDTO>().ok(icResiUserService.personData(formDTO));
}

13
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserController.java

@ -185,4 +185,17 @@ public class UserController {
}
return new Result<UserDTO>().ok(userService.queryUserClient(userId));
}
/**
* 根据身份证号找人也可根据epmetUserId查询或者icResiUserId
*
*
* @param formDTO
* @return
*/
@PostMapping("finduser")
public Result<ResiUserResDTO> findUser(@RequestBody ResiUserFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO,ResiUserFormDTO.AddUserInternalGroup.class);
return new Result<ResiUserResDTO>().ok(userService.findUser(formDTO));
}
}

4
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java

@ -162,4 +162,8 @@ public interface IcResiUserDao extends BaseDao<IcResiUserEntity> {
List<DemandUserResDTO> selectDemandUsers(@Param("agencyId") String agencyId,
@Param("gridId")String gridId,
@Param("name")String name);
IcResiUserDTO selectIdByIdCard(@Param("customerId") String customerId,
@Param("idNum")String idNum,
@Param("icResiUserId")String icResiUserId);
}

5
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserBaseInfoDao.java

@ -18,6 +18,7 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.UserBaseInfoDTO;
import com.epmet.dto.result.ResiUserBaseInfoResultDTO;
import com.epmet.dto.result.UserBaseInfoResultDTO;
import com.epmet.dto.result.UserWechatResultDTO;
@ -80,4 +81,8 @@ public interface UserBaseInfoDao extends BaseDao<UserBaseInfoEntity> {
* @date 2020.07.30 19:16
**/
String selectIdByUserId(@Param("userId") String userId);
UserBaseInfoDTO selectUserId(@Param("customerId") String customerId,
@Param("idNum")String idNum,
@Param("userId")String userId);
}

11
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/UserResiInfoDao.java

@ -96,4 +96,15 @@ public interface UserResiInfoDao extends BaseDao<UserResiInfoEntity> {
* @return void
*/
void updateByUserId(UserResiInfoEntity entity);
/**
* 身份证
* @param idNum
* @return
*/
Integer selectCountByIdNum(@Param("idNum") String idNum,@Param("customerId") String customerId);
UserResiInfoDTO selectByIdNum(@Param("customerId") String customerId,
@Param("idNum")String idNum,
@Param("userId")String userId);
}

8
epmet-user/epmet-user-server/src/main/java/com/epmet/entity/UserResiInfoEntity.java

@ -20,13 +20,10 @@ package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 用户居民端注册信息表 用户在居民端完善的个人信息
*
@ -60,6 +57,11 @@ public class UserResiInfoEntity extends BaseEpmetEntity {
*/
private String name;
/**
* 身份证号,1206新增
*/
private String idNum;
/**
* 街道
*/

10
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java

@ -20,6 +20,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.IcResiUserEntity;
@ -141,4 +142,13 @@ public interface IcResiUserService extends BaseService<IcResiUserEntity> {
List<FormItemResult> listFormItems(String customerId, String formCode);
List<DemandUserResDTO> queryDemandUsers(DemandUserFormDTO formDTO);
/**
* 返回ic_resi_user.id
*
* @param customerId
* @param idNum
* @return
*/
IcResiUserDTO getByIdCard(String customerId, String idNum,String icResiUserId);
}

2
epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserBaseInfoService.java

@ -189,4 +189,6 @@ public interface UserBaseInfoService extends BaseService<UserBaseInfoEntity> {
* @date 2020.08.21 17:16
**/
ExtUserInfoResultDTO extUserInfo(CommonUserIdFormDTO param);
UserBaseInfoDTO getUserIdByIdNum(String customerId, String idNum,String userId);
}

9
epmet-user/epmet-user-server/src/main/java/com/epmet/service/UserService.java

@ -104,4 +104,13 @@ public interface UserService extends BaseService<UserEntity> {
* @date 2021/9/10 8:50 上午
*/
UserDTO queryUserClient(String userId);
/**
* 根据身份证号找人
*
*
* @param formDTO
* @return
*/
ResiUserResDTO findUser(ResiUserFormDTO formDTO);
}

28
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

@ -21,7 +21,6 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.messages.IcResiUserAddMQMsg;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
@ -47,7 +46,6 @@ import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.IcPlatformConstant;
import com.epmet.constant.IcResiUserConstant;
import com.epmet.constant.SystemMessageType;
import com.epmet.constant.UserConstant;
import com.epmet.dao.IcResiUserDao;
import com.epmet.dto.*;
@ -61,6 +59,7 @@ import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.service.IcResiUserService;
import com.epmet.service.UserService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@ -101,6 +100,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
private IcResiUserImportServiceImpl icResiUserImportService;
@Autowired
private RedisUtils redisUtils;
@Autowired
private UserService userService;
private QueryWrapper<IcResiUserEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
@ -530,6 +531,14 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
if (null == personData){
return new PersonDataResultDTO();
}
//新增以下2个返参
ResiUserFormDTO resiUserFormDTO = new ResiUserFormDTO();
resiUserFormDTO.setIcResiUserId(formDTO.getUserId());
resiUserFormDTO.setCustomerId(formDTO.getCustomerId());
ResiUserResDTO resiUserResDTO = userService.findUser(resiUserFormDTO);
personData.setEpmetUserId(null != resiUserResDTO ? resiUserResDTO.getEpmetUserId() : StrConstant.EPMETY_STR);
personData.setIcResiUserId(formDTO.getUserId());
// 房屋信息查询
Result<List<String>> listResult = govOrgOpenFeignClient.selectHouseInfoByIdCard(personData.getIdCard());
if (!listResult.success()){
@ -852,4 +861,19 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
public List<DemandUserResDTO> queryDemandUsers(DemandUserFormDTO formDTO) {
return baseDao.selectDemandUsers(formDTO.getAgencyId(),formDTO.getGridId(),formDTO.getName());
}
/**
* 返回ic_resi_user.id
*
* @param customerId
* @param idNum
* @return
*/
@Override
public IcResiUserDTO getByIdCard(String customerId, String idNum,String icResiUserId) {
if(StringUtils.isBlank(idNum)&&StringUtils.isBlank(icResiUserId)){
return null;
}
return baseDao.selectIdByIdCard(customerId,idNum,icResiUserId);
}
}

8
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBaseInfoServiceImpl.java

@ -442,4 +442,12 @@ public class UserBaseInfoServiceImpl extends BaseServiceImpl<UserBaseInfoDao, Us
}
return result;
}
@Override
public UserBaseInfoDTO getUserIdByIdNum(String customerId, String idNum,String userId) {
if(StringUtils.isBlank(idNum)&&StringUtils.isBlank(userId)){
return null;
}
return baseDao.selectUserId(customerId,idNum,userId);
}
}

32
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserResiInfoServiceImpl.java

@ -27,6 +27,7 @@ import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
@ -217,6 +218,12 @@ public class UserResiInfoServiceImpl extends BaseServiceImpl<UserResiInfoDao, Us
userResiRegisterVisitService.updateResiRegisterVisit(false, userResiInfoDTO);
return new Result().error(EpmetErrorCode.MOBILE_HAS_BEEN_USED.getCode());
}
//3、身份证号不为空时,判断当前客户下身份证号是否呀已经被使用
if (StringUtils.isNotBlank(userResiInfoDTO.getIdNum())) {
if (baseDao.selectCountByIdNum(userResiInfoDTO.getIdNum(), userResiInfoDTO.getCustomerId()) > NumConstant.ZERO) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "user_resi_info已存在该身份证号", "身份证号已被使用");
}
}
userResiRegisterVisitService.updateResiRegisterVisit(true, userResiInfoDTO);
//4:居民注册关系表新增数据 首次注册数加一 注册数加一 参与数加一
registerRelationService.saveRegisterRelation(userResiInfoDTO);
@ -296,24 +303,25 @@ public class UserResiInfoServiceImpl extends BaseServiceImpl<UserResiInfoDao, Us
Result result = new Result();
//判断手机号是否可用
if (getResiInfoByMobile(userResiInfoDTO.getRegMobile(), userResiInfoDTO.getCustomerId())) {
//居民注册关系表新增数据 首次注册数加一 注册数加一 参与数加一
registerRelationService.saveRegisterRelation(userResiInfoDTO);
//数据存入居民注册表
saveUserResiInfo(userResiInfoDTO);
if (!getResiInfoByMobile(userResiInfoDTO.getRegMobile(), userResiInfoDTO.getCustomerId())) {
log.warn("手机号客户内不可用,没有更新用户信息,param:{}", JSON.toJSONString(userResiInfoDTO));
throw new RenException(EpmetErrorCode.THE_MOBILE_HAS_BEEN_USED.getCode(), EpmetErrorCode.THE_MOBILE_HAS_BEEN_USED.getMsg());
}
if (baseDao.selectCountByIdNum(userResiInfoDTO.getIdNum(), userResiInfoDTO.getCustomerId()) > 0) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "user_resi_info已存在该身份证号", "身份证号已被使用");
}
//居民注册关系表新增数据 首次注册数加一 注册数加一 参与数加一
registerRelationService.saveRegisterRelation(userResiInfoDTO);
//数据存入居民注册表
saveUserResiInfo(userResiInfoDTO);
/* //将用户于居民角色关联 saveUserResiInfo已包含
UserRoleDTO userRole = new UserRoleDTO();
userRole.setUserId(userResiInfoDTO.getUserId());
userRole.setRoleKey(UserConstant.ROLE_RESI);
userRole.setApp(userResiInfoDTO.getApp());
userRoleService.saveUserRole(userRole);*/
//更新该用户在该客户下的注册状态
userCustomerDao.updateRegistered(userResiInfoDTO.getCustomerId(), userResiInfoDTO.getUserId());
}else{
log.warn("手机号客户内不可用,没有更新用户信息,param:{}", JSON.toJSONString(userResiInfoDTO));
throw new RenException(EpmetErrorCode.THE_MOBILE_HAS_BEEN_USED.getCode(),EpmetErrorCode.THE_MOBILE_HAS_BEEN_USED.getMsg());
}
//更新该用户在该客户下的注册状态
userCustomerDao.updateRegistered(userResiInfoDTO.getCustomerId(), userResiInfoDTO.getUserId());
return result;
}

55
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java

@ -2,16 +2,19 @@ package com.epmet.service.impl;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.CpUserDetailRedis;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.UserConstant;
import com.epmet.dao.*;
import com.epmet.dto.CustomerGridDTO;
import com.epmet.dto.UserDTO;
import com.epmet.dto.UserResiInfoDTO;
import com.epmet.dto.UserWechatDTO;
import com.epmet.dao.UserDao;
import com.epmet.dao.UserResiInfoDao;
import com.epmet.dao.UserRoleDao;
import com.epmet.dao.UserWechatDao;
import com.epmet.dto.*;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.UserBaseInfoEntity;
@ -19,6 +22,7 @@ import com.epmet.entity.UserEntity;
import com.epmet.entity.UserWechatEntity;
import com.epmet.feign.EpmetPointOpenFeignClient;
import com.epmet.feign.GovOrgFeignClient;
import com.epmet.service.IcResiUserService;
import com.epmet.service.UserBaseInfoService;
import com.epmet.service.UserService;
import com.epmet.util.ModuleConstant;
@ -53,7 +57,8 @@ public class UserServiceImpl extends BaseServiceImpl<UserDao, UserEntity> implem
private EpmetPointOpenFeignClient epmetPointOpenFeignClient;
@Autowired
private UserResiInfoDao userResiInfoDao;
@Autowired
private IcResiUserService icResiUserService;
private static final Logger log = LoggerFactory.getLogger(UserServiceImpl.class);
@ -183,6 +188,8 @@ public class UserServiceImpl extends BaseServiceImpl<UserDao, UserEntity> implem
MyResiUserInfoResultDTO result = ConvertUtils.sourceToTarget(myselfMsg,MyResiUserInfoResultDTO.class);
//registerFlag 是否已注册居民,true ,false
result.setRegisterFlag(StringUtils.isNotBlank(myselfMsg.getResiId()));
// 已录入身份证号:true;未完善:false.
result.setCompleteIdNum(StringUtils.isNotBlank(myselfMsg.getIdNum()));
result.setRegisterGridName(ModuleConstant.EMPTY_STR);
if(StringUtils.isNotBlank(myselfMsg.getGridId())){
//registerGridName 当前在哪个网格,显示哪个网格的名称
@ -342,4 +349,40 @@ public class UserServiceImpl extends BaseServiceImpl<UserDao, UserEntity> implem
return baseDao.selectByUserId(userId);
}
/**
* 根据身份证号找人也可根据epmetUserId查询或者icResiUserId
*
* @param formDTO
* @return
*/
@Override
public ResiUserResDTO findUser(ResiUserFormDTO formDTO) {
if (StringUtils.isBlank(formDTO.getIdNum()) && StringUtils.isBlank(formDTO.getEpmetUserId()) && StringUtils.isBlank(formDTO.getIcResiUserId())) {
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(),"身份证号、epmetuserId、icResiUserId至少输入一个","至少选择一种查询方式");
}
ResiUserResDTO resiUserResDTO = ConvertUtils.sourceToTarget(formDTO, ResiUserResDTO.class);
//可以根据身份证号查询,也可以根据ic_resi_user.id查询
if (StringUtils.isBlank(formDTO.getIcResiUserId())) {
IcResiUserDTO icResiUser = icResiUserService.getByIdCard(formDTO.getCustomerId(), formDTO.getIdNum(), formDTO.getIcResiUserId());
resiUserResDTO.setIcResiUserId(null != icResiUser ? icResiUser.getId() : StrConstant.EPMETY_STR);
resiUserResDTO.setIdNum(null != icResiUser ? icResiUser.getIdCard() : StrConstant.EPMETY_STR);
}
//可以根据身份证号查询,也可以根据epmet_user.user.id查询
if (StringUtils.isBlank(formDTO.getEpmetUserId())) {
UserBaseInfoDTO userBaseInfoDTO = userBaseInfoService.getUserIdByIdNum(formDTO.getCustomerId(),
formDTO.getIdNum(),
formDTO.getEpmetUserId());
if (null == userBaseInfoDTO || StringUtils.isBlank(userBaseInfoDTO.getUserId())) {
log.info("user_base_info没有找到,去查下user_resi_info表吧");
UserResiInfoDTO userResiInfoDTO = userResiInfoDao.selectByIdNum(formDTO.getCustomerId(),
formDTO.getIdNum(),
formDTO.getEpmetUserId());
resiUserResDTO.setEpmetUserId(null != userResiInfoDTO ? userResiInfoDTO.getId() : StrConstant.EPMETY_STR);
} else {
resiUserResDTO.setEpmetUserId(userBaseInfoDTO.getUserId());
}
}
return resiUserResDTO;
}
}

1
epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.19__user_resi_infoaddidnum.sql

@ -0,0 +1 @@
alter table user_resi_info add COLUMN ID_NUM VARCHAR(32) COMMENT '身份证号,1206新增' AFTER NAME;

16
epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml

@ -308,4 +308,20 @@
ORDER BY
CONVERT ( ir.NAME USING gbk ) ASC
</select>
<select id="selectIdByIdCard" parameterType="map" resultType="com.epmet.dto.IcResiUserDTO">
select
ir.*
FROM
ic_resi_user ir
WHERE
ir.DEL_FLAG = '0'
and ir.customer_id=#{customerId}
<if test="idNum != null and idNum != ''">
and ir.ID_CARD=#{idNum}
</if>
<if test="icResiUserId != null and icResiUserId != ''">
and ir.id=#{icResiUserId}
</if>
</select>
</mapper>

14
epmet-user/epmet-user-server/src/main/resources/mapper/UserBaseInfoDao.xml

@ -120,4 +120,18 @@
WHERE DEL_FLAG = '0'
AND USER_ID = #{userId}
</select>
<select id="selectUserId" parameterType="map" resultType="com.epmet.dto.UserBaseInfoDTO">
SELECT
*
FROM user_base_info
WHERE DEL_FLAG = '0'
AND customer_id = #{=customerId}
<if test="idNum != null and idNum != ''">
and id_num=#{idNum}
</if>
<if test="userId != null and userId != ''">
and user_id=#{userId}
</if>
</select>
</mapper>

3
epmet-user/epmet-user-server/src/main/resources/mapper/UserDao.xml

@ -34,7 +34,8 @@
IFNULL(wechat.NICKNAME,"") AS nickName,
IFNULL(resi.ID,"") AS resiId,
IFNULL(CONCAT(resi.SURNAME,resi.NAME),"") AS userRealName,
IFNULL(relation.GRID_ID,"") AS gridId
IFNULL(relation.GRID_ID,"") AS gridId,
IFNULL(resi.id_num,'')AS idNum
FROM
USER user
LEFT JOIN

27
epmet-user/epmet-user-server/src/main/resources/mapper/UserResiInfoDao.xml

@ -175,4 +175,31 @@
uri.DEL_FLAG = '0'
AND uri.USER_ID = #{userId}
</select>
<select id="selectCountByIdNum" parameterType="map" resultType="java.lang.Integer">
SELECT
count(uri.id)
FROM
user_resi_info uri
WHERE
uri.DEL_FLAG = '0'
AND uri.id_num = #{idNum}
and uri.customer_id=#{customerId}
</select>
<select id="selectByIdNum" parameterType="map" resultType="com.epmet.dto.UserResiInfoDTO">
SELECT
uri.*
FROM
user_resi_info uri
WHERE
uri.DEL_FLAG = '0'
and uri.customer_id=#{customerId}
<if test="idNum != null and idNum != ''">
AND uri.id_num = #{idNum}
</if>
<if test="userId != null and userId != ''">
and uri.user_id=#{userId}
</if>
</select>
</mapper>

Loading…
Cancel
Save