Преглед на файлове

Merge remote-tracking branch 'origin/develop' into develop

lijie преди 3 години
родител
ревизия
680e363665

+ 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);
+
 }

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

@@ -92,15 +92,10 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
 
     @Override
     public List<ObjectDigital> insert(List<ObjectDigital> voList) {
-        //验证失败的数据
-        List<ObjectDigital> errorList = validateOnSave(voList, false);
-
-        if(CollUtil.isEmpty(voList) && CollUtil.isEmpty(errorList)) {
+        validateOnSave(voList, false);
+        if(CollUtil.isEmpty(voList)) {
             return null;
         }
-        if(CollUtil.isEmpty(voList) && !CollUtil.isEmpty(errorList)) {
-            return errorList;
-        }
         //获取对象类型
         Map<String, String> typeMap = typeService.queryObjTypeMap();
         voList.forEach(vo -> {
@@ -120,8 +115,6 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
             // 新增后消息
             messageSender.sendMessage(DigitalMessageConstant.OPERATE_AFTER_INSERT, null, vo, false);
         });
-        //返回总体数据
-        voList.addAll(errorList);
         return voList;
     }
 
@@ -482,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: 通用处理分页数据方法
@@ -686,20 +712,18 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
      * @param voList
      * @param isUpdate
      */
-    private List<ObjectDigital> validateOnSave(List<ObjectDigital> voList, boolean isUpdate) {
-        return validateInfoCode(voList);
+    private void validateOnSave(List<ObjectDigital> voList, boolean isUpdate) {
+        validateInfoCode(voList);
     }
 
     /**
      * 信息点值校验
      * @param voList
-     * @return 对象类型不存在的需要返回
      */
-    private List<ObjectDigital> validateInfoCode(List<ObjectDigital> voList) {
+    private void validateInfoCode(List<ObjectDigital> voList) {
         if(CollUtil.isEmpty(voList)) {
-            return Collections.emptyList();
+            return ;
         }
-        List<ObjectDigital> errorList = new ArrayList<>();
         // 保存时,项目ID一定有,而且都是操作这个项目的数据。这是前提,若后续放开全集团保存,则应按项目分组后查询信息点
         String projectId = AppContext.getContext().getProjectId();
         //获取该信息点当前classCode
@@ -713,8 +737,6 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
             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()));
-                errorList.add(vo);
                 continue;
             }
             // 只保留有对象类型的
@@ -739,7 +761,6 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
                 } catch (BusinessException e) {
                     // 校验不通过的移除
                     infoKeys.remove();
-
                     continue;
                 }
             }
@@ -749,7 +770,6 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         if(CollUtil.isNotEmpty(restList)) {
             voList.addAll(restList);
         }
-        return errorList;
     }
 
     /**

+ 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);
+    }
 }