dengsixing 2 달 전
부모
커밋
f4410ba177
1개의 변경된 파일15개의 추가작업 그리고 5개의 파일을 삭제
  1. 15 5
      src/main/java/com/fdkankan/scene/service/impl/SceneEvidenceServiceImpl.java

+ 15 - 5
src/main/java/com/fdkankan/scene/service/impl/SceneEvidenceServiceImpl.java

@@ -440,14 +440,23 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
                 idMap.put(bgm.getLong("mid"), bgm.getString("sid"));
             }
         }
-        Set<Long> repeatMids = null;
+        Set<Long> addMids = new HashSet<>();
+        Set<Long> repeatMids = new HashSet<>();
         List<SceneMid> list = sceneMidService.list(new LambdaQueryWrapper<SceneMid>().eq(SceneMid::getNum, param.getNum()).in(SceneMid::getMid, idMap.keySet()));
-        if(CollUtil.isNotEmpty(list)){
-            if(list.size() == idMap.size()) {//如果数据库中的mid和参数中的mid数量完全一样,代表完全重复,直接返回
+        if(CollUtil.isNotEmpty(list)){//查出来不为空,就肯定是有重复的
+            Set<Long> dbMids = list.stream().map(v -> v.getMid()).collect(Collectors.toSet());
+            //过滤出重复的和不重复的
+            for (Long mid : idMap.keySet()) {
+                if(dbMids.contains(mid)){
+                    repeatMids.add(mid);
+                }else{
+                    addMids.add(mid);
+                }
+            }
+            if(CollUtil.isNotEmpty(addMids)){//如果没有新增,那就是完全重复,直接终止程序
                 throw new BusinessException(JMErrorCode.FAILURE_CODE_20000.code(), JMErrorCode.FAILURE_CODE_20000.message());
-            } else{//否则可以导入不重复的mid部分
+            }else{//如果有新增,又有重复,那就是部分导入
                 resCode = JMErrorCode.FAILURE_CODE_20001.code();
-                Set<Long> dbMids = list.stream().map(v -> v.getMid()).collect(Collectors.toSet());
                 repeatMids = idMap.keySet().stream().filter(mid -> dbMids.contains(mid)).collect(Collectors.toSet());
                 dataList : for (int i = 0; i < param.getDataList().size(); i++) {
                     EvidenceParamVO evidenceParamVO = param.getDataList().get(i);
@@ -467,6 +476,7 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
                     }
                 }
             }
+
         }
 
         Map<String, Long> importMap = new HashMap<>();