From dca94edc9cd0681be081e36b0dba3bbe0f581ea0 Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期二, 19 七月 2022 11:29:06 +0800
Subject: [PATCH] 新需求

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/config/RealtimeServerBean.java         |    5 
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/DownloadFileToLocal.java |    2 
 ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/ProgramDto.java               |   52 +++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java         |   27 ++
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/XiXunController.java        |   83 +++++++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/ProgramPush.java              |   32 +++
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/SetPlayList.java         |    2 
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/PlayPlanNvService.java         |   99 ++++++++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/LightemitUtils.java              |   42 +++-
 ximon-admin/src/main/java/com/sandu/ximon/admin/security/base64_Img.java               |   24 --
 /dev/null                                                                              |   70 -------
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java        |    5 
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PlayPlanNvController.java   |   11 +
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleLightemitService.java      |   73 ++++---
 14 files changed, 374 insertions(+), 153 deletions(-)

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
index 45a305d..ea87b39 100644
--- 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
@@ -4,10 +4,7 @@
 import org.springframework.stereotype.Component;
 
 /**
- * @program: machine-fast
- * @description: led鏈嶅嫏鍣ㄥ湴鍧�
- * @author: YSS
- * @create: 2019-04-24 13:24
+ * led鏈嶅嫏鍣ㄥ湴鍧�
  **/
 @Component
 @ConfigurationProperties(prefix = "realtime-server")
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PlayPlanNvController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PlayPlanNvController.java
index 5dfd343..fc3f143 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PlayPlanNvController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PlayPlanNvController.java
@@ -82,6 +82,15 @@
         return ResponseUtil.success(playPlanNvService.pushSchedule(planId, playerIds));
     }
 
+
+    @PostMapping(value = "/pushProgram/{pid}", produces = "application/json;charset=UTF-8")
+    public ResponseVO<Object> pushProgram(@PathVariable Long pid, @RequestBody List<NovaPushResultVO> playerIds) {
+        if (!permissionConfig.check(MenuEnum.LED_N_PLAY_PLAN_PUSH.getCode())) {
+            return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+        }
+        return ResponseUtil.success(playPlanNvService.pushProgram(pid, playerIds));
+    }
+
     @GetMapping("/listPlan")
     public ResponseVO<Object> list(BaseConditionVO baseConditionVO,
                                    @RequestParam(value = "order", required = false) Integer order,
@@ -132,9 +141,7 @@
         }
         List<PlayPlanNv> list = playPlanNvService.list(wrapper);
         list.forEach(plan -> {
-//            plan.setPlan(JSON.parseObject(plan.getSchedule(), Map.class));
             plan.setPlan(JSON.parseObject(plan.getSchedules(), List.class));
-//            plan.setPlan(JSON.parseArray(plan.getSchedule(), SchedulesDTO.class));
         });
         return ResponseUtil.successPage(list);
     }
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/XiXunController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/XiXunController.java
index c59172b..49847da 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/XiXunController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/XiXunController.java
@@ -6,6 +6,8 @@
 import com.sandu.common.domain.CommonPage;
 import com.sandu.common.domain.ResponseVO;
 import com.sandu.common.execption.BusinessException;
+import com.sandu.common.file.FileUploadDto;
+import com.sandu.common.file.impl.AliOssFileServiceImpl;
 import com.sandu.common.object.BaseConditionVO;
 import com.sandu.common.util.ResponseUtil;
 import com.sandu.common.util.SpringContextHolder;
@@ -25,7 +27,9 @@
 import com.sandu.ximon.dao.domain.PoleXixunPlayerEntity;
 import com.sandu.ximon.dao.enums.MenuEnum;
 import lombok.AllArgsConstructor;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.*;
 
@@ -46,7 +50,10 @@
     private final LedScheduleService scheduleService;
 
     private PermissionConfig permissionConfig;
-    // private final ListPageUtil listPageUtil;
+
+
+    private final AliOssFileServiceImpl aliOssFileService;
+    private final FileOperationRecordService fileOperationRecordService;
 
     /**
      * 鏂板鑺傜洰
@@ -531,4 +538,78 @@
          */
         return ResponseUtil.success("娓呭睆鎴愬姛");
     }
+
+
+    /**
+     * 鐔欐睕鐩存帴涓婁紶瑙嗛鍒版挱鏀惧櫒鎾斁
+     */
+    @PostMapping("/pushVideo")
+    @Transactional(rollbackFor = Exception.class)
+    public ResponseVO<Object> video(@RequestParam("file") MultipartFile file,
+                                    @RequestParam("lightemitId") List<Long> lightemitIds,
+                                    @RequestParam("type") Integer type) {
+        if (!permissionConfig.check(MenuEnum.XIXUN_PROGRAM_PUSH.getCode())) {
+            return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+        }
+        if (file == null || lightemitIds.isEmpty()) {
+            throw new BusinessException("鏈�夋嫨LED灞忔垨鏂囦欢");
+        }
+
+        FileUploadDto fileUploadDto = aliOssFileService.uploadFile(file);
+        if (type == null && (type > 2 || type < 1)) {
+            throw new BusinessException("璇烽�夋嫨姝g‘鐨勬挱鏀剧被鍨�");
+        }
+
+        if (type == 1 && !"mp4".equals(fileUploadDto.getFileType())) {
+            throw new BusinessException("璇蜂笉瑕佸湪鎾斁瑙嗛鏃堕�夋嫨闈瀖p4鏂囦欢");
+        } else if (type == 2 && (!"jpg".equals(fileUploadDto.getFileType()) && !"gif".equals(fileUploadDto.getFileType()) && !"png".equals(fileUploadDto.getFileType()))) {
+            throw new BusinessException("璇蜂笉瑕佸湪鎾斁鍥剧墖鏃舵椂閫夋嫨闈瀓pg/gif/png鏂囦欢");
+        }
+
+
+        //鑾峰彇鎵�鏈塴ed鏁版嵁
+        List<PoleLightemitEntity> poleLightemitControllers = poleLightemitService.listByIds(lightemitIds);
+
+        int num = 0;
+        if (!poleLightemitControllers.isEmpty()) {
+
+            Iterator iterator = poleLightemitControllers.iterator();
+            while (iterator.hasNext()) {
+                PoleLightemitEntity poleLightemitEntity = (PoleLightemitEntity) iterator.next();
+                //涓婁紶瑙嗛
+                String s = poleLightemitService.videoUpload(poleLightemitEntity.getLightemitControlCode(), fileUploadDto, type);
+                if ("鎺ㄩ�佸け璐�".equals(s)) {
+                    num++;
+                }
+            }
+        } else {
+            throw new BusinessException("鏈纭�夋嫨LED灞�");
+        }
+
+        /**
+         * 鐔欐睕涓婁紶鏂囦欢鎾斁 鏃ュ織璁板綍寮�濮�
+         */
+        //鑾峰彇listCode
+        List<String> listCode = new ArrayList<>();
+        List<String> msg = new ArrayList<>();
+        for (PoleLightemitEntity poleLightemitEntity : poleLightemitControllers) {
+            listCode.add(poleLightemitEntity.getLightemitControlCode());
+            msg.add("[灞忓箷鍚嶇О" + poleLightemitEntity.getLightemitName() + "璁惧缂栫爜" + poleLightemitEntity.getLightemitControlCode() + "],");
+        }
+        String content = JSON.toJSONString(msg);
+        StoreOperationRecordsUtils.storeOperationData(listCode, null, "鐔欐睕鏂囦欢鎺ㄩ��", content);
+        /**
+         * 鐔欐睕涓婁紶鏂囦欢鎾斁 鏃ュ織璁板綍缁撴潫
+         */
+
+        if (num != 0 && num != lightemitIds.size()) {
+            //瀛樺湪澶辫触浣嗘槸涓嶅畬鍏ㄥけ璐�
+            return ResponseUtil.success("閮ㄥ垎鏂囦欢鎾斁鎴愬姛");
+        } else if (num == lightemitIds.size()) {
+            //鍏ㄩ儴澶辫触
+            return ResponseUtil.fail("鏂囦欢鎾斁澶辫触");
+        } else {
+            return ResponseUtil.success("鏂囦欢鎾斁鎴愬姛");
+        }
+    }
 }
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/ProgramDto.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/ProgramDto.java
new file mode 100644
index 0000000..f8d4b80
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/ProgramDto.java
@@ -0,0 +1,52 @@
+package com.sandu.ximon.admin.dto.nova;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/7/15
+ * 鐩存帴鎺ㄩ�佽妭鐩疄浣�
+ */
+@NoArgsConstructor
+@Data
+public class ProgramDto {
+
+    private String name;
+    private List<WidgetsDTO> widgets;
+
+
+    @Data
+    public static class WidgetsDTO {
+
+        private Integer duration;
+
+        private String type;
+
+        private String url;
+
+        private Integer zIndex;
+
+        private LayoutDTO layout;
+
+        private String md5;
+
+        private String size;
+
+
+        @Data
+        public static class LayoutDTO {
+
+            private String x;
+
+            private String y;
+
+            private String width;
+
+            private String height;
+        }
+    }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/ProgramPush.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/ProgramPush.java
new file mode 100644
index 0000000..64526ea
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/ProgramPush.java
@@ -0,0 +1,32 @@
+package com.sandu.ximon.admin.dto.nova;
+
+import com.sandu.ximon.admin.config.VnnoxConstant;
+import com.sandu.ximon.admin.utils.request.VnnoxRequest;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author LiuHaoNan
+ * @date 2022/7/15
+ */
+@Data
+public class ProgramPush implements VnnoxRequest {
+
+
+    //  闇�瑕佸鐞嗙殑鎾斁鍣↖D闆嗗悎,鏈�澶氭敮鎸�100涓挱鏀惧櫒鍚屾椂澶勭悊
+    private List<String> playerIds;
+    //  鎾斁鏃堕棿鎺掓湡锛屽鏋滀负绌猴紝浼氬叏澶�24灏忔椂寰幆鎾斁
+    private Map schedule;
+    //  闇�瑕佹挱鏀剧殑椤甸潰鍐呭闆嗗悎
+    private  List<ProgramDto> 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/security/base64_Img.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/security/base64_Img.java
index fc58b16..44d7926 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/security/base64_Img.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/security/base64_Img.java
@@ -9,29 +9,9 @@
 
     public static void main(String[] args) {
         //str = GetImageStr();
-        String s="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";
+        String s=  "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB\nAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCADAAMADASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD/AD/6\nKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo\nooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii\ngAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA\nCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK\nKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo\nooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii\ngAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA\nCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK\nKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo\nooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii\ngAooooA//9k=\n";
         GenerateImage(s);
     }
-
-    // 鍥剧墖杞寲鎴恇ase64瀛楃涓�
-//    public static String GetImageStr() {
-//        String imgFile = "D:\\tanbing.jpg";// 寰呭鐞嗙殑鍥剧墖
-//        InputStream in = null;
-//        byte[] data = null;
-//        // 璇诲彇鍥剧墖瀛楄妭鏁扮粍
-//        try {
-//            in = new FileInputStream(imgFile);
-//            data = new byte[in.available()];
-//            in.read(data);
-//            in.close();
-//        } catch (IOException e) {
-//            e.printStackTrace();
-//        }
-//        // 瀵瑰瓧鑺傛暟缁凚ase64缂栫爜
-//        BASE64Encoder encoder = new BASE64Encoder();
-//        System.out.println(encoder.encode(data));
-//        return encoder.encode(data);// 杩斿洖Base64缂栫爜杩囩殑瀛楄妭鏁扮粍瀛楃涓�
-//    }
 
     // 瀵瑰瓧鑺傛暟缁勫瓧绗︿覆杩涜Base64瑙g爜骞剁敓鎴愬浘鐗�
     public static boolean GenerateImage(String imgStr) {
@@ -49,7 +29,7 @@
                 }
             }
             // 鐢熸垚jpeg鍥剧墖
-            String imgFilePath = "D:\\Download\\jieping.jpg";// 鏂扮敓鎴愮殑鍥剧墖
+            String imgFilePath = "C:\\Users\\Administrator\\Desktop\\jieping.jpg";// 鏂扮敓鎴愮殑鍥剧墖
             OutputStream out = new FileOutputStream(imgFilePath);
             out.write(b);
             out.flush();
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/security/ceshi.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/security/ceshi.java
deleted file mode 100644
index 137c9cc..0000000
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/security/ceshi.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.sandu.ximon.admin.security;
-
-import org.apache.commons.lang.StringEscapeUtils;
-
-/**
- * @Author liuhaonan
- * @Date 2022/2/25 17:26
- * @Version 1.0
- */
-public class ceshi {
-    public static void main(String[] args) {
-        String s="{\\\"programId\\\":378,\\\"_id\\\":\\\"2ab6dac6-bf1d-4393-bd2c-22ba9631bc0a\\\",\\\"name\\\":\\\"鐚挭\\\",\\\"width\\\":192,\\\"height\\\":192,\\\"layers\\\":[{\\\"id\\\":1,\\\"sources\\\":[{\\\"id\\\":\\\"212\\\",\\\"_id\\\":\\\"23ccc7aa-f571-4d08-95e2-426a9a8cef37\\\",\\\"_type\\\":\\\"Image\\\",\\\"md5\\\":null,\\\"name\\\":\\\"鐚挭01.jpg\\\",\\\"left\\\":0,\\\"top\\\":0,\\\"width\\\":192,\\\"height\\\":192,\\\"size\\\":126178,\\\"playTime\\\":0,\\\"timeSpan\\\":6,\\\"fileExt\\\":\\\"\\\",\\\"mime\\\":\\\"image\\/jpeg\\\",\\\"lineHeight\\\":null,\\\"html\\\":null,\\\"center\\\":false,\\\"speed\\\":null,\\\"entryEffect\\\":\\\"None\\\",\\\"exitEffect\\\":\\\"None\\\",\\\"entryEffectTimeSpan\\\":0,\\\"exitEffectTimeSpan\\\":0,\\\"backgroundColor\\\":\\\"\\\",\\\"language\\\":\\\"\\\",\\\"timezone\\\":0,\\\"city\\\":\\\"\\\",\\\"code\\\":0},{\\\"id\\\":\\\"213\\\",\\\"_id\\\":\\\"2fb1e5d4-72dd-458a-bf26-d79b7344fd11\\\",\\\"_type\\\":\\\"Image\\\",\\\"md5\\\":null,\\\"name\\\":\\\"鐚挭02.jpg\\\",\\\"left\\\":0,\\\"top\\\":0,\\\"width\\\":192,\\\"height\\\":192,\\\"size\\\":37268,\\\"playTime\\\":6,\\\"timeSpan\\\":6,\\\"fileExt\\\":\\\"\\\",\\\"mime\\\":\\\"image\\/jpeg\\\",\\\"lineHeight\\\":null,\\\"html\\\":null,\\\"center\\\":false,\\\"speed\\\":null,\\\"entryEffect\\\":\\\"None\\\",\\\"exitEffect\\\":\\\"None\\\",\\\"entryEffectTimeSpan\\\":0,\\\"exitEffectTimeSpan\\\":0,\\\"backgroundColor\\\":\\\"\\\",\\\"language\\\":\\\"\\\",\\\"timezone\\\":0,\\\"city\\\":\\\"\\\",\\\"code\\\":0},{\\\"id\\\":\\\"223\\\",\\\"_id\\\":\\\"39fd4620-bfa8-4df8-9637-51e833a71a50\\\",\\\"_type\\\":\\\"Image\\\",\\\"md5\\\":null,\\\"name\\\":\\\"鐚挭09.png\\\",\\\"left\\\":0,\\\"top\\\":0,\\\"width\\\":192,\\\"height\\\":192,\\\"size\\\":3170450,\\\"playTime\\\":48,\\\"timeSpan\\\":6,\\\"fileExt\\\":\\\"\\\",\\\"mime\\\":\\\"image\\/jpeg\\\",\\\"lineHeight\\\":null,\\\"html\\\":null,\\\"center\\\":false,\\\"speed\\\":null,\\\"entryEffect\\\":\\\"None\\\",\\\"exitEffect\\\":\\\"None\\\",\\\"entryEffectTimeSpan\\\":0,\\\"exitEffectTimeSpan\\\":0,\\\"backgroundColor\\\":\\\"\\\",\\\"language\\\":\\\"\\\",\\\"timezone\\\":0,\\\"city\\\":\\\"\\\",\\\"code\\\":0},{\\\"id\\\":\\\"214\\\",\\\"_id\\\":\\\"cd46a125-3cd0-4adf-9f21-ba83c6dce786\\\",\\\"_type\\\":\\\"Image\\\",\\\"md5\\\":null,\\\"name\\\":\\\"鐚挭03.jpg\\\",\\\"left\\\":0,\\\"top\\\":0,\\\"width\\\":192,\\\"height\\\":192,\\\"size\\\":41160,\\\"playTime\\\":12,\\\"timeSpan\\\":6,\\\"fileExt\\\":\\\"\\\",\\\"mime\\\":\\\"image\\/jpeg\\\",\\\"lineHeight\\\":null,\\\"html\\\":null,\\\"center\\\":false,\\\"speed\\\":null,\\\"entryEffect\\\":\\\"None\\\",\\\"exitEffect\\\":\\\"None\\\",\\\"entryEffectTimeSpan\\\":0,\\\"exitEffectTimeSpan\\\":0,\\\"backgroundColor\\\":\\\"\\\",\\\"language\\\":\\\"\\\",\\\"timezone\\\":0,\\\"city\\\":\\\"\\\",\\\"code\\\":0},{\\\"id\\\":\\\"217\\\",\\\"_id\\\":\\\"c1cbac8f-5af0-4976-8b70-50cf189fd0ca\\\",\\\"_type\\\":\\\"Image\\\",\\\"md5\\\":null,\\\"name\\\":\\\"鐚挭04.jpg\\\",\\\"left\\\":0,\\\"top\\\":0,\\\"width\\\":192,\\\"height\\\":192,\\\"size\\\":168335,\\\"playTime\\\":18,\\\"timeSpan\\\":6,\\\"fileExt\\\":\\\"\\\",\\\"mime\\\":\\\"image\\/jpeg\\\",\\\"lineHeight\\\":null,\\\"html\\\":null,\\\"center\\\":false,\\\"speed\\\":null,\\\"entryEffect\\\":\\\"None\\\",\\\"exitEffect\\\":\\\"None\\\",\\\"entryEffectTimeSpan\\\":0,\\\"exitEffectTimeSpan\\\":0,\\\"backgroundColor\\\":\\\"\\\",\\\"language\\\":\\\"\\\",\\\"timezone\\\":0,\\\"city\\\":\\\"\\\",\\\"code\\\":0},{\\\"id\\\":\\\"218\\\",\\\"_id\\\":\\\"bcb0a5a5-b40a-4beb-84fe-00e14afdb046\\\",\\\"_type\\\":\\\"Image\\\",\\\"md5\\\":null,\\\"name\\\":\\\"鐚挭05.jpg\\\",\\\"left\\\":0,\\\"top\\\":0,\\\"width\\\":192,\\\"height\\\":192,\\\"size\\\":236649,\\\"playTime\\\":24,\\\"timeSpan\\\":6,\\\"fileExt\\\":\\\"\\\",\\\"mime\\\":\\\"image\\/jpeg\\\",\\\"lineHeight\\\":null,\\\"html\\\":null,\\\"center\\\":false,\\\"speed\\\":null,\\\"entryEffect\\\":\\\"None\\\",\\\"exitEffect\\\":\\\"None\\\",\\\"entryEffectTimeSpan\\\":0,\\\"exitEffectTimeSpan\\\":0,\\\"backgroundColor\\\":\\\"\\\",\\\"language\\\":\\\"\\\",\\\"timezone\\\":0,\\\"city\\\":\\\"\\\",\\\"code\\\":0},{\\\"id\\\":\\\"221\\\",\\\"_id\\\":\\\"4f3aeb15-2d5c-45d1-8bcc-c41ce75ecde1\\\",\\\"_type\\\":\\\"Image\\\",\\\"md5\\\":null,\\\"name\\\":\\\"鐚挭06.png\\\",\\\"left\\\":0,\\\"top\\\":0,\\\"width\\\":192,\\\"height\\\":192,\\\"size\\\":766854,\\\"playTime\\\":30,\\\"timeSpan\\\":6,\\\"fileExt\\\":\\\"\\\",\\\"mime\\\":\\\"image\\/jpeg\\\",\\\"lineHeight\\\":null,\\\"html\\\":null,\\\"center\\\":false,\\\"speed\\\":null,\\\"entryEffect\\\":\\\"None\\\",\\\"exitEffect\\\":\\\"None\\\",\\\"entryEffectTimeSpan\\\":0,\\\"exitEffectTimeSpan\\\":0,\\\"backgroundColor\\\":\\\"\\\",\\\"language\\\":\\\"\\\",\\\"timezone\\\":0,\\\"city\\\":\\\"\\\",\\\"code\\\":0},{\\\"id\\\":\\\"222\\\",\\\"_id\\\":\\\"453398cb-8099-4fa9-bc86-d36d92107d7f\\\",\\\"_type\\\":\\\"Image\\\",\\\"md5\\\":null,\\\"name\\\":\\\"鐚挭07.png\\\",\\\"left\\\":0,\\\"top\\\":0,\\\"width\\\":192,\\\"height\\\":192,\\\"size\\\":762731,\\\"playTime\\\":36,\\\"timeSpan\\\":6,\\\"fileExt\\\":\\\"\\\",\\\"mime\\\":\\\"image\\/jpeg\\\",\\\"lineHeight\\\":null,\\\"html\\\":null,\\\"center\\\":false,\\\"speed\\\":null,\\\"entryEffect\\\":\\\"None\\\",\\\"exitEffect\\\":\\\"None\\\",\\\"entryEffectTimeSpan\\\":0,\\\"exitEffectTimeSpan\\\":0,\\\"backgroundColor\\\":\\\"\\\",\\\"language\\\":\\\"\\\",\\\"timezone\\\":0,\\\"city\\\":\\\"\\\",\\\"code\\\":0},{\\\"id\\\":\\\"224\\\",\\\"_id\\\":\\\"274ea4a4-d8b5-449e-8972-d027476bb9ca\\\",\\\"_type\\\":\\\"Image\\\",\\\"md5\\\":null,\\\"name\\\":\\\"鐚挭08.png\\\",\\\"left\\\":0,\\\"top\\\":0,\\\"width\\\":192,\\\"height\\\":192,\\\"size\\\":3102346,\\\"playTime\\\":42,\\\"timeSpan\\\":6,\\\"fileExt\\\":\\\"\\\",\\\"mime\\\":\\\"image\\/jpeg\\\",\\\"lineHeight\\\":null,\\\"html\\\":null,\\\"center\\\":false,\\\"speed\\\":null,\\\"entryEffect\\\":\\\"None\\\",\\\"exitEffect\\\":\\\"None\\\",\\\"entryEffectTimeSpan\\\":0,\\\"exitEffectTimeSpan\\\":0,\\\"backgroundColor\\\":\\\"\\\",\\\"language\\\":\\\"\\\",\\\"timezone\\\":0,\\\"city\\\":\\\"\\\",\\\"code\\\":0},{\\\"id\\\":\\\"215\\\",\\\"_id\\\":\\\"c59a1450-a48d-437e-a337-fc87bd14bfc2\\\",\\\"_type\\\":\\\"Image\\\",\\\"md5\\\":null,\\\"name\\\":\\\"濡欏晩.png\\\",\\\"left\\\":0,\\\"top\\\":0,\\\"width\\\":192,\\\"height\\\":192,\\\"size\\\":430804,\\\"playTime\\\":54,\\\"timeSpan\\\":6,\\\"fileExt\\\":\\\"\\\",\\\"mime\\\":\\\"image\\/jpeg\\\",\\\"lineHeight\\\":null,\\\"html\\\":null,\\\"center\\\":false,\\\"speed\\\":null,\\\"entryEffect\\\":\\\"None\\\",\\\"exitEffect\\\":\\\"None\\\",\\\"entryEffectTimeSpan\\\":0,\\\"exitEffectTimeSpan\\\":0,\\\"backgroundColor\\\":\\\"\\\",\\\"language\\\":\\\"\\\",\\\"timezone\\\":0,\\\"city\\\":\\\"\\\",\\\"code\\\":0}],\\\"repeat\\\":true}],\\\"totalSize\\\":8842775,\\\"version\\\":0,\\\"others\\\":true}";
-        String tmp = StringEscapeUtils.unescapeJavaScript(s);
-        System.out.println("tmp:" + tmp);
-
-    }
-}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/security/stringTest.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/security/stringTest.java
deleted file mode 100644
index eae71ac..0000000
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/security/stringTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.sandu.ximon.admin.security;
-
-import com.sandu.ximon.admin.vo.ControlLightCommandVO;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @Author liuhaonan
- * @Date 2022/4/19
- * @Version 1.0
- */
-public class stringTest {
-    public static void main(String[] args) {
-        String command = "000005003001000430050";
-//        String command = "00000500605000";
-
-        char[] chars = command.toCharArray();
-        int i = chars.length / 7;
-
-        List<ControlLightCommandVO> list = new ArrayList<>();
-
-        for (int j = 0; j < i; j++) {
-            int hour = Integer.valueOf(command.substring(0 + (j * 7), 2 + (j * 7)));
-            int min = Integer.valueOf(command.substring(2 + (j * 7), 4 + (j * 7)));
-            int brightness = Integer.valueOf(command.substring(4 + (j * 7), 7 + (j * 7)));
-            ControlLightCommandVO vo = new ControlLightCommandVO();
-            vo.setHour(hour);
-            vo.setMin(min);
-            vo.setBrightness(brightness);
-            list.add(vo);
-        }
-        ControlLightCommandVO v1 = list.get(0);
-        ControlLightCommandVO v2 = list.get(1);
-
-//        int i1 = v2.getHour() - v1.getHour();
-//        int i2 = (v2.getMin()- v1.getMin());
-
-        BigDecimal hour;
-        if (v2.getHour() > v1.getHour()) {
-            hour = BigDecimal.valueOf((v2.getHour() - v1.getHour()));
-        } else if (v2.getHour() < v1.getHour()) {
-            hour = BigDecimal.valueOf((v2.getHour() + 24 - v1.getHour()));
-        } else {
-            hour = BigDecimal.valueOf(0);
-        }
-//        BigDecimal min = BigDecimal.valueOf((v2.getMin() - v1.getMin()) / 60);
-        BigDecimal min;
-        if (v2.getMin() > v1.getMin()) {
-            min = BigDecimal.valueOf((v2.getMin() - v1.getMin()) / 60);
-        } else if (v2.getMin() < v1.getMin()) {
-            min = BigDecimal.valueOf((v2.getMin() + 60 - v1.getMin()) / 60);
-        } else {
-            min = BigDecimal.valueOf(0);
-        }
-
-        BigDecimal totalTime = (hour.add(min));
-//        int total=(i1*3600+i2*60);
-//        BigDecimal energySaving = BigDecimal.valueOf(((100-v1.getBrightness())/100)*totalTime/24);
-//        BigDecimal energySaving =BigDecimal.valueOf((100-v1.getBrightness())).divide(BigDecimal.valueOf(100)).multiply(totalTime).divide(BigDecimal.valueOf(24));
-        BigDecimal energySaving =new BigDecimal(100).subtract(BigDecimal.valueOf(v1.getBrightness())).divide(BigDecimal.valueOf(100)).multiply(totalTime).divide(BigDecimal.valueOf(24),2);
-
-
-        System.out.println(energySaving);
-//        System.out.println(energySaving+"----------------------"+energySaving1);
-
-    }
-
-}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PlayPlanNvService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PlayPlanNvService.java
index 022c9c3..aa7789b 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PlayPlanNvService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PlayPlanNvService.java
@@ -11,6 +11,8 @@
 import com.sandu.ximon.admin.dto.PlanDto;
 import com.sandu.ximon.admin.dto.SchedulesDTO;
 import com.sandu.ximon.admin.dto.nova.PlayerProgram;
+import com.sandu.ximon.admin.dto.nova.ProgramDto;
+import com.sandu.ximon.admin.dto.nova.ProgramPush;
 import com.sandu.ximon.admin.dto.nova.ProgramSchedule;
 import com.sandu.ximon.admin.entity.Plans;
 import com.sandu.ximon.admin.param.PlayPlanParam;
@@ -22,10 +24,7 @@
 import com.sandu.ximon.admin.vo.NovaOpenVO;
 import com.sandu.ximon.admin.vo.NovaPushResultVO;
 import com.sandu.ximon.admin.vo.PlansVO;
-import com.sandu.ximon.dao.domain.LEDProgram;
-import com.sandu.ximon.dao.domain.LedPlayerEntity;
-import com.sandu.ximon.dao.domain.PlayPlanNv;
-import com.sandu.ximon.dao.domain.PushToLed;
+import com.sandu.ximon.dao.domain.*;
 import com.sandu.ximon.dao.mapper.PlayPlanNvMapper;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -48,6 +47,7 @@
     private VnnoxAPIUtil vnnoxAPIUtil;
     private final LEDProgramService ledProgramService;
     private final ClientService clientService;
+    private final LEDProgramFileService fileService;
 
     public boolean addPlan(PlayPlanParam playPlanParam) {
 
@@ -378,4 +378,95 @@
         plan.put("schedules", schedules);
         return plan;
     }
+
+
+    /**
+     * 鎺ㄩ�佸疄鏃惰妭鐩�
+     *
+     * @param pid
+     * @param nova
+     * @return
+     */
+    public Map<String, Object> pushProgram(Long pid, List<NovaPushResultVO> nova) {
+        LEDProgram ledProgram = ledProgramService.getById(pid);
+        if (ledProgram == null) {
+            throw new BusinessException("鏈壘鍒拌妭鐩�");
+        }
+        String pages = ledProgram.getPages();
+        List<String> playerIds = new ArrayList<>();
+        nova.forEach(n -> {
+            playerIds.add(n.getPlayerId());
+        });
+
+        ProgramPush program = new ProgramPush();
+        List<ProgramDto> programDtos = JSON.parseArray(pages, ProgramDto.class);
+        programDtos.forEach(
+                programDto -> {
+                    programDto.getWidgets().forEach(
+                            widget -> {
+                                String url = widget.getUrl();
+                                LEDProgramFile one = fileService.getOne(Wrappers.lambdaQuery(LEDProgramFile.class).eq(LEDProgramFile::getFileUrl, url));
+                                if (one == null) {
+                                    throw new BusinessException("鑺傜洰鏂囦欢宸插け鏁�");
+                                }
+                                widget.setMd5(one.getMd5());
+                                widget.setSize(one.getSize());
+                            }
+                    );
+                }
+        );
+
+        program.setPlayerIds(playerIds);
+        //鑾峰彇鑺傜洰瀹炰綋
+        program.setPages(programDtos);
+
+        program.setNoticeUrl(VnnoxConstant.NOTIFY_URL);
+        VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.pushProgram(program);
+
+        List<String> success = new ArrayList<>();
+        List<String> fail = new ArrayList<>();
+        if (vnnoxResultResponse.getData() != null) {
+            success = vnnoxResultResponse.getData().getSuccess();
+            fail = vnnoxResultResponse.getData().getFail();
+        }
+
+        //鎷兼帴鎴愬姛澶辫触鐨勭粨鏋�
+        Map<String, Object> result = new HashMap<>();
+        List<NovaPushResultVO> successList = new ArrayList<>();
+        List<NovaPushResultVO> faileList = new ArrayList<>();
+        List<String> finalSuccess = success;
+        List<String> finalFail = fail;
+        nova.forEach(n -> {
+            if (finalSuccess.contains(n.getPlayerId())) {
+                successList.add(n);
+            } else if (finalFail.contains(n.getPlayerId())) {
+                faileList.add(n);
+            }
+        });
+
+        result.put("success", successList);
+        result.put("fail", faileList);
+
+        /**
+         * 璇虹摝鎺ㄩ�佽妭鐩棩蹇楄褰曞紑濮�
+         */
+        List<LedPlayerEntity> list = SpringContextHolder.getBean(LedPlayerEntityService.class)
+                .list(Wrappers.lambdaQuery(LedPlayerEntity.class).in(LedPlayerEntity::getId, nova.stream().map(NovaPushResultVO::getPlayerId).toArray()));
+        List<String> listCode = new ArrayList<>();
+        for (LedPlayerEntity temp : list) {
+            listCode.add(temp.getSn());
+        }
+
+        String content = "{鑺傜洰ID锛�" + pid
+                + "锛� 鑺傜洰鍚嶇О锛�" + ledProgram.getName()
+                + "}," + " 鎺ㄩ�佺粨鏋滐細" + result
+                + " }";
+        StoreOperationRecordsUtils.storeOperationData(listCode, null, "璇虹摝鎺ㄩ�佽妭鐩�", content);
+        /**
+         * 璇虹摝鎺ㄩ�佽妭鐩棩蹇楄褰曠粨鏉�
+         */
+
+        return result;
+    }
+
 }
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
index e6f118b..3eb4327 100644
--- 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
@@ -3,16 +3,14 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.gson.Gson;
 import com.sandu.common.execption.BusinessException;
+import com.sandu.common.file.FileUploadDto;
 import com.sandu.common.service.impl.BaseServiceImpl;
 import com.sandu.common.util.SpringContextHolder;
 import com.sandu.ximon.admin.config.RealtimeServerBean;
 import com.sandu.ximon.admin.entity.*;
 import com.sandu.ximon.admin.param.PoleBindingParam;
 import com.sandu.ximon.admin.security.SecurityUtils;
-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.StoreOperationRecordsUtils;
+import com.sandu.ximon.admin.utils.*;
 import com.sandu.ximon.admin.vo.EquipmentInfomation;
 import com.sandu.ximon.dao.domain.Pole;
 import com.sandu.ximon.dao.domain.PoleLightemitEntity;
@@ -393,28 +391,26 @@
      * led涓婁紶瑙嗛
      *
      * @param lightemitControlCode
-     * @param filename
-     * @param path
-     * @param userName
-     * @throws IOException
      */
     @Async("taskExecutor")
-    public void videoUpload(String lightemitControlCode, String filename, String path, String userName) throws IOException {
+    public String videoUpload(String lightemitControlCode, FileUploadDto fileUploadDto, Integer type) {
         //鑾峰彇灞忓箷瀹�
         String screenWidth = lightemitUtils.getScreenWidth(lightemitControlCode);
         String screenHeight = lightemitUtils.getScreenHeight(lightemitControlCode);
 
         //鍙戦�佽棰戣嚦寮�鍙戞澘骞舵挱鏀�
-        lightemitUtils.postVideo(screenWidth, screenHeight, filename, lightemitControlCode);
+        String fileUrl = fileUploadDto.getFileUrl();
+        String[] split = fileUrl.split("/");
+        String id = split[split.length - 1];
+        String result = this.videoXixunPlayer(lightemitControlCode, id, fileUploadDto.getFileSize(), fileUploadDto.getMd5(), type, fileUploadDto.getFileType(), 999999);
 
-        //娓呭睆
-        lightemitUtils.clear(lightemitControlCode);
-
+        LogUtils.error("涓婁紶鎾斁缁撴灉:" + result);
+        return result;
     }
 
 
     @Async("taskExecutor")
-    public void videoXixunPlayer(String lightemitControlCode, String ip, String filename, Long filesize, Integer videoTime) {
+    public String videoXixunPlayer(String lightemitControlCode, String filename, Long filesize, String md5, Integer type, String fileType, Integer videoTime) {
         //鑾峰彇灞忓箷瀹�
         Integer screenWidth = Integer.valueOf(lightemitUtils.getScreenWidth(lightemitControlCode));
         Integer screenHeight = Integer.valueOf(lightemitUtils.getScreenHeight(lightemitControlCode));
@@ -429,18 +425,23 @@
         source.set_id(UUID.randomUUID().toString());
         //璇锋眰澶存嫾鎺ヨID涓鸿璧勬簮鐨勫畬鏁翠笅杞藉湴鍧�
         source.setId(filename);
-        //璁剧疆璧勬簮绫诲瀷锛屽叾浠栬祫婧愮被鍨嬭鍙傝�儀ixunplayer鑺傜洰json璇存槑鏂囨。
-        source.set_type("Video");
+        if (type == 1) {
+            //璁剧疆璧勬簮绫诲瀷锛屽叾浠栬祫婧愮被鍨嬭鍙傝�儀ixunplayer鑺傜洰json璇存槑鏂囨。
+            source.set_type("Video");
+            source.setMime("video/mp4");
+        } else {
+            source.set_type("Image");
+            source.setMime("image/jpeg");
+        }
         //璧勬簮鍚庣紑鍚�
-        source.setFileExt(".mp4");
+        source.setFileExt(fileType);
         //璧勬簮楂樺害
         source.setHeight(screenHeight);
         //璧勬簮瀹藉害
         source.setWidth(screenWidth);
         //璺濆乏
         source.setLeft(0);
-        source.setMd5("dd135d5d2d44d619a542db773ab529a4");
-        source.setMime("video/mp4");
+        source.setMd5(md5);
         source.setName(filename);
         source.setPlayTime(0);    //鎾斁璧峰鏃堕棿
         source.setSize(filesize);    //璧勬簮瀛楄妭鏁帮紝瑕佺簿鍑�
@@ -454,7 +455,7 @@
         List<Layer> list1 = new ArrayList<Layer>();
         list1.add(layer);
         pro.setLayers(list1);
-        pro.setName("demo");    //鑺傜洰鍚嶇О
+        pro.setName("鏂囦欢涓婁紶鎾斁");    //鑺傜洰鍚嶇О
         pro.setOthers(true);//濡傛灉涓簍rue锛屽垯璇ヨ妭鐩潵鑷涓夋柟鎺ュ彛锛屼笉鏄潵鑷垜浠嚜宸辩殑web锛屼簩娆″紑鍙戣鍔″繀璧嬪�间负true
         pro.setTotalSize(filesize);    //鎵�鏈夎祫婧愭�诲瓧鑺傛暟
         pro.setVersion(0);            //楂樼骇鑺傜洰=0锛岀畝鏄撹妭鐩�=2
@@ -470,17 +471,29 @@
         task.setItems(list2);
         command.setId(UUID.randomUUID().toString());
         //杩欓噷鏄笅鏂圭殑post鍥炶皟鍦板潃锛岄渶瑕佷慨鏀笽P鍦板潃
-        command.setNotificationURL("http://" + ip + ":" + port + "/machine-fast/serv/download/getJSON");
+        command.setNotificationURL("");
         //璧勬簮涓嬭浇閾炬帴鐨勮姹傚ご
-        command.setPreDownloadURL("http://" + ip + ":" + port + "/machine-fast/serv/download/downloadFile/");
+        command.setPreDownloadURL("https://ximonsmart.oss-cn-shanghai.aliyuncs.com/");
         command.setTask(task);
         xixun.set_id(UUID.randomUUID().toString());
         xixun.setCommand(command);
         xixun.setType("commandXixunPlayer");    //鍛戒护鍥哄畾绫诲瀷锛屼笉鍙洿鏀�
         String jsondata = new Gson().toJson(xixun);
-        lightemitUtils.clear(lightemitControlCode);
-        poleLightemitDao.updateRequestBody(lightemitControlCode, jsondata);
-        lightemitUtils.post(realtimeServerBean.getCommand() + lightemitControlCode, jsondata);
+        String clearResult = lightemitUtils.clear(lightemitControlCode);
+        if (clearResult.contains("does not exist")) {
+            return "鎺ㄩ�佸け璐�";
+        } else {
+            poleLightemitDao.updateRequestBody(lightemitControlCode, jsondata);
+            String post = lightemitUtils.post(realtimeServerBean.getCommand() + lightemitControlCode, jsondata);
+            LogUtils.error("缁撴灉:" + post);
+            //{"_type":"success","_id":"ce8dc3ff-dc88-43b7-8f55-60abd8700f1a","timestamp":1653555160535}
+            if (post.startsWith("{") && post.endsWith("}") && post.contains("_type\":\"success")) {
+                return "鎺ㄩ�佹垚鍔�";
+            } else {
+                return "鎺ㄩ�佸け璐�";
+            }
+
+        }
     }
 
     /**
@@ -492,16 +505,6 @@
     public void updateRequestBody(String ledCode, String postBody) {
         baseMapper.updateRequestBody(ledCode, postBody);
     }
-
-//    /**
-//     * 鏍规嵁led灞忕紪鐮佽幏鍙栫伅鏉嗘墍鏈変俊鎭�
-//     *
-//     * @param ledCode
-//     * @return
-//     */
-//    public PoleStreetlightEntity getStreetlightByLedCode(String ledCode) {
-//        return baseMapper.getStreetlightByLedCode(ledCode);
-//    }
 
 
     /**
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java
index e95f113..681d20d 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java
@@ -1,5 +1,6 @@
 package com.sandu.ximon.admin.service;
 
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -262,7 +263,7 @@
                 layerPro.getSources().forEach(sourcePro -> {
                     long fileId = Long.parseLong(sourcePro.getId());
                     LedSFile file = xiXunFileService.getById(fileId);
-                    if(file != null){
+                    if (file != null) {
                         String fileUrl = file.getFileUrl();
                         String[] split = fileUrl.split("/");
                         sourcePro.setId(split[split.length - 1]);
@@ -301,6 +302,8 @@
 
         Gson gson = new GsonBuilder().disableHtmlEscaping().create();
         String jsondata = gson.toJson(xixun);
+        System.out.println("鎺ㄩ�佸唴瀹�" + JSONUtil.toJsonStr(jsondata));
+
 
         Collection<PoleLightemitEntity> poleLightemitEntities = poleLightemitService.listByIds(lightemitIds);
 
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
index bd05d86..e3c0de7 100644
--- 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
@@ -1,7 +1,9 @@
 package com.sandu.ximon.admin.utils;
 
+import cn.hutool.core.lang.Snowflake;
 import com.alibaba.fastjson.JSONObject;
 import com.google.gson.Gson;
+import com.sandu.common.file.FileUploadDto;
 import com.sandu.ximon.admin.config.RealtimeServerBean;
 import com.sandu.ximon.admin.service.PoleLightemitService;
 import com.sandu.ximon.admin.utils.request.*;
@@ -32,6 +34,9 @@
     private final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
 
     private OkHttpClient client = new OkHttpClient();
+
+    @Autowired
+    private Snowflake snowflake;
 
 
     public void init() {
@@ -146,36 +151,53 @@
      *
      * @param screenWidth
      * @param screenHeight
-     * @param filename
      * @param ledCode
      */
-    public void postVideo(String screenWidth, String screenHeight, String filename, String ledCode) {
+    public String postFile(String screenWidth, String screenHeight, String ledCode, FileUploadDto fileUploadDto) {
+
+        String fileUrl = fileUploadDto.getFileUrl();
+        String[] split = fileUrl.split("/");
+        String id = split[split.length - 1];
+
 
         //led寮�鍙戞澘涓嬭浇瑙嗛璇锋眰body
         DownloadFileToLocal downloadFileToLocal = new DownloadFileToLocal();
-        downloadFileToLocal.url = realtimeServerBean.getUrl() + filename;
-        downloadFileToLocal.path += filename;
+        downloadFileToLocal.url = realtimeServerBean.getUrl() + "https://ximonsmart.oss-cn-shanghai.aliyuncs.com/" + id;
+        downloadFileToLocal.path += fileUrl;
 
         //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] = "";
+        setPlayList.list[0] = fileUrl;
+        setPlayList.pathList[0] = ledCode;
         try {
             setPlayList.width = Integer.valueOf(screenWidth);
             setPlayList.height = Integer.valueOf(screenHeight);
         } catch (Exception e) {
-            return;
+            return "鎺ㄩ�佸け璐�";
         }
         String postBody = new Gson().toJson(setPlayList);
-        //淇濆瓨led鏁版嵁
-        poleLightemitService.updateRequestBody(ledCode, postBody);
+
         //led寮�鍙戞澘瑙嗛鍒楄〃璇锋眰
-        this.post(realtimeServerBean.getCommand() + ledCode, postBody);
+        String post = this.post(realtimeServerBean.getCommand() + ledCode, postBody);
+        LogUtils.error("瑙嗛涓婁紶缁撴灉:----" + post);
+        if (post.contains("does not exist")) {
+            return "鎺ㄩ�佸け璐�";
+        } else {
+            //{"_type":"success","_id":"ce8dc3ff-dc88-43b7-8f55-60abd8700f1a","timestamp":1653555160535}
+            if (post.startsWith("{") && post.endsWith("}") && post.contains("_type\":\"success")) {
+                //淇濆瓨led鏁版嵁
+                poleLightemitService.updateRequestBody(ledCode, postBody);
+                return "鎺ㄩ�佹垚鍔�";
+            } else {
+                return "鎺ㄩ�佸け璐�";
+            }
+        }
     }
 
+
     /**
      * led灞忓瓧骞曡缃�
      *
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
index 51dd4d0..9202257 100644
--- 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
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSON;
 import com.sandu.ximon.admin.config.VnnoxUrl;
 import com.sandu.ximon.admin.dto.nova.AirDataProgram;
+import com.sandu.ximon.admin.dto.nova.ProgramPush;
 import com.sandu.ximon.admin.dto.nova.ProgramSchedule;
 import com.sandu.ximon.admin.utils.request.CommonHeader;
 import com.sandu.ximon.admin.dto.nova.PlayerProgram;
@@ -23,11 +24,10 @@
 
 
     /**
-     * 鏅�氳妭鐩挱鏀�
+     * 澶ф皵淇℃伅鎺ㄩ��
      * @param
      * @return
      */
-    //public VnnoxResultResponse normalProgram(Map<String,Object> program) {
     public VnnoxResultResponse normalProgram(AirDataProgram program) {
 
         String result = VnnoxRequestUtil.PostWithHeader(
@@ -41,6 +41,11 @@
     }
 
 
+    /**
+     * 鏅�氳妭鐩挱鏀�
+     * @param
+     * @return
+     */
     public VnnoxResultResponse normalProgram(PlayerProgram program) {
 
         String result = VnnoxRequestUtil.PostWithHeader(
@@ -54,6 +59,24 @@
     }
 
     /**
+     * 瀹炴椂鑺傜洰鎾斁
+     * @param
+     * @return
+     */
+    public VnnoxResultResponse pushProgram(ProgramPush program) {
+
+        String result = VnnoxRequestUtil.PostWithHeader(
+                VnnoxUrl.getUrl(VnnoxUrl.NORMAL_PROGRAM),
+                program.toJson(),
+                new CommonHeader(CommonHeader.JSON, true)
+        );
+        System.out.println(program.toJson());
+        LogUtils.error("鏅�氳妭鐩挱鏀緍esponse:"+result);
+        return JSON.parseObject(result,VnnoxResultResponse.class);
+    }
+
+
+    /**
      * 瀹氭椂鑺傜洰鎾斁
      * @param program
      * @return
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
index c88c05b..d8af429 100644
--- 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
@@ -12,6 +12,6 @@
 
     public String url;
 
-    public String path = "/abc/";
+    public String path = "https://ximonsmart.oss-cn-shanghai.aliyuncs.com/";
 
 }
\ No newline at end of file
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/SetPlayList.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/SetPlayList.java
index 35e7d98..9b2af0b 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/SetPlayList.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/SetPlayList.java
@@ -12,7 +12,7 @@
 
     public String[] list = new String[1] ;
 
-//    public String[] pathList = new String[1];
+  public String[] pathList = new String[1];
 
     public Integer width = 128;
 

--
Gitblit v1.9.3