From 207b034b9ea240ec12530b696374c4dbd63f7c1f Mon Sep 17 00:00:00 2001
From: 张洋洋 <10611411+yang-yang-z@user.noreply.gitee.com>
Date: 星期四, 20 二月 2025 14:04:52 +0800
Subject: [PATCH] [add]服务发布

---
 pom.xml                                                  |    9 ++++
 src/main/java/com/se/simu/controller/SimuController.java |   58 ++++++++++++++++++-----------
 2 files changed, 45 insertions(+), 22 deletions(-)

diff --git a/pom.xml b/pom.xml
index 5b172a8..abbe004 100644
--- a/pom.xml
+++ b/pom.xml
@@ -383,6 +383,15 @@
                     </excludes>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <jvmArguments>
+                        -Xms2048m -Xmx4096m -XX:+PrintGCDetails
+                    </jvmArguments>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 </project>
diff --git a/src/main/java/com/se/simu/controller/SimuController.java b/src/main/java/com/se/simu/controller/SimuController.java
index 0c4bcad..5d6c83c 100644
--- a/src/main/java/com/se/simu/controller/SimuController.java
+++ b/src/main/java/com/se/simu/controller/SimuController.java
@@ -15,6 +15,7 @@
 import com.se.simu.service.*;
 import com.se.simu.utils.*;
 import io.swagger.annotations.*;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.lang3.StringUtils;
@@ -33,6 +34,8 @@
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
 
 @Api(tags = "浠跨湡绠$悊")
@@ -313,11 +316,11 @@
                     return fail("妯℃嫙璁$畻璁$畻鍧愭爣锛�", false);
                 }
                 double aveTotal = BigDecimal.valueOf(vo.getTotal()).divide(BigDecimal.valueOf(vo.getDuration()), 2, BigDecimal.ROUND_HALF_UP).doubleValue();
-                JSONArray jsonArray=new JSONArray();
-                LocalDateTime now=LocalDateTime.now();
+                JSONArray jsonArray = new JSONArray();
+                LocalDateTime now = LocalDateTime.now();
                 DateTimeFormatter customFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm");
-                for (int i=0;i<vo.getDuration();i++){
-                    JSONObject jsonObject=new JSONObject();
+                for (int i = 0; i < vo.getDuration(); i++) {
+                    JSONObject jsonObject = new JSONObject();
                     jsonObject.put("stationName", vo.getStation());
                     jsonObject.put("rainfall", aveTotal);
                     jsonObject.put("longitude", vo.getStationLongitude());
@@ -377,7 +380,22 @@
             dtos.add(new GridDto(vo.getMaxy(), vo.getMinx()));
             dtos.add(new GridDto(vo.getMaxy(), vo.getMaxx()));
             dtos.add(new GridDto(vo.getMiny(), vo.getMaxx()));
-            createSem(tableName, dtos, vo);
+            String bbox = "";
+            //鐢熸垚鐐瑰拰绾跨殑瀹炰綋搴撴ā鍨嬪苟淇濆瓨璺緞
+            String name = vo.getSemUrl();
+            String token = EntityLibraryUtils.login();
+            vo.setPointName(name + "-point");
+            vo.setLinkName(name + "-line");
+            JSONArray min = ProjectionToGeographicUtil.get4548Point(dtos.get(0).getLon(), dtos.get(0).getLat());
+            JSONArray max = ProjectionToGeographicUtil.get4548Point(dtos.get(2).getLon(), dtos.get(2).getLat());
+            bbox = bbox + min.getDouble(0) + "," + min.getDouble(1) + "," + max.getDouble(0) + "," + max.getDouble(1);
+            JSONObject point = getModule("layerQueryPointParams.json");
+            String pointUrl = assemble(vo.getPointName(), point.getString("layerid"), bbox, token);
+            vo.setPointName(pointUrl);
+            JSONObject link = getModule("layerQueryParams.json");
+            String linkUrl = assemble(vo.getLinkName(), link.getString("layerid"), bbox, token);
+            vo.setLinkName(linkUrl);
+            asyncCall(tableName, dtos, vo, token);
             // 寮�濮嬫ā鎷熻绠�
             boolean flag = simuFilesService.createByfiles(vo);
             return success(flag, flag ? "鎴愬姛" : "澶辫触");
@@ -408,8 +426,19 @@
         return success(null);
     }
 
-    public R<Boolean> createSem(String tableName, List<GridDto> dtos, CreateFilesSimuVo vo) throws Exception {
-        String name = vo.getSemUrl();
+    private void asyncCall(String tableName, List<GridDto> dtos, CreateFilesSimuVo vo, String token) {
+        ExecutorService executor = Executors.newSingleThreadExecutor();
+        executor.execute(new Runnable() {
+            @Override
+            @SneakyThrows
+            public void run() {
+                createSem(tableName, dtos, vo, token);
+            }
+        });
+        executor.shutdown();
+    }
+
+    public void createSem(String tableName, List<GridDto> dtos, CreateFilesSimuVo vo, String token) throws Exception {
         vo.setSemUrl(inPath + "\\" + vo.getSemUrl());
         boolean ends = vo.getSemUrl().endsWith("\\");
         if (!ends) {
@@ -419,7 +448,6 @@
         if (!file.exists()) {
             file.mkdirs();
         }
-        String token = EntityLibraryUtils.login();
         //闄嶉洦鏂囦欢鐢熸垚
         saveZarr(tableName, vo.getSemUrl());
         //绠$偣鐢熸垚
@@ -434,20 +462,6 @@
         landuseToSem(vo.getSemUrl());
         //鍦板舰鐢熸垚
         terrainToSem(dtos, vo.getSemUrl());
-        String bbox = "";
-        //鐢熸垚鐐瑰拰绾跨殑瀹炰綋搴撴ā鍨嬪苟淇濆瓨璺緞
-        vo.setPointName(name + "-point");
-        vo.setLinkName(name + "-line");
-        JSONArray min = ProjectionToGeographicUtil.get4548Point(dtos.get(0).getLon(), dtos.get(0).getLat());
-        JSONArray max = ProjectionToGeographicUtil.get4548Point(dtos.get(2).getLon(), dtos.get(2).getLat());
-        bbox = bbox + min.getDouble(0) + "," + min.getDouble(1) + "," + max.getDouble(0) + "," + max.getDouble(1);
-        JSONObject point = getModule("layerQueryPointParams.json");
-        String pointUrl = assemble(vo.getPointName(), point.getString("layerid"), bbox, token);
-        vo.setPointName(pointUrl);
-        JSONObject link = getModule("layerQueryParams.json");
-        String linkUrl = assemble(vo.getLinkName(), link.getString("layerid"), bbox, token);
-        vo.setLinkName(linkUrl);
-        return success(true);
     }
 
 

--
Gitblit v1.9.3