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") 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); } 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("è¯·éæ©æ£ç¡®çææ¾ç±»å"); } if (type == 1 && !"mp4".equals(fileUploadDto.getFileType())) { throw new BusinessException("请ä¸è¦å¨ææ¾è§é¢æ¶éæ©émp4æä»¶"); } else if (type == 2 && (!"jpg".equals(fileUploadDto.getFileType()) && !"gif".equals(fileUploadDto.getFileType()) && !"png".equals(fileUploadDto.getFileType()))) { throw new BusinessException("请ä¸è¦å¨ææ¾å¾çæ¶æ¶éæ©éjpg/gif/pngæä»¶"); } //è·åææledæ°æ® 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("æä»¶ææ¾æå"); } } } 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; } } } 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 { // éè¦å¤ççææ¾å¨IDéå,æå¤æ¯æ100ä¸ªææ¾å¨åæ¶å¤ç private List<String> playerIds; // ææ¾æ¶é´ææï¼å¦æä¸ºç©ºï¼ä¼å ¨å¤©24å°æ¶å¾ªç¯ææ¾ private Map schedule; // éè¦ææ¾ç页é¢å 容éå private List<ProgramDto> pages ; // èç®ä¸è½½è¿åº¦éç¥æ¥å£ï¼ä¼éè¿æ¤æ¥å£å°èç®çä¸è½½è¿åº¦åç»å®¢æ·ï¼æ¥å£çååºæ¶é´ä¸è½è¶ è¿3s private String noticeUrl; @Override public String toJson() { return VnnoxConstant.GSON.toJson(this); } } 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); } // å¾ç转åæbase64å符串 // 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(); // } // // 对åèæ°ç»Base64ç¼ç // BASE64Encoder encoder = new BASE64Encoder(); // System.out.println(encoder.encode(data)); // return encoder.encode(data);// è¿åBase64ç¼ç è¿çåèæ°ç»å符串 // } // 对åèæ°ç»å符串è¿è¡Base64è§£ç å¹¶çæå¾ç 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(); ximon-admin/src/main/java/com/sandu/ximon/admin/security/ceshi.java
ÎļþÒÑɾ³ý ximon-admin/src/main/java/com/sandu/ximon/admin/security/stringTest.java
ÎļþÒÑɾ³ý 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; } } 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); //è®¾ç½®èµæºç±»åï¼å ¶ä»èµæºç±»å请åèxixunplayerèç®jsonè¯´æææ¡£ source.set_type("Video"); if (type == 1) { //è®¾ç½®èµæºç±»åï¼å ¶ä»èµæºç±»å请åèxixunplayerèç®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);//å¦æä¸ºtrueï¼å该èç®æ¥èªç¬¬ä¸æ¹æ¥å£ï¼ä¸æ¯æ¥èªæä»¬èªå·±çwebï¼äºæ¬¡å¼å请å¡å¿ èµå¼ä¸ºtrue pro.setTotalSize(filesize); //ææèµæºæ»åèæ° pro.setVersion(0); //é«çº§èç®=0ï¼ç®æèç®=2 @@ -470,17 +471,29 @@ task.setItems(list2); command.setId(UUID.randomUUID().toString()); //è¿éæ¯ä¸æ¹çpoståè°å°åï¼éè¦ä¿®æ¹IPå°å 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); // } /** 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); 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å±åå¹è®¾ç½® * 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("æ®éèç®ææ¾response:"+result); return JSON.parseObject(result,VnnoxResultResponse.class); } /** * 宿¶èç®ææ¾ * @param program * @return 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/"; } 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;