From c9c91ad3e3ac218d81c86809c93a35622b51a686 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周三, 17 9月 2025 16:05:05 +0800
Subject: [PATCH] 初步 增加 推送线程

---
 DEmon/iWareDataCore/Test_ORM/Test_ORM.cs                     |   40 ++
 DBScript/02_DML/01_InitData.sql                              |    0 
 DEmon/iWareCc/SystemInteraction/mesDataTranfficForRealMes.cs |   96 +++++
 DEmon/iWareDataCore/ORM/DbModelCore.cs                       |   25 +
 DEmon/iWareCc/Service1.cs                                    |   34 +
 DBScript/01_DDL/02_DDL_TABLE_Edit_WGQ.sql                    |    0 
 DBScript/01_DDL/04_DDL_INDEX_WGQ.sql                         |    0 
 DEmon/iWareCc/SystemInteraction/dto/ApiResponse.cs           |   35 +
 DEmon/iWareCc/SystemInteraction/HTTPService.cs               |  493 +++++++++++++++++++++++++++
 DEmon/iWareCc/iWareCc.csproj                                 |    7 
 DBScript/01_DDL/01_DDL_TABLE_WGQ.sql                         |   43 ++
 DEmon/iWareDataCore/iWareDataCore.csproj                     |    2 
 DBScript/01_DDL/03_DDL_VIEW_WGQ.sql                          |    0 
 DEmon/iWareCc/SystemInteraction/dto/MesRequest.cs            |   39 ++
 DEmon/iWareCc/SystemInteraction/dto/InboundStockInfoToMes.cs |   57 +++
 DEmon/iWareDataCore/ORM/Wms_outInStockRecord_V2_Mes.cs       |   61 +++
 DEmon/iWareCc/SystemInteraction/PushMesHandler.cs            |  112 ++++++
 17 files changed, 1,024 insertions(+), 20 deletions(-)

diff --git a/DBScript/01_DDL/01_DDL_TABLE_WGQ.sql b/DBScript/01_DDL/01_DDL_TABLE_WGQ.sql
new file mode 100644
index 0000000..cd418ff
--- /dev/null
+++ b/DBScript/01_DDL/01_DDL_TABLE_WGQ.sql
@@ -0,0 +1,43 @@
+use WGQ_WB19011_CORE
+go
+
+/*==============================================================*/
+/* Table: Wms_outInStockRecord_V2_Mes			                   */
+/* Description: 鍑哄叆搴撹褰�(涓烘帹閫丮ES)			    */
+/* 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
+
diff --git a/DBScript/01_DDL/02_DDL_TABLE_Edit_WGQ.sql b/DBScript/01_DDL/02_DDL_TABLE_Edit_WGQ.sql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/DBScript/01_DDL/02_DDL_TABLE_Edit_WGQ.sql
diff --git a/DBScript/01_DDL/03_DDL_VIEW_WGQ.sql b/DBScript/01_DDL/03_DDL_VIEW_WGQ.sql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/DBScript/01_DDL/03_DDL_VIEW_WGQ.sql
diff --git a/DBScript/01_DDL/04_DDL_INDEX_WGQ.sql b/DBScript/01_DDL/04_DDL_INDEX_WGQ.sql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/DBScript/01_DDL/04_DDL_INDEX_WGQ.sql
diff --git a/DBScript/02_DML/01_InitData.sql b/DBScript/02_DML/01_InitData.sql
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/DBScript/02_DML/01_InitData.sql
diff --git a/DEmon/iWareCc/Service1.cs b/DEmon/iWareCc/Service1.cs
index 819f893..c8a4b4c 100644
--- a/DEmon/iWareCc/Service1.cs
+++ b/DEmon/iWareCc/Service1.cs
@@ -413,6 +413,8 @@
             //ReSendThread.Name = "鍚慦IP閲嶆柊鎺ㄩ�佹姤鏂�";
             //StartThread(ReSendThread);
 
+            //寮�鍚帹閫佺粰MES鐨勫嚭鍏ュ簱瀹屾垚绾跨▼ 銆怑ditby shaocx,2025-09-17銆�
+            new Thread(mesDataTranfficForRealMes.Handler).Start();
 
         }
 
@@ -445,7 +447,7 @@
             //缁撴潫鐢熸垚鍏ュ簱涓讳换鍔$殑绾跨▼
             CloseThread(CreatMainTaskInThread);
 
-              //缁撴潫鐢熸垚鍑哄簱涓讳换鍔$殑绾跨▼
+            //缁撴潫鐢熸垚鍑哄簱涓讳换鍔$殑绾跨▼
             CloseThread(CreatMainTaskOutThread);
 
             //鍏抽棴鍒嗚В浠诲姟鐨勭嚎绋�
@@ -516,8 +518,8 @@
 
             var s = (StackerEntity)stacker;
             //LogTextHelper.WriteLine(Resources.LogDir, "鑾峰彇鍫嗗灈鏈簕0}鐘舵�佺嚎绋嬪凡寮�鍚�", s.Equipment.EquipName);
-            var items = new string[] 
-            {           
+            var items = new string[]
+            {
                 s.OpcReadItems.SrmNo,// 1Srm缂栧彿
                 s.OpcReadItems.Mode,// 2浠诲姟鍙� 
                 s.OpcReadItems.Alarm,// 3鍛婅
@@ -857,7 +859,7 @@
                     {
                         gateService.HandleMsgSCReceive(gateService.ReadFromDatagramPoolSCReceive());
                     }
-                    else 
+                    else
                     {
                         gateService.HandleMsgReceive(gateService.ReadFromDatagramPoolReceive());
                         gateService.HandleMsgAlarmReceive(gateService.ReadFromDatagramPoolAlarmReceive());
@@ -928,20 +930,20 @@
         /// </summary>
         private void CreateMainInTask()
         {
-               var c = (ConveyorEntity)CacheEntity.Conveyors.Find(x => x.Equipment.EquipName == "conveyor1");
-               var mainTaskContainer = new MainTaskContainer();
-               var 鐢熸垚鍏ュ簱涓讳换鍔� = new 鏍规嵁鎵爜鐢熸垚鍏ュ簱涓讳换鍔�(c, mainTaskContainer);
-               var 淇濆瓨鐢熸垚鐨勪换鍔� = new 淇濆瓨鐢熸垚鐨勫叆搴撲换鍔�(c, mainTaskContainer);
-               鐢熸垚鍏ュ簱涓讳换鍔�.NextHandler = 淇濆瓨鐢熸垚鐨勪换鍔�;
+            var c = (ConveyorEntity)CacheEntity.Conveyors.Find(x => x.Equipment.EquipName == "conveyor1");
+            var mainTaskContainer = new MainTaskContainer();
+            var 鐢熸垚鍏ュ簱涓讳换鍔� = new 鏍规嵁鎵爜鐢熸垚鍏ュ簱涓讳换鍔�(c, mainTaskContainer);
+            var 淇濆瓨鐢熸垚鐨勪换鍔� = new 淇濆瓨鐢熸垚鐨勫叆搴撲换鍔�(c, mainTaskContainer);
+            鐢熸垚鍏ュ簱涓讳换鍔�.NextHandler = 淇濆瓨鐢熸垚鐨勪换鍔�;
 
-                while (true)
+            while (true)
+            {
+                if (CacheEntity.IsAutoRun)
                 {
-                    if (CacheEntity.IsAutoRun)
-                    {
-                        鐢熸垚鍏ュ簱涓讳换鍔�.Handle();
-                    }
-                    Thread.Sleep(1000);
+                    鐢熸垚鍏ュ簱涓讳换鍔�.Handle();
                 }
+                Thread.Sleep(1000);
+            }
         }
         /// <summary>
         /// 鐢熸垚鍑哄簱涓讳换鍔�
@@ -1287,7 +1289,7 @@
                 {
                     try
                     {
-                       // string stackerName = Enum.GetName(typeof(EEquipmentCnName), EEquipmentCnName.stacker1);
+                        // string stackerName = Enum.GetName(typeof(EEquipmentCnName), EEquipmentCnName.stacker1);
                         var reports = dbModel.COUNTStackerReports.Where(x => x.isfinished == (int)EYesOrNo.鍚�).ToList();
                         var stacker = CacheEntity.Stackers.FirstOrDefault(x => x.Equipment.EquipName == "stacker1");
                         var unfinishedReport = reports.FirstOrDefault(x => x.name == stacker.Equipment.EquipName);
diff --git a/DEmon/iWareCc/SystemInteraction/HTTPService.cs b/DEmon/iWareCc/SystemInteraction/HTTPService.cs
new file mode 100644
index 0000000..b982817
--- /dev/null
+++ b/DEmon/iWareCc/SystemInteraction/HTTPService.cs
@@ -0,0 +1,493 @@
+锘縰sing 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
+    }
+}
diff --git a/DEmon/iWareCc/SystemInteraction/PushMesHandler.cs b/DEmon/iWareCc/SystemInteraction/PushMesHandler.cs
new file mode 100644
index 0000000..59a9d63
--- /dev/null
+++ b/DEmon/iWareCc/SystemInteraction/PushMesHandler.cs
@@ -0,0 +1,112 @@
+锘縰sing 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");//淇敼涓洪厤缃枃浠� 銆怑ditBy shaocx,2022-01-27銆�
+        static HTTPService mes_api = new HTTPService(mes_api_url);//mes鍩哄湴鍧�
+
+        /// <summary>
+        /// 缁橫ES鎺ㄩ�佸叆搴撲俊鎭�
+        /// </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>
+        ///// 缁橫ES鎺ㄩ�佸嚭搴撲俊鎭�
+        ///// </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;
+
+        //}
+
+
+    }
+}
diff --git a/DEmon/iWareCc/SystemInteraction/dto/ApiResponse.cs b/DEmon/iWareCc/SystemInteraction/dto/ApiResponse.cs
new file mode 100644
index 0000000..ab8224e
--- /dev/null
+++ b/DEmon/iWareCc/SystemInteraction/dto/ApiResponse.cs
@@ -0,0 +1,35 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace iWareCc
+{
+    /// <summary>
+    /// 閫氱敤娉涘瀷鎺ュ彛鍝嶅簲妯″瀷
+    /// </summary>
+    /// <typeparam name="T">Data 瀛楁鐨勭被鍨嬶紝鍙互鏄换鎰忕被鍨嬶紝濡� string銆乮nt銆佽嚜瀹氫箟绫荤瓑</typeparam>
+    public class ApiResponse<T>
+    {
+        /// <summary>
+        /// 鐘舵�佺爜锛屼緥濡� 200 琛ㄧず鎴愬姛
+        /// </summary>
+        public int Code { get; set; }
+
+        /// <summary>
+        /// 鏄惁鎴愬姛锛宼rue 琛ㄧず鎴愬姛锛宖alse 琛ㄧず澶辫触
+        /// </summary>
+        public bool Success { get; set; }
+
+        /// <summary>
+        /// 杩斿洖娑堟伅锛屼緥濡傦細"鎴愬姛" 鎴栭敊璇俊鎭�
+        /// </summary>
+        public string Message { get; set; }
+
+        /// <summary>
+        /// 杩斿洖鐨勬暟鎹唴瀹癸紝绫诲瀷涓烘硾鍨� T
+        /// </summary>
+        public T Data { get; set; }
+    }
+}
diff --git a/DEmon/iWareCc/SystemInteraction/dto/InboundStockInfoToMes.cs b/DEmon/iWareCc/SystemInteraction/dto/InboundStockInfoToMes.cs
new file mode 100644
index 0000000..8c99bcf
--- /dev/null
+++ b/DEmon/iWareCc/SystemInteraction/dto/InboundStockInfoToMes.cs
@@ -0,0 +1,57 @@
+锘縰sing 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");
+
+
+
+
+    }
+}
diff --git a/DEmon/iWareCc/SystemInteraction/dto/MesRequest.cs b/DEmon/iWareCc/SystemInteraction/dto/MesRequest.cs
new file mode 100644
index 0000000..50e025b
--- /dev/null
+++ b/DEmon/iWareCc/SystemInteraction/dto/MesRequest.cs
@@ -0,0 +1,39 @@
+锘縰sing 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; }
+    }
+}
diff --git a/DEmon/iWareCc/SystemInteraction/mesDataTranfficForRealMes.cs b/DEmon/iWareCc/SystemInteraction/mesDataTranfficForRealMes.cs
new file mode 100644
index 0000000..5435a1b
--- /dev/null
+++ b/DEmon/iWareCc/SystemInteraction/mesDataTranfficForRealMes.cs
@@ -0,0 +1,96 @@
+锘縰sing iWareDataCore.ORM;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+
+namespace iWareCc
+{
+    /// <summary>
+    /// MES鍑哄叆搴撴暟鎹紶杈�(鐪熸鐨凪ES)
+    /// </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);
+                }
+            }
+        }
+    }
+}
diff --git a/DEmon/iWareCc/iWareCc.csproj b/DEmon/iWareCc/iWareCc.csproj
index 0c2d13b..62393d7 100644
--- a/DEmon/iWareCc/iWareCc.csproj
+++ b/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" />
diff --git a/DEmon/iWareDataCore/ORM/DbModelCore.cs b/DEmon/iWareDataCore/ORM/DbModelCore.cs
index e5523ab..fae6e7b 100644
--- a/DEmon/iWareDataCore/ORM/DbModelCore.cs
+++ b/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)
diff --git a/DEmon/iWareDataCore/ORM/Wms_outInStockRecord_V2_Mes.cs b/DEmon/iWareDataCore/ORM/Wms_outInStockRecord_V2_Mes.cs
new file mode 100644
index 0000000..b7061bc
--- /dev/null
+++ b/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; }
+    }
+}
diff --git a/DEmon/iWareDataCore/Test_ORM/Test_ORM.cs b/DEmon/iWareDataCore/Test_ORM/Test_ORM.cs
new file mode 100644
index 0000000..01e1c12
--- /dev/null
+++ b/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);
+//        }
+//    }
+//}
diff --git a/DEmon/iWareDataCore/iWareDataCore.csproj b/DEmon/iWareDataCore/iWareDataCore.csproj
index d18b11a..a8e0b5b 100644
--- a/DEmon/iWareDataCore/iWareDataCore.csproj
+++ b/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>

--
Gitblit v1.9.3