From dda268997ca8f8a364f7c19b45d7a43a50a98efe Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期二, 25 十月 2022 18:00:11 +0800
Subject: [PATCH] changes

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/XiXunPlayerService.java |  194 ++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 147 insertions(+), 47 deletions(-)

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 af2a95c..102a414 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,14 +1,16 @@
 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;
+import com.github.pagehelper.PageHelper;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.sandu.common.execption.BusinessException;
+import com.sandu.common.object.BaseConditionVO;
 import com.sandu.common.service.impl.BaseServiceImpl;
 import com.sandu.ximon.admin.config.RealtimeServerBean;
-import com.sandu.ximon.admin.config.XiXunConfig;
 import com.sandu.ximon.admin.entity.*;
 import com.sandu.ximon.admin.manager.iot.frame.inner.report.A5AtmosphereHeartbeatReportInnerFrame;
 import com.sandu.ximon.admin.security.SecurityUtils;
@@ -21,6 +23,7 @@
 import com.sandu.ximon.dao.domain.Pole;
 import com.sandu.ximon.dao.domain.PoleLightemitEntity;
 import com.sandu.ximon.dao.domain.PoleXixunPlayerEntity;
+import com.sandu.ximon.dao.enums.OrderByEnums;
 import com.sandu.ximon.dao.mapper.PoleXixunPlayerEntityMapper;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
@@ -36,8 +39,6 @@
 @AllArgsConstructor
 public class XiXunPlayerService extends BaseServiceImpl<PoleXixunPlayerEntityMapper, PoleXixunPlayerEntity> {
 
-    private final PoleXixunPlayerEntityMapper poleXixunPlayerEntityMapper;
-    private final XiXunConfig config;
     private final LightemitUtils lightemitUtils;
     private final RealtimeServerBean realtimeServerBean;
     private final PoleLightemitService poleLightemitService;
@@ -68,22 +69,43 @@
         }
     }
 
+    public List<PoleXixunPlayerEntity> listProgram(BaseConditionVO baseConditionVO, Integer order, Integer seq, String keyword) {
+        LambdaQueryWrapper<PoleXixunPlayerEntity> wrapper = XixunPlayerList(keyword);
+        //鎺掑簭瀛楁
+        String orderByResult = "program_id";
+        //姝e簭銆佸�掑彊
+        String orderBySeq = OrderByEnums.ASC.getCode();
+        if (order != null) {
+            switch (order) {
+                case 1:
+                    orderByResult = OrderByEnums.LED_S_PROGRAM_CREATE_TIME.getCode();
+                    break;
+                default:
+            }
+        }
+        if (seq != null) {
+            switch (seq) {
+                case 1:
+                    orderBySeq = " ASC";
+                    break;
+                case 2:
+                    orderBySeq = " DESC";
+                    break;
+                default:
+                    break;
+            }
+        }
+        //鎺掑簭鏂瑰紡
+        String orderBy = orderByResult + " " + orderBySeq;
+        if (baseConditionVO != null) {
+            PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize(), orderBy);
+        }
+        return list(wrapper);
+    }
+
     public boolean insert(ProgramPro programPro) {
-        programPro.getLayers().forEach(
-                layerPro -> {
-                    layerPro.getSources().forEach(
-                            sourcePro -> {
-                                long fileId = Long.parseLong(sourcePro.getId());
-                                LedSFile file = xiXunFileService.getById(fileId);
-                                String fileUrl = file.getFileUrl();
-                                String[] split = fileUrl.split("/");
-                                sourcePro.setId(split[split.length-1]);
-                                sourcePro.setMd5(file.getMd5());
-                            }
-                    );
-                }
-        );
-        String json = JsonUtil.jsonObj2Sting(programPro);
+        Gson gson = new GsonBuilder().disableHtmlEscaping().create();
+        String json = gson.toJson(programPro);
         PoleXixunPlayerEntity poleXixunPlayer = new PoleXixunPlayerEntity();
         poleXixunPlayer.setProgramCode(programPro.get_id());
         poleXixunPlayer.setProgramName(programPro.getName());
@@ -106,11 +128,51 @@
                 + "锛� 鑺傜洰鍚嶇О锛�" + poleXixunPlayer.getProgramName()
                 + "锛� 鑺傜洰鍐呭锛�" + json
                 + " }";
-        StoreOperationRecordsUtils.storeOperationData(null, null, "鐔欐睕鑺傜洰鏇存敼", content);
+        StoreOperationRecordsUtils.storeOperationData(null, null, "鐔欐睕鑺傜洰娣诲姞", content);
         /**
          * 鐔欐睕鑺傜洰鏂板鏃ュ織璁板綍缁撴潫
          */
         return save;
+    }
+
+    /**
+     * 缂栬緫
+     *
+     * @param programPro
+     * @return
+     */
+    public boolean update(ProgramPro programPro) {
+        Gson gson = new GsonBuilder().disableHtmlEscaping().create();
+        String json = gson.toJson(programPro);
+//        String jsondata = JsonUtil.jsonObj2Sting(programPro);
+        PoleXixunPlayerEntity poleXixunPlayer = new PoleXixunPlayerEntity();
+        poleXixunPlayer.setProgramCode(programPro.get_id());
+        poleXixunPlayer.setProgramName(programPro.getName());
+        poleXixunPlayer.setHeight(programPro.getHeight());
+        poleXixunPlayer.setWidth(programPro.getWidth());
+        poleXixunPlayer.setTotalSize((float) programPro.getTotalSize() / 1000000 + "MB");
+        poleXixunPlayer.setRequestBody(json);
+        poleXixunPlayer.setScreenShot(programPro.getScreenShot());
+        if (SecurityUtils.getClientId() != null) {
+            poleXixunPlayer.setCreateUserId(SecurityUtils.getUserId());
+            if (clientService.findClientId()) {
+                poleXixunPlayer.setClientId(clientService.getClientId());
+            }
+        }
+        poleXixunPlayer.setProgramId(programPro.getProgramId());
+        boolean updateResult = updateById(poleXixunPlayer);
+        /**
+         * 鐔欐睕鑺傜洰鏂板鏃ュ織璁板綍寮�濮�
+         */
+        String content = "{鑺傜洰id锛�" + poleXixunPlayer.getProgramId()
+                + "锛� 鑺傜洰鍚嶇О锛�" + poleXixunPlayer.getProgramName()
+                + "锛� 鑺傜洰鍐呭锛�" + json
+                + " }";
+        StoreOperationRecordsUtils.storeOperationData(null, null, "鐔欐睕鑺傜洰缂栬緫", content);
+        /**
+         * 鐔欐睕鑺傜洰鏂板鏃ュ織璁板綍缁撴潫
+         */
+        return updateResult;
     }
 
     public boolean deleteProgram(Long pid) {
@@ -141,7 +203,9 @@
         String json = byId.getRequestBody();
         ProgramPro programPro = new ProgramPro();
         try {
-            programPro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class);
+            Gson gson = new GsonBuilder().disableHtmlEscaping().create();
+//            programPro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class);
+            programPro = gson.fromJson(json, ProgramPro.class);
             programPro.setProgramId(pid);
             programPro.setScreenShot(byId.getScreenShot());
             programPro.getLayers().forEach(
@@ -168,58 +232,105 @@
      * @param programId
      * @param lightemitIds
      */
-    public void videoXixunPlayer(long programId, List<Long> lightemitIds) {
+    public List<Map> videoXixunPlayer(long programId, List<Long> lightemitIds) {
+        //璁板綍鎿嶄綔缁撴灉
+        List<Map> mapList = new ArrayList<>();
 
-        ProgramPro pro = new ProgramPro();
+
         ItemPro items = new ItemPro();
         TaskPro taskPro = new TaskPro();
         CommandPro command = new CommandPro();
         XixunPlayerPro xixun = new XixunPlayerPro();
-        PoleXixunPlayerEntity poleXixunPlayerEntity = new PoleXixunPlayerEntity();
+
+        PoleXixunPlayerEntity poleXixunPlayerEntity;
         items.set_id(UUID.randomUUID().toString());
         QueryWrapper<PoleXixunPlayerEntity> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("program_id", programId);
         poleXixunPlayerEntity = this.getOne(queryWrapper);
+        if (poleXixunPlayerEntity == null) {
+            throw new BusinessException("鑺傜洰鏁版嵁寮傚父锛�");
+        }
+
         String json = poleXixunPlayerEntity.getRequestBody();
+        if (StringUtils.isEmpty(json)) {
+            throw new BusinessException("鑺傜洰鏁版嵁寮傚父锛�");
+        }
 
-//        System.out.println( JSON.parseArray(json, ProgramPro.class));
-
+        ProgramPro pro;
         try {
             pro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class);
+            pro.getLayers().forEach(layerPro -> {
+                layerPro.getSources().forEach(sourcePro -> {
+                    long fileId = Long.parseLong(sourcePro.getId());
+                    LedSFile file = xiXunFileService.getById(fileId);
+                    if (file != null) {
+                        String fileUrl = file.getFileUrl();
+                        String[] split = fileUrl.split("/");
+                        sourcePro.setId(split[split.length - 1]);
+                        sourcePro.setMd5(file.getMd5());
+                    }
+                });
+            });
         } catch (Exception e) {
             e.printStackTrace();
+            throw new BusinessException("鑺傜洰鏁版嵁寮傚父锛�");
         }
         items.set_program(pro);
         items.setRepeatTimes(1);
-        items.setSchedulePros(null);//瀹氭椂娈碉紝涓嶅仛瀹氭椂鍙负null
+        //瀹氭椂娈碉紝涓嶅仛瀹氭椂鍙负null
+        items.setSchedulePros(null);
+
         taskPro.set_id(UUID.randomUUID().toString());
         taskPro.setName(poleXixunPlayerEntity.getProgramName());
+
         List<ItemPro> list2 = new ArrayList<>();
         list2.add(items);
         taskPro.setItems(list2);
+
         command.setId(UUID.randomUUID().toString());
-//        //杩欓噷鏄笅鏂圭殑post鍥炶皟鍦板潃锛岄渶瑕佷慨鏀笽P鍦板潃
+        //杩欓噷鏄笅鏂圭殑post鍥炶皟鍦板潃锛岄渶瑕佷慨鏀笽P鍦板潃
         command.setNotificationURL("");
-        //璧勬簮涓嬭浇閾炬帴鐨勮姹傚ご
+        //璧勬簮涓嬭浇閾炬帴鐨勮姹傚ご锛岄樋閲屼簯鍥剧墖涓嬭浇鍦板潃澶�
         command.setPreDownloadURL("https://ximonsmart.oss-cn-shanghai.aliyuncs.com/");
         command.setTask(taskPro);
+
         xixun.set_id(UUID.randomUUID().toString());
         xixun.setCommand(command);
-        xixun.setType("commandXixunPlayer");    //鍛戒护鍥哄畾绫诲瀷锛屼笉鍙洿鏀�
+        //鍛戒护鍥哄畾绫诲瀷锛屼笉鍙洿鏀�
+        xixun.setType("commandXixunPlayer");
 
 
         Gson gson = new GsonBuilder().disableHtmlEscaping().create();
-//        String jsondata = JSON.toJSONString(xixun);
         String jsondata = gson.toJson(xixun);
+        System.out.println("鎺ㄩ�佸唴瀹�" + JSONUtil.toJsonStr(jsondata));
+
 
         Collection<PoleLightemitEntity> poleLightemitEntities = poleLightemitService.listByIds(lightemitIds);
 
         if (poleLightemitEntities != null) {
+            Map map;
             for (PoleLightemitEntity entity : poleLightemitEntities) {
-                lightemitUtils.clear(entity.getLightemitControlCode());
-                poleLightemitService.updateRequestBody(entity.getLightemitControlCode(), jsondata);
-                String post = lightemitUtils.post(realtimeServerBean.getCommand() + entity.getLightemitControlCode(), jsondata);
-                LogUtils.error("缁撴灉:" + post);
+                map = new LinkedHashMap();
+                String clearResult = lightemitUtils.clear(entity.getLightemitControlCode());
+                if (clearResult.contains("does not exist")) {
+                    map.put("LightemitId", entity.getLightemitId());
+                    map.put("Result", "澶辫触");
+                    mapList.add(map);
+                } else {
+                    poleLightemitService.updateRequestBody(entity.getLightemitControlCode(), jsondata);
+                    String post = lightemitUtils.post(realtimeServerBean.getCommand() + entity.getLightemitControlCode(), jsondata);
+                    //{"_type":"success","_id":"ce8dc3ff-dc88-43b7-8f55-60abd8700f1a","timestamp":1653555160535}
+                    if (post.startsWith("{") && post.endsWith("}") && post.contains("_type\":\"success")) {
+                        map.put("LightemitId", entity.getLightemitId());
+                        map.put("Result", "鎴愬姛");
+                        mapList.add(map);
+                    } else {
+                        map.put("LightemitId", entity.getLightemitId());
+                        map.put("Result", "澶辫触");
+                        mapList.add(map);
+                    }
+                    LogUtils.error("缁撴灉:" + post);
+                }
             }
         }
 
@@ -239,6 +350,8 @@
         /**
          * 鐔欐睕鑺傜洰鎺ㄩ�佹棩蹇楄褰曠粨鏉�
          */
+
+        return mapList;
     }
 
 
@@ -295,19 +408,6 @@
                     lightemitUtils.clearPlayerTask(lightemitControlCode);
                     //鎺ㄩ�佹渶鍚庡懡浠�
                     lightemitUtils.sendLastCommand(lightemitControlCode);
-
-                    /**
-                     * 鐔欐睕澶ф皵鏁版嵁鎺ㄩ�佹棩蹇楄褰曞紑濮�
-                     //                     */
-//                    String content = "{璁惧code锛�" + lightemitControlCode
-//                            + "锛� 鎺ㄩ�佸唴瀹癸細" + body
-//                            + " }";
-//                    List<String> listCode = new ArrayList<>();
-//                    listCode.add(lightemitControlCode);
-//                    StoreOperationRecordsUtils.storeOperationData(listCode, null, "鐔欐睕澶ф皵鏁版嵁鎺ㄩ��", content);
-                    /**
-                     * 鐔欐睕澶ф皵鏁版嵁鎺ㄩ�佹棩蹇楄褰曠粨鏉�
-                     */
                 }
             }, 60 * 1000);
         }

--
Gitblit v1.9.3