吉安感知网项目-后端
linwei
2026-01-31 779853ab6e4564e4d49d2f2a5a2c74d62da97be0
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdManageDeviceServiceImpl.java
@@ -104,7 +104,6 @@
    * @return 同步数量
    */
   @Override
   @Async
   @Scheduled(cron = "0 0 0 * * ?")
   public int syncXingtuDevice() throws Exception {
      int total = 0;
@@ -114,6 +113,11 @@
      return total;
   }
   /**
    * 同步星图无人机设备并入库
    *
    * @return 新增或更新数量
    */
   private int syncPilotDevices() throws Exception {
      R response = jianXingtuApiService.getDevicePilotList(null);
      List<GdXingtuPilotListDTO> items = parseList(response, GdXingtuPilotListDTO.class);
@@ -133,6 +137,11 @@
      return count;
   }
   /**
    * 同步星图机巢设备并入库
    *
    * @return 新增或更新数量
    */
   private int syncAirportDevices() throws Exception {
      R response = jianXingtuApiService.getDeviceAirportList(null);
      List<GdXingtuAirportListDTO> items = parseList(response, GdXingtuAirportListDTO.class);
@@ -152,6 +161,12 @@
      return count;
   }
   /**
    * 按机场ID保存或更新设备信息
    *
    * @param entity 设备信息
    * @return 是否保存成功
    */
   private boolean saveOrUpdateByAirportId(GdManageDeviceEntity entity) throws Exception {
      if (StringUtil.isBlank(entity.getAirportId())) {
         return false;
@@ -174,6 +189,12 @@
      return saveOrUpdateDevice(entity);
   }
   /**
    * 从星图无人机数据构建设备实体
    *
    * @param item 星图无人机数据
    * @return 设备实体
    */
   private GdManageDeviceEntity buildFromPilot(GdXingtuPilotListDTO item) {
      if (item == null) {
         return null;
@@ -193,6 +214,12 @@
      return entity;
   }
   /**
    * 从星图机巢数据构建设备实体
    *
    * @param item 星图机巢数据
    * @return 设备实体
    */
   private GdManageDeviceEntity buildFromAirport(GdXingtuAirportListDTO item) {
      if (item == null) {
         return null;
@@ -210,9 +237,16 @@
      entity.setModeCode(parseModeCode(item.getStatus()));
      entity.setInsureExpiredTime(parseInsuranceDate(item.getInsuranceInfo()));
      entity.setAreaCode(extractAreaCode(item.getRegionCode()));
      entity.setHeight(item.getHeight());
      return entity;
   }
   /**
    * 将设备在线状态转换为模式码
    *
    * @param status 状态文本
    * @return 模式码
    */
   private Long parseModeCode(String status) {
      if ("在线".equals(status)) {
         return 0L;
@@ -223,6 +257,12 @@
      return null;
   }
   /**
    * 安全解析字符串为 Double
    *
    * @param value 字符串值
    * @return Double 或 null
    */
   private Double parseDouble(String value) {
      if (StringUtil.isBlank(value)) {
         return null;
@@ -234,6 +274,12 @@
      }
   }
   /**
    * 提取区域编码中的末级编码
    *
    * @param regionCode 区域编码
    * @return 末级区域编码
    */
   private String extractAreaCode(String regionCode) {
      if (StringUtil.isBlank(regionCode)) {
         return null;
@@ -250,6 +296,12 @@
      return regionCode;
   }
   /**
    * 解析保险信息并获取最新保险日期
    *
    * @param insuranceInfo 保险信息JSON
    * @return 保险日期
    */
   private Date parseInsuranceDate(String insuranceInfo) {
      if (StringUtil.isBlank(insuranceInfo)) {
         return null;
@@ -283,6 +335,13 @@
      }
   }
   /**
    * 解析星图接口返回的列表数据
    *
    * @param response 接口响应
    * @param clazz    目标类型
    * @return 列表数据
    */
   private <T> List<T> parseList(R response, Class<T> clazz) {
      if (response == null || !response.isSuccess() || response.getData() == null) {
         return Collections.emptyList();