package com.sandu.ximon.admin.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.gson.Gson; import com.sandu.common.execption.BusinessException; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.ximon.admin.config.NginxConfigBean; import com.sandu.ximon.admin.config.RealtimeServerBean; import com.sandu.ximon.admin.entity.*; import com.sandu.ximon.admin.param.PoleBindingParam; import com.sandu.ximon.admin.utils.Constant; import com.sandu.ximon.admin.utils.FileUtil; import com.sandu.ximon.admin.utils.HtmlTemplateUtils; import com.sandu.ximon.admin.utils.LightemitUtils; import com.sandu.ximon.admin.utils.request.SubTitleSet; import com.sandu.ximon.dao.domain.PoleLightemitEntity; import com.sandu.ximon.dao.mapper.PoleLightemitEntityMapper; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.ApplicationContext; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import java.io.File; import java.io.IOException; import java.util.*; /** * 熙讯设备 */ @Service @EnableCaching public class PoleLightemitService extends BaseServiceImpl { @Autowired private PoleBindingService poleBindingService; // @Autowired // PoleStreetlightLightemitService poleStreetlightLightemitService; LightemitUtils lightemitUtils; @Autowired private RealtimeServerBean realtimeServerBean; @Value("${server.port}") private String port; @Autowired ApplicationContext applicationContext; // @Autowired // FfmpegUtils ffmpegUtils; // @Autowired // FileUploadPathBean fileUploadPathBean; @Autowired NginxConfigBean nginxConfigBean; @Autowired PoleLightemitEntityMapper poleLightemitDao; @PostConstruct public void init() { //重新获取单例 lightemitUtils = applicationContext.getBean(LightemitUtils.class); } /*@Override public PageUtils queryPage(Map params, Long userId) { String key = (String)params.get("key"); Long groupId = StringUtils.isNotBlank((String)params.get("group"))? Long.valueOf((String)params.get("group")): null; String order = (String)params.get("order"); String column = (String)params.get("sortby"); IPage page = new Page<>(); //获取角色列表 Long roleId = (sysUserRoleService.queryRoleId(userId)); if(roleId == null || roleId == 0){ return null; } if(roleId.longValue() == Constant.SUPER_ADMIN){ // page = this.page( // new Query().getPage(params), // new QueryWrapper().like(StringUtils.isNotBlank(key),"lightemit_name", key)); if (order != null && order.equals("ASC") && column.equals("isOpen")) { Map map = new HashMap<>(); Integer pg = 1; Integer size = 200; map.put("page",pg); params.put("limit",size); page = baseMapper.superAdminSelectPageVo(PageTransform.transformPage(params),key,groupId,order,column); ledOnlineCheck(page.getRecords()); page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(true)).collect(Collectors.toList())); return new PageUtils(page); }else if (order != null && order.equals("DESC") && column.equals("isOpen")){ Map map = new HashMap<>(); Integer pg = 1; Integer size = 200; map.put("page",pg); params.put("limit",size); page = baseMapper.superAdminSelectPageVo(PageTransform.transformPage(params),key,groupId,order,column); ledOnlineCheck(page.getRecords()); page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(false)).collect(Collectors.toList())); return new PageUtils(page); }else { page = baseMapper.superAdminSelectPageVo(PageTransform.transformPage(params), key, groupId,order,column); } }else if(roleId.longValue() == Constant.ADMIN){ if (order != null && order.equals("ASC") && column.equals("isOpen")) { Map map = new HashMap<>(); Integer pg = 1; Integer size = 200; map.put("page",pg); params.put("limit",size); page = baseMapper.adminSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column); ledOnlineCheck(page.getRecords()); page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(true)).collect(Collectors.toList())); return new PageUtils(page); }else if (order != null && order.equals("DESC") && column.equals("isOpen")){ Map map = new HashMap<>(); Integer pg = 1; Integer size = 200; map.put("page",pg); params.put("limit",size); page = baseMapper.adminSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column); ledOnlineCheck(page.getRecords()); page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(false)).collect(Collectors.toList())); return new PageUtils(page); }else { page = baseMapper.adminSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column); } }else if(roleId.longValue() == Constant.USER){ if (order != null && order.equals("ASC") && column.equals("isOpen")) { Map map = new HashMap<>(); Integer pg = 1; Integer size = 200; map.put("page",pg); params.put("limit",size); page = baseMapper.userSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column); ledOnlineCheck(page.getRecords()); page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(true)).collect(Collectors.toList())); return new PageUtils(page); }else if (order != null && order.equals("DESC") && column.equals("isOpen")){ Map map = new HashMap<>(); Integer pg = 1; Integer size = 200; map.put("page",pg); params.put("limit",size); page = baseMapper.userSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column); ledOnlineCheck(page.getRecords()); page.setRecords(page.getRecords().stream().filter(h-> h.getIsOpen().equals(false)).collect(Collectors.toList())); return new PageUtils(page); }else { page = baseMapper.userSelectPageVo(PageTransform.transformPage(params), userId, key, groupId,order,column); } } ledOnlineCheck(page.getRecords()); return new PageUtils(page); } *//* @Override public List getAll(Long userId) { //获取角色列表 Long roleId = (sysUserRoleService.queryRoleId(userId)); if(roleId == null || roleId == 0){ return null; } List list = null; if(roleId.longValue() == Constant.SUPER_ADMIN){ list = poleLightemitDao.selectAll(); }else if(roleId.longValue() == Constant.ADMIN){ list = poleLightemitDao.selectAllByCompany(userId); }else if(roleId.longValue() == Constant.USER){ list = poleLightemitDao.selectAllByUser(userId); } return list; } */ public List ledOnline(List list) { List onLineList = new ArrayList<>(); for (PoleLightemitEntity poleLightemitEntity : list) { poleLightemitEntity.setIsOpen(lightemitUtils.getIsScreenOpen(poleLightemitEntity.getLightemitControlCode()).contains("true")); if (poleLightemitEntity.getIsOpen()) { onLineList.add(poleLightemitEntity); } } return onLineList; } public void ledOnlineCheck(List list) { for (PoleLightemitEntity poleLightemitEntity : list) { poleLightemitEntity.setIsOpen(lightemitUtils.getIsScreenOpen(poleLightemitEntity.getLightemitControlCode()).contains("true")); } } public void savePoleLightemit(PoleLightemitEntity poleLightemit) { boolean save = this.save(poleLightemit); // 绑定灯杆 if (save && poleLightemit.getStreetlightId() != null) { PoleBindingParam poleBindingParam = new PoleBindingParam(); poleBindingParam.setDeviceCode(poleLightemit.getLightemitControlCode()); poleBindingParam.setDeviceType(1); poleBindingParam.setDeviceName(poleLightemit.getLightemitName()); poleBindingService.bindPole(poleLightemit.getStreetlightId(), poleBindingParam); } // poleStreetlightLightemitService.saveStreetlightLightemit(poleLightemit.getLightemitId(),poleLightemit.getStreetlightId()); } public void updatePoleLightemit(Long ledId, PoleLightemitEntity poleLightemit) { PoleLightemitEntity byId = getById(ledId); if (byId == null) { throw new BusinessException("未找到LED屏"); } poleLightemit.setLightemitId(ledId); boolean b = this.updateById(poleLightemit); // 绑定灯杆 if (b && poleLightemit.getStreetlightId() != null) { //先删除绑定关系 poleBindingService.unBindPole(null, poleLightemit.getLightemitControlCode()); //再绑定 PoleBindingParam poleBindingParam = new PoleBindingParam(); poleBindingParam.setDeviceCode(poleLightemit.getLightemitControlCode()); poleBindingParam.setDeviceType(1); poleBindingParam.setDeviceName(poleLightemit.getLightemitName()); poleBindingService.bindPole(poleLightemit.getStreetlightId(), poleBindingParam); } // poleStreetlightLightemitService.saveStreetlightLightemit(poleLightemit.getLightemitId(),poleLightemit.getStreetlightId()); } public boolean deletePoleLightemit(List ledIds) { List poleLightemitEntities = listByIds(ledIds); // 删除设备绑定 if (poleLightemitEntities != null && poleLightemitEntities.size() != 0) { for (PoleLightemitEntity poleLightemitEntitie : poleLightemitEntities) { if (poleLightemitEntitie.getLightemitControlCode() != null) { //删除绑定关系//先删除绑定关系 poleBindingService.unBindPole(null, poleLightemitEntitie.getLightemitControlCode()); } } } //删除设备 boolean b = removeByIds(ledIds); return b; // poleStreetlightLightemitService.saveStreetlightLightemit(poleLightemit.getLightemitId(),poleLightemit.getStreetlightId()); } /** * 查询权限范围内的所有led屏信息 * * @param * @return */ /* public List selectLightemitByUserId(Long userId) { List list = new ArrayList<>(); Long roleId = sysUserRoleService.queryRoleId(userId); if(roleId == null || roleId == 0){ return new ArrayList<>(); } if(roleId.longValue() == Constant.SUPER_ADMIN){ list = this.list(); }else if(roleId.longValue() == Constant.ADMIN){ list = baseMapper.selectCompanyLightemitByUserId(userId); }else if(roleId.longValue() == Constant.USER){ list = baseMapper.selectLightemitByUserId(userId); } return list; } */ /* 通过屏幕编码查询 */ public PoleLightemitEntity selectByLightemitControlCode(String lightemitControlCode) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("lightemit_control_code", lightemitControlCode); return this.getOne(queryWrapper); } /* led上传图片 */ @Async("taskExecutor") public void photoUpload(String lightemitControlCode, String path, List filenameList, String userName) throws IOException { //获取屏幕宽 String screenWidth = lightemitUtils.getScreenWidth(lightemitControlCode); String screenHeight = lightemitUtils.getScreenHeight(lightemitControlCode); //html地址 String filenameTemp = path + userName + "_" + lightemitControlCode + ".html"; File htmlFile = new File(filenameTemp); if (!htmlFile.exists() || htmlFile.delete()) { htmlFile.createNewFile(); } //获取body的html Map params = new HashMap<>(); params.put("imgList", filenameList); params.put("screenWidth", screenWidth); params.put("screenHeight", screenHeight); String body = new HtmlTemplateUtils().renderPath("classpath:templates/lightemitTemplates/photoTemplates.html", params); boolean flag = new FileUtil().writeToFile(body, filenameTemp); if (flag) { //清屏操作 lightemitUtils.clear(lightemitControlCode); //清除播放列表 lightemitUtils.clearVideoPlay(lightemitControlCode); //清除节目列表 lightemitUtils.clearPlayerTask(lightemitControlCode); //推送图片 lightemitUtils.postHtml(lightemitControlCode, userName); } } /* led上传视频 */ @Async("taskExecutor") public void videoUpload(String lightemitControlCode, String filename, String path, String userName) throws IOException { //获取屏幕宽 String screenWidth = lightemitUtils.getScreenWidth(lightemitControlCode); String screenHeight = lightemitUtils.getScreenHeight(lightemitControlCode); //发送视频至开发板并播放 lightemitUtils.postVideo(screenWidth, screenHeight, filename, lightemitControlCode); //清屏 lightemitUtils.clear(lightemitControlCode); } /** * LED上传单行字幕 */ @Async("taskExecutor") public Boolean subTitleSet(SubTitleSetEntity subTitleSetEntity, String path, String userName) { if (subTitleSetEntity == null) { return false; } if (subTitleSetEntity.getDirection().equals(Constant.LEFT) || subTitleSetEntity.getDirection().equals(Constant.RIGHT)) { //字幕横向滚动 this.BuildHorizonSingSubTitleText(subTitleSetEntity); } else if (subTitleSetEntity.getDirection().equals(Constant.UP) || subTitleSetEntity.getDirection().equals(Constant.DOWN)) { //字幕纵向滚动 try { this.BuildVerticalSingSubTitleText(subTitleSetEntity, path, userName); } catch (IOException e) { return false; } } return true; } /** * LED上传多行字幕 */ @Async("taskExecutor") public Boolean subMultiTitleSet(SubTitleSetEntity subTitleSetEntity, String path, String userName) { try { this.BuildVerticalMultiSubTitleText(subTitleSetEntity, path, userName); return true; } catch (IOException e) { return false; } } /* 删除 */ /* public void deleteByIds(List lightemitIds) { this.removeByIds(lightemitIds); //删除关系表中的数据 poleStreetlightLightemitService.remove( new UpdateWrapper().in("lightemit_id", lightemitIds.toArray())); }*/ /* 熙讯视频设置 */ @Async("taskExecutor") public void videoXixunPlayer(String lightemitControlCode, String ip, String filename, Long filesize, Integer videoTime) { //获取屏幕宽 Integer screenWidth = Integer.valueOf(lightemitUtils.getScreenWidth(lightemitControlCode)); Integer screenHeight = Integer.valueOf(lightemitUtils.getScreenHeight(lightemitControlCode)); Source source = new Source(); Layer layer = new Layer(); Program pro = new Program(); TaskItem items = new TaskItem(); ProgramsTask task = new ProgramsTask(); Command command = new Command(); XixunPlayer xixun = new XixunPlayer(); source.set_id(UUID.randomUUID().toString());//所有_id都可用UUID随机生成 source.setId(filename);//请求头拼接该ID为该资源的完整下载地址 source.set_type("Video"); //设置资源类型,其他资源类型请参考xixunplayer节目json说明文档 source.setFileExt(".mp4"); //资源后缀名 source.setHeight(screenHeight); //资源高度 source.setWidth(screenWidth); //资源宽度 source.setLeft(0); //距左 source.setMd5("dd135d5d2d44d619a542db773ab529a4"); source.setMime("video/mp4"); source.setName(filename); source.setPlayTime(0); //播放起始时间 source.setSize(filesize); //资源字节数,要精准 source.setTimeSpan(videoTime); //该资源播放时长 source.setTop(0); //距顶 List list = new ArrayList(); list.add(source); layer.setSources(list); pro.set_id(UUID.randomUUID().toString()); pro.setHeight(screenHeight); //节目高度 List list1 = new ArrayList(); list1.add(layer); pro.setLayers(list1); pro.setName("demo"); //节目名称 pro.setOthers(true);//如果为true,则该节目来自第三方接口,不是来自我们自己的web,二次开发请务必赋值为true pro.setTotalSize(filesize); //所有资源总字节数 pro.setVersion(0); //高级节目=0,简易节目=2 pro.setWidth(screenWidth); //节目宽度 items.set_id(UUID.randomUUID().toString()); items.set_program(pro); items.setRepeatTimes(1); items.setSchedules(null);//定时段,不做定时可为null task.set_id(UUID.randomUUID().toString()); task.setName("这是一个示例"); List list2 = new ArrayList(); list2.add(items); task.setItems(list2); command.setId(UUID.randomUUID().toString()); //这里是下方的post回调地址,需要修改IP地址 command.setNotificationURL("http://" + ip + ":" + port + "/machine-fast/serv/download/getJSON"); //资源下载链接的请求头 command.setPreDownloadURL("http://" + ip + ":" + port + "/machine-fast/serv/download/downloadFile/"); command.setTask(task); xixun.set_id(UUID.randomUUID().toString()); xixun.setCommand(command); xixun.setType("commandXixunPlayer"); //命令固定类型,不可更改 String jsondata = new Gson().toJson(xixun); lightemitUtils.clear(lightemitControlCode); poleLightemitDao.updateRequestBody(lightemitControlCode, jsondata); lightemitUtils.post(realtimeServerBean.getCommand() + lightemitControlCode, jsondata); } /* 推送天气数据 */ //@Async("taskExecutor") /* public Boolean pushWeather(String lightemitControlCode, PoleSensorEntity sensorEntity, PoleStreetlightEntity streetlightEntity) { if(StringUtils.isBlank(lightemitControlCode)){ return Boolean.valueOf(false); } Integer screenHeight = Integer.parseInt(lightemitUtils.getScreenHeight(lightemitControlCode)); String size = String.valueOf(screenHeight/18); //字幕主体拼接 String body = "" + "

" + (streetlightEntity == null || streetlightEntity.getCity() == null? "": streetlightEntity.getCity().replace("市", "")) + "
" + "温度:" + (sensorEntity == null || sensorEntity.getTemperature() == null? "-": sensorEntity.getTemperature()) + "℃
" + "湿度:" + (sensorEntity == null || sensorEntity.getHumidity() == null? "-": sensorEntity.getHumidity()) + "%RH
" + "亮度:" + (sensorEntity == null || sensorEntity.getBrightness() == null? "-": sensorEntity.getBrightness()) + "lux
" + "风速:" + (sensorEntity == null || sensorEntity.getWindSpeed() == null? "-": sensorEntity.getWindSpeed()) + "m/s
" + "CO2:" + (sensorEntity == null || sensorEntity.getEco2() == null? "-": sensorEntity.getEco2()) + "ppm
" + "甲醛:" + (sensorEntity == null || sensorEntity.getEch2o() == null? "-": sensorEntity.getEch2o()) + "mg/m³
" + "TVOC:" + (sensorEntity == null || sensorEntity.getTvoc() == null? "-": sensorEntity.getTvoc()) + "mg/m³
" + "PM25:" + (sensorEntity == null || sensorEntity.getPm25() == null? "-": sensorEntity.getPm25()) + "mg/m³
" + "PM10:" + (sensorEntity == null || sensorEntity.getPm10() == null? "-": sensorEntity.getPm10()) + "mg/m³
"; //组装请求参数 SubTitleSet subTitleSet = new SubTitleSet(); subTitleSet.html = body; subTitleSet.num = 1; //清屏操作 lightemitUtils.clear(lightemitControlCode); //清除播放列表 lightemitUtils.clearVideoPlay(lightemitControlCode); //清除节目列表 lightemitUtils.clearPlayerTask(lightemitControlCode); try{ lightemitUtils.subTitleSet(subTitleSet, lightemitControlCode, false); return true; }catch (Exception e){ return false; }finally { //一分钟后清除屏幕 new Timer().schedule(new TimerTask() { @Override public void run() { lightemitUtils.clear(lightemitControlCode); //清除播放列表 lightemitUtils.clearVideoPlay(lightemitControlCode); //清除节目列表 lightemitUtils.clearPlayerTask(lightemitControlCode); //推送最后命令 lightemitUtils.sendLastCommand(lightemitControlCode); } }, 60*1000); } }*/ /* 更新请求数据 */ public void updateRequestBody(String ledCode, String postBody) { baseMapper.updateRequestBody(ledCode, postBody); } /* 根据led屏编码获取灯杆所有信息 */ // public PoleStreetlightEntity getStreetlightByLedCode(String ledCode) { // return baseMapper.getStreetlightByLedCode(ledCode); // } /* 根据led屏编码设置音量 */ @Async("taskExecutor") public void setVolume(String lightemitControlCode, Integer volume) { lightemitUtils.setVoiume(lightemitControlCode, volume); } // public List listOfStreetlight(String streetlightId) { // return baseMapper.listOfStreetlight(streetlightId); // } // public List selectLedByStreetlightId(String streetlightId) { // return baseMapper.getLedByStreetlightId(streetlightId); // } /* 上传水平滚动单行字幕 */ private void BuildHorizonSingSubTitleText(SubTitleSetEntity subTitleSetEntity) { //拼装LED屏幕设置请求body SubTitleSet subTitleSet = new SubTitleSet(); subTitleSet.num = subTitleSetEntity.getNum() != null ? subTitleSetEntity.getNum() : subTitleSet.num; subTitleSet.interval = subTitleSetEntity.getInterval() != null ? subTitleSetEntity.getInterval() : subTitleSet.interval; subTitleSet.step = subTitleSetEntity.getStep() != null ? subTitleSetEntity.getStep() : subTitleSet.step; subTitleSet.direction = subTitleSetEntity.getDirection() != null ? subTitleSetEntity.getDirection() : subTitleSet.direction; subTitleSet.align = subTitleSetEntity.getAlign() != null ? subTitleSetEntity.getAlign() : subTitleSet.align; //拼接html 背景默认显色为白色 subTitleSet.html = "" + subTitleSetEntity.getContent() + ""; //获取所有led数据 Collection poleLightemitControllers = this.listByIds(Arrays.asList(subTitleSetEntity.getId())); if (!poleLightemitControllers.isEmpty()) { Iterator iterator = poleLightemitControllers.iterator(); while (iterator.hasNext()) { PoleLightemitEntity poleLightemitEntity = (PoleLightemitEntity) iterator.next(); //清屏操作 lightemitUtils.clear(poleLightemitEntity.getLightemitControlCode()); //清除播放列表 lightemitUtils.clearVideoPlay(poleLightemitEntity.getLightemitControlCode()); //清除节目列表 lightemitUtils.clearPlayerTask(poleLightemitEntity.getLightemitControlCode()); //发送字幕设置请求 lightemitUtils.subTitleSet(subTitleSet, poleLightemitEntity.getLightemitControlCode(), true); } } } /* 上传垂直滚动单行字幕 */ private void BuildVerticalSingSubTitleText(SubTitleSetEntity subTitleSetEntity, String path, String userName) throws IOException { //html地址 //获取所有led数据 Collection poleLightemitControllers = this.listByIds(Arrays.asList(subTitleSetEntity.getId())); if (!poleLightemitControllers.isEmpty()) { Iterator iterator = poleLightemitControllers.iterator(); while (iterator.hasNext()) { PoleLightemitEntity poleLightemitEntity = (PoleLightemitEntity) iterator.next(); String lightemitControlCode = poleLightemitEntity.getLightemitControlCode(); //获取屏幕宽 Integer screenWidth = Integer.valueOf(lightemitUtils.getScreenWidth(lightemitControlCode)); Integer screenHeight = Integer.valueOf(lightemitUtils.getScreenHeight(lightemitControlCode)); String filenameTemp = path + userName + "_" + lightemitControlCode + ".html"; File htmlFile = new File(filenameTemp); if (!htmlFile.exists() || htmlFile.delete()) { htmlFile.createNewFile(); } //若向下滚动,文字顺序相反 if (Constant.DOWN.equals(subTitleSetEntity.getDirection())) { subTitleSetEntity.setContent(StringUtils.reverse(subTitleSetEntity.getContent())); } Map params = new HashMap<>(); params.put("direction", subTitleSetEntity.getDirection()); params.put("screenWidth", screenWidth); params.put("screenHeight", screenHeight); params.put("fontSize", subTitleSetEntity.getFontSize() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontSize()) ? subTitleSetEntity.getFontSize() : "1"); params.put("align", subTitleSetEntity.getAlign()); params.put("fontColor", subTitleSetEntity.getFontColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontColor()) ? subTitleSetEntity.getFontColor() : "#ffffff"); params.put("backgroundColor", subTitleSetEntity.getColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getColor()) ? subTitleSetEntity.getColor() : "#000000"); params.put("interval", subTitleSetEntity.getInterval() != null ? subTitleSetEntity.getInterval() : 50); params.put("step", subTitleSetEntity.getStep() != null ? subTitleSetEntity.getStep() : 1); params.put("num", subTitleSetEntity.getNum() != null ? subTitleSetEntity.getNum() : -1); params.put("contentArray", subTitleSetEntity.getContent().toCharArray()); String body = new HtmlTemplateUtils().renderPath("classpath:templates/lightemitTemplates/buildVerticalSingSubTitleTemplates.html", params); boolean flag = new FileUtil().writeToFile(body, filenameTemp); if (flag) { //清屏操作 lightemitUtils.clear(lightemitControlCode); //清除播放列表 lightemitUtils.clearVideoPlay(lightemitControlCode); //清除节目列表 lightemitUtils.clearPlayerTask(lightemitControlCode); //推送 lightemitUtils.postHtmlUseNginx(lightemitControlCode, userName); } } } } /* 上传垂直滚动多行字幕 */ private void BuildVerticalMultiSubTitleText(SubTitleSetEntity subTitleSetEntity, String path, String userName) throws IOException { //html地址 //获取所有led数据 Collection poleLightemitControllers = this.listByIds(Arrays.asList(subTitleSetEntity.getId())); if (!poleLightemitControllers.isEmpty()) { Iterator iterator = poleLightemitControllers.iterator(); while (iterator.hasNext()) { PoleLightemitEntity poleLightemitEntity = (PoleLightemitEntity) iterator.next(); String lightemitControlCode = poleLightemitEntity.getLightemitControlCode(); //获取屏幕宽 Integer screenWidth = Integer.valueOf(lightemitUtils.getScreenWidth(lightemitControlCode)); Integer screenHeight = Integer.valueOf(lightemitUtils.getScreenHeight(lightemitControlCode)); String filenameTemp = path + userName + "_" + lightemitControlCode + ".html"; File htmlFile = new File(filenameTemp); if (!htmlFile.exists() || htmlFile.delete()) { htmlFile.createNewFile(); } Map params = new HashMap<>(); params.put("direction", subTitleSetEntity.getDirection()); params.put("screenWidth", screenWidth); params.put("screenHeight", screenHeight); params.put("fontSize", subTitleSetEntity.getFontSize() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontSize()) ? subTitleSetEntity.getFontSize() : "1"); params.put("align", subTitleSetEntity.getAlign()); params.put("fontColor", subTitleSetEntity.getFontColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getFontColor()) ? subTitleSetEntity.getFontColor() : "#ffffff"); params.put("backgroundColor", subTitleSetEntity.getColor() != null && StringUtils.isNotBlank(subTitleSetEntity.getColor()) ? subTitleSetEntity.getColor() : "#000000"); params.put("interval", subTitleSetEntity.getInterval() != null ? subTitleSetEntity.getInterval() : 50); params.put("step", subTitleSetEntity.getStep() != null ? subTitleSetEntity.getStep() : 1); params.put("num", subTitleSetEntity.getNum() != null ? subTitleSetEntity.getNum() : -1); params.put("contentArray", subTitleSetEntity.getContent().split("\n")); String body = new HtmlTemplateUtils().renderPath("classpath:templates/lightemitTemplates/buildVerticalSingSubTitleTemplates.html", params); boolean flag = new FileUtil().writeToFile(body, filenameTemp); if (flag) { //清屏操作 lightemitUtils.clear(lightemitControlCode); //清除播放列表 lightemitUtils.clearVideoPlay(lightemitControlCode); //清除节目列表 lightemitUtils.clearPlayerTask(lightemitControlCode); //推送 lightemitUtils.postHtmlUseNginx(lightemitControlCode, userName); } } } } // @Override public void xixunplaySetting(String lightemitControlCode) { //获取屏幕宽 // Integer screenWidth = Integer.valueOf(lightemitUtils.getScreenWidth(lightemitControlCode)); // Integer screenHeight = Integer.valueOf(lightemitUtils.getScreenHeight(lightemitControlCode)); // Source source = new Source(); // Layer layer = new Layer(); // Program pro = new Program(); // TaskItem items = new TaskItem(); // ProgramsTask task = new ProgramsTask(); // Command payload = new Command(); // XixunPlayer xixun = new XixunPlayer(); // source.set_id(UUID.randomUUID().toString());//所有_id都可用UUID随机生成 // source.setId(filename);//请求头拼接该ID为该资源的完整下载地址 // source.set_type("Video"); //设置资源类型,其他资源类型请参考xixunplayer节目json说明文档 // source.setFileExt(".mp4"); //资源后缀名 // source.setHeight(screenHeight); //资源高度 // source.setWidth(screenWidth); //资源宽度 // source.setLeft(0); //距左 // source.setMd5("dd135d5d2d44d619a542db773ab529a4"); // source.setMime("video/mp4"); // source.setName(filename); // source.setPlayTime(0); //播放起始时间 // source.setSize(filesize); //资源字节数,要精准 // source.setTimeSpan(videoTime); //该资源播放时长 // source.setTop(0); //距顶 // List list = new ArrayList(); // list.add(source); // layer.setSources(list); // pro.set_id(UUID.randomUUID().toString()); // pro.setHeight(screenHeight); //节目高度 // List list1=new ArrayList(); // list1.add(layer); // pro.setLayers(list1); // pro.setName("demo"); //节目名称 // pro.setOthers(true);//如果为true,则该节目来自第三方接口,不是来自我们自己的web,二次开发请务必赋值为true // pro.setTotalSize(filesize); //所有资源总字节数 // pro.setVersion(0); //高级节目=0,简易节目=2 // pro.setWidth(screenWidth); //节目宽度 // items.set_id(UUID.randomUUID().toString()); // items.set_program(pro); // items.setRepeatTimes(1); // items.setSchedules(null);//定时段,不做定时可为null // task.set_id(UUID.randomUUID().toString()); // task.setName("这是一个示例"); // List list2=new ArrayList(); // list2.add(items); // task.setItems(list2); // payload.setId(UUID.randomUUID().toString()); // //这里是下方的post回调地址,需要修改IP地址 // payload.setNotificationURL("http://" + ip + ":" + port + "/machine-fast/serv/download/getJSON"); // //资源下载链接的请求头 // payload.setPreDownloadURL("http://" + ip + ":" + port + "/machine-fast/serv/download/downloadFile/"); // payload.setTask(task); // xixun.set_id(UUID.randomUUID().toString()); // xixun.setCommand(payload); // xixun.setType("commandXixunPlayer"); //命令固定类型,不可更改 // String jsondata = new Gson().toJson(xixun); // lightemitUtils.clear(lightemitControlCode); // this.updateRequestBody(lightemitControlCode,jsondata); // lightemitUtils.post(realtimeServerBean.getCommand() + lightemitControlCode,jsondata); } }