DBScript/01_DDL/01_DDL_TABLE_WGQ.sql
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,43 @@ use WGQ_WB19011_CORE go /*==============================================================*/ /* Table: Wms_outInStockRecord_V2_Mes */ /* Description: åºå ¥åºè®°å½(为æ¨éMES) */ /* Author:shaocx */ /* CreateTime:2025-09-17 */ /*==============================================================*/ IF NOT EXISTS( SELECT 1 FROM SYSOBJECTS WHERE ID = OBJECT_ID('Wms_outInStockRecord_V2_Mes') AND TYPE = 'U') create table Wms_outInStockRecord_V2_Mes( ID int IDENTITY(1,1) NOT NULL, -- ä¸»é® OutInFlagName VARCHAR(10) ,--- åºå ¥åºç±»å 1 å ¥åº 2 åºåº ListNo NVARCHAR(128) NULL , -- åºå ¥åå· Code NVARCHAR(128) NULL , -- åæå¯ä¸ç¼ç Name NVARCHAR(128) NULL , -- ç©æåç§° SerialNo NVARCHAR(128) NULL , -- åæ®µå· IssueProjectNo NVARCHAR(128) NULL , -- 忾工ç¨å· PlaceCode VARCHAR(100) NULL , -- åºä½ç¼ç OccurrenceTime datetime NULL , -- åçæ¶é´ IsSendToMes int NULL , -- æ¨éç¶æ IsSendToMesStr VARCHAR(100) NULL , -- æ¨éç¶æ SendToMesCount int NULL , -- æ¨ç»MESæ¬¡æ° SendToMesTime datetime null, -- æ¨ç»MESæ¶é´ MesRet NVARCHAR(128) NULL , -- MESè¿åç»æ Remark NVARCHAR(128) NULL , -- 夿³¨ Creator varchar(128) null,-- å建人 CreateTime datetime null, -- å建æ¶é´ LastModifier varchar(128) null,-- ä¿®æ¹äºº LastModifyTime datetime null -- ä¿®æ¹æ¶é´ constraint PK_Wms_outInStockRecord_V2_Mes primary key (ID) ) GO DBScript/01_DDL/02_DDL_TABLE_Edit_WGQ.sql
DBScript/01_DDL/03_DDL_VIEW_WGQ.sql
DBScript/01_DDL/04_DDL_INDEX_WGQ.sql
DBScript/02_DML/01_InitData.sql
DEmon/iWareCc/Service1.cs
@@ -413,6 +413,8 @@ //ReSendThread.Name = "åWIPéæ°æ¨éæ¥æ"; //StartThread(ReSendThread); //å¼å¯æ¨éç»MESçåºå ¥åºå®æçº¿ç¨ ãEditby shaocx,2025-09-17ã new Thread(mesDataTranfficForRealMes.Handler).Start(); } DEmon/iWareCc/SystemInteraction/HTTPService.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,493 @@ using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Net; using System.Net.Http; using System.Text; namespace iWareCc { public class HTTPService { private string BaseURI = ""; public HTTPService(string baseURI) { this.BaseURI = baseURI; } #region GETè°ç¨webapiå ¬å ±æ¹æ³ /// <summary> /// éè¿GETæ¹æ³è°ç¨HTTPæå¡ /// </summary> /// <typeparam name="T">å ¥åç±»å</typeparam> /// <param name="url">æå¡å°å</param> /// <param name="requestId">å起请æ±çè¡ä¸ºæ è¯</param> /// <param name="timeout">è¶ æ¶æ¶é´ï¼åä½ï¼ç§ï¼é»è®¤ä¸º30ç§</param> /// <returns></returns> public T getContent<T>(string url, Guid requestId, int timeout = 30) { try { var client = new HttpClient(); client.BaseAddress = new Uri(this.BaseURI); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); client.Timeout = new TimeSpan(0, 0, timeout); using (HttpResponseMessage response = client.GetAsync(url).Result) { if (response.IsSuccessStatusCode) { var str_result = response.Content.ReadAsStringAsync().Result; T result = JsonConvert.DeserializeObject<T>(str_result); return result; } else if (response.StatusCode == HttpStatusCode.InternalServerError) { throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸"); } else { throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸{" + response.StatusCode + "}"); } } } catch { throw; } } /// <summary> /// éè¿GETæ¹æ³è°ç¨HTTPæå¡ /// </summary> /// <param name="url">æå¡å°å</param> /// <param name="requestId">å起请æ±çè¡ä¸ºæ è¯</param> /// <param name="timeout">è¶ æ¶æ¶é´ï¼åä½ï¼ç§ï¼é»è®¤ä¸º30ç§</param> /// <returns></returns> public string getContentForString(string url, Guid requestId, int timeout = 30) { try { var client = new HttpClient(); client.BaseAddress = new Uri(this.BaseURI); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); client.Timeout = new TimeSpan(0, 0, timeout); using (HttpResponseMessage response = client.GetAsync(url).Result) { if (response.IsSuccessStatusCode) { var result = response.Content.ReadAsStringAsync().Result; return result; } else if (response.StatusCode == HttpStatusCode.InternalServerError) { throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸,response:" + JsonConvert.SerializeObject(response)); } else { throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸{" + response.StatusCode + "},response:" + JsonConvert.SerializeObject(response)); } } } catch { throw; } } #endregion #region POSTè°ç¨webapiå ¬å ±æ¹æ³ /// <summary> /// éè¿POSTæ¹æ³è°ç¨HTTPæå¡ /// </summary> /// <typeparam name="T">å ¥åç±»å</typeparam> /// <typeparam name="T2">åºåç±»å</typeparam> /// <param name="url">æå¡å°å</param> /// <param name="parameter">å ¥å</param> /// <param name="requestId">å起请æ±çè¡ä¸ºæ è¯</param> /// <param name="timeout">è¶ æ¶æ¶é´ï¼åä½ï¼ç§ï¼é»è®¤ä¸º30ç§</param> /// <returns></returns> public T2 postContent<T, T2>(string url, T parameter, Guid requestId, int timeout = 30) { try { var client = new HttpClient(); client.BaseAddress = new Uri(this.BaseURI); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); client.DefaultRequestHeaders.Add("Authorization", "123456"); client.Timeout = new TimeSpan(0, 0, timeout); string str = JsonConvert.SerializeObject(parameter); var httpContent = new StringContent(str, Encoding.UTF8); httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; using (HttpResponseMessage response = client.PostAsync(url, httpContent).Result) { if (response.IsSuccessStatusCode) { var str_result = response.Content.ReadAsStringAsync().Result; T2 result = JsonConvert.DeserializeObject<T2>(str_result); return result; } else if (response.StatusCode == HttpStatusCode.InternalServerError) { throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸"); } else { throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸{" + response.StatusCode + "}"); } } } catch { throw; } } /// <summary> /// éè¿POSTæ¹æ³è°ç¨HTTPæå¡ /// </summary> /// <param name="url">æå¡å°å</param> /// <param name="parameter">å ¥å</param> /// <param name="requestId">å起请æ±çè¡ä¸ºæ è¯</param> /// <param name="timeout">è¶ æ¶æ¶é´ï¼åä½ï¼ç§ï¼é»è®¤ä¸º30ç§</param> /// <returns></returns> public string postContentForString(string url, IDictionary<string, string> parameter, Guid requestId, int timeout = 30) { try { var client = new HttpClient(); client.BaseAddress = new Uri(this.BaseURI); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); client.Timeout = new TimeSpan(0, 0, timeout); string str = JsonConvert.SerializeObject(parameter); var httpContent = new StringContent(str, Encoding.UTF8); httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; using (HttpResponseMessage response = client.PostAsync(url, httpContent).Result) { if (response.IsSuccessStatusCode) { var result = response.Content.ReadAsStringAsync().Result; return result; } else if (response.StatusCode == HttpStatusCode.InternalServerError) { return response.StatusCode.ToString(); // throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸"); } else { return response.StatusCode.ToString(); // throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸{" + response.StatusCode + "}"); } } } catch { throw; } } /// <summary> /// éè¿POSTæ¹æ³è°ç¨HTTPæå¡ /// </summary> /// <param name="url">æå¡å°å</param> /// <param name="parameter">å ¥åå符串</param> /// <param name="requestId">å起请æ±çè¡ä¸ºæ è¯</param> /// <param name="timeout">è¶ æ¶æ¶é´ï¼åä½ï¼ç§ï¼é»è®¤ä¸º30ç§</param> /// <returns></returns> public string postContentForString(string url, string parameter, Guid requestId, int timeout = 30) { try { var client = new HttpClient(); client.BaseAddress = new Uri(this.BaseURI); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); client.Timeout = new TimeSpan(0, 0, timeout); var ee = new { name = parameter }; if (parameter=="") { parameter = ee.ToString(); } var httpContent = new StringContent(parameter, Encoding.UTF8); httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; using (HttpResponseMessage response = client.PostAsync(url, httpContent).Result) { if (response.IsSuccessStatusCode) { var result = response.Content.ReadAsStringAsync().Result; return result; } else if (response.StatusCode == HttpStatusCode.InternalServerError) { return response.StatusCode.ToString(); // throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸"); } else { return response.StatusCode.ToString(); // throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸{" + response.StatusCode + "}"); } } } catch (Exception ex) { throw; } } /// <summary> /// éè¿POSTæ¹æ³è°ç¨HTTPæå¡(AGVä¸ç¨) /// </summary> /// <param name="url">æå¡å°å</param> /// <param name="parameter">å ¥åå符串</param> /// <param name="requestId">å起请æ±çè¡ä¸ºæ è¯</param> /// <param name="timeout">è¶ æ¶æ¶é´ï¼åä½ï¼ç§ï¼é»è®¤ä¸º30ç§</param> /// <returns></returns> public string postContentForStringForAgv(string url, string parameter, Guid requestId, int timeout = 30) { try { var client = new HttpClient(); client.BaseAddress = new Uri(this.BaseURI); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); client.Timeout = new TimeSpan(0, 0, timeout); var ee = new { name = parameter }; if (parameter == "") { parameter = ee.ToString(); } var httpContent = new StringContent(parameter, Encoding.UTF8); httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; using (HttpResponseMessage response = client.PostAsync(url, httpContent).Result) { var result = response.Content.ReadAsStringAsync().Result; return result; } } catch (Exception ex) { throw; } } /// <summary> /// éè¿POSTæ¹æ³è°ç¨HTTPæå¡ /// </summary> /// <param name="url">æå¡å°å</param> /// <param name="parameter">å ¥åå符串</param> /// <param name="requestId">å起请æ±çè¡ä¸ºæ è¯</param> /// <param name="timeout">è¶ æ¶æ¶é´ï¼åä½ï¼ç§ï¼é»è®¤ä¸º30ç§</param> /// <returns></returns> public string postContentForStringWithToken(string url, string parameter, Guid requestId, string token, int timeout = 30) { try { var client = new HttpClient(); client.BaseAddress = new Uri(this.BaseURI); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); client.DefaultRequestHeaders.Add("Authorization", token.ToString()); client.Timeout = new TimeSpan(0, 0, timeout); var httpContent = new StringContent(parameter, Encoding.UTF8); httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; using (HttpResponseMessage response = client.PostAsync(url, httpContent).Result) { if (response.IsSuccessStatusCode) { var result = response.Content.ReadAsStringAsync().Result; return result; } else if (response.StatusCode == HttpStatusCode.InternalServerError) { throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸"); } else { throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸{" + response.StatusCode + "}"); } } } catch { throw; } } #endregion #region PUTè°ç¨webapiå ¬å ±æ¹æ³ /// <summary> /// éè¿PUTæ¹æ³è°ç¨HTTPæå¡ /// </summary> /// <typeparam name="T">å ¥åç±»å</typeparam> /// <typeparam name="T2">åºåç±»å</typeparam> /// <param name="url">æå¡å°å</param> /// <param name="parameter">å ¥å</param> /// <param name="requestId">å起请æ±çè¡ä¸ºæ è¯</param> /// <param name="timeout">è¶ æ¶æ¶é´ï¼åä½ï¼ç§ï¼é»è®¤ä¸º30ç§</param> /// <returns></returns> public T2 putContent<T, T2>(string url, T parameter, Guid requestId, int timeout = 30) { try { var client = new HttpClient(); client.BaseAddress = new Uri(this.BaseURI); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); client.Timeout = new TimeSpan(0, 0, timeout); string str = JsonConvert.SerializeObject(parameter); var httpContent = new StringContent(str, Encoding.UTF8); httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; using (HttpResponseMessage response = client.PutAsync(url, httpContent).Result) { if (response.IsSuccessStatusCode) { var str_result = response.Content.ReadAsStringAsync().Result; T2 result = JsonConvert.DeserializeObject<T2>(str_result); return result; } else if (response.StatusCode == HttpStatusCode.InternalServerError) { throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸"); } else { throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸{" + response.StatusCode + "}"); } } } catch { throw; } } /// <summary> /// éè¿PUTæ¹æ³è°ç¨HTTPæå¡ /// </summary> /// <param name="url">æå¡å°å</param> /// <param name="parameter">å ¥å</param> /// <param name="requestId">å起请æ±çè¡ä¸ºæ è¯</param> /// <param name="timeout">è¶ æ¶æ¶é´ï¼åä½ï¼ç§ï¼é»è®¤ä¸º30ç§</param> /// <returns></returns> public string putContentForString(string url, IDictionary<string, string> parameter, Guid requestId, int timeout = 30) { try { var client = new HttpClient(); client.BaseAddress = new Uri(this.BaseURI); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); client.Timeout = new TimeSpan(0, 0, timeout); string str = JsonConvert.SerializeObject(parameter); var httpContent = new StringContent(str, Encoding.UTF8); httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; using (HttpResponseMessage response = client.PutAsync(url, httpContent).Result) { if (response.IsSuccessStatusCode) { var result = response.Content.ReadAsStringAsync().Result; return result; } else if (response.StatusCode == HttpStatusCode.InternalServerError) { throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸"); } else { throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸{" + response.StatusCode + "}"); } } } catch { throw; } } /// <summary> /// éè¿POSTæ¹æ³è°ç¨HTTPæå¡ /// </summary> /// <param name="url">æå¡å°å</param> /// <param name="parameter">å ¥åå符串</param> /// <param name="requestId">å起请æ±çè¡ä¸ºæ è¯</param> /// <param name="timeout">è¶ æ¶æ¶é´ï¼åä½ï¼ç§ï¼é»è®¤ä¸º30ç§</param> /// <returns></returns> public string putContentForString(string url, string parameter, Guid requestId, int timeout = 30) { try { var client = new HttpClient(); client.BaseAddress = new Uri(this.BaseURI); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); client.Timeout = new TimeSpan(0, 0, timeout); var httpContent = new StringContent(parameter, Encoding.UTF8); httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; using (HttpResponseMessage response = client.PutAsync(url, httpContent).Result) { if (response.IsSuccessStatusCode) { var result = response.Content.ReadAsStringAsync().Result; return result; } else if (response.StatusCode == HttpStatusCode.InternalServerError) { throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸"); } else { throw new Exception("{" + this.BaseURI + "}被è°ç¨çHTTPæå¡æ¥å£{" + url + "}å é¨åçå¼å¸¸{" + response.StatusCode + "}"); } } } catch { throw; } } #endregion } } DEmon/iWareCc/SystemInteraction/PushMesHandler.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,112 @@ using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; namespace iWareCc { /// <summary> /// MESæ¨éæ¥å£ /// </summary> public class PushMesHandler { public static string mes_api_url = "";// ConfigHelper.GetConfigString("MesUrl");//ä¿®æ¹ä¸ºé ç½®æä»¶ ãEditBy shaocx,2022-01-27ã static HTTPService mes_api = new HTTPService(mes_api_url);//mesåºå°å /// <summary> /// ç»MESæ¨éå ¥åºä¿¡æ¯ /// </summary> /// <param name="pushData"></param> /// <returns></returns> public static ApiResponse<string> Mes_InStockSend(List<InboundStockInfoToMes> pushData) { ApiResponse<string> res = null; var funName = "Mes_InStockSend"; try { MesRequest<List<InboundStockInfoToMes>> mesRequest = new MesRequest<List<InboundStockInfoToMes>>(); mesRequest.Datas = pushData; mesRequest.TableName = "T_WMS_Inbound_Record"; mesRequest.PrimaryKeys = "identifier"; string paprm = JsonConvert.SerializeObject(mesRequest); //Log4NetHelper.WriteInfoLog(_logType, $"{funName},åå¤åæ°:{paprm}"); Guid guid = System.Guid.NewGuid(); //模æ if (1 == 2) {//模æç¯å¢ res = new ApiResponse<string>(); res.Code = 500; res.Success = false; res.Message = "ç³»ç»æ¨¡æå®æ"; } else { var resStr = mes_api.postContentForString("", paprm, guid); //Log4NetHelper.WriteInfoLog(_logType, $"{funName},ç»æè¿å:{resStr}"); res = JsonConvert.DeserializeObject<ApiResponse<string>>(resStr); } //Log4NetHelper.WriteInfoLog(_logType, $"{funName},åæ°:{paprm},è¿å:{JsonConvert.SerializeObject(res)}"); } catch (Exception ex) { //Log4NetHelper.WriteErrorLog(_logType, $"{funName},å¼å¸¸:" + ex.Message, ex); res.Code = 500; res.Success = false; res.Message = "wmsåéå¼å¸¸:" + ex.Message; } return res; } ///// <summary> ///// ç»MESæ¨éåºåºä¿¡æ¯ ///// </summary> ///// <param name="pushData"></param> ///// <returns></returns> //public static ApiResponse Mes_OutStockSend(List<InboundStockInfoToMes> pushData, LogType _logType) //{ // ApiResponse<string> res = null; // var funName = "Mes_OutStockSend"; // try // { // MesRequest<List<InboundStockInfoToMes>> mesRequest = new MesRequest<List<InboundStockInfoToMes>>(); // mesRequest.Datas = pushData; // mesRequest.TableName = "T_WMS_Outbound_Record"; // mesRequest.PrimaryKeys = "identifier"; // string paprm = JsonConvert.SerializeObject(mesRequest); // //Log4NetHelper.WriteInfoLog(_logType, $"{funName},åå¤åæ°:{paprm}"); // Guid guid = System.Guid.NewGuid(); // //模æ // if (Form1.isvirtual) // {//模æç¯å¢ // res = new ApiResponse<string>(); // res.ErrorCode = 0; // res.ErrorMsg = "ç³»ç»æ¨¡æå®æ"; // } // else // { // var resStr = mes_api.postContentForString("", paprm, guid); // //Log4NetHelper.WriteInfoLog(_logType, $"{funName},ç»æè¿å:{resStr}"); // res = JsonConvert.DeserializeObject<ApiResponse<string>>(resStr); // } // //Log4NetHelper.WriteInfoLog(_logType, $"{funName},åæ°:{paprm},è¿å:{JsonConvert.SerializeObject(res)}"); // } // catch (Exception ex) // { // //Log4NetHelper.WriteErrorLog(_logType, $"{funName},å¼å¸¸:" + ex.Message, ex); // res.ErrorCode = 4; // res.ErrorMsg = "wmsåéå¼å¸¸:" + ex.Message; // } // return res; //} } } DEmon/iWareCc/SystemInteraction/dto/ApiResponse.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,35 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace iWareCc { /// <summary> /// éç¨æ³åæ¥å£ååºæ¨¡å /// </summary> /// <typeparam name="T">Data åæ®µçç±»åï¼å¯ä»¥æ¯ä»»æç±»åï¼å¦ stringãintãèªå®ä¹ç±»ç</typeparam> public class ApiResponse<T> { /// <summary> /// ç¶æç ï¼ä¾å¦ 200 表示æå /// </summary> public int Code { get; set; } /// <summary> /// æ¯å¦æåï¼true 表示æåï¼false 表示失败 /// </summary> public bool Success { get; set; } /// <summary> /// è¿åæ¶æ¯ï¼ä¾å¦ï¼"æå" æéè¯¯ä¿¡æ¯ /// </summary> public string Message { get; set; } /// <summary> /// è¿åçæ°æ®å 容ï¼ç±»å为æ³å T /// </summary> public T Data { get; set; } } } DEmon/iWareCc/SystemInteraction/dto/InboundStockInfoToMes.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,57 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace iWareCc { /// <summary> /// æ¨éå ¥åºæ¥å£ - 请æ±åæ°ä¸çåä¸ªå ¥åºè®°å½é¡¹ /// </summary> public class InboundStockInfoToMes { /// <summary> /// åºå ¥åºæ è®° /// </summary> public string BusinessFlag { get; set; } /// <summary> /// åæ®µå· /// </summary> public string SerialNo { get; set; } /// <summary> /// è¹å·/忾工ç¨å· /// </summary> public string IssueProjectNo { get; set; } /// <summary> /// åºä½å· /// </summary> public string PlaceCode { get; set; } /// <summary> /// ç©æç¼ç /// </summary> public string Code { get; set; } /// <summary> /// åçæ¶é´ /// </summary> public string OccurrenceTime { get; set; } /// <summary> /// æ¶é´æ³(åæ°èªå¨åå§å) /// </summary> public string Timestamp { get; set; } = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } } DEmon/iWareCc/SystemInteraction/dto/MesRequest.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace iWareCc { /// <summary> /// æ¨éä¿¡æ¯ /// </summary> public class MesRequest<T> { /// <summary> /// æ°æ® /// </summary> public T Datas { get; set; } /// <summary> /// ç³»ç»ç±»å /// </summary> public string SystemType { get; set; } = "ERP"; /// <summary> /// Secret /// </summary> public string Secret { get; set; } = "HJY^*HGYIIY"; /// <summary> /// 表å /// </summary> public string TableName { get; set; } /// <summary> /// ä¸»é® /// </summary> public string PrimaryKeys { get; set; } } } DEmon/iWareCc/SystemInteraction/mesDataTranfficForRealMes.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,96 @@ using iWareDataCore.ORM; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Threading; namespace iWareCc { /// <summary> /// MESåºå ¥åºæ°æ®ä¼ è¾(çæ£çMES) /// </summary> public class mesDataTranfficForRealMes { //public static LogType _logType = LogType.mesDataTranfficForRealMes; public static async void Handler() { while (true) { try { Thread.Sleep(5000); using (DbModelCore mod = new DbModelCore()) { List<Wms_outInStockRecord_V2_Mes> sendMesData = mod.Wms_outInStockRecord_V2_Mes.Where(x => x.IsSendToMes == 0).OrderBy(x => x.ID).ToList(); if (sendMesData.Count > 0) { //SystemWarningMsg.msg_mesDataTranfficForRealMes = $"{MyExtend.MsgTimeStr()},è¦æ¨é{sendMesData.Count()}æ¡!"; foreach (var itemTask in sendMesData) { try { ApiResponse<string> ret = null; //è·åä¿¡æ¯æç» List<InboundStockInfoToMes> pushData = new List<InboundStockInfoToMes>(); pushData.Add(new InboundStockInfoToMes() { BusinessFlag = itemTask.OutInFlagName, OccurrenceTimeâ = itemTask.CreateTime?.ToString("yyyy-MM-dd HH:mm:ss"), Code = itemTask.Code, PlaceCode = itemTask.PlaceCode, SerialNo = itemTask.SerialNo, IssueProjectNo = itemTask.IssueProjectNo, }); //SystemWarningMsg.msg_mesDataTranfficForRealMes = $"{MyExtend.MsgTimeStr()},å·²æ¨éç»æï¼è¿å:{JsonConvert.SerializeObject(ret)}"; if (ret.Success) { itemTask.IsSendToMes = 1;//æ¨éæå itemTask.IsSendToMesStr = "æå"; } else { itemTask.IsSendToMes = 0;//æ¨é失败 itemTask.IsSendToMesStr = "失败"; } itemTask.SendToMesTime = DateTime.Now; itemTask.MesRet = ret.Message; itemTask.SendToMesCount = (itemTask.SendToMesCount ?? 0) + 1; if (itemTask.IsSendToMes == 0 && itemTask.SendToMesCount > 100) { itemTask.IsSendToMes = 3;//è¡¨ç¤ºå¼ºå¶æ¨éæå itemTask.IsSendToMesStr = "å¼ºå¶æå"; } mod.SaveChanges(); } catch (Exception ex) { //SystemWarningMsg.msg_mesDataTranfficForRealMes = $"{MyExtend.MsgTimeStr()},æ¨éç»MESæ°æ®å¼å¸¸:" + JsonConvert.SerializeObject(ex); //Log4NetHelper.WriteErrorLog(_logType, //SystemWarningMsg.msg_mesDataTranfficForRealMes, ex); } } } else { //SystemWarningMsg.msg_mesDataTranfficForRealMes = $"{MyExtend.MsgTimeStr()},æ²¡ææ°æ®è¦æ¨éç»MES!"; } } } catch (Exception ex) { //SystemWarningMsg.msg_mesDataTranfficForRealMes = $"{MyExtend.MsgTimeStr()},æ°æ®è¦æ¨éç»MESåºç°å¼å¸¸:" + ex.Message; //Log4NetHelper.WriteErrorLog(_logType, //SystemWarningMsg.msg_mesDataTranfficForRealMes, ex); } } } } } DEmon/iWareCc/iWareCc.csproj
@@ -94,6 +94,7 @@ <Reference Include="System.Core" /> <Reference Include="System.Drawing" /> <Reference Include="System.Management" /> <Reference Include="System.Net.Http" /> <Reference Include="System.Runtime.Serialization" /> <Reference Include="System.ServiceModel" /> <Reference Include="System.Xml.Linq" /> @@ -195,6 +196,12 @@ <Compile Include="Srm\EnumType\ESrmAlarm1.cs" /> <Compile Include="Srm\Strategy\æ¨éå åæºåè¦ç¶æ.cs" /> <Compile Include="Srm\Strategy\æ¨éå åæºç¶æ.cs" /> <Compile Include="SystemInteraction\dto\ApiResponse.cs" /> <Compile Include="SystemInteraction\dto\InboundStockInfoToMes.cs" /> <Compile Include="SystemInteraction\dto\MesRequest.cs" /> <Compile Include="SystemInteraction\HTTPService.cs" /> <Compile Include="SystemInteraction\mesDataTranfficForRealMes.cs" /> <Compile Include="SystemInteraction\PushMesHandler.cs" /> <Compile Include="Task\Service\TaskService.cs" /> <Compile Include="Util\OPCHelper.cs" /> <Compile Include="Util\SocketClient.cs" /> DEmon/iWareDataCore/ORM/DbModelCore.cs
@@ -1,9 +1,6 @@ namespace iWareDataCore.ORM { using System; using System.Data.Entity; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; public partial class DbModelCore : DbContext { @@ -53,10 +50,30 @@ public virtual DbSet<WebOrderDetailView> WebOrderDetailView { get; set; } public virtual DbSet<MaterialPlaceView> MaterialPlaceView { get; set; } public virtual DbSet<BASEMaterialClass> BASEMaterialClass { get; set; } public virtual DbSet<Wms_outInStockRecord_V2_Mes> Wms_outInStockRecord_V2_Mes { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Wms_outInStockRecord_V2_Mes>() .Property(e => e.OutInFlagName) .IsUnicode(false); modelBuilder.Entity<Wms_outInStockRecord_V2_Mes>() .Property(e => e.PlaceCode) .IsUnicode(false); modelBuilder.Entity<Wms_outInStockRecord_V2_Mes>() .Property(e => e.IsSendToMesStr) .IsUnicode(false); modelBuilder.Entity<Wms_outInStockRecord_V2_Mes>() .Property(e => e.Creator) .IsUnicode(false); modelBuilder.Entity<Wms_outInStockRecord_V2_Mes>() .Property(e => e.LastModifier) .IsUnicode(false); modelBuilder.Entity<BASEInOutList>() .HasMany(e => e.BASEInOutListDetails) .WithRequired(e => e.BASEInOutList) DEmon/iWareDataCore/ORM/Wms_outInStockRecord_V2_Mes.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,61 @@ namespace iWareDataCore.ORM { using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Data.Entity.Spatial; public partial class Wms_outInStockRecord_V2_Mes { public int ID { get; set; } [StringLength(10)] public string OutInFlagName { get; set; } [StringLength(128)] public string ListNo { get; set; } [StringLength(128)] public string Code { get; set; } [StringLength(128)] public string Name { get; set; } [StringLength(128)] public string SerialNo { get; set; } [StringLength(128)] public string IssueProjectNo { get; set; } [StringLength(100)] public string PlaceCode { get; set; } public DateTime? OccurrenceTime { get; set; } public int? IsSendToMes { get; set; } [StringLength(100)] public string IsSendToMesStr { get; set; } public int? SendToMesCount { get; set; } public DateTime? SendToMesTime { get; set; } [StringLength(128)] public string MesRet { get; set; } [StringLength(128)] public string Remark { get; set; } [StringLength(128)] public string Creator { get; set; } public DateTime? CreateTime { get; set; } [StringLength(128)] public string LastModifier { get; set; } public DateTime? LastModifyTime { get; set; } } } DEmon/iWareDataCore/Test_ORM/Test_ORM.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,40 @@ //using System; //using System.ComponentModel.DataAnnotations.Schema; //using System.Data.Entity; //using System.Linq; //namespace iWareDataCore.Test_ORM //{ // public partial class Test_ORM : DbContext // { // public Test_ORM() // : base("name=Test_ORM") // { // } // public virtual DbSet<Wms_outInStockRecord_V2_Mes> Wms_outInStockRecord_V2_Mes { get; set; } // protected override void OnModelCreating(DbModelBuilder modelBuilder) // { // modelBuilder.Entity<Wms_outInStockRecord_V2_Mes>() // .Property(e => e.OutInFlagName) // .IsUnicode(false); // modelBuilder.Entity<Wms_outInStockRecord_V2_Mes>() // .Property(e => e.PlaceCode) // .IsUnicode(false); // modelBuilder.Entity<Wms_outInStockRecord_V2_Mes>() // .Property(e => e.IsSendToMesStr) // .IsUnicode(false); // modelBuilder.Entity<Wms_outInStockRecord_V2_Mes>() // .Property(e => e.Creator) // .IsUnicode(false); // modelBuilder.Entity<Wms_outInStockRecord_V2_Mes>() // .Property(e => e.LastModifier) // .IsUnicode(false); // } // } //} DEmon/iWareDataCore/iWareDataCore.csproj
@@ -257,6 +257,8 @@ <Compile Include="TASK\Service\MainTaskViewService.cs" /> <Compile Include="TASK\Service\PartTaskService.cs" /> <Compile Include="TASK\Service\PartTaskViewService.cs" /> <Compile Include="Test_ORM\Test_ORM.cs" /> <Compile Include="ORM\Wms_outInStockRecord_V2_Mes.cs" /> <Compile Include="WebDav\Entity\FileInfo.cs" /> <Compile Include="WebDav\Service\FileService.cs" /> </ItemGroup>