Browse Source

龙华项目 - 模型中如果有不存在的对象类型,也应可以保存,不因对象类型找不到而中断

yucheng 3 years ago
parent
commit
533b33639d

+ 14 - 3
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ObjectDigitalServiceImpl.java

@@ -85,10 +85,10 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
 
     @Override
     public List<ObjectDigital> insert(List<ObjectDigital> voList) {
+        validateOnSave(voList, false);
         if(CollUtil.isEmpty(voList)) {
             return null;
         }
-        validateOnSave(voList, false);
         //获取对象类型
         Map<String, String> typeMap = typeService.queryObjTypeMap();
         voList.forEach(vo -> {
@@ -128,7 +128,9 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         fillClassCodeForUpdate(voList,dbMap);
         //信息点校验
         validateOnSave(voList, true);
-        List<ObjectDigital> resultList = new ArrayList<>();
+        if(CollUtil.isEmpty(voList)) {
+            return null;
+        }
         voList.forEach(vo -> {
             ObjectDigital dbVO = MapUtil.get(dbMap, vo.getId(), ObjectDigital.class);
             // 容错处理
@@ -679,6 +681,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         // 查询信息点定义
         Map<String, Map<String, ObjectInfoDefine>> allInfoMap = infoService.queryByTypes(typeCodeList);
         // 信息点校验器
+        List<ObjectDigital> restList = new ArrayList<>();
         for(ObjectDigital vo:voList) {
             // 获取信息点列表 TODO 先这样处理,后续优化信息点接口后直接删掉此段即可
             Map<String, ObjectInfoDefine> infoMap = new HashMap<>(16);
@@ -698,8 +701,11 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
                 }
             }
             if(MapUtil.isEmpty(infoMap)) {
-                throw new BusinessException(StrUtil.format("没有对象类型【{}】的信息点定义信息!", vo.getClassCode()));
+                log.error(StrUtil.format("没有对象类型【{}】的信息点定义信息!", vo.getClassCode()));
+                continue;
             }
+            // 只保留有对象类型的
+            restList.add(vo);
             // 信息点值对象
             ObjectNode infos = vo.getInfos();
             if(infos == null || infos.isNull()) {
@@ -718,6 +724,11 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
                 InfoDataFactory.parse(infoMap.get(infoCode), infos.get(infoCode));
             }
         }
+        // 只保留能找到对象类型的
+        voList.clear();
+        if(CollUtil.isNotEmpty(restList)) {
+            voList.addAll(restList);
+        }
     }
 
     /**