From 00a72fff219241eb5b0405a066cc859d07cf7735 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 17 九月 2025 10:23:44 +0800
Subject: [PATCH] 1111
---
service/QC/OAJyService.cs | 234 +++++++++++++++++++++++++++-------------------------------
1 files changed, 108 insertions(+), 126 deletions(-)
diff --git a/service/QC/OAJyService.cs b/service/QC/OAJyService.cs
index d9fd9e3..c7fb134 100644
--- a/service/QC/OAJyService.cs
+++ b/service/QC/OAJyService.cs
@@ -1,8 +1,21 @@
-锘縰sing System.Net;
+锘縰sing MES.Service.Models;
+using Microsoft.IdentityModel.Tokens;
+using NewPdaSqlServer.Controllers;
+using NewPdaSqlServer.DB;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.util;
+using Newtonsoft.Json;
+using SqlSugar;
+using System.Net;
using System.Security.Cryptography;
using System.Text;
-using NewPdaSqlServer.DB;
-using Newtonsoft.Json;
+using static Azure.Core.HttpHeader;
+using System.Security.Cryptography;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Security;
+using System.Security.Cryptography.X509Certificates;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Security;
@@ -10,30 +23,65 @@
public class OAJyService : RepositoryNoEntity
{
+ private readonly HttpClient _client = new HttpClient();
+
private const string APPID = "303233EF-AC39-40C1-8364-AC989C6258A5";
-
private const string SECRET = "30b41949-bcfb-48f8-9847-feb6e043fe72";
-
// private const string SPK = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApobID/gwmD9OofMG1gEcE94NCMeTYUq1cam/7ADZmxHCVpF143GaHWhqDdY0TTVbcUElsQ71DzAG2j3itWlIJBK5fVGwCo3sPpAvUDdKMh+Uivcp7yxdy/IDRA/PS4JARuEyM4cVJLhIOU2KnSlbIkheeoDkDgfaxu9kKrWnozJLiYraVTVDz9PdRX7fQdP+Zu/xB9txAGw4kvOm9HwgrzaSRdZEhisTJ5yyoNW/dLXtWKXA0cKhKOOIFu12TOrv/It6hl1ShTUuy79Pa51M9Oc2dEfVs1tluNXPWo1uFXQbBaJxdqZEJJlK7iW2uQFIao2O4XFHYThwy2+6116LtwIDAQAB";
private const string HOST = "http://192.168.1.149:8099";
- private const string SPK =
- @"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApobID/gwmD9OofMG1gEcE94NCMeTYUq1cam/7ADZmxHCVpF143GaHWhqDdY0TTVbcUElsQ71DzAG2j3itWlIJBK5fVGwCo3sPpAvUDdKMh+Uivcp7yxdy/IDRA/PS4JARuEyM4cVJLhIOU2KnSlbIkheeoDkDgfaxu9kKrWnozJLiYraVTVDz9PdRX7fQdP+Zu/xB9txAGw4kvOm9HwgrzaSRdZEhisTJ5yyoNW/dLXtWKXA0cKhKOOIFu12TOrv/It6hl1ShTUuy79Pa51M9Oc2dEfVs1tluNXPWo1uFXQbBaJxdqZEJJlK7iW2uQFIao2O4XFHYThwy2+6116LtwIDAQAB";
+ private const string SPK = @"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApobID/gwmD9OofMG1gEcE94NCMeTYUq1cam/7ADZmxHCVpF143GaHWhqDdY0TTVbcUElsQ71DzAG2j3itWlIJBK5fVGwCo3sPpAvUDdKMh+Uivcp7yxdy/IDRA/PS4JARuEyM4cVJLhIOU2KnSlbIkheeoDkDgfaxu9kKrWnozJLiYraVTVDz9PdRX7fQdP+Zu/xB9txAGw4kvOm9HwgrzaSRdZEhisTJ5yyoNW/dLXtWKXA0cKhKOOIFu12TOrv/It6hl1ShTUuy79Pa51M9Oc2dEfVs1tluNXPWo1uFXQbBaJxdqZEJJlK7iW2uQFIao2O4XFHYThwy2+6116LtwIDAQAB";
- private readonly HttpClient _client = new();
+
+ public static class RsaHelper
+ {
+ public static string Encrypt(string plainText, string publicKeyPem)
+ {
+ //// 灏哖EM鏍煎紡鐨勫叕閽ヨ浆鎹负XML鏍煎紡
+ //var rsa = RSA.Create();
+ //rsa.ImportFromPem(publicKeyPem); // 浣跨敤.NET 5+ 鍐呯疆PEM瑙f瀽鏂规硶
+
+ //var parameters = rsa.ExportParameters(false);
+ //string publicKeyXml = $"<RSAKeyValue><Modulus>{Convert.ToBase64String(parameters.Modulus)}</Modulus><Exponent>{Convert.ToBase64String(parameters.Exponent)}</Exponent></RSAKeyValue>";
+
+ //using var rsaProvider = new RSACryptoServiceProvider();
+ //rsaProvider.FromXmlString(publicKeyXml); // 浣跨敤杞崲鍚庣殑XML鏍煎紡鍏挜
+
+ //var data = Encoding.UTF8.GetBytes(plainText);
+ //var encrypted = rsaProvider.Encrypt(data, false);
+ //return Convert.ToBase64String(encrypted);
+
+ RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(publicKeyPem));
+ string XML = string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>",
+ Convert.ToBase64String(publicKeyParam.Modulus.ToByteArrayUnsigned()),
+ Convert.ToBase64String(publicKeyParam.Exponent.ToByteArrayUnsigned()));
+ string encryptedContent = string.Empty;
+ using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
+ {
+ rsa.FromXmlString(XML);
+ byte[] encryptedData = rsa.Encrypt(Encoding.Default.GetBytes(plainText), false);
+ encryptedContent = Convert.ToBase64String(encryptedData);
+ }
+ return encryptedContent;
+ }
+ }
public string PostDataSSL(string url,
- Dictionary<string, string> parameters,
- Dictionary<string, string> headers)
+ Dictionary<string, string> parameters,
+ Dictionary<string, string> headers)
{
var request = new HttpRequestMessage(HttpMethod.Post, url);
foreach (var header in headers)
+ {
request.Headers.Add(header.Key, header.Value);
+ }
// 濡傛灉闇�瑕佽〃鍗曞弬鏁�
if (parameters.Count > 0)
+ {
request.Content = new FormUrlEncodedContent(parameters);
+ }
var response = _client.SendAsync(request).Result;
return response.Content.ReadAsStringAsync().Result;
@@ -41,6 +89,7 @@
public string GetToken()
{
+
var userId = "1268";
var encryptedUserId = RsaHelper.Encrypt(userId, SPK);
;
@@ -59,9 +108,11 @@
if (!string.IsNullOrEmpty(response))
{
var res = JsonConvert.DeserializeObject<dynamic>(response);
- if (res.status == "true") return res.token.ToString();
+ if (res.status == "true")
+ {
+ return res.token.ToString();
+ }
}
-
return "token涓嶅瓨鍦紒";
}
catch (Exception ex)
@@ -141,8 +192,7 @@
try
{
// 鍙傛暟鏍¢獙
- if (query == null)
- throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull");
+ if (query == null) throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull");
//if (query.workflowId == null) throw new ArgumentException("workflowId涓嶈兘涓虹┖");
//if (query.mainData == null) throw new ArgumentException("mainData涓嶈兘涓虹┖");
@@ -158,47 +208,46 @@
// detailDataDict = ((IEnumerable<KeyValuePair<string, object>>)query.detailData)
// .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
//}
-
+
// 鍔犲瘑澶勭悊
var userId = "1268";
var encryptedUserId = RsaHelper.Encrypt(userId, SPK);
- var strToken = GetToken();
+ string strToken = GetToken();
// 鏇挎崲鍘熸湁鐨勬祴mainDataDict璇曟暟鎹瀯寤�
mainDataDict = BuildMainDataFromQuery(query);
-
+
// 璋冪敤鏂规硶澧炲姞userid璇锋眰澶�
var result = SubmitWorkflowRequest(
- strToken,
- 379,
- mainDataDict,
+ token: strToken,
+ workflowId: 379,
+ mainData: mainDataDict,
requestName: "MES->OA娴嬭瘯娴佺▼鏍囬",
- otherParams: null,
- remark: "Test",
- requestLevel: "",
- encryptedUserId: encryptedUserId // 鏂板鍙傛暟
+ otherParams:null,
+ remark:"Test",
+ requestLevel:"",
+ encryptedUserId: encryptedUserId // 鏂板鍙傛暟
);
return result;
}
catch (Exception ex)
{
// 鏇磋缁嗙殑閿欒澶勭悊
- return new
- {
+ return new {
status = -1,
- message = $"瀹屾暣閿欒淇℃伅锛歿ex}" // 鏄剧ず瀹屾暣鍫嗘爤
+ message = $"瀹屾暣閿欒淇℃伅锛歿ex.ToString()}" // 鏄剧ず瀹屾暣鍫嗘爤
};
}
}
// 淇敼鏂规硶绛惧悕
public dynamic SubmitWorkflowRequest(
- string token,
+ string token,
int workflowId,
Dictionary<string, object> mainData,
- string encryptedUserId, // 鐢ㄦ埛id
+ string encryptedUserId, // 鐢ㄦ埛id
Dictionary<string, object> detailData = null,
Dictionary<string, object> otherParams = null,
string remark = "",
@@ -207,22 +256,19 @@
{
try
{
- ServicePointManager.ServerCertificateValidationCallback +=
- (s, cert, chain, sslPolicyErrors) => true;
+ ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var url = new Uri($"{HOST}/api/workflow/paService/doCreateRequest");
var request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "POST";
request.Timeout = 20000;
- request.ContentType =
- "application/x-www-form-urlencoded"; // 淇敼涓篔SON鏍煎紡
+ request.ContentType = "application/x-www-form-urlencoded"; // 淇敼涓篔SON鏍煎紡
// 鏋勫缓璇锋眰澶�
request.Headers.Set("appid", APPID);
request.Headers.Set("token", token);
- request.Headers.Set("Content-Type",
- "application/x-www-form-urlencoded");
+ request.Headers.Set("Content-Type", "application/x-www-form-urlencoded");
request.Headers.Set("userId", encryptedUserId);
// 鍋囪闇�瑕佸姞瀵嗙殑userid浠庡叾浠栧湴鏂硅幏鍙栵紝杩欓噷闇�瑕佽ˉ鍏呰幏鍙栭�昏緫
@@ -231,11 +277,9 @@
{
//["userId"] = "1268",
["workflowId"] = workflowId,
- ["mainData"] =
- new List<Dictionary<string, object>> { mainData }, // 鍖呰鎴愭暟缁�
+ ["mainData"] = new List<Dictionary<string, object>> { mainData }, // 鍖呰鎴愭暟缁�
["detailData"] = null,
- ["otherParams"] =
- otherParams ?? new Dictionary<string, object>(),
+ ["otherParams"] = otherParams ?? new Dictionary<string, object>(),
["remark"] = remark,
["requestLevel"] = requestLevel,
["requestName"] = requestName
@@ -243,7 +287,7 @@
// 搴忓垪鍖栬姹備綋
var jsonBody = JsonConvert.SerializeObject(requestBody);
- var byteData = Encoding.UTF8.GetBytes(jsonBody);
+ byte[] byteData = Encoding.UTF8.GetBytes(jsonBody);
// 鍙戦�佽姹�
using (var stream = request.GetRequestStream())
@@ -258,19 +302,19 @@
using (var reader = new StreamReader(stream, Encoding.UTF8))
{
var responseJson = reader.ReadToEnd();
- var result =
- JsonConvert.DeserializeObject<dynamic>(responseJson);
-
+ var result = JsonConvert.DeserializeObject<dynamic>(responseJson);
+
// 娣诲姞鐘舵�佺爜妫�鏌�
- if (response.StatusCode != HttpStatusCode.OK ||
- result.code != "SUCCESS")
+ if (response.StatusCode != HttpStatusCode.OK || result.code != "SUCCESS")
+ {
throw new Exception($"娴佺▼鎻愪氦澶辫触锛歿result.errMsg}");
-
+ }
+
return new
{
- result.code,
- result.data,
- result.errMsg
+ code = result.code,
+ data = result.data,
+ errMsg = result.errMsg
};
}
}
@@ -281,8 +325,7 @@
using (var reader = new StreamReader(stream))
{
var errorDetails = reader.ReadToEnd();
- throw new Exception(
- $"璇锋眰澶辫触 [Status: {response.StatusCode}]: {errorDetails}");
+ throw new Exception($"璇锋眰澶辫触 [Status: {response.StatusCode}]: {errorDetails}");
}
}
catch (Exception ex)
@@ -299,93 +342,32 @@
{
// 琛ㄧ粨鏋勫畾涔�
["tableDBName"] = "formtable_main_33",
- ["workflowRequestTableRecords"] =
- new List<Dictionary<string, object>>
+ ["workflowRequestTableRecords"] = new List<Dictionary<string, object>>
+ {
+ new Dictionary<string, object>
{
- new()
+ ["recordOrder"] = 0,
+ ["workflowRequestTableFields"] = new List<Dictionary<string, object>>
{
- ["recordOrder"] = 0,
- ["workflowRequestTableFields"] =
- new List<Dictionary<string, object>>
- {
- new()
- {
- ["fieldName"] = "wlbm",
- ["fieldValue"] = "1.01.01.001"
- },
- new()
- {
- ["fieldName"] = "khgys",
- ["fieldValue"] = "闄堥洩骞�"
- },
- new()
- {
- ["fieldName"] = "jzmcwlmc",
- ["fieldValue"] = "椤剁洊"
- },
- new()
- {
- ["fieldName"] = "bhgpqxms",
- ["fieldValue"] = "澶栬涓嶅悎鏍硷紝灏哄涓嶅悎鏍硷紝棰滆壊涓嶇鍚�"
- },
- new()
- {
- ["fieldName"] = "dhdhmes",
- ["fieldValue"] = "MES001"
- }
- }
+ new Dictionary<string, object> { ["fieldName"] = "wlbm", ["fieldValue"] = "1.01.01.001" },
+ new Dictionary<string, object> { ["fieldName"] = "khgys", ["fieldValue"] = "闄堥洩骞�" },
+ new Dictionary<string, object> { ["fieldName"] = "jzmcwlmc", ["fieldValue"] = "椤剁洊" },
+ new Dictionary<string, object> { ["fieldName"] = "bhgpqxms", ["fieldValue"] = "澶栬涓嶅悎鏍硷紝灏哄涓嶅悎鏍硷紝棰滆壊涓嶇鍚�" },
+ new Dictionary<string, object> { ["fieldName"] = "dhdhmes", ["fieldValue"] = "MES001" }
}
}
+ }
};
return mainData;
}
// 杈呭姪鏂规硶鐢ㄤ簬瀹夊叏娣诲姞灞炴��
- private void TryAddProperty(Dictionary<string, object> dict, string key,
- object value)
+ private void TryAddProperty(Dictionary<string, object> dict, string key, object value)
{
- if (value != null) dict[key] = value;
- }
-
-
- public static class RsaHelper
- {
- public static string Encrypt(string plainText, string publicKeyPem)
+ if (value != null)
{
- //// 灏哖EM鏍煎紡鐨勫叕閽ヨ浆鎹负XML鏍煎紡
- //var rsa = RSA.Create();
- //rsa.ImportFromPem(publicKeyPem); // 浣跨敤.NET 5+ 鍐呯疆PEM瑙f瀽鏂规硶
-
- //var parameters = rsa.ExportParameters(false);
- //string publicKeyXml = $"<RSAKeyValue><Modulus>{Convert.ToBase64String(parameters.Modulus)}</Modulus><Exponent>{Convert.ToBase64String(parameters.Exponent)}</Exponent></RSAKeyValue>";
-
- //using var rsaProvider = new RSACryptoServiceProvider();
- //rsaProvider.FromXmlString(publicKeyXml); // 浣跨敤杞崲鍚庣殑XML鏍煎紡鍏挜
-
- //var data = Encoding.UTF8.GetBytes(plainText);
- //var encrypted = rsaProvider.Encrypt(data, false);
- //return Convert.ToBase64String(encrypted);
-
- var publicKeyParam =
- (RsaKeyParameters)PublicKeyFactory.CreateKey(
- Convert.FromBase64String(publicKeyPem));
- var XML = string.Format(
- "<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>",
- Convert.ToBase64String(publicKeyParam.Modulus
- .ToByteArrayUnsigned()),
- Convert.ToBase64String(publicKeyParam.Exponent
- .ToByteArrayUnsigned()));
- var encryptedContent = string.Empty;
- using (var rsa = new RSACryptoServiceProvider())
- {
- rsa.FromXmlString(XML);
- var encryptedData =
- rsa.Encrypt(Encoding.Default.GetBytes(plainText), false);
- encryptedContent = Convert.ToBase64String(encryptedData);
- }
-
- return encryptedContent;
+ dict[key] = value;
}
}
}
\ No newline at end of file
--
Gitblit v1.9.3