Browse Source

fix bug:创建部件后找不到部件

lijie 3 năm trước cách đây
mục cha
commit
d54e9f8e90

+ 1 - 0
src/main/java/com/persagy/proxy/adm/constant/AdmObjectType.java

@@ -16,6 +16,7 @@ public enum AdmObjectType {
     SPACE("space", "空间"),
     SYSTEM("system", "系统"),
     EQUIPMENT("equipment", "设备"),
+    EQUIPMENT_SHORT("Eq", "设备"),
     SHAFT("shaft", "竖井"),
     COMPONENT("component", "部件"),
     VIRTUAL("virtual", "虚拟对象"),

+ 36 - 4
src/main/java/com/persagy/proxy/object/controller/AdmComponentController.java

@@ -4,13 +4,20 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
-import com.persagy.proxy.adm.constant.AdmDictCategoryEnum;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.dmp.common.constant.CommonConstant;
+import com.persagy.dmp.common.helper.SpringHelper;
+import com.persagy.dmp.digital.client.DigitalRelationFacade;
+import com.persagy.dmp.digital.entity.ObjectRelation;
+import com.persagy.proxy.adm.constant.*;
 import com.persagy.proxy.adm.request.AdmCreateRequest;
 import com.persagy.proxy.adm.request.AdmCreateResponse;
 import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
 import com.persagy.proxy.adm.utils.ObjectNameUtil;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
 import com.persagy.proxy.dictionary.model.AdmDict;
 import com.persagy.proxy.dictionary.model.AdmObjectType;
 import com.persagy.proxy.dictionary.service.IAdmDictService;
@@ -81,10 +88,13 @@ public class AdmComponentController {
         }
         // 设备属性调整
         List<AdmComponent> filterVOs = new ArrayList<>();
+        List<ObjectNode> relations = new ArrayList<>();
+        ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+        InstanceUrlParam context = AdmContextUtil.toDmpContext();
         for(AdmComponent component:vos) {
             // 如果不是Eq开头,则重新生成ID
-            if(StrUtil.startWith(component.getId(), "Ec")) {
-                component.setId("Ec"+ IdUtil.simpleUUID());
+            if(!StrUtil.startWith(component.getId(), "Ec")) {
+                component.setId("Ec"+context.getProjectId().substring(2)+ IdUtil.simpleUUID());
             }
             // 类型编码适配
             String classCode = component.getClassCode();
@@ -106,11 +116,33 @@ public class AdmComponentController {
                 String preName = dict == null ? "部件" : dict.getName();
                 component.setName(ObjectNameUtil.objectName(preName + "-"));
             }
+            // 处理设备与部件的关系
+            if (StrUtil.isNotBlank(component.getParentId())
+                    && component.getParentId().startsWith("Eq")){
+                ObjectNode node = objectMapper.createObjectNode();
+                node.putPOJO("groupCode",context.getGroupCode());
+                node.putPOJO("projectId",context.getProjectId());
+                node.putPOJO("createApp",AdmCommonConstant.APP_ID);
+                node.putPOJO("creator",context.getUserId());
+                node.putPOJO("updateApp",AdmCommonConstant.APP_ID);
+                node.putPOJO("modifier",context.getUserId());
+                node.putPOJO("graphCode",GraphCodeEnum.MechSubset.name());
+                node.putPOJO("relCode",RelCodeEnum.Eq2Ec.name());
+                node.putPOJO("graphId",StrUtil.format(CommonConstant.DEFAULT_GRAPH_ID_FORMAT,GraphCodeEnum.MechSubset.name()));
+                node.putPOJO("valid",1);
+                node.putPOJO("objFrom",component.getParentId());
+                node.putPOJO("objTo",component.getId());
+                relations.add(node);
+            }
+
         }
         if(CollUtil.isEmpty(filterVOs)){
             return AdmCreateResponse.success();
         }
-        filterVOs = service.doInsert(AdmContextUtil.toDmpContext(), AdmComponent.class, filterVOs);
+        filterVOs = service.doInsert(context, AdmComponent.class, filterVOs);
+        if (CollUtil.isNotEmpty(relations)){
+            DigitalRelationFacade.create(context.getGroupCode(),context.getProjectId(),AdmCommonConstant.APP_ID,context.getUserId(),relations);
+        }
         return AdmCreateResponse.success(filterVOs);
     }