From 65bfa92befa25fa54760956c7604707a0e0a0fc1 Mon Sep 17 00:00:00 2001 From: CeDo <cedoogle@gmail.com> Date: 星期五, 11 六月 2021 16:42:27 +0800 Subject: [PATCH] bugfixed:导入去重&更新已存在记录 --- springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComEldersAuthElderlyExcelListen.java | 44 +++++++++++++++++++++++++++++++++++--------- 1 files changed, 35 insertions(+), 9 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComEldersAuthElderlyExcelListen.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComEldersAuthElderlyExcelListen.java index a872f15..feac593 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComEldersAuthElderlyExcelListen.java +++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/listen/ComEldersAuthElderlyExcelListen.java @@ -15,8 +15,7 @@ import com.panzhihua.common.utlis.StringUtils; import lombok.extern.slf4j.Slf4j; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -43,6 +42,28 @@ private static final int BATCH_COUNT = 3000; private List<EldersAuthElderlyExcelVO> list = new ArrayList<>(); + /** + * @author cedoo + * @Description:找出list中的重复数据 + * @param datas + * @return + */ + public static <T> List<T> findRepeat(Collection<T> datas) { + if (datas instanceof Set) { + return new ArrayList<>(); + } + HashSet<T> set = new HashSet<T>(); + List<T> repeatEles = new ArrayList<T>(); + for (T t : datas) { + if (set.contains(t)) { + repeatEles.add(t); + } else { + set.add(t); + } + } + return repeatEles; + } + @Override public void invoke(EldersAuthElderlyExcelVO eldersAuthElderlyExcelVO, AnalysisContext analysisContext) { if(StringUtils.isEmpty(eldersAuthElderlyExcelVO.getName())){ @@ -63,19 +84,24 @@ list.add(eldersAuthElderlyExcelVO); // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM if(list.size() >= BATCH_COUNT){ - log.info("excel导入数据【{}】", JSONObject.toJSONString(list)); - List<EldersAuthElderlyExcelVO> newVoList = list.stream().filter(ListUtils.distinctByKey(EldersAuthElderlyExcelVO::getIdCard)).collect(Collectors.toList()); - R r = this.communityService.listSaveEldersAuthElderlyExcelVO(newVoList,this.communityId,this.createBy); - if (!R.isOk(r)) { - throw new ServiceException(r.getMsg()); - } - list.clear(); //清空list + doAfterAllAnalysed(analysisContext); + list.clear(); } } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { + //去重 + List<String> idcardList = new ArrayList<>(); + list.forEach(voInList -> { + idcardList.add(voInList.getIdCard()); + }); + List<String> repeatList = findRepeat(idcardList); + if(repeatList!=null && repeatList.size()>0){ + String repeatedId = StringUtils.join(repeatList, ","); + throw new ServiceException(repeatedId + " 身份证号码存在多条"); + } List<EldersAuthElderlyExcelVO> newVoList = list.stream().filter(ListUtils.distinctByKey(EldersAuthElderlyExcelVO::getIdCard)).collect(Collectors.toList()); R r = this.communityService.listSaveEldersAuthElderlyExcelVO(newVoList,this.communityId,this.createBy); if (!R.isOk(r)) { -- Gitblit v1.7.1