diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java deleted file mode 100644 index 87d5203..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.missiles.socket.service; - -/** - * @author a203 - */ -public interface IWebSocketService { - /** - * WebSocket数据通信接口 - * - * @param message - */ - void sendMessage(String message); -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java deleted file mode 100644 index 87d5203..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.missiles.socket.service; - -/** - * @author a203 - */ -public interface IWebSocketService { - /** - * WebSocket数据通信接口 - * - * @param message - */ - void sendMessage(String message); -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java deleted file mode 100644 index a2fc650..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.socket.service.impl; - -import com.casic.missiles.socket.AlarmWebSocketServer; -import com.casic.missiles.socket.service.IWebSocketService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -/** - * @author a203 - */ -@Slf4j -@Service -public class WebSocketServiceImpl implements IWebSocketService { - - private final AlarmWebSocketServer socketServer; - - public WebSocketServiceImpl() { - socketServer = new AlarmWebSocketServer(); - } - - @Override - public void sendMessage(String msg) { - //将消息发送给客户端 - - } -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java deleted file mode 100644 index 87d5203..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.missiles.socket.service; - -/** - * @author a203 - */ -public interface IWebSocketService { - /** - * WebSocket数据通信接口 - * - * @param message - */ - void sendMessage(String message); -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java deleted file mode 100644 index a2fc650..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.socket.service.impl; - -import com.casic.missiles.socket.AlarmWebSocketServer; -import com.casic.missiles.socket.service.IWebSocketService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -/** - * @author a203 - */ -@Slf4j -@Service -public class WebSocketServiceImpl implements IWebSocketService { - - private final AlarmWebSocketServer socketServer; - - public WebSocketServiceImpl() { - socketServer = new AlarmWebSocketServer(); - } - - @Override - public void sendMessage(String msg) { - //将消息发送给客户端 - - } -} diff --git a/casic-server-support/pom.xml b/casic-server-support/pom.xml index b1af713..33a4f3f 100644 --- a/casic-server-support/pom.xml +++ b/casic-server-support/pom.xml @@ -35,6 +35,16 @@ compile + + com.squareup.okhttp3 + okhttp + 4.9.1 + + + com.alibaba + fastjson + ${fastjson.version} + diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java deleted file mode 100644 index 87d5203..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.missiles.socket.service; - -/** - * @author a203 - */ -public interface IWebSocketService { - /** - * WebSocket数据通信接口 - * - * @param message - */ - void sendMessage(String message); -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java deleted file mode 100644 index a2fc650..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.socket.service.impl; - -import com.casic.missiles.socket.AlarmWebSocketServer; -import com.casic.missiles.socket.service.IWebSocketService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -/** - * @author a203 - */ -@Slf4j -@Service -public class WebSocketServiceImpl implements IWebSocketService { - - private final AlarmWebSocketServer socketServer; - - public WebSocketServiceImpl() { - socketServer = new AlarmWebSocketServer(); - } - - @Override - public void sendMessage(String msg) { - //将消息发送给客户端 - - } -} diff --git a/casic-server-support/pom.xml b/casic-server-support/pom.xml index b1af713..33a4f3f 100644 --- a/casic-server-support/pom.xml +++ b/casic-server-support/pom.xml @@ -35,6 +35,16 @@ compile + + com.squareup.okhttp3 + okhttp + 4.9.1 + + + com.alibaba + fastjson + ${fastjson.version} + diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java index a2e4208..41d716b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java @@ -15,12 +15,24 @@ public class AisLog extends Model { private static final long serialVersionUID = 1L; - @TableId(value = "ID", type = IdType.AUTO) - private Integer id; + @TableId(value = "ID", type = IdType.ASSIGN_ID) + private Long id; + + /** + * ais请求参数 + */ + @TableField("REQUEST_PARAM") + private String requestParam; + + /** + * ais返回数据 + */ + @TableField("RESPONSE") + private String response; /** * 调用第三方ais接口时间 */ - @TableField("TIME") - private String time; + @TableField("REQUEST_TIME") + private String requestTime; } diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java deleted file mode 100644 index 87d5203..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.missiles.socket.service; - -/** - * @author a203 - */ -public interface IWebSocketService { - /** - * WebSocket数据通信接口 - * - * @param message - */ - void sendMessage(String message); -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java deleted file mode 100644 index a2fc650..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.socket.service.impl; - -import com.casic.missiles.socket.AlarmWebSocketServer; -import com.casic.missiles.socket.service.IWebSocketService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -/** - * @author a203 - */ -@Slf4j -@Service -public class WebSocketServiceImpl implements IWebSocketService { - - private final AlarmWebSocketServer socketServer; - - public WebSocketServiceImpl() { - socketServer = new AlarmWebSocketServer(); - } - - @Override - public void sendMessage(String msg) { - //将消息发送给客户端 - - } -} diff --git a/casic-server-support/pom.xml b/casic-server-support/pom.xml index b1af713..33a4f3f 100644 --- a/casic-server-support/pom.xml +++ b/casic-server-support/pom.xml @@ -35,6 +35,16 @@ compile + + com.squareup.okhttp3 + okhttp + 4.9.1 + + + com.alibaba + fastjson + ${fastjson.version} + diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java index a2e4208..41d716b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java @@ -15,12 +15,24 @@ public class AisLog extends Model { private static final long serialVersionUID = 1L; - @TableId(value = "ID", type = IdType.AUTO) - private Integer id; + @TableId(value = "ID", type = IdType.ASSIGN_ID) + private Long id; + + /** + * ais请求参数 + */ + @TableField("REQUEST_PARAM") + private String requestParam; + + /** + * ais返回数据 + */ + @TableField("RESPONSE") + private String response; /** * 调用第三方ais接口时间 */ - @TableField("TIME") - private String time; + @TableField("REQUEST_TIME") + private String requestTime; } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java new file mode 100644 index 0000000..2fea300 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.utils; + +/** + * @author a203 + */ +public class Constant { + public static final String HTTP_HEADER = "http://"; +} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java deleted file mode 100644 index 87d5203..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.missiles.socket.service; - -/** - * @author a203 - */ -public interface IWebSocketService { - /** - * WebSocket数据通信接口 - * - * @param message - */ - void sendMessage(String message); -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java deleted file mode 100644 index a2fc650..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.socket.service.impl; - -import com.casic.missiles.socket.AlarmWebSocketServer; -import com.casic.missiles.socket.service.IWebSocketService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -/** - * @author a203 - */ -@Slf4j -@Service -public class WebSocketServiceImpl implements IWebSocketService { - - private final AlarmWebSocketServer socketServer; - - public WebSocketServiceImpl() { - socketServer = new AlarmWebSocketServer(); - } - - @Override - public void sendMessage(String msg) { - //将消息发送给客户端 - - } -} diff --git a/casic-server-support/pom.xml b/casic-server-support/pom.xml index b1af713..33a4f3f 100644 --- a/casic-server-support/pom.xml +++ b/casic-server-support/pom.xml @@ -35,6 +35,16 @@ compile + + com.squareup.okhttp3 + okhttp + 4.9.1 + + + com.alibaba + fastjson + ${fastjson.version} + diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java index a2e4208..41d716b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java @@ -15,12 +15,24 @@ public class AisLog extends Model { private static final long serialVersionUID = 1L; - @TableId(value = "ID", type = IdType.AUTO) - private Integer id; + @TableId(value = "ID", type = IdType.ASSIGN_ID) + private Long id; + + /** + * ais请求参数 + */ + @TableField("REQUEST_PARAM") + private String requestParam; + + /** + * ais返回数据 + */ + @TableField("RESPONSE") + private String response; /** * 调用第三方ais接口时间 */ - @TableField("TIME") - private String time; + @TableField("REQUEST_TIME") + private String requestTime; } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java new file mode 100644 index 0000000..2fea300 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.utils; + +/** + * @author a203 + */ +public class Constant { + public static final String HTTP_HEADER = "http://"; +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c999812 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.utils; + +import lombok.NonNull; +import okhttp3.*; + +import java.io.IOException; +import java.util.Objects; +import java.util.concurrent.TimeUnit; + +/** + * 网络请求工具 + * + * @author a203 + */ +public class HttpRequestHelper { + + public static RequestBody createRequestBody(String value) { + return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), value); + } + + public static String doPost(Request request) { + return streamResponse(request); + } + + public static String doGet(String url) { + return streamResponse(new Request.Builder() + .url(url) + .build()); + } + + private static String streamResponse(@NonNull Request request) { + OkHttpClient httpClient = new OkHttpClient.Builder() + .connectTimeout(10, TimeUnit.SECONDS) + .writeTimeout(10, TimeUnit.SECONDS) + .readTimeout(20, TimeUnit.SECONDS) + .build(); + Call call = httpClient.newCall(request); + try { + Response response = call.execute(); + return response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } +} \ No newline at end of file diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java deleted file mode 100644 index 87d5203..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.missiles.socket.service; - -/** - * @author a203 - */ -public interface IWebSocketService { - /** - * WebSocket数据通信接口 - * - * @param message - */ - void sendMessage(String message); -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java deleted file mode 100644 index a2fc650..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.socket.service.impl; - -import com.casic.missiles.socket.AlarmWebSocketServer; -import com.casic.missiles.socket.service.IWebSocketService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -/** - * @author a203 - */ -@Slf4j -@Service -public class WebSocketServiceImpl implements IWebSocketService { - - private final AlarmWebSocketServer socketServer; - - public WebSocketServiceImpl() { - socketServer = new AlarmWebSocketServer(); - } - - @Override - public void sendMessage(String msg) { - //将消息发送给客户端 - - } -} diff --git a/casic-server-support/pom.xml b/casic-server-support/pom.xml index b1af713..33a4f3f 100644 --- a/casic-server-support/pom.xml +++ b/casic-server-support/pom.xml @@ -35,6 +35,16 @@ compile + + com.squareup.okhttp3 + okhttp + 4.9.1 + + + com.alibaba + fastjson + ${fastjson.version} + diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java index a2e4208..41d716b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java @@ -15,12 +15,24 @@ public class AisLog extends Model { private static final long serialVersionUID = 1L; - @TableId(value = "ID", type = IdType.AUTO) - private Integer id; + @TableId(value = "ID", type = IdType.ASSIGN_ID) + private Long id; + + /** + * ais请求参数 + */ + @TableField("REQUEST_PARAM") + private String requestParam; + + /** + * ais返回数据 + */ + @TableField("RESPONSE") + private String response; /** * 调用第三方ais接口时间 */ - @TableField("TIME") - private String time; + @TableField("REQUEST_TIME") + private String requestTime; } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java new file mode 100644 index 0000000..2fea300 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.utils; + +/** + * @author a203 + */ +public class Constant { + public static final String HTTP_HEADER = "http://"; +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c999812 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.utils; + +import lombok.NonNull; +import okhttp3.*; + +import java.io.IOException; +import java.util.Objects; +import java.util.concurrent.TimeUnit; + +/** + * 网络请求工具 + * + * @author a203 + */ +public class HttpRequestHelper { + + public static RequestBody createRequestBody(String value) { + return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), value); + } + + public static String doPost(Request request) { + return streamResponse(request); + } + + public static String doGet(String url) { + return streamResponse(new Request.Builder() + .url(url) + .build()); + } + + private static String streamResponse(@NonNull Request request) { + OkHttpClient httpClient = new OkHttpClient.Builder() + .connectTimeout(10, TimeUnit.SECONDS) + .writeTimeout(10, TimeUnit.SECONDS) + .readTimeout(20, TimeUnit.SECONDS) + .build(); + Call call = httpClient.newCall(request); + try { + Response response = call.execute(); + return response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } +} \ No newline at end of file diff --git a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java index 9a5ac07..6379660 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java @@ -184,7 +184,7 @@ /** * 短信内容 * - * 西工大通过Socket发短信给我们,然后我们用卫星发送给我们自己的岸基软件,然后再传给西工大岸基软件 + * 方舱通过Socket发送短信给203后台,然后203后台将短信内容加密之后用卫星发送给203自己的岸基软件,然后解密之后再传给西工大岸基软件 * */ String decodeSMS = DecodeData.decodeSMS(data); log.info("decodeSMS ===> " + decodeSMS); diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java deleted file mode 100644 index 87d5203..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.missiles.socket.service; - -/** - * @author a203 - */ -public interface IWebSocketService { - /** - * WebSocket数据通信接口 - * - * @param message - */ - void sendMessage(String message); -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java deleted file mode 100644 index a2fc650..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.socket.service.impl; - -import com.casic.missiles.socket.AlarmWebSocketServer; -import com.casic.missiles.socket.service.IWebSocketService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -/** - * @author a203 - */ -@Slf4j -@Service -public class WebSocketServiceImpl implements IWebSocketService { - - private final AlarmWebSocketServer socketServer; - - public WebSocketServiceImpl() { - socketServer = new AlarmWebSocketServer(); - } - - @Override - public void sendMessage(String msg) { - //将消息发送给客户端 - - } -} diff --git a/casic-server-support/pom.xml b/casic-server-support/pom.xml index b1af713..33a4f3f 100644 --- a/casic-server-support/pom.xml +++ b/casic-server-support/pom.xml @@ -35,6 +35,16 @@ compile + + com.squareup.okhttp3 + okhttp + 4.9.1 + + + com.alibaba + fastjson + ${fastjson.version} + diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java index a2e4208..41d716b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java @@ -15,12 +15,24 @@ public class AisLog extends Model { private static final long serialVersionUID = 1L; - @TableId(value = "ID", type = IdType.AUTO) - private Integer id; + @TableId(value = "ID", type = IdType.ASSIGN_ID) + private Long id; + + /** + * ais请求参数 + */ + @TableField("REQUEST_PARAM") + private String requestParam; + + /** + * ais返回数据 + */ + @TableField("RESPONSE") + private String response; /** * 调用第三方ais接口时间 */ - @TableField("TIME") - private String time; + @TableField("REQUEST_TIME") + private String requestTime; } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java new file mode 100644 index 0000000..2fea300 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.utils; + +/** + * @author a203 + */ +public class Constant { + public static final String HTTP_HEADER = "http://"; +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c999812 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.utils; + +import lombok.NonNull; +import okhttp3.*; + +import java.io.IOException; +import java.util.Objects; +import java.util.concurrent.TimeUnit; + +/** + * 网络请求工具 + * + * @author a203 + */ +public class HttpRequestHelper { + + public static RequestBody createRequestBody(String value) { + return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), value); + } + + public static String doPost(Request request) { + return streamResponse(request); + } + + public static String doGet(String url) { + return streamResponse(new Request.Builder() + .url(url) + .build()); + } + + private static String streamResponse(@NonNull Request request) { + OkHttpClient httpClient = new OkHttpClient.Builder() + .connectTimeout(10, TimeUnit.SECONDS) + .writeTimeout(10, TimeUnit.SECONDS) + .readTimeout(20, TimeUnit.SECONDS) + .build(); + Call call = httpClient.newCall(request); + try { + Response response = call.execute(); + return response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } +} \ No newline at end of file diff --git a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java index 9a5ac07..6379660 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java @@ -184,7 +184,7 @@ /** * 短信内容 * - * 西工大通过Socket发短信给我们,然后我们用卫星发送给我们自己的岸基软件,然后再传给西工大岸基软件 + * 方舱通过Socket发送短信给203后台,然后203后台将短信内容加密之后用卫星发送给203自己的岸基软件,然后解密之后再传给西工大岸基软件 * */ String decodeSMS = DecodeData.decodeSMS(data); log.info("decodeSMS ===> " + decodeSMS); diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java index 34512f9..a74299c 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java @@ -3,11 +3,6 @@ import com.casic.missiles.modular.system.dto.remote.ShipRemoteData; import lombok.Data; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; -import java.util.TimeZone; - /** * @author a203 */ @@ -69,38 +64,31 @@ /** * 吃水(单位:m) */ - private Float depth; + private Double depth; /** * 国籍 3 字母 */ private String nationality; public ShipDTO(ShipRemoteData.DataBean data) { - this.shipId = data.getI(); - this.positionTime = formatUTC(data.getT()); - this.lng = (double) data.getN() / 600000; - this.lat = (double) data.getA() / 600000; - this.course = (float) data.getC() / 10; - this.heading = data.getH(); - this.speed = (float) data.getS() / 10; - this.aisStatus = data.getV(); - this.mmsi = data.getM(); - this.engName = data.getE(); - this.imoNum = data.getO(); - this.shipCallNum = data.getG(); - this.shipType = data.getY(); - this.shipLength = data.getL(); - this.shipWidth = data.getB(); - this.expectTime = data.getR(); - this.destination = data.getP(); - this.depth = (float) data.getD() / 10; - this.nationality = data.getF(); - } - - private String formatUTC(int seconds) { - long utc = seconds * 1000L; - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - format.setTimeZone(TimeZone.getTimeZone("GMT+08")); - return format.format(new Date(utc)); + this.shipId = data.getShipId(); + this.positionTime = data.getPositionTime(); + this.lng = data.getLng(); + this.lat = data.getLat(); + this.course = data.getCourse(); + this.heading = data.getHeading(); + this.speed = data.getSpeed(); + this.aisStatus = data.getAisStatus(); + this.mmsi = data.getMmsi(); + this.engName = data.getEngName(); + this.imoNum = data.getImoNum(); + this.shipCallNum = data.getShipCallNum(); + this.shipType = data.getShipType(); + this.shipLength = data.getShipLength(); + this.shipWidth = data.getShipWidth(); + this.expectTime = data.getExpectTime(); + this.destination = data.getDestination(); + this.depth = data.getDepth(); + this.nationality = data.getNationality(); } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java deleted file mode 100644 index 87d5203..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.missiles.socket.service; - -/** - * @author a203 - */ -public interface IWebSocketService { - /** - * WebSocket数据通信接口 - * - * @param message - */ - void sendMessage(String message); -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java deleted file mode 100644 index a2fc650..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.socket.service.impl; - -import com.casic.missiles.socket.AlarmWebSocketServer; -import com.casic.missiles.socket.service.IWebSocketService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -/** - * @author a203 - */ -@Slf4j -@Service -public class WebSocketServiceImpl implements IWebSocketService { - - private final AlarmWebSocketServer socketServer; - - public WebSocketServiceImpl() { - socketServer = new AlarmWebSocketServer(); - } - - @Override - public void sendMessage(String msg) { - //将消息发送给客户端 - - } -} diff --git a/casic-server-support/pom.xml b/casic-server-support/pom.xml index b1af713..33a4f3f 100644 --- a/casic-server-support/pom.xml +++ b/casic-server-support/pom.xml @@ -35,6 +35,16 @@ compile + + com.squareup.okhttp3 + okhttp + 4.9.1 + + + com.alibaba + fastjson + ${fastjson.version} + diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java index a2e4208..41d716b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java @@ -15,12 +15,24 @@ public class AisLog extends Model { private static final long serialVersionUID = 1L; - @TableId(value = "ID", type = IdType.AUTO) - private Integer id; + @TableId(value = "ID", type = IdType.ASSIGN_ID) + private Long id; + + /** + * ais请求参数 + */ + @TableField("REQUEST_PARAM") + private String requestParam; + + /** + * ais返回数据 + */ + @TableField("RESPONSE") + private String response; /** * 调用第三方ais接口时间 */ - @TableField("TIME") - private String time; + @TableField("REQUEST_TIME") + private String requestTime; } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java new file mode 100644 index 0000000..2fea300 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.utils; + +/** + * @author a203 + */ +public class Constant { + public static final String HTTP_HEADER = "http://"; +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c999812 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.utils; + +import lombok.NonNull; +import okhttp3.*; + +import java.io.IOException; +import java.util.Objects; +import java.util.concurrent.TimeUnit; + +/** + * 网络请求工具 + * + * @author a203 + */ +public class HttpRequestHelper { + + public static RequestBody createRequestBody(String value) { + return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), value); + } + + public static String doPost(Request request) { + return streamResponse(request); + } + + public static String doGet(String url) { + return streamResponse(new Request.Builder() + .url(url) + .build()); + } + + private static String streamResponse(@NonNull Request request) { + OkHttpClient httpClient = new OkHttpClient.Builder() + .connectTimeout(10, TimeUnit.SECONDS) + .writeTimeout(10, TimeUnit.SECONDS) + .readTimeout(20, TimeUnit.SECONDS) + .build(); + Call call = httpClient.newCall(request); + try { + Response response = call.execute(); + return response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } +} \ No newline at end of file diff --git a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java index 9a5ac07..6379660 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java @@ -184,7 +184,7 @@ /** * 短信内容 * - * 西工大通过Socket发短信给我们,然后我们用卫星发送给我们自己的岸基软件,然后再传给西工大岸基软件 + * 方舱通过Socket发送短信给203后台,然后203后台将短信内容加密之后用卫星发送给203自己的岸基软件,然后解密之后再传给西工大岸基软件 * */ String decodeSMS = DecodeData.decodeSMS(data); log.info("decodeSMS ===> " + decodeSMS); diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java index 34512f9..a74299c 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java @@ -3,11 +3,6 @@ import com.casic.missiles.modular.system.dto.remote.ShipRemoteData; import lombok.Data; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; -import java.util.TimeZone; - /** * @author a203 */ @@ -69,38 +64,31 @@ /** * 吃水(单位:m) */ - private Float depth; + private Double depth; /** * 国籍 3 字母 */ private String nationality; public ShipDTO(ShipRemoteData.DataBean data) { - this.shipId = data.getI(); - this.positionTime = formatUTC(data.getT()); - this.lng = (double) data.getN() / 600000; - this.lat = (double) data.getA() / 600000; - this.course = (float) data.getC() / 10; - this.heading = data.getH(); - this.speed = (float) data.getS() / 10; - this.aisStatus = data.getV(); - this.mmsi = data.getM(); - this.engName = data.getE(); - this.imoNum = data.getO(); - this.shipCallNum = data.getG(); - this.shipType = data.getY(); - this.shipLength = data.getL(); - this.shipWidth = data.getB(); - this.expectTime = data.getR(); - this.destination = data.getP(); - this.depth = (float) data.getD() / 10; - this.nationality = data.getF(); - } - - private String formatUTC(int seconds) { - long utc = seconds * 1000L; - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - format.setTimeZone(TimeZone.getTimeZone("GMT+08")); - return format.format(new Date(utc)); + this.shipId = data.getShipId(); + this.positionTime = data.getPositionTime(); + this.lng = data.getLng(); + this.lat = data.getLat(); + this.course = data.getCourse(); + this.heading = data.getHeading(); + this.speed = data.getSpeed(); + this.aisStatus = data.getAisStatus(); + this.mmsi = data.getMmsi(); + this.engName = data.getEngName(); + this.imoNum = data.getImoNum(); + this.shipCallNum = data.getShipCallNum(); + this.shipType = data.getShipType(); + this.shipLength = data.getShipLength(); + this.shipWidth = data.getShipWidth(); + this.expectTime = data.getExpectTime(); + this.destination = data.getDestination(); + this.depth = data.getDepth(); + this.nationality = data.getNationality(); } } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java index 6d7fadb..79ace95 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java @@ -3,40 +3,32 @@ import java.util.List; /** - * 第三方AIS数据模型 + * AIS数据模型 * * @author a203 */ public class ShipRemoteData { /** - * code : 0 - * count : 7 - * message : 成功 - * data : [{"g":"3EQK6","y":"70","a":10884867,"n":68125760,"i":"2030707","t":1632903145,"e":"HMM ROTTERDAM","m":"351246000","o":"9868338","f":"PAN","l":400,"c":1872,"s":163,"h":189,"v":"0","b":62,"r":"10-15 19:00","p":"EGSUE","d":154}] + * code : 200 + * data : [{"aisStatus":"0","course":11,"depth":9.3,"destination":"CNSHK","engName":"OREA","expectTime":"11-04 20:00","heading":0,"imoNum":"9670107","lat":17.91,"lng":113.31,"mmsi":"256558000","nationality":"MLT","positionTime":"2021-11-04 16:36:42","shipCallNum":"9HA3953","shipId":"153841","shipLength":185,"shipType":"72","shipWidth":30,"speed":13}] + * message : 请求成功 + * success : true */ - private String code; - private int count; + private int code; private String message; + private boolean success; private List data; - public String getCode() { + public int getCode() { return code; } - public void setCode(String code) { + public void setCode(int code) { this.code = code; } - public int getCount() { - return count; - } - - public void setCount(int count) { - this.count = count; - } - public String getMessage() { return message; } @@ -45,6 +37,14 @@ this.message = message; } + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + public List getData() { return data; } @@ -55,197 +55,197 @@ public static class DataBean { /** - * g : 3EQK6 - * y : 70 - * a : 10884867 - * n : 68125760 - * i : 2030707 - * t : 1632903145 - * e : HMM ROTTERDAM - * m : 351246000 - * o : 9868338 - * f : PAN - * l : 400 - * c : 1872 - * s : 163 - * h : 189 - * v : 0 - * b : 62 - * r : 10-15 19:00 - * p : EGSUE - * d : 154 + * aisStatus : 0 + * course : 11 + * depth : 9.3 + * destination : CNSHK + * engName : OREA + * expectTime : 11-04 20:00 + * heading : 0 + * imoNum : 9670107 + * lat : 17.91 + * lng : 113.31 + * mmsi : 256558000 + * nationality : MLT + * positionTime : 2021-11-04 16:36:42 + * shipCallNum : 9HA3953 + * shipId : 153841 + * shipLength : 185 + * shipType : 72 + * shipWidth : 30 + * speed : 13 */ - private String g; - private String y; - private int a; - private int n; - private String i; - private int t; - private String e; - private String m; - private String o; - private String f; - private int l; - private int c; - private int s; - private int h; - private String v; - private int b; - private String r; - private String p; - private int d; + private String aisStatus; + private float course; + private double depth; + private String destination; + private String engName; + private String expectTime; + private int heading; + private String imoNum; + private double lat; + private double lng; + private String mmsi; + private String nationality; + private String positionTime; + private String shipCallNum; + private String shipId; + private int shipLength; + private String shipType; + private int shipWidth; + private float speed; - public String getG() { - return g; + public String getAisStatus() { + return aisStatus; } - public void setG(String g) { - this.g = g; + public void setAisStatus(String aisStatus) { + this.aisStatus = aisStatus; } - public String getY() { - return y; + public Float getCourse() { + return course; } - public void setY(String y) { - this.y = y; + public void setCourse(float course) { + this.course = course; } - public int getA() { - return a; + public double getDepth() { + return depth; } - public void setA(int a) { - this.a = a; + public void setDepth(double depth) { + this.depth = depth; } - public int getN() { - return n; + public String getDestination() { + return destination; } - public void setN(int n) { - this.n = n; + public void setDestination(String destination) { + this.destination = destination; } - public String getI() { - return i; + public String getEngName() { + return engName; } - public void setI(String i) { - this.i = i; + public void setEngName(String engName) { + this.engName = engName; } - public int getT() { - return t; + public String getExpectTime() { + return expectTime; } - public void setT(int t) { - this.t = t; + public void setExpectTime(String expectTime) { + this.expectTime = expectTime; } - public String getE() { - return e; + public int getHeading() { + return heading; } - public void setE(String e) { - this.e = e; + public void setHeading(int heading) { + this.heading = heading; } - public String getM() { - return m; + public String getImoNum() { + return imoNum; } - public void setM(String m) { - this.m = m; + public void setImoNum(String imoNum) { + this.imoNum = imoNum; } - public String getO() { - return o; + public double getLat() { + return lat; } - public void setO(String o) { - this.o = o; + public void setLat(double lat) { + this.lat = lat; } - public String getF() { - return f; + public double getLng() { + return lng; } - public void setF(String f) { - this.f = f; + public void setLng(double lng) { + this.lng = lng; } - public int getL() { - return l; + public String getMmsi() { + return mmsi; } - public void setL(int l) { - this.l = l; + public void setMmsi(String mmsi) { + this.mmsi = mmsi; } - public int getC() { - return c; + public String getNationality() { + return nationality; } - public void setC(int c) { - this.c = c; + public void setNationality(String nationality) { + this.nationality = nationality; } - public int getS() { - return s; + public String getPositionTime() { + return positionTime; } - public void setS(int s) { - this.s = s; + public void setPositionTime(String positionTime) { + this.positionTime = positionTime; } - public int getH() { - return h; + public String getShipCallNum() { + return shipCallNum; } - public void setH(int h) { - this.h = h; + public void setShipCallNum(String shipCallNum) { + this.shipCallNum = shipCallNum; } - public String getV() { - return v; + public String getShipId() { + return shipId; } - public void setV(String v) { - this.v = v; + public void setShipId(String shipId) { + this.shipId = shipId; } - public int getB() { - return b; + public int getShipLength() { + return shipLength; } - public void setB(int b) { - this.b = b; + public void setShipLength(int shipLength) { + this.shipLength = shipLength; } - public String getR() { - return r; + public String getShipType() { + return shipType; } - public void setR(String r) { - this.r = r; + public void setShipType(String shipType) { + this.shipType = shipType; } - public String getP() { - return p; + public int getShipWidth() { + return shipWidth; } - public void setP(String p) { - this.p = p; + public void setShipWidth(int shipWidth) { + this.shipWidth = shipWidth; } - public int getD() { - return d; + public float getSpeed() { + return speed; } - public void setD(int d) { - this.d = d; + public void setSpeed(float speed) { + this.speed = speed; } } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java deleted file mode 100644 index 87d5203..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.missiles.socket.service; - -/** - * @author a203 - */ -public interface IWebSocketService { - /** - * WebSocket数据通信接口 - * - * @param message - */ - void sendMessage(String message); -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java deleted file mode 100644 index a2fc650..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.socket.service.impl; - -import com.casic.missiles.socket.AlarmWebSocketServer; -import com.casic.missiles.socket.service.IWebSocketService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -/** - * @author a203 - */ -@Slf4j -@Service -public class WebSocketServiceImpl implements IWebSocketService { - - private final AlarmWebSocketServer socketServer; - - public WebSocketServiceImpl() { - socketServer = new AlarmWebSocketServer(); - } - - @Override - public void sendMessage(String msg) { - //将消息发送给客户端 - - } -} diff --git a/casic-server-support/pom.xml b/casic-server-support/pom.xml index b1af713..33a4f3f 100644 --- a/casic-server-support/pom.xml +++ b/casic-server-support/pom.xml @@ -35,6 +35,16 @@ compile + + com.squareup.okhttp3 + okhttp + 4.9.1 + + + com.alibaba + fastjson + ${fastjson.version} + diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java index a2e4208..41d716b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java @@ -15,12 +15,24 @@ public class AisLog extends Model { private static final long serialVersionUID = 1L; - @TableId(value = "ID", type = IdType.AUTO) - private Integer id; + @TableId(value = "ID", type = IdType.ASSIGN_ID) + private Long id; + + /** + * ais请求参数 + */ + @TableField("REQUEST_PARAM") + private String requestParam; + + /** + * ais返回数据 + */ + @TableField("RESPONSE") + private String response; /** * 调用第三方ais接口时间 */ - @TableField("TIME") - private String time; + @TableField("REQUEST_TIME") + private String requestTime; } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java new file mode 100644 index 0000000..2fea300 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.utils; + +/** + * @author a203 + */ +public class Constant { + public static final String HTTP_HEADER = "http://"; +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c999812 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.utils; + +import lombok.NonNull; +import okhttp3.*; + +import java.io.IOException; +import java.util.Objects; +import java.util.concurrent.TimeUnit; + +/** + * 网络请求工具 + * + * @author a203 + */ +public class HttpRequestHelper { + + public static RequestBody createRequestBody(String value) { + return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), value); + } + + public static String doPost(Request request) { + return streamResponse(request); + } + + public static String doGet(String url) { + return streamResponse(new Request.Builder() + .url(url) + .build()); + } + + private static String streamResponse(@NonNull Request request) { + OkHttpClient httpClient = new OkHttpClient.Builder() + .connectTimeout(10, TimeUnit.SECONDS) + .writeTimeout(10, TimeUnit.SECONDS) + .readTimeout(20, TimeUnit.SECONDS) + .build(); + Call call = httpClient.newCall(request); + try { + Response response = call.execute(); + return response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } +} \ No newline at end of file diff --git a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java index 9a5ac07..6379660 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java @@ -184,7 +184,7 @@ /** * 短信内容 * - * 西工大通过Socket发短信给我们,然后我们用卫星发送给我们自己的岸基软件,然后再传给西工大岸基软件 + * 方舱通过Socket发送短信给203后台,然后203后台将短信内容加密之后用卫星发送给203自己的岸基软件,然后解密之后再传给西工大岸基软件 * */ String decodeSMS = DecodeData.decodeSMS(data); log.info("decodeSMS ===> " + decodeSMS); diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java index 34512f9..a74299c 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java @@ -3,11 +3,6 @@ import com.casic.missiles.modular.system.dto.remote.ShipRemoteData; import lombok.Data; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; -import java.util.TimeZone; - /** * @author a203 */ @@ -69,38 +64,31 @@ /** * 吃水(单位:m) */ - private Float depth; + private Double depth; /** * 国籍 3 字母 */ private String nationality; public ShipDTO(ShipRemoteData.DataBean data) { - this.shipId = data.getI(); - this.positionTime = formatUTC(data.getT()); - this.lng = (double) data.getN() / 600000; - this.lat = (double) data.getA() / 600000; - this.course = (float) data.getC() / 10; - this.heading = data.getH(); - this.speed = (float) data.getS() / 10; - this.aisStatus = data.getV(); - this.mmsi = data.getM(); - this.engName = data.getE(); - this.imoNum = data.getO(); - this.shipCallNum = data.getG(); - this.shipType = data.getY(); - this.shipLength = data.getL(); - this.shipWidth = data.getB(); - this.expectTime = data.getR(); - this.destination = data.getP(); - this.depth = (float) data.getD() / 10; - this.nationality = data.getF(); - } - - private String formatUTC(int seconds) { - long utc = seconds * 1000L; - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - format.setTimeZone(TimeZone.getTimeZone("GMT+08")); - return format.format(new Date(utc)); + this.shipId = data.getShipId(); + this.positionTime = data.getPositionTime(); + this.lng = data.getLng(); + this.lat = data.getLat(); + this.course = data.getCourse(); + this.heading = data.getHeading(); + this.speed = data.getSpeed(); + this.aisStatus = data.getAisStatus(); + this.mmsi = data.getMmsi(); + this.engName = data.getEngName(); + this.imoNum = data.getImoNum(); + this.shipCallNum = data.getShipCallNum(); + this.shipType = data.getShipType(); + this.shipLength = data.getShipLength(); + this.shipWidth = data.getShipWidth(); + this.expectTime = data.getExpectTime(); + this.destination = data.getDestination(); + this.depth = data.getDepth(); + this.nationality = data.getNationality(); } } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java index 6d7fadb..79ace95 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java @@ -3,40 +3,32 @@ import java.util.List; /** - * 第三方AIS数据模型 + * AIS数据模型 * * @author a203 */ public class ShipRemoteData { /** - * code : 0 - * count : 7 - * message : 成功 - * data : [{"g":"3EQK6","y":"70","a":10884867,"n":68125760,"i":"2030707","t":1632903145,"e":"HMM ROTTERDAM","m":"351246000","o":"9868338","f":"PAN","l":400,"c":1872,"s":163,"h":189,"v":"0","b":62,"r":"10-15 19:00","p":"EGSUE","d":154}] + * code : 200 + * data : [{"aisStatus":"0","course":11,"depth":9.3,"destination":"CNSHK","engName":"OREA","expectTime":"11-04 20:00","heading":0,"imoNum":"9670107","lat":17.91,"lng":113.31,"mmsi":"256558000","nationality":"MLT","positionTime":"2021-11-04 16:36:42","shipCallNum":"9HA3953","shipId":"153841","shipLength":185,"shipType":"72","shipWidth":30,"speed":13}] + * message : 请求成功 + * success : true */ - private String code; - private int count; + private int code; private String message; + private boolean success; private List data; - public String getCode() { + public int getCode() { return code; } - public void setCode(String code) { + public void setCode(int code) { this.code = code; } - public int getCount() { - return count; - } - - public void setCount(int count) { - this.count = count; - } - public String getMessage() { return message; } @@ -45,6 +37,14 @@ this.message = message; } + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + public List getData() { return data; } @@ -55,197 +55,197 @@ public static class DataBean { /** - * g : 3EQK6 - * y : 70 - * a : 10884867 - * n : 68125760 - * i : 2030707 - * t : 1632903145 - * e : HMM ROTTERDAM - * m : 351246000 - * o : 9868338 - * f : PAN - * l : 400 - * c : 1872 - * s : 163 - * h : 189 - * v : 0 - * b : 62 - * r : 10-15 19:00 - * p : EGSUE - * d : 154 + * aisStatus : 0 + * course : 11 + * depth : 9.3 + * destination : CNSHK + * engName : OREA + * expectTime : 11-04 20:00 + * heading : 0 + * imoNum : 9670107 + * lat : 17.91 + * lng : 113.31 + * mmsi : 256558000 + * nationality : MLT + * positionTime : 2021-11-04 16:36:42 + * shipCallNum : 9HA3953 + * shipId : 153841 + * shipLength : 185 + * shipType : 72 + * shipWidth : 30 + * speed : 13 */ - private String g; - private String y; - private int a; - private int n; - private String i; - private int t; - private String e; - private String m; - private String o; - private String f; - private int l; - private int c; - private int s; - private int h; - private String v; - private int b; - private String r; - private String p; - private int d; + private String aisStatus; + private float course; + private double depth; + private String destination; + private String engName; + private String expectTime; + private int heading; + private String imoNum; + private double lat; + private double lng; + private String mmsi; + private String nationality; + private String positionTime; + private String shipCallNum; + private String shipId; + private int shipLength; + private String shipType; + private int shipWidth; + private float speed; - public String getG() { - return g; + public String getAisStatus() { + return aisStatus; } - public void setG(String g) { - this.g = g; + public void setAisStatus(String aisStatus) { + this.aisStatus = aisStatus; } - public String getY() { - return y; + public Float getCourse() { + return course; } - public void setY(String y) { - this.y = y; + public void setCourse(float course) { + this.course = course; } - public int getA() { - return a; + public double getDepth() { + return depth; } - public void setA(int a) { - this.a = a; + public void setDepth(double depth) { + this.depth = depth; } - public int getN() { - return n; + public String getDestination() { + return destination; } - public void setN(int n) { - this.n = n; + public void setDestination(String destination) { + this.destination = destination; } - public String getI() { - return i; + public String getEngName() { + return engName; } - public void setI(String i) { - this.i = i; + public void setEngName(String engName) { + this.engName = engName; } - public int getT() { - return t; + public String getExpectTime() { + return expectTime; } - public void setT(int t) { - this.t = t; + public void setExpectTime(String expectTime) { + this.expectTime = expectTime; } - public String getE() { - return e; + public int getHeading() { + return heading; } - public void setE(String e) { - this.e = e; + public void setHeading(int heading) { + this.heading = heading; } - public String getM() { - return m; + public String getImoNum() { + return imoNum; } - public void setM(String m) { - this.m = m; + public void setImoNum(String imoNum) { + this.imoNum = imoNum; } - public String getO() { - return o; + public double getLat() { + return lat; } - public void setO(String o) { - this.o = o; + public void setLat(double lat) { + this.lat = lat; } - public String getF() { - return f; + public double getLng() { + return lng; } - public void setF(String f) { - this.f = f; + public void setLng(double lng) { + this.lng = lng; } - public int getL() { - return l; + public String getMmsi() { + return mmsi; } - public void setL(int l) { - this.l = l; + public void setMmsi(String mmsi) { + this.mmsi = mmsi; } - public int getC() { - return c; + public String getNationality() { + return nationality; } - public void setC(int c) { - this.c = c; + public void setNationality(String nationality) { + this.nationality = nationality; } - public int getS() { - return s; + public String getPositionTime() { + return positionTime; } - public void setS(int s) { - this.s = s; + public void setPositionTime(String positionTime) { + this.positionTime = positionTime; } - public int getH() { - return h; + public String getShipCallNum() { + return shipCallNum; } - public void setH(int h) { - this.h = h; + public void setShipCallNum(String shipCallNum) { + this.shipCallNum = shipCallNum; } - public String getV() { - return v; + public String getShipId() { + return shipId; } - public void setV(String v) { - this.v = v; + public void setShipId(String shipId) { + this.shipId = shipId; } - public int getB() { - return b; + public int getShipLength() { + return shipLength; } - public void setB(int b) { - this.b = b; + public void setShipLength(int shipLength) { + this.shipLength = shipLength; } - public String getR() { - return r; + public String getShipType() { + return shipType; } - public void setR(String r) { - this.r = r; + public void setShipType(String shipType) { + this.shipType = shipType; } - public String getP() { - return p; + public int getShipWidth() { + return shipWidth; } - public void setP(String p) { - this.p = p; + public void setShipWidth(int shipWidth) { + this.shipWidth = shipWidth; } - public int getD() { - return d; + public float getSpeed() { + return speed; } - public void setD(int d) { - this.d = d; + public void setSpeed(float speed) { + this.speed = speed; } } } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java index c1a1873..932678f 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java @@ -1,21 +1,21 @@ package com.casic.missiles.modular.system.service.impl; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.system.dao.ShipMapper; +import com.casic.missiles.modular.system.dto.AddressConfigDTO; import com.casic.missiles.modular.system.dto.ShipDTO; import com.casic.missiles.modular.system.dto.remote.ShipRemoteData; import com.casic.missiles.modular.system.model.AisLog; import com.casic.missiles.modular.system.model.Ship; +import com.casic.missiles.modular.system.service.IAddressConfigService; import com.casic.missiles.modular.system.service.IAisLogService; import com.casic.missiles.modular.system.service.IShipService; import com.casic.missiles.modular.system.utils.Constant; import com.casic.missiles.modular.system.utils.HttpRequestHelper; import com.casic.missiles.modular.system.utils.TimeUtil; -import okhttp3.Request; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -30,65 +30,50 @@ @Service public class ShipServiceImpl extends ServiceImpl implements IShipService { - private static final String SUCCESS_CODE = "0"; + private static final int SUCCESS_CODE = 200; + private final IAddressConfigService configService; private final IAisLogService logService; - public ShipServiceImpl(IAisLogService logService) { + public ShipServiceImpl(IAddressConfigService configService, IAisLogService logService) { + this.configService = configService; this.logService = logService; } @Override public List shipsInCircle(String rgn, int age) { - if (rgn == null || rgn.isEmpty()) { - throw new NullPointerException("搜索区域不能为空"); + AddressConfigDTO addressConfig = configService.selectLastConfig(); + String aisIp = addressConfig.getAisIp(); + if (aisIp.contains(Constant.HTTP_HEADER)) { + aisIp = aisIp.replace(Constant.HTTP_HEADER, ""); } - if (age < Constant.MIN_AGE || age > Constant.MAX_AGE) { - throw new IllegalArgumentException("时间范围错误"); - } - /** - * 封装请求参数 - * */ - JSONObject jsonObject = new JSONObject(); - try { - jsonObject.put("rgn", rgn); - jsonObject.put("age", age); - } catch (JSONException e) { - e.printStackTrace(); - } - List shipDTOList = new ArrayList<>(); + String url = Constant.HTTP_HEADER + aisIp + "/ais/shipsInCircle?rgn=" + rgn + "&age=" + age; + /** * 获取AIS接口数据 * */ - Request request = new Request.Builder() - .addHeader(Constant.AIS_HEADER_NAME, Constant.AIS_KEY_VALUE) - .url(Constant.SHIPS_IN_CIRCLE) - .post(HttpRequestHelper.createRequestBody(jsonObject.toJSONString())) - .build(); - String res = HttpRequestHelper.doPost(request); + String res = HttpRequestHelper.doGet(url); //先解析出code,根据code判断 - if (SUCCESS_CODE.equals(getResponseCode(res))) { + if (SUCCESS_CODE == getResponseCode(res)) { //请求成功才保存ais访问记录 AisLog aisLog = new AisLog(); - aisLog.setTime(TimeUtil.getCurrentTime()); + aisLog.setRequestParam(url); + aisLog.setResponse(res); + aisLog.setRequestTime(TimeUtil.getCurrentTime()); logService.save(aisLog); ShipRemoteData remoteData = JSON.parseObject(res, new TypeReference() { }); + List shipDTOList = new ArrayList<>(); for (ShipRemoteData.DataBean data : remoteData.getData()) { shipDTOList.add(new ShipDTO(data)); } + return shipDTOList; } - return shipDTOList; + return null; } - /** - * {"code":"101", "message":"权限失效"} - */ - public String getResponseCode(String value) { - if ("".equals(value)) { - return value; - } + public int getResponseCode(String value) { JSONObject jsonObject = JSON.parseObject(value); - return jsonObject.getString("code"); + return jsonObject.getInteger("code"); } } diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java deleted file mode 100644 index 87d5203..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.missiles.socket.service; - -/** - * @author a203 - */ -public interface IWebSocketService { - /** - * WebSocket数据通信接口 - * - * @param message - */ - void sendMessage(String message); -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java deleted file mode 100644 index a2fc650..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.socket.service.impl; - -import com.casic.missiles.socket.AlarmWebSocketServer; -import com.casic.missiles.socket.service.IWebSocketService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -/** - * @author a203 - */ -@Slf4j -@Service -public class WebSocketServiceImpl implements IWebSocketService { - - private final AlarmWebSocketServer socketServer; - - public WebSocketServiceImpl() { - socketServer = new AlarmWebSocketServer(); - } - - @Override - public void sendMessage(String msg) { - //将消息发送给客户端 - - } -} diff --git a/casic-server-support/pom.xml b/casic-server-support/pom.xml index b1af713..33a4f3f 100644 --- a/casic-server-support/pom.xml +++ b/casic-server-support/pom.xml @@ -35,6 +35,16 @@ compile + + com.squareup.okhttp3 + okhttp + 4.9.1 + + + com.alibaba + fastjson + ${fastjson.version} + diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java index a2e4208..41d716b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java @@ -15,12 +15,24 @@ public class AisLog extends Model { private static final long serialVersionUID = 1L; - @TableId(value = "ID", type = IdType.AUTO) - private Integer id; + @TableId(value = "ID", type = IdType.ASSIGN_ID) + private Long id; + + /** + * ais请求参数 + */ + @TableField("REQUEST_PARAM") + private String requestParam; + + /** + * ais返回数据 + */ + @TableField("RESPONSE") + private String response; /** * 调用第三方ais接口时间 */ - @TableField("TIME") - private String time; + @TableField("REQUEST_TIME") + private String requestTime; } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java new file mode 100644 index 0000000..2fea300 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.utils; + +/** + * @author a203 + */ +public class Constant { + public static final String HTTP_HEADER = "http://"; +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c999812 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.utils; + +import lombok.NonNull; +import okhttp3.*; + +import java.io.IOException; +import java.util.Objects; +import java.util.concurrent.TimeUnit; + +/** + * 网络请求工具 + * + * @author a203 + */ +public class HttpRequestHelper { + + public static RequestBody createRequestBody(String value) { + return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), value); + } + + public static String doPost(Request request) { + return streamResponse(request); + } + + public static String doGet(String url) { + return streamResponse(new Request.Builder() + .url(url) + .build()); + } + + private static String streamResponse(@NonNull Request request) { + OkHttpClient httpClient = new OkHttpClient.Builder() + .connectTimeout(10, TimeUnit.SECONDS) + .writeTimeout(10, TimeUnit.SECONDS) + .readTimeout(20, TimeUnit.SECONDS) + .build(); + Call call = httpClient.newCall(request); + try { + Response response = call.execute(); + return response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } +} \ No newline at end of file diff --git a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java index 9a5ac07..6379660 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java @@ -184,7 +184,7 @@ /** * 短信内容 * - * 西工大通过Socket发短信给我们,然后我们用卫星发送给我们自己的岸基软件,然后再传给西工大岸基软件 + * 方舱通过Socket发送短信给203后台,然后203后台将短信内容加密之后用卫星发送给203自己的岸基软件,然后解密之后再传给西工大岸基软件 * */ String decodeSMS = DecodeData.decodeSMS(data); log.info("decodeSMS ===> " + decodeSMS); diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java index 34512f9..a74299c 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java @@ -3,11 +3,6 @@ import com.casic.missiles.modular.system.dto.remote.ShipRemoteData; import lombok.Data; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; -import java.util.TimeZone; - /** * @author a203 */ @@ -69,38 +64,31 @@ /** * 吃水(单位:m) */ - private Float depth; + private Double depth; /** * 国籍 3 字母 */ private String nationality; public ShipDTO(ShipRemoteData.DataBean data) { - this.shipId = data.getI(); - this.positionTime = formatUTC(data.getT()); - this.lng = (double) data.getN() / 600000; - this.lat = (double) data.getA() / 600000; - this.course = (float) data.getC() / 10; - this.heading = data.getH(); - this.speed = (float) data.getS() / 10; - this.aisStatus = data.getV(); - this.mmsi = data.getM(); - this.engName = data.getE(); - this.imoNum = data.getO(); - this.shipCallNum = data.getG(); - this.shipType = data.getY(); - this.shipLength = data.getL(); - this.shipWidth = data.getB(); - this.expectTime = data.getR(); - this.destination = data.getP(); - this.depth = (float) data.getD() / 10; - this.nationality = data.getF(); - } - - private String formatUTC(int seconds) { - long utc = seconds * 1000L; - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - format.setTimeZone(TimeZone.getTimeZone("GMT+08")); - return format.format(new Date(utc)); + this.shipId = data.getShipId(); + this.positionTime = data.getPositionTime(); + this.lng = data.getLng(); + this.lat = data.getLat(); + this.course = data.getCourse(); + this.heading = data.getHeading(); + this.speed = data.getSpeed(); + this.aisStatus = data.getAisStatus(); + this.mmsi = data.getMmsi(); + this.engName = data.getEngName(); + this.imoNum = data.getImoNum(); + this.shipCallNum = data.getShipCallNum(); + this.shipType = data.getShipType(); + this.shipLength = data.getShipLength(); + this.shipWidth = data.getShipWidth(); + this.expectTime = data.getExpectTime(); + this.destination = data.getDestination(); + this.depth = data.getDepth(); + this.nationality = data.getNationality(); } } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java index 6d7fadb..79ace95 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java @@ -3,40 +3,32 @@ import java.util.List; /** - * 第三方AIS数据模型 + * AIS数据模型 * * @author a203 */ public class ShipRemoteData { /** - * code : 0 - * count : 7 - * message : 成功 - * data : [{"g":"3EQK6","y":"70","a":10884867,"n":68125760,"i":"2030707","t":1632903145,"e":"HMM ROTTERDAM","m":"351246000","o":"9868338","f":"PAN","l":400,"c":1872,"s":163,"h":189,"v":"0","b":62,"r":"10-15 19:00","p":"EGSUE","d":154}] + * code : 200 + * data : [{"aisStatus":"0","course":11,"depth":9.3,"destination":"CNSHK","engName":"OREA","expectTime":"11-04 20:00","heading":0,"imoNum":"9670107","lat":17.91,"lng":113.31,"mmsi":"256558000","nationality":"MLT","positionTime":"2021-11-04 16:36:42","shipCallNum":"9HA3953","shipId":"153841","shipLength":185,"shipType":"72","shipWidth":30,"speed":13}] + * message : 请求成功 + * success : true */ - private String code; - private int count; + private int code; private String message; + private boolean success; private List data; - public String getCode() { + public int getCode() { return code; } - public void setCode(String code) { + public void setCode(int code) { this.code = code; } - public int getCount() { - return count; - } - - public void setCount(int count) { - this.count = count; - } - public String getMessage() { return message; } @@ -45,6 +37,14 @@ this.message = message; } + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + public List getData() { return data; } @@ -55,197 +55,197 @@ public static class DataBean { /** - * g : 3EQK6 - * y : 70 - * a : 10884867 - * n : 68125760 - * i : 2030707 - * t : 1632903145 - * e : HMM ROTTERDAM - * m : 351246000 - * o : 9868338 - * f : PAN - * l : 400 - * c : 1872 - * s : 163 - * h : 189 - * v : 0 - * b : 62 - * r : 10-15 19:00 - * p : EGSUE - * d : 154 + * aisStatus : 0 + * course : 11 + * depth : 9.3 + * destination : CNSHK + * engName : OREA + * expectTime : 11-04 20:00 + * heading : 0 + * imoNum : 9670107 + * lat : 17.91 + * lng : 113.31 + * mmsi : 256558000 + * nationality : MLT + * positionTime : 2021-11-04 16:36:42 + * shipCallNum : 9HA3953 + * shipId : 153841 + * shipLength : 185 + * shipType : 72 + * shipWidth : 30 + * speed : 13 */ - private String g; - private String y; - private int a; - private int n; - private String i; - private int t; - private String e; - private String m; - private String o; - private String f; - private int l; - private int c; - private int s; - private int h; - private String v; - private int b; - private String r; - private String p; - private int d; + private String aisStatus; + private float course; + private double depth; + private String destination; + private String engName; + private String expectTime; + private int heading; + private String imoNum; + private double lat; + private double lng; + private String mmsi; + private String nationality; + private String positionTime; + private String shipCallNum; + private String shipId; + private int shipLength; + private String shipType; + private int shipWidth; + private float speed; - public String getG() { - return g; + public String getAisStatus() { + return aisStatus; } - public void setG(String g) { - this.g = g; + public void setAisStatus(String aisStatus) { + this.aisStatus = aisStatus; } - public String getY() { - return y; + public Float getCourse() { + return course; } - public void setY(String y) { - this.y = y; + public void setCourse(float course) { + this.course = course; } - public int getA() { - return a; + public double getDepth() { + return depth; } - public void setA(int a) { - this.a = a; + public void setDepth(double depth) { + this.depth = depth; } - public int getN() { - return n; + public String getDestination() { + return destination; } - public void setN(int n) { - this.n = n; + public void setDestination(String destination) { + this.destination = destination; } - public String getI() { - return i; + public String getEngName() { + return engName; } - public void setI(String i) { - this.i = i; + public void setEngName(String engName) { + this.engName = engName; } - public int getT() { - return t; + public String getExpectTime() { + return expectTime; } - public void setT(int t) { - this.t = t; + public void setExpectTime(String expectTime) { + this.expectTime = expectTime; } - public String getE() { - return e; + public int getHeading() { + return heading; } - public void setE(String e) { - this.e = e; + public void setHeading(int heading) { + this.heading = heading; } - public String getM() { - return m; + public String getImoNum() { + return imoNum; } - public void setM(String m) { - this.m = m; + public void setImoNum(String imoNum) { + this.imoNum = imoNum; } - public String getO() { - return o; + public double getLat() { + return lat; } - public void setO(String o) { - this.o = o; + public void setLat(double lat) { + this.lat = lat; } - public String getF() { - return f; + public double getLng() { + return lng; } - public void setF(String f) { - this.f = f; + public void setLng(double lng) { + this.lng = lng; } - public int getL() { - return l; + public String getMmsi() { + return mmsi; } - public void setL(int l) { - this.l = l; + public void setMmsi(String mmsi) { + this.mmsi = mmsi; } - public int getC() { - return c; + public String getNationality() { + return nationality; } - public void setC(int c) { - this.c = c; + public void setNationality(String nationality) { + this.nationality = nationality; } - public int getS() { - return s; + public String getPositionTime() { + return positionTime; } - public void setS(int s) { - this.s = s; + public void setPositionTime(String positionTime) { + this.positionTime = positionTime; } - public int getH() { - return h; + public String getShipCallNum() { + return shipCallNum; } - public void setH(int h) { - this.h = h; + public void setShipCallNum(String shipCallNum) { + this.shipCallNum = shipCallNum; } - public String getV() { - return v; + public String getShipId() { + return shipId; } - public void setV(String v) { - this.v = v; + public void setShipId(String shipId) { + this.shipId = shipId; } - public int getB() { - return b; + public int getShipLength() { + return shipLength; } - public void setB(int b) { - this.b = b; + public void setShipLength(int shipLength) { + this.shipLength = shipLength; } - public String getR() { - return r; + public String getShipType() { + return shipType; } - public void setR(String r) { - this.r = r; + public void setShipType(String shipType) { + this.shipType = shipType; } - public String getP() { - return p; + public int getShipWidth() { + return shipWidth; } - public void setP(String p) { - this.p = p; + public void setShipWidth(int shipWidth) { + this.shipWidth = shipWidth; } - public int getD() { - return d; + public float getSpeed() { + return speed; } - public void setD(int d) { - this.d = d; + public void setSpeed(float speed) { + this.speed = speed; } } } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java index c1a1873..932678f 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java @@ -1,21 +1,21 @@ package com.casic.missiles.modular.system.service.impl; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.system.dao.ShipMapper; +import com.casic.missiles.modular.system.dto.AddressConfigDTO; import com.casic.missiles.modular.system.dto.ShipDTO; import com.casic.missiles.modular.system.dto.remote.ShipRemoteData; import com.casic.missiles.modular.system.model.AisLog; import com.casic.missiles.modular.system.model.Ship; +import com.casic.missiles.modular.system.service.IAddressConfigService; import com.casic.missiles.modular.system.service.IAisLogService; import com.casic.missiles.modular.system.service.IShipService; import com.casic.missiles.modular.system.utils.Constant; import com.casic.missiles.modular.system.utils.HttpRequestHelper; import com.casic.missiles.modular.system.utils.TimeUtil; -import okhttp3.Request; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -30,65 +30,50 @@ @Service public class ShipServiceImpl extends ServiceImpl implements IShipService { - private static final String SUCCESS_CODE = "0"; + private static final int SUCCESS_CODE = 200; + private final IAddressConfigService configService; private final IAisLogService logService; - public ShipServiceImpl(IAisLogService logService) { + public ShipServiceImpl(IAddressConfigService configService, IAisLogService logService) { + this.configService = configService; this.logService = logService; } @Override public List shipsInCircle(String rgn, int age) { - if (rgn == null || rgn.isEmpty()) { - throw new NullPointerException("搜索区域不能为空"); + AddressConfigDTO addressConfig = configService.selectLastConfig(); + String aisIp = addressConfig.getAisIp(); + if (aisIp.contains(Constant.HTTP_HEADER)) { + aisIp = aisIp.replace(Constant.HTTP_HEADER, ""); } - if (age < Constant.MIN_AGE || age > Constant.MAX_AGE) { - throw new IllegalArgumentException("时间范围错误"); - } - /** - * 封装请求参数 - * */ - JSONObject jsonObject = new JSONObject(); - try { - jsonObject.put("rgn", rgn); - jsonObject.put("age", age); - } catch (JSONException e) { - e.printStackTrace(); - } - List shipDTOList = new ArrayList<>(); + String url = Constant.HTTP_HEADER + aisIp + "/ais/shipsInCircle?rgn=" + rgn + "&age=" + age; + /** * 获取AIS接口数据 * */ - Request request = new Request.Builder() - .addHeader(Constant.AIS_HEADER_NAME, Constant.AIS_KEY_VALUE) - .url(Constant.SHIPS_IN_CIRCLE) - .post(HttpRequestHelper.createRequestBody(jsonObject.toJSONString())) - .build(); - String res = HttpRequestHelper.doPost(request); + String res = HttpRequestHelper.doGet(url); //先解析出code,根据code判断 - if (SUCCESS_CODE.equals(getResponseCode(res))) { + if (SUCCESS_CODE == getResponseCode(res)) { //请求成功才保存ais访问记录 AisLog aisLog = new AisLog(); - aisLog.setTime(TimeUtil.getCurrentTime()); + aisLog.setRequestParam(url); + aisLog.setResponse(res); + aisLog.setRequestTime(TimeUtil.getCurrentTime()); logService.save(aisLog); ShipRemoteData remoteData = JSON.parseObject(res, new TypeReference() { }); + List shipDTOList = new ArrayList<>(); for (ShipRemoteData.DataBean data : remoteData.getData()) { shipDTOList.add(new ShipDTO(data)); } + return shipDTOList; } - return shipDTOList; + return null; } - /** - * {"code":"101", "message":"权限失效"} - */ - public String getResponseCode(String value) { - if ("".equals(value)) { - return value; - } + public int getResponseCode(String value) { JSONObject jsonObject = JSON.parseObject(value); - return jsonObject.getString("code"); + return jsonObject.getInteger("code"); } } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/Constant.java deleted file mode 100644 index 8edaeff..0000000 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/Constant.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.casic.missiles.modular.system.utils; - -/** - * 船舶相关常量 - * - * @author a203 - */ -public class Constant { - private static final String AIS_BASE_URL = "https://api3.myships.com"; - public static final String AIS_HEADER_NAME = "appKey"; - public static final String AIS_KEY_VALUE = "de26d070af5f42fabb13a02f7c0ec065"; - public static final String CONTENT_TYPE = "application/json; charset=utf-8"; - - public static final String SHIPS_IN_CIRCLE = AIS_BASE_URL + "/sp/region/latest/shipinfoCircle"; - - public static final int MIN_AGE = 1; - public static final int MAX_AGE = 240; -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java deleted file mode 100644 index 87d5203..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/IWebSocketService.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.casic.missiles.socket.service; - -/** - * @author a203 - */ -public interface IWebSocketService { - /** - * WebSocket数据通信接口 - * - * @param message - */ - void sendMessage(String message); -} diff --git a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java b/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java deleted file mode 100644 index a2fc650..0000000 --- a/casic-alarm/src/main/java/com/casic/missiles/socket/service/impl/WebSocketServiceImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.casic.missiles.socket.service.impl; - -import com.casic.missiles.socket.AlarmWebSocketServer; -import com.casic.missiles.socket.service.IWebSocketService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -/** - * @author a203 - */ -@Slf4j -@Service -public class WebSocketServiceImpl implements IWebSocketService { - - private final AlarmWebSocketServer socketServer; - - public WebSocketServiceImpl() { - socketServer = new AlarmWebSocketServer(); - } - - @Override - public void sendMessage(String msg) { - //将消息发送给客户端 - - } -} diff --git a/casic-server-support/pom.xml b/casic-server-support/pom.xml index b1af713..33a4f3f 100644 --- a/casic-server-support/pom.xml +++ b/casic-server-support/pom.xml @@ -35,6 +35,16 @@ compile + + com.squareup.okhttp3 + okhttp + 4.9.1 + + + com.alibaba + fastjson + ${fastjson.version} + diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java index a2e4208..41d716b 100644 --- a/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/model/AisLog.java @@ -15,12 +15,24 @@ public class AisLog extends Model { private static final long serialVersionUID = 1L; - @TableId(value = "ID", type = IdType.AUTO) - private Integer id; + @TableId(value = "ID", type = IdType.ASSIGN_ID) + private Long id; + + /** + * ais请求参数 + */ + @TableField("REQUEST_PARAM") + private String requestParam; + + /** + * ais返回数据 + */ + @TableField("RESPONSE") + private String response; /** * 调用第三方ais接口时间 */ - @TableField("TIME") - private String time; + @TableField("REQUEST_TIME") + private String requestTime; } diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java new file mode 100644 index 0000000..2fea300 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/Constant.java @@ -0,0 +1,8 @@ +package com.casic.missiles.modular.system.utils; + +/** + * @author a203 + */ +public class Constant { + public static final String HTTP_HEADER = "http://"; +} diff --git a/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c999812 --- /dev/null +++ b/casic-server-support/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java @@ -0,0 +1,46 @@ +package com.casic.missiles.modular.system.utils; + +import lombok.NonNull; +import okhttp3.*; + +import java.io.IOException; +import java.util.Objects; +import java.util.concurrent.TimeUnit; + +/** + * 网络请求工具 + * + * @author a203 + */ +public class HttpRequestHelper { + + public static RequestBody createRequestBody(String value) { + return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), value); + } + + public static String doPost(Request request) { + return streamResponse(request); + } + + public static String doGet(String url) { + return streamResponse(new Request.Builder() + .url(url) + .build()); + } + + private static String streamResponse(@NonNull Request request) { + OkHttpClient httpClient = new OkHttpClient.Builder() + .connectTimeout(10, TimeUnit.SECONDS) + .writeTimeout(10, TimeUnit.SECONDS) + .readTimeout(20, TimeUnit.SECONDS) + .build(); + Call call = httpClient.newCall(request); + try { + Response response = call.execute(); + return response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } +} \ No newline at end of file diff --git a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java index 9a5ac07..6379660 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java @@ -184,7 +184,7 @@ /** * 短信内容 * - * 西工大通过Socket发短信给我们,然后我们用卫星发送给我们自己的岸基软件,然后再传给西工大岸基软件 + * 方舱通过Socket发送短信给203后台,然后203后台将短信内容加密之后用卫星发送给203自己的岸基软件,然后解密之后再传给西工大岸基软件 * */ String decodeSMS = DecodeData.decodeSMS(data); log.info("decodeSMS ===> " + decodeSMS); diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java index 34512f9..a74299c 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/ShipDTO.java @@ -3,11 +3,6 @@ import com.casic.missiles.modular.system.dto.remote.ShipRemoteData; import lombok.Data; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; -import java.util.TimeZone; - /** * @author a203 */ @@ -69,38 +64,31 @@ /** * 吃水(单位:m) */ - private Float depth; + private Double depth; /** * 国籍 3 字母 */ private String nationality; public ShipDTO(ShipRemoteData.DataBean data) { - this.shipId = data.getI(); - this.positionTime = formatUTC(data.getT()); - this.lng = (double) data.getN() / 600000; - this.lat = (double) data.getA() / 600000; - this.course = (float) data.getC() / 10; - this.heading = data.getH(); - this.speed = (float) data.getS() / 10; - this.aisStatus = data.getV(); - this.mmsi = data.getM(); - this.engName = data.getE(); - this.imoNum = data.getO(); - this.shipCallNum = data.getG(); - this.shipType = data.getY(); - this.shipLength = data.getL(); - this.shipWidth = data.getB(); - this.expectTime = data.getR(); - this.destination = data.getP(); - this.depth = (float) data.getD() / 10; - this.nationality = data.getF(); - } - - private String formatUTC(int seconds) { - long utc = seconds * 1000L; - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); - format.setTimeZone(TimeZone.getTimeZone("GMT+08")); - return format.format(new Date(utc)); + this.shipId = data.getShipId(); + this.positionTime = data.getPositionTime(); + this.lng = data.getLng(); + this.lat = data.getLat(); + this.course = data.getCourse(); + this.heading = data.getHeading(); + this.speed = data.getSpeed(); + this.aisStatus = data.getAisStatus(); + this.mmsi = data.getMmsi(); + this.engName = data.getEngName(); + this.imoNum = data.getImoNum(); + this.shipCallNum = data.getShipCallNum(); + this.shipType = data.getShipType(); + this.shipLength = data.getShipLength(); + this.shipWidth = data.getShipWidth(); + this.expectTime = data.getExpectTime(); + this.destination = data.getDestination(); + this.depth = data.getDepth(); + this.nationality = data.getNationality(); } } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java index 6d7fadb..79ace95 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/dto/remote/ShipRemoteData.java @@ -3,40 +3,32 @@ import java.util.List; /** - * 第三方AIS数据模型 + * AIS数据模型 * * @author a203 */ public class ShipRemoteData { /** - * code : 0 - * count : 7 - * message : 成功 - * data : [{"g":"3EQK6","y":"70","a":10884867,"n":68125760,"i":"2030707","t":1632903145,"e":"HMM ROTTERDAM","m":"351246000","o":"9868338","f":"PAN","l":400,"c":1872,"s":163,"h":189,"v":"0","b":62,"r":"10-15 19:00","p":"EGSUE","d":154}] + * code : 200 + * data : [{"aisStatus":"0","course":11,"depth":9.3,"destination":"CNSHK","engName":"OREA","expectTime":"11-04 20:00","heading":0,"imoNum":"9670107","lat":17.91,"lng":113.31,"mmsi":"256558000","nationality":"MLT","positionTime":"2021-11-04 16:36:42","shipCallNum":"9HA3953","shipId":"153841","shipLength":185,"shipType":"72","shipWidth":30,"speed":13}] + * message : 请求成功 + * success : true */ - private String code; - private int count; + private int code; private String message; + private boolean success; private List data; - public String getCode() { + public int getCode() { return code; } - public void setCode(String code) { + public void setCode(int code) { this.code = code; } - public int getCount() { - return count; - } - - public void setCount(int count) { - this.count = count; - } - public String getMessage() { return message; } @@ -45,6 +37,14 @@ this.message = message; } + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + public List getData() { return data; } @@ -55,197 +55,197 @@ public static class DataBean { /** - * g : 3EQK6 - * y : 70 - * a : 10884867 - * n : 68125760 - * i : 2030707 - * t : 1632903145 - * e : HMM ROTTERDAM - * m : 351246000 - * o : 9868338 - * f : PAN - * l : 400 - * c : 1872 - * s : 163 - * h : 189 - * v : 0 - * b : 62 - * r : 10-15 19:00 - * p : EGSUE - * d : 154 + * aisStatus : 0 + * course : 11 + * depth : 9.3 + * destination : CNSHK + * engName : OREA + * expectTime : 11-04 20:00 + * heading : 0 + * imoNum : 9670107 + * lat : 17.91 + * lng : 113.31 + * mmsi : 256558000 + * nationality : MLT + * positionTime : 2021-11-04 16:36:42 + * shipCallNum : 9HA3953 + * shipId : 153841 + * shipLength : 185 + * shipType : 72 + * shipWidth : 30 + * speed : 13 */ - private String g; - private String y; - private int a; - private int n; - private String i; - private int t; - private String e; - private String m; - private String o; - private String f; - private int l; - private int c; - private int s; - private int h; - private String v; - private int b; - private String r; - private String p; - private int d; + private String aisStatus; + private float course; + private double depth; + private String destination; + private String engName; + private String expectTime; + private int heading; + private String imoNum; + private double lat; + private double lng; + private String mmsi; + private String nationality; + private String positionTime; + private String shipCallNum; + private String shipId; + private int shipLength; + private String shipType; + private int shipWidth; + private float speed; - public String getG() { - return g; + public String getAisStatus() { + return aisStatus; } - public void setG(String g) { - this.g = g; + public void setAisStatus(String aisStatus) { + this.aisStatus = aisStatus; } - public String getY() { - return y; + public Float getCourse() { + return course; } - public void setY(String y) { - this.y = y; + public void setCourse(float course) { + this.course = course; } - public int getA() { - return a; + public double getDepth() { + return depth; } - public void setA(int a) { - this.a = a; + public void setDepth(double depth) { + this.depth = depth; } - public int getN() { - return n; + public String getDestination() { + return destination; } - public void setN(int n) { - this.n = n; + public void setDestination(String destination) { + this.destination = destination; } - public String getI() { - return i; + public String getEngName() { + return engName; } - public void setI(String i) { - this.i = i; + public void setEngName(String engName) { + this.engName = engName; } - public int getT() { - return t; + public String getExpectTime() { + return expectTime; } - public void setT(int t) { - this.t = t; + public void setExpectTime(String expectTime) { + this.expectTime = expectTime; } - public String getE() { - return e; + public int getHeading() { + return heading; } - public void setE(String e) { - this.e = e; + public void setHeading(int heading) { + this.heading = heading; } - public String getM() { - return m; + public String getImoNum() { + return imoNum; } - public void setM(String m) { - this.m = m; + public void setImoNum(String imoNum) { + this.imoNum = imoNum; } - public String getO() { - return o; + public double getLat() { + return lat; } - public void setO(String o) { - this.o = o; + public void setLat(double lat) { + this.lat = lat; } - public String getF() { - return f; + public double getLng() { + return lng; } - public void setF(String f) { - this.f = f; + public void setLng(double lng) { + this.lng = lng; } - public int getL() { - return l; + public String getMmsi() { + return mmsi; } - public void setL(int l) { - this.l = l; + public void setMmsi(String mmsi) { + this.mmsi = mmsi; } - public int getC() { - return c; + public String getNationality() { + return nationality; } - public void setC(int c) { - this.c = c; + public void setNationality(String nationality) { + this.nationality = nationality; } - public int getS() { - return s; + public String getPositionTime() { + return positionTime; } - public void setS(int s) { - this.s = s; + public void setPositionTime(String positionTime) { + this.positionTime = positionTime; } - public int getH() { - return h; + public String getShipCallNum() { + return shipCallNum; } - public void setH(int h) { - this.h = h; + public void setShipCallNum(String shipCallNum) { + this.shipCallNum = shipCallNum; } - public String getV() { - return v; + public String getShipId() { + return shipId; } - public void setV(String v) { - this.v = v; + public void setShipId(String shipId) { + this.shipId = shipId; } - public int getB() { - return b; + public int getShipLength() { + return shipLength; } - public void setB(int b) { - this.b = b; + public void setShipLength(int shipLength) { + this.shipLength = shipLength; } - public String getR() { - return r; + public String getShipType() { + return shipType; } - public void setR(String r) { - this.r = r; + public void setShipType(String shipType) { + this.shipType = shipType; } - public String getP() { - return p; + public int getShipWidth() { + return shipWidth; } - public void setP(String p) { - this.p = p; + public void setShipWidth(int shipWidth) { + this.shipWidth = shipWidth; } - public int getD() { - return d; + public float getSpeed() { + return speed; } - public void setD(int d) { - this.d = d; + public void setSpeed(float speed) { + this.speed = speed; } } } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java index c1a1873..932678f 100644 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java +++ b/casic-ship/src/main/java/com/casic/missiles/modular/system/service/impl/ShipServiceImpl.java @@ -1,21 +1,21 @@ package com.casic.missiles.modular.system.service.impl; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.system.dao.ShipMapper; +import com.casic.missiles.modular.system.dto.AddressConfigDTO; import com.casic.missiles.modular.system.dto.ShipDTO; import com.casic.missiles.modular.system.dto.remote.ShipRemoteData; import com.casic.missiles.modular.system.model.AisLog; import com.casic.missiles.modular.system.model.Ship; +import com.casic.missiles.modular.system.service.IAddressConfigService; import com.casic.missiles.modular.system.service.IAisLogService; import com.casic.missiles.modular.system.service.IShipService; import com.casic.missiles.modular.system.utils.Constant; import com.casic.missiles.modular.system.utils.HttpRequestHelper; import com.casic.missiles.modular.system.utils.TimeUtil; -import okhttp3.Request; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -30,65 +30,50 @@ @Service public class ShipServiceImpl extends ServiceImpl implements IShipService { - private static final String SUCCESS_CODE = "0"; + private static final int SUCCESS_CODE = 200; + private final IAddressConfigService configService; private final IAisLogService logService; - public ShipServiceImpl(IAisLogService logService) { + public ShipServiceImpl(IAddressConfigService configService, IAisLogService logService) { + this.configService = configService; this.logService = logService; } @Override public List shipsInCircle(String rgn, int age) { - if (rgn == null || rgn.isEmpty()) { - throw new NullPointerException("搜索区域不能为空"); + AddressConfigDTO addressConfig = configService.selectLastConfig(); + String aisIp = addressConfig.getAisIp(); + if (aisIp.contains(Constant.HTTP_HEADER)) { + aisIp = aisIp.replace(Constant.HTTP_HEADER, ""); } - if (age < Constant.MIN_AGE || age > Constant.MAX_AGE) { - throw new IllegalArgumentException("时间范围错误"); - } - /** - * 封装请求参数 - * */ - JSONObject jsonObject = new JSONObject(); - try { - jsonObject.put("rgn", rgn); - jsonObject.put("age", age); - } catch (JSONException e) { - e.printStackTrace(); - } - List shipDTOList = new ArrayList<>(); + String url = Constant.HTTP_HEADER + aisIp + "/ais/shipsInCircle?rgn=" + rgn + "&age=" + age; + /** * 获取AIS接口数据 * */ - Request request = new Request.Builder() - .addHeader(Constant.AIS_HEADER_NAME, Constant.AIS_KEY_VALUE) - .url(Constant.SHIPS_IN_CIRCLE) - .post(HttpRequestHelper.createRequestBody(jsonObject.toJSONString())) - .build(); - String res = HttpRequestHelper.doPost(request); + String res = HttpRequestHelper.doGet(url); //先解析出code,根据code判断 - if (SUCCESS_CODE.equals(getResponseCode(res))) { + if (SUCCESS_CODE == getResponseCode(res)) { //请求成功才保存ais访问记录 AisLog aisLog = new AisLog(); - aisLog.setTime(TimeUtil.getCurrentTime()); + aisLog.setRequestParam(url); + aisLog.setResponse(res); + aisLog.setRequestTime(TimeUtil.getCurrentTime()); logService.save(aisLog); ShipRemoteData remoteData = JSON.parseObject(res, new TypeReference() { }); + List shipDTOList = new ArrayList<>(); for (ShipRemoteData.DataBean data : remoteData.getData()) { shipDTOList.add(new ShipDTO(data)); } + return shipDTOList; } - return shipDTOList; + return null; } - /** - * {"code":"101", "message":"权限失效"} - */ - public String getResponseCode(String value) { - if ("".equals(value)) { - return value; - } + public int getResponseCode(String value) { JSONObject jsonObject = JSON.parseObject(value); - return jsonObject.getString("code"); + return jsonObject.getInteger("code"); } } diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/Constant.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/Constant.java deleted file mode 100644 index 8edaeff..0000000 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/Constant.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.casic.missiles.modular.system.utils; - -/** - * 船舶相关常量 - * - * @author a203 - */ -public class Constant { - private static final String AIS_BASE_URL = "https://api3.myships.com"; - public static final String AIS_HEADER_NAME = "appKey"; - public static final String AIS_KEY_VALUE = "de26d070af5f42fabb13a02f7c0ec065"; - public static final String CONTENT_TYPE = "application/json; charset=utf-8"; - - public static final String SHIPS_IN_CIRCLE = AIS_BASE_URL + "/sp/region/latest/shipinfoCircle"; - - public static final int MIN_AGE = 1; - public static final int MAX_AGE = 240; -} diff --git a/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java b/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java deleted file mode 100644 index c2e936d..0000000 --- a/casic-ship/src/main/java/com/casic/missiles/modular/system/utils/HttpRequestHelper.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.casic.missiles.modular.system.utils; - -import lombok.NonNull; -import okhttp3.*; - -import java.io.IOException; -import java.util.Objects; -import java.util.concurrent.TimeUnit; - -/** - * 网络请求工具 - * - * @author a203 - */ -public class HttpRequestHelper { - - public static RequestBody createRequestBody(String value) { - return RequestBody.create(MediaType.parse(Constant.CONTENT_TYPE), value); - } - - public static String doPost(Request request) { - return streamResponse(request); - } - - public static String doGet(String url) { - return streamResponse(new Request.Builder() - .url(url) - .build()); - } - - private static String streamResponse(@NonNull Request request) { - OkHttpClient httpClient = new OkHttpClient.Builder() - .connectTimeout(10, TimeUnit.SECONDS) - .writeTimeout(10, TimeUnit.SECONDS) - .readTimeout(20, TimeUnit.SECONDS) - .build(); - Call call = httpClient.newCall(request); - try { - Response response = call.execute(); - return response.body() != null ? Objects.requireNonNull(response.body()).string() : ""; - } catch (IOException e) { - e.printStackTrace(); - } - return ""; - } -} \ No newline at end of file