| | |
| | | package com.sandu.ximon.admin.service; |
| | | |
| | | import cn.hutool.http.HttpUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | 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.MinIoConstant; |
| | | import com.sandu.ximon.admin.param.IpVolumeMissionParam; |
| | | import com.sandu.ximon.admin.param.ReceiveParam; |
| | | import com.sandu.ximon.admin.security.SecurityUtils; |
| | | import com.sandu.ximon.admin.utils.TaskAPIUtils; |
| | | import com.sandu.ximon.admin.vo.TaskMediaFileVO; |
| | | import com.sandu.ximon.admin.vo.TaskTerminalVO; |
| | | import com.sandu.ximon.dao.bo.IpVolumeMissionBo; |
| | | import com.sandu.ximon.dao.domain.BroadcastV2TaskFile; |
| | | import com.sandu.ximon.dao.domain.BroadcastV2TaskTerminal; |
| | | import com.sandu.ximon.dao.domain.IpVolumeFile; |
| | | import com.sandu.ximon.dao.domain.IpVolumeMission; |
| | | import com.sandu.ximon.dao.mapper.IpVolumeMissionMapper; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.math.BigInteger; |
| | | import java.util.ArrayList; |
| | | import java.util.HashSet; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | public class IpVolumeMissionService extends BaseServiceImpl<IpVolumeMissionMapper, IpVolumeMission> { |
| | | private final IpVolumeMissionMapper ipVolumeMissionMapper; |
| | | private final ClientService clientService; |
| | | private final IpVolumeFileService ipVolumeFileService; |
| | | private final BroadcastV2TaskFileService broadcastV2TaskFileService; |
| | | private final BroadcastV2TaskTerminalService broadcastV2TaskTerminalService; |
| | | |
| | | public boolean addMission(IpVolumeMissionParam missionparam) { |
| | | IpVolumeMission mission = new IpVolumeMission(); |
| | | |
| | | mission.setUserId(SecurityUtils.getUserId()); |
| | | mission.setUserName(SecurityUtils.getUsername()); |
| | | mission.setClientId(clientService.getClientId()); |
| | | mission.setMissionName(missionparam.getMissionName()); |
| | | mission.setMissionFileId(missionparam.getMissionFileId()); |
| | | mission.setMissionFileName(missionparam.getMissionFileName()); |
| | | mission.setOnDate(missionparam.getOnDate()); |
| | | mission.setOffDate(missionparam.getOffDate()); |
| | | mission.setWeeksRange(missionparam.getWeeksRange()); |
| | | mission.setOnTime(missionparam.getOnTime()); |
| | | mission.setOffTime(missionparam.getOffTime()); |
| | | mission.setMissionVolume(missionparam.getMissionVolume()); |
| | | String taskName = missionparam.getMissionName(); |
| | | |
| | | return save(mission); |
| | | if (null == taskName || "".equals(taskName)) { |
| | | throw new BusinessException("任务名称不可为空"); |
| | | //return 1; |
| | | } |
| | | |
| | | if (missionparam.getFileIds().size() <= 0) { |
| | | throw new BusinessException("播放文件不可为空"); |
| | | //return 2; |
| | | } |
| | | |
| | | if (missionparam.getTerminalIds().size() <= 0) { |
| | | throw new BusinessException("播放终端不可为空"); |
| | | // return 3; |
| | | } |
| | | |
| | | // 封装播放终端 |
| | | List<TaskTerminalVO> taskTerminalVOList = new ArrayList<>(); |
| | | // 封装数据库中任务终端绑定 |
| | | List<BroadcastV2TaskTerminal> taskTerminalEntityList = new ArrayList<>(); |
| | | for(Integer id: new HashSet<>(missionparam.getTerminalIds())) { |
| | | TaskTerminalVO taskTerminalVO = new TaskTerminalVO(); |
| | | BroadcastV2TaskTerminal taskTerminalEntity = new BroadcastV2TaskTerminal(); |
| | | |
| | | taskTerminalVO.setI(id); |
| | | taskTerminalEntity.setTerminalId(id); |
| | | |
| | | taskTerminalVOList.add(taskTerminalVO); |
| | | taskTerminalEntityList.add(taskTerminalEntity); |
| | | } |
| | | |
| | | // 封装播放文件列表 |
| | | List<TaskMediaFileVO> taskMediaFileVOS = new ArrayList<>(); |
| | | List<BroadcastV2TaskFile> taskFileEntityList = new ArrayList<>(); |
| | | int i = 1; |
| | | for(Integer fileId: new HashSet<>(missionparam.getFileIds())) { |
| | | TaskMediaFileVO taskMediaFileVO = new TaskMediaFileVO(); |
| | | BroadcastV2TaskFile taskFileEntity = new BroadcastV2TaskFile(); |
| | | |
| | | taskFileEntity.setFileId(fileId); |
| | | |
| | | IpVolumeFile fileEntity = ipVolumeFileService.getById(fileId); |
| | | String absolutePath = MinIoConstant.getAbsolutePath( |
| | | MinIoConstant.BROADCAST_FILE.getBucketName() + fileEntity.getUserId(), |
| | | fileEntity.getFileName() |
| | | ); |
| | | |
| | | taskMediaFileVO.setI(i); |
| | | i++; |
| | | taskMediaFileVO.setT(0); |
| | | taskMediaFileVO.setN(absolutePath); |
| | | taskMediaFileVO.setS(BigInteger.valueOf(fileEntity.getOriginSize())); |
| | | |
| | | taskMediaFileVOS.add(taskMediaFileVO); |
| | | taskFileEntityList.add(taskFileEntity); |
| | | } |
| | | |
| | | |
| | | missionparam.setFiles(taskMediaFileVOS.toArray(new TaskMediaFileVO[taskMediaFileVOS.size()])); |
| | | missionparam.setTerminals(taskTerminalVOList.toArray(new TaskTerminalVO[taskTerminalVOList.size()])); |
| | | System.out.println("---------------------------"); |
| | | // 向IP音柱服务器添加任务 |
| | | Integer taskId = TaskAPIUtils.addTask(missionparam); |
| | | // System.out.println("---------------------------"); |
| | | //Integer taskId = 1111; |
| | | |
| | | if (null != taskId && taskId != 0) { |
| | | IpVolumeMission byId = getById(taskId); |
| | | for (BroadcastV2TaskTerminal v2TaskTerminal: taskTerminalEntityList) { |
| | | v2TaskTerminal.setTaskId(taskId); |
| | | } |
| | | for (BroadcastV2TaskFile v2TaskFile :taskFileEntityList) { |
| | | v2TaskFile.setTaskId(taskId); |
| | | } |
| | | if (null == byId) { |
| | | // 向数据库添加该任务记录 |
| | | |
| | | IpVolumeMission mission = new IpVolumeMission(); |
| | | mission.setTaskId(taskId); |
| | | mission.setUserId(SecurityUtils.getClientId()); |
| | | if (SecurityUtils.getClientId() != null) { |
| | | mission.setUserName(SecurityUtils.getUsername()); |
| | | } |
| | | mission.setClientId(clientService.getClientId()); |
| | | mission.setMissionName(missionparam.getMissionName()); |
| | | mission.setOnDate(missionparam.getOnDate()); |
| | | mission.setOffDate(missionparam.getOffDate()); |
| | | mission.setWeek(Integer.parseInt(missionparam.getWeek(), 2));//时间由二进制字符串转换为十进制 |
| | | mission.setMissionVolume(missionparam.getMissionVolume()); |
| | | //mission.setMissionFileUrl(missionparam.getFiles().toString()); |
| | | mission.setNumberInPlay(missionparam.getTerminals().length); |
| | | /*TaskTerminalVO[] terminals = missionparam.getTerminals();*/ |
| | | |
| | | System.out.println(save(mission)); |
| | | System.out.println("----------------------------------------------------------"); |
| | | |
| | | |
| | | } else {//[Lcom.sandu.ximon.admin.vo.TaskMediaFileVO;@b5558c3 |
| | | |
| | | IpVolumeMission mission = new IpVolumeMission(); |
| | | mission.setTaskId(taskId); |
| | | mission.setMissionName(missionparam.getMissionName()); |
| | | mission.setOnDate(missionparam.getOnDate()); |
| | | mission.setOffDate(missionparam.getOffDate()); |
| | | mission.setWeek(Integer.parseInt(missionparam.getWeek(), 2));//时间由二进制字符串转换为十进制 |
| | | mission.setMissionVolume(missionparam.getMissionVolume()); |
| | | mission.setMissionFileUrl(missionparam.getFiles().toString()); |
| | | mission.setNumberInPlay(missionparam.getTerminals().length); |
| | | System.out.println(updateById(mission)); |
| | | System.out.println("----------------------------------------------------------"); |
| | | } |
| | | broadcastV2TaskFileService.deleteByTaskId(taskId); |
| | | broadcastV2TaskTerminalService.deleteByTaskId(taskId); |
| | | broadcastV2TaskTerminalService.saveBatch(taskTerminalEntityList); |
| | | broadcastV2TaskFileService.saveBatch(taskFileEntityList); |
| | | |
| | | return true; |
| | | } else { |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | |
| | | public boolean updateMission(Long missionId, IpVolumeMissionParam missionparam) { |
| | | IpVolumeMission byId = getById(missionId); |
| | | if (byId == null) { |
| | | throw new BusinessException("未找到该任务"); |
| | | public Integer updateMission(Integer taskId, IpVolumeMissionParam missionparam) { |
| | | |
| | | String taskName = missionparam.getMissionName(); |
| | | |
| | | if(null == taskName || "".equals(taskName)) { |
| | | return 4; |
| | | } |
| | | IpVolumeMission mission = new IpVolumeMission(); |
| | | mission.setId(missionId); |
| | | /* mission.setUserId(SecurityUtils.getUserId()); |
| | | mission.setUserName(SecurityUtils.getUsername()); |
| | | mission.setClientId(clientService.getClientId());*/ |
| | | mission.setMissionName(missionparam.getMissionName()); |
| | | mission.setMissionFileId(missionparam.getMissionFileId()); |
| | | mission.setMissionFileName(missionparam.getMissionFileName()); |
| | | mission.setOnDate(missionparam.getOnDate()); |
| | | mission.setOffDate(missionparam.getOffDate()); |
| | | mission.setWeeksRange(missionparam.getWeeksRange()); |
| | | mission.setOnTime(missionparam.getOnTime()); |
| | | mission.setOffTime(missionparam.getOffTime()); |
| | | mission.setMissionVolume(missionparam.getMissionVolume()); |
| | | |
| | | HttpUtil.post("123", String.valueOf(mission)); |
| | | if(missionparam.getFileIds().size()<=0){ |
| | | return 5; |
| | | } |
| | | |
| | | return updateById(mission); |
| | | if(missionparam.getTerminalIds().size()<=0){ |
| | | return 6; |
| | | } |
| | | |
| | | |
| | | // 封装播放终端 |
| | | List<TaskTerminalVO> taskTerminalVOList = new ArrayList<>(); |
| | | // 封装数据库中任务终端绑定 |
| | | List<BroadcastV2TaskTerminal> taskTerminalEntityList = new ArrayList<>(); |
| | | for(Integer id: new HashSet<>(missionparam.getTerminalIds())) { |
| | | TaskTerminalVO taskTerminalVO = new TaskTerminalVO(); |
| | | BroadcastV2TaskTerminal taskTerminalEntity = new BroadcastV2TaskTerminal(); |
| | | |
| | | taskTerminalVO.setI(id); |
| | | taskTerminalEntity.setTerminalId(id); |
| | | |
| | | taskTerminalVOList.add(taskTerminalVO); |
| | | taskTerminalEntityList.add(taskTerminalEntity); |
| | | } |
| | | |
| | | // 封装播放文件列表 |
| | | List<TaskMediaFileVO> taskMediaFileVOS = new ArrayList<>(); |
| | | List<BroadcastV2TaskFile> taskFileEntityList = new ArrayList<>(); |
| | | int i = 1; |
| | | for(Integer fileId: new HashSet<>(missionparam.getFileIds())) { |
| | | TaskMediaFileVO taskMediaFileVO = new TaskMediaFileVO(); |
| | | BroadcastV2TaskFile taskFileEntity = new BroadcastV2TaskFile(); |
| | | |
| | | taskFileEntity.setFileId(fileId); |
| | | |
| | | IpVolumeFile fileEntity = ipVolumeFileService.getById(fileId); |
| | | String absolutePath = MinIoConstant.getAbsolutePath( |
| | | MinIoConstant.BROADCAST_FILE.getBucketName() + fileEntity.getUserId(), |
| | | fileEntity.getFileName() |
| | | ); |
| | | |
| | | taskMediaFileVO.setI(i); |
| | | i++; |
| | | taskMediaFileVO.setT(0); |
| | | taskMediaFileVO.setN(absolutePath); |
| | | taskMediaFileVO.setS(BigInteger.valueOf(fileEntity.getOriginSize())); |
| | | |
| | | taskMediaFileVOS.add(taskMediaFileVO); |
| | | taskFileEntityList.add(taskFileEntity); |
| | | } |
| | | |
| | | |
| | | missionparam.setFiles(taskMediaFileVOS.toArray(new TaskMediaFileVO[taskMediaFileVOS.size()])); |
| | | missionparam.setTerminals(taskTerminalVOList.toArray(new TaskTerminalVO[taskTerminalVOList.size()])); |
| | | System.out.println("---------------------------"); |
| | | |
| | | // 向IP音柱服务器更新任务 |
| | | Integer result = TaskAPIUtils.updateTask(taskId, missionparam); |
| | | |
| | | if(result==0){ |
| | | IpVolumeMission byId = getById(taskId); |
| | | for (BroadcastV2TaskTerminal v2TaskTerminal: taskTerminalEntityList) { |
| | | v2TaskTerminal.setTaskId(taskId); |
| | | } |
| | | for (BroadcastV2TaskFile v2TaskFile :taskFileEntityList) { |
| | | v2TaskFile.setTaskId(taskId); |
| | | } |
| | | if (null == byId) { |
| | | // 向数据库添加该任务记录 |
| | | |
| | | IpVolumeMission mission = new IpVolumeMission(); |
| | | mission.setTaskId(taskId); |
| | | mission.setUserId(SecurityUtils.getUserId()); |
| | | if (SecurityUtils.getUserId() != null) { |
| | | mission.setUserName(SecurityUtils.getUsername()); |
| | | } |
| | | mission.setClientId(clientService.getClientId()); |
| | | mission.setMissionName(missionparam.getMissionName()); |
| | | mission.setOnDate(missionparam.getOnDate()); |
| | | mission.setOffDate(missionparam.getOffDate()); |
| | | mission.setWeek(Integer.parseInt(missionparam.getWeek(), 2));//时间由二进制字符串转换为十进制 |
| | | mission.setMissionVolume(missionparam.getMissionVolume()); |
| | | // mission.setMissionFileUrl(missionparam.getFiles().toString()); |
| | | mission.setNumberInPlay(missionparam.getTerminals().length); |
| | | /*TaskTerminalVO[] terminals = missionparam.getTerminals();*/ |
| | | |
| | | System.out.println(save(mission)); |
| | | System.out.println("----------------------------------------------------------"); |
| | | } else {//[Lcom.sandu.ximon.admin.vo.TaskMediaFileVO;@b5558c3 |
| | | |
| | | IpVolumeMission mission = new IpVolumeMission(); |
| | | mission.setTaskId(taskId); |
| | | mission.setMissionName(missionparam.getMissionName()); |
| | | mission.setOnDate(missionparam.getOnDate()); |
| | | mission.setOffDate(missionparam.getOffDate()); |
| | | mission.setWeek(Integer.parseInt(missionparam.getWeek(), 2));//时间由二进制字符串转换为十进制 |
| | | mission.setMissionVolume(missionparam.getMissionVolume()); |
| | | // mission.setMissionFileUrl(missionparam.getFiles().toString()); |
| | | mission.setNumberInPlay(missionparam.getTerminals().length); |
| | | System.out.println(updateById(mission)); |
| | | System.out.println("----------------------------------------------------------"); |
| | | } |
| | | broadcastV2TaskFileService.deleteByTaskId(taskId); |
| | | broadcastV2TaskTerminalService.deleteByTaskId(taskId); |
| | | broadcastV2TaskTerminalService.saveBatch(taskTerminalEntityList); |
| | | broadcastV2TaskFileService.saveBatch(taskFileEntityList); |
| | | return 0; |
| | | |
| | | }else { |
| | | return result; |
| | | } |
| | | } |
| | | |
| | | public boolean deleteMission(Long missionId) { |
| | | IpVolumeMission byId = getById(missionId); |
| | | if (byId == null) { |
| | | throw new BusinessException("未找到该任务"); |
| | | /** |
| | | * 删除任务 |
| | | * @param taskId |
| | | * @return0:成功 1:任务不处于空闲状态 2:服务器删除失败 |
| | | */ |
| | | public Integer deleteMission(Integer taskId) { |
| | | Integer del = TaskAPIUtils.delTask(taskId); |
| | | if(del==0){ |
| | | IpVolumeMission byId = getById(taskId); |
| | | if (byId == null) { |
| | | return -1; |
| | | } |
| | | removeById(taskId); |
| | | broadcastV2TaskFileService.removeById(taskId); |
| | | broadcastV2TaskTerminalService.removeById(taskId); |
| | | return 0; |
| | | } |
| | | return removeById(missionId); |
| | | else { |
| | | return del; |
| | | } |
| | | |
| | | } |
| | | |
| | | public List<IpVolumeMission> listMission(ReceiveParam receiveParam) { |
| | |
| | | return list(wrapper); |
| | | } |
| | | |
| | | public List<IpVolumeMissionBo> missionList() { |
| | | List<IpVolumeMissionBo> ipVolumeMissionBos = ipVolumeMissionMapper.listAllByClientId(); |
| | | |
| | | public void setMissionToData(Long missionId,List<Long> dateIds){ |
| | | for (IpVolumeMissionBo missionBo: ipVolumeMissionBos) { |
| | | missionBo.setFileNames(broadcastV2TaskFileService.findByTaskid(missionBo.getTaskId())); |
| | | |
| | | } |
| | | |
| | | return ipVolumeMissionBos; |
| | | //return new ArrayList<>(); |
| | | } |
| | | |
| | | public void setMissionToData(Long missionId, List<Long> dateIds) { |
| | | |
| | | |
| | | // tudo |