Kaynağa Gözat

工具类封装

wanggaokun 1 yıl önce
ebeveyn
işleme
2bb13df845

+ 13 - 12
PHM-admin/phm-manage/src/main/java/com/phm/manage/controller/ApiController.java → PHM-admin/phm-manage/src/main/java/com/phm/manage/controller/ModelApiController.java

@@ -3,6 +3,8 @@ package com.phm.manage.controller;
 import java.util.HashMap;
 import java.util.Map;
 
+import com.phm.manage.service.IModelService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -10,7 +12,11 @@ import org.springframework.web.bind.annotation.RestController;
 import com.phm.common.annotation.Anonymous;
 import com.phm.common.core.controller.BaseController;
 import com.phm.manage.domain.common.CommonResult;
-import com.phm.manage.http.HttpClientUtils;
+import com.phm.manage.util.HttpClientUtils;
+import com.phm.manage.util.JsonUtils;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 
 /**
  * @Description ApiController 模型算法调用API
@@ -19,17 +25,12 @@ import com.phm.manage.http.HttpClientUtils;
  */
 @Anonymous
 @RestController
-@RequestMapping("/modelApi")
-public class ApiController extends BaseController {
+@RequestMapping("/model_api")
+public class ModelApiController extends BaseController {
+    @Autowired
+    private IModelService modelService;
     @PostMapping("/execute")
-    public CommonResult<String> test() {
-
-        Map<String, String> parms = new HashMap<>();
-        parms.put("data_url", "http://192.168.0.101:8080/profile/upload/2023/11/13" + "/origin.csv");
-        String reslut = HttpClientUtils.postJson("http://127.0.0.1:8858/add", parms);
-        // UnicodeUtil.toString(reslut);
-        // System.out.println("====================" + UnicodeUtil.toString(reslut));
-        return CommonResult.success(reslut);
+    public CommonResult<String> executeModel(Long modelId) {
+        return CommonResult.success(modelService.executeModel(modelId));
     }
-
 }

+ 2 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/service/IModelService.java

@@ -58,4 +58,6 @@ public interface IModelService {
      * @return 结果
      */
     int deleteModelInfoById(Long id);
+
+    String executeModel(Long id);
 }

+ 23 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/service/impl/ModelServiceImpl.java

@@ -1,7 +1,13 @@
 package com.phm.manage.service.impl;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.phm.manage.util.HttpClientUtils;
+import com.phm.manage.util.JsonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -49,4 +55,21 @@ public class ModelServiceImpl implements IModelService {
     public int deleteModelInfoById(Long id) {
         return modelInfoMapper.deleteModelById(id);
     }
+
+    @Override
+    public String executeModel(Long id) {
+        // TODO 查询对应模型参数
+        // TODO 获取参数数据
+        // TODO 获取地址
+        Map<String, String> parms = new HashMap<>();
+        parms.put("data_url", "http://127.0.0.1:8080/profile/upload/2023/11/13/origin.csv");
+        String url = "http://127.0.0.1:8858/abnormal";
+        String result = HttpClientUtils.postJson(url, parms);
+        JSONObject jsonObject = JSONUtil.parseObj(result);
+        String jsonString = jsonObject.getStr("data");
+        // CSV文件路径
+        String csvFilePath = "D:\\phm/output.csv";
+        JsonUtils.jsonToFileCsv(jsonString, csvFilePath);
+        return jsonString;
+    }
 }

+ 9 - 2
PHM-admin/phm-manage/src/main/java/com/phm/manage/util/HttpClientUtils.java

@@ -12,6 +12,7 @@ import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.reactive.function.BodyInserters;
 import org.springframework.web.reactive.function.client.ClientResponse;
+import org.springframework.web.reactive.function.client.ExchangeStrategies;
 import org.springframework.web.reactive.function.client.WebClient;
 
 import com.fasterxml.jackson.core.type.TypeReference;
@@ -32,6 +33,8 @@ public class HttpClientUtils {
 
     private static final Integer DEFAULT_REQUEST_TIMEOUT = 10000;
 
+    private static final Integer MAX_IN_MEMORY_SIZE = 10 * 1024 * 1024;
+
     /**
      * get请求解析成字符串
      *
@@ -206,7 +209,6 @@ public class HttpClientUtils {
         Mono<String> resp = createWebClientWithConnectAndReadTimeOuts().post().uri(url)
             .contentType(MediaType.APPLICATION_JSON_UTF8).body(Mono.just(jsonBody), Object.class).retrieve()
             .bodyToMono(String.class).timeout(Duration.ofMillis(DEFAULT_REQUEST_TIMEOUT));
-
         return resp.block();
     }
 
@@ -253,7 +255,12 @@ public class HttpClientUtils {
         // create a client http connector using above http client
         ClientHttpConnector connector = new ReactorClientHttpConnector(httpClient);
         // use this configured http connector to build the web client
-        return WebClient.builder().clientConnector(connector).build();
+        return WebClient.builder()
+            .exchangeStrategies(ExchangeStrategies.builder()
+                .codecs(
+                    clientCodecConfigurer -> clientCodecConfigurer.defaultCodecs().maxInMemorySize(MAX_IN_MEMORY_SIZE))
+                .build())
+            .clientConnector(connector).build();
     }
 
     private static MultiValueMap<String, String> getRequestParamMap(Map<String, String> params) {

+ 31 - 0
PHM-admin/phm-manage/src/main/java/com/phm/manage/util/JsonUtils.java

@@ -1,10 +1,13 @@
 package com.phm.manage.util;
 
+import cn.hutool.core.io.FileUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.phm.manage.domain.common.CommonResult;
+import lombok.extern.slf4j.Slf4j;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -15,6 +18,7 @@ import java.util.stream.Collectors;
  * @Author WGK
  * @Date 2023/10/10 22:33
  */
+@Slf4j
 public class JsonUtils {
 
     /**
@@ -52,4 +56,31 @@ public class JsonUtils {
         csvLines.add(0, String.join(",", headers));
         return csvLines;
     }
+
+    /**
+     * json转csv文件
+     *
+     * @param jsonString data
+     * @param csvFilePath path
+     */
+    public static void jsonToFileCsv(String jsonString, String csvFilePath) {
+        try {
+            // 将JSON字符串转换为JSON数组
+            JSONArray jsonArray = JSONUtil.parseArray(jsonString);
+            // 将JSON数组写入CSV文件
+            FileUtil.writeUtf8Lines(JsonUtils.jsonArrayToCsv(jsonArray), csvFilePath);
+        } catch (Exception e) {
+            log.info("json转csv文件错误:{}", e.getMessage());
+        }
+    }
+
+    /**
+     * csv文件转Json
+     *
+     * @param csvFilePath path
+     */
+    public static String fileCsvToJson(String csvFilePath) {
+        // TODO csv文件转Json
+        return "";
+    }
 }