From 580c5cee01b685d907449707295153bb42cdf821 Mon Sep 17 00:00:00 2001 From: jianjun Date: Tue, 11 Oct 2022 14:47:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9A=E6=97=B6=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DataSyncConfigController.java | 2 +- .../java/com/epmet/dao/DataSyncConfigDao.java | 19 ++-- .../java/com/epmet/enums/DataSyncEnum.java | 55 ++++++++++ .../epmet/service/DataSyncConfigService.java | 4 +- .../impl/DataSyncConfigServiceImpl.java | 103 +++++++++++++----- .../resources/mapper/DataSyncConfigDao.xml | 36 +++--- 6 files changed, 157 insertions(+), 62 deletions(-) create mode 100644 epmet-user/epmet-user-server/src/main/java/com/epmet/enums/DataSyncEnum.java 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 950de6f573..2963823ce2 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 @@ -108,7 +108,7 @@ public class DataSyncConfigController { @PostMapping("natInfoScanTask") public Result natInfoScanTask(@RequestBody NatInfoScanTaskFormDTO formDTO){ - dataSyncConfigService.natInfoScanTask(formDTO); + dataSyncConfigService.dataSyncForYanTaiTask(formDTO); return new Result(); } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/DataSyncConfigDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/DataSyncConfigDao.java index d3a2c600ef..6df7281e5b 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/DataSyncConfigDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/DataSyncConfigDao.java @@ -22,6 +22,7 @@ public interface DataSyncConfigDao extends BaseDao { /** * Desc: 【数据配置】配置开关 + * * @param formDTO * @author zxc * @date 2022/9/26 14:36 @@ -30,30 +31,32 @@ public interface DataSyncConfigDao extends BaseDao { /** * Desc: 【数据配置】列表 + * * @param customerId + * @param switchStatus * @author zxc * @date 2022/9/26 15:04 */ - List list(@Param("customerId")String customerId); + List list(@Param("customerId") String customerId, @Param("switchStatus") String switchStatus); - List scopeList(@Param("id")String id); + List scopeList(@Param("id") String id); /** * Desc: 删除范围 + * * @param dataSyncConfigId * @author zxc * @date 2022/9/26 15:46 */ - void delScope(@Param("dataSyncConfigId")String dataSyncConfigId); + void delScope(@Param("dataSyncConfigId") String dataSyncConfigId); /** * Desc: 根据范围查询居民证件号 - * @param list + * + * @param orgList * @author zxc * @date 2022/9/27 09:23 */ - List getIdCardsByScope(@Param("list") List list); + List getIdCardsByScope(@Param("orgList") List orgList, @Param("idCardList") List idCardList); - List getUserIdByIdCard(@Param("list") List list); - -} \ No newline at end of file +} 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 new file mode 100644 index 0000000000..a3a66c4efc --- /dev/null +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/enums/DataSyncEnum.java @@ -0,0 +1,55 @@ +package com.epmet.enums; + +/** + * desc:数据同步配置枚举 对应data_sync_config中的DATA_CODE + * @author Administrator + */ + +public enum DataSyncEnum { + /** + * 环境变量枚举 + */ + HE_SUAN("hesuan", "核酸检测数据"), + CAN_JI("canji", "残疾数据"), + SI_WANG("siwang", "死亡数据"), + OTHER("qita","其他"), + + ; + + private final String code; + private final String name; + + + + DataSyncEnum(String code, String name) { + this.code = code; + this.name = name; + } + + public static DataSyncEnum getEnum(String code) { + DataSyncEnum[] values = DataSyncEnum.values(); + for (DataSyncEnum value : values) { + if (value.getCode().equals(code)) { + return value; + } + } + return DataSyncEnum.OTHER; + } + + + public String getCode() { + return code; + } + + public String getName() { + return name; + } + + public static void main(String[] args) { + Integer pageNo = 1; + + for (int i = 0; i < 5; i++) { + System.out.println(pageNo++); + } + } +} 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 1e0ad7162b..049fc774a0 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 @@ -82,5 +82,5 @@ public interface DataSyncConfigService extends BaseService */ void scopeSave(ScopeSaveFormDTO formDTO); - void natInfoScanTask(NatInfoScanTaskFormDTO formDTO); -} \ No newline at end of file + void dataSyncForYanTaiTask(NatInfoScanTaskFormDTO 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 d4de7ebcbe..ed2490feed 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 @@ -1,4 +1,5 @@ package com.epmet.service.impl; + import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; @@ -25,12 +26,14 @@ import com.epmet.entity.DataSyncConfigEntity; import com.epmet.entity.DataSyncScopeEntity; import com.epmet.entity.IcNatEntity; import com.epmet.entity.IcNatRelationEntity; +import com.epmet.enums.DataSyncEnum; import com.epmet.service.DataSyncConfigService; import com.epmet.service.DataSyncScopeService; import com.epmet.service.IcNatRelationService; import com.epmet.service.IcNatService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.StringUtils; @@ -50,6 +53,7 @@ import java.util.stream.Collectors; * @author generator generator@elink-cn.com * @since v1.0.0 2022-09-26 */ +@Slf4j @Service public class DataSyncConfigServiceImpl extends BaseServiceImpl implements DataSyncConfigService { @@ -119,10 +123,11 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl result = new PageData<>(new ArrayList<>(), NumConstant.ZERO_L); - PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.list(tokenDto.getCustomerId())); + PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()) + .doSelectPageInfo(() -> baseDao.list(tokenDto.getCustomerId(), null)); if (CollectionUtils.isNotEmpty(pageInfo.getList())){ result.setList(pageInfo.getList()); - result.setTotal(Integer.valueOf(String.valueOf(pageInfo.getTotal()))); + result.setTotal(Integer.parseInt(String.valueOf(pageInfo.getTotal()))); } return result; } @@ -171,40 +176,78 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl userIdByIdCard = baseDao.getUserIdByIdCard(formDTO.getIdCards()); - List collect = formDTO.getIdCards().stream().map(id -> { - NatUserInfoResultDTO e = new NatUserInfoResultDTO(); - e.setIdCard(id); - e.setUserId(""); - return e; - }).collect(Collectors.toList()); - collect.forEach(c -> userIdByIdCard.stream().filter(u -> u.getIdCard().equals(c.getIdCard())).forEach(u -> c.setUserId(u.getUserId()))); - hsjc(collect,formDTO.getCustomerId()); + public void dataSyncForYanTaiTask(NatInfoScanTaskFormDTO formDTO) { + List allConfigList = baseDao.list(formDTO.getCustomerId() ,"open"); + if (CollectionUtils.isEmpty(allConfigList)){ return; } - List allConfigList = baseDao.list(StringUtils.isNotBlank(formDTO.getCustomerId()) ? formDTO.getCustomerId() : null); - if (CollectionUtils.isEmpty(allConfigList)){ + + + //TODO 根据dataCode 调用不同的方法 抽取数据 + if (CollectionUtils.isNotEmpty(allConfigList)){ + log.warn("dataSyncForYanTaiTask don't have any resi data to pull data form YanTai interface"); return; } - List configList = allConfigList.stream().filter(l -> l.getDeptCode().equals("dsjj") && l.getSwitchStatus().equals("open")).collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(configList)){ - configList.forEach(c -> { - if (CollectionUtils.isNotEmpty(c.getScopeList())){ - Integer no = NumConstant.ONE; - Integer size; - do { - PageInfo pageInfo = PageHelper.startPage(no, NumConstant.ONE_THOUSAND).doSelectPageInfo(() -> baseDao.getIdCardsByScope(c.getScopeList())); - size = pageInfo.getList().size(); - hsjc(pageInfo.getList(),c.getCustomerId()); - no++; - }while (size.compareTo(NumConstant.ONE_THOUSAND) == NumConstant.ZERO); - } - }); + for (DataSyncConfigDTO config : allConfigList) { + //没有配置 数据拉取范围 继续下次循环 + if (CollectionUtils.isEmpty(config.getScopeList())){ + continue; + } + + //如果传了身份证号 则按照身份证号查询 并同步记录, userId如果为空则是 手动录入的 此人没有录入居民库 但是也可以同步 + if (CollectionUtils.isNotEmpty(formDTO.getIdCards())){ + List userIdByIdCard = baseDao.getIdCardsByScope(config.getScopeList(),formDTO.getIdCards()); + List collect = formDTO.getIdCards().stream().map(id -> { + NatUserInfoResultDTO e = new NatUserInfoResultDTO(); + e.setIdCard(id); + e.setUserId(""); + return e; + }).collect(Collectors.toList()); + + collect.forEach(c -> userIdByIdCard.stream().filter(u -> u.getIdCard().equals(c.getIdCard())).forEach(u -> c.setUserId(u.getUserId()))); + executeSyncData(config, collect); + return; + } else { + //没传具体参数 则 按照 + int pageNo = NumConstant.ONE; + int pageSize = NumConstant.ONE_THOUSAND; + PageInfo pageInfo = null; + do { + //根据 组织 分页获取 居民数据 + pageInfo = PageHelper.startPage(pageNo, pageSize, false) + .doSelectPageInfo(() -> baseDao.getIdCardsByScope(config.getScopeList(),formDTO.getIdCards())); + executeSyncData(config, pageInfo.getList()); + + pageNo++; + } while (pageInfo != null && pageInfo.getSize() == pageSize); + } + } } + /** + * desc:根据居民身份证号 从蓝图api接口 获取数据到本地 + * @param config + * @param resiList + */ + private void executeSyncData(DataSyncConfigDTO config, List resiList) { + DataSyncEnum anEnum = DataSyncEnum.getEnum(config.getDataCode()); + switch (anEnum) { + case HE_SUAN: + hsjc(resiList, config.getCustomerId()); + break; + case CAN_JI: + //todo + break; + case SI_WANG: + //todo + break; + default: + log.warn("没有要处理的数据"); + } + } + + /** * Desc: 根据证件号 查询nat 存在 ? 不处理 : 新增 * @param idCards @@ -269,4 +312,4 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl - AND CUSTOMER_ID = #{customerId} - + + AND switch_status = #{switchStatus} + + + AND CUSTOMER_ID = #{customerId} + order by sort @@ -62,29 +65,20 @@ FROM ic_resi_user WHERE DEL_FLAG = '0' AND `STATUS` = '0' + + AND id_card in + + #{idCard} + + AND ( - + GRID_ID = #{l.orgId} - PIDS LIKE CONCAT('%',#{l.orgId},'%') + PIDS LIKE CONCAT(#{l.orgIdPath},'%') ) ORDER BY CREATED_TIME - - \ No newline at end of file +