From d344ee41f0b39c143bf4229b5c3e7aed965c444a Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期六, 25 四月 2026 14:00:11 +0800
Subject: [PATCH] feat(stock): 新增出入库审批流程功能

---
 src/main/java/com/ruoyi/common/utils/http/HttpUtils.java |  113 ++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 97 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java b/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
index d505789..34cf78e 100644
--- a/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
@@ -1,27 +1,19 @@
 package com.ruoyi.common.utils.http;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.utils.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.MediaType;
+
+import javax.net.ssl.*;
+import java.io.*;
 import java.net.ConnectException;
 import java.net.SocketTimeoutException;
 import java.net.URL;
 import java.net.URLConnection;
 import java.nio.charset.StandardCharsets;
 import java.security.cert.X509Certificate;
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import com.ruoyi.common.constant.Constants;
-import com.ruoyi.common.utils.StringUtils;
-import org.springframework.http.MediaType;
 
 /**
  * 閫氱敤http鍙戦�佹柟娉�
@@ -290,4 +282,93 @@
             return true;
         }
     }
+
+    /**
+     * 鍚戞寚瀹歎RL鍙戦�丣SON鏍煎紡鐨凱OST璇锋眰锛堟帹鑽愰�氱敤鏂规硶锛岄粯璁TF-8缂栫爜锛�
+     * @param url 鍙戦�佽姹傜殑URL
+     * @param jsonParam JSON鏍煎紡鐨勮姹傚弬鏁帮紙鐩存帴浼犲叆JSON瀛楃涓诧級
+     * @return 杩滅▼璧勬簮鐨勫搷搴旂粨鏋�
+     */
+    public static String sendPostJson(String url, String jsonParam) {
+        // 閲嶈浇璋冪敤锛岄粯璁や娇鐢║TF-8缂栫爜锛孋ontent-Type鍥哄畾涓篴pplication/json
+        return sendPostJson(url, jsonParam, StandardCharsets.UTF_8.name(),null);
+    }
+
+    /**
+     * 鍚戞寚瀹歎RL鍙戦�丣SON鏍煎紡鐨凱OST璇锋眰锛堣嚜瀹氫箟缂栫爜锛岀伒娲婚�傞厤鐗规畩鍦烘櫙锛�
+     * @param url 鍙戦�佽姹傜殑URL
+     * @param jsonParam JSON鏍煎紡鐨勮姹傚弬鏁帮紙鐩存帴浼犲叆JSON瀛楃涓诧級
+     * @param headerValue 璇锋眰澶寸殑鍊�
+     * @return 杩滅▼璧勬簮鐨勫搷搴旂粨鏋�
+     */
+    public static String sendPostJson(String url, String jsonParam, String headerValue) {
+        // 閲嶈浇璋冪敤锛岄粯璁や娇鐢║TF-8缂栫爜锛孋ontent-Type鍥哄畾涓篴pplication/json
+        return sendPostJson(url, jsonParam, StandardCharsets.UTF_8.name(),headerValue);
+    }
+
+    /**
+     * 鍚戞寚瀹歎RL鍙戦�丣SON鏍煎紡鐨凱OST璇锋眰锛堣嚜瀹氫箟缂栫爜锛岀伒娲婚�傞厤鐗规畩鍦烘櫙锛�
+     * @param url 鍙戦�佽姹傜殑URL
+     * @param jsonParam JSON鏍煎紡鐨勮姹傚弬鏁帮紙鐩存帴浼犲叆JSON瀛楃涓诧級
+     * @param charset 缂栫爜绫诲瀷锛堝UTF-8銆丟BK绛夛紝寤鸿浣跨敤StandardCharsets甯搁噺锛�
+     * @return 杩滅▼璧勬簮鐨勫搷搴旂粨鏋�
+     */
+    public static String sendPostJson(String url, String jsonParam, String charset,String headerValue) {
+        PrintWriter out = null;
+        BufferedReader in = null;
+        StringBuilder result = new StringBuilder();
+        try {
+            log.info("sendPostJson - {}", url);
+            URL realUrl = new URL(url);
+            URLConnection conn = realUrl.openConnection();
+
+            // 1. 璁剧疆璇锋眰澶达細鍥哄畾Content-Type涓篴pplication/json锛岄�傞厤JSON浼犲弬瑙勮寖
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");
+            conn.setRequestProperty("Content-Type", MediaType.APPLICATION_JSON_VALUE); // 鏍稿績锛欽SON涓撳睘Content-Type
+            conn.setRequestProperty("Accept-Charset", charset);
+            // 1.1 璁剧疆璇锋眰澶达細鍙�夛紝鏍规嵁瀹為檯闇�瑕佽缃�
+            if(StringUtils.isNotEmpty(headerValue)){
+                conn.setRequestProperty("Authorization", headerValue);
+            }
+            // 2. 寮�鍚緭鍏ヨ緭鍑烘祦锛圥OST璇锋眰蹇呴』锛�
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+
+            // 3. 鍐欏叆JSON鍙傛暟锛堜娇鐢ㄦ寚瀹氱紪鐮侊紝閬垮厤涓枃涔辩爜锛�
+            out = new PrintWriter(conn.getOutputStream(), true);
+            out.print(jsonParam);
+            out.flush();
+
+            // 4. 璇诲彇鍝嶅簲缁撴灉锛堜笌璇锋眰缂栫爜涓�鑷达紝淇濊瘉瑙f瀽姝g‘锛�
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset));
+            String line;
+            while ((line = in.readLine()) != null) {
+                result.append(line);
+            }
+            log.info("recv - {}", result);
+        } catch (ConnectException e) {
+            log.error("璋冪敤HttpUtils.sendPostJson ConnectException, url=" + url + ",jsonParam=" + jsonParam, e);
+        } catch (SocketTimeoutException e) {
+            log.error("璋冪敤HttpUtils.sendPostJson SocketTimeoutException, url=" + url + ",jsonParam=" + jsonParam, e);
+        } catch (IOException e) {
+            log.error("璋冪敤HttpUtils.sendPostJson IOException, url=" + url + ",jsonParam=" + jsonParam, e);
+        } catch (Exception e) {
+            log.error("璋冪敤HttpUtils.sendPostJson Exception, url=" + url + ",jsonParam=" + jsonParam, e);
+        } finally {
+            // 5. 鍏抽棴娴佽祫婧愶紙閬垮厤鍐呭瓨娉勬紡锛屼笌鍘熶唬鐮乫inally閫昏緫淇濇寔涓�鑷达級
+            try {
+                if (out != null) {
+                    out.close();
+                }
+                if (in != null) {
+                    in.close();
+                }
+            } catch (IOException ex) {
+                log.error("璋冪敤娴佸叧闂紓甯� sendPostJson, url=" + url + ",jsonParam=" + jsonParam, ex);
+            }
+        }
+        return result.toString();
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3