فهرست منبع

fix : system query 兼容 projection

lvxianyun 3 سال پیش
والد
کامیت
fa55110887
1فایلهای تغییر یافته به همراه47 افزوده شده و 27 حذف شده
  1. 47 27
      src/main/java/com/persagy/proxy/object/controller/AdmSystemController.java

+ 47 - 27
src/main/java/com/persagy/proxy/object/controller/AdmSystemController.java

@@ -4,12 +4,14 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 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.dto.RequestData;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.common.model.entity.BaseEntity;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.define.client.DigitalDefineFacade;
 import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.dmp.digital.client.DigitalObjectFacade;
@@ -129,7 +131,7 @@ public class AdmSystemController {
                         relationDTOS.add(new RelationDTO(null, "MechInArch", "Sy2Fl", null, systemId , floorId));
                     }
                     if(StrUtil.isNotEmpty(buildID)){
-                        relationDTOS.add(new RelationDTO(null, "MechForArch", "Sy2Bd", null, systemId , buildID));
+                        relationDTOS.add(new RelationDTO(null, "MechInArch", "Sy2Bd", null, systemId , buildID));
                     }
                 });
                 admSystemList.addAll(admSystems);
@@ -217,7 +219,33 @@ public class AdmSystemController {
     @PostMapping("/query")
     public AdmResponse query(@RequestBody AdmQueryCriteria request) {
         request.setName(AdmSystem.OBJ_TYPE);
-        return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmSystem.class);
+
+        if(CollUtil.isNotEmpty(request.getProjection()) && request.getDistinct() && !request.getProjection().contains(BaseEntity.PROP_ID)){
+            RequestData requestData = new RequestData();
+            requestData.setProjection(request.getProjection());
+            requestData.setObjType(AdmSystem.OBJ_TYPE);
+            requestData.setPage(request.getPageNumber().longValue());
+            requestData.setSize(request.getPageSize().longValue());
+            CommonResult<List<ObjectNode>> result = DigitalObjectSimpleFacade.querySystemListByConditions(AdmContextUtil.toDmpContext().getGroupCode(),AdmContextUtil.toDmpContext().getProjectId(), AdmContextUtil.toDmpContext().getAppId(), null, requestData);
+            if(result == null || CollUtil.isEmpty(result.getData())){
+                return AdmResponse.success();
+            }
+            List<AdmSystem> admSystemList = JSONUtil.toList(result.getData().toString(), AdmSystem.class);
+            service.ensureSpecialValues(AdmContextUtil.toDmpContext(), admSystemList);
+            AdmResponse response = AdmResponse.success(admSystemList);
+            Long total = result.getCount() == null ? null : result.getCount().longValue();
+            if(request.isOnlyCount()){
+                response.setTotal(null);
+                response.setCount(total);
+            }else {
+                response.setTotal(total);
+            }
+            response.setPageNumber(request.getPageNumber());
+            response.setPageSize(request.getPageSize());
+            return response;
+        }else {
+            return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmSystem.class);
+        }
     }
 
 
@@ -305,9 +333,10 @@ public class AdmSystemController {
 
                 }else if("1".equals(floorId)){
                     //case three 明确建筑 不明确楼层
-                    admSystemList = queryNotSureObj(buildingId, rwdQueryCriteria);
-                    //处理通用返回结果
-                    dealRespose(syses, request);
+                    syses = queryNotSureObj(buildingId, rwdQueryCriteria);
+                    if(null != syses && CollUtil.isNotEmpty(syses.getContent())){
+                        admSystemList = (List<AdmSystem>) syses.getContent();
+                    }
                 }
                 if(CollUtil.isNotEmpty(admSystemList)){
                     //处理数据 BuildingFloorInfo
@@ -324,15 +353,9 @@ public class AdmSystemController {
                     criteria.putPOJO("relationFrom",relationFrom);
                     rwdQueryCriteria.setCriteria(criteria);
                     syses = service.doQuery(AdmContextUtil.toDmpContext(), rwdQueryCriteria, AdmSystem.class);
-                    if (CollUtil.isNotEmpty(syses.getContent())) {
-                        admSystemList = (List<AdmSystem>) syses.getContent();
-                    }
-
                 }else if("1".equals(buildingId)){
                     //case three 明确建筑 不明确楼层
-                    admSystemList = queryNotSureObj(buildingId, rwdQueryCriteria);
-                    //处理通用返回结果
-                    dealRespose(syses, request);
+                    syses = queryNotSureObj(buildingId, rwdQueryCriteria);
                 }
                 if(CollUtil.isNotEmpty(admSystemList)){
                     //处理数据 BuildingFloorInfo
@@ -341,14 +364,12 @@ public class AdmSystemController {
                 }
             }else{
                 //处理通用返回结果
-                dealRespose(syses, request);
                 if(StrUtil.isNotEmpty(buildingId) && buildingId.equals("1")){
                     //case four 未明确建筑
-                    admSystemList = queryNotSureObj(null, rwdQueryCriteria);
+                    syses = queryNotSureObj(null, rwdQueryCriteria);
                     if(CollUtil.isNotEmpty(admSystemList)){
                         //处理数据 BuildingFloorInfo
                         admSystemList = dealBdFlInfo(null,null, admSystemList);
-
                     }
                 }
             }
@@ -364,19 +385,13 @@ public class AdmSystemController {
         return syses;
     }
 
-    private void dealRespose(AdmResponse syses, AdmQueryCriteria request){
-        syses.setPageSize(request.getPageSize());
-        syses.setPageNumber(request.getPageNumber());
-        syses.setResult(DmpResult.SUCCESS);
-        syses.setTotal(0L);
-    }
     /**
      * 查询不确定建筑/楼层的系统
      * @param buildingId
      * @param rwdQueryCriteria
      * @return
      */
-    private List<AdmSystem> queryNotSureObj(String buildingId, QueryCriteria rwdQueryCriteria){
+    private AdmResponse queryNotSureObj(String buildingId, QueryCriteria rwdQueryCriteria){
         RequestData requestData = new RequestData();
         String classCode = rwdQueryCriteria.getCriteria().get("classCode").textValue();
         if(StrUtil.isNotEmpty(classCode)){
@@ -388,12 +403,17 @@ public class AdmSystemController {
         requestData.setObjType(AdmSystem.OBJ_TYPE);
         requestData.setPage(rwdQueryCriteria.getPage());
         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;
+        Page<Map<String,Object>> result = DigitalObjectSimpleFacade.queryNotSureSystem(AdmContextUtil.toDmpContext().getGroupCode(), AdmContextUtil.toDmpContext().getProjectId(), AdmContextUtil.toDmpContext().getAppId(),null, requestData);
+        if(CollUtil.isNotEmpty(result.getRecords())){
+            AdmResponse response = new AdmResponse();
+            response.setPageSize(Integer.parseInt(String.valueOf(result.getSize())));
+            response.setPageNumber(Integer.parseInt(String.valueOf(result.getCurrent())));
+            response.setResult(DmpResult.SUCCESS);
+            response.setContent(result.getRecords());
+            response.setTotal(result.getTotal());
+            return response;
         }else{
-            return null;
+            return AdmResponse.success();
         }
     }