Browse Source

fix bug:兼容旧数据,根据建筑id删除建筑信息的问题

lijie 3 years ago
parent
commit
fd5e80106f

+ 6 - 7
src/main/java/com/persagy/proxy/object/controller/AdmBuildingController.java

@@ -75,22 +75,22 @@ public class AdmBuildingController {
         String msg = "建筑下包含其他对象实例,请解除关系后删除";
         AdmQueryCriteria admQueryCriteria = new AdmQueryCriteria();
         StringBuilder stringBuilder = new StringBuilder();
-        stringBuilder.append("buildingId in [");
+        stringBuilder.append(" buildingId in [");
         admBuildingMap.keySet().stream().forEach(buildingId -> {
             stringBuilder.append("'").append(buildingId).append("'").append(",");
         });
 
         String filters = StrUtil.sub(stringBuilder.toString(),0, -1);
-        filters+= "]";
+        filters+= "] ";
 
         admQueryCriteria.setFilters(filters);
         admQueryCriteria.setName(AdmFloor.OBJ_TYPE);
-        AdmResponse admResponseF = floorService.doQuery(AdmContextUtil.toDmpContext(), admQueryCriteria, AdmFloor.class);
+        AdmResponse admResponseF = floorService.query(admQueryCriteria);
         if(DmpResult.SUCCESS.equals(admResponseF.getResult()) && CollUtil.isNotEmpty(admResponseF.getContent())){
             return AdmResponse.failure(msg);
         }
         admQueryCriteria.setName(AdmSpace.OBJ_TYPE);
-        AdmResponse admResponseSpace = spaceService.doQuery(AdmContextUtil.toDmpContext(), admQueryCriteria, AdmSpace.class);
+        AdmResponse admResponseSpace = spaceService.query(admQueryCriteria);
         if(admResponseSpace.getResult().equals(DmpResult.SUCCESS) && CollUtil.isNotEmpty(admResponseSpace.getContent())){
             return AdmResponse.failure(msg);
         }
@@ -101,7 +101,7 @@ public class AdmBuildingController {
         }
 
         admQueryCriteria.setName(AdmEquipment.OBJ_TYPE);
-        AdmResponse admResponseEuip = equipmentService.doQuery(AdmContextUtil.toDmpContext(), admQueryCriteria, AdmEquipment.class);
+        AdmResponse admResponseEuip = equipmentService.query(admQueryCriteria);
         if(admResponseEuip.getResult().equals(DmpResult.SUCCESS) && CollUtil.isNotEmpty(admResponseEuip.getContent())){
             return AdmResponse.failure(msg);
         }
@@ -117,8 +117,7 @@ public class AdmBuildingController {
      */
     @PostMapping("/single/delete")
     public AdmResponse deleteSingle(@RequestBody List<AdmBuilding> vos) throws Exception {
-        delete(vos);
-        return AdmResponse.success();
+        return delete(vos);
     }
 
     /**

+ 3 - 3
src/main/java/com/persagy/proxy/object/controller/AdmEquipmentController.java

@@ -84,7 +84,7 @@ public class AdmEquipmentController {
 	public AdmResponse count(@RequestBody AdmQueryCriteria request) throws Exception {
 		request.setName(AdmEquipment.OBJ_TYPE);
 		request.setOnlyCount(true);
-		return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmEquipment.class);
+		return service.query(request);
 	}
 
 	/**
@@ -237,7 +237,7 @@ public class AdmEquipmentController {
 	public AdmResponse query(@RequestBody AdmQueryCriteria request) throws Exception {
 		// 组装上下文条件
 		request.setName(AdmEquipment.OBJ_TYPE);
-		return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmEquipment.class);
+		return service.query(request);
 	}
 
 	/**
@@ -269,7 +269,7 @@ public class AdmEquipmentController {
 		}else{
 			request.setFilters("objType in ['equipment','component']");
 		}
-		return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmEquipment.class);
+		return service.query(request);
 	}
 
 	/**

+ 3 - 3
src/main/java/com/persagy/proxy/object/controller/AdmFloorController.java

@@ -135,7 +135,7 @@ public class AdmFloorController {
         admQueryCriteria.setOnlyCount(true);
 
         admQueryCriteria.setName(AdmSpace.OBJ_TYPE);
-        AdmResponse admResponseSpace = spaceService.doQuery(AdmContextUtil.toDmpContext(), admQueryCriteria, AdmSpace.class);
+        AdmResponse admResponseSpace = spaceService.query(admQueryCriteria);
         if(admResponseSpace.getResult().equals(DmpResult.SUCCESS) && CollUtil.isNotEmpty(admResponseSpace.getContent())){
             return AdmResponse.failure(msg);
         }
@@ -145,7 +145,7 @@ public class AdmFloorController {
             return AdmResponse.failure(msg);
         }
         admQueryCriteria.setName(AdmEquipment.OBJ_TYPE);
-        AdmResponse admResponseEuip = equipmentService.doQuery(AdmContextUtil.toDmpContext(), admQueryCriteria, AdmEquipment.class);
+        AdmResponse admResponseEuip = equipmentService.query(admQueryCriteria);
         if(admResponseEuip.getResult().equals(DmpResult.SUCCESS) && CollUtil.isNotEmpty(admResponseEuip.getContent())){
             return AdmResponse.failure(msg);
         }
@@ -188,7 +188,7 @@ public class AdmFloorController {
             filters+= "]";
             admQueryCriteria.setFilters(filters);
             admQueryCriteria.setName("floor");
-            AdmResponse admResponseF = service.doQuery(AdmContextUtil.toDmpContext(), admQueryCriteria, AdmFloor.class);
+            AdmResponse admResponseF = service.query(admQueryCriteria);
             if(DmpResult.SUCCESS.equals(admResponseF.getResult()) && admResponseF.getTotal() > 0 && CollUtil.isNotEmpty(admResponseF.getContent())){
                 List<AdmFloor> vosOld = (List<AdmFloor>) admResponseF.getContent();
                 for(AdmFloor admFloorOld : vosOld){

+ 2 - 2
src/main/java/com/persagy/proxy/object/controller/AdmSpaceController.java

@@ -281,7 +281,7 @@ public class AdmSpaceController {
                     AdmQueryCriteria admQueryCriteria = new AdmQueryCriteria();
                     admQueryCriteria.setName(AdmFloor.OBJ_TYPE);
                     admQueryCriteria.setFilters("id = '"+id+"'");
-                    AdmResponse admResponseFl = floorService.doQuery( AdmContextUtil.toDmpContext(), admQueryCriteria, AdmFloor.class);
+                    AdmResponse admResponseFl = floorService.query(admQueryCriteria);
                     if(CollUtil.isNotEmpty(admResponseFl.getContent())){
                         AdmFloor floor = (AdmFloor) admResponseFl.getContent().get(0);
                         if (floor!=null){
@@ -437,7 +437,7 @@ public class AdmSpaceController {
     @PostMapping("/import")
     public AdmResponse importExcel(@RequestBody AdmQueryCriteria request) throws Exception {
         request.setName(AdmSpace.OBJ_TYPE);
-        return service.doQuery( AdmContextUtil.toDmpContext(), request, AdmSpace.class);
+        return service.query(request);
     }
 
 

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

@@ -445,7 +445,7 @@ public class AdmSystemController {
         AdmResponse floors = null;
         if(StrUtil.isNotEmpty(floorId)){
             AdmQueryCriteria admQueryCriteria = getAdmQueryCriteria(AdmFloor.OBJ_TYPE, floorId);
-            floors = floorService.doQuery(AdmContextUtil.toDmpContext(), admQueryCriteria, AdmFloor.class);
+            floors = floorService.query(admQueryCriteria);
         }
 
         ObjectNode buildingFloorInfo = JsonNodeFactory.instance.objectNode();

+ 11 - 0
src/main/java/com/persagy/proxy/object/service/IAdmEquipmentService.java

@@ -1,5 +1,7 @@
 package com.persagy.proxy.object.service;
 
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
+import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.service.IAdmBaseService;
 import com.persagy.proxy.object.model.AdmEquipment;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
@@ -47,4 +49,13 @@ public interface IAdmEquipmentService extends IAdmBaseService<AdmEquipment> {
      * @param vos
      */
     void ensureSpecialValues(InstanceUrlParam context, List<AdmEquipment> vos);
+    /***
+     * Description: 将原来重写的doQuery方法改为该方法,用于使用钩子方法调整查询参数
+     * @param admQueryCriteria : 请求参数
+     * @return : com.persagy.proxy.adm.request.AdmResponse
+     * @author : lijie
+     * @date :2021/10/29 11:42
+     * Update By lijie 2021/10/29 11:42
+     */
+    AdmResponse query(AdmQueryCriteria admQueryCriteria);
 }

+ 47 - 0
src/main/java/com/persagy/proxy/object/service/impl/AdmEquipmentServiceImpl.java

@@ -10,10 +10,13 @@ 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.common.helper.SpringHelper;
 import com.persagy.dmp.common.model.entity.BaseEntity;
 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.constant.GraphCodeEnum;
+import com.persagy.proxy.adm.constant.RelCodeEnum;
 import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.service.impl.AbstractAdmBaseServiceImpl;
@@ -142,6 +145,50 @@ public class AdmEquipmentServiceImpl extends AbstractAdmBaseServiceImpl<AdmEquip
             vo.setEquipCategory(category);
         }
     }
+    /***
+     * Description: 将原来重写的doQuery方法改为该方法,用于使用钩子方法调整查询参数
+     * @param admQueryCriteria : 请求参数
+     * @return : com.persagy.proxy.adm.request.AdmResponse
+     * @author : lijie
+     * @date :2021/10/29 11:42
+     * Update By lijie 2021/10/29 11:42
+     */
+    @Override
+    public AdmResponse query(AdmQueryCriteria admQueryCriteria) {
+        AdmResponse response = this.doQuery(AdmContextUtil.toDmpContext(), admQueryCriteria, AdmEquipment.class);
+        // 系统需要补充分类名称属性
+        ensureSpecialValues(AdmContextUtil.toDmpContext(), (List<AdmEquipment>) response.getContent());
+        return response;
+    }
+
+    @Override
+    protected void processDmpCriteria(QueryCriteria dmpRequest) {
+        ObjectNode criteria = dmpRequest.getCriteria();
+        if (null==criteria){
+            return;
+        }
+        if (criteria.has("floorId")){
+            // 有建筑id过滤
+            ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+            ObjectNode relationFrom = objectMapper.createObjectNode();
+            relationFrom.put("graphCode", GraphCodeEnum.MechInArch.name());
+            relationFrom.put("relCode", RelCodeEnum.Eq2Fl.name());
+            relationFrom.set("objTo",criteria.get("floorId"));
+            criteria.set("relationFrom",relationFrom);
+            criteria.remove("floorId");
+            return;
+        }
+        if (criteria.has("buildingId")){
+            // 有建筑id过滤
+            ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+            ObjectNode relationFrom = objectMapper.createObjectNode();
+            relationFrom.put("graphCode", GraphCodeEnum.MechInArch.name());
+            relationFrom.put("relCode", RelCodeEnum.Eq2Bd.name());
+            relationFrom.set("objTo",criteria.get("buildingId"));
+            criteria.set("relationFrom",relationFrom);
+            criteria.remove("buildingId");
+        }
+    }
 
     private DmpResult<List<ObjRelationDTO>> queryRelation(InstanceUrlParam context, Map<String, AdmEquipment> voMap){
         QueryCriteria dmpRequest = new QueryCriteria();

+ 11 - 0
src/main/java/com/persagy/proxy/object/service/impl/AdmSpaceServiceImpl.java

@@ -368,6 +368,17 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
             relationTo.set("objFrom",criteria.get("floorId"));
             criteria.set("relationTo",relationTo);
             criteria.remove("floorId");
+            return;
+        }
+        if (criteria.has("buildingId")){
+            // 有建筑id过滤
+            ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+            ObjectNode relationTo = objectMapper.createObjectNode();
+            relationTo.put("graphCode", GraphCodeEnum.ArchSubset.name());
+            relationTo.put("relCode", RelCodeEnum.Bd2Sp.name());
+            relationTo.set("objFrom",criteria.get("buildingId"));
+            criteria.set("relationTo",relationTo);
+            criteria.remove("buildingId");
         }
     }
 

+ 1 - 1
src/main/java/com/persagy/proxy/relation/controller/RelationFlAndBuController.java

@@ -90,7 +90,7 @@ public class RelationFlAndBuController {
         String filter = " id in ('" + StrUtil.join("','", idList) + "') ";
         AdmQueryCriteria criteria = new AdmQueryCriteria();
         criteria.setFilters(filter);
-        AdmResponse rs = spaceService.doQuery(AdmContextUtil.toDmpContext(), criteria, AdmSpace.class);
+        AdmResponse rs = spaceService.query(criteria);
         List<AdmSpace> spaces = (List<AdmSpace>) rs.getContent();
         Map<String, AdmSpace> admSpaceMap = spaces.stream().collect(Collectors.toMap(AdmSpace::getId, Function.identity()));
         List<AdmSpace> updateSpace = new ArrayList<>();

+ 0 - 1
src/main/java/com/persagy/proxy/relation/controller/RelationShContainSpBaseController.java

@@ -263,7 +263,6 @@ public class RelationShContainSpBaseController {
 
     /**
      * 查询空间类型和名称
-     * @param projectId projectId
      * @param shaftId shaftId 竖井id
      * @param param param
      * @return {@link AdmResponse}

+ 1 - 1
src/main/java/com/persagy/proxy/report/controller/AdmEquipShaftController.java

@@ -68,7 +68,7 @@ public class AdmEquipShaftController {
         request.setName(AdmEquipment.OBJ_TYPE);
         // 设置关系条件
         request.resetRelationCond(true, "MechInArch", "Eq2Sh", shaftId, false);
-        return equipmentService.doQuery(AdmContextUtil.toDmpContext(), request, AdmEquipment.class);
+        return equipmentService.query(request);
     }
 
     /**

+ 6 - 6
src/main/java/com/persagy/proxy/report/controller/AdmReportEquipController.java

@@ -86,7 +86,7 @@ public class AdmReportEquipController {
         cascadeSys.setName("linkSystem");
         cascade.add(cascadeSys);
         request.setCascade(cascade);
-        AdmResponse admResponse = equipmentService.doQuery(AdmContextUtil.toDmpContext(), request, AdmEquipment.class);
+        AdmResponse admResponse = equipmentService.query(request);
         List<AdmEquipment> equipmentList = (List<AdmEquipment>) admResponse.getContent();
         if(CollUtil.isNotEmpty(equipmentList)){
             equipmentList.stream().forEach(equip -> {
@@ -669,7 +669,7 @@ public class AdmReportEquipController {
             filter =  filter + ";id in "+arrayNode.toString();
             request.setFilters(filter);
 
-           AdmResponse admResponse = equipmentService.doQuery(AdmContextUtil.toDmpContext(), request, AdmEquipment.class);
+           AdmResponse admResponse = equipmentService.query(request);
            if(CollUtil.isNotEmpty(admResponse.getContent())){
                //处理数据
                List<ObjectNode> objectNodeList = (List<ObjectNode>) admResponse.getContent();
@@ -770,7 +770,7 @@ public class AdmReportEquipController {
             admQueryCriteriaObj.setName(AdmEquipment.OBJ_TYPE);
 
             admQueryCriteriaObj.setProjection(Arrays.asList("id", "name", "localId", "localName", "cadId", "bimId", "bimLocation", "infos", "classCode", "equipSerial", "bimFamilyName", "bimFamilySymbol"));
-            AdmResponse admResponse = equipmentService.doQuery(AdmContextUtil.toDmpContext(), admQueryCriteriaObj, AdmEquipment.class);
+            AdmResponse admResponse = equipmentService.query(admQueryCriteriaObj);
 
             Map<String, Integer> hashMap = new HashMap<>();
             List<AdmEquipment> admEquipmentList = (List<AdmEquipment>) admResponse.getContent();
@@ -781,7 +781,7 @@ public class AdmReportEquipController {
             if (page >= 2) {
                 for (long i = 2; i <= page; i++) {
                     admQueryCriteriaObj.setPageNumber(Integer.parseInt(String.valueOf(i)));
-                    admResponse = equipmentService.doQuery(AdmContextUtil.toDmpContext(), admQueryCriteriaObj, AdmEquipment.class);
+                    admResponse = equipmentService.query(admQueryCriteriaObj);
                     admEquipmentList = (List<AdmEquipment>) admResponse.getContent();
                     projectEquipment = JsonNodeUtils.toListNode(admEquipmentList, null, null);
                     calculate(dynamicInfoPointCodes, staticInfoPointCodes, projectEquipment, 0, hashMap);
@@ -834,7 +834,7 @@ public class AdmReportEquipController {
             admQueryCriteriaObj.setName(AdmEquipment.OBJ_TYPE);
 
             admQueryCriteriaObj.setProjection(Arrays.asList("id","name","localId","localName","cadId","bimId","bimLocation","infos","classCode","equipSerial","bimFamilyName","bimFamilySymbol"));
-            AdmResponse admResponse = equipmentService.doQuery(AdmContextUtil.toDmpContext(), admQueryCriteriaObj, AdmEquipment.class);
+            AdmResponse admResponse = equipmentService.query(admQueryCriteriaObj);
 
             Map<String,Integer> hashMap = new HashMap<>();
             List<AdmEquipment> admEquipmentList = (List<AdmEquipment>) admResponse.getContent();
@@ -845,7 +845,7 @@ public class AdmReportEquipController {
             if(page >= 2){
                 for(long i = 2; i <= page; i++){
                     admQueryCriteriaObj.setPageNumber(Integer.parseInt(String.valueOf(i)));
-                    admResponse = equipmentService.doQuery(AdmContextUtil.toDmpContext(), admQueryCriteriaObj, AdmEquipment.class);
+                    admResponse = equipmentService.query(admQueryCriteriaObj);
                     admEquipmentList = (List<AdmEquipment>) admResponse.getContent();
                     projectEquipment = JsonNodeUtils.toListNode(admEquipmentList,null,null);
                     calculate(gatherDynamicInfoCode, gatherStaticInfoCode, projectEquipment,0, hashMap);

+ 1 - 1
src/main/java/com/persagy/proxy/report/controller/AdmSpaceInfoController.java

@@ -175,7 +175,7 @@ public class AdmSpaceInfoController {
 		request.setName(AdmEquipment.OBJ_TYPE);
 		// 设置关系条件
 		request.resetRelationCond(true, graphCode, "Eq2Sp", type, spaceId, false);
-		return equipmentService.doQuery(AdmContextUtil.toDmpContext(), request, AdmEquipment.class);
+		return equipmentService.query(request);
 	}
 
 }

+ 1 - 1
src/main/java/com/persagy/proxy/report/controller/ComponentBuildingController.java

@@ -87,7 +87,7 @@ public class ComponentBuildingController {
 			String inSql = CollUtil.join(modelIds, StrUtil.COMMA,"'","'");
 			floorCriteria.setFilters(" modelId in (" + inSql + ") ");
 			floorCriteria.setOnlyCount(true);
-			AdmResponse floorRs = floorService.doQuery(context, floorCriteria, AdmFloor.class);
+			AdmResponse floorRs = floorService.query(floorCriteria);
 			// 设置次数
 			building.setCount(floorRs.getCount());
 		}

+ 1 - 1
src/main/java/com/persagy/proxy/report/controller/ComponentStatisticsController.java

@@ -193,7 +193,7 @@ public class ComponentStatisticsController {
 		AdmQueryCriteria criteria = new AdmQueryCriteria();
 		criteria.setName(AdmEquipment.OBJ_TYPE);
 		criteria.setOnlyCount(true);
-		AdmResponse rs = equipmentService.doQuery(context, criteria, AdmEquipment.class);
+		AdmResponse rs = equipmentService.query(criteria);
 		long equipCount = rs.getCount() == null ? 0L : rs.getCount().longValue();
 		// 查询关系数量
 		long relCount = relationReportService.countRelationObject(context.getGroupCode(), context.getProjectId(),

+ 1 - 1
src/main/java/com/persagy/proxy/report/service/impl/AdmLabslServiceImpl.java

@@ -179,7 +179,7 @@ public class AdmLabslServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> im
         });
         String filters = StrUtil.sub(stringBuilder.toString(),0, -1);
         request.setFilters("id in ["+filters+"]");
-        AdmResponse equipResponse = equipmentService.doQuery(context, request, AdmEquipment.class);
+        AdmResponse equipResponse = equipmentService.query(request);
         if(CollUtil.isEmpty(equipResponse.getContent())){
             throw new Exception("设备不存在");
         }