package org.yzh.protocol.t808; import io.github.yezhihao.protostar.annotation.Field; import io.github.yezhihao.protostar.annotation.Message; import io.swagger.models.auth.In; import lombok.Data; import org.yzh.protocol.basics.JTMessage; import org.yzh.protocol.commons.JT808; import org.yzh.protocol.commons.transform.AttributeConverter; import org.yzh.protocol.commons.transform.AttributeConverterYue; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Map; /** * @author yezhihao * https://gitee.com/yezhihao/jt808-server */ @Message(JT808.位置信息汇报) @Data public class T0200 extends JTMessage { /** * 使用 Bit.isTrue判断报警和状态标志位 * @see org.yzh.protocol.commons.Bit */ @Field(length = 4, desc = "报警标志") private int warnBit; @Field(length = 4, desc = "状态") private int statusBit; @Field(length = 4, desc = "纬度") private int latitude; @Field(length = 4, desc = "经度") private int longitude; @Field(length = 2, desc = "高程(米)") private int altitude; @Field(length = 2, desc = "速度(1/10公里每小时)") private int speed; @Field(length = 2, desc = "方向") private int direction; @Field(length = 6, charset = "BCD", desc = "时间(YYYY-MM-DDTHH-mm-ss)") private LocalDateTime deviceTime; @Field(converter = AttributeConverter.class, desc = "位置附加信息", version = {-1, 0}) @Field(converter = AttributeConverterYue.class, desc = "位置附加信息(粤标)", version = 1) private Map attributes; public int getWarnBit() { return warnBit; } public void setWarnBit(int warnBit) { this.warnBit = warnBit; } public int getStatusBit() { return statusBit; } public void setStatusBit(int statusBit) { this.statusBit = statusBit; } public int getLatitude() { return latitude; } public void setLatitude(int latitude) { this.latitude = latitude; } public int getLongitude() { return longitude; } public void setLongitude(int longitude) { this.longitude = longitude; } public int getAltitude() { return altitude; } public void setAltitude(int altitude) { this.altitude = altitude; } public int getSpeed() { return speed; } public void setSpeed(int speed) { this.speed = speed; } public int getDirection() { return direction; } public void setDirection(int direction) { this.direction = direction; } public LocalDateTime getDeviceTime() { return deviceTime; } public void setDeviceTime(LocalDateTime deviceTime) { this.deviceTime = deviceTime; } @Override public String toString() { StringBuilder sb = toStringHead(); sb.append("T0200{deviceTime=").append(deviceTime); sb.append(",longitude=").append(longitude); sb.append(",latitude=").append(latitude); sb.append(",altitude=").append(altitude); sb.append(",speed=").append(speed); sb.append(",direction=").append(direction); sb.append(",warnBit=").append(Integer.toBinaryString(warnBit)); sb.append(",statusBit=").append(Integer.toBinaryString(statusBit)); sb.append(",attributes=").append(attributes); sb.append('}'); return sb.toString(); } }