Browse Source

Merge remote-tracking branch 'origin_elink/dev_compare_data'

# Conflicts:
#	epmet-module/gov-access/gov-access-server/src/main/java/com/epmet/service/impl/GovMenuServiceImpl.java
feature/evaluate
yinzuomei 3 years ago
parent
commit
2970a5913a
  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. 5
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/ConsomerGroupConstants.java
  12. 5
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/constants/TopicConstants.java
  13. 31
      epmet-commons/epmet-commons-rocketmq/src/main/java/com/epmet/commons/rocketmq/messages/CheckMQMsg.java
  14. 28
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/YtDataSyncResDTO.java
  15. 80
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/YtHscyResDTO.java
  16. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java
  17. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/CommonUserFeignClient.java
  18. 6
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/feign/fallback/CommonUserFeignClientFallback.java
  19. 4
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/RedisKeys.java
  20. 27
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/CustomerResiUserRedis.java
  21. 15
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/HouseInfoCache.java
  22. 539
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/redis/common/bean/IcResiUserInfoCache.java
  23. 228
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YtHsResUtils.java
  24. 6
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/NatInfoScanTask.java
  25. 6
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/constant/SystemMessageType.java
  26. 3
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/SystemMessageServiceImpl.java
  27. 2
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/constant/NeighborhoodConstant.java
  28. 9
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java
  29. 25
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/DetailByTypeFormDTO.java
  30. 20
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/DetailByTypeResultDTO.java
  31. 16
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseInfoDTO.java
  32. 52
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java
  33. 21
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcHouseController.java
  34. 15
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcHouseService.java
  35. 65
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java
  36. 5
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml
  37. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/constant/IcResiUserConstant.java
  38. 177
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/DataSyncRecordDeathDTO.java
  39. 171
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/DataSyncRecordDisabilityDTO.java
  40. 6
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatDTO.java
  41. 7
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/AddIcNatFormDTO.java
  42. 50
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/DataSyncTaskParam.java
  43. 6
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/MyNatListFormDTO.java
  44. 21
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/NatInfoScanTaskFormDTO.java
  45. 34
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/dataSync/AddRecordByResidentCategoryFormDTO.java
  46. 23
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/dataSync/CategoryStatusAndIdDTO.java
  47. 33
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/dataSync/DataSyncRecordDeathPageFormDTO.java
  48. 24
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/dataSync/DataSyncRecordDisabilityFormDTO.java
  49. 40
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/dataSync/QueryIcResiUserFormDTO.java
  50. 84
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/dataSync/ResiInfoDTO.java
  51. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/NatListResultDTO.java
  52. 11
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/NatUserInfoResultDTO.java
  53. 2
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
  54. 2
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
  55. 6
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/ChangeDeathController.java
  56. 6
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java
  57. 137
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncRecordDeathController.java
  58. 105
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncRecordDisabilityController.java
  59. 24
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  60. 20
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/DataSyncConfigDao.java
  61. 32
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/DataSyncRecordDeathDao.java
  62. 39
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/DataSyncRecordDisabilityDao.java
  63. 6
      epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcNatDao.java
  64. 106
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/DataSyncRecordDeathEntity.java
  65. 147
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/DataSyncRecordDisabilityEntity.java
  66. 5
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatEntity.java
  67. 8
      epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiUserEntity.java
  68. 55
      epmet-user/epmet-user-server/src/main/java/com/epmet/enums/DataSyncEnum.java
  69. 59
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/DataSyncRecordDisabilityExcel.java
  70. 7
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcNatImportExcelData.java
  71. 14
      epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java
  72. 6
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java
  73. 70
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncRecordDeathService.java
  74. 110
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncRecordDisabilityService.java
  75. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcNatService.java
  76. 3
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserService.java
  77. 9
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcUserChangeRecordService.java
  78. 25
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ChangeDeathServiceImpl.java
  79. 579
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java
  80. 159
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncRecordDeathServiceImpl.java
  81. 301
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncRecordDisabilityServiceImpl.java
  82. 33
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java
  83. 18
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java
  84. 11
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java
  85. 68
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserChangeRecordServiceImpl.java
  86. 42
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserTransferRecordServiceImpl.java
  87. 7
      epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.76__alter_ic_nat.sql
  88. 66
      epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.77__data_compare_d_c.sql
  89. BIN
      epmet-user/epmet-user-server/src/main/resources/excel/ic_nat.xlsx
  90. 6
      epmet-user/epmet-user-server/src/main/resources/mapper/ChangeDeathDao.xml
  91. 72
      epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncConfigDao.xml
  92. 63
      epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncRecordDeathDao.xml
  93. 212
      epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncRecordDisabilityDao.xml
  94. 56
      epmet-user/epmet-user-server/src/main/resources/mapper/IcNatDao.xml
  95. 22
      epmet-user/epmet-user-server/src/test/java/com/epmet/service/DataSyncConfigServiceTest.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>

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"//省大数据局返还烟台入库时间
}*/
}

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);
}
}

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]

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));
}
}

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);
}

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;
}

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;
}

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;
}

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;
}

52
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");

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));
}
}

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);
}

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;
}
}

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')

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:阳性)
*/

7
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/AddIcNatFormDTO.java

@ -61,9 +61,14 @@ public class AddIcNatFormDTO implements Serializable {
/**
* 检测时间
*/
@NotNull(message = "检测时间不能为空", groups = Nat.class)
// @NotNull(message = "检测时间不能为空", groups = Nat.class)
@JsonFormat(pattern="yyyy-MM-dd HH:mm")
private Date natTime;
// @NotNull(message = "采样时间不能为空", groups = Nat.class)
@JsonFormat(pattern="yyyy-MM-dd HH:mm")
private Date sampleTime;
/**
* 检测结果
*/

50
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/DataSyncTaskParam.java

@ -0,0 +1,50 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.dto.DataSyncScopeDTO;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author zxc
* @DateTime 2022/9/26 17:04
* @DESC
*/
@Data
public class DataSyncTaskParam implements Serializable {
private static final long serialVersionUID = 3053943501957102943L;
private String customerId;
private List<String> idCards;
// ========================后台设置=====
/**
* 根据配置 设置次参数数据查询范围 必填
*/
private List<DataSyncScopeDTO> orgList;
/**
* 居民状态0:正常;1:迁出;2:注销
*/
private String resiStatus;
/**
* 类别字段
*/
public String categoryColumn;
/**
* 是否同步 10
*/
private String isSync = NumConstant.ZERO_STR;
/**
* 核酸检测信息列表 点击同步时使用此字段 不使用数据配置的范围
*/
private String agencyId = null;
private String dataCode;
}

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

@ -51,6 +51,12 @@ public class MyNatListFormDTO extends PageFormDTO {
*/
private String endTime;
/**
* 采样开始/结束时间yyyy-MM-dd HH:mm
*/
private String sampleStartTime;
private String sampleEndTime;
/**
* 核酸记录Id
*/

21
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/NatInfoScanTaskFormDTO.java

@ -1,21 +0,0 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author zxc
* @DateTime 2022/9/26 17:04
* @DESC
*/
@Data
public class NatInfoScanTaskFormDTO implements Serializable {
private static final long serialVersionUID = 3053943501957102943L;
private String customerId;
private List<String> idCards;
}

34
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/dataSync/AddRecordByResidentCategoryFormDTO.java

@ -0,0 +1,34 @@
package com.epmet.dto.form.dataSync;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author zxc
* @DateTime 2022/10/14 09:03
* @DESC
*/
@Data
public class AddRecordByResidentCategoryFormDTO implements Serializable {
private static final long serialVersionUID = -6932891703465769267L;
private List<CategoryStatusAndIdDTO> icResiUserIds;
/**
* 字段名居民类别名与label相对应eg:IS_CJ
*/
private String columnName;
/**
* eg:残疾
*/
private String label;
private String userId;
private String userName;
private String customerId;
}

23
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/dataSync/CategoryStatusAndIdDTO.java

@ -0,0 +1,23 @@
package com.epmet.dto.form.dataSync;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/10/14 10:55
* @DESC
*/
@Data
public class CategoryStatusAndIdDTO implements Serializable {
private static final long serialVersionUID = 439600592532868368L;
private String icResiUserId;
/**
* 类别状态 10
*/
private String categoryStatus;
}

33
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/dataSync/DataSyncRecordDeathPageFormDTO.java

@ -0,0 +1,33 @@
package com.epmet.dto.form.dataSync;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
/**
* @Description
* @Author yzm
* @Date 2022/10/13 14:16
*/
@Data
public class DataSyncRecordDeathPageFormDTO extends PageFormDTO {
/**
* 姓名
*/
private String name;
/**
* 身份证
*/
private String idCard;
private String customerId;
/**
* 当前工作人员id
*/
private String staffId;
/**
* 当前工作人员所属组织id
*/
private String agencyId;
}

24
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/dataSync/DataSyncRecordDisabilityFormDTO.java

@ -0,0 +1,24 @@
package com.epmet.dto.form.dataSync;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/10/13 14:47
* @DESC
*/
@Data
public class DataSyncRecordDisabilityFormDTO extends PageFormDTO implements Serializable {
private static final long serialVersionUID = -20061989190666183L;
private String name;
private String idCard;
private String mobile;
private String customerId;
private String userId;
private String agencyId;
}

40
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/dataSync/QueryIcResiUserFormDTO.java

@ -0,0 +1,40 @@
package com.epmet.dto.form.dataSync;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.dto.DataSyncScopeDTO;
import lombok.Data;
import java.util.List;
/**
* desc:查询数据同步 所需要的居民信息参数
* @author liujianjun
*/
@Data
public class QueryIcResiUserFormDTO extends PageFormDTO {
private static final long serialVersionUID = -3556723801307348545L;
/**
* 数据查询范围 必填
*/
private List<DataSyncScopeDTO> scopeList;
/**
* 必填
*/
private String customerId;
/**
* 身份证号集合 非必填
*/
private List<String> idCards;
/**
* 居民状态0:正常;1:迁出;2:注销
*/
private String resiStatus;
/**
* 居民子状态 01新增02导入03迁入04新生11迁出21死亡
*/
private String resiSubStatus;
}

84
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/dataSync/ResiInfoDTO.java

@ -0,0 +1,84 @@
package com.epmet.dto.form.dataSync;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/10/13 15:58
* @DESC
*/
@Data
public class ResiInfoDTO implements Serializable {
private static final long serialVersionUID = -3320460795150912451L;
/**
* 姓名
*/
private String name;
/**
* 身份证
*/
private String idCard;
/**
* 电话
*/
private String mobile;
/**
* 残疾证号
*/
private String cardNum;
/**
* 残疾等级(状况)
*/
private String cjzk;
private String cjzkCn;
/**
* 残疾类别
*/
private String cjlb;
private String cjlbCn;
/**
* 民族
*/
private String mz;
/**
* 家庭住址
*/
private String address;
/**
* 性别
*/
private String gender;
private String genderCn;
/**
* 监护人
*/
private String guardian;
public ResiInfoDTO() {
this.name = "";
this.idCard = "";
this.mobile = "";
this.cardNum = "";
this.cjzk = "";
this.cjlb = "";
this.mz = "";
this.address = "";
this.gender = "";
this.guardian = "";
}
}

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

@ -71,6 +71,11 @@ public class NatListResultDTO implements Serializable {
@ExcelProperty(value = "检测时间",order = 4)
private Date natTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
@ColumnWidth(25)
@ExcelProperty(value = "采样时间",order = 4)
private Date sampleTime;
/**
* 检测结果
*/

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

@ -14,11 +14,22 @@ public class NatUserInfoResultDTO implements Serializable {
private static final long serialVersionUID = 8904940082452398136L;
private String customerId;
private String idCard;
private String userId;
private String agencyId;
private String gridId;
private String pids;
private String name;
/**
* 18大类 某一类的 是否值用于比较 同步数据结果确定是否要插入到表中
*/
private String categoryColumn;
}

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

@ -923,5 +923,5 @@ public interface EpmetUserOpenFeignClient {
Result<DingLoginResiResDTO> dingResiLogin(@RequestBody DingLoginResiFormDTO formDTO);
@PostMapping("/epmetuser/dataSyncConfig/natInfoScanTask")
Result natInfoScanTask(@RequestBody NatInfoScanTaskFormDTO formDTO);
Result natInfoScanTask(@RequestBody DataSyncTaskParam formDTO);
}

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

@ -713,7 +713,7 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien
}
@Override
public Result natInfoScanTask(NatInfoScanTaskFormDTO formDTO) {
public Result natInfoScanTask(DataSyncTaskParam formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "natInfoScanTask", formDTO);
}
}

6
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/ChangeDeathController.java

@ -50,6 +50,12 @@ public class ChangeDeathController {
return new Result<ChangeDeathDTO>().ok(data);
}
/**
* 死亡管理-新增死亡人员
* @param tokenDto
* @param dto
* @return
*/
@NoRepeatSubmit
@PostMapping("save")
public Result save(@LoginUser TokenDto tokenDto, @RequestBody ChangeDeathDTO dto){

6
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java

@ -13,7 +13,7 @@ import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.DataSyncConfigDTO;
import com.epmet.dto.form.ConfigSwitchFormDTO;
import com.epmet.dto.form.NatInfoScanTaskFormDTO;
import com.epmet.dto.form.DataSyncTaskParam;
import com.epmet.dto.form.ScopeSaveFormDTO;
import com.epmet.service.DataSyncConfigService;
import org.springframework.beans.factory.annotation.Autowired;
@ -107,8 +107,8 @@ public class DataSyncConfigController {
}
@PostMapping("natInfoScanTask")
public Result natInfoScanTask(@RequestBody NatInfoScanTaskFormDTO formDTO){
dataSyncConfigService.natInfoScanTask(formDTO);
public Result natInfoScanTask(@RequestBody DataSyncTaskParam formDTO){
dataSyncConfigService.dataSyncForYanTaiTask(formDTO);
return new Result();
}

137
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncRecordDeathController.java

@ -0,0 +1,137 @@
package com.epmet.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.MaskResponse;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.dto.DataSyncRecordDeathDTO;
import com.epmet.dto.form.dataSync.DataSyncRecordDeathPageFormDTO;
import com.epmet.service.DataSyncRecordDeathService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.List;
/**
* 数据同步记录-居民死亡信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-11
*/
@Slf4j
@RestController
@RequestMapping("dataSyncRecordDeath")
public class DataSyncRecordDeathController {
@Autowired
private DataSyncRecordDeathService dataSyncRecordDeathService;
/**
* 列表
* @param formDTO
* @return
*/
@MaskResponse(fieldNames = {"idCard" }, fieldsMaskType = {MaskResponse.MASK_TYPE_ID_CARD })
@RequestMapping("page")
public Result<PageData<DataSyncRecordDeathDTO>> page(@LoginUser TokenDto tokenDto, @RequestBody DataSyncRecordDeathPageFormDTO formDTO){
formDTO.setStaffId(tokenDto.getUserId());
formDTO.setCustomerId(tokenDto.getCustomerId());
PageData<DataSyncRecordDeathDTO> page = dataSyncRecordDeathService.page(formDTO);
return new Result<PageData<DataSyncRecordDeathDTO>>().ok(page);
}
/**
* 查看详情-带网格名称
* @param id
* @return
*/
@PostMapping(value = "detail/{id}")
public Result<DataSyncRecordDeathDTO> get(@PathVariable("id") String id){
DataSyncRecordDeathDTO data = dataSyncRecordDeathService.get(id);
return new Result<DataSyncRecordDeathDTO>().ok(data);
}
/**
* 批量删除
*
* @param ids
* @return
*/
@PostMapping("delete")
public Result delete(@RequestBody List<String> ids) {
if (CollectionUtils.isEmpty(ids)) {
return new Result();
}
dataSyncRecordDeathService.delete(ids);
return new Result();
}
/**
* pc:数据比对-死亡人员数据-导出
* @param tokenDto
* @param formDTO
* @param response
*/
@NoRepeatSubmit
@PostMapping("export")
public void export(@LoginUser TokenDto tokenDto, @RequestBody DataSyncRecordDeathPageFormDTO formDTO, HttpServletResponse response) {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setStaffId(tokenDto.getUserId());
formDTO.setIsPage(false);
ExcelWriter excelWriter = null;
formDTO.setPageSize(NumConstant.TEN_THOUSAND);
int pageNo = formDTO.getPageNo();
try {
String today = DateUtils.format(new Date(), DateUtils.DATE_PATTERN_MMDD);
String fileName = "数据比对-死亡人员数据".concat(today);
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), DataSyncRecordDeathDTO.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
PageData<DataSyncRecordDeathDTO> data = null;
do {
data = dataSyncRecordDeathService.page(formDTO);
formDTO.setPageNo(++pageNo);
excelWriter.write(data.getList(), writeSheet);
} while (org.apache.commons.collections4.CollectionUtils.isNotEmpty(data.getList()) && data.getList().size() == formDTO.getPageSize());
} catch (Exception e) {
log.error("export exception", e);
} finally {
// 千万别忘记finish 会帮忙关闭流
if (excelWriter != null) {
excelWriter.finish();
}
}
}
/**
* 批量更新
* 新增死亡记录
*
* @param tokenDto
* @param ids
* @return
*/
@NoRepeatSubmit
@PostMapping("batchupdate")
public Result batchUpdate(@LoginUser TokenDto tokenDto, @RequestBody List<String> ids) {
if (CollectionUtils.isEmpty(ids)) {
return new Result();
}
dataSyncRecordDeathService.batchUpdate(tokenDto.getUserId(), tokenDto.getCustomerId(), ids);
return new Result();
}
}

105
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncRecordDisabilityController.java

@ -0,0 +1,105 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.MaskResponse;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
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.DataSyncRecordDisabilityDTO;
import com.epmet.dto.form.dataSync.DataSyncRecordDisabilityFormDTO;
import com.epmet.service.DataSyncRecordDisabilityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
* 数据同步记录-居民残疾信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-11
*/
@RestController
@RequestMapping("dataSyncRecordDisability")
public class DataSyncRecordDisabilityController {
@Autowired
private DataSyncRecordDisabilityService dataSyncRecordDisabilityService;
@PostMapping("page")
@MaskResponse(fieldNames = { "mobile", "idCard" }, fieldsMaskType = { MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD })
public Result<PageData<DataSyncRecordDisabilityDTO>> page(@LoginUser TokenDto tokenDto,@RequestBody DataSyncRecordDisabilityFormDTO formDTO){
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
PageData<DataSyncRecordDisabilityDTO> page = dataSyncRecordDisabilityService.list(formDTO);
return new Result<PageData<DataSyncRecordDisabilityDTO>>().ok(page);
}
@PostMapping("detail/{id}")
public Result<DataSyncRecordDisabilityDTO> get(@PathVariable("id") String id){
DataSyncRecordDisabilityDTO data = dataSyncRecordDisabilityService.get(id);
return new Result<DataSyncRecordDisabilityDTO>().ok(data);
}
@NoRepeatSubmit
@PostMapping("save")
public Result save(@RequestBody DataSyncRecordDisabilityDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
dataSyncRecordDisabilityService.save(dto);
return new Result();
}
@NoRepeatSubmit
@PostMapping("update")
public Result update(@RequestBody DataSyncRecordDisabilityDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
dataSyncRecordDisabilityService.update(dto);
return new Result();
}
@PostMapping("delete")
public Result delete(@RequestBody String[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
dataSyncRecordDisabilityService.delete(ids);
return new Result();
}
/**
* Desc: 导出
* @param tokenDto
* @param formDTO
* @param response
* @author zxc
* @date 2022/10/13 16:17
*/
@PostMapping("export")
public void export(@LoginUser TokenDto tokenDto, @RequestBody DataSyncRecordDisabilityFormDTO formDTO, HttpServletResponse response) throws IOException {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
dataSyncRecordDisabilityService.export(formDTO,response);
}
/**
* Desc: 批量更新
* @param ids
* @author zxc
* @date 2022/10/13 16:18
*/
@PostMapping("batchUpdate")
public Result batchUpdate(@RequestBody String[] ids,@LoginUser TokenDto tokenDto){
dataSyncRecordDisabilityService.batchUpdate(ids,tokenDto);
return new Result();
}
}

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

@ -22,6 +22,8 @@ import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillWrapper;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.constants.TopicConstants;
import com.epmet.commons.rocketmq.messages.CheckMQMsg;
import com.epmet.commons.rocketmq.messages.IcResiUserAddMQMsg;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.MaskResponse;
@ -46,6 +48,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.IcResiUserInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.*;
@ -84,6 +87,8 @@ import org.jetbrains.annotations.NotNull;
import org.redisson.api.RLock;
import org.springframework.beans.factory.annotation.Autowired;
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.servlet.ServletOutputStream;
@ -558,6 +563,20 @@ public class IcResiUserController implements ResultDataResolver {
} else {
icResiUserExportService.exportIcResiUser(tokenDto, pageFormDTO, response,false);
}
CheckMQMsg msg = new CheckMQMsg();
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
msg.setOperateTime(new Date());
msg.setContent("导出居民数据");
msg.setType("exportIcResiUser");
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");
@ -1441,4 +1460,9 @@ public class IcResiUserController implements ResultDataResolver {
return new Result();
}
@PostMapping("getIcResiUserInfo/{userId}")
public Result<IcResiUserInfoCache> getIcResiUserInfo(@PathVariable("userId") String userId){
return new Result<IcResiUserInfoCache>().ok(icResiUserService.getIcResiUserInfo(userId));
}
}

20
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/DataSyncConfigDao.java

@ -4,6 +4,7 @@ import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.DataSyncConfigDTO;
import com.epmet.dto.DataSyncScopeDTO;
import com.epmet.dto.form.ConfigSwitchFormDTO;
import com.epmet.dto.form.DataSyncTaskParam;
import com.epmet.dto.result.NatUserInfoResultDTO;
import com.epmet.entity.DataSyncConfigEntity;
import org.apache.ibatis.annotations.Mapper;
@ -22,6 +23,7 @@ public interface DataSyncConfigDao extends BaseDao<DataSyncConfigEntity> {
/**
* Desc: 数据配置配置开关
*
* @param formDTO
* @author zxc
* @date 2022/9/26 14:36
@ -30,30 +32,32 @@ public interface DataSyncConfigDao extends BaseDao<DataSyncConfigEntity> {
/**
* Desc: 数据配置列表
*
* @param customerId
* @param switchStatus
* @author zxc
* @date 2022/9/26 15:04
*/
List<DataSyncConfigDTO> list(@Param("customerId")String customerId);
List<DataSyncConfigDTO> list(@Param("customerId") String customerId, @Param("switchStatus") String switchStatus);
List<DataSyncScopeDTO> scopeList(@Param("id")String id);
List<DataSyncScopeDTO> scopeList(@Param("id") String id);
/**
* Desc: 删除范围
*
* @param dataSyncConfigId
* @author zxc
* @date 2022/9/26 15:46
*/
void delScope(@Param("dataSyncConfigId")String dataSyncConfigId);
void delScope(@Param("dataSyncConfigId") String dataSyncConfigId);
/**
* Desc: 根据范围查询居民证件号
* @param list
*
* @param formDTO
* @author zxc
* @date 2022/9/27 09:23
*/
List<NatUserInfoResultDTO> getIdCardsByScope(@Param("list") List<DataSyncScopeDTO> list);
List<NatUserInfoResultDTO> getUserIdByIdCard(@Param("list") List<String> list);
List<NatUserInfoResultDTO> getIdCardsByScope(DataSyncTaskParam formDTO);
}
}

32
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/DataSyncRecordDeathDao.java

@ -0,0 +1,32 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.DataSyncRecordDeathDTO;
import com.epmet.entity.DataSyncRecordDeathEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 数据同步记录-居民死亡信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-11
*/
@Mapper
public interface DataSyncRecordDeathDao extends BaseDao<DataSyncRecordDeathEntity> {
/**
* 列表查询
*
* @param customerId
* @param idCard
* @param name
* @param agencyId
* @return
*/
List<DataSyncRecordDeathDTO> pageSelect(@Param("customerId") String customerId,
@Param("idCard") String idCard,
@Param("name") String name,
@Param("agencyId") String agencyId);
}

39
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/DataSyncRecordDisabilityDao.java

@ -0,0 +1,39 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.DataSyncRecordDisabilityDTO;
import com.epmet.dto.form.dataSync.DataSyncRecordDisabilityFormDTO;
import com.epmet.entity.DataSyncRecordDisabilityEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 数据同步记录-居民残疾信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-11
*/
@Mapper
public interface DataSyncRecordDisabilityDao extends BaseDao<DataSyncRecordDisabilityEntity> {
//int upsertBatch(List<DataSyncRecordDisabilityEntity> list);
List<DataSyncRecordDisabilityDTO> list(DataSyncRecordDisabilityFormDTO formDTO);
/**
* Desc: 更新 icResiUser
* @param entities
* @author zxc
* @date 2022/10/14 13:43
*/
void batchUpdateResiDisability(List<DataSyncRecordDisabilityEntity> entities);
/**
* Desc: 批量更新残疾表
* @param entities
* @author zxc
* @date 2022/10/14 13:44
*/
void batchUpdateDisability(List<DataSyncRecordDisabilityEntity> entities);
}

6
epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcNatDao.java

@ -49,7 +49,9 @@ public interface IcNatDao extends BaseDao<IcNatEntity> {
* @Author sun
* @Description 按条件查询业务数据
**/
IcNatDTO getNatDTO(@Param("customerId") String customerId, @Param("icNatId") String icNatId, @Param("idCard") String idCard, @Param("natTime") String natTime, @Param("natResult") String natResult);
IcNatDTO getNatDTO(@Param("customerId") String customerId, @Param("icNatId") String icNatId,
@Param("idCard") String idCard, @Param("natTime") String natTime,
@Param("natResult") String natResult, @Param("sampleTime") String sampleTime);
/**
* desc:根据客户id 更新是否居民状态
@ -62,4 +64,6 @@ public interface IcNatDao extends BaseDao<IcNatEntity> {
List<NatUserInfoResultDTO> getExistNatInfo(@Param("list") List<IcNatEntity> entities);
void updateBatchNat(@Param("list")List<IcNatEntity> entities);
}

106
epmet-user/epmet-user-server/src/main/java/com/epmet/entity/DataSyncRecordDeathEntity.java

@ -0,0 +1,106 @@
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-10-11
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("data_sync_record_death")
public class DataSyncRecordDeathEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户Id
*/
private String customerId;
/**
* 组织Id
*/
private String agencyId;
/**
* 组织的pids 含agencyId本身
*/
private String pids;
/**
* 网格ID
*/
private String gridId;
/**
* 姓名
*/
private String name;
/**
* 身份证
*/
private String idCard;
/**
* 居民Idic_resi_user.id
*/
private String icResiUserId;
/**
* 年龄(享年)
*/
private String age;
/**
* 家庭住址
*/
private String address;
/**
* 死亡时间
*/
private String deathDate;
/**
* 火化时间
*/
private String cremationTime;
/**
* 民族
*/
private String mz;
/**
* 登记单位名称
*/
private String organName;
/**
* 国籍
*/
private String nation;
/**
* 第三方记录唯一标识
*/
private String thirdRecordId;
/**
* 处理状态更新至居民信息 0:未处理1:处理成功2处理失败
*/
private Integer dealStatus;
/**
* 处理结果
*/
private String dealResult;
}

147
epmet-user/epmet-user-server/src/main/java/com/epmet/entity/DataSyncRecordDisabilityEntity.java

@ -0,0 +1,147 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 数据同步记录-居民残疾信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-11
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("data_sync_record_disability")
public class DataSyncRecordDisabilityEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户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;
@TableField(exist = false)
private String cjzk;
/**
* 残疾类别
*/
private String cjlbCn;
@TableField(exist = false)
private String cjlb;
/**
* 文化程度
*/
private String eduLevel;
/**
* 婚姻状况 中文
*/
private String maritalStatusName;
/**
* 民族 中文
*/
private String mzCn;
/**
* 性别1男2女
*/
private Integer gender;
@TableField(exist = false)
private Integer genderCn;
/**
* 户籍地址
*/
private String residentAdd;
/**
* 现居住地址
*/
private String nowAdd;
/**
* 监护人
*/
private String guardian;
/**
* 监护人联系方式
*/
private String guardianPhone;
/**
* 处理状态更新至居民信息 0:未处理1:处理成功2处理失败
*/
private Integer dealStatus;
/**
* 需要处理的残疾状态 0:非残疾1:残疾
*/
private Integer disabilityStatus;
/**
* 处理结果
*/
private String dealResult;
/**
* 更新状态
*/
@TableField(exist = false)
private Boolean updateStatus = false;
}

5
epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatEntity.java

@ -64,6 +64,11 @@ public class IcNatEntity extends BaseEpmetEntity {
*/
private Date natTime;
/**
* 采样时间
*/
private Date sampleTime;
/**
* 检测结果(0:阴性 1:阳性)
*/

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

@ -17,6 +17,7 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
@ -469,6 +470,13 @@ public class IcResiUserEntity extends BaseEpmetEntity {
*/
private String subStatus;
/**
* 类别状态 10
*/
@TableField(exist = false)
private String categoryStatus;
/**
* 预留字段1
*/

55
epmet-user/epmet-user-server/src/main/java/com/epmet/enums/DataSyncEnum.java

@ -0,0 +1,55 @@
package com.epmet.enums;
/**
* desc:数据同步配置枚举 对应data_sync_config中的DATA_CODE
* @author Administrator
*/
public enum DataSyncEnum {
/**
* 环境变量枚举
*/
HE_SUAN("hesuan", "核酸检测数据"),
CAN_JI("canji", "残疾数据"),
SI_WANG("siwang", "死亡数据"),
OTHER("qita","其他"),
;
private final String code;
private final String name;
DataSyncEnum(String code, String name) {
this.code = code;
this.name = name;
}
public static DataSyncEnum getEnum(String code) {
DataSyncEnum[] values = DataSyncEnum.values();
for (DataSyncEnum value : values) {
if (value.getCode().equals(code)) {
return value;
}
}
return DataSyncEnum.OTHER;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public static void main(String[] args) {
Integer pageNo = 1;
for (int i = 0; i < 5; i++) {
System.out.println(pageNo++);
}
}
}

59
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/DataSyncRecordDisabilityExcel.java

@ -0,0 +1,59 @@
package com.epmet.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.Data;
/**
* @Author zxc
* @DateTime 2022/10/13 15:29
* @DESC
*/
@Data
public class DataSyncRecordDisabilityExcel {
@ExcelProperty(value = "姓名")
@ColumnWidth(20)
private String name;
@ExcelProperty(value = "证件号")
@ColumnWidth(20)
private String idCard;
@ExcelProperty(value = "手机")
@ColumnWidth(20)
private String mobile;
@ExcelProperty(value = "性别")
@ColumnWidth(20)
private Integer gender;
@ExcelProperty(value = "民族")
@ColumnWidth(20)
private String mzCn;
@ExcelProperty(value = "家庭住址")
@ColumnWidth(20)
private String address;
@ExcelProperty(value = "残疾类别")
@ColumnWidth(20)
private String cjlbCn;
@ExcelProperty(value = "残疾等级")
@ColumnWidth(20)
private String cjzkCn;
@ExcelProperty(value = "监护人")
@ColumnWidth(20)
private String guardian;
@ExcelProperty(value = "状态")
@ColumnWidth(20)
private String dealStatusName;
@ExcelProperty(value = "失败原因")
@ColumnWidth(20)
private String dealResult;
}

7
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/data/IcNatImportExcelData.java

@ -29,14 +29,17 @@ public class IcNatImportExcelData {
@Length(max = 18, message = "身份证号长度不正确,应小于18位")
private String idCard;
@NotNull(message = "检测时间为必填项")
// @NotNull(message = "检测时间为必填项")
@ExcelProperty("检测时间")
private Date natTime;
@ExcelProperty("采样时间")
private Date sampleTime;
@ExcelProperty("检测地点")
private String natAddress;
@NotBlank(message = "检测结果为必填项")
// @NotBlank(message = "检测结果为必填项")
@ExcelProperty("检测结果")
private String natResultZh;

14
epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatExcelImportListener.java

@ -2,6 +2,8 @@ package com.epmet.excel.handler;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
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.exception.ValidateException;
import com.epmet.commons.tools.utils.ConvertUtils;
@ -66,6 +68,16 @@ public class IcNatExcelImportListener implements ReadListener<IcNatImportExcelDa
// 先校验数据
ValidatorUtils.validateEntity(data);
if (null == data.getSampleTime() && (null == data.getNatTime() || org.apache.commons.lang3.StringUtils.isBlank(data.getNatResultZh()))){
throw new EpmetException(EpmetErrorCode.SAMPLE_TIME_AND_RESULT_IS_NULL_ERROR.getCode());
}
if(null != data.getSampleTime() && org.apache.commons.lang3.StringUtils.isNotBlank(data.getNatResultZh()) && null == data.getNatTime()){
throw new EpmetException(EpmetErrorCode.NAT_TIME_IS_NULL_ERROR.getCode());
}
if (null != data.getSampleTime() && org.apache.commons.lang3.StringUtils.isBlank(data.getNatResultZh()) && null != data.getNatTime()){
throw new EpmetException(EpmetErrorCode.NAT_RESULT_IS_NULL_ERROR.getCode());
}
if (StringUtils.isNotBlank(data.getName())) {
data.setName(data.getName().trim());
}
@ -104,7 +116,7 @@ public class IcNatExcelImportListener implements ReadListener<IcNatImportExcelDa
if (e instanceof ValidateException) {
errorMsg = ((ValidateException) e).getMsg();
} else {
errorMsg = "未知错误";
errorMsg = ((EpmetException)e).getInternalMsg();
log.error("【核酸检测信息导入】出错:{}", ExceptionUtils.getErrorStackTrace(e));
}

6
epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java

@ -6,7 +6,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.DataSyncConfigDTO;
import com.epmet.dto.form.ConfigSwitchFormDTO;
import com.epmet.dto.form.NatInfoScanTaskFormDTO;
import com.epmet.dto.form.DataSyncTaskParam;
import com.epmet.dto.form.ScopeSaveFormDTO;
import com.epmet.entity.DataSyncConfigEntity;
@ -82,5 +82,5 @@ public interface DataSyncConfigService extends BaseService<DataSyncConfigEntity>
*/
void scopeSave(ScopeSaveFormDTO formDTO);
void natInfoScanTask(NatInfoScanTaskFormDTO formDTO);
}
void dataSyncForYanTaiTask(DataSyncTaskParam formDTO);
}

70
epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncRecordDeathService.java

@ -0,0 +1,70 @@
package com.epmet.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.DataSyncRecordDeathDTO;
import com.epmet.dto.form.dataSync.DataSyncRecordDeathPageFormDTO;
import com.epmet.entity.DataSyncRecordDeathEntity;
import java.util.List;
import java.util.Map;
/**
* 数据同步记录-居民死亡信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-11
*/
public interface DataSyncRecordDeathService extends BaseService<DataSyncRecordDeathEntity> {
/**
* 默认分页
*
* @param formDTO
* @return PageData<DataSyncRecordDeathDTO>
* @author generator
* @date 2022-10-11
*/
PageData<DataSyncRecordDeathDTO> page(DataSyncRecordDeathPageFormDTO formDTO);
/**
* 默认查询
*
* @param params
* @return java.util.List<DataSyncRecordDeathDTO>
* @author generator
* @date 2022-10-11
*/
List<DataSyncRecordDeathDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return DataSyncRecordDeathDTO
* @author generator
* @date 2022-10-11
*/
DataSyncRecordDeathDTO get(String id);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2022-10-11
*/
void delete(List<String> ids);
DataSyncRecordDeathDTO selectOne(LambdaQueryWrapper<DataSyncRecordDeathEntity> queryWrapper);
/**
*
* @param userId 当前操作人
* @param customerId 当前客户
* @param ids 要操作的记录id
*/
void batchUpdate(String userId, String customerId, List<String> ids);
}

110
epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncRecordDisabilityService.java

@ -0,0 +1,110 @@
package com.epmet.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.DataSyncRecordDisabilityDTO;
import com.epmet.dto.form.dataSync.DataSyncRecordDisabilityFormDTO;
import com.epmet.entity.DataSyncRecordDisabilityEntity;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
* 数据同步记录-居民残疾信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-11
*/
public interface DataSyncRecordDisabilityService extends BaseService<DataSyncRecordDisabilityEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<DataSyncRecordDisabilityDTO>
* @author generator
* @date 2022-10-11
*/
PageData<DataSyncRecordDisabilityDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<DataSyncRecordDisabilityDTO>
* @author generator
* @date 2022-10-11
*/
List<DataSyncRecordDisabilityDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return DataSyncRecordDisabilityDTO
* @author generator
* @date 2022-10-11
*/
DataSyncRecordDisabilityDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2022-10-11
*/
void save(DataSyncRecordDisabilityDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2022-10-11
*/
void update(DataSyncRecordDisabilityDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2022-10-11
*/
void delete(String[] ids);
DataSyncRecordDisabilityDTO selectOne(LambdaQueryWrapper<DataSyncRecordDisabilityEntity> queryWrapper);
/**
* Desc: 列表
* @param formDTO
* @author zxc
* @date 2022/10/13 16:17
*/
PageData<DataSyncRecordDisabilityDTO> list(DataSyncRecordDisabilityFormDTO formDTO);
/**
* Desc: 导出
* @param formDTO
* @param response
* @author zxc
* @date 2022/10/13 16:17
*/
void export(DataSyncRecordDisabilityFormDTO formDTO, HttpServletResponse response) throws IOException;
/**
* Desc: 批量更新
* @param ids
* @author zxc
* @date 2022/10/13 16:18
*/
void batchUpdate(String[] ids, TokenDto tokenDto);
}

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

@ -92,4 +92,6 @@ public interface IcNatService extends BaseService<IcNatEntity> {
* @return
*/
Integer updateIsResiFlag(String customerId, String icResiUserId);
void updateBatchNat(List<IcNatEntity> entities);
}

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

@ -20,6 +20,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.dto.result.OptionDataResultDTO;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.bean.IcResiUserInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IcResiUserDTO;
@ -518,4 +519,6 @@ public interface IcResiUserService extends BaseService<IcResiUserEntity> {
* @Date 2022/9/8 15:45
*/
void updateYlfn();
IcResiUserInfoCache getIcResiUserInfo(String userId);
}

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

@ -22,6 +22,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.form.IcResiUserChangeRecordFormDTO;
import com.epmet.dto.form.IcUserChangeRecordInitFormDTO;
import com.epmet.dto.form.IcUsercategoryAnalysisFormDTO;
import com.epmet.dto.form.dataSync.AddRecordByResidentCategoryFormDTO;
import com.epmet.dto.result.IcUserChangeRecordResultDTO;
import com.epmet.dto.result.IcUsercategoryAnalysisResultDTO;
import com.epmet.entity.IcUserChangeRecordEntity;
@ -56,4 +57,12 @@ public interface IcUserChangeRecordService extends BaseService<IcUserChangeRecor
void icUserChangeRecordInit(IcUserChangeRecordInitFormDTO formDTO) throws ParseException;
int deleteByIcResiUserId(String icResiUserId,String currentStaffId);
/**
* Desc: 根据居民类别新增变更记录
* @param formDTO
* @author zxc
* @date 2022/10/14 09:04
*/
void addRecordByResidentCategory(AddRecordByResidentCategoryFormDTO formDTO);
}

25
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/ChangeDeathServiceImpl.java

@ -29,6 +29,7 @@ import com.epmet.service.ChangeDeathService;
import com.epmet.service.ChangeWelfareService;
import com.epmet.service.IcResiUserService;
import com.epmet.service.IcUserTransferRecordService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -42,6 +43,7 @@ import java.util.*;
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-05-05
*/
@Slf4j
@Service
public class ChangeDeathServiceImpl extends BaseServiceImpl<ChangeDeathDao, ChangeDeathEntity> implements ChangeDeathService {
@ -106,6 +108,12 @@ public class ChangeDeathServiceImpl extends BaseServiceImpl<ChangeDeathDao, Chan
return ConvertUtils.sourceToTarget(entity, ChangeDeathDTO.class);
}
/**
* 死亡管理-新增死亡人员
* 数据比对-死亡人员数据-批量更新那方法内会调用此方法
* @param dto
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Result save(ChangeDeathDTO dto) {
@ -113,22 +121,29 @@ public class ChangeDeathServiceImpl extends BaseServiceImpl<ChangeDeathDao, Chan
formDTO.setUserId(dto.getUserId());
formDTO.setCustomerId(loginUserUtil.getLoginUserCustomerId());
ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class);
//查询居民信息表
RentTenantDataResultDTO result = icResiUserServiceImpl.getRentResiUserInfo(formDTO);
if(null==result){
log.warn(String.format("ic_resi_user is null icResiUserId:%s", formDTO.getUserId()));
return new Result();
}
dto.setIdCard(result.getIdCard());
dto.setMobile(result.getMobile());
dto.setGridId(result.getGridId());
Map<String, Object> params = new HashMap<>(4);
params.put("idCard", dto.getIdCard());
if (!list(params).isEmpty()) {
return new Result().error("该人员已经迁入死亡人口");
// return new Result().error("该人员已经迁入死亡人口");
log.warn(String.format("该人员已经迁入死亡人口,idCard:%s",result.getIdCard()));
return new Result();
}
// 插入死亡名单表
dto.setJoinDate(DateUtils.format(new Date()));
ChangeDeathEntity entity = ConvertUtils.sourceToTarget(dto, ChangeDeathEntity.class);
entity.setCustomerId(loginUserUtil.getLoginUserCustomerId());
insert(entity);
// 如果勾选了享受福利
if (dto.getWelfareFlag() != null && dto.getWelfareFlag()) {
ChangeWelfareDTO formDto = new ChangeWelfareDTO();
formDto.setUserId(dto.getUserId());
@ -148,6 +163,8 @@ public class ChangeDeathServiceImpl extends BaseServiceImpl<ChangeDeathDao, Chan
// 用户状态【0:正常;1:迁出;2:注销】
userEntity.setStatus(NumConstant.TWO_STR);
userEntity.setSubStatus(IcResiUserSubStatusEnum.DIED.getSubStatus());//死亡
userEntity.setUpdatedBy(loginUserUtil.getLoginUserId());
userEntity.setUpdatedTime(new Date());
icResiUserService.updateById(userEntity);
//变更主表、变更明细表
@ -166,7 +183,7 @@ public class ChangeDeathServiceImpl extends BaseServiceImpl<ChangeDeathDao, Chan
SpringContextUtils.getBean(IcUserTransferRecordService.class).moveResi(icResiUserTransferFormDTO);
//推送MQ事件
changeRelocationServiceImpl.editResiMq(formDTO.getCustomerId(), dto.getUserId());
SpringContextUtils.getBean(ChangeRelocationServiceImpl.class).editResiMq(formDTO.getCustomerId(), dto.getUserId());
return new Result();
}

579
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java

@ -1,13 +1,20 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.form.PageFormDTO;
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 com.epmet.commons.tools.enums.GenderEnum;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.security.dto.TokenDto;
@ -17,20 +24,18 @@ import com.epmet.commons.tools.utils.YtHsResUtils;
import com.epmet.dao.DataSyncConfigDao;
import com.epmet.dao.IcNatDao;
import com.epmet.dto.DataSyncConfigDTO;
import com.epmet.dto.DataSyncRecordDeathDTO;
import com.epmet.dto.DataSyncRecordDisabilityDTO;
import com.epmet.dto.form.ConfigSwitchFormDTO;
import com.epmet.dto.form.NatInfoScanTaskFormDTO;
import com.epmet.dto.form.DataSyncTaskParam;
import com.epmet.dto.form.ScopeSaveFormDTO;
import com.epmet.dto.result.NatUserInfoResultDTO;
import com.epmet.entity.DataSyncConfigEntity;
import com.epmet.entity.DataSyncScopeEntity;
import com.epmet.entity.IcNatEntity;
import com.epmet.entity.IcNatRelationEntity;
import com.epmet.service.DataSyncConfigService;
import com.epmet.service.DataSyncScopeService;
import com.epmet.service.IcNatRelationService;
import com.epmet.service.IcNatService;
import com.epmet.entity.*;
import com.epmet.enums.DataSyncEnum;
import com.epmet.service.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
@ -38,10 +43,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -50,6 +52,7 @@ import java.util.stream.Collectors;
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-09-26
*/
@Slf4j
@Service
public class DataSyncConfigServiceImpl extends BaseServiceImpl<DataSyncConfigDao, DataSyncConfigEntity> implements DataSyncConfigService {
@ -61,15 +64,10 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl<DataSyncConfigDao
private IcNatService icNatService;
@Autowired
private IcNatRelationService icNatRelationService;
private QueryWrapper<DataSyncConfigEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<DataSyncConfigEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Autowired
private DataSyncRecordDeathService dataSyncRecordDeathService;
@Autowired
private DataSyncRecordDisabilityService dataSyncRecordDisabilityService;
@Override
public DataSyncConfigDTO get(String id) {
@ -100,6 +98,7 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl<DataSyncConfigDao
/**
* Desc: 数据配置配置开关
*
* @param formDTO
* @author zxc
* @date 2022/9/26 14:36
@ -112,6 +111,7 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl<DataSyncConfigDao
/**
* Desc: 数据配置列表
*
* @param tokenDto
* @author zxc
* @date 2022/9/26 15:04
@ -119,16 +119,18 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl<DataSyncConfigDao
@Override
public PageData list(TokenDto tokenDto, PageFormDTO formDTO) {
PageData<DataSyncConfigDTO> result = new PageData<>(new ArrayList<>(), NumConstant.ZERO_L);
PageInfo<DataSyncConfigDTO> pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.list(tokenDto.getCustomerId()));
if (CollectionUtils.isNotEmpty(pageInfo.getList())){
PageInfo<DataSyncConfigDTO> pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize())
.doSelectPageInfo(() -> baseDao.list(tokenDto.getCustomerId(), null));
if (CollectionUtils.isNotEmpty(pageInfo.getList())) {
result.setList(pageInfo.getList());
result.setTotal(Integer.valueOf(String.valueOf(pageInfo.getTotal())));
result.setTotal(Integer.parseInt(String.valueOf(pageInfo.getTotal())));
}
return result;
}
/**
* Desc: 数据配置范围保存
*
* @param formDTO
* @author zxc
* @date 2022/9/26 15:41
@ -137,21 +139,21 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl<DataSyncConfigDao
@Transactional(rollbackFor = Exception.class)
public void scopeSave(ScopeSaveFormDTO formDTO) {
baseDao.delScope(formDTO.getDataSyncConfigId());
if (CollectionUtils.isNotEmpty(formDTO.getScopeList())){
if (CollectionUtils.isNotEmpty(formDTO.getScopeList())) {
formDTO.getScopeList().forEach(o -> {
o.setCustomerId(formDTO.getCustomerId());
o.setDataSyncConfigId(formDTO.getDataSyncConfigId());
if (o.getOrgType().equals("grid")){
if (o.getOrgType().equals("grid")) {
GridInfoCache gridInfo = CustomerOrgRedis.getGridInfo(o.getOrgId());
if (null == gridInfo){
throw new EpmetException("查询网格信息失败"+o.getOrgId());
if (null == gridInfo) {
throw new EpmetException("查询网格信息失败" + o.getOrgId());
}
o.setPid(gridInfo.getPid());
o.setOrgIdPath(gridInfo.getPids() + ":" + gridInfo.getId());
}else {
} else {
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(o.getOrgId());
if (null == agencyInfo){
throw new EpmetException("查询组织信息失败"+o.getOrgId());
if (null == agencyInfo) {
throw new EpmetException("查询组织信息失败" + o.getOrgId());
}
o.setPid(agencyInfo.getPid());
o.setOrgIdPath(agencyInfo.getPids().equals(NumConstant.EMPTY_STR) || agencyInfo.getPids().equals(NumConstant.ZERO_STR) ? agencyInfo.getId() : agencyInfo.getPids() + ":" + agencyInfo.getId());
@ -166,69 +168,339 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl<DataSyncConfigDao
* 大数据局部门配置on
* 根据范围搜索居民调接口查询最近一次核酸检测记录
* 检测时间 + 身份证 不存在就插入
*
* @param formDTO
* @author zxc
* @date 2022/9/26 17:16
*/
@Override
public void natInfoScanTask(NatInfoScanTaskFormDTO formDTO) {
if (CollectionUtils.isNotEmpty(formDTO.getIdCards())){
List<NatUserInfoResultDTO> userIdByIdCard = baseDao.getUserIdByIdCard(formDTO.getIdCards());
public void dataSyncForYanTaiTask(DataSyncTaskParam formDTO) {
List<DataSyncConfigDTO> allConfigList = baseDao.list(formDTO.getCustomerId(), "open");
if (CollectionUtils.isEmpty(allConfigList)) {
return;
}
//TODO 根据dataCode 调用不同的方法 抽取数据
if (CollectionUtils.isEmpty(allConfigList)) {
log.warn("dataSyncForYanTaiTask don't have any resi data to pull data form YanTai interface");
return;
}
if (StringUtils.isNotBlank(formDTO.getDataCode())){
allConfigList.forEach(c -> {
if (c.getDataCode().equals(formDTO.getDataCode())){
disAllData(c,formDTO);
return;
}
});
}else {
for (DataSyncConfigDTO config : allConfigList) {
//没有配置 数据拉取范围 继续下次循环
if (CollectionUtils.isEmpty(config.getScopeList())) {
continue;
}
disAllData(config,formDTO);
}
}
}
private void disAllData(DataSyncConfigDTO config,DataSyncTaskParam formDTO){
//没传具体参数 则 按照
int pageNo = NumConstant.ONE;
int pageSize = 1;//todo fangkaita NumConstant.ONE_THOUSAND;
//ToDo 去掉
formDTO.setIdCards(Collections.singletonList("370283199912010302"));
List<NatUserInfoResultDTO> dbResiList = null;
//设置查询数据范围
formDTO.setOrgList(config.getScopeList());
DataSyncEnum anEnum = DataSyncEnum.getEnum(config.getDataCode());
do {
switch (anEnum) {
case HE_SUAN:
//查询正常状态的居民
log.info("======核酸检测信息拉取开始======");
dbResiList = getNatUserInfoFromDb(formDTO, pageNo, pageSize);
if (CollectionUtils.isEmpty(dbResiList)) {
break;
}
hsjc(dbResiList, config.getCustomerId(), formDTO.getIsSync());
log.info("======核酸检测信息拉取结束======");
break;
case CAN_JI:
//查询正常状态的居民 并回显 残疾状态
formDTO.setCategoryColumn("IS_CJ");
dbResiList = getNatUserInfoFromDb(formDTO, pageNo, pageSize);
canJi(dbResiList);
break;
case SI_WANG:
//查询正常状态的居民
dbResiList = getNatUserInfoFromDb(formDTO, pageNo, pageSize);
siWang(dbResiList);
break;
default:
log.warn("没有要处理的数据");
}
pageNo++;
} while (false);//todo fangkaita(dbResiList != null && dbResiList.size() == pageSize);
}
private void siWang(List<NatUserInfoResultDTO> dbResiList) {
try {
List<DataSyncRecordDeathEntity> list = new ArrayList<>();
for (NatUserInfoResultDTO dbResi : dbResiList) {
YtDataSyncResDTO thirdResult = YtHsResUtils.siWang(dbResi.getIdCard(), dbResi.getName());
if (200 != thirdResult.getCode()) {
log.warn("canJi 调用蓝图接口失败了 继续处理下一个人");
continue;
}
String thirdResultData = thirdResult.getData();
JSONObject thirdResultObject = JSON.parseObject(thirdResultData);
LambdaQueryWrapper<DataSyncRecordDeathEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DataSyncRecordDeathEntity::getIdCard, dbResi.getIdCard());
//获取数据库里的记录
DataSyncRecordDeathDTO dbDeathEntity = dataSyncRecordDeathService.selectOne(queryWrapper);
JudgeDealStatus judgeDealStatus = new JudgeDealStatus(thirdResultObject, dbDeathEntity).invokeDeath();
if (judgeDealStatus.isStop()) {
continue;
}
DataSyncRecordDeathEntity entity = new DataSyncRecordDeathEntity();
if (dbDeathEntity != null && StringUtils.isNotBlank(dbDeathEntity.getId())) {
entity.setId(dbDeathEntity.getId());
}
entity.setCustomerId(dbResi.getCustomerId());
entity.setAgencyId(dbResi.getAgencyId());
entity.setPids(dbResi.getPids());
entity.setGridId(dbResi.getGridId());
entity.setName(dbResi.getName());
entity.setIdCard(dbResi.getIdCard());
entity.setIcResiUserId(dbResi.getUserId());
//死亡未获取到数据
if (thirdResultObject != null) {
entity.setAge(thirdResultObject.getString("AGE"));
entity.setAddress(thirdResultObject.getString("FAMILY_ADD"));
entity.setDeathDate(thirdResultObject.getString("DEATH_DATE"));
entity.setCremationTime(thirdResultObject.getString("CREMATION_TIME"));
entity.setMz(thirdResultObject.getString("FAMILY_ADD"));
entity.setOrganName(thirdResultObject.getString("CREATE_ORGAN_NAME"));
entity.setNation(thirdResultObject.getString("NATION"));
entity.setThirdRecordId(thirdResultObject.getString("RECORD_ID"));
}
entity.setDealStatus(NumConstant.ZERO);
entity.setDealResult(StrConstant.EPMETY_STR);
if (judgeDealStatus.isNeedSetStatus) {
entity.setDealResult(judgeDealStatus.dealResult);
entity.setDealStatus(judgeDealStatus.dealStatus);
}
entity.setUpdatedTime(new Date());
list.add(entity);
}
if (list.size() == NumConstant.ZERO) {
return;
}
dataSyncRecordDeathService.saveOrUpdateBatch(list, NumConstant.TWO_HUNDRED);
} catch (Exception e) {
log.error("siwang exception", e);
}
}
/**
* desc从数据库获取居民信息
*
* @param formDTO
* @param anEnum
* @param pageNo
* @param pageSize
* @return
*/
private List<NatUserInfoResultDTO> getNatUserInfoFromDb(DataSyncTaskParam formDTO, int pageNo, int pageSize) {
//根据 组织 分页获取 居民数据
PageInfo<NatUserInfoResultDTO> pageInfo = PageHelper.startPage(pageNo, pageSize, false)
.doSelectPageInfo(() -> baseDao.getIdCardsByScope(formDTO));
List<NatUserInfoResultDTO> dbResiList;
dbResiList = pageInfo.getList();
/* //如果传了身份证号 则按照身份证号查询 并同步记录, userId如果为空则是 手动录入的 此人没有录入居民库 但是也可以同步
if (CollectionUtils.isNotEmpty(formDTO.getIdCards()) && DataSyncEnum.HE_SUAN.getCode().equals(anEnum.getCode())) {
List<NatUserInfoResultDTO> collect = formDTO.getIdCards().stream().map(id -> {
NatUserInfoResultDTO e = new NatUserInfoResultDTO();
e.setIdCard(id);
e.setUserId("");
return e;
}).collect(Collectors.toList());
collect.forEach(c -> userIdByIdCard.stream().filter(u -> u.getIdCard().equals(c.getIdCard())).forEach(u -> c.setUserId(u.getUserId())));
hsjc(collect,formDTO.getCustomerId());
return;
}
List<DataSyncConfigDTO> allConfigList = baseDao.list(StringUtils.isNotBlank(formDTO.getCustomerId()) ? formDTO.getCustomerId() : null);
if (CollectionUtils.isEmpty(allConfigList)){
return;
}
List<DataSyncConfigDTO> configList = allConfigList.stream().filter(l -> l.getDeptCode().equals("dsjj") && l.getSwitchStatus().equals("open")).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(configList)){
configList.forEach(c -> {
if (CollectionUtils.isNotEmpty(c.getScopeList())){
Integer no = NumConstant.ONE;
Integer size;
do {
PageInfo<NatUserInfoResultDTO> pageInfo = PageHelper.startPage(no, NumConstant.ONE_THOUSAND).doSelectPageInfo(() -> baseDao.getIdCardsByScope(c.getScopeList()));
size = pageInfo.getList().size();
hsjc(pageInfo.getList(),c.getCustomerId());
no++;
}while (size.compareTo(NumConstant.ONE_THOUSAND) == NumConstant.ZERO);
for (NatUserInfoResultDTO c : collect) {
dbResiList.stream().filter(u -> u.getIdCard().equals(c.getIdCard())).forEach(u -> c.setUserId(u.getUserId()));
}
dbResiList = collect;
}*/
return dbResiList;
}
private void canJi(List<NatUserInfoResultDTO> resiList) {
try {
List<DataSyncRecordDisabilityEntity> list = new ArrayList<>();
for (NatUserInfoResultDTO dbResi : resiList) {
YtDataSyncResDTO thirdResult = YtHsResUtils.canji(dbResi.getIdCard(), dbResi.getName());
if (200 != thirdResult.getCode()) {
log.warn("canJi 调用蓝图接口失败了 继续处理下一个人");
continue;
}
});
String thirdResultData = thirdResult.getData();
JSONObject thirdResultObject = JSON.parseObject(thirdResultData);
LambdaQueryWrapper<DataSyncRecordDisabilityEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DataSyncRecordDisabilityEntity::getIdCard, dbResi.getIdCard());
//获取数据库里的记录
DataSyncRecordDisabilityDTO dbDisablityEntity = dataSyncRecordDisabilityService.selectOne(queryWrapper);
DataSyncRecordDisabilityEntity entity = new DataSyncRecordDisabilityEntity();
if (dbDisablityEntity != null && StringUtils.isNotBlank(dbDisablityEntity.getId())) {
entity.setId(dbDisablityEntity.getId());
}
//居民库里 是否是残疾
String categoryColumn = dbResi.getCategoryColumn();
JudgeDealStatus judgeDealStatus = null;
int disabilityStatus = 0;
//居民是残疾
if (NumConstant.ONE_STR.equals(categoryColumn)) {
// 第三方返回了该人的 残疾记录 说明和居民库的状态一致 只需要处理 同步记录中的数据即可
if (thirdResultObject != null) {
//todo 联调时看一下 为什么db == null 总是true
judgeDealStatus = new JudgeDealStatus(dbDisablityEntity).invoke();
if (judgeDealStatus.isStop()) {
continue;
}
disabilityStatus = 1;
} else {
//没有返回该人是残疾的数据 说明需要处理居民库的数据
judgeDealStatus = new JudgeDealStatus(dbDisablityEntity).notSame();
disabilityStatus = 0;
}
} else {
//居民不是残疾
// 第三方没有返回了该人的 残疾记录 说明和居民库的状态一致 只需要处理 同步记录中的数据即可
if (thirdResultObject == null) {
//todo 联调时看一下 为什么db == null 总是true
judgeDealStatus = new JudgeDealStatus(dbDisablityEntity).invoke();
if (judgeDealStatus.isStop()) {
continue;
}
disabilityStatus = 0;
} else {
//蓝图返回该人是残疾的数据 说明需要处理居民库的数据
judgeDealStatus = new JudgeDealStatus(dbDisablityEntity).notSame();
disabilityStatus = 1;
}
}
entity.setCustomerId(dbResi.getCustomerId());
entity.setAgencyId(dbResi.getAgencyId());
entity.setPids(dbResi.getPids());
entity.setGridId(dbResi.getGridId());
entity.setName(dbResi.getName());
entity.setIdCard(dbResi.getIdCard());
entity.setIcResiUserId(dbResi.getUserId());
if (thirdResultObject != null){
entity.setMobile(thirdResultObject.getString("phoneNo"));
entity.setCardNum(thirdResultObject.getString("cardNum"));
entity.setCjzkCn(thirdResultObject.getString("idtLevelName"));
entity.setCjlbCn(thirdResultObject.getString("idtKindName"));
entity.setEduLevel(thirdResultObject.getString("eduLevelName"));
entity.setMaritalStatusName(thirdResultObject.getString("marriagerName"));
entity.setGuardian(thirdResultObject.getString("guardian"));
entity.setGuardianPhone(thirdResultObject.getString("guardianPhone"));
entity.setMzCn(thirdResultObject.getString("raceName"));
String genderName = thirdResultObject.getString("genderName");
if (GenderEnum.MAN.getName().equals(genderName)){
entity.setGender(NumConstant.ONE);
}else {
entity.setGender(NumConstant.TWO);
}
entity.setResidentAdd(thirdResultObject.getString("residentAdd"));
entity.setNowAdd(thirdResultObject.getString("nowAdd"));
}
entity.setDealStatus(NumConstant.ZERO);
entity.setDisabilityStatus(disabilityStatus);
entity.setDealResult(StrConstant.EPMETY_STR);
if (judgeDealStatus.isNeedSetStatus) {
entity.setDealResult(judgeDealStatus.getDealResult());
entity.setDealStatus(judgeDealStatus.getDealStatus());
}
entity.setUpdatedTime(new Date());
list.add(entity);
}
dataSyncRecordDisabilityService.saveOrUpdateBatch(list, NumConstant.TWO_HUNDRED);
} catch (Exception e) {
log.error("canJi exception", e);
}
}
/**
* Desc: 根据证件号 查询nat 存在 ? 不处理 : 新增
*
* @param idCards
* @param customerId
* @param isSync 是否同步1是人工点同步0否
* @author zxc
* @date 2022/9/27 11:08
*/
private void hsjc(List<NatUserInfoResultDTO> idCards,String customerId){
if (CollectionUtils.isNotEmpty(idCards)){
List<IcNatEntity> entities = new ArrayList<>();
public void hsjc(List<NatUserInfoResultDTO> idCards, String customerId, String isSync) {
try {
idCards.forEach(idCard -> {
YtHscyResDTO sampleResult = YtHsResUtils.hscy(idCard.getIdCard(), NumConstant.ONE, NumConstant.ONE);
if (CollectionUtils.isNotEmpty(sampleResult.getData())){
List<IcNatEntity> entities = new ArrayList<>();
sampleResult.getData().forEach(sampleInfo -> {
IcNatEntity e = new IcNatEntity();
e.setCustomerId(customerId);
e.setIsResiUser(StringUtils.isBlank(idCard.getUserId()) ? NumConstant.ZERO_STR : NumConstant.ONE_STR);
e.setUserId(idCard.getUserId());
e.setMobile("");
e.setUserType(isSync.equals(NumConstant.ONE_STR) ? "manualSync" : "sync");
e.setName(StringUtils.isNotBlank(sampleInfo.getName()) ? sampleInfo.getName() : "");
e.setIdCard(StringUtils.isNotBlank(sampleInfo.getCard_no()) ? sampleInfo.getCard_no() : "");
e.setSampleTime(DateUtils.parseDate(sampleInfo.getCreate_time(), DateUtils.DATE_TIME_PATTERN));
e.setAgencyId(idCard.getAgencyId());
e.setPids(idCard.getPids());
e.setAttachmentType("");
e.setAttachmentUrl("");
entities.add(e);
});
if (CollectionUtils.isNotEmpty(entities)){
List<NatUserInfoResultDTO> existSampleInfo = icNatDao.getExistNatInfo(entities);
sampleAndNat(existSampleInfo,entities,NumConstant.ONE_STR,customerId,isSync);
}
}
YtHsjcResDTO natInfoResult = YtHsResUtils.hsjc(idCard.getIdCard(), NumConstant.ONE, NumConstant.ONE);
if (CollectionUtils.isNotEmpty(natInfoResult.getData())){
if (CollectionUtils.isNotEmpty(natInfoResult.getData())) {
List<IcNatEntity> entities = new ArrayList<>();
natInfoResult.getData().forEach(natInfo -> {
IcNatEntity e = new IcNatEntity();
e.setCustomerId(customerId);
e.setIsResiUser(StringUtils.isBlank(idCard.getUserId()) ? NumConstant.ZERO_STR : NumConstant.ONE_STR);
e.setUserId(idCard.getUserId());
e.setUserType("sync");
e.setUserType(isSync.equals(NumConstant.ONE_STR) ? "manualSync" : "sync");
e.setName(StringUtils.isNotBlank(natInfo.getName()) ? natInfo.getName() : "");
e.setMobile(StringUtils.isNotBlank(natInfo.getTelephone()) ? natInfo.getTelephone() : "");
e.setIdCard(StringUtils.isNotBlank(natInfo.getCard_no()) ? natInfo.getCard_no() : "");
e.setNatTime(DateUtils.parseDate(natInfo.getTest_time(),DateUtils.DATE_TIME_PATTERN));
e.setNatResult(natInfo.getSample_result_pcr());
e.setNatTime(DateUtils.parseDate(natInfo.getTest_time(), DateUtils.DATE_TIME_PATTERN));
e.setSampleTime(DateUtils.parseDate(natInfo.getSample_time(), DateUtils.DATE_TIME_PATTERN));
String resultPcr = natInfo.getSample_result_pcr();
//检测结果 转换 我们 0:阴性 1:阳性, 他们 :1:阳性,2:阴性
e.setNatResult(NumConstant.ZERO_STR);
if (NumConstant.ONE_STR.equals(resultPcr)) {
e.setNatResult(NumConstant.ONE_STR);
}
e.setNatAddress(natInfo.getSampling_org_pcr());
e.setAgencyId(idCard.getAgencyId());
e.setPids(idCard.getPids());
@ -236,37 +508,178 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl<DataSyncConfigDao
e.setAttachmentUrl("");
entities.add(e);
});
}
});
if (CollectionUtils.isNotEmpty(entities)){
List<NatUserInfoResultDTO> existNatInfos = icNatDao.getExistNatInfo(entities);
entities.forEach(e -> existNatInfos.stream().filter(i -> i.getUserId().equals(e.getUserId()) && i.getIdCard().equals(e.getIdCard())).forEach(i -> e.setExistStatus(true)));
Map<Boolean, List<IcNatEntity>> groupByStatus = entities.stream().collect(Collectors.groupingBy(IcNatEntity::getExistStatus));
if (CollectionUtils.isNotEmpty(groupByStatus.get(false))){
for (List<IcNatEntity> icNatEntities : ListUtils.partition(groupByStatus.get(false), 500)) {
icNatService.insertBatch(icNatEntities);
if (CollectionUtils.isNotEmpty(entities)) {
List<NatUserInfoResultDTO> existNatInfos = icNatDao.getExistNatInfo(entities);
sampleAndNat(existNatInfos,entities,NumConstant.TWO_STR,customerId,isSync);
}
}
//组织关系表
});
} catch (Exception e) {
log.error("hsjc exception", e);
}
}
/**
* Desc: 处理采样和检测结果
* @param existInfo 库里存在的ic_nat
* @param entities 所有的
* @param type 1采样结果2检测结果
* @param isSync 1:页面调用同步2定时任务
* @author zxc
* @date 2022/10/18 09:08
*/
private void sampleAndNat(List<NatUserInfoResultDTO> existInfo, List<IcNatEntity> entities, String type, String customerId, String isSync){
/**
* 采样结果不为空
* 数据库采样时间+idCard+userId 存在的 不做操作
* 数据库采样时间+idCard+userId 不存在的 新增
*
* 检测结果不为空
* 数据库采样时间+idCard+userId 存在的 做更新
* 数据库采样时间+idCard+userId 不存在的 新增
*/
entities.forEach(e -> existInfo.stream().filter(i -> i.getUserId().equals(e.getUserId()) && i.getIdCard().equals(e.getIdCard())).forEach(i -> e.setExistStatus(true)));
Map<Boolean, List<IcNatEntity>> groupByStatus = entities.stream().collect(Collectors.groupingBy(IcNatEntity::getExistStatus));
if (CollectionUtils.isNotEmpty(groupByStatus.get(false))) {
for (List<IcNatEntity> icNatEntities : ListUtils.partition(groupByStatus.get(false), NumConstant.FIVE_HUNDRED)) {
// 主表新增
icNatService.insertBatch(icNatEntities);
// 组织关系表
List<IcNatRelationEntity> relationEntities = new ArrayList<>();
entities.forEach(ne -> {
// 不是居民的先不加关系表吧
if (ne.getIsResiUser().equals(NumConstant.ONE_STR)){
icNatEntities.forEach(ne -> {
if (ne.getIsResiUser().equals(NumConstant.ONE_STR)) {
IcNatRelationEntity e = new IcNatRelationEntity();
e.setCustomerId(customerId);
e.setAgencyId(ne.getAgencyId());
e.setPids(ne.getPids());
e.setIcNatId(ne.getId());
e.setUserType("sync");
e.setUserType(isSync.equals(NumConstant.ONE_STR) ? "manualSync" : "sync");
relationEntities.add(e);
}
});
if (CollectionUtils.isNotEmpty(relationEntities)){
for (List<IcNatRelationEntity> icNatRelationEntities : ListUtils.partition(relationEntities, 500)) {
icNatRelationService.insertBatch(icNatRelationEntities);
if (CollectionUtils.isNotEmpty(relationEntities)) {
icNatRelationService.insertBatch(relationEntities);
}
}
}
if (NumConstant.TWO_STR.equals(type)){
if (CollectionUtils.isNotEmpty(groupByStatus.get(true))){
for (List<IcNatEntity> icNatEntities : ListUtils.partition(groupByStatus.get(true), NumConstant.ONE_HUNDRED)) {
icNatService.updateBatchNat(icNatEntities);
}
}
}
}
private class JudgeDealStatus {
private boolean isNext;
private DataSyncRecordDisabilityDTO dbDisablityEntity;
private DataSyncRecordDeathDTO dbDeathEntity;
private Integer dealStatus;
private String dealResult;
private boolean isNeedSetStatus;
/**
* http请求返回的结果
*/
private JSONObject thirdResultObject;
public JudgeDealStatus(DataSyncRecordDisabilityDTO dbDisablityEntity) {
this.dbDisablityEntity = dbDisablityEntity;
}
public JudgeDealStatus(JSONObject thirdResultObject, DataSyncRecordDeathDTO dbDeathEntity) {
this.thirdResultObject = thirdResultObject;
this.dbDeathEntity = dbDeathEntity;
}
boolean isStop() {
return isNext;
}
public Integer getDealStatus() {
return dealStatus;
}
public String getDealResult() {
return dealResult;
}
public boolean isNeedSetStatus() {
return isNeedSetStatus;
}
public JudgeDealStatus invoke() {
//对比记录里 也没有信息 则不用处理
if (dbDisablityEntity == null || StringUtils.isBlank(dbDisablityEntity.getId())) {
isNext = true;
return this;
} else {
//对比记录里 有数据 且是已处理状态 则继续下一个居民
if (dbDisablityEntity.getDealStatus().equals(NumConstant.ONE)) {
isNext = true;
return this;
} else {
//如果是其他处理状态 则改为已处理即可
dealStatus = 1;
dealResult = "系统比对数据一致,自动处理";
isNeedSetStatus = true;
}
}
isNext = false;
return this;
}
/**
* desc:蓝图返回该人是残疾的数据 说明需要处理居民库的数据
*
* @return
*/
public JudgeDealStatus notSame() {
if (dbDisablityEntity != null && StringUtils.isNotBlank(dbDisablityEntity.getId())
&& dbDisablityEntity.getDealStatus().equals(NumConstant.ONE)) {
dealStatus = 0;
dealResult = "";
isNeedSetStatus = true;
}
isNext = false;
return this;
}
public JudgeDealStatus invokeDeath() {
//获取到了死亡记录 同步记录不存在 或者存在且状态不为为已处理 则返回true 继续下一个数据
if (thirdResultObject != null) {
if (dbDeathEntity != null && StringUtils.isNotBlank(dbDeathEntity.getId())) {
Integer dealStatusDb = dbDeathEntity.getDealStatus();
//数据库中的状态如果是已处理 改为未处理
if (dealStatusDb.equals(NumConstant.ONE)) {
dealStatus = 0;
dealResult = "";
isNeedSetStatus = true;
} else {
isNext = true;
return this;
}
}
} else {
//没有获取到 死亡记录
if (dbDeathEntity != null && StringUtils.isNotBlank(dbDeathEntity.getId())) {
Integer dealStatusDb = dbDeathEntity.getDealStatus();
//数据库中的状态如果是未处理 或处理失败 则继续下一条
if (dealStatusDb.equals(NumConstant.ONE)) {
isNext = true;
return this;
} else {
dealStatus = 1;
dealResult = "系统比对数据一致,自动处理";
isNeedSetStatus = true;
}
}
}
isNext = false;
return this;
}
}
}
}

159
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncRecordDeathServiceImpl.java

@ -0,0 +1,159 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.dao.DataSyncRecordDeathDao;
import com.epmet.dto.ChangeDeathDTO;
import com.epmet.dto.DataSyncRecordDeathDTO;
import com.epmet.dto.form.dataSync.DataSyncRecordDeathPageFormDTO;
import com.epmet.entity.DataSyncRecordDeathEntity;
import com.epmet.service.DataSyncRecordDeathService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
/**
* 数据同步记录-居民死亡信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-11
*/
@Service
public class DataSyncRecordDeathServiceImpl extends BaseServiceImpl<DataSyncRecordDeathDao, DataSyncRecordDeathEntity> implements DataSyncRecordDeathService {
/**
* 列表查询
* @param formDTO
* @return
*/
@Override
public PageData<DataSyncRecordDeathDTO> page(DataSyncRecordDeathPageFormDTO formDTO) {
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId());
formDTO.setAgencyId(null != staffInfoCacheResult ? staffInfoCacheResult.getAgencyId() : null);
PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(),formDTO.getIsPage());
List<DataSyncRecordDeathDTO> records = baseDao.pageSelect(formDTO.getCustomerId(),formDTO.getIdCard(), formDTO.getName(), formDTO.getAgencyId());
records.forEach(r->{
GridInfoCache gridInfoCache = CustomerOrgRedis.getGridInfo(r.getGridId());
r.setGridName(null != gridInfoCache ? gridInfoCache.getGridNamePath() : StrConstant.EPMETY_STR);
});
PageInfo<DataSyncRecordDeathDTO> pi = new PageInfo<>(records);
return new PageData<>(records, pi.getTotal());
}
@Override
public List<DataSyncRecordDeathDTO> list(Map<String, Object> params) {
List<DataSyncRecordDeathEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, DataSyncRecordDeathDTO.class);
}
private QueryWrapper<DataSyncRecordDeathEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<DataSyncRecordDeathEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
/**
* 返回详情:带网格名称
*
* @param id
* @return
*/
@Override
public DataSyncRecordDeathDTO get(String id) {
DataSyncRecordDeathEntity entity = baseDao.selectById(id);
DataSyncRecordDeathDTO recordDeathDTO = ConvertUtils.sourceToTarget(entity, DataSyncRecordDeathDTO.class);
if (StringUtils.isNotBlank(recordDeathDTO.getGridId())) {
GridInfoCache gridInfoCache = CustomerOrgRedis.getGridInfo(entity.getGridId());
recordDeathDTO.setGridName(null != gridInfoCache ? gridInfoCache.getGridNamePath() : StrConstant.EPMETY_STR);
}
return recordDeathDTO;
}
/**
* 批量删除
* @param ids
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(List<String> ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(ids);
}
@Override
public DataSyncRecordDeathDTO selectOne(LambdaQueryWrapper<DataSyncRecordDeathEntity> queryWrapper) {
DataSyncRecordDeathEntity entity = baseDao.selectOne(queryWrapper);
return ConvertUtils.sourceToTarget(entity, DataSyncRecordDeathDTO.class);
}
/**
* @param userId 当前操作人
* @param customerId 当前客户
* @param ids 要操作的记录id
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void batchUpdate(String userId, String customerId, List<String> ids) {
// 要做的事:居民表修改状态为注销、子状态为死亡、加入死亡人员名单、记录变更主表、变更明细表(如果当前死亡的这个人属于十八类中的是,-1操作)
// 上面要做的事,其实就是新增死亡人员名单,调整下ChangeDeathServiceImpl.save,直接调用吧,
for (String id : ids) {
DataSyncRecordDeathEntity entity = baseDao.selectById(id);
if (NumConstant.ONE == entity.getDealStatus() || StringUtils.isBlank(entity.getIcResiUserId())) {
// 已处理的跳过
continue;
}
try {
ChangeDeathDTO changeDeathDTO = new ChangeDeathDTO();
changeDeathDTO.setStaffId(userId);
changeDeathDTO.setUserId(entity.getIcResiUserId());
changeDeathDTO.setGridId(entity.getGridId());
changeDeathDTO.setName(entity.getName());
changeDeathDTO.setIdCard(entity.getIdCard());
// 手机号没有值
changeDeathDTO.setMobile(StrConstant.EPMETY_STR);
changeDeathDTO.setDeathDate(DateUtils.stringToDate(entity.getDeathDate(), "yyyy-MM-dd"));
changeDeathDTO.setJoinReason("来源于数据比对-死亡人员数据");
SpringContextUtils.getBean(ChangeDeathServiceImpl.class).save(changeDeathDTO);
entity.setDealStatus(NumConstant.ONE);
} catch (EpmetException epmetException) {
entity.setDealStatus(NumConstant.TWO);
entity.setDealResult("系统内部异常:" + epmetException.getMsg());
epmetException.printStackTrace();
} catch (Exception e) {
entity.setDealStatus(NumConstant.TWO);
entity.setDealResult("未知错误");
e.printStackTrace();
} finally {
baseDao.updateById(entity);
}
}
}
}

301
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncRecordDisabilityServiceImpl.java

@ -0,0 +1,301 @@
package com.epmet.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.constant.NumConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.constant.IcResiUserConstant;
import com.epmet.dao.DataSyncRecordDisabilityDao;
import com.epmet.dto.DataSyncRecordDisabilityDTO;
import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.form.IcFormOptionsQueryFormDTO;
import com.epmet.dto.form.dataSync.AddRecordByResidentCategoryFormDTO;
import com.epmet.dto.form.dataSync.CategoryStatusAndIdDTO;
import com.epmet.dto.form.dataSync.DataSyncRecordDisabilityFormDTO;
import com.epmet.dto.form.dataSync.ResiInfoDTO;
import com.epmet.entity.DataSyncRecordDisabilityEntity;
import com.epmet.excel.DataSyncRecordDisabilityExcel;
import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.service.DataSyncRecordDisabilityService;
import com.epmet.service.IcResiUserService;
import com.epmet.service.IcUserChangeRecordService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
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 javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
import java.util.stream.Collectors;
/**
* 数据同步记录-居民残疾信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-10-11
*/
@Service
@Slf4j
public class DataSyncRecordDisabilityServiceImpl extends BaseServiceImpl<DataSyncRecordDisabilityDao, DataSyncRecordDisabilityEntity> implements DataSyncRecordDisabilityService {
@Autowired
private IcResiUserService icResiUserService;
@Autowired
private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient;
@Autowired
private IcUserChangeRecordService icUserChangeRecordService;
@Override
public PageData<DataSyncRecordDisabilityDTO> page(Map<String, Object> params) {
IPage<DataSyncRecordDisabilityEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, DataSyncRecordDisabilityDTO.class);
}
@Override
public List<DataSyncRecordDisabilityDTO> list(Map<String, Object> params) {
List<DataSyncRecordDisabilityEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, DataSyncRecordDisabilityDTO.class);
}
private QueryWrapper<DataSyncRecordDisabilityEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<DataSyncRecordDisabilityEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public DataSyncRecordDisabilityDTO get(String id) {
DataSyncRecordDisabilityEntity entity = baseDao.selectById(id);
DataSyncRecordDisabilityDTO result = ConvertUtils.sourceToTarget(entity, DataSyncRecordDisabilityDTO.class);
result.setGenderCn(result.getGender() == NumConstant.ONE ? "男" : "女");
IcResiUserDTO icResiUserDTO = icResiUserService.get(entity.getIcResiUserId());
ResiInfoDTO resiInfoDTO = ConvertUtils.sourceToTarget(icResiUserDTO, ResiInfoDTO.class);
resiInfoDTO.setGenderCn(resiInfoDTO.getGender().equals(NumConstant.ONE_STR) ? "男" : "女");
resiInfoDTO.setCjzkCn(getCj(resiInfoDTO.getCjzk()));
resiInfoDTO.setCjlbCn(getCjlb(resiInfoDTO.getCjlb(),entity.getCustomerId()));
result.setResiInfo(resiInfoDTO);
return result;
}
public String getCj(String cj){
String result = "";
switch (cj){
case NumConstant.ONE_STR:
result = "一级";
break;
case NumConstant.TWO_STR:
result = "二级";
break;
case NumConstant.THREE_STR:
result = "三级";
break;
case NumConstant.FOUR_STR:
result = "四级";
break;
default:
break;
}
return result;
}
public String getCjlb(String cjlb,String customerId){
IcFormOptionsQueryFormDTO formDTO = new IcFormOptionsQueryFormDTO();
formDTO.setCustomerId(customerId);
formDTO.setFormCode("resi_base_info");
formDTO.setColumnName("CJLB");
Result<Map<String, String>> cjlbOptionsMap = operCustomizeOpenFeignClient.getOptionsMap(formDTO);
if (!cjlbOptionsMap.success()){
throw new EpmetException("operCustomizeOpenFeignClient.getOptionsMap执行失败");
}
Map<String, String> data = cjlbOptionsMap.getData();
return data.get(cjlb);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(DataSyncRecordDisabilityDTO dto) {
DataSyncRecordDisabilityEntity entity = ConvertUtils.sourceToTarget(dto, DataSyncRecordDisabilityEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(DataSyncRecordDisabilityDTO dto) {
DataSyncRecordDisabilityEntity entity = ConvertUtils.sourceToTarget(dto, DataSyncRecordDisabilityEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public DataSyncRecordDisabilityDTO selectOne(LambdaQueryWrapper<DataSyncRecordDisabilityEntity> queryWrapper) {
DataSyncRecordDisabilityEntity entity = baseDao.selectOne(queryWrapper);
return ConvertUtils.sourceToTarget(entity, DataSyncRecordDisabilityDTO.class);
}
@Override
public PageData<DataSyncRecordDisabilityDTO> list(DataSyncRecordDisabilityFormDTO formDTO) {
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId());
if (null == staffInfo){
throw new EpmetException("查询工作人员失败:"+formDTO.getUserId());
}
formDTO.setAgencyId(staffInfo.getAgencyId());
PageData<DataSyncRecordDisabilityDTO> result = new PageData<>(new ArrayList<>(), NumConstant.ZERO_L);
if (formDTO.getIsPage()){
PageInfo<DataSyncRecordDisabilityDTO> pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.list(formDTO));
result.setList(pageInfo.getList());
result.setTotal(Integer.valueOf(String.valueOf(pageInfo.getTotal())));
}else {
List<DataSyncRecordDisabilityDTO> list = baseDao.list(formDTO);
result.setList(list);
result.setTotal(list.size());
}
return result;
}
@Override
public void export(DataSyncRecordDisabilityFormDTO formDTO, HttpServletResponse response) throws IOException {
ExcelWriter excelWriter = null;
formDTO.setPageNo(NumConstant.ONE);
formDTO.setPageSize(NumConstant.TEN_THOUSAND);
try {
String fileName = "残疾" + DateUtils.format(new Date()) + ".xlsx";
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel(fileName, response), DataSyncRecordDisabilityExcel.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build();
List<DataSyncRecordDisabilityExcel> list = null;
do {
PageData<DataSyncRecordDisabilityDTO> data = list(formDTO);
list = ConvertUtils.sourceToTarget(data.getList(), DataSyncRecordDisabilityExcel.class);
formDTO.setPageNo(formDTO.getPageNo() + NumConstant.ONE);
excelWriter.write(list, writeSheet);
} while (CollectionUtils.isNotEmpty(list) && list.size() == formDTO.getPageSize());
} catch (EpmetException e) {
response.reset();
response.setCharacterEncoding("UTF-8");
response.setHeader("content-type", "application/json; charset=UTF-8");
PrintWriter printWriter = response.getWriter();
Result<Object> result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),e.getMsg());
printWriter.write(JSON.toJSONString(result));
printWriter.close();
} catch (Exception e) {
log.error("export exception", e);
} finally {
if (excelWriter != null) {
excelWriter.finish();
}
}
}
/**
* Desc: 批量更新
* 更新 ic_resi_user的是否残疾cjlb,cjzk,cjzh
* 添加 变更记录
* 回填残疾表状态
* @param ids
* @author zxc
* @date 2022/10/13 16:18
*/
@Override
public void batchUpdate(String[] ids, TokenDto tokenDto) {
if (null == ids || ids.length == NumConstant.ZERO){
return;
}
String customerId = tokenDto.getCustomerId();
String userId = tokenDto.getUserId();
List<String> all = Arrays.asList(ids);
List<DataSyncRecordDisabilityEntity> entities = baseDao.selectBatchIds(all);
IcFormOptionsQueryFormDTO formDTO = new IcFormOptionsQueryFormDTO();
formDTO.setCustomerId(customerId);
formDTO.setFormCode("resi_base_info");
formDTO.setColumnName("CJZK");
Result<Map<String, String>> cjzkOptionsMap = operCustomizeOpenFeignClient.getOptionsMap(formDTO);
if (!cjzkOptionsMap.success()){
throw new EpmetException("operCustomizeOpenFeignClient.getOptionsMap执行失败");
}
formDTO.setColumnName("CJLB");
Result<Map<String, String>> cjlbOptionsMap = operCustomizeOpenFeignClient.getOptionsMap(formDTO);
if (!cjlbOptionsMap.success()){
throw new EpmetException("operCustomizeOpenFeignClient.getOptionsMap执行失败");
}
Map<String, String> cjlbMap = cjlbOptionsMap.getData();
Map<String, String> cjzkMap = cjzkOptionsMap.getData();
entities.forEach(e -> {
cjlbMap.forEach((k,v) ->{
if (e.getCjlbCn().equals(v)){
e.setCjlb(k);
}
});
cjzkMap.forEach((k,v) -> {
if (e.getCjzkCn().equals(v)){
e.setCjzk(k);
}
});
});
entities.stream().filter(e -> StringUtils.isBlank(e.getCjzk()) || StringUtils.isBlank(e.getCjlb())).forEach(e -> e.setUpdateStatus(true));
// 变更记录
List<CategoryStatusAndIdDTO> collect = entities.stream().map(m -> {
CategoryStatusAndIdDTO dto = new CategoryStatusAndIdDTO();
dto.setCategoryStatus(m.getDisabilityStatus().toString());
dto.setIcResiUserId(m.getIcResiUserId());
return dto;
}).collect(Collectors.toList());
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, userId);
if (null == staffInfo){
throw new EpmetException("查询工作人员信息失败:"+userId);
}
AddRecordByResidentCategoryFormDTO addRecordByResidentCategoryFormDTO = new AddRecordByResidentCategoryFormDTO();
addRecordByResidentCategoryFormDTO.setIcResiUserIds(collect);
addRecordByResidentCategoryFormDTO.setColumnName(IcResiUserConstant.IS_CJ);
addRecordByResidentCategoryFormDTO.setLabel(IcResiUserConstant.IS_CJ_CN);
addRecordByResidentCategoryFormDTO.setUserId(userId);
addRecordByResidentCategoryFormDTO.setUserName(staffInfo.getRealName());
addRecordByResidentCategoryFormDTO.setCustomerId(customerId);
disposeDisabilitybatchUpdate(entities,addRecordByResidentCategoryFormDTO);
}
@Transactional(rollbackFor = Exception.class)
public void disposeDisabilitybatchUpdate(List<DataSyncRecordDisabilityEntity> entities,AddRecordByResidentCategoryFormDTO addRecordByResidentCategoryFormDTO){
// 新增变更记录
icUserChangeRecordService.addRecordByResidentCategory(addRecordByResidentCategoryFormDTO);
// 更新 ic_resi_user
baseDao.batchUpdateResiDisability(entities);
// 回填 主表
baseDao.batchUpdateDisability(entities);
}
}

33
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatServiceImpl.java

@ -88,6 +88,23 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> imp
//@Autowired
//private UserService userService;
public void disposeIsNull(AddIcNatFormDTO formDTO){
/**
* 根据产品要求 不同情况提示不同错误
* 1.采样时间为空检测时间和结果有一个为空就报错
* 2.采样时间不为空检测时间和结果可以为空如果不为空 检测时间和结果都不为空
*/
if ((null == formDTO.getSampleTime() && (null == formDTO.getNatTime() || org.apache.commons.lang3.StringUtils.isBlank(formDTO.getNatResult())))){
throw new EpmetException(EpmetErrorCode.SAMPLE_TIME_AND_RESULT_IS_NULL_ERROR.getCode());
}
if(null != formDTO.getSampleTime() && org.apache.commons.lang3.StringUtils.isNotBlank(formDTO.getNatResult()) && null == formDTO.getNatTime()){
throw new EpmetException(EpmetErrorCode.NAT_TIME_IS_NULL_ERROR.getCode());
}
if (null != formDTO.getSampleTime() && org.apache.commons.lang3.StringUtils.isBlank(formDTO.getNatResult()) && null != formDTO.getNatTime()){
throw new EpmetException(EpmetErrorCode.NAT_RESULT_IS_NULL_ERROR.getCode());
}
}
/**
* @Author sun
* @Description 核酸检测-上报核酸记录
@ -95,8 +112,9 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> imp
@Override
@Transactional(rollbackFor = Exception.class)
public void add(AddIcNatFormDTO formDTO) {
disposeIsNull(formDTO);
//0.先根据身份证号和检查时间以及检测结果校验数据是否存在
IcNatDTO icNatDTO = baseDao.getNatDTO(formDTO.getCustomerId(), null, formDTO.getIdCard(), DateUtils.format(formDTO.getNatTime(), DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE), null);
IcNatDTO icNatDTO = baseDao.getNatDTO(formDTO.getCustomerId(), null, formDTO.getIdCard(), null != formDTO.getNatTime() ? DateUtils.format(formDTO.getNatTime(), DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE) : null, null, null != formDTO.getSampleTime() ? DateUtils.format(formDTO.getSampleTime(), DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE) : null);
//按身份证号核酸时间存在记录的 核酸结果相同的提示已存在相同记录核酸结果不同的提示已存在去修改【业务要求的】
if (null != icNatDTO && icNatDTO.getNatResult().equals(formDTO.getNatResult())) {
throw new RenException(EpmetErrorCode.IC_NAT_IDCARD_NATTIME.getCode(), EpmetErrorCode.IC_NAT_IDCARD_NATTIME.getMsg());
@ -216,8 +234,9 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> imp
@Override
@Transactional(rollbackFor = Exception.class)
public void edit(AddIcNatFormDTO formDTO) {
disposeIsNull(formDTO);
//0.先根据身份证号和检测时间以及检测结果校验除当前数据是否还存在相同数据
IcNatDTO icNatDTO = baseDao.getNatDTO(formDTO.getCustomerId(), formDTO.getIcNatId(), formDTO.getIdCard(), DateUtils.format(formDTO.getNatTime(), DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE), formDTO.getNatResult());
IcNatDTO icNatDTO = baseDao.getNatDTO(formDTO.getCustomerId(), formDTO.getIcNatId(), formDTO.getIdCard(), null != formDTO.getNatTime() ? DateUtils.format(formDTO.getNatTime(), DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE) : null, formDTO.getNatResult(), null != formDTO.getSampleTime() ? DateUtils.format(formDTO.getSampleTime(), DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE) : null);
if (null != icNatDTO) {
throw new RenException(EpmetErrorCode.IC_NAT.getCode(), EpmetErrorCode.IC_NAT.getMsg());
}
@ -445,6 +464,14 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> imp
return baseDao.updateIsResiFlag(customerId,icResiUserId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateBatchNat(List<IcNatEntity> entities) {
if (CollectionUtils.isNotEmpty(entities)){
baseDao.updateBatchNat(entities);
}
}
/**
* 批量持久化
* @param entities
@ -464,7 +491,7 @@ public class IcNatServiceImpl extends BaseServiceImpl<IcNatDao, IcNatEntity> imp
errorRow.setName(e.getName());
errorRow.setMobile(e.getMobile());
errorRow.setIdCard(e.getIdCard());
errorRow.setErrorInfo("未知系统错误");
errorRow.setErrorInfo(exception.getMessage());
listener.getErrorRows().add(errorRow);
}
});

18
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java

@ -7,6 +7,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.constant.Constant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
@ -20,22 +22,17 @@ import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Md5Util;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.poi.excel.handler.ExcelFillCellMergeStrategy;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.IcResiUserConstant;
import com.epmet.dto.form.ExportResiUserFormDTO;
import com.epmet.dto.form.IcExportTemplateQueryFormDTO;
import com.epmet.dto.form.IcResiUserPageFormDTO;
import com.epmet.dto.form.ResiUserQueryValueDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.FormItemResult;
import com.epmet.dto.result.IcCustomExportResultDTO;
import com.epmet.dto.result.OptionDTO;
import com.epmet.excel.support.ExportResiUserItemDTO;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.service.IcResiUserExportService;
import com.epmet.service.IcResiUserImportService;
@ -53,7 +50,10 @@ import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
@ -76,6 +76,8 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
private IcResiUserService icResiUserService;
@Autowired
private IcResiUserImportService icResiUserImportService;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
/**
* key:itemId,value: key:columnName,中文

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

@ -44,10 +44,7 @@ import com.epmet.commons.tools.redis.common.CustomerIcHouseRedis;
import com.epmet.commons.tools.redis.common.CustomerOrgRedis;
import com.epmet.commons.tools.redis.common.CustomerResiUserRedis;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache;
import com.epmet.commons.tools.redis.common.bean.GridInfoCache;
import com.epmet.commons.tools.redis.common.bean.HouseInfoCache;
import com.epmet.commons.tools.redis.common.bean.ResiUserInfoCache;
import com.epmet.commons.tools.redis.common.bean.*;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.*;
import com.epmet.constant.IcPlatformConstant;
@ -3555,4 +3552,10 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
}
});
}
@Override
public IcResiUserInfoCache getIcResiUserInfo(String userId) {
IcResiUserEntity icResiUserEntity = baseDao.selectById(userId);
return ConvertUtils.sourceToTarget(icResiUserEntity,IcResiUserInfoCache.class);
}
}

68
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserChangeRecordServiceImpl.java

@ -19,6 +19,7 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.rocketmq.messages.IcResiUserAddMQMsg;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
@ -26,6 +27,8 @@ import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.IcResiUserConstant;
import com.epmet.constant.SystemMessageType;
import com.epmet.dao.IcResiUserDao;
import com.epmet.dao.IcUserChangeRecordDao;
import com.epmet.dto.IcResiCategoryStatsConfigDTO;
@ -33,16 +36,21 @@ import com.epmet.dto.IcUserChangeRecordDTO;
import com.epmet.dto.form.IcResiUserChangeRecordFormDTO;
import com.epmet.dto.form.IcUserChangeRecordInitFormDTO;
import com.epmet.dto.form.IcUsercategoryAnalysisFormDTO;
import com.epmet.dto.form.SystemMsgFormDTO;
import com.epmet.dto.form.dataSync.AddRecordByResidentCategoryFormDTO;
import com.epmet.dto.result.AllGridsByUserIdResultDTO;
import com.epmet.dto.result.BuildingResultDTO;
import com.epmet.dto.result.IcUserChangeRecordResultDTO;
import com.epmet.dto.result.IcUsercategoryAnalysisResultDTO;
import com.epmet.entity.IcResiUserEntity;
import com.epmet.entity.IcUserChangeDetailedEntity;
import com.epmet.entity.IcUserChangeRecordEntity;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.service.IcUserChangeDetailedService;
import com.epmet.service.IcUserChangeRecordService;
import com.epmet.util.ModuleConstant;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
@ -77,7 +85,8 @@ public class IcUserChangeRecordServiceImpl extends BaseServiceImpl<IcUserChangeR
private IcUserChangeRecordService icUserChangeRecordService;
@Autowired
private IcUserChangeDetailedService icUserChangeDetailedService;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
/**
* @Author sun
@ -176,6 +185,63 @@ public class IcUserChangeRecordServiceImpl extends BaseServiceImpl<IcUserChangeR
return baseDao.deleteByIcResiUserId(icResiUserId,currentStaffId);
}
/**
* Desc: 根据居民类别新增变更记录
* @param formDTO
* @author zxc
* @date 2022/10/14 09:04
*/
@Override
public void addRecordByResidentCategory(AddRecordByResidentCategoryFormDTO formDTO) {
formDTO.getIcResiUserIds().forEach(i -> {
IcResiUserEntity entity = icResiUserDao.selectById(i.getIcResiUserId());
// 未变更前的记录
Map<String, String> categoryMap = icResiUserDao.getCategoryListMap(Arrays.asList(formDTO.getColumnName()), entity.getId());
// 修改前跟要修改的值一样,不新增变更记录
if (!categoryMap.get(formDTO.getColumnName()).equals(i.getCategoryStatus())) {
IcUserChangeRecordEntity icUserChangeRecordEntity = new IcUserChangeRecordEntity();
icUserChangeRecordEntity.setCustomerId(formDTO.getCustomerId());
icUserChangeRecordEntity.setOperatorId(formDTO.getUserId());
icUserChangeRecordEntity.setIcUserId(entity.getId());
icUserChangeRecordEntity.setOperatorName(formDTO.getUserName());
icUserChangeRecordEntity.setIcUserName(entity.getName());
icUserChangeRecordEntity.setType(IcResiUserConstant.USER_CATEGORY);
icUserChangeRecordEntity.setTypeName(IcResiUserConstant.USER_CATEGORY_CN);
icUserChangeRecordEntity.setBeforeChangeName(categoryMap.get(formDTO.getColumnName()).equals(NumConstant.ONE_STR) ? formDTO.getLabel().concat(":是") : formDTO.getLabel().concat(":否"));
icUserChangeRecordEntity.setAfterChangeName(i.getCategoryStatus().equals(NumConstant.ONE_STR) ? formDTO.getLabel().concat(":是") : formDTO.getLabel().concat(":否"));
icUserChangeRecordEntity.setChangeTime(new Date());
icUserChangeRecordEntity.setRemark(formDTO.getLabel().concat("数据更新"));
baseDao.insert(icUserChangeRecordEntity);
IcUserChangeDetailedEntity icUserChangeDetailedEntity = new IcUserChangeDetailedEntity();
icUserChangeDetailedEntity.setCustomerId(formDTO.getCustomerId());
icUserChangeDetailedEntity.setIcUserChangeRecordId(icUserChangeRecordEntity.getId());
icUserChangeDetailedEntity.setPids(StringUtils.isNotBlank(entity.getPids()) && entity.getPids().contains(":") ? entity.getPids().substring(NumConstant.ZERO, entity.getPids().lastIndexOf(":")) : "");
icUserChangeDetailedEntity.setAgencyId(entity.getAgencyId());
icUserChangeDetailedEntity.setGridId(entity.getGridId());
icUserChangeDetailedEntity.setNeighborHoodId(entity.getVillageId());
icUserChangeDetailedEntity.setBuildingId(entity.getBuildId());
icUserChangeDetailedEntity.setBuildingUnitId(entity.getUnitId());
icUserChangeDetailedEntity.setHouseId(entity.getHomeId());
icUserChangeDetailedEntity.setIcUserId(entity.getId());
icUserChangeDetailedEntity.setType(IcResiUserConstant.USER_CATEGORY);
icUserChangeDetailedEntity.setTypeName(IcResiUserConstant.USER_CATEGORY_CN);
icUserChangeDetailedEntity.setFieldName(formDTO.getColumnName());
icUserChangeDetailedEntity.setValue(i.getCategoryStatus().equals(NumConstant.ONE_STR) ? NumConstant.ONE : NumConstant.ONE_NEG);
icUserChangeDetailedService.insert(icUserChangeDetailedEntity);
// 发送消息
IcResiUserAddMQMsg mqMsg = new IcResiUserAddMQMsg();
mqMsg.setCustomerId(formDTO.getCustomerId());
mqMsg.setIcResiUser(formDTO.getUserId());
SystemMsgFormDTO form = new SystemMsgFormDTO();
form.setMessageType(SystemMessageType.IC_RESI_USER_EDIT);
form.setContent(mqMsg);
epmetMessageOpenFeignClient.sendSystemMsgByMQ(form);
}
});
}
/**
* @Author sun
* @Description 按客户初始化客户下居民的变更记录变更明细数据

42
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcUserTransferRecordServiceImpl.java

@ -179,10 +179,19 @@ public class IcUserTransferRecordServiceImpl extends BaseServiceImpl<IcUserTrans
}
/**
* @Author sun
* @Description 调动记录
**/
public IcUserTransferRecordEntity saveTransferRecord(CustomerStaffInfoCacheResult staffInfoCache, IcResiUserTransferFormDTO formDTO, IcResiUserDTO resiUserDTO, IcResiUserOrgMsgResultDTO result1, IcResiUserOrgMsgResultDTO result2) {
*
* @param staffInfoCache
* @param formDTO
* @param resiUserDTO
* @param before 调动前的
* @param after 调动后的房屋信息
* @return 调动记录
*/
public IcUserTransferRecordEntity saveTransferRecord(CustomerStaffInfoCacheResult staffInfoCache,
IcResiUserTransferFormDTO formDTO,
IcResiUserDTO resiUserDTO,
IcResiUserOrgMsgResultDTO before,
IcResiUserOrgMsgResultDTO after) {
IcUserTransferRecordEntity recordEntity = new IcUserTransferRecordEntity();
recordEntity.setIcUserId(formDTO.getIcUserId());
recordEntity.setOperatorId(formDTO.getStaffId());
@ -190,17 +199,17 @@ public class IcUserTransferRecordServiceImpl extends BaseServiceImpl<IcUserTrans
recordEntity.setOperatorName(null == staffInfoCache ? "" : staffInfoCache.getRealName());
recordEntity.setOldCustomerId(formDTO.getCustomerId());
recordEntity.setOldAgencyId(resiUserDTO.getAgencyId());
recordEntity.setOldAgencyName(result1.getAgencyDTO().getOrganizationName());
recordEntity.setOldAgencyName(before.getAgencyDTO().getOrganizationName());
recordEntity.setOldGridId(resiUserDTO.getGridId());
recordEntity.setOldGridName(result1.getGridDTO().getGridName());
recordEntity.setOldGridName(before.getGridDTO().getGridName());
recordEntity.setOldNeighborHoodId(resiUserDTO.getVillageId());
recordEntity.setOldNeighborHoodName(result1.getNeighborHoodDTO().getNeighborHoodName());
recordEntity.setOldNeighborHoodName(before.getNeighborHoodDTO().getNeighborHoodName());
recordEntity.setOldBuildingId(resiUserDTO.getBuildId());
recordEntity.setOldBuildingName(result1.getBuildingDTO().getBuildingName());
recordEntity.setOldBuildingName(before.getBuildingDTO().getBuildingName());
recordEntity.setOldBuildingUnitId(resiUserDTO.getUnitId());
recordEntity.setOldBuildingUnitName(result1.getBuildingUnitDTO().getUnitName());
recordEntity.setOldBuildingUnitName(before.getBuildingUnitDTO().getUnitName());
recordEntity.setOldHouseId(resiUserDTO.getHomeId());
recordEntity.setOldHouseName(result1.getHouseDTO().getHouseName());
recordEntity.setOldHouseName(before.getHouseDTO().getHouseName());
recordEntity.setTransferTime(formDTO.getTransferTime());
recordEntity.setRemark(formDTO.getRemark());
if ("in".equals(formDTO.getType())) {
@ -209,17 +218,17 @@ public class IcUserTransferRecordServiceImpl extends BaseServiceImpl<IcUserTrans
//迁入:同社区的居民,状态正常,改变了房屋 目前这三种情况 type="in";
recordEntity.setNewCustomerId(resiUserDTO.getCustomerId());
recordEntity.setNewAgencyId(formDTO.getNewAgencyId());
recordEntity.setNewAgencyName(result2.getAgencyDTO().getOrganizationName());
recordEntity.setNewAgencyName(after.getAgencyDTO().getOrganizationName());
recordEntity.setNewGridId(formDTO.getNewGridId());
recordEntity.setNewGridName(result2.getGridDTO().getGridName());
recordEntity.setNewGridName(after.getGridDTO().getGridName());
recordEntity.setNewNeighborHoodId(formDTO.getNewNeighborHoodId());
recordEntity.setNewNeighborHoodName(result2.getNeighborHoodDTO().getNeighborHoodName());
recordEntity.setNewNeighborHoodName(after.getNeighborHoodDTO().getNeighborHoodName());
recordEntity.setNewBuildingId(formDTO.getNewBuildingId());
recordEntity.setNewBuildingName(result2.getBuildingDTO().getBuildingName());
recordEntity.setNewBuildingName(after.getBuildingDTO().getBuildingName());
recordEntity.setNewBuildingUnitId(formDTO.getNewBuildingUnitId());
recordEntity.setNewBuildingUnitName(result2.getBuildingUnitDTO().getUnitName());
recordEntity.setNewBuildingUnitName(after.getBuildingUnitDTO().getUnitName());
recordEntity.setNewHouseId(formDTO.getNewHouseId());
recordEntity.setNewHouseName(result2.getHouseDTO().getHouseName());
recordEntity.setNewHouseName(after.getHouseDTO().getHouseName());
}
return recordEntity;
@ -341,6 +350,7 @@ public class IcUserTransferRecordServiceImpl extends BaseServiceImpl<IcUserTrans
//2.查询人员调动前的组织、网格、小区、楼栋、单元、房屋信息
IcResiUserOrgMsgResultDTO icResiUserOrgMsgResultDTO = getIcResiUserOrgMsgResultDTO(resiUserDTO);
//3.查询人员调动后的组织、网格、小区、楼栋、单元、房屋信息;
// 迁出到客户外的为空
Result<IcResiUserOrgMsgResultDTO> result2 = getNewHouseInfo(formDTO);
CustomerStaffInfoCacheResult staffInfoCache = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId());

7
epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.76__alter_ic_nat.sql

@ -0,0 +1,7 @@
alter table ic_nat add COLUMN `SAMPLE_TIME` datetime COMMENT '采样时间'after ID_CARD;
ALTER TABLE ic_nat MODIFY COLUMN NAT_TIME datetime COMMENT '检测时间,精确到分钟';
UPDATE ic_nat
SET SAMPLE_TIME = NAT_TIME,
UPDATED_TIME = NOW();

66
epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.77__data_compare_d_c.sql

@ -0,0 +1,66 @@
CREATE TABLE `data_sync_record_death` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户Id',
`AGENCY_ID` varchar(64) DEFAULT '' COMMENT '组织Id',
`PIDS` varchar(255) DEFAULT '' COMMENT '组织的pids 含agencyId本身',
`GRID_ID` varchar(64) DEFAULT '' COMMENT '网格ID',
`NAME` varchar(16) NOT NULL COMMENT '姓名',
`ID_CARD` varchar(24) NOT NULL COMMENT '身份证',
`IC_RESI_USER_ID` varchar(64) DEFAULT NULL COMMENT '居民Id,ic_resi_user.id',
`AGE` varchar(8) DEFAULT NULL COMMENT '年龄(享年)',
`ADDRESS` varchar(128) DEFAULT NULL COMMENT '家庭住址',
`DEATH_DATE` varchar(32) DEFAULT '' COMMENT '死亡时间',
`CREMATION_TIME` varchar(32) DEFAULT '' COMMENT '火化时间',
`MZ` varchar(32) DEFAULT '' COMMENT '民族',
`ORGAN_NAME` varchar(16) DEFAULT '' COMMENT '登记单位名称',
`NATION` varchar(32) DEFAULT '' COMMENT '国籍',
`THIRD_RECORD_ID` varchar(64) DEFAULT '' COMMENT '第三方记录唯一标识',
`DEAL_STATUS` smallint(1) NOT NULL DEFAULT '0' COMMENT '处理状态(更新至居民信息) 0:未处理;1:处理成功;2处理失败',
`DEAL_RESULT` varchar(128) DEFAULT '' COMMENT '处理结果',
`DEL_FLAG` int(11) NOT NULL COMMENT '删除标识:0.未删除 1.已删除',
`REVISION` int(11) NOT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`) USING BTREE,
KEY `idx_u_id` (`IC_RESI_USER_ID`) USING BTREE COMMENT '居民Id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据同步记录-居民死亡信息';
CREATE TABLE `data_sync_record_disability` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户Id',
`AGENCY_ID` varchar(64) DEFAULT '' COMMENT '组织Id',
`PIDS` varchar(255) DEFAULT '' COMMENT '组织的pids 含agencyId本身',
`GRID_ID` varchar(64) DEFAULT '' COMMENT '网格ID',
`NAME` varchar(16) NOT NULL COMMENT '姓名',
`ID_CARD` varchar(24) NOT NULL COMMENT '身份证',
`MOBILE` varchar(24) DEFAULT NULL COMMENT '电话',
`IC_RESI_USER_ID` varchar(64) DEFAULT NULL COMMENT '居民Id,ic_resi_user.id',
`CARD_NUM` varchar(32) DEFAULT NULL COMMENT '残疾证号',
`CJZK_CN` varchar(32) DEFAULT NULL COMMENT '残疾等级(状况)',
`CJLB_CN` varchar(32) DEFAULT NULL COMMENT '残疾类别',
`EDU_LEVEL` varchar(32) DEFAULT '' COMMENT '文化程度',
`MARITAL_STATUS_NAME` varchar(32) DEFAULT '' COMMENT '婚姻状况',
`MZ_CN` varchar(32) DEFAULT '' COMMENT '民族中文',
`GENDER` char(2) DEFAULT NULL COMMENT '性别 1男2女',
`RESIDENT_ADD` varchar(128) DEFAULT NULL COMMENT '户籍地址',
`NOW_ADD` varchar(128) DEFAULT NULL COMMENT '现居住地址',
`GUARDIAN` varchar(32) DEFAULT '' COMMENT '监护人',
`GUARDIAN_PHONE` varchar(32) DEFAULT '' COMMENT '监护人联系方式',
`DEAL_STATUS` smallint(1) NOT NULL DEFAULT '0' COMMENT '处理状态(更新至居民信息) 0:未处理;1:处理成功;2处理失败',
`DISABILITY_STATUS` smallint(1) NOT NULL DEFAULT '0' COMMENT '需要处理的残疾状态 0:非残疾;1:残疾',
`DEAL_RESULT` varchar(128) DEFAULT '' COMMENT '处理结果',
`DEL_FLAG` int(11) NOT NULL COMMENT '删除标识:0.未删除 1.已删除',
`REVISION` int(11) NOT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`) USING BTREE,
KEY `idx_u_id` (`IC_RESI_USER_ID`) USING BTREE COMMENT '居民Id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据同步记录-居民残疾信息';
UPDATE `epmet_user`.`data_sync_config` SET `DATA_CODE` = 'siwang' ,`UPDATED_TIME` = now() WHERE `ID` = '7';
UPDATE `epmet_user`.`data_sync_config` SET `DATA_CODE` = 'canji' ,`UPDATED_TIME` = now() WHERE `ID` = '9';

BIN
epmet-user/epmet-user-server/src/main/resources/excel/ic_nat.xlsx

Binary file not shown.

6
epmet-user/epmet-user-server/src/main/resources/mapper/ChangeDeathDao.xml

@ -56,13 +56,13 @@
AND d.GRID_ID = #{gridId}
</if>
<if test="name != null and name != ''">
AND d.NAME = #{name}
AND d.NAME like concat( '%',#{name},'%')
</if>
<if test="idCard != null and idCard != ''">
AND d.ID_CARD = #{idCard}
AND d.ID_CARD like concat('%', #{idCard},'%')
</if>
<if test="mobile != null and mobile != ''">
AND d.MOBILE = #{mobile}
AND d.MOBILE like concat('%', #{mobile},'%')
</if>
<if test="startTime != null and startTime != ''">
AND d.DEATH_DATE >= #{startTime}

72
epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncConfigDao.xml

@ -41,50 +41,66 @@
customer_id as customerId
FROM data_sync_config
WHERE DEL_FLAG = 0
<if test='null != customerId and customerId != "" '>
AND CUSTOMER_ID = #{customerId}
</if>
<if test="switchStatus != null and switchStatus != ''">
AND switch_status = #{switchStatus}
</if>
<if test='null != customerId and customerId != "" '>
AND CUSTOMER_ID = #{customerId}
</if>
order by sort
</select>
<!-- 范围查询 -->
<select id="scopeList" resultType="com.epmet.dto.DataSyncScopeDTO">
SELECT * FROM data_sync_scope WHERE DEL_FLAG = '0' AND DATA_SYNC_CONFIG_ID = #{id};
SELECT id, customer_id, data_sync_config_id, org_type, org_id, pid, org_id_path, del_flag FROM data_sync_scope WHERE DEL_FLAG = '0' AND DATA_SYNC_CONFIG_ID = #{id};
</select>
<!-- 根据范围查询居民证件号 -->
<select id="getIdCardsByScope" resultType="com.epmet.dto.result.NatUserInfoResultDTO">
SELECT
DISTINCT ID_CARD AS idCard,
CUSTOMER_ID,
ID AS userId,
`NAME`,
AGENCY_ID AS agencyId,
GRID_ID,
<if test="categoryColumn != null and categoryColumn != ''">
${categoryColumn} AS categoryColumn,
</if>
pids
FROM ic_resi_user
WHERE DEL_FLAG = '0'
AND `STATUS` = '0'
AND (
<foreach collection="list" item="l" separator="OR">
<choose>
<when test='"grid" == l.orgType'>GRID_ID = #{l.orgId}</when>
<otherwise>PIDS LIKE CONCAT('%',#{l.orgId},'%')</otherwise>
</choose>
AND `STATUS` =
<choose>
<when test="resiStatus != null and resiStatus != ''">
#{resiStatus}
</when>
<otherwise>
'0'
</otherwise>
</choose>
<if test="idCards != null and idCards.size() != 0">
AND id_card in
<foreach collection="idCards" item="idCard" separator="," close=")" open="(" >
#{idCard}
</foreach>
)
</if>
<choose>
<when test='null == agencyId'>
AND (
<foreach collection="orgList" item="l" separator="OR">
<choose>
<when test='"grid" == l.orgType'>GRID_ID = #{l.orgId}</when>
<otherwise>PIDS LIKE CONCAT(#{l.orgIdPath},'%')</otherwise>
</choose>
</foreach>
)
</when>
<otherwise>
AND PIDS LIKE CONCAT(#{agencyId},'%')
</otherwise>
</choose>
ORDER BY CREATED_TIME
</select>
<select id="getUserIdByIdCard" resultType="com.epmet.dto.result.NatUserInfoResultDTO">
SELECT
DISTINCT ID_CARD AS idCard,
ID AS userId,
AGENCY_ID AS agencyId,
pids
FROM ic_resi_user
WHERE DEL_FLAG = '0'
AND `STATUS` = '0'
AND id_card in (
<foreach collection="list" item="l" separator=",">
#{l}
</foreach>
)
</select>
</mapper>
</mapper>

63
epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncRecordDeathDao.xml

@ -0,0 +1,63 @@
<?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.DataSyncRecordDeathDao">
<resultMap type="com.epmet.entity.DataSyncRecordDeathEntity" id="dataSyncRecordDeathMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="agencyId" column="AGENCY_ID"/>
<result property="pids" column="PIDS"/>
<result property="gridId" column="GRID_ID"/>
<result property="name" column="NAME"/>
<result property="idCard" column="ID_CARD"/>
<result property="icResiUserId" column="IC_RESI_USER_ID"/>
<result property="age" column="AGE"/>
<result property="address" column="ADDRESS"/>
<result property="deathDate" column="DEATH_DATE"/>
<result property="cremationTime" column="CREMATION_TIME"/>
<result property="mz" column="MZ"/>
<result property="organName" column="ORGAN_NAME"/>
<result property="nation" column="NATION"/>
<result property="thirdRecordId" column="THIRD_RECORD_ID"/>
<result property="dealStatus" column="DEAL_STATUS"/>
<result property="dealResult" column="DEAL_REDSULT"/>
<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>
<select id="pageSelect" parameterType="map" resultType="com.epmet.dto.DataSyncRecordDeathDTO">
SELECT
d.id,
d.`NAME`,
d.ID_CARD,
d.DEATH_DATE,
d.AGE,
d.ADDRESS,
d.IC_RESI_USER_ID,
d.GRID_ID,
d.AGENCY_ID,
d.CREMATION_TIME,
d.ORGAN_NAME
FROM
data_sync_record_death d
WHERE
d.DEL_FLAG = '0'
AND d.CUSTOMER_ID = #{customerId}
<if test="agencyId != null and agencyId != ''">
AND d.PIDS LIKE concat( '%', #{agencyId}, '%' )
</if>
<if test="idCard != null and idCard != ''">
AND d.ID_CARD LIKE concat('%',#{idCard},'%')
</if>
<if test="name != null and name != ''">
AND d.`NAME` LIKE concat('%',#{name},'%')
</if>
ORDER BY
d.CREATED_TIME DESC
</select>
</mapper>

212
epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncRecordDisabilityDao.xml

@ -0,0 +1,212 @@
<?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.DataSyncRecordDisabilityDao">
<resultMap type="com.epmet.entity.DataSyncRecordDisabilityEntity" id="dataSyncRecordDisabilityMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="agencyId" column="AGENCY_ID"/>
<result property="pids" column="PIDS"/>
<result property="gridId" column="GRID_ID"/>
<result property="name" column="NAME"/>
<result property="idCard" column="ID_CARD"/>
<result property="mobile" column="MOBILE"/>
<result property="icResiUserId" column="IC_RESI_USER_ID"/>
<result property="cardNum" column="CARD_NUM"/>
<result property="cjzkCn" column="CJZK_CN"/>
<result property="cjlbCn" column="CJLB_CN"/>
<result property="eduLevel" column="EDU_LEVEL"/>
<result property="maritalStatusName" column="MARITAL_STATUS_NAME"/>
<result property="mzCn" column="MZ_CN"/>
<result property="gender" column="GENDER"/>
<result property="residentAdd" column="RESIDENT_ADD"/>
<result property="nowAdd" column="NOW_ADD"/>
<result property="guardian" column="GUARDIAN"/>
<result property="guardianPhone" column="GUARDIAN_PHONE"/>
<result property="dealStatus" column="DEAL_STATUS"/>
<result property="disabilityStatus" column="DISABILITY_STATUS"/>
<result property="nation" column="NATION"/>
<result property="dealResult" column="DEAL_REDULT"/>
<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>
<update id="batchUpdateResiDisability">
UPDATE ic_resi_user
<trim prefix="set" suffixOverrides=",">
<trim prefix="IS_CJ =(case" suffix="end),">
<foreach collection="list" item="item">
<if test='null != item.disabilityStatus'>
when id = #{item.icResiUserId} then #{item.disabilityStatus}
</if>
</foreach>
</trim>
<trim prefix="CJZH =(case" suffix="end),">
<foreach collection="list" item="item">
<choose>
<when test='item.disabilityStatus == 1'>
when id = #{item.icResiUserId} then #{item.cardNum}
</when>
<otherwise>
when id = #{item.icResiUserId} then ''
</otherwise>
</choose>
</foreach>
</trim>
<trim prefix="CJZK =(case" suffix="end),">
<foreach collection="list" item="item">
<choose>
<when test='item.disabilityStatus == 1'>
when id = #{item.icResiUserId} then #{item.cjzk}
</when>
<otherwise>
when id = #{item.icResiUserId} then ''
</otherwise>
</choose>
</foreach>
</trim>
<trim prefix="CJLB =(case" suffix="end),">
<foreach collection="list" item="item">
<choose>
<when test='item.disabilityStatus == 1'>
when id = #{item.icResiUserId} then #{item.cjlb}
</when>
<otherwise>
when id = #{item.icResiUserId} then ''
</otherwise>
</choose>
</foreach>
</trim>
UPDATED_TIME = NOW()
</trim>
WHERE 1=1
<foreach collection="list" item="item" open="AND( " separator=" OR " index="index" close=")">
id = #{item.icResiUserId}
</foreach>
</update>
<update id="batchUpdateDisability">
UPDATE data_sync_record_disability
<trim prefix="set" suffixOverrides=",">
<trim prefix="DEAL_STATUS =(case" suffix="end),">
<foreach collection="list" item="item">
<choose>
<when test='item.updateStatus == true '>
when id = #{item.id} then 2
</when>
<otherwise>
when id = #{item.id} then 1
</otherwise>
</choose>
</foreach>
</trim>
<trim prefix="DEAL_RESULT =(case" suffix="end),">
<foreach collection="list" item="item">
<choose>
<when test='item.updateStatus == true '>
when id = #{item.id} then '处理失败'
</when>
<otherwise>
when id = #{item.id} then '处理成功'
</otherwise>
</choose>
</foreach>
</trim>
UPDATED_TIME = NOW()
</trim>
WHERE 1=1
<foreach collection="list" item="item" open="AND( " separator=" OR " index="index" close=")">
id = #{item.id}
</foreach>
</update>
<select id="list" resultType="com.epmet.dto.DataSyncRecordDisabilityDTO">
SELECT
(case when d.deal_status = 0 then '未处理'
when d.deal_status = 1 then '处理成功'
when d.deal_status = 2 then '处理失败'
else '处理失败' end) as dealStatusName,
d.now_add as address,
d.*
FROM data_sync_record_disability d
WHERE DEL_FLAG = 0
AND PIDS LIKE CONCAT('%',#{agencyId},'%')
<if test='null != idCard and idCard != "" '>
AND ID_CARD LIKE CONCAT('%',#{idCard},'%')
</if>
<if test='null != name and name != "" '>
AND `NAME` LIKE CONCAT('%',#{name},'%')
</if>
<if test='null != mobile and mobile != "" '>
AND MOBILE LIKE CONCAT('%',#{mobile},'%')
</if>
ORDER BY CREATED_TIME DESC
</select>
<!-- <insert id="upsertBatch">-->
<!-- INSERT into data_sync_record_disability (-->
<!-- id,-->
<!-- customer_id,-->
<!-- agency_id,-->
<!-- pids,-->
<!-- grid_id,-->
<!-- NAME,-->
<!-- id_card,-->
<!-- mobile,-->
<!-- ic_resi_user_id,-->
<!-- card_num,-->
<!-- cjzk,-->
<!-- cjlb,-->
<!-- edu_level,-->
<!-- marital_status,-->
<!-- guardian,-->
<!-- guardian_phone,-->
<!-- deal_status,-->
<!-- deal_redult,-->
<!-- del_flag,-->
<!-- revision,-->
<!-- created_by,-->
<!-- created_time,-->
<!-- updated_by,-->
<!-- updated_time) VALUES (-->
<!-- <foreach collection="list" item="item" open="(" close=")" separator=",">-->
<!-- #{item.id},-->
<!-- #{item.customer_id},-->
<!-- #{item.agency_id},-->
<!-- #{item.pids},-->
<!-- #{item.grid_id},-->
<!-- #{item.NAME},-->
<!-- #{item.id_card},-->
<!-- #{item.mobile},-->
<!-- #{item.ic_resi_user_id},-->
<!-- #{item.card_num},-->
<!-- #{item.cjzk},-->
<!-- #{item.cjlb},-->
<!-- #{item.edu_level},-->
<!-- #{item.marital_status},-->
<!-- #{item.guardian},-->
<!-- #{item.guardian_phone},-->
<!-- #{item.deal_status},-->
<!-- #{item.deal_redult},-->
<!-- #{item.del_flag},-->
<!-- #{item.revision},-->
<!-- #{item.created_by},-->
<!-- now(),-->
<!-- #{item.updated_by},-->
<!-- now()-->
<!-- </foreach>-->
<!-- )-->
<!-- ON DUPLICATE KEY UPDATE-->
<!-- id_card = values(idCard),-->
<!-- name = values(name),-->
<!-- sex = values(sex),-->
<!-- class = values(class)-->
<!-- </insert>-->
</mapper>

56
epmet-user/epmet-user-server/src/main/resources/mapper/IcNatDao.xml

@ -42,6 +42,7 @@
b.mobile mobile,
b.id_card idCard,
b.nat_time natTime,
b.sample_time sampleTime,
b.nat_result natResult,
b.nat_address natAddress
FROM
@ -67,6 +68,12 @@
<if test='null != endTime and "" != endTime'>
AND b.nat_time <![CDATA[ <= ]]> #{endTime}
</if>
<if test='null != sampleStartTime and "" != sampleStartTime'>
AND b.sample_time <![CDATA[ >= ]]> #{sampleStartTime}
</if>
<if test='null != sampleEndTime and "" != sampleEndTime'>
AND b.sample_time <![CDATA[ <= ]]> #{sampleEndTime}
</if>
<if test='null != isResiUser and "" != isResiUser'>
AND b.is_resi_user = #{isResiUser}
</if>
@ -83,6 +90,7 @@
mobile mobile,
id_card idCard,
nat_time natTime,
sample_time sampleTime,
nat_result natResult,
nat_address natAddress
FROM
@ -105,6 +113,12 @@
<if test='null != endTime and "" != endTime'>
AND nat_time <![CDATA[ <= ]]> #{endTime}
</if>
<if test='null != sampleStartTime and "" != sampleStartTime'>
AND sample_time <![CDATA[ >= ]]> #{sampleStartTime}
</if>
<if test='null != sampleEndTime and "" != sampleEndTime'>
AND sample_time <![CDATA[ <= ]]> #{sampleEndTime}
</if>
ORDER BY nat_time DESC, id ASC
</select>
@ -117,6 +131,7 @@
mobile,
id_card,
nat_time,
sample_time,
nat_result,
nat_address
FROM
@ -125,7 +140,12 @@
del_flag = '0'
AND customer_id = #{customerId}
AND id_card = #{idCard}
AND DATE_FORMAT(nat_time, '%Y-%m-%d %h:%i') = DATE_FORMAT(#{natTime}, '%Y-%m-%d %h:%i')
<if test='null != natTime'>
AND DATE_FORMAT(nat_time, '%Y-%m-%d %h:%i') = DATE_FORMAT(#{natTime}, '%Y-%m-%d %h:%i')
</if>
<if test='null != sampleTime'>
AND DATE_FORMAT(sample_time, '%Y-%m-%d %h:%i') = DATE_FORMAT(#{sampleTime}, '%Y-%m-%d %h:%i')
</if>
<if test='null != natResult and "" != natResult'>
AND nat_result = #{natResult}
</if>
@ -144,7 +164,7 @@
WHERE del_flag = '0'
AND USER_ID = #{l.userId}
AND ID_CARD = #{l.idCard}
AND UNIX_TIMESTAMP(NAT_TIME) = UNIX_TIMESTAMP(#{l.natTime})
AND UNIX_TIMESTAMP(SAMPLE_TIME) = UNIX_TIMESTAMP(#{l.sampleTime})
</foreach>
</select>
@ -169,4 +189,36 @@
m.ID_CARD = t.ID_CARD
AND m.DEL_FLAG = '0'
</update>
<update id="updateBatchNat">
UPDATE ic_nat
<trim prefix="set" suffixOverrides=",">
<trim prefix="NAT_TIME =(case" suffix="end),">
<foreach collection="list" item="l">
when USER_ID = #{l.userId} AND ID_CARD = #{l.idCard} then #{l.natTime}
</foreach>
</trim>
<trim prefix="NAT_ADDRESS =(case" suffix="end),">
<foreach collection="list" item="l">
when USER_ID = #{l.userId} AND ID_CARD = #{l.idCard} then #{l.natAddress}
</foreach>
</trim>
<trim prefix="NAT_RESULT =(case" suffix="end),">
<foreach collection="list" item="l">
when USER_ID = #{l.userId} AND ID_CARD = #{l.idCard} then #{l.natResult}
</foreach>
</trim>
<trim prefix="MOBILE =(case" suffix="end),">
<foreach collection="list" item="l">
when USER_ID = #{l.userId} AND ID_CARD = #{l.idCard} then #{l.mobile}
</foreach>
</trim>
UPDATED_TIME = NOW()
</trim>
WHERE DEL_FLAG = '0'
<foreach collection="list" item="l" separator=",">
AND USER_ID = #{l.userId}
AND ID_CARD = #{l.idCard}
</foreach>
</update>
</mapper>

22
epmet-user/epmet-user-server/src/test/java/com/epmet/service/DataSyncConfigServiceTest.java

@ -0,0 +1,22 @@
package com.epmet.service;
import com.epmet.dto.form.DataSyncTaskParam;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@SpringBootTest
@RunWith(SpringRunner.class)
public class DataSyncConfigServiceTest {
@Autowired
private DataSyncConfigService dataSyncConfigService;
@Test
public void dataSyncForYanTaiTask() {
DataSyncTaskParam param = new DataSyncTaskParam();
dataSyncConfigService.dataSyncForYanTaiTask(param);
}
}
Loading…
Cancel
Save