AisInfoServiceImpl.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package com.ruoyi.system.service.impl;
  2. import cn.hutool.core.convert.Convert;
  3. import cn.hutool.core.util.StrUtil;
  4. import cn.hutool.http.HttpUtil;
  5. import com.alibaba.fastjson.JSON;
  6. import com.alibaba.fastjson.JSONArray;
  7. import com.alibaba.fastjson.JSONObject;
  8. import com.ruoyi.system.domain.vo.AisShipInfo;
  9. import com.ruoyi.system.domain.vo.ShipEepReportRecInfo;
  10. import com.ruoyi.system.service.IAisInfoService;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.springframework.beans.factory.annotation.Value;
  13. import org.springframework.stereotype.Service;
  14. import java.util.HashMap;
  15. import java.util.Map;
  16. /**
  17. * @Description: TODO
  18. * @Author: huangcheng
  19. * @Date: 2021/9/26
  20. * @Version V1.0
  21. */
  22. @Service
  23. @Slf4j
  24. public class AisInfoServiceImpl implements IAisInfoService {
  25. @Value("${spring.profiles.active}")
  26. private String profile;
  27. @Value("${third.shipEepReportRecInfo}")
  28. private String shipEepReportRecInfoUrl;
  29. @Value("${third.shipBaseInfo}")
  30. private String shipBaseInfo;
  31. @Value("${third.shipDynamicInfo}")
  32. private String shipDynamicInfo;
  33. /**
  34. * 获取船舶进出港记录
  35. *
  36. * @param startTime
  37. * @param endTime
  38. * @param mmsi
  39. * @param shipId
  40. * @param shipNameCn
  41. * @return
  42. */
  43. @Override
  44. public ShipEepReportRecInfo getShipEepReportRecInfo(String startTime, String endTime, String mmsi, String shipId, String shipNameCn) {
  45. if ("prod".equals(profile)) {
  46. Map<String, Object> params = new HashMap<>();
  47. params.put("startTime", startTime);
  48. params.put("endTime", endTime);
  49. params.put("mmsi", mmsi);
  50. // params.put("shipId", shipId);
  51. // params.put("shipNameCn", shipNameCn);
  52. try {
  53. String para = HttpUtil.toParams(params);
  54. String getResult = HttpUtil.get(shipEepReportRecInfoUrl + "?" + para);
  55. log.info("入参:{},获取进出港数据:{}", para, getResult);
  56. JSONObject jsonObject = JSON.parseObject(getResult);
  57. if (jsonObject != null && 200 == jsonObject.getInteger("code")) {
  58. JSONArray result = jsonObject.getJSONArray("result");
  59. if (result != null && !result.isEmpty()) {
  60. Map<String, String> stringStringMap = Convert.toMap(String.class, String.class, result.get(0));
  61. return ShipEepReportRecInfo.builder().berthName(stringStringMap.get("BERTH_NAME")).nextPortName(stringStringMap.get("NEXT_PORT_NAME")).build();
  62. }
  63. }
  64. } catch (Exception e) {
  65. log.error("获取船舶停靠信息异常");
  66. }
  67. }
  68. return null;
  69. }
  70. @Override
  71. public AisShipInfo getShipInfo(String shipnameCn, String mmsi, String shipId, String shipNo) {
  72. log.info("当前环境:{}", profile);
  73. if ("prod".equals(profile)) {
  74. Map<String, Object> params = new HashMap<>();
  75. // params.put("shipnameCn", shipnameCn);
  76. params.put("mmsi", mmsi);
  77. // params.put("shipId", shipId);
  78. // params.put("shipNo", shipNo);
  79. try {
  80. String url = shipBaseInfo + "?" + HttpUtil.toParams(params);
  81. String getResult = HttpUtil.get(url);
  82. log.info("调用地址:{}。获取船舶数据:{}", url, getResult);
  83. JSONObject jsonObject = JSON.parseObject(getResult);
  84. if (jsonObject != null && 200 == jsonObject.getInteger("code")) {
  85. JSONArray result = jsonObject.getJSONArray("data");
  86. if (result != null && !result.isEmpty()) {
  87. Map<String, String> stringStringMap = Convert.toMap(String.class, String.class, result.get(0));
  88. return AisShipInfo.builder().shipName(stringStringMap.get("shipnameCn")).shipRegionType(stringStringMap.get("shipRegionType")).build();
  89. }
  90. }
  91. } catch (Exception e) {
  92. log.error("获取船舶基本信息异常");
  93. }
  94. }
  95. return null;
  96. }
  97. /**
  98. * 推送需要获取的船舶实时数据
  99. *
  100. * @param mmsis
  101. */
  102. @Override
  103. public void getDynamicShipInfo(String mmsis) {
  104. if ("prod".equals(profile)) {
  105. try {
  106. if (StrUtil.isNotBlank(mmsis)) {
  107. String s = HttpUtil.get(shipDynamicInfo + mmsis);
  108. log.info("推送船舶动态信息,返回结果:{}", s);
  109. }
  110. } catch (Exception e) {
  111. log.error("推送船舶动态信息异常");
  112. }
  113. }
  114. }
  115. }