diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/DataSyncUserAndOrgServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/DataSyncUserAndOrgServiceImpl.java index 16d281ed0c..287ff51e80 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/DataSyncUserAndOrgServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/yantai/DataSyncUserAndOrgServiceImpl.java @@ -1,7 +1,6 @@ package com.epmet.controller.yantai; import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.bean.CustomerStaffInfoDTOCache; @@ -11,7 +10,6 @@ import com.epmet.commons.tools.utils.api.yt.UserData; import com.epmet.commons.tools.utils.api.yt.YantaiApi; import com.epmet.dao.yantai.DataSyncOrgDataDao; import com.epmet.dao.yantai.DataSyncUserDataDao; -import com.epmet.dto.CustomerStaffDTO; import com.epmet.dto.form.yantai.YtUserPageFormDTO; import com.epmet.dto.result.yantai.DataSyncOrgDataDTO; import com.epmet.dto.result.yantai.YtUserPageResDTO; @@ -64,7 +62,7 @@ public class DataSyncUserAndOrgServiceImpl implements DataSyncUserAndOrgService public Boolean yanTaiSyncUser(String organizationId) { String customerId = YT_CUSTOMER_ID; // 先删除 旧数据 - Integer delSize = NumConstant.ZERO; + Integer delSize = null; do { delSize = dataSyncUserDataService.deleteByCustomerId(customerId); }while (null != delSize && delSize == NumConstant.ONE_THOUSAND); @@ -92,7 +90,6 @@ public class DataSyncUserAndOrgServiceImpl implements DataSyncUserAndOrgService entity.setStatus(NumConstant.ZERO_STR); entity.setStaffId(""); }else { - CustomerStaffInfoCacheResult staffInfo1 = CustomerStaffRedis.getStaffInfo(customerId, staffInfo.getUserId()); entity.setStatus(NumConstant.ONE_STR); entity.setStaffId(staffInfo.getUserId()); } @@ -112,7 +109,7 @@ public class DataSyncUserAndOrgServiceImpl implements DataSyncUserAndOrgService @Override public Boolean yanTaiSyncOrg(String organizationId) { // 先删除 旧数据 - Integer delSize = NumConstant.ZERO; + Integer delSize = null; do { delSize = dataSyncOrgDataService.deleteByCustomerId(YT_CUSTOMER_ID); }while (null != delSize && delSize == NumConstant.ONE_THOUSAND); diff --git a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DataSyncUserDataServiceImpl.java b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DataSyncUserDataServiceImpl.java index 1b77490e52..7149e74507 100644 --- a/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DataSyncUserDataServiceImpl.java +++ b/epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/DataSyncUserDataServiceImpl.java @@ -3,15 +3,14 @@ package com.epmet.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.dao.yantai.DataSyncUserDataDao; import com.epmet.dto.DataSyncUserDataDTO; import com.epmet.entity.yantai.DataSyncUserDataEntity; import com.epmet.service.DataSyncUserDataService; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -20,7 +19,7 @@ import java.util.List; import java.util.Map; /** - * + * * * @author generator generator@elink-cn.com * @since v1.0.0 2022-10-18 @@ -82,7 +81,7 @@ public class DataSyncUserDataServiceImpl extends BaseServiceImpl newConfigList = new ArrayList<>(); allConfigList.forEach(c -> { if (c.getDataCode().equals(formDTO.getDataCode())){ - disAllData(c,formDTO); - return; + //串行执行 + //disAllData(c,formDTO); + + //并行执行 + newConfigList.add(c); } }); + //死亡 残疾等接口 并行执行 + dataSyncYanTaiParallel(newConfigList,formDTO); }else { - for (DataSyncConfigDTO config : allConfigList) { - //没有配置 数据拉取范围 继续下次循环 - if (CollectionUtils.isEmpty(config.getScopeList())) { + //死亡 残疾等接口 并行执行 + dataSyncYanTaiParallel(allConfigList,formDTO); + //串行执行 +// for (DataSyncConfigDTO config : allConfigList) { +// //没有配置 数据拉取范围 继续下次循环 +// if (CollectionUtils.isEmpty(config.getScopeList())) { +// continue; +// } +// disAllData(config,formDTO); +// } + } + } + + private void dataSyncYanTaiParallel(List configList, DataSyncTaskParam formDTO) { + if (CollectionUtils.isEmpty(configList)) { + log.warn("dataSyncYanTaiParallel configList is null"); + return; + } + long count = configList.stream().filter(o -> CollectionUtils.isNotEmpty(o.getScopeList())).count(); + if (count < 1) { + log.warn("dataSyncYanTaiParallel scopeList is null"); + return; + } + //没传具体参数 则 按照 + int pageNo = NumConstant.ONE; + int pageSize = NumConstant.ONE_THOUSAND; + + List dbResiList = null; + CountDownLatch countDownLatch = new CountDownLatch((int) count); + + do { + for (DataSyncConfigDTO config : configList) {//设置查询数据范围 + formDTO.setOrgList(config.getScopeList()); + DataSyncEnum anEnum = DataSyncEnum.getEnum(config.getDataCode()); + + //查询正常状态的居民 并回显 残疾状态 + formDTO.setCategoryColumn("IS_CJ"); + dbResiList = getNatUserInfoFromDb(formDTO, pageNo, pageSize); + if (CollectionUtils.isEmpty(dbResiList)) { continue; } - disAllData(config,formDTO); + List finalDbResiList = dbResiList; + switch (anEnum) { + case HE_SUAN: + executorService.submit(() -> { + try { + //查询正常状态的居民 + hsjc(finalDbResiList, config.getCustomerId(), formDTO.getIsSync()); + log.info("======核酸检测信息拉取结束======"); + } catch (Exception e) { + log.error("hsjc thread execute exception", e); + } finally { + countDownLatch.countDown(); + } + }); + + break; + case CAN_JI: + executorService.submit(() -> { + try { + //查询正常状态的居民 + canJi(finalDbResiList); + log.info("======canJi信息拉取结束======"); + } catch (Exception e) { + log.error("hsjc thread execute exception", e); + } finally { + countDownLatch.countDown(); + } + }); + + break; + case SI_WANG: + try { + //查询正常状态的居民 + siWang(finalDbResiList); + log.info("======siWang信息拉取结束======"); + } catch (Exception e) { + log.error("hsjc thread execute exception", e); + } finally { + countDownLatch.countDown(); + } + break; + default: + log.warn("没有要处理的数据"); + } + try { + //等这一批居民 各个方法都执行完后 再继续下一批 + countDownLatch.await(); + } catch (InterruptedException e) { + log.error("dataSyncYanTaiParallel现成被中断"); + } } - } + + pageNo++; + } while (dbResiList != null && dbResiList.size() == pageSize); + } private void disAllData(DataSyncConfigDTO config,DataSyncTaskParam formDTO){ @@ -312,7 +410,6 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl pageInfo = PageHelper.startPage(pageNo, pageSize, false) .doSelectPageInfo(() -> baseDao.getIdCardsByScope(formDTO)); - List dbResiList; - dbResiList = pageInfo.getList(); - /* //如果传了身份证号 则按照身份证号查询 并同步记录, userId如果为空则是 手动录入的 此人没有录入居民库 但是也可以同步 - if (CollectionUtils.isNotEmpty(formDTO.getIdCards()) && DataSyncEnum.HE_SUAN.getCode().equals(anEnum.getCode())) { - List collect = formDTO.getIdCards().stream().map(id -> { - NatUserInfoResultDTO e = new NatUserInfoResultDTO(); - e.setIdCard(id); - e.setUserId(""); - return e; - }).collect(Collectors.toList()); - - for (NatUserInfoResultDTO c : collect) { - dbResiList.stream().filter(u -> u.getIdCard().equals(c.getIdCard())).forEach(u -> c.setUserId(u.getUserId())); - } - dbResiList = collect; - }*/ - return dbResiList; + return pageInfo.getList(); } private void canJi(List resiList) {