浏览代码

:construction_worker: 下载过船卡口图片调用模型分析

lag 8 月之前
父节点
当前提交
a2ea6bf8fe

+ 3 - 1
download-center-server/src/main/java/com/shanghaichengdi/downloadcenterserver/cache/UrlData.java

@@ -1,11 +1,13 @@
 package com.shanghaichengdi.downloadcenterserver.cache;
 
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.ConcurrentLinkedQueue;
 
 /**
  * @author gengaoliu
  */
 public class UrlData {
-  public static ConcurrentLinkedQueue<List<String>> URL_IMG_TO_SAVE = new ConcurrentLinkedQueue<>();
+
+  public static ConcurrentLinkedQueue<Map<String, List<String>>> URL_IMG_TO_SAVE = new ConcurrentLinkedQueue<>();
 }

+ 5 - 7
download-center-server/src/main/java/com/shanghaichengdi/downloadcenterserver/controller/PicDownloadController.java

@@ -33,19 +33,17 @@ public class PicDownloadController {
   @PostMapping("/pictures")
   public String downloadPictures(@RequestBody String data) {
     PicDownload picDownload = JSONObject.parseObject(data, PicDownload.class);
-    log.info("接收到的数据为:{}",JSONObject.toJSON(picDownload));
+//    log.info("接收到的数据为:{}",JSONObject.toJSON(picDownload));
     PicDownloadFaced faced =
-        new PicDownloadFaced(picDownload.getImageUrls(), picDownload.getPassTime());
+        new PicDownloadFaced(picDownload.getImageUrls(), picDownload.getPassTime(),picDownload.getId());
     try {
       faced.start();
     } catch (Exception e) {
       log.info("下载失败,原因:{}",e.getMessage());
-      return new ResultMsg<String>().setMsg("下载失败").setCode(ResultState.ERROR).setData(JSONObject.toJSONString(
-          UrlData.URL_IMG_TO_SAVE.poll())).toJSON();
+      return new ResultMsg<String>().setMsg("下载失败").setCode(ResultState.ERROR).setData(null).toJSON();
     }
-    log.info("下载成功");
-    return new ResultMsg<String>().setMsg("下载成功").setCode(ResultState.SUCCESS).setData(JSONObject.toJSONString(
-          UrlData.URL_IMG_TO_SAVE.poll())).toJSON();
+//    log.info("下载成功");
+    return new ResultMsg<String>().setMsg("下载成功").setCode(ResultState.SUCCESS).setData(null).toJSON();
   }
 
   @Deprecated

+ 1 - 0
download-center-server/src/main/java/com/shanghaichengdi/downloadcenterserver/domain/PicDownload.java

@@ -14,4 +14,5 @@ import lombok.NoArgsConstructor;
 public class PicDownload {
   private List<String> imageUrls;
   private String passTime;
+  private String id;
 }

+ 82 - 0
download-center-server/src/main/java/com/shanghaichengdi/downloadcenterserver/faced/AnalyseFaced.java

@@ -0,0 +1,82 @@
+package com.shanghaichengdi.downloadcenterserver.faced;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSONObject;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+public class AnalyseFaced {
+
+  private final static String SHIP_COVER = "http://172.16.58.199:5000/shipCover";
+  private final static String BOAT_FLAG = "http://172.16.58.199:3003/boat_flag";
+  private final static String DOWNLOAD_FILE_DIR = "/shipAnalysis/HDImages/";
+  private final static String SHIP_COVER_ANALYSE_DIR = "/disk/shipCover/";
+  private final static String BOAT_FLAG_ANALYSE_DIR = "/disk/shareFlag/";
+  private final static String GH_CLOUD_SERVER = "http://10.83.68.108:8090/ghjgBayonetDataShareApi/";
+
+
+  public static String shipCoverAnalyse(String id, String filePath) {
+    HttpRequest post = HttpUtil.createPost(SHIP_COVER);
+    Map<String, String> headers = new HashMap<>();
+    headers.put("Content-Type", "application/json;charset=utf-8");
+    post.addHeaders(headers);
+    Map<String, String> param = new LinkedHashMap<>();
+    param.put("file", DOWNLOAD_FILE_DIR + filePath);
+    String responseBody = post.body(JSONObject.toJSONString(param))
+        .setReadTimeout(3600000)
+        .execute()
+        .body();
+    log.info("通用船舶货物识别完成,结果为:{}", responseBody);
+    return responseBody;
+  }
+
+
+  public static String boatFlagAnalyse(String id, List<String> filePathList) {
+    String result = null;
+    for (String filePath : filePathList) {
+      HttpRequest post = HttpUtil.createPost(BOAT_FLAG);
+      Map<String, String> headers = new HashMap<>();
+      headers.put("Content-Type", "application/json;charset=utf-8");
+      post.addHeaders(headers);
+      Map<String, String> param = new LinkedHashMap<>();
+      param.put("file", DOWNLOAD_FILE_DIR + filePath);
+      String responseBody = post.body(JSONObject.toJSONString(param))
+          .setReadTimeout(3600000)
+          .execute()
+          .body();
+      JSONObject jsonObject = JSONObject.parseObject(responseBody);
+      Boolean whetherHaveFlag = (Boolean) jsonObject.get("has_objects");
+      if (whetherHaveFlag) {
+//        log.info("当前编号:{}  船舶有国旗, 返回结果为:{}", id, responseBody);
+        result = responseBody;
+        break;
+      } else {
+        // 没有国旗的只保留全景图的分析结果
+        String fullyImgResult = boatFlagAnalyse(id, filePathList.get(0));
+//        log.warn("当前编号:{}  船舶没有国旗, 返回结果为:{}", id, responseBody);
+        result = fullyImgResult;
+      }
+    }
+    log.info("国旗分析最终结果:{}", result);
+    return null;
+  }
+
+
+  public static String boatFlagAnalyse(String id, String filePath) {
+    HttpRequest post = HttpUtil.createPost(BOAT_FLAG);
+    Map<String, String> headers = new HashMap<>();
+    headers.put("Content-Type", "application/json;charset=utf-8");
+    post.addHeaders(headers);
+    Map<String, String> param = new LinkedHashMap<>();
+    param.put("file", DOWNLOAD_FILE_DIR + filePath);
+    return post.body(JSONObject.toJSONString(param))
+        .setReadTimeout(3600000)
+        .execute()
+        .body();
+  }
+}

+ 19 - 4
download-center-server/src/main/java/com/shanghaichengdi/downloadcenterserver/faced/PicDownloadFaced.java

@@ -1,5 +1,6 @@
 package com.shanghaichengdi.downloadcenterserver.faced;
 
+import com.alibaba.fastjson.JSONObject;
 import com.shanghaichengdi.downloadcentercommon.util.ImageDownload;
 import com.shanghaichengdi.downloadcenterserver.cache.UrlData;
 import java.io.File;
@@ -8,7 +9,10 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 import lombok.extern.slf4j.Slf4j;
 
 /**
@@ -16,12 +20,15 @@ import lombok.extern.slf4j.Slf4j;
  */
 @Slf4j
 public class PicDownloadFaced extends Thread {
+
   private List<String> imageUrls;
   private String passTime;
+  private String id;
 
-  public PicDownloadFaced(List<String> imageUrls, String passTime) {
+  public PicDownloadFaced(List<String> imageUrls, String passTime, String id) {
     this.imageUrls = imageUrls;
     this.passTime = passTime;
+    this.id = id;
   }
 
   @Override
@@ -69,10 +76,18 @@ public class PicDownloadFaced extends Thread {
         e.printStackTrace();
       }
     }
-    addQueue(imgUrlToSave);
+//    log.warn("====>  当前队列值:{}", UrlData.URL_IMG_TO_SAVE);
+    addQueue(id, imgUrlToSave);
+//    log.warn("======>   取出并移除首位元素:{}", JSONObject.toJSONString(UrlData.URL_IMG_TO_SAVE.poll()));
+    Map<String, List<String>> polled = UrlData.URL_IMG_TO_SAVE.poll();
+    String id = new ArrayList<>(polled.keySet()).get(0);
+    AnalyseFaced.shipCoverAnalyse(id, polled.get(id).get(0));
+    AnalyseFaced.boatFlagAnalyse(id, polled.get(id));
   }
 
-  private synchronized static void addQueue(List<String> imgUrlToSave) {
-    UrlData.URL_IMG_TO_SAVE.add(imgUrlToSave);
+  private synchronized static void addQueue(String id, List<String> imgUrlToSave) {
+    Map<String, List<String>> map = new HashMap<>();
+    map.put(id, imgUrlToSave);
+    UrlData.URL_IMG_TO_SAVE.add(map);
   }
 }