Explorar o código

浦江牧场hls流

Newspaper %!s(int64=2) %!d(string=hai) anos
pai
achega
c56674fe5a

+ 10 - 0
huimv-admin/pom.xml

@@ -127,6 +127,16 @@
             <version>4.5.1</version>
         </dependency>
         <dependency>
+            <groupId>com.hikvision.ga</groupId>
+            <artifactId>artemis-http-client</artifactId>
+            <version>1.1.8</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.5.14</version>
+        </dependency>
+        <dependency>
             <groupId>com.hkvs</groupId>
             <artifactId>HttpClientSSLUtils</artifactId>
             <version>1.0</version>

+ 190 - 43
huimv-admin/src/main/java/com/huimv/admin/controller/CameraHKVSSync.java

@@ -3,6 +3,8 @@ package com.huimv.admin.controller;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
+import com.hikvision.artemis.sdk.ArtemisHttpUtil;
+import com.hikvision.artemis.sdk.config.ArtemisConfig;
 import com.hikvision.cms.api.common.util.Digests;
 import com.huimv.admin.common.utils.HttpClientSSLUtils;
 import com.huimv.admin.common.utils.Result;
@@ -31,32 +33,64 @@ public class CameraHKVSSync {
     @PostMapping("/sync")
     @Transactional
     public Result sync(@RequestBody Map<String, Integer> params) throws Exception {
-        //获取默认控制中心  正康区域 的上级,暂时不用
+        Integer farmId = params.get("farmId");
+        if (farmId == 21){
+            //获取默认控制中心  正康区域 的上级,暂时不用
 //        System.out.println(testGetDefaultUnit());
-
-        //根据中心UUID分页获取下级区  正康猪业id:1048576
-        String unitUuid = testGetRegionsByUnitUuid(1048576);
-        HkvsUnitDto hkvsUnitDto = JSONUtil.toBean(unitUuid, HkvsUnitDto.class);
-        if (ObjectUtil.isNotEmpty(hkvsUnitDto) && hkvsUnitDto.getErrorCode() ==0 ){
-            List<UnitDto1> list = hkvsUnitDto.getData().getList();
-            if (ObjectUtil.isNotEmpty(list)){
-                cameraAreaService.sync(params,list);
+            //根据中心UUID分页获取下级区  正康猪业id:1048576
+            String unitUuid = testGetRegionsByUnitUuid(1048576);
+            HkvsUnitDto hkvsUnitDto = JSONUtil.toBean(unitUuid, HkvsUnitDto.class);
+            if (ObjectUtil.isNotEmpty(hkvsUnitDto) && hkvsUnitDto.getErrorCode() == 0) {
+                List<UnitDto1> list = hkvsUnitDto.getData().getList();
+                if (ObjectUtil.isNotEmpty(list)) {
+                    cameraAreaService.sync(params, list);
+                }
+            } else {
+                return new Result(10001, hkvsUnitDto.getErrorMessage(), false);
             }
-        }else {
-            return new Result(10001,hkvsUnitDto.getErrorMessage(),false);
-        }
-        //获取监控点
-        String cameras = testGetCameras();
-        HkvsCameraDto hkvsCameraDto = JSONUtil.toBean(cameras, HkvsCameraDto.class);
-        if (ObjectUtil.isNotEmpty(hkvsCameraDto) && hkvsCameraDto.getErrorCode() ==0 ){
-            List<CameraDto1> list = hkvsCameraDto.getData().getList();
-            if (ObjectUtil.isNotEmpty(list)){
-                cameraBaseService.sync(params,list);
+            //获取监控点
+            String cameras = testGetCameras();
+            HkvsCameraDto hkvsCameraDto = JSONUtil.toBean(cameras, HkvsCameraDto.class);
+            if (ObjectUtil.isNotEmpty(hkvsCameraDto) && hkvsCameraDto.getErrorCode() == 0) {
+                List<CameraDto1> list = hkvsCameraDto.getData().getList();
+                if (ObjectUtil.isNotEmpty(list)) {
+                    cameraBaseService.sync(params, list);
+                }
+            } else {
+                return new Result(10001, hkvsUnitDto.getErrorMessage(), false);
             }
+            return new Result(10000, "同步成功", false);
         }else {
-            return new Result(10001,hkvsUnitDto.getErrorMessage(),false);
+//          海康新平台
+            String callPostApiGetSubRegions = callPostApiGetSubRegions();
+            HkvsRegionDto hkvsRegionDto = JSONUtil.toBean(callPostApiGetSubRegions, HkvsRegionDto.class);
+            if (ObjectUtil.isNotEmpty(hkvsRegionDto) && "0".equals(hkvsRegionDto.getCode())) {
+                List<RegionDto> hkvsRegionDtoData = hkvsRegionDto.getData();
+                for (RegionDto hkvsRegionDtoDatum : hkvsRegionDtoData) {
+                    List<RegionDetailDto> hkvsRegionDtoDatumList = hkvsRegionDtoDatum.getList();
+                    if (ObjectUtil.isNotEmpty(hkvsRegionDtoDatumList)){
+                        cameraAreaService.NewSync(params,hkvsRegionDtoDatumList);
+                    }
+                }
+            }else {
+                return new Result(10001, hkvsRegionDto.getMsg(), false);
+            }
+            //获取监控点
+            String callPostApiGetCameras = callPostApiGetCameras();
+            HkvsNewCameraDto hkvsNewCameraDto = JSONUtil.toBean(callPostApiGetCameras, HkvsNewCameraDto.class);
+            if (ObjectUtil.isNotEmpty(hkvsNewCameraDto) && "0".equals(hkvsNewCameraDto.getCode())) {
+                List<NewCameraDto> hkvsNewCameraDtoData = hkvsNewCameraDto.getData();
+                for (NewCameraDto hkvsNewCameraDtoDatum : hkvsNewCameraDtoData) {
+                    List<CameraDetailDto> hkvsNewCameraDtoDatumList = hkvsNewCameraDtoDatum.getList();
+                    if (ObjectUtil.isNotEmpty(hkvsNewCameraDtoDatumList)){
+                        cameraBaseService.NewSync(params,hkvsNewCameraDtoDatumList);
+                    }
+                }
+            }else {
+                return new Result(10001, hkvsNewCameraDto.getMsg(), false);
+            }
+            return new Result(10000, "同步成功", false);
         }
-        return new Result(10000,"同步成功",false);
     }
 
 
@@ -144,6 +178,7 @@ public class CameraHKVSSync {
 
     /**
      * 测试方法
+     *
      * @param args
      * @throws Exception
      */
@@ -152,31 +187,54 @@ public class CameraHKVSSync {
         /***http方式调用***/
         //获取 默认用户id 初始化用
 //        System.out.println(testGetDefaultUserUUID());
-
-        //获取部门
+//
+//        //获取部门
 //        System.out.println(testGetDeptInfos());
-        //获取网域
-        System.out.println(testGetNetZones());
-        //获取子系统
-        System.out.println(testGetPlatSubsytem());
-        //获取默认控制中心
-        System.out.println(testGetDefaultUnit());
-        //根据中心UUID分页获取下级区
+//        //获取网域
+//        System.out.println(testGetNetZones());
+//        //获取子系统
+//        System.out.println(testGetPlatSubsytem());
+//        //获取默认控制中心
+//        System.out.println(testGetDefaultUnit());
+//        //根据中心UUID分页获取下级区
 //        System.out.println(testGetRegionsByUnitUuid(1048576));
-        //获取监控点
+//        //获取监控点
 //        System.out.println(testGetCameras());
 //        /***https方式调用***/
 //        System.out.println(testGetDefaultUserUUID_Https());
 //        System.out.println(testGetCameras_Https());
+
+        /***http方式调用(海康新平台)***/
+//        String callPostApiGetSubRegions = callPostApiGetSubRegions();
+//        System.out.println(callPostApiGetSubRegions);
+//        HkvsRegionDto hkvsRegionDto = JSONUtil.toBean(callPostApiGetSubRegions, HkvsRegionDto.class);
+//        if (ObjectUtil.isNotEmpty(hkvsRegionDto) && "0".equals(hkvsRegionDto.getCode())) {
+//            List<RegionDto> hkvsRegionDtoData = hkvsRegionDto.getData();
+//            for (RegionDto hkvsRegionDtoDatum : hkvsRegionDtoData) {
+//                List<RegionDetailDto> hkvsRegionDtoDatumList = hkvsRegionDtoDatum.getList();
+//                System.out.println(hkvsRegionDtoDatumList);
+//            }
+//        }
+        String callPostApiGetCameras = callPostApiGetCameras();
+//        System.out.println(callPostApiGetCameras);
+        HkvsNewCameraDto hkvsNewCameraDto = JSONUtil.toBean(callPostApiGetCameras, HkvsNewCameraDto.class);
+        if (ObjectUtil.isNotEmpty(hkvsNewCameraDto) && "0".equals(hkvsNewCameraDto.getCode())) {
+            List<NewCameraDto> hkvsNewCameraDtoData = hkvsNewCameraDto.getData();
+            for (NewCameraDto hkvsNewCameraDtoDatum : hkvsNewCameraDtoData) {
+                List<CameraDetailDto> hkvsNewCameraDtoDatumList = hkvsNewCameraDtoDatum.getList();
+                System.out.println(hkvsNewCameraDtoDatumList);
+            }
+        }
     }
 
     /**
      * HTTP方式
      * 获取子系统
+     *
      * @return
      * @throws Exception
      */
-    private static String testGetRegionsByUnitUuid(Integer unitUuid) throws Exception{
+    private static String testGetRegionsByUnitUuid(Integer unitUuid) throws Exception {
         String url = OPENAPI_IP_PORT_HTTP + ITF_ADDRESS_GET_REGIONS_BY_UNIT_UUID;
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("appkey", APPKEY);//设置APPKEY
@@ -197,10 +255,11 @@ public class CameraHKVSSync {
     /**
      * HTTP方式
      * 获取默认控制中心
+     *
      * @return
      * @throws Exception
      */
-    private static String testGetDefaultUnit() throws Exception{
+    private static String testGetDefaultUnit() throws Exception {
         String url = OPENAPI_IP_PORT_HTTP + ITF_ADDRESS_GET_DEFAULT_UNIT;
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("appkey", APPKEY);//设置APPKEY
@@ -220,10 +279,11 @@ public class CameraHKVSSync {
     /**
      * HTTP方式
      * 获取子系统
+     *
      * @return
      * @throws Exception
      */
-    private static String testGetPlatSubsytem() throws Exception{
+    private static String testGetPlatSubsytem() throws Exception {
         String url = OPENAPI_IP_PORT_HTTP + ITF_ADDRESS_GET_PLAT_SUBSYTEM;
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("appkey", APPKEY);//设置APPKEY
@@ -258,15 +318,16 @@ public class CameraHKVSSync {
     /**
      * HTTP方式
      * 获取默认用户UUID 测试
+     *
      * @return
      * @throws Exception
      */
-    private static String testGetDefaultUserUUID() throws Exception{
+    private static String testGetDefaultUserUUID() throws Exception {
         String url = OPENAPI_IP_PORT_HTTP + ITF_ADDRESS_GET_DEFAULT_USER_UUID;
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("appkey", APPKEY);//设置APPKEY
         map.put("time", System.currentTimeMillis());//设置时间参数
-        String params =  JSON.toJSONString(map);
+        String params = JSON.toJSONString(map);
         System.out.println(" ====== testGetDefaultUserUUID 请求参数:【" + params + "】");
         String data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + params, null, SECRET), params);
         System.out.println(" ====== testGetDefaultUserUUID 请求返回结果:【{" + data + "}】");
@@ -277,10 +338,11 @@ public class CameraHKVSSync {
     /**
      * HTTP方式
      * 分页获取监控点信息 测试
+     *
      * @return
      * @throws Exception
      */
-    private static String testGetCameras() throws Exception{
+    private static String testGetCameras() throws Exception {
         String url = OPENAPI_IP_PORT_HTTP + ITF_ADDRESS_GET_CAMERAS;
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("appkey", APPKEY);//设置APPKEY
@@ -299,10 +361,11 @@ public class CameraHKVSSync {
     /**
      * HTTP方式
      * 分页获取部门 测试
+     *
      * @return
      * @throws Exception
      */
-    private static String testGetDeptInfos() throws Exception{
+    private static String testGetDeptInfos() throws Exception {
         String url = OPENAPI_IP_PORT_HTTP + ITF_ADDRESS_GET_DEPTINFOS;
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("appkey", APPKEY);//设置APPKEY
@@ -321,10 +384,11 @@ public class CameraHKVSSync {
     /**
      * HTTP方式
      * 分页获取网域 测试
+     *
      * @return
      * @throws Exception
      */
-    private static String testGetNetZones() throws Exception{
+    private static String testGetNetZones() throws Exception {
         String url = OPENAPI_IP_PORT_HTTP + ITF_ADDRESS_GET_NETZONES;
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("appkey", APPKEY);//设置APPKEY
@@ -343,15 +407,16 @@ public class CameraHKVSSync {
     /**
      * HTTPS方式
      * 获取默认用户UUID 测试
+     *
      * @return
      * @throws Exception
      */
-    private static String testGetDefaultUserUUID_Https() throws Exception{
+    private static String testGetDefaultUserUUID_Https() throws Exception {
         String url = OPENAPI_IP_PORT_HTTPS + ITF_ADDRESS_GET_DEFAULT_USER_UUID;
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("appkey", APPKEY);//设置APPKEY
         map.put("time", System.currentTimeMillis());//设置时间参数
-        String params =  JSON.toJSONString(map);
+        String params = JSON.toJSONString(map);
         System.out.println("============" + params + "============");
         String data = HttpClientSSLUtils.doPost(url + "?token=" + Digests.buildToken(url + "?" + params, null, SECRET), params);
         System.out.println("============" + data + "============");
@@ -362,10 +427,11 @@ public class CameraHKVSSync {
     /**
      * HTTPS方式
      * 分页获取监控点信息 测试
+     *
      * @return
      * @throws Exception
      */
-    private static String testGetCameras_Https() throws Exception{
+    private static String testGetCameras_Https() throws Exception {
         String url = OPENAPI_IP_PORT_HTTPS + ITF_ADDRESS_GET_CAMERAS;
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("appkey", APPKEY);//设置APPKEY
@@ -381,4 +447,85 @@ public class CameraHKVSSync {
         return data;
     }
 
-}
+    /**
+     * API网关的后端服务上下文为:/artemis
+     */
+    private static final String ARTEMIS_PATH = "/artemis";
+
+    private static final String SUBREGIONS_PATH = "/api/resource/v2/regions/subRegions";
+
+    private static final String CAMERAS_PATH = "/api/resource/v2/camera/search";
+
+    private static final String NEW_APPKEY = "27546900";
+
+    private static final String NEW_SECRET = "S5qgrKdBd75M0NZRzGAh";
+
+    private static final String OPENAPI_IP = "61.153.248.109";
+
+    private static final String ZK_REGION = "500d8b6a-2554-43f3-bda7-e686577eb741";
+
+    private static final String PJ_REGION = "70405f14-1cb5-4413-8bef-38e4a365cbee";
+
+    private static final String PW_REGION = "66096289-bd19-4390-a5d5-71a31e970b0b";
+    /**
+     * 调用POST请求类型接口,这里以分页获取区域列表为例
+     * 接口实际url:https://ip:port/artemis/api/api/resource/v1/regions
+     *
+     * @return
+     */
+    public static String callPostApiGetSubRegions() throws Exception {
+        /**
+         * https://ip:port/artemis/api/resource/v2/regions/subRegions
+         * 根据区域编号获取下一级区域列表v2
+         *
+         * 描述:根据用户请求的资源类型和资源权限获取父区域的下级区域列表,主要用于逐层获取父区域的下级区域信息,
+         * 例如监控点预览业务的区域树的逐层获取。下级区域只包括直接下级子区域。
+         * 注:查询区域管理权限(resourceType为region),若父区域的子区域无权限、但是其孙区域有权限时,会返回该无权限的子区域,但是该区域的available标记为false(表示无权限)
+         */
+        ArtemisConfig config = new ArtemisConfig();
+        config.setHost(OPENAPI_IP); // 代理API网关nginx服务器ip端口
+        config.setAppKey(NEW_APPKEY);  // 秘钥appkey
+        config.setAppSecret(NEW_SECRET);// 秘钥appSecret
+
+        final String getCamsApi = ARTEMIS_PATH + SUBREGIONS_PATH;
+        Map<String, Object> paramMap = new HashMap<String, Object>();// post请求Form表单参数
+        paramMap.put("resourceType", "camera");
+//		正康:500d8b6a-2554-43f3-bda7-e686577eb741  浦江:70405f14-1cb5-4413-8bef-38e4a365cbee  平望:66096289-bd19-4390-a5d5-71a31e970b0b
+        paramMap.put("parentIndexCode", PJ_REGION);
+        paramMap.put("pageNo", 1);
+        paramMap.put("pageSize", 1000);
+        String body = JSON.toJSON(paramMap).toString();
+        Map<String, String> path = new HashMap<String, String>(2) {
+            {
+                put("https://", getCamsApi);
+            }
+        };
+        return ArtemisHttpUtil.doPostStringArtemis(config, path, body, null, null, "application/json");
+    }
+
+    public static String callPostApiGetCameras() throws Exception {
+        /**
+         * https://ip:port/artemis/api/resource/v1/regions/regionIndexCode/cameras
+         * 根据指定的区域编号获取该区域下的监控点列表信息,返回结果分页展示。
+         * 注:返回的监控点不包括下级区域的。
+         */
+        ArtemisConfig config = new ArtemisConfig();
+        config.setHost(OPENAPI_IP); // 代理API网关nginx服务器ip端口
+        config.setAppKey(NEW_APPKEY);  // 秘钥appkey
+        config.setAppSecret(NEW_SECRET);// 秘钥appSecret
+        final String getCamsApi = ARTEMIS_PATH + CAMERAS_PATH;
+        Map<String, Object> paramMap = new HashMap<String, Object>();// post请求Form表单参数
+        String[] regionIndexCodes = {PJ_REGION};
+        paramMap.put("regionIndexCodes",regionIndexCodes);
+        paramMap.put("isSubRegion",true);
+        paramMap.put("pageNo",1);
+        paramMap.put("pageSize",1000);
+        String body = JSON.toJSON(paramMap).toString();
+        Map<String, String> path = new HashMap<String, String>(2) {
+            {
+                put("https://", getCamsApi);
+            }
+        };
+        return ArtemisHttpUtil.doPostStringArtemis(config,path, body, null, null, "application/json");
+    }
+}

+ 1 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/CameraBase.java

@@ -91,6 +91,7 @@ public class CameraBase implements Serializable {
     private String unitUuid;
     private String regionUuid;
     private Integer functionId;
+    private String url;
 
 
 }

+ 18 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/hkwsdto/CameraDetailDto.java

@@ -0,0 +1,18 @@
+package com.huimv.admin.entity.hkwsdto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class CameraDetailDto {
+    private String name;
+    private String indexCode;
+    private String regionIndexCode;
+    private String parentIndexCode;
+    private String cameraType;
+    private String chanNum;
+    private Integer sort;
+    private String regionName;
+    private Date updateTime;
+}

+ 12 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/hkwsdto/HkvsNewCameraDto.java

@@ -0,0 +1,12 @@
+package com.huimv.admin.entity.hkwsdto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class HkvsNewCameraDto {
+    private String code;
+    private String msg;
+    private List<NewCameraDto> data;
+}

+ 12 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/hkwsdto/HkvsPreviewDto.java

@@ -0,0 +1,12 @@
+package com.huimv.admin.entity.hkwsdto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class HkvsPreviewDto {
+    private String code;
+    private String msg;
+    private PreviewDto data;
+}

+ 12 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/hkwsdto/HkvsRegionDto.java

@@ -0,0 +1,12 @@
+package com.huimv.admin.entity.hkwsdto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class HkvsRegionDto {
+    private String code;
+    private String msg;
+    private List<RegionDto> data;
+}

+ 13 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/hkwsdto/NewCameraDto.java

@@ -0,0 +1,13 @@
+package com.huimv.admin.entity.hkwsdto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class NewCameraDto {
+    private Integer total;
+    private Integer pageNo;
+    private Integer pageSize;
+    private List<CameraDetailDto> list;
+}

+ 8 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/hkwsdto/PreviewDto.java

@@ -0,0 +1,8 @@
+package com.huimv.admin.entity.hkwsdto;
+
+import lombok.Data;
+
+@Data
+public class PreviewDto {
+    private String url;
+}

+ 15 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/hkwsdto/RegionDetailDto.java

@@ -0,0 +1,15 @@
+package com.huimv.admin.entity.hkwsdto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class RegionDetailDto {
+    private String indexCode;
+    private String name;
+    private String parentIndexCode;
+    private Integer sort;
+    private Date createTime;
+    private Date updateTime;
+}

+ 16 - 0
huimv-admin/src/main/java/com/huimv/admin/entity/hkwsdto/RegionDto.java

@@ -0,0 +1,16 @@
+package com.huimv.admin.entity.hkwsdto;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class RegionDto {
+    private Integer total;
+    private Integer pageNo;
+    private Integer pageSize;
+    private List<RegionDetailDto> list;
+
+
+}

+ 3 - 0
huimv-admin/src/main/java/com/huimv/admin/service/ICameraAreaService.java

@@ -3,6 +3,7 @@ package com.huimv.admin.service;
 import com.huimv.admin.common.utils.Result;
 import com.huimv.admin.entity.CameraArea;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.admin.entity.hkwsdto.RegionDetailDto;
 import com.huimv.admin.entity.hkwsdto.UnitDto1;
 
 import java.util.List;
@@ -24,4 +25,6 @@ public interface ICameraAreaService extends IService<CameraArea> {
     Result lsitAndCamera(Integer farmId);
 
     void sync(Map<String, Integer> params,List<UnitDto1> list);
+
+    void NewSync(Map<String, Integer> params, List<RegionDetailDto> regionDetailDto);
 }

+ 3 - 0
huimv-admin/src/main/java/com/huimv/admin/service/ICameraBaseService.java

@@ -3,6 +3,7 @@ package com.huimv.admin.service;
 import com.huimv.admin.common.utils.Result;
 import com.huimv.admin.entity.CameraBase;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.admin.entity.hkwsdto.CameraDetailDto;
 import com.huimv.admin.entity.hkwsdto.CameraDto1;
 import com.huimv.admin.entity.vo.CameraListVo;
 import com.huimv.admin.entity.vo.CameraListsVo;
@@ -30,4 +31,6 @@ public interface ICameraBaseService extends IService<CameraBase> {
     void updateCameraOnlin(List<CameraDto1> list);
 
     Result list(HttpServletRequest httpServletRequest, Map<String,String>paramsMap);
+
+    void NewSync(Map<String, Integer> params, List<CameraDetailDto> hkvsNewCameraDtoDatumList) throws Exception;
 }

+ 42 - 0
huimv-admin/src/main/java/com/huimv/admin/service/impl/CameraAreaServiceImpl.java

@@ -12,6 +12,7 @@ import com.huimv.admin.common.utils.ResultCode;
 import com.huimv.admin.entity.CameraArea;
 import com.huimv.admin.entity.CameraBase;
 import com.huimv.admin.entity.EnvDevice;
+import com.huimv.admin.entity.hkwsdto.RegionDetailDto;
 import com.huimv.admin.entity.hkwsdto.UnitDto1;
 import com.huimv.admin.entity.zengxindto.DataShacks;
 import com.huimv.admin.mapper.CameraAreaMapper;
@@ -123,4 +124,45 @@ public class CameraAreaServiceImpl extends ServiceImpl<CameraAreaMapper, CameraA
         }
     }
 
+    @Override
+    public void NewSync(Map<String, Integer> params, List<RegionDetailDto> regionDetailDto) {
+        Integer farmId = params.get("farmId");
+        //同步,先删除
+        QueryWrapper<CameraArea> wrapper = new QueryWrapper<>();
+        //TODO 浦江猪业(新平台) 先这样做
+        wrapper.eq("farm_id",farmId);
+        List<CameraArea> huatong = this.list(wrapper);
+        List<String> HikAreaId = regionDetailDto.stream().map(RegionDetailDto::getIndexCode).collect(Collectors.toList());
+        List<String> HtAreaId = huatong.stream().map(CameraArea::getRegionUuid).collect(Collectors.toList());
+        CopyOnWriteArrayList<String> HikArea = ListUtil.toCopyOnWriteArrayList(HikAreaId);
+        CopyOnWriteArrayList<String> HtArea = ListUtil.toCopyOnWriteArrayList(HtAreaId);
+        //新增的设备
+        HikArea.removeAll(HtAreaId);
+        //TODO 新增
+        if (HikArea.size() >0){
+            for (String s : HikArea) {
+                for (RegionDetailDto dto : regionDetailDto) {
+                    if (s.equals(dto.getIndexCode())){
+                        CameraArea cameraArea = new CameraArea();
+                        cameraArea.setAreaName(dto.getName());
+                        cameraArea.setCreateTime(dto.getCreateTime());
+                        cameraArea.setUpdateTime(dto.getUpdateTime());
+                        cameraArea.setRegionUuid(dto.getIndexCode());
+                        cameraArea.setParentUuid(dto.getParentIndexCode());
+                        cameraArea.setFarmId(farmId);
+                        cameraArea.setPublicUrl("61.153.248.109");
+                        this.save(cameraArea);
+                    }
+                }
+            }
+        }
+        //需要删除的设备
+        HtArea.removeAll(HikArea);
+        if (HtArea.size() >0){
+            this.remove(new QueryWrapper<CameraArea>().in("region_uuid",HtArea));
+        }
+
+    }
+
+
 }

+ 104 - 2
huimv-admin/src/main/java/com/huimv/admin/service/impl/CameraBaseServiceImpl.java

@@ -3,10 +3,14 @@ package com.huimv.admin.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.hikvision.artemis.sdk.ArtemisHttpUtil;
+import com.hikvision.artemis.sdk.config.ArtemisConfig;
 import com.huimv.admin.common.utils.Result;
 import com.huimv.admin.common.utils.ResultCode;
 import com.huimv.admin.common.utils.ResultUtil;
@@ -15,8 +19,7 @@ import com.huimv.admin.entity.CameraArea;
 import com.huimv.admin.entity.CameraBase;
 import com.huimv.admin.entity.CameraBrand;
 import com.huimv.admin.entity.dto.CameraNameDto;
-import com.huimv.admin.entity.hkwsdto.CameraDto1;
-import com.huimv.admin.entity.hkwsdto.UnitDto1;
+import com.huimv.admin.entity.hkwsdto.*;
 import com.huimv.admin.entity.vo.*;
 import com.huimv.admin.mapper.CameraAreaMapper;
 import com.huimv.admin.mapper.CameraBaseMapper;
@@ -25,6 +28,7 @@ import com.huimv.admin.service.ICameraBaseService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.*;
@@ -133,6 +137,8 @@ public class CameraBaseServiceImpl extends ServiceImpl<CameraBaseMapper, CameraB
                         if (ObjectUtil.isNotEmpty(cameraArea)) {
                             cameraBase.setAreaName(cameraArea.getAreaName());
                         }
+//                        http://61.153.248.106:6713/mag/hls/6bf5d2cf30bb440cad3fc126512f5188/1/live.m3u8
+                        cameraBase.setUrl("http://"+cameraArea.getPublicUrl()+"/mag/hls/"+cameraDto1.getCameraUuid()+"/1/live.m3u8");
                         cameraBase.setBrandName("海康威视");
                         cameraBase.setFarmId(farmId);
                         this.save(cameraBase);
@@ -184,6 +190,102 @@ public class CameraBaseServiceImpl extends ServiceImpl<CameraBaseMapper, CameraB
         return new Result(ResultCode.SUCCESS, cameraNameDtoList);
     }
 
+    @Override
+    @Transactional
+    public void NewSync(Map<String, Integer> params, List<CameraDetailDto> hkvsNewCameraDtoDatumList) throws Exception {
+        Integer farmId = params.get("farmId");
+
+        List<CameraBase> huatongCameraBaseList = this.list(new QueryWrapper<CameraBase>().eq("farm_id", farmId));
+        List<String> haikangCarmearId = hkvsNewCameraDtoDatumList.stream().map(CameraDetailDto::getIndexCode).collect(Collectors.toList());
+        List<String> huatongCameraId = huatongCameraBaseList.stream().map(CameraBase::getCameraUuid).collect(Collectors.toList());
+        CopyOnWriteArrayList<String> haikangDeviceIdCopy = ListUtil.toCopyOnWriteArrayList(haikangCarmearId);
+        CopyOnWriteArrayList<String> huatongDeviceIdCopy = ListUtil.toCopyOnWriteArrayList(huatongCameraId);
+        haikangDeviceIdCopy.removeAll(huatongCameraId);
+        //TODO 想不出来,回头优化
+        if (haikangDeviceIdCopy.size() > 0) {
+            for (String s : haikangDeviceIdCopy) {
+                for (CameraDetailDto cameraDto : hkvsNewCameraDtoDatumList) {
+                    if (s.equals(cameraDto.getIndexCode())) {
+                        CameraBase cameraBase = new CameraBase();
+                        cameraBase.setAreaName(cameraDto.getRegionName());
+                        cameraBase.setCameraName(cameraDto.getName());
+                        cameraBase.setCameraUuid(cameraDto.getIndexCode());
+                        String callPostApiGetPreviewURLs = callPostApiGetPreviewURLs(cameraDto.getIndexCode());
+                        HkvsPreviewDto hkvsPreviewDto = JSONUtil.toBean(callPostApiGetPreviewURLs, HkvsPreviewDto.class);
+                        cameraBase.setUrl(hkvsPreviewDto.getData().getUrl());
+                        cameraBase.setCameraType(Integer.parseInt(cameraDto.getCameraType()));
+                        cameraBase.setCameraChannelNum(Integer.parseInt(cameraDto.getChanNum()));
+                        cameraBase.setUpdateTime(cameraDto.getUpdateTime());
+                        cameraBase.setUnitUuid(cameraDto.getParentIndexCode());
+                        cameraBase.setRegionUuid(cameraDto.getRegionIndexCode());
+                        cameraBase.setOrderNum(cameraDto.getSort());
+                        cameraBase.setBrandName("海康威视");
+                        cameraBase.setFarmId(farmId);
+                        this.save(cameraBase);
+                    }
+                }
+            }
+        }
+        //删除
+        huatongDeviceIdCopy.removeAll(haikangCarmearId);
+        if (huatongDeviceIdCopy.size() > 0) {
+            this.remove(new QueryWrapper<CameraBase>().in("camera_uuid", huatongDeviceIdCopy));
+        }
+    }
+
+
+    private static final String ARTEMIS_PATH = "/artemis";
+
+    private static final String SUBREGIONS_PATH = "/api/resource/v2/regions/subRegions";
+
+    private static final String CAMERAS_PATH = "/api/resource/v2/camera/search";
+
+    private static final String PREVIEW_PATH = "/api/video/v2/cameras/previewURLs";
+
+    private static final String NEW_APPKEY = "27546900";
+
+    private static final String NEW_SECRET = "S5qgrKdBd75M0NZRzGAh";
+
+    private static final String OPENAPI_IP = "61.153.248.109";
+
+    private static final String ZK_REGION = "500d8b6a-2554-43f3-bda7-e686577eb741";
+
+    private static final String PJ_REGION = "70405f14-1cb5-4413-8bef-38e4a365cbee";
+
+    private static final String PW_REGION = "66096289-bd19-4390-a5d5-71a31e970b0b";
+
+    /**
+     * 调用POST请求类型接口,获取监控点预览取流URLv2
+     * 接口实际url:https://ip:port/artemis/api/video/v2/cameras/previewURLs
+     * @return
+     */
+    public static String callPostApiGetPreviewURLs(String cameraIndexCode) throws Exception {
+        /**
+         * https://ip:port/artemis/api/video/v2/cameras/previewURLs
+         * 根据指定的区域编号获取该区域下的监控点列表信息,返回结果分页展示。
+         * 注:返回的监控点不包括下级区域的。
+         */
+        ArtemisConfig config = new ArtemisConfig();
+        config.setHost(OPENAPI_IP); // 代理API网关nginx服务器ip端口
+        config.setAppKey(NEW_APPKEY);  // 秘钥appkey
+        config.setAppSecret(NEW_SECRET);// 秘钥appSecret
+        final String getCamsApi = ARTEMIS_PATH + PREVIEW_PATH;
+        Map<String, Object> paramMap = new HashMap<String, Object>();// post请求Form表单参数
+        paramMap.put("cameraIndexCode",cameraIndexCode);
+        paramMap.put("streamType",1);
+        paramMap.put("protocol","hls");
+        paramMap.put("transmode",1);
+        String body = JSON.toJSON(paramMap).toString();
+        Map<String, String> path = new HashMap<String, String>(2) {
+            {
+                put("https://", getCamsApi);
+            }
+        };
+        String s = ArtemisHttpUtil.doPostStringArtemis(config, path, body, null, null, "application/json");
+        System.out.println(s);
+
+        return s;
+    }
 
     /* *//**
      * 查询结果 转换成树形结构

+ 1 - 0
huimv-admin/src/main/resources/application-prod.yml

@@ -15,6 +15,7 @@ spring:
       connect-properties:
         config.decrypt: true
         config.decrypt.key: ${spring.datasource.druid.publickey}
+      remove-abandoned-timeout: 120
     type: com.alibaba.druid.pool.DruidDataSource