From 6554fd4bf83e50d39fc75f1c4ac3fbf6675f1962 Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期四, 10 十一月 2022 09:28:10 +0800
Subject: [PATCH] changes

---
 dao/src/main/resources/mapper/PoleBindingMapper.xml                                   |    3 
 ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java        |  163 ++++++++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/NewNovaLedParam.java    |   19 +
 ximon-admin/pom.xml                                                                   |   16 +
 dao/src/main/resources/mapper/NewNovaLedMapper.xml                                    |   23 +
 ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/StatusVO.java              |   16 +
 ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/conf/FilePathConfig.java      |   22 +
 ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/APITest.java            |  275 +++++++++---------
 dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaFile.java                         |    3 
 dao/src/main/java/com/sandu/ximon/dao/mapper/NewNovaLedMapper.java                    |   20 +
 sandu-common/src/main/java/com/sandu/common/file/config/NovaFileConfig.java           |   24 +
 /dev/null                                                                             |    0 
 ximon-admin/src/main/resources/application-local.yml                                  |   13 
 ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedService.java    |   40 ++
 ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedController.java |   47 +++
 sandu-common/src/main/java/com/sandu/common/file/impl/LocalFileUploadImpl.java        |    3 
 dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaLed.java                          |  185 ++++++++++++
 17 files changed, 729 insertions(+), 143 deletions(-)

diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaFile.java b/dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaFile.java
index b0937fa..1886301 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaFile.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaFile.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.Date;
 import lombok.Data;
 
@@ -69,7 +70,7 @@
     /**
      * 涓婁紶鏃堕棿
      */
-    private Date createTime;
+    private LocalDateTime createTime;
 
     /**
      * 瑙嗛鏃堕暱
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaLed.java b/dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaLed.java
new file mode 100644
index 0000000..87d8853
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaLed.java
@@ -0,0 +1,185 @@
+package com.sandu.ximon.dao.domain;
+
+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 com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 鏂拌鐡﹁澶囪〃
+ *
+ * @TableName new_nova_led
+ */
+@NoArgsConstructor
+@TableName(value = "new_nova_led")
+@Data
+public class NewNovaLed implements Serializable {
+    /**
+     * 鎾斁鍣↖D
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 鎾斁鍣ㄥ悕绉�(鏁版嵁搴�)
+     */
+    private String name;
+
+    /**
+     * 鎾斁鍣ㄥ悕绉�(server)
+     */
+    private String playerName;
+
+    /**
+     * 鎾斁鍣↖D(Vnnox)
+     */
+    private String playerId;
+
+    /**
+     * 鎾斁鍣ㄥ敮涓�鏍囪瘑,濡傛灉涓簄ull浠h〃娌℃湁缁戝畾鎾斁鍣�(Vnnox)
+     */
+    private String sn;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 鍒嗚鲸鐜�
+     */
+    private Integer onlineSign;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    private LocalDateTime updateTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+//    /**
+//     * 浜у搧鍚嶇О
+//     */
+//    @JsonIgnore
+//    @TableField(exist = false)
+//    private String productName;
+//
+//    /**
+//     * 鏄剧ず灞忓搴�,鍗曚綅涓哄儚绱�
+//     */
+//    @TableField(exist = false)
+//    private Integer width;
+//
+//    /**
+//     * 鏄剧ず灞忛珮搴�,鍗曚綅涓哄儚绱�
+//     */
+//    @TableField(exist = false)
+//    private Integer height;
+//
+//    /**
+//     * 鏃嬭浆瑙掑害:0锛�90锛�180锛�270
+//     */
+//    @TableField(exist = false)
+//    private Integer rotation;
+//
+//    /**
+//     * 鏄剧ず灞忓埆鍚�
+//     */
+//    @JsonIgnore
+//    @TableField(exist = false)
+//    private String aliasName;
+//
+//    /**
+//     * 鏄惁鏈変汉宸茬粡鐧婚檰
+//     */
+//    @JsonIgnore
+//    @TableField(exist = false)
+//    private Boolean logined;
+//
+//    /**
+//     * 鑻ュ凡缁忔湁浜虹櫥闄嗭紝浠h〃宸茬粡鐧婚檰鐨勭敤鎴峰悕鍒楄〃
+//     */
+//    @TableField(exist = false)
+//    private List<String> username;
+//
+//    /**
+//     * tcp杩炴帴绔彛
+//     */
+//    @TableField(exist = false)
+//    private Integer tcpPort;
+//
+//    /**
+//     * ftp杩炴帴绔彛
+//     */
+//    @TableField(exist = false)
+//    private Integer ftpPort;
+//
+//    /**
+//     * 绯荤粺璁剧疆ftp绔彛
+//     */
+//    @TableField(exist = false)
+//    private Integer syssetFtpPort;
+//
+//    /**
+//     * 绯荤粺璁剧疆tcp绔彛
+//     */
+//    @TableField(exist = false)
+//    private Integer syssetTcpPort;
+//
+//    /**
+//     * 缁堢杩斿洖鐨刱ey,鍙備笌ftp鐨勫瘑鐮佺敓浜ц鍒�
+//     */
+//    @TableField(exist = false)
+//    private String key;
+//
+//    /**
+//     * 绯荤粺骞冲彴淇℃伅锛堟殏鏃朵細鍑虹幇rk3368,rk312x锛�
+//     */
+//    @TableField(exist = false)
+//    private String platform;
+//
+//    /**
+//     * True琛ㄧず缁堢鏀寔鍔犲瘑妯″紡锛屽綋鐒跺鏋滄槸鏂扮殑缁堢涓�瀹氭槸True
+//     */
+//    @TableField(exist = false)
+//    private Boolean privacy;
+//
+//
+//    /**
+//     * 褰撳墠灞忎綋鐘舵�侊紝terminalState鍏辨湁6涓��,鍒嗗埆浠h〃锛�
+//     * 0锛氭湭杩炴帴浠讳綍缁堢锛屽綋鍓嶅浜庢湭杩炴帴鐘舵��
+//     * 1锛氳繛鎺ユ垚鍔熶絾鏄湭鐧诲綍鐘舵��
+//     * 2锛氳浠栦汉鐧诲綍鐘舵��
+//     * 3锛氱櫥褰曟垚鍔熺姸鎬�
+//     * 4锛氬瘑鐮侀敊璇姸鎬�
+//     * 5锛氱绾跨姸鎬侊紝澶勪簬鎼滅储涓嶅埌鐨勭姸鎬侊紝浣嗘槸鏇剧粡琚悳绱㈠埌杩�
+//     */
+//    @TableField(exist = false)
+//    private Integer terminalState;
+//
+//    /**
+//     * 璁板綍鐐瑰嚮蹇界暐瀵嗙爜鐨勬椂闂存埑
+//     */
+//    @JsonIgnore
+//    @TableField(exist = false)
+//    private Long ignoreTime;
+//
+//    /**
+//     * 鏄惁璁颁綇瀵嗙爜锛宼rue琛ㄧず璁颁綇锛宖alse锛岃〃绀烘病鏈�
+//     */
+//    @TableField(exist = false)
+//    private Boolean hasPassword;
+//
+//    /**
+//     * 瀵嗙爜
+//     */
+//    @TableField(exist = false)
+//    private String password;
+}
\ No newline at end of file
diff --git a/dao/src/main/java/com/sandu/ximon/dao/mapper/NewNovaLedMapper.java b/dao/src/main/java/com/sandu/ximon/dao/mapper/NewNovaLedMapper.java
new file mode 100644
index 0000000..92b0c0c
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/NewNovaLedMapper.java
@@ -0,0 +1,20 @@
+package com.sandu.ximon.dao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sandu.ximon.dao.domain.NewNovaLed;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author Administrator
+ * @description 閽堝琛ㄣ�恘ew_nova_led(鏂拌鐡﹁澶囪〃)銆戠殑鏁版嵁搴撴搷浣淢apper
+ * @createDate 2022-11-09 11:10:48
+ * @Entity com.sandu.ximon.dao.domain.NewNovaLed
+ */
+@Mapper
+public interface NewNovaLedMapper extends BaseMapper<NewNovaLed> {
+
+}
+
+
+
+
diff --git a/dao/src/main/resources/mapper/NewNovaLedMapper.xml b/dao/src/main/resources/mapper/NewNovaLedMapper.xml
new file mode 100644
index 0000000..862178c
--- /dev/null
+++ b/dao/src/main/resources/mapper/NewNovaLedMapper.xml
@@ -0,0 +1,23 @@
+<?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="com.sandu.ximon.dao.mapper.NewNovaLedMapper">
+
+    <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.NewNovaLed">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="name" column="name" jdbcType="VARCHAR"/>
+            <result property="playerName" column="player_name" jdbcType="VARCHAR"/>
+            <result property="playerId" column="player_id" jdbcType="VARCHAR"/>
+            <result property="sn" column="sn" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="resolution" column="resolution" jdbcType="VARCHAR"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,name,player_name,
+        player_id,sn,create_time,
+        resolution,update_time
+    </sql>
+</mapper>
diff --git a/dao/src/main/resources/mapper/PoleBindingMapper.xml b/dao/src/main/resources/mapper/PoleBindingMapper.xml
index d23236e..7c6ec6d 100644
--- a/dao/src/main/resources/mapper/PoleBindingMapper.xml
+++ b/dao/src/main/resources/mapper/PoleBindingMapper.xml
@@ -23,9 +23,10 @@
     <select id="getPoleByBinding" resultType="com.sandu.ximon.dao.domain.Pole">
         SELECT t2.*
         FROM `pole_binding` t1
-        LEFT JOIN pole t2 ON t1.pole_id = t2.id
+        LEFT JOIN pole t2 ON t1.pole_id = t2.id  AND t1.device_type=0
         <where>
             t1.device_code = #{Mac}
+            AND t1.device_type=0
             <if test="type != null">
                 AND t1.device_type = #{type}
             </if>
diff --git a/sandu-common/src/main/java/com/sandu/common/file/config/NovaFileConfig.java b/sandu-common/src/main/java/com/sandu/common/file/config/NovaFileConfig.java
new file mode 100644
index 0000000..5213661
--- /dev/null
+++ b/sandu-common/src/main/java/com/sandu/common/file/config/NovaFileConfig.java
@@ -0,0 +1,24 @@
+package com.sandu.common.file.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/9
+ */
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "new-nova-file.upload")
+public class NovaFileConfig {
+
+    /**
+     * 鏈嶅姟鍣ㄥ瓨鍌ㄧ殑鏍硅矾寰�
+     */
+    private String uploadRootPath;
+    /**
+     * 鏈嶅姟鍣╥p鍜岀鍙�
+     */
+    private String realUrl;
+}
diff --git a/sandu-common/src/main/java/com/sandu/common/file/impl/LocalFileUploadImpl.java b/sandu-common/src/main/java/com/sandu/common/file/impl/LocalFileUploadImpl.java
index 4b254a2..14f6fb0 100644
--- a/sandu-common/src/main/java/com/sandu/common/file/impl/LocalFileUploadImpl.java
+++ b/sandu-common/src/main/java/com/sandu/common/file/impl/LocalFileUploadImpl.java
@@ -9,6 +9,7 @@
 import com.sandu.common.execption.BusinessException;
 import com.sandu.common.file.*;
 import com.sandu.common.file.config.FileProperties;
+import com.sandu.common.file.config.NovaFileConfig;
 import com.sandu.common.util.SpringContextHolder;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -41,7 +42,7 @@
 
     @Override
     public FileUploadDto uploadFile(MultipartFile multipartFile) {
-        FileProperties fileProperties = SpringContextHolder.getBean(FileProperties.class);
+        NovaFileConfig fileProperties = SpringContextHolder.getBean(NovaFileConfig.class);
         String originalFilename = multipartFile.getOriginalFilename();
         long size = multipartFile.getSize();
         String suffix = FileUtil.getSuffix(originalFilename);
diff --git a/ximon-admin/pom.xml b/ximon-admin/pom.xml
index 046861c..bcecb14 100644
--- a/ximon-admin/pom.xml
+++ b/ximon-admin/pom.xml
@@ -105,6 +105,22 @@
                 </exclusion>
             </exclusions>
         </dependency>
+
+        <!--鏂拌鐡︿緷璧�-->
+        <!-- https://mvnrepository.com/artifact/net.java.dev.jna/jna -->
+        <dependency>
+            <groupId>net.java.dev.jna</groupId>
+            <artifactId>jna</artifactId>
+            <version>5.6.0</version>
+        </dependency>
+
+        <!-- https://mvnrepository.com/artifact/net.java.dev.jna/jna-platform -->
+        <dependency>
+            <groupId>net.java.dev.jna</groupId>
+            <artifactId>jna-platform</artifactId>
+            <version>5.6.0</version>
+        </dependency>
+
     </dependencies>
 
 
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/conf/FilePathConfig.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/conf/FilePathConfig.java
new file mode 100644
index 0000000..dcc2adf
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/conf/FilePathConfig.java
@@ -0,0 +1,22 @@
+package com.sandu.ximon.admin.newnova.conf;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/9
+ */
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "new-nova")
+public class FilePathConfig {
+
+    /**
+     * 渚濊禆瀛樻斁璺緞
+     */
+    private String stringPath;
+
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedController.java
new file mode 100644
index 0000000..703ae72
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedController.java
@@ -0,0 +1,47 @@
+package com.sandu.ximon.admin.newnova.led;
+
+import com.sandu.common.domain.ResponseVO;
+import com.sandu.common.util.ResponseUtil;
+import com.sandu.ximon.admin.newnova.param.NewNovaLedParam;
+import com.sandu.ximon.admin.newnova.utils.NovaAPIUtil;
+import com.sandu.ximon.admin.newnova.vo.StatusVO;
+import com.sandu.ximon.admin.security.PermissionConfig;
+import com.sandu.ximon.dao.domain.LedV2RegisterResultEntity;
+import com.sandu.ximon.dao.enums.MenuEnum;
+import lombok.AllArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+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.RestController;
+
+import java.net.URISyntaxException;
+import java.util.Map;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/9
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/v1/nova/led")
+public class NewNovaLedController {
+    private final PermissionConfig permissionConfig;
+    private final NewNovaLedService newNovaLedService;
+    private final NovaAPIUtil novaApiUtil;
+
+    @PostMapping("/validateSN")
+    public ResponseVO<Object> validateSN(@RequestBody @Validated NewNovaLedParam param)  {
+        if (!permissionConfig.check(MenuEnum.VNNOX_ADD.getCode())) {
+            return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+        }
+       boolean b= newNovaLedService.saveLed(param);
+        return ResponseUtil.success("ledV2RegisterResultEntity");
+    }
+    @PostMapping("/test")
+    public ResponseVO<Object> validateSN()  {
+        StatusVO mzva51930N2113017308 = novaApiUtil.login("MZVA51930N2113017308");
+        return ResponseUtil.success(mzva51930N2113017308);
+    }
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedService.java
new file mode 100644
index 0000000..9771100
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedService.java
@@ -0,0 +1,40 @@
+package com.sandu.ximon.admin.newnova.led;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.sandu.common.execption.BusinessException;
+import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.ximon.admin.newnova.param.NewNovaLedParam;
+import com.sandu.ximon.dao.domain.NewNovaLed;
+import com.sandu.ximon.dao.mapper.NewNovaLedMapper;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/9
+ */
+@Service
+@AllArgsConstructor
+public class NewNovaLedService extends BaseServiceImpl<NewNovaLedMapper, NewNovaLed> {
+
+
+    /**
+     * 灞忓箷娉ㄥ唽
+     *
+     * @param param
+     * @return
+     */
+    public boolean saveLed(NewNovaLedParam param) {
+        NewNovaLed one = getOne(Wrappers.lambdaQuery(NewNovaLed.class).eq(NewNovaLed::getSn, param.getSn()));
+        if (one != null) {
+            throw new BusinessException("璁惧宸插瓨鍦�,璇峰嬁閲嶅娉ㄥ唽锛�");
+        }
+        NewNovaLed led = new NewNovaLed();
+        led.setSn(param.getSn());
+        led.setName(param.getName());
+        return save(led);
+    }
+
+
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/libs/jna-5.6.0.jar b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/libs/jna-5.6.0.jar
deleted file mode 100644
index fda5aa4..0000000
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/libs/jna-5.6.0.jar
+++ /dev/null
Binary files differ
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/libs/jna-platform-5.6.0.jar b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/libs/jna-platform-5.6.0.jar
deleted file mode 100644
index 91b2635..0000000
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/libs/jna-platform-5.6.0.jar
+++ /dev/null
Binary files differ
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/NewNovaLedParam.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/NewNovaLedParam.java
new file mode 100644
index 0000000..f6e19ed
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/NewNovaLedParam.java
@@ -0,0 +1,19 @@
+package com.sandu.ximon.admin.newnova.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/9
+ */
+@Data
+public class NewNovaLedParam {
+
+    @NotBlank(message = "sn鐮佷笉鑳戒负绌�")
+    private String sn;
+
+    private String name;
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/APITest.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/APITest.java
index 5636dc4..c913936 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/APITest.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/APITest.java
@@ -1,166 +1,161 @@
 package com.sandu.ximon.admin.newnova.utils;
 
 import com.sun.jna.Native;
-/*
-* 浣跨敤鍓嶉槄璇�:
-* 1 鍏充簬鍙兘鍙戠敓鐨勬悳绱笉鍒癟鍗$殑鍘熷洜锛�
-*   1.1. 鎵撳紑浜唀xpress锛屽鑷磚dp绔彛琚崰鐢紝璇峰叧闂璭xpress杞欢鍚庨噸璇�
-*   1.2. SDK鍜孴鍗′笉鍦ㄥ悓涓�涓眬鍩熺綉锛屽彲浠ュ皾璇曟寚瀹歩p鎼滅储锛屼娇鐢ㄦ柟娉曡锛歨ttps://docapi.vnnox.com/web/#/7?page_id=609
 
-* 2 鍏充簬浣跨敤sdk鍔ㄦ�佸簱鍙兘鍑虹幇鐨勯棶棰樺強瑙e喅鏂规硶锛�
-*
-*     2.1. 鍦╨inux涓嬪鏋滃嚭鐜發ib***.so  file too short ,杩欑閿欒锛屾湁鍙兘鏄蒋杩炴帴澶辨晥锛屽彲浠ュ皾璇曞垹闄ゅ師鏈夋枃浠讹紝灏濊瘯 ln -s 閲嶆柊鐢熸垚杞繛鎺ャ�傛瘮濡傦細 ./libcurl.so: file too short锛岄鍏� rm libcurl.so锛岀劧鍚巐n -s  libcurl.so.4.3.0 libcurl.so鍗冲彲銆�
-*     2.2. 閽堝java椤圭洰锛屼娇鐢↗NA鍔犺浇so搴撴椂锛岃浣跨敤缁濆璺緞銆傛瘮濡傦細
-*     //winodws
-*     ViplexCore instance = (ViplexCore) Native.loadLibrary("D:\\ViplexCore3.3.0.01_x64\\bin\\viplexcore.dll",ViplexCore.class);
-*     //鎴栬�� linux
-*     ViplexCore instance = (ViplexCore) Native.loadLibrary("home/user/desktop/ViplexCore_3.3.0.01_CentOS/bin/libviplexcore.so",ViplexCore.class);
-*
-*     2.3. 閽堝java椤圭洰锛屽鏋滆浣跨敤鐩稿璺緞锛岃灏唖dk鍔ㄦ�佸簱璺緞娣诲姞鍒癱lasspath鐜鍙橀噺锛屾湁涓嬮潰鍑犵鏂规硶锛堜篃鍙互鎼滅储鐩稿叧鏁欑▼娣诲姞锛夛紝渚嬪锛�
-*       2.3.1. 鍛戒护琛屼娇鐢細         javac -cp "C:\Users\HiWin10\Downloads\ViplexCore3.3.0.01_x64\bin"   (璇﹁SDK demo/java/涓媟unDemo.sh鎴栬�卹unDemo.bat鏂囦欢)
-*       2.3.2. 瀵煎叆鐜鍙橀噺锛屽锛�   export CLASSPATH=$CLASSPATH:home/user/ViplexCore3.3.0.01_x64/
-*       2.3.3. 閽堝springboot椤圭洰锛� java -Xbootclasspath/a:/home/nova/novasdk/
-* */
+/*
+ * 浣跨敤鍓嶉槄璇�:
+ * 1 鍏充簬鍙兘鍙戠敓鐨勬悳绱笉鍒癟鍗$殑鍘熷洜锛�
+ *   1.1. 鎵撳紑浜唀xpress锛屽鑷磚dp绔彛琚崰鐢紝璇峰叧闂璭xpress杞欢鍚庨噸璇�
+ *   1.2. SDK鍜孴鍗′笉鍦ㄥ悓涓�涓眬鍩熺綉锛屽彲浠ュ皾璇曟寚瀹歩p鎼滅储锛屼娇鐢ㄦ柟娉曡锛歨ttps://docapi.vnnox.com/web/#/7?page_id=609
+
+ * 2 鍏充簬浣跨敤sdk鍔ㄦ�佸簱鍙兘鍑虹幇鐨勯棶棰樺強瑙e喅鏂规硶锛�
+ *
+ *     2.1. 鍦╨inux涓嬪鏋滃嚭鐜發ib***.so  file too short ,杩欑閿欒锛屾湁鍙兘鏄蒋杩炴帴澶辨晥锛屽彲浠ュ皾璇曞垹闄ゅ師鏈夋枃浠讹紝灏濊瘯 ln -s 閲嶆柊鐢熸垚杞繛鎺ャ�傛瘮濡傦細 ./libcurl.so: file too short锛岄鍏� rm libcurl.so锛岀劧鍚巐n -s  libcurl.so.4.3.0 libcurl.so鍗冲彲銆�
+ *     2.2. 閽堝java椤圭洰锛屼娇鐢↗NA鍔犺浇so搴撴椂锛岃浣跨敤缁濆璺緞銆傛瘮濡傦細
+ *     //winodws
+ *     ViplexCore instance = (ViplexCore) Native.loadLibrary("D:\\ViplexCore3.3.0.01_x64\\bin\\viplexcore.dll",ViplexCore.class);
+ *     //鎴栬�� linux
+ *     ViplexCore instance = (ViplexCore) Native.loadLibrary("home/user/desktop/ViplexCore_3.3.0.01_CentOS/bin/libviplexcore.so",ViplexCore.class);
+ *
+ *     2.3. 閽堝java椤圭洰锛屽鏋滆浣跨敤鐩稿璺緞锛岃灏唖dk鍔ㄦ�佸簱璺緞娣诲姞鍒癱lasspath鐜鍙橀噺锛屾湁涓嬮潰鍑犵鏂规硶锛堜篃鍙互鎼滅储鐩稿叧鏁欑▼娣诲姞锛夛紝渚嬪锛�
+ *       2.3.1. 鍛戒护琛屼娇鐢細         javac -cp "C:\Users\HiWin10\Downloads\ViplexCore3.3.0.01_x64\bin"   (璇﹁SDK demo/java/涓媟unDemo.sh鎴栬�卹unDemo.bat鏂囦欢)
+ *       2.3.2. 瀵煎叆鐜鍙橀噺锛屽锛�   export CLASSPATH=$CLASSPATH:home/user/ViplexCore3.3.0.01_x64/
+ *       2.3.3. 閽堝springboot椤圭洰锛� java -Xbootclasspath/a:/home/nova/novasdk/
+ * */
 public class APITest {
     static Boolean g_bAPIReturn = false;
     static int g_code = 0;
-	static String g_sn = "BZSA79353N1310006847"; //BZSA07313J0350000997
+    static String g_sn = "MZVA51930N2113017308"; //BZSA07313J0350000997
 
-    static void waitAPIReturn() throws InterruptedException
-    {
-        while (!g_bAPIReturn)
-        {
+    static void waitAPIReturn() throws InterruptedException {
+        while (!g_bAPIReturn) {
             Thread.sleep(1000);
         }
         g_bAPIReturn = false;
     }
 
-    static void testApi() throws InterruptedException
-        {
-			System.setProperty("jna.encoding", "UTF-8");
-			ViplexCore instance = (ViplexCore) Native.loadLibrary("viplexcore",ViplexCore.class);
-			//褰撻渶瑕侀泦鎴愬埌椤圭洰涓椂锛岃淇敼涓婇潰鍔犺浇搴撶殑浣嶇疆涓轰綘涓嬭浇鐨剆dk搴撶殑缁濆璺緞锛寃indows涓嬪锛�
-			//ViplexCore instance = (ViplexCore) Native.loadLibrary("D:\\ViplexCore3.3.0.01_x64\\bin\\viplexcore.dll",ViplexCore.class);			
-            
-			//褰撻渶瑕侀泦鎴愬埌椤圭洰涓椂锛岃淇敼姝ゅ鍔犺浇搴撶殑浣嶇疆涓轰綘涓嬭浇鐨剆dk搴撶殑缁濆璺緞锛宭inux涓嬪锛�
-			//ViplexCore instance = (ViplexCore) Native.loadLibrary("home/user/desktop/ViplexCore_3.3.0.01_CentOS/bin/libviplexcore.so",ViplexCore.class);
-            ViplexCore.CallBack callBack = new ViplexCore.CallBack() {
+    static void testApi() throws InterruptedException {
+        System.setProperty("jna.encoding", "UTF-8");
+//			ViplexCore instance = (ViplexCore) Native.loadLibrary("viplexcore",ViplexCore.class);
+        //褰撻渶瑕侀泦鎴愬埌椤圭洰涓椂锛岃淇敼涓婇潰鍔犺浇搴撶殑浣嶇疆涓轰綘涓嬭浇鐨剆dk搴撶殑缁濆璺緞锛寃indows涓嬪锛�
+        ViplexCore instance = (ViplexCore) Native.loadLibrary("C:\\Users\\Administrator\\Desktop\\novaWin\\bin\\viplexcore.dll", ViplexCore.class);
 
-                @Override
-                public void dataCallBack(int code, String data) {
-                    // TODO Auto-generated method stub
-                    g_code = code;
-                    String strCode = "\nViplexCore Demo code:" + code;
-                    String strData = "\nViplexCore Demo data:" + data;
-                    System.out.println(strCode);
-                    System.out.println(strData);
-                    g_bAPIReturn=true;
-                }
-                
-            };
+        //褰撻渶瑕侀泦鎴愬埌椤圭洰涓椂锛岃淇敼姝ゅ鍔犺浇搴撶殑浣嶇疆涓轰綘涓嬭浇鐨剆dk搴撶殑缁濆璺緞锛宭inux涓嬪锛�
+//			ViplexCore instance = (ViplexCore) Native.loadLibrary("C:\\Users\\Administrator\\Desktop\\novaLinux\\bin\\libviplexcore.so",ViplexCore.class);
+        ViplexCore.CallBack callBack = new ViplexCore.CallBack() {
 
-            String rootDir = System.getProperty("user.dir") + "/temp";
-            rootDir = rootDir.replaceAll( "\\\\","/");
-            String createProgram = "{\"name\":\"Demo\",\"width\":500,\"height\":500,\"tplID\":1,\"winInfo\":{\"height\":100,\"width\":100,\"left\":0,\"top\":0,\"zindex\":0,\"index\":0}}";
-            String editProgram = "{\"programID\":1,\"pageID\":1,\"pageInfo\":{\"name\":\"鑺傜洰\",\"widgetContainers\":[{\"audioGroup\":\"\",\"backgroundColor\":\"#00000000\",\"backgroundDrawable\":\"\",\"contents\":{\"widgetGroups\":[],\"widgets\":[{\"id\":1,\"enable\":true,\"repeatCount\":1,\"layout\":{\"y\":\"0\",\"height\":\"100%\",\"x\":\"0\",\"width\":\"100%\"},\"backgroundColor\":\"#00000000\",\"backgroundDrawable\":\"\",\"backgroundMusic\":\"\",\"zOrder\":0,\"displayRatio\":\"FULL\",\"outAnimation\":{\"type\":0,\"duration\":0},\"dataSource\":\"62ea7e60c493c1f860ae256eef8ec89c.png\",\"type\":\"PICTURE\",\"constraints\":[{\"cron\":[],\"endTime\":\"4017-12-30T23:59:59Z+8:00\",\"startTime\":\"1970-01-01T00:00:00Z+8:00\"}],\"border\":{\"borderThickness\":\"2px,3px,5%,6\",\"style\":0,\"backgroundColor\":\"#ff000000\",\"name\":\"border\",\"cornerRadius\":\"2%\",\"effects\":{\"headTailSpacing\":\"\",\"isHeadTail\":false,\"speedByPixelEnable\":true,\"speed\":0,\"animation\":\"CLOCK_WISE\"}},\"inAnimation\":{\"type\":0,\"duration\":1000},\"duration\":3605000,\"name\":\"test.png\",\"originalDataSource\":\"./test.png\",\"functionStorage\":\"\",\"isSupportSpecialEffects\":false}]},\"enable\":true,\"id\":1,\"itemsSource\":\"\",\"layout\":{\"height\":\"1.0\",\"width\":\"1.0\",\"x\":\"0.0\",\"y\":\"0.0\"},\"name\":\"widgetContainers1\",\"pickCount\":0,\"pickPolicy\":\"ORDER\",\"zOrder\":0}]}}";
-            String genrateProgram = String.format(
-                "{\"programID\":1,\"outPutPath\":\"%s/\",\"mediasPath\":[{\"oldPath\":\"test\",\"newPath\":\"test\"}]}",
-                rootDir);
-            String trasfromProgram = String.format(
-				"{\"sn\": \"%s\",\"iconPath\": \"\",\"iconName\": \"\",\"sendProgramFilePaths\": {\"programPath\": \"%s/program1\",\"mediasPath\": {\"./test.png\": \"test.png\"}},\"programName\": \"program1\",\"deviceIdentifier\": \"Demo\",\"startPlayAfterTransferred\": true,\"insertPlay\": true}",
-				g_sn,
-                rootDir);
-				
-				
-		Boolean bTestVideo = false;
-		if (bTestVideo)
-		{
-			editProgram = "{\"programID\":1,\"pageID\":1,\"pageInfo\":{\"name\":\"Demo\",\"widgetContainers\":[{\"contents\":{\"widgets\":[{\"constraints\":[{\"cron\":[\"0 0 0 ? * 1,2,3,4,5,6,7\"],\"endTime\":\"4017-12-30T23:59:59Z 8:00\",\"startTime\":\"1970-01-01T00:00:00Z 8:00\"}],\"duration\":5000,\"dataSource\":\"219c7dd3260d6bf98ebf61b6da440ffd.avi\",\"type\":\"VIDEO\",\"name\":\"test.vai\",\"originalDataSource\":\"./test.avi\"}]},\"id\":1,\"name\":\"widgetContainers1\"}]}}";
-					
-			trasfromProgram = String.format(
-			"{\"sn\":\"%s\",\"iconPath\": \"\",\"iconName\": \"\",\"sendProgramFilePaths\": {\"programPath\": \"%s/program1\",\"mediasPath\": {\"./test.avi\": \"test.avi\"}},\"programName\": \"program1\",\"deviceIdentifier\": \"Demo\",\"startPlayAfterTransferred\": true,\"insertPlay\": true}",
-			g_sn,
-			rootDir);
-		}
-				
-				
-				
-				
-				
-				
-				
-			Boolean testText = false;
-			if (testText) {
-				editProgram = "{\"programID\":1,\"pageID\":1,\"pageInfo\":{\"name\":\"jiemu\",\"widgetContainers\":[{\"contents\":{\"widgets\":[{\"constraints\":[{\"cron\":[\"0 0 0 ? * 1,2,3,4,5,6,7\"],\"endTime\":\"4017-12-30T23:59:59Z+8:00\",\"startTime\":\"1970-01-01T00:00:00Z+8:00\"}],\"duration\":5000,\"metadata\":{\"content\":{\"autoPaging\":true,\"backgroundMusic\":{\"duration\":0,\"isTextSync\":false},\"displayStyle\":{\"scrollAttributes\":{\"effects\":{\"animation\":\"MARQUEE_LEFT\",\"speed\":3}},\"type\":\"SCROLL\"},\"paragraphs\":[{\"backgroundColor\":\"#00000000\",\"horizontalAlignment\":\"CENTER\",\"letterSpacing\":0,\"lineSpacing\":0,\"lines\":[{\"segs\":[{\"content\":\"绠�浣撶箒楂旀棩鏈獮頃滉淡鞏�.English123\"}]}],\"verticalAlignment\":\"CENTER\"}],\"textAttributes\":[{\"backgroundColor\":\"#ff000000\",\"attributes\":{\"font\":{\"family\":[\"Arial\"],\"isUnderline\":false,\"size\":20,\"style\":\"NORMAL\"},\"letterSpacing\":0,\"textColor\":\"#ffff0000\"}}]}},\"name\":\"text\",\"type\":\"ARCH_TEXT\"}]},\"id\":1,\"name\":\"widgetContainers1\"}]}}";
-				trasfromProgram = String.format(
-					"{\"sn\": \"%s\",\"iconPath\": \"\",\"iconName\": \"\",\"sendProgramFilePaths\": {\"programPath\": \"%s/program1\",\"mediasPath\": {}},\"programName\": \"program1\",\"deviceIdentifier\": \"Demo\",\"startPlayAfterTransferred\": true,\"insertPlay\": true}",
-					g_sn,
-					rootDir);
-			}
-			
-            String companyInfo = "{\"company\":\"NovaStar\",\"phone\":\"029-68216000\",\"email\":\"hr@novastar.tech\"}";
-            instance.nvSetDevLang("Java");
-            System.out.println("nvInit(sdk 鍒濆鍖�):");
-            System.out.println(instance.nvInit(rootDir,companyInfo));
-            System.out.println("ViplexCore Demo nvSearchTerminalAsync(鎼滅储) begin... ");
-            instance.nvSearchTerminalAsync(callBack);
-            Thread.sleep(3000);
-            g_bAPIReturn = false;
-
-            // System.out.println("ViplexCore Demo nvSearchAppointIpAsync(鎸囧畾IP鎼滅储) begin... ");
-            // String requestData = "{\"ip\":\"172.18.179.106\"}";
-            // instance.nvSearchAppointIpAsync(requestData, callBack);
-            // Thread.sleep(2000);
-
-            System.out.println("ViplexCore Demo nvLoginAsync(鐧诲綍) begin... ");
-			String loginParam = String.format("{\"sn\":\"%s\",\"username\":\"admin\",\"rememberPwd\":1,\"password\":\"1234567890\",\"loginType\":0}"
-			, g_sn);
-            instance.nvLoginAsync(loginParam, callBack);
-            waitAPIReturn();
-            if (g_code != 0) {
-				System.out.println("ViplexCore Demo nvLoginAsync(鐧诲綍) 澶辫触锛�");
-                return;
+            @Override
+            public void dataCallBack(int code, String data) {
+                // TODO Auto-generated method stub
+                g_code = code;
+                String strCode = "\nViplexCore Demo code:" + code;
+                String strData = "\nViplexCore Demo data:" + data;
+                System.out.println(strCode);
+                System.out.println(strData);
+                g_bAPIReturn = true;
             }
-            System.out.println("ViplexCore Demo nvCreateProgramAsync(鍒涘缓鑺傜洰) begin... ");
-            instance.nvCreateProgramAsync(createProgram, callBack);
-            waitAPIReturn();
+
+        };
+
+        String rootDir = System.getProperty("user.dir") + "/temp";
+        System.out.println("淇濆瓨璺緞:" + rootDir);
+        rootDir = rootDir.replaceAll("\\\\", "/");
+        String createProgram = "{\"name\":\"jiemu1\",\"width\":240,\"height\":144}";
+        String editProgram = "{\"programID\":13,\"pageID\":1,\"pageInfo\":{\"name\":\"鑺傜洰01\",\"widgetContainers\":[{\"contents\":{\"widgets\":[{\"constraints\":[{\"cron\":[\"0 0 0 ? * 1,2,3,4,5,6,7\"],\"endTime\":\"4017-12-30T23:59:59Z+8:00\",\"startTime\":\"1970-01-01T00:00:00Z+8:00\"}],\"duration\":5000,\"dataSource\":\"62ea7e60c493c1f860ae256eef8ec89c.png\",\"type\":\"PICTURE\",\"name\":\"test.png\",\"originalDataSource\":\"C:/Users/Administrator/Desktop/novaWin/demo/java/test.png\"}]},\"id\":1,\"name\":\"widgetContainers1\"}]}}";
+        String genrateProgram = String.format(
+                "{\"programID\":13,\"outPutPath\":\"%s/\"}",
+                rootDir);
+        String trasfromProgram = String.format(
+                "{\"sn\": \"%s\",\"iconPath\": \"\",\"iconName\": \"\",\"sendProgramFilePaths\": {\"programPath\": \"%s/program13\",\"mediasPath\": {\"C:/Users/Administrator/Desktop/novaWin/demo/java/test.png\": \"test.png\"}},\"programName\": \"jiemu1\",\"deviceIdentifier\": \"Demo\",\"startPlayAfterTransferred\": true,\"insertPlay\": true}",
+                g_sn,
+                rootDir);
 
 
-            String requestDatapath = "{\"filePath\":\"./test.png\"}";
-            System.out.println("ViplexCore Demo nvGetFileMD5Async(鑾峰彇MD5) begin... ");
-            instance.nvGetFileMD5Async(requestDatapath, callBack);
-            waitAPIReturn();
+//        Boolean bTestVideo = false;
+//        if (bTestVideo) {
+//            editProgram = "{\"programID\":1,\"pageID\":1,\"pageInfo\":{\"name\":\"Demo\",\"widgetContainers\":[{\"contents\":{\"widgets\":[{\"constraints\":[{\"cron\":[\"0 0 0 ? * 1,2,3,4,5,6,7\"],\"endTime\":\"4017-12-30T23:59:59Z 8:00\",\"startTime\":\"1970-01-01T00:00:00Z 8:00\"}],\"duration\":5000,\"dataSource\":\"219c7dd3260d6bf98ebf61b6da440ffd.avi\",\"type\":\"VIDEO\",\"name\":\"test.vai\",\"originalDataSource\":\"./test.avi\"}]},\"id\":1,\"name\":\"widgetContainers1\"}]}}";
+//
+//            trasfromProgram = String.format(
+//                    "{\"sn\":\"%s\",\"iconPath\": \"\",\"iconName\": \"\",\"sendProgramFilePaths\": {\"programPath\": \"%s/program1\",\"mediasPath\": {\"./test.avi\": \"test.avi\"}},\"programName\": \"program1\",\"deviceIdentifier\": \"Demo\",\"startPlayAfterTransferred\": true,\"insertPlay\": true}",
+//                    g_sn,
+//                    rootDir);
+//        }
+//
+//
+//        Boolean testText = false;
+//        if (testText) {
+//            editProgram = "{\"programID\":1,\"pageID\":1,\"pageInfo\":{\"name\":\"jiemu\",\"widgetContainers\":[{\"contents\":{\"widgets\":[{\"constraints\":[{\"cron\":[\"0 0 0 ? * 1,2,3,4,5,6,7\"],\"endTime\":\"4017-12-30T23:59:59Z+8:00\",\"startTime\":\"1970-01-01T00:00:00Z+8:00\"}],\"duration\":5000,\"metadata\":{\"content\":{\"autoPaging\":true,\"backgroundMusic\":{\"duration\":0,\"isTextSync\":false},\"displayStyle\":{\"scrollAttributes\":{\"effects\":{\"animation\":\"MARQUEE_LEFT\",\"speed\":3}},\"type\":\"SCROLL\"},\"paragraphs\":[{\"backgroundColor\":\"#00000000\",\"horizontalAlignment\":\"CENTER\",\"letterSpacing\":0,\"lineSpacing\":0,\"lines\":[{\"segs\":[{\"content\":\"绠�浣撶箒楂旀棩鏈獮頃滉淡鞏�.English123\"}]}],\"verticalAlignment\":\"CENTER\"}],\"textAttributes\":[{\"backgroundColor\":\"#ff000000\",\"attributes\":{\"font\":{\"family\":[\"Arial\"],\"isUnderline\":false,\"size\":20,\"style\":\"NORMAL\"},\"letterSpacing\":0,\"textColor\":\"#ffff0000\"}}]}},\"name\":\"text\",\"type\":\"ARCH_TEXT\"}]},\"id\":1,\"name\":\"widgetContainers1\"}]}}";
+//            trasfromProgram = String.format(
+//                    "{\"sn\": \"%s\",\"iconPath\": \"\",\"iconName\": \"\",\"sendProgramFilePaths\": {\"programPath\": \"%s/program1\",\"mediasPath\": {}},\"programName\": \"program1\",\"deviceIdentifier\": \"Demo\",\"startPlayAfterTransferred\": true,\"insertPlay\": true}",
+//                    g_sn,
+//                    rootDir);
+//        }
 
-            System.out.println("ViplexCore Demo nvSetPageProgramAsync(缂栬緫鑺傜洰) begin... ");
-            instance.nvSetPageProgramAsync(editProgram, callBack);
-            waitAPIReturn();
+        String companyInfo = "{\"company\":\"NovaStar\",\"phone\":\"029-68216000\",\"email\":\"hr@novastar.tech\"}";
+        instance.nvSetDevLang("Java");
+        System.out.println("nvInit(sdk 鍒濆鍖�):");
+        System.out.println(instance.nvInit(rootDir, companyInfo));
+        System.out.println("ViplexCore Demo nvSearchTerminalAsync(鎼滅储) begin... ");
+        instance.nvSearchTerminalAsync(callBack);
+        Thread.sleep(3000);
+        g_bAPIReturn = false;
 
-            System.out.println("ViplexCore Demo nvMakeProgramAsync(鐢熸垚鑺傜洰) begin... ");
-            instance.nvMakeProgramAsync(genrateProgram, callBack);
-            waitAPIReturn();
+        // System.out.println("ViplexCore Demo nvSearchAppointIpAsync(鎸囧畾IP鎼滅储) begin... ");
+        // String requestData = "{\"ip\":\"172.18.179.106\"}";
+        // instance.nvSearchAppointIpAsync(requestData, callBack);
+        // Thread.sleep(2000);
 
-            System.out.println("ViplexCore Demo nvStartTransferProgramAsync(鍙戦�佽妭鐩�) begin... ");
-            instance.nvStartTransferProgramAsync(trasfromProgram, callBack);
-            Thread.sleep(10000);
-            g_bAPIReturn = false;
-
-            System.out.println("ViplexCore Demo nvGetProgramInfoAsync(鑾峰彇鑺傜洰淇℃伅) begin... ");
-            String requestDatasn = String.format("{\"sn\":\"%s\"}", g_sn);
-            instance.nvGetProgramInfoAsync(requestDatasn, callBack);
-            waitAPIReturn();
-
-            System.out.println("ViplexCore Demo nvSetVolumeAsync(璁剧疆闊抽噺) begin... ");
-			String setVolumeParam = String.format("{\"sn\":\"%s\",\"volumeInfo\":{\"ratio\":60.0}}", g_sn);
-            instance.nvSetVolumeAsync(setVolumeParam, callBack);
-            waitAPIReturn();
-
-            System.out.println("ViplexCore Demo nvGetVolumeAsync(鑾峰彇闊抽噺) begin... ");
-			String getVolumeParam = String.format("{\"sn\":\"%s\"}", g_sn);
-            instance.nvGetVolumeAsync(getVolumeParam, callBack);
-            waitAPIReturn();
+        System.out.println("ViplexCore Demo nvLoginAsync(鐧诲綍) begin... ");
+        String loginParam = String.format("{\"sn\":\"MZVA51930N2113017308\",\"ip\":\"\",\"username\":\"admin\",\"rememberPwd\":0,\"password\":\"123456\",\"loginType\":0}"
+                , g_sn);
+        instance.nvLoginAsync(loginParam, callBack);
+        waitAPIReturn();
+        if (g_code != 0) {
+            System.out.println("ViplexCore Demo nvLoginAsync(鐧诲綍) 澶辫触锛�");
+            System.out.println("閿欒鐮�:" + g_code);
+            return;
         }
+        System.out.println("ViplexCore Demo nvCreateProgramAsync(鍒涘缓鑺傜洰) begin... ");
+        instance.nvCreateProgramAsync(createProgram, callBack);
+        waitAPIReturn();
 
-    public static void main(String[] args) throws InterruptedException{
+
+        String requestDatapath = "{\"filePath\":\"C:/Users/Administrator/Desktop/novaWin/demo/java/test.png\"}";
+        System.out.println("ViplexCore Demo nvGetFileMD5Async(鑾峰彇MD5) begin... ");
+        instance.nvGetFileMD5Async(requestDatapath, callBack);
+        waitAPIReturn();
+
+        System.out.println("ViplexCore Demo nvSetPageProgramAsync(缂栬緫鑺傜洰) begin... ");
+        instance.nvSetPageProgramAsync(editProgram, callBack);
+        waitAPIReturn();
+
+        System.out.println("ViplexCore Demo nvMakeProgramAsync(鐢熸垚鑺傜洰) begin... ");
+        instance.nvMakeProgramAsync(genrateProgram, callBack);
+        waitAPIReturn();
+
+        System.out.println("ViplexCore Demo nvStartTransferProgramAsync(鍙戦�佽妭鐩�) begin... ");
+        System.out.println(trasfromProgram);
+        instance.nvStartTransferProgramAsync(trasfromProgram, callBack);
+        Thread.sleep(10000);
+        g_bAPIReturn = false;
+
+        System.out.println("ViplexCore Demo nvGetProgramInfoAsync(鑾峰彇鑺傜洰淇℃伅) begin... ");
+        String requestDatasn = String.format("{\"sn\":\"%s\"}", g_sn);
+        instance.nvGetProgramInfoAsync(requestDatasn, callBack);
+        waitAPIReturn();
+//
+//        System.out.println("ViplexCore Demo nvSetVolumeAsync(璁剧疆闊抽噺) begin... ");
+//        String setVolumeParam = String.format("{\"sn\":\"%s\",\"volumeInfo\":{\"ratio\":60.0}}", g_sn);
+//        instance.nvSetVolumeAsync(setVolumeParam, callBack);
+//        waitAPIReturn();
+//
+//        System.out.println("ViplexCore Demo nvGetVolumeAsync(鑾峰彇闊抽噺) begin... ");
+//        String getVolumeParam = String.format("{\"sn\":\"%s\"}", g_sn);
+//        instance.nvGetVolumeAsync(getVolumeParam, callBack);
+//        waitAPIReturn();
+    }
+
+    public static void main(String[] args) throws InterruptedException {
         testApi();
     }
 }
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java
new file mode 100644
index 0000000..6b71835
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java
@@ -0,0 +1,163 @@
+package com.sandu.ximon.admin.newnova.utils;
+
+import com.sandu.ximon.admin.newnova.conf.FilePathConfig;
+import com.sandu.ximon.admin.newnova.vo.StatusVO;
+import com.sandu.ximon.admin.utils.CountDownLatchUtil;
+import com.sun.jna.Native;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Component;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/9
+ */
+@Component
+@AllArgsConstructor
+public class NovaAPIUtil {
+
+
+//    @Value("${new-nova.string-path}")
+//    public String getStringPath() {
+//        return stringPath;
+//    }
+
+    private final FilePathConfig filePathConfig;
+    private final CountDownLatchUtil countDownLatchUtil;
+    private static Boolean g_bAPIReturn = false;
+    private static int g_code = 0;
+    private static String g_sn = "BZSA79353N1310006847"; //BZSA07313J0350000997
+
+    private static Map loginInfo = new LinkedHashMap();
+
+
+
+//    private static ViplexCore.CallBack callBack = new ViplexCore.CallBack() {
+//
+//        @Override
+//        public void dataCallBack(int code, String data) {
+//            // TODO Auto-generated method stub
+//            g_code = code;
+//            String strCode = "\nViplexCore Demo code:" + code;
+//            String strData = "\nViplexCore Demo data:" + data;
+//            System.out.println(strCode);
+//            System.out.println(strData);
+//            g_bAPIReturn = true;
+//        }
+//
+//    };
+
+
+    static void waitAPIReturn() throws InterruptedException {
+        while (!g_bAPIReturn) {
+            Thread.sleep(1000);
+        }
+        g_bAPIReturn = false;
+    }
+
+
+    /**
+     * 鐧诲綍
+     */
+    public StatusVO login(String sn) {
+
+        ViplexCore instance = (ViplexCore) Native.loadLibrary(filePathConfig.getStringPath(), ViplexCore.class);
+        String rootDir = System.getProperty("user.dir") + "/temp";
+        String companyInfo = "{\"company\":\"NovaStar\",\"phone\":\"029-68216000\",\"email\":\"hr@novastar.tech\"}";
+        instance.nvSetDevLang("Java");
+        System.out.println("nvInit(sdk 鍒濆鍖�):");
+        System.out.println(instance.nvInit(rootDir, companyInfo));
+        ViplexCore.CallBack callBack = new ViplexCore.CallBack() {
+
+            @Override
+            public void dataCallBack(int code, String data) {
+                // TODO Auto-generated method stub
+                g_code = code;
+                String strCode = "\nViplexCore Demo code:" + code;
+                String strData = "\nViplexCore Demo data:" + data;
+                System.out.println(strCode);
+                System.out.println(strData);
+                g_bAPIReturn = true;
+            }
+
+        };
+
+
+        System.out.println("ViplexCore Demo nvSearchTerminalAsync(鎼滅储) begin... ");
+        StatusVO statusVO = new StatusVO();
+        instance.nvSearchTerminalAsync(callBack);
+//        countDownLatchUtil.push();
+//        instance.nvSearchTerminalAsync(new ViplexCore.CallBack() {
+//
+//            @Override
+//            public void dataCallBack(int code, String data) {
+//                // TODO Auto-generated method stub
+//                g_code = code;
+//                statusVO.setStatusCode(code);
+//                statusVO.setStatusData(data);
+//                System.out.println("\nViplexCore Demo code:" + code);
+//                System.out.println("\nViplexCore Demo data:" + data);
+//                g_bAPIReturn = true;
+//            }
+//
+//        });
+
+
+
+        try {
+            Thread.sleep(3000);
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+        g_bAPIReturn = false;
+
+
+        System.out.println("ViplexCore Demo nvLoginAsync(鐧诲綍) begin... ");
+        String loginParam = String.format("{\"sn\":\"" + sn + "\",\"ip\":\"\",\"username\":\"admin\",\"rememberPwd\":0,\"password\":\"1234567890\",\"loginType\":0}"
+                , g_sn);
+        instance.nvLoginAsync(loginParam, new ViplexCore.CallBack() {
+
+            @Override
+            public void dataCallBack(int code, String data) {
+                // TODO Auto-generated method stub
+                g_code = code;
+                statusVO.setStatusCode(code);
+                statusVO.setStatusData(data);
+                System.out.println("\nViplexCore Demo code:" + code);
+                System.out.println("\nViplexCore Demo data:" + data);
+                g_bAPIReturn = true;
+            }
+
+        });
+        try {
+            waitAPIReturn();
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+        if (g_code != 0) {
+            System.out.println("ViplexCore Demo nvLoginAsync(鐧诲綍) 澶辫触锛�");
+            System.out.println("閿欒鐮�:" + g_code);
+            return statusVO;
+        }
+        //鐧婚檰鎴愬姛涔嬪悗瀛樺叆map淇濆瓨鐧诲綍淇℃伅
+        loginInfo.put(sn, instance);
+        return statusVO;
+    }
+
+    /**
+     * 鍒涘缓鑺傜洰
+     */
+    public int createPro(String sn) throws InterruptedException {
+        ViplexCore instance = (ViplexCore) loginInfo.get(sn);
+
+        System.out.println("ViplexCore Demo nvCreateProgramAsync(鍒涘缓鑺傜洰) begin... ");
+//        instance.nvCreateProgramAsync(createProgram, callBack);
+        waitAPIReturn();
+
+        return 1;
+    }
+
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/StatusVO.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/StatusVO.java
new file mode 100644
index 0000000..be27490
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/StatusVO.java
@@ -0,0 +1,16 @@
+package com.sandu.ximon.admin.newnova.vo;
+
+import lombok.Data;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/9
+ */
+@Data
+public class StatusVO {
+
+    private int statusCode;
+
+    private String statusData;
+
+}
diff --git a/ximon-admin/src/main/resources/application-local.yml b/ximon-admin/src/main/resources/application-local.yml
index d7443c2..a56408a 100644
--- a/ximon-admin/src/main/resources/application-local.yml
+++ b/ximon-admin/src/main/resources/application-local.yml
@@ -81,3 +81,16 @@
   key-id: LTAI5tPdpt5wvJyLipRijFSP
   key-secret: 1ahYfCKd0yTddsUnuDLQzI23MLh4VQ
   bucket-name: ximonsmart
+
+#鏂拌鐡�
+new-nova:
+  #渚濊禆鍦板潃
+  string-path: C:\Users\Administrator\Desktop\novaWin\bin\viplexcore.dll
+
+new-nova-file:
+  upload:
+    #鏂囦欢鏈嶅姟鍣ㄨ矾寰�
+    upload-root-path: E:\file\novafile
+    storage: local
+    #鏈嶅姟鍣ㄦ枃浠跺墠缂�
+    real-url: http://localhost/
\ No newline at end of file

--
Gitblit v1.9.3