浏览代码

接入视频树并合并算法相关数据

yangyue 4 月之前
父节点
当前提交
a5a75795f5
共有 29 个文件被更改,包括 1237 次插入5 次删除
  1. 2 1
      README.md
  2. 144 0
      algorithm-service/pom.xml
  3. 6 4
      transform-service/src/main/java/cn/com/taiji/transform/TransformServiceApplication.java
  4. 39 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/config/HttpClientConfig.java
  5. 25 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/config/MyBatisPlusConfig.java
  6. 109 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/config/MysqlGenerator.java
  7. 20 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/controller/VideoCatalogController.java
  8. 20 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/controller/VideoInfoController.java
  9. 29 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/controller/VideoTreeController.java
  10. 16 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/mapper/AlgorithmInfoMapper.java
  11. 16 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/mapper/VideoCatalogMapper.java
  12. 16 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/mapper/VideoInfoMapper.java
  13. 98 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/model/AlgorithmInfo.java
  14. 69 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/model/VideoCatalog.java
  15. 89 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/model/VideoInfo.java
  16. 16 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/service/IAlgorithmInfoService.java
  17. 16 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/service/IVideoCatalogService.java
  18. 16 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/service/IVideoInfoService.java
  19. 16 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/service/IVideoTreeService.java
  20. 20 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/service/impl/AlgorithmInfoServiceImpl.java
  21. 20 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/service/impl/VideoCatalogServiceImpl.java
  22. 20 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/service/impl/VideoInfoServiceImpl.java
  23. 118 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/service/impl/VideoTreeServiceImpl.java
  24. 116 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/task/Videotask.java
  25. 34 0
      algorithm-service/src/main/java/cn/com/taiji/algorithm/utils/DataUtils.java
  26. 71 0
      algorithm-service/src/main/resources/application.yml
  27. 29 0
      algorithm-service/src/main/resources/mapper/AlgorithmInfoMapper.xml
  28. 22 0
      algorithm-service/src/main/resources/mapper/VideoCatalogMapper.xml
  29. 25 0
      algorithm-service/src/main/resources/mapper/VideoInfoMapper.xml

+ 2 - 1
README.md

@@ -3,4 +3,5 @@
 # 出入境数据接入:mq-crj-service
 # 政务外网大数据局接口代理:transform-service
 # 政务外网大屏数据接入统计:video
-# 邮政数据接入:zwww-service
+# 邮政数据接入:zwww-service
+# 阿里算法视频:algorithm-service

+ 144 - 0
algorithm-service/pom.xml

@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>data-service</artifactId>
+        <groupId>cn.com.taiji</groupId>
+        <version>1.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>algorithm-service</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <scope>runtime</scope>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+            <version>1.18.20</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.75</version>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.6.6</version>
+        </dependency>
+
+        <!-- 海康SDK -->
+        <dependency>
+            <groupId>com.hikvision.ga</groupId>
+            <artifactId>artemis-http-client</artifactId>
+            <version>1.1.3</version>
+        </dependency>
+
+
+        <!-- Mysql驱动包 -->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+            <version>1.1.22</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.mybatis</groupId>
+            <artifactId>mybatis-typehandlers-jsr310</artifactId>
+            <version>1.0.1</version>
+        </dependency>
+
+        <!-- mybatis-plus -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.4.3</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-annotation</artifactId>
+            <version>3.4.3</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-extension</artifactId>
+            <version>3.4.3</version>
+        </dependency>
+
+        <!-- mybatis plus 代码生成器依赖 -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+            <version>3.4.1</version>
+        </dependency>
+        <!-- 代码生成器模板 -->
+        <dependency>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                    <encoding>utf-8</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <!--fork:设置True,否则可能devtools不会起作用-->
+                    <fork>true</fork>
+                    <!-- 指定该Main Class为全局的唯一入口 -->
+                    <mainClass>cn.com.taiji.algorithm.AlgorithmApplication</mainClass>
+                    <layout>ZIP</layout>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+    </build>
+
+</project>

+ 6 - 4
transform-service/src/main/java/cn/com/taiji/transform/TransformServiceApplication.java

@@ -1,15 +1,17 @@
-package cn.com.taiji.transform;
+package cn.com.taiji.algorithm;
 
+import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
+@EnableScheduling
+@MapperScan(basePackages = "cn.com.taiji.algorithm.mapper")
 @SpringBootApplication
-public class TransformServiceApplication {
+public class AlgorithmApplication {
 
     public static void main(String[] args) {
-
-        SpringApplication.run(TransformServiceApplication.class, args);
+        SpringApplication.run(AlgorithmApplication.class, args);
     }
 
 }

+ 39 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/config/HttpClientConfig.java

@@ -0,0 +1,39 @@
+package cn.com.taiji.algorithm.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * @Description
+ *
+ * @Author  yangyue
+ * @Date 2022/3/22
+ */
+@Configuration
+public class HttpClientConfig {
+
+    @Bean
+    public RestTemplate restTemplate(){
+        return new RestTemplate();
+    }
+
+    // @Bean
+    // RestTemplate restTemplate() throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
+    //     TrustStrategy acceptingTrustStrategy = (cert, authType) -> true;
+    //     SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();
+    //     SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
+    //
+    //     Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
+    //             .register("https", sslsf).register("http", new PlainConnectionSocketFactory()).build();
+    //     BasicHttpClientConnectionManager connectionManager = new BasicHttpClientConnectionManager(
+    //             socketFactoryRegistry);
+    //     CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf)
+    //             .setConnectionManager(connectionManager).build();
+    //     HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
+    //     requestFactory.setConnectTimeout(10000);
+    //     requestFactory.setReadTimeout(10000);
+    //     return new RestTemplate(requestFactory);
+    // }
+
+}

+ 25 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/config/MyBatisPlusConfig.java

@@ -0,0 +1,25 @@
+package cn.com.taiji.algorithm.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Description
+ *
+ * @Author  yangyue
+ * @Date 2023/7/24
+ */
+@Configuration
+@MapperScan("cn.com.taiji.algorithm.mapper")
+public class MyBatisPlusConfig {
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        return interceptor;
+    }
+}

+ 109 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/config/MysqlGenerator.java

@@ -0,0 +1,109 @@
+package cn.com.taiji.algorithm.config;
+
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.InjectionConfig;
+import com.baomidou.mybatisplus.generator.config.*;
+import com.baomidou.mybatisplus.generator.config.po.TableFill;
+import com.baomidou.mybatisplus.generator.config.po.TableInfo;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description 
+ * 
+ * @Author  yangyue
+ * @Date 2021/11/7 
+ */
+public class MysqlGenerator {
+    /**
+     * RUN THIS
+     */
+    public static void main(String[] args) {
+        // 代码生成器
+        AutoGenerator mpg = new AutoGenerator();
+
+        // TODO 全局配置   用来设置生成文件的命名
+        GlobalConfig gc = new GlobalConfig();
+        gc.setOutputDir("E:/software/IDEA/IdeaProjects/data-service/algorithm-service/src/main/java");
+        // 设置用户名
+        gc.setAuthor("yangyue");
+        gc.setOpen(true);
+        // service 命名方式
+        gc.setServiceName("I"+"%sService");
+        // service impl 命名方式
+        gc.setServiceImplName("%sServiceImpl");
+        // 自定义文件命名,注意 %s 会自动填充表实体属性!
+        gc.setMapperName("%sMapper");
+        gc.setXmlName("%sMapper");
+        gc.setFileOverride(true);
+        gc.setActiveRecord(true);
+        // XML 二级缓存
+        gc.setEnableCache(false);
+        // XML ResultMap
+        gc.setBaseResultMap(true);
+        // XML columList
+        gc.setBaseColumnList(false);
+        mpg.setGlobalConfig(gc);
+
+        // TODO 数据源配置
+        DataSourceConfig dsc = new DataSourceConfig();
+        dsc.setUrl("jdbc:mysql://8.130.72.63:18080/ax_seat_show?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true");
+        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+        dsc.setUsername("root");
+        dsc.setPassword("Taiji@2023#data");
+        mpg.setDataSource(dsc);
+
+        //  包配置   文件生成后对应的包
+        PackageConfig pc = new PackageConfig();
+
+        pc.setParent("cn.com.taiji.algorithm");
+        pc.setEntity("model");
+        pc.setMapper("mapper");
+        pc.setService("service");
+        pc.setServiceImpl("service.impl");
+        mpg.setPackageInfo(pc);
+
+        //  自定义需要填充的字段
+        List<TableFill> tableFillList = new ArrayList<>();
+
+
+        // 自定义配置
+        InjectionConfig cfg = new InjectionConfig() {
+            @Override
+            public void initMap() {
+                // to do nothing
+            }
+        };
+        List<FileOutConfig> focList = new ArrayList<>();
+        focList.add(new FileOutConfig("/templates/mapper.xml.ftl") {
+            @Override
+            public String outputFile(TableInfo tableInfo) {
+                // 自定义输入文件名称和生成的mapper.xml文件所在的包
+                return "E:/software/IDEA/IdeaProjects/data-service/algorithm-service/src/main/resources/mapper/"
+                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
+            }
+        });
+        cfg.setFileOutConfigList(focList);
+        mpg.setCfg(cfg);
+        mpg.setTemplate(new TemplateConfig().setXml(null));
+
+        // 策略配置   StrategyConfig数据表
+        StrategyConfig strategy = new StrategyConfig();
+        strategy.setNaming(NamingStrategy.underline_to_camel);
+        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
+        strategy.setEntityLombokModel(true);
+        strategy.setRestControllerStyle(true);
+
+        // 需要生成哪些表的文件  在这里用,分开,这里生成的是style和room两个表
+        strategy.setInclude(new String("algorithm_info").split(","));
+
+        mpg.setStrategy(strategy);
+        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
+        mpg.execute();
+
+    }
+}

+ 20 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/controller/VideoCatalogController.java

@@ -0,0 +1,20 @@
+package cn.com.taiji.algorithm.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author yangyue
+ * @since 2024-04-01
+ */
+@RestController
+@RequestMapping("/videoCatalog")
+public class VideoCatalogController {
+
+}

+ 20 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/controller/VideoInfoController.java

@@ -0,0 +1,20 @@
+package cn.com.taiji.algorithm.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author yangyue
+ * @since 2024-04-01
+ */
+@RestController
+@RequestMapping("/videoInfo")
+public class VideoInfoController {
+
+}

+ 29 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/controller/VideoTreeController.java

@@ -0,0 +1,29 @@
+package cn.com.taiji.algorithm.controller;
+
+
+import cn.com.taiji.algorithm.service.IVideoTreeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 大屏预警记录表 前端控制器
+ * </p>
+ *
+ * @author yangyue
+ * @since 2023-11-21
+ */
+@RestController
+@RequestMapping("video/tree")
+public class VideoTreeController {
+
+    @Autowired
+    private IVideoTreeService treeService;
+
+    @GetMapping("pull")
+    public void pull() {
+        treeService.httpsPost();
+    }
+}

+ 16 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/mapper/AlgorithmInfoMapper.java

@@ -0,0 +1,16 @@
+package cn.com.taiji.algorithm.mapper;
+
+import cn.com.taiji.algorithm.model.AlgorithmInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 算法信息 Mapper 接口
+ * </p>
+ *
+ * @author yangyue
+ * @since 2024-04-07
+ */
+public interface AlgorithmInfoMapper extends BaseMapper<AlgorithmInfo> {
+
+}

+ 16 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/mapper/VideoCatalogMapper.java

@@ -0,0 +1,16 @@
+package cn.com.taiji.algorithm.mapper;
+
+import cn.com.taiji.algorithm.model.VideoCatalog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author yangyue
+ * @since 2024-04-01
+ */
+public interface VideoCatalogMapper extends BaseMapper<VideoCatalog> {
+
+}

+ 16 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/mapper/VideoInfoMapper.java

@@ -0,0 +1,16 @@
+package cn.com.taiji.algorithm.mapper;
+
+import cn.com.taiji.algorithm.model.VideoInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author yangyue
+ * @since 2024-04-01
+ */
+public interface VideoInfoMapper extends BaseMapper<VideoInfo> {
+
+}

+ 98 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/model/AlgorithmInfo.java

@@ -0,0 +1,98 @@
+package cn.com.taiji.algorithm.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description 算法信息
+ * @Author  yangyue
+ * @Date 2024/04/07 
+ */
+@Data
+@TableName ("algorithm_info")
+public class AlgorithmInfo implements Serializable {
+
+	/** 算法任务ID */
+	@TableField("task_id")
+	private String taskId;
+
+	/** 任务类型:实时(realtime),历史(history),离线文件(file),RTSP流(rtsp)等。 */
+	@TableField("stream_type")
+	private String streamType;
+
+	/** 数据源类型:视频(video)、图片(picture)。 */
+	@TableField("source_type")
+	private String sourceType;
+
+	/** 算法类型,为镜像能力值的子集,随任务下发给算法容器。默认为镜像能力集。 */
+	@TableField("algorithm_type")
+	private String algorithmType;
+
+	/** 算法任务名称。 */
+	@TableField("task_name")
+	private String taskName;
+
+	/** 算法任务所分析的摄像头点位ID,格式为点位ID##任务ID。 */
+	@TableField("camera_id")
+	private String cameraId;
+
+	/** 任务启动状态。1:启动,0:停止。 */
+	@TableField("task_status")
+	private Integer taskStatus;
+
+	/** 该任务消耗的图片分析能力单位,默认QPS为1。 */
+	@TableField("picture_QPS")
+	private String pictureQps;
+
+	/** 该任务消耗的视频分析能力单位,默认为1。 */
+	@TableField("capacity_ratio")
+	private String capacityRatio;
+
+	/** 历史流或离线文件任务分析的开始时间,精确到秒,长度10位。 */
+	@TableField("start_time")
+	private Long startTime;
+
+	/** 历史流任务分析的结束时间,精确到秒,长度10位。 */
+	@TableField("end_time")
+	private Long endTime;
+
+	/** 历史流或离线文件任务的分析倍速,默认位1。 */
+	@TableField("scale")
+	private Integer scale;
+
+	/** 视频文件对应的HTTP地址(分析时将通过该地址下载文件),或RTSP流地址。 */
+	@TableField("file_URL")
+	private String fileUrl;
+
+	/** 下发该任务的算法仓ID。 */
+	@TableField("dispatch_repoId")
+	private String dispatchRepoId;
+
+	/** 该任务执行的分时段调度策略ID。 */
+	@TableField("schedule_strategyId")
+	private String scheduleStrategyId;
+
+	/** 任务可调度执行的算法仓ID列表,关联跨中心调度策略。 */
+	@TableField("schedule_repoIds")
+	private String scheduleRepoIds;
+
+	/** 任务创建时间,为1970年1月1日0:0:0至今的毫秒。 */
+	@TableField("create_time")
+	private Long createTime;
+
+	/** 任务信息最后更新时间,为1970年1月1日0:0:0至今的毫秒。 */
+	@TableField("update_time")
+	private Long updateTime;
+
+	/** 随任务下发的自定义信息,例如线圈参数。 */
+	@TableField("user_data")
+	private String userData;
+
+	/** 任务的容器ID,相同ID的任务会调度给相同的算法容器。一般为空 */
+	@TableField("task_group_containerId")
+	private String taskGroupContainerId;
+
+}

+ 69 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/model/VideoCatalog.java

@@ -0,0 +1,69 @@
+package cn.com.taiji.algorithm.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * @Description 
+ * @Author  yangyue
+ * @Date 2024/04/01 
+ */
+@Data
+@Accessors(chain = true)
+@TableName ("video_catalog")
+public class VideoCatalog implements Serializable {
+
+	/** 行政区划编码 */
+	@TableField("area_code")
+	private String areaCode;
+
+	/** 行政区划名称 */
+	@TableField("name")
+	private String name;
+
+	/** 父目录区域编码 */
+	@TableField("parent_code")
+	private String parentCode;
+
+	/** 平台 ID */
+	@TableField("PlatformID")
+	private String platformId;
+
+	/** 监控在线数 */
+	@TableField("OnlineCount")
+	private String onlineCount;
+
+	/** 监控总数 */
+	@TableField("Count")
+	private String count;
+
+	@TableField("level")
+	private String level;
+
+	@TableField("SecrecyCount")
+	private String secrecyCount;
+
+	@TableField("gongansource")
+	private String gongansource;
+
+	/** 监控故障数 */
+	@TableField("FaultCount")
+	private String faultCount;
+
+	/** 监控可用数(在线无故障) */
+	@TableField("HealthCount")
+	private String healthCount;
+
+	@TableField("Piccount")
+	private String piccount;
+
+	@TableField("RecommendCount")
+	private String recommendCount;
+
+}

+ 89 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/model/VideoInfo.java

@@ -0,0 +1,89 @@
+package cn.com.taiji.algorithm.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * @Description 
+ * @Author  yangyue
+ * @Date 2024/04/01 
+ */
+@Data
+@Accessors(chain = true)
+@TableName ("video_info")
+public class VideoInfo implements Serializable {
+
+	/** 监控接入服务器主消息号(调流时使用) */
+	@TableField("groupId")
+	private Integer groupId;
+
+	/** 监控通道号(调流时使用) */
+	@TableField("monitorId")
+	private Integer monitorId;
+
+	/** 监控名称 */
+	@TableField("monitorName")
+	private String monitorName;
+
+	/** 区域编码 */
+	@TableField("AreaCode")
+	private String areaCode;
+
+	/** 区域名称 */
+	@TableField("AreaName")
+	private String areaName;
+
+	/** 监控在线状态 0 离线 1 在线 */
+	@TableField("monitorStauts")
+	private String monitorStauts;
+
+	/** 监控描述 */
+	@TableField("monitorDigest")
+	private String monitorDigest;
+
+	/** 是否支持录像 0 没有 1 有 */
+	@TableField("SaveStatus")
+	private String saveStatus;
+
+	/** 是否支持云台控制 0 不支持 1 支持 */
+	@TableField("PTZ_Available")
+	private String ptzAvailable;
+
+	/** 纬度 */
+	@TableField("Latitude")
+	private String latitude;
+
+	/** 经度 */
+	@TableField("Longitude")
+	private String longitude;
+
+	/** 监控国标编码 */
+	@TableField("DeviceId")
+	private Integer deviceId;
+
+	/** 平台 ID */
+	@TableField("PlatformId")
+	private Integer platformId;
+
+	/** 需要监控平台开启巡检,巡检之后才知道具体格式
+空:未巡检到或无法识别
+H264:H.264 格式视频
+H265:H.265 格式视频 */
+	@TableField("MediaCode")
+	private String mediaCode;
+
+	/** 流媒体 rtsp 播放方式 url, */
+	@TableField("RtspUrl")
+	private String rtspUrl;
+
+	/** 使用 HLS 播放监控的页面地址 */
+	@TableField("HLSUrl")
+	private String hlsUrl;
+
+}

+ 16 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/service/IAlgorithmInfoService.java

@@ -0,0 +1,16 @@
+package cn.com.taiji.algorithm.service;
+
+import cn.com.taiji.algorithm.model.AlgorithmInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 算法信息 服务类
+ * </p>
+ *
+ * @author yangyue
+ * @since 2024-04-07
+ */
+public interface IAlgorithmInfoService extends IService<AlgorithmInfo> {
+
+}

+ 16 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/service/IVideoCatalogService.java

@@ -0,0 +1,16 @@
+package cn.com.taiji.algorithm.service;
+
+import cn.com.taiji.algorithm.model.VideoCatalog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author yangyue
+ * @since 2024-04-01
+ */
+public interface IVideoCatalogService extends IService<VideoCatalog> {
+
+}

+ 16 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/service/IVideoInfoService.java

@@ -0,0 +1,16 @@
+package cn.com.taiji.algorithm.service;
+
+import cn.com.taiji.algorithm.model.VideoInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author yangyue
+ * @since 2024-04-01
+ */
+public interface IVideoInfoService extends IService<VideoInfo> {
+
+}

+ 16 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/service/IVideoTreeService.java

@@ -0,0 +1,16 @@
+package cn.com.taiji.algorithm.service;
+
+
+import java.time.LocalDate;
+import java.util.List;
+
+/**
+ * @Description
+ *
+ * @Author  yangyue
+ * @Date 2021/11/18
+ */
+public interface IVideoTreeService {
+
+    void httpsPost();
+}

+ 20 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/service/impl/AlgorithmInfoServiceImpl.java

@@ -0,0 +1,20 @@
+package cn.com.taiji.algorithm.service.impl;
+
+import cn.com.taiji.algorithm.model.AlgorithmInfo;
+import cn.com.taiji.algorithm.mapper.AlgorithmInfoMapper;
+import cn.com.taiji.algorithm.service.IAlgorithmInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 算法信息 服务实现类
+ * </p>
+ *
+ * @author yangyue
+ * @since 2024-04-07
+ */
+@Service
+public class AlgorithmInfoServiceImpl extends ServiceImpl<AlgorithmInfoMapper, AlgorithmInfo> implements IAlgorithmInfoService {
+
+}

+ 20 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/service/impl/VideoCatalogServiceImpl.java

@@ -0,0 +1,20 @@
+package cn.com.taiji.algorithm.service.impl;
+
+import cn.com.taiji.algorithm.model.VideoCatalog;
+import cn.com.taiji.algorithm.mapper.VideoCatalogMapper;
+import cn.com.taiji.algorithm.service.IVideoCatalogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author yangyue
+ * @since 2024-04-01
+ */
+@Service
+public class VideoCatalogServiceImpl extends ServiceImpl<VideoCatalogMapper, VideoCatalog> implements IVideoCatalogService {
+
+}

+ 20 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/service/impl/VideoInfoServiceImpl.java

@@ -0,0 +1,20 @@
+package cn.com.taiji.algorithm.service.impl;
+
+import cn.com.taiji.algorithm.model.VideoInfo;
+import cn.com.taiji.algorithm.mapper.VideoInfoMapper;
+import cn.com.taiji.algorithm.service.IVideoInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author yangyue
+ * @since 2024-04-01
+ */
+@Service
+public class VideoInfoServiceImpl extends ServiceImpl<VideoInfoMapper, VideoInfo> implements IVideoInfoService {
+
+}

+ 118 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/service/impl/VideoTreeServiceImpl.java

@@ -0,0 +1,118 @@
+package cn.com.taiji.algorithm.service.impl;
+
+
+import cn.com.taiji.algorithm.model.VideoCatalog;
+import cn.com.taiji.algorithm.service.IVideoCatalogService;
+import cn.com.taiji.algorithm.service.IVideoTreeService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.*;
+import org.springframework.stereotype.Service;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description
+ *
+ * @Author  yangyue
+ * @Date 2021/11/18
+ */
+@Service
+@Slf4j
+public class VideoTreeServiceImpl implements IVideoTreeService {
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Autowired
+    private IVideoCatalogService catalogService;
+
+    @Value("${taiji.clientId}")
+    private String clientId;
+
+    @Value("${taiji.clientSecret}")
+    private String clientSecret;
+
+    String url = "http://10.110.80.31:8888";
+
+    @Override
+    public void httpsPost() {
+        MultiValueMap<String,String> params = new LinkedMultiValueMap<>();
+        params.add("client_id",clientId);
+        params.add("client_secret",clientSecret);
+        params.add("grant_type","client_credentials");
+
+        String tokenUrl = url + "/tglserver/token";
+        log.info(tokenUrl);
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+        HttpEntity httpEntity = new HttpEntity(params,headers);
+        ResponseEntity<Map> result2 = restTemplate.postForEntity(tokenUrl, httpEntity, Map.class);
+        log.info(result2.getBody().toString());
+        String token = result2.getBody().get("token_type") + " " + result2.getBody().get("access_token");
+        log.info(token);
+
+        //获取目录(行政规划)
+
+        headers.clear();
+        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
+        headers.add("Authorization", token);
+        HttpEntity reqEntity = new HttpEntity(headers);
+
+        String parentCode = "0";
+        String platformid = "0";
+        String deviceUrl = url + "/api/CommonApi/GetOrganizationList?client_id="+clientId+"&parentCode="+parentCode+"&platformid="+platformid;
+
+        // log.info(deviceUrl);
+        ResponseEntity<JSONObject> exchange = restTemplate.exchange(deviceUrl, HttpMethod.GET, reqEntity,JSONObject.class);
+        log.info(exchange.getBody().toString());
+        JSONObject resData = exchange.getBody();
+        JSONArray jsonArray = resData.getJSONArray("List");
+        List<VideoCatalog> catalogs = JSONArray.parseArray(jsonArray.toJSONString(), VideoCatalog.class);
+        if (null != catalogs && catalogs.size() > 0) {
+            // orgChildNodes.addAll(catalogs);
+            // catalogs.forEach(o -> {
+            //     // catalogService.saveOrUpdate(o,new LambdaQueryWrapper<VideoCatalog>()
+            //     //         .eq(VideoCatalog::getPlatformId, o.getPlatformId()));
+            // });
+            getChildNodes(restTemplate,reqEntity,catalogs,url + "/api/CommonApi/GetOrganizationList?client_id="+clientId);
+            catalogService.saveBatch(orgChildNodes);
+        }
+    }
+
+
+
+    public static List<VideoCatalog> orgChildNodes = new ArrayList<VideoCatalog>();
+
+    //根据父节点递归所有子节点
+    public void getChildNodes(RestTemplate restTemplate, HttpEntity reqEntity, List<VideoCatalog> list, String url) {
+        for (VideoCatalog catalog : list) {
+
+            orgChildNodes.add(catalog);
+            String catalogUrl = url + "&parentCode="+catalog.getAreaCode()+"&platformid="+catalog.getPlatformId();
+            ResponseEntity<JSONObject> exchange = restTemplate.exchange(catalogUrl, HttpMethod.GET, reqEntity,JSONObject.class);
+            log.info(exchange.getBody().toString());
+            JSONObject resData = exchange.getBody();
+            JSONArray jsonArray = resData.getJSONArray("List");
+            List<VideoCatalog> catalogs = JSONArray.parseArray(jsonArray.toJSONString(), VideoCatalog.class);
+            for (VideoCatalog log : catalogs) {
+                //遍历出父id等于参数的id,add进子节点集合
+                if (catalog.getParentCode().equals(log.getParentCode())) {
+                    //递归遍历下一级
+                    getChildNodes(restTemplate,reqEntity,list,url);
+                    // orgChildNodes.add(log);
+                }
+            }
+        }
+        // return orgChildNodes;
+    }
+
+}

+ 116 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/task/Videotask.java

@@ -0,0 +1,116 @@
+package cn.com.taiji.algorithm.task;
+
+
+import cn.com.taiji.algorithm.model.VideoCatalog;
+import cn.com.taiji.algorithm.service.IVideoCatalogService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.*;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description
+ *
+ * @Author  yangyue
+ * @Date 2021/11/18
+ */
+
+@Component
+@Slf4j
+public class Videotask {
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Autowired
+    private IVideoCatalogService catalogService;
+
+    @Value("${taiji.clientId}")
+    private String clientId;
+
+    @Value("${taiji.clientSecret}")
+    private String clientSecret;
+
+    String url = "http://10.110.80.31:8888";
+
+    @Scheduled(cron = "0 0 0 * * ?")
+    public void httpsPost() {
+        MultiValueMap<String,String> params = new LinkedMultiValueMap<>();
+        params.add("client_id",clientId);
+        params.add("client_secret",clientSecret);
+        params.add("grant_type","client_credentials");
+
+        String tokenUrl = url + "/tglserver/token";
+        log.info(tokenUrl);
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+        HttpEntity httpEntity = new HttpEntity(params,headers);
+        ResponseEntity<Map> result2 = restTemplate.postForEntity(tokenUrl, httpEntity, Map.class);
+        log.info(result2.getBody().toString());
+        String token = result2.getBody().get("token_type") + " " + result2.getBody().get("access_token");
+        log.info(token);
+
+        //获取目录(行政规划)
+
+        headers.clear();
+        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
+        headers.add("Authorization", token);
+        HttpEntity reqEntity = new HttpEntity(headers);
+
+        String parentCode = "0";
+        String platformid = "0";
+        String deviceUrl = url + "/api/CommonApi/GetOrganizationList?client_id="+clientId+"&parentCode="+parentCode+"&platformid="+platformid;
+
+        // log.info(deviceUrl);
+        ResponseEntity<JSONObject> exchange = restTemplate.exchange(deviceUrl, HttpMethod.GET, reqEntity,JSONObject.class);
+        log.info(exchange.getBody().toString());
+        JSONObject resData = exchange.getBody();
+        JSONArray jsonArray = resData.getJSONArray("List");
+        List<VideoCatalog> catalogs = JSONArray.parseArray(jsonArray.toJSONString(), VideoCatalog.class);
+        if (null != catalogs && catalogs.size() > 0) {
+            // orgChildNodes.addAll(catalogs);
+            // catalogs.forEach(o -> {
+            //     // catalogService.saveOrUpdate(o,new LambdaQueryWrapper<VideoCatalog>()
+            //     //         .eq(VideoCatalog::getPlatformId, o.getPlatformId()));
+            // });
+            getChildNodes(restTemplate,reqEntity,catalogs,url + "/api/CommonApi/GetOrganizationList?client_id="+clientId);
+            catalogService.saveBatch(orgChildNodes);
+        }
+    }
+
+    public static List<VideoCatalog> orgChildNodes = new ArrayList<VideoCatalog>();
+
+    //根据父节点递归所有子节点
+    public static List<VideoCatalog> getChildNodes(RestTemplate restTemplate, HttpEntity reqEntity, List<VideoCatalog> list, String url) {
+        for (VideoCatalog catalog : list) {
+            orgChildNodes.add(catalog);
+            String catalogUrl = url + "&parentCode="+catalog.getAreaCode()+"&platformid="+catalog.getPlatformId();
+            ResponseEntity<JSONObject> exchange = restTemplate.exchange(catalogUrl, HttpMethod.GET, reqEntity,JSONObject.class);
+            log.info(exchange.getBody().toString());
+            JSONObject resData = exchange.getBody();
+            JSONArray jsonArray = resData.getJSONArray("List");
+            List<VideoCatalog> catalogs = JSONArray.parseArray(jsonArray.toJSONString(), VideoCatalog.class);
+            for (VideoCatalog log : catalogs) {
+                //遍历出父id等于参数的id,add进子节点集合
+                if (catalog.getParentCode().equals(log.getParentCode())) {
+                    //递归遍历下一级
+                    getChildNodes(restTemplate,reqEntity,list,url);
+                    orgChildNodes.add(log);
+                }
+            }
+        }
+        return orgChildNodes;
+    }
+
+}

+ 34 - 0
algorithm-service/src/main/java/cn/com/taiji/algorithm/utils/DataUtils.java

@@ -0,0 +1,34 @@
+package cn.com.taiji.algorithm.utils;
+
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description
+ * @Author yangyue
+ * @Date 2023/7/28
+ */
+public class DataUtils {
+
+    /**
+     * 根据传入的日期,获取时间区间中所有的日期
+     *
+     * @param startDate 开始日期
+     * @param endDate 结束日期
+     * @return java.util.List<java.time.LocalDate>
+     */
+    public static List<LocalDate> getAllDatesInTheDateRange(LocalDate startDate, LocalDate endDate) {
+        List<LocalDate> localDateList = new ArrayList<>();
+        // 开始时间必须小于结束时间
+        if (startDate.isAfter(endDate)) {
+            return null;
+        }
+        while (startDate.isBefore(endDate)) {
+            localDateList.add(startDate);
+            startDate = startDate.plusDays(1);
+        }
+        localDateList.add(endDate);
+        return localDateList;
+    }
+}

+ 71 - 0
algorithm-service/src/main/resources/application.yml

@@ -0,0 +1,71 @@
+server:
+  port: 9009
+
+spring:
+  # 数据源配置
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      driverClassName: com.mysql.cj.jdbc.Driver
+      url: jdbc:mysql://10.110.45.18:3306/video?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowMultiQueries=true
+      username: root
+      password: Taiji@2024
+      # 初始连接数
+      initialSize: 5
+      # 最小连接池数量
+      minIdle: 10
+      # 最大连接池数量
+      maxActive: 20
+      # 配置获取连接等待超时的时间
+      maxWait: 60000
+      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+      timeBetweenEvictionRunsMillis: 60000
+      # 配置一个连接在池中最小生存的时间,单位是毫秒
+      minEvictableIdleTimeMillis: 300000
+      # 配置一个连接在池中最大生存的时间,单位是毫秒
+      maxEvictableIdleTimeMillis: 9000000
+      # 配置检测连接是否有效
+      validationQuery: SELECT 1 FROM DUAL
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      webStatFilter.enabled: false
+      statViewServlet.enabled: false
+
+# MyBatis配置
+mybatis-plus:
+  # 搜索指定包别名
+  typeAliasesPackage: cn.com.taiji.**.model
+  # 配置mapper的扫描,找到所有的mapper.xml映射文件
+  mapperLocations: classpath*:mapper/**/*Mapper.xml
+  #  mapperLocations: classpath*:cn/com/taiji/video/mapper/mapping/*Mapping.xml
+  # 加载全局的配置文件
+  # configLocation: classpath:mybatis/mybatis-config.xml
+  configuration:
+    # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
+    #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    # 返回类型为Map,显示null对应的字段
+    call-setters-on-nulls: true
+  global-config:
+    db-config:
+      # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
+      logic-delete-field: delFlag
+      # 逻辑已删除值(默认为 1)
+      logic-delete-value: 1
+      # 逻辑未删除值(默认为 0)
+      logic-not-delete-value: 0
+      id-type: assign_id
+      update-strategy: not_empty
+    banner: false   # 不打印banner
+taiji:
+#  17
+#  clientId: 8c4eae47a0e64854b78952e8da18caf2
+#  clientSecret: e5999e26cfec4cb0a74d52a898e4d0c5
+#  18
+  clientId: a752ed30088840dcaa46ae81f4a39aac
+  clientSecret: 5cc26ce11aa14351a093b422de08af11
+  url: 10.110.33.6:443
+  ak: 27335616
+  sk: KZTwnMbtnKHCyNju0eur
+  faceTaskId: 0db384d3bbdd432aba457d64e347d369
+  carTaskId: 4ef6713e9b894c35b572800f30fd8eba

+ 29 - 0
algorithm-service/src/main/resources/mapper/AlgorithmInfoMapper.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.taiji.algorithm.mapper.AlgorithmInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="cn.com.taiji.algorithm.model.AlgorithmInfo">
+        <result column="task_id" property="taskId" />
+        <result column="stream_type" property="streamType" />
+        <result column="source_type" property="sourceType" />
+        <result column="algorithm_type" property="algorithmType" />
+        <result column="task_name" property="taskName" />
+        <result column="camera_id" property="cameraId" />
+        <result column="task_status" property="taskStatus" />
+        <result column="picture_QPS" property="pictureQps" />
+        <result column="capacity_ratio" property="capacityRatio" />
+        <result column="start_time" property="startTime" />
+        <result column="end_time" property="endTime" />
+        <result column="scale" property="scale" />
+        <result column="file_URL" property="fileUrl" />
+        <result column="dispatch_repoId" property="dispatchRepoid" />
+        <result column="schedule_strategyId" property="scheduleStrategyid" />
+        <result column="schedule_repoIds" property="scheduleRepoids" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+        <result column="user_data" property="userData" />
+        <result column="task_group_containerId" property="taskGroupContainerid" />
+    </resultMap>
+
+</mapper>

+ 22 - 0
algorithm-service/src/main/resources/mapper/VideoCatalogMapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.taiji.algorithm.mapper.VideoCatalogMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="cn.com.taiji.algorithm.model.VideoCatalog">
+        <result column="area_code" property="areaCode" />
+        <result column="name" property="name" />
+        <result column="parent_code" property="parentCode" />
+        <result column="PlatformID" property="platformid" />
+        <result column="OnlineCount" property="onlinecount" />
+        <result column="Count" property="count" />
+        <result column="level" property="level" />
+        <result column="SecrecyCount" property="secrecycount" />
+        <result column="gongansource" property="gongansource" />
+        <result column="FaultCount" property="faultcount" />
+        <result column="HealthCount" property="healthcount" />
+        <result column="Piccount" property="piccount" />
+        <result column="RecommendCount" property="recommendcount" />
+    </resultMap>
+
+</mapper>

+ 25 - 0
algorithm-service/src/main/resources/mapper/VideoInfoMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.taiji.algorithm.mapper.VideoInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="cn.com.taiji.algorithm.model.VideoInfo">
+        <result column="groupId" property="groupid" />
+        <result column="monitorId" property="monitorid" />
+        <result column="monitorName" property="monitorname" />
+        <result column="AreaCode" property="areacode" />
+        <result column="AreaName" property="areaname" />
+        <result column="monitorStauts" property="monitorstauts" />
+        <result column="monitorDigest" property="monitordigest" />
+        <result column="SaveStatus" property="savestatus" />
+        <result column="PTZ_Available" property="ptzAvailable" />
+        <result column="Latitude" property="latitude" />
+        <result column="Longitude" property="longitude" />
+        <result column="DeviceId" property="deviceid" />
+        <result column="PlatformId" property="platformid" />
+        <result column="MediaCode" property="mediacode" />
+        <result column="RtspUrl" property="rtspurl" />
+        <result column="HLSUrl" property="hlsurl" />
+    </resultMap>
+
+</mapper>