Bladeren bron

系统、设备分类名称显示查询

yucheng 3 jaren geleden
bovenliggende
commit
fe846c800f

+ 7 - 14
src/main/java/com/persagy/proxy/adm/controller/AdmReportEquipController.java

@@ -33,7 +33,6 @@ import com.persagy.proxy.adm.service.IAdmSystemService;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
 import com.persagy.proxy.adm.utils.AdmQueryCriteriaHelper;
 import com.persagy.proxy.common.entity.DmpResult;
-import com.persagy.proxy.common.entity.InstanceUrlParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
@@ -307,10 +306,7 @@ public class AdmReportEquipController {
         criteriaEquip.putPOJO("relationTo",relationTo);
         queryCriteria.setCriteria(criteriaEquip);
         List<ObjectNode> equips = DigitalObjectFacade.query(groupCode,AdmContextUtil.toDmpContext().getProjectId(),AdmCommonConstant.APP_ID,null,queryCriteria);
-        if (CollUtil.isEmpty(equips))
-            return AdmResponse.success();
-        else
-            return AdmResponse.success(equips);
+        return AdmResponse.success(equips);
     }
 
     /**
@@ -323,7 +319,7 @@ public class AdmReportEquipController {
         //return SysEquipService.pageQuery(request, arrayListOf(SFilter.eq("projectId", SPageAdmContextUtil.toDmpContext().getHeader("projectId").toString())))
         request.setName(AdmSystem.OBJ_TYPE);
         QueryCriteria queryCriteria = AdmQueryCriteriaHelper.toDmpCriteria(request);
-        queryCriteria.setSize(500l);
+        queryCriteria.setSize(500L);
         List<ObjectNode> objectNodeList = DigitalObjectFacade.query(groupCode,AdmContextUtil.toDmpContext().getProjectId(),AdmCommonConstant.APP_ID,null,queryCriteria);
         if(CollUtil.isEmpty(objectNodeList)){
             return AdmResponse.success();
@@ -331,8 +327,8 @@ public class AdmReportEquipController {
         List<AdmSystem> admSystemList = JSONUtil.toList(objectNodeList.toString(), AdmSystem.class);
         Map<String, AdmSystem> admSystemMap = CollUtil.fieldValueMap(admSystemList, BaseEntity.PROP_ID);
         QueryCriteria queryCriteriaRelation = new QueryCriteria();
-        queryCriteriaRelation.setPage(request.getPageNumber() == null ? 0 : request.getPageNumber()*1l);
-        queryCriteriaRelation.setSize(request.getPageSize() == null ? 0 : request.getPageSize()*1l);
+        queryCriteriaRelation.setPage(request.getPageNumber() == null ? 0 : request.getPageNumber()*1L);
+        queryCriteriaRelation.setSize(request.getPageSize() == null ? 0 : request.getPageSize()*1L);
 
         ObjectNode criteria = JsonNodeFactory.instance.objectNode();
         criteria.put("relCode", "Sy2Eq");
@@ -824,13 +820,10 @@ public class AdmReportEquipController {
     @GetMapping("/type/tree")
     public AdmResponse querySystemEquipCategory() throws Exception {
         // 组装上下文条件
-        AdmDict request = new AdmDict();
-        InstanceUrlParam context = AdmContextUtil.toDmpContext();
-        request.setType(AdmDictCategoryEnum.SYSTEM_EQUIP.getValue());
-        return dictService.queryCategory(context,request,AdmObjectType.class);
+        AdmDict request = AdmDict.builder().type(AdmDictCategoryEnum.SYSTEM_EQUIP.getValue()).build();
+        return dictService.queryCategory(AdmContextUtil.toDmpContext(),request,AdmObjectType.class);
     }
 
-
     /**
      * 计算动态、静态信息点
      */
@@ -976,7 +969,7 @@ public class AdmReportEquipController {
         } else {
             // 2.2 根据定义获取信息点
             //查询当前实例所有信息点总数
-            long controlInfoCounts = 0l;
+            long controlInfoCounts = 0L;
             QueryCriteria queryCriteria = new QueryCriteria();
             ObjectNode criteria = JsonNodeFactory.instance.objectNode();
             criteria = JsonNodeFactory.instance.objectNode();

+ 8 - 28
src/main/java/com/persagy/proxy/adm/controller/AdmSystemController.java

@@ -177,8 +177,7 @@ public class AdmSystemController {
      * @throws Exception
      */
     @GetMapping("/export")
-    public AdmResponse exportInfos(
-                             @RequestBody AdmQueryCriteria request) throws Exception {
+    public AdmResponse exportInfos(@RequestBody AdmQueryCriteria request) {
         request.setName(AdmSystem.OBJ_TYPE);
         return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmSystem.class);
     }
@@ -207,33 +206,14 @@ public class AdmSystemController {
 
     /**
      * 查询
-
      * @param request
      * @return
      * @throws Exception
      */
     @PostMapping("/query")
-    public AdmResponse query(@RequestBody AdmQueryCriteria request) throws Exception {
+    public AdmResponse query(@RequestBody AdmQueryCriteria request) {
         request.setName(AdmSystem.OBJ_TYPE);
-        AdmResponse admResponse = service.doQuery(AdmContextUtil.toDmpContext(), request, AdmSystem.class);
-        List<AdmSystem> systemList = (List<AdmSystem>) admResponse.getContent();
-        if(CollUtil.isNotEmpty(systemList)){
-            AdmDict admDict = new AdmDict();
-            admDict.setType(AdmSystem.OBJ_TYPE);
-            AdmResponse admResponseDic = dictService.queryCategory(AdmContextUtil.toDmpContext(), admDict, AdmObjectType.class);
-            if(CollUtil.isNotEmpty(admResponseDic.getContent())){
-                List<AdmObjectType> admDictList = (List<AdmObjectType>) admResponseDic.getContent();
-                Map<String, AdmObjectType> admDictMap = CollUtil.fieldValueMap(admDictList, "code");
-                systemList.stream().forEach(admSystem -> {
-                    if(admDictMap.keySet().contains(admSystem.getClassCode())){
-                        AdmObjectType admDictTemp = admDictMap.get(admSystem.getClassCode());
-                        admSystem.setCategoryName(admDictTemp.getName());
-                    }
-                });
-                admResponse.setContent(systemList);
-            }
-        }
-        return admResponse;
+        return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmSystem.class);
     }
 
 
@@ -381,8 +361,8 @@ public class AdmSystemController {
         requestData.setSize(rwdQueryCriteria.getSize());
         List result = DigitalObjectSimpleFacade.queryNotSureSystem(AdmContextUtil.toDmpContext().getGroupCode(), AdmContextUtil.toDmpContext().getProjectId(), AdmContextUtil.toDmpContext().getAppId(),null, requestData);
         if(CollUtil.isNotEmpty(result)){
-           List<AdmSystem> admSystemList = JSONUtil.toList(result.toString(), AdmSystem.class);
-           return admSystemList;
+            List<AdmSystem> admSystemList = JSONUtil.toList(result.toString(), AdmSystem.class);
+            return admSystemList;
         }else{
             return null;
         }
@@ -464,7 +444,7 @@ public class AdmSystemController {
      */
     @PostMapping("/un-sys-equip")
     public AdmResponse queryUnEquip( @NotNull @QueryParam("sysId") String sysId,
-                             @RequestBody AdmQueryCriteria request) throws Exception {
+                                     @RequestBody AdmQueryCriteria request) throws Exception {
         AdmResponse admResponse = queryObjectByType(sysId,request,"Sy2Eq","MechSubset", AdmEquipment.OBJ_TYPE);
         return admResponse;
     }
@@ -480,7 +460,7 @@ public class AdmSystemController {
      */
     @PostMapping("/un-sys-shaft")
     public AdmResponse queryUnSh( @NotNull @QueryParam("sysId") String sysId,
-                             @RequestBody AdmQueryCriteria request) throws Exception {
+                                  @RequestBody AdmQueryCriteria request) throws Exception {
         AdmResponse admResponse = queryObjectByType(sysId,request,"Sy2Sh",null, AdmShaft.OBJ_TYPE);
         return admResponse;
     }
@@ -495,7 +475,7 @@ public class AdmSystemController {
      */
     @PostMapping("/un-sys-zoneSpaceBaseTable")
     public AdmResponse queryUnZoneSp(@NotNull @QueryParam("sysId") String sysId,
-                             @RequestBody AdmQueryCriteria request) throws Exception {
+                                     @RequestBody AdmQueryCriteria request) throws Exception {
         AdmResponse admResponse = queryObjectByType(sysId,request,"Sy2Sp",null, AdmSpace.OBJ_TYPE);
         return admResponse;
     }

+ 2 - 0
src/main/java/com/persagy/proxy/adm/model/AdmDict.java

@@ -1,5 +1,6 @@
 package com.persagy.proxy.adm.model;
 
+import lombok.Builder;
 import lombok.Data;
 
 /**
@@ -10,6 +11,7 @@ import lombok.Data;
  * @Version V1.0
  **/
 @Data
+@Builder
 public class AdmDict {
 
   private String type;

+ 5 - 7
src/main/java/com/persagy/proxy/adm/model/AdmEquipment.java

@@ -2,13 +2,13 @@ package com.persagy.proxy.adm.model;
 
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.annotation.JSONField;
-import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.proxy.adm.annotations.CascadeColumn;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import javax.persistence.Column;
 import java.util.List;
+import java.util.Map;
 
 /**
  * ADM 设备 实体
@@ -72,8 +72,8 @@ public class AdmEquipment extends AdmSBaseEntity<AdmEquipment>{
 
     /** 品牌id */
     private String dpBrandId;
-    
-    
+
+
 
     /** Revit族 */
     private String bimFamilyName;
@@ -111,6 +111,8 @@ public class AdmEquipment extends AdmSBaseEntity<AdmEquipment>{
 
     /** 对象类型 */
     private String objectType = OBJ_TYPE;
+    /** 设备分类 */
+    private Map<String, String> equipCategory;
 
     /** 资产信息实体类   资产对应设备设施关系 资产→设备设施*/
     @CascadeColumn(graphCode = "Property2Mech", relCode = "Pe2Eq", selectToObj = false)
@@ -188,8 +190,4 @@ public class AdmEquipment extends AdmSBaseEntity<AdmEquipment>{
     //@CascadeColumn(table="equipment", idColumn="class_code", childIdColumn="parent_id")
     private List<AdmObjectType> componentCategory;
 
-    /** 级联-设备分类 */
-    //@SCascade(table="equipment", idColumn="id", childIdColumn="class_code")
-    private ObjectNode equipCategory;
-
 }

+ 4 - 3
src/main/java/com/persagy/proxy/adm/service/IAdmDictService.java

@@ -1,8 +1,9 @@
 package com.persagy.proxy.adm.service;
 
-import com.persagy.proxy.adm.model.*;
+import com.persagy.proxy.adm.model.AdmDefFuncIdGather;
+import com.persagy.proxy.adm.model.AdmDict;
+import com.persagy.proxy.adm.model.AdmDictQueryCriteria;
 import com.persagy.proxy.adm.request.AdmCreateRequest;
-import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
 
@@ -25,7 +26,7 @@ public interface IAdmDictService<T> extends IAdmDictBaseService<T>{
      * @return
      * @throws Exception
      */
-    AdmResponse queryCategory(InstanceUrlParam context , AdmDict request, Class<T> clazz) throws Exception;
+    AdmResponse queryCategory(InstanceUrlParam context , AdmDict request, Class<T> clazz);
 
 
     /**

+ 7 - 0
src/main/java/com/persagy/proxy/adm/service/IAdmEquipmentService.java

@@ -41,4 +41,11 @@ public interface IAdmEquipmentService extends IAdmBaseService<AdmEquipment>{
     void doDeleteEuip(InstanceUrlParam context, List<AdmEquipment> voList);
     @Deprecated
     public List<AdmEquipment> doInsertExt(InstanceUrlParam context, Class<AdmEquipment> clazz, List<AdmEquipment> voList);
+
+    /**
+     * 补充设备类型属性
+     * @param context
+     * @param vos
+     */
+    void ensureSpecialValues(InstanceUrlParam context, List<AdmEquipment> vos);
 }

+ 10 - 0
src/main/java/com/persagy/proxy/adm/service/IAdmSystemService.java

@@ -1,6 +1,9 @@
 package com.persagy.proxy.adm.service;
 
 import com.persagy.proxy.adm.model.AdmSystem;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+
+import java.util.List;
 
 /**
  * ADM 系统 接口
@@ -8,4 +11,11 @@ import com.persagy.proxy.adm.model.AdmSystem;
  * @date 2021/8/18
  */
 public interface IAdmSystemService extends IAdmBaseService<AdmSystem>{
+
+    /**
+     * 补充系统分类名称属性
+     * @param context
+     * @param vos
+     */
+    void ensureSpecialValues(InstanceUrlParam context, List<AdmSystem> vos);
 }

+ 12 - 12
src/main/java/com/persagy/proxy/adm/service/impl/AdmDictServiceImpl.java

@@ -1,16 +1,12 @@
 package com.persagy.proxy.adm.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
-
 import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.define.entity.ObjectInfoCollect;
-import com.persagy.dmp.define.entity.ObjectInfoDefine;
 import com.persagy.proxy.adm.constant.AdmDictConstant;
 import com.persagy.proxy.adm.constant.enums.AdmDictCategoryEnum;
 import com.persagy.proxy.adm.model.*;
@@ -21,10 +17,12 @@ import com.persagy.proxy.adm.service.IAdmDictService;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
-import org.springframework.context.annotation.Primary;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -48,7 +46,7 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
      * @throws Exception
      */
     @Override
-    public AdmResponse queryCategory(InstanceUrlParam context , AdmDict request, Class<T> clazz) throws Exception {
+    public AdmResponse queryCategory(InstanceUrlParam context , AdmDict request, Class<T> clazz) {
         String type = request.getType();
         QueryCriteria criteria = new QueryCriteria();
         ObjectNode node = JsonNodeFactory.instance.objectNode();
@@ -99,11 +97,11 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
         AdmResponse admResponse = doQueryObjectType(context, new QueryCriteria(), clazz);
         List<AdmObjectType> objectTypes = (List<AdmObjectType>) admResponse.getContent();
         Map<String, List<AdmObjectType>> objectTypeMap = objectTypes.stream().filter(k-> StringUtils.isNotEmpty(k.getObjType()))
-                                                         .collect(Collectors.groupingBy(AdmObjectType::getObjType));
+                .collect(Collectors.groupingBy(AdmObjectType::getObjType));
         //获取专业-设备类关系
         List<AdmObjectType> equipments = objectTypeMap.get(AdmDictCategoryEnum.EQUIPMENT.getValue());
         Map<String,List<AdmObjectType>> majorEquipMap = equipments.stream().filter(k->StringUtils.isNotEmpty(k.getMajorCode()))
-                                                         .collect(Collectors.groupingBy(item -> item.getMajorCode()));
+                .collect(Collectors.groupingBy(item -> item.getMajorCode()));
 
         //获取专业-系统类关系
         List<AdmObjectType> systems = objectTypeMap.get(AdmDictCategoryEnum.SYSTEM.getValue());
@@ -157,7 +155,7 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
         }
         //构建专业-系统-设备类树形结构
         for (AdmObjectType major : allMajor) {
-             //设置专业
+            //设置专业
             if(CollUtil.isNotEmpty(majorSystemMap)){
                 //专业下的系统
                 List<AdmObjectType> systemCodes = majorSystemMap.get(major.getCode());
@@ -302,8 +300,8 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
             String name = null;
             //项目
             if(AdmDictCategoryEnum.PROJECT.getValue().equals(type)){
-               name = AdmDictCategoryEnum.PROJECT.getDesc();
-               classCodes.add(AdmDictCategoryEnum.PROJECT.getValue());
+                name = AdmDictCategoryEnum.PROJECT.getDesc();
+                classCodes.add(AdmDictCategoryEnum.PROJECT.getValue());
             }
             //建筑
             if(AdmDictCategoryEnum.BUILDING.getValue().equals(type)){
@@ -369,6 +367,7 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
         Map<String, Boolean> projectObjectInfoCollectMap = projectObjectInfoCollect.stream().filter(item -> StrUtil.isNotEmpty(item.getDefineInfoId())).collect(Collectors.toMap(ObjectInfoCollect::getDefineInfoId,ObjectInfoCollect::getVisiable));
 
         String dictType = request.getDictType();
+
         //采集值配置查询
         if(StringUtils.isNotEmpty(dictType)){
             //查询平台级、项目级信息点采集信息
@@ -381,6 +380,7 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
             admResponse.setContent(admObjectInfos);
             return admResponse;
         }
+
         //只查看采集值 todo
         if(CollUtil.isNotEmpty(projectObjectInfoCollectMap)){
             setOnlyQueryObjectInfoVisiable(admObjectInfos,projectObjectInfoCollectMap,dictType);

+ 42 - 6
src/main/java/com/persagy/proxy/adm/service/impl/AdmEquipmentServiceImpl.java

@@ -15,10 +15,13 @@ import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectRelation;
 import com.persagy.proxy.adm.constant.AdmCommonConstant;
-import com.persagy.proxy.adm.model.AdmEquipment;
-import com.persagy.proxy.adm.model.AdmProperty;
+import com.persagy.proxy.adm.model.*;
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
+import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.service.IAdmComAndEquipService;
+import com.persagy.proxy.adm.service.IAdmDictService;
 import com.persagy.proxy.adm.service.IAdmEquipmentService;
+import com.persagy.proxy.adm.utils.AdmContextUtil;
 import com.persagy.proxy.adm.utils.AdmEntityTransferUtil;
 import com.persagy.proxy.adm.utils.ObjectNameUtil;
 import com.persagy.proxy.common.client.DmpRwdClient;
@@ -29,10 +32,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -48,6 +48,8 @@ public class AdmEquipmentServiceImpl extends AbstractAdmBaseServiceImpl<AdmEquip
     private DmpRwdClient rwdClient;
     @Autowired
     private ObjectMapper objectMapper;
+    @Autowired
+    private IAdmDictService dictService;
 
     @Override
     public List<AdmEquipment> doInsertEuip(InstanceUrlParam context, Class<AdmEquipment> clazz, List<AdmEquipment> voList) {
@@ -126,6 +128,40 @@ public class AdmEquipmentServiceImpl extends AbstractAdmBaseServiceImpl<AdmEquip
     }
 
     @Override
+    public AdmResponse doQuery(InstanceUrlParam context, AdmQueryCriteria request, Class<AdmEquipment> clazz) {
+        AdmResponse response = super.doQuery(context, request, clazz);
+        // 系统需要补充分类名称属性
+        ensureSpecialValues(context, (List<AdmEquipment>) response.getContent());
+        return response;
+    }
+
+    @Override
+    public void ensureSpecialValues(InstanceUrlParam context, List<AdmEquipment> vos) {
+        if(CollUtil.isEmpty(vos)) {
+            return;
+        }
+        // 查询对象类型 - 只找到这个接口,应提供一个按编码查编码名称Map的接口
+        AdmDict admDict = AdmDict.builder().type(AdmEquipment.OBJ_TYPE).build();
+        AdmResponse dicRs = dictService.queryCategory(AdmContextUtil.toDmpContext(), admDict, AdmObjectType.class);
+        List<AdmObjectType> dicList = (List<AdmObjectType>) dicRs.getContent();
+        if(CollUtil.isEmpty(dicList)) {
+            return;
+        }
+        // 转换为编码名称Map
+        Map<String, String> codeNameMap = CollUtil.fieldValueAsMap(dicList, "code", "name");
+        // 赋值
+        for(AdmEquipment vo:vos) {
+            String classCode = vo.getClassCode();
+            if(StrUtil.isEmpty(classCode)) {
+                continue;
+            }
+            Map<String, String> category = new HashMap<>(16);
+            category.put("code", classCode);
+            category.put("name", codeNameMap.get(vo.getClassCode()));
+        }
+    }
+
+    @Override
     public List<AdmEquipment> doInsertExt(InstanceUrlParam context, Class<AdmEquipment> clazz, List<AdmEquipment> voList) {
         List<AdmEquipment> vos = doInsert(context, AdmEquipment.class, voList);
         //TODO 创建资产

+ 55 - 0
src/main/java/com/persagy/proxy/adm/service/impl/AdmSystemServiceImpl.java

@@ -1,9 +1,23 @@
 package com.persagy.proxy.adm.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import com.persagy.proxy.adm.model.AdmDict;
+import com.persagy.proxy.adm.model.AdmEquipment;
+import com.persagy.proxy.adm.model.AdmObjectType;
 import com.persagy.proxy.adm.model.AdmSystem;
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
+import com.persagy.proxy.adm.request.AdmResponse;
+import com.persagy.proxy.adm.service.IAdmDictService;
+import com.persagy.proxy.adm.service.IAdmEquipmentService;
 import com.persagy.proxy.adm.service.IAdmSystemService;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
 /**
  * ADM 系统 实现类
  * @author lvxy
@@ -11,4 +25,45 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class AdmSystemServiceImpl extends AbstractAdmBaseServiceImpl<AdmSystem> implements IAdmSystemService {
+
+    @Autowired
+    private IAdmDictService dictService;
+    @Autowired
+    private IAdmEquipmentService equipmentService;
+
+    @Override
+    public AdmResponse doQuery(InstanceUrlParam context, AdmQueryCriteria request, Class<AdmSystem> clazz) {
+        AdmResponse response = super.doQuery(context, request, clazz);
+        // 系统需要补充分类名称属性
+        ensureSpecialValues(context, (List<AdmSystem>) response.getContent());
+        return response;
+    }
+
+    @Override
+    public void ensureSpecialValues(InstanceUrlParam context, List<AdmSystem> vos) {
+        if(CollUtil.isEmpty(vos)) {
+            return;
+        }
+        // 查询对象类型 - 只找到这个接口,应提供一个按编码查编码名称Map的接口
+        AdmDict admDict = AdmDict.builder().type(AdmSystem.OBJ_TYPE).build();
+        AdmResponse dicRs = dictService.queryCategory(context, admDict, AdmObjectType.class);
+        List<AdmObjectType> dicList = (List<AdmObjectType>) dicRs.getContent();
+        if(CollUtil.isEmpty(dicList)) {
+            return;
+        }
+        // 转换为编码名称Map
+        Map<String, String> codeNameMap = CollUtil.fieldValueAsMap(dicList, "code", "name");
+        // 给系统赋值 - 同时收集设备对象,扩展设备对象赋值
+        List<AdmEquipment> equipmentList = new ArrayList<>();
+        for(AdmSystem vo:vos) {
+            vo.setCategoryName(codeNameMap.get(vo.getClassCode()));
+            // 收集设备对象
+            if(CollUtil.isEmpty(vo.getEquipmentList())) {
+                continue;
+            }
+            equipmentList.addAll(vo.getEquipmentList());
+        }
+        // 对象扩展属性赋值
+        equipmentService.ensureSpecialValues(context, equipmentList);
+    }
 }