소스 검색

提供 对象校验方法 结果放到object对象的mark中, 返回校验失败集合 供数据迁移使用

lvxianyun 3 년 전
부모
커밋
732a4e4cda

+ 18 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/controller/ObjectDigitalController.java

@@ -43,6 +43,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.validation.Valid;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -446,6 +447,23 @@ public class ObjectDigitalController{
         return result;
     }
 
+
+    /**
+     * 新增 更新 验证对象,将验证失败的信息放到ObjectDigital。mark中,并返回所有验证失败的记录
+     * @param voList
+     * @return List<ObjectDigital>
+     */
+    @PostMapping("/validateInfoCodeAndGetErrorList")
+    public List<ObjectDigital> validateInfoCodeAndGetErrorList(@RequestBody ArrayNode voList){
+        if(CollUtil.isEmpty(voList)){
+           return Collections.emptyList();
+        }
+        List<ObjectDigital> digitalList = JsonNodeUtils.toEntity(voList, ObjectDigital.class, "infos");
+        return service.validateInfoCodeAndGetError(digitalList);
+    }
+
+
+
     /**
      * 创建默认条件
      * @param voList

+ 8 - 4
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/IObjectDigitalService.java

@@ -4,14 +4,10 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.dto.RequestData;
-import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.entity.ObjectDigital;
-import org.springframework.web.bind.annotation.RequestBody;
 
-import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -159,4 +155,12 @@ public interface IObjectDigitalService extends IService<ObjectDigital> {
      */
     List<String> queryObjectClassCode(QueryWrapper<ObjectDigital> queryWrapper);
 
+
+    /**
+     * 新增 更新 验证对象,将验证失败的信息放到ObjectDigital。mark中,并返回所有验证失败的记录
+     * @param voList
+     * @return
+     */
+    List<ObjectDigital> validateInfoCodeAndGetError(List<ObjectDigital> voList);
+
 }

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

@@ -475,6 +475,39 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         return objectDigitals.stream().map(item -> item.getClassCode()).collect(Collectors.toList());
     }
 
+    /**
+     * 新增 更新 验证对象,将验证失败的信息放到ObjectDigital。mark中,并返回所有验证失败的记录
+     *
+     * @param voList
+     * @return
+     */
+    @Override
+    public List<ObjectDigital> validateInfoCodeAndGetError(List<ObjectDigital> voList) {
+        if(CollUtil.isEmpty(voList)) {
+            return Collections.emptyList();
+        }
+        // 保存时,项目ID一定有,而且都是操作这个项目的数据。这是前提,若后续放开全集团保存,则应按项目分组后查询信息点
+        String projectId = AppContext.getContext().getProjectId();
+        //获取该信息点当前classCode
+        List<String> classCodes = CollUtil.getFieldValues(voList, "classCode", String.class);
+        // 查询信息点定义
+        Map<String, Map<String, ObjectInfoDefine>> typeInfoMap = infoService.queryInfoMapByClass(projectId, classCodes);
+        // 信息点校验器
+        List<ObjectDigital> restList = new ArrayList<>();
+        for(ObjectDigital vo:voList) {
+            // 获取信息点列表
+            Map<String, ObjectInfoDefine> infoMap = typeInfoMap == null ? null : typeInfoMap.get(vo.getClassCode());
+            if (MapUtil.isEmpty(infoMap)) {
+                log.error(StrUtil.format("没有对象类型【{}】的信息点定义信息!", vo.getClassCode()));
+                vo.setMark(StrUtil.format("没有对象类型【{}】的信息点定义信息!", vo.getClassCode()));
+                // 只保留验证失败的
+                restList.add(vo);
+                continue;
+            }
+        }
+        return restList;
+    }
+
 
     /***
      * Description: 通用处理分页数据方法

+ 20 - 1
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/client/DigitalObjectClient.java

@@ -1,12 +1,12 @@
 package com.persagy.dmp.digital.client;
 
+import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.config.DigitalFeignConfig;
 import com.persagy.dmp.basic.dto.RequestData;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.entity.ObjectDigital;
-import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -211,4 +211,23 @@ public interface DigitalObjectClient {
                               @RequestParam("appId") String appId,
                               @RequestParam("userId") String userId,
                               @RequestBody List<ObjectDigital> objectDigitals);
+
+
+
+    /**
+     * 新增 更新 验证对象,将验证失败的信息放到ObjectDigital。mark中,并返回所有验证失败的记录
+     * @param groupCode: 集团编码
+     * @param projectId: 项目ID
+     * @param appId: 应用ID
+     * @param userId: 用户ID
+     * @param voList
+     * @return List<ObjectDigital>
+     */
+    @PostMapping("validateInfoCodeAndGetErrorList")
+    List<ObjectDigital> validateInfoCodeAndGetErrorList(
+            @RequestParam("groupCode") String groupCode,
+            @RequestParam("projectId") String projectId,
+            @RequestParam("appId") String appId,
+            @RequestParam("userId") String userId,
+            @RequestBody ArrayNode voList);
 }

+ 21 - 1
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/client/DigitalObjectFacade.java

@@ -1,12 +1,12 @@
 package com.persagy.dmp.digital.client;
 
 import cn.hutool.extra.spring.SpringUtil;
+import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.dto.RequestData;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.utils.ResultHelper;
-import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -266,4 +266,24 @@ public class DigitalObjectFacade {
         return client.batchUpdateClassCodesByIds(groupCode,
                 projectId, appId, userId, objectDigitals);
     }
+
+
+
+    /**
+     * 新增 更新 验证对象,将验证失败的信息放到ObjectDigital。mark中,并返回所有验证失败的记录
+     * @param groupCode: 集团编码
+     * @param projectId: 项目ID
+     * @param appId: 应用ID
+     * @param userId: 用户ID
+     * @param voList
+     * @return List<ObjectDigital>
+     */
+    public static List<ObjectDigital> validateInfoCodeAndGetErrorList(
+            @RequestParam("groupCode") String groupCode,
+            @RequestParam("projectId") String projectId,
+            @RequestParam("appId") String appId,
+            @RequestParam("userId") String userId,
+            @RequestBody ArrayNode voList){
+        return client.validateInfoCodeAndGetErrorList(groupCode, projectId, appId, userId, voList);
+    }
 }