From b63079723d7a5fdc5660ba7064a9306ce35f0f3d Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期六, 07 五月 2022 17:49:04 +0800
Subject: [PATCH] Changes

---
 dao/src/main/resources/mapper/PlayPlanNvMapper.xml                                   |    2 
 dao/src/main/java/com/sandu/ximon/dao/domain/PlayPlanNv.java                         |    4 
 ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Plans.java                    |   19 +---
 ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxProgramAPIUtil.java       |    7 +
 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/PlayPlanNvController.java |   21 +++-
 ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/ProgramSchedule.java        |   23 +++++
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/PlayPlanNvService.java       |  119 ++++++++++++++++++++++++-----
 dao/src/main/java/com/sandu/ximon/dao/domain/PushToLed.java                          |    2 
 ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerProgram.java          |    2 
 9 files changed, 148 insertions(+), 51 deletions(-)

diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/PlayPlanNv.java b/dao/src/main/java/com/sandu/ximon/dao/domain/PlayPlanNv.java
index 6758481..80924c1 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/domain/PlayPlanNv.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/PlayPlanNv.java
@@ -102,13 +102,13 @@
     private String endTime;
 
     /**
-     * 瀹氭椂schedule瀹炰綋
+     * 鑺傜洰鐢╯chedules瀹炰綋
      */
     @JsonIgnore
     private String schedule;
 
     /**
-     * 鑺傜洰鐢╯chedules瀹炰綋
+     * 瀹氭椂schedule瀹炰綋
      */
     @JsonIgnore
     private String schedules;
diff --git a/dao/src/main/java/com/sandu/ximon/dao/domain/PushToLed.java b/dao/src/main/java/com/sandu/ximon/dao/domain/PushToLed.java
index 65aad29..d5e3ee0 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/domain/PushToLed.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/domain/PushToLed.java
@@ -13,6 +13,6 @@
 @Data
 public class PushToLed implements Serializable {
 
-    private String schedules;
+    private String schedule;
     private String pages;
 }
diff --git a/dao/src/main/resources/mapper/PlayPlanNvMapper.xml b/dao/src/main/resources/mapper/PlayPlanNvMapper.xml
index c680eee..07ef404 100644
--- a/dao/src/main/resources/mapper/PlayPlanNvMapper.xml
+++ b/dao/src/main/resources/mapper/PlayPlanNvMapper.xml
@@ -36,7 +36,7 @@
 
     <select id="pushToLed" resultType="com.sandu.ximon.dao.domain.PushToLed" parameterType="java.lang.Long">
         SELECT
-            t1.SCHEDULEs,
+            t1.SCHEDULE,
             t2.pages
         FROM
             play_plan_nv t1
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 0cce77d..3189a6e 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
@@ -13,9 +13,7 @@
 import com.sandu.ximon.admin.security.SecurityUtils;
 import com.sandu.ximon.admin.service.PlayPlanNvService;
 import com.sandu.ximon.admin.vo.NovaPushResultVO;
-import com.sandu.ximon.dao.bo.SchedulesDTO;
 import com.sandu.ximon.dao.domain.PlayPlanNv;
-import com.sandu.ximon.dao.enums.MenuEnum;
 import lombok.AllArgsConstructor;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -34,11 +32,13 @@
     private final PlayPlanNvService playPlanNvService;
     private PermissionConfig permissionConfig;
 
+    @AnonymousAccess
     @PostMapping("/add")
     public ResponseVO<Object> addLEDPlan(@RequestBody @Validated PlayPlanParam param) {
         return ResponseUtil.success(playPlanNvService.addPlan(param));
     }
 
+    @AnonymousAccess
     @GetMapping("/getByPlanId/{planId}")
     public ResponseVO<Object> getPlan(@PathVariable Long planId) {
         return ResponseUtil.success(playPlanNvService.getByPlanId(planId));
@@ -60,11 +60,19 @@
         return ResponseUtil.success(playPlanNvService.pushToLed(plianId, playerIds));
     }
 
+
+    @AnonymousAccess
+    @PostMapping(value = "/pushSchedule/{plianId}", produces = "application/json;charset=UTF-8")
+    public ResponseVO<Object> pushSchedule(@PathVariable Long plianId, @RequestBody List<NovaPushResultVO> playerIds) {
+        return ResponseUtil.success(playPlanNvService.pushSchedule(plianId, playerIds));
+    }
+
+    @AnonymousAccess
     @GetMapping("/listPlan")
     public ResponseVO<Object> list(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword) {
-        if (!permissionConfig.check(MenuEnum.PLAYPLAN_LIST.getCode())) {
-            return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
-        }
+//        if (!permissionConfig.check(MenuEnum.PLAYPLAN_LIST.getCode())) {
+//            return ResponseUtil.fail("缂哄皯瀵瑰簲鐢ㄦ埛鏉冮檺");
+//        }
         PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
         LambdaQueryWrapper<PlayPlanNv> wrapper = Wrappers.lambdaQuery(PlayPlanNv.class);
 
@@ -79,7 +87,8 @@
         List<PlayPlanNv> list = playPlanNvService.list(wrapper);
         list.forEach(plan -> {
 //            plan.setPlan(JSON.parseObject(plan.getSchedule(), Map.class));
-            plan.setPlan(JSON.parseArray(plan.getSchedule(), SchedulesDTO.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/dto/nova/PlayerProgram.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerProgram.java
index 3c35399..1d2e448 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerProgram.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/PlayerProgram.java
@@ -16,7 +16,7 @@
     //  闇�瑕佸鐞嗙殑鎾斁鍣↖D闆嗗悎,鏈�澶氭敮鎸�100涓挱鏀惧櫒鍚屾椂澶勭悊
     private List<String> playerIds;
     //  鎾斁鏃堕棿鎺掓湡锛屽鏋滀负绌猴紝浼氬叏澶�24灏忔椂寰幆鎾斁
-    private  Map schedules;
+    private  Map schedule;
     //  闇�瑕佹挱鏀剧殑椤甸潰鍐呭闆嗗悎
     private  List<Map<String,Object>> pages ;
     //  鑺傜洰涓嬭浇杩涘害閫氱煡鎺ュ彛锛屼細閫氳繃姝ゆ帴鍙e皢鑺傜洰鐨勪笅杞借繘搴﹀彂缁欏鎴凤紝鎺ュ彛鐨勫搷搴旀椂闂翠笉鑳借秴杩�3s
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/ProgramSchedule.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/ProgramSchedule.java
new file mode 100644
index 0000000..52d4064
--- /dev/null
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/dto/nova/ProgramSchedule.java
@@ -0,0 +1,23 @@
+package com.sandu.ximon.admin.dto.nova;
+
+import com.sandu.ximon.admin.config.VnnoxConstant;
+import com.sandu.ximon.admin.dto.SchedulesDTO;
+import com.sandu.ximon.admin.utils.request.VnnoxRequest;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ProgramSchedule implements VnnoxRequest {
+
+    //  闇�瑕佸鐞嗙殑鎾斁鍣↖D闆嗗悎,鏈�澶氭敮鎸�100涓挱鏀惧櫒鍚屾椂澶勭悊
+    private List<String> playerIds;
+
+    //  鎾斁鏃堕棿鎺掓湡锛屽鏋滀负绌猴紝浼氬叏澶�24灏忔椂寰幆鎾斁
+    private  List<SchedulesDTO> schedules;
+
+    @Override
+    public String toJson() {
+        return VnnoxConstant.GSON.toJson(this);
+    }
+}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Plans.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Plans.java
index dcd762e..9f27f38 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Plans.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/entity/Plans.java
@@ -1,8 +1,6 @@
 package com.sandu.ximon.admin.entity;
 
-import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
-import lombok.NoArgsConstructor;
 
 import java.util.List;
 
@@ -11,19 +9,10 @@
  * @Date 2022/04/22
  * @Version 1.0
  */
-@NoArgsConstructor
 @Data
 public class Plans {
-//    private String endDate;
-//    private List<PlansDTO> plans;
-//    private String startDate;
-//
-//    @NoArgsConstructor
-//    @Data
-//    public static class PlansDTO {
-//        private List<Integer> weekDays;
-//        private String startTime;
-//        private String endTime;
-//
-//    }
+
+    private List<Integer> weekDays;
+    private String startTime;
+    private String endTime;
 }
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 94f8bbd..e23b57f 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
@@ -1,5 +1,7 @@
 package com.sandu.ximon.admin.service;
 
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.sandu.common.execption.BusinessException;
@@ -7,12 +9,13 @@
 import com.sandu.ximon.admin.config.VnnoxConstant;
 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.ProgramSchedule;
+import com.sandu.ximon.admin.entity.Plans;
 import com.sandu.ximon.admin.param.PlayPlanParam;
 import com.sandu.ximon.admin.security.SecurityUtils;
 import com.sandu.ximon.admin.utils.VnnoxAPIUtil;
 import com.sandu.ximon.admin.utils.VnnoxProgramAPIUtil;
-import com.sandu.ximon.admin.dto.nova.PlayerProgram;
-import com.sandu.ximon.admin.utils.response.VnnoxResult;
 import com.sandu.ximon.admin.utils.response.VnnoxResultResponse;
 import com.sandu.ximon.admin.vo.NovaOpenVO;
 import com.sandu.ximon.admin.vo.NovaPushResultVO;
@@ -70,21 +73,15 @@
 
         String s = JSON.toJSONString(schedule.get("plans"));
         List<PlanDto> plans = JSON.parseArray(s, PlanDto.class);
-        System.out.println(plans.toString()+"plans");
+        System.out.println(plans.toString() + "plans");
 
 //        List<PlanDto> plans = (List<PlanDto>) schedule.get("plans");
 
         List<SchedulesDTO> schedulesDTOS = new ArrayList<>();
         for (int i = 0; i < plans.size(); i++) {
             SchedulesDTO openDto = new SchedulesDTO();
-//            if (i % 2 == 0) {
-//                schedulesDTO.setExecTime(plans.get(i).getStartTime());
-//                schedulesDTO.setStatus("OPEN");
-//            } else {
-//                schedulesDTO.setWeekDays(plans.get(i).getWeekDays());
-//                schedulesDTO.setExecTime(plans.get(i).getEndTime());
-//                schedulesDTO.setStatus("CLOSE");
-//            }
+
+
 
             SchedulesDTO closeDto = new SchedulesDTO();
 
@@ -92,6 +89,19 @@
             openDto.setEndDate(schedule.get("endDate").toString());
             openDto.setExecTime(plans.get(i).getStartTime());
             openDto.setStatus("OPEN");
+
+            /**
+             * 鍒ゆ柇鏃堕棿鐨勫厛鍚�
+             */
+            String startTime = openDto.getStartDate()+" " +plans.get(i).getStartTime();
+            String endTime =openDto.getEndDate()+ " " +plans.get(i).getEndTime();
+
+            //杞崲鎴愭椂闂存埑
+            long startTimeStamp = DateUtil.parse(startTime, DatePattern.NORM_DATETIME_PATTERN).getTime();
+            long endTimeStamp = DateUtil.parse(endTime, DatePattern.NORM_DATETIME_PATTERN).getTime();
+            if(startTimeStamp>endTimeStamp){
+                throw new BusinessException("寮�濮嬫椂闂翠笉鑳藉ぇ浜庣粨鏉熸椂闂�");
+            }
 
             closeDto.setStartDate(schedule.get("startDate").toString());
             closeDto.setEndDate(schedule.get("endDate").toString());
@@ -119,7 +129,7 @@
         if (byId == null) {
             throw new BusinessException("鎿嶄綔瀵硅薄涓嶅瓨鍦�");
         }
-        if(removeById(id)){
+        if (removeById(id)) {
             return addPlan(playPlanParam);
         }
 
@@ -144,23 +154,35 @@
         if (pushToLed == null) {
             throw new BusinessException("鏈壘鍒拌鎾斁璁″垝");
         }
-        List<String> playerIds=new ArrayList<>();
+        List<String> playerIds = new ArrayList<>();
         nova.forEach(
-                n->{
+                n -> {
                     playerIds.add(n.getPlayerId());
                 }
         );
 
         PlayerProgram program = new PlayerProgram();
         program.setPlayerIds(playerIds);
-        System.out.println(pushToLed.getPages());
 
         //鑾峰彇鑺傜洰瀹炰綋
         program.setPages(JSON.parseObject(pushToLed.getPages(), List.class));
 
 
         //鑾峰彇鑺傜洰瀹氭椂瀹炰綋
-        program.setSchedules((JSON.parseObject(pushToLed.getSchedules(), Map.class)));
+        program.setSchedule((JSON.parseObject(pushToLed.getSchedule(), Map.class)));
+        Map map = JSON.parseObject(pushToLed.getSchedule(), Map.class);
+        map.get("plans");
+        List<Plans> plans = JSON.parseArray(map.get("plans").toString(), Plans.class);
+        plans.forEach(
+                p -> {
+                    //鍒犻櫎鍚庝袱浣嶅瓧绗︿覆
+                    p.setStartTime(p.getStartTime().substring(0, p.getStartTime().length() - 3));
+                    p.setEndTime(p.getEndTime().substring(0, p.getEndTime().length() - 3));
+                }
+        );
+        System.out.println(plans + "plans11111");
+        map.put("plans", plans);
+        program.setSchedule(map);
         //鑾峰彇瀹氭椂寮�鍏冲睆骞�
 //        program.setSchedules((JSON.parseArray(pushToLed.getSchedule(), SchedulesDTO.class)));
 
@@ -170,7 +192,7 @@
         program.setNoticeUrl(VnnoxConstant.NOTIFY_URL);
 //        VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.timeProgram(program);
         VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.normalProgram(program);
-        VnnoxResult vnnoxResult = vnnoxAPIUtil.volChange(playerIds, Integer.valueOf(one.getVolume()).intValue());
+        vnnoxAPIUtil.volChange(playerIds, Integer.valueOf(one.getVolume()).intValue());
 
         List<String> success = new ArrayList<>();
         List<String> fail = new ArrayList<>();
@@ -179,17 +201,17 @@
             fail = vnnoxResultResponse.getData().getFail();
         }
 
-        // fail.addAll(vnnoxResult.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())){
+                n -> {
+                    if (finalSuccess.contains(n.getPlayerId())) {
                         successList.add(n);
-                    }else if(finalFail.contains(n.getPlayerId())){
+                    } else if (finalFail.contains(n.getPlayerId())) {
                         faileList.add(n);
                     }
                 }
@@ -201,6 +223,51 @@
 
         return result;
         // return program;
+    }
+
+
+    //鎺ㄩ�佸畾鏃跺埌LED
+    public Map<String, Object> pushSchedule(Long planId, List<NovaPushResultVO> nova) {
+        PlayPlanNv one = getOne(Wrappers.lambdaQuery(PlayPlanNv.class).eq(PlayPlanNv::getId, planId));
+        List<SchedulesDTO> schedulesDTOS = JSON.parseArray(one.getSchedules(), SchedulesDTO.class);
+        ProgramSchedule programSchedule = new ProgramSchedule();
+        programSchedule.setSchedules(schedulesDTOS);
+        List<String> playerIds = new ArrayList<>();
+        nova.forEach(
+                n -> {
+                    playerIds.add(n.getPlayerId());
+                }
+        );
+        //璁剧疆
+        programSchedule.setPlayerIds(playerIds);
+        VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.timeProgram(programSchedule);
+        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);
+        return result;
     }
 
     /**
@@ -231,6 +298,12 @@
         return null;
     }
 
+    /**
+     * 鑾峰彇鎾斁璁″垝
+     *
+     * @param planId
+     * @return
+     */
     public Object getByPlanId(Long planId) {
         PlayPlanNv byId = getById(planId);
         if (byId == null) {
@@ -240,7 +313,8 @@
         if (byId1 == null) {
             throw new BusinessException("鎵句笉鍒拌鑺傜洰");
         }
-        List schedule = JSON.parseObject(byId.getSchedule(), List.class);
+        List schedule = JSON.parseObject(byId.getSchedules(), List.class);
+        Map schedules = JSON.parseObject(byId.getSchedule(), Map.class);
         List pages = JSON.parseObject(byId1.getPages(), List.class);
         Map plan = new HashMap();
         plan.put("planId", byId.getId());
@@ -251,6 +325,7 @@
         plan.put("preview", byId1.getPreview());
         plan.put("pages", pages);
         plan.put("schedule", schedule);
+        plan.put("schedules", schedules);
         return plan;
     }
 }
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 b76aa07..51dd4d0 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.ProgramSchedule;
 import com.sandu.ximon.admin.utils.request.CommonHeader;
 import com.sandu.ximon.admin.dto.nova.PlayerProgram;
 import com.sandu.ximon.admin.utils.response.VnnoxResultResponse;
@@ -48,7 +49,7 @@
                 new CommonHeader(CommonHeader.JSON, true)
         );
         System.out.println(program.toJson());
-        LogUtils.error("鑺傜洰鎾斁response:"+result);
+        LogUtils.error("鏅�氳妭鐩挱鏀緍esponse:"+result);
         return JSON.parseObject(result,VnnoxResultResponse.class);
     }
 
@@ -57,13 +58,13 @@
      * @param program
      * @return
      */
-    public VnnoxResultResponse timeProgram(PlayerProgram program) {
+    public VnnoxResultResponse timeProgram(ProgramSchedule program) {
         String result = VnnoxRequestUtil.PostWithHeader(
                 VnnoxUrl.getUrl(VnnoxUrl.TIMING_CONTROL),
                 program.toJson(),
                 new CommonHeader(CommonHeader.JSON, true)
         );
-        LogUtils.error("瀹氭椂鑺傜洰鎾斁response:"+result);
+        LogUtils.error("瀹氭椂浠诲姟response:"+result);
         return JSON.parseObject(result,VnnoxResultResponse.class);
     }
 

--
Gitblit v1.9.3