liusuyi
2024-11-01 d1f854d741456292862c8b4a84f91c0f7f9a0be9
增加:航线开始/暂停/恢复/结束
12 files added
3 files modified
427 ■■■■■ changed files
ard-work/src/main/java/com/ard/tianyu/controller/UavWayLineController.java 26 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/model/dto/wayline/WayLineBeginDTO.java 20 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/model/dto/wayline/WayLineEndDTO.java 20 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/model/dto/wayline/WayLinePauseDTO.java 20 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/model/dto/wayline/WayLineResumeDTO.java 20 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLineBeginCmd.java 35 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLineBeginReplyCmd.java 32 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLineEndCmd.java 32 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLineEndReplyCmd.java 31 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLinePauseCmd.java 32 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLinePauseReplyCmd.java 31 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLineResumeCmd.java 30 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLineResumeReplyCmd.java 31 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/service/ITyService.java 22 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java 45 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/controller/UavWayLineController.java
@@ -4,7 +4,7 @@
import com.ard.tianyu.model.dto.speaker.SpeakModeSwitchDTO;
import com.ard.tianyu.model.dto.speaker.StopSpeakDTO;
import com.ard.tianyu.model.dto.speaker.TextSpeakDTO;
import com.ard.tianyu.model.dto.wayline.WayLineUploadDTO;
import com.ard.tianyu.model.dto.wayline.*;
import com.ard.tianyu.service.ITyService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -35,5 +35,29 @@
        tyService.wayLineUpload(wayLineUploadDTO);
        return AjaxResult.success();
    }
    @ApiOperation("上传航线")
    @PostMapping("/wayLineBegin")
    public AjaxResult wayLineBegin(@RequestBody WayLineBeginDTO wayLineBeginDTO) {
        tyService.wayLineBegin(wayLineBeginDTO);
        return AjaxResult.success();
    }
    @ApiOperation("暂停航线")
    @PostMapping("/wayLinePause")
    public AjaxResult wayLinePause(@RequestBody WayLinePauseDTO wayLinePauseDTO) {
        tyService.wayLinePause(wayLinePauseDTO);
        return AjaxResult.success();
    }
    @ApiOperation("恢复航线")
    @PostMapping("/wayLineResume")
    public AjaxResult wayLineResume(@RequestBody WayLineResumeDTO wayLineResumeDTO) {
        tyService.wayLineResume(wayLineResumeDTO);
        return AjaxResult.success();
    }
    @ApiOperation("结束航线")
    @PostMapping("/wayLineEnd")
    public AjaxResult wayLineEnd(@RequestBody WayLineEndDTO wayLineEndDTO) {
        tyService.wayLineEnd(wayLineEndDTO);
        return AjaxResult.success();
    }
}
ard-work/src/main/java/com/ard/tianyu/model/dto/wayline/WayLineBeginDTO.java
New file
@@ -0,0 +1,20 @@
package com.ard.tianyu.model.dto.wayline;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * 开始航线实体对象
 *
 * @author liusuyi
 * @date 2024年11月01日10:55
 **/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class WayLineBeginDTO {
    private String boxSn;
}
ard-work/src/main/java/com/ard/tianyu/model/dto/wayline/WayLineEndDTO.java
New file
@@ -0,0 +1,20 @@
package com.ard.tianyu.model.dto.wayline;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * 结束航线实体对象
 *
 * @author liusuyi
 * @date 2024年11月01日10:55
 **/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class WayLineEndDTO {
    private String boxSn;
}
ard-work/src/main/java/com/ard/tianyu/model/dto/wayline/WayLinePauseDTO.java
New file
@@ -0,0 +1,20 @@
package com.ard.tianyu.model.dto.wayline;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * 暂停航线实体对象
 *
 * @author liusuyi
 * @date 2024年11月01日10:55
 **/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class WayLinePauseDTO {
    private String boxSn;
}
ard-work/src/main/java/com/ard/tianyu/model/dto/wayline/WayLineResumeDTO.java
New file
@@ -0,0 +1,20 @@
package com.ard.tianyu.model.dto.wayline;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * 恢复航线实体对象
 *
 * @author liusuyi
 * @date 2024年11月01日10:55
 **/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class WayLineResumeDTO {
    private String boxSn;
}
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLineBeginCmd.java
New file
@@ -0,0 +1,35 @@
package com.ard.tianyu.netty.command.wayline;
import com.ard.tianyu.model.dto.converter.wayline.PlanLineDataConverter;
import com.ard.tianyu.model.dto.wayline.PlanLineData;
import com.ard.tianyu.model.dto.wayline.WayLineBeginDTO;
import com.ard.tianyu.model.dto.wayline.WayLineUploadDTO;
import com.ard.tianyu.netty.command.BaseCmd;
import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
import io.netty.buffer.ByteBuf;
/**
 * 开始航线指令
 *
 * @author liusuyi
 * @date 2024年10月30日16:20
 **/
public class WayLineBeginCmd extends BaseCmd {
    public WayLineBeginCmd(WayLineBeginDTO wayLineBeginDTO) {
        setDataHeader((short) 0x7479);
        setDataLength((short) 18);
        setBoxSn(wayLineBeginDTO.getBoxSn().getBytes());
        setCmdCode((byte) 0xD1);
    }
    public void encode(ByteBuf out) {
        out.writeShort(getDataHeader());    // 写入数据头
        out.writeShort(getDataLength());    // 写入数据长度
        out.writeBytes(getBoxSn());         // 写入盒子SN
        out.writeByte(getCmdCode());        // 写入命令码
        out.writeByte(0x00);          // 写入加密标志
        out.writeByte(0x17);          // 写入动作编号
    }
}
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLineBeginReplyCmd.java
New file
@@ -0,0 +1,32 @@
package com.ard.tianyu.netty.command.wayline;
import com.ard.tianyu.model.dto.wayline.WayLineBeginDTO;
import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
/**
 * 开始航线回复指令
 *
 * @author liusuyi
 * @date 2024年10月30日16:20
 **/
public class WayLineBeginReplyCmd extends BaseCmd {
    private final byte encryptFlag = 0x00; // 加密标志
    private final byte actionCode = 0x17;  // 动作编号
    private final byte result;             // 执行结果
    private final Integer errorCode;       // 错误码
    public WayLineBeginReplyCmd(String boxSn, Byte result, Integer errorCode) {
        setDataHeader((short) 0x6A77);
        //setDataLength((short) 18);
        setCmdCode((byte) 0xD1);
        setBoxSn(boxSn.getBytes());
        this.result = result;
        this.errorCode = errorCode;
    }
    public void encode(ByteBuf out) {
    }
}
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLineEndCmd.java
New file
@@ -0,0 +1,32 @@
package com.ard.tianyu.netty.command.wayline;
import com.ard.tianyu.model.dto.wayline.WayLineBeginDTO;
import com.ard.tianyu.model.dto.wayline.WayLineEndDTO;
import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
/**
 * 结束航线指令
 *
 * @author liusuyi
 * @date 2024年10月30日16:20
 **/
public class WayLineEndCmd extends BaseCmd {
    public WayLineEndCmd(WayLineEndDTO wayLineEndDTO) {
        setDataHeader((short) 0x7479);
        setDataLength((short) 18);
        setBoxSn(wayLineEndDTO.getBoxSn().getBytes());
        setCmdCode((byte) 0xD1);
    }
    public void encode(ByteBuf out) {
        out.writeShort(getDataHeader());    // 写入数据头
        out.writeShort(getDataLength());    // 写入数据长度
        out.writeBytes(getBoxSn());         // 写入盒子SN
        out.writeByte(getCmdCode());        // 写入命令码
        out.writeByte(0x00);          // 写入加密标志
        out.writeByte(0x20);          // 写入动作编号
    }
}
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLineEndReplyCmd.java
New file
@@ -0,0 +1,31 @@
package com.ard.tianyu.netty.command.wayline;
import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
/**
 * 结束航线回复指令
 *
 * @author liusuyi
 * @date 2024年10月30日16:20
 **/
public class WayLineEndReplyCmd extends BaseCmd {
    private final byte encryptFlag = 0x00; // 加密标志
    private final byte actionCode = 0x20;  // 动作编号
    private final byte result;             // 执行结果
    private final Integer errorCode;       // 错误码
    public WayLineEndReplyCmd(String boxSn, Byte result, Integer errorCode) {
        setDataHeader((short) 0x6A77);
        //setDataLength((short) 18);
        setCmdCode((byte) 0xD1);
        setBoxSn(boxSn.getBytes());
        this.result = result;
        this.errorCode = errorCode;
    }
    public void encode(ByteBuf out) {
    }
}
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLinePauseCmd.java
New file
@@ -0,0 +1,32 @@
package com.ard.tianyu.netty.command.wayline;
import com.ard.tianyu.model.dto.wayline.WayLineBeginDTO;
import com.ard.tianyu.model.dto.wayline.WayLinePauseDTO;
import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
/**
 * 暂停航线指令
 *
 * @author liusuyi
 * @date 2024年10月30日16:20
 **/
public class WayLinePauseCmd extends BaseCmd {
    public WayLinePauseCmd(WayLinePauseDTO wayLinePauseDTO) {
        setDataHeader((short) 0x7479);
        setDataLength((short) 18);
        setBoxSn(wayLinePauseDTO.getBoxSn().getBytes());
        setCmdCode((byte) 0xD1);
    }
    public void encode(ByteBuf out) {
        out.writeShort(getDataHeader());    // 写入数据头
        out.writeShort(getDataLength());    // 写入数据长度
        out.writeBytes(getBoxSn());         // 写入盒子SN
        out.writeByte(getCmdCode());        // 写入命令码
        out.writeByte(0x00);          // 写入加密标志
        out.writeByte(0x18);          // 写入动作编号
    }
}
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLinePauseReplyCmd.java
New file
@@ -0,0 +1,31 @@
package com.ard.tianyu.netty.command.wayline;
import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
/**
 * 暂停航线回复指令
 *
 * @author liusuyi
 * @date 2024年10月30日16:20
 **/
public class WayLinePauseReplyCmd extends BaseCmd {
    private final byte encryptFlag = 0x00; // 加密标志
    private final byte actionCode = 0x18;  // 动作编号
    private final byte result;             // 执行结果
    private final Integer errorCode;       // 错误码
    public WayLinePauseReplyCmd(String boxSn, Byte result, Integer errorCode) {
        setDataHeader((short) 0x6A77);
        //setDataLength((short) 18);
        setCmdCode((byte) 0xD1);
        setBoxSn(boxSn.getBytes());
        this.result = result;
        this.errorCode = errorCode;
    }
    public void encode(ByteBuf out) {
    }
}
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLineResumeCmd.java
New file
@@ -0,0 +1,30 @@
package com.ard.tianyu.netty.command.wayline;
import com.ard.tianyu.model.dto.wayline.WayLineResumeDTO;
import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
/**
 * 恢复航线指令
 *
 * @author liusuyi
 * @date 2024年10月30日16:20
 **/
public class WayLineResumeCmd extends BaseCmd {
    public WayLineResumeCmd(WayLineResumeDTO wayLineResumeDTO) {
        setDataHeader((short) 0x7479);
        setDataLength((short) 18);
        setBoxSn(wayLineResumeDTO.getBoxSn().getBytes());
        setCmdCode((byte) 0xD1);
    }
    public void encode(ByteBuf out) {
        out.writeShort(getDataHeader());    // 写入数据头
        out.writeShort(getDataLength());    // 写入数据长度
        out.writeBytes(getBoxSn());         // 写入盒子SN
        out.writeByte(getCmdCode());        // 写入命令码
        out.writeByte(0x00);          // 写入加密标志
        out.writeByte(0x19);          // 写入动作编号
    }
}
ard-work/src/main/java/com/ard/tianyu/netty/command/wayline/WayLineResumeReplyCmd.java
New file
@@ -0,0 +1,31 @@
package com.ard.tianyu.netty.command.wayline;
import com.ard.tianyu.netty.command.BaseCmd;
import io.netty.buffer.ByteBuf;
/**
 * 恢复航线回复指令
 *
 * @author liusuyi
 * @date 2024年10月30日16:20
 **/
public class WayLineResumeReplyCmd extends BaseCmd {
    private final byte encryptFlag = 0x00; // 加密标志
    private final byte actionCode = 0x19;  // 动作编号
    private final byte result;             // 执行结果
    private final Integer errorCode;       // 错误码
    public WayLineResumeReplyCmd(String boxSn, Byte result, Integer errorCode) {
        setDataHeader((short) 0x6A77);
        //setDataLength((short) 18);
        setCmdCode((byte) 0xD1);
        setBoxSn(boxSn.getBytes());
        this.result = result;
        this.errorCode = errorCode;
    }
    public void encode(ByteBuf out) {
    }
}
ard-work/src/main/java/com/ard/tianyu/service/ITyService.java
@@ -12,7 +12,7 @@
import com.ard.tianyu.model.dto.speaker.*;
import com.ard.tianyu.model.dto.state.UavState;
import com.ard.tianyu.model.dto.telemetry.TelemetryData;
import com.ard.tianyu.model.dto.wayline.WayLineUploadDTO;
import com.ard.tianyu.model.dto.wayline.*;
import com.ard.tianyu.model.receiver.*;
import com.ard.tianyu.netty.command.BaseCmd;
import com.dtflys.forest.annotation.Var;
@@ -235,6 +235,26 @@
    void wayLineUpload(WayLineUploadDTO wayLineUploadDTO);
    /**
     * 开始航线
     */
    void wayLineBegin(WayLineBeginDTO wayLineBeginDTO);
    /**
     * 暂停航线
     */
    void wayLinePause(WayLinePauseDTO wayLinePauseDTO);
    /**
     * 恢复航线
     */
    void wayLineResume(WayLineResumeDTO wayLineResumeDTO);
    /**
     * 结束航线
     */
    void wayLineEnd(WayLineEndDTO wayLineEndDTO);
    /**
     * 处理回复消息
     */
    void processReplyMessage(String key, BaseCmd tyMessage);
ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java
@@ -23,8 +23,7 @@
import com.ard.tianyu.model.dto.speaker.*;
import com.ard.tianyu.model.dto.state.UavState;
import com.ard.tianyu.model.dto.telemetry.TelemetryData;
import com.ard.tianyu.model.dto.wayline.PlanLineData;
import com.ard.tianyu.model.dto.wayline.WayLineUploadDTO;
import com.ard.tianyu.model.dto.wayline.*;
import com.ard.tianyu.model.receiver.*;
import com.ard.tianyu.netty.command.*;
import com.ard.tianyu.netty.TyNettyTcpClient;
@@ -41,8 +40,7 @@
import com.ard.tianyu.netty.command.real.UavTelemetryDataCmd;
import com.ard.tianyu.netty.command.register.*;
import com.ard.tianyu.netty.command.speaker.*;
import com.ard.tianyu.netty.command.wayline.WayLineUploadCmd;
import com.ard.tianyu.netty.command.wayline.WayLineUploadReplyCmd;
import com.ard.tianyu.netty.command.wayline.*;
import com.ard.tianyu.netty.handler.ErrorCodeEnum;
import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
import com.ard.tianyu.service.ITyService;
@@ -501,6 +499,42 @@
    }
    /**
     * 航线开始
     */
    @Override
    public void wayLineBegin(WayLineBeginDTO wayLineBeginDTO) {
        WayLineBeginCmd wayLineBeginCmd = new WayLineBeginCmd(wayLineBeginDTO);
        this.sendMessage(tyConfiguration.getIpPort(), wayLineBeginCmd);
    }
    /**
     * 航线暂停
     */
    @Override
    public void wayLinePause(WayLinePauseDTO wayLinePauseDTO) {
        WayLinePauseCmd wayLinePauseCmd = new WayLinePauseCmd(wayLinePauseDTO);
        this.sendMessage(tyConfiguration.getIpPort(), wayLinePauseCmd);
    }
    /**
     * 航线恢复
     */
    @Override
    public void wayLineResume(WayLineResumeDTO wayLineResumeDTO) {
        WayLineResumeCmd wayLineResumeCmd = new WayLineResumeCmd(wayLineResumeDTO);
        this.sendMessage(tyConfiguration.getIpPort(), wayLineResumeCmd);
    }
    /**
     * 航线结束
     */
    @Override
    public void wayLineEnd(WayLineEndDTO wayLineEndDTO) {
        WayLineEndCmd wayLineEndCmd = new WayLineEndCmd(wayLineEndDTO);
        this.sendMessage(tyConfiguration.getIpPort(), wayLineEndCmd);
    }
    /**
     * 处理天宇服务器返回的消息
     */
    @Override
@@ -676,8 +710,7 @@
     */
    @Scheduled(fixedRate = 3000)
    public void sendHeartBeat() {
        if(!TyTcpServerCache.getTcpServerCache(tyConfiguration.getTcpserver() + ":" + tyConfiguration.getTcpport()))
        {
        if (!TyTcpServerCache.getTcpServerCache(tyConfiguration.getTcpserver() + ":" + tyConfiguration.getTcpport())) {
            return;
        }
        long timestamp = System.currentTimeMillis();