package com.sandu.ximon.admin.service; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.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.*; @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; public boolean insert(ProgramPro programPro) { // SimpleDateFormat sdf=new SimpleDateFormat("yy-MM-dd HH:mm:ss"); // Date date = new Date(); // Program program = new Program(); // try { // program = JsonUtil.convertJsonStringToObject(json,Program.class); // } catch (Exception e) { // e.printStackTrace(); // } 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.setRequestBody(json); // poleXixunPlayer.setCreatTime(sdf.format(date)); poleXixunPlayer.setCreateUserId(SecurityUtils.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); if (byId == null) { throw new BusinessException("未找到该节目"); } String json = byId.getRequestBody(); ProgramPro programPro = new ProgramPro(); try { programPro = JsonUtil.convertJsonStringToObject(json, ProgramPro.class); } catch (Exception e) { e.printStackTrace(); } return programPro; } 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); } } } }