Procházet zdrojové kódy

导入功能开发、导出代码优化

Lifan před 1 rokem
rodič
revize
160ebf9d91

+ 7 - 4
application/src/main/java/org/thingsboard/server/aspect/CompleteDetailsDataAop.java

@@ -11,10 +11,10 @@ import org.aspectj.lang.reflect.MethodSignature;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
-import org.thingsboard.server.service.nanxi.IPageDataConvertService;
+import org.thingsboard.server.service.nanxi.IBasicDataConvertService;
+import org.thingsboard.server.utils.Cache;
 
 import java.lang.reflect.Field;
-import java.util.List;
 
 @Aspect
 @Component
@@ -22,7 +22,7 @@ import java.util.List;
 @Slf4j
 public class CompleteDetailsDataAop {
     @Autowired
-    private IPageDataConvertService pageDataConvertService;
+    private IBasicDataConvertService pageDataConvertService;
 
     @Pointcut(value = "@annotation(org.thingsboard.server.anno.CompleteDetailsData)")
     private void pointCut() {}
@@ -34,6 +34,7 @@ public class CompleteDetailsDataAop {
     }
     @AfterReturning(value = "pointCut()",returning = "methodResult")
     public void setData(JoinPoint joinPoint, Object methodResult) throws Throwable {
+        Cache cache = new Cache();
         try {
             MethodSignature ms = (MethodSignature) joinPoint.getSignature();
             //拿到setSex方法,方便后面通过反射调用sexSex方法给属性赋值
@@ -42,10 +43,12 @@ public class CompleteDetailsDataAop {
             items.setAccessible(true);
             Object obj = items.get(methodResult);
             if(obj != null){
-                pageDataConvertService.pageDataConvert(obj);
+                pageDataConvertService.pageDataConvert(obj, cache);
             }
         }catch (Throwable e){
             throw e;
+        }finally {
+            cache.clearCache();
         }
 
     }

+ 7 - 3
application/src/main/java/org/thingsboard/server/aspect/CompletePageDataAop.java

@@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
 import org.thingsboard.server.service.nanxi.*;
+import org.thingsboard.server.utils.Cache;
 
 import java.lang.reflect.Field;
 import java.util.List;
@@ -22,7 +23,7 @@ import java.util.List;
 @Slf4j
 public class CompletePageDataAop {
     @Autowired
-    private IPageDataConvertService pageDataConvertService;
+    private IBasicDataConvertService pageDataConvertService;
 
     @Pointcut(value = "@annotation(org.thingsboard.server.anno.CompletePageData)")
     private void pointCut() {}
@@ -34,18 +35,21 @@ public class CompletePageDataAop {
     }
     @AfterReturning(value = "pointCut()",returning = "methodResult")
     public void setData(JoinPoint joinPoint, Object methodResult) throws Throwable {
+        Cache cache = new Cache();
         try {
             MethodSignature ms = (MethodSignature) joinPoint.getSignature();
-            //拿到setSex方法,方便后面通过反射调用sexSex方法给属性赋值
             Class<?> aClass = methodResult.getClass();
             Field items = aClass.getDeclaredField("items");
             items.setAccessible(true);
             List obj = (List)items.get(methodResult);
+
             for (int i = 0; i < obj.size(); i++) {
-                pageDataConvertService.pageDataConvert(obj.get(i));
+                pageDataConvertService.pageDataConvert(obj.get(i), cache);
             }
         }catch (Throwable e){
             throw e;
+        }finally {
+            cache.clearCache();
         }
 
     }

+ 22 - 1
application/src/main/java/org/thingsboard/server/domain/NxEventContactConfig.java

@@ -122,7 +122,28 @@ public class NxEventContactConfig extends BaseEntity{
      * 预案名称
      */
     private String reservePlanName;
-    
+    /**
+     * 是否审核
+     */
+    private String isReviewed;
+    /**
+     * 审核单位id
+     */
+    private String reviewedCompany;
+    /**
+     * 审核单位名称
+     */
+    @TableField(exist = false)
+    private String reviewedCompanyName;
+    /**
+     * 审核人员id
+     */
+    private String reviewedUser;
+    /**
+     * 审核人员名称
+     */
+    @TableField(exist = false)
+    private String reviewedUserName;
 
     /**
      * 关联专家

+ 53 - 0
application/src/main/java/org/thingsboard/server/glossary/constants/DataConvertMap.java

@@ -0,0 +1,53 @@
+package org.thingsboard.server.glossary.constants;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class DataConvertMap {
+    public static final Map<String, Object> pageConvertMap = new ConcurrentHashMap<>()
+    {{
+        pageConvertMap.put("companyId", "setCompanyName");
+        pageConvertMap.put("reviewedCompany", "setReviewedCompanyName");
+        pageConvertMap.put("leadingCompanyId", "setLeadingCompanyName");
+        pageConvertMap.put("liableCompanyId", "setLiableCompanyName");
+        pageConvertMap.put("cooperateCompanyId", "setCooperateCompanyName");
+        pageConvertMap.put("leadingDepartmentId", "leadingDepartmentId");
+        pageConvertMap.put("cooperateDepartmentId", "setCooperateDepartmentName");
+        pageConvertMap.put("areaCode", "setAreaName");
+        pageConvertMap.put("carTypeCode", "setCarTypeName");
+        pageConvertMap.put("typeCode", "setTypeName");
+        pageConvertMap.put("domainId", "setDomainName");
+        pageConvertMap.put("industryId", "setIndustryName");
+        pageConvertMap.put("responseLevelCode", "setResponseLevelName");
+        pageConvertMap.put("eventLevelCode", "setEventLevelName");
+        pageConvertMap.put("alarmLevelCode", "setAlarmLevelName");
+        pageConvertMap.put("alarmRiskLevelCode", "setAlarmRiskLevelName");
+        pageConvertMap.put("alarmTypeCode", "setAlarmTypeName");
+        pageConvertMap.put("productId", "setProductName");
+        pageConvertMap.put("warningLevelCode", "setWarningLevelName");
+        pageConvertMap.put("expertGender", "setExpertGenderText");
+        pageConvertMap.put("academicDegree", "setAcademicDegreeText");
+        pageConvertMap.put("highestEducation", "setHighestEducationText");
+        pageConvertMap.put("expertTitle", "setExpertTitleText");
+        pageConvertMap.put("workState", "setWorkStateText");
+        pageConvertMap.put("riskLevelCode", "setRiskLevelName");
+        pageConvertMap.put("warningRiskLevelCode", "setWarningRiskLevelName");
+        pageConvertMap.put("levelCode", "setLevelName");
+        pageConvertMap.put("eventTypeId", "setEventType");
+        pageConvertMap.put("storehouseId", "setStorehouseName");
+        pageConvertMap.put("warningTypeId", "setWarningTypeName");
+        pageConvertMap.put("reservePlanId", "setReservePlanName");
+        pageConvertMap.put("expertId", "setExpertName");
+        pageConvertMap.put("liableId", new String[]{"setLiableName", "setLiablePosition", "setLiablePhone"});
+        pageConvertMap.put("contactId", new String[]{"setContactName", "setContactPosition", "setContactPhone"});
+        pageConvertMap.put("leadingPersonId", "setLeadingPersonName");
+        pageConvertMap.put("reviewedUser", "setReviewedUserName");
+        pageConvertMap.put("cooperatePersonId", "setCooperatePersonName");
+        pageConvertMap.put("leaderId", new String[]{"setLeaderName", "setLeaderPhone"});
+    }};
+
+    public static final String [] basicConvertMap = new String[]{"companyId,leadingCompanyId,liableCompanyId,cooperateCompanyId", "leadingDepartmentId,cooperateDepartmentId"
+            , "areaCode", "carTypeCode,typeCode,domainId,industryId,responseLevelCode,eventLevelCode,alarmLevelCode,alarmRiskLevelCode,alarmTypeCode,productId,warningLevelCode" +
+            ",expertGender,academicDegree,highestEducation,expertTitle,workState,riskLevelCode,warningRiskLevelCode,levelCode", "eventTypeId", "storehouseId", "warningTypeId"
+            , "reservePlanId", "expertId", "liableId,contactId,leadingPersonId,cooperatePersonId,leaderId,reviewedUser"};
+}

+ 22 - 0
application/src/main/java/org/thingsboard/server/service/nanxi/IBasicDataConvertService.java

@@ -0,0 +1,22 @@
+package org.thingsboard.server.service.nanxi;
+
+import org.thingsboard.server.utils.Cache;
+
+import java.lang.reflect.InvocationTargetException;
+
+/**
+ * @author LF
+ * @date 2023-05-04
+ *
+ * @description
+ */
+public interface IBasicDataConvertService {
+
+    /**
+    * 数据转换
+    * @param obj
+    * @return
+    */
+    void pageDataConvert(Object obj, Cache cache) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, NoSuchFieldException;
+
+}

+ 0 - 27
application/src/main/java/org/thingsboard/server/service/nanxi/IPageDataConvertService.java

@@ -1,27 +0,0 @@
-package org.thingsboard.server.service.nanxi;
-
-import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO;
-import org.thingsboard.server.common.data.yunteng.dto.SysAreaDTO;
-import org.thingsboard.server.common.data.yunteng.dto.SysDictItemDTO;
-import org.thingsboard.server.dao.yunteng.entities.SysDeptEntity;
-import org.thingsboard.server.domain.UserInfo;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.List;
-
-/**
- * @author LF
- * @date 2023-05-04
- *
- * @description
- */
-public interface IPageDataConvertService {
-
-    /**
-    * 数据转换
-    * @param obj
-    * @return
-    */
-    void pageDataConvert(Object obj) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, NoSuchFieldException;
-
-}

+ 116 - 0
application/src/main/java/org/thingsboard/server/service/nanxi/impl/BasicDataConvertServiceImpl.java

@@ -0,0 +1,116 @@
+package org.thingsboard.server.service.nanxi.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.thingsboard.server.common.data.StringUtils;
+import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO;
+import org.thingsboard.server.common.data.yunteng.dto.SysAreaDTO;
+import org.thingsboard.server.common.data.yunteng.dto.SysDictItemDTO;
+import org.thingsboard.server.dao.yunteng.entities.SysDeptEntity;
+import org.thingsboard.server.domain.*;
+import org.thingsboard.server.service.nanxi.*;
+import org.thingsboard.server.utils.Cache;
+import org.thingsboard.server.utils.ReflectUtils;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+import static org.thingsboard.server.glossary.constants.DataConvertMap.basicConvertMap;
+import static org.thingsboard.server.glossary.constants.DataConvertMap.pageConvertMap;
+
+/**
+ * @author LF
+ * @date 2023-05-08
+ *
+ * @description
+ */
+@Service
+public class BasicDataConvertServiceImpl implements IBasicDataConvertService {
+
+    @Autowired
+    private ICommonService commonService;
+    @Autowired
+    private INxEventTypeManagementService eventTypeManagementService;
+    @Autowired
+    private INxWarningTypeManagementService warningTypeManagementService;
+    @Autowired
+    private INxReservePlanService reservePlanService;
+    @Autowired
+    private INxExpertDatabaseService expertDatabaseService;
+    @Autowired
+    private INxStorehouseManagementService storehouseManagementService;
+    @Override
+    public void pageDataConvert(Object item, Cache cache) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, NoSuchFieldException {
+        // 遍历数据
+        for (Map.Entry<String, Object> entry : pageConvertMap.entrySet()) {
+            String key = entry.getKey();
+            Object value = entry.getValue();
+            // 处理每个键值对的逻辑
+            if(ReflectUtils.hasField(item, key)){
+                Field field = item.getClass().getDeclaredField(key);
+                field.setAccessible(true);
+                String codeVal = String.valueOf(field.get(item));
+                if(StringUtils.isEmpty(codeVal)) continue;
+                if(value instanceof String){
+                    this.invoke(item, codeVal, value.toString(), cache);
+                } else if (value instanceof String []) {
+                    for (String f : (String[]) value) {
+                        this.invoke(item, codeVal, f, cache);
+                    }
+                }
+            }
+        }
+    }
+    private void invoke(Object item, String keyVal, String field, Cache cache) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
+        Method setMethodName = item.getClass().getMethod(field, String.class);
+        if(!cache.containsKey(keyVal)){
+            cache.putCache(keyVal, execute(keyVal));
+        }
+        setMethodName.invoke(item, cache.getCache(keyVal));
+
+    }
+
+    private String execute(String keyword){
+        if(basicConvertMap[0].contains(keyword)){
+            OrganizationDTO organization = commonService.findTkOrganizationById(keyword);
+            return Objects.isNull(organization) ? null : organization.getName();
+        } else if (basicConvertMap[1].contains(keyword)) {
+            SysDeptEntity dept = commonService.findDeptById(keyword);
+            return Objects.isNull(dept) ? null : dept.getDeptName();
+        } else if (basicConvertMap[2].contains(keyword)) {
+            SysAreaDTO area = commonService.findAreaById(Long.parseLong(keyword));
+            return Objects.isNull(area) ? null : area.getName();
+        } else if (basicConvertMap[3].contains(keyword)) {
+            SysDictItemDTO dictItem = commonService.findSysDictItemById(keyword);
+            return Objects.isNull(dictItem) ? null : dictItem.getItemText();
+        } else if (basicConvertMap[4].contains(keyword)) {
+            NxEventTypeManagement eventType = eventTypeManagementService.getById(keyword);
+            return Objects.isNull(eventType) ? null : eventType.getEventType();
+        } else if (basicConvertMap[5].contains(keyword)) {
+            NxStorehouseManagement storehouse = storehouseManagementService.getById(keyword);
+            return Objects.isNull(storehouse) ? null : storehouse.getName();
+        } else if (basicConvertMap[6].contains(keyword)) {
+            NxWarningTypeManagement warningType = warningTypeManagementService.getById(keyword);
+            return Objects.isNull(warningType) ? null : warningType.getWarningType();
+        } else if (basicConvertMap[7].contains(keyword)) {
+            NxReservePlan reservePlan = reservePlanService.getById(keyword);
+            return Objects.isNull(reservePlan) ? null : reservePlan.getName();
+        } else if (basicConvertMap[8].contains(keyword)) {
+            NxExpertDatabase expert = expertDatabaseService.getById(keyword);
+            return Objects.isNull(expert) ? null : expert.getExpertName();
+        } else if (basicConvertMap[9].contains(keyword)) {
+            UserInfo userInfo = new UserInfo();
+            userInfo.setId(keyword);
+            List<UserInfo> users = commonService.getUserInfo(userInfo);
+            return CollectionUtils.isEmpty(users) ? null : users.get(0).getRealName();
+        }
+        return null;
+    }
+}
+
+

+ 0 - 447
application/src/main/java/org/thingsboard/server/service/nanxi/impl/PageDataConvertServiceImpl.java

@@ -1,447 +0,0 @@
-package org.thingsboard.server.service.nanxi.impl;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-import org.thingsboard.server.common.data.yunteng.dto.OrganizationDTO;
-import org.thingsboard.server.common.data.yunteng.dto.SysAreaDTO;
-import org.thingsboard.server.common.data.yunteng.dto.SysDictItemDTO;
-import org.thingsboard.server.dao.yunteng.entities.SysDeptEntity;
-import org.thingsboard.server.domain.*;
-import org.thingsboard.server.service.nanxi.*;
-import org.thingsboard.server.utils.ReflectUtils;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * @author LF
- * @date 2023-05-08
- *
- * @description
- */
-@Service
-public class PageDataConvertServiceImpl implements IPageDataConvertService {
-
-    @Autowired
-    private ICommonService commonService;
-    @Autowired
-    private INxEventTypeManagementService eventTypeManagementService;
-    @Autowired
-    private INxWarningTypeManagementService warningTypeManagementService;
-    @Autowired
-    private INxReservePlanService reservePlanService;
-    @Autowired
-    private INxExpertDatabaseService expertDatabaseService;
-    @Autowired
-    private INxStorehouseManagementService storehouseManagementService;
-    @Override
-    public void pageDataConvert(Object item) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, NoSuchFieldException {
-
-        if(ReflectUtils.hasField(item, "companyId")){
-            Field field = item.getClass().getDeclaredField("companyId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setCompanyName", String.class);
-            OrganizationDTO organization = commonService.findTkOrganizationById(codeVal);
-            if(!Objects.isNull(organization)){
-                setMethodName.invoke(item, organization.getName());
-            }
-        }
-        if(ReflectUtils.hasField(item, "leadingCompanyId")){
-            Field field = item.getClass().getDeclaredField("leadingCompanyId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setLeadingCompanyName", String.class);
-            OrganizationDTO organization = commonService.findTkOrganizationById(codeVal);
-            if(!Objects.isNull(organization)){
-                setMethodName.invoke(item, organization.getName());
-            }
-        }
-        if(ReflectUtils.hasField(item, "liableCompanyId")){
-            Field field = item.getClass().getDeclaredField("liableCompanyId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setLiableCompanyName", String.class);
-            OrganizationDTO organization = commonService.findTkOrganizationById(codeVal);
-            if(!Objects.isNull(organization)){
-                setMethodName.invoke(item, organization.getName());
-            }
-        }
-        if(ReflectUtils.hasField(item, "cooperateCompanyId")){
-            Field field = item.getClass().getDeclaredField("cooperateCompanyId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setCooperateCompanyName", String.class);
-            OrganizationDTO organization = commonService.findTkOrganizationById(codeVal);
-            if(!Objects.isNull(organization)){
-                setMethodName.invoke(item, organization.getName());
-            }
-        }
-        if(ReflectUtils.hasField(item, "leadingDepartmentId")){
-            Field field = item.getClass().getDeclaredField("leadingDepartmentId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setLeadingDepartmentName", String.class);
-            SysDeptEntity deptById = commonService.findDeptById(codeVal);
-            if(!Objects.isNull(deptById)){
-                setMethodName.invoke(item, deptById.getDeptName());
-            }
-        }
-        if(ReflectUtils.hasField(item, "cooperateDepartmentId")){
-            Field field = item.getClass().getDeclaredField("cooperateDepartmentId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setCooperateDepartmentName", String.class);
-            SysDeptEntity deptById = commonService.findDeptById(codeVal);
-            if(!Objects.isNull(deptById)){
-                setMethodName.invoke(item, deptById.getDeptName());
-            }
-        }
-        if(ReflectUtils.hasField(item, "areaCode")){
-            Field field = item.getClass().getDeclaredField("areaCode");
-            field.setAccessible(true);
-            Long codeVal = (Long)field.get(item);
-            Method setMethodName = item.getClass().getMethod("setAreaName", String.class);
-            SysAreaDTO area = commonService.findAreaById(codeVal);
-            if(!Objects.isNull(area)){
-                setMethodName.invoke(item, area.getName());
-            }
-        }
-        if(ReflectUtils.hasField(item, "carTypeCode")){
-            Field field = item.getClass().getDeclaredField("carTypeCode");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setCarTypeName", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "typeCode")){
-            Field field = item.getClass().getDeclaredField("typeCode");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setTypeName", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "domainId")){
-            Field field = item.getClass().getDeclaredField("domainId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setDomainName", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "industryId")){
-            Field field = item.getClass().getDeclaredField("industryId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setIndustryName", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "responseLevelCode")){
-            Field field = item.getClass().getDeclaredField("responseLevelCode");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setResponseLevelName", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "eventLevelCode")){
-            Field field = item.getClass().getDeclaredField("eventLevelCode");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setEventLevelName", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "alarmLevelCode")){
-            Field field = item.getClass().getDeclaredField("alarmLevelCode");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setAlarmLevelName", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "alarmRiskLevelCode")){
-            Field field = item.getClass().getDeclaredField("alarmRiskLevelCode");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setAlarmRiskLevelName", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "alarmTypeCode")){
-            Field field = item.getClass().getDeclaredField("alarmTypeCode");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setAlarmTypeCode", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "productId")){
-            Field field = item.getClass().getDeclaredField("productId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setProductName", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "warningLevelCode")){
-            Field field = item.getClass().getDeclaredField("warningLevelCode");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setWarningLevelCode", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "expertGender")){
-            Field field = item.getClass().getDeclaredField("expertGender");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setExpertGenderText", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "academicDegree")){
-            Field field = item.getClass().getDeclaredField("academicDegree");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setAcademicDegreeText", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "highestEducation")){
-            Field field = item.getClass().getDeclaredField("highestEducation");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setHighestEducationText", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "expertTitle")){
-            Field field = item.getClass().getDeclaredField("expertTitle");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setExpertTitleText", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "workState")){
-            Field field = item.getClass().getDeclaredField("workState");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setWorkStateText", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "riskLevelCode")){
-            Field field = item.getClass().getDeclaredField("riskLevelCode");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setRiskLevelName", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "warningRiskLevelCode")){
-            Field field = item.getClass().getDeclaredField("warningRiskLevelCode");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setWarningRiskLevelCode", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "levelCode")){
-            Field field = item.getClass().getDeclaredField("levelCode");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName = item.getClass().getMethod("setLevelName", String.class);
-            SysDictItemDTO dicItem = commonService.findSysDictItemById(codeVal);
-            if(!Objects.isNull(dicItem)){
-                setMethodName.invoke(item, dicItem.getItemText());
-            }
-        }
-        if(ReflectUtils.hasField(item, "eventTypeId")){
-            Field field = item.getClass().getDeclaredField("eventTypeId");
-            field.setAccessible(true);
-            Integer codeVal = (Integer)field.get(item);
-            Method setMethodName = item.getClass().getMethod("setEventType", String.class);
-            NxEventTypeManagement type = eventTypeManagementService.getById(codeVal);
-            if(!Objects.isNull(type)){
-                setMethodName.invoke(item, type.getEventType());
-            }
-        }
-        if(ReflectUtils.hasField(item, "storehouseId")){
-            Field field = item.getClass().getDeclaredField("storehouseId");
-            field.setAccessible(true);
-            Integer codeVal = (Integer)field.get(item);
-            Method setMethodName = item.getClass().getMethod("setStorehouseName", String.class);
-            NxStorehouseManagement byId = storehouseManagementService.getById(codeVal);
-            if(!Objects.isNull(byId)){
-                setMethodName.invoke(item, byId.getName());
-            }
-        }
-        if(ReflectUtils.hasField(item, "warningTypeId")){
-            Field field = item.getClass().getDeclaredField("warningTypeId");
-            field.setAccessible(true);
-            Integer codeVal = (Integer)field.get(item);
-            Method setMethodName = item.getClass().getMethod("setWarningTypeName", String.class);
-            NxWarningTypeManagement byId = warningTypeManagementService.getById(codeVal);
-            if(!Objects.isNull(byId)){
-                setMethodName.invoke(item, byId.getWarningType());
-            }
-        }
-        if(ReflectUtils.hasField(item, "reservePlanId")){
-            Field field = item.getClass().getDeclaredField("reservePlanId");
-            field.setAccessible(true);
-            Integer codeVal = (Integer)field.get(item);
-            Method setMethodName = item.getClass().getMethod("setReservePlanName", String.class);
-            NxReservePlan byId = reservePlanService.getById(codeVal);
-            if(!Objects.isNull(byId)){
-                setMethodName.invoke(item, byId.getName());
-            }
-        }
-        if(ReflectUtils.hasField(item, "expertId")){
-            Field field = item.getClass().getDeclaredField("expertId");
-            field.setAccessible(true);
-            Integer codeVal = (Integer)field.get(item);
-            Method setMethodName = item.getClass().getMethod("setExpertId", String.class);
-            NxExpertDatabase byId = expertDatabaseService.getById(codeVal);
-            if(!Objects.isNull(byId)){
-                setMethodName.invoke(item, byId.getExpertName());
-            }
-        }
-        if(ReflectUtils.hasField(item, "liableId")){
-            Field field = item.getClass().getDeclaredField("liableId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName1 = item.getClass().getMethod("setLiableName", String.class);
-            Method setMethodName2 = item.getClass().getMethod("setLiablePosition", String.class);
-            Method setMethodName3 = item.getClass().getMethod("setLiablePhone", String.class);
-            UserInfo userInfo = new UserInfo();
-            userInfo.setId(codeVal);
-            List<UserInfo> users = commonService.getUserInfo(userInfo);
-            if(!CollectionUtils.isEmpty(users)){
-                UserInfo user = users.get(0);
-                setMethodName1.invoke(item, user.getRealName());
-//                    setMethodName2.invoke(item, user.getRealName());
-                setMethodName3.invoke(item, user.getPhoneNumber());
-            }
-        }
-        if(ReflectUtils.hasField(item, "contactId")){
-            Field field = item.getClass().getDeclaredField("contactId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName1 = item.getClass().getMethod("setContactName", String.class);
-            Method setMethodName2 = item.getClass().getMethod("setContactPosition", String.class);
-            Method setMethodName3 = item.getClass().getMethod("setContactPhone", String.class);
-            UserInfo userInfo = new UserInfo();
-            userInfo.setId(codeVal);
-            List<UserInfo> users = commonService.getUserInfo(userInfo);
-            if(!CollectionUtils.isEmpty(users)){
-                UserInfo user = users.get(0);
-                setMethodName1.invoke(item, user.getRealName());
-//                    setMethodName2.invoke(item, user.getRealName());
-                setMethodName3.invoke(item, user.getPhoneNumber());
-            }
-        }
-        if(ReflectUtils.hasField(item, "leadingPersonId")){
-            Field field = item.getClass().getDeclaredField("leadingPersonId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName1 = item.getClass().getMethod("setLeadingPersonName", String.class);
-            UserInfo userInfo = new UserInfo();
-            userInfo.setId(codeVal);
-            List<UserInfo> users = commonService.getUserInfo(userInfo);
-            if(!CollectionUtils.isEmpty(users)){
-                UserInfo user = users.get(0);
-                setMethodName1.invoke(item, user.getRealName());
-            }
-        }
-        if(ReflectUtils.hasField(item, "cooperatePersonId")){
-            Field field = item.getClass().getDeclaredField("cooperatePersonId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName1 = item.getClass().getMethod("setCooperatePersonName", String.class);
-            UserInfo userInfo = new UserInfo();
-            userInfo.setId(codeVal);
-            List<UserInfo> users = commonService.getUserInfo(userInfo);
-            if(!CollectionUtils.isEmpty(users)){
-                UserInfo user = users.get(0);
-                setMethodName1.invoke(item, user.getRealName());
-            }
-        }
-        if(ReflectUtils.hasField(item, "leaderId")){
-            Field field = item.getClass().getDeclaredField("leaderId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName1 = item.getClass().getMethod("setLeaderName", String.class);
-            Method setMethodName3 = item.getClass().getMethod("setLeaderPhone", String.class);
-            UserInfo userInfo = new UserInfo();
-            userInfo.setId(codeVal);
-            List<UserInfo> users = commonService.getUserInfo(userInfo);
-            if(!CollectionUtils.isEmpty(users)){
-                UserInfo user = users.get(0);
-                setMethodName1.invoke(item, user.getRealName());
-                setMethodName3.invoke(item, user.getPhoneNumber());
-            }
-        }
-        if(ReflectUtils.hasField(item, "liableId")){
-            Field field = item.getClass().getDeclaredField("liableId");
-            field.setAccessible(true);
-            String codeVal = String.valueOf(field.get(item));
-            Method setMethodName1 = item.getClass().getMethod("setLiableName", String.class);
-            Method setMethodName3 = item.getClass().getMethod("setLiablePhone", String.class);
-            UserInfo userInfo = new UserInfo();
-            userInfo.setId(codeVal);
-            List<UserInfo> users = commonService.getUserInfo(userInfo);
-            if(!CollectionUtils.isEmpty(users)){
-                UserInfo user = users.get(0);
-                setMethodName1.invoke(item, user.getRealName());
-                setMethodName3.invoke(item, user.getPhoneNumber());
-            }
-        }
-    }
-}
-
-

+ 38 - 0
application/src/main/java/org/thingsboard/server/utils/Cache.java

@@ -0,0 +1,38 @@
+package org.thingsboard.server.utils;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class Cache {
+    
+    private Map<String, Object> cacheMap;
+
+    public Cache() {
+        this.cacheMap = new ConcurrentHashMap<>();
+    }
+
+    public Object getCache(String key) {
+        return cacheMap.get(key);
+    }
+
+    public void putCache(String key, Object value) {
+        cacheMap.put(key, value);
+    }
+
+    public void clearCache() {
+        cacheMap.clear();
+    }
+
+    public boolean containsKey(String key) {
+        return cacheMap.containsKey(key);
+    }
+
+    public boolean isEmpty() {
+        return cacheMap.isEmpty();
+    }
+
+    public int size() {
+        return cacheMap.size();
+    }
+}

+ 3 - 2
application/src/test/java/org/thingsboard/server/ImportTest.java

@@ -23,10 +23,11 @@ public class ImportTest {
 
     @Test
     public void testExcelUpload() throws Exception {
+        String filePath = "";
         // 准备测试数据
-        File excelFile = new File("D:\\toFly\\projects\\nanxi\\application\\src\\test\\java\\org\\thingsboard\\server\\危险源.xlsx");
+        File excelFile = new File("");
         FileInputStream inputStream = new FileInputStream(excelFile);
-        MultipartFile multipartFile = new MockMultipartFile("D:\\toFly\\projects\\nanxi\\application\\src\\test\\java\\org\\thingsboard\\server\\危险源.xlsx", inputStream);
+        MultipartFile multipartFile = new MockMultipartFile("", inputStream);
 
         // 创建待测试的 ExcelUploadController 对象,调用 upload 方法上传 Excel 文件
         BaseOutput baseOutput = dangerousSourceController.importEvents(multipartFile);