package com.sandu.ximon.admin.service; 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.google.gson.Gson; import com.google.gson.GsonBuilder; import com.sandu.common.execption.BusinessException; 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.security.SecurityUtils; import com.sandu.ximon.admin.utils.JsonUtil; import com.sandu.ximon.admin.utils.LightemitUtils; import com.sandu.ximon.admin.utils.LogUtils; import com.sandu.ximon.dao.domain.LEDProgram; import com.sandu.ximon.dao.domain.LedSFile; import com.sandu.ximon.dao.domain.PoleLightemitEntity; import com.sandu.ximon.dao.domain.PoleXixunPlayerEntity; import com.sandu.ximon.dao.mapper.PoleXixunPlayerEntityMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.UUID; /** * 熙讯节目 */ @Service @AllArgsConstructor public class XiXunPlayerService extends BaseServiceImpl { private final PoleXixunPlayerEntityMapper poleXixunPlayerEntityMapper; private final XiXunConfig config; private final LightemitUtils lightemitUtils; private final RealtimeServerBean realtimeServerBean; private final PoleLightemitService poleLightemitService; private final ClientService clientService; private final LedSFileService xiXunFileService; //熙讯节目列表 public LambdaQueryWrapper XixunPlayerList(String keyword) { if (SecurityUtils.getClientId() == null) { if (keyword != null && keyword.isEmpty()) { return Wrappers.lambdaQuery(PoleXixunPlayerEntity.class); } else { return Wrappers.lambdaQuery(PoleXixunPlayerEntity.class).like(PoleXixunPlayerEntity::getProgramName, keyword); } } else { if (keyword != null && keyword.isEmpty()) { return Wrappers.lambdaQuery(PoleXixunPlayerEntity.class).eq(PoleXixunPlayerEntity::getCreateUserId, SecurityUtils.getUserId()) .or(w -> { w.eq(PoleXixunPlayerEntity::getClientId, SecurityUtils.getClientId()); }); } else { return Wrappers.lambdaQuery(PoleXixunPlayerEntity.class).eq(PoleXixunPlayerEntity::getCreateUserId, SecurityUtils.getUserId()) .or(w -> { w.eq(PoleXixunPlayerEntity::getClientId, SecurityUtils.getClientId()); }).like(PoleXixunPlayerEntity::getProgramName, keyword); } } } public boolean insert(ProgramPro programPro) { String json = 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.setTotalSize( Long.parseLong(programPro.getTotalSize()) / 1000000 + "MB"); // programPro.setProgramId(poleXixunPlayer.getProgramId()); // System.out.println(poleXixunPlayer.getProgramId()); poleXixunPlayer.setRequestBody(json); poleXixunPlayer.setScreenShot(programPro.getScreenShot()); // poleXixunPlayer.setCreatTime(sdf.format(date)); poleXixunPlayer.setCreateUserId(SecurityUtils.getUserId()); if (SecurityUtils.getClientId() != null) { poleXixunPlayer.setCreateUserId(SecurityUtils.getUserId()); if (clientService.findClientId()) { poleXixunPlayer.setClientId(clientService.getClientId()); } } return this.save(poleXixunPlayer); } public boolean deleteProgram(Long pid) { PoleXixunPlayerEntity byId = getById(pid); if (byId == null) { throw new BusinessException("未找到该节目"); } return removeById(pid); } public Object getByPid(Long pid) { PoleXixunPlayerEntity byId = getById(pid); List fileIds = new ArrayList<>(); List file = new ArrayList<>(); if (byId == null) { throw new BusinessException("未找到该节目"); } String json = byId.getRequestBody(); ProgramPro programPro = new ProgramPro(); try { programPro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class); programPro.setProgramId(pid); programPro.setScreenShot(byId.getScreenShot()); programPro.getLayers().forEach( layerPro -> { layerPro.getSources().forEach( sourcePro -> { long fileId = Long.parseLong(sourcePro.getId()); file.add(xiXunFileService.getById(fileId)); } ); } ); programPro.setFileList(file); } catch (Exception e) { e.printStackTrace(); } return programPro; } // public Object getProgram(String json) { //// PoleXixunPlayerEntity byId = getById(pid); // List fileIds = new ArrayList<>(); // List file = new ArrayList<>(); // if (json == null) { // throw new BusinessException("未找到该节目"); // } // ProgramPro programPro = new ProgramPro(); // try { // programPro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class); // programPro.setProgramId(pid); // programPro.setScreenShot(byId.getScreenShot()); // programPro.getLayers().forEach( // layerPro -> { // layerPro.getSources().forEach( // sourcePro -> { // long fileId = Long.parseLong(sourcePro.getId()); // file.add(xiXunFileService.getById(fileId)); // } // ); // } // ); // programPro.setFileList(file); // } catch (Exception e) { // e.printStackTrace(); // } // return programPro; // } /** * 推送节目 * * @param programId * @param lightemitIds */ public void videoXixunPlayer(long programId, List lightemitIds) { ProgramPro pro = new ProgramPro(); ItemPro items = new ItemPro(); TaskPro taskPro = new TaskPro(); CommandPro command = new CommandPro(); XixunPlayerPro xixun = new XixunPlayerPro(); PoleXixunPlayerEntity poleXixunPlayerEntity = new PoleXixunPlayerEntity(); items.set_id(UUID.randomUUID().toString()); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("program_id", programId); poleXixunPlayerEntity = this.getOne(queryWrapper); String json = poleXixunPlayerEntity.getRequestBody(); // System.out.println( JSON.parseArray(json, ProgramPro.class)); try { pro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class); } catch (Exception e) { e.printStackTrace(); } items.set_program(pro); items.setRepeatTimes(1); items.setSchedulePros(null);//定时段,不做定时可为null taskPro.set_id(UUID.randomUUID().toString()); taskPro.setName(poleXixunPlayerEntity.getProgramName()); List list2 = new ArrayList<>(); list2.add(items); taskPro.setItems(list2); command.setId(UUID.randomUUID().toString()); //这里是下方的post回调地址,需要修改IP地址 command.setNotificationURL("http://" + config.getIp() + ":" + config.getPort() + "/machine-fast/serv/download/getJSON"); //资源下载链接的请求头 command.setPreDownloadURL("http://" + config.getIp() + ":" + config.getPort() + "/machine-fast/serv/download/downliadFileById/"); command.setTask(taskPro); xixun.set_id(UUID.randomUUID().toString()); xixun.setCommand(command); xixun.setType("commandXixunPlayer"); //命令固定类型,不可更改 Gson gson = new GsonBuilder().disableHtmlEscaping().create(); // String jsondata = JSON.toJSONString(xixun); String jsondata = gson.toJson(xixun); Collection poleLightemitEntities = poleLightemitService.listByIds(lightemitIds); if (poleLightemitEntities != null) { 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); } } } /** * 推送大气数据到熙讯LED */ }