Jelajahi Sumber

🐛 fix(pms): 生产环境公司名称匹配修复

Zimo 2 hari lalu
induk
melakukan
17a6646f85

+ 43 - 36
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/hikvision/HikvisionController.java

@@ -1,50 +1,53 @@
 package cn.iocoder.yudao.module.pms.controller.admin.hikvision;
 
-import cn.hutool.core.util.StrUtil;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.hikvision.vo.HikvisionPtzControlReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.hikvision.vo.HikvisionTreeNodeRespVO;
-import cn.iocoder.yudao.module.system.api.dept.DeptApi;
-import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
-import cn.iocoder.yudao.module.system.api.permission.PermissionApi;
-import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.hikvision.artemis.sdk.ArtemisHttpUtil;
-import com.hikvision.artemis.sdk.config.ArtemisConfig;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Deque;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
-import java.util.Locale;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
-import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
+
 import javax.validation.Valid;
 import javax.validation.constraints.NotBlank;
 
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.hikvision.artemis.sdk.ArtemisHttpUtil;
+import com.hikvision.artemis.sdk.config.ArtemisConfig;
+
+import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
+import cn.iocoder.yudao.module.pms.controller.admin.hikvision.vo.HikvisionPtzControlReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.hikvision.vo.HikvisionTreeNodeRespVO;
+import cn.iocoder.yudao.module.system.api.dept.DeptApi;
+import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
+import cn.iocoder.yudao.module.system.api.permission.PermissionApi;
+import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * 海康 Artemis 区域和监控点接口。
@@ -155,8 +158,7 @@ public class HikvisionController {
     @GetMapping("/tree/search")
     @Operation(summary = "按监控点名称搜索并返回所属目录树")
     public CommonResult<List<HikvisionTreeNodeRespVO>> searchTree(
-            @Parameter(description = "监控点名称,模糊匹配,最多32个UTF-8字节;空值恢复初始树")
-            @RequestParam(value = "keyword", required = false) String keyword) {
+            @Parameter(description = "监控点名称,模糊匹配,最多32个UTF-8字节;空值恢复初始树") @RequestParam(value = "keyword", required = false) String keyword) {
         String name = StrUtil.trim(keyword);
         if (StrUtil.isBlank(name)) {
             return treeChildren("-1");
@@ -190,7 +192,7 @@ public class HikvisionController {
 
     /** 批量补齐祖先区域,并仅挂载最终能追溯到授权根节点的匹配监控点。 */
     private List<HikvisionTreeNodeRespVO> buildSearchTree(HikvisionTreeNodeRespVO root,
-                                                        List<JSONObject> cameras) throws Exception {
+            List<JSONObject> cameras) throws Exception {
         Map<String, HikvisionTreeNodeRespVO> regions = new LinkedHashMap<>();
         root.setChildren(new ArrayList<>());
         regions.put(root.getIndexCode(), root);
@@ -401,7 +403,12 @@ public class HikvisionController {
             }
             if ("1".equals(dept.getType())) {
                 String companyName = dept.getName();
-                if (!"四川瑞都".equals(companyName) && !"瑞恒兴域".equals(companyName)) {
+                String allowedCompanyName;
+                if (companyName != null && companyName.contains("四川瑞都")) {
+                    allowedCompanyName = "四川瑞都";
+                } else if (companyName != null && companyName.contains("瑞恒兴域")) {
+                    allowedCompanyName = "瑞恒兴域";
+                } else {
                     return null;
                 }
                 JSONObject root = parseArtemisData(invokeArtemis(ROOT_ADDRESS, Collections.emptyMap()));
@@ -410,7 +417,7 @@ public class HikvisionController {
                     throw new IllegalStateException("海康根区域响应缺少 indexCode");
                 }
                 for (HikvisionTreeNodeRespVO region : querySubRegions(rootCode)) {
-                    if (companyName.equals(region.getName()) && StrUtil.isNotBlank(region.getIndexCode())) {
+                    if (allowedCompanyName.equals(region.getName()) && StrUtil.isNotBlank(region.getIndexCode())) {
                         return region;
                     }
                 }