From 5cfaa9b36929545906d57c48c0f07a7c6f23d157 Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期一, 14 十一月 2022 14:50:22 +0800
Subject: [PATCH] changes
---
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/NovaAPIUtil.java | 841 +++++++++++++++++++++++---
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/NewNovaLedParam.java | 4
dao/src/main/java/com/sandu/ximon/dao/bo/NewNovaInfoBo.java | 83 ++
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/file/NewNovaFileService.java | 1
dao/src/main/java/com/sandu/ximon/dao/domain/PoleBinding.java | 2
dao/src/main/resources/mapper/NewNovaLedMapper.xml | 38
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/StatusVO.java | 6
ximon-admin/src/main/resources/application-local.yml | 7
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedService.java | 117 +++
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/led/NewNovaLedController.java | 124 +++
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/NewNovaStatusParam.java | 68 ++
sandu-common/src/main/java/com/sandu/common/file/impl/LocalFileUploadImpl.java | 31
dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java | 8
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/CountDownResultUtil.java | 19
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/ProWHVO.java | 31
sandu-common/src/main/java/com/sandu/common/file/FileToThumbnail.java | 4
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/ProGenrateVO.java | 68 ++
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/TrasfromStatusVO.java | 13
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java | 2
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/ProgramPrarm.java | 34 +
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/conf/FilePathConfig.java | 5
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/ProgramInfoVO.java | 29
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/TransfromProgramVO.java | 73 ++
dao/src/main/java/com/sandu/ximon/dao/mapper/NewNovaLedMapper.java | 4
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/file/NewNovaFileController.java | 13
ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/CountDownLatchUtil.java | 19
dao/src/main/java/com/sandu/ximon/dao/bo/NewNovaListBo.java | 55 +
dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaLed.java | 180 +----
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/CountDownLatchUtil.java | 37 +
29 files changed, 1,643 insertions(+), 273 deletions(-)
diff --git a/dao/src/main/java/com/sandu/ximon/dao/bo/NewNovaInfoBo.java b/dao/src/main/java/com/sandu/ximon/dao/bo/NewNovaInfoBo.java
new file mode 100644
index 0000000..e9d25e2
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/bo/NewNovaInfoBo.java
@@ -0,0 +1,83 @@
+package com.sandu.ximon.dao.bo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/11
+ */
+@Data
+public class NewNovaInfoBo {
+
+
+ /**
+ * 浜у搧淇℃伅
+ */
+ @TableField(exist = false)
+ private ProductInfoDTO productInfo;
+
+ /**
+ * 閰嶇疆淇℃伅
+ */
+ @TableField(exist = false)
+ private ConfigInfoDTO configInfo;
+
+ @NoArgsConstructor
+ @Data
+ public static class ProductInfoDTO {
+
+ /**
+ * 浜у搧鍚嶇О锛屼緥濡俆3,T6
+ */
+ private String productName;
+
+ /**
+ * 浜у搧缂栧彿
+ */
+ private Integer modelId;
+ }
+
+ @NoArgsConstructor
+ @Data
+ public static class ConfigInfoDTO {
+
+ /**
+ * 鏄惁鏀寔瑙嗛鍒囨崲锛宼rue琛ㄧず鏀寔锛宖alse琛ㄧず涓嶆敮鎸�
+ */
+ private Boolean videoSwitch;
+
+ /**
+ * 鏄剧ず璁惧锛屾湁涓ょLED銆丩CD
+ */
+ private String displayDevice;
+
+ /**
+ * 缃戝彛閰嶇疆
+ */
+ private List<PortConfigDTO> portConfig;
+
+ @NoArgsConstructor
+ @Data
+ public static class PortConfigDTO {
+
+ /**
+ * 缃戝彛缂栧彿锛屼緥濡�:1,2,3,4
+ */
+ private Integer portNO;
+
+ /**
+ * 鏄惁涓轰富缃戝彛
+ */
+ private Boolean isMainPort;
+
+ /**
+ * 瀵瑰簲鐨勪富缃戝彛锛屽鏋滆缃戝彛鏄富缃戝彛锛岃瀛楁鏃犳晥
+ */
+ private Integer belongMainPort;
+ }
+ }
+}
diff --git a/dao/src/main/java/com/sandu/ximon/dao/bo/NewNovaListBo.java b/dao/src/main/java/com/sandu/ximon/dao/bo/NewNovaListBo.java
new file mode 100644
index 0000000..845cdcd
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/bo/NewNovaListBo.java
@@ -0,0 +1,55 @@
+package com.sandu.ximon.dao.bo;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/11
+ * 璇虹摝璁惧鍒楄〃浣跨敤
+ */
+@Data
+public class NewNovaListBo {
+
+ private Long id;
+
+ /**
+ * 鎾斁鍣ㄥ悕绉�(鏁版嵁搴�)
+ */
+ private String name;
+
+
+ /**
+ * 鎾斁鍣ㄥ敮涓�鏍囪瘑,濡傛灉涓簄ull浠h〃娌℃湁缁戝畾鎾斁鍣�(Vnnox)
+ */
+ private String sn;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ private LocalDateTime createTime;
+
+ /**
+ * 鍦ㄧ嚎鐘舵�� 0绂荤嚎 1鍦ㄧ嚎
+ */
+ private Integer onlineSign;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ private LocalDateTime updateTime;
+
+ /**
+ * 鐏潌id
+ */
+ private Long poleId;
+
+ /**
+ * 鐏潌鍚嶇О
+ */
+ private String poleName;
+
+
+
+}
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
index 87d8853..9f7abc0 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaLed.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/NewNovaLed.java
@@ -4,11 +4,12 @@
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 com.sandu.ximon.dao.bo.NewNovaInfoBo;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
+import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
@@ -31,15 +32,6 @@
*/
private String name;
- /**
- * 鎾斁鍣ㄥ悕绉�(server)
- */
- private String playerName;
-
- /**
- * 鎾斁鍣↖D(Vnnox)
- */
- private String playerId;
/**
* 鎾斁鍣ㄥ敮涓�鏍囪瘑,濡傛灉涓簄ull浠h〃娌℃湁缁戝畾鎾斁鍣�(Vnnox)
@@ -52,7 +44,7 @@
private LocalDateTime createTime;
/**
- * 鍒嗚鲸鐜�
+ * 鏄惁鍦ㄧ嚎杩�
*/
private Integer onlineSign;
@@ -64,122 +56,52 @@
@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;
+ /**
+ * 鍦ㄧ嚎鐘舵�� 0绂荤嚎 1鍦ㄧ嚎
+ */
+ @TableField(exist = false)
+ private Integer isOnline = 0;
+
+ /**
+ * 鐏潌id
+ */
+ @TableField(exist = false)
+ private Long poleId;
+
+ /**
+ * 鐏潌鍚嶇О
+ */
+ @TableField(exist = false)
+ private String poleName;
+
+ /**
+ * 鏈嶅姟鍣ㄨ澶囦俊鎭�
+ */
+ @TableField(exist = false)
+ private NewNovaInfoBo info;
+
+ /**
+ * 灞忓箷寮�鍏� 0鍏� 1寮�
+ */
+ @TableField(exist = false)
+ private int screenPower = 0;
+
+ /**
+ * 闊抽噺 0-100
+ */
+ @TableField(exist = false)
+ private BigDecimal volume = BigDecimal.ZERO;
+
+ /**
+ * 浜害鐧惧垎姣旓紝0-100
+ */
+ @TableField(exist = false)
+ private BigDecimal brightness = BigDecimal.ZERO;
+
+ /**
+ * 鍚屾鐘舵��
+ */
+ @TableField(exist = false)
+ private Integer sync = 0;
+
}
\ No newline at end of file
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/PoleBinding.java b/dao/src/main/java/com/sandu/ximon/dao/domain/PoleBinding.java
index e4b4eb0..70ad843 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/domain/PoleBinding.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/PoleBinding.java
@@ -37,7 +37,7 @@
private String deviceCode;
/**
- * 璁惧绫诲瀷锛�0璺伅锛�1璇虹摝锛�2鍏呯數妗╋紝3澶ф皵鐩戞祴锛�4姘磋川鐩戞祴锛�5ip闊虫煴锛�6lcd骞垮憡鏈猴紝7鎽勫儚澶达紝8鏉嗕綋鍊炬祴锛�9涓�閿晳鍔� ,10 鐔欒 11澶ф皵鍐滆��
+ * 璁惧绫诲瀷锛�0璺伅锛�1璇虹摝锛�2鍏呯數妗╋紝3澶ф皵鐩戞祴锛�4姘磋川鐩戞祴锛�5ip闊虫煴锛�6lcd骞垮憡鏈猴紝7鎽勫儚澶达紝8鏉嗕綋鍊炬祴锛�9涓�閿晳鍔� ,10 鐔欒 11澶ф皵鍐滆�� 12 鏂拌鐡�
*/
private Integer deviceType;
diff --git a/dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java b/dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java
index bdfbe26..7c70fd2 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java
@@ -239,6 +239,14 @@
LED_NEW_FILE_LIST("鏂拌鐡︽枃浠跺垪琛�"),
LED_NEW_FILE_ADD("鏂拌鐡︽枃浠舵柊澧�"),
LED_NEW_FILE_DEL("鏂拌鐡︽枃浠跺垹闄�"),
+ LED_NEW_ADD("鏂拌鐡﹀睆骞曟柊澧�"),
+ LED_NEW_EDIT("鏂拌鐡﹀睆骞曠紪杈�"),
+ LED_NEW_DEL("鏂拌鐡﹀睆骞曞垹闄�"),
+ LED_NEW_LIST("鏂拌鐡﹀睆骞曞垪琛�"),
+ LED_NEW_INFO("鏂拌鐡﹀睆骞曡鎯�"),
+ LED_NEW_VOL("鏂拌鐡﹂煶閲忚皟鑺�"),
+ LED_NEW_BRIGHTNESS("鏂拌鐡︿寒搴﹁皟鑺�"),
+ LED_NEW_POWER("鏂拌鐡﹀紑鍏宠皟鑺�"),
;
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
index 92b0c0c..743ae93 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/mapper/NewNovaLedMapper.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/mapper/NewNovaLedMapper.java
@@ -1,8 +1,11 @@
package com.sandu.ximon.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sandu.ximon.dao.bo.NewNovaListBo;
import com.sandu.ximon.dao.domain.NewNovaLed;
import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
/**
* @author Administrator
@@ -13,6 +16,7 @@
@Mapper
public interface NewNovaLedMapper extends BaseMapper<NewNovaLed> {
+ List<NewNovaLed> listLed(String keyword, Long userId);
}
diff --git a/dao/src/main/resources/mapper/NewNovaLedMapper.xml b/dao/src/main/resources/mapper/NewNovaLedMapper.xml
index 862178c..fbad90f 100644
--- a/dao/src/main/resources/mapper/NewNovaLedMapper.xml
+++ b/dao/src/main/resources/mapper/NewNovaLedMapper.xml
@@ -5,19 +5,39 @@
<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"/>
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="name" column="name" jdbcType="VARCHAR"/>
+ <result property="sn" column="sn" jdbcType="VARCHAR"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="onlineSign" column="online_sign" jdbcType="VARCHAR"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
- id,name,player_name,
+ id
+ ,name,player_name,
player_id,sn,create_time,
resolution,update_time
</sql>
+ <select id="listLed" resultType="com.sandu.ximon.dao.domain.NewNovaLed">
+ SELECT
+ t1.*,
+ t3.id AS pole_id,
+ t3.pole_name
+ FROM
+ new_nova_led t1
+ LEFT JOIN pole_binding t2 ON t1.sn = t2.device_code
+ AND t2.device_type = 12
+ LEFT JOIN pole t3 ON t2.pole_id = t3.id
+ <where>
+ 1=1
+ <if test="keyword != null and keyword != ''">
+ AND t1.name LIKE CONCAT(CONCAT('%', #{keyword}), '%')
+ OR t1.sn LIKE CONCAT(CONCAT('%', #{keyword}), '%')
+ </if>
+ <if test="userId != null">
+ AND (t3.user_id = #{userId} OR t3.client_id = #{userId})
+ </if>
+ </where>
+ </select>
</mapper>
diff --git a/sandu-common/src/main/java/com/sandu/common/file/FileToThumbnail.java b/sandu-common/src/main/java/com/sandu/common/file/FileToThumbnail.java
index 5c6885c..555512d 100644
--- a/sandu-common/src/main/java/com/sandu/common/file/FileToThumbnail.java
+++ b/sandu-common/src/main/java/com/sandu/common/file/FileToThumbnail.java
@@ -1,5 +1,7 @@
package com.sandu.common.file;
+import com.sandu.common.file.config.NovaFileConfig;
+import com.sandu.common.util.SpringContextHolder;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
@@ -125,7 +127,7 @@
ImageIO.write(bi, "png", targetFile);
// 鏌ョ湅stop婧愮爜浼氳嚜鍔ㄥ叧娴�
ff.stop();
- return sourcePath;
+ return targetFile.getPath().replace(SpringContextHolder.getBean(NovaFileConfig.class).getUploadRootPath(), "").replaceAll("\\\\", "/");
}
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 14f6fb0..ec79628 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
@@ -8,7 +8,6 @@
import com.sandu.common.enums.FileStorageEnums;
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;
@@ -35,8 +34,7 @@
@AllArgsConstructor
public class LocalFileUploadImpl implements IFileUpload {
- private static List<String> videoSuffixList = CollectionUtil.newArrayList("mp4", "mov", "avi", "mkv", "m4v", "wmv",
- "asf", "asx", "rm", "rmvb", "3gp", "dat", "flv", "vob");
+ private static List<String> videoSuffixList = CollectionUtil.newArrayList("mp4", "mov", "avi", "mkv", "m4v", "wmv", "asf", "asx", "rm", "rmvb", "3gp", "dat", "flv", "vob");
private final FileToThumbnail fileToThumbnail;
@@ -52,7 +50,7 @@
File dest;
try {
String type = Optional.ofNullable(FileTypeUtil.getType(multipartFile.getInputStream(), originalFilename)).orElse("");
- dest = new File(fileProperties.getUploadRootPath() + type + File.separator + date + File.separator + fileName).getCanonicalFile();
+ dest = new File(fileProperties.getUploadRootPath() + File.separator + type + File.separator + date + File.separator + fileName).getCanonicalFile();
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
@@ -67,8 +65,10 @@
FileUploadDto uploadDto = new FileUploadDto();
uploadDto.setOriginName(originalFilename);
uploadDto.setFileName(fileName);
- uploadDto.setRealUrl(dest.getPath());
- uploadDto.setFileUrl(fileProperties.getRealUrl() + dest.getPath());
+ System.out.println(File.separator);
+ uploadDto.setRealUrl(dest.getPath().replaceAll("\\\\", "/"));
+ System.out.println(dest.getPath());
+ uploadDto.setFileUrl(dest.getPath().replace(fileProperties.getUploadRootPath(), "").replaceAll("\\\\", "/"));
uploadDto.setFileType(FileUtil.getType(dest));
uploadDto.setStorageType(FileStorageEnums.LOCAL.getCode());
uploadDto.setFileSize(size);
@@ -95,10 +95,9 @@
}
try {
InputStream inputStream = multipartFile.getInputStream();
- String screenShot = fileProperties.getUploadRootPath() + uploadDto.getFileType()
- + File.separator + date + File.separator + "screenShot" + uuidStr + ".jpg";
+ String screenShot = fileProperties.getUploadRootPath() + uploadDto.getFileType() + File.separator + date + File.separator + "screenShot" + uuidStr + ".jpg";
String thumbnailForVideo = fileToThumbnail.getThumbnailForVideo(inputStream, screenShot);
- uploadDto.setScreenShot(fileProperties.getRealUrl() + thumbnailForVideo);
+ uploadDto.setScreenShot(thumbnailForVideo);
inputStream.close();
} catch (IOException e) {
throw new RuntimeException(e);
@@ -130,4 +129,18 @@
}
return null;
}
+
+ public static void main(String[] args) {
+// String a = "E:\\\\file\\\\png\\\\2022-11-14\\\\bc8cbe61-2c81-4dac-911a-91b711eebc24\\\\png";
+// System.out.println(a);
+// System.out.println(a.replaceAll("\\\\", "/"));
+ File f = null;
+ try {
+ f = new File("E:\\file\\png\\2022-11-14\\cc4ce72e-2304-4f45-81e5-3b57519d57b6.png").getCanonicalFile();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ System.out.println(File.separator);
+ System.out.println(f.getPath());
+ }
}
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
index dcc2adf..8a6fab4 100644
--- 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
@@ -18,5 +18,10 @@
*/
private String stringPath;
+ /**
+ * 鑺傜洰鐢熸垚璺緞
+ */
+ private String outPutPath;
+
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/file/NewNovaFileController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/file/NewNovaFileController.java
index 1464ad2..1cb7eb3 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/file/NewNovaFileController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/file/NewNovaFileController.java
@@ -4,7 +4,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper;
import com.sandu.common.domain.ResponseVO;
-import com.sandu.common.file.FileToThumbnail;
+import com.sandu.common.file.config.NovaFileConfig;
import com.sandu.common.object.BaseConditionVO;
import com.sandu.common.util.ResponseUtil;
import com.sandu.ximon.admin.newnova.param.NewNovaFileParam;
@@ -28,7 +28,7 @@
@RequestMapping("/v1/nova/file")
public class NewNovaFileController {
- private FileToThumbnail fileToThumbnail;
+ private NovaFileConfig fileConfig;
private PermissionConfig permissionConfig;
private final NewNovaFileService newNovaFileService;
@@ -59,7 +59,14 @@
wrapper.like(NewNovaFile::getName, keyword);
}
PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
- return ResponseUtil.successPage(newNovaFileService.list(wrapper));
+ List<NewNovaFile> list = newNovaFileService.list(wrapper);
+ list.forEach(file -> {
+ file.setFileUrl(fileConfig.getRealUrl() + file.getFileUrl());
+ if (file.getScreenShot() != null) {
+ file.setScreenShot(fileConfig.getRealUrl() + file.getScreenShot());
+ }
+ });
+ return ResponseUtil.success(list);
}
@PostMapping("/uploading")
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/file/NewNovaFileService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/file/NewNovaFileService.java
index 3f8a749..ee85d11 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/file/NewNovaFileService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/file/NewNovaFileService.java
@@ -101,7 +101,6 @@
* @return
*/
public NewNovaFile uploadFile(MultipartFile multipartFile) {
-// FileStorage fileStorage = localFileService.uploadFile(multipartFile);
FileUploadDto fileUploadDto = localFileUpload.uploadFile(multipartFile);
NewNovaFile novaFile = new NewNovaFile();
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
index 703ae72..9b8e87e 100644
--- 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
@@ -1,22 +1,18 @@
package com.sandu.ximon.admin.newnova.led;
import com.sandu.common.domain.ResponseVO;
+import com.sandu.common.object.BaseConditionVO;
import com.sandu.common.util.ResponseUtil;
import com.sandu.ximon.admin.newnova.param.NewNovaLedParam;
+import com.sandu.ximon.admin.newnova.param.NewNovaStatusParam;
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 org.springframework.web.bind.annotation.*;
-import java.net.URISyntaxException;
-import java.util.Map;
+import java.util.List;
/**
* @author LiuHaoNan
@@ -28,20 +24,114 @@
public class NewNovaLedController {
private final PermissionConfig permissionConfig;
private final NewNovaLedService newNovaLedService;
- private final NovaAPIUtil novaApiUtil;
+
+ /**
+ * 灞忓箷娉ㄥ唽
+ *
+ * @param param
+ * @return
+ */
@PostMapping("/validateSN")
- public ResponseVO<Object> validateSN(@RequestBody @Validated NewNovaLedParam param) {
- if (!permissionConfig.check(MenuEnum.VNNOX_ADD.getCode())) {
+ public ResponseVO<Object> validateSN(@RequestBody @Validated NewNovaLedParam param) {
+ if (!permissionConfig.check(MenuEnum.LED_NEW_ADD.getCode())) {
return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
}
- boolean b= newNovaLedService.saveLed(param);
- return ResponseUtil.success("ledV2RegisterResultEntity");
+ boolean b = newNovaLedService.saveLed(param);
+ return ResponseUtil.success(b);
}
- @PostMapping("/test")
- public ResponseVO<Object> validateSN() {
- StatusVO mzva51930N2113017308 = novaApiUtil.login("MZVA51930N2113017308");
- return ResponseUtil.success(mzva51930N2113017308);
+
+ /**
+ * 缂栬緫灞忓箷鍚嶇О
+ */
+ @PostMapping("/editLed")
+ public ResponseVO editLed(@RequestBody NewNovaLedParam param) {
+ if (!permissionConfig.check(MenuEnum.LED_NEW_EDIT.getCode())) {
+ return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+ }
+ return ResponseUtil.success(newNovaLedService.editLed(param));
}
+ /**
+ * 鍒犻櫎灞忓箷
+ */
+ @PostMapping("/delLed")
+ public ResponseVO delLEd(@RequestBody List<Long> ids) {
+ if (!permissionConfig.check(MenuEnum.LED_NEW_DEL.getCode())) {
+ return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+ }
+ return ResponseUtil.success(newNovaLedService.delLed(ids));
+ }
+
+
+ /**
+ * 灞忓箷鍒楄〃
+ */
+ @GetMapping("/listLed")
+ public ResponseVO listLed(BaseConditionVO baseConditionVO, @RequestParam(required = false, value = "keyword") String keyword,
+ @RequestParam(required = false, value = "onlineStatus") boolean onlineStatus) {
+ if (!permissionConfig.check(MenuEnum.LED_NEW_LIST.getCode())) {
+ return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+ }
+ return ResponseUtil.success(newNovaLedService.listLed(baseConditionVO, keyword, onlineStatus));
+ }
+
+ /**
+ * 璇︾粏淇℃伅
+ *
+ * @param ledId
+ * @return
+ */
+ @GetMapping("/getInfo")
+ public ResponseVO getInfo(@RequestParam(required = true, value = "ledId") Long ledId) {
+ if (!permissionConfig.check(MenuEnum.LED_NEW_INFO.getCode())) {
+ return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+ }
+ return ResponseUtil.success(newNovaLedService.getInfo(ledId));
+ }
+
+ /**
+ * 璁剧疆浜害
+ */
+ @PostMapping("/setBrightness")
+ public ResponseVO setScreenBrightness(@RequestBody @Validated NewNovaStatusParam param) {
+ if (!permissionConfig.check(MenuEnum.LED_NEW_VOL.getCode())) {
+ return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+ }
+ if (param.getBrightness() == null) {
+ return ResponseUtil.fail("浜害涓嶈兘涓虹┖");
+ } else {
+ if (param.getBrightness() > 100 || param.getBrightness() < 0) {
+ return ResponseUtil.fail("浜害鑼冨洿涓�: 0-100");
+ }
+ }
+ if (newNovaLedService.getById(param.getId()) == null) {
+ return ResponseUtil.fail("璁惧涓嶅瓨鍦�");
+ }
+ return ResponseUtil.success(NovaAPIUtil.getInstanceUtil().setScreenBrightness(param));
+ }
+
+
+// @PostMapping("/tranPro")
+// public ResponseVO<Object> tranPro(@RequestBody Map pageInfo) throws InterruptedException {
+// NovaAPIUtil a = NovaAPIUtil.getInstanceUtil();
+// StatusVO login = a.login("MZVA51930N2113017308");
+// if (login.getStatusCode() != 0) {
+// return ResponseUtil.fail("genVO");
+// }
+// StatusVO createPro = a.createPro(new ProWHVO("jiemu 1", 128, 256));
+// System.out.println(createPro + "createPro");
+// StatusVO editPro = a.editProgram(Integer.valueOf(createPro.getStatusData()), pageInfo);
+// StatusVO genVO = a.genrateProgram(Integer.valueOf(createPro.getStatusData()));
+// ProgramPrarm page = new ProgramPrarm();
+// page.setInsertPlay(true);
+// page.setProgramID(Integer.valueOf(createPro.getStatusData()));
+// page.setStartPlayAfterTransferred(true);
+// List<String> sns = new ArrayList<String>();
+// sns.add("MZVA51930N2113017308");
+// page.setSnList(sns);
+// List<TrasfromStatusVO> trasfromStatusVOS = a.trasfromProgram(page);
+// return ResponseUtil.success(trasfromStatusVOS);
+// }
+
}
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
index 9771100..4384438 100644
--- 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
@@ -1,13 +1,26 @@
package com.sandu.ximon.admin.newnova.led;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.pagehelper.PageHelper;
import com.sandu.common.execption.BusinessException;
+import com.sandu.common.object.BaseConditionVO;
import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.common.util.SpringContextHolder;
import com.sandu.ximon.admin.newnova.param.NewNovaLedParam;
+import com.sandu.ximon.admin.newnova.utils.NovaAPIUtil;
+import com.sandu.ximon.admin.security.SecurityUtils;
+import com.sandu.ximon.admin.service.PoleBindingService;
+import com.sandu.ximon.admin.service.PoleService;
import com.sandu.ximon.dao.domain.NewNovaLed;
+import com.sandu.ximon.dao.domain.Pole;
+import com.sandu.ximon.dao.domain.PoleBinding;
import com.sandu.ximon.dao.mapper.NewNovaLedMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
/**
* @author LiuHaoNan
@@ -32,9 +45,113 @@
NewNovaLed led = new NewNovaLed();
led.setSn(param.getSn());
led.setName(param.getName());
+ led.setOnlineSign(0);
return save(led);
}
+ /**
+ * 缂栬緫灞忓箷鍚嶇О
+ *
+ * @param param
+ * @return
+ */
+ public boolean editLed(NewNovaLedParam param) {
+ if (param.getId() == null) {
+ throw new BusinessException("灞忓箷id涓嶈兘涓虹┖");
+ }
+ if (param.getName() == null || param.getName().isEmpty()) {
+ throw new BusinessException("灞忓箷鍚嶇О涓嶈兘涓虹┖");
+ }
+ NewNovaLed one = getById(param.getId());
+ if (one == null) {
+ throw new BusinessException("璁惧涓嶅瓨鍦紒");
+ }
+// one.setSn(param.getSn());
+ one.setName(param.getName());
+ return updateById(one);
+ }
+
+ /**
+ * 鍒犻櫎LED
+ *
+ * @param ids
+ * @return
+ */
+ public boolean delLed(List<Long> ids) {
+ if (ids.isEmpty()) {
+ throw new BusinessException("id涓嶈兘涓虹┖");
+ }
+ List<NewNovaLed> newNovaLeds = listByIds(ids);
+ if (newNovaLeds.isEmpty()) {
+ throw new BusinessException("璁惧涓嶅瓨鍦紒");
+ }
+ //鑾峰彇鍒犻櫎璁惧鐨勮澶囩爜
+ List<String> snList = newNovaLeds.stream().map(NewNovaLed::getSn).collect(Collectors.toList());
+ //鍒犻櫎缁戝畾鍏崇郴
+ SpringContextHolder.getBean(PoleBindingService.class).remove(Wrappers.lambdaQuery(PoleBinding.class)
+ .eq(PoleBinding::getDeviceType, 12).in(PoleBinding::getDeviceCode, snList));
+ //鍒犻櫎璁惧
+ return removeByIds(ids);
+ }
+
+ /**
+ * LED鍒楄〃
+ *
+ * @param baseConditionVO
+ * @param keyword
+ * @param onlineStatus
+ * @return
+ */
+ public List<NewNovaLed> listLed(BaseConditionVO baseConditionVO, String keyword, boolean onlineStatus) {
+
+ NovaAPIUtil instanceUtil = NovaAPIUtil.getInstanceUtil();
+ //鎺掑簭
+ PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
+ List<NewNovaLed> newNovaListBos = baseMapper.listLed(keyword, SecurityUtils.getClientId());
+ //鑾峰彇鍦ㄧ嚎鐘舵��
+ instanceUtil.getOnlineStatus(newNovaListBos);
+ //鑾峰彇灞忓箷寮�鍏�
+ instanceUtil.getScreenPowerState(newNovaListBos);
+ //鑾峰彇闊抽噺
+ instanceUtil.getVolumeState(newNovaListBos);
+ //鑾峰彇浜害
+ instanceUtil.getScreenBrightness(newNovaListBos);
+ //鑾峰彇鍚屾鐘舵��
+ instanceUtil.getSync(newNovaListBos);
+
+ updateBatchById(newNovaListBos);
+ return newNovaListBos;
+ }
+
+ public NewNovaLed getInfo(Long ledId) {
+ NovaAPIUtil instanceUtil = NovaAPIUtil.getInstanceUtil();
+ NewNovaLed byId = getById(ledId);
+ if (byId == null) {
+ throw new BusinessException("璁惧涓嶅瓨鍦ㄦ垨id涓嶆纭� !");
+ }
+ PoleBinding poleBinding = SpringContextHolder.getBean(PoleBindingService.class).getOne(Wrappers.lambdaQuery(PoleBinding.class)
+ .eq(PoleBinding::getDeviceCode, byId.getSn()).eq(PoleBinding::getDeviceType, 12));
+ if (poleBinding != null) {
+ Pole pole = SpringContextHolder.getBean(PoleService.class).getById(poleBinding.getPoleId());
+ byId.setPoleId(pole.getId());
+ byId.setPoleName(pole.getPoleName());
+ }
+ List<NewNovaLed> list = new ArrayList<>();
+ list.add(byId);
+ //鑾峰彇鍦ㄧ嚎鐘舵��
+ instanceUtil.getOnlineStatus(list);
+ //鑾峰彇灞忓箷寮�鍏�
+ instanceUtil.getScreenPowerState(list);
+ //鑾峰彇闊抽噺
+ instanceUtil.getVolumeState(list);
+ //鑾峰彇浜害
+ instanceUtil.getScreenBrightness(list);
+ //鑾峰彇鍚屾鐘舵��
+ instanceUtil.getSync(list);
+ //鑾峰彇璇︽儏
+ instanceUtil.getInfo(byId);
+ return list.get(0);
+ }
}
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
index f6e19ed..6a00593 100644
--- 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
@@ -14,6 +14,10 @@
@NotBlank(message = "sn鐮佷笉鑳戒负绌�")
private String sn;
+ @NotBlank(message = "灞忓箷鍚嶇О涓嶈兘涓虹┖")
private String name;
+
+ private Long id;
+
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/NewNovaStatusParam.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/NewNovaStatusParam.java
new file mode 100644
index 0000000..bb8df8c
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/NewNovaStatusParam.java
@@ -0,0 +1,68 @@
+package com.sandu.ximon.admin.newnova.param;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/11
+ * 鏂拌鐡� 璁惧鐘舵�佽皟鑺� 寮�鍏� 闊抽噺 浜害 绛�
+ */
+@Data
+public class NewNovaStatusParam {
+
+
+ /**
+ * id
+ */
+ @NotNull(message = "id涓嶈兘涓虹┖")
+ private Long id;
+ /**
+ * 璁惧鐮�
+ */
+ @NotBlank(message = "sn涓嶈兘涓虹┖")
+ private String sn;
+
+ /**
+ * 浜害
+ */
+ private Double brightness;
+
+ /**
+ * 闊抽噺
+ */
+ private Double volume;
+
+
+ /**
+ * 鍚屾鐘舵��
+ */
+ private boolean sync = true;
+
+ /**
+ * ntp
+ */
+ private boolean ntp = true;
+
+
+ private List<NovaDTO> novaList;
+
+
+ @NoArgsConstructor
+ @Data
+ public static class NovaDTO {
+
+ private Long id;
+
+ private String sn;
+
+ private String name;
+
+ private boolean status = false;
+ }
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/ProgramPrarm.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/ProgramPrarm.java
new file mode 100644
index 0000000..9432ef6
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/param/ProgramPrarm.java
@@ -0,0 +1,34 @@
+package com.sandu.ximon.admin.newnova.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/10
+ */
+@Data
+public class ProgramPrarm {
+
+ /**
+ * sn
+ */
+ private List<String> snList;
+
+ /**
+ * 鑺傜洰id
+ */
+ private Integer programID;
+
+ /**
+ * 鏄惁绔嬪嵆鎾斁鑺傜洰
+ */
+ private Boolean startPlayAfterTransferred;
+
+ /**
+ * 鏄惁鎻掓挱
+ */
+ private Boolean insertPlay;
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/CountDownLatchUtil.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/CountDownLatchUtil.java
new file mode 100644
index 0000000..4846bc9
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/utils/CountDownLatchUtil.java
@@ -0,0 +1,19 @@
+package com.sandu.ximon.admin.newnova.utils;
+
+import org.apache.commons.lang.RandomStringUtils;
+
+import java.util.concurrent.CountDownLatch;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/10
+ */
+public class CountDownLatchUtil {
+ public String createCoutDown(com.sandu.ximon.admin.utils.CountDownLatchUtil countDownLatchUtil) {
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ //鑾峰彇涓�涓�7浣嶉殢鏈烘暟
+ String str = RandomStringUtils.randomAlphanumeric(7);
+ countDownLatchUtil.push(str, countDownLatch);
+ return str;
+ }
+}
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
index 6b71835..2d005fd 100644
--- 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
@@ -1,163 +1,808 @@
package com.sandu.ximon.admin.newnova.utils;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.sandu.common.execption.BusinessException;
+import com.sandu.common.util.SpringContextHolder;
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.sandu.ximon.admin.newnova.param.NewNovaStatusParam;
+import com.sandu.ximon.admin.newnova.param.ProgramPrarm;
+import com.sandu.ximon.admin.newnova.vo.*;
+import com.sandu.ximon.admin.security.SecurityUtils;
+import com.sandu.ximon.dao.bo.NewNovaInfoBo;
+import com.sandu.ximon.dao.domain.NewNovaLed;
import com.sun.jna.Native;
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Component;
-import java.util.LinkedHashMap;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
/**
* @author LiuHaoNan
* @date 2022/11/9
*/
-@Component
-@AllArgsConstructor
public class NovaAPIUtil {
-// @Value("${new-nova.string-path}")
-// public String getStringPath() {
-// return stringPath;
-// }
+ private FilePathConfig filePathConfig;
- 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 Map<String, Boolean> loginSn = new HashMap();
- private static Map loginInfo = new LinkedHashMap();
+ private ViplexCore instance = null;
+
+ private static NovaAPIUtil instanceUtil = null;
+
+ private static String loginInfo = null;
+
+ private NovaAPIUtil() {
+ filePathConfig = SpringContextHolder.getBean(FilePathConfig.class);
+ String rootDir = filePathConfig.getOutPutPath();
+ instance = (ViplexCore) Native.loadLibrary(filePathConfig.getStringPath(), ViplexCore.class);
+ System.setProperty("jna.encoding", "UTF-8");
+ System.out.println("淇濆瓨璺緞:" + rootDir);
+ rootDir = rootDir.replaceAll("\\\\", "/");
+ 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));
-
-// 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;
+// login("MZVA51930N2113017308");//todo 鎵嬪姩鐧诲綍杩樻槸鑷姩鐧诲綍
}
+ public static NovaAPIUtil getInstanceUtil() {
+ if (instanceUtil == null) {
+ synchronized (NovaAPIUtil.class) {
+ if (instanceUtil == null) {
+ instanceUtil = new NovaAPIUtil();
+ }
+ }
+ }
+ return instanceUtil;
+ }
/**
* 鐧诲綍
*/
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() {
+ StatusVO searchVO = new StatusVO();
+ System.out.println("ViplexCore Demo nvSearchTerminalAsync(鎼滅储) begin... ");
+
+ CountDownLatch countDownLatch1 = new CountDownLatch(1);
+ instance.nvSearchTerminalAsync(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;
+ searchVO.setStatusCode(code);
+ searchVO.setStatusData(data);
+ loginInfo = data;
+ System.out.println("\nViplexCore 鎼滅储 code:" + code);
+ System.out.println("\nViplexCore 鎼滅储 data:" + data);
+ countDownLatch1.countDown();
}
-
- };
-
-
- 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);
+ countDownLatch1.await();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
- g_bAPIReturn = false;
+ if (loginSn.get(sn) != null && loginSn.get(sn)) {
+ return new StatusVO(0);
+ }
+ if (!loginInfo.contains(String.format("\"sn\":\"%s\",", sn))) {
+ //鏈悳绱㈠埌灞忓箷 鐧诲綍涓嶆垚鍔�
+ return new StatusVO(10086);
+ }
+
+ StatusVO statusVO = new StatusVO();
System.out.println("ViplexCore Demo nvLoginAsync(鐧诲綍) begin... ");
- String loginParam = String.format("{\"sn\":\"" + sn + "\",\"ip\":\"\",\"username\":\"admin\",\"rememberPwd\":0,\"password\":\"1234567890\",\"loginType\":0}"
- , g_sn);
+ String loginParam = String.format("{\"sn\":\"%s\",\"username\":\"admin\",\"rememberPwd\":0,\"password\":\"123456\",\"loginType\":0}", sn);
+
+ CountDownLatch countDownLatch2 = new CountDownLatch(1);
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;
+ countDownLatch2.countDown();
}
});
try {
- waitAPIReturn();
+ countDownLatch2.await();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
- if (g_code != 0) {
- System.out.println("ViplexCore Demo nvLoginAsync(鐧诲綍) 澶辫触锛�");
- System.out.println("閿欒鐮�:" + g_code);
- return statusVO;
+ if (statusVO.getStatusCode() != 0) {
+ System.out.println("ViplexCore " + sn + " nvLoginAsync(鐧诲綍) 澶辫触锛�");
+ System.out.println("閿欒鐮�:" + statusVO.getStatusCode());
+ } else {
+ //鐧婚檰鎴愬姛涔嬪悗瀛樺叆map淇濆瓨鐧诲綍淇℃伅
+ loginSn.put(sn, true);
}
- //鐧婚檰鎴愬姛涔嬪悗瀛樺叆map淇濆瓨鐧诲綍淇℃伅
- loginInfo.put(sn, instance);
return statusVO;
}
/**
* 鍒涘缓鑺傜洰
*/
- public int createPro(String sn) throws InterruptedException {
- ViplexCore instance = (ViplexCore) loginInfo.get(sn);
-
+ public StatusVO createPro(ProWHVO proWHVO) throws InterruptedException {
+ String createProgram = JSON.toJSONString(proWHVO);
System.out.println("ViplexCore Demo nvCreateProgramAsync(鍒涘缓鑺傜洰) begin... ");
-// instance.nvCreateProgramAsync(createProgram, callBack);
- waitAPIReturn();
+ StatusVO statusVO = new StatusVO();
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ try {
+ instance.nvCreateProgramAsync(createProgram, new ViplexCore.CallBack() {
- return 1;
+ @Override
+ public void dataCallBack(int code, String data) {
+ statusVO.setStatusCode(code);
+ statusVO.setStatusData(data);
+ System.out.println("\nViplexCore 鍒涘缓鑺傜洰 code:" + code);
+ System.out.println("\nViplexCore 鍒涘缓鑺傜洰 data:" + data);
+ if (code == 0) {
+ JSONObject result = JSON.parseObject(data);
+ //鍒涘缓鑺傜洰鎴愬姛 璁剧疆鐘舵�佷俊鎭负鑺傜洰id
+ statusVO.setStatusData(String.valueOf(result.getJSONObject("onSuccess").getIntValue("programID")));
+ }
+ countDownLatch.countDown();
+ }
+
+ });
+ countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+ } catch (Exception e) {
+ }
+ return statusVO;
}
+ /**
+ * 缂栬緫鑺傜洰
+ *
+ * @param pid
+ * @param pageInfo
+ * @return
+ */
+
+ public StatusVO editProgram(int pid, Map pageInfo) {
+ ProgramInfoVO programInfoVO = new ProgramInfoVO();
+ programInfoVO.setProgramID(pid);
+ programInfoVO.setPageInfo(pageInfo);
+ System.out.println("ViplexCore Demo nvSetPageProgramAsync(缂栬緫鑺傜洰) begin... ");
+ StatusVO statusVO = new StatusVO();
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ instance.nvSetPageProgramAsync(JSON.toJSONString(programInfoVO), new ViplexCore.CallBack() {
+ @Override
+ public void dataCallBack(int code, String data) {
+ statusVO.setStatusCode(code);
+ statusVO.setStatusData(data);
+ System.out.println("\nViplexCore 缂栬緫鑺傜洰 code:" + code);
+ System.out.println("\nViplexCore 缂栬緫鑺傜洰 data:" + data);
+ countDownLatch.countDown();
+ }
+
+ });
+ try {
+ countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+
+ return statusVO;
+ }
+
+
+ /**
+ * 鐢熸垚鑺傜洰
+ *
+ * @param pid
+ * @return
+ */
+ public StatusVO genrateProgram(int pid) {
+ ProGenrateVO proGenrateVO = new ProGenrateVO();
+ proGenrateVO.setProgramID(pid);
+ proGenrateVO.setOutPutPath(filePathConfig.getOutPutPath());
+ System.out.println("ViplexCore Demo nvMakeProgramAsync(鐢熸垚鑺傜洰) begin... ");
+ StatusVO statusVO = new StatusVO();
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ instance.nvMakeProgramAsync(JSON.toJSONString(proGenrateVO), new ViplexCore.CallBack() {
+ @Override
+ public void dataCallBack(int code, String data) {
+ statusVO.setStatusCode(code);
+ statusVO.setStatusData(data);
+ System.out.println("\nViplexCore 鐢熸垚鑺傜洰 code:" + code);
+ System.out.println("\nViplexCore 鐢熸垚鑺傜洰 data:" + data);
+ countDownLatch.countDown();
+ }
+
+ });
+ try {
+ countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ return statusVO;
+ }
+
+
+ /**
+ * 鍙戝竷鑺傜洰
+ *
+ * @param
+ * @return
+ */
+ public List<TrasfromStatusVO> trasfromProgram(ProgramPrarm pageInfo) {
+
+ TransfromProgramVO transfromProgramVO = new TransfromProgramVO();
+ transfromProgramVO.setProgramName("鑺傜洰01");
+ //璁剧疆鑺傜洰鍐呭
+ TransfromProgramVO.SendProgramFilePathsDTO sendProgramFilePaths = new TransfromProgramVO.SendProgramFilePathsDTO();
+ //鑺傜洰
+ sendProgramFilePaths.setProgramPath(filePathConfig.getOutPutPath() + "/program" + pageInfo.getProgramID());
+ //鏂囦欢
+ Map<String, String> mediasPath = new HashMap();
+ mediasPath.put("C:/Users/Administrator/Desktop/novaWin/demo/java/test.png", "test.png");
+ sendProgramFilePaths.setMediasPath(mediasPath);
+
+ transfromProgramVO.setSendProgramFilePaths(sendProgramFilePaths);
+ //鑺傜洰鏍囪瘑
+ transfromProgramVO.setDeviceIdentifier(SecurityUtils.getUserId().toString());
+ transfromProgramVO.setInsertPlay(pageInfo.getInsertPlay());
+ transfromProgramVO.setStartPlayAfterTransferred(pageInfo.getStartPlayAfterTransferred());
+
+ List<TrasfromStatusVO> svoList = new ArrayList<>();
+ System.out.println("ViplexCore Demo nvStartTransferProgramAsync(鍙戦�佽妭鐩�) begin... ");
+// System.out.println(trasfromProgram);
+// instance.nvStartTransferProgramAsync(trasfromProgram, callBack);
+// 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);
+ pageInfo.getSnList().forEach(sn -> {
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ if (transfromProgramVO == null) {
+ return;
+ }
+ transfromProgramVO.setSn(sn);
+ System.out.println(transfromProgramVO);
+
+ //鎺ㄩ�佺粨鏋�
+ TrasfromStatusVO trasfromStatusVO = new TrasfromStatusVO();
+ trasfromStatusVO.setSn(sn);
+ instance.nvStartTransferProgramAsync(JSON.toJSONString(transfromProgramVO), new ViplexCore.CallBack() {
+ @Override
+ public void dataCallBack(int code, String data) {
+
+ trasfromStatusVO.setStatusCode(code);
+ trasfromStatusVO.setStatusData(data);
+ System.out.println("\nViplexCore 鍙戦�佽妭鐩� code:" + code);
+ System.out.println("\nViplexCore 鍙戦�佽妭鐩� data:" + data);
+ //鑺傜洰鍙戝竷鎴愬姛
+ if (trasfromStatusVO.getStatusCode() == 0) {
+ countDownLatch.countDown();
+ svoList.add(trasfromStatusVO);
+ } else if (trasfromStatusVO.getStatusCode() != 65362) {
+ //涓婁紶澶辫触
+ System.out.println("涓婁紶澶辫触");
+ svoList.add(trasfromStatusVO);
+ countDownLatch.countDown();
+ }
+ }
+ });
+
+ }
+ }).start();
+
+ try {
+ countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ });
+
+
+ return svoList;
+ }
+
+ /**
+ * 鏌ヨ鍦ㄧ嚎鐘舵��
+ *
+ * @return
+ */
+ public List<NewNovaLed> getOnlineStatus(List<NewNovaLed> newNovaListBos) {
+ //璁剧疆寮�鍏冲睆鐘舵��
+ newNovaListBos.forEach(led -> {
+ //鑾峰彇淇℃伅涔嬪墠鍏堢櫥褰�
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ StatusVO login = login(led.getSn());
+ if (login.getStatusCode() == 0) {
+ //鐧婚檰鎴愬姛 璁剧疆涓哄湪绾�
+ led.setIsOnline(1);
+ led.setOnlineSign(1);
+ } else {
+ led.setIsOnline(0);
+ }
+ countDownLatch.countDown();
+ }
+ }).start();
+ try {
+ countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ });
+ return newNovaListBos;
+ }
+
+
+ /**
+ * 鏌ヨ灞忓箷鍩烘湰淇℃伅
+ */
+
+ public NewNovaLed getInfo(NewNovaLed led) {
+ System.out.println("ViplexCore Demo nvGetProductInfoAsync(鑾峰彇灞忓箷淇℃伅) begin... ");
+ StatusVO login = login(led.getSn());
+
+ StatusVO result = new StatusVO();
+ if (login.getStatusCode() == 0) {
+
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ //鎺ㄩ�佺粨鏋�
+ TrasfromStatusVO trasfromStatusVO = new TrasfromStatusVO();
+ trasfromStatusVO.setSn(led.getSn());
+ instance.nvGetProductInfoAsync("{\n" +
+ " \"sn\":\"" + led.getSn() + "\"\n" +
+ "}", new ViplexCore.CallBack() {
+ @Override
+ public void dataCallBack(int code, String data) {
+ result.setStatusCode(code);
+ result.setStatusData(data);
+ System.out.println("\nViplexCore 鑾峰彇灞忓箷淇℃伅 code:" + code);
+ System.out.println("\nViplexCore 鑾峰彇灞忓箷淇℃伅 data:" + data);
+ countDownLatch.countDown();
+ }
+ });
+
+ }
+ }).start();
+ try {
+ countDownLatch.await(30000, TimeUnit.MICROSECONDS);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ } else {
+ throw new BusinessException("璁惧鐧诲綍澶辫触,缁忔鏌ヨ澶囨槸鍚﹁繛鎺�");
+ }
+ NewNovaInfoBo newNovaInfoBo = JSON.parseObject(result.getStatusData(), NewNovaInfoBo.class);
+ led.setInfo(newNovaInfoBo);
+ System.out.println(JSON.toJSONString(led.getInfo()) + "--------");
+ return led;
+ }
+
+
+ /**
+ * 鑾峰彇寮�鍏冲睆鐘舵��
+ */
+ public List<NewNovaLed> getScreenPowerState(List<NewNovaLed> newNovaLsit) {
+
+ System.out.println("ViplexCore Demo nvGetScreenPowerStateAsync(鑾峰彇灞忓箷寮�鍏�) begin... ");
+
+ newNovaLsit.forEach(newNova -> {
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ //鎺ㄩ�佺粨鏋�
+ instance.nvGetScreenPowerStateAsync("{\n" +
+ " \"sn\":\"" + newNova.getSn() + "\"\n" +
+ "}", new ViplexCore.CallBack() {
+ @Override
+ public void dataCallBack(int code, String data) {
+
+ System.out.println("\nViplexCore 鑾峰彇灞忓箷寮�鍏� code:" + code);
+ System.out.println("\nViplexCore 鑾峰彇灞忓箷寮�鍏� data:" + data);
+ if (code == 0 && data.contains("OPEN")) {
+ newNova.setScreenPower(1);
+ }
+ countDownLatch.countDown();
+ }
+ });
+
+ }
+ }).start();
+ try {
+ countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ });
+
+ return newNovaLsit;
+ }
+
+ /**
+ * 鑾峰彇闊抽噺
+ */
+ public List<NewNovaLed> getVolumeState(List<NewNovaLed> newNovaLsit) {
+
+ System.out.println("ViplexCore Demo nvGetVolumeAsync(鑾峰彇闊抽噺) begin... ");
+
+ newNovaLsit.forEach(newNova -> {
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ //鎺ㄩ�佺粨鏋�
+ instance.nvGetVolumeAsync("{\n" +
+ " \"sn\":\"" + newNova.getSn() + "\"\n" +
+ "}", new ViplexCore.CallBack() {
+ @Override
+ public void dataCallBack(int code, String data) {
+
+ System.out.println("\nViplexCore 鑾峰彇闊抽噺 code:" + code);
+ System.out.println("\nViplexCore 鑾峰彇闊抽噺 data:" + data);
+ if (code == 0) {
+ newNova.setVolume((BigDecimal) JSON.parseObject(data, Map.class).get("ratio"));
+ }
+ countDownLatch.countDown();
+ }
+ });
+
+ }
+ }).start();
+ try {
+ countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ });
+
+ return newNovaLsit;
+ }
+
+
+ /**
+ * 璁剧疆闊抽噺
+ */
+ public boolean setVolume(NewNovaStatusParam param) {
+
+ System.out.println("ViplexCore Demo nvSetScreenBrightnessAsync(Volume) begin... ");
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ StatusVO login = login(param.getSn());
+ if (login.getStatusCode() == 0) {
+ String jsonStr = "{\n" +
+ " \"sn\":\"" + param.getSn() + "\",\n" +
+ " \"screenBrightnessInfo\":{\n" +
+ " \"ratio\":" + param.getVolume() + "\n" +
+ " }\n" +
+ "}";
+ instance.nvSetVolumeAsync(jsonStr, new ViplexCore.CallBack() {
+ @Override
+ public void dataCallBack(int code, String data) {
+
+ System.out.println("\nViplexCore Volume code:" + code);
+ System.out.println("\nViplexCore Volume data:" + data);
+ countDownLatch.countDown();
+ if (code == 0) {
+ login.setStatusCode(10086);
+ }
+ }
+ });
+ try {
+ countDownLatch.await();
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ if (login.getStatusCode() == 10086) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+
+ /**
+ * 鑾峰彇浜害
+ */
+ public List<NewNovaLed> getScreenBrightness(List<NewNovaLed> newNovaLsit) {
+
+ System.out.println("ViplexCore Demo nvGetScreenBrightnessAsync(鑾峰彇浜害) begin... ");
+
+
+ newNovaLsit.forEach(newNova -> {
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ //鎺ㄩ�佺粨鏋�
+ instance.nvGetScreenBrightnessAsync("{\n" +
+ " \"sn\":\"" + newNova.getSn() + "\"\n" +
+ "}", new ViplexCore.CallBack() {
+ @Override
+ public void dataCallBack(int code, String data) {
+
+ System.out.println("\nViplexCore 鑾峰彇浜害 code:" + code);
+ System.out.println("\nViplexCore 鑾峰彇浜害 data:" + data);
+ if (code == 0) {
+ newNova.setBrightness((BigDecimal) JSON.parseObject(data, Map.class).get("ratio"));
+ }
+ countDownLatch.countDown();
+ }
+ });
+
+ }
+ }).start();
+ try {
+ countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ });
+
+ return newNovaLsit;
+ }
+
+ /**
+ * 璁剧疆浜害
+ */
+ public boolean setScreenBrightness(NewNovaStatusParam param) {
+
+ System.out.println("ViplexCore Demo nvSetScreenBrightnessAsync(璁剧疆浜害) begin... ");
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ StatusVO login = login(param.getSn());
+ if (login.getStatusCode() == 0) {
+ String jsonStr = "{\n" +
+ " \"sn\":\"" + param.getSn() + "\",\n" +
+ " \"screenBrightnessInfo\":{\n" +
+ " \"ratio\":" + param.getBrightness() + "\n" +
+ " }\n" +
+ "}";
+ instance.nvSetScreenBrightnessAsync(jsonStr, new ViplexCore.CallBack() {
+ @Override
+ public void dataCallBack(int code, String data) {
+
+ System.out.println("\nViplexCore 璁剧疆浜害 code:" + code);
+ System.out.println("\nViplexCore 璁剧疆浜害 data:" + data);
+ countDownLatch.countDown();
+ if (code == 0) {
+ login.setStatusCode(10086);
+ }
+ }
+ });
+ try {
+ countDownLatch.await();
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ if (login.getStatusCode() == 10086) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * 鑾峰彇鍚屾
+ */
+ public List<NewNovaLed> getSync(List<NewNovaLed> newNovaLsit) {
+
+ System.out.println("ViplexCore Demo nvGetSyncPlayAsync(鑾峰彇鍚屾) begin... ");
+
+ newNovaLsit.forEach(newNova -> {
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ //鎺ㄩ�佺粨鏋�
+ instance.nvGetSyncPlayAsync("{\n" +
+ " \"sn\":\"" + newNova.getSn() + "\"\n" +
+ "}", new ViplexCore.CallBack() {
+ @Override
+ public void dataCallBack(int code, String data) {
+
+ System.out.println("\nViplexCore 鑾峰彇浜害 code:" + code);
+ System.out.println("\nViplexCore 鑾峰彇浜害 data:" + data);
+ if (code == 0) {
+ newNova.setSync(1);
+ }
+ countDownLatch.countDown();
+ }
+ });
+
+ }
+ }).start();
+ try {
+ countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ });
+
+ return newNovaLsit;
+ }
+
+ /**
+ * 璁剧疆鍚屾
+ */
+ public List<NewNovaStatusParam.NovaDTO> setSync(NewNovaStatusParam param) {
+
+ System.out.println("ViplexCore Demo nvSetSyncPlayAsync(璁剧疆鍚屾) begin... ");
+
+ if (param.getNovaList() == null || param.getNovaList().size() == 0) {
+ throw new BusinessException("鍚屾璁惧涓嶈兘涓虹┖ !");
+ }
+ param.getNovaList().forEach(newNova -> {
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ //鎺ㄩ�佺粨鏋�
+ instance.nvSetSyncPlayAsync("{\n" +
+ " \"sn\":\"" + newNova.getSn() + "\",\n" +
+ " \"enable\":" + param.isSync() + "\n" +
+ "}", new ViplexCore.CallBack() {
+ @Override
+ public void dataCallBack(int code, String data) {
+
+ System.out.println("\nViplexCore 璁剧疆鍚屾 code:" + code);
+ System.out.println("\nViplexCore 璁剧疆鍚屾 data:" + data);
+ if (code == 0) {
+ newNova.setStatus(true);
+ }
+ countDownLatch.countDown();
+ }
+ });
+
+ }
+ }).start();
+ try {
+ countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ });
+
+ return param.getNovaList();
+ }
+
+ /**
+ * 閲嶅惎
+ */
+ public List<NewNovaStatusParam.NovaDTO> reboot(NewNovaStatusParam param) {
+
+ System.out.println("ViplexCore Demo nvSetReBootTaskAsync(閲嶅惎) begin... ");
+ if (param.getNovaList() == null || param.getNovaList().size() == 0) {
+ throw new BusinessException("閲嶅惎璁惧涓嶈兘涓虹┖ !");
+ }
+ param.getNovaList().forEach(newNova -> {
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ //鎺ㄩ�佺粨鏋�
+ instance.nvSetReBootTaskAsync("{\n" +
+ " \"sn\":\"" + newNova.getSn() + "\",\n" +
+ " \"taskInfo\":{\n" +
+ " \"type\":\"REBOOT\",\n" +
+ " \"source\":{\n" +
+ " \"type\":0,\n" +
+ " \"platform\":4\n" +
+ " },\n" +
+ " \"executionType\":\"IMMEDIATELY\",\n" +
+ " \"reason\":\"Just to reboot\",\n" +
+ " \"conditions\":[\n" +
+ " {\n" +
+ " \"cron\":[\n" +
+ " \"0 15 10 ? * *\",\n" +
+ " \"0 0 12 * * ?\"\n" +
+ " ],\n" +
+ " \"enable\":false\n" +
+ " }\n" +
+ " ]\n" +
+ " }\n" +
+ "}", new ViplexCore.CallBack() {
+ @Override
+ public void dataCallBack(int code, String data) {
+
+ System.out.println("\nViplexCore 閲嶅惎 code:" + code);
+ System.out.println("\nViplexCore 閲嶅惎 data:" + data);
+ if (code == 0) {
+ newNova.setStatus(true);
+ }
+ countDownLatch.countDown();
+ }
+ });
+
+ }
+ }).start();
+ try {
+ countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ });
+
+ return param.getNovaList();
+ }
+
+ /**
+ * ntp瀵规椂
+ */
+ public List<NewNovaStatusParam.NovaDTO> ntp(NewNovaStatusParam param) {
+
+ System.out.println("ViplexCore Demo nvSetNetTimingInfoAsync(ntp) begin... ");
+
+ if (param.getNovaList() == null || param.getNovaList().size() == 0) {
+ throw new BusinessException("瀵规椂璁惧涓嶈兘涓虹┖ !");
+ }
+
+ param.getNovaList().forEach(newNova -> {
+ CountDownLatch countDownLatch = new CountDownLatch(1);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ //鎺ㄩ�佺粨鏋�
+ instance.nvSetNetTimingInfoAsync("{\n" +
+ " \"sn\":\"" + newNova.getSn() + "\",\n" +
+ " \"TimingInfo\":{\n" +
+ " \"source\":{\n" +
+ " \"type\":1,\n" +
+ " \"platform\":1\n" +
+ " },\n" +
+ " \"taskArray\":[\n" +
+ " {\n" +
+ " \"type\":\"NTP_CONFIG\",\n" +
+ " \"action\":4,\n" +
+ " \"data\":{\n" +
+ " \"enable\":" + param.isNtp() + ",\n" +
+ " \"server\":\"http://ntpsss.net\"\n" +
+ " }\n" +
+ " }\n" +
+ " ]\n" +
+ " }\n" +
+ "}", new ViplexCore.CallBack() {
+ @Override
+ public void dataCallBack(int code, String data) {
+
+ System.out.println("\nViplexCore 閲嶅惎 code:" + code);
+ System.out.println("\nViplexCore 閲嶅惎 data:" + data);
+ if (code == 0) {
+ newNova.setStatus(true);
+ }
+ countDownLatch.countDown();
+ }
+ });
+
+ }
+ }).start();
+ try {
+ countDownLatch.await(30000, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ });
+
+ return param.getNovaList();
+ }
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/ProGenrateVO.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/ProGenrateVO.java
new file mode 100644
index 0000000..44ce0eb
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/ProGenrateVO.java
@@ -0,0 +1,68 @@
+package com.sandu.ximon.admin.newnova.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/10
+ */
+@NoArgsConstructor
+@Data
+@AllArgsConstructor
+public class ProGenrateVO {
+
+
+
+ private Integer programID;
+
+ private String outPutPath;
+
+// private List<MediasPathDTO> mediasPath;
+//
+// private ComplexProgramDTO complexProgram;
+//
+// @NoArgsConstructor
+// @Data
+// public static class ComplexProgramDTO {
+//
+// private String name;
+//
+// private List<ProgramRegularDTO> programRegular;
+//
+// @NoArgsConstructor
+// @Data
+// public static class ProgramRegularDTO {
+//
+// private Integer priority;
+//
+// private Integer programID;
+//
+// private List<ConstraintsDTO> constraints;
+//
+// @NoArgsConstructor
+// @Data
+// public static class ConstraintsDTO {
+//
+// private String startTime;
+//
+// private String endTime;
+//
+// private List<String> cron;
+// }
+// }
+// }
+//
+// @NoArgsConstructor
+// @Data
+// public static class MediasPathDTO {
+//
+// private String oldPath;
+//
+// private String newPath;
+// }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/ProWHVO.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/ProWHVO.java
new file mode 100644
index 0000000..63597ac
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/ProWHVO.java
@@ -0,0 +1,31 @@
+package com.sandu.ximon.admin.newnova.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/10
+ * 鑺傜洰鍒嗚鲸鐜囧弬鏁�
+ */
+@Data
+@AllArgsConstructor
+public class ProWHVO {
+
+
+ /**
+ * 鑺傜洰鍚嶇О
+ */
+ private String name;
+
+ /**
+ * 鑺傜洰瀹�
+ */
+ private Integer width;
+
+ /**
+ * 鑺傜洰楂�
+ */
+ private Integer height;
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/ProgramInfoVO.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/ProgramInfoVO.java
new file mode 100644
index 0000000..b9ffe1d
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/ProgramInfoVO.java
@@ -0,0 +1,29 @@
+package com.sandu.ximon.admin.newnova.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/10
+ */
+@Data
+public class ProgramInfoVO {
+
+ /**
+ * 鑺傜洰id(鍒涘缓鑺傜洰杩斿洖鐨刬d)
+ */
+ private int programID;
+
+ /**
+ * pageId(褰撳墠鐗堟湰pageId涓�1)
+ */
+ private int pageID = 1;
+
+ /**
+ * page鐨勮缁嗕俊鎭�
+ */
+ private Map pageInfo;
+}
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
index be27490..a7581a5 100644
--- 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
@@ -9,6 +9,12 @@
@Data
public class StatusVO {
+ public StatusVO(int statusCode) {
+ this.statusCode = statusCode;
+ }
+ public StatusVO() {
+ }
+
private int statusCode;
private String statusData;
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/TransfromProgramVO.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/TransfromProgramVO.java
new file mode 100644
index 0000000..6b70c16
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/TransfromProgramVO.java
@@ -0,0 +1,73 @@
+package com.sandu.ximon.admin.newnova.vo;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Map;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/10
+ */
+@NoArgsConstructor
+@Data
+public class TransfromProgramVO {
+
+
+ /**
+ * 鍞竴鏍囪瘑绗�
+ */
+ private String sn;
+
+
+ /**
+ * 缂╃暐鍥捐矾寰勶紙鏈湴鍦板潃锛�
+ */
+ private String iconPath;
+
+ /**
+ * 缂╃暐鍥惧悕绉�
+ */
+ private String iconName;
+
+ /**
+ * 鑺傜洰鐩稿叧鏂囦欢璺緞
+ */
+ private SendProgramFilePathsDTO sendProgramFilePaths;
+
+ /**
+ * 鑺傜洰鍚嶇О锛屼笌鍒涘缓鑺傜洰涓殑name淇濇寔涓�鑷�
+ */
+ private String programName;
+
+ /**
+ * 鑺傜洰鐨勫敮涓�璇嗗埆鍙凤紝鍚屼竴PC鏈�濂戒繚鎸佷笉鍙橈紝濡�:鍙栬绠楁満鍚嶇О
+ */
+ private String deviceIdentifier;
+
+ /**
+ * 鏄惁绔嬪嵆鎾斁鑺傜洰
+ */
+ private Boolean startPlayAfterTransferred;
+
+ /**
+ * 鏄惁鎻掓挱
+ */
+ private Boolean insertPlay;
+
+ @NoArgsConstructor
+ @Data
+ public static class SendProgramFilePathsDTO {
+
+ /**
+ * 鑺傜洰鏂囦欢璺緞锛堢敓鎴愯妭鐩槸outputpath鍊�+program锛孖D鏄灏戯紝灏辨槸澶氬皯锛�
+ */
+ private String programPath;
+
+ /**
+ * {濯掍綋璺緞 : 濯掍綋鍚嶇О}(浠呮湰鍦板浘鐗囷紝瑙嗛锛孏IF鏂囦欢闇�瑕佹璺緞)
+ */
+ private Map<String, String> mediasPath;
+
+ }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/TrasfromStatusVO.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/TrasfromStatusVO.java
new file mode 100644
index 0000000..3ca3a14
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/newnova/vo/TrasfromStatusVO.java
@@ -0,0 +1,13 @@
+package com.sandu.ximon.admin.newnova.vo;
+
+import lombok.Data;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/10
+ */
+@Data
+public class TrasfromStatusVO extends StatusVO {
+
+ private String sn;
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
index 7d542dc..6d90489 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -1338,7 +1338,7 @@
//璁剧疆瑙﹀彂鏉′欢 瀛樺叆Redis 15鍒嗛挓瓒呮椂 15鍒嗛挓鍐呭啀娆¤皟鐢ㄧ洿鎺ヨ繑鍥�
redisUtils.set("redisStatusKeyTimeout", System.currentTimeMillis(), 60 * 15);
- CountDownLatch countDownLatch = new CountDownLatch(7);//todo
+ CountDownLatch countDownLatch = new CountDownLatch(7);//todo 鍑犱釜璁惧璁剧疆涓哄嚑
//鑾峰彇涓�涓�7浣嶉殢鏈烘暟
String str = RandomStringUtils.randomAlphanumeric(7);
countDownLatchUtil.push(str, countDownLatch);
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/CountDownLatchUtil.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/CountDownLatchUtil.java
index 228133e..c2d0425 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/CountDownLatchUtil.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/CountDownLatchUtil.java
@@ -1,7 +1,9 @@
package com.sandu.ximon.admin.utils;
-import lombok.Data;
+import org.apache.commons.lang.RandomStringUtils;
import org.springframework.context.annotation.Configuration;
+
+import java.util.concurrent.TimeUnit;
import java.util.HashMap;
import java.util.Map;
@@ -27,9 +29,42 @@
}
}
+ /**
+ * 鍒犻櫎CountDown
+ * @param id
+ * @param countDownLatch 瀵硅薄
+ * @param timeout 绛夊緟鏃堕棿
+ */
+ public void remove(String id, CountDownLatch countDownLatch, int timeout) {
+ if (countDownLatch == null) {
+ return;
+ }
+ try {
+ countDownLatch.await(timeout, TimeUnit.MILLISECONDS);
+ if (data != null) {
+ data.remove(id);
+ }
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * 娌℃湁绛夊緟鏃堕棿鐨勫垹闄�
+ * @param id
+ */
public void remove(String id) {
if (data != null) {
data.remove(id);
}
}
+
+ public CountDownResultUtil createCoutDown(int times) {
+ CountDownLatchUtil countDownLatchUtil = new CountDownLatchUtil();
+ CountDownLatch countDownLatch = new CountDownLatch(times);
+ //鑾峰彇涓�涓�7浣嶉殢鏈烘暟
+ String str = RandomStringUtils.randomAlphanumeric(7);
+ countDownLatchUtil.push(str, countDownLatch);
+ return new CountDownResultUtil(str, countDownLatch);
+ }
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/CountDownResultUtil.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/CountDownResultUtil.java
new file mode 100644
index 0000000..cbd5007
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/CountDownResultUtil.java
@@ -0,0 +1,19 @@
+package com.sandu.ximon.admin.utils;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.concurrent.CountDownLatch;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/11/10
+ */
+@Data
+@AllArgsConstructor
+public class CountDownResultUtil {
+
+ private String key;
+
+ private CountDownLatch countDownLatch;
+}
diff --git a/ximon-admin/src/main/resources/application-local.yml b/ximon-admin/src/main/resources/application-local.yml
index a56408a..2172b75 100644
--- a/ximon-admin/src/main/resources/application-local.yml
+++ b/ximon-admin/src/main/resources/application-local.yml
@@ -32,7 +32,7 @@
#************************鏈湴涓婁紶鏂囦欢閰嶇疆************************
upload:
#鏂囦欢鏈嶅姟鍣ㄨ矾寰�
- upload-root-path: E:\file\novafile
+ upload-root-path: E:\file\
storage: local
#鏈嶅姟鍣ㄦ枃浠跺墠缂�
real-url: http://localhost/
@@ -86,11 +86,12 @@
new-nova:
#渚濊禆鍦板潃
string-path: C:\Users\Administrator\Desktop\novaWin\bin\viplexcore.dll
+ out-put-path: E:\IdeaProjects\XMPoleManager/temp
new-nova-file:
upload:
#鏂囦欢鏈嶅姟鍣ㄨ矾寰�
- upload-root-path: E:\file\novafile
+ upload-root-path: E:\file\
storage: local
#鏈嶅姟鍣ㄦ枃浠跺墠缂�
- real-url: http://localhost/
\ No newline at end of file
+ real-url: http://183.45.76.239:8089/file/
\ No newline at end of file
--
Gitblit v1.9.3