2021与蓝度共同重构项目,服务端
liuhaonan
2021-12-31 0af78b53f3e2b272ea2ec6ff923abe3b9815b19f
功能完善
已修改11个文件
671 ■■■■ 文件已修改
dao/src/main/java/com/sandu/ximon/dao/domain/IpVolumeFile.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/IpVolumeMission.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/IpVolumeMissionMapper.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/IpVolumeFileMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/IpVolumeMissionMapper.xml 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/IpVolumeMissionController.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/param/IpVolumeFileParam.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/param/IpVolumeMissionParam.java 141 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeFileService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeMissionService.java 323 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/resources/application-dev.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/IpVolumeFile.java
@@ -44,12 +44,12 @@
    /**
     * 文件大小
     */
    private String fileSize;
    private Double fileSize;
    /**
     * 
     */
    private String fileUrl;
    private Long originSize;
    /**
     * 创建时间
dao/src/main/java/com/sandu/ximon/dao/domain/IpVolumeMission.java
@@ -4,36 +4,42 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.sandu.common.mybatis.JsonIntegerArrayTypeHandler;
import java.io.Serializable;
import java.math.BigInteger;
import java.time.LocalDateTime;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
/**
 * ip音柱任务
 *
 * @TableName ip_volume_mission
 */
@TableName(value ="ip_volume_mission")
@TableName(value = "ip_volume_mission")
@Data
public class IpVolumeMission implements Serializable {
    /**
     *
     *
     */
    @TableId
    private Long id;
    private Integer taskId;
    /**
     *
     *
     */
    private Long userId;
    /**
     *
     *
     */
    private String userName;
    /**
     *
     */
    private Long clientId;
    /**
@@ -42,24 +48,14 @@
    private String missionName;
    /**
     * 播放文件
     * 文件url
     */
    private String missionFileName;
    /**
     * 播放文件id
     */
    private Long missionFileId;
    private String missionFileUrl;
    /**
     * 播放终端数量
     */
    private Integer numberInPlay;
    /**
     * 在线状态
     */
    private Integer onLineState;
    /**
     * 创建时间
@@ -69,33 +65,28 @@
    /**
     * 开始日期
     */
    private String onDate;
    private BigInteger onDate;
    /**
     * 结束日期
     */
    private String offDate;
    private BigInteger offDate;
    /**
     * 星期范围
     */
    @TableField(typeHandler = JsonIntegerArrayTypeHandler.class)
    private String weeksRange;
    /**
     * 开始时刻
     */
    private String onTime;
    /**
     * 结束时刻
     */
    private String offTime;
    private Integer week;
    /**
     * 任务音量
     */
    private String missionVolume;
    private Integer missionVolume;
    /*@TableField
    private List<IpVolumeFile> files;*/
    /*@TableField
    private List<String> fileNames;*/
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
dao/src/main/java/com/sandu/ximon/dao/mapper/IpVolumeMissionMapper.java
@@ -1,8 +1,11 @@
package com.sandu.ximon.dao.mapper;
import com.sandu.ximon.dao.domain.IpVolumeMission;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sandu.ximon.dao.bo.IpVolumeMissionBo;
import com.sandu.ximon.dao.domain.IpVolumeMission;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
 * @Entity com.sandu.ximon.dao.domain.IpVolumeMission
@@ -10,6 +13,9 @@
@Mapper
public interface IpVolumeMissionMapper extends BaseMapper<IpVolumeMission> {
   List<IpVolumeMissionBo> listAllByClientId();
}
dao/src/main/resources/mapper/IpVolumeFileMapper.xml
@@ -10,14 +10,14 @@
            <result property="userName" column="user_name" jdbcType="VARCHAR"/>
            <result property="clientId" column="client_id" jdbcType="BIGINT"/>
            <result property="fileName" column="file_name" jdbcType="VARCHAR"/>
            <result property="fileSize" column="file_size" jdbcType="VARCHAR"/>
            <result property="fileUrl" column="file_url" jdbcType="VARCHAR"/>
            <result property="fileSize" column="file_size" jdbcType="DOUBLE"/>
            <result property="originSize" column="origin_size" jdbcType="BIGINT"/>
            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
    </resultMap>
    <sql id="Base_Column_List">
        id,user_id,user_name,
        client_id,file_name,file_size,
        file_url,create_time
        origin_size,create_time
    </sql>
</mapper>
dao/src/main/resources/mapper/IpVolumeMissionMapper.xml
@@ -5,31 +5,56 @@
<mapper namespace="com.sandu.ximon.dao.mapper.IpVolumeMissionMapper">
    <resultMap id="BaseResultMap" type="com.sandu.ximon.dao.domain.IpVolumeMission">
        <id property="id" column="id" jdbcType="BIGINT"/>
        <id property="taskId" column="task_id" jdbcType="INTEGER"/>
        <result property="userId" column="user_id" jdbcType="BIGINT"/>
        <result property="userName" column="user_name" jdbcType="VARCHAR"/>
        <result property="clientId" column="client_id" jdbcType="BIGINT"/>
        <result property="missionName" column="mission_name" jdbcType="VARCHAR"/>
        <result property="missionFileName" column="mission_file_name" jdbcType="VARCHAR"/>
        <result property="missionFileId" column="mission_file_id" jdbcType="BIGINT"/>
        <result property="missionFileUrl" column="mission_file_url" jdbcType="VARCHAR"/>
        <result property="numberInPlay" column="number_in_play" jdbcType="INTEGER"/>
        <result property="onLineState" column="on_line_state" jdbcType="INTEGER"/>
        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
        <result property="onDate" column="on_date" jdbcType="VARCHAR"/>
        <result property="offDate" column="off_date" jdbcType="VARCHAR"/>
        <result property="weeksRange" column="weeks_ range"
                typeHandler="com.sandu.common.mybatis.JsonStringArrayTypeHandler"/>
        <result property="onTime" column="on_time" jdbcType="VARCHAR"/>
        <result property="offTime" column="off_time" jdbcType="VARCHAR"/>
        <result property="missionVolume" column="mission_volume" jdbcType="VARCHAR"/>
        <result property="onDate" column="on_date" jdbcType="BIGINT"/>
        <result property="offDate" column="off_date" jdbcType="BIGINT"/>
        <result property="week" column="week" jdbcType="INTEGER"/>
        <result property="missionVolume" column="mission_volume" jdbcType="INTEGER"/>
        <result property="fileName" column="file_name" jdbcType="VARCHAR"/>
    </resultMap>
    <sql id="Base_Column_List">
        id
        task_id
        ,user_id,user_name,
        mission_name,mission_file_name,mission_file_id,
        number_in_play,on_line_state,create_time,
        on_date,off_date,weeks_ range,
        on_time,off_time,mission_volume
        client_id,mission_name,mission_file_url,
        number_in_play,create_time,on_date,
        off_date,week,mission_volume
    </sql>
    <select id="listAllByClientId" resultType="com.sandu.ximon.dao.bo.IpVolumeMissionBo">
        SELECT
            t1.task_id,
            t1.mission_name,
            t1.number_in_play,
            t1.create_time,
            t1.user_name
        FROM
            ip_volume_mission t1
                JOIN ip_volume_file t2
                JOIN broadcast_v2_task_file t3 ON t1.task_id = t3.task_id
                AND t2.id = t3.file_id group by task_id
    </select>
    <!-- SELECT
     t1.task_id,
     t1.mission_name,
     t1.number_in_play,
     t1.create_time,
     t1.user_name,
     t2.file_name
     FROM
     ip_volume_mission t1
     JOIN ip_volume_file t2
     JOIN broadcast_v2_task_file t3 ON t1.task_id = t3.task_id
     AND t2.id = t3.file_id-->
</mapper>
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/IpVolumeMissionController.java
@@ -19,28 +19,71 @@
    private final IpVolumeMissionService ipVolumeMissionService;
    /**
     *
     * @param missionParam
     * @return
     */
    @PostMapping("/add")
    public ResponseVO<Object> addMission(@RequestBody IpVolumeMissionParam missionParam) {
        return ResponseUtil.success(ipVolumeMissionService.addMission(missionParam));
    }
    @GetMapping("/update/{id}")
    public ResponseVO<Object> updateMission(@PathVariable Long id, @RequestBody IpVolumeMissionParam missionParam) {
        return ResponseUtil.success(ipVolumeMissionService.updateMission(id, missionParam));
    /**
     *
     * @param taskId
     * @param missionParam
     * @return  0:成功 1:服务器无该任务 2:任务正在执行,无法修改 3:服务器修改失败
     *       4:任务名称不可为空  5:文件列表不可为空 6:终端列表不可为空
     */
    @PostMapping("/update/{taskId}")
    public ResponseVO<Object> updateMission(@PathVariable Integer taskId, @RequestBody IpVolumeMissionParam missionParam) {
        Integer result = ipVolumeMissionService.updateMission(taskId, missionParam);
        if(result == 0){
            return ResponseUtil.success("修改成功");
        }else if(result == 1){
            return ResponseUtil.fail("服务器无该任务");
        }else if(result == 2){
            return ResponseUtil.fail("任务正在执行,无法修改");
        }else if(result == 3){
            return ResponseUtil.fail("服务器修改失败");
        }else if(result == 4){
            return ResponseUtil.fail("任务名称不可为空");
        }else if(result == 5){
            return ResponseUtil.fail("文件列表不可为空");
        }else if(result == 6){
            return ResponseUtil.fail("终端列表不可为空");
        }else {
            return ResponseUtil.fail("未知错误");
        }
    }
    @GetMapping("/delete/{id}")
    public ResponseVO<Object> deleteMission(@PathVariable Long id) {
        return ResponseUtil.success(ipVolumeMissionService.deleteMission(id));
    @PostMapping("/delete/{taskId}")
    public ResponseVO<Object> deleteMission(@PathVariable Integer taskId) {
        //  0:成功   1:任务不处于空闲状态 2:服务器删除失败
        Integer result = ipVolumeMissionService.deleteMission(taskId);
        if(result == 0) {
            return ResponseUtil.success("删除成功");
        }else if(result == 1){
            return ResponseUtil.fail("任务正在执行中");
        }else if(result == 2){
            return ResponseUtil.fail("服务器删除失败");
        }else if(result==-1){
            return ResponseUtil.success("服务器删除成功,数据库未找到该任务");
        } else{
            return ResponseUtil.fail("未知错误");
        }
    }
    // @AnonymousAccess
    @PostMapping("/list")
    @GetMapping("/list")
    public ResponseVO<Object> listMission() {
        //List<LampPost> list = lampPostService.list();
        // return ResponseUtil.success(list);
        return ResponseUtil.success(ipVolumeMissionService.list());
       // return ResponseUtil.success(ipVolumeMissionService.list());
        // todo
        return ResponseUtil.success(ipVolumeMissionService.missionList());
    }
}
ximon-admin/src/main/java/com/sandu/ximon/admin/param/IpVolumeFileParam.java
@@ -12,8 +12,10 @@
public class IpVolumeFileParam {
    private String fileName;
    private String fileSize;
    private String fileSize;//LCD用
    private Double fileSizeIp;//ip音柱用
    private String fileUrl;
    private Long originSize;//ip音柱用
    private String fileType;
}
ximon-admin/src/main/java/com/sandu/ximon/admin/param/IpVolumeMissionParam.java
@@ -2,9 +2,14 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.sandu.common.mybatis.JsonIntegerArrayTypeHandler;
import com.sandu.ximon.admin.vo.TaskMediaFileVO;
import com.sandu.ximon.admin.vo.TaskRunTimeVO;
import com.sandu.ximon.admin.vo.TaskTerminalVO;
import lombok.Data;
import java.math.BigInteger;
import java.time.LocalDateTime;
import java.util.List;
/**
 * @Author liuhaonan
@@ -14,47 +19,109 @@
@Data
public class IpVolumeMissionParam {
    /**
     * 音柱任务名称
     */
    private String missionName;
    /**
     * 播放文件
     */
    private String missionFileName;
    /**
     * 播放文件id
     */
    private Long missionFileId;
    /**
     * 开始日期
     */
    private String onDate;
    /**
     * 结束日期
     */
    private String offDate;
    /**
     * 星期范围
     */
    @TableField(typeHandler = JsonIntegerArrayTypeHandler.class)
    private String weeksRange;
    /**
     * 开始时刻
     */
    private String onTime;
    /**
     * 结束时刻
     */
    private String offTime;
    /**
     * 任务音量
     */
    private String missionVolume;
    private Integer missionVolume;
    /**
     * 开始日期
     */
    private BigInteger onDate;
    /**
     * 结束日期
     */
    private BigInteger offDate;
    /**
     * 星期范围
     */
    private String week;
    TaskMediaFileVO[] files;
    TaskTerminalVO[] terminals;
    private List<Integer> terminalIds;
    private List<Integer> fileIds;
    TaskRunTimeVO[] exec;
/*
    */
/**
     * 音柱任务名称
     *//*
    private String missionName;
    */
/**
     * 播放文件
     *//*
    private String missionFileName;
    */
/**
     * 播放文件id
     *//*
    private Long missionFileId;
    */
/**
     * 开始日期
     *//*
    private String onDate;
    */
/**
     * 结束日期
     *//*
    private String offDate;
    */
/**
     * 星期范围
     *//*
    private String week;
    */
/**
     * 开始时刻
     *//*
    private Integer onTime;
    */
/**
     * 结束时刻
     *//*
    private Integer offTime;
    */
/**
     * 任务音量
     *//*
    private Integer missionVolume;
*/
}
ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeFileService.java
@@ -35,8 +35,8 @@
            file.setClientId(clientService.getClientId());
        }
        file.setFileName(fileParam.getFileName());
        file.setFileSize(fileParam.getFileSize());
        file.setFileUrl(fileParam.getFileUrl());
        file.setFileSize(fileParam.getFileSizeIp());
        file.setOriginSize(fileParam.getOriginSize());
        return save(file);
    }
ximon-admin/src/main/java/com/sandu/ximon/admin/service/IpVolumeMissionService.java
@@ -1,18 +1,28 @@
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;
/**
@@ -25,57 +35,277 @@
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) {
@@ -85,8 +315,19 @@
        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
ximon-admin/src/main/resources/application-dev.yml
@@ -14,7 +14,7 @@
    password: chenjiantian1992 # Redis服务器连接密码(默认为空)
    timeout: 300ms # 连接超时时间(毫秒)
server:
  port: 20017
  port: 8080
sandu:
  jwt:
    header: Authorization