¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using AlibabaCloud.OpenApiClient.Models; |
| | | using AlibabaCloud.SDK.Dingtalkworkflow_1_0; |
| | | using AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models; |
| | | using AlibabaCloud.SDK.Dingtalkoauth2_1_0; |
| | | using AlibabaCloud.SDK.Dingtalkoauth2_1_0.Models; |
| | | using AlibabaCloud.TeaUtil.Models; |
| | | using Tea; |
| | | using System.Diagnostics; |
| | | using MES.Service.Dto.webApi; |
| | | using MES.Service.Modes; |
| | | using SqlSugar; |
| | | using MES.Service.DB; |
| | | using MES.Service.Modes.QcIssueResult; |
| | | using MES.Service.Dto.webApi.QcIssueResult; |
| | | //using MES.Service.Dto.webApi.DeliveryNote; |
| | | //using MES.Service.Modes.DeliveryNote; |
| | | 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; |
| | | |
| | | //å¼å¸¸å¤ç½®åç»æè¡¨ |
| | | [SugarTable("MES_QA_ITEMS_DETECT_01")] |
| | | public class QcIssueResultManager : Repository<QcIssueResults> |
| | | { |
| | | /** |
| | | * ä½¿ç¨ Token åå§åè´¦å·Client |
| | | * @return Client |
| | | * @throws Exception |
| | | */ |
| | | public static AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client CreateClient() |
| | | { |
| | | AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config(); |
| | | config.Protocol = "https"; |
| | | config.RegionId = "central"; |
| | | return new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client(config); |
| | | } |
| | | |
| | | public static AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client CreateClient1() |
| | | { |
| | | AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config(); |
| | | config.Protocol = "https"; |
| | | config.RegionId = "central"; |
| | | return new AlibabaCloud.SDK.Dingtalkoauth2_1_0.Client(config); |
| | | } |
| | | |
| | | /** |
| | | * è·åééç Access Token |
| | | * @return string è¿åè·åå°ç Access Token |
| | | */ |
| | | public string GetToken() |
| | | { |
| | | 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 = "ding8nmegrbi29a78ze0", |
| | | AppSecret = "CwWeKXzItBJktsVhGoZi73Ts79bP8qp3FuLmS5PtJgNmMxrWFaqdQQTY0RqCRQSC", |
| | | }; |
| | | |
| | | try |
| | | { |
| | | var response = client.GetAccessToken(getAccessTokenRequest); |
| | | return response.Body.AccessToken; // è¿åè·åå°ç Access Token |
| | | } |
| | | catch (TeaException err) |
| | | { |
| | | Console.WriteLine($"TeaException: Code={err.Code}, Message={err.Message}"); |
| | | return null; |
| | | } |
| | | catch (Exception _err) |
| | | { |
| | | Console.WriteLine($"Exception: {_err.Message}"); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ¥çææ èªé审æ¹èç¹ |
| | | * @return string è¿åå¯å¨ç»æ |
| | | */ |
| | | public string GetForecast() |
| | | { |
| | | // è·å Access Token |
| | | string accessToken = GetToken(); |
| | | if (string.IsNullOrEmpty(accessToken)) |
| | | { |
| | | return "è·å Access Token 失败"; |
| | | } |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client client = CreateClient(); |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastHeaders processForecastHeaders = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastHeaders(); |
| | | processForecastHeaders.XAcsDingtalkAccessToken = accessToken; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest.ProcessForecastRequestFormComponentValues formComponentValues0 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest.ProcessForecastRequestFormComponentValues |
| | | { |
| | | Name = "PhoneField", |
| | | Value = "123xxxxxxxx", |
| | | }; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest processForecastRequest = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest |
| | | { |
| | | ProcessCode = "PROC-4F4B3976-BA15-47EF-9A3C-3A07AC07DFEA", |
| | | DeptId = 1, |
| | | UserId = "923188102", |
| | | FormComponentValues = new List<AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.ProcessForecastRequest.ProcessForecastRequestFormComponentValues> |
| | | { |
| | | formComponentValues0 |
| | | }, |
| | | }; |
| | | try |
| | | { |
| | | var response = client.ProcessForecastWithOptions(processForecastRequest, processForecastHeaders, new AlibabaCloud.TeaUtil.Models.RuntimeOptions()); |
| | | return $"éé工使µå®ä¾å¯å¨æå: {Newtonsoft.Json.JsonConvert.SerializeObject(response.Body)}"; |
| | | } |
| | | catch (TeaException err) |
| | | { |
| | | |
| | | return $"TeaException: Code={err.Code}, Message={err.Message}"; |
| | | |
| | | } |
| | | catch (Exception _err) |
| | | { |
| | | return $"Exception: {_err.Message}"; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * è·å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 |
| | | { |
| | | // æé 请æ±URL |
| | | 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"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å¯å¨éé工使µå®ä¾ |
| | | * @return string è¿åå¯å¨ç»æ |
| | | */ |
| | | |
| | | public string GetProcessNo(GetQcIssueResultDetail getQcIssueResultDetail) |
| | | { |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | var stafflist = db.Queryable<DingNameCode>() |
| | | .Where(t => t.STAFF_NO == getQcIssueResultDetail.StaffNo) |
| | | .Select(t => new DingNameCode |
| | | { |
| | | STAFF_NAME = t.STAFF_NAME, |
| | | PHONE_NUMBER = t.PHONE_NUMBER |
| | | }) |
| | | .ToList(); |
| | | |
| | | 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); |
| | | Debug.WriteLine("GetQcIssueResultDetail: " + getQcIssueResultDetailJson); |
| | | |
| | | // è·å Access Token |
| | | string accessToken = GetToken(); |
| | | if (string.IsNullOrEmpty(accessToken)) |
| | | { |
| | | return "è·å Access Token 失败"; |
| | | } |
| | | |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Client client = CreateClient(); |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceHeaders startProcessInstanceHeaders = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceHeaders(); |
| | | Debug.WriteLine(accessToken); |
| | | 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_K5AVR59BD28", |
| | | Value = getQcIssueResultDetail.ItemNo, |
| | | }; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues2 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues |
| | | { |
| | | 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 = "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_1QM2NWE9T3Y80", |
| | | Value = getQcIssueResultDetail.SuppName, |
| | | }; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues5 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues |
| | | { |
| | | Name = "TextField_1DAQ9890FDWG0", |
| | | Value = getQcIssueResultDetail.AppicationReason, |
| | | }; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues6 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues |
| | | { |
| | | Name = "DDSelectField_76Z6HC5W1F0", |
| | | Value = getQcIssueResultDetail.BadReason, |
| | | }; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues7 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues |
| | | { |
| | | 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 = "InnerContactField_WVZLUIPZ9J40", |
| | | Value = applicationUser, |
| | | |
| | | }; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues9 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues |
| | | { |
| | | Name = "DDSelectField_1AL6MWUUUOHS0", |
| | | Value = getQcIssueResultDetail.IqcStatus, |
| | | }; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues10 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues |
| | | { |
| | | Name = "DepartmentField_10ZVNJNJCRJK0", |
| | | Value = getQcIssueResultDetail.Department, |
| | | }; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues11 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues |
| | | { |
| | | Name = "DDSelectField_HG2SQUPO2NK0", |
| | | Value = getQcIssueResultDetail.WorkShop, |
| | | }; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues12 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues |
| | | { |
| | | Name = "DDPhotoField_QD15KYR764G0", |
| | | Value = "æµè¯ä¸è¯å¾ç", |
| | | }; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues13 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues |
| | | { |
| | | Name = "DDAttachment_GLZLFSIWK9S0", |
| | | Value = "éä»¶", |
| | | }; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues14 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues |
| | | { |
| | | Name = "DDSelectField_1RN2L4RWQ0AO0", |
| | | Value = "å¦", |
| | | }; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues15 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues |
| | | { |
| | | Name = "InnerContactField_WNG7AU9R2AO0", |
| | | Value = "å ç¾", |
| | | }; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues16 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues |
| | | { |
| | | Name = "DDAttachment_23VB5MMC1R1C0", |
| | | Value = "éä»¶", |
| | | }; |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestTargetSelectActioners targetSelectActioners0 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestTargetSelectActioners |
| | | { |
| | | ActionerKey = "null", |
| | | ActionerUserIds = new List<string> |
| | | { |
| | | 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 |
| | | }, |
| | | }; |
| | | |
| | | |
| | | AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest startProcessInstanceRequest = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest |
| | | { |
| | | OriginatorUserId = UserId, |
| | | 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, formComponentValues11 |
| | | }, |
| | | TargetSelectActioners = new List<AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestTargetSelectActioners> |
| | | { |
| | | targetSelectActioners0 |
| | | }, |
| | | Approvers = new List<AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestApprovers> |
| | | { |
| | | approvers0 |
| | | }, |
| | | CcList = new List<string> |
| | | { |
| | | UserId |
| | | }, |
| | | CcPosition = "START", |
| | | |
| | | }; |
| | | // åºåå FormComponentValues å表为 JSON æ ¼å¼ |
| | | string formComponentValuesJson = JsonConvert.SerializeObject(startProcessInstanceRequest.FormComponentValues, Formatting.Indented); |
| | | Debug.WriteLine("FormComponentValues: " + formComponentValuesJson); |
| | | try |
| | | { |
| | | string requestContent = Newtonsoft.Json.JsonConvert.SerializeObject(startProcessInstanceRequest); |
| | | Debug.WriteLine("startProcessInstanceRequestå
容ï¼"); |
| | | Debug.WriteLine(requestContent); |
| | | var response = client.StartProcessInstanceWithOptions(startProcessInstanceRequest, startProcessInstanceHeaders, new RuntimeOptions()); |
| | | return $"éé工使µå®ä¾å¯å¨æå: {Newtonsoft.Json.JsonConvert.SerializeObject(response.Body)}"; |
| | | } |
| | | catch (TeaException err) |
| | | { |
| | | string requestContent = Newtonsoft.Json.JsonConvert.SerializeObject(startProcessInstanceRequest); |
| | | Debug.WriteLine("startProcessInstanceRequestå
容ï¼"); |
| | | Debug.WriteLine(startProcessInstanceRequest); |
| | | return $"TeaException: Code={err.Code}, Message={err.Message}"; |
| | | } |
| | | catch (Exception _err) |
| | | { |
| | | return $"Exception: {_err.Message}"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | return "æ¥ä¸å°æ¨çææºå·"; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å°å¸¦ææµç¨å·åæ£éªåå·çæ°è®°å½æå
¥è¡¨ä¸ |
| | | */ |
| | | public dynamic SaveProcessNo(string ReleaseNo, string ProcessNo, string StaffNo, string Department) |
| | | { |
| | | var QcIssueResults = GetQcIssueResults(ReleaseNo, ProcessNo); |
| | | |
| | | var ApplicantResults = GetApplicantResults(ProcessNo, StaffNo); |
| | | |
| | | var DepartmentResults = GetDepartmentResults(ProcessNo, Department); |
| | | |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | db.Insertable(ApplicantResults).ExecuteCommand(); // æå
¥ç³è¯·äººæ°æ® |
| | | db.Insertable(DepartmentResults).ExecuteCommand(); // æå
¥é¨é¨æ°æ® |
| | | |
| | | return UseTransaction(db => |
| | | { |
| | | try |
| | | { |
| | | |
| | | |
| | | // ç»ä¸ä½¿ç¨äºå¡db |
| | | //SaveOrUpdateApplicantData(db, ApplicantResults); |
| | | //SaveOrUpdateDepartmentData(db, DepartmentResults); |
| | | SaveOrUpdateData(db, QcIssueResults); |
| | | |
| | | return 1; |
| | | } |
| | | catch |
| | | { |
| | | db.RollbackTran(); |
| | | throw; |
| | | } |
| | | }); |
| | | } |
| | | |
| | | public QcIssueResults GetQcIssueResults(string ReleaseNo, string ProcessNo) |
| | | { |
| | | var QcIssueResults = new QcIssueResults |
| | | { |
| | | INSTANCEID = ProcessNo, |
| | | ReleaseNo = ReleaseNo, |
| | | QcStatu = "" |
| | | }; |
| | | |
| | | return QcIssueResults; |
| | | } |
| | | |
| | | public IqcApplicant GetApplicantResults(string ProcessNo, string StaffNo) |
| | | { |
| | | var db = SqlSugarHelper.GetInstance(); |
| | | |
| | | var stafflist = db.Queryable<DingNameCode>() |
| | | .Where(t => t.STAFF_NO == StaffNo) |
| | | .Select(t => new DingNameCode |
| | | { |
| | | STAFF_NAME = t.STAFF_NAME, |
| | | PHONE_NUMBER = t.PHONE_NUMBER |
| | | }) |
| | | .ToList(); |
| | | |
| | | var ApplicantResults = new IqcApplicant |
| | | { |
| | | INSTANCEID = ProcessNo, |
| | | APPLICANTID = StaffNo, |
| | | APPLICANTNAME = stafflist[0].STAFF_NAME |
| | | }; |
| | | |
| | | return ApplicantResults; |
| | | } |
| | | |
| | | public IqcDepartment GetDepartmentResults(string ProcessNo, string Department) |
| | | { |
| | | |
| | | var DepartmentResults = new IqcDepartment |
| | | { |
| | | INSTANCEID = ProcessNo, |
| | | DEPARTMENTNAME = Department |
| | | }; |
| | | |
| | | return DepartmentResults; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®æµç¨å·æ´æ°è¡¨çè®°å½ |
| | | */ |
| | | public dynamic Save(ErpQcIssueResult erpQcIssueResult) |
| | | { |
| | | //var json = JsonConvert.SerializeObject(erpQcIssueResult); |
| | | |
| | | ////var saveSuccess = UseTransaction(db => |
| | | ////{ |
| | | //// var data = GetMesQcIssueResults(erpQcIssueResult); |
| | | //// return SaveOrUpdateData(db, data); |
| | | ////}); |
| | | |
| | | //return new |
| | | //{ |
| | | // SerializedPayload = json, |
| | | // ServerTime = DateTime.UtcNow.ToString("O") |
| | | //}; |
| | | |
| | | var mesQcIssueResults = GetMesQcIssueResults(erpQcIssueResult); |
| | | |
| | | return UseTransaction(db => |
| | | { |
| | | return SaveOrUpdateData(db, mesQcIssueResults) ? 1 : 0; |
| | | }) > 0; |
| | | |
| | | } |
| | | |
| | | public QcIssueResults GetMesQcIssueResults(ErpQcIssueResult erpQcIssueResult) |
| | | { |
| | | var mesQcIssueResults = new QcIssueResults |
| | | { |
| | | INSTANCEID = erpQcIssueResult.ProcessNo, |
| | | FReview = erpQcIssueResult.FReview, |
| | | APPLICATIONNUM = erpQcIssueResult.ApplicationQuantity.ToString(), |
| | | BADCAUSES = erpQcIssueResult.BadCauses, |
| | | BELONGINGWORKSHOP = erpQcIssueResult.AffiliatedWorkshop, |
| | | REVIEWSTATUS = erpQcIssueResult.FReview, |
| | | QcStatu = erpQcIssueResult.QcStatus, |
| | | ITEMNAME = erpQcIssueResult.ItemName, |
| | | ITEMNO = erpQcIssueResult.ItemNo, |
| | | SUPPLIERNAME = erpQcIssueResult.SupplierName, |
| | | REMARK = erpQcIssueResult.Remark, |
| | | APPLICATIONRESON=erpQcIssueResult.Reason |
| | | }; |
| | | |
| | | return mesQcIssueResults; |
| | | } |
| | | |
| | | /** |
| | | * æå
¥åæ´æ°æ°æ®åºè¡¨ |
| | | */ |
| | | private bool SaveOrUpdateData(SqlSugarScope db, QcIssueResults qcIssueResults) |
| | | { |
| | | |
| | | // æ¥è¯¢ QcIssueResults è¡¨ä¸æ¯å¦åå¨å¹é
çè®°å½ |
| | | var mapping = db.Queryable<QcIssueResults>() |
| | | .Where(t => t.INSTANCEID == qcIssueResults.INSTANCEID) |
| | | .Select(t => new QcIssueResults |
| | | { |
| | | ReleaseNo = t.ReleaseNo, |
| | | }) |
| | | .ToList(); |
| | | |
| | | if (mapping.Any()) |
| | | { |
| | | if (qcIssueResults.QcStatu == "æç»") |
| | | { |
| | | string ReleaseNo = mapping.FirstOrDefault().ReleaseNo; |
| | | |
| | | // åªæ´æ° ReleaseNo å FReview ä¸¤ä¸ªåæ®µ |
| | | var updateResult = db.Updateable<QcIssueResults>() |
| | | .SetColumns(t => new QcIssueResults |
| | | { |
| | | ReleaseNo = ReleaseNo, |
| | | INSTANCEID = qcIssueResults.INSTANCEID, |
| | | FReview = qcIssueResults.FReview, |
| | | APPLICATIONNUM = qcIssueResults.APPLICATIONNUM, |
| | | BADCAUSES = qcIssueResults.BADCAUSES, |
| | | BELONGINGWORKSHOP = qcIssueResults.BELONGINGWORKSHOP, |
| | | REVIEWSTATUS = qcIssueResults.REVIEWSTATUS, |
| | | QcStatu = qcIssueResults.QcStatu, |
| | | ITEMNAME = qcIssueResults.ITEMNAME, |
| | | ITEMNO = qcIssueResults.ITEMNO, |
| | | SUPPLIERNAME = qcIssueResults.SUPPLIERNAME, |
| | | REMARK = qcIssueResults.REMARK, |
| | | APPLICATIONRESON=qcIssueResults.APPLICATIONRESON |
| | | |
| | | }) |
| | | .Where(t => t.INSTANCEID == qcIssueResults.INSTANCEID) // æ¾å¼æå®æ´æ°æ¡ä»¶ |
| | | .ExecuteCommand(); |
| | | |
| | | // æ¥è¯¢ UpdateMesQaItems è¡¨ä¸æ¯å¦åå¨å¹é
çè®°å½ |
| | | var existingRecord = db.Queryable<UpdateMesQaItems>() |
| | | .Where(it => it.ReleaseNo == ReleaseNo) |
| | | .First(); // ä½¿ç¨ First è·åç¬¬ä¸æ¡è®°å½ |
| | | |
| | | Debug.WriteLine($"æ¥è¯¢å°ç mapping: {JsonConvert.SerializeObject(existingRecord)}"); |
| | | |
| | | if (existingRecord != null) |
| | | { |
| | | try |
| | | { |
| | | //å®ä¹è¾å
¥åæ° |
| | | var inputParam1 = new SugarParameter("pi_no", existingRecord.ReleaseNo); |
| | | var inputParam2 = new SugarParameter("pi_user", "PL017"); |
| | | // å®ä¹è¾åºåæ° |
| | | var outParam1 = new SugarParameter("po_result", null, true); |
| | | var outParam2 = new SugarParameter("po_msg", null, true); |
| | | // ä½¿ç¨ SqlSugar æ§è¡åå¨è¿ç¨ |
| | | Db.Ado.ExecuteCommand("BEGIN PRC_MES_IQC_CG_REVOCK(:pi_no,:pi_user,:po_result,:po_msg ); END;", inputParam1, inputParam2, outParam1, outParam2); |
| | | // è·åè¾åºåæ°çå¼ |
| | | int result = int.Parse((string)outParam1.Value); |
| | | string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value; |
| | | if (result == 1) |
| | | { |
| | | //åå¨è¿ç¨å¤±è´¥åäºå¡è¿è¡åæ» |
| | | db.Ado.RollbackTran(); |
| | | throw new Exception(message); |
| | | } |
| | | // æäº¤äºå¡ |
| | | db.Ado.CommitTran(); |
| | | return true; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("Exception: " + ex.Message); |
| | | return false; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("æªæ¾å°éè¦æ´æ°çè®°å½"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | string ReleaseNo = mapping.FirstOrDefault().ReleaseNo; |
| | | |
| | | // åªæ´æ° ReleaseNo å FReview ä¸¤ä¸ªåæ®µ |
| | | var updateResult = db.Updateable<QcIssueResults>() |
| | | .SetColumns(t => new QcIssueResults |
| | | { |
| | | ReleaseNo = ReleaseNo, |
| | | INSTANCEID = qcIssueResults.INSTANCEID, |
| | | FReview = qcIssueResults.FReview, |
| | | APPLICATIONNUM = qcIssueResults.APPLICATIONNUM, |
| | | BADCAUSES = qcIssueResults.BADCAUSES, |
| | | BELONGINGWORKSHOP = qcIssueResults.BELONGINGWORKSHOP, |
| | | REVIEWSTATUS = qcIssueResults.REVIEWSTATUS, |
| | | QcStatu = qcIssueResults.QcStatu, |
| | | ITEMNAME = qcIssueResults.ITEMNAME, |
| | | ITEMNO = qcIssueResults.ITEMNO, |
| | | SUPPLIERNAME = qcIssueResults.SUPPLIERNAME, |
| | | REMARK = qcIssueResults.REMARK, |
| | | APPLICATIONRESON = qcIssueResults.APPLICATIONRESON |
| | | |
| | | |
| | | }) |
| | | .Where(t => t.INSTANCEID == qcIssueResults.INSTANCEID) // æ¾å¼æå®æ´æ°æ¡ä»¶ |
| | | .ExecuteCommand(); |
| | | |
| | | // æ¥è¯¢ UpdateMesQaItems è¡¨ä¸æ¯å¦åå¨å¹é
çè®°å½ |
| | | var existingRecord = db.Queryable<UpdateMesQaItems>() |
| | | .Where(it => it.ReleaseNo == ReleaseNo) |
| | | .First(); // ä½¿ç¨ First è·åç¬¬ä¸æ¡è®°å½ |
| | | |
| | | Debug.WriteLine($"æ¥è¯¢å°ç mapping: {JsonConvert.SerializeObject(existingRecord)}"); |
| | | |
| | | if (existingRecord != null) |
| | | { |
| | | // æ´æ° UpdateMesQaItems 表ä¸çåæ®µ |
| | | existingRecord.FngHandle = qcIssueResults.REVIEWSTATUS; |
| | | if (existingRecord.FngHandle == "éè´§") |
| | | { |
| | | existingRecord.FMRMODE = "éæè¡¥æ"; |
| | | } |
| | | else |
| | | { |
| | | existingRecord.FMRMODE = null; |
| | | } |
| | | |
| | | // æ§è¡æ´æ°æä½ |
| | | updateResult = db.Updateable(existingRecord).ExecuteCommand(); |
| | | |
| | | if (updateResult > 0) |
| | | { |
| | | try |
| | | { |
| | | |
| | | //å®ä¹è¾å
¥åæ° |
| | | var inputParam1 = new SugarParameter("PI_BILLNO", ReleaseNo); |
| | | var inputParam2 = new SugarParameter("PI_USER", "PL017"); |
| | | var inputParam3 = new SugarParameter("PI_HANDLE", existingRecord.FngHandle); |
| | | var inputParam4 = new SugarParameter("PI_TLFS", existingRecord.FMRMODE); |
| | | var inputParam5 = new SugarParameter("PI_REMARK", ""); |
| | | |
| | | // å®ä¹è¾åºåæ° |
| | | var outParam1 = new SugarParameter("PO_RESULT", null, true); |
| | | var outParam2 = new SugarParameter("PO_MSG", null, true); |
| | | // ä½¿ç¨ SqlSugar æ§è¡åå¨è¿ç¨ |
| | | Db.Ado.ExecuteCommand("BEGIN PRC_MES_IQC_CG_SUBMIT(:PI_BILLNO,:PI_BILLNO,:PI_HANDLE,:PI_TLFS,:PI_REMARK,:PO_RESULT,:PO_MSG); END;", inputParam1, inputParam2, inputParam3, inputParam4, inputParam5, outParam1, outParam2); |
| | | // è·åè¾åºåæ°çå¼ |
| | | int result = int.Parse((string)outParam1.Value); |
| | | string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value; |
| | | if (result == 1) |
| | | { |
| | | //åå¨è¿ç¨å¤±è´¥åäºå¡è¿è¡åæ» |
| | | db.Ado.RollbackTran(); |
| | | throw new Exception(message); |
| | | } |
| | | // æäº¤äºå¡ |
| | | db.Ado.CommitTran(); |
| | | return true; |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("Exception: " + ex.Message); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | return updateResult > 0; // å¦ææ´æ°æåï¼è¿å true |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("æªæ¾å°éè¦æ´æ°çè®°å½"); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | // 妿 mapping ä¸ºç©ºï¼æå
¥æ°è®°å½å° QcIssueResults 表 |
| | | var orUpdate = base.Insert(qcIssueResults); |
| | | if (orUpdate) return true; |
| | | throw new NotImplementedException("æå
¥ææ´æ°å¤±è´¥"); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | // ååºæ¨¡å |
| | | 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; |
| | | } |
| | | } |