Browse Source

fix bug:修改根据建筑楼层查询设备和系统查询不到关联的设备和系统

lijie 3 years ago
parent
commit
63b31d193c

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

@@ -15,9 +15,11 @@ import cn.hutool.poi.excel.WorkbookUtil;
 import cn.hutool.poi.excel.cell.CellUtil;
 import cn.hutool.poi.excel.editors.TrimEditor;
 import com.alibaba.excel.EasyExcel;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 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.constant.CommonConstant;
 import com.persagy.dmp.common.constant.ResponseCode;
 import com.persagy.dmp.common.context.AppContext;
 import com.persagy.dmp.common.exception.BusinessException;
@@ -29,6 +31,7 @@ import com.persagy.dmp.digital.client.DigitalObjectFacade;
 import com.persagy.dmp.simple.client.DigitalObjectSimpleFacade;
 import com.persagy.proxy.adm.constant.AdmCommonConstant;
 import com.persagy.proxy.adm.constant.AdmDictCategoryEnum;
+import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.request.*;
 import com.persagy.proxy.adm.service.IAdmRelationService;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
@@ -365,18 +368,24 @@ public class AdmEquipmentController {
 		// 这里应该要移到实现类里
 		List<RelationDTO> relationDTOS = new ArrayList<>(16);
 		for(AdmEquipment vo:vos) {
+			if (StrUtil.isBlank(vo.getId())){
+				vo.setId("Eq"+IdWorker.getIdStr());
+			}
 			if (StrUtil.isEmpty(vo.getName())){
 				vo.setName(ObjectNameUtil.objectName("设备-"));
 			}
 			List<AdmSystem> systems = vo.getLinkSystem();
-			if(CollUtil.isEmpty(systems)){
-				continue;
-			}
-			for(AdmSystem system:systems) {
-				relationDTOS.add(new RelationDTO(null, "MechSubset", "Sy2Eq", null , system.getId(), vo.getId()));
+			if(CollUtil.isNotEmpty(systems)){
+				for(AdmSystem system:systems) {
+					relationDTOS.add(new RelationDTO(StrUtil.format(CommonConstant.DEFAULT_GRAPH_ID_FORMAT,
+							AdmRelationTypeEnum.EQ2SY.getGraphCode()), AdmRelationTypeEnum.EQ2SY.getGraphCode(),
+							AdmRelationTypeEnum.EQ2SY.getRelCode(), null , system.getId(), vo.getId()));
+				}
 			}
 		}
-		relationService.doSave(AdmContextUtil.toDmpContext(),relationDTOS);
+		if (CollUtil.isNotEmpty(relationDTOS)){
+			relationService.doSave(AdmContextUtil.toDmpContext(),relationDTOS);
+		}
 		vos = service.doInsert(AdmContextUtil.toDmpContext(), AdmEquipment.class, vos);
 		return AdmCreateResponse.success(vos);
 	}

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

@@ -4,11 +4,13 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.excel.EasyExcel;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 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.constant.CommonConstant;
 import com.persagy.dmp.common.constant.ResponseCode;
 import com.persagy.dmp.common.exception.BusinessException;
 import com.persagy.dmp.common.model.entity.BaseEntity;
@@ -22,6 +24,7 @@ import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectRelation;
 import com.persagy.dmp.simple.client.DigitalObjectSimpleFacade;
 import com.persagy.proxy.adm.constant.AdmCommonConstant;
+import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.request.*;
 import com.persagy.proxy.adm.service.IAdmRelationService;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
@@ -104,11 +107,14 @@ public class AdmSystemController {
         QueryCriteria defineCriteria = new QueryCriteria();
         ObjectNode criteria = JsonNodeFactory.instance.objectNode();
         ArrayNode array = criteria.putObject("code").putArray("$in");
-        admSystemMap.keySet().stream().forEach(classCode -> array.add(classCode));
+        admSystemMap.keySet().forEach(classCode -> array.add(classCode));
         defineCriteria.setCriteria(criteria);
         List<ObjectTypeDefine> defineList = DigitalDefineFacade.queryObjectType(AdmContextUtil.toDmpContext().getGroupCode(),AdmContextUtil.toDmpContext().getProjectId(),AdmContextUtil.toDmpContext().getAppId(),null,defineCriteria);
         Map<String, ObjectTypeDefine> defineMap = CollUtil.fieldValueMap(defineList, "code");
-        vos.stream().forEach(admSystem -> {
+        vos.forEach(admSystem -> {
+            if (StrUtil.isBlank(admSystem.getId())){
+                admSystem.setId("Sy"+ IdWorker.getIdStr());
+            }
             if(StrUtil.isEmpty(admSystem.getName())){
                 if(CollUtil.isNotEmpty(defineList) && defineMap.containsKey(admSystem.getClassCode())){
                     admSystem.setName(ObjectNameUtil.objectName(defineMap.get(admSystem.getClassCode()).getName()+"系统-"));
@@ -117,34 +123,35 @@ public class AdmSystemController {
                 }
             }
         });
-        List<AdmSystem> unRelationSys = new ArrayList<>();
         List<AdmSystem> admSystemList = new ArrayList<>(vos.size());
         List<RelationDTO> relationDTOS = new ArrayList<>(vos.size());
-        vos.stream().forEach(admSystem -> {
+        vos.forEach(admSystem -> {
             if(CollUtil.isNotEmpty(admSystem.getBuildingFloorInfoList())){
-                List<AdmSystem> admSystems = service.doInsert(AdmContextUtil.toDmpContext(), AdmSystem.class, CollUtil.newArrayList(admSystem));
                 //添加关系
-                String systemId = admSystems.get(0).getId();
+                String systemId = admSystem.getId();
                 admSystem.getBuildingFloorInfoList().forEach(info -> {
                     String floorId = info.get("FloorID") == null ? null : info.get("FloorID").textValue();
                     String buildID = info.get("BuildID") == null ? null : info.get("BuildID").textValue();
                     if(StrUtil.isNotEmpty(floorId)){
-                        relationDTOS.add(new RelationDTO(null, "MechInArch", "Sy2Fl", null, systemId , floorId));
+                        relationDTOS.add(new RelationDTO(StrUtil
+                                .format(CommonConstant.DEFAULT_GRAPH_ID_FORMAT, AdmRelationTypeEnum.SY2FL.getGraphCode()),
+                                AdmRelationTypeEnum.SY2FL.getGraphCode(), AdmRelationTypeEnum.SY2FL.getRelCode(),
+                                null, systemId , floorId));
                     }
                     if(StrUtil.isNotEmpty(buildID)){
-                        relationDTOS.add(new RelationDTO(null, "MechInArch", "Sy2Bd", null, systemId , buildID));
+                        relationDTOS.add(new RelationDTO(StrUtil
+                                .format(CommonConstant.DEFAULT_GRAPH_ID_FORMAT, AdmRelationTypeEnum.SY2BD_MECHINARCH.getGraphCode()),
+                                AdmRelationTypeEnum.SY2BD_MECHINARCH.getGraphCode(), AdmRelationTypeEnum.SY2BD_MECHINARCH.getRelCode(),
+                                null, systemId , buildID));
                     }
                 });
-                admSystemList.addAll(admSystems);
-            }else{
-                unRelationSys.add(admSystem);
             }
         });
         if(CollUtil.isNotEmpty(relationDTOS)){
             relationService.doSave(AdmContextUtil.toDmpContext(), relationDTOS);
         }
-        if(CollUtil.isNotEmpty(unRelationSys)){
-            List<AdmSystem> systemList = service.doInsert(AdmContextUtil.toDmpContext(), AdmSystem.class, unRelationSys);
+        if(CollUtil.isNotEmpty(vos)){
+            List<AdmSystem> systemList = service.doInsert(AdmContextUtil.toDmpContext(), AdmSystem.class, vos);
             admSystemList.addAll(systemList);
         }
         return AdmCreateResponse.success(admSystemList);

+ 1 - 1
src/main/java/com/persagy/proxy/object/service/impl/AdmSystemServiceImpl.java

@@ -248,7 +248,7 @@ public class AdmSystemServiceImpl extends AbstractAdmBaseServiceImpl<AdmSystem>
             }
             admFloorList.forEach(admFloor -> {
                 ObjectNode infobd = JsonNodeFactory.instance.objectNode();
-                infobd.put("BuildID",admFloor.getBuildingId());
+                infobd.put("BuildID",admFloor.getBuilding()!=null?admFloor.getBuilding().getId() : "");
                 infobd.put("BuildName",admFloor.getBuilding() != null ? admFloor.getBuilding().getLocalName() : "");
                 if(!buildingFloorInfoList.contains(infobd)){
                     buildingFloorInfoList.add(infobd);