Browse Source

Merge remote-tracking branch 'remotes/烟台/master' into 烟台-政务master

dev
jianjun 3 years ago
parent
commit
aa67941463
  1. 20
      epmet-admin/epmet-admin-client/src/main/java/com/epmet/dto/form/LogOperationListFormDTO.java
  2. 5
      epmet-admin/epmet-admin-client/src/main/java/com/epmet/dto/region/LogOperationResultDTO.java
  3. 17
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/controller/LogOperationController.java
  4. 12
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/dao/LogOperationDao.java
  5. 2
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/RocketMQConsumerRegister.java
  6. 120
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/CheckAndExportOperationLogListener.java
  7. 17
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/LogOperationService.java
  8. 24
      epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/LogOperationServiceImpl.java
  9. 2
      epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.24__alter_log_operation.sql
  10. 35
      epmet-admin/epmet-admin-server/src/main/resources/mapper/LogOperationDao.xml
  11. 79
      epmet-auth/src/main/java/com/epmet/controller/DingdingLoginController.java
  12. 21
      epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java
  13. 2
      epmet-auth/src/main/java/com/epmet/dto/form/DingAppLoginMdFormDTO.java
  14. 2
      epmet-auth/src/main/java/com/epmet/dto/result/ResiDingAppLoginResDTO.java
  15. 8
      epmet-auth/src/main/java/com/epmet/service/GovWebService.java
  16. 11
      epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java
  17. 27
      epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java
  18. 12
      epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java
  19. 41
      epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java
  20. 5
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java
  21. 5
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java
  22. 31
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/CheckMQMsg.java
  23. 28
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/YtDataSyncResDTO.java
  24. 80
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/YtHscyResDTO.java
  25. 8
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/CoverageEnums.java
  26. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  27. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/CommonUserFeignClient.java
  28. 6
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/fallback/CommonUserFeignClientFallback.java
  29. 16
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/processor/MaskProcessor.java
  30. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  31. 33
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java
  32. 27
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerResiUserRedis.java
  33. 15
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/HouseInfoCache.java
  34. 539
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/IcResiUserInfoCache.java
  35. 228
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YtHsResUtils.java
  36. 2
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/controller/CoverageController.java
  37. 7
      epmet-module/data-aggregator/data-aggregator-server/src/main/java/com/epmet/dataaggre/service/impl/CoverageServiceImpl.java
  38. 1
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/constant/DataSourceConstant.java
  39. 23
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/form/stats/UserHouseStatsQueryFormDTO.java
  40. 12
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/feign/DataReportOpenFeignClient.java
  41. 7
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/feign/impl/DataReportOpenFeignClientFallBack.java
  42. 18
      epmet-module/data-report/data-report-client/src/main/java/com/epmet/stats/UserHouseStatsResultDTO.java
  43. 37
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/stats/UserHouseController.java
  44. 17
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/stats/FactAgencyUserHouseDailyDao.java
  45. 17
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/stats/FactGridUserHouseDailyDao.java
  46. 115
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/entity/stats/FactAgencyUserHouseDailyEntity.java
  47. 106
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/entity/stats/FactGridUserHouseDailyEntity.java
  48. 19
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/stats/UserHouseStatsService.java
  49. 87
      epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/stats/impl/UserHouseStatsServiceImpl.java
  50. 33
      epmet-module/data-report/data-report-server/src/main/resources/mapper/stats/FactAgencyUserHouseDailyDao.xml
  51. 32
      epmet-module/data-report/data-report-server/src/main/resources/mapper/stats/FactGridUserHouseDailyDao.xml
  52. 2
      epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java
  53. 6
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/NatInfoScanTask.java
  54. 6
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java
  55. 3
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java
  56. 71
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/DingMiniInfoController.java
  57. 16
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/DingMiniInfoDao.java
  58. 55
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/DingMiniInfoEntity.java
  59. 78
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/DingMiniInfoService.java
  60. 82
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DingMiniInfoServiceImpl.java
  61. 6
      epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.14__add_ding_table.sql
  62. 23
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/DingMiniInfoDao.xml
  63. 6
      epmet-module/epmet-third/epmet-third-server/src/main/test/java/com/epmet/ThirdPlatformTest.java
  64. 1
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/GovMenuController.java
  65. 24
      epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovMenuServiceImpl.java
  66. 13
      epmet-module/gov-access/gov-access-server/src/main/resources/mapper/GovMenuDao.xml
  67. 2
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/constant/NeighborhoodConstant.java
  68. 9
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java
  69. 15
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommunityUserHouseStatsFormDTO.java
  70. 25
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/DetailByTypeFormDTO.java
  71. 15
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/UsingCommunityStatsFormDTO.java
  72. 20
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DetailByTypeResultDTO.java
  73. 20
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseChartResultDTO.java
  74. 16
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseInfoDTO.java
  75. 5
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/SubUserHouseListResultDTO.java
  76. 21
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/UsingCommunityStatsResultDTO.java
  77. 11
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java
  78. 68
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java
  79. 21
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java
  80. 11
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java
  81. 5
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java
  82. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java
  83. 15
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java
  84. 55
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java
  85. 99
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java
  86. 65
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java
  87. 29
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml
  88. 5
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml
  89. 2
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java
  90. 1
      epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml
  91. 5
      epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/TopArticleFormDTO.java
  92. 2
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java
  93. 2
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java
  94. 20
      epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java
  95. 3
      epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartyMemberDTO.java
  96. 6
      epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java
  97. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/constant/IcResiUserConstant.java
  98. 177
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/DataSyncRecordDeathDTO.java
  99. 171
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/DataSyncRecordDisabilityDTO.java
  100. 6
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatDTO.java

20
epmet-admin/epmet-admin-client/src/main/java/com/epmet/dto/form/LogOperationListFormDTO.java

@ -10,4 +10,24 @@ public class LogOperationListFormDTO {
private Integer pageNo = 1;
private Integer pageSize = 10;
/**
* 姓名
*/
private String operatorName;
/**
* 手机号
*/
private String operatorMobile;
/**
* yyyyMMdd
*/
private String startTime;
/**
* yyyyMMdd
*/
private String endTime;
/**
* 默认传data_tm
*/
private String category;
}

5
epmet-admin/epmet-admin-client/src/main/java/com/epmet/dto/region/LogOperationResultDTO.java

@ -1,7 +1,10 @@
package com.epmet.dto.region;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
*
*/
@ -45,4 +48,6 @@ public class LogOperationResultDTO {
*/
private Long operatingTime;
@JsonFormat(pattern="yyyy-MM-dd HH:mm")
private Date operateTime;
}

17
epmet-admin/epmet-admin-server/src/main/java/com/epmet/controller/LogOperationController.java

@ -2,6 +2,7 @@ package com.epmet.controller;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
@ -45,4 +46,20 @@ public class LogOperationController {
return new Result<List<LogOperationResultDTO>>().ok(resultList);
}
/**
* 数字社区-操作记录
* @param formDTO
* @return
*/
@PostMapping("page")
public Result<PageData<LogOperationResultDTO>> page(@RequestBody LogOperationListFormDTO formDTO){
return new Result<PageData<LogOperationResultDTO>>().ok(logOperationService.page(loginUserUtil.getLoginUserCustomerId(),
formDTO.getStartTime(),
formDTO.getEndTime(),
formDTO.getOperatorName(),
formDTO.getOperatorMobile(),
formDTO.getPageNo(),
formDTO.getPageSize(),
formDTO.getCategory()));
}
}

12
epmet-admin/epmet-admin-server/src/main/java/com/epmet/dao/LogOperationDao.java

@ -18,8 +18,12 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.region.LogOperationResultDTO;
import com.epmet.entity.LogOperationEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 操作日指标
@ -29,5 +33,11 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface LogOperationDao extends BaseDao<LogOperationEntity> {
List<LogOperationResultDTO> pageList(@Param("customerId") String customerId,
@Param("startTime")String startTime,
@Param("endTime")String endTime,
@Param("operatorName")String operatorName,
@Param("operatorMobile")String operatorMobile,
@Param("category")String category);
}

2
epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/RocketMQConsumerRegister.java

@ -5,6 +5,7 @@ import com.epmet.commons.rocketmq.constants.TopicConstants;
import com.epmet.commons.rocketmq.register.MQAbstractRegister;
import com.epmet.commons.rocketmq.register.MQConsumerProperties;
import com.epmet.mq.listener.listener.AuthOperationLogListener;
import com.epmet.mq.listener.listener.CheckAndExportOperationLogListener;
import com.epmet.mq.listener.listener.PointOperationLogListener;
import com.epmet.mq.listener.listener.ProjectOperationLogListener;
import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;
@ -19,6 +20,7 @@ public class RocketMQConsumerRegister extends MQAbstractRegister {
register(consumerProperties, ConsomerGroupConstants.AUTH_OPERATION_LOG_GROUP, MessageModel.CLUSTERING, TopicConstants.AUTH, "*", new AuthOperationLogListener());
register(consumerProperties, ConsomerGroupConstants.PROJECT_OPERATION_LOG_GROUP, MessageModel.CLUSTERING, TopicConstants.PROJECT_CHANGED, "*", new ProjectOperationLogListener());
register(consumerProperties, ConsomerGroupConstants.POINT_OPERATION_LOG_GROUP, MessageModel.CLUSTERING, TopicConstants.POINT, "*", new PointOperationLogListener());
register(consumerProperties, ConsomerGroupConstants.CHECK_OR_EXPORT_GROUP, MessageModel.CLUSTERING, TopicConstants.CHECK_OR_EXPORT, "*", new CheckAndExportOperationLogListener());
// ...其他监听器类似
}

120
epmet-admin/epmet-admin-server/src/main/java/com/epmet/mq/listener/listener/CheckAndExportOperationLogListener.java

@ -0,0 +1,120 @@
package com.epmet.mq.listener.listener;
import com.alibaba.fastjson.JSON;
import com.epmet.auth.constants.AuthOperationEnum;
import com.epmet.commons.rocketmq.constants.MQUserPropertys;
import com.epmet.commons.rocketmq.messages.CheckMQMsg;
import com.epmet.commons.rocketmq.messages.LoginMQMsg;
import com.epmet.commons.tools.distributedlock.DistributedLock;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.entity.LogOperationEntity;
import com.epmet.mq.listener.bean.log.LogOperationHelper;
import com.epmet.mq.listener.bean.log.OperatorInfo;
import com.epmet.service.LogOperationService;
import org.apache.commons.lang3.StringUtils;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;
import org.redisson.api.RLock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* @author zxc
* @Description 查询明文或者导出操作日志监听器
*/
public class CheckAndExportOperationLogListener implements MessageListenerConcurrently {
private Logger logger = LoggerFactory.getLogger(getClass());
private RedisUtils redisUtils;
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
if (redisUtils == null) {
redisUtils = SpringContextUtils.getBean(RedisUtils.class);
}
try {
msgs.forEach(msg -> consumeMessage(msg));
} catch (Exception e) {
logger.error(ExceptionUtils.getErrorStackTrace(e));
return ConsumeConcurrentlyStatus.RECONSUME_LATER;
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
private void consumeMessage(MessageExt messageExt) {
String tags = messageExt.getTags();
String msg = new String(messageExt.getBody());
String pendingMsgLabel = messageExt.getUserProperty(MQUserPropertys.BLOCKED_MSG_LABEL);
logger.info("查询明文或者导出操作日志监听器-收到消息内容:{}", msg);
CheckMQMsg msgObj = JSON.parseObject(msg, CheckMQMsg.class);
//获取操作人信息
OperatorInfo operatorInfo = LogOperationHelper.getInstance().getOperatorInfo(msgObj.getUserId());
LogOperationEntity logEntity = new LogOperationEntity();
logEntity.setCategory("data_tm");
logEntity.setType(msgObj.getType());
logEntity.setTypeDisplay(msgObj.getTypeDisplay());
logEntity.setIp(msgObj.getIp());
logEntity.setFromApp(msgObj.getFromApp());
logEntity.setFromClient(msgObj.getFromClient());
logEntity.setTargetId("");
logEntity.setCustomerId(operatorInfo.getCustomerId());
logEntity.setOperatorId(msgObj.getUserId());
logEntity.setOperatorName(operatorInfo.getName());
logEntity.setOperatorMobile(operatorInfo.getMobile());
logEntity.setOperatingTime(msgObj.getOperateTime());
logEntity.setContent(msgObj.getContent());
DistributedLock distributedLock = null;
RLock lock = null;
try {
distributedLock = SpringContextUtils.getBean(DistributedLock.class);
lock = distributedLock.getLock(String.format("lock:auth_operation_log:%s:%s", logEntity.getType(), logEntity.getOperatorId()),
30L, 30L, TimeUnit.SECONDS);
SpringContextUtils.getBean(LogOperationService.class).log(logEntity);
} catch (RenException e) {
// 如果是我们手动抛出的异常,说明在业务可控范围内。目前不需要MQ重试
logger.error("【RocketMQ】添加操作日志失败:".concat(ExceptionUtils.getErrorStackTrace(e)));
} catch (Exception e) {
// 不是我们自己抛出的异常,可以让MQ重试
logger.error("【RocketMQ】添加操作日志失败:".concat(ExceptionUtils.getErrorStackTrace(e)));
throw e;
} finally {
distributedLock.unLock(lock);
}
if (StringUtils.isNotBlank(pendingMsgLabel)) {
try {
removePendingMqMsgCache(pendingMsgLabel);
} catch (Exception e) {
logger.error("【查询明文或者导出操作日志监听器】-删除mq阻塞消息缓存失败:{}", ExceptionUtils.getErrorStackTrace(e));
}
}
}
/**
* @description
*
* @param pendingMsgLabel
* @return
* @author wxz
* @date 2021.10.14 16:32:32
*/
private void removePendingMqMsgCache(String pendingMsgLabel) {
String key = RedisKeys.blockedMqMsgKey(pendingMsgLabel);
redisUtils.delete(key);
//logger.info("【登录操作事件监听器】删除pendingMsgLabel成功:{}", pendingMsgLabel);
}
}

17
epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/LogOperationService.java

@ -1,5 +1,6 @@
package com.epmet.service;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.region.LogOperationResultDTO;
import com.epmet.entity.LogOperationEntity;
@ -25,4 +26,20 @@ public interface LogOperationService {
* @date 2021.06.07 21:56
*/
List<LogOperationResultDTO> listOperationLogs(String condition, String customerId, Integer pageNo, Integer pageSize);
/**
* 数字社区-操作记录
* @param loginUserCustomerId
* @param startTime
* @param endTime
* @param operatorName
* @param operatorMobile
* @return
*/
PageData<LogOperationResultDTO> page(String loginUserCustomerId,
String startTime,
String endTime,
String operatorName,
String operatorMobile,
Integer pageNo, Integer pageSize,String category);
}

24
epmet-admin/epmet-admin-server/src/main/java/com/epmet/service/impl/LogOperationServiceImpl.java

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.LogOperationDao;
import com.epmet.dto.CustomerStaffDTO;
@ -15,6 +16,8 @@ import com.epmet.dto.region.LogOperationResultDTO;
import com.epmet.entity.LogOperationEntity;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.service.LogOperationService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -174,7 +177,28 @@ public class LogOperationServiceImpl implements LogOperationService, ResultDataR
ldto.setCustomerId(l.getCustomerId());
ldto.setOperatorMobile(staffMap.get(l.getOperatorId()).getMobile());
ldto.setOperatorName(staffMap.get(l.getOperatorId()).getRealName());
ldto.setOperateTime(l.getOperatingTime());
return ldto;
}).collect(Collectors.toList());
}
/**
* 数字社区-操作记录
*
* @param customerId
* @param startTime
* @param endTime
* @param operatorName
* @param operatorMobile
* @return
*/
@Override
public PageData<LogOperationResultDTO> page(String customerId, String startTime, String endTime, String operatorName, String operatorMobile,
Integer pageNo, Integer pageSize,String category) {
// 列表/导出查询
PageHelper.startPage(pageNo, pageSize);
List<LogOperationResultDTO> list = logOperationDao.pageList(customerId, startTime, endTime, operatorName, operatorMobile,category);
PageInfo<LogOperationResultDTO> pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
}

2
epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.24__alter_log_operation.sql

@ -0,0 +1,2 @@
ALTER TABLE log_operation MODIFY COLUMN CATEGORY varchar(64) not null COMMENT '操作类型大类。例如login和logout都属于login大类。项目立项,项目流转,项目结案都属于项目大类;data_tm:数据脱敏;';

35
epmet-admin/epmet-admin-server/src/main/resources/mapper/LogOperationDao.xml

@ -26,5 +26,38 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="pageList" parameterType="map" resultType="com.epmet.dto.region.LogOperationResultDTO">
SELECT
lo.CATEGORY as category,
lo.TYPE as type,
lo.TYPE_DISPLAY as typeDisplay,
lo.CONTENT as content,
lo.TARGET_ID as targetId,
lo.CUSTOMER_ID as customerId,
lo.OPERATOR_ID as operatorId,
lo.OPERATOR_NAME as operatorName,
lo.OPERATOR_MOBILE as operatorMobile,
lo.OPERATING_TIME as operateTime
FROM
log_operation lo
WHERE
lo.del_flag = '0'
AND lo.CUSTOMER_ID = #{customerId}
<if test="category != null and category != ''">
AND lo.CATEGORY = #{category}
</if>
<if test="operatorName != null and operatorName != ''">
AND lo.OPERATOR_NAME LIKE concat('%',#{operatorName},'%')
</if>
<if test="operatorMobile != null and operatorMobile != ''">
AND lo.OPERATOR_MOBILE LIKE concat('%',#{operatorMobile},'%')
</if>
<if test="startTime != null and startTime != ''">
AND DATE_FORMAT( lo.OPERATING_TIME, '%Y%m%d' ) &gt;= #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND DATE_FORMAT( lo.OPERATING_TIME, '%Y%m%d' ) &lt;= #{endTime}
</if>
ORDER BY lo.OPERATING_TIME DESC
</select>
</mapper>

79
epmet-auth/src/main/java/com/epmet/controller/DingdingLoginController.java

@ -0,0 +1,79 @@
package com.epmet.controller;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.OapiGettokenRequest;
import com.dingtalk.api.request.OapiSnsGetuserinfoBycodeRequest;
import com.dingtalk.api.request.OapiUserGetbyunionidRequest;
import com.dingtalk.api.request.OapiV2UserGetRequest;
import com.dingtalk.api.response.OapiGettokenResponse;
import com.dingtalk.api.response.OapiSnsGetuserinfoBycodeResponse;
import com.dingtalk.api.response.OapiUserGetbyunionidResponse;
import com.dingtalk.api.response.OapiV2UserGetResponse;
import com.epmet.commons.tools.utils.Result;
import com.taobao.api.ApiException;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 免登第三方网站
*
* @author openapi@dingtalk
*/
@RestController("dingtalk")
public class DingdingLoginController {
/**
* 获取授权用户的个人信息 openapi@dingtalk
*
* @return
* @throws Exception ServiceResult<Map<String,Object>> 2020-11-4
*/
@RequestMapping(value = "/auth", method = RequestMethod.GET)
public Result<String> getDdScan(@RequestParam("code") String code) throws Exception {
// 获取access_token,注意正式代码要有异常流处理
String access_token = this.getToken();
// 通过临时授权码获取授权用户的个人信息
DefaultDingTalkClient client2 = new DefaultDingTalkClient("https://oapi.dingtalk.com/sns/getuserinfo_bycode");
OapiSnsGetuserinfoBycodeRequest reqBycodeRequest = new OapiSnsGetuserinfoBycodeRequest();
reqBycodeRequest.setTmpAuthCode(code);
OapiSnsGetuserinfoBycodeResponse bycodeResponse = client2.execute(reqBycodeRequest, "yourAppId", "yourAppSecret");
// 根据unionid获取userid
String unionid = bycodeResponse.getUserInfo().getUnionid();
DingTalkClient clientDingTalkClient = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/user/getbyunionid");
OapiUserGetbyunionidRequest reqGetbyunionidRequest = new OapiUserGetbyunionidRequest();
reqGetbyunionidRequest.setUnionid(unionid);
OapiUserGetbyunionidResponse oapiUserGetbyunionidResponse = clientDingTalkClient.execute(reqGetbyunionidRequest, access_token);
// 根据userId获取用户信息
String userid = oapiUserGetbyunionidResponse.getResult().getUserid();
DingTalkClient clientDingTalkClient2 = new DefaultDingTalkClient(
"https://oapi.dingtalk.com/topapi/v2/user/get");
OapiV2UserGetRequest reqGetRequest = new OapiV2UserGetRequest();
reqGetRequest.setUserid(userid);
//reqGetRequest.setLang("zh_CN");
OapiV2UserGetResponse rspGetResponse = clientDingTalkClient2.execute(reqGetRequest, access_token);
System.out.println(rspGetResponse.getBody());
return new Result<String>().ok(rspGetResponse.getBody());
}
private String getToken() throws RuntimeException {
try {
DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
OapiGettokenRequest request = new OapiGettokenRequest();
request.setAppkey("dingiopfbtn8mktfoaf0");
request.setAppsecret("RcmHIoP5KFLZSM5wzpYhvCKMMKEzLoWPtqu3OqOEBD6myg4IT8oVw4AwvRkKYKJz");
request.setHttpMethod("GET");
OapiGettokenResponse response = client.execute(request);
return response.getAccessToken();
} catch (ApiException e) {
throw new RuntimeException();
}
}
}

21
epmet-auth/src/main/java/com/epmet/controller/ThirdLoginController.java

@ -9,7 +9,10 @@ import com.epmet.dto.result.UserTokenResultDTO;
import com.epmet.service.ThirdLoginService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@ -174,7 +177,7 @@ public class ThirdLoginController {
* @return
*/
@PostMapping("resilogin-ding-md")
public Result<ResiDingAppLoginResDTO> resiLoginDingMd(@RequestBody ResiDingAppLoginMdFormDTO formDTO) {
public Result<ResiDingAppLoginResDTO> resiLoginDingMd(@RequestBody DingAppLoginMdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<ResiDingAppLoginResDTO>().ok(thirdLoginService.resiLoginDingMd(formDTO));
}
@ -200,8 +203,20 @@ public class ThirdLoginController {
* @return
*/
@PostMapping("resilogin-internalding")
public Result<ResiDingAppLoginResDTO> resiLoginInternalDing(@RequestBody ResiDingAppLoginMdFormDTO formDTO) {
public Result<ResiDingAppLoginResDTO> resiLoginInternalDing(@RequestBody DingAppLoginMdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<ResiDingAppLoginResDTO>().ok(thirdLoginService.resiLoginInternalDing(formDTO));
}
/**
* 根据免登授权码, 获取登录用户身份
*
* @param formDTO 免登授权码
* @return
*/
@PostMapping("govlogin-internalding")
public Result<UserTokenResultDTO> login(@RequestBody DingAppLoginMdFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO);
return new Result<UserTokenResultDTO>().ok(thirdLoginService.govLoginInternalDing(formDTO));
}
}

2
epmet-auth/src/main/java/com/epmet/dto/form/ResiDingAppLoginMdFormDTO.java → epmet-auth/src/main/java/com/epmet/dto/form/DingAppLoginMdFormDTO.java

@ -10,7 +10,7 @@ import javax.validation.constraints.NotBlank;
* @Date 2022/9/22 10:42
*/
@Data
public class ResiDingAppLoginMdFormDTO {
public class DingAppLoginMdFormDTO {
@NotBlank(message = "authCode不能为空")
private String authCode;
/**

2
epmet-auth/src/main/java/com/epmet/dto/result/ResiDingAppLoginResDTO.java

@ -38,5 +38,7 @@ public class ResiDingAppLoginResDTO {
* false:未注册
*/
private Boolean regFlag;
private String realName;
}

8
epmet-auth/src/main/java/com/epmet/service/GovWebService.java

@ -18,6 +18,14 @@ public interface GovWebService {
**/
UserTokenResultDTO login(GovWebLoginFormDTO formDTO);
/**
* @param formDTO
* @return
* @Author sun
* @Description PC工作端-工作人员 通过第三方系统登录
**/
UserTokenResultDTO loginByThirdPlatform(GovWebLoginFormDTO formDTO);
/**
* 区块链系统通过用户密码认证身份
* @param mobile

11
epmet-auth/src/main/java/com/epmet/service/ThirdLoginService.java

@ -102,12 +102,19 @@ public interface ThirdLoginService {
* @param formDTO
* @return
*/
ResiDingAppLoginResDTO resiLoginDingMd(ResiDingAppLoginMdFormDTO formDTO);
ResiDingAppLoginResDTO resiLoginDingMd(DingAppLoginMdFormDTO formDTO);
/**
* 企业内部应用免登 文档地址https://open.dingtalk.com/document/orgapp-server/enterprise-internal-application-logon-free
* @param formDTO
* @return
*/
ResiDingAppLoginResDTO resiLoginInternalDing(ResiDingAppLoginMdFormDTO formDTO);
ResiDingAppLoginResDTO resiLoginInternalDing(DingAppLoginMdFormDTO formDTO);
/**
* desc:企业内部应用 工作端登录
* @param formDTO
* @return
*/
UserTokenResultDTO govLoginInternalDing(DingAppLoginMdFormDTO formDTO);
}

27
epmet-auth/src/main/java/com/epmet/service/impl/GovWebServiceImpl.java

@ -100,6 +100,33 @@ public class GovWebServiceImpl implements GovWebService, ResultDataResolver {
}
@Override
public UserTokenResultDTO loginByThirdPlatform(GovWebLoginFormDTO formDTO) {
formDTO.setApp(LoginConstant.APP_GOV);
formDTO.setClient(LoginConstant.CLIENT_WEB);
// //1.参数校验
// if (!(LoginConstant.APP_GOV.equals(formDTO.getApp()) && LoginConstant.CLIENT_WEB.equals(formDTO.getClient()))) {
// logger.error("当前接口只适用于PC工作端运营管理后台");
// throw new RenException("当前接口只适用于PC工作端运营管理后台");
// }
//3.校验登陆账号是否存在
//根据客户Id和手机号查询登陆用户信息(此处不需要判断登陆人是否是有效客户以及是否是客户的根管理员,前一接口获取登陆手机号对应客户列表已经判断了)
GovWebOperLoginFormDTO form = new GovWebOperLoginFormDTO();
form.setCustomerId(formDTO.getCustomerId());
form.setMobile(formDTO.getPhone());
Result<GovWebOperLoginResultDTO> result = epmetUserFeignClient.getStaffIdAndPwd(form);
if (!result.success() || null == result.getData() || null == result.getData().getUserId()) {
logger.warn("根据手机号查询PC工作端登陆人员信息失败,返回10003账号不存在");
throw new RenException(EpmetErrorCode.ERR10003.getCode());
}
GovWebOperLoginResultDTO resultDTO = result.getData();
//5.生成token存到redis并返回
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
userTokenResultDTO.setToken(this.packagingUserToken(formDTO, resultDTO.getUserId()));
return userTokenResultDTO;
}
/**
* 生成PC工作端token
* @author sun

12
epmet-auth/src/main/java/com/epmet/service/impl/LoginServiceImpl.java

@ -6,8 +6,10 @@ import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import com.alibaba.fastjson.JSON;
import com.epmet.common.token.constant.LoginConstant;
import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.password.PasswordUtils;
import com.epmet.commons.tools.utils.CpUserDetailRedis;
@ -130,13 +132,13 @@ public class LoginServiceImpl implements LoginService {
}
}
} catch (WxErrorException e) {
log.error("->[getMaOpenId]::error[{}]", "解析微信code失败",e);
log.warn("->[getMaOpenId]::error[{}]", "解析微信code失败",e);
}
if (null == wxMaJscode2SessionResult) {
log.error(String.format("解析微信用户信息失败,app[%s],wxCode[%s],result:[%S]",app,wxCode, JSON.toJSONString(wxMaJscode2SessionResult)));
log.warn(String.format("解析微信用户信息失败,app[%s],wxCode[%s],result:[%S]",app,wxCode, JSON.toJSONString(wxMaJscode2SessionResult)));
throw new RenException("解析微信用户信息失败");
} else if (StringUtils.isBlank(wxMaJscode2SessionResult.getOpenid())) {
log.error(String.format("获取微信openid失败,app[%s],wxCode[%s]",app,wxCode));
log.warn(String.format("获取微信openid失败,app[%s],wxCode[%s]",app,wxCode));
throw new RenException("获取微信openid失败");
}
return wxMaJscode2SessionResult;
@ -366,6 +368,10 @@ public class LoginServiceImpl implements LoginService {
} else {
logger.error(String.format("运营人员%s退出成功,清空菜单和权限redis异常", tokenDto.getUserId()));
}
//如果是工作端退出,删除当前工作人员缓存
if(AppClientConstant.APP_GOV.equals(tokenDto.getApp())){
CustomerStaffRedis.delStaffInfoFormCache(tokenDto.getCustomerId(),tokenDto.getUserId());
}
return new Result();
}

41
epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java

@ -34,11 +34,13 @@ import com.epmet.dto.dingres.V2UserGetuserinfoResDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.jwt.JwtTokenProperties;
import com.epmet.jwt.JwtTokenUtils;
import com.epmet.redis.CaptchaRedis;
import com.epmet.service.GovWebService;
import com.epmet.service.ThirdLoginService;
import com.taobao.api.ApiException;
import com.taobao.dingtalk.client.DingTalkClientToken;
@ -90,6 +92,10 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
private DingTalkClientToken dingTalkClientToken;
@Autowired
private DingTalkClientUser dingTalkClientUser;
@Autowired
private EpmetUserFeignClient epmetUserFeignClient;
@Autowired
private GovWebService govWebService;
/**
* @param formDTO
@ -920,7 +926,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
}
@Override
public ResiDingAppLoginResDTO resiLoginDingMd(ResiDingAppLoginMdFormDTO formDTO) {
public ResiDingAppLoginResDTO resiLoginDingMd(DingAppLoginMdFormDTO formDTO) {
// 获取用户手机号
log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO));
ResiDingAppLoginResDTO resDTO = null;
@ -1020,17 +1026,16 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
* @return
*/
@Override
public ResiDingAppLoginResDTO resiLoginInternalDing(ResiDingAppLoginMdFormDTO formDTO) {
public ResiDingAppLoginResDTO resiLoginInternalDing(DingAppLoginMdFormDTO formDTO) {
// 获取用户手机号
log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO));
ResiDingAppLoginResDTO resDTO = null;
resDTO = new ResiDingAppLoginResDTO();
ResiDingAppLoginResDTO resDTO = new ResiDingAppLoginResDTO();
resDTO.setCustomerId(getCurrentCustomerId());
// 1、获取用户手机号
DingLoginResiFormDTO dingLoginResiFormDTO = getDingLoginResiFormDTOInternal(formDTO.getMiniAppId(), formDTO.getAuthCode());
dingLoginResiFormDTO.setCustomerId(resDTO.getCustomerId());
resDTO.setRealName(dingLoginResiFormDTO.getNick());
// 2、调用userfeign接口获取userId、注册网格相关信息
Result<DingLoginResiResDTO> loginResiResDTOResult = epmetUserOpenFeignClient.dingResiLogin(dingLoginResiFormDTO);
if (!loginResiResDTOResult.success() || null == loginResiResDTOResult.getData()) {
@ -1052,6 +1057,26 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
return resDTO;
}
@Override
public UserTokenResultDTO govLoginInternalDing(DingAppLoginMdFormDTO formDTO) {
// 获取用户手机号
log.info("1、钉钉居民端应用登录入参:" + JSON.toJSONString(formDTO));
ResiDingAppLoginResDTO resDTO = null;
resDTO = new ResiDingAppLoginResDTO();
resDTO.setCustomerId(getCurrentCustomerId());
// 1、获取用户手机号
DingLoginResiFormDTO dingLoginResiFormDTO = getDingLoginResiFormDTOInternal(formDTO.getMiniAppId(), formDTO.getAuthCode());
dingLoginResiFormDTO.setCustomerId(resDTO.getCustomerId());
GovWebLoginFormDTO loginGovParam = new GovWebLoginFormDTO();
loginGovParam.setCustomerId(dingLoginResiFormDTO.getCustomerId());
loginGovParam.setPhone(dingLoginResiFormDTO.getMobile());
return govWebService.loginByThirdPlatform(loginGovParam);
}
/**
* 最原始的企业内部应用开发不授权给产品服务商
* @param miniAppId
@ -1060,12 +1085,14 @@ public class ThirdLoginServiceImpl implements ThirdLoginService, ResultDataResol
*/
private DingLoginResiFormDTO getDingLoginResiFormDTOInternal(String miniAppId, String authCode) {
DingMiniInfoCache dingMiniInfo = CustomerDingDingRedis.getDingMiniInfo(miniAppId);
if (dingMiniInfo == null){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取钉钉应用配置异常", "获取钉钉应用配置异常");
}
// 1、获取企业内部应用的accessToken文档地址:https://open.dingtalk.com/document/orgapp-server/obtain-the-access_token-of-an-internal-app
String accessToken = "";
DingTalkResult<String> dingTalkResult = dingTalkClientToken.getAppAccessTokenToken(dingMiniInfo.getSuiteKey(), dingMiniInfo.getSuiteSecret());
if (!dingTalkResult.success() || StringUtils.isBlank(dingTalkResult.getData())) {
log.error(String.format("获取企业内部应用的accessToken失败,customKey:%s,customSecret:%s", dingMiniInfo.getSuiteSecret(), dingMiniInfo.getSuiteSecret()));
log.error(String.format("获取企业内部应用的accessToken失败,customKey:%s,customSecret:%s", dingMiniInfo.getSuiteKey(), dingMiniInfo.getSuiteSecret()));
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取企业内部应用的accessToken异常", "获取企业内部应用的accessToken");
}
accessToken = dingTalkResult.getData();

5
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java

@ -108,4 +108,9 @@ public interface ConsomerGroupConstants {
* 党建积分操作消费组
*/
String PARTY_BUILDING_GROUP = "party_building_group";
/**
* 查看或者导出 日志记录 消费组
*/
String CHECK_OR_EXPORT_GROUP = "check_or_export_group";
}

5
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java

@ -91,4 +91,9 @@ public interface TopicConstants {
String IC_MESSAGE = "ic_message";
String PARTY_BUILDING = "party_building";
/**
* 查看或者导出 日志记录
*/
String CHECK_OR_EXPORT = "check_or_export";
}

31
epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/CheckMQMsg.java

@ -0,0 +1,31 @@
package com.epmet.commons.rocketmq.messages;
import lombok.Data;
import java.util.Date;
@Data
public class CheckMQMsg {
/**
* 谁登录
*/
private String userId;
private String content;
private String typeDisplay;
private String type;
/**
* 操作时间
*/
private Date operateTime;
private String ip;
private String fromApp;
private String fromClient;
}

28
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/YtDataSyncResDTO.java

@ -0,0 +1,28 @@
package com.epmet.commons.tools.dto.result;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Description
* @Author yzm
* @Date 2022/9/26 17:04
*/
@NoArgsConstructor
@Data
public class YtDataSyncResDTO {
private int code = 200;
private String msg = "请求成功";
/**
* 响应数据
*/
private String data;
private int total;
public YtDataSyncResDTO(int code, String msg, String data) {
this.code = code;
this.msg = msg;
this.data = data;
}
}

80
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/YtHscyResDTO.java

@ -0,0 +1,80 @@
package com.epmet.commons.tools.dto.result;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Description 核算采样结果
* @Author yzm
* @Date 2022/9/26 17:04
*/
@NoArgsConstructor
@Data
public class YtHscyResDTO {
private int code = 200;
private String msg = "请求成功";
/**
* 响应数据
*/
private List<YtHscyResDetail> data;
private int total;
@Data
public static class YtHscyResDetail {
private String id;
private String name;
private String card_type;
private String card_no;
private String create_by;
/**
* 采样时间
*/
private String create_time;
private String sys_org_code;
private String sample_tube;
private String package_id;
private String city;
private String uuid;
private String county;
private String depart_ids;
private Object depart_name;
/**
* 采样点名称
*/
private String realname;
private String upload_time;
private Object sd_id;
private Object sd_batch;
private Object sd_operation;
private Object sd_time;
private String inserttime;
}
/*{
"id":"1570924677539635484",
"name":"杨XX",//姓名
"card_type":"1",//证件类型
"card_no":"37************0813",//证件号码
"create_by":"370613594",//采样点账号
"create_time":"2022-09-17 07:15:22",//采样时间
"sys_org_code":"370613",//部门代码
"sample_tube":"GCJ-0825-0441",//采样管号
"package_id":"bcj00208083952",//采样包号
"city":"烟台市",//城市
"uuid":"6225684525062602095",//
"county":"莱山区",//区县
"depart_ids":"未填写",//街道
"depart_name":null,//部门名称
"realname":"采样点327",//采样点名称
"upload_time":"2022-09-17 07:56:45",//自增时间戳
"sd_id":null,
"sd_batch":null,
"sd_operation":null,
"sd_time":null,
"inserttime":"2022-09-17 09:36:20"//省大数据局返还烟台入库时间
}*/
}

8
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/CoverageEnums.java

@ -6,10 +6,10 @@ package com.epmet.commons.tools.enums;
public enum CoverageEnums {
ZHZL("zhzl", "综合治理图层", 1),
YJCL("yjcl", "应急处置资源", 1),
AQSC("aqsc", "安全生产资源", 1),
CSGL("csgl", "城市管理资源", 1),
GGFW("ggfw", "公共服务资源", 1),
YJCL("yjcl", "应急处置图层", 1),
AQSC("aqsc", "安全生产图层", 1),
CSGL("csgl", "城市管理图层", 1),
GGFW("ggfw", "公共服务图层", 1),
DATA_TYPE_GOVERNED_TARGET("governedTarget", "被管理对象", 2),
DATA_TYPE_RESOURCES("resources", "资源", 2);

4
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java

@ -263,6 +263,10 @@ public enum EpmetErrorCode {
UNIT_EXIST_HOUSES_ERROR(8928,"单元下存在房屋,不可修改单元数"),
IC_VACCINE(8929,"已存在相同记录,请去修改原有记录"),
NOT_MATCH_IC_USER_ERROR(8930,"请联系社区工作人员"),
NAT_TIME_IS_NULL_ERROR(8931,"检测时间不能为空"),
NAT_RESULT_IS_NULL_ERROR(8932,"检测结果不能为空"),
SAMPLE_TIME_IS_NULL_ERROR(8933,"采样时间不能为空"),
SAMPLE_TIME_AND_RESULT_IS_NULL_ERROR(8934,"检测时间或结果不能为空"),
MISMATCH(10086,"人员与房屋信息不匹配,请与工作人员联系。"),

4
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/CommonUserFeignClient.java

@ -2,6 +2,7 @@ package com.epmet.commons.tools.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.feign.fallback.CommonUserFeignClientFallBackFactory;
import com.epmet.commons.tools.redis.common.bean.IcResiUserInfoCache;
import com.epmet.commons.tools.redis.common.bean.ResiUserInfoCache;
import com.epmet.commons.tools.utils.Result;
import org.springframework.cloud.openfeign.FeignClient;
@ -17,4 +18,7 @@ import org.springframework.web.bind.annotation.PostMapping;
public interface CommonUserFeignClient {
@PostMapping("/epmetuser/userbaseinfo/getUserInfo/{userId}")
Result<ResiUserInfoCache> getUserInfo(@PathVariable("userId") String userId);
@PostMapping("/epmetuser/icresiuser/getIcResiUserInfo/{userId}")
Result<IcResiUserInfoCache> getIcResiUserInfo(@PathVariable("userId") String userId);
}

6
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/fallback/CommonUserFeignClientFallback.java

@ -2,6 +2,7 @@ package com.epmet.commons.tools.feign.fallback;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.feign.CommonUserFeignClient;
import com.epmet.commons.tools.redis.common.bean.IcResiUserInfoCache;
import com.epmet.commons.tools.redis.common.bean.ResiUserInfoCache;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
@ -20,4 +21,9 @@ public class CommonUserFeignClientFallback implements CommonUserFeignClient {
public Result<ResiUserInfoCache> getUserInfo(String userId) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getUserInfo", userId);
}
@Override
public Result<IcResiUserInfoCache> getIcResiUserInfo(String userId) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getIcResiUserInfo", userId);
}
}

16
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/processor/MaskProcessor.java

@ -15,7 +15,6 @@ import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
/**
* desc:脱敏处理器
@ -83,6 +82,9 @@ public class MaskProcessor {
String maskResult = maskString((String) value, fieldsMaskType.get(index));
entry.setValue(maskResult);
}
} else if (value instanceof List) {
// 列表
((List)value).forEach(e -> mask(e));
}
}
}
@ -155,10 +157,12 @@ public class MaskProcessor {
// 2个字以上的,首位字母明文,中间*
// 中文不能用\\w,要用[\u4e00-\u9fa5]
if (length == 2) {
return originString.replaceAll("^([\\u4e00-\\u9fa5]).*$", "$1*");
// return originString.replaceAll("^([\\u4e00-\\u9fa5]).*$", "$1*");
return originString.substring(0).concat("*");
} else {
String maskStr = StrUtil.repeat("*", length - 2);
return originString.replaceAll("^([\\u4e00-\\u9fa5]).*([\\u4e00-\\u9fa5])$", "$1" + maskStr + "$2");
// return originString.replaceAll("^([\\u4e00-\\u9fa5]).*([\\u4e00-\\u9fa5])$", "$1" + maskStr + "$2");
return originString.charAt(0) + maskStr + originString.charAt(originString.length() - 1);
}
}
@ -168,7 +172,7 @@ public class MaskProcessor {
* @param originString
* @return
*/
private String maskIdCard(String originString) {
public static String maskIdCard(String originString) {
IdCardRegexUtils regexUtil = IdCardRegexUtils.parse(originString);
if (regexUtil == null) {
@ -216,7 +220,9 @@ public class MaskProcessor {
public static void main(String[] args) {
String[] idc = {"idCard"};
String[] idct = {MaskResponse.MASK_TYPE_ID_CARD};
String r = new MaskProcessor(idc, idct).maskString("333333333333333333", MaskResponse.MASK_TYPE_ID_CARD);
String r = new MaskProcessor(idc, idct).maskString("王五(372284152412022222)", MaskResponse.MASK_TYPE_ID_CARD);
System.out.println(r);
String s = MaskProcessor.maskIdCard("372284152412022222");
System.out.println(s);
}
}

4
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java

@ -393,6 +393,10 @@ public class RedisKeys {
return rootPrefix.concat("resi:user:").concat(userId);
}
public static String getIcResiUserKey(String userId) {
return rootPrefix.concat("resi:icResiUser:").concat(userId);
}
/**
* @param userId
* @return epmet:badge:user:[customerId]:[userId]

33
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerOrgRedis.java

@ -13,6 +13,7 @@ import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
@ -111,4 +112,36 @@ public class CustomerOrgRedis {
customerOrgRedis.redisUtils.delete(key);
}
/**
* 拼接orgIdPath
* @param orgId
* @param orgType
* @return
*/
public static String getOrgIdPath(String orgId, String orgType) {
String orgPids = null;
if ("grid".equals(orgType)) {
GridInfoCache gridInfo = getGridInfo(orgId);
if (gridInfo == null) {
log.error("查询网格信息失败:{}", orgId);
return null;
}
orgPids = gridInfo.getPids();
} else if ("agency".equals(orgType)) {
AgencyInfoCache agencyInfo = getAgencyInfo(orgId);
if (agencyInfo == null) {
log.error("查询组织信息失败:{}", orgId);
return null;
}
orgPids = agencyInfo.getPids();
}
if (StringUtils.isBlank(orgPids) || "0".equals(orgPids)) {
return orgId;
}
return orgPids.concat(":").concat(orgId);
}
}

27
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerResiUserRedis.java

@ -1,10 +1,12 @@
package com.epmet.commons.tools.redis.common;
import cn.hutool.core.bean.BeanUtil;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.feign.CommonUserFeignClient;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.redis.common.bean.IcResiUserInfoCache;
import com.epmet.commons.tools.redis.common.bean.ResiUserInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
@ -70,6 +72,31 @@ public class CustomerResiUserRedis {
return resultData;
}
public static IcResiUserInfoCache getIcResiUserInfo(String icResiUserId){
if (StringUtils.isBlank(icResiUserId)){
log.warn("getIcResiUserInfo param is blank,userId:{}",icResiUserId);
return null;
}
String key = RedisKeys.getIcResiUserKey(icResiUserId);
Map<String, Object> map = customerResiUserRedis.redisUtils.hGetAll(key);
if (!CollectionUtils.isEmpty(map)) {
return ConvertUtils.mapToEntity(map, IcResiUserInfoCache.class);
}
Result<IcResiUserInfoCache> result = customerResiUserRedis.commonUserFeignClient.getIcResiUserInfo(icResiUserId);
if (result == null || !result.success()) {
throw new EpmetException("获取居民信息失败");
}
IcResiUserInfoCache data = result.getData();
if (null == data) {
log.warn("居民信息为空,userId:{}", icResiUserId);
return null;
}
Map<String, Object> cacheMap = BeanUtil.beanToMap(data, false, true);
customerResiUserRedis.redisUtils.hMSet(key, cacheMap);
return data;
}
@Nullable
private static ResiUserInfoCache reloadStaffCache(String userId, String key) {
Result<ResiUserInfoCache> result = customerResiUserRedis.commonUserFeignClient.getUserInfo(userId);

15
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/HouseInfoCache.java

@ -107,4 +107,19 @@ public class HouseInfoCache implements Serializable {
* 二维码地址
*/
private String houseQrcodeUrl;
/**
* 房主姓名
*/
private String ownerName;
/**
* 房主电话
*/
private String ownerPhone;
/**
* 房主身份证
*/
private String ownerIdCard;
}

539
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/IcResiUserInfoCache.java

@ -0,0 +1,539 @@
package com.epmet.commons.tools.redis.common.bean;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author zxc
* @DateTime 2022/10/17 15:40
* @DESC
*/
@Data
public class IcResiUserInfoCache implements Serializable {
private static final long serialVersionUID = -3644143706074015380L;
/**
* 主键
*/
private String id;
/**
* 客户Id customer.id
*/
private String customerId;
/**
*
*/
private String agencyId;
/**
*
*/
private String pids;
/**
* 网格ID
*/
private String gridId;
/**
* 所属小区ID
*/
private String villageId;
/**
* 所属楼宇Id
*/
private String buildId;
/**
* 单元id
*/
private String unitId;
/**
* 所属家庭Id
*/
private String homeId;
/**
* 是否本地户籍
*/
private String isBdhj;
/**
* 姓名
*/
private String name;
/**
* 手机号
*/
private String mobile;
/**
* 性别
*/
private String gender;
/**
* 身份证号
*/
private String idCard;
/**
* 出生日期
*/
private String birthday;
/**
* 备注
*/
private String remarks;
/**
* 联系人
*/
private String contacts;
/**
* 联系人电话
*/
private String contactsMobile;
/**
* 九小场所url
*/
private String ninePlace;
/**
* 是否党员
*/
private String isParty;
/**
* 是否低保户
*/
private String isDbh;
/**
* 是否保障房
*/
private String isEnsureHouse;
/**
* 是否失业
*/
private String isUnemployed;
/**
* 是否育龄妇女
*/
private String isYlfn;
/**
* 是否退役军人
*/
private String isVeterans;
/**
* 是否统战人员
*/
private String isUnitedFront;
/**
* 是否信访人员
*/
private String isXfry;
/**
* 是否志愿者
*/
private String isVolunteer;
/**
* 是否老年人
*/
private String isOldPeople;
/**
* 是否空巢
*/
private String isKc;
/**
* 是否失独
*/
private String isSd;
/**
* 是否失能
*/
private String isSn;
/**
* 是否失智
*/
private String isSz;
/**
* 是否残疾
*/
private String isCj;
/**
* 是否大病
*/
private String isDb;
/**
* 是否慢病
*/
private String isMb;
/**
* 是否特殊人群
*/
private String isSpecial;
/**
* 是否租户:1 :0
*/
private String isTenant;
/**
* 是否是流动人口:1 :0
*/
private String isFloating;
/**
* 是否新阶层人士:1 :0
*/
private String isXjc;
/**
* 文化程度字典表
*/
private String culture;
/**
* 文化程度备注
*/
private String cultureRemakes;
/**
* 特长字典表
*/
private String specialSkill;
/**
* 兴趣爱好
*/
private String hobby;
/**
* 兴趣爱好备注
*/
private String hobbyRemakes;
/**
* 宗教信仰
*/
private String faith;
/**
* 宗教信仰备注
*/
private String faithRemakes;
/**
* 残疾类别字典表
*/
private String cjlb;
/**
* 残疾登记(状况)字典表
*/
private String cjzk;
/**
* 残疾证号
*/
private String cjzh;
/**
* 残疾说明
*/
private String cjsm;
/**
* 有无监护人yes no
*/
private String ynJdr;
/**
* 有无技能特长yes no
*/
private String ynJntc;
/**
* 有无劳动能力
*/
private String ynLdnl;
/**
* 有无非义务教育阶段助学yes no
*/
private String ynFywjyjdzx;
/**
* 所患大病
*/
private String shdb;
/**
* 患大病时间
*/
private String dbsj;
/**
* 所患慢性病
*/
private String shmxb;
/**
* 患慢性病时间
*/
private String mxbsj;
/**
* 是否参保
*/
private String isCb;
/**
* 自付金额
*/
private String zfje;
/**
* 救助金额
*/
private String jzje;
/**
* 救助时间[yyyy-MM-dd]
*/
private String jzsj;
/**
* 享受救助明细序号
*/
private String jzmxxh;
/**
* 健康信息备注
*/
private String healthRemakes;
/**
* 工作单位
*/
private String gzdw;
/**
* 职业
*/
private String zy;
/**
* 离退休时间
*/
private String ltxsj;
/**
* 工作信息备注
*/
private String workRemake;
/**
* 退休金额
*/
private String txje;
/**
* 月收入
*/
private String ysr;
/**
* 是否经济低保
*/
private String isJjdb;
/**
* 籍贯
*/
private String jg;
/**
* 户籍所在地
*/
private String hjszd;
/**
* 现居住地
*/
private String xjzd;
/**
* 人户情况
*/
private String rhzk;
/**
* 居住信息备注
*/
private String jzxxRemakes;
/**
* 民族字典表
*/
private String mz;
/**
* 与户主关系字典表
*/
private String yhzgx;
/**
* 居住情况字典表
*/
private String jzqk;
/**
* 婚姻状况字典表
*/
private String hyzk;
/**
* 配偶情况字典表
*/
private String poqk;
/**
* 有无赡养人
*/
private String ynSyr;
/**
* 与赡养人关系字典表
*/
private String ysyrgx;
/**
* 赡养人电话
*/
private String syrMobile;
/**
* 家庭信息备注
*/
private String jtxxRemakes;
/**
* 用户状态0:正常;1:迁出;2:注销
*/
private String status;
/**
* 用户详细状态01新增02导入03迁入04新生11迁出21死亡
*/
private String subStatus;
/**
* 删除标识 0.未删除 1.已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
/**
* 预留字段1
*/
private String field1;
/**
* 预留字段2
*/
private String field2;
/**
* 预留字段3
*/
private String field3;
/**
* 预留字段4
*/
private String field4;
/**
* 预留字段5
*/
private String field5;
/**
* 预留字段6
*/
private String field6;
/**
* 预留字段7
*/
private String field7;
/**
* 预留字段8
*/
private String field8;
/**
* 预留字段9
*/
private String field9;
/**
* 预留字段10
*/
private String field10;
}

228
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YtHsResUtils.java

@ -1,6 +1,9 @@
package com.epmet.commons.tools.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.epmet.commons.tools.dto.result.YtDataSyncResDTO;
import com.epmet.commons.tools.dto.result.YtHscyResDTO;
import com.epmet.commons.tools.dto.result.YtHsjcResDTO;
import lombok.extern.slf4j.Slf4j;
@ -15,14 +18,73 @@ import java.util.Map;
*/
@Slf4j
public class YtHsResUtils {
private static String URL = "http://10.2.2.60:8191/sjzt/server/hsjcxx";
private static String SERVER_URL = "http://10.2.2.60:8191/sjzt/server/";
private static final String APP_KEY_VALUE = "DR4jF5Be7sCsqDmCamq2tmYCl";
private static final String APP_KEY = "appkey";
private static final String CARD_NO = "card_no";
private static final String USER_NAME = "name";
private static final String ROW_NUM = "ROWNUM";
private static final String PAGE_SIZE = "PAGESIZE";
private static final String START = "ROWNUM";
private static final String LIMIT = "PAGESIZE";
/**
* desc:核酸采样查询
*
* @return
*/
public static YtHscyResDTO hscy(String cardNo, Integer rowNum, Integer pageSize) {
try {
Map<String, Object> param = new HashMap<>();
param.put(APP_KEY, APP_KEY_VALUE);
param.put(CARD_NO, cardNo);
param.put(ROW_NUM, rowNum);
param.put(PAGE_SIZE, pageSize);
log.info("hscy api param:{}", param);
//todo 核酸检测 mock数据 放开她
//Result<String> result = HttpClientManager.getInstance().sendGet(SERVER_URL+"hscyxxcx", param);
String mockData = "{\n" +
" \"code\":0,\n" +
" \"msg\":\"success\",\n" +
" \"data\":[{\n" +
" \"id\": \"1570924677539635484\",\n" +
" \"name\": \"杨XX\",\n" +
" \"card_type\": \"1\",\n" +
" \"card_no\": \"370283199912010302\",\n" +
" \"create_by\": \"370613594\",\n" +
" \"create_time\": \"2022-09-17 07:15:22\",\n" +
" \"sys_org_code\": \"370613\",\n" +
" \"sample_tube\": \"GCJ-0825-0441\",\n" +
" \"package_id\": \"bcj00208083952\",\n" +
" \"city\": \"烟台市\",\n" +
" \"uuid\": \"6225684525062602095\",\n" +
" \"county\": \"莱山区\",\n" +
" \"depart_ids\": \"未填写\",\n" +
" \"depart_name\": null,\n" +
" \"realname\": \"采样点327\",\n" +
" \"upload_time\": \"2022-09-17 07:56:45\",\n" +
" \"sd_id\": null,\n" +
" \"sd_batch\": null,\n" +
" \"sd_operation\": null,\n" +
" \"sd_time\": null,\n" +
" \"inserttime\": \"2022-09-17 09:36:20\"\n" +
"}]\n" +
"}";
Result<String> result = new Result<String>().ok(mockData);
log.info("hscy api result:{}", JSON.toJSONString(result));
if (result.success()) {
return JSON.parseObject(result.getData(), YtHscyResDTO.class);
}
} catch (Exception e) {
log.error(String.format("烟台核酸检测结果查询异常cardNo:%s,异常信息:%s", cardNo, e.getMessage()));
}
YtHscyResDTO resultResult = new YtHscyResDTO();
resultResult.setData(new ArrayList<>());
return resultResult;
}
/**
* desc:图片同步扫描
* desc:核酸结果查询
*
* @return
*/
@ -30,24 +92,166 @@ public class YtHsResUtils {
try {
//String param = String.format("&card_no=%s&ROWNUM=%s&PAGESIZE=%s", cardNo, rowNum, pageSize);
//String apiUrl = url.concat(param);
Map<String,Object> param = new HashMap<>();
param.put(APP_KEY,APP_KEY_VALUE);
param.put(CARD_NO,cardNo);
param.put(ROW_NUM,rowNum);
param.put(PAGE_SIZE,pageSize);
log.info("hsjc api param:{}",param);
Result<String> result = HttpClientManager.getInstance().sendGet(URL, param);
log.info("hsjc api result:{}",JSON.toJSONString(result));
Map<String, Object> param = new HashMap<>();
param.put(APP_KEY, APP_KEY_VALUE);
param.put(CARD_NO, cardNo);
param.put(ROW_NUM, rowNum);
param.put(PAGE_SIZE, pageSize);
log.info("hsjc api param:{}", param);
//todo 核酸检测 mock数据 放开她
//Result<String> result = HttpClientManager.getInstance().sendGet(SERVER_URL+"hsjcxx", param);
String mockData = "{\"code\":\"200\",\"msg\":\"请求成功\",\"data\":[{\"id\":\"6a31eb2d38c011eda054fa163ebc7ff4\",\"name\":\"数据同步测试用户\",\"card_no\":\"370283199912010302\",\"telephone\":\"13697890860\",\"address\":\"保利香榭里公馆18-1-302\",\"test_time\":\"2022-09-20 12:52:28\",\"depart_name\":\"天仁医学检验实验室有限公司\",\"county\":\"莱山区\",\"upload_time\":\"2022-09-20 21:23:10\",\"sample_result_pcr\":\"2\",\"sample_time\":\"2022-09-17 07:15:22\",\"sampling_org_pcr\":\"采样点327\"}],\"total\":1}";
Result<String> result = new Result<String>().ok(mockData);
log.info("hsjc api result:{}", JSON.toJSONString(result));
if (result.success()) {
return JSON.parseObject(result.getData(), YtHsjcResDTO.class);
}
} catch (Exception e) {
e.printStackTrace();
log.warn(String.format("烟台核酸检测结果查询异常cardNo:%s,异常信息:%s", cardNo, e.getMessage()));
log.error(String.format("烟台核酸检测结果查询异常cardNo:%s,异常信息:%s", cardNo, e.getMessage()));
}
YtHsjcResDTO resultResult = new YtHsjcResDTO();
resultResult.setData(new ArrayList<>());
return resultResult;
}
/**
* desc:死亡数据同步
*
* @return
*/
public static YtDataSyncResDTO siWang(String cardNo, String userName) {
try {
// 1)appkey秘钥
// 2)name姓名 必填
// 3)idcard身份证号 必填
// 4)start开始默认0
// 5)limit每页记录数
Map<String, Object> param = new HashMap<>();
param.put(APP_KEY, APP_KEY_VALUE);
param.put("id_card", cardNo);
param.put("name", userName);
param.put("start", 0);
param.put("limit", 1);
log.info("siWang api param:{}", param);
//todo 放开他
//Result<String> result = HttpClientManager.getInstance().sendGet(SERVER_URL+"mzt_hhrysj1", param);
String mockData = "{\"code\":\"200\",\"msg\":\"请求成功\",\"data\":\"{\\\"code\\\":200,\\\"data\\\":\\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"AGE\\\\\\\":\\\\\\\"82\\\\\\\",\\\\\\\"BIRTHDAY\\\\\\\":\\\\\\\"1933-02-23\\\\\\\",\\\\\\\"CARD_TYPE\\\\\\\":\\\\\\\"1\\\\\\\",\\\\\\\"CREATE_ORGAN_NAME\\\\\\\":\\\\\\\"莱州市殡仪馆\\\\\\\",\\\\\\\"CREMATION_TIME\\\\\\\":\\\\\\\"2016-01-03 13:01\\\\\\\",\\\\\\\"DEAD_ID\\\\\\\":\\\\\\\"8abc809851ffaf1501520600555c2849\\\\\\\",\\\\\\\"DEATH_DATE\\\\\\\":\\\\\\\"2016-01-02\\\\\\\",\\\\\\\"FAMILY_ADD\\\\\\\":\\\\\\\"山东省莱州市光州西路420号\\\\\\\",\\\\\\\"FOLK\\\\\\\":\\\\\\\"01\\\\\\\",\\\\\\\"ID_CARD\\\\\\\":\\\\\\\"370625193302231929\\\\\\\",\\\\\\\"NAME\\\\\\\":\\\\\\\"陈秀芬\\\\\\\",\\\\\\\"NATION\\\\\\\":\\\\\\\"156\\\\\\\",\\\\\\\"POPULACE\\\\\\\":\\\\\\\"3381C300B4B9439FE05319003C0A0897\\\\\\\",\\\\\\\"POPULACE_NAME\\\\\\\":\\\\\\\"烟台市莱州市文昌路街道\\\\\\\",\\\\\\\"RECORD_ID\\\\\\\":\\\\\\\"8abc809851ffaf1501520600694e2877\\\\\\\",\\\\\\\"RN\\\\\\\":\\\\\\\"1\\\\\\\",\\\\\\\"SEX\\\\\\\":\\\\\\\"2\\\\\\\"}],\\\\\\\"fields\\\\\\\":[\\\\\\\"RN\\\\\\\",\\\\\\\"RECORD_ID\\\\\\\",\\\\\\\"DEAD_ID\\\\\\\",\\\\\\\"NAME\\\\\\\",\\\\\\\"SEX\\\\\\\",\\\\\\\"CARD_TYPE\\\\\\\",\\\\\\\"ID_CARD\\\\\\\",\\\\\\\"BIRTHDAY\\\\\\\",\\\\\\\"AGE\\\\\\\",\\\\\\\"NATION\\\\\\\",\\\\\\\"FOLK\\\\\\\",\\\\\\\"IF_LOCAL\\\\\\\",\\\\\\\"POPULACE\\\\\\\",\\\\\\\"FAMILY_ADD\\\\\\\",\\\\\\\"WORK_NAME\\\\\\\",\\\\\\\"DEATH_DATE\\\\\\\",\\\\\\\"CREMATION_TIME\\\\\\\",\\\\\\\"CREATE_ORGAN_NAME\\\\\\\",\\\\\\\"POPULACE_NAME\\\\\\\"],\\\\\\\"total\\\\\\\":\\\\\\\"1\\\\\\\"}\\\",\\\"message\\\":\\\"\\\"}\",\"total\":0}";
Result<String> result = new Result<String>().ok(mockData);
log.info("siWang api result:{}", JSON.toJSONString(result));
String data = result.getData();
JSONObject jsonObject = JSON.parseObject(data);
//他们的结果是成功的
if (jsonObject != null && "200".equals(jsonObject.getString("code"))) {
//第一层
JSONObject firstData = JSON.parseObject(jsonObject.getString("data"));
//第二层 data
if (firstData != null && "200".equals(firstData.getString("code"))) {
//第一层
JSONObject secondData = JSON.parseObject(firstData.getString("data"));
Object thirdData = "";
if (secondData != null && secondData.getJSONArray("data") != null) {
//第二层 data
thirdData = secondData.getJSONArray("data").get(0);
}
return new YtDataSyncResDTO(200, "", thirdData.toString());
} else {
log.warn("siWang 调用蓝图接口成功但是蓝图的结果中 省平台失败");
}
} else {
log.warn("siWang 调用蓝图接口败");
}
} catch (Exception e) {
log.error(String.format("烟台siWang结果查询异常cardNo:%s,异常信息:%s", cardNo, e.getMessage()));
}
return new YtDataSyncResDTO();
}
/**
* desc:残疾数据同步
*
* @return
* @remark默认失败 因为一旦成功没有数据 会影响残疾人的数据 接口失败数据不做任何处理
*/
public static YtDataSyncResDTO canji(String idCard, String userName) {
YtDataSyncResDTO failResult = new YtDataSyncResDTO();
failResult.setCode(500);
failResult.setMsg("默认错误");
try {
// 1)appkey
// 2)name姓名
// 3)citizenId身份证号
Map<String, Object> param = new HashMap<>();
param.put(APP_KEY, APP_KEY_VALUE);
param.put("citizenId", idCard);
param.put("name", userName);
log.info("canji api param:{}", param);
//todo 上线放开她
//Result<String> result = HttpClientManager.getInstance().sendGet(SERVER_URL+"sdcl_xxzx_czcjr1", param);
String mockData = "{\"code\":\"200\",\"msg\":\"请求成功\",\"data\":\"{\\\"code\\\":200,\\\"data\\\":\\\"{\\\\\\\"result\\\\\\\":true,\\\\\\\"errorcode\\\\\\\":0,\\\\\\\"msg\\\\\\\":\\\\\\\"获取成功\\\\\\\",\\\\\\\"data\\\\\\\":{\\\\\\\"isNewRecord\\\\\\\":true,\\\\\\\"delFlag\\\\\\\":\\\\\\\"0\\\\\\\",\\\\\\\"pageNo\\\\\\\":0,\\\\\\\"pageSize\\\\\\\":0,\\\\\\\"name\\\\\\\":\\\\\\\"数据同步测试用户\\\\\\\",\\\\\\\"genderName\\\\\\\":\\\\\\\"男\\\\\\\",\\\\\\\"citizenId\\\\\\\":\\\\\\\"370682198002072719\\\\\\\",\\\\\\\"cardNum\\\\\\\":\\\\\\\"370283199912010302\\\\\\\",\\\\\\\"idtKindName\\\\\\\":\\\\\\\"精神\\\\\\\",\\\\\\\"idtLevelName\\\\\\\":\\\\\\\"二级\\\\\\\",\\\\\\\"eduLevelName\\\\\\\":\\\\\\\"小学\\\\\\\",\\\\\\\"marriagerName\\\\\\\":\\\\\\\"未婚\\\\\\\",\\\\\\\"guardian\\\\\\\":\\\\\\\"盖希仁\\\\\\\",\\\\\\\"guardianPhone\\\\\\\":\\\\\\\"13854516627\\\\\\\",\\\\\\\"guardianRName\\\\\\\":\\\\\\\"兄/弟/姐/妹\\\\\\\",\\\\\\\"raceName\\\\\\\":\\\\\\\"汉族\\\\\\\",\\\\\\\"certDate\\\\\\\":1620779842000,\\\\\\\"residentAdd\\\\\\\":\\\\\\\"姜疃镇凤头村248号附1号\\\\\\\",\\\\\\\"nowAdd\\\\\\\":\\\\\\\"山东省烟台市莱阳市姜疃镇凤头村委会\\\\\\\",\\\\\\\"phoneNo\\\\\\\":\\\\\\\"13854516627\\\\\\\"}}\\\",\\\"message\\\":\\\"\\\"}\",\"total\":0}";
Result<String> result = new Result<String>().ok(mockData);
log.info("canji api result:{}", JSON.toJSONString(result));
if (result.success()) {
/*返回示例
{
"code":"200",
"msg":"请求成功",
"data":"{
\"code\":200,
\"data\":{
\\\"result\\\":true,
\\\"errorcode\\\":0,
\\\"msg\\\":\\\"获取成功\\\",
\\\"data\\\":{
\\\"isNewRecord\\\":\\\"true\\\",
}
}
\"message\":\"\"
}",
"total":0
}
*/
String data = result.getData();
JSONObject jsonObject = JSON.parseObject(data);
//他们的结果是成功的
if (jsonObject != null && "200".equals(jsonObject.getString("code"))) {
//第一层data
JSONObject realObject = JSON.parseObject(jsonObject.getString("data"));
if (realObject != null && "200".equals(realObject.getString("code"))) {
//第二层 data
String thirdData = realObject.getString("data");
return JSON.parseObject(thirdData, YtDataSyncResDTO.class);
} else {
log.warn("canji 调用蓝图接口成功但是蓝图的结果中 省平台失败");
}
} else {
log.warn("canji 调用蓝图接口败");
}
}
} catch (Exception e) {
log.error(String.format("烟台canji结果查询异常cardNo:%s,异常信息:%s", idCard, e.getMessage()));
}
return failResult;
}
public static void main(String[] args) {
YtDataSyncResDTO canji = canji("123", "123");
System.out.println("残疾结果:" + JSON.toJSON(canji));
YtDataSyncResDTO siwang = siWang("1213", "!23");
System.out.println("死亡结果:" + JSON.toJSON(siwang));
}
}

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

@ -1,6 +1,7 @@
package com.epmet.dataaggre.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.MaskResponse;
import com.epmet.commons.tools.dto.result.ZhzlCategorySelectDTO;
import com.epmet.commons.tools.enums.ZhzlResiCategoryEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
@ -74,6 +75,7 @@ public class CoverageController {
* @author zxc
* @date 2022/7/26 16:29
*/
@MaskResponse(fieldNames = {"mobile","idCard"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE,MaskResponse.MASK_TYPE_ID_CARD})
@PostMapping("search")
public Result<CoverageHomeSearchResultDTO> coverageHomeSearch(@RequestBody CoverageHomeSearchFormDTO formDTO, @LoginUser TokenDto tokenDto){
formDTO.setCustomerId(tokenDto.getCustomerId());

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

@ -9,6 +9,7 @@ import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.processor.MaskProcessor;
import com.epmet.commons.tools.redis.common.CustomerIcHouseRedis;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
@ -670,7 +671,7 @@ public class CoverageServiceImpl implements CoverageService {
return new CoverageAnalisisDataListResultDTO(
re.getId(), categoryKey, isPage ? categoryDict.getCategoryName() : null, placeType,
re.getName().concat(StrConstant.BRACKET_LEFT).concat(re.getIdCard()).concat(StrConstant.BRACKET_RIGNT),
re.getName().concat(StrConstant.BRACKET_LEFT).concat(MaskProcessor.maskIdCard(re.getIdCard())).concat(StrConstant.BRACKET_RIGNT),
coordinates[1], coordinates[0]);
}).collect(Collectors.toList());
@ -684,7 +685,7 @@ public class CoverageServiceImpl implements CoverageService {
return new CoverageAnalisisDataListResultDTO(
re.getId(), categoryKey, isPage ? categoryDict.getCategoryName() : null, placeType,
re.getName().concat(StrConstant.BRACKET_LEFT).concat(re.getIdNum()).concat(StrConstant.BRACKET_RIGNT),
re.getName().concat(StrConstant.BRACKET_LEFT).concat(MaskProcessor.maskIdCard(re.getIdNum())).concat(StrConstant.BRACKET_RIGNT),
coordinates[1], coordinates[0]);
}).collect(Collectors.toList());
@ -1276,4 +1277,4 @@ public class CoverageServiceImpl implements CoverageService {
}
return resultList;
}
}
}

1
epmet-module/data-report/data-report-client/src/main/java/com/epmet/constant/DataSourceConstant.java

@ -7,5 +7,6 @@ public interface DataSourceConstant {
*/
String EVALUATION_INDEX = "evaluationIndex";
String STATS_DISPLAY = "statsDisplay";
String STATS = "stats";
}

23
epmet-module/data-report/data-report-client/src/main/java/com/epmet/dto/form/stats/UserHouseStatsQueryFormDTO.java

@ -0,0 +1,23 @@
package com.epmet.dto.form.stats;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
/**
* 人房信息查询dto
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserHouseStatsQueryFormDTO {
private String orgId;
private String orgType;
@NotBlank(message = "dateId不能为空")
private String dateId;
}

12
epmet-module/data-report/data-report-client/src/main/java/com/epmet/feign/DataReportOpenFeignClient.java

@ -2,11 +2,15 @@ package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.stats.UserHouseStatsQueryFormDTO;
import com.epmet.dto.result.plugins.AgencyNodeDTO;
import com.epmet.feign.impl.DataReportOpenFeignClientFallBackFactory;
import com.epmet.stats.UserHouseStatsResultDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* 本服务对外开放的API,其他服务通过引用此client调用该服务
@ -24,4 +28,12 @@ public interface DataReportOpenFeignClient {
**/
@GetMapping("/data/report/screen/agency/querystaffagencytree/{agencyId}")
Result<AgencyNodeDTO> queryStaffAgencyTree(@PathVariable("agencyId") String agencyId);
/**
* 通过dateId查询人房统计信息
* @param input 3个参数就不用dto了类太多
* @return
*/
@PostMapping("/data/report/userHouse/getUserHouseDailyStatsByDateId")
Result<UserHouseStatsResultDTO> getUserHouseDailyStatsByDateId(@RequestBody UserHouseStatsQueryFormDTO input);
}

7
epmet-module/data-report/data-report-client/src/main/java/com/epmet/feign/impl/DataReportOpenFeignClientFallBack.java

@ -3,8 +3,10 @@ package com.epmet.feign.impl;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.stats.UserHouseStatsQueryFormDTO;
import com.epmet.dto.result.plugins.AgencyNodeDTO;
import com.epmet.feign.DataReportOpenFeignClient;
import com.epmet.stats.UserHouseStatsResultDTO;
//@Component
public class DataReportOpenFeignClientFallBack implements DataReportOpenFeignClient {
@ -17,4 +19,9 @@ public class DataReportOpenFeignClientFallBack implements DataReportOpenFeignCli
public Result<AgencyNodeDTO> queryStaffAgencyTree(String agencyId) {
return ModuleUtils.feignConError(ServiceConstant.DATA_REPORT_SERVER, "queryStaffAgencyTree",agencyId);
}
@Override
public Result<UserHouseStatsResultDTO> getUserHouseDailyStatsByDateId(UserHouseStatsQueryFormDTO input) {
return ModuleUtils.feignConError(ServiceConstant.DATA_REPORT_SERVER, "getUserHouseDailyStatsByDateId",input);
}
}

18
epmet-module/data-report/data-report-client/src/main/java/com/epmet/stats/UserHouseStatsResultDTO.java

@ -0,0 +1,18 @@
package com.epmet.stats;
import lombok.Data;
/**
* 人房信息统计
*/
@Data
public class UserHouseStatsResultDTO {
private Integer houseTotal = 0;
private Integer zzHouseTotal = 0;
private Integer czHouseTotal = 0;
private Integer xzHouseTotal = 0;
private Integer userTotal = 0;
private Integer czUserTotal = 0;
private Integer ldUserTotal = 0;
private Integer usingCommunityNum = 0;
}

37
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/stats/UserHouseController.java

@ -0,0 +1,37 @@
package com.epmet.datareport.controller.stats;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.datareport.service.stats.UserHouseStatsService;
import com.epmet.dto.form.stats.UserHouseStatsQueryFormDTO;
import com.epmet.stats.UserHouseStatsResultDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("userHouse")
public class UserHouseController {
@Autowired
private UserHouseStatsService userHouseStatsService;
/**
* 通过dateId查询人房统计信息
* @param input
* @return
*/
@PostMapping("getUserHouseDailyStatsByDateId")
public Result<UserHouseStatsResultDTO> getUserHouseDailyStatsByDateId(@RequestBody UserHouseStatsQueryFormDTO input) {
ValidatorUtils.validateEntity(input);
String orgId = input.getOrgId();
String orgType = input.getOrgType();
String dateId = input.getDateId();
UserHouseStatsResultDTO r = userHouseStatsService.getUserHouseDailyStats(orgId, orgType, dateId);
return new Result<UserHouseStatsResultDTO>().ok(r);
}
}

17
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/stats/FactAgencyUserHouseDailyDao.java

@ -0,0 +1,17 @@
package com.epmet.datareport.dao.stats;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.datareport.entity.stats.FactAgencyUserHouseDailyEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 人房信息统计数按天统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-27
*/
@Mapper
public interface FactAgencyUserHouseDailyDao extends BaseDao<FactAgencyUserHouseDailyEntity> {
}

17
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/dao/stats/FactGridUserHouseDailyDao.java

@ -0,0 +1,17 @@
package com.epmet.datareport.dao.stats;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.datareport.entity.stats.FactGridUserHouseDailyEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 网格的人房信息统计数按天统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-27
*/
@Mapper
public interface FactGridUserHouseDailyDao extends BaseDao<FactGridUserHouseDailyEntity> {
}

115
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/entity/stats/FactAgencyUserHouseDailyEntity.java

@ -0,0 +1,115 @@
package com.epmet.datareport.entity.stats;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 人房信息统计数按天统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-27
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("fact_agency_user_house_daily")
public class FactAgencyUserHouseDailyEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户id
*/
private String customerId;
/**
* 数据更新至yyyyMMdd;
*/
private String dateId;
/**
* 组织id
*/
private String agencyId;
/**
* agency_id所属的机关级别社区级community
街道:street,
区县级: district,
市级: city
省级:province
*/
private String level;
/**
* 组织i所属的组织id
*/
private String pid;
/**
* 组织i所有上级id
*/
private String pids;
/**
* 小区总数
*/
private Integer neighbourhoodsCount;
/**
* 房屋总数
*/
private Integer houseCount;
/**
* 自住房屋总数
*/
private Integer houseSelfCount;
/**
* 出租房屋总数
*/
private Integer houseLeaseCount;
/**
* 闲置房屋总数
*/
private Integer houseIdleCount;
/**
* 居民总数
*/
private Integer userCount;
/**
* 常住居民总数
*/
private Integer userResiCount;
/**
* 流动居民总数
*/
private Integer userFloatCount;
/**
* 当日新增房屋数
*/
private Integer houseIncr;
/**
* 当日修改房屋数
*/
private Integer houseModify;
/**
* 当日新增居民数
*/
private Integer userIncr;
/**
* 当日修改居民数
*/
private Integer userModify;
}

106
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/entity/stats/FactGridUserHouseDailyEntity.java

@ -0,0 +1,106 @@
package com.epmet.datareport.entity.stats;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 网格的人房信息统计数按天统计
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-27
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("fact_grid_user_house_daily")
public class FactGridUserHouseDailyEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户id
*/
private String customerId;
/**
* 数据更新至yyyyMMdd;
*/
private String dateId;
/**
* 网格id
*/
private String gridId;
/**
* 网格所属的组织id
*/
private String pid;
/**
* 网格所有上级id
*/
private String pids;
/**
* 小区总数
*/
private Integer neighbourhoodsCount;
/**
* 房屋总数
*/
private Integer houseCount;
/**
* 自住房屋总数
*/
private Integer houseSelfCount;
/**
* 出租房屋总数
*/
private Integer houseLeaseCount;
/**
* 闲置房屋总数
*/
private Integer houseIdleCount;
/**
* 居民总数
*/
private Integer userCount;
/**
* 常住居民总数
*/
private Integer userResiCount;
/**
* 流动居民总数
*/
private Integer userFloatCount;
/**
* 当日新增房屋数
*/
private Integer houseIncr;
/**
* 当日修改房屋数
*/
private Integer houseModify;
/**
* 当日新增居民数
*/
private Integer userIncr;
/**
* 当日修改居民数
*/
private Integer userModify;
}

19
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/stats/UserHouseStatsService.java

@ -0,0 +1,19 @@
package com.epmet.datareport.service.stats;
import com.epmet.stats.UserHouseStatsResultDTO;
import lombok.extern.slf4j.Slf4j;
/**
* 人房统计service
*/
public interface UserHouseStatsService {
/**
* 查询指定dateId的人房统计信息
* @param orgId
* @param orgType
* @param dateId
* @return
*/
UserHouseStatsResultDTO getUserHouseDailyStats(String orgId, String orgType, String dateId);
}

87
epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/stats/impl/UserHouseStatsServiceImpl.java

@ -0,0 +1,87 @@
package com.epmet.datareport.service.stats.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.dynamic.datasource.annotation.DataSource;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.constant.DataSourceConstant;
import com.epmet.datareport.dao.stats.FactAgencyUserHouseDailyDao;
import com.epmet.datareport.dao.stats.FactGridUserHouseDailyDao;
import com.epmet.datareport.entity.stats.FactAgencyUserHouseDailyEntity;
import com.epmet.datareport.entity.stats.FactGridUserHouseDailyEntity;
import com.epmet.datareport.service.stats.UserHouseStatsService;
import com.epmet.stats.UserHouseStatsResultDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service
@DataSource(DataSourceConstant.STATS)
public class UserHouseStatsServiceImpl implements UserHouseStatsService {
@Autowired
private FactGridUserHouseDailyDao factGridUserHouseDailyDao;
@Autowired
private FactAgencyUserHouseDailyDao factAgencyUserHouseDailyDao;
@Override
public UserHouseStatsResultDTO getUserHouseDailyStats(String orgId, String orgType, String dateId) {
// 没有传参,使用当前登录人的
if (StringUtils.isEmpty(orgId) || StringUtils.isEmpty(orgType)) {
String userId = EpmetRequestHolder.getLoginUserId();
String customerId = EpmetRequestHolder.getLoginUserCustomerId();
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, userId);
if (null == staffInfo) {
throw new EpmetException(String.format("查询工作人员%s缓存信息失败:%s", userId));
}
orgId = staffInfo.getAgencyId();
orgType = "agency";
}
// 结果对象初始化
UserHouseStatsResultDTO result = new UserHouseStatsResultDTO();
if ("agency".equals(orgType)) {
// 查询的目标是组织
LambdaQueryWrapper<FactAgencyUserHouseDailyEntity> query = new LambdaQueryWrapper<>();
query.eq(FactAgencyUserHouseDailyEntity::getDateId, dateId);
query.eq(FactAgencyUserHouseDailyEntity::getAgencyId, orgId);
FactAgencyUserHouseDailyEntity agencyDailyStats = factAgencyUserHouseDailyDao.selectOne(query);
if (agencyDailyStats != null) {
result.setHouseTotal(agencyDailyStats.getHouseCount());
result.setCzHouseTotal(agencyDailyStats.getHouseLeaseCount());
result.setXzHouseTotal(agencyDailyStats.getHouseIdleCount());
result.setZzHouseTotal(agencyDailyStats.getHouseSelfCount());
result.setUserTotal(agencyDailyStats.getUserCount());
result.setCzUserTotal(agencyDailyStats.getUserResiCount());
result.setLdUserTotal(agencyDailyStats.getUserFloatCount());
}
} else {
// 查询的目标是网格
LambdaQueryWrapper<FactGridUserHouseDailyEntity> query = new LambdaQueryWrapper<>();
query.eq(FactGridUserHouseDailyEntity::getDateId, dateId);
query.eq(FactGridUserHouseDailyEntity::getGridId, orgId);
FactGridUserHouseDailyEntity gridDailyStats = factGridUserHouseDailyDao.selectOne(query);
if (gridDailyStats != null) {
result.setHouseTotal(gridDailyStats.getHouseCount());
result.setCzHouseTotal(gridDailyStats.getHouseLeaseCount());
result.setXzHouseTotal(gridDailyStats.getHouseIdleCount());
result.setZzHouseTotal(gridDailyStats.getHouseSelfCount());
result.setUserTotal(gridDailyStats.getUserCount());
result.setCzUserTotal(gridDailyStats.getUserResiCount());
result.setLdUserTotal(gridDailyStats.getUserFloatCount());
}
}
return result;
}
}

33
epmet-module/data-report/data-report-server/src/main/resources/mapper/stats/FactAgencyUserHouseDailyDao.xml

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.datareport.dao.stats.FactAgencyUserHouseDailyDao">
<resultMap type="com.epmet.datareport.entity.stats.FactAgencyUserHouseDailyEntity" id="factAgencyUserHouseDailyMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="dateId" column="DATE_ID"/>
<result property="agencyId" column="AGENCY_ID"/>
<result property="level" column="LEVEL"/>
<result property="pid" column="PID"/>
<result property="pids" column="PIDS"/>
<result property="neighbourhoodsCount" column="NEIGHBOURHOODS_COUNT"/>
<result property="houseCount" column="HOUSE_COUNT"/>
<result property="houseSelfCount" column="HOUSE_SELF_COUNT"/>
<result property="houseLeaseCount" column="HOUSE_LEASE_COUNT"/>
<result property="houseIdleCount" column="HOUSE_IDLE_COUNT"/>
<result property="userCount" column="USER_COUNT"/>
<result property="userResiCount" column="USER_RESI_COUNT"/>
<result property="userFloatCount" column="USER_FLOAT_COUNT"/>
<result property="houseIncr" column="HOUSE_INCR"/>
<result property="houseModify" column="HOUSE_MODIFY"/>
<result property="userIncr" column="USER_INCR"/>
<result property="userModify" column="USER_MODIFY"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>

32
epmet-module/data-report/data-report-server/src/main/resources/mapper/stats/FactGridUserHouseDailyDao.xml

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.datareport.dao.stats.FactGridUserHouseDailyDao">
<resultMap type="com.epmet.datareport.entity.stats.FactGridUserHouseDailyEntity" id="factGridUserHouseDailyMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="dateId" column="DATE_ID"/>
<result property="gridId" column="GRID_ID"/>
<result property="pid" column="PID"/>
<result property="pids" column="PIDS"/>
<result property="neighbourhoodsCount" column="NEIGHBOURHOODS_COUNT"/>
<result property="houseCount" column="HOUSE_COUNT"/>
<result property="houseSelfCount" column="HOUSE_SELF_COUNT"/>
<result property="houseLeaseCount" column="HOUSE_LEASE_COUNT"/>
<result property="houseIdleCount" column="HOUSE_IDLE_COUNT"/>
<result property="userCount" column="USER_COUNT"/>
<result property="userResiCount" column="USER_RESI_COUNT"/>
<result property="userFloatCount" column="USER_FLOAT_COUNT"/>
<result property="houseIncr" column="HOUSE_INCR"/>
<result property="houseModify" column="HOUSE_MODIFY"/>
<result property="userIncr" column="USER_INCR"/>
<result property="userModify" column="USER_MODIFY"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>

2
epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/AreaCodeServiceImpl.java

@ -833,7 +833,7 @@ public class AreaCodeServiceImpl extends BaseServiceImpl<AreaCodeDao, AreaCodeEn
private String addDistrictAreaCode(String cityCode, String countyName) {
AreaCodeDTO city = baseDao.selectByCityCode(cityCode);
AreaCodeEntity insert = ConvertUtils.sourceToTarget(city, AreaCodeEntity.class);
insert.setCityName(countyName);
insert.setCountyName(countyName);
AreaCodeDTO maxCountyDTO = baseDao.selectMaxCounty(cityCode);
if (null == maxCountyDTO) {
insert.setCountyCode(cityCode.concat(AreaCodeConstant.FIRST_TOW_UD));

6
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/NatInfoScanTask.java

@ -3,7 +3,7 @@ package com.epmet.task;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.form.NatInfoScanTaskFormDTO;
import com.epmet.dto.form.DataSyncTaskParam;
import com.epmet.feign.EpmetUserOpenFeignClient;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -26,9 +26,9 @@ public class NatInfoScanTask implements ITask {
@Override
public void run(String params) {
NatInfoScanTaskFormDTO formDTO = new NatInfoScanTaskFormDTO();
DataSyncTaskParam formDTO = new DataSyncTaskParam();
if (StringUtils.isNotBlank(params)) {
formDTO = JSON.parseObject(params, NatInfoScanTaskFormDTO.class);
formDTO = JSON.parseObject(params, DataSyncTaskParam.class);
}
Result result = userOpenFeignClient.natInfoScanTask(formDTO);
if (result.success()) {

6
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java

@ -175,6 +175,12 @@ public interface SystemMessageType {
*/
String PARTY_MEETING_MESSAGE = "party_meeting_message";
/**
* 查看或者导出 日志记录
*/
String CHECK_OR_EXPORT = "check_or_export";
String ZBWYH = "参加支部委员会";
String ZBDYDH = "参加支部党员大会";
String DXZH = "参加党小组会";

3
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java

@ -248,6 +248,9 @@ public class SystemMessageServiceImpl implements SystemMessageService {
case SystemMessageType.WMFWHD:
topic=TopicConstants.PARTY_BUILDING;
break;
case SystemMessageType.CHECK_OR_EXPORT:
topic = TopicConstants.CHECK_OR_EXPORT;
break;
default:
logger.error("getTopicByMsgType msgType:{} is not support for any topic", msgType);
}

71
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/DingMiniInfoController.java

@ -0,0 +1,71 @@
package com.epmet.controller;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.DingMiniInfoDTO;
import com.epmet.service.DingMiniInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* 钉钉小程序信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-14
*/
@RestController
@RequestMapping("dingMiniInfo")
public class DingMiniInfoController {
@Autowired
private DingMiniInfoService dingMiniInfoService;
@RequestMapping("page")
public Result<PageData<DingMiniInfoDTO>> page(@RequestParam Map<String, Object> params){
PageData<DingMiniInfoDTO> page = dingMiniInfoService.page(params);
return new Result<PageData<DingMiniInfoDTO>>().ok(page);
}
@RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET})
public Result<DingMiniInfoDTO> get(@PathVariable("id") String id){
DingMiniInfoDTO data = dingMiniInfoService.get(id);
return new Result<DingMiniInfoDTO>().ok(data);
}
@NoRepeatSubmit
@PostMapping("save")
public Result save(@RequestBody DingMiniInfoDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
dingMiniInfoService.save(dto);
return new Result();
}
@NoRepeatSubmit
@PostMapping("update")
public Result update(@RequestBody DingMiniInfoDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
dingMiniInfoService.update(dto);
return new Result();
}
@PostMapping("delete")
public Result delete(@RequestBody String[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
dingMiniInfoService.delete(ids);
return new Result();
}
}

16
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/DingMiniInfoDao.java

@ -0,0 +1,16 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.DingMiniInfoEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 钉钉小程序信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-14
*/
@Mapper
public interface DingMiniInfoDao extends BaseDao<DingMiniInfoEntity> {
}

55
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/DingMiniInfoEntity.java

@ -0,0 +1,55 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 钉钉小程序信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-14
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("ding_mini_info")
public class DingMiniInfoEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
private String suiteId;
/**
*
*/
private String appId;
/**
*
*/
private String miniAppId;
/**
*
*/
private String suiteName;
/**
*
*/
private String suiteKey;
/**
*
*/
private String suiteSecret;
private String token;
private String aesKey;
}

78
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/DingMiniInfoService.java

@ -0,0 +1,78 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.DingMiniInfoDTO;
import com.epmet.entity.DingMiniInfoEntity;
import java.util.List;
import java.util.Map;
/**
* 钉钉小程序信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-14
*/
public interface DingMiniInfoService extends BaseService<DingMiniInfoEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<DingMiniInfoDTO>
* @author generator
* @date 2022-09-14
*/
PageData<DingMiniInfoDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<DingMiniInfoDTO>
* @author generator
* @date 2022-09-14
*/
List<DingMiniInfoDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return DingMiniInfoDTO
* @author generator
* @date 2022-09-14
*/
DingMiniInfoDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2022-09-14
*/
void save(DingMiniInfoDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2022-09-14
*/
void update(DingMiniInfoDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2022-09-14
*/
void delete(String[] ids);
}

82
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DingMiniInfoServiceImpl.java

@ -0,0 +1,82 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.dao.DingMiniInfoDao;
import com.epmet.dto.DingMiniInfoDTO;
import com.epmet.entity.DingMiniInfoEntity;
import com.epmet.service.DingMiniInfoService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 钉钉小程序信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-14
*/
@Service
public class DingMiniInfoServiceImpl extends BaseServiceImpl<DingMiniInfoDao, DingMiniInfoEntity> implements DingMiniInfoService {
@Override
public PageData<DingMiniInfoDTO> page(Map<String, Object> params) {
IPage<DingMiniInfoEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, DingMiniInfoDTO.class);
}
@Override
public List<DingMiniInfoDTO> list(Map<String, Object> params) {
List<DingMiniInfoEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, DingMiniInfoDTO.class);
}
private QueryWrapper<DingMiniInfoEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<DingMiniInfoEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public DingMiniInfoDTO get(String id) {
DingMiniInfoEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, DingMiniInfoDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(DingMiniInfoDTO dto) {
DingMiniInfoEntity entity = ConvertUtils.sourceToTarget(dto, DingMiniInfoEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(DingMiniInfoDTO dto) {
DingMiniInfoEntity entity = ConvertUtils.sourceToTarget(dto, DingMiniInfoEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
}

6
epmet-module/epmet-third/epmet-third-server/src/main/resources/db/migration/V0.0.14__add_ding_table.sql

@ -33,13 +33,13 @@ INSERT INTO `epmet_third`.`ding_mini_info` (`ID`, `SUITE_ID`, `APP_ID`, `MINI_AP
CREATE TABLE `open_sync_biz_data`
(
`ID` varchar(255) NOT NULL,
`ID` varchar(64) NOT NULL,
`SUITE_KEY` varchar(255) DEFAULT NULL,
`SUBSCRIBE_ID` varchar(255) NOT NULL COMMENT '第三方企业应用的suiteid加下划线0',
`CORP_ID` varchar(255) NOT NULL COMMENT '第三方企业应用的corpid',
`BIZ_ID` varchar(255) NOT NULL COMMENT '第三方企业应用的suiteid',
`BIZ_DATA` json NOT NULL COMMENT '数据为Json格式',
`BIZ_TYPE` varchar(10) NOT NULL COMMENT '2:第三方企业应用票据;\n4:企业授权变更,包含授权、解除授权、授权变更;\n7:第三方企业应用变更,包含停用、启用、删除(删除保留授权);\n13:企业用户变更,包含用户添加、修改、删除;\n14:企业部门变更,包含部门添加、修改、删除;\n15:企业角色变更,包含角色添加、修改、删除;\n16:企业变更,包含企业修改、删除;\n17:市场订单;\n20:企业外部联系人变更,包含添加、修改、删除;\n22:ISV自定义审批;\n25:家校通讯录1.0(Deprecated)信息变更。家校通讯录升级,请查看家校通讯录2.0数据推送;\n32:智能硬件绑定类型;\n37:因订单到期或者用户退款等导致的服务关闭,目前仅推送因退款等导致的服务关闭;\n50:家校通讯录2.0,部门信息变更;\n51:家校通讯录2.0,人员信息变更;\n63:应用试用记录回调信息;\n66:工作台组件变更回调事件;\n67:钉钉假期相关回调事件;\n133:CRM客户动态相关数据回调事件;\n137:人事平台员工异动V2相关数据回调事件;\n139:异步转译通讯录id任务完成通知;\n165:人事平台员工档案变动事件相关数据的回调事件;\n175:人事解决方案变更事件;',
`BIZ_TYPE` varchar(10) NOT NULL COMMENT '2:第三方企业应用票据;',
`DEL_FLAG` int(1) NOT NULL,
`REVISION` int(1) NOT NULL,
`CREATED_TIME` datetime NOT NULL,
@ -48,4 +48,4 @@ CREATE TABLE `open_sync_biz_data`
`UPDATED_BY` varchar(255) NOT NULL,
PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
DEFAULT CHARSET = utf8mb4;

23
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/DingMiniInfoDao.xml

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.DingMiniInfoDao">
<resultMap type="com.epmet.entity.DingMiniInfoEntity" id="dingMiniInfoMap">
<result property="id" column="ID"/>
<result property="suiteId" column="SUITE_ID"/>
<result property="appId" column="APP_ID"/>
<result property="miniAppId" column="MINI_APP_ID"/>
<result property="suiteName" column="SUITE_NAME"/>
<result property="suiteKey" column="SUITE_KEY"/>
<result property="suiteSecret" column="SUITE_SECRET"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>

6
epmet-module/epmet-third/epmet-third-server/src/main/test/java/com/epmet/ThirdPlatformTest.java

@ -1,7 +1,5 @@
package com.epmet;
import com.alibaba.fastjson.JSON;
import com.aliyun.dingtalk.module.DingTalkResult;
import com.taobao.dingtalk.client.DingTalkClientToken;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
@ -24,7 +22,7 @@ public class ThirdPlatformTest {
@Test
public void sendText(){
DingTalkResult<String> appAccessTokenToken = dingTalkClientToken.getAppAccessTokenToken();
System.out.println("=======:"+JSON.toJSONString(appAccessTokenToken));
/* DingTalkResult<String> appAccessTokenToken = dingTalkClientToken.getAppAccessTokenToken();
System.out.println("=======:"+JSON.toJSONString(appAccessTokenToken));*/
}
}

1
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/controller/GovMenuController.java

@ -106,6 +106,7 @@ public class GovMenuController {
/**
* 导航
* +数字社区-系统管理-角色管理配置角色权限也会调用此接口
* @param tokenDto token
* @return List<GovMenuDTO>
*/

24
epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovMenuServiceImpl.java

@ -234,13 +234,22 @@ public class GovMenuServiceImpl extends BaseServiceImpl<GovMenuDao, GovMenuEntit
// PC端 每个客户的菜单信息,不放入缓存,每次登陆重新查询。
// 或者 你可以选择,在给每个客户 配置可见菜单的时候, 在saveCustomerMenu方法中,增加更新缓存的逻辑
tableName = getTableName(tableName);
return getCustomerMenuList(tokenDto.getCustomerId(), MenuTypeEnum.MENU.value(),tableName,tokenDto.getUserId());
// 来自于烟台的需求,需要添加按钮,所以不限制type
// return getCustomerMenuList(tokenDto.getCustomerId(), MenuTypeEnum.MENU.value(),tableName,tokenDto.getUserId());
return getCustomerMenuList(tokenDto.getCustomerId(),null,tableName,tokenDto.getUserId());
}
@Override
public List<GovMenuDTO> navDigitalCommunity(TokenDto tokenDto, String tableName) {
tableName = getTableName(tableName);
List<GovMenuEntity> menuList = baseDao.getCustomerMenuList(tokenDto.getCustomerId(), MenuTypeEnum.MENU.value(), HttpContextUtils.getLanguage(),tableName);
List<GovMenuEntity> menuList=new ArrayList<>();
if("gov_menu".equals(tableName)){
// 管理平台菜单返回所有的
menuList = baseDao.getCustomerMenuList(tokenDto.getCustomerId(),null, HttpContextUtils.getLanguage(),tableName);
}else{
//数据分析还是沿用原来的
menuList = baseDao.getCustomerMenuList(tokenDto.getCustomerId(), MenuTypeEnum.MENU.value(), HttpContextUtils.getLanguage(),tableName);
}
Result<Boolean> isRootManager = epmetUserOpenFeignClient.getIsRootManager(tokenDto.getUserId());
if (!isRootManager.success()){
throw new EpmetException("getIsRootManager method is failure");
@ -249,6 +258,11 @@ public class GovMenuServiceImpl extends BaseServiceImpl<GovMenuDao, GovMenuEntit
List<GovMenuDTO> govMenuDTOS = ConvertUtils.sourceToTarget(menuList, GovMenuDTO.class);
return TreeUtils.buildTree(govMenuDTOS);
}
/*for(GovMenuEntity m:menuList){
if("ic_resi_add".equals(m.getPermissions())){
logger.info("1、菜单返回了新增居民");
}
}*/
disposeGovMenu(menuList,tokenDto.getUserId());
Map<Boolean, List<GovMenuEntity>> groupByStatus = menuList.stream().collect(Collectors.groupingBy(GovMenuEntity::getRoleStatus));
List<GovMenuDTO> dtoList = ConvertUtils.sourceToTarget(CollectionUtils.isEmpty(groupByStatus.get(true)) ? new ArrayList<>() : groupByStatus.get(true), GovMenuDTO.class);
@ -284,11 +298,17 @@ public class GovMenuServiceImpl extends BaseServiceImpl<GovMenuDao, GovMenuEntit
menuList = new ArrayList<>();
return;
}
// logger.info("==roleIdList="+ JSON.toJSONString(roleIdList));
List<String> menuIdsList = govRoleMenuDao.getMenuIdsList(roleIdList);
if (CollectionUtils.isEmpty(menuIdsList)){
menuList = new ArrayList<>();
return;
}
/*for(String mid:menuIdsList){
if("1581827798717898754".equals(mid)){
logger.info("2、角色也有此菜单");
}
}*/
for (String id : menuIdsList) {
for (GovMenuEntity m : menuList) {
if (m.getId().equals(id)){

13
epmet-module/gov-access/gov-access-server/src/main/resources/mapper/GovMenuDao.xml

@ -47,9 +47,16 @@
select t1.*,
lang.field_value name
from gov_menu t1
INNER join gov_language lang on lang.table_name=#{tableName} and lang.field_name='name' and lang.table_id=t1.id and lang.language=#{language}
RIGHT JOIN gov_customer_menu m ON t1.id = m.TABLE_ID
where t1.del_flag = 0 AND m.del_flag = 0
INNER join gov_language lang
on (lang.table_name=#{tableName}
and lang.field_name='name'
and lang.table_id=t1.id
and lang.language=#{language}
)
RIGHT JOIN gov_customer_menu m
ON t1.id = m.TABLE_ID
where t1.del_flag = 0
AND m.del_flag = 0
<if test="type != null">
and t1.type = #{type}
</if>

2
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/constant/NeighborhoodConstant.java

@ -12,4 +12,6 @@ public interface NeighborhoodConstant {
String BUILDING = "building";
String HOUSE = "house";
String IC_RESI_USER = "icResiUser";
}

9
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java

@ -161,4 +161,13 @@ public class IcHouseDTO implements Serializable {
* 房屋可编辑编码
*/
private String coding;
/**
* 加密后的联系方式
*/
private String showOwnerPhone;
/**
* 加密后的房主身份证
*/
private String showOwnerIdCard;
}

15
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CommunityUserHouseStatsFormDTO.java

@ -0,0 +1,15 @@
package com.epmet.dto.form;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CommunityUserHouseStatsFormDTO {
private String orgId;
private String orgType;
private Integer pageNo = 1;
private Integer pageSize = 10;
}

25
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/DetailByTypeFormDTO.java

@ -0,0 +1,25 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/10/17 13:42
* @DESC
*/
@Data
public class DetailByTypeFormDTO implements Serializable {
private static final long serialVersionUID = 8190270734257503603L;
public interface DetailByTypeForm{}
@NotBlank(message = "type不能为空",groups = DetailByTypeForm.class)
private String type;
@NotBlank(message = "id不能为空",groups = DetailByTypeForm.class)
private String id;
}

15
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/UsingCommunityStatsFormDTO.java

@ -0,0 +1,15 @@
package com.epmet.dto.form;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UsingCommunityStatsFormDTO {
private String orgId;
private String orgType;
}

20
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DetailByTypeResultDTO.java

@ -0,0 +1,20 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/10/17 13:41
* @DESC
*/
@Data
public class DetailByTypeResultDTO implements Serializable {
private static final long serialVersionUID = -8067849365791132347L;
private String idCard;
private String mobile;
}

20
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseChartResultDTO.java

@ -56,6 +56,26 @@ public class HouseChartResultDTO implements Serializable {
*/
private Double wscHouseRatio = 0.0;
/**
* 房屋总数-较上月
*/
private Integer houseTotalJSY;
/**
* 自住房屋树-较上月
*/
private Integer zzHouseTotalJSY;
/**
* 出租房屋总数-较上月
*/
private Integer czHouseTotalJSY;
/**
* 闲置房屋总数-较上月
*/
private Integer xzHouseTotalJSY;
@JsonIgnore
private Integer num;
//1:出租 0:自住 2:闲置 3:未出售

16
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseInfoDTO.java

@ -108,4 +108,20 @@ public class HouseInfoDTO implements Serializable {
* 二维码地址
*/
private String houseQrcodeUrl;
/**
* 房主姓名
*/
private String ownerName;
/**
* 房主电话
*/
private String ownerPhone;
/**
* 房主身份证
*/
private String ownerIdCard;
}

5
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/SubUserHouseListResultDTO.java

@ -79,4 +79,9 @@ public class SubUserHouseListResultDTO implements Serializable {
*/
private Double ldUserRatio = 0.0;
/**
* 开通平台的社区数
*/
private Integer usingCommunityNum;
}

21
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/UsingCommunityStatsResultDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.result;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UsingCommunityStatsResultDTO {
/**
* 开通平台社区数
*/
private Integer usingCommunityNum;
/**
* 开通平台社区数-较上月
*/
private Integer usingCommunityNumJSY;
}

11
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java

@ -613,5 +613,14 @@ public class AgencyController {
return new Result<List<CustomerTreeDTO>>().ok(agencyService.getCustomerTree(tokenDto));
}
/**
* 开通平台的社区数统计
* @return
*/
@RequestMapping("usingCommunityStats")
public Result<UsingCommunityStatsResultDTO> usingCommunityStats(@RequestBody UsingCommunityStatsFormDTO input) {
String orgId = input.getOrgId();
String orgType = input.getOrgType();
return new Result<UsingCommunityStatsResultDTO>().ok(agencyService.usingCommunityStats(orgId, orgType));
}
}

68
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java

@ -25,6 +25,8 @@ import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.constants.TopicConstants;
import com.epmet.commons.rocketmq.messages.CheckMQMsg;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.MaskResponse;
import com.epmet.commons.tools.annotation.ReportRequest;
@ -40,10 +42,7 @@ import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.bean.HouseInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.HouseQRcodeUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.poi.excel.handler.ExcelFillRowMergeStrategy;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
@ -54,6 +53,7 @@ import com.epmet.dto.result.*;
import com.epmet.entity.CustomerOrgParameterEntity;
import com.epmet.feign.EpmetAdminOpenFeignClient;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.service.HouseService;
import com.epmet.util.ExcelPoiUtils;
@ -66,18 +66,18 @@ import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.concurrent.TimeUnit;
@ -105,6 +105,8 @@ public class HouseController implements ResultDataResolver {
@Autowired
private IcHouseDao icHouseDao;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@ReportRequest
@PostMapping("houselist")
@ -265,7 +267,7 @@ public class HouseController implements ResultDataResolver {
* @throws Exception
*/
@RequestMapping("exporthouseinfo")
public void exporthouseinfo(@RequestBody IcHouseListFormDTO formDTO, HttpServletResponse response) throws Exception {
public void exporthouseinfo(@RequestBody IcHouseListFormDTO formDTO, HttpServletResponse response,@LoginUser TokenDto tokenDto) throws Exception {
ValidatorUtils.validateEntity(formDTO);
if (StringUtils.isNotBlank(formDTO.getId())){
formDTO.setSelectType("id");
@ -274,7 +276,21 @@ public class HouseController implements ResultDataResolver {
}
formDTO.setIsPage(false);
houseService.exportBuildinginfo(formDTO, response);
// 新增操作日志
CheckMQMsg msg = new CheckMQMsg();
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
msg.setOperateTime(new Date());
msg.setContent("导出房屋数据");
msg.setType("exportHouse");
msg.setTypeDisplay("导出房屋数据");
msg.setUserId(tokenDto.getUserId());
msg.setFromApp(tokenDto.getApp());
msg.setIp(IpUtils.getIpAddr(request));
msg.setFromClient(tokenDto.getClient());
SystemMsgFormDTO form = new SystemMsgFormDTO();
form.setMessageType(TopicConstants.CHECK_OR_EXPORT);
form.setContent(msg);
epmetMessageOpenFeignClient.sendSystemMsgByMQ(form);
}
@PostMapping("queryListHouseInfo")
@ -452,6 +468,22 @@ public class HouseController implements ResultDataResolver {
//获取导出配置
haveSearchCache.invalidateAll();
// 发送操作日志
CheckMQMsg msg = new CheckMQMsg();
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
msg.setOperateTime(new Date());
msg.setContent("导出一户一档数据");
msg.setType("exportYHYD");
msg.setTypeDisplay("导出一户一档数据");
msg.setUserId(tokenDto.getUserId());
msg.setFromApp(tokenDto.getApp());
msg.setIp(IpUtils.getIpAddr(request));
msg.setFromClient(tokenDto.getClient());
SystemMsgFormDTO form = new SystemMsgFormDTO();
form.setMessageType(TopicConstants.CHECK_OR_EXPORT);
form.setContent(msg);
epmetMessageOpenFeignClient.sendSystemMsgByMQ(form);
} catch (EpmetException e) {
response.reset();
response.setCharacterEncoding("UTF-8");
@ -629,4 +661,20 @@ public class HouseController implements ResultDataResolver {
return new Result<PageData<IcHouseListResultDTO>>().ok(houseService.houseStatisListDetail(formDTO));
}
/**
* 针对社区的人房统计列表
* @return
*/
@PostMapping("usingCommunityUserHouseStats")
public Result<PageData<SubUserHouseListResultDTO>> communityUserHouseStats(@RequestBody CommunityUserHouseStatsFormDTO input) {
String orgId = input.getOrgId();
String orgType = input.getOrgType();
Integer pageNo = input.getPageNo();
Integer pageSize = input.getPageSize();
PageData<SubUserHouseListResultDTO> r = houseService.usingCommunityUserHouseStats(orgId, orgType, pageNo, pageSize);
return new Result<PageData<SubUserHouseListResultDTO>>().ok(r);
}
}

21
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java

@ -18,20 +18,17 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.MaskResponse;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.IcHouseDTO;
import com.epmet.dto.IcVaccinePrarmeterDTO;
import com.epmet.dto.form.CheckHouseInfoFormDTO;
import com.epmet.dto.form.DetailByTypeFormDTO;
import com.epmet.dto.form.HouseFormDTO;
import com.epmet.dto.form.VaccinePrarmeterListFormDTO;
import com.epmet.dto.result.HouseAgencyInfoResultDTO;
import com.epmet.dto.result.HouseInfoDTO;
import com.epmet.dto.result.HouseListResultDTO;
import com.epmet.dto.result.HousesNameResultDTO;
import com.epmet.dto.result.*;
import com.epmet.service.IcHouseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -53,6 +50,7 @@ public class IcHouseController {
@Autowired
private IcHouseService icHouseService;
@MaskResponse(fieldNames = { "showOwnerPhone", "showOwnerIdCard" }, fieldsMaskType = { MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD })
@GetMapping("{id}")
public Result<IcHouseDTO> get(@PathVariable("id") String id) {
IcHouseDTO data = icHouseService.get(id);
@ -154,6 +152,17 @@ public class IcHouseController {
ValidatorUtils.validateEntity(formDTO, PageFormDTO.AddUserInternalGroup.class);
formDTO.setCustomerId(tokenDto.getCustomerId());
return icHouseService.checkHomeInfo(formDTO);
}
/**
* Desc: 数据明文查询
* @param formDTO
* @author zxc
* @date 2022/10/17 13:45
*/
@PostMapping("detailByType")
public Result<DetailByTypeResultDTO> detailByType(@RequestBody DetailByTypeFormDTO formDTO,@LoginUser TokenDto tokenDto){
ValidatorUtils.validateEntity(formDTO, DetailByTypeFormDTO.DetailByTypeForm.class);
return new Result<DetailByTypeResultDTO>().ok(icHouseService.detailByType(formDTO,tokenDto));
}
}

11
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/CustomerAgencyDao.java

@ -27,6 +27,7 @@ import com.epmet.entity.CustomerAgencyEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
@ -387,5 +388,15 @@ public interface CustomerAgencyDao extends BaseDao<CustomerAgencyEntity> {
*/
CustomerAgencyEntity getAgencyByUserId(@Param("userId") String userId, @Param("customerId") String customerId);
/**
* 开通社区列表
* @param agencyId 机关组织的id
* @param agencyOrgIdPath agency的id路径path包含自己
* @param endDate 截止日期也即查询截止改日期有多少社区在使用
* @return
*/
List<String> getUsingCommunityList(@Param("customerId") String customerId, @Param("agencyId") String agencyId, @Param("agencyOrgIdPath") String agencyOrgIdPath, @Param("endDate") Date endDate);
List<String> getCommunitysByOrgIdPath(@Param("customerId") String customerId, @Param("orgId") String orgId, @Param("orgIdPath") String orgIdPath);
}

5
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/AgencyService.java

@ -199,4 +199,9 @@ public interface AgencyService {
*/
List<CustomerTreeDTO> getCustomerTree(TokenDto tokenDto);
/**
* 开通平台的社区数统计
* @return
*/
UsingCommunityStatsResultDTO usingCommunityStats(String orgId, String orgType);
}

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java

@ -197,4 +197,6 @@ public interface HouseService {
PageData<ReportHouseTestResultDTO> listHouses4ReportTest(String houseId, Integer pageNo, Integer pageSize);
PageData<IcHouseListResultDTO> houseStatisListDetail(HouseChartFormDTO formDTO);
PageData<SubUserHouseListResultDTO> usingCommunityUserHouseStats(String orgId, String orgType, Integer pageNo, Integer pageSize);
}

15
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java

@ -7,11 +7,9 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IcHouseDTO;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.form.CheckHouseInfoFormDTO;
import com.epmet.dto.form.DetailByTypeFormDTO;
import com.epmet.dto.form.HouseFormDTO;
import com.epmet.dto.result.HouseAgencyInfoResultDTO;
import com.epmet.dto.result.HouseInfoDTO;
import com.epmet.dto.result.HouseListResultDTO;
import com.epmet.dto.result.HousesNameResultDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.IcHouseEntity;
import java.util.List;
@ -139,4 +137,13 @@ public interface IcHouseService extends BaseService<IcHouseEntity> {
* @return
*/
Result checkHomeInfo(CheckHouseInfoFormDTO formDTO);
/**
* Desc: 数据明文查询
* @param formDTO
* @author zxc
* @date 2022/10/17 13:45
*/
DetailByTypeResultDTO detailByType(DetailByTypeFormDTO formDTO, TokenDto tokenDto);
}

55
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java

@ -34,9 +34,7 @@ import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.NodeTreeUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.*;
import com.epmet.constant.CustomerAgencyConstant;
import com.epmet.constant.OrgInfoConstant;
import com.epmet.constant.RoleKeyConstants;
@ -1114,4 +1112,55 @@ public class AgencyServiceImpl implements AgencyService {
}
@Override
public UsingCommunityStatsResultDTO usingCommunityStats(String orgId, String orgType) {
String customerId = EpmetRequestHolder.getLoginUserCustomerId();
String userId = EpmetRequestHolder.getLoginUserId();
// 所属组织的上级
String agencyOrgIdPath = null;
if (StringUtils.isBlank(orgId)) {
// 没有传参数,使用当前登录人员所属的组织去查询
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, userId);
if (staffInfo == null) {
String errorMsg = String.format("查询当前工作人员信息失败。staffId:%s", userId);
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), errorMsg, errorMsg);
}
orgId = staffInfo.getAgencyId();
orgType = "agency";
// agencyOrgIdPath = getOrgIdPath(staffInfo);
}
if ("agency".equals(orgType)) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date endTime = calendar.getTime();
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(orgId);
agencyOrgIdPath = getOrgIdPath(agencyInfo.getPids(), agencyInfo.getId());
List<String> currentUsingCommunityList = customerAgencyDao.getUsingCommunityList(customerId, orgId, agencyOrgIdPath, null);
List<String> preferUsingCommunityList = customerAgencyDao.getUsingCommunityList(customerId, orgId, agencyOrgIdPath, endTime);
return new UsingCommunityStatsResultDTO(currentUsingCommunityList.size(), currentUsingCommunityList.size() - preferUsingCommunityList.size());
} else if ("grid".equals(orgType)) {
// 网格下不会有该数据,给个0
return new UsingCommunityStatsResultDTO(0, 0);
}
return null;
}
private String getOrgIdPath(String orgPids, String orgId) {
if (StringUtils.isBlank(orgPids) || "0".equals(orgPids)) {
return orgId;
}
return orgPids.concat(":").concat(orgId);
}
}

99
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java

@ -8,6 +8,7 @@ import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.enums.HouseQrcodeEnum;
@ -34,17 +35,17 @@ import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.*;
import com.epmet.dto.*;
import com.epmet.dto.form.*;
import com.epmet.dto.form.stats.UserHouseStatsQueryFormDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.*;
import com.epmet.enums.*;
import com.epmet.feign.EpmetAdminOpenFeignClient;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.OssFeignClient;
import com.epmet.feign.*;
import com.epmet.model.HouseInfoModel;
import com.epmet.model.ImportHouseInfoListener;
import com.epmet.redis.CustomerAgencyRedis;
import com.epmet.redis.IcHouseRedis;
import com.epmet.service.*;
import com.epmet.stats.UserHouseStatsResultDTO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.cache.Cache;
@ -68,6 +69,7 @@ import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URLEncoder;
import java.text.NumberFormat;
import java.time.LocalDate;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
@ -132,6 +134,9 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver {
@Autowired
private IcBuildingUnitDao icBuildingUnitDao;
@Autowired
private DataReportOpenFeignClient dataReportOpenFeignClient;
@Override
@Transactional(rollbackFor = Exception.class)
@ -175,7 +180,9 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver {
try {
entity.setHouseQrcodeUrl(createHouseQrcodeUrl(icHouseDTO.getId(),null));
} catch (Exception e) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"二维码生成失败","二维码生成失败");
String errorMsg = ExceptionUtils.getErrorStackTrace(e);
log.error("二维码生成失败:"+errorMsg);
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"二维码生成失败:","二维码生成失败");
}
icHouseDao.updateById(entity);
}
@ -716,6 +723,17 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver {
resultDTO.setWscHouseRatio(Double.valueOf((resultDTO.getHouseTotal() == 0 || resultDTO.getWscHouseTotal() > resultDTO.getHouseTotal()) ? "0" : numberFormat.format(((float) resultDTO.getWscHouseTotal() / (float) resultDTO.getHouseTotal()) * 100)));
resultDTO.setOrgId(formDTO.getOrgId());
resultDTO.setOrgType(formDTO.getOrgType());
// 加载上个月,该组织的人房统计信息,并且计算较上月信息
Date lastDayOfLastMonth = DateUtils.getLastDayOfMonth(DateUtils.addDateMonths(new Date(), -1));
UserHouseStatsQueryFormDTO form = new UserHouseStatsQueryFormDTO(formDTO.getOrgId(), formDTO.getOrgType(), DateUtils.format(lastDayOfLastMonth, "yyyyMMdd"));
UserHouseStatsResultDTO lastMonthUserHouseStats = getResultDataOrThrowsException(dataReportOpenFeignClient.getUserHouseDailyStatsByDateId(form), ServiceConstant.DATA_REPORT_SERVER,
EpmetErrorCode.SERVER_ERROR.getCode(), null, null);
resultDTO.setHouseTotalJSY(resultDTO.getHouseTotal() - lastMonthUserHouseStats.getHouseTotal());
resultDTO.setCzHouseTotalJSY(resultDTO.getCzHouseTotal() - lastMonthUserHouseStats.getCzHouseTotal());
resultDTO.setXzHouseTotalJSY(resultDTO.getXzHouseTotal() - lastMonthUserHouseStats.getXzHouseTotal());
resultDTO.setZzHouseTotalJSY(resultDTO.getZzHouseTotal() - lastMonthUserHouseStats.getZzHouseTotal());
return resultDTO;
}
@ -962,6 +980,20 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver {
dto.setLdUserRatio(u.getLdUserRatio());
}
}
// 为每一个子级组织,查询开通了多少个社区
if ("agency".equals(dto.getOrgType())) {
AgencyService agencyService = SpringContextUtils.getBean(AgencyService.class);
if (agencyService != null) {
UsingCommunityStatsResultDTO usingCommunityStats = agencyService.usingCommunityStats(dto.getOrgId(), dto.getOrgType());
if (usingCommunityStats != null) {
dto.setUsingCommunityNum(usingCommunityStats.getUsingCommunityNum());
}
}
} else if ("grid".equals(dto.getOrgType())) {
// 网格这项数据为0
dto.setUsingCommunityNum(0);
}
list.add(dto);
}
return list;
@ -1363,5 +1395,62 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver {
return new PageData<>(list, pageInfo.getTotal());
}
@Override
public PageData<SubUserHouseListResultDTO> usingCommunityUserHouseStats(String orgId, String orgType, Integer pageNo, Integer pageSize) {
String customerId = EpmetRequestHolder.getLoginUserCustomerId();
if (StringUtils.isBlank(orgId)) {
// 没有传参数,使用当前登录人员所属的组织去查询
String userId = EpmetRequestHolder.getLoginUserId();
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, userId);
if (staffInfo == null) {
String errorMsg = String.format("查询当前工作人员信息失败。staffId:%s", userId);
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), errorMsg, errorMsg);
}
orgId = staffInfo.getAgencyId();
orgType = "agency";
}
PageHelper.startPage(pageNo, pageSize);
List<String> communityIds = customerAgencyDao.getUsingCommunityList(customerId, orgId, CustomerOrgRedis.getOrgIdPath(orgId, orgType), null);
// List<String> communityIds = customerAgencyDao.getCommunitysByOrgIdPath(customerId, orgId, CustomerOrgRedis.getOrgIdPath(orgId, orgType));
// 填充组织信息
Map<String, String> communityMap = communityIds.stream().collect(Collectors.toMap(id -> id, id -> concatAgencyNamePath(id)));
List<SubUserHouseListResultDTO> communityUserHouseStats = houseUserChartList(communityIds, communityMap, "agency");
return new PageData<SubUserHouseListResultDTO>(communityUserHouseStats, new PageInfo<>(communityIds).getTotal());
}
public String concatAgencyNamePath(String agencyId) {
List<String> agencyNamePathList = new ArrayList();
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(agencyId);
if (agencyInfo == null) {
return null;
}
String pidsStr = agencyInfo.getPids();
if (StringUtils.isBlank(pidsStr)) {
// 没有pids,是顶级,直接返回
agencyNamePathList.add(agencyInfo.getOrganizationName());
return String.join("-", agencyNamePathList);
}
String[] pidList = pidsStr.split(":");
for (String pAgencyId : pidList) {
AgencyInfoCache pAgencyInfo = CustomerOrgRedis.getAgencyInfo(pAgencyId);
if (pAgencyInfo == null) {
continue;
}
agencyNamePathList.add(pAgencyInfo.getOrganizationName());
}
// 最后把自己加上
agencyNamePathList.add(agencyInfo.getOrganizationName());
return String.join("-", agencyNamePathList);
}
}

65
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java

@ -3,6 +3,8 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.constants.TopicConstants;
import com.epmet.commons.rocketmq.messages.CheckMQMsg;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
@ -10,10 +12,14 @@ 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.redis.common.CustomerIcHouseRedis;
import com.epmet.commons.tools.redis.common.CustomerResiUserRedis;
import com.epmet.commons.tools.redis.common.bean.HouseInfoCache;
import com.epmet.commons.tools.redis.common.bean.IcResiUserInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.IpUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.NeighborhoodConstant;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dao.IcBuildingUnitDao;
import com.epmet.dao.IcHouseDao;
@ -23,7 +29,9 @@ import com.epmet.dto.IcResiCategoryStatsConfigDTO;
import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.form.CheckHouseInfoFormDTO;
import com.epmet.dto.form.DetailByTypeFormDTO;
import com.epmet.dto.form.HouseFormDTO;
import com.epmet.dto.form.SystemMsgFormDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.IcBuildingEntity;
import com.epmet.entity.IcBuildingUnitEntity;
@ -32,6 +40,7 @@ import com.epmet.entity.IcNeighborHoodEntity;
import com.epmet.enums.HousePurposeEnums;
import com.epmet.enums.HouseRentFlagEnums;
import com.epmet.enums.HouseTypeEnums;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.redis.IcHouseRedis;
@ -39,10 +48,14 @@ import com.epmet.service.IcHouseService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
@ -69,7 +82,8 @@ public class IcHouseServiceImpl extends BaseServiceImpl<IcHouseDao, IcHouseEntit
private IcBuildingDao icBuildingDao;
@Resource
private IcBuildingUnitDao buildingUnitDao;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Override
public IcHouseDTO get(String id) {
@ -78,6 +92,8 @@ public class IcHouseServiceImpl extends BaseServiceImpl<IcHouseDao, IcHouseEntit
if (null == dto) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), String.format("houseId:%s已删除", id), "房屋已删除");
}
dto.setShowOwnerIdCard(dto.getOwnerIdCard());
dto.setShowOwnerPhone(dto.getOwnerPhone());
dto.setHouseTypeName(HouseTypeEnums.getTypeValue(dto.getHouseType()));
dto.setRentName(HouseRentFlagEnums.getTypeValue(dto.getRentFlag()));
dto.setPurposeName(HousePurposeEnums.getTypeValue(dto.getPurpose()));
@ -400,4 +416,51 @@ public class IcHouseServiceImpl extends BaseServiceImpl<IcHouseDao, IcHouseEntit
return new Result<CheckHomeInfoResultInfo>().ok(checkHomeInfoResultInfo);
}
/**
* Desc: 数据明文查询
* @param formDTO
* @author zxc
* @date 2022/10/17 13:45
*/
@Override
public DetailByTypeResultDTO detailByType(DetailByTypeFormDTO formDTO, TokenDto tokenDto) {
DetailByTypeResultDTO result = new DetailByTypeResultDTO();
String customerId = tokenDto.getCustomerId();
String userId = tokenDto.getUserId();
CheckMQMsg msg = new CheckMQMsg();
if (formDTO.getType().equals(NeighborhoodConstant.HOUSE)){
HouseInfoCache houseInfo = CustomerIcHouseRedis.getHouseInfo(customerId, formDTO.getId());
if (null == houseInfo){
throw new EpmetException("查询房屋信息失败:"+formDTO.getId());
}
result.setMobile(houseInfo.getOwnerPhone());
result.setIdCard(houseInfo.getOwnerIdCard());
msg.setContent("查看"+houseInfo.getAllName()+"房屋的敏感信息");
msg.setType("checkHouse");
msg.setTypeDisplay("查看"+houseInfo.getAllName()+"房屋的敏感信息");
}else if (formDTO.getType().equals(NeighborhoodConstant.IC_RESI_USER)){
IcResiUserInfoCache icResiUserInfo = CustomerResiUserRedis.getIcResiUserInfo(formDTO.getId());
if (null == icResiUserInfo){
throw new EpmetException("查询icResiUser失败:"+formDTO.getId());
}
result.setIdCard(icResiUserInfo.getIdCard());
result.setMobile(icResiUserInfo.getMobile());
msg.setContent("查看"+icResiUserInfo.getName()+"的敏感信息");
msg.setType("checkIcResiUser");
msg.setTypeDisplay("查看"+icResiUserInfo.getName()+"的敏感信息");
}
// 发送mq消息
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
msg.setOperateTime(new Date());
msg.setUserId(userId);
msg.setFromApp(tokenDto.getApp());
msg.setIp(IpUtils.getIpAddr(request));
msg.setFromClient(tokenDto.getClient());
SystemMsgFormDTO form = new SystemMsgFormDTO();
form.setMessageType(TopicConstants.CHECK_OR_EXPORT);
form.setContent(msg);
epmetMessageOpenFeignClient.sendSystemMsgByMQ(form);
return result;
}
}

29
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/CustomerAgencyDao.xml

@ -1011,4 +1011,33 @@
LIMIT 1
</select>
<select id="getCommunitysByOrgIdPath" resultType="string">
select ca.ID
from customer_agency ca
where ca.CUSTOMER_ID=#{customerId}
and ca.LEVEL = 'community'
and ca.DEL_FLAG = 0
and (ca.ID = #{orgId} or ca.PIDS like CONCAT(#{orgIdPath},'%'))
order by ca.CREATED_TIME asc
</select>
<!--开通社区列表-->
<select id="getUsingCommunityList" resultType="string">
select t.ID
from (select ca.ID
, ca.CREATED_TIME created_time
, count(csa.ID) community_count
from customer_agency ca
inner join customer_staff_agency csa on (ca.ID = csa.AGENCY_ID and csa.DEL_FLAG = 0)
where ca.DEL_FLAG = 0
and ca.CUSTOMER_ID=#{customerId}
and ca.LEVEL = 'community'
<if test="endDate != null">
and csa.CREATED_TIME <![CDATA[<]]> #{endDate}
</if>
and (ca.ID = #{agencyId} or ca.PIDS like CONCAT(#{agencyOrgIdPath}, '%'))
group by ca.ID, ca.CREATED_TIME
having community_count > 0
order by created_time desc) t
</select>
</mapper>

5
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml

@ -276,7 +276,10 @@
gr.GRID_NAME,
ih.HOUSE_CODE,
ih.CODING,
ih.HOUSE_QRCODE_URL
ih.HOUSE_QRCODE_URL,
ih.owner_name,
ih.owner_phone,
ih.owner_id_card
FROM ic_house ih
left JOIN ic_neighbor_hood n ON ( ih.NEIGHBOR_HOOD_ID = n.id AND n.DEL_FLAG = '0')
left JOIN ic_building ib ON ( ih.BUILDING_ID = ib.id AND ib.DEL_FLAG = '0')

2
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/IcEventController.java

@ -5,6 +5,7 @@ import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.MaskResponse;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.NumConstant;
@ -274,6 +275,7 @@ public class IcEventController {
* @Author sun
* @Description 事件管理-详情
**/
@MaskResponse(fieldNames = { "idCard"}, fieldsMaskType = {MaskResponse.MASK_TYPE_ID_CARD })
@PostMapping("detail")
public Result<IcEventListResultDTO> detail(@LoginUser TokenDto tokenDto, @RequestBody IcEventListFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());

1
epmet-module/gov-project/gov-project-server/src/main/resources/mapper/IcEventDao.xml

@ -57,6 +57,7 @@
</choose>
<where>
e.CUSTOMER_ID = #{customerId}
AND e.DEL_FLAG = '0'
and e.HAPPEN_TIME >= #{queryStartTime}
and e.HAPPEN_TIME <![CDATA[<=]]> #{queryEndTime}
<if test="orgType == 'agency'">

5
epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/TopArticleFormDTO.java

@ -22,5 +22,10 @@ public class TopArticleFormDTO {
*/
@NotBlank(message = "type不能为空,置顶:top,取消置顶:cancel_top")
private String type;
/**
* 封面图片
*/
private String imgUrl;
}

2
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/ArticleController.java

@ -432,7 +432,7 @@ public class ArticleController {
@PostMapping("topArticle")
public Result topArticle(@RequestBody TopArticleFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO);
articleService.topArticle(formDTO.getArticleId(),formDTO.getType());
articleService.topArticle(formDTO.getArticleId(),formDTO.getType(),formDTO.getImgUrl());
return new Result();
}
/**

2
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/ArticleService.java

@ -256,5 +256,5 @@ public interface ArticleService extends BaseService<ArticleEntity> {
PublishedListResultDTO detailV2(ArticleListFormDTO formDTO);
void topArticle(String articleId, String type);
void topArticle(String articleId, String type,String imgUrl);
}

20
epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/ArticleServiceImpl.java

@ -878,7 +878,10 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
//1.查询文章详情信息
ArticleDetailResultDTO articleInfo = baseDao.selectArticleDetail(articleDetailFormDTO.getGridId(), articleDetailFormDTO.getArticleId());
if (null == articleInfo) {
throw new RenException(String.format(ModuleConstant.SPECIFIED_ARTICLE_NOT_FOUND_EXCEPTION_TEMPLATE, articleDetailFormDTO.getArticleId(), articleDetailFormDTO.getGridId()));
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),
String.format(ModuleConstant.SPECIFIED_ARTICLE_NOT_FOUND_EXCEPTION_TEMPLATE, articleDetailFormDTO.getArticleId(), articleDetailFormDTO.getGridId()),
"文章已下线");
// throw new RenException(String.format(ModuleConstant.SPECIFIED_ARTICLE_NOT_FOUND_EXCEPTION_TEMPLATE, articleDetailFormDTO.getArticleId(), articleDetailFormDTO.getGridId()));
}
//2.判断当前用户当前文章当前网格是否存在访问记录
Map<String, Object> params = new HashMap<>();
@ -1777,7 +1780,7 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
}
@Override
public void topArticle(String articleId, String type) {
public void topArticle(String articleId, String type,String imgUrl) {
ArticleEntity articleEntity = baseDao.selectById(articleId);
if (null != articleEntity) {
/**
@ -1786,6 +1789,19 @@ public class ArticleServiceImpl extends BaseServiceImpl<ArticleDao, ArticleEntit
*/
if ("top".equals(type)) {
articleEntity.setIsTop(NumConstant.ONE);
if(StringUtils.isNotBlank(imgUrl)){
//如果没有封面图片的话,更新
LambdaQueryWrapper<ArticleCoverEntity> queryWrapper=new LambdaQueryWrapper();
queryWrapper.eq(ArticleCoverEntity::getArticleId,articleEntity);
if (articleCoverDao.selectCount(queryWrapper) == 0) {
ArticleCoverEntity articleCoverEntity=new ArticleCoverEntity();
articleCoverEntity.setCustomerId(articleEntity.getCustomerId());
articleCoverEntity.setArticleId(articleId);
articleCoverEntity.setImgUrl(imgUrl);
articleCoverEntity.setAuditStatus("pass");
articleCoverDao.insert(articleCoverEntity);
}
}
} else if ("cancel_top".equals(type)) {
articleEntity.setIsTop(NumConstant.ZERO);
}

3
epmet-module/resi-partymember/resi-partymember-client/src/main/java/com/epmet/resi/partymember/dto/partymember/IcPartyMemberDTO.java

@ -63,7 +63,8 @@ public class IcPartyMemberDTO implements Serializable {
*/
@NotBlank(message = "当前网格id不能为空",groups ={AddGroup.class, UpdateGroup.class})
private String mobile;
private String showMobile;
private String showIdCard;
/**
* 身份证号
*/

6
epmet-module/resi-partymember/resi-partymember-server/src/main/java/com/epmet/modules/partymember/controller/IcPartyMemberController.java

@ -30,7 +30,6 @@ import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.form.IcPartyMemberFormDTO;
import com.epmet.dto.form.IcPartyMemberListFormDTO;
import com.epmet.dto.form.ReadIcMessageFormDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.dto.result.PartyMemberAgeResultDTO;
import com.epmet.dto.result.PartyMemberEducationResultDTO;
@ -90,9 +89,14 @@ public class IcPartyMemberController implements ResultDataResolver {
return new Result<PageData<IcPartyMemberResultDTO>>().ok(page);
}
@MaskResponse(fieldNames = { "showMobile", "showIdCard" }, fieldsMaskType = { MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD })
@RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET})
public Result<IcPartyMemberDTO> get(@LoginUser TokenDto tokenDto, @PathVariable("id") String id){
IcPartyMemberDTO data = icPartyMemberService.get(tokenDto, id);
if(null!=data){
data.setShowMobile(data.getMobile());
data.setShowIdCard(data.getIdCard());
}
return new Result<IcPartyMemberDTO>().ok(data);
}
@NoRepeatSubmit

5
epmet-user/epmet-user-client/src/main/java/com/epmet/constant/IcResiUserConstant.java

@ -24,4 +24,9 @@ public interface IcResiUserConstant {
String BIRTH = "birth";
String IN = "in";
String ADD ="add";
String USER_CATEGORY = "category";
String USER_CATEGORY_CN = "类别";
String IS_CJ = "IS_CJ";
String IS_CJ_CN = "残疾";
}

177
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/DataSyncRecordDeathDTO.java

@ -0,0 +1,177 @@
package com.epmet.dto;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 数据同步记录-居民死亡信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-11
*/
@Data
public class DataSyncRecordDeathDTO implements Serializable {
private static final long serialVersionUID = 1L;
@ColumnWidth(50)
@ExcelProperty("所属网格")
private String gridName;
/**
* 主键
*/
@ExcelIgnore
private String id;
/**
* 客户Id
*/
@ExcelIgnore
private String customerId;
/**
* 组织Id
*/
@ExcelIgnore
private String agencyId;
/**
* 组织的pids 含agencyId本身
*/
@ExcelIgnore
private String pids;
/**
* 网格ID
*/
@ExcelIgnore
private String gridId;
/**
* 姓名
*/
@ColumnWidth(15)
@ExcelProperty("姓名")
private String name;
/**
* 身份证
*/
@ColumnWidth(20)
@ExcelProperty("证件号")
private String idCard;
/**
* 居民Idic_resi_user.id
*/
@ExcelIgnore
private String icResiUserId;
/**
* 年龄(享年)
*/
@ColumnWidth(10)
@ExcelProperty("年龄")
private String age;
/**
* 家庭住址
*/
@ColumnWidth(40)
@ExcelProperty("家庭住址")
private String address;
/**
* 死亡时间
*/
@ColumnWidth(20)
@ExcelProperty("死亡日期")
private String deathDate;
/**
* 火化时间
*/
@ColumnWidth(20)
@ExcelProperty("火化时间")
private String cremationTime;
/**
* 民族
*/
@ExcelIgnore
private String mz;
/**
* 登记单位名称
*/
@ColumnWidth(40)
@ExcelProperty("登记单位名称")
private String organName;
/**
* 国籍
*/
@ExcelIgnore
private String nation;
/**
* 第三方记录唯一标识
*/
@ExcelIgnore
private String thirdRecordId;
/**
* 处理状态更新至居民信息 0:未处理1:处理成功2处理失败
*/
@ExcelIgnore
private Integer dealStatus;
/**
* 处理结果
*/
@ExcelIgnore
private String dealResult;
/**
* 删除标识0.未删除 1.已删除
*/
@ExcelIgnore
private Integer delFlag;
/**
* 乐观锁
*/
@ExcelIgnore
private Integer revision;
/**
* 创建人
*/
@ExcelIgnore
private String createdBy;
/**
* 创建时间
*/
@ExcelIgnore
private Date createdTime;
/**
* 更新人
*/
@ExcelIgnore
private String updatedBy;
/**
* 更新时间
*/
@ExcelIgnore
private Date updatedTime;
}

171
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/DataSyncRecordDisabilityDTO.java

@ -0,0 +1,171 @@
package com.epmet.dto;
import com.epmet.dto.form.dataSync.ResiInfoDTO;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 数据同步记录-居民残疾信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-11
*/
@Data
public class DataSyncRecordDisabilityDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户Id
*/
private String customerId;
/**
* 组织Id
*/
private String agencyId;
/**
* 组织的pids 含agencyId本身
*/
private String pids;
/**
* 网格ID
*/
private String gridId;
/**
* 姓名
*/
private String name;
/**
* 身份证
*/
private String idCard;
/**
* 电话
*/
private String mobile;
/**
* 居民Idic_resi_user.id
*/
private String icResiUserId;
/**
* 残疾证号
*/
private String cardNum;
/**
* 残疾等级(状况)
*/
private String cjzkCn;
/**
* 残疾类别
*/
private String cjlbCn;
/**
* 文化程度
*/
private String eduLevel;
/**
* 婚姻状况 中文
*/
private String maritalStatusName;
/**
* 民族 中文
*/
private String mzCn;
/**
* 性别1男2女
*/
private Integer gender;
private String genderCn;
/**
* 户籍地址
*/
private String residentAdd;
/**
* 现居住地址
*/
private String nowAdd;
private String address;
/**
* 监护人
*/
private String guardian;
/**
* 监护人联系方式
*/
private String guardianPhone;
/**
* 处理状态更新至居民信息 0:未处理1:处理成功2处理失败
*/
private Integer dealStatus;
private String dealStatusName;
/**
* 残疾状态 0:非残疾1:残疾
*/
private Integer disabilityStatus;
/**
* 处理结果
*/
private String dealResult;
/**
* 删除标识0.未删除 1.已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
private ResiInfoDTO resiInfo;
}

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

@ -67,6 +67,12 @@ public class IcNatDTO implements Serializable {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date natTime;
/**
* 采样时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date sampleTime;
/**
* 检测结果(0:阴性 1:阳性)
*/

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save