StandardInterface/MES.Service/Dto/webApi/PLM/BaseObject.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@  namespace MES.Service.Dto.webApi.PLM; public class BaseObject { //å®ä½ä¸»é® public long? FID { get; set; } //ç¼ç public string? FCode { get; set; } //åç§° public string? FName { get; set; } } StandardInterface/MES.Service/Dto/webApi/PLM/RelatedObject.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MES.Service.Dto.webApi.PLM; public class RelatedObject { //å®ä½ä¸»é® public long? FID { get; set; } //ç©æç¼ç public string? FRE_FCode { get; set; } //ç¸å ³å¯¹è±¡ public long? FRelatedObject { get; set; } } StandardInterface/MES.Service/Dto/webApi/PLM/StdDocument.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MES.Service.Dto.webApi.PLM; public class StdDocument { //å®ä½ä¸»é® public long? FID { get; set; } //ç¼ç public string? FCode { get; set; } //åç§° public string? FName { get; set; } //ç©çæä»¶å public string? FPhysicalFileName { get; set; } //ç©çæä»¶ public string? FFileId { get; set; } //å ³è对象 转ç pdf public string? FRelevantObject { get; set; } } StandardInterface/MES.Service/Dto/webApi/QcIssueResult/ErpQcIssueResult.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,57 @@ using Newtonsoft.Json; using System.Collections.Generic; public class ErpQcIssueResult { public string? ProcessNo { get; set; } public string? FReview { get; set; } public string? QcStatus { get; set; } // åQCSTATUæ¹ä¸ºè§èå½å // æ°å¢åå¹¶åæ®µ public string? Remark { get; set; } public int? ApplicationQuantity { get; set; } // ä¿æå¯ç©ºæ§ public string? Reason { get; set; } public string? BadCauses { get; set; } public string? AffiliatedWorkshop { get; set; } public string? ItemName { get; set; } public string? SupplierName { get; set; } public string? ItemNo { get; set; } public List<Applicant> Applicants { get; set; } = new List<Applicant>(); public List<ApplicationDepartment> ApplicationDepartments { get; set; } = new List<ApplicationDepartment>(); } // ä¿æåæåµå¥ç±»å®ä¹ public class Applicant { public string? applicant { get; set; } // ç»ä¸å¯ç©ºæ§ } public class ApplicationDepartment { public string? applicationdepartment { get; set; } } StandardInterface/MES.Service/Dto/webApi/QcIssueResult/QcIssueResult.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MES.Service.Dto.webApi.QcIssueResult; public class QcIssueResult { public ErpQcIssueResult ErpQcIssueResult { get; set; } } StandardInterface/MES.Service/MES.Service.csproj
@@ -7,7 +7,13 @@ </PropertyGroup> <ItemGroup> <PackageReference Include="AlibabaCloud.SDK.Dingtalk" Version="2.1.99" /> <PackageReference Include="Masuit.Tools.Core" Version="2024.3.4" /> <PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.4" /> <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.4" /> <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.4" /> <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> <PackageReference Include="SqlSugarCore" Version="5.1.4.158" /> </ItemGroup> StandardInterface/MES.Service/Modes/QcIssueResult/DingNameCode.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MES.Service.Modes.QcIssueResult; //ééç¨æ·å ç 对åºè¡¨ [SugarTable("MES_DINGDING_NAME_CODE")] internal class DingNameCode { //ééç¨æ·å ç [SugarColumn(ColumnName = "DINGDINGCODE")] public string? DingDingCode { get; set; } //ééç¨æ·åç§° [SugarColumn(ColumnName = "DINGDINGNAME")] public string? DingDingName { get; set; } } StandardInterface/MES.Service/Modes/QcIssueResult/GetQcIssueResultDetail.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,40 @@ using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MES.Service.Modes.QcIssueResult; public class GetQcIssueResultDetail { //æ°é public string? FbatchQty { get; set; } //产ååç§° public string? ItemName { get; set; } //è§æ ¼åå· public string? ItemModel { get; set; } //鿣åä½ public string? SuppName { get; set; } //订åå·(éè´åå·) public string? CgOrder { get; set; } //对ä¸åæ ¼ææ½å¨ä¸åæ ¼çæè¿° public string? remark { get; set; } //æ£éªåå· public string? ReleaseNo { get; set; } //ç¨æ·åç§° public string? Fname { get; set; } } StandardInterface/MES.Service/Modes/QcIssueResult/QcIssueResults.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MES.Service.Modes.QcIssueResult; //å¼å¸¸å¤ç½®åç»æè¡¨ [SugarTable("MES_QCISSUE_RESULT")] public class QcIssueResults { //SEQ_MES_SCZZD [SugarColumn(ColumnName = "ID", IsPrimaryKey = true, OracleSequenceName = "SEQ_QCISSUE_RESULT")] public decimal Id { get; set; } //éè´§åå· [SugarColumn(ColumnName = "RELEASE_NO")] public string? ReleaseNo { get; set; } //éè´§åå· [SugarColumn(ColumnName = "PROCESSNO")] public string? ProcessNo { get; set; } //ä¾åºå [SugarColumn(ColumnName = "FREVIEW")] public string? FReview { get; set; } //ä¾åºå [SugarColumn(ColumnName = "QCSTATU")] public string? QcStatu { get; set; } } StandardInterface/MES.Service/Modes/QcIssueResult/UpdateMesQaItems .cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,36 @@ using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MES.Service.Modes.QcIssueResult; [SugarTable("MES_QA_ITEMS_DETECT_01")] public class UpdateMesQaItems { [SugarColumn(ColumnName = "ID", OracleSequenceName = "SEQ_QM_ID", IsPrimaryKey = true)] public decimal Id { get; set; } //éè´§åå· [SugarColumn(ColumnName = "RELEASE_NO")] public string? ReleaseNo { get; set; } //éè´§åå· [SugarColumn(ColumnName = "FNG_HANDLE")] public string? FngHandle { get; set; } //éè´§åå· [SugarColumn(ColumnName = "FMRMODE")] public string? FMRMODE { get; set; } //éè´§åå· [SugarColumn(ColumnName = "IS_SJ")] public decimal? ISSJ { get; set; } //éè´§åå· [SugarColumn(ColumnName = "SJ_NO")] public string? SJ_NO { get; set; } } StandardInterface/MES.Service/service/PLM/PLMManager.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,189 @@ using Kingdee.CDP.WebApi.SDK; using MES.Service.Dto.webApi.PLM; using System.Diagnostics; using System.Text; namespace MES.Service.service.PLM; public class PLMManager { public List<StdDocument> RetrieveDrawings(string ItemNo) { List<BaseObject> baseObjects = GetPlmCfgBase(ItemNo); Debug.WriteLine($"第ä¸å®æ´å 容ï¼JSONï¼: {Newtonsoft.Json.JsonConvert.SerializeObject(baseObjects, Newtonsoft.Json.Formatting.Indented)}"); // æ£æ¥è¿åç»ææ¯å¦ä¸ºç©º if (baseObjects == null || !baseObjects.Any()) { throw new NotImplementedException("è¿åç»æä¸ºç©º"); } else { List<RelatedObject> relatedObjects = GetPlmCfgRelatedObject(baseObjects[0].FID); Debug.WriteLine($"第äºå®æ´å 容ï¼JSONï¼: {Newtonsoft.Json.JsonConvert.SerializeObject(relatedObjects, Newtonsoft.Json.Formatting.Indented)}"); // æ£æ¥è¿åç»ææ¯å¦ä¸ºç©º if (relatedObjects == null || !relatedObjects.Any()) { throw new NotImplementedException("è¿åç»æä¸ºç©º"); } List<StdDocument> stdDocuments = GetPlmStdDocument(relatedObjects); return stdDocuments; } } #region 1.éè¿ç©æç¼ç ï¼éè¦å¯ä¸ï¼è·åç©æid public List<BaseObject> GetPlmCfgBase(string ItemNo) { //注æ 1ï¼æ¤å¤ä¸å使ç¨åæ°å½¢å¼ä¼ å ¥ç¨æ·ååå¯ç çææä¿¡æ¯ï¼æ¹ä¸ºå¨ç»å½é ç½®æä»¶ä¸è®¾ç½®ã //注æ 2ï¼å¿ é¡»å é ç½®ç¬¬ä¸æ¹ç³»ç»ç»å½ææä¿¡æ¯åï¼åè¿è¡ä¸å¡æä½ï¼è¯¦æ åèåè¯è¨çæ¬SDKä»ç»ä¸çç»å½é ç½®æä»¶è¯´æã //读åé ç½®ï¼åå§åSDK K3CloudApi client = new K3CloudApi(); //ç¨äºè®°å½ç»æ StringBuilder Info = new StringBuilder(); //ä¸å¡å¯¹è±¡æ è¯ //string formId = "PLM_STD_DOCUMENT"; string formId = "PLM_CFG_BASE"; DateTime dt = DateTime.Now; //æ¥è¯¢å段éåï¼å³è¿ååªäºæ°æ®ï¼ä¸è½ä¸ºç©ºï¼æ ¹æ®ä¸åä¸å¡åæ®å¡«åä¸åçåæ®µåï¼ä»¥ä¸ä» ä¸ºç¤ºä¾ //string fieldKeys = "FCode,FFileId,FRelevantObject"; //string FilterString = "FID='-2146304'"; string fieldKeys = "FID,FCode,FName"; string FilterString = string.Format(@"FCode='{0}'", ItemNo); string OrderString = ""; int TopRowCount = 0; int StartRow = 0; int Limit = 0; var param = new QueryParam() { FormId = formId, FieldKeys = fieldKeys, FilterString = FilterString, OrderString = OrderString, TopRowCount = TopRowCount, StartRow = StartRow, Limit = Limit }; //è°ç¨æ¥å£ var result = client.ExecuteBillQuery(param.ToJson()); Debug.WriteLine($"第ä¸ä¸ªå ç´ å 容: {result}"); return result.Select(s => { var entity = new BaseObject { FID = (long)s[0], FCode = (string)s[1], FName = (string)s[2], }; return entity; }).ToList(); } #endregion #region 2.éè¿ç©æidè·åç¸å ³å¯¹è±¡ãä¸è½½éè¦çææ¡£ãçid public List<RelatedObject> GetPlmCfgRelatedObject(long? FRelatedObject) { //注æ 1ï¼æ¤å¤ä¸å使ç¨åæ°å½¢å¼ä¼ å ¥ç¨æ·ååå¯ç çææä¿¡æ¯ï¼æ¹ä¸ºå¨ç»å½é ç½®æä»¶ä¸è®¾ç½®ã //注æ 2ï¼å¿ é¡»å é ç½®ç¬¬ä¸æ¹ç³»ç»ç»å½ææä¿¡æ¯åï¼åè¿è¡ä¸å¡æä½ï¼è¯¦æ åèåè¯è¨çæ¬SDKä»ç»ä¸çç»å½é ç½®æä»¶è¯´æã //读åé ç½®ï¼åå§åSDK K3CloudApi client = new K3CloudApi(); //ç¨äºè®°å½ç»æ StringBuilder Info = new StringBuilder(); //ä¸å¡å¯¹è±¡æ è¯ //string formId = "PLM_STD_DOCUMENT"; string formId = "PLM_CFG_RELATEDOBJECT"; DateTime dt = DateTime.Now; //æ¥è¯¢å段éåï¼å³è¿ååªäºæ°æ®ï¼ä¸è½ä¸ºç©ºï¼æ ¹æ®ä¸åä¸å¡åæ®å¡«åä¸åçåæ®µåï¼ä»¥ä¸ä» ä¸ºç¤ºä¾ //string fieldKeys = "FCode,FFileId,FRelevantObject"; //string FilterString = "FID='-2146304'"; string fieldKeys = "FID,FRE_FCode,FRelatedObject"; string FilterString = string.Format(@"FRelatedObject='{0}'", FRelatedObject); string OrderString = ""; int TopRowCount = 0; int StartRow = 0; int Limit = 0; var param = new QueryParam() { FormId = formId, FieldKeys = fieldKeys, FilterString = FilterString, OrderString = OrderString, TopRowCount = TopRowCount, StartRow = StartRow, Limit = Limit }; //è°ç¨æ¥å£ var result = client.ExecuteBillQuery(param.ToJson()); Debug.WriteLine(result); return result.Select(s => { var entity = new RelatedObject { FID = (long)s[0], FRE_FCode = (string)s[1], FRelatedObject = (long)s[2], }; return entity; }).ToList(); } #endregion #region 3.æ ¹æ®ææ¡£idè·åææ¡£ç©çæä»¶id public List<StdDocument> GetPlmStdDocument(List<RelatedObject> relatedObjects) { //注æ 1ï¼æ¤å¤ä¸å使ç¨åæ°å½¢å¼ä¼ å ¥ç¨æ·ååå¯ç çææä¿¡æ¯ï¼æ¹ä¸ºå¨ç»å½é ç½®æä»¶ä¸è®¾ç½®ã //注æ 2ï¼å¿ é¡»å é ç½®ç¬¬ä¸æ¹ç³»ç»ç»å½ææä¿¡æ¯åï¼åè¿è¡ä¸å¡æä½ï¼è¯¦æ åèåè¯è¨çæ¬SDKä»ç»ä¸çç»å½é ç½®æä»¶è¯´æã //读åé ç½®ï¼åå§åSDK K3CloudApi client = new K3CloudApi(); //ç¨äºè®°å½ç»æ StringBuilder Info = new StringBuilder(); //ä¸å¡å¯¹è±¡æ è¯ string formId = "PLM_STD_DOCUMENT"; DateTime dt = DateTime.Now; //æ¥è¯¢å段éåï¼å³è¿ååªäºæ°æ®ï¼ä¸è½ä¸ºç©ºï¼æ ¹æ®ä¸åä¸å¡åæ®å¡«åä¸åçåæ®µåï¼ä»¥ä¸ä» ä¸ºç¤ºä¾ string fieldKeys = "FID,FCode,FName,FPhysicalFileName,FFileId,FRelevantObject"; // æå FID å¼ var fidList = relatedObjects.Select(obj => obj.FID.ToString()).ToList(); // å° FID å¼ç¨éå·åéï¼å¹¶å 裹å¨åå¼å·ä¸ string fids = string.Join(",", fidList.Select(fid => $"'{fid}'")); // æå»º FilterString string FilterString = $"FID in ({fids})"; string OrderString = ""; int TopRowCount = 0; int StartRow = 0; int Limit = 0; var param = new QueryParam() { FormId = formId, FieldKeys = fieldKeys, FilterString = FilterString, OrderString = OrderString, TopRowCount = TopRowCount, StartRow = StartRow, Limit = Limit }; //è°ç¨æ¥å£ var result = client.ExecuteBillQuery(param.ToJson()); return result.Select(s => { var entity = new StdDocument { FID = (long)s[0], FCode = (string)s[1], FName = (string)s[2], FPhysicalFileName = (string)s[3], FFileId = (string)s[4], FRelevantObject = (string)s[5], }; return entity; }).ToList(); } #endregion } StandardInterface/MES.Service/service/PLM/WarehouseDownloadDoc.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,145 @@ using Newtonsoft.Json.Linq; using System.Net; using System.Text; namespace ConsoleApp1 { #region 1.æ ¹æ®ææ¡£ç©çæä»¶idè·åææ¡£æµæ°æ® public class WarehouseDownloadDoc() { private string _cloudUrl = "http://121.36.245.199/k3cloud"; private string _warehouse = "http://192.168.30.251/CloudPLMWarehouse"; #region ææ¡£æå¡å¨ä¸ä¸æ private string WarehouseCTX { get { string json = "{\"ap1\":{ \"AcctID\":\"" + "61ce591aee4c5a" + "\",\"Username\":\"Administrator\",\"Password\":\"Yc123456@\",\"Lcid\":2052,\"AuthenticateType\":1,\"PasswordIsEncrypted\":\"false\",\"ClientInfo\":{\"ClientType\":8}}"; var resp = GetResponse("http://121.36.245.199/k3cloud/Kingdee.BOS.ServiceFacade.ServicesStub.User.UserService.ValidateLoginInfo.common.kdsvc", json, new Dictionary<string, string>()); string ret = (new StreamReader(resp.GetResponseStream(), Encoding.UTF8)).ReadToEnd(); var result = JObject.Parse(ret)["Context"]; string token = result["UserToken"].ToString(); var warehouseCtx = string.Format("LoginUrl={0}&KDServiceSessionId={1}", _cloudUrl, JObject.Parse(ret)["KDSVCSessionId"].ToString());//å®å ¨æ°æ¹å¼ return Convert.ToBase64String(Encoding.UTF8.GetBytes(warehouseCtx)); } } #endregion #region ç©çæä»¶id private string GetFileId(string fileId) { return Convert.ToBase64String(Encoding.UTF8.GetBytes(fileId)); } #endregion #region çµåä»è®¿é®åè¯ private string Token { get { var token = Guid.NewGuid().ToString(); return token; } } #endregion #region åéè¯·æ± public Stream SendRequest(string op, string fileId) { var header = new Dictionary<string, string>() { {"FileID" ,GetFileId(fileId) }, { "CTX",WarehouseCTX}, { "token", Token }, { "PLM_ACCESS_TYPE","pure" } }; return PostDataViaHttpWebRequest(RequestUrl(op), string.Empty, header, !op.Equals("Download")); } #endregion #region 请æ±çURL private string RequestUrl(string op) { return _warehouse + "/" + op; } #endregion #region è·åååº private HttpWebResponse GetResponse(string url, string bodyJson, Dictionary<string, string> header) { byte[] data = Encoding.UTF8.GetBytes(bodyJson); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = WebRequestMethods.Http.Post; request.ContentType = "application/json"; request.ContentLength = data.Length; if (header != null) { foreach (var p in header) { request.Headers.Add(p.Key, p.Value); } } using (Stream reqStream = request.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Close(); } HttpWebResponse resp = null; try { resp = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { var res = ex.Response; if (res != null) { string statusBase64 = ((HttpWebResponse)ex.Response).StatusDescription;//base64ç¼ç åçæ¥éä¿¡æ¯ } } return resp; } #endregion #region ä¿åæä»¶å°æ¬å° /*private void PostDataViaHttpWebRequest(string url, string bodyJson, Dictionary<string, string> header, bool isGetContent) { var resp = GetResponse(url, bodyJson, header); var resultJson = string.Empty; Stream stream = File.Open("D://DownloadDocDemo.pdf", FileMode.OpenOrCreate); int packageSize = 1024 * 1024; byte[] buffer = new byte[packageSize]; using (stream) { using (Stream outputStream = resp.GetResponseStream()) { int readLength = 0; while ((readLength = outputStream.Read(buffer, 0, packageSize)) > 0) { stream.Write(buffer, 0, readLength); stream.Flush(); } outputStream.Close(); } stream.Close(); } }*/ #endregion #region è¿åæä»¶æµç»å端 private Stream PostDataViaHttpWebRequest(string url, string bodyJson, Dictionary<string, string> header, bool isGetContent) { var resp = GetResponse(url, bodyJson, header); return resp.GetResponseStream(); // ç´æ¥è¿åååºæµ } #endregion } #endregion } StandardInterface/MES.Service/service/QcIssueResult/QcIssueResultManager.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,516 @@ 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; 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 = "dingyzos0r1bizj7g6lr", AppSecret = "-HP4RvK2OUbqhG3iBUpd_TPe5MZRj8cfLc0b8Skt8rhC3I38kVLY9SS8P3kLWFcH", }; 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-BBA5632D-DC7C-4267-A3E2-757E2B7023BC", 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}"; } } /** * å¯å¨éé工使µå®ä¾ * @return string è¿åå¯å¨ç»æ */ public string GetProcessNo(GetQcIssueResultDetail getQcIssueResultDetail) { var db = SqlSugarHelper.GetInstance(); var mapping = db.Queryable<DingNameCode>() .Where(t => t.DingDingName == getQcIssueResultDetail.Fname) .Select(t => new DingNameCode { DingDingCode=t.DingDingCode, }) .ToList(); if (mapping.Any()) { string UserId = mapping.FirstOrDefault().DingDingCode; // ä½¿ç¨ 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-K2AD4O5B", Value = getQcIssueResultDetail.ItemName, }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues2 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextField_DYFD1EESLVC0", Value = getQcIssueResultDetail.ItemModel, }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues3 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextField_1AVN2BNVY1OG0", Value = getQcIssueResultDetail.FbatchQty, }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues4 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextField_1DKEMESOOGSG0", 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"), }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues6 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextField_WBNBWGFHR000", Value = getQcIssueResultDetail.CgOrder, }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues7 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextareaField_1ZP3BDPMYY800", 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, }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues9 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "DDSelectField_1AK82Q8A2NB40", Value = "éè´§", }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues10 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextareaField_1LM82CPPR35S0", Value = "æéå 容", }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues11 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextareaField_AK4JLDDNS2O0", Value = "è®©æ¥æ¥æ¶å 容", }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues12 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextareaField_K69R6770WLS0", Value = "éè´§å¤æ³¨", }; AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues formComponentValues13 = new AlibabaCloud.SDK.Dingtalkworkflow_1_0.Models.StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues { Name = "TextareaField_194UFGLMI02O0", 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-BBA5632D-DC7C-4267-A3E2-757E2B7023BC", 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 }, 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) { var QcIssueResults = GetQcIssueResults(ReleaseNo, ProcessNo); return UseTransaction(db => { return SaveOrUpdateData(db, QcIssueResults) ? 1 : 0; }) > 0; } public QcIssueResults GetQcIssueResults(string ReleaseNo, string ProcessNo) { var QcIssueResults = new QcIssueResults { ProcessNo = ProcessNo, ReleaseNo = ReleaseNo, QcStatu = "" }; return QcIssueResults; } /** * æ ¹æ®æµç¨å·æ´æ°è¡¨çè®°å½ */ 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") }; } public QcIssueResults GetMesQcIssueResults(ErpQcIssueResult erpQcIssueResult) { var mesQcIssueResults = new QcIssueResults { ProcessNo = erpQcIssueResult.ProcessNo, FReview = erpQcIssueResult.FReview, QcStatu = erpQcIssueResult.QcStatus }; return mesQcIssueResults; } /** * æå ¥åæ´æ°æ°æ®åºè¡¨ */ private bool SaveOrUpdateData(SqlSugarScope db, QcIssueResults qcIssueResults) { // æ¥è¯¢ QcIssueResults è¡¨ä¸æ¯å¦åå¨å¹é çè®°å½ var mapping = db.Queryable<QcIssueResults>() .Where(t => t.ProcessNo == qcIssueResults.ProcessNo) .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, FReview = qcIssueResults.FReview }) .Where(t => t.ProcessNo == qcIssueResults.ProcessNo) // æ¾å¼æå®æ´æ°æ¡ä»¶ .ExecuteCommand(); // æ¥è¯¢ UpdateMesQaItems è¡¨ä¸æ¯å¦åå¨å¹é çè®°å½ var existingRecord = db.Queryable<UpdateMesQaItems>() .Where(it => it.ReleaseNo == ReleaseNo) .First(); // ä½¿ç¨ First è·åç¬¬ä¸æ¡è®°å½ Debug.WriteLine($"æ¥è¯¢å°ç mapping: {JsonConvert.SerializeObject(existingRecord)}"); if (existingRecord != null) { string result = null; bool returnValue = false; try { string connectionString = "User Id=yc_dev;Password=ycdev;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.100)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)))"; using (OracleConnection connection = new OracleConnection(connectionString)) { using (OracleCommand command = new OracleCommand("PRC_MES_IQC_CG_REVOCK", connection)) { command.CommandType = CommandType.StoredProcedure; // æ·»å è¾å ¥åæ° command.Parameters.Add("pi_no", OracleDbType.Varchar2).Value = existingRecord.ReleaseNo; // æ¿æ¢ä¸ºå®é å¼ command.Parameters.Add("pi_user", OracleDbType.Varchar2).Value = "PL017"; // æ¿æ¢ä¸ºå®é å¼ // æ·»å è¾åºåæ° OracleParameter poResult = new OracleParameter("po_result", OracleDbType.Int32, ParameterDirection.Output); OracleParameter poMsg = new OracleParameter("po_msg", OracleDbType.Varchar2, 4000, ParameterDirection.Output); command.Parameters.Add(poResult); command.Parameters.Add(poMsg); // æå¼è¿æ¥å¹¶æ§è¡å½ä»¤ connection.Open(); command.ExecuteNonQuery(); // å¤çè¿åå¼ if (poResult.Value != null && poResult.Value.ToString() == "0") { returnValue = true; } else { // è¾åºéè¯¯ä¿¡æ¯ string errorMsg = poMsg.Value != null ? poMsg.Value.ToString() : "Unknown error occurred"; Console.WriteLine("Error: " + errorMsg); } } } return returnValue; } 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, FReview = qcIssueResults.FReview }) .Where(t => t.ProcessNo == qcIssueResults.ProcessNo) // æ¾å¼æå®æ´æ°æ¡ä»¶ .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.FReview; if (existingRecord.FngHandle == "éè´§") { existingRecord.FMRMODE = "éæè¡¥æ"; } else { existingRecord.FMRMODE = null; } // æ§è¡æ´æ°æä½ updateResult = db.Updateable(existingRecord).ExecuteCommand(); return updateResult > 0; // å¦ææ´æ°æåï¼è¿å true } else { throw new Exception("æªæ¾å°éè¦æ´æ°çè®°å½"); } } } else { // 妿 mapping ä¸ºç©ºï¼æå ¥æ°è®°å½å° QcIssueResults 表 var orUpdate = base.Insert(qcIssueResults); if (orUpdate) return true; throw new NotImplementedException("æå ¥ææ´æ°å¤±è´¥"); } } } StandardInterface/MESApplication/Controllers/PLM/PLMController.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,125 @@ using ConsoleApp1; using MES.Service.service.PLM; using MES.Service.util; using Microsoft.AspNetCore.Mvc; using System.Dynamic; using System.IO; namespace MESApplication.Controllers.PLM; [ApiController] [Route("api/PLM")] public class PLMController : ControllerBase { private readonly PLMManager m = new(); private readonly WarehouseDownloadDoc wdd = new(); //RetrieveDrawings è°åå¾çº¸ [HttpPost("RetrieveDrawings")] public ResponseResult RetrieveDrawings(string ItemNo) { try { dynamic resultInfos = new ExpandoObject(); resultInfos = m.RetrieveDrawings(ItemNo); return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } //RetrieveImageFile è°åä¸ä¼ å°æå¡å¨çæææä»¶ [HttpGet("GetImageNames")] public IActionResult GetImageNames(string releaseNo) { // æ¼æ¥æ¬å°æä»¶ç³»ç»è·¯å¾ string basePath = @"D:\MES_FTP\IQC\"; // æå¡å¨Dçä¸çåºç¡è·¯å¾ string folderPath = Path.Combine(basePath, releaseNo); // å¨ææ¼æ¥åå·å¯¹åºçæä»¶å¤¹è·¯å¾ // æ£æ¥æä»¶å¤¹æ¯å¦åå¨ if (!Directory.Exists(folderPath)) { return NotFound($"æä»¶å¤¹ {folderPath} ä¸åå¨ãè¯·æ£æ¥è·¯å¾æ¯å¦æ£ç¡®ã"); } // è·åæä»¶å¤¹ä¸çææå¾çæä»¶åç§° string[] imageExtensions = { ".jpg", ".jpeg", ".png", ".gif", ".bmp" }; // è·åæä»¶ç宿´è·¯å¾ï¼å¹¶è¿åä¸ä¸ªå 嫿件åå宿´è·¯å¾ç对象 var imageFiles = Directory.GetFiles(folderPath) .Where(file => imageExtensions.Any(ext => file.ToLower().EndsWith(ext))) .Select(file => new { FileName = Path.GetFileName(file), // æä»¶å FilePath = file, FileBasePath = ConvertFileToBase64(file) // æä»¶ç Base64 æ°æ® // æä»¶ç宿´è·¯å¾ }); return Ok(new { success = true, data = imageFiles }); } private string ConvertFileToBase64(string filePath) { byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); return Convert.ToBase64String(fileBytes); } [HttpPost("DeleteImageFile")] public IActionResult DeleteImageFile([FromQuery] string filePath) { // æ£æ¥æä»¶è·¯å¾æ¯å¦ä¸ºç©º if (string.IsNullOrWhiteSpace(filePath)) { return BadRequest("æä»¶è·¯å¾ä¸è½ä¸ºç©º"); } // ç¡®ä¿è·¯å¾æ¯ç»å¯¹è·¯å¾ï¼å¯ä»¥æ ¹æ®éè¦è°æ´ï¼ filePath = Path.GetFullPath(filePath); // æ£æ¥æä»¶æ¯å¦åå¨ if (!System.IO.File.Exists(filePath)) { return NotFound("æä»¶ä¸åå¨"); } try { // å 餿件 System.IO.File.Delete(filePath); return Ok("æä»¶å 餿å"); } catch (System.Exception ex) { // æè·å¼å¸¸å¹¶è¿åéè¯¯ä¿¡æ¯ return StatusCode(500, $"å 餿件æ¶åçé误: {ex.Message}"); } } //RetrieveDrawings è°åå¾çº¸ [HttpPost("OpenDrawings")] public IActionResult OpenDrawings(string fileId,string fName) { try { var resultInfos = wdd.SendRequest("Download", fileId); return File(resultInfos, "application/octet-stream", fName); } catch (Exception ex) { return StatusCode(500, new ResponseResult { status = 1, message = ex.Message, data = null }); } } } StandardInterface/MESApplication/Controllers/QcIssueResult/QcIssueResultController.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,135 @@ using MES.Service.Dto.webApi; using MES.Service.Dto.webApi.QcIssueResult; using MES.Service.Modes; using MES.Service.Modes.QcIssueResult; //using MES.Service.Modes.SentLaboratory; using MES.Service.service; using MES.Service.service.QcIssueResult; using MES.Service.util; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Diagnostics; using System.Dynamic; using System.Net; using System.Text; using System.Text.Json.Nodes; using System.Web; namespace MESApplication.Controllers.QcIssueResult; [ApiController] [Route("api/[controller]")] public class QcIssueResultController : ControllerBase { private readonly MessageCenterManager _manager = new(); private readonly QcIssueResultManager m = new(); private readonly string METHOD = "POST"; private readonly string TableName = "MES_QCISSUE_RESULT"; private readonly string URL = "http://localhost:10054/api/QcIssueResult/"; [HttpPost("GetProcessNo")] public IActionResult StartDingtalkProcess([FromBody] GetQcIssueResultDetail getQcIssueResultDetail) { try { // æ°å¢URLè§£ç å¤çé»è¾ DecodeUrlEncodedProperties(getQcIssueResultDetail); // è°ç¨ QcIssueResultManager ä¸ç GetProcessNo æ¹æ³æ¥å¯å¨éé工使µå®ä¾ string result = m.GetProcessNo(getQcIssueResultDetail); string getLaboratoryDetailsJson = JsonConvert.SerializeObject(getQcIssueResultDetail, Formatting.Indented); Debug.WriteLine("getQcIssueResultDetail: " + getLaboratoryDetailsJson); string jsonPart = result.Substring(result.IndexOf("{")); JObject jsonObject = JObject.Parse(jsonPart); // æåinstanceIdçå¼ string instanceId = jsonObject["InstanceId"].ToString(); dynamic resultInfos = new ExpandoObject(); string ProcessNo = instanceId; var save = m.SaveProcessNo(getQcIssueResultDetail.ReleaseNo, instanceId); resultInfos.tbBillList = save; return Ok(result); } catch (Exception ex) { // æè·å¼å¸¸å¹¶è¿åéè¯¯ä¿¡æ¯ return StatusCode(500, $"å¯å¨éé工使µå®ä¾å¤±è´¥: {ex.Message}"); } } // æ°å¢è§£ç æ¹æ³ private void DecodeUrlEncodedProperties(object obj) { if (obj == null) return; var properties = obj.GetType().GetProperties(); foreach (var prop in properties) { // åªå¤çå符串类åç屿§ if (prop.PropertyType == typeof(string) && prop.CanWrite) { var value = prop.GetValue(obj) as string; if (!string.IsNullOrEmpty(value)) { // 使ç¨UTF8ç¼ç è¿è¡è§£ç var decodedValue = HttpUtility.UrlDecode(value, Encoding.UTF8); prop.SetValue(obj, decodedValue); } } } } [HttpPost("Save")] public ResponseResult Save(ErpQcIssueResult erpQcIssueResult) { var entity = new MessageCenter(); entity.TableName = TableName; entity.Url = URL + "Save"; entity.Method = METHOD; entity.Data = JsonConvert.SerializeObject(erpQcIssueResult); entity.Status = 1; entity.CreateBy = "PL017"; try { dynamic resultInfos = new ExpandoObject(); var save = m.Save(erpQcIssueResult); //resultInfos.tbBillList = save; //entity.Result = 0; //if (save) entity.Result = 1; //entity.DealWith = 1; //_manager.save(entity); return new ResponseResult { status = 0, message = "OK", data = save }; } catch (Exception ex) { entity.Result = 0; entity.DealWith = 0; entity.ResultData = ex.Message; _manager.save(entity); return ResponseResult.ResponseError(ex); } } }