From f282ab0914b34ba4cabd2cfec513094e9b3ca1c7 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 11 Nov 2022 14:10:30 +0800 Subject: [PATCH 01/34] =?UTF-8?q?=E7=96=AB=E8=8B=97=E6=8E=A5=E7=A7=8D?= =?UTF-8?q?=E6=8B=89=E5=8F=96=E6=9A=82=E6=8F=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/constant/EpidemicConstant.java | 6 + .../processor/YanTaiVaccineSyncProcessor.java | 112 ++++++++++++++++++ .../epmet/service/DataSyncConfigService.java | 3 +- .../impl/DataSyncConfigServiceImpl.java | 57 +++++++-- 4 files changed, 167 insertions(+), 11 deletions(-) create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/processor/YanTaiVaccineSyncProcessor.java diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/EpidemicConstant.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/EpidemicConstant.java index 0ad814d722..388b0d05a5 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/EpidemicConstant.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/EpidemicConstant.java @@ -12,7 +12,13 @@ public interface EpidemicConstant { String DATA_CODE_DISABILITY = "canji"; String DATA_CODE_DEATH = "siwang"; + /** + * ic_sync_job 任务类型 + * 核酸检测 + * 疫苗接种 + */ String JOB_TYPE_NAT = "nat"; + String JOB_TYPE_VACCINE = "vaccine"; String OPERATION_STATUS_WAITING = "waiting"; String OPERATION_STATUS_PROCESSING = "processing"; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/processor/YanTaiVaccineSyncProcessor.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/processor/YanTaiVaccineSyncProcessor.java new file mode 100644 index 0000000000..e53a279a46 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/processor/YanTaiVaccineSyncProcessor.java @@ -0,0 +1,112 @@ +package com.epmet.processor; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.commons.tools.distributedlock.DistributedLock; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.redis.RedisUtils; +import com.epmet.constant.EpidemicConstant; +import com.epmet.dao.IcSyncJobDao; +import com.epmet.entity.IcSyncJobEntity; +import com.epmet.service.DataSyncConfigService; +import lombok.extern.slf4j.Slf4j; +import org.redisson.api.RLock; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.TimeUnit; + +import static com.epmet.constant.EpidemicConstant.JOB_TYPE_NAT; +import static com.epmet.constant.EpidemicConstant.JOB_TYPE_VACCINE; + +// 烟台核酸检测数据同步处理器 +@Component +@Slf4j +public class YanTaiVaccineSyncProcessor { + + public static final int MAX_EXECUTING_COUNT = 3; + + @Autowired + private ExecutorService executorService; + + @Autowired + private IcSyncJobDao icSyncJobDao; + + @Autowired + private DataSyncConfigService dataSyncConfigService; + + @Autowired + private DistributedLock distributedLock; + + @Autowired + RedisUtils redisUtils; + + /** + * @Description 定时扫描和执行同步任务【疫苗接种】 + * @Author zxc + * @Date 2022/11/11 10:32 + */ + @Scheduled(cron = "0/10 * * * * ? ") + public void scanJobs() { + LambdaQueryWrapper executingListQuery = new LambdaQueryWrapper<>(); + executingListQuery.eq(IcSyncJobEntity::getOperationStatus, EpidemicConstant.OPERATION_STATUS_PROCESSING); + List executingJobList = icSyncJobDao.selectList(executingListQuery); + if (!CollectionUtils.isEmpty(executingJobList) && executingJobList.size() >= MAX_EXECUTING_COUNT) { + // 最多只允许同时3条线程运行 + return; + } + int executingCount = executingJobList.size(); + // 还可以运行几条线程 + int leftCount = MAX_EXECUTING_COUNT - executingCount; + RLock lock = null; + try { + lock = distributedLock.getLock("data:sync:" + JOB_TYPE_VACCINE, 60L, 60L, TimeUnit.SECONDS); + // 查询可执行的任务列表,并且异步执行 + List icSyncJobToExec = icSyncJobDao.selectExecutableJobList( + EpidemicConstant.JOB_TYPE_VACCINE, + leftCount); + if (!CollectionUtils.isEmpty(icSyncJobToExec)) { + // 异步提交任务 + for (IcSyncJobEntity jobEntity : icSyncJobToExec) { + updateJobStatus(jobEntity.getId(), EpidemicConstant.OPERATION_STATUS_PROCESSING); + executorService.submit(() -> { + // 将此任务状态修改为执行中 + try { + dataSyncConfigService.execSyncByJobProcessor(jobEntity); + } finally { + // 更新任务状态为结束 + updateJobStatus(jobEntity.getId(), EpidemicConstant.OPERATION_STATUS_FINISH); + } + }); + } + } + } catch (Exception e) { + log.error("【异步数据更新】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } finally { + if (lock != null) { + lock.unlock(); + } + } + } + + /** + * 更新任务状态 + * @author wxz + * @date 2022/11/8 下午8:25 + * @param id + * @param status + + */ + private void updateJobStatus(String id, String status) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(IcSyncJobEntity::getId, id); + + IcSyncJobEntity updateEntity = new IcSyncJobEntity(); + updateEntity.setOperationStatus(status); + icSyncJobDao.update(updateEntity, query); + } + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java index d7e44b58de..9d17dad7f9 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java @@ -121,8 +121,9 @@ public interface DataSyncConfigService extends BaseService * @param resiInfos * @param customerId * @param isSync + * @param jobType */ - void yantaiHsjcByDbView(List resiInfos, String customerId, String isSync); + void yanTaiDbViewByType(List resiInfos, String customerId, String isSync, String jobType); /** * 更新居民核酸检测信息(通过任务处理器) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java index 4010a1c231..513561b057 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java @@ -378,7 +378,7 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl resiInfos, String customerId, String isSync) { - List> resiInfobatchs = ListUtils.partition(resiInfos, 50); - for (List resibatch : resiInfobatchs) { + public void yanTaiDbViewByType(List resiInfos, String customerId, String isSync, String jobType) { + List> resiInfoBatchs = ListUtils.partition(resiInfos, 50); + for (List resiBatch : resiInfoBatchs) { // n个一批,来处理他们的核酸信息,太多怕给数据库查崩了。 try { - yantaiHsjcByDbViewPartition(resibatch, customerId, isSync); + switch (jobType){ + // 核酸检测 + case JOB_TYPE_NAT: + yantaiHsjcByDbViewPartition(resiBatch, customerId, isSync); + // 疫苗接种 + case JOB_TYPE_VACCINE: + yanTaiVaccineByDbViewPartition(resiBatch, customerId, isSync); + default: + break; + } } catch (Exception e) { String errorMsg = ExceptionUtils.getErrorStackTrace(e); - log.error("【更新核酸检测信息(from 兰图)】失败,信息:{}", errorMsg); + log.error("【更新{}信息(from 兰图)】失败,信息:{}", jobType, errorMsg); } } } + /** + * @Description 疫苗接种信息处理 + * @param resiInfos + * @param customerId + * @param isSync + * @Author zxc + * @Date 2022/11/11 11:07 + */ + public void yanTaiVaccineByDbViewPartition(List resiInfos, String customerId, String isSync){ + // 将居民信息转化为的map + Map idCardAndResiInfoMap = resiInfos.stream().collect(Collectors.toMap(resi -> resi.getIdCard(), Function.identity())); + List idCards = new ArrayList<>(idCardAndResiInfoMap.keySet()); + // 1.获取核酸采样信息 + Map args = new HashMap<>(); + args.put("idcards", idCards); + // todo 疫苗接种视图 + + List> vaccineList = yantaiNamedParamLantuJdbcTemplate.queryForList( + "select id, name,card_no, create_time, realname from hscyxxb where card_no in (:idcards)", args); + if (CollectionUtils.isNotEmpty(vaccineList)) { + List entities = new ArrayList<>(); + vaccineList.forEach(resiVaccineInfo -> { + // 从视图中获取到的疫苗接种相关信息 + + }); + } + } + /** * n个一批,来处理他们的核酸信息,太多怕给数据库查崩了。 * @param resiInfos @@ -1198,10 +1235,10 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl Date: Fri, 11 Nov 2022 14:36:25 +0800 Subject: [PATCH 02/34] =?UTF-8?q?=E7=96=AB=E8=8B=97=E6=8E=A5=E7=A7=8D?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/dto/form/DataSyncTaskParam.java | 6 +++ .../impl/DataSyncConfigServiceImpl.java | 42 ++----------------- 2 files changed, 9 insertions(+), 39 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/DataSyncTaskParam.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/DataSyncTaskParam.java index 215ffabf28..13a230c644 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/DataSyncTaskParam.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/DataSyncTaskParam.java @@ -49,4 +49,10 @@ public class DataSyncTaskParam implements Serializable { private String dataCode; private String staffId; + + /** + * nat:核酸检测; + * vaccine:疫苗接种 + */ + private String jobType; } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java index 513561b057..0f21e9e539 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java @@ -408,10 +408,6 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl qw = new LambdaQueryWrapper<>(); qw.eq(IcSyncJobEntity::getOrgId,formDTO.getAgencyId()) + .eq(IcSyncJobEntity::getJobType,formDTO.getJobType()) .in(IcSyncJobEntity::getOperationStatus,OPERATION_STATUS_WAITING,OPERATION_STATUS_PROCESSING); List icSyncJobEntities = icSyncJobDao.selectList(qw); // 当前组织下存在同步任务 @@ -433,43 +430,10 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl waitList; - //do { - // LambdaQueryWrapper qw3 = new LambdaQueryWrapper<>(); - // qw3.eq(IcSyncJobEntity::getCustomerId,formDTO.getCustomerId()) - // .eq(IcSyncJobEntity::getOperationStatus,OPERATION_STATUS_WAITING) - // .eq(IcSyncJobEntity::getJobType,JOB_TYPE_NAT) - // .orderByAsc(BaseEpmetEntity::getCreatedTime); - // waitList = icSyncJobDao.selectList(qw3); - // if (CollectionUtils.isNotEmpty(waitList)){ - // for (IcSyncJobEntity entity : waitList) { - // RLock lock = null; - // try { - // lock = distributedLock.getLock(entity.getOrgId() + JOB_TYPE_NAT, 60L, 60L, TimeUnit.SECONDS); - // updateSync(entity.getId(),OPERATION_STATUS_PROCESSING); - // }catch (Exception ex){ - // log.error(ex.getMessage()); - // throw new EpmetException(ex.getMessage()); - // }finally { - // lock.unlock(); - // } - // formDTO.setAgencyId(entity.getOrgId()); - // try { - // natInfoScanTask(formDTO); - // }catch (Exception ee){ - // log.error(ee.getMessage()); - // throw new EpmetException(ee.getMessage()); - // }finally { - // updateSync(entity.getId(),OPERATION_STATUS_FINISH); - // } - // } - // } - //}while (CollectionUtils.isNotEmpty(waitList)); } @Transactional(rollbackFor = Exception.class) @@ -1103,7 +1067,7 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl> vaccineList = yantaiNamedParamLantuJdbcTemplate.queryForList( - "select id, name,card_no, create_time, realname from hscyxxb where card_no in (:idcards)", args); + "select id, name,card_no, create_time from hscyxxb where card_no in (:idcards)", args); if (CollectionUtils.isNotEmpty(vaccineList)) { List entities = new ArrayList<>(); vaccineList.forEach(resiVaccineInfo -> { From 8fef98a908a00c35ec001829c07dac0d492f2b78 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 11 Nov 2022 16:20:55 +0800 Subject: [PATCH 03/34] =?UTF-8?q?=E7=96=AB=E8=8B=97=E6=8E=A5=E7=A7=8D?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=8C=89=E9=92=AE-todo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/YTVaccineListDTO.java | 27 +++++++ .../dto/result/NatUserInfoResultDTO.java | 2 + .../main/java/com/epmet/dao/IcVaccineDao.java | 9 +++ .../com/epmet/entity/IcVaccineEntity.java | 8 ++ .../impl/DataSyncConfigServiceImpl.java | 80 ++++++++++++++++--- .../resources/mapper/DataSyncConfigDao.xml | 3 +- .../main/resources/mapper/IcVaccineDao.xml | 14 ++++ 7 files changed, 131 insertions(+), 12 deletions(-) create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/YTVaccineListDTO.java diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/YTVaccineListDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/YTVaccineListDTO.java new file mode 100644 index 0000000000..94b2b30418 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/YTVaccineListDTO.java @@ -0,0 +1,27 @@ +package com.epmet.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author zxc + * @DateTime 2022/11/11 15:05 + */ +@Data +public class YTVaccineListDTO implements Serializable { + private static final long serialVersionUID = -5583350277850076659L; + + private String idCard; + + /** + * 接种时间 + */ + private String inoculateDate; + + /** + * 接种地点 + */ + private String lastStationName; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/NatUserInfoResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/NatUserInfoResultDTO.java index 5b0300f764..ef4b4e0eab 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/NatUserInfoResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/NatUserInfoResultDTO.java @@ -29,6 +29,8 @@ public class NatUserInfoResultDTO implements Serializable { private String name; + private String mobile; + /** * 18大类 中 某一类的 是否值,用于比较 同步数据结果确定是否要插入到表中 */ diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcVaccineDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcVaccineDao.java index 55b4591be3..f2c6829689 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcVaccineDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcVaccineDao.java @@ -3,6 +3,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.dto.IcNatDTO; import com.epmet.dto.IcVaccineDTO; +import com.epmet.dto.YTVaccineListDTO; import com.epmet.dto.form.MyNatListFormDTO; import com.epmet.dto.form.VaccineListFormDTO; import com.epmet.dto.result.IcVaccineListResultDTO; @@ -72,4 +73,12 @@ public interface IcVaccineDao extends BaseDao { */ List getVaccineListByIdCard(@Param("idCard") String idCard,@Param("time") String time); + /** + * @Description 根据 身份证 + 疫苗接种时间 查询库里存在的 + * @param list + * @Author zxc + * @Date 2022/11/11 15:11 + */ + List getExistVaccine(@Param("list")List list); + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcVaccineEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcVaccineEntity.java index b17256f3a0..2a1121de34 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcVaccineEntity.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcVaccineEntity.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.EqualsAndHashCode; @@ -61,6 +62,7 @@ public class IcVaccineEntity extends BaseEpmetEntity { /** * 接种时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private Date inoculateTime; /** @@ -93,4 +95,10 @@ public class IcVaccineEntity extends BaseEpmetEntity { */ private String remark; + @TableField(exist = false) + private String agencyId; + + @TableField(exist = false) + private String pids; + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java index 0f21e9e539..dff88efba3 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java @@ -11,7 +11,6 @@ import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.distributedlock.DistributedLock; import com.epmet.commons.tools.dto.form.PageFormDTO; -import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.dto.result.YtDataSyncResDTO; import com.epmet.commons.tools.dto.result.YtHscyResDTO; import com.epmet.commons.tools.dto.result.YtHsjcResDTO; @@ -21,7 +20,6 @@ import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.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; @@ -32,9 +30,11 @@ import com.epmet.constant.EpidemicConstant; import com.epmet.dao.DataSyncConfigDao; import com.epmet.dao.IcNatDao; import com.epmet.dao.IcSyncJobDao; +import com.epmet.dao.IcVaccineDao; import com.epmet.dto.DataSyncConfigDTO; import com.epmet.dto.DataSyncRecordDeathDTO; import com.epmet.dto.DataSyncRecordDisabilityDTO; +import com.epmet.dto.YTVaccineListDTO; import com.epmet.dto.form.ConfigSwitchFormDTO; import com.epmet.dto.form.DataSyncTaskParam; import com.epmet.dto.form.ScopeSaveFormDTO; @@ -48,7 +48,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.StringUtils; -import org.redisson.api.RLock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; @@ -59,7 +58,6 @@ import javax.annotation.Resource; import java.util.*; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; -import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.stream.Collectors; @@ -95,6 +93,12 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl args = new HashMap<>(); args.put("idcards", idCards); // todo 疫苗接种视图 - - List> vaccineList = yantaiNamedParamLantuJdbcTemplate.queryForList( - "select id, name,card_no, create_time from hscyxxb where card_no in (:idcards)", args); + String json = "[\n" + + "{\n" + + "\t\"idCard\":\"370785195001012558\",\n" + + "\t\"inoculateDate\":\"2023-01-01 10:01\",\n" + + "\t\"lastStationName\":\"北京\"\n" + + "},\n" + + "{\n" + + "\t\"idCard\":\"370785195001012558\",\n" + + "\t\"inoculateDate\":\"2022-01-01 10:01\",\n" + + "\t\"lastStationName\":\"南京\"\n" + + "}\n" + + "]"; + List> vaccineList = new ArrayList<>();/*yantaiNamedParamLantuJdbcTemplate.queryForList( + "select id, name,card_no, create_time from hscyxxb where card_no in (:idcards)", args);*/ + Map m = new HashMap<>(); + vaccineList.add(m); if (CollectionUtils.isNotEmpty(vaccineList)) { List entities = new ArrayList<>(); - vaccineList.forEach(resiVaccineInfo -> { - // 从视图中获取到的疫苗接种相关信息 - - }); +// List ytVaccineListDTOS = ConvertUtils.sourceToTarget(vaccineList, YTVaccineListDTO.class); + List ytVaccineListDTOS = JSON.parseArray(json,YTVaccineListDTO.class); + List existVaccine = icVaccineDao.getExistVaccine(ytVaccineListDTOS); + if (CollectionUtils.isNotEmpty(existVaccine)){ + for (YTVaccineListDTO e : existVaccine) { + for (int i = 0; i < ytVaccineListDTOS.size(); i++) { + if (ytVaccineListDTOS.get(i).getIdCard().equals(e.getIdCard()) && ytVaccineListDTOS.get(i).getInoculateDate().equals(e.getInoculateDate())){ + ytVaccineListDTOS.remove(i); + } + } + } + } + if (CollectionUtils.isNotEmpty(ytVaccineListDTOS)){ + ytVaccineListDTOS.forEach(v -> { + resiInfos.forEach(u -> { + if (v.getIdCard().equals(u.getIdCard())){ + IcVaccineEntity e = new IcVaccineEntity(); + e.setCustomerId(customerId); + e.setName(u.getName()); + e.setMobile(u.getMobile()); + e.setIdCard(u.getIdCard()); + e.setIsResiUser(StringUtils.isBlank(u.getUserId()) ? NumConstant.ZERO_STR : NumConstant.ONE_STR); + e.setUserId(StringUtils.isBlank(u.getUserId()) ? "" : u.getUserId()); + e.setUserType("ytPull"); + e.setInoculateTime(DateUtils.parseDate(v.getInoculateDate(),DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE)); + e.setInoculateAddress(v.getLastStationName()); + e.setAgencyId(u.getAgencyId()); + e.setPids(u.getPids()); + entities.add(e); + } + }); + }); + icVaccineService.insertBatch(entities); + List relationEntities = new ArrayList<>(); + entities.forEach(e -> { + IcVaccineRelationEntity re = new IcVaccineRelationEntity(); + re.setIcVaccineId(e.getAgencyId()); + re.setPids(e.getPids()); + re.setCustomerId(customerId); + re.setUserType("ytPull"); + re.setAgencyId(e.getAgencyId()); + relationEntities.add(re); + }); + icVaccineRelationService.insertBatch(relationEntities); + } } } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncConfigDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncConfigDao.xml index 911b5102bd..7b0e96f023 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncConfigDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/DataSyncConfigDao.xml @@ -70,7 +70,8 @@ ${categoryColumn} AS categoryColumn, - pids + pids, + mobile FROM ic_resi_user WHERE DEL_FLAG = '0' diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcVaccineDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcVaccineDao.xml index b8113074cf..77fca51a32 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcVaccineDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcVaccineDao.xml @@ -183,4 +183,18 @@ and ID_CARD = #{idCard} and DATE_FORMAT( INOCULATE_TIME, '%Y-%m-%d' ) = #{time} + + + From 32fe851abec20e8d1a542470190b479390585b46 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 11 Nov 2022 17:04:46 +0800 Subject: [PATCH 04/34] =?UTF-8?q?=E7=96=AB=E8=8B=97=E6=8E=A5=E7=A7=8D?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/feign/EpmetUserOpenFeignClient.java | 3 ++ .../EpmetUserOpenFeignClientFallback.java | 5 ++ .../com/epmet/constant/EpidemicConstant.java | 2 + .../controller/DataSyncConfigController.java | 12 +++++ .../java/com/epmet/enums/DataSyncEnum.java | 1 + .../epmet/service/DataSyncConfigService.java | 8 +++ .../impl/DataSyncConfigServiceImpl.java | 52 ++++++++++++++++++- 7 files changed, 81 insertions(+), 2 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index b24a4a9651..dab50be493 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -952,4 +952,7 @@ public interface EpmetUserOpenFeignClient { @PostMapping("/epmetuser/dataSyncConfig/disabilityInfoScanTask") Result disabilityInfoScanTask(@RequestBody DataSyncTaskParam formDTO); + + @PostMapping("/epmetuser/dataSyncConfig/vaccineInfoScanTask") + Result vaccineInfoScanTask(@RequestBody DataSyncTaskParam formDTO); } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index b675a7626b..8ac8382a78 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -741,4 +741,9 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien public Result disabilityInfoScanTask(DataSyncTaskParam formDTO) { return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "disabilityInfoScanTask", formDTO); } + + @Override + public Result vaccineInfoScanTask(DataSyncTaskParam formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "vaccineInfoScanTask", formDTO); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/EpidemicConstant.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/EpidemicConstant.java index 388b0d05a5..e2817f165c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/EpidemicConstant.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/EpidemicConstant.java @@ -7,10 +7,12 @@ public interface EpidemicConstant { * 核酸检测 * 残疾人 * 死亡 + * 疫苗接种 */ String DATA_CODE_NAT = "hesuan"; String DATA_CODE_DISABILITY = "canji"; String DATA_CODE_DEATH = "siwang"; + String DATA_CODE_VACCINE = "yimiaojiezhong"; /** * ic_sync_job 任务类型 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java index cbbc409d6b..948471cbe3 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java @@ -156,4 +156,16 @@ public class DataSyncConfigController { return new Result(); } + /** + * @Description 疫苗接种信息定时拉取 + * @param formDTO + * @Author zxc + * @Date 2022/11/11 16:56 + */ + @PostMapping("vaccineInfoScanTask") + public Result vaccineInfoScanTask(@RequestBody DataSyncTaskParam formDTO){ + dataSyncConfigService.vaccineInfoScanTask(formDTO); + return new Result(); + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/DataSyncEnum.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/DataSyncEnum.java index a3a66c4efc..438453f134 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/DataSyncEnum.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/DataSyncEnum.java @@ -12,6 +12,7 @@ public enum DataSyncEnum { HE_SUAN("hesuan", "核酸检测数据"), CAN_JI("canji", "残疾数据"), SI_WANG("siwang", "死亡数据"), + VACCINE("yimiaojiezhong", "疫苗接种"), OTHER("qita","其他"), ; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java index 9d17dad7f9..b4d80051da 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java @@ -134,4 +134,12 @@ public interface DataSyncConfigService extends BaseService */ void execSyncByJobProcessor(IcSyncJobEntity jobEntity); + /** + * @Description 疫苗接种信息定时拉取 + * @param formDTO + * @Author zxc + * @Date 2022/11/11 16:56 + */ + void vaccineInfoScanTask(DataSyncTaskParam formDTO); + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java index dff88efba3..c01925d3ef 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java @@ -1119,7 +1119,7 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl relationEntities = new ArrayList<>(); entities.forEach(e -> { IcVaccineRelationEntity re = new IcVaccineRelationEntity(); @@ -1130,7 +1130,7 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl configData = getConfigData(null, EpidemicConstant.DATA_CODE_VACCINE); + if (CollectionUtils.isEmpty(configData)){ + log.warn("vaccineInfoScanTask not exists config data,customer is "+formDTO.getCustomerId()); + return; + } + long count = configData.stream().filter(o -> CollectionUtils.isNotEmpty(o.getScopeList())).count(); + if (count < 1) { + log.warn("vaccineInfoScanTask scopeList is null"); + return; + } + int pageNo = NumConstant.ONE; + int pageSize = NumConstant.ONE_THOUSAND; + List dbResiList = null; + do { + for (DataSyncConfigDTO config : configData) { + // 设置查询数据范围 + formDTO.setOrgList(config.getScopeList()); + DataSyncEnum anEnum = DataSyncEnum.getEnum(config.getDataCode()); + dbResiList = getNatUserInfoFromDb(formDTO, pageNo, pageSize); + if (CollectionUtils.isEmpty(dbResiList)) { + continue; + } + switch (anEnum) { + case VACCINE: + try { + //查询正常状态的居民 + yanTaiVaccineByDbViewPartition(dbResiList,config.getCustomerId(),NumConstant.ZERO_STR); + log.info("======vaccine信息拉取结束======"); + } catch (Exception e) { + log.error("vaccine thread execute exception", e); + } + break; + default: + log.warn("没有要处理的数据"); + } + } + pageNo++; + } while (dbResiList != null && dbResiList.size() == pageSize); + } } From f7e96ebfade796cfd77ca44d785d18f6c5d04ea9 Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Fri, 11 Nov 2022 17:09:28 +0800 Subject: [PATCH 05/34] emm --- .../java/com/epmet/service/impl/DataSyncConfigServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java index c01925d3ef..9baed2955c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java @@ -1278,7 +1278,7 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl configData = getConfigData(null, EpidemicConstant.DATA_CODE_VACCINE); if (CollectionUtils.isEmpty(configData)){ - log.warn("vaccineInfoScanTask not exists config data,customer is "+formDTO.getCustomerId()); + log.warn("vaccineInfoScanTask not exists config data "); return; } long count = configData.stream().filter(o -> CollectionUtils.isNotEmpty(o.getScopeList())).count(); From 9064d1ca46449799a325f16defb710c4812f7b5d Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Mon, 14 Nov 2022 10:02:03 +0800 Subject: [PATCH 06/34] =?UTF-8?q?=E7=96=AB=E8=8B=97=E6=8E=A5=E7=A7=8D?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=9C=AC=E5=9C=B0=E5=B1=85=E6=B0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/service/impl/DataSyncConfigServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java index 9baed2955c..803283776a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java @@ -1128,6 +1128,8 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl Date: Mon, 14 Nov 2022 15:08:45 +0800 Subject: [PATCH 07/34] =?UTF-8?q?=E6=9C=AA=E5=81=9A=E6=A0=B8=E9=85=B8?= =?UTF-8?q?=E6=AF=94=E5=AF=B9=EF=BC=8C=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E?= =?UTF-8?q?internalRemark?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java | 5 +++++ .../handler/IcNatCompareRecordExcelImportListener.java | 7 ++++++- .../src/main/resources/mapper/IcNatCompareRecordDao.xml | 3 ++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java index be20e5fa68..4a8c8f2be6 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java @@ -129,4 +129,9 @@ public class IcNatCompareRecordDTO implements Serializable { @ColumnWidth(30) @ExcelProperty("导入组织") private String agencyName; + + /** + * + */ + private String internalRemark; } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java index 531e977ea7..3ebe113874 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java @@ -228,9 +228,14 @@ public class IcNatCompareRecordExcelImportListener implements ReadListener Date: Mon, 14 Nov 2022 15:41:52 +0800 Subject: [PATCH 08/34] =?UTF-8?q?=E6=9C=AA=E5=81=9A=E6=A0=B8=E9=85=B8?= =?UTF-8?q?=E6=AF=94=E5=AF=B9=EF=BC=8C=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E?= =?UTF-8?q?internalRemark?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/handler/IcNatCompareRecordExcelImportListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java index 3ebe113874..3bda1ff40f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java @@ -233,7 +233,7 @@ public class IcNatCompareRecordExcelImportListener implements ReadListener Date: Mon, 14 Nov 2022 15:57:12 +0800 Subject: [PATCH 09/34] zhushi --- .../com/epmet/service/impl/IcNatCompareRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatCompareRecordServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatCompareRecordServiceImpl.java index 503669e07f..1af182250a 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatCompareRecordServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatCompareRecordServiceImpl.java @@ -227,7 +227,7 @@ public class IcNatCompareRecordServiceImpl extends BaseServiceImpl Date: Mon, 14 Nov 2022 17:52:23 +0800 Subject: [PATCH 10/34] LambdaUpdateWrapper --- .../com/epmet/dto/IcNatCompareRecordDTO.java | 2 +- .../entity/IcNatCompareRecordEntity.java | 49 ++++++++++--------- ...IcNatCompareRecordExcelImportListener.java | 11 +++-- .../impl/IcNatCompareRecordServiceImpl.java | 16 +++++- 4 files changed, 48 insertions(+), 30 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java index 4a8c8f2be6..a852edac8e 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java @@ -94,7 +94,7 @@ public class IcNatCompareRecordDTO implements Serializable { * 最近一次核酸时间:接口填入 */ @ColumnWidth(30) - @ExcelProperty("最近一次核酸时间") + @ExcelProperty("最近一次检测时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date latestNatTime; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatCompareRecordEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatCompareRecordEntity.java index 75b18618fe..e87e4c3e3b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatCompareRecordEntity.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcNatCompareRecordEntity.java @@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode; import java.util.Date; + /** * 核酸比对记录 * @@ -21,47 +22,47 @@ public class IcNatCompareRecordEntity extends BaseEpmetEntity { private static final long serialVersionUID = 1L; private String customerId; - /** - * 姓名 - */ + /** + * 姓名 + */ private String name; - /** - * 身份证 - */ + /** + * 身份证 + */ private String idCard; - /** - * 手机号 - */ + /** + * 手机号 + */ private String mobile; - /** - * 是否客户下居民(0:否 1:是) - */ + /** + * 是否客户下居民(0:否 1:是) + */ private String isResiUser; - /** - * 是否客户下居民,ic_resi_user.id - */ + /** + * 是否客户下居民,ic_resi_user.id + */ private String icResiUserId; /** * 最近一次采样时间:接口填入 */ private Date latestCyTime; - /** - * 最近一次核酸时间:接口填入 - */ + /** + * 最近一次核酸时间:接口填入 + */ private Date latestNatTime; - /** - * 检测结果(0:阴性 1:阳性):接口填入 - */ + /** + * 检测结果(0:阴性 1:阳性):接口填入 + */ private String natResult; - /** - * 检测地点:接口填入 - */ + /** + * 检测地点:接口填入 + */ private String natAddress; /** * 联系地址:接口填入 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java index 3bda1ff40f..04238846f5 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/handler/IcNatCompareRecordExcelImportListener.java @@ -171,6 +171,7 @@ public class IcNatCompareRecordExcelImportListener implements ReadListener updateWrapper=new LambdaUpdateWrapper<>(); + updateWrapper.eq(IcNatCompareRecordEntity::getId,origin.getId()); + updateWrapper.set(IcNatCompareRecordEntity::getName, origin.getName()) + .set(IcNatCompareRecordEntity::getMobile, origin.getMobile()) + .set(IcNatCompareRecordEntity::getIsResiUser, origin.getIsResiUser()) + .set(IcNatCompareRecordEntity::getIcResiUserId, origin.getIcResiUserId()) + .set(IcNatCompareRecordEntity::getLatestCyTime, origin.getLatestCyTime()) + .set(IcNatCompareRecordEntity::getLatestNatTime, origin.getLatestNatTime()) + .set(IcNatCompareRecordEntity::getNatResult, origin.getNatResult()) + .set(IcNatCompareRecordEntity::getNatAddress, origin.getNatAddress()) + .set(IcNatCompareRecordEntity::getContactAddress, origin.getContactAddress()) + .set(IcNatCompareRecordEntity::getLatestImportTime, origin.getLatestImportTime()) + .set(IcNatCompareRecordEntity::getInternalRemark, origin.getInternalRemark()); + baseDao.update(null,updateWrapper); IcNatCompareRecRelationEntity existRelationEntity=icNatCompareRecRelationDao.selectExist(data.getCustomerId(),origin.getId(),staffInfo.getAgencyId(),importDate); if(null!=existRelationEntity){ // 是否本社区(agency_id)下居民(0:否 1:是) From aed2a4ce70515bd8484bc1bce87ee2a010172d83 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Mon, 14 Nov 2022 17:56:31 +0800 Subject: [PATCH 11/34] - --- .../java/com/epmet/service/impl/DataSyncConfigServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java index 803283776a..b3a50c4490 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java @@ -1040,9 +1040,11 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl Date: Tue, 15 Nov 2022 10:02:59 +0800 Subject: [PATCH 12/34] =?UTF-8?q?=E5=B1=85=E6=B0=91=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=AF=94=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/result/YtSfhyxxcxdsjjResDTO.java | 39 ++++ .../commons/tools/utils/YtHsResUtils.java | 35 +++ .../epmet/dto/IcResiComparisonRecordDTO.java | 105 +++++++++ .../com/epmet/dto/form/ComparisonFormDTO.java | 33 +++ .../dto/form/ResiComparisonListFormDTO.java | 39 ++++ .../epmet/dto/result/ComparisonResultDTO.java | 20 ++ .../result/ResiComparisonListResultDTO.java | 70 ++++++ .../IcResiComparisonRecordController.java | 136 +++++++++++ .../epmet/dao/IcResiComparisonRecordDao.java | 40 ++++ .../java/com/epmet/dao/IcResiUserDao.java | 3 + .../entity/IcResiComparisonRecordEntity.java | 71 ++++++ .../excel/IcResiComparisonRecordExcel.java | 64 ++++++ .../IcResiComparisonRecordService.java | 24 ++ .../IcResiComparisonRecordServiceImpl.java | 215 ++++++++++++++++++ .../mapper/IcResiComparisonRecordDao.xml | 108 +++++++++ .../main/resources/mapper/IcResiUserDao.xml | 14 ++ 16 files changed, 1016 insertions(+) create mode 100644 epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/YtSfhyxxcxdsjjResDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcResiComparisonRecordDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ComparisonFormDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiComparisonListFormDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ComparisonResultDTO.java create mode 100644 epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiComparisonListResultDTO.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiComparisonRecordController.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiComparisonRecordDao.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiComparisonRecordEntity.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcResiComparisonRecordExcel.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiComparisonRecordService.java create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java create mode 100644 epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/YtSfhyxxcxdsjjResDTO.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/YtSfhyxxcxdsjjResDTO.java new file mode 100644 index 0000000000..8863619d26 --- /dev/null +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/result/YtSfhyxxcxdsjjResDTO.java @@ -0,0 +1,39 @@ +package com.epmet.commons.tools.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + + +/** + * @Description 根据身份证号和姓名查询公安部备案信息 + */ +@NoArgsConstructor +@Data +public class YtSfhyxxcxdsjjResDTO { + private int code = 200; + private String msg = "请求成功"; + /** + * 响应数据 + */ + private YtSfhyxxcxdsjjDetail data; + private int total; + + @Data + public static class YtSfhyxxcxdsjjDetail { + private String status = "000"; + private String statusMsg = "正常返回"; + private String count = "1"; + //结果数量 + private String total; + private List result; + } + @Data + public static class Result { + //身份证号 + private String GMSFHM; + //姓名 + private String XM; + } +} diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YtHsResUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YtHsResUtils.java index 9010c9b84a..371aa8b95b 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YtHsResUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/YtHsResUtils.java @@ -6,6 +6,7 @@ import com.epmet.commons.tools.constant.StrConstant; 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.dto.result.YtSfhyxxcxdsjjResDTO; import com.google.common.util.concurrent.RateLimiter; import lombok.extern.slf4j.Slf4j; @@ -226,6 +227,40 @@ public class YtHsResUtils { return failResult; } + /** + * desc:根据身份证号和姓名查询公安部备案信息 + * + * @return + */ + public static YtSfhyxxcxdsjjResDTO sfhyxxcxdsjj(String gmsfhm, String xm) { + try { + tryAcquire("sfhyxxcxdsjj"); + + Map param = new HashMap<>(); + param.put(APP_KEY, "RhOHlu7Bmkrj8Vk7uGTNNxHqI"); + param.put("gmsfhm", gmsfhm); + param.put("xm", xm); + log.info("sfhyxxcxdsjj api param:{}", param); + + Result result = HttpClientManager.getInstance().sendGet(SERVER_URL + "sfhyxxcxdsjj", param); + log.info("sfhyxxcxdsjj api result:{}", JSON.toJSONString(result)); + if (result.success()) { + String data = result.getData(); + JSONObject jsonObject = JSON.parseObject(data); + if (jsonObject != null && StrConstant.HTTP_STATUS_OK.equals(jsonObject.getString(StrConstant.HTTP_RESP_CODE))) { + return JSON.parseObject(result.getData(), YtSfhyxxcxdsjjResDTO.class); + } else { + log.warn("sfhyxxcxdsjj 烟台公安部居民基础信息调用失败"); + } + } + } catch (Exception e) { + log.error(String.format("烟台公民基本信息查询异常gmsfhm:%s", gmsfhm), e); + } + YtSfhyxxcxdsjjResDTO resultResult = new YtSfhyxxcxdsjjResDTO(); + resultResult.setData(new YtSfhyxxcxdsjjResDTO.YtSfhyxxcxdsjjDetail()); + return resultResult; + } + public static void main(String[] args) { //YtDataSyncResDTO canji = canji("123", "123"); diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcResiComparisonRecordDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcResiComparisonRecordDTO.java new file mode 100644 index 0000000000..b8f092cc4c --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcResiComparisonRecordDTO.java @@ -0,0 +1,105 @@ +package com.epmet.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + + +/** + * 居民信息与公安部信息比对记录表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-11-14 + */ +@Data +public class IcResiComparisonRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * ID + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * ic_resi_user.id【比对时的数据值】 + */ + private String resiId; + + /** + * 数字社区人员姓名【比对时的数据值】 + */ + private String resiName; + + /** + * 数据社区身份证号【比对时的数据值】 + */ + private String resiIdCard; + + /** + * 公安部人员姓名 + */ + private String policeName; + + /** + * 公安部人员证件号 + */ + private String policeIdCard; + + /** + * 数据状态(0:未处理 1:已处理) + */ + private String type; + + /** + * 信息一致性(0:否 1:是 2:-)2代表程序比对了没有匹配上 + */ + private String identical; + + /** + * 是否比对过(0:否 1:是) + */ + private String isComparison; + + /** + * 比对结果说明 + */ + private String comparisonResult; + + /** + * + */ + private Integer delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ComparisonFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ComparisonFormDTO.java new file mode 100644 index 0000000000..53688b39da --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ComparisonFormDTO.java @@ -0,0 +1,33 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +@Data +public class ComparisonFormDTO extends PageFormDTO { + private static final long serialVersionUID = 9156247659994638103L; + public interface Update extends CustomerClientShowGroup { + } + + /** + * 居民Id集合 + */ + private List userIdList; + /** + * 比对记录Id + */ + @NotBlank(message = "比对记录Id不能为空", groups = {Update.class}) + private String comparisonRecordId; + + /** + * token里设置 + */ + private String customerId; + private String userId; + private String agencyId; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiComparisonListFormDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiComparisonListFormDTO.java new file mode 100644 index 0000000000..e16be96134 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ResiComparisonListFormDTO.java @@ -0,0 +1,39 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.dto.form.PageFormDTO; +import lombok.Data; + +/** + * @Description 数据比对列表-接口入参 + * @Author sun + */ +@Data +public class ResiComparisonListFormDTO extends PageFormDTO { + private static final long serialVersionUID = 9156247659994638103L; + + /** + * 信息一致性(0:否 1:是 2:-)2代表程序比对了没有匹配上 + */ + private String identical; + /** + * 数据状态(0:未处理 1:已处理) + */ + private String type; + /** + * 身份证号 + */ + private String idCard; + + private Integer pageNo = 1; + private Integer pageSize = 20; + private Boolean isPage = true; + + + /** + * token里设置 + */ + private String customerId; + private String userId; + private String agencyId; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ComparisonResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ComparisonResultDTO.java new file mode 100644 index 0000000000..9310c125e1 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ComparisonResultDTO.java @@ -0,0 +1,20 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ComparisonResultDTO implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 是否存在异常 + */ + private Boolean result = false; + /** + * 接口反馈说明 + */ + private String resultExplain; + +} diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiComparisonListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiComparisonListResultDTO.java new file mode 100644 index 0000000000..a25b565b80 --- /dev/null +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/ResiComparisonListResultDTO.java @@ -0,0 +1,70 @@ +package com.epmet.dto.result; + +import com.alibaba.excel.annotation.write.style.HeadStyle; +import com.alibaba.excel.enums.poi.FillPatternTypeEnum; +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 数据比对列表-接口返参 + * @Author sun + */ +@Data +public class ResiComparisonListResultDTO implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 比对记录表Id + */ + private String comparisonRecordId; + + /** + * ic_resi_user.id【比对时的数据值】 + */ + private String resiId; + + /** + * 居民库姓名 + */ + private String resiName; + + /** + * 居民库证件号 + */ + private String resiIdCard; + + /** + * 公安部人员姓名 + */ + private String policeName; + + /** + * 公安部人员证件号 + */ + private String policeIdCard; + + /** + * 数据状态(0:未处理 1:已处理) + */ + private String type; + private String typeName; + + /** + * 信息一致性(0:否 1:是 2:-)2代表程序比对了没有匹配上 + */ + private String identical; + private String identicalName; + + /** + * 是否比对过(0:否 1:是) + */ + private String isComparison; + private String isComparisonName; + + /** + * 比对结果说明 + */ + private String comparisonResult; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiComparisonRecordController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiComparisonRecordController.java new file mode 100644 index 0000000000..10b14afe76 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiComparisonRecordController.java @@ -0,0 +1,136 @@ +package com.epmet.controller; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.fastjson.JSON; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.annotation.MaskResponse; +import com.epmet.commons.tools.aop.NoRepeatSubmit; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.feign.ResultDataResolver; +import com.epmet.commons.tools.page.PageData; +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.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.form.ComparisonFormDTO; +import com.epmet.dto.form.ResiComparisonListFormDTO; +import com.epmet.dto.result.ComparisonResultDTO; +import com.epmet.dto.result.ResiComparisonListResultDTO; +import com.epmet.excel.IcResiComparisonRecordExcel; +import com.epmet.service.IcResiComparisonRecordService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Date; +import java.util.List; + + +/** + * 居民信息与公安部信息比对记录表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-11-14 + */ +@Slf4j +@RestController +@RequestMapping("icResiComparisonRecord") +public class IcResiComparisonRecordController implements ResultDataResolver { + + @Autowired + private IcResiComparisonRecordService icResiComparisonRecordService; + + + /** + * @Author sun + * @Description 数据比对列表 + **/ + @PostMapping("resiComparisonList") + @MaskResponse(fieldNames = {"resiIdCard", "policeIdCard"}, fieldsMaskType = {MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD}) + public Result> resiComparisonList(@LoginUser TokenDto tokenDto, @RequestBody ResiComparisonListFormDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + return new Result>().ok(icResiComparisonRecordService.resiComparisonList(formDTO)); + } + + /** + * @Author sun + * @Description 比对、批量比对、组织及下级比对 + **/ + @PostMapping("comparison") + public Result comparison(@LoginUser TokenDto tokenDto, @RequestBody ComparisonFormDTO formDTO) { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + return new Result().ok(icResiComparisonRecordService.comparison(formDTO)); + } + + /** + * @Author sun + * @Description 比对后的更新 + **/ + @PostMapping("comparisonUpdate") + public Result comparisonUpdate(@LoginUser TokenDto tokenDto, @RequestBody ComparisonFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, ComparisonFormDTO.Update.class); + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + icResiComparisonRecordService.comparisonUpdate(formDTO); + return new Result(); + } + + /** + * @Author sun + * @Description 比对记录数据导出 + **/ + @NoRepeatSubmit + @PostMapping("export") + public void export(@LoginUser TokenDto tokenDto, @RequestBody ResiComparisonListFormDTO formDTO, HttpServletResponse response) throws IOException { + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setIsPage(false); + 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), IcResiComparisonRecordExcel.class).build(); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(new FreezeAndFilter()).build(); + PageData data = null; + List list = null; + do { + data = icResiComparisonRecordService.resiComparisonList(formDTO); + list = ConvertUtils.sourceToTarget(data.getList(), IcResiComparisonRecordExcel.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 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(); + } + } + } + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiComparisonRecordDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiComparisonRecordDao.java new file mode 100644 index 0000000000..848067199c --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiComparisonRecordDao.java @@ -0,0 +1,40 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.form.ResiComparisonListFormDTO; +import com.epmet.dto.result.ResiComparisonListResultDTO; +import com.epmet.entity.IcResiComparisonRecordEntity; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 居民信息与公安部信息比对记录表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-11-14 + */ +@Mapper +public interface IcResiComparisonRecordDao extends BaseDao { + + List getResiComparisonList(ResiComparisonListFormDTO formDTO); + + void saveInsert(IcResiComparisonRecordEntity recordEntity); +} \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java index 8caa220af2..762baa4ed5 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiUserDao.java @@ -19,6 +19,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.tools.dto.result.OptionDataResultDTO; +import com.epmet.commons.tools.page.PageData; import com.epmet.dto.IcResiUserConfirmDTO; import com.epmet.dto.IcResiUserDTO; import com.epmet.dto.IcVolunteerPolyDTO; @@ -439,4 +440,6 @@ public interface IcResiUserDao extends BaseDao { * @Date 2022/10/24 15:47 */ ResiAndLocalResiResultDTO getResiCount(@Param("agencyId")String agencyId,@Param("idCard")String idCard,@Param("customerId")String customerId); + + List getResiUserList(ComparisonFormDTO formDTO); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiComparisonRecordEntity.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiComparisonRecordEntity.java new file mode 100644 index 0000000000..ad290f5755 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/entity/IcResiComparisonRecordEntity.java @@ -0,0 +1,71 @@ +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-05-10 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("ic_resi_comparison_record") +public class IcResiComparisonRecordEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * ic_resi_user.id【比对时的数据值】 + */ + private String resiId; + + /** + * 数字社区人员姓名【比对时的数据值】 + */ + private String resiName; + + /** + * 数据社区身份证号【比对时的数据值】 + */ + private String resiIdCard; + + /** + * 公安部人员姓名 + */ + private String policeName; + + /** + * 公安部人员证件号 + */ + private String policeIdCard; + + /** + * 数据状态(0:未处理 1:已处理) + */ + private String type; + + /** + * 信息一致性(0:否 1:是 2:-)2代表程序比对了没有匹配上 + */ + private String identical; + + /** + * 是否比对过(0:否 1:是) + */ + private String isComparison; + + /** + * 比对结果说明 + */ + private String comparisonResult; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcResiComparisonRecordExcel.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcResiComparisonRecordExcel.java new file mode 100644 index 0000000000..2442b95a31 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcResiComparisonRecordExcel.java @@ -0,0 +1,64 @@ +package com.epmet.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.HeadStyle; +import com.alibaba.excel.enums.poi.FillPatternTypeEnum; +import lombok.Data; + +import java.io.Serializable; + +/** + * 比对记录 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-11-14 + */ +@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 44) +@Data +public class IcResiComparisonRecordExcel implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 居民库姓名 + */ + @ExcelProperty(value = "居民库-姓名") + @ColumnWidth(15) + private String resiName; + + /** + * 居民库证件号 + */ + @ExcelProperty(value = "居民库=证件号") + @ColumnWidth(20) + private String resiIdCard; + + /** + * 公安部人员姓名 + */ + @ExcelProperty(value = "公安-姓名") + @ColumnWidth(15) + private String policeName; + + /** + * 公安部人员证件号 + */ + @ExcelProperty(value = "公安-证件号") + @ColumnWidth(20) + private String policeIdCard; + + /** + * 数据状态(0:未处理 1:已处理) + */ + @ExcelProperty(value = "状态") + @ColumnWidth(12) + private String typeName; + + /** + * 信息一致性(0:否 1:是 2:-)2代表程序比对了没有匹配上 + */ + @ExcelProperty(value = "信息一致") + @ColumnWidth(12) + private String identicalName; + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiComparisonRecordService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiComparisonRecordService.java new file mode 100644 index 0000000000..5d846db7d7 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiComparisonRecordService.java @@ -0,0 +1,24 @@ +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.form.ComparisonFormDTO; +import com.epmet.dto.form.ResiComparisonListFormDTO; +import com.epmet.dto.result.ComparisonResultDTO; +import com.epmet.dto.result.ResiComparisonListResultDTO; +import com.epmet.entity.IcResiComparisonRecordEntity; + +/** + * 居民信息与公安部信息比对记录表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-11-14 + */ +public interface IcResiComparisonRecordService extends BaseService { + + PageData resiComparisonList(ResiComparisonListFormDTO formDTO); + + ComparisonResultDTO comparison(ComparisonFormDTO formDTO); + + void comparisonUpdate(ComparisonFormDTO formDTO); +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java new file mode 100644 index 0000000000..37f3427ac3 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java @@ -0,0 +1,215 @@ +package com.epmet.service.impl; + +import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; +import com.epmet.commons.tools.dto.result.YtSfhyxxcxdsjjResDTO; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.feign.ResultDataResolver; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.redis.common.CustomerStaffRedis; +import com.epmet.commons.tools.utils.YtHsResUtils; +import com.epmet.dao.IcResiComparisonRecordDao; +import com.epmet.dao.IcResiUserDao; +import com.epmet.dto.IcResiUserDTO; +import com.epmet.dto.form.ComparisonFormDTO; +import com.epmet.dto.form.ResiComparisonListFormDTO; +import com.epmet.dto.result.ComparisonResultDTO; +import com.epmet.dto.result.ResiComparisonListResultDTO; +import com.epmet.entity.IcResiComparisonRecordEntity; +import com.epmet.entity.IcResiUserEntity; +import com.epmet.service.IcResiComparisonRecordService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +/** + * 居民信息与公安部信息比对记录表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2022-11-14 + */ +@Service +@Slf4j +public class IcResiComparisonRecordServiceImpl extends BaseServiceImpl implements IcResiComparisonRecordService, ResultDataResolver { + @Autowired + private IcResiUserDao icResiUserDao; + + + @Override + public PageData resiComparisonList(ResiComparisonListFormDTO formDTO) { + //1.获取工作人员信息 + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == staffInfo) { + throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", formDTO.getUserId())); + } + formDTO.setAgencyId(staffInfo.getAgencyId()); + //2.按条件分页查询数据s + PageInfo data = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()) + .doSelectPageInfo(() -> baseDao.getResiComparisonList(formDTO)); + + return new PageData(data.getList(), data.getTotal()); + } + + /** + * @Author sun + * @Description 比对、批量比对、组织及下级比对 + **/ + @Override + public ComparisonResultDTO comparison(ComparisonFormDTO formDTO) { + ComparisonResultDTO resultDTO = new ComparisonResultDTO(); + //1.获取工作人员信息 + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); + if (null == staffInfo) { + throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", formDTO.getUserId())); + } + formDTO.setAgencyId(staffInfo.getAgencyId()); + //2.判断是单条比对的则直接处理 + if (formDTO.getUserIdList().size() == 1) { + IcResiUserEntity entity = icResiUserDao.selectById(formDTO.getUserIdList().get(NumConstant.ZERO)); + if (null == entity) { + resultDTO.setResult(true); + resultDTO.setResultExplain("未查询到居民信息"); + return resultDTO; + } + IcResiComparisonRecordEntity recordEntity = new IcResiComparisonRecordEntity(); + recordEntity.setCustomerId(entity.getCustomerId()); + recordEntity.setResiId(entity.getId()); + recordEntity.setResiName(entity.getName()); + recordEntity.setResiIdCard(entity.getIdCard()); + recordEntity.setIsComparison("1"); + YtSfhyxxcxdsjjResDTO sfhyxxcxdsjjResult = YtHsResUtils.sfhyxxcxdsjj(entity.getIdCard(), entity.getName()); + /*YtSfhyxxcxdsjjResDTO sfhyxxcxdsjjResult = new YtSfhyxxcxdsjjResDTO(); + YtSfhyxxcxdsjjResDTO.YtSfhyxxcxdsjjDetail f = new YtSfhyxxcxdsjjResDTO.YtSfhyxxcxdsjjDetail(); + List l = new ArrayList<>(); + YtSfhyxxcxdsjjResDTO.Result d = new YtSfhyxxcxdsjjResDTO.Result(); + d.setGMSFHM("371424188808087654"); + d.setXM("小二"); + l.add(d); + f.setResult(l); + sfhyxxcxdsjjResult.setData(f);*/ + if (sfhyxxcxdsjjResult.getCode() != 200) { + recordEntity.setComparisonResult("公安部接口调用失败"); + resultDTO.setResult(true); + resultDTO.setResultExplain("公安部接口调用失败"); + return resultDTO; + } else { + //数据已处理 + recordEntity.setType("1"); + //公安部不存在的数据 + if (CollectionUtils.isEmpty(sfhyxxcxdsjjResult.getData().getResult())) { + recordEntity.setComparisonResult("公安部身份证号对应数据不存在"); + //代表程序干活了 + recordEntity.setIdentical("2"); + resultDTO.setResult(true); + resultDTO.setResultExplain("公安部身份证号对应数据不存在"); + } else {//在公安部查询到了数据 + recordEntity.setPoliceName(sfhyxxcxdsjjResult.getData().getResult().get(0).getXM()); + recordEntity.setPoliceIdCard(sfhyxxcxdsjjResult.getData().getResult().get(0).getGMSFHM()); + //公安部跟居民库姓名不一致 + if (!entity.getName().equals(sfhyxxcxdsjjResult.getData().getResult().get(0).getXM())) { + recordEntity.setIdentical("0"); + recordEntity.setComparisonResult("公安部与居民库姓名不相同"); + resultDTO.setResult(true); + resultDTO.setResultExplain("公安部与居民库姓名不相同"); + } else { + recordEntity.setIdentical("1"); + } + } + } + recordEntity.setCreatedBy(formDTO.getUserId()); + recordEntity.setUpdatedBy(formDTO.getUserId()); + baseDao.saveInsert(recordEntity); + return resultDTO; + } + //3.判断多条比对则开启子线程执行 + if (CollectionUtils.isEmpty(formDTO.getUserIdList()) || formDTO.getUserIdList().size() > NumConstant.ONE) { + asyncComparison(formDTO); + resultDTO.setResult(true); + resultDTO.setResultExplain("数据比对中请稍后"); + return resultDTO; + } + return resultDTO; + } + + /** + * @Author sun + * @Description 线程逐条比对居民信息 + **/ + @Async + public void asyncComparison(ComparisonFormDTO formDTO) { + PageData data = null; + formDTO.setIsPage(false); + formDTO.setPageSize(NumConstant.ONE_THOUSAND); + int pageNo = formDTO.getPageNo(); + do { + data = getResiUserList(formDTO); + data.getList().forEach(o -> { + IcResiComparisonRecordEntity recordEntity = new IcResiComparisonRecordEntity(); + recordEntity.setCustomerId(o.getCustomerId()); + recordEntity.setResiId(o.getId()); + recordEntity.setResiName(o.getName()); + recordEntity.setResiIdCard(o.getIdCard()); + recordEntity.setIsComparison("1"); + YtSfhyxxcxdsjjResDTO sfhyxxcxdsjjResult = YtHsResUtils.sfhyxxcxdsjj(o.getIdCard(), o.getName()); + if (sfhyxxcxdsjjResult.getCode() != 200) { + recordEntity.setComparisonResult("接口调用失败"); + } else { + //数据已处理 + recordEntity.setType("1"); + //公安部不存在的数据 + if (CollectionUtils.isEmpty(sfhyxxcxdsjjResult.getData().getResult())) { + recordEntity.setComparisonResult("公安部身份证号对应数据不存在"); + //代表程序干活了 + recordEntity.setIdentical("2"); + } else {//在公安部查询到了数据 + recordEntity.setPoliceName(sfhyxxcxdsjjResult.getData().getResult().get(0).getXM()); + recordEntity.setPoliceIdCard(sfhyxxcxdsjjResult.getData().getResult().get(0).getGMSFHM()); + //公安部跟居民库姓名不一致 + if (!o.getName().equals(sfhyxxcxdsjjResult.getData().getResult().get(0).getXM())) { + recordEntity.setIdentical("0"); + recordEntity.setComparisonResult("公安部与居民库姓名不相同"); + } else { + recordEntity.setIdentical("1"); + } + } + } + recordEntity.setCreatedBy(formDTO.getUserId()); + recordEntity.setUpdatedBy(formDTO.getUserId()); + baseDao.saveInsert(recordEntity); + }); + formDTO.setPageNo(++pageNo); + } while (CollectionUtils.isNotEmpty(data.getList()) && data.getList().size() == formDTO.getPageSize()); + } + + private PageData getResiUserList(ComparisonFormDTO formDTO) { + PageInfo data = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()) + .doSelectPageInfo(() -> icResiUserDao.getResiUserList(formDTO)); + return new PageData(data.getList(), data.getTotal()); + } + + /** + * @Author sun + * @Description 比对后的更新 + **/ + @Override + public void comparisonUpdate(ComparisonFormDTO formDTO) { + //1.查询比对记录表数据 + IcResiComparisonRecordEntity entity = baseDao.selectById(formDTO.getComparisonRecordId()); + if (null == entity) { + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "未查询到对应比对记录数据", "未查询到对应比对记录数据"); + } + //2.根据居民信息表数据 + IcResiUserEntity resiUserEntity = new IcResiUserEntity(); + resiUserEntity.setId(entity.getResiId()); + resiUserEntity.setName(entity.getPoliceName()); + icResiUserDao.updateById(resiUserEntity); + } + + +} diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml new file mode 100644 index 0000000000..584f234505 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml @@ -0,0 +1,108 @@ + + + + + + + + SELECT replace(uuid(),'-','') AS ID + + INSERT INTO ic_resi_comparison_record + ( + id, + customer_id, + resi_id, + resi_name, + resi_id_card, + police_name, + police_id_card, + `type`, + identical, + is_comparison, + comparison_result, + del_flag, + revision, + created_by, + created_time, + updated_by, + updated_time + ) VALUE ( + #{id}, + #{customerId}, + #{resiId}, + #{resiName}, + #{resiIdCard}, + #{policeName}, + #{policeIdCard}, + #{type}, + #{identical}, + #{isComparison}, + #{comparisonResult}, + 0, + 0, + #{createdBy}, + now(), + #{createdBy}, + now() + ) ON DUPLICATE KEY UPDATE + resi_name = values(resi_name), + resi_id_card = values(resi_id_card), + police_name = values(police_name), + police_id_card = values(police_id_card), + `type` = values(`type`), + identical = values(identical), + is_comparison = values(is_comparison), + comparison_result = values(comparison_result), + updated_time = NOW(), + updated_by = #{updatedBy} + + + + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index 9c48f39c2f..a86af22468 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -1402,4 +1402,18 @@ AND ID_CARD = #{idCard} + + From 876a8e465a3ded93bb271d287ac87edee7a27367 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Nov 2022 10:36:46 +0800 Subject: [PATCH 13/34] =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/IcResiComparisonRecordServiceImpl.java | 4 ++-- .../src/main/resources/mapper/IcResiUserDao.xml | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java index 37f3427ac3..02c856d326 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java @@ -93,7 +93,7 @@ public class IcResiComparisonRecordServiceImpl extends BaseServiceImpl + + #{id} + + order by pids ASC, created_time DESC From 40b433e282a0898b5c18cdd84d549f52e17d5dd0 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 15 Nov 2022 11:17:39 +0800 Subject: [PATCH 14/34] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=89=94=E9=99=A4inter?= =?UTF-8?q?nalRemark?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java index a852edac8e..653d8944ab 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcNatCompareRecordDTO.java @@ -131,7 +131,8 @@ public class IcNatCompareRecordDTO implements Serializable { private String agencyName; /** - * + * 内部备注,开发人员用 */ + @ExcelIgnore private String internalRemark; } \ No newline at end of file From 1d2b7b3f4b60ca67515f8342b263c5eb92a7cecb Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Nov 2022 11:50:25 +0800 Subject: [PATCH 15/34] =?UTF-8?q?=E8=B5=8B=E9=BB=98=E8=AE=A4=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/IcResiComparisonRecordDao.xml | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml index 584f234505..ff9e7a7fb1 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml @@ -60,18 +60,18 @@ From b787f42c57905fd5612085a038e5e0bd8f2b6b8f Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 15 Nov 2022 13:37:55 +0800 Subject: [PATCH 17/34] =?UTF-8?q?natInfoSyncButton=E6=94=B9=E4=B8=BAsubmit?= =?UTF-8?q?SyncJob=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/controller/DataSyncConfigController.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java index 948471cbe3..afaf67391b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java @@ -124,8 +124,16 @@ public class DataSyncConfigController { return new Result(); } - @PostMapping("natInfoSyncButton") - public Result natInfoSyncButton(@RequestBody DataSyncTaskParam formDTO, @LoginUser TokenDto tokenDto){ + /** + * 提交同步任务(核酸,疫苗,身份一致性验证) + * @author wxz + * @date 2022/11/15 下午1:37 + * @param formDTO + * @param tokenDto + * @return Result + */ + @PostMapping("submitSyncJob") + public Result submitSyncJob(@RequestBody DataSyncTaskParam formDTO, @LoginUser TokenDto tokenDto){ formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setStaffId(tokenDto.getUserId()); dataSyncConfigService.natInfoSyncButton(formDTO); From f48f1c6112f8c36ebd1390ab72f5c9bea126dd43 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 15 Nov 2022 13:39:50 +0800 Subject: [PATCH 18/34] =?UTF-8?q?natInfoSyncButton=E6=94=B9=E4=B8=BAsubmit?= =?UTF-8?q?SyncJob=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/controller/DataSyncConfigController.java | 2 +- .../src/main/java/com/epmet/service/DataSyncConfigService.java | 2 +- .../java/com/epmet/service/impl/DataSyncConfigServiceImpl.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java index afaf67391b..737bf81727 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/DataSyncConfigController.java @@ -136,7 +136,7 @@ public class DataSyncConfigController { public Result submitSyncJob(@RequestBody DataSyncTaskParam formDTO, @LoginUser TokenDto tokenDto){ formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setStaffId(tokenDto.getUserId()); - dataSyncConfigService.natInfoSyncButton(formDTO); + dataSyncConfigService.submitSyncJob(formDTO); return new Result(); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java index b4d80051da..300128bc4d 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/DataSyncConfigService.java @@ -112,7 +112,7 @@ public interface DataSyncConfigService extends BaseService */ void natInfoScanTask(DataSyncTaskParam formDTO); - void natInfoSyncButton(DataSyncTaskParam formDTO); + void submitSyncJob(DataSyncTaskParam formDTO); List getNatUserInfoFromDb(DataSyncTaskParam formDTO, int pageNo, int pageSize); diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java index b3a50c4490..79fd952139 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java @@ -411,7 +411,7 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl Date: Tue, 15 Nov 2022 13:44:11 +0800 Subject: [PATCH 19/34] =?UTF-8?q?=E6=A0=B8=E9=85=B8=E6=AF=94=E5=AF=B9?= =?UTF-8?q?=EF=BC=8C=E5=85=B3=E7=B3=BB=E8=A1=A8=E6=94=B9=E4=B8=BA=20agency?= =?UTF-8?q?=5Fid+compare=5Frec=5Fid=E5=94=AF=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/impl/IcNatCompareRecordServiceImpl.java | 4 +++- .../src/main/resources/mapper/IcNatCompareRecRelationDao.xml | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatCompareRecordServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatCompareRecordServiceImpl.java index 38bde062d2..47efdc1980 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatCompareRecordServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatCompareRecordServiceImpl.java @@ -285,7 +285,8 @@ public class IcNatCompareRecordServiceImpl extends BaseServiceImpl AND r.IMPORT_DATE = #{importDate} + \ No newline at end of file From 0f95e7f1d42922fa625ab634676185b43602228e Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Tue, 15 Nov 2022 13:50:40 +0800 Subject: [PATCH 20/34] =?UTF-8?q?=E6=A0=B8=E9=85=B8=E6=AF=94=E5=AF=B9?= =?UTF-8?q?=EF=BC=8C=E5=85=B3=E7=B3=BB=E8=A1=A8=E6=94=B9=E4=B8=BA=20agency?= =?UTF-8?q?=5Fid+compare=5Frec=5Fid=E5=94=AF=E4=B8=802?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/service/impl/IcNatCompareRecordServiceImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatCompareRecordServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatCompareRecordServiceImpl.java index 47efdc1980..18071df16c 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatCompareRecordServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcNatCompareRecordServiceImpl.java @@ -300,6 +300,8 @@ public class IcNatCompareRecordServiceImpl extends BaseServiceImpl Date: Tue, 15 Nov 2022 15:00:15 +0800 Subject: [PATCH 21/34] =?UTF-8?q?=E6=94=B9=E6=88=90=E6=9F=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/epmet/dto/YTVaccineListDTO.java | 2 +- .../impl/DataSyncConfigServiceImpl.java | 64 +++++++++++++------ .../main/resources/mapper/IcVaccineDao.xml | 2 +- 3 files changed, 48 insertions(+), 20 deletions(-) diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/YTVaccineListDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/YTVaccineListDTO.java index 94b2b30418..2950cd00c0 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/YTVaccineListDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/YTVaccineListDTO.java @@ -12,7 +12,7 @@ import java.io.Serializable; public class YTVaccineListDTO implements Serializable { private static final long serialVersionUID = -5583350277850076659L; - private String idCard; + private String cardno; /** * 接种时间 diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java index 79fd952139..438f0d80c7 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/DataSyncConfigServiceImpl.java @@ -1072,30 +1072,58 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl> vaccineList = new ArrayList<>();/*yantaiNamedParamLantuJdbcTemplate.queryForList( - "select id, name,card_no, create_time from hscyxxb where card_no in (:idcards)", args);*/ - Map m = new HashMap<>(); - vaccineList.add(m); +// List vaccineList = JSON.parseArray(json,Map.class); + List> vaccineList = yantaiNamedParamLantuJdbcTemplate.queryForList( + "select data, name, card_no, vaccineCount from t_ymjz_info where card_no in (:idcards)", args); + List ytVaccineListDTOS = new ArrayList<>(); if (CollectionUtils.isNotEmpty(vaccineList)) { + vaccineList.forEach(v -> { + if (v.containsKey("data")){ + Map data = (Map) v.get("data"); + if (data.containsKey("vaccineList")){ + List vaccineList1 = JSON.parseArray(data.get("vaccineList").toString(), YTVaccineListDTO.class); + vaccineList1.forEach(v1 -> { + v1.setCardno(v.get("cardno").toString()); + }); + ytVaccineListDTOS.addAll(vaccineList1); + } + } + }); List entities = new ArrayList<>(); -// List ytVaccineListDTOS = ConvertUtils.sourceToTarget(vaccineList, YTVaccineListDTO.class); - List ytVaccineListDTOS = JSON.parseArray(json,YTVaccineListDTO.class); List existVaccine = icVaccineDao.getExistVaccine(ytVaccineListDTOS); if (CollectionUtils.isNotEmpty(existVaccine)){ for (YTVaccineListDTO e : existVaccine) { for (int i = 0; i < ytVaccineListDTOS.size(); i++) { - if (ytVaccineListDTOS.get(i).getIdCard().equals(e.getIdCard()) && ytVaccineListDTOS.get(i).getInoculateDate().equals(e.getInoculateDate())){ + if (ytVaccineListDTOS.get(i).getCardno().equals(e.getCardno()) && ytVaccineListDTOS.get(i).getInoculateDate().equals(e.getInoculateDate())){ ytVaccineListDTOS.remove(i); } } @@ -1104,7 +1132,7 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl { resiInfos.forEach(u -> { - if (v.getIdCard().equals(u.getIdCard())){ + if (v.getCardno().equals(u.getIdCard())){ IcVaccineEntity e = new IcVaccineEntity(); e.setCustomerId(customerId); e.setName(u.getName()); diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcVaccineDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcVaccineDao.xml index 458a917ab6..319d7b959a 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcVaccineDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcVaccineDao.xml @@ -236,7 +236,7 @@ WHERE DEL_FLAG = '0' AND ( - (ID_CARD = #{l.idCard} AND DATE_FORMAT(INOCULATE_TIME, '%Y-%m-%d %H:%i') = #{l.inoculateDate}) + (ID_CARD = #{l.cardno} AND DATE_FORMAT(INOCULATE_TIME, '%Y-%m-%d %H:%i') = #{l.inoculateDate}) ) From 1a3403afb8a1306a1d14c35878b32262fb5eac74 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Nov 2022 15:22:42 +0800 Subject: [PATCH 22/34] =?UTF-8?q?=E6=AF=94=E5=AF=B9=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=BC=82=E6=AD=A5=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/epmet/constant/EpidemicConstant.java | 1 + .../epmet/dao/IcResiComparisonRecordDao.java | 6 +- .../YanTaiComparisonSyncProcessor.java | 118 +++++++++++++++ .../IcResiComparisonRecordService.java | 3 + .../IcResiComparisonRecordServiceImpl.java | 139 +++++++++++++++++- .../mapper/IcResiComparisonRecordDao.xml | 89 ++++++----- .../main/resources/mapper/IcResiUserDao.xml | 20 +-- 7 files changed, 325 insertions(+), 51 deletions(-) create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/processor/YanTaiComparisonSyncProcessor.java diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/EpidemicConstant.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/EpidemicConstant.java index e2817f165c..edd9d1a695 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/EpidemicConstant.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/constant/EpidemicConstant.java @@ -21,6 +21,7 @@ public interface EpidemicConstant { */ String JOB_TYPE_NAT = "nat"; String JOB_TYPE_VACCINE = "vaccine"; + String JOB_TYPE_COMPARISON = "comparison"; String OPERATION_STATUS_WAITING = "waiting"; String OPERATION_STATUS_PROCESSING = "processing"; diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiComparisonRecordDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiComparisonRecordDao.java index 848067199c..5eb830e9bf 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiComparisonRecordDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/IcResiComparisonRecordDao.java @@ -18,10 +18,12 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.form.ComparisonFormDTO; import com.epmet.dto.form.ResiComparisonListFormDTO; import com.epmet.dto.result.ResiComparisonListResultDTO; import com.epmet.entity.IcResiComparisonRecordEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -36,5 +38,7 @@ public interface IcResiComparisonRecordDao extends BaseDao getResiComparisonList(ResiComparisonListFormDTO formDTO); - void saveInsert(IcResiComparisonRecordEntity recordEntity); + void saveInsert(@Param("list") List recordEntity); + + List getComparisonList(ComparisonFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/processor/YanTaiComparisonSyncProcessor.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/processor/YanTaiComparisonSyncProcessor.java new file mode 100644 index 0000000000..cc07aafab2 --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/processor/YanTaiComparisonSyncProcessor.java @@ -0,0 +1,118 @@ +package com.epmet.processor; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.epmet.commons.tools.distributedlock.DistributedLock; +import com.epmet.commons.tools.exception.ExceptionUtils; +import com.epmet.commons.tools.redis.RedisUtils; +import com.epmet.constant.EpidemicConstant; +import com.epmet.dao.IcSyncJobDao; +import com.epmet.entity.IcSyncJobEntity; +import com.epmet.service.DataSyncConfigService; +import com.epmet.service.IcResiComparisonRecordService; +import lombok.extern.slf4j.Slf4j; +import org.redisson.api.RLock; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.TimeUnit; + +import static com.epmet.constant.EpidemicConstant.JOB_TYPE_NAT; + +// 烟台数据比对 +@Component +@Slf4j +public class YanTaiComparisonSyncProcessor { + + public static final int MAX_EXECUTING_COUNT = 3; + + @Autowired + private ExecutorService executorService; + + @Autowired + private IcSyncJobDao icSyncJobDao; + + @Autowired + private IcResiComparisonRecordService icResiComparisonRecordService; + + @Autowired + private DistributedLock distributedLock; + + @Autowired + RedisUtils redisUtils; + + /** + * 定时扫描和执行同步任务 + * 10s扫一次库 + */ + @Scheduled(cron = "0/10 * * * * ? ") + public void scanJobs() { + //log.info("【异步数据更新】开始同步任务"); + + LambdaQueryWrapper executingListQuery = new LambdaQueryWrapper<>(); + executingListQuery.eq(IcSyncJobEntity::getOperationStatus, EpidemicConstant.OPERATION_STATUS_PROCESSING); + List executingJobList = icSyncJobDao.selectList(executingListQuery); + + if (!CollectionUtils.isEmpty(executingJobList) && executingJobList.size() >= MAX_EXECUTING_COUNT) { + // 最多只允许同时3条线程运行 + return; + } + + int executingCount = executingJobList.size(); + // 还可以运行几条线程 + int leftCount = MAX_EXECUTING_COUNT - executingCount; + + RLock lock = null; + try { + lock = distributedLock.getLock("data:sync:" + "comparison", 60L, 60L, TimeUnit.SECONDS); + // 查询可执行的任务列表,并且异步执行 + List icSyncJobToExec = icSyncJobDao.selectExecutableJobList( + EpidemicConstant.JOB_TYPE_COMPARISON, + leftCount); + + if (!CollectionUtils.isEmpty(icSyncJobToExec)) { + // 异步提交任务 + for (IcSyncJobEntity jobEntity : icSyncJobToExec) { + + updateJobStatus(jobEntity.getId(), EpidemicConstant.OPERATION_STATUS_PROCESSING); + executorService.submit(() -> { + // 将此任务状态修改为执行中 + + try { + icResiComparisonRecordService.comparisonUserData(jobEntity); + } finally { + // 更新任务状态为结束 + updateJobStatus(jobEntity.getId(), EpidemicConstant.OPERATION_STATUS_FINISH); + } + + }); + } + } + } catch (Exception e) { + log.error("【异步数据更新】出错:{}", ExceptionUtils.getErrorStackTrace(e)); + } finally { + if (lock != null) { + lock.unlock(); + } + } + } + + /** + * 更新任务状态 + * @param id + * @param status + + */ + private void updateJobStatus(String id, String status) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(IcSyncJobEntity::getId, id); + + IcSyncJobEntity updateEntity = new IcSyncJobEntity(); + updateEntity.setOperationStatus(status); + icSyncJobDao.update(updateEntity, query); + } + +} diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiComparisonRecordService.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiComparisonRecordService.java index 5d846db7d7..fe49e4e884 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiComparisonRecordService.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiComparisonRecordService.java @@ -7,6 +7,7 @@ import com.epmet.dto.form.ResiComparisonListFormDTO; import com.epmet.dto.result.ComparisonResultDTO; import com.epmet.dto.result.ResiComparisonListResultDTO; import com.epmet.entity.IcResiComparisonRecordEntity; +import com.epmet.entity.IcSyncJobEntity; /** * 居民信息与公安部信息比对记录表 @@ -20,5 +21,7 @@ public interface IcResiComparisonRecordService extends BaseService implements IcResiComparisonRecordService, ResultDataResolver { @Autowired private IcResiUserDao icResiUserDao; + @Autowired + private IcSyncJobDao icSyncJobDao; @Override @@ -77,6 +92,7 @@ public class IcResiComparisonRecordServiceImpl extends BaseServiceImpl list = new ArrayList<>(); IcResiComparisonRecordEntity recordEntity = new IcResiComparisonRecordEntity(); recordEntity.setCustomerId(entity.getCustomerId()); recordEntity.setResiId(entity.getId()); @@ -124,12 +140,15 @@ public class IcResiComparisonRecordServiceImpl extends BaseServiceImpl NumConstant.ONE) { - asyncComparison(formDTO); + //asyncComparison(formDTO); + saveComparison(formDTO); + saveJob(formDTO); resultDTO.setResult(true); resultDTO.setResultExplain("数据比对中请稍后"); return resultDTO; @@ -149,6 +168,7 @@ public class IcResiComparisonRecordServiceImpl extends BaseServiceImpl list = new ArrayList<>(); data.getList().forEach(o -> { IcResiComparisonRecordEntity recordEntity = new IcResiComparisonRecordEntity(); recordEntity.setCustomerId(o.getCustomerId()); @@ -181,11 +201,124 @@ public class IcResiComparisonRecordServiceImpl extends BaseServiceImpl data = null; + formDTO.setIsPage(false); + formDTO.setPageSize(NumConstant.ONE_THOUSAND); + int pageNo = formDTO.getPageNo(); + do { + data = getResiUserList(formDTO); + List list = new ArrayList<>(); + data.getList().forEach(o -> { + IcResiComparisonRecordEntity recordEntity = new IcResiComparisonRecordEntity(); + recordEntity.setCustomerId(o.getCustomerId()); + recordEntity.setResiId(o.getId()); + recordEntity.setResiName(o.getName()); + recordEntity.setResiIdCard(o.getIdCard()); + recordEntity.setType("0"); + recordEntity.setIdentical("0"); + recordEntity.setIsComparison("0"); + list.add(recordEntity); + }); + insertBatch(list); + formDTO.setPageNo(++pageNo); + } while (CollectionUtils.isNotEmpty(data.getList()) && data.getList().size() == formDTO.getPageSize()); + } + + public void saveJob(ComparisonFormDTO formDTO) { + AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(formDTO.getAgencyId()); + if (null == agencyInfo) { + throw new EpmetException("未查询到组织信息:" + formDTO.getAgencyId()); + } + + // 查询该组织是否存在等待中或者进行中的任务 + LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); + qw.eq(IcSyncJobEntity::getOrgId, formDTO.getAgencyId()) + .eq(IcSyncJobEntity::getJobType, EpidemicConstant.JOB_TYPE_COMPARISON) + .in(IcSyncJobEntity::getOperationStatus, OPERATION_STATUS_WAITING, OPERATION_STATUS_PROCESSING); + List icSyncJobEntities = icSyncJobDao.selectList(qw); + // 当前组织下存在同步任务 + if (CollectionUtils.isNotEmpty(icSyncJobEntities)) { + throw new EpmetException(EpmetErrorCode.EXIST_SYNC_JOB_ERROR.getCode()); + } + + // 不存在新增一条记录 + IcSyncJobEntity e = new IcSyncJobEntity(); + e.setCustomerId(formDTO.getCustomerId()); + e.setOrgId(formDTO.getAgencyId()); + e.setPid(agencyInfo.getPid()); + e.setOrgIdPath(StringUtils.isBlank(agencyInfo.getPids()) ? agencyInfo.getId() : agencyInfo.getPids() + ":" + agencyInfo.getId()); + e.setJobType(EpidemicConstant.JOB_TYPE_COMPARISON); + e.setOperatorId(formDTO.getUserId()); + e.setOperationStatus(OPERATION_STATUS_WAITING); + icSyncJobDao.insert(e); + } + @Override + public void comparisonUserData(IcSyncJobEntity jobEntity) { + ComparisonFormDTO formDTO = new ComparisonFormDTO(); + PageData data = null; + formDTO.setIsPage(false); + formDTO.setPageSize(NumConstant.ONE_THOUSAND); + int pageNo = NumConstant.ONE; + do { + data = getComparisonList(formDTO); + data.getList().forEach(o -> { + o.setIsComparison("1"); + YtSfhyxxcxdsjjResDTO sfhyxxcxdsjjResult = YtHsResUtils.sfhyxxcxdsjj(o.getResiIdCard(), o.getResiName()); + /*YtSfhyxxcxdsjjResDTO sfhyxxcxdsjjResult = new YtSfhyxxcxdsjjResDTO(); + YtSfhyxxcxdsjjResDTO.YtSfhyxxcxdsjjDetail f = new YtSfhyxxcxdsjjResDTO.YtSfhyxxcxdsjjDetail(); + List l = new ArrayList<>(); + YtSfhyxxcxdsjjResDTO.Result d = new YtSfhyxxcxdsjjResDTO.Result(); + d.setGMSFHM("371424188808087654"); + d.setXM("小二"); + l.add(d); + f.setResult(l); + sfhyxxcxdsjjResult.setData(f);*/ + if (null == sfhyxxcxdsjjResult || sfhyxxcxdsjjResult.getCode() != 200) { + o.setComparisonResult("接口调用失败"); + } else { + //数据已处理 + o.setType("1"); + //公安部不存在的数据 + if (CollectionUtils.isEmpty(sfhyxxcxdsjjResult.getData().getResult())) { + o.setComparisonResult("公安部身份证号对应数据不存在"); + //代表程序干活了 + o.setIdentical("2"); + } else {//在公安部查询到了数据 + o.setPoliceName(sfhyxxcxdsjjResult.getData().getResult().get(0).getXM()); + o.setPoliceIdCard(sfhyxxcxdsjjResult.getData().getResult().get(0).getGMSFHM()); + //公安部跟居民库姓名不一致 + if (!o.getResiName().equals(sfhyxxcxdsjjResult.getData().getResult().get(0).getXM())) { + o.setIdentical("0"); + o.setComparisonResult("公安部与居民库姓名不相同"); + } else { + o.setIdentical("1"); + } + } + } + o.setCreatedBy(formDTO.getUserId()); + o.setUpdatedBy(formDTO.getUserId()); }); + baseDao.saveInsert(data.getList()); formDTO.setPageNo(++pageNo); } while (CollectionUtils.isNotEmpty(data.getList()) && data.getList().size() == formDTO.getPageSize()); } + private PageData getComparisonList(ComparisonFormDTO formDTO) { + PageInfo data = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()) + .doSelectPageInfo(() -> baseDao.getComparisonList(formDTO)); + return new PageData(data.getList(), data.getTotal()); + } private PageData getResiUserList(ComparisonFormDTO formDTO) { PageInfo data = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()) diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml index a4b098bb07..bb438e5500 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml @@ -3,10 +3,7 @@ - - - SELECT replace(uuid(),'-','') AS ID - + INSERT INTO ic_resi_comparison_record ( id, @@ -26,25 +23,30 @@ created_time, updated_by, updated_time - ) VALUE ( - #{id}, - #{customerId}, - #{resiId}, - #{resiName}, - #{resiIdCard}, - #{policeName}, - #{policeIdCard}, - #{type}, - #{identical}, - #{isComparison}, - #{comparisonResult}, + ) VALUE + + ( + REPLACE(UUID(), '-', ''), + #{i.customerId}, + #{i.resiId}, + #{i.resiName}, + #{i.resiIdCard}, + #{i.policeName}, + #{i.policeIdCard}, + #{i.type}, + #{i.identical}, + #{i.isComparison}, + #{i.comparisonResult}, 0, 0, - #{createdBy}, + #{i.createdBy}, now(), - #{createdBy}, + #{i.createdBy}, now() - ) ON DUPLICATE KEY UPDATE + ) + + ON DUPLICATE KEY + UPDATE resi_name = values(resi_name), resi_id_card = values(resi_id_card), police_name = values(police_name), @@ -54,33 +56,27 @@ is_comparison = values(is_comparison), comparison_result = values(comparison_result), updated_time = NOW(), - updated_by = #{updatedBy} + updated_by = values(updated_by) + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml index 5a5f1bafbf..c65e178660 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiUserDao.xml @@ -1404,21 +1404,23 @@ From cc08fcbb8ede035326e87d02e9497a25d268dea8 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Nov 2022 15:39:24 +0800 Subject: [PATCH 23/34] =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/IcResiComparisonRecordExcel.java | 2 +- .../V0.0.88__ic_resi_comparison_record.sql | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.88__ic_resi_comparison_record.sql diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcResiComparisonRecordExcel.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcResiComparisonRecordExcel.java index 2442b95a31..8bdf68cb39 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcResiComparisonRecordExcel.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/excel/IcResiComparisonRecordExcel.java @@ -29,7 +29,7 @@ public class IcResiComparisonRecordExcel implements Serializable { /** * 居民库证件号 */ - @ExcelProperty(value = "居民库=证件号") + @ExcelProperty(value = "居民库-证件号") @ColumnWidth(20) private String resiIdCard; diff --git a/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.88__ic_resi_comparison_record.sql b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.88__ic_resi_comparison_record.sql new file mode 100644 index 0000000000..3e05ced2fc --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/resources/db/migration/V0.0.88__ic_resi_comparison_record.sql @@ -0,0 +1,21 @@ +CREATE TABLE `ic_resi_comparison_record` ( + `ID` varchar(64) NOT NULL COMMENT 'ID', + `CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户Id', + `RESI_ID` varchar(64) NOT NULL COMMENT 'ic_resi_user.id【比对时的数据值】', + `RESI_NAME` varchar(64) NOT NULL COMMENT '数字社区人员姓名【比对时的数据值】', + `RESI_ID_CARD` varchar(18) NOT NULL COMMENT '数据社区身份证号【比对时的数据值】', + `POLICE_NAME` varchar(64) DEFAULT NULL COMMENT '公安部人员姓名', + `POLICE_ID_CARD` varchar(18) DEFAULT NULL COMMENT '公安部人员证件号', + `TYPE` varchar(1) NOT NULL DEFAULT '0' COMMENT '数据状态(0:未处理 1:已处理)', + `IDENTICAL` varchar(1) NOT NULL DEFAULT '0' COMMENT '信息一致性(0:否 1:是 2:-)2代表程序比对了没有匹配上', + `IS_COMPARISON` varchar(1) DEFAULT '0' COMMENT '是否比对过(0:否 1:是)', + `COMPARISON_RESULT` varchar(255) DEFAULT NULL COMMENT '比对结果说明', + `DEL_FLAG` int(11) NOT NULL COMMENT '删除标识', + `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`), + UNIQUE KEY `resi_id` (`RESI_ID`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='居民信息与公安部信息比对记录表'; From ed353fcbbcd0a40f2c70c9888b65d4232cea45b4 Mon Sep 17 00:00:00 2001 From: sunyuchao Date: Tue, 15 Nov 2022 16:30:35 +0800 Subject: [PATCH 24/34] =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IcResiComparisonRecordServiceImpl.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java index fdb31f71a9..792774849f 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java @@ -115,11 +115,11 @@ public class IcResiComparisonRecordServiceImpl extends BaseServiceImpl Date: Tue, 15 Nov 2022 16:45:33 +0800 Subject: [PATCH 25/34] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/service/impl/IcResiComparisonRecordServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java index 792774849f..78b76b12f7 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiComparisonRecordServiceImpl.java @@ -351,6 +351,10 @@ public class IcResiComparisonRecordServiceImpl extends BaseServiceImpl Date: Tue, 15 Nov 2022 17:03:19 +0800 Subject: [PATCH 26/34] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/IcResiComparisonRecordDao.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml index bb438e5500..1301e1c4b3 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/IcResiComparisonRecordDao.xml @@ -96,7 +96,7 @@ AND b.type =#{type} - ORDER BY a.pids ASC, b.created_time DESC + ORDER BY a.pids ASC, b.created_time DESC, a.`NAME` ASC SELECT - ID_CARD, - DATE_FORMAT(INOCULATE_TIME, '%Y-%m-%d %H:%i') AS inoculateDate + ID_CARD, + INOCULATE_TIME FROM ic_vaccine WHERE DEL_FLAG = '0' - AND ( - - (ID_CARD = #{l.cardno} AND DATE_FORMAT(INOCULATE_TIME, '%Y-%m-%d %H:%i') = #{l.inoculateDate}) - - ) + and ID_CARD IN + + #{v.cardno} + + + + + +