| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.sandu.common.execption.BusinessException; |
| | | import com.sandu.common.service.impl.BaseServiceImpl; |
| | | import com.sandu.common.util.SpringContextHolder; |
| | | import com.sandu.ximon.admin.config.VnnoxConstant; |
| | | 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; |
| | | import com.sandu.ximon.admin.security.SecurityUtils; |
| | | import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils; |
| | | import com.sandu.ximon.admin.utils.VnnoxAPIUtil; |
| | | import com.sandu.ximon.admin.utils.VnnoxProgramAPIUtil; |
| | | import com.sandu.ximon.admin.utils.response.VnnoxResultResponse; |
| | | 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.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; |
| | |
| | | private VnnoxAPIUtil vnnoxAPIUtil; |
| | | private final LEDProgramService ledProgramService; |
| | | private final ClientService clientService; |
| | | private final LEDProgramFileService fileService; |
| | | |
| | | public boolean addPlan(PlayPlanParam playPlanParam) { |
| | | |
| | |
| | | playPlan.setEndTime(playPlanParam.getEndTime()); |
| | | // BeanUtils.copyProperties(playPlanParam, playPlan); |
| | | |
| | | /** |
| | | * 诺瓦定时任务/播放计划新增日志记录开始 |
| | | */ |
| | | boolean save = save(playPlan); |
| | | String content = "{播放计划:" + playPlan.getId() |
| | | + ", 节目名称:" + byId.getName() |
| | | + ", 播放计划计划名称:" |
| | | + playPlan.getName() |
| | | + ", 播放计划计划内容:" |
| | | + JSON.toJSONString(playPlan) |
| | | + ", 定时任务内容:" + playPlan.getSchedules() |
| | | + "}," + " 推送结果:" + save |
| | | + " }"; |
| | | if (playPlanParam.getId() == null) { |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "诺瓦定时任务/播放计划新增", content); |
| | | } else { |
| | | StoreOperationRecordsUtils.storeOperationData(null, null, "诺瓦定时任务/播放计划修改", content); |
| | | } |
| | | /** |
| | | * 诺瓦定时任务/播放计划新增日志记录结束 |
| | | */ |
| | | |
| | | return save(playPlan); |
| | | return save; |
| | | |
| | | } |
| | | |
| | |
| | | throw new BusinessException("操作对象不存在"); |
| | | } |
| | | if (removeById(id)) { |
| | | playPlanParam.setId(id); |
| | | return addPlan(playPlanParam); |
| | | } |
| | | |
| | |
| | | |
| | | public Map<String, Object> pushToLed(Long planId, List<NovaPushResultVO> nova) { |
| | | PushToLed pushToLed = playPlanMapper.pushToLed(planId); |
| | | PlayPlanNv byId = getById(planId); |
| | | if (pushToLed == null) { |
| | | throw new BusinessException("未找到该播放计划"); |
| | | } |
| | |
| | | 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:" + planId |
| | | + ", 节目名称:" + byId.getName() |
| | | + "}," + " 推送结果:" + result |
| | | + " }"; |
| | | StoreOperationRecordsUtils.storeOperationData(listCode, null, "诺瓦推送播放计划", content); |
| | | /** |
| | | * 诺瓦推送节目日志记录结束 |
| | | */ |
| | | |
| | | return result; |
| | | } |
| | | |
| | |
| | | //推送定时到LED |
| | | public Map<String, Object> pushSchedule(Long planId, List<NovaPushResultVO> nova) { |
| | | PlayPlanNv one = getOne(Wrappers.lambdaQuery(PlayPlanNv.class).eq(PlayPlanNv::getId, planId)); |
| | | if (one == null) { |
| | | throw new BusinessException("未找到节目"); |
| | | } |
| | | List<SchedulesDTO> schedulesDTOS = JSON.parseArray(one.getSchedules(), SchedulesDTO.class); |
| | | ProgramSchedule programSchedule = new ProgramSchedule(); |
| | | programSchedule.setSchedules(schedulesDTOS); |
| | |
| | | |
| | | 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:" + one.getId() |
| | | + ", 节目名称:" + one.getName() |
| | | + "}," + " 推送结果:" + result |
| | | + " }"; |
| | | StoreOperationRecordsUtils.storeOperationData(listCode, null, "诺瓦推送定时开关屏", content); |
| | | /** |
| | | * 诺瓦推送定时日志记录结束 |
| | | */ |
| | | return result; |
| | | } |
| | | |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |