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 f8136ef9c5..66ad299ad5 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 @@ -60,6 +60,8 @@ import java.util.*; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.function.Function; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import static com.epmet.constant.EpidemicConstant.*; @@ -74,6 +76,9 @@ import static com.epmet.constant.EpidemicConstant.*; @Service public class DataSyncConfigServiceImpl extends BaseServiceImpl implements DataSyncConfigService { + //2022-01-05 08:53:26 + public static final Pattern VACCINE_DATE_OF_API_PATTERN = Pattern.compile("^(\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}):\\d{2}"); + @Autowired private DataSyncScopeService dataSyncScopeService; @Autowired @@ -1105,7 +1110,7 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl vaccineList = JSON.parseArray(json,Map.class); List> vaccineList = yantaiNamedParamLantuJdbcTemplate.queryForList( "select data, name, cardno, vaccineCount from t_ymjz_info where cardno in (:idcards)", args); - List ytVaccineListDTOS = new ArrayList<>(); + List ytVaccineListFromApi = new ArrayList<>(); if (CollectionUtils.isNotEmpty(vaccineList)) { vaccineList.forEach(v -> { if (v.containsKey("data")){ @@ -1116,7 +1121,7 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl { v1.setCardno(v.get("cardno").toString()); }); - ytVaccineListDTOS.addAll(vaccineList1); + ytVaccineListFromApi.addAll(vaccineList1); } //Map data = (Map) v.get("data"); @@ -1130,18 +1135,36 @@ public class DataSyncConfigServiceImpl extends BaseServiceImpl entities = new ArrayList<>(); - 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).getCardno().equals(e.getCardno()) && ytVaccineListDTOS.get(i).getInoculateDate().equals(e.getInoculateDate())){ - ytVaccineListDTOS.remove(i); + + // 过滤已存在的记录 + List existVaccines = icVaccineDao.getExistVaccine(ytVaccineListFromApi); + if (CollectionUtils.isNotEmpty(existVaccines)){ + for (YTVaccineListDTO existVaccineItem : existVaccines) { + Iterator iterator = ytVaccineListFromApi.iterator(); + while (iterator.hasNext()) { + YTVaccineListDTO vaccineFromApi = iterator.next(); + Matcher matcher = VACCINE_DATE_OF_API_PATTERN.matcher(vaccineFromApi.getInoculateDate()); + if (vaccineFromApi.getCardno().equals(existVaccineItem.getCardno()) + && matcher.matches() + && matcher.group(1).equals(existVaccineItem.getInoculateDate()) + ) { + iterator.remove(); } } + + //for (int i = 0; i < ytVaccineListFromApi.size(); i++) { + // String inoculateDateFromApi = ytVaccineListFromApi.get(i).getInoculateDate(); + // Matcher matcher = VACCINE_DATE_OF_API_PATTERN.matcher(inoculateDateFromApi); + // if (ytVaccineListFromApi.get(i).getCardno().equals(e.getCardno()) + // && matcher.matches() + // && matcher.group(1).equals(e.getInoculateDate())){ + // ytVaccineListFromApi.remove(i); + // } + //} } } - if (CollectionUtils.isNotEmpty(ytVaccineListDTOS)){ - ytVaccineListDTOS.forEach(v -> { + if (CollectionUtils.isNotEmpty(ytVaccineListFromApi)){ + ytVaccineListFromApi.forEach(v -> { resiInfos.forEach(u -> { if (v.getCardno().equals(u.getIdCard())){ IcVaccineEntity e = new IcVaccineEntity();