From 0150a5bd884ceebf6b01cf54456a7e7065dfaf9f Mon Sep 17 00:00:00 2001
From: cnf <3200815559@qq.com>
Date: 星期二, 06 五月 2025 10:57:51 +0800
Subject: [PATCH] 调用plm接口通了
---
StandardInterface/MES.Service/service/QcIssueResult/QcIssueResultManager.cs | 232 ++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 178 insertions(+), 54 deletions(-)
diff --git a/StandardInterface/MES.Service/service/QcIssueResult/QcIssueResultManager.cs b/StandardInterface/MES.Service/service/QcIssueResult/QcIssueResultManager.cs
index e92cf28..72200c6 100644
--- a/StandardInterface/MES.Service/service/QcIssueResult/QcIssueResultManager.cs
+++ b/StandardInterface/MES.Service/service/QcIssueResult/QcIssueResultManager.cs
@@ -19,6 +19,10 @@
using Newtonsoft.Json;
using Oracle.ManagedDataAccess.Client;
using System.Data;
+using System.Reflection;
+using System.Text;
+using DingTalk.Api;
+using System.Net.Http;
namespace MES.Service.service.QcIssueResult;
@@ -56,8 +60,8 @@
AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client client = CreateClient1();
AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models.GetAccessTokenRequest getAccessTokenRequest = new AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models.GetAccessTokenRequest
{
- AppKey = "dingyzos0r1bizj7g6lr",
- AppSecret = "-HP4RvK2OUbqhG3iBUpd_TPe5MZRj8cfLc0b8Skt8rhC3I38kVLY9SS8P3kLWFcH",
+ AppKey = "ding8nmegrbi29a78ze0",
+ AppSecret = "CwWeKXzItBJktsVhGoZi73Ts79bP8qp3FuLmS5PtJgNmMxrWFaqdQQTY0RqCRQSC",
};
try
@@ -99,7 +103,7 @@
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest processForecastRequest = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest
{
- ProcessCode = "PROC-BBA5632D-DC7C-4267-A3E2-757E2B7023BC",
+ ProcessCode = "PROC-4F4B3976-BA15-47EF-9A3C-3A07AC07DFEA",
DeptId = 1,
UserId = "923188102",
FormComponentValues = new List<AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest.ProcessForecastRequestFormComponentValues>
@@ -124,6 +128,85 @@
}
}
+ /**
+ * 鑾峰彇userid
+ * @return string 杩斿洖鍚姩缁撴灉
+ */
+ public HttpClient _httpClient;
+ public string DingTalkService()
+ {
+ _httpClient = new HttpClient();
+ _httpClient.Timeout = TimeSpan.FromSeconds(30);
+ return "1";
+ }
+
+ public async Task<string> GetUserId(string phone)
+ {
+ // 鍙傛暟楠岃瘉
+ if (string.IsNullOrWhiteSpace(phone))
+ throw new ArgumentException("鎵嬫満鍙蜂笉鑳戒负绌�", nameof(phone));
+
+ // 鑾峰彇璁块棶浠ょ墝
+ string accessToken = GetToken();
+
+ // 璋冪敤鐜版湁鏂规硶
+ return await GetUserIdByMobile(accessToken, phone);
+ }
+
+
+
+ public async Task<string> GetUserIdByMobile(string accessToken, string mobile)
+ {
+ // 鍙傛暟楠岃瘉
+ if (string.IsNullOrWhiteSpace(accessToken))
+ throw new ArgumentException("Access token cannot be empty", nameof(accessToken));
+
+ if (string.IsNullOrWhiteSpace(mobile) || !IsValidMobile(mobile))
+ throw new ArgumentException("Invalid mobile number", nameof(mobile));
+
+ try
+ {
+ // 鏋勯�犺姹俇RL
+ var url = $"https://oapi.dingtalk.com/topapi/v2/user/getbymobile?access_token={accessToken}";
+
+ string m = DingTalkService();
+
+ // 鏋勯�犺姹備綋
+ var requestBody = new { mobile };
+ var jsonContent = JsonConvert.SerializeObject(requestBody);
+ var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
+
+ // 鍙戦�佽姹�
+ var response = await _httpClient.PostAsync(url, content);
+
+ // 澶勭悊鍝嶅簲
+ response.EnsureSuccessStatusCode();
+
+ var responseBody = await response.Content.ReadAsStringAsync();
+ var result = JsonConvert.DeserializeObject<DingTalkResponse>(responseBody);
+
+ // 澶勭悊涓氬姟閫昏緫閿欒
+ if (result?.Errcode != 0)
+ throw new DingTalkApiException(result?.Errcode ?? -1, result?.Errmsg ?? "Unknown error");
+
+ return result?.Result?.UserId ?? throw new InvalidOperationException("User ID not found in response");
+ }
+ catch (HttpRequestException ex)
+ {
+ throw new DingTalkApiException(500, $"HTTP request failed: {ex.Message}", ex);
+ }
+ catch (JsonException ex)
+ {
+ throw new DingTalkApiException(500, $"JSON parsing failed: {ex.Message}", ex);
+ }
+ }
+
+ private bool IsValidMobile(string mobile)
+ {
+ // 绠�鍗曠殑鎵嬫満鍙锋牸寮忛獙璇�
+ return !string.IsNullOrEmpty(mobile) && mobile.Length == 11 && mobile.StartsWith("1");
+ }
+
/**
* 鍚姩閽夐拤宸ヤ綔娴佸疄渚�
@@ -132,19 +215,22 @@
public string GetProcessNo(GetQcIssueResultDetail getQcIssueResultDetail)
{
-
var db = SqlSugarHelper.GetInstance();
- var mapping = db.Queryable<DingNameCode>()
- .Where(t => t.DingDingName == getQcIssueResultDetail.Fname)
+
+ var stafflist = db.Queryable<DingNameCode>()
+ .Where(t => t.STAFF_NO == getQcIssueResultDetail.Fname)
.Select(t => new DingNameCode
{
- DingDingCode=t.DingDingCode,
+ STAFF_NAME = t.STAFF_NAME,
+ PHONE_NUMBER = t.PHONE_NUMBER
})
.ToList();
- if (mapping.Any())
- {
- string UserId = mapping.FirstOrDefault().DingDingCode;
+ if (stafflist.Any())
+ {
+ Task<string> task = GetUserId(stafflist[0].PHONE_NUMBER);
+ string UserId = task.Result;
+ string applicationUser = $"[\"{UserId}\"]";
// 浣跨敤 JSON 搴忓垪鍖栬緭鍑哄璞$殑璇︾粏鍐呭
string getQcIssueResultDetailJson = JsonConvert.SerializeObject(getQcIssueResultDetail, Formatting.Indented);
@@ -163,68 +249,69 @@
startProcessInstanceHeaders.XAcsDingtalkAccessToken = accessToken; // 浣跨敤鑾峰彇鍒扮殑 Access Token
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues1 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
{
- Name = "TextField-K2AD4O5B",
- Value = getQcIssueResultDetail.ItemName,
+ Name = "TextField_K5AVR59BD28",
+ Value = getQcIssueResultDetail.ItemModel,
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues2 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
{
- Name = "TextField_DYFD1EESLVC0",
- Value = getQcIssueResultDetail.ItemModel,
+ Name = "TextField_1LW382XRH1DS0",
+ Value = getQcIssueResultDetail.ItemName ,
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues3 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
{
- Name = "TextField_1AVN2BNVY1OG0",
+ Name = "NumberField_UKE91Z101BK0",
Value = getQcIssueResultDetail.FbatchQty,
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues4 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
{
- Name = "TextField_1DKEMESOOGSG0",
+ Name = "TextField_1QM2NWE9T3Y80",
Value = getQcIssueResultDetail.SuppName,
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues5 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
{
- Name = "DDDateField_20LKOACGMLXC0",
- Value = DateTime.Now.ToString("yyyy-MM-dd"),
+ Name = "TextField_1DAQ9890FDWG0",
+ Value = "娴嬭瘯浜у搧璐ㄩ噺鐘跺喌鍙婄敵璇峰師鍥�",
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues6 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
{
- Name = "TextField_WBNBWGFHR000",
- Value = getQcIssueResultDetail.CgOrder,
+ Name = "DDSelectField_76Z6HC5W1F0",
+ Value = "澶栬涓嶈壇",
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues7 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
{
- Name = "TextareaField_1ZP3BDPMYY800",
+ Name = "TextField_3B85TFIK9Z60",
Value = getQcIssueResultDetail.remark,
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues8 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
{
- Name = "SignatureField_SKF9Q82DZUO0",
- Value = getQcIssueResultDetail.Fname,
+ Name = "InnerContactField_WVZLUIPZ9J40",
+ Value = applicationUser,
+
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues9 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
{
- Name = "DDSelectField_1AK82Q8A2NB40",
+ Name = "DDSelectField_1AL6MWUUUOHS0",
Value = "閫�璐�",
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues10 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
{
- Name = "TextareaField_1LM82CPPR35S0",
- Value = "鎸戦�夊唴瀹�",
+ Name = "DepartmentField_10ZVNJNJCRJK0",
+ Value = "娴嬭瘯鐢宠閮ㄩ棬",
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues11 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
{
- Name = "TextareaField_AK4JLDDNS2O0",
- Value = "璁╂鎺ユ敹鍐呭",
+ Name = "DDSelectField_HG2SQUPO2NK0",
+ Value = "鐢熶骇涓�閮�",
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues12 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
{
- Name = "TextareaField_K69R6770WLS0",
- Value = "閫�璐у娉�",
+ Name = "DDPhotoField_QD15KYR764G0\r\n",
+ Value = "娴嬭瘯涓嶈壇鍥剧墖",
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues13 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
{
- Name = "TextareaField_194UFGLMI02O0",
- Value = "鎶ュ簾澶囨敞",
+ Name = "DDAttachment_GLZLFSIWK9S0\r\n",
+ Value = "闄勪欢",
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues14 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues
{
@@ -245,42 +332,42 @@
{
ActionerKey = "null",
ActionerUserIds = new List<string>
- {
- UserId
- },
+ {
+ UserId
+ },
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestApprovers approvers0 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestApprovers
{
ActionType = "OR",
UserIds = new List<string>
- {
- UserId
- },
+ {
+ UserId
+ },
};
AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest startProcessInstanceRequest = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest
{
OriginatorUserId = UserId,
- ProcessCode = "PROC-BBA5632D-DC7C-4267-A3E2-757E2B7023BC",
+ ProcessCode = "PROC-4F4B3976-BA15-47EF-9A3C-3A07AC07DFEA",
DeptId = 1,
FormComponentValues = new List<AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues>
- {
- formComponentValues1,formComponentValues2,formComponentValues3, formComponentValues4, formComponentValues5, formComponentValues6, formComponentValues7, formComponentValues8,
- formComponentValues9,formComponentValues10, formComponentValues11, formComponentValues12, formComponentValues13, formComponentValues14
- },
+ {
+ formComponentValues1,formComponentValues2,formComponentValues3, formComponentValues4, formComponentValues5, formComponentValues6, formComponentValues7, formComponentValues8,
+ formComponentValues9, formComponentValues11
+ },
TargetSelectActioners = new List<AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestTargetSelectActioners>
- {
- targetSelectActioners0
- },
+ {
+ targetSelectActioners0
+ },
Approvers = new List<AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestApprovers>
- {
- approvers0
- },
+ {
+ approvers0
+ },
CcList = new List<string>
- {
- UserId
- },
+ {
+ UserId
+ },
CcPosition = "START",
};
@@ -307,8 +394,9 @@
return $"Exception: {_err.Message}";
}
}
- else {
- return "鎮ㄤ笉鏄叕鍙告垚鍛樻垨杩樻湭琚姞鍏ュ埌鏁版嵁搴撲腑鎴栧悕瀛楀~鍐欓敊璇紝鎬讳箣鏈壘鍒板尮閰嶇殑鐢ㄦ埛淇℃伅";
+ else
+ {
+ return "鏌ヤ笉鍒版偍鐨勬墜鏈哄彿";
}
}
@@ -513,4 +601,40 @@
}
+}
+
+// 鍝嶅簲妯″瀷
+public class DingTalkResponse
+{
+ [JsonProperty("errcode")]
+ public int Errcode { get; set; }
+
+ [JsonProperty("errmsg")]
+ public string Errmsg { get; set; }
+
+ [JsonProperty("result")]
+ public UserResult Result { get; set; }
+}
+
+public class UserResult
+{
+ [JsonProperty("userid")]
+ public string UserId { get; set; }
+}
+
+// 鑷畾涔夊紓甯�
+public class DingTalkApiException : Exception
+{
+ public int ErrorCode { get; }
+
+ public DingTalkApiException(int errorCode, string message) : base(message)
+ {
+ ErrorCode = errorCode;
+ }
+
+ public DingTalkApiException(int errorCode, string message, Exception innerException)
+ : base(message, innerException)
+ {
+ ErrorCode = errorCode;
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3