From e2b5d356871ceabb3e5af4630784600cca28e958 Mon Sep 17 00:00:00 2001 From: Huluwa22 <2667400744@qq.com> Date: Thu, 6 Mar 2025 14:56:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=9C=E7=A8=8B=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E6=96=B9=E6=B3=95;=E4=BF=AE=E6=94=B9=E5=AF=BB?= =?UTF-8?q?=E6=89=BE=E5=BA=93=E4=BD=8D=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-common/pom.xml | 6 + .../ruoyi/common/utils/http/HttpUtils.java | 215 ++++++++++++++++++ .../com/ruoyi/quartz/task/TaskExecutor.java | 6 +- .../mapper/app/AppLocationMapper.xml | 4 +- 4 files changed, 226 insertions(+), 5 deletions(-) diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index e9f2a257..fd9256dc 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -16,6 +16,12 @@ + + + org.apache.httpcomponents + httpclient + 4.5.13 + diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java index 13126c81..b8792c7d 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java @@ -9,14 +9,29 @@ import java.net.ConnectException; import java.net.SocketTimeoutException; import java.net.URL; import java.net.URLConnection; +import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.cert.X509Certificate; +import java.util.Base64; +import java.util.Map; 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 javax.servlet.http.HttpServletRequest; + +import org.apache.http.HttpEntity; +import org.apache.http.ParseException; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.ruoyi.common.constant.Constants; @@ -271,4 +286,204 @@ public class HttpUtils return true; } } + + /** + * 获取请求的ip地址 + * @param request 请求 + * @return ip地址 + */ + public static String getIpAddr(HttpServletRequest request) { + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + if (ip != null && ip.indexOf(",") > 0) { + String[] parts = ip.split(","); + for (String part : parts) { + if (!part.isEmpty() && !"unknown".equalsIgnoreCase(part)) { + ip = part.trim(); + break; + } + } + } + if ("0:0:0:0:0:0:0:1".equals(ip)) { + ip = "127.0.0.1"; + } + return ip; + } + + /** + * 发送HttpGet请求(无参数) + * @param url 地址 + * @return 响应结果 + */ + public static String sendHttpGet(String url) { + String result = ""; + CloseableHttpClient httpClient = null; + CloseableHttpResponse response = null; + try { + httpClient = HttpClients.createDefault(); + HttpGet httpget = new HttpGet(url); + response = httpClient.execute(httpget); + HttpEntity entity = null; + if (response != null) { + entity = response.getEntity(); + } + if (entity != null) { + result = EntityUtils.toString(entity); + } + } catch (ParseException | IOException e) { + e.printStackTrace(); + } finally { + if(response!=null){ try{response.close();}catch (IOException e){ e.printStackTrace();} } + if(httpClient!=null){ try{httpClient.close();}catch(IOException e){ e.printStackTrace();} } + } + return result; + } + + /** + * 发送HttpGet请求(带参数) + * @param url 地址 + * @param header 参数放在请求头里面 + * @return 响应结果 + */ + public static String sendHttpGet(String url, Map header) { + if (header == null) {// 没有参数 + return sendHttpGet(url); + } + String result = ""; + CloseableHttpClient httpClient = null; + CloseableHttpResponse response = null; + try { + httpClient = HttpClients.createDefault(); + HttpGet httpGet = new HttpGet(url); + // 设置超时时间 + RequestConfig requestConfig = RequestConfig.custom() + .setConnectTimeout(5000) + .setConnectionRequestTimeout(1000) + .setSocketTimeout(5000).build(); + httpGet.setConfig(requestConfig); + for(Map.Entry entry : header.entrySet()){ + + httpGet.setHeader(entry.getKey(), entry.getValue()); + } + response = httpClient.execute(httpGet); + HttpEntity entity = null; + if (response != null) { + entity = response.getEntity(); + } + if (entity != null) { + result = EntityUtils.toString(entity); + } + } catch (ParseException | IOException e) { + e.printStackTrace(); + } finally { + if(response!=null){ try{response.close();}catch (IOException e){ e.printStackTrace();} } + if(httpClient!=null){ try{httpClient.close();}catch(IOException e){ e.printStackTrace();} } + } + return result; + } + + /** + * 发送httpPost请求(不需要认证信息) + * @param url 目的地址 + * @param param 参数 + * @return 请求结果 + */ + public static String sendHttpPostWithoutToken(String url,String param) { + return sendHttpPost(url, param, null, null, null); + } + + /** + * 发送httpPost请求 + * @param url 目的地址 + * @param param 参数 + * @param token 认证信息 + * @param userName 登录账户 + * @param password 登录密码 + * @return 请求结果 + */ + public static String sendHttpPost(String url, String param, String token, String userName, String password) { + String data=""; + CloseableHttpClient httpClient = null; + CloseableHttpResponse response = null; + try { + httpClient = HttpClients.createDefault(); + HttpPost httppost = new HttpPost(url); + RequestConfig requestConfig = RequestConfig.custom() + .setConnectTimeout(5000) + .setConnectionRequestTimeout(1000) + .setSocketTimeout(5000).build(); + httppost.setConfig(requestConfig); + httppost.setHeader("Content-Type", "application/json;charset=UTF-8"); + if (org.apache.commons.lang3.StringUtils.isEmpty(token) && org.apache.commons.lang3.StringUtils.isNotEmpty(userName) && org.apache.commons.lang3.StringUtils.isNotEmpty(password)) { + httppost.setHeader("Authorization", "Basic " + Base64.getUrlEncoder().encodeToString((userName + ":" + password).getBytes())); + } else { + httppost.setHeader("Authorization", "Bearer " + token); + } + StringEntity se = new StringEntity(param, Charset.forName("UTF-8")); + se.setContentType("text/json"); + se.setContentEncoding("UTF-8"); + httppost.setEntity(se); + response = httpClient.execute(httppost); + data = EntityUtils.toString(response.getEntity(), "utf-8"); + EntityUtils.consume(response.getEntity()); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if(response!=null){ try{response.close();}catch (IOException e){ e.printStackTrace();} } + if(httpClient!=null){ try{httpClient.close();}catch(IOException e){ e.printStackTrace();} } + } + return data; + } + + /** + * 发送httpPost请求 + * @param url 目的地址 + * @param param 参数 + * @param token 认证信息 + * @param userName 登录账户 + * @param password 登录密码 + * @return 请求结果 + */ + public static String sendHttpPostForm(String url, String param, String token, String userName, String password) { + + String data=""; + CloseableHttpClient httpClient = null; + CloseableHttpResponse response = null; + try { + httpClient = HttpClients.createDefault(); + HttpPost httppost = new HttpPost(url); + RequestConfig requestConfig = RequestConfig.custom() + .setConnectTimeout(5000) + .setConnectionRequestTimeout(1000) + .setSocketTimeout(5000).build(); + httppost.setConfig(requestConfig); + httppost.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); + if (org.apache.commons.lang3.StringUtils.isEmpty(token) && org.apache.commons.lang3.StringUtils.isNotEmpty(userName) && org.apache.commons.lang3.StringUtils.isNotEmpty(password)) { + httppost.setHeader("Authorization", "Basic " + Base64.getUrlEncoder().encodeToString((userName + ":" + password).getBytes())); + } else { + httppost.setHeader("Authorization", "Bearer " + token); + } + StringEntity se = new StringEntity(param, Charset.forName("UTF-8")); + se.setContentType("application/x-www-form-urlencoded"); + se.setContentEncoding("UTF-8"); + httppost.setEntity(se); + response = httpClient.execute(httppost); + data = EntityUtils.toString(response.getEntity(), "utf-8"); + EntityUtils.consume(response.getEntity()); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if(response!=null){ try{response.close();}catch (IOException e){ e.printStackTrace();} } + if(httpClient!=null){ try{httpClient.close();}catch(IOException e){ e.printStackTrace();} } + } + return data; + } } diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/TaskExecutor.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/TaskExecutor.java index bbf09c7c..def435be 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/TaskExecutor.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/TaskExecutor.java @@ -127,7 +127,7 @@ public class TaskExecutor { WcsStackerTaskReq wcsStackerTaskReq = getWcsStackerTaskRequest(appWcsTask); // 发送http请求---请求5次 for (int i = 0; i < 5; i++) { - WcsCommonRes wcsCommonRes = JSON.parseObject(HttpUtils.sendPost(url, JSON.toJSONString(wcsStackerTaskReq)), WcsCommonRes.class); + WcsCommonRes wcsCommonRes = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(url, JSON.toJSONString(wcsStackerTaskReq)), WcsCommonRes.class); if (wcsCommonRes == null) { continue; } @@ -249,7 +249,7 @@ public class TaskExecutor { if (StringUtils.isEmpty(url)) { return; } - PmsCommonRes pmsCommonRes = JSON.parseObject(HttpUtils.sendPost(url, JSON.toJSONString(pmsInFeedBack)), PmsCommonRes.class); + PmsCommonRes pmsCommonRes = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(url, JSON.toJSONString(pmsInFeedBack)), PmsCommonRes.class); logger.info("pms入库反馈请求信息:{},结果:{}", JSON.toJSONString(pmsInFeedBack), JSON.toJSONString(pmsCommonRes)); } } @@ -314,7 +314,7 @@ public class TaskExecutor { if (StringUtils.isEmpty(url)) { continue; } - PmsCommonRes pmsCommonRes = JSON.parseObject(HttpUtils.sendPost(url, JSON.toJSONString(recordList)), PmsCommonRes.class); + PmsCommonRes pmsCommonRes = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(url, JSON.toJSONString(recordList)), PmsCommonRes.class); logger.info("pms出库反馈请求信息:{},结果:{}", JSON.toJSONString(recordList), JSON.toJSONString(pmsCommonRes)); } AppStock appStockCheck = new AppStock(); diff --git a/ruoyi-system/src/main/resources/mapper/app/AppLocationMapper.xml b/ruoyi-system/src/main/resources/mapper/app/AppLocationMapper.xml index 43c7a96e..1880259c 100644 --- a/ruoyi-system/src/main/resources/mapper/app/AppLocationMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/app/AppLocationMapper.xml @@ -73,8 +73,8 @@ and location_id NOT IN ( SELECT DISTINCT ( t.location_id ) FROM app_stock t UNION SELECT DISTINCT ( p.location_id ) FROM app_task p where p.location_id is not null) ORDER BY w_depth DESC, - w_col asc , - w_layer ASC + w_layer ASC, + w_col asc