Procházet zdrojové kódy

实现接口queryObjectListSuperiorId逻辑

lijie před 3 roky
rodič
revize
e8ff9694b5
14 změnil soubory, kde provedl 431 přidání a 15 odebrání
  1. 36 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/basic/constant/DigitalRelCode.java
  2. 75 7
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/basic/dto/RequestData.java
  3. 24 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/basic/dto/TimeScope.java
  4. 14 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/controller/ObjectDigitalController.java
  5. 15 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/dao/ObjectDigitalMapper.java
  6. 11 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/IObjectDigitalService.java
  7. 1 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/ProjectBusinessService.java
  8. 113 8
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ObjectDigitalServiceImpl.java
  9. 6 0
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ProjectBusinessServiceImpl.java
  10. 13 0
      dmp-business/dmp-rwd/src/main/resources/bootstrap.yml
  11. 88 0
      dmp-business/dmp-rwd/src/main/resources/mapper/ObjectDigitalMapper.xml
  12. 15 0
      dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/client/DigitalObjectClient.java
  13. 15 0
      dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/client/DigitalObjectFacade.java
  14. 5 0
      dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ObjectDigital.java

+ 36 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/basic/constant/DigitalRelCode.java

@@ -0,0 +1,36 @@
+package com.persagy.dmp.rwd.basic.constant;
+
+import lombok.Getter;
+
+/**
+ * 对象类型
+ * @author Charlie Yu
+ * @date 2021-06-25
+ */
+@Getter
+public enum DigitalRelCode {
+    /** 对象类型 */
+    BD_2_FL("Bd2Fl", "建筑下的楼层"),
+    BD_2_SH("Bd2Sh", "建筑下的竖井"),
+    BD_2_SP("Bd2Sp", "建筑下的业务空间"),
+    FL_2_SP("Fl2Sp", "楼层下的业务空间"),
+    SH_2_SP("Sh2Sp", "竖井下的业务空间"),
+    SY_2_BD("Sy2Bd", "系统所在建筑"),
+    SY_2_FL("Sy2Fl", "系统所在楼层"),
+    SY_2_SH("Sy2Sh", "系统所在竖井"),
+    SY_2_SP("Sy2Sp", "系统所在空间"),
+    EQ_2_BD("Eq2Bd", "设备所在建筑"),
+    EQ_2_FL("Eq2Fl", "设备所在楼层"),
+    EQ_2_SH("Eq2Sh", "设备所在竖井"),
+    EQ_2_SP("Eq2Sp", "设备所在竖井"),
+    SY_2_EQ("Sy2Eq", "系统下的设备"),
+    EQ_2_EC("Eq2Ec", "设备下的部件");
+
+    private String index;
+    private String name;
+
+    DigitalRelCode(String index, String name) {
+        this.index = index;
+        this.name = name;
+    }
+}

+ 75 - 7
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/basic/dto/RequestData.java

@@ -7,13 +7,7 @@ import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.hibernate.validator.constraints.Range;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
-import java.util.List;
 import java.util.Set;
 
 /***
@@ -38,6 +32,80 @@ public class RequestData {
     @JsonProperty("groupManageZoneIds")
     @JSONField(name = "groupManageZoneIds",alternateNames = {"group_manage_zone_ids"})
     private Set<String> groupManageZoneIds;
-
+    /** 分页页码,从 1 开始 */
+    @JsonAlias({"page"})
+    @JsonProperty("page")
+    @JSONField(name = "page",alternateNames = {"page"})
+    private Long page;
+    /** 每页行数 */
+    @JsonAlias({"page_size","size","pageSize"})
+    @JsonProperty("size")
+    @JSONField(name = "size",alternateNames = {"page_size","size","pageSize"})
+    private Long size;
+    /** 筛选关键字,本地名称筛选 */
+    @JsonAlias({"keyword"})
+    @JsonProperty("keyword")
+    @JSONField(name = "keyword",alternateNames = {"keyword"})
+    private String keyword;
+    /** 是否只统计总数 */
+    @JsonAlias({"only_count","onlyCount"})
+    @JsonProperty("onlyCount")
+    @JSONField(name = "onlyCount",alternateNames = {"only_count","onlyCount"})
+    private boolean onlyCount = false;
+    /** 创建时间筛选范围 */
+    @JsonAlias({"ctime","createTimeScope"})
+    @JsonProperty("createTimeScope")
+    @JSONField(name = "createTimeScope",alternateNames = {"ctime","createTimeScope"})
+    private TimeScope createTimeScope;
+    /** 返回信息点过滤,仅过滤infos内的信息点,基础信息点不过滤 */
+    @JsonAlias({"return_infos","returnInfos"})
+    @JsonProperty("returnInfos")
+    @JSONField(name = "returnInfos",alternateNames = {"return_infos","returnInfos"})
+    private Set<String> returnInfos;
+    /** 查询有效数据,true,false */
+    @JsonAlias({"valid_set","validSet"})
+    @JsonProperty("validSet")
+    @JSONField(name = "validSet",alternateNames = {"valid_set","validSet"})
+    private Set<Integer> validSet;
+    /** 项目id */
+    @JsonAlias({"project_id","projectId"})
+    @JsonProperty("projectId")
+    @JSONField(name = "projectId",alternateNames = {"project_id","projectId"})
+    private String projectId;
+    /** 建筑id */
+    @JsonAlias({"building_id","buildingId"})
+    @JsonProperty("buildingId")
+    @JSONField(name = "buildingId",alternateNames = {"building_id","buildingId"})
+    private String buildingId;
+    /** 楼层id */
+    @JsonAlias({"floor_id","floorId"})
+    @JsonProperty("floorId")
+    @JSONField(name = "floorId",alternateNames = {"floor_id","floorId"})
+    private String floorId;
+    /** 设备id */
+    @JsonAlias({"equipment_id","equipmentId"})
+    @JsonProperty("equipmentId")
+    @JSONField(name = "equipmentId",alternateNames = {"equipment_id","equipmentId"})
+    private String equipmentId;
+    /** 对象类型数组 */
+    @JsonAlias({"class_codes","classCodes"})
+    @JsonProperty("classCodes")
+    @JSONField(name = "classCodes",alternateNames = {"class_codes","classCodes"})
+    private Set<String> classCodes;
+    /** 对象分类数组 */
+    @JsonAlias({"obj_types","objTypes"})
+    @JsonProperty("objTypes")
+    @JSONField(name = "objTypes",alternateNames = {"obj_types","objTypes"})
+    private Set<String> objTypes;
+    /** 跳跃条数 */
+    @JsonAlias({"skip"})
+    @JsonProperty("skip")
+    @JSONField(name = "skip",alternateNames = {"skip"})
+    private Long skip;
+    /** 跳跃条数 */
+    @JsonAlias({"relCodes","rel_codes"})
+    @JsonProperty("relCodes")
+    @JSONField(name = "relCodes",alternateNames = {"relCodes","rel_codes"})
+    private Set<String> relCodes;
 
 }

+ 24 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/basic/dto/TimeScope.java

@@ -0,0 +1,24 @@
+package com.persagy.dmp.rwd.basic.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonAlias;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TimeScope {
+    @JsonAlias({"$gte","startEq"})
+    @JsonProperty("startEq")
+    @JSONField(name = "startEq",alternateNames = {"$gte","startEq"})
+    private String startEq;
+    @JsonAlias({"$lte","createTimeScope"})
+    @JsonProperty("createTimeScope")
+    @JSONField(name = "createTimeScope",alternateNames = {"$lte","createTimeScope"})
+    private String endEq;
+}

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

@@ -181,6 +181,20 @@ public class ObjectDigitalController{
         ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE);
         return projectBusinessService.batchQueryProjectByGroupManageZoneIds(requestData.getGroupManageZoneIds());
     }
+    /***
+     * Description: 根据上级id查询下级关联对象
+     * @param requestData : 请求参数
+     * @return : com.persagy.dmp.common.model.response.CommonResult<com.fasterxml.jackson.databind.node.ObjectNode>
+     * @author : lijie
+     * @date :2021/8/18 15:55
+     * Update By lijie 2021/8/18 15:55
+     */
+    @PostMapping("/queryObjectListSuperiorId")
+    public CommonResult<List<ObjectDigital>> queryObjectListSuperiorId(@RequestBody RequestData requestData) {
+        //基础参数校验
+        ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE);
+        return service.queryObjectListSuperiorId(requestData);
+    }
 
 
     /**

+ 15 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/dao/ObjectDigitalMapper.java

@@ -2,6 +2,10 @@ package com.persagy.dmp.rwd.digital.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.persagy.dmp.digital.entity.ObjectDigital;
+import com.persagy.dmp.rwd.basic.dto.RequestData;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 对象数据 DAO
@@ -9,4 +13,15 @@ import com.persagy.dmp.digital.entity.ObjectDigital;
  * @date 2021-07-08
  */
 public interface ObjectDigitalMapper extends BaseMapper<ObjectDigital> {
+    /***
+     * Description: 根据项目id查询对象列表
+     * @param requestData : 请求参数
+     * @param skip
+     * @param size
+     * @return : com.persagy.dmp.common.model.response.CommonResult<java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>>
+     * @author : lijie
+     * @date :2021/8/24 16:40
+     * Update By lijie 2021/8/24 16:40
+     */
+    List<List<ObjectDigital>> queryObjectDigitalsByProjectId(@Param("param") RequestData requestData,@Param("skip") Long skip,@Param("size") Long size);
 }

+ 11 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/IObjectDigitalService.java

@@ -2,7 +2,9 @@ package com.persagy.dmp.rwd.digital.service;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.entity.ObjectDigital;
+import com.persagy.dmp.rwd.basic.dto.RequestData;
 
 import java.util.List;
 import java.util.Map;
@@ -71,4 +73,13 @@ public interface IObjectDigitalService {
      * @return
      */
     Map<String, List<String>>  queryVirtualCodeMap(String projectId, String groupCode, List<String> ids);
+    /***
+     * Description: 根据上级id查询下级关联对象
+     * @param requestData : 请求参数
+     * @return : com.persagy.dmp.common.model.response.CommonResult<java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>>
+     * @author : lijie
+     * @date :2021/8/24 16:37
+     * Update By lijie 2021/8/24 16:37
+     */
+    CommonResult<List<ObjectDigital>> queryObjectListSuperiorId(RequestData requestData);
 }

+ 1 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/ProjectBusinessService.java

@@ -2,6 +2,7 @@ package com.persagy.dmp.rwd.digital.service;
 
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.entity.ObjectDigital;
+import com.persagy.dmp.rwd.basic.dto.RequestData;
 
 import java.util.List;
 import java.util.Set;

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

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ReflectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -14,9 +15,13 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.common.constant.ValidEnum;
 import com.persagy.dmp.common.context.AppContext;
 import com.persagy.dmp.common.model.entity.BaseEntity;
+import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.common.utils.ResultHelper;
 import com.persagy.dmp.define.entity.ObjectInfoDefine;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.rwd.basic.constant.DigitalMessageConstant;
+import com.persagy.dmp.rwd.basic.constant.DigitalRelCode;
+import com.persagy.dmp.rwd.basic.dto.RequestData;
 import com.persagy.dmp.rwd.basic.utils.DigitalCommonUtils;
 import com.persagy.dmp.rwd.basic.utils.DigitalMessageHelper;
 import com.persagy.dmp.rwd.define.service.IObjectInfoService;
@@ -24,6 +29,7 @@ import com.persagy.dmp.rwd.define.service.IObjectTypeService;
 import com.persagy.dmp.rwd.digital.dao.ObjectDigitalMapper;
 import com.persagy.dmp.rwd.digital.service.IObjectDigitalService;
 import com.persagy.dmp.rwd.parser.service.InfoDataFactory;
+import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -39,16 +45,14 @@ import java.util.*;
  */
 @Service
 @Transactional(rollbackFor = Exception.class)
+@RequiredArgsConstructor
 public class ObjectDigitalServiceImpl implements IObjectDigitalService {
 
-    @Resource
-    private ObjectDigitalMapper dao;
-    @Autowired
-    private DigitalMessageHelper messageSender;
-    @Autowired
-    private IObjectInfoService infoService;
-    @Autowired
-    private IObjectTypeService typeService;
+    private final ObjectDigitalMapper dao;
+    private final DigitalMessageHelper messageSender;
+    private final IObjectInfoService infoService;
+    private final IObjectTypeService typeService;
+    private final ObjectDigitalMapper objectDigitalMapper;
 
     @Override
     public ObjectDigital load(String id) {
@@ -161,6 +165,107 @@ public class ObjectDigitalServiceImpl implements IObjectDigitalService {
         });
     }
 
+    /***
+     * Description: 根据上级id查询下级关联对象
+     * @param requestData : 请求参数
+     * @return : com.persagy.dmp.common.model.response.CommonResult<java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>>
+     * @author : lijie
+     * @date :2021/8/24 16:37
+     * Update By lijie 2021/8/24 16:37
+     */
+    @Override
+    public CommonResult<List<ObjectDigital>> queryObjectListSuperiorId(RequestData requestData) {
+        // 1.计算分页参数
+        Long page = requestData.getPage();
+        Long size = requestData.getSize();
+        // 防止人不自觉,最大仅允许查500条数据
+        if (null==page){
+            page=1L;
+        }
+        if (null==size){
+            size=500L;
+        }
+        requestData.setSkip((page-1)*size);
+        // 2.当只有项目id时不查询关系,直接根据项目id筛选所有对象
+        if (StrUtil.isBlank(requestData.getBuildingId())
+                && StrUtil.isBlank(requestData.getFloorId())
+                && StrUtil.isBlank(requestData.getEquipmentId())){
+            return queryObjectListByProjectId(requestData);
+        }
+        // 3.存在建筑id/楼层id/设备id,获取关系code列表
+        querySubordinateRelCode(requestData);
+
+
+
+
+        return null;
+    }
+    /***
+     * Description: 根据对象id获取下级关系code数组
+     * @param requestData : 请求参数
+     * @return : void
+     * @author : lijie
+     * @date :2021/8/24 21:20
+     * Update By lijie 2021/8/24 21:20
+     */
+    private void querySubordinateRelCode(RequestData requestData) {
+        if (StrUtil.isNotBlank(requestData.getEquipmentId())){
+            // 设备下的部件
+            requestData.setRelCodes(CollUtil.newHashSet(DigitalRelCode.EQ_2_EC.getIndex()));
+            return;
+        }
+        if (StrUtil.isNotBlank(requestData.getFloorId())){
+            // 楼层下的部件
+            requestData.setRelCodes(CollUtil.newHashSet(DigitalRelCode.FL_2_SP.getIndex(),
+                    DigitalRelCode.EQ_2_FL.getIndex(),DigitalRelCode.SY_2_FL.getIndex(),
+                    DigitalRelCode.EQ_2_EC.getIndex()));
+            return;
+        }
+
+
+
+
+
+    }
+
+    /***
+     * Description: 根据项目id查询对象列表
+     * @param requestData : 请求参数
+     * @return : com.persagy.dmp.common.model.response.CommonResult<java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>>
+     * @author : lijie
+     * @date :2021/8/24 16:40
+     * Update By lijie 2021/8/24 16:40
+     */
+    private CommonResult<List<ObjectDigital>> queryObjectListByProjectId(RequestData requestData) {
+        // 1.查询结果集
+        List<List<ObjectDigital>> resultList =
+                objectDigitalMapper.queryObjectDigitalsByProjectId(requestData,requestData.getSkip(),requestData.getSize());
+        if (CollUtil.isEmpty(resultList)){
+            return ResultHelper.multi(new ArrayList<>(),0);
+        }
+        List<ObjectDigital> pageResult = resultList.get(0);
+        List<ObjectDigital> totalCount = resultList.get(1);
+        if (CollUtil.isEmpty(pageResult)){
+            return ResultHelper.multi(new ArrayList<>(),0);
+        }
+        if (requestData.isOnlyCount()){
+            // 只返回数
+            return ResultHelper.multi(new ArrayList<>(),totalCount.get(0).getTotalCount());
+        }
+        if (CollUtil.isEmpty(requestData.getReturnInfos())){
+            return ResultHelper.multi(pageResult,totalCount.get(0).getTotalCount());
+        }
+        // 2.过滤信息点
+        for (ObjectDigital objectDigital : pageResult) {
+            ObjectNode infos = objectDigital.getInfos();
+            if (null==infos || infos.size()<=0){
+                continue;
+            }
+            infos.retain(requestData.getReturnInfos());
+        }
+        return ResultHelper.multi(pageResult,totalCount.get(0).getTotalCount());
+    }
+
     /**
      * 保存校验
      * 编码全局唯一

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

@@ -1,21 +1,26 @@
 package com.persagy.dmp.rwd.digital.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.common.constant.CommonConstant;
 import com.persagy.dmp.common.context.AppContext;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.utils.ResultHelper;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.rwd.basic.constant.DigitalObjectType;
+import com.persagy.dmp.rwd.basic.dto.RequestData;
 import com.persagy.dmp.rwd.digital.dao.ObjectDigitalMapper;
 import com.persagy.dmp.rwd.digital.service.ProjectBusinessService;
+import com.persagy.utils.JacksonMapper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
@@ -75,4 +80,5 @@ public class ProjectBusinessServiceImpl implements ProjectBusinessService {
         }
         return ResultHelper.multi(objectDigitals);
     }
+
 }

+ 13 - 0
dmp-business/dmp-rwd/src/main/resources/bootstrap.yml

@@ -4,6 +4,19 @@ spring:
   application:
     # 应用名称
     name: dmp-rwd
+#  datasource:
+#    druid:
+#      filters: stat,slf4j
+#      filter:
+#        wall:
+#          config:
+#            #允许一次执行多条语句
+#            multi-statement-allow: true
+#            #允许非基本语句的其他语句,开启后可以执行DDL语句
+#            none-base-statement-allow: true
+#          enabled: false
+#        slf4j:
+#          enabled: true
 
 config:
   file:

+ 88 - 0
dmp-business/dmp-rwd/src/main/resources/mapper/ObjectDigitalMapper.xml

@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.persagy.dmp.rwd.digital.dao.ObjectDigitalMapper">
+
+    <resultMap id="BaseResultMap" type="com.persagy.dmp.digital.entity.ObjectDigital">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="name" column="name" jdbcType="VARCHAR"/>
+            <result property="localId" column="local_id" jdbcType="VARCHAR"/>
+            <result property="localName" column="local_name" jdbcType="VARCHAR"/>
+            <result property="groupCode" column="group_code" jdbcType="VARCHAR"/>
+            <result property="projectId" column="project_id" jdbcType="VARCHAR"/>
+            <result property="objType" column="obj_type" jdbcType="VARCHAR"/>
+            <result property="classCode" column="class_code" jdbcType="VARCHAR"/>
+            <result property="grouping" column="grouping" jdbcType="INTEGER"/>
+            <result property="infos" column="infos" jdbcType="VARCHAR" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
+            <result property="virtualCodes" column="virtual_codes" jdbcType="VARCHAR" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
+            <result property="createApp" column="create_app" jdbcType="VARCHAR"/>
+            <result property="updateApp" column="update_app" jdbcType="VARCHAR"/>
+            <result property="creator" column="creator" jdbcType="VARCHAR"/>
+            <result property="creationTime" column="creation_time" jdbcType="CHAR"/>
+            <result property="modifier" column="modifier" jdbcType="VARCHAR"/>
+            <result property="modifiedTime" column="modified_time" jdbcType="CHAR"/>
+            <result property="valid" column="valid" jdbcType="TINYINT"/>
+            <result property="ts" column="ts" jdbcType="TIMESTAMP"/>
+    </resultMap>
+    <resultMap id="count" type="com.persagy.dmp.digital.entity.ObjectDigital">
+        <result property="totalCount" column="totalCount" jdbcType="INTEGER"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,`name`,local_id,
+        local_name,group_code,project_id,
+        obj_type,class_code,grouping,
+        infos,virtual_codes,create_app,
+        update_app,creator,creation_time,
+        modifier,modified_time,valid,
+        ts
+    </sql>
+    <select id="queryObjectDigitalsByProjectId" resultMap="BaseResultMap,count">
+        SELECT DISTINCT SQL_CALC_FOUND_ROWS
+            *
+        FROM dt_object dto
+        WHERE 1=1
+        <if test="param.projectId!=null and param.projectId.length>0">
+            AND dto.project_id=#{param.projectId}
+        </if>
+        <if test="param.objTypes!=null and param.objTypes.size()>0">
+            <foreach collection="param.objTypes" open="AND dto.obj_type IN(" close=")" separator="," item="objType">
+                #{objType}
+            </foreach>
+        </if>
+        <if test="param.classCodes!=null and param.classCodes.size()>0">
+            <foreach collection="param.classCodes" open="AND ( " close=")" separator=" OR " item="classCode">
+                dto.class_code LIKE CONCAT(#{classCode},'%')
+            </foreach>
+        </if>
+        <if test="param.keyword!=null and param.keyword.length>0">
+            AND dto.local_name LIKE CONCAT('%',#{param.keyword},'%')
+        </if>
+        <choose>
+            <when test="param.validSet!=null and param.validSet.size()>0">
+                <foreach collection="param.validSet" open="AND dto.valid IN(" close=")" separator="," item="valid">
+                    #{valid}
+                </foreach>
+            </when>
+            <otherwise>
+                AND dto.valid = TRUE
+            </otherwise>
+        </choose>
+        <if test="param.createTimeScope!=null">
+            <if test="param.createTimeScope.startEq!=null and param.createTimeScope.startEq.length>0">
+                AND dto.creation_time&gt;=#{param.createTimeScope.startEq}
+            </if>
+            <if test="param.createTimeScope.endEq!=null and param.createTimeScope.endEq.length>0">
+                AND dto.creation_time&lt;=#{param.createTimeScope.endEq}
+            </if>
+        </if>
+        <if test="skip!=null and skip!=null and size!=0">
+            limit #{skip},#{size}
+        </if>
+        ;
+        SELECT FOUND_ROWS()	AS totalCount;
+    </select>
+
+
+</mapper>

+ 15 - 0
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/client/DigitalObjectClient.java

@@ -164,4 +164,19 @@ public interface DigitalObjectClient {
                               @RequestParam("appId") String appId,
                               @RequestParam("userId") String userId,
                               @RequestBody List<String> ids);
+    /**
+     * 根据上级id查询下级关联对象
+     * @param groupCode: 集团编码
+     * @param projectId: 项目ID
+     * @param appId: 应用ID
+     * @param userId: 用户ID
+     * @param requestData: 请求参数
+     * @return void
+     */
+    @PostMapping("queryObjectListSuperiorId")
+    CommonResult<List<ObjectDigital>> queryObjectListSuperiorId(@RequestParam("groupCode") String groupCode,
+                              @RequestParam("projectId") String projectId,
+                              @RequestParam("appId") String appId,
+                              @RequestParam("userId") String userId,
+                              @RequestBody RequestData requestData);
 }

+ 15 - 0
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/client/DigitalObjectFacade.java

@@ -8,6 +8,8 @@ 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;
 
 import java.util.List;
 import java.util.Set;
@@ -147,4 +149,17 @@ public class DigitalObjectFacade {
                                                              String userId, List<String> ids) {
         client.delete(groupCode, projectId, appId, userId, ids);
     }
+    /**
+     * 根据上级id查询下级关联对象
+     * @param groupCode: 集团编码
+     * @param projectId: 项目ID
+     * @param appId: 应用ID
+     * @param userId: 用户ID
+     * @param requestData: 请求参数
+     * @return void
+     */
+    public static List<ObjectDigital> queryObjectListSuperiorId(String groupCode, String projectId, String appId, String userId, RequestData requestData) {
+        CommonResult<List<ObjectDigital>> commonResult = client.queryObjectListSuperiorId(groupCode, projectId, appId, userId, requestData);
+        return commonResult.getData();
+    }
 }

+ 5 - 0
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ObjectDigital.java

@@ -1,6 +1,8 @@
 package com.persagy.dmp.digital.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -58,4 +60,7 @@ public class ObjectDigital extends AuditableEntity {
     private String createApp;
     /** 最后修改应用 */
     private String updateApp;
+    /** 符合查询条件的数据总条数 */
+    @TableField(exist = false)
+    private Integer totalCount;
 }