Browse Source

fix adm 空间台账,查询建筑楼层信息时查询楼层下空间数据量,获取空间数据量由查询记录改为查询数据量

lvxianyun 3 years ago
parent
commit
dc6ee0cf2c

+ 9 - 8
adm-business/adm-middleware/src/main/java/com/persagy/proxy/object/controller/AdmSpaceController.java

@@ -18,6 +18,7 @@ import com.persagy.proxy.adm.request.*;
 import com.persagy.proxy.adm.service.IAdmRelationService;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
 import com.persagy.proxy.adm.utils.ObjectNameUtil;
+import com.persagy.proxy.common.entity.DmpResult;
 import com.persagy.proxy.common.entity.RelationDTO;
 import com.persagy.proxy.object.model.AdmBuilding;
 import com.persagy.proxy.object.model.AdmFloor;
@@ -200,11 +201,6 @@ public class AdmSpaceController {
         AdmQueryCriteria criteriaFloor = new AdmQueryCriteria();
         criteriaFloor.setName(AdmFloor.OBJ_TYPE);
 
-        AdmQueryCriteria criteriaSpace = new AdmQueryCriteria();
-        criteriaSpace.setName("spaceList");
-        criteriaSpace.setFilters("state = 1");
-
-        criteriaFloor.setCascade(CollUtil.newArrayList(criteriaSpace));
         criteriaFloor.setOrders("floorSequenceID desc");
         request.setCascade(CollUtil.newArrayList(criteriaFloor));
         AdmResponse response = buildingService.doQueryBuildingFloor(AdmContextUtil.toDmpContext(), request);
@@ -213,9 +209,14 @@ public class AdmSpaceController {
             if(CollUtil.isNotEmpty(building.getFloor())){
                 List<AdmFloor> floors = building.getFloor();
                 floors.forEach(floor -> {
-                    if(CollUtil.isNotEmpty(floor.getSpaceList())){
-                        floor.setCount(floor.getSpaceList().size());
-                        floor.setSpaceList(null);
+                    AdmQueryCriteria criteriaSpace = new AdmQueryCriteria();
+                    criteriaSpace.setName(AdmSpace.OBJ_TYPE);
+                    criteriaSpace.setFilters("state = 1");
+                    criteriaSpace.addFilters("floorId = '" + floor.getId()+"'");
+                    criteriaSpace.setOnlyCount(true);
+                    AdmResponse admResponseSpace = service.query(criteriaSpace);
+                    if(admResponseSpace.getResult().equals(DmpResult.SUCCESS) && admResponseSpace.getCount() > 0){
+                        floor.setCount(admResponseSpace.getCount().intValue());
                     }else{
                         floor.setCount(0);
                     }