package com.sandu.ximon.admin.service; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.sandu.common.execption.BusinessException; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.ximon.admin.config.VnnoxConstant; import com.sandu.ximon.admin.param.PlayPlanParam; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.utils.VnnoxAPIUtil; import com.sandu.ximon.admin.utils.VnnoxProgramAPIUtil; import com.sandu.ximon.admin.utils.request.PlayerProgram; import com.sandu.ximon.admin.utils.response.VnnoxResult; import com.sandu.ximon.admin.utils.response.VnnoxResultResponse; import com.sandu.ximon.admin.vo.NovaOpenVO; import com.sandu.ximon.admin.vo.PlansVO; import com.sandu.ximon.dao.domain.*; import com.sandu.ximon.dao.enums.AdministratorEnums; import com.sandu.ximon.dao.mapper.PlayPlanNvMapper; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.util.*; /** * 播放计划 */ @Service @AllArgsConstructor public class PlayPlanNvService extends BaseServiceImpl { private final PlayPlanNvMapper playPlanMapper; private final VnnoxProgramAPIUtil vnnoxProgramAPIUtil; private final LedPlayerEntityService ledPlayerEntityService; private VnnoxAPIUtil vnnoxAPIUtil; private final LEDProgramService ledProgramService; private final ClientService clientService; public boolean addPlan(PlayPlanParam playPlanParam) { PlayPlanNv playPlan = new PlayPlanNv(); if (SecurityUtils.getClientId()!=null){ playPlan.setUserId(SecurityUtils.getUserId()); if(clientService.findClientId()){ playPlan.setClientId(clientService.getClientId()); } } playPlan.setName(playPlanParam.getName()); playPlan.setLedProgramName(playPlanParam.getLedProgramName()); LEDProgram byId = ledProgramService.getById(playPlanParam.getLedProgramId()); if (byId == null) { throw new BusinessException("ledProgramId有误,未找到该节目"); } playPlan.setLedProgramId(playPlanParam.getLedProgramId()); playPlan.setVolume(playPlanParam.getVolume()); playPlan.setApplySeries(playPlanParam.getApplySeries()); playPlan.setStartDate(playPlanParam.getStartDate()); playPlan.setEndDate(playPlanParam.getEndDate()); playPlan.setWeekDays(playPlanParam.getWeekDays()); playPlan.setSchedule(JSON.toJSONString(playPlanParam.getSchedule())); playPlan.setStartTime(playPlanParam.getStartTime()); playPlan.setEndTime(playPlanParam.getEndTime()); // BeanUtils.copyProperties(playPlanParam, playPlan); return save(playPlan); } public boolean updatePlan(Long id, PlayPlanParam playPlanParam) { PlayPlanNv byId = getById(id); if (byId == null) { throw new BusinessException("操作对象不存在"); } PlayPlanNv playPlan = new PlayPlanNv(); playPlan.setId(id); playPlan.setName(playPlanParam.getName()); playPlan.setLedProgramName(playPlanParam.getLedProgramName()); playPlan.setLedProgramId(playPlanParam.getLedProgramId()); playPlan.setVolume(playPlanParam.getVolume()); playPlan.setApplySeries(playPlanParam.getApplySeries()); playPlan.setStartDate(playPlanParam.getStartDate()); playPlan.setEndDate(playPlanParam.getEndDate()); playPlan.setWeekDays(playPlanParam.getWeekDays()); playPlan.setSchedule(JSON.toJSONString(playPlanParam.getSchedule())); playPlan.setStartTime(playPlanParam.getStartTime()); playPlan.setEndTime(playPlanParam.getEndTime()); return updateById(playPlan); } public boolean deletePlan(List ids) { for (Long id : ids) { PlayPlanNv byId = getById(id); if (byId == null) { throw new BusinessException("部分操作对象不存在"); } } return removeByIds(ids); } public Map pushToLed(Long planId, List playerIds) { // public PlayerProgram pushToLed(Long planId){ PushToLed pushToLed = playPlanMapper.pushToLed(planId); PlayPlanNv one = getOne(Wrappers.lambdaQuery(PlayPlanNv.class).eq(PlayPlanNv::getId, planId)); if (pushToLed == null) { throw new BusinessException("未找到该播放计划"); } //List playerIds=new ArrayList<>(); // playerIds.add("872bb51ae0f06e70c21e913cf3dc9e4d"); //List> pages = JSON.parseObject(pushToLed.getPages(), List.class); PlayerProgram program = new PlayerProgram(); program.setPlayerIds(playerIds); System.out.println(pushToLed.getPages()); System.out.println(JSON.parseArray(pushToLed.getPages(), Map.class)); program.setPages(JSON.parseObject(pushToLed.getPages(), List.class)); program.setSchedules(JSON.parseObject(pushToLed.getSchedule(), Map.class)); Map map = JSON.parseObject(pushToLed.getSchedule(), Map.class); program.setNoticeUrl(VnnoxConstant.NOTIFY_URL); VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.timeProgram(program); VnnoxResult vnnoxResult = vnnoxAPIUtil.volChange(playerIds, Integer.valueOf(one.getVolume()).intValue()); // VnnoxResultResponse vnnoxResultResponse = vnnoxProgramAPIUtil.normalProgram(push); List success = new ArrayList<>(); List fail = new ArrayList<>(); if (vnnoxResultResponse.getData() != null) { success = vnnoxResultResponse.getData().getSuccess(); fail = vnnoxResultResponse.getData().getFail(); } // fail.addAll(vnnoxResult.getFail()); Map result = new HashMap<>(); List successList = new ArrayList<>(); List faileList = new ArrayList<>(); for (String playerId : success) { successList.add(ledPlayerEntityService.getByPlayerId(playerId)); } for (String playerId : fail) { faileList.add(ledPlayerEntityService.getByPlayerId(playerId)); } result.put("success", successList); result.put("fail", faileList); result.put("program", program); return result; // return program; } /** * 解析定时 * @param * @return */ public List> parseSchedule(Map map) { // map.get("startDate"); // map.get("endDate"); // List plans = (List) map.get("plans"); // // NovaOpenVO Open1 = new NovaOpenVO(); // Open1.setStartDate(map.get("startDate").toString()); // Open1.setEndDate(map.get("endDate").toString()); // Open1.setExecTime(); return null; } public Object getByPlanId(Long planId) { PlayPlanNv byId = getById(planId); if (byId == null) { throw new BusinessException("找不到该计划"); } LEDProgram byId1 = ledProgramService.getById(byId.getLedProgramId()); if (byId1 == null) { throw new BusinessException("找不到该节目"); } Map schedule = JSON.parseObject(byId.getSchedule(), Map.class); List pages = JSON.parseObject(byId1.getPages(), List.class); Map plan = new HashMap(); plan.put("planId", byId.getId()); plan.put("planName", byId.getName()); plan.put("programId", byId1.getId()); plan.put("programName", byId1.getName()); plan.put("planVolume", byId.getVolume()); plan.put("preview", byId1.getPreview()); plan.put("pages", pages); plan.put("schedule", schedule); return plan; } }