Sfoglia il codice sorgente

空间关联查询

yucheng 3 anni fa
parent
commit
d01052319f

+ 47 - 6
src/main/java/com/persagy/proxy/object/controller/AdmComponentController.java

@@ -1,14 +1,21 @@
 package com.persagy.proxy.object.controller;
 
 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.object.model.AdmComponent;
+import com.persagy.dmp.common.exception.BusinessException;
+import com.persagy.proxy.adm.constant.AdmDictCategoryEnum;
 import com.persagy.proxy.adm.request.AdmCreateRequest;
 import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
-import com.persagy.proxy.object.service.IAdmComponentService;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
 import com.persagy.proxy.adm.utils.ObjectNameUtil;
+import com.persagy.proxy.dictionary.model.AdmDict;
+import com.persagy.proxy.dictionary.model.AdmObjectType;
+import com.persagy.proxy.dictionary.service.IAdmDictService;
+import com.persagy.proxy.object.model.AdmComponent;
+import com.persagy.proxy.object.service.IAdmComponentService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -16,7 +23,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.ws.rs.QueryParam;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Adm 部件 API
@@ -29,10 +38,11 @@ import java.util.List;
 public class AdmComponentController {
     @Autowired
     private IAdmComponentService service;
+    @Autowired
+    private IAdmDictService dictService;
 
     /**
      * 统计
-     * 
      * @param request
      * @return
      * @throws Exception
@@ -55,13 +65,44 @@ public class AdmComponentController {
         if(CollUtil.isEmpty(vos)){
             return AdmResponse.success();
         }
-        //创建部件
+        // 查询所有设备类型
+        AdmDict dictCond = AdmDict.builder().type(AdmDictCategoryEnum.COMPONENT.getValue()).build();
+        AdmResponse dictResponse = dictService.queryCategory(AdmContextUtil.toDmpContext(), dictCond, AdmObjectType.class);
+        List<AdmObjectType> dicts = (List<AdmObjectType>) dictResponse.getContent();
+        // 转换为Map,key为编码后4位。用于适配旧类型编码
+        Map<String, AdmObjectType> shortDictMap = new HashMap<>();
+        Map<String, AdmObjectType> fullDictMap = new HashMap<>();
+        for(int i = 0,j = CollUtil.size(dicts);i < j;i++) {
+            AdmObjectType dict = dicts.get(i);
+            shortDictMap.put(StrUtil.subSufByLength(dict.getCode(), 6), dict);
+            fullDictMap.put(dict.getCode(), dict);
+        }
+        // 设备属性调整
         vos.stream().forEach(component -> {
+            // 如果不是Eq开头,则重新生成ID
+            if(StrUtil.startWith(component.getId(), "Ec")) {
+                component.setId("Ec"+ IdUtil.simpleUUID());
+            }
+            // 类型编码适配
+            String classCode = component.getClassCode();
+            // 如果编码为空,或在4位、6位里都不存在,则报错
+            if(StrUtil.isBlank(classCode) ||
+                    (shortDictMap.get(classCode) == null && fullDictMap.get(classCode) == null)) {
+                throw new BusinessException(StrUtil.format("没有找到对象类型【{}】!", component.getClassCode()));
+            }
+            // 如果少于6位,则需要适配新编码
+            if(classCode.length() < 8) {
+                AdmObjectType dict = MapUtil.get(shortDictMap, classCode, AdmObjectType.class);
+                component.setClassCode(dict.getCode());
+            }
+            // 如果名称为空,则提供默认名称
             if (StrUtil.isEmpty(component.getName())){
-                component.setName(ObjectNameUtil.objectName("部件-"));
+                AdmObjectType dict = MapUtil.get(fullDictMap, component.getClassCode(), AdmObjectType.class);
+                String preName = dict == null ? "部件" : dict.getName();
+                component.setName(ObjectNameUtil.objectName(preName + "-"));
             }
         });
-        vos = service.doInsertExt(AdmContextUtil.toDmpContext(), AdmComponent.class, vos);
+        vos = service.doInsert(AdmContextUtil.toDmpContext(), AdmComponent.class, vos);
         return AdmResponse.success(vos);
     }
 

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

@@ -132,10 +132,11 @@ public class AdmEquipmentController {
 			// 如果名称为空,则提供默认名称
 			if (StrUtil.isEmpty(equipment.getName())){
 				AdmObjectType dict = MapUtil.get(fullDictMap, equipment.getClassCode(), AdmObjectType.class);
-				equipment.setName(ObjectNameUtil.objectName(dict.getName() + "-"));
+				String preName = dict == null ? "设备" : dict.getName();
+				equipment.setName(ObjectNameUtil.objectName(preName + "-"));
 			}
 		});
-		vos = service.doInsertEuip(AdmContextUtil.toDmpContext(), AdmEquipment.class, vos);
+		vos = service.doInsert(AdmContextUtil.toDmpContext(), AdmEquipment.class, vos);
 		return AdmResponse.success(vos);
 	}
 

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

@@ -1,28 +1,14 @@
 package com.persagy.proxy.object.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.persagy.dmp.basic.model.QueryCriteria;
-import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.proxy.adm.service.impl.AbstractAdmBaseServiceImpl;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
 import com.persagy.proxy.object.model.AdmComponent;
 import com.persagy.proxy.object.service.IAdmComAndEquipService;
 import com.persagy.proxy.object.service.IAdmComponentService;
-import com.persagy.proxy.adm.utils.ObjectNameUtil;
-import com.persagy.proxy.common.client.DmpRwdClient;
-import com.persagy.proxy.common.entity.DmpResult;
-import com.persagy.proxy.common.entity.InstanceUrlParam;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
 
 /**
  * ADM 组件 服务
@@ -32,37 +18,11 @@ import java.util.stream.Collectors;
 @Service
 public class AdmComponentServiceImpl extends AbstractAdmBaseServiceImpl<AdmComponent> implements IAdmComponentService, IAdmComAndEquipService {
 
-    @Autowired
-    private DmpRwdClient rwdClient;
-    @Autowired
-    private ObjectMapper objectMapper;
-
     @Override
     public List<AdmComponent> doInsertExt(InstanceUrlParam context, Class<AdmComponent> clazz, List<AdmComponent> voList) {
         if(CollUtil.isEmpty(voList)) {
             return null;
         }
-        Set<String> classCodes = voList.stream().map(AdmComponent::getClassCode).collect(Collectors.toSet());
-        //查询定义类型
-        QueryCriteria criteriaObject = getDmpCriteria(context, classCodes, AdmComponent.OBJ_TYPE);
-        JSONObject paraPe = null;
-        try {
-            String paraStr = objectMapper.writeValueAsString(criteriaObject);
-            paraPe = JSONObject.parseObject(paraStr);
-        } catch (JsonProcessingException e) {
-            throw new RuntimeException("转换查询条件出错:" + e.getMessage());
-        }
-        DmpResult<JSONArray> resultDef = rwdClient.queryDefClass(context, paraPe);
-        Map<String, ObjectTypeDefine> finalDefClassMap = getDefineMap(resultDef);
-        // 设备名字处理
-        voList.forEach(component -> {
-            if (StrUtil.isNotEmpty(component.getName()) && CollUtil.isNotEmpty(finalDefClassMap) && finalDefClassMap.containsKey(component.getClassCode())) {
-                ObjectTypeDefine defclass = finalDefClassMap.get(component.getClassCode());
-                component.setName(ObjectNameUtil.objectName(defclass.getName()+"-"));
-            }else{
-                component.setName(ObjectNameUtil.objectName("部件-"));
-            }
-        });
         return doInsert(context, clazz, voList);
     }