From 83326b4b2a8a10d11ae18dcedd2e6904dd69d2b2 Mon Sep 17 00:00:00 2001
From: liuhaonan <konodioda2333@vip.qq.com>
Date: 星期五, 11 二月 2022 12:32:11 +0800
Subject: [PATCH] 功能完善

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/config/RealtimeServerBean.java         |   35 +
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/DownloadFileToLocal.java |   17 
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java         |   39 +
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetScreenHeight.java     |   14 
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/ClearVideoPlay.java      |    9 
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetTimeSchedule.java     |   10 
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/Constant.java                    |  252 +++++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/entity/ProgramsTask.java               |   15 
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/FileUtil.java                    |   89 ++
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/LightemitUtils.java              |  378 +++++++++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Command.java                    |   16 
 ximon-admin/src/main/java/com/sandu/ximon/admin/config/NginxConfigBean.java            |   15 
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/HtmlTemplateUtils.java           |   62 +
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/Clear.java               |   12 
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetScreenWidth.java      |   14 
 ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Layer.java                      |   14 
 dao/src/main/java/com/sandu/ximon/dao/domain/PoleLightemitEntity.java                  |   89 ++
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetPicture.java          |   15 
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleLightemitService.java      |  711 ++++++++++++++++++++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/ClearPlayerTask.java     |    8 
 ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Program.java                    |   20 
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/IsScreenOpen.java        |   14 
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/PlayerProgram.java       |   28 
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/PostHtml.java            |   20 
 24 files changed, 1,896 insertions(+), 0 deletions(-)

diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/PoleLightemitEntity.java b/dao/src/main/java/com/sandu/ximon/dao/domain/PoleLightemitEntity.java
new file mode 100644
index 0000000..fc1e85a
--- /dev/null
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/PoleLightemitEntity.java
@@ -0,0 +1,89 @@
+package com.sandu.ximon.dao.domain;
+
+import cn.hutool.core.date.DateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * led骞垮憡灞忎富琛�
+ * 
+ * @author chenshun
+ * @email sunlightcs@gmail.com
+ * @date 2019-04-20 13:34:54
+ */
+@Data
+@TableName("pole_lightemit")
+public class PoleLightemitEntity implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * LED ID
+	 */
+	@TableId
+	private Long lightemitId;
+	/**
+	 * LED鍚嶇О
+	 */
+	private String lightemitName;
+	/**
+	 * LED鎺у埗鍗$紪鍙�
+	 */
+	private String lightemitControlCode;
+	/**
+	 * 鎵�鏄剧ず鍥剧墖鍦板潃
+	 */
+	private String url;
+	/**
+	 * 鏄剧ず鏃堕棿
+	 */
+	private Integer playTime;
+	/**
+	 * 鍔犲叆鏃堕棿锛堝瓨鍌ㄥ崟鐏暟鎹洿鏂版椂闂达級
+	 */
+	private DateTime addTime;
+	/*
+	璇锋眰鏁版嵁
+	 */
+	private String requestBody;
+	/**
+	 * 鎾斁璁剧疆 0锛氫娇鐢ㄦ挱鏀炬帴鍙o紱 1锛氫娇鐢▁ixunplayer鎾斁鎺ュ彛
+	 */
+	private Integer playerSetting;
+	/**
+	 * 鐘舵��  0锛氱鐢�   1锛氭甯�
+	 */
+	private Integer status;
+    /**
+     * 鐘舵��  0锛氱鐢�   1锛氭甯�
+     */
+    private String remark;
+	/**
+	 * 鍒涘缓鑰匢D
+	 */
+	private Long createUserId;
+	/**
+	 * 鍒涘缓鏃堕棿
+	 */
+	private DateTime createTime;
+	/**
+	 * 缁戝畾鐏潌ID
+	 */
+	@TableField(exist = false)
+	private Long streetlightId;
+	/**
+	 * 鐏潌鍚嶇О
+	 */
+	@TableField(exist = false)
+	private String streetlightName;
+
+	/**
+	 * led灞忓箷寮�鍏�
+	 */
+	@TableField(exist = false)
+	private Boolean isOpen;
+
+}
\ No newline at end of file
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/config/NginxConfigBean.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/config/NginxConfigBean.java
new file mode 100644
index 0000000..7d10894
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/config/NginxConfigBean.java
@@ -0,0 +1,15 @@
+package com.sandu.ximon.admin.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "nginx-config")
+public class NginxConfigBean {
+
+    private String filePath;
+
+    private String url;
+}
\ No newline at end of file
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/config/RealtimeServerBean.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/config/RealtimeServerBean.java
new file mode 100644
index 0000000..45a305d
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/config/RealtimeServerBean.java
@@ -0,0 +1,35 @@
+package com.sandu.ximon.admin.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * @program: machine-fast
+ * @description: led鏈嶅嫏鍣ㄥ湴鍧�
+ * @author: YSS
+ * @create: 2019-04-24 13:24
+ **/
+@Component
+@ConfigurationProperties(prefix = "realtime-server")
+public class RealtimeServerBean {
+
+    private String command;
+
+    private String url;
+
+    public void setCommand(String command) {
+        this.command = command;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getCommand() {
+        return command;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Command.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Command.java
new file mode 100644
index 0000000..f283c6f
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Command.java
@@ -0,0 +1,16 @@
+package com.sandu.ximon.admin.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class Command implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+    private String preDownloadURL;
+    private String notificationURL;
+    private ProgramsTask task;
+    private String _type = "PlayXixunTask";
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Layer.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Layer.java
new file mode 100644
index 0000000..ef4ea72
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Layer.java
@@ -0,0 +1,14 @@
+package com.sandu.ximon.admin.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class Layer implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private List<Source> sources;   //绱犳潗閮介渶瑕佸姞鍏ュ埌杩欎釜list閲岄潰
+    private boolean repeat = true;			//濡傛灉璇ュ�间负false锛屽畠浼氬湪鎾斁鏃堕暱鍒拌揪鍚庣粨鏉熸挱鏀撅紝鍚﹀垯浠栦細寰幆鎾斁鐩村埌list涓渶闀跨殑閭d釜layer鎾斁缁撴潫鏃剁粨鏉熸挱鏀�
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Program.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Program.java
new file mode 100644
index 0000000..1326c9c
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Program.java
@@ -0,0 +1,20 @@
+package com.sandu.ximon.admin.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class Program  {
+
+
+    private String  _id;					//璇蜂娇鐢║UID璧嬪��
+    private String name;					//濂借鐨勫悕瀛�
+    private int width;					//鑺傜洰瀹�
+    private int height;					//鑺傜洰楂樺害
+    private List<Layer> layers;			//鎵�鏈夌礌鏉愰兘鍖呭惈鍦ㄨlist涓�
+    private long totalSize;				//灏唋ayers涓殑sources鐨剆ize绱姞璧嬪�肩粰浠栵紝琛ㄧず鑺傜洰鎵�鏈夌礌鏉愬崰鐢ㄧ殑绌洪棿
+    //濡傛灉涓簍rue锛屽垯璇ヨ妭鐩潵鑷涓夋柟鎺ュ彛锛屼笉鏄潵鑷垜浠嚜宸辩殑web锛屼簩娆″紑鍙戣鍔″繀璧嬪�间负true
+    private boolean isOthers=true;
+    private int version;					//2涓虹畝鏄撹妭鐩紝9涓哄畾鐐硅妭鐩紝鍏朵粬涓洪珮绾ц妭鐩紝璇疯祴鍊煎叾浠栥��
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/ProgramsTask.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/ProgramsTask.java
new file mode 100644
index 0000000..561b0ae
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/ProgramsTask.java
@@ -0,0 +1,15 @@
+package com.sandu.ximon.admin.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class ProgramsTask implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private String _id;					//浣跨敤UUID璧嬪��
+    private String name;					//鑺傜洰鍚�
+    private List<TaskItem> items;
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleLightemitService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleLightemitService.java
new file mode 100644
index 0000000..3a816b4
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleLightemitService.java
@@ -0,0 +1,711 @@
+//package com.sandu.ximon.admin.service;
+//
+//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+//import com.google.gson.Gson;
+//import com.sandu.common.service.impl.BaseServiceImpl;
+//import com.sandu.ximon.admin.config.NginxConfigBean;
+//import com.sandu.ximon.admin.config.RealtimeServerBean;
+//import com.sandu.ximon.admin.entity.*;
+//import com.sandu.ximon.admin.utils.Constant;
+//import com.sandu.ximon.admin.utils.FileUtil;
+//import com.sandu.ximon.admin.utils.HtmlTemplateUtils;
+//import com.sandu.ximon.admin.utils.LightemitUtils;
+//import com.sandu.ximon.admin.utils.request.SubTitleSet;
+//import com.sandu.ximon.dao.domain.PoleLightemitEntity;
+//import org.apache.commons.lang3.StringUtils;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.cache.annotation.EnableCaching;
+//import org.springframework.context.ApplicationContext;
+//import org.springframework.scheduling.annotation.Async;
+//import org.springframework.stereotype.Service;
+//
+//import javax.annotation.PostConstruct;
+//import java.io.File;
+//import java.io.IOException;
+//import java.util.*;
+//
+//
+//@Service
+//@EnableCaching
+//public class PoleLightemitService extends BaseServiceImpl<PoleLightemitDao, PoleLightemitEntity> {
+//
+//    @Autowired
+//    PoleStreetlightLightemitService poleStreetlightLightemitService;
+//    LightemitUtils lightemitUtils;
+//    @Autowired
+//    RealtimeServerBean realtimeServerBean;
+//    @Value("${server.port}")
+//    private String port;
+//    @Autowired
+//    ApplicationContext applicationContext;
+//    @Autowired
+//    FfmpegUtils ffmpegUtils;
+//    @Autowired
+//    FileUploadPathBean fileUploadPathBean;
+//    @Autowired
+//    NginxConfigBean nginxConfigBean;
+//    @Autowired
+//    PoleLightemitDao poleLightemitDao;
+//
+//    @PostConstruct
+//    public  void init(){
+//        //閲嶆柊鑾峰彇鍗曚緥
+//        lightemitUtils = applicationContext.getBean(LightemitUtils.class);
+//    }
+//
+//    /*@Override
+//    public PageUtils queryPage(Map<String, Object> params, Long userId) {
+//
+//        String key = (String)params.get("key");
+//
+//        Long groupId = StringUtils.isNotBlank((String)params.get("group"))? Long.valueOf((String)params.get("group")): null;
+//
+//        String order = (String)params.get("order");
+//
+//        String column = (String)params.get("sortby");
+//
+//        IPage<PoleLightemitEntity> page = new Page<>();
+//        //鑾峰彇瑙掕壊鍒楄〃
+//        Long roleId = (sysUserRoleService.queryRoleId(userId));
+//
+//        if(roleId == null || roleId == 0){
+//            return null;
+//        }
+//
+//        if(roleId.longValue() == Constant.SUPER_ADMIN){
+////            page = this.page(
+////                    new Query<PoleLightemitEntity>().getPage(params),
+////                    new QueryWrapper<PoleLightemitEntity>().like(StringUtils.isNotBlank(key),"lightemit_name", key));
+//            if (order != null && order.equals("ASC") && column.equals("isOpen")) {
+//                Map<String, Object> map = new HashMap<>();
+//                Integer pg = 1;
+//                Integer size = 200;
+//                map.put("page",pg);
+//                params.put("limit",size);
+//                page = baseMapper.superAdminSelectPageVo(PageTransform.transformPage(params),key,groupId,order,column);
+//                ledOnlineCheck(page.getRecords());
+//                page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(true)).collect(Collectors.toList()));
+//                return new PageUtils(page);
+//            }else if (order != null && order.equals("DESC") && column.equals("isOpen")){
+//                Map<String, Object> map = new HashMap<>();
+//                Integer pg = 1;
+//                Integer size = 200;
+//                map.put("page",pg);
+//                params.put("limit",size);
+//                page = baseMapper.superAdminSelectPageVo(PageTransform.transformPage(params),key,groupId,order,column);
+//                ledOnlineCheck(page.getRecords());
+//                page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(false)).collect(Collectors.toList()));
+//                return new PageUtils(page);
+//            }else {
+//                page = baseMapper.superAdminSelectPageVo(PageTransform.transformPage(params), key, groupId,order,column);
+//            }
+//
+//        }else if(roleId.longValue() == Constant.ADMIN){
+//            if (order != null && order.equals("ASC") && column.equals("isOpen")) {
+//                Map<String, Object> map = new HashMap<>();
+//                Integer pg = 1;
+//                Integer size = 200;
+//                map.put("page",pg);
+//                params.put("limit",size);
+//                page = baseMapper.adminSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column);
+//                ledOnlineCheck(page.getRecords());
+//                page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(true)).collect(Collectors.toList()));
+//                return new PageUtils(page);
+//            }else if (order != null && order.equals("DESC") && column.equals("isOpen")){
+//                Map<String, Object> map = new HashMap<>();
+//                Integer pg = 1;
+//                Integer size = 200;
+//                map.put("page",pg);
+//                params.put("limit",size);
+//                page = baseMapper.adminSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column);
+//                ledOnlineCheck(page.getRecords());
+//                page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(false)).collect(Collectors.toList()));
+//                return new PageUtils(page);
+//            }else {
+//                page = baseMapper.adminSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column);
+//            }
+//
+//        }else if(roleId.longValue() == Constant.USER){
+//            if (order != null && order.equals("ASC") && column.equals("isOpen")) {
+//                Map<String, Object> map = new HashMap<>();
+//                Integer pg = 1;
+//                Integer size = 200;
+//                map.put("page",pg);
+//                params.put("limit",size);
+//                page = baseMapper.userSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column);
+//                ledOnlineCheck(page.getRecords());
+//                page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(true)).collect(Collectors.toList()));
+//                return new PageUtils(page);
+//            }else if (order != null && order.equals("DESC") && column.equals("isOpen")){
+//                Map<String, Object> map = new HashMap<>();
+//                Integer pg = 1;
+//                Integer size = 200;
+//                map.put("page",pg);
+//                params.put("limit",size);
+//                page = baseMapper.userSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column);
+//                ledOnlineCheck(page.getRecords());
+//                page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(false)).collect(Collectors.toList()));
+//                return new PageUtils(page);
+//            }else {
+//                page = baseMapper.userSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column);
+//            }
+//
+//        }
+//        ledOnlineCheck(page.getRecords());
+//        return new PageUtils(page);
+//    }
+//*//*
+//    @Override
+//    public List<PoleLightemitEntity> getAll(Long userId) {
+//        //鑾峰彇瑙掕壊鍒楄〃
+//        Long roleId = (sysUserRoleService.queryRoleId(userId));
+//
+//        if(roleId == null || roleId == 0){
+//            return null;
+//        }
+//        List<PoleLightemitEntity> list = null;
+//        if(roleId.longValue() == Constant.SUPER_ADMIN){
+//            list = poleLightemitDao.selectAll();
+//        }else if(roleId.longValue() == Constant.ADMIN){
+//            list = poleLightemitDao.selectAllByCompany(userId);
+//        }else if(roleId.longValue() == Constant.USER){
+//            list = poleLightemitDao.selectAllByUser(userId);
+//        }
+//        return list;
+//    }
+//*/
+//
+///*    public void ledOnlineCheck(List<PoleLightemitEntity> list) {
+//
+//        for(PoleLightemitEntity poleLightemitEntity : list){
+//            poleLightemitEntity.setIsOpen(lightemitUtils.getIsScreenOpen(poleLightemitEntity.getLightemitControlCode()).contains("true"));
+//        }
+//    }*/
+//
+//
+//   /* public void savePoleLightemit(PoleLightemitEntity poleLightemit) {
+//        this.save(poleLightemit);
+//        poleStreetlightLightemitService.saveStreetlightLightemit(poleLightemit.getLightemitId(),poleLightemit.getStreetlightId());
+//    }*/
+//
+//
+//  /*  public void updatePoleLightemit(PoleLightemitEntity poleLightemit) {
+//        this.updateById(poleLightemit);
+//        poleStreetlightLightemitService.saveStreetlightLightemit(poleLightemit.getLightemitId(),poleLightemit.getStreetlightId());
+//    }*/
+//
+//    /**
+//     * 鏌ヨ鏉冮檺鑼冨洿鍐呯殑鎵�鏈塴ed灞忎俊鎭�
+//     * @param
+//     * @return
+//     */
+//   /* public List<PoleLightemitEntity> selectLightemitByUserId(Long userId) {
+//        List<PoleLightemitEntity> list = new ArrayList<>();
+//
+//        Long roleId = sysUserRoleService.queryRoleId(userId);
+//
+//        if(roleId == null || roleId == 0){
+//            return new ArrayList<>();
+//        }
+//        if(roleId.longValue() == Constant.SUPER_ADMIN){
+//            list = this.list();
+//        }else if(roleId.longValue() == Constant.ADMIN){
+//            list = baseMapper.selectCompanyLightemitByUserId(userId);
+//        }else if(roleId.longValue() == Constant.USER){
+//            list = baseMapper.selectLightemitByUserId(userId);
+//        }
+//        return list;
+//    }
+//*/
+//    /*
+//    閫氳繃灞忓箷缂栫爜鏌ヨ
+//     */
+//
+//    public PoleLightemitEntity selectByLightemitControlCode(String lightemitControlCode) {
+//        QueryWrapper<PoleLightemitEntity> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.eq("lightemit_control_code", lightemitControlCode);
+//        return this.getOne(queryWrapper);
+//    }
+//
+//    /*
+//    led涓婁紶鍥剧墖
+//     */
+//    @Async("taskExecutor")
+//    public void photoUpload(String lightemitControlCode, String path, List<String> filenameList, String userName) throws IOException {
+//        //鑾峰彇灞忓箷瀹�
+//        String screenWidth = lightemitUtils.getScreenWidth(lightemitControlCode);
+//        String screenHeight = lightemitUtils.getScreenHeight(lightemitControlCode);
+//
+//        //html鍦板潃
+//        String filenameTemp = path + userName + "_"+lightemitControlCode + ".html";
+//        File htmlFile = new File(filenameTemp);
+//        if (!htmlFile.exists() || htmlFile.delete()) {
+//            htmlFile.createNewFile();
+//        }
+//
+//        //鑾峰彇body鐨刪tml
+//        Map<String, Object> params = new HashMap<>();
+//        params.put("imgList",filenameList);
+//        params.put("screenWidth",screenWidth);
+//        params.put("screenHeight",screenHeight);
+//
+//        String body = new HtmlTemplateUtils().renderPath("classpath:templates/lightemitTemplates/photoTemplates.html", params);
+//
+//        boolean flag = new FileUtil().writeToFile(body, filenameTemp);
+//
+//        if(flag){
+//            //娓呭睆鎿嶄綔
+//            lightemitUtils.clear(lightemitControlCode);
+//            //娓呴櫎鎾斁鍒楄〃
+//            lightemitUtils.clearVideoPlay(lightemitControlCode);
+//            //娓呴櫎鑺傜洰鍒楄〃
+//            lightemitUtils.clearPlayerTask(lightemitControlCode);
+//            //鎺ㄩ�佸浘鐗�
+//            lightemitUtils.postHtml(lightemitControlCode,userName);
+//        }
+//    }
+//
+//    /*
+//    led涓婁紶瑙嗛
+//     */
+//
+//    @Async("taskExecutor")
+//    public void videoUpload(String lightemitControlCode, String filename, String path, String userName) throws IOException {
+//        //鑾峰彇灞忓箷瀹�
+//        String screenWidth = lightemitUtils.getScreenWidth(lightemitControlCode);
+//        String screenHeight = lightemitUtils.getScreenHeight(lightemitControlCode);
+//
+//        //鍙戦�佽棰戣嚦寮�鍙戞澘骞舵挱鏀�
+//        lightemitUtils.postVideo(screenWidth, screenHeight, filename, lightemitControlCode);
+//
+//        //娓呭睆
+//        lightemitUtils.clear(lightemitControlCode);
+//
+//    }
+//
+//    /**
+//     * LED涓婁紶鍗曡瀛楀箷
+//     */
+//    @Async("taskExecutor")
+//    public Boolean subTitleSet(SubTitleSetEntity subTitleSetEntity, String path, String userName) {
+//        if(subTitleSetEntity == null){
+//            return false;
+//        }
+//        if(subTitleSetEntity.getDirection().equals(Constant.LEFT) || subTitleSetEntity.getDirection().equals(Constant.RIGHT)){
+//            //瀛楀箷妯悜婊氬姩
+//            this.BuildHorizonSingSubTitleText(subTitleSetEntity);
+//        }else if (subTitleSetEntity.getDirection().equals(Constant.UP) || subTitleSetEntity.getDirection().equals(Constant.DOWN)){
+//            //瀛楀箷绾靛悜婊氬姩
+//            try {
+//                this.BuildVerticalSingSubTitleText(subTitleSetEntity, path, userName);
+//            }catch (IOException e){
+//                return false;
+//            }
+//        }
+//        return true;
+//    }
+//
+//    /**
+//     * LED涓婁紶澶氳瀛楀箷
+//     */
+//    @Async("taskExecutor")
+//    public Boolean subMultiTitleSet(SubTitleSetEntity subTitleSetEntity, String path, String userName) {
+//        try{
+//            this.BuildVerticalMultiSubTitleText(subTitleSetEntity, path, userName);
+//            return true;
+//        }catch (IOException e){
+//            return false;
+//        }
+//    }
+//
+//    /*
+//    鍒犻櫎
+//     */
+//
+//   /* public void deleteByIds(List<Long> lightemitIds) {
+//        this.removeByIds(lightemitIds);
+//        //鍒犻櫎鍏崇郴琛ㄤ腑鐨勬暟鎹�
+//        poleStreetlightLightemitService.remove(
+//                new UpdateWrapper<PoleStreetlightLightemitEntity>().in("lightemit_id", lightemitIds.toArray()));
+//    }*/
+//
+//    /*
+//    鐔欒瑙嗛璁剧疆
+//     */
+//
+//    @Async("taskExecutor")
+//    public void videoXixunPlayer(String lightemitControlCode, String ip, String filename, Long filesize, Integer videoTime) {
+//        //鑾峰彇灞忓箷瀹�
+//        Integer screenWidth = Integer.valueOf(lightemitUtils.getScreenWidth(lightemitControlCode));
+//        Integer screenHeight = Integer.valueOf(lightemitUtils.getScreenHeight(lightemitControlCode));
+//        Source source = new Source();
+//        Layer layer = new Layer();
+//        Program pro = new Program();
+//        TaskItem items = new TaskItem();
+//        ProgramsTask task = new ProgramsTask();
+//        Command command = new Command();
+//        XixunPlayer xixun = new XixunPlayer();
+//        source.set_id(UUID.randomUUID().toString());//鎵�鏈塤id閮藉彲鐢║UID闅忔満鐢熸垚
+//        source.setId(filename);//璇锋眰澶存嫾鎺ヨID涓鸿璧勬簮鐨勫畬鏁翠笅杞藉湴鍧�
+//        source.set_type("Video");	//璁剧疆璧勬簮绫诲瀷锛屽叾浠栬祫婧愮被鍨嬭鍙傝�儀ixunplayer鑺傜洰json璇存槑鏂囨。
+//        source.setFileExt(".mp4");	//璧勬簮鍚庣紑鍚�
+//        source.setHeight(screenHeight);		//璧勬簮楂樺害
+//        source.setWidth(screenWidth);		//璧勬簮瀹藉害
+//        source.setLeft(0);			//璺濆乏
+//        source.setMd5("dd135d5d2d44d619a542db773ab529a4");
+//        source.setMime("video/mp4");
+//        source.setName(filename);
+//        source.setPlayTime(0);	//鎾斁璧峰鏃堕棿
+//        source.setSize(filesize);	//璧勬簮瀛楄妭鏁帮紝瑕佺簿鍑�
+//        source.setTimeSpan(videoTime);		//璇ヨ祫婧愭挱鏀炬椂闀�
+//        source.setTop(0);			//璺濋《
+//        List<Source> list=new ArrayList<Source>();
+//        list.add(source);
+//        layer.setSources(list);
+//        pro.set_id(UUID.randomUUID().toString());
+//        pro.setHeight(screenHeight);		//鑺傜洰楂樺害
+//        List<Layer> list1=new ArrayList<Layer>();
+//        list1.add(layer);
+//        pro.setLayers(list1);
+//        pro.setName("demo");	//鑺傜洰鍚嶇О
+//        pro.setOthers(true);//濡傛灉涓簍rue锛屽垯璇ヨ妭鐩潵鑷涓夋柟鎺ュ彛锛屼笉鏄潵鑷垜浠嚜宸辩殑web锛屼簩娆″紑鍙戣鍔″繀璧嬪�间负true
+//        pro.setTotalSize(filesize);	//鎵�鏈夎祫婧愭�诲瓧鑺傛暟
+//        pro.setVersion(0);			//楂樼骇鑺傜洰=0锛岀畝鏄撹妭鐩�=2
+//        pro.setWidth(screenWidth);		//鑺傜洰瀹藉害
+//        items.set_id(UUID.randomUUID().toString());
+//        items.set_program(pro);
+//        items.setRepeatTimes(1);
+//        items.setSchedules(null);//瀹氭椂娈碉紝涓嶅仛瀹氭椂鍙负null
+//        task.set_id(UUID.randomUUID().toString());
+//        task.setName("杩欐槸涓�涓ず渚�");
+//        List<TaskItem> list2=new ArrayList<TaskItem>();
+//        list2.add(items);
+//        task.setItems(list2);
+//        command.setId(UUID.randomUUID().toString());
+//        //杩欓噷鏄笅鏂圭殑post鍥炶皟鍦板潃锛岄渶瑕佷慨鏀笽P鍦板潃
+//        command.setNotificationURL("http://" + ip + ":" + port + "/machine-fast/serv/download/getJSON");
+//        //璧勬簮涓嬭浇閾炬帴鐨勮姹傚ご
+//        command.setPreDownloadURL("http://" + ip + ":" + port + "/machine-fast/serv/download/downloadFile/");
+//        command.setTask(task);
+//        xixun.set_id(UUID.randomUUID().toString());
+//        xixun.setCommand(command);
+//        xixun.setType("commandXixunPlayer");	//鍛戒护鍥哄畾绫诲瀷锛屼笉鍙洿鏀�
+//        String jsondata = new Gson().toJson(xixun);
+//        lightemitUtils.clear(lightemitControlCode);
+//        this.updateRequestBody(lightemitControlCode,jsondata);
+//        lightemitUtils.post(realtimeServerBean.getCommand() + lightemitControlCode,jsondata);
+//    }
+//
+//    /*
+//    鎺ㄩ�佸ぉ姘旀暟鎹�
+//     */
+//
+//    //@Async("taskExecutor")
+//   /* public Boolean pushWeather(String lightemitControlCode, PoleSensorEntity sensorEntity, PoleStreetlightEntity streetlightEntity) {
+//        if(StringUtils.isBlank(lightemitControlCode)){
+//            return Boolean.valueOf(false);
+//        }
+//        Integer screenHeight = Integer.parseInt(lightemitUtils.getScreenHeight(lightemitControlCode));
+//        String size = String.valueOf(screenHeight/18);
+//        //瀛楀箷涓讳綋鎷兼帴
+//        String body =
+//                "<head><style type=\"text/css\">body{background-color:#000;}</style></head>" +
+//                        "<p style=\"font-size:" + size + "px;line-height:17px;color:#fff\">" +
+//                        (streetlightEntity == null || streetlightEntity.getCity() == null? "": streetlightEntity.getCity().replace("甯�", "")) + "<br/>" +
+//                        "娓╁害锛�" + (sensorEntity == null || sensorEntity.getTemperature() == null? "-": sensorEntity.getTemperature()) + "鈩�<br/>" +
+//                        "婀垮害锛�" + (sensorEntity == null || sensorEntity.getHumidity() == null? "-": sensorEntity.getHumidity()) + "%RH<br/>" +
+//                        "浜害锛�" + (sensorEntity == null || sensorEntity.getBrightness() == null? "-": sensorEntity.getBrightness()) + "lux<br/>" +
+//                        "椋庨�燂細" + (sensorEntity == null || sensorEntity.getWindSpeed() == null? "-": sensorEntity.getWindSpeed()) + "m/s<br/>" +
+//                        "CO2锛�" + (sensorEntity == null || sensorEntity.getEco2() == null? "-": sensorEntity.getEco2()) + "ppm<br/>" +
+//                        "鐢查啗锛�" + (sensorEntity == null || sensorEntity.getEch2o() == null? "-": sensorEntity.getEch2o()) + "mg/m鲁<br/>" +
+//                        "TVOC锛�" + (sensorEntity == null || sensorEntity.getTvoc() == null? "-": sensorEntity.getTvoc()) + "mg/m鲁<br/>" +
+//                        "PM25锛�" + (sensorEntity == null || sensorEntity.getPm25() == null? "-": sensorEntity.getPm25()) + "mg/m鲁<br/>" +
+//                        "PM10锛�" + (sensorEntity == null || sensorEntity.getPm10() == null? "-": sensorEntity.getPm10()) + "mg/m鲁<br/>";
+//
+//        //缁勮璇锋眰鍙傛暟
+//        SubTitleSet subTitleSet = new SubTitleSet();
+//        subTitleSet.html = body;
+//        subTitleSet.num = 1;
+//
+//        //娓呭睆鎿嶄綔
+//        lightemitUtils.clear(lightemitControlCode);
+//        //娓呴櫎鎾斁鍒楄〃
+//        lightemitUtils.clearVideoPlay(lightemitControlCode);
+//        //娓呴櫎鑺傜洰鍒楄〃
+//        lightemitUtils.clearPlayerTask(lightemitControlCode);
+//        try{
+//            lightemitUtils.subTitleSet(subTitleSet, lightemitControlCode, false);
+//            return true;
+//        }catch (Exception e){
+//            return false;
+//        }finally {
+//            //涓�鍒嗛挓鍚庢竻闄ゅ睆骞�
+//            new Timer().schedule(new TimerTask() {
+//                @Override
+//                public void run() {
+//                    lightemitUtils.clear(lightemitControlCode);
+//                    //娓呴櫎鎾斁鍒楄〃
+//                    lightemitUtils.clearVideoPlay(lightemitControlCode);
+//                    //娓呴櫎鑺傜洰鍒楄〃
+//                    lightemitUtils.clearPlayerTask(lightemitControlCode);
+//                    //鎺ㄩ�佹渶鍚庡懡浠�
+//                    lightemitUtils.sendLastCommand(lightemitControlCode);
+//                }
+//            }, 60*1000);
+//        }
+//    }*/
+//
+//    /*
+//    鏇存柊璇锋眰鏁版嵁
+//     */
+//
+//    public void updateRequestBody(String ledCode, String postBody) {
+//        baseMapper.updateRequestBody(ledCode, postBody);
+//    }
+//
+//    /*
+//    鏍规嵁led灞忕紪鐮佽幏鍙栫伅鏉嗘墍鏈変俊鎭�
+//     */
+//
+//    public PoleStreetlightEntity getStreetlightByLedCode(String ledCode) {
+//        return baseMapper.getStreetlightByLedCode(ledCode);
+//    }
+//
+//    /*
+//    鏍规嵁led灞忕紪鐮佽缃煶閲�
+//     */
+//
+//    @Async("taskExecutor")
+//    public void setVolume(String lightemitControlCode, Integer volume) {
+//        lightemitUtils.setVoiume(lightemitControlCode, volume);
+//    }
+//
+//
+//    public List<PoleLightemitEntity> listOfStreetlight(String streetlightId) {
+//        return baseMapper.listOfStreetlight(streetlightId);
+//    }
+//
+//
+//    public List<PoleLightemitEntity> selectLedByStreetlightId(String streetlightId) {
+//        return baseMapper.getLedByStreetlightId(streetlightId);
+//    }
+//
+//    /*
+//        涓婁紶姘村钩婊氬姩鍗曡瀛楀箷
+//         */
+//    private void BuildHorizonSingSubTitleText(SubTitleSetEntity subTitleSetEntity){
+//        //鎷艰LED灞忓箷璁剧疆璇锋眰body
+//        SubTitleSet subTitleSet = new SubTitleSet();
+//        subTitleSet.num = subTitleSetEntity.getNum() != null ? subTitleSetEntity.getNum(): subTitleSet.num;
+//        subTitleSet.interval = subTitleSetEntity.getInterval() != null ? subTitleSetEntity.getInterval(): subTitleSet.interval;
+//        subTitleSet.step = subTitleSetEntity.getStep() != null ? subTitleSetEntity.getStep(): subTitleSet.step;
+//        subTitleSet.direction = subTitleSetEntity.getDirection() != null ? subTitleSetEntity.getDirection(): subTitleSet.direction;
+//        subTitleSet.align = subTitleSetEntity.getAlign() != null ? subTitleSetEntity.getAlign(): subTitleSet.align;
+//        //鎷兼帴html 鑳屾櫙榛樿鏄捐壊涓虹櫧鑹�
+//        subTitleSet.html = "<head><style type=\"text/css\">body{background-color:" +
+//                (subTitleSetEntity.getColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getColor())? subTitleSetEntity.getColor(): "#000000") +
+//                "}</style></head><i style=\"color:" +
+//                (subTitleSetEntity.getFontColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontColor())? subTitleSetEntity.getFontColor(): "#ffffff")
+//                + "; font-size: " +
+//                (subTitleSetEntity.getFontSize() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontSize())? subTitleSetEntity.getFontSize(): "1")
+//                + "em\">" + subTitleSetEntity.getContent() + "</i>";
+//
+//        //鑾峰彇鎵�鏈塴ed鏁版嵁
+//        Collection poleLightemitControllers = this.listByIds(Arrays.asList(subTitleSetEntity.getId()));
+//        if (!poleLightemitControllers.isEmpty()) {
+//            Iterator iterator = poleLightemitControllers.iterator();
+//            while (iterator.hasNext()){
+//                PoleLightemitEntity poleLightemitEntity = (PoleLightemitEntity) iterator.next();
+//                //娓呭睆鎿嶄綔
+//                lightemitUtils.clear(poleLightemitEntity.getLightemitControlCode());
+//                //娓呴櫎鎾斁鍒楄〃
+//                lightemitUtils.clearVideoPlay(poleLightemitEntity.getLightemitControlCode());
+//                //娓呴櫎鑺傜洰鍒楄〃
+//                lightemitUtils.clearPlayerTask(poleLightemitEntity.getLightemitControlCode());
+//                //鍙戦�佸瓧骞曡缃姹�
+//                lightemitUtils.subTitleSet(subTitleSet, poleLightemitEntity.getLightemitControlCode(),true);
+//            }
+//        }
+//    }
+//
+//    /*
+//    涓婁紶鍨傜洿婊氬姩鍗曡瀛楀箷
+//     */
+//    private void BuildVerticalSingSubTitleText(SubTitleSetEntity subTitleSetEntity, String path, String userName) throws IOException {
+//        //html鍦板潃
+//        //鑾峰彇鎵�鏈塴ed鏁版嵁
+//        Collection poleLightemitControllers = this.listByIds(Arrays.asList(subTitleSetEntity.getId()));
+//        if (!poleLightemitControllers.isEmpty()) {
+//            Iterator iterator = poleLightemitControllers.iterator();
+//            while (iterator.hasNext()) {
+//                PoleLightemitEntity poleLightemitEntity = (PoleLightemitEntity) iterator.next();
+//
+//                String lightemitControlCode = poleLightemitEntity.getLightemitControlCode();
+//
+//                //鑾峰彇灞忓箷瀹�
+//                Integer screenWidth = Integer.valueOf(lightemitUtils.getScreenWidth(lightemitControlCode));
+//                Integer screenHeight = Integer.valueOf(lightemitUtils.getScreenHeight(lightemitControlCode));
+//
+//                String filenameTemp = path + userName + "_"+ lightemitControlCode + ".html";
+//                File htmlFile = new File(filenameTemp);
+//                if (!htmlFile.exists() || htmlFile.delete()) {
+//                    htmlFile.createNewFile();
+//                }
+//
+//                //鑻ュ悜涓嬫粴鍔紝鏂囧瓧椤哄簭鐩稿弽
+//                if(Constant.DOWN.equals(subTitleSetEntity.getDirection())){
+//                    subTitleSetEntity.setContent(StringUtils.reverse(subTitleSetEntity.getContent()));
+//                }
+//
+//                Map<String, Object> params = new HashMap<>();
+//                params.put("direction", subTitleSetEntity.getDirection());
+//                params.put("screenWidth", screenWidth);
+//                params.put("screenHeight", screenHeight);
+//                params.put("fontSize", subTitleSetEntity.getFontSize() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontSize())? subTitleSetEntity.getFontSize(): "1");
+//                params.put("align", subTitleSetEntity.getAlign());
+//                params.put("fontColor", subTitleSetEntity.getFontColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontColor())? subTitleSetEntity.getFontColor(): "#ffffff");
+//                params.put("backgroundColor", subTitleSetEntity.getColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getColor())? subTitleSetEntity.getColor(): "#000000");
+//                params.put("interval", subTitleSetEntity.getInterval() != null? subTitleSetEntity.getInterval(): 50);
+//                params.put("step", subTitleSetEntity.getStep() != null? subTitleSetEntity.getStep(): 1);
+//                params.put("num", subTitleSetEntity.getNum() != null? subTitleSetEntity.getNum(): -1);
+//                params.put("contentArray", subTitleSetEntity.getContent().toCharArray());
+//
+//                String body = new HtmlTemplateUtils().renderPath("classpath:templates/lightemitTemplates/buildVerticalSingSubTitleTemplates.html", params);
+//
+//                boolean flag = new FileUtil().writeToFile(body, filenameTemp);
+//
+//                if(flag){
+//                    //娓呭睆鎿嶄綔
+//                    lightemitUtils.clear(lightemitControlCode);
+//                    //娓呴櫎鎾斁鍒楄〃
+//                    lightemitUtils.clearVideoPlay(lightemitControlCode);
+//                    //娓呴櫎鑺傜洰鍒楄〃
+//                    lightemitUtils.clearPlayerTask(lightemitControlCode);
+//                    //鎺ㄩ��
+//                    lightemitUtils.postHtmlUseNginx(lightemitControlCode,userName);
+//                }
+//            }
+//        }
+//    }
+//
+//
+//    /*
+//    涓婁紶鍨傜洿婊氬姩澶氳瀛楀箷
+//     */
+//    private void BuildVerticalMultiSubTitleText(SubTitleSetEntity subTitleSetEntity, String path, String userName) throws IOException {
+//        //html鍦板潃
+//        //鑾峰彇鎵�鏈塴ed鏁版嵁
+//        Collection poleLightemitControllers = this.listByIds(Arrays.asList(subTitleSetEntity.getId()));
+//        if (!poleLightemitControllers.isEmpty()) {
+//            Iterator iterator = poleLightemitControllers.iterator();
+//            while (iterator.hasNext()) {
+//                PoleLightemitEntity poleLightemitEntity = (PoleLightemitEntity) iterator.next();
+//
+//                String lightemitControlCode = poleLightemitEntity.getLightemitControlCode();
+//
+//                //鑾峰彇灞忓箷瀹�
+//                Integer screenWidth = Integer.valueOf(lightemitUtils.getScreenWidth(lightemitControlCode));
+//                Integer screenHeight = Integer.valueOf(lightemitUtils.getScreenHeight(lightemitControlCode));
+//
+//                String filenameTemp = path + userName + "_" + lightemitControlCode + ".html";
+//                File htmlFile = new File(filenameTemp);
+//                if (!htmlFile.exists() || htmlFile.delete()) {
+//                    htmlFile.createNewFile();
+//                }
+//
+//                Map<String, Object> params = new HashMap<>();
+//                params.put("direction", subTitleSetEntity.getDirection());
+//                params.put("screenWidth", screenWidth);
+//                params.put("screenHeight", screenHeight);
+//                params.put("fontSize", subTitleSetEntity.getFontSize() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontSize())? subTitleSetEntity.getFontSize(): "1");
+//                params.put("align", subTitleSetEntity.getAlign());
+//                params.put("fontColor", subTitleSetEntity.getFontColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontColor())? subTitleSetEntity.getFontColor(): "#ffffff");
+//                params.put("backgroundColor", subTitleSetEntity.getColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getColor())? subTitleSetEntity.getColor(): "#000000");
+//                params.put("interval", subTitleSetEntity.getInterval() != null? subTitleSetEntity.getInterval(): 50);
+//                params.put("step", subTitleSetEntity.getStep() != null? subTitleSetEntity.getStep(): 1);
+//                params.put("num", subTitleSetEntity.getNum() != null? subTitleSetEntity.getNum(): -1);
+//                params.put("contentArray", subTitleSetEntity.getContent().split("\n"));
+//
+//                String body = new HtmlTemplateUtils().renderPath("classpath:templates/lightemitTemplates/buildVerticalSingSubTitleTemplates.html", params);
+//
+//                boolean flag = new FileUtil().writeToFile(body, filenameTemp);
+//
+//                if (flag) {
+//                    //娓呭睆鎿嶄綔
+//                    lightemitUtils.clear(lightemitControlCode);
+//                    //娓呴櫎鎾斁鍒楄〃
+//                    lightemitUtils.clearVideoPlay(lightemitControlCode);
+//                    //娓呴櫎鑺傜洰鍒楄〃
+//                    lightemitUtils.clearPlayerTask(lightemitControlCode);
+//                    //鎺ㄩ��
+//                    lightemitUtils.postHtmlUseNginx(lightemitControlCode, userName);
+//                }
+//            }
+//        }
+//    }
+//
+//    @Override
+//    public void xixunplaySetting(String lightemitControlCode) {
+//        //鑾峰彇灞忓箷瀹�
+////        Integer screenWidth = Integer.valueOf(lightemitUtils.getScreenWidth(lightemitControlCode));
+////        Integer screenHeight = Integer.valueOf(lightemitUtils.getScreenHeight(lightemitControlCode));
+////        Source source = new Source();
+////        Layer layer = new Layer();
+////        Program pro = new Program();
+////        TaskItem items = new TaskItem();
+////        ProgramsTask task = new ProgramsTask();
+////        Command payload = new Command();
+////        XixunPlayer xixun = new XixunPlayer();
+////        source.set_id(UUID.randomUUID().toString());//鎵�鏈塤id閮藉彲鐢║UID闅忔満鐢熸垚
+////        source.setId(filename);//璇锋眰澶存嫾鎺ヨID涓鸿璧勬簮鐨勫畬鏁翠笅杞藉湴鍧�
+////        source.set_type("Video");	//璁剧疆璧勬簮绫诲瀷锛屽叾浠栬祫婧愮被鍨嬭鍙傝�儀ixunplayer鑺傜洰json璇存槑鏂囨。
+////        source.setFileExt(".mp4");	//璧勬簮鍚庣紑鍚�
+////        source.setHeight(screenHeight);		//璧勬簮楂樺害
+////        source.setWidth(screenWidth);		//璧勬簮瀹藉害
+////        source.setLeft(0);			//璺濆乏
+////        source.setMd5("dd135d5d2d44d619a542db773ab529a4");
+////        source.setMime("video/mp4");
+////        source.setName(filename);
+////        source.setPlayTime(0);	//鎾斁璧峰鏃堕棿
+////        source.setSize(filesize);	//璧勬簮瀛楄妭鏁帮紝瑕佺簿鍑�
+////        source.setTimeSpan(videoTime);		//璇ヨ祫婧愭挱鏀炬椂闀�
+////        source.setTop(0);			//璺濋《
+////        List<Source> list = new ArrayList<Source>();
+////        list.add(source);
+////        layer.setSources(list);
+////        pro.set_id(UUID.randomUUID().toString());
+////        pro.setHeight(screenHeight);		//鑺傜洰楂樺害
+////        List<Layer> list1=new ArrayList<Layer>();
+////        list1.add(layer);
+////        pro.setLayers(list1);
+////        pro.setName("demo");	//鑺傜洰鍚嶇О
+////        pro.setOthers(true);//濡傛灉涓簍rue锛屽垯璇ヨ妭鐩潵鑷涓夋柟鎺ュ彛锛屼笉鏄潵鑷垜浠嚜宸辩殑web锛屼簩娆″紑鍙戣鍔″繀璧嬪�间负true
+////        pro.setTotalSize(filesize);	//鎵�鏈夎祫婧愭�诲瓧鑺傛暟
+////        pro.setVersion(0);			//楂樼骇鑺傜洰=0锛岀畝鏄撹妭鐩�=2
+////        pro.setWidth(screenWidth);		//鑺傜洰瀹藉害
+////        items.set_id(UUID.randomUUID().toString());
+////        items.set_program(pro);
+////        items.setRepeatTimes(1);
+////        items.setSchedules(null);//瀹氭椂娈碉紝涓嶅仛瀹氭椂鍙负null
+////        task.set_id(UUID.randomUUID().toString());
+////        task.setName("杩欐槸涓�涓ず渚�");
+////        List<TaskItem> list2=new ArrayList<TaskItem>();
+////        list2.add(items);
+////        task.setItems(list2);
+////        payload.setId(UUID.randomUUID().toString());
+////        //杩欓噷鏄笅鏂圭殑post鍥炶皟鍦板潃锛岄渶瑕佷慨鏀笽P鍦板潃
+////        payload.setNotificationURL("http://" + ip + ":" + port + "/machine-fast/serv/download/getJSON");
+////        //璧勬簮涓嬭浇閾炬帴鐨勮姹傚ご
+////        payload.setPreDownloadURL("http://" + ip + ":" + port + "/machine-fast/serv/download/downloadFile/");
+////        payload.setTask(task);
+////        xixun.set_id(UUID.randomUUID().toString());
+////        xixun.setCommand(payload);
+////        xixun.setType("commandXixunPlayer");	//鍛戒护鍥哄畾绫诲瀷锛屼笉鍙洿鏀�
+////        String jsondata = new Gson().toJson(xixun);
+////        lightemitUtils.clear(lightemitControlCode);
+////        this.updateRequestBody(lightemitControlCode,jsondata);
+////        lightemitUtils.post(realtimeServerBean.getCommand() + lightemitControlCode,jsondata);
+//    }
+//}
\ No newline at end of file
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/Constant.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/Constant.java
new file mode 100644
index 0000000..fc44f61
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/Constant.java
@@ -0,0 +1,252 @@
+package com.sandu.ximon.admin.utils;
+
+/**
+ * 甯搁噺
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+public class Constant {
+	/** 瓒呯骇绠$悊鍛業D 涓庤鑹睮D*/
+	public static final int SUPER_ADMIN = 1;
+    /** 瓒呯骇绠$悊鍛業D 涓庤鑹睮D*/
+    public static final int ADMIN = 2;
+    /** 瓒呯骇绠$悊鍛業D 涓庤鑹睮D*/
+    public static final int USER = 3;
+    /**
+     * 褰撳墠椤电爜
+     */
+    public static final String PAGE = "page";
+    /**
+     * 姣忛〉鏄剧ず璁板綍鏁�
+     */
+    public static final String LIMIT = "limit";
+    /**
+     * 鎺掑簭瀛楁
+     */
+    public static final String ORDER_FIELD = "sidx";
+    /**
+     * 鎺掑簭鏂瑰紡
+     */
+    public static final String ORDER = "order";
+    /**
+     *  鍗囧簭
+     */
+    public static final String ASC = "asc";
+    /**
+     * 璺伅绫诲瀷
+     */
+    public static final int TYPE_LIGHT = 54448;
+    /**
+     * 鎺х伅瀹氭椂Tesk
+     */
+    public static final String LIGHT_BATCH_TESK = "lightbatchTesk";
+    /**
+     * 宸�
+     */
+    public static final String LEFT = "left";
+    /**
+     * 鍙�
+     */
+    public static final String RIGHT = "right";
+    /**
+     * 涓�
+     */
+    public static final String UP = "up";
+    /**
+     * 涓�
+     */
+    public static final String DOWN = "down";
+    /**
+     * 闈欐��
+     */
+    public static final String STATIC = "static";
+	/**
+	 * 鑿滃崟绫诲瀷
+	 * 
+	 * @author chenshun
+	 * @email sunlightcs@gmail.com
+	 * @date 2016骞�11鏈�15鏃� 涓嬪崍1:24:29
+	 */
+    public enum MenuType {
+        /**
+         * 鐩綍
+         */
+    	CATALOG(0),
+        /**
+         * 鑿滃崟
+         */
+        MENU(1),
+        /**
+         * 鎸夐挳
+         */
+        BUTTON(2);
+
+        private int value;
+
+        MenuType(int value) {
+            this.value = value;
+        }
+
+        public int getValue() {
+            return value;
+        }
+    }
+
+    /*
+    瀹氭椂鍒楄〃绫诲瀷
+     */
+    public enum ScheduleType {
+
+        /*
+        缁�
+         */
+        GROUP(0),
+        /*
+        鍒�
+         */
+        COLUMN(1),;
+
+        private int value;
+
+        ScheduleType(int value) {
+            this.value = value;
+        }
+
+        public int getValue() {
+            return value;
+        }
+    }
+    
+    /**
+     * 瀹氭椂浠诲姟鐘舵��
+     * 
+     * @author chenshun
+     * @email sunlightcs@gmail.com
+     * @date 2016骞�12鏈�3鏃� 涓婂崍12:07:22
+     */
+    public enum ScheduleStatus {
+        /**
+         * 姝e父
+         */
+    	NORMAL(0),
+        /**
+         * 鏆傚仠
+         */
+    	PAUSE(1);
+
+        private int value;
+
+        ScheduleStatus(int value) {
+            this.value = value;
+        }
+        
+        public int getValue() {
+            return value;
+        }
+    }
+
+    /**
+     * 浜戞湇鍔″晢
+     */
+    public enum CloudService {
+        /**
+         * 涓冪墰浜�
+         */
+        QINIU(1),
+        /**
+         * 闃块噷浜�
+         */
+        ALIYUN(2),
+        /**
+         * 鑵捐浜�
+         */
+        QCLOUD(3);
+
+        private int value;
+
+        CloudService(int value) {
+            this.value = value;
+        }
+
+        public int getValue() {
+            return value;
+        }
+    }
+
+    /**
+     * led瀛楀箷绫诲瀷
+     */
+    public enum SubTitleType {
+
+        /**
+         * 鍗曡鏂囨湰
+         */
+        SINGLE(0),
+
+        /**
+         * 澶氳鏂囨湰
+         */
+        MULTI(1);
+
+        private int value;
+
+        SubTitleType(int value) {
+            this.value = value;
+        }
+
+        public int getValue() {
+            return value;
+        }
+    }
+
+    public enum LinkType {
+        /**
+         * 鏈夌嚎杩炴帴
+         */
+        WIRED(0),
+        /**
+         * nb杩炴帴
+         */
+        NBLINK(1),
+        /**
+         * MQTT杩炴帴
+         */
+        MQTTLINK(2),
+        /**
+         *  MQTT涓插彛涓绘澘绫诲瀷
+         */
+        MQTT_MAINBOARDLINK(3);
+
+        private int value;
+
+        LinkType(int value) {
+            this.value = value;
+        }
+
+        public int getValue() {
+            return value;
+        }
+    }
+
+    // led鑺傜洰鍗曚釜璧勬簮绫诲瀷
+    public enum ledProgramFileType {
+        /*
+        鍥剧墖
+         */
+        IMAGE(0),
+        /*
+        瑙嗛
+         */
+        VIDEO(1);
+
+        private int value;
+        ledProgramFileType(int value) {
+            this.value = value;
+        }
+
+        public int getValue() {
+            return value;
+        }
+    }
+
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/FileUtil.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/FileUtil.java
new file mode 100644
index 0000000..f03b484
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/FileUtil.java
@@ -0,0 +1,89 @@
+package com.sandu.ximon.admin.utils;
+
+import java.io.*;
+
+/**
+ * @program: machine-fast
+ * @description: 鏂囦欢鎿嶄綔绫�
+ * @author: YSS
+ * @create: 2019-04-24 13:58
+ **/
+public class FileUtil {
+
+    /**
+     * 瀛楁鍐欏叆鏂囦欢
+     * @param newStr        瀛楁
+     * @param filePath      鏂囦欢璺緞
+     * @return
+     * @throws
+     */
+    public boolean writeToFile(String newStr,String filePath) throws IOException {
+
+        OutputStream outputStream = null;
+        OutputStreamWriter outputStreamWriter = null;
+        BufferedWriter bufferedWriter = null;
+
+        try{
+            outputStream = new FileOutputStream(new File(filePath));
+            outputStreamWriter = new OutputStreamWriter(outputStream, "utf-8");
+            bufferedWriter = new BufferedWriter(outputStreamWriter);
+            bufferedWriter.write(newStr);
+            bufferedWriter.flush();
+        }catch (Exception e){
+            return false;
+        }finally {
+            try{
+                if(bufferedWriter != null){
+                    bufferedWriter.close();
+                }
+                if(outputStreamWriter != null){
+                    outputStreamWriter.close();
+                }
+                if(outputStream != null){
+                    outputStream.close();
+                }
+                return true;
+            }catch (IOException e){
+                return false;
+            }
+        }
+    }
+
+    public byte[] fileToByte(String filePath){
+        byte[] buffer = null;
+        File file = new File(filePath);
+        FileInputStream fileInputStream = null;
+        ByteArrayOutputStream byteArrayOutputStream = null;
+
+
+        try {
+            fileInputStream = new FileInputStream(file);
+            byteArrayOutputStream = new ByteArrayOutputStream();
+
+            byte[] b = new byte[1024];
+
+            int n;
+            while ((n = fileInputStream.read(b)) != -1){
+                byteArrayOutputStream.write(b, 0, n);
+            }
+            buffer = byteArrayOutputStream.toByteArray();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if(byteArrayOutputStream != null){
+                    byteArrayOutputStream.close();
+                }
+                if(fileInputStream != null){
+                    fileInputStream.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+        return buffer;
+    }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/HtmlTemplateUtils.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/HtmlTemplateUtils.java
new file mode 100644
index 0000000..551050c
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/HtmlTemplateUtils.java
@@ -0,0 +1,62 @@
+package com.sandu.ximon.admin.utils;
+
+
+import java.io.*;
+import java.util.Map;
+
+import org.springframework.core.io.ClassPathResource;
+import org.thymeleaf.TemplateEngine;
+import org.thymeleaf.context.Context;
+
+/**
+ * @program: machine-fast
+ * @description: thymeleaf娓叉煋宸ュ叿绫�
+ * @author: YSS
+ * @create: 2019-09-09 17:55
+ **/
+public class HtmlTemplateUtils {
+
+    private final TemplateEngine templateEngine = new TemplateEngine();
+
+    // 瑙f瀽妯℃澘
+    public String render(String template, Map<String, Object> params){
+        Context context = new Context();
+        context.setVariables(params);
+        return templateEngine.process(template, context);
+    }
+
+    // 鏂囦欢璇诲彇鍖呰鏂规硶
+    public String renderPath(String path, Map<String, Object> params){
+        InputStream inputStream = null;
+        InputStreamReader inputStreamReader = null;
+        BufferedReader bufferedReader = null;
+        String body = "";
+        try {
+//            File file = ResourceUtils.getFile(path);
+            ClassPathResource classPathResource = new ClassPathResource(path);
+            inputStream = classPathResource.getInputStream();
+            inputStreamReader = new InputStreamReader(inputStream, "utf-8");
+            bufferedReader = new BufferedReader(inputStreamReader);
+            String s = "";
+            while ((s = bufferedReader.readLine()) != null){
+                body += s + "\n";
+            }
+            return this.render(body, params);
+        } catch (IOException e) {
+            return body;
+        }finally {
+            try{
+                if(bufferedReader != null){
+                    bufferedReader.close();
+                }
+                if(inputStreamReader != null){
+                    inputStreamReader.close();
+                }
+                if(inputStream != null){
+                    inputStream.close();
+                }
+            }catch (IOException e){
+            }
+        }
+    };
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/LightemitUtils.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/LightemitUtils.java
new file mode 100644
index 0000000..0fb8c5b
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/LightemitUtils.java
@@ -0,0 +1,378 @@
+//package com.sandu.ximon.admin.utils;
+//
+//import com.alibaba.fastjson.JSONObject;
+//import com.google.gson.Gson;
+//import com.sandu.ximon.admin.config.NginxConfigBean;
+//import com.sandu.ximon.admin.config.RealtimeServerBean;
+//import com.sandu.ximon.admin.service.PoleLightemitService;
+//import com.sandu.ximon.admin.utils.request.*;
+//import com.sandu.ximon.dao.domain.PoleLightemitEntity;
+//import com.squareup.okhttp.*;
+//import org.apache.commons.lang.StringEscapeUtils;
+//import org.apache.commons.lang.StringUtils;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.context.ApplicationContext;
+//import org.springframework.stereotype.Component;
+//
+//import java.io.IOException;
+//
+//@Component
+//public class LightemitUtils {
+//    @Autowired
+//    RealtimeServerBean realtimeServerBean;
+//
+//    PoleLightemitService poleLightemitService;
+//    @Autowired
+//    ApplicationContext applicationContext;
+//    @Autowired
+//    NginxConfigBean nginxConfigBean;
+//    //body灏佽缂栫爜
+//    private final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
+//
+//    private OkHttpClient client = new OkHttpClient();
+//
+//
+//    public void init(){
+//        //閲嶆柊鑾峰彇鍗曚緥
+//        poleLightemitService = applicationContext.getBean(PoleLightemitService.class);
+//    }
+//    /**
+//     * post璇锋眰灏佽鏂规硶
+//     * @param url url
+//     * @param json body
+//     * @return
+//     */
+//    public String post(String url, String json){
+//        RequestBody body = RequestBody.create(JSON, json);
+//        Request request = new Request.Builder()
+//                .url(url)
+//                .post(body)
+//                .build();
+//        try {
+//            Response response = client.newCall(request).execute();
+//            return response.body().string();
+//        } catch (IOException e) {
+//            LogUtils.error(e.getMessage());
+//            return "";
+//        }
+//    }
+//
+//    /**
+//     * 鑾峰彇led灞忓搴�
+//     * @param ledCode led灞忕紪鍙�
+//     * @return
+//     */
+//    public String getScreenWidth(String ledCode){
+//        String postBody = new Gson().toJson(new GetScreenWidth());
+//        //璇锋眰鍦板潃
+//        String url = realtimeServerBean.getCommand() + ledCode;
+//        //璇锋眰
+//        String result =  post(url,postBody);
+//        if(StringUtils.isNotBlank(result)){
+//            try{
+//                return JSONObject.parseObject(result).get("result").toString();
+//            }catch (Exception e){
+//                return "64";
+//            }
+//        }else{
+//            return "64";
+//        }
+//    }
+//
+//    /**
+//     * 鑾峰彇led灞忛珮搴�
+//     * @param ledCode led灞忕紪鍙�
+//     * @return
+//     */
+//    public String getScreenHeight(String ledCode){
+//        String postBody = new Gson().toJson(new GetScreenHeight());
+//        //璇锋眰鍦板潃
+//        String url = realtimeServerBean.getCommand() + ledCode;
+//        //璇锋眰
+//        String result =  post(url,postBody);
+//        if(StringUtils.isNotBlank(result)){
+//            try{
+//                return JSONObject.parseObject(result).get("result").toString();
+//            }catch (Exception e){
+//                return "64";
+//            }
+//        }else{
+//            return "64";
+//        }
+//    }
+//
+//    /**
+//     * 娓呭睆鎿嶄綔
+//     * @param ledCode
+//     */
+//    public void clear(String ledCode){
+//        String postBody = new Gson().toJson(new Clear());
+//        //璇锋眰鍦板潃
+//        String url = realtimeServerBean.getCommand() + ledCode;
+//        //璇锋眰
+////        poleLightemitService.updateRequestBody(ledCode, "");
+//        String result =  post(url,postBody);
+//    }
+//
+//    /**
+//     * html浼犺緭鑷砽ed灞�
+//     * @param ledCode
+//     * @param username
+//     */
+//    public void postHtml(String ledCode, String username){
+//
+//        PostHtml postHtml = new PostHtml(realtimeServerBean.getUrl() + username + "_" + ledCode + ".html");
+//        String postBody = new Gson().toJson(postHtml);
+//
+//        //璇锋眰鍦板潃
+//        String url = realtimeServerBean.getCommand() + ledCode;
+//        //淇濆瓨led鏁版嵁
+//        poleLightemitService.updateRequestBody(ledCode, postBody);
+//        //璇锋眰
+//        String result =  post(url,postBody);
+//    }
+//    /**
+//     * html浼犺緭鑷砽ed灞�, 閫氳繃url鑾峰彇html
+//     * @param ledCode
+//     * @param username
+//     */
+//    public void postHtmlUseNginx(String ledCode, String username){
+//
+//        PostHtml postHtml = new PostHtml(nginxConfigBean.getUrl() + username + "_" + ledCode + ".html");
+//        String postBody = new Gson().toJson(postHtml);
+//
+//        //璇锋眰鍦板潃
+//        String url = realtimeServerBean.getCommand() + ledCode;
+//        //淇濆瓨led鏁版嵁
+//        poleLightemitService.updateRequestBody(ledCode, postBody);
+//        //璇锋眰
+//        String result =  post(url,postBody);
+//    }
+//
+//    /**
+//     * 瑙嗛浼犺緭鑷砽ed灞�
+//     * @param screenWidth
+//     * @param screenHeight
+//     * @param filename
+//     * @param ledCode
+//     */
+//    public void postVideo(String screenWidth, String screenHeight, String filename, String ledCode) {
+//
+//        //led寮�鍙戞澘涓嬭浇瑙嗛璇锋眰body
+//        DownloadFileToLocal downloadFileToLocal = new DownloadFileToLocal();
+//        downloadFileToLocal.url = realtimeServerBean.getUrl() + filename;
+//        downloadFileToLocal.path += filename;
+//
+//        //led寮�鍙戞澘涓嬭浇瑙嗛璇锋眰
+//        this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(downloadFileToLocal));
+//
+//        //led寮�鍙戞澘瑙嗛鍒楄〃璇锋眰body
+//        SetPlayList setPlayList = new SetPlayList();
+//        setPlayList.list[0] = "/data/data/com.xixun.xy.conn/files/local/abc/"+filename;
+////        setPlayList.pathList[0] = "";
+//        try{
+//            setPlayList.width = Integer.valueOf(screenWidth);
+//            setPlayList.height = Integer.valueOf(screenHeight);
+//        }catch (Exception e){
+//            return;
+//        }
+//        String postBody = new Gson().toJson(setPlayList);
+//        //淇濆瓨led鏁版嵁
+//        poleLightemitService.updateRequestBody(ledCode, postBody);
+//        //led寮�鍙戞澘瑙嗛鍒楄〃璇锋眰
+//        this.post(realtimeServerBean.getCommand() + ledCode, postBody);
+//    }
+//
+//    /**
+//     * led灞忓瓧骞曡缃�
+//     * @param subTitleSet
+//     * @param ledCode
+//     */
+//    public void subTitleSet(SubTitleSet subTitleSet, String ledCode, Boolean isSave){
+//        String postBody =  new Gson().toJson(subTitleSet);
+//        if(isSave == true){
+//            poleLightemitService.updateRequestBody(ledCode, postBody);
+//        }
+//        this.post(realtimeServerBean.getCommand() + ledCode, postBody);
+//    }
+//
+//    /**
+//     * 娓呴櫎鎾斁鍒楄〃
+//     * @param ledCode
+//     */
+//    public void clearVideoPlay(String ledCode) {
+////        poleLightemitService.updateRequestBody(ledCode, "");
+//        this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(new ClearVideoPlay()));
+//    }
+//
+//    /**
+//     * 娓呴櫎鑺傜洰鍒楄〃
+//     * @param ledCode
+//     */
+//    public void clearPlayerTask(String ledCode) {
+////        poleLightemitService.updateRequestBody(ledCode, "");
+//        this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(new ClearPlayerTask()));
+//    }
+//
+//    /**
+//     * 鑾峰彇led灞忕敾闈�
+//     * @param ledCode
+//     */
+//    public String getPicture(String ledCode) {
+//        String result = this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(new GetPicture()));
+//        //鑾峰彇base64鍥剧墖鏁版嵁
+//        if(StringUtils.isBlank(result)){
+//            return "";
+//        }
+//        String re;
+//
+//        try{
+//            re = JSONObject.parseObject(result).get("result").toString();
+//        }catch (Exception e){
+//            re = "0";
+//        }
+//
+//        if(StringUtils.isBlank(re)){
+//            return "";
+//        }
+//        //鍘婚櫎鎹㈣绗�
+//        re.replaceAll("\r|\n*","");
+//        return re;
+//    }
+//
+//    /**
+//     * 鍒ゆ柇led灞忔槸鍚﹀紑鍚�
+//     * @param ledCode
+//     * @return
+//     */
+//    public String getIsScreenOpen(String ledCode){
+//        String result = this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(new IsScreenOpen()));
+//        //鑾峰彇base64鍥剧墖鏁版嵁
+//        if(StringUtils.isNotBlank(result)){
+//            String re;
+//            try{
+//                re = JSONObject.parseObject(result).get("result").toString();
+//            }catch (Exception e){
+//                re = "false";
+//            }
+//            return re;
+//        }else{
+//            return "";
+//        }
+//    }
+//
+//    /*
+//    鍚姩xwalk
+//     */
+//    /*public void startActivity(String ledCode){
+//        String result = this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(new StartActivity()));
+//    }*/
+//
+//    /*
+//    浣跨敤xwalk鍔犺浇缃戦〉
+//     */
+//    /*public void callXwalkFn(String ledCode,String username){
+//
+//        CallXwalkFn callXwalkFn = new CallXwalkFn();
+//
+//        callXwalkFn.setArgUrl(realtimeServerBean.getUrl() + username + "_" + ledCode + ".html");
+//        String postBody = new Gson().toJson(callXwalkFn);
+//
+//        //璇锋眰鍦板潃
+//        String url = realtimeServerBean.getCommand() + ledCode;
+//        //璇锋眰
+//        String result =  post(url,postBody);
+//    }*/
+//
+//    /*
+//   鎺у埗灞忓箷寮�鍏�
+//    */
+//    public String setScreenOpen(String ledCode, Boolean bool) {
+//        String result = this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(new setScreenOpen(bool)));
+//        //鑾峰彇base64鍥剧墖鏁版嵁
+//        if(StringUtils.isNotBlank(result)){
+//            String re = "";
+//            try{
+//                re = JSONObject.parseObject(result).get("result").toString();
+//            }catch (Exception e){
+//                re = "false";
+//            }
+//            return re;
+//        }else{
+//            return "";
+//        }
+//    }
+//
+//    //鍙戦�佹渶鏂扮殑鏁版嵁
+//    public void sendLastCommand(String lightemitControlCode) {
+//        PoleLightemitEntity poleLightemitEntity = poleLightemitService.selectByLightemitControlCode(lightemitControlCode);
+//        if(poleLightemitEntity == null || StringUtils.isBlank(poleLightemitEntity.getRequestBody())){
+//            return;
+//        }
+//        this.post(realtimeServerBean.getCommand() + lightemitControlCode, poleLightemitEntity.getRequestBody());
+//    }
+//
+//    /*
+//    璁剧疆led闊抽噺
+//     */
+//    public void setVoiume(String ledCode,Integer volume){
+//
+//        SetVolume setVolume = new SetVolume();
+//        setVolume.arg1 = volume;
+//        String postBody = new Gson().toJson(setVolume);
+//
+//        //璇锋眰
+//        String result =  post(realtimeServerBean.getCommand() + ledCode,postBody);
+//    }
+//
+//    /*
+//    鑾峰彇led闊抽噺
+//     */
+//    /*public String getVoiume(String ledCode){
+//        GetVolume getVolume = new GetVolume();
+//        String postBody = new Gson().toJson(getVolume);
+//
+//        //璇锋眰
+//        String result =  post(realtimeServerBean.getCommand() + ledCode,postBody);
+//        //璇锋眰
+//        if(StringUtils.isNotBlank(result)){
+//            try{
+//                return JSONObject.parseObject(result).get("result").toString();
+//            }catch (Exception e){
+//                return "0";
+//            }
+//        }else{
+//            return "0";
+//        }
+//    }
+//*/
+//    /**
+//     * 鏌ヨ瀹氭椂
+//     * @param ledCode
+//     * @return
+//     */
+//    public String getTimeSchedule(String ledCode) {
+//        String result = this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(new GetTimeSchedule()));
+//        //鑾峰彇瀹氭椂json鏁版嵁
+////        Map map = new Gson().fromJson(result,Map.class);
+////        Gson gson = new Gson();
+////        Task task =gson.fromJson((String)gson.fromJson(result,Map.class).get("task"),Task.class);
+////        Schedules schedules =gson.fromJson((String)gson.fromJson(result,Map.class).get("schedule"),Schedules.class);
+//        if(StringUtils.isBlank(result)){
+//            return "";
+//        }
+//        String re;
+//
+//        //鍘婚櫎瀛楃涓蹭腑鐨刓
+//        re = StringEscapeUtils.unescapeJavaScript(result);
+//        //鍘婚櫎瀛楃涓蹭腑鐨剗"
+//        re = re.replace("}\"","}");
+//        //鍘婚櫎瀛楃涓蹭腑"{
+//        re = re.replace("\"{","{");
+//        re = re.replace("\"null\"","{}");
+//        if(StringUtils.isBlank(re)){
+//            return "";
+//        }
+//        return re;
+//    }
+//}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java
new file mode 100644
index 0000000..0ca8c09
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java
@@ -0,0 +1,39 @@
+package com.sandu.ximon.admin.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.sandu.ximon.admin.config.VnnoxUrl;
+import com.sandu.ximon.admin.utils.request.CommonHeader;
+import com.sandu.ximon.admin.utils.request.PlayerProgram;
+import com.sandu.ximon.admin.utils.response.VnnoxResultResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component("VnnoxProgramAPIUtil")
+public class VnnoxProgramAPIUtil {
+
+
+    @Autowired
+    private RedisUtils redisUtils;
+
+    public static VnnoxProgramAPIUtil getBean(){
+        return (VnnoxProgramAPIUtil) SpringContextUtil.getBean("VnnoxProgramAPIUtil");
+    }
+
+
+    /**
+     * 鏅�氳妭鐩挱鏀�
+     * @param
+     * @return
+     */
+    //public VnnoxResultResponse normalProgram(Map<String,Object> program) {
+    public VnnoxResultResponse normalProgram(PlayerProgram program) {
+
+        String result = VnnoxRequestUtil.PostWithHeader(
+                VnnoxUrl.getUrl(VnnoxUrl.NORMAL_PROGRAM),
+                program.toJson(),
+                new CommonHeader(CommonHeader.JSON, true)
+        );
+        LogUtils.error("鑺傜洰鎾斁response:"+result);
+        return JSON.parseObject(result,VnnoxResultResponse.class);
+    }
+}
\ No newline at end of file
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/Clear.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/Clear.java
new file mode 100644
index 0000000..d3a80ad
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/Clear.java
@@ -0,0 +1,12 @@
+package com.sandu.ximon.admin.utils.request;
+
+/**
+ * @program: machine-fast
+ * @description: 娓呭睆璇锋眰body
+ * @author: YSS
+ * @create: 2019-04-24 14:16
+ **/
+public class Clear {
+
+    public final String type = "clear";
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/ClearPlayerTask.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/ClearPlayerTask.java
new file mode 100644
index 0000000..c8e2789
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/ClearPlayerTask.java
@@ -0,0 +1,8 @@
+package com.sandu.ximon.admin.utils.request;
+
+/**
+ * 娓呴櫎鎾斁鍒楄〃
+ */
+public class ClearPlayerTask {
+    public final String type = "clearPlayerTask";
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/ClearVideoPlay.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/ClearVideoPlay.java
new file mode 100644
index 0000000..06ac16e
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/ClearVideoPlay.java
@@ -0,0 +1,9 @@
+package com.sandu.ximon.admin.utils.request;
+
+/**+
+ * 娓呴櫎鎾斁鍒楄〃
+ */
+public class ClearVideoPlay {
+
+    public final String type = "clearPlayList";
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/DownloadFileToLocal.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/DownloadFileToLocal.java
new file mode 100644
index 0000000..c88c05b
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/DownloadFileToLocal.java
@@ -0,0 +1,17 @@
+package com.sandu.ximon.admin.utils.request;
+
+/**
+ * @program: machine-fast
+ * @description: 涓婁紶鏂囦欢鑷砽ed寮�鍙戞澘
+ * @author: YSS
+ * @create: 2019-04-24 17:15
+ **/
+public class DownloadFileToLocal {
+
+    public final String type = "downloadFileToLocal";
+
+    public String url;
+
+    public String path = "/abc/";
+
+}
\ No newline at end of file
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetPicture.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetPicture.java
new file mode 100644
index 0000000..5b6df63
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetPicture.java
@@ -0,0 +1,15 @@
+package com.sandu.ximon.admin.utils.request;
+
+/**
+ * @description: 鑾峰彇褰撳墠led灞忓箷鍥惧儚
+ **/
+public class GetPicture {
+
+    public final String type = "callCardService";
+
+    public final String fn = "screenshot";
+
+    public final int arg1 = 100;
+
+    public final int arg2 = 100;
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetScreenHeight.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetScreenHeight.java
new file mode 100644
index 0000000..1286f49
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetScreenHeight.java
@@ -0,0 +1,14 @@
+package com.sandu.ximon.admin.utils.request;
+
+/**
+ * @program: machine-fast
+ * @description: 鑾峰彇led灞忛珮搴﹁姹俠ody
+ * @author: YSS
+ * @create: 2019-04-24 11:40
+ **/
+public class GetScreenHeight {
+
+    public final String type = "callCardService";
+
+    public final String fn = "getScreenHeight";
+}
\ No newline at end of file
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetScreenWidth.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetScreenWidth.java
new file mode 100644
index 0000000..20b4308
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetScreenWidth.java
@@ -0,0 +1,14 @@
+package com.sandu.ximon.admin.utils.request;
+
+/**
+ * @program: machine-fast
+ * @description: 鑾峰彇led灞忓搴﹁姹俠ody
+ * @author: YSS
+ * @create: 2019-04-24 10:41
+ **/
+public class GetScreenWidth {
+
+    public final String type = "callCardService";
+
+    public final String fn = "getScreenWidth";
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetTimeSchedule.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetTimeSchedule.java
new file mode 100644
index 0000000..9bab972
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/GetTimeSchedule.java
@@ -0,0 +1,10 @@
+package com.sandu.ximon.admin.utils.request;
+
+/**
+ * @description: 鏌ヨ瀹氭椂
+ **/
+
+public class GetTimeSchedule {
+//    	"type":"getTimedScreening"
+    private String type = "getTimedScreening";
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/IsScreenOpen.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/IsScreenOpen.java
new file mode 100644
index 0000000..fb5ae09
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/IsScreenOpen.java
@@ -0,0 +1,14 @@
+package com.sandu.ximon.admin.utils.request;
+
+/**
+ * @program: machine-fast
+ * @description: 鏌ヨ灞忓箷鐘舵�佽姹俠ody
+ * @author: YSS
+ * @create: 2019-04-25 13:24
+ **/
+public class IsScreenOpen {
+
+    public final String type = "callCardService";
+
+    public final String fn = "isScreenOpen";
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/PlayerProgram.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/PlayerProgram.java
new file mode 100644
index 0000000..89bb825
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/PlayerProgram.java
@@ -0,0 +1,28 @@
+package com.sandu.ximon.admin.utils.request;
+
+import com.sandu.ximon.admin.config.VnnoxConstant;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鏅�氳妭鐩�
+ */
+@Data
+public class PlayerProgram implements VnnoxRequest {
+
+    //  闇�瑕佸鐞嗙殑鎾斁鍣↖D闆嗗悎,鏈�澶氭敮鎸�100涓挱鏀惧櫒鍚屾椂澶勭悊
+    private List<String> playerIds;
+    //  鎾斁鏃堕棿鎺掓湡锛屽鏋滀负绌猴紝浼氬叏澶�24灏忔椂寰幆鎾斁
+    private  Map schedule;
+    //  闇�瑕佹挱鏀剧殑椤甸潰鍐呭闆嗗悎
+    private  List<Map<String,Object>> pages ;
+    //  鑺傜洰涓嬭浇杩涘害閫氱煡鎺ュ彛锛屼細閫氳繃姝ゆ帴鍙e皢鑺傜洰鐨勪笅杞借繘搴﹀彂缁欏鎴凤紝鎺ュ彛鐨勫搷搴旀椂闂翠笉鑳借秴杩�3s
+    private String noticeUrl;
+
+    @Override
+    public String toJson() {
+        return VnnoxConstant.GSON.toJson(this);
+    }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/PostHtml.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/PostHtml.java
new file mode 100644
index 0000000..47eddd1
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/PostHtml.java
@@ -0,0 +1,20 @@
+package com.sandu.ximon.admin.utils.request;
+
+/**
+ * @program: machine-fast
+ * @description: 鎻愪氦html椤甸潰璇锋眰body绫�
+ * @author: YSS
+ * @create: 2019-04-24 14:27
+ **/
+public class PostHtml {
+
+    public final String type="loadUrl";
+
+    public String url;//url:'file:///mnt/sdcard/test.html, //涔熷彲浠ユ槸鏈湴璺緞
+
+    public final boolean persistent = true ;//鎸佷箙鍖栵紝閲嶅惎浼氳嚜鍔ㄥ姞杞絬rl
+
+    public PostHtml(String url) {
+        this.url = url;
+    }
+}

--
Gitblit v1.9.3