From 6dea7ca5ae5f28208199e989d102d6e5cd0d6fd7 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Wed, 2 Nov 2022 14:25:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E8=A7=86=E5=9B=BE?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=A0=B8=E9=85=B8=E9=87=87=E6=A0=B7-?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DataSyncConfigServiceImpl.java | 72 +++++++++++++++++++ 1 file changed, 72 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 bb72f987a6..a72a56edeb 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 @@ -12,6 +12,7 @@ import com.epmet.commons.tools.dto.result.YtHscyResDTO; import com.epmet.commons.tools.dto.result.YtHsjcResDTO; import com.epmet.commons.tools.enums.GenderEnum; import com.epmet.commons.tools.exception.EpmetException; +import com.epmet.commons.tools.exception.ExceptionUtils; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; @@ -39,12 +40,15 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.*; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -72,6 +76,9 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl resiInfos, String customerId, String isSync) { + List> resiInfobatchs = ListUtils.partition(resiInfos, 50); + for (List resibatch : resiInfobatchs) { + // 50个一批,来处理他们的核酸信息,太多怕给数据库查崩了。 + yantaiHsjcByDbViewBatch(resibatch, customerId, isSync); + } + } + + /** + * 50个一批,来处理他们的核酸信息,太多怕给数据库查崩了。 + * @param resiInfos + * @param customerId + * @param isSync + */ + public void yantaiHsjcByDbViewBatch(List resiInfos, String customerId, String isSync) { + // 将居民信息转化为的map + Map idCardAndResiInfo = resiInfos.stream().collect(Collectors.toMap(resi -> resi.getIdCard(), Function.identity())); + Set idCards = idCardAndResiInfo.keySet();//resiInfos.stream().map(resi -> resi.getIdCard()).collect(Collectors.toList()); + // String idCardsStr = "''" + String.join("','", idCards) + "''"; + // 1.获取核酸采样信息 + String sql = "select id, name,card_no, create_time, realname from hscyxxb where card_no in (:idCards) order by create_time desc"; + HashMap args = new HashMap<>(); + args.put("idCards", idCards); + // 这一批居民的核酸采样列表 + List> hscyList = yantaiJdbcTemplate.queryForList(sql, args); + if (CollectionUtils.isNotEmpty(hscyList)) { + List entities = new ArrayList<>(); + hscyList.forEach(sampleInfo -> { + // 从视图中获取到的核酸采样相关信息 + String name = (String) sampleInfo.get("name"); + String cardNo = (String) sampleInfo.get("card_no"); + Date createTime = (Date) sampleInfo.get("create_time"); + + // 本地数据库中,居民信息 + NatUserInfoResultDTO currentResiInfo = idCardAndResiInfo.get(cardNo); + + IcNatEntity e = new IcNatEntity(); + e.setCustomerId(customerId); + e.setIsResiUser(StringUtils.isBlank(currentResiInfo.getUserId()) ? NumConstant.ZERO_STR : NumConstant.ONE_STR); + e.setUserId(currentResiInfo.getUserId()); + e.setMobile(""); + e.setUserType(isSync.equals(NumConstant.ONE_STR) ? "manualSync" : "sync"); + e.setName(StringUtils.isNotBlank(name) ? name : ""); + e.setIdCard(StringUtils.isNotBlank(cardNo) ? cardNo : ""); + e.setSampleTime(createTime); + // e.setSampleTime(DateUtils.parseDate(createTime, DateUtils.DATE_TIME_PATTERN)); + e.setAgencyId(currentResiInfo.getAgencyId()); + e.setPids(currentResiInfo.getPids()); + e.setAttachmentType(""); + e.setAttachmentUrl(""); + entities.add(e); + }); + if (CollectionUtils.isNotEmpty(entities)){ + List existSampleInfo = icNatDao.getExistNatInfo(entities); + sampleAndNat(existSampleInfo,entities,NumConstant.ONE_STR,customerId,isSync); + } + } + } }