From f782248da68c035aae12f902f29d828e9867abb0 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周一, 29 9月 2025 12:45:51 +0800
Subject: [PATCH] 222

---
 DEmon/iWareCommon/iWareCommon.csproj                               |    3 
 DEmon/iWareDataCore/TASK/EnumType/EIsSendToMes.cs                  |   16 +
 DEmon/iWareCc/App.config                                           |    5 
 DEmon/iWareLog/Report/Helper/InOutStorageDetailResultForMes.cs     |   53 +++++
 DEmon/iWareCc/Service1.cs                                          |    2 
 DEmon/iWareDataCore/BASE/Service/PlaceMaterialViewService.cs       |    3 
 DBScript/01_DDL/02_DDL_TABLE_Edit_WGQ.sql                          |    6 
 DEmon/iWareCc/iWareCc.csproj                                       |    2 
 DEmon/iWareLog/ORM/InOutStorageDetail.cs                           |   15 +
 DEmon/iWareCc/FinishStackerTask/Chain/保存出入库明细信息.cs                 |   37 ++-
 /dev/null                                                          |   96 ---------
 DEmon/iWareDataCore/iWareDataCore.csproj                           |    1 
 DEmon/iWareCommon/Utils/DataCache.cs                               |   45 ++++
 DEmon/iWareLog/Report/Service/InOutService.cs                      |   44 ++++
 DEmon/iWareCommon/Utils/ConfigHelper.cs                            |  106 ++++++++++
 DEmon/iWareLog/iWareLog.csproj                                     |    1 
 DEmon/iWareCc/SystemInteraction/mesDataTranfficForRealMesThread.cs |   92 +++++++++
 DEmon/WebWIPAPI/Controllers/MesIntegrController.cs                 |    5 
 DEmon/iWareCc/SystemInteraction/PushMesHandler.cs                  |   33 +--
 19 files changed, 424 insertions(+), 141 deletions(-)

diff --git a/DBScript/01_DDL/02_DDL_TABLE_Edit_WGQ.sql b/DBScript/01_DDL/02_DDL_TABLE_Edit_WGQ.sql
index e69de29..62e26a4 100644
--- a/DBScript/01_DDL/02_DDL_TABLE_Edit_WGQ.sql
+++ b/DBScript/01_DDL/02_DDL_TABLE_Edit_WGQ.sql
@@ -0,0 +1,6 @@
+alter table InOutStorageDetail
+add isSendToMes  int    NULL , -- 鏄惁鎺ㄧ粰MES  ( 1:寰呮帹閫�  2锛氭帹閫佹垚鍔� 3锛氭帹閫佸け璐� 4锛氬己鍒跺畬鎴�)
+   SendToMesCount  int    NULL , -- 鎺ㄧ粰MES娆℃暟
+   SendToMesTime datetime	null, -- 鎺ㄧ粰MES鏃堕棿
+   isSendToMesStr NVARCHAR(128)	null, -- 鏄惁鎺ㄧ粰MES 鏂囨湰
+   MesRet  NVARCHAR(128)    NULL  -- MES杩斿洖缁撴灉
\ No newline at end of file
diff --git a/DEmon/WebWIPAPI/Controllers/MesIntegrController.cs b/DEmon/WebWIPAPI/Controllers/MesIntegrController.cs
index 8f71d8e..6ee0b86 100644
--- a/DEmon/WebWIPAPI/Controllers/MesIntegrController.cs
+++ b/DEmon/WebWIPAPI/Controllers/MesIntegrController.cs
@@ -283,6 +283,11 @@
                     List<int> ids = new List<int>();
                     var materials = InputMaterialService.GetInstance().GetIds(codes);
                     List<InOutListDetailEntity> detail = new List<InOutListDetailEntity>();
+                    if (materials?.Count == 0)
+                    {
+                        msg = ("鐗╂枡鏄庣粏鏌ヨ涓虹┖锛�");
+                        return;
+                    }
                     for (int i = 0; i < materials.Count; i++)
                     {
                         if (typeName == "鍏ュ簱")
diff --git a/DEmon/iWareCc/App.config b/DEmon/iWareCc/App.config
index dd014a3..bf7ed4e 100644
--- a/DEmon/iWareCc/App.config
+++ b/DEmon/iWareCc/App.config
@@ -68,5 +68,8 @@
     <add name="DbModelLog" connectionString="data source=192.168.1.200;initial catalog=WGQ_WB19011_LOG;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
     <add name="DbModelCore" connectionString="data source=192.168.1.200;initial catalog=WGQ_WB19011_CORE;user id=sa;password=123abc.com;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
   </connectionStrings>
-  
+  <appSettings>
+    <!--MES鍦板潃 銆怑ditBy shaocx,2025-09-25銆�-->
+    <add key="MesUrl" value="http://169.24.7.88:9083/"/>
+  </appSettings>
 </configuration>
\ No newline at end of file
diff --git "a/DEmon/iWareCc/FinishStackerTask/Chain/\344\277\235\345\255\230\345\207\272\345\205\245\345\272\223\346\230\216\347\273\206\344\277\241\346\201\257.cs" "b/DEmon/iWareCc/FinishStackerTask/Chain/\344\277\235\345\255\230\345\207\272\345\205\245\345\272\223\346\230\216\347\273\206\344\277\241\346\201\257.cs"
index 197d674..a8cf4f1 100644
--- "a/DEmon/iWareCc/FinishStackerTask/Chain/\344\277\235\345\255\230\345\207\272\345\205\245\345\272\223\346\230\216\347\273\206\344\277\241\346\201\257.cs"
+++ "b/DEmon/iWareCc/FinishStackerTask/Chain/\344\277\235\345\255\230\345\207\272\345\205\245\345\272\223\346\230\216\347\273\206\344\277\241\346\201\257.cs"
@@ -15,7 +15,7 @@
 
 namespace iWareCc.FinishStackerTask.Chain
 {
-   public class 淇濆瓨鍑哄叆搴撴槑缁嗕俊鎭� : IHandler
+    public class 淇濆瓨鍑哄叆搴撴槑缁嗕俊鎭� : IHandler
     {
         /// <summary>
         /// 璇ヨ妭鐐圭殑涓嬩竴涓妭鐐�
@@ -49,22 +49,26 @@
                 {
                     var task = DecompositionTaskContainer.PartTask;
                     int materid = 0;
-                    using(var dbModelcore = new DbModelCore())
+                    using (var dbModelcore = new DbModelCore())
                     {
-                        var mater = dbModelcore.BASEMaterials.FirstOrDefault(x=>x.code==task.MaterialCode);
-                        if (mater!=null)
+                        var mater = dbModelcore.BASEMaterials.FirstOrDefault(x => x.code == task.MaterialCode);
+                        if (mater != null)
                         {
                             materid = mater.id;
                         }
-                    };
-                    int tp=0;
+                    }
+                    ;
+                    int tp = 0;
+                    int? _isSendToMes = null;//鏄惁鍙戦�佺粰MES 銆怑ditby shaocx,2025-09-25銆�
                     switch (task.MainTaskType)
                     {
                         case (int)EMainTaskType.鍏ュ簱浠诲姟:
                             tp = 0;
+                            _isSendToMes = (int)EIsSendToMes.寰呮帹閫�;
                             break;
                         case (int)EMainTaskType.鍑哄簱浠诲姟:
                             tp = 1;
+                            _isSendToMes = (int)EIsSendToMes.寰呮帹閫�;
                             break;
                         case (int)EMainTaskType.绉诲簱浠诲姟:
                             tp = 2;
@@ -78,16 +82,17 @@
                     InOutStorageDetail iosd = new InOutStorageDetail()
                     {
                         fromplacecode = task.SourcePlace,
-                        formplaceid=task.SourcePlaceId,
-                        toplacecode=task.ToPlace,
-                        toplaceid=task.ToPlaceId,
-                        equipid=task.EquipId,
-                        equipname=task.EquipName,
-                        updatetime=DateTime.Now,
-                        createtime=task.CreateTime,
-                        materialcode=task.MaterialCode,
-                        materialid=materid,
-                        type = tp
+                        formplaceid = task.SourcePlaceId,
+                        toplacecode = task.ToPlace,
+                        toplaceid = task.ToPlaceId,
+                        equipid = task.EquipId,
+                        equipname = task.EquipName,
+                        updatetime = DateTime.Now,
+                        createtime = task.CreateTime,
+                        materialcode = task.MaterialCode,
+                        materialid = materid,
+                        type = tp,
+                        isSendToMes = _isSendToMes //鏄惁鍙戦�佺粰MES 銆怑ditby shaocx,2025-09-25銆�
                     };
                     dbModel.InOutStorageDetails.Add(iosd);
                     dbModel.SaveChanges();
diff --git a/DEmon/iWareCc/Service1.cs b/DEmon/iWareCc/Service1.cs
index c8a4b4c..fe60118 100644
--- a/DEmon/iWareCc/Service1.cs
+++ b/DEmon/iWareCc/Service1.cs
@@ -414,7 +414,7 @@
             //StartThread(ReSendThread);
 
             //寮�鍚帹閫佺粰MES鐨勫嚭鍏ュ簱瀹屾垚绾跨▼ 銆怑ditby shaocx,2025-09-17銆�
-            new Thread(mesDataTranfficForRealMes.Handler).Start();
+            new Thread(mesDataTranfficForRealMesThread.Handler).Start();
 
         }
 
diff --git a/DEmon/iWareCc/SystemInteraction/PushMesHandler.cs b/DEmon/iWareCc/SystemInteraction/PushMesHandler.cs
index 59a9d63..994bf28 100644
--- a/DEmon/iWareCc/SystemInteraction/PushMesHandler.cs
+++ b/DEmon/iWareCc/SystemInteraction/PushMesHandler.cs
@@ -1,4 +1,6 @@
-锘縰sing Newtonsoft.Json;
+锘縰sing iWareCommon.Utils;
+using iWareLog.Report.Helper;
+using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -10,7 +12,7 @@
     /// </summary>
     public class PushMesHandler
     {
-        public static string mes_api_url = "";// ConfigHelper.GetConfigString("MesUrl");//淇敼涓洪厤缃枃浠� 銆怑ditBy shaocx,2022-01-27銆�
+        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>
@@ -18,35 +20,20 @@
         /// </summary>
         /// <param name="pushData"></param>
         /// <returns></returns>
-        public static ApiResponse<string> Mes_InStockSend(List<InboundStockInfoToMes> pushData)
+        public static ApiResponse<string> Mes_InStockSend(InOutStorageDetailResultForMes 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);
+                string paprm = JsonConvert.SerializeObject(pushData);
                 //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);
-                }
+                var resStr = mes_api.postContentForString("materialBack", paprm, guid);
+                //Log4NetHelper.WriteInfoLog(_logType, $"{funName},缁撴灉杩斿洖:{resStr}");
+                res = JsonConvert.DeserializeObject<ApiResponse<string>>(resStr);
+
 
                 //Log4NetHelper.WriteInfoLog(_logType, $"{funName},鍙傛暟:{paprm},杩斿洖:{JsonConvert.SerializeObject(res)}");
             }
diff --git a/DEmon/iWareCc/SystemInteraction/mesDataTranfficForRealMes.cs b/DEmon/iWareCc/SystemInteraction/mesDataTranfficForRealMes.cs
deleted file mode 100644
index 5435a1b..0000000
--- a/DEmon/iWareCc/SystemInteraction/mesDataTranfficForRealMes.cs
+++ /dev/null
@@ -1,96 +0,0 @@
-锘縰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/SystemInteraction/mesDataTranfficForRealMesThread.cs b/DEmon/iWareCc/SystemInteraction/mesDataTranfficForRealMesThread.cs
new file mode 100644
index 0000000..743fcba
--- /dev/null
+++ b/DEmon/iWareCc/SystemInteraction/mesDataTranfficForRealMesThread.cs
@@ -0,0 +1,92 @@
+锘縰sing iWareCc.Properties;
+using iWareCommon.Utils;
+using iWareDataCore.ORM;
+using iWareDataCore.TASK.EnumType;
+using iWareLog.LOG.EnumType;
+using iWareLog.ORM;
+using iWareLog.Report.Helper;
+using iWareLog.Report.Service;
+using Newtonsoft.Json;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace iWareCc
+{
+    /// <summary>
+    /// MES鍑哄叆搴撴暟鎹紶杈�(鐪熸鐨凪ES)-绾跨▼
+    /// </summary>
+    public class mesDataTranfficForRealMesThread
+    {
+        //public static LogType _logType = LogType.mesDataTranfficForRealMes;
+        public static async void Handler()
+        {
+            while (true)
+            {
+                try
+                {
+                    Thread.Sleep(5000);
+
+                    List<InOutStorageDetailResultForMes> sendMesData = InOutService.GetInstance().GetInOutStorageDetailListForMes();
+
+                    if (sendMesData.Count > 0)
+                    {
+                        //SystemWarningMsg.msg_mesDataTranfficForRealMes = $"{MyExtend.MsgTimeStr()},瑕佹帹閫亄sendMesData.Count()}鏉�!";
+                        foreach (var itemTask in sendMesData)
+                        {
+                            using (DbModelLog mod = new DbModelLog())
+                            {
+                                try
+                                {
+                                    ApiResponse<string> ret = null;
+                                    itemTask.Timestamp = DateTime.Now;//鍙戦�佹椂闂存埑瀹炴椂
+                                    ret = PushMesHandler.Mes_InStockSend(itemTask);
+
+                                    //鏌ユ壘瀵硅薄
+                                    var db_itemTask = mod.InOutStorageDetails.Where(x => x.id == itemTask.Id).FirstOrDefault();
+                                    //SystemWarningMsg.msg_mesDataTranfficForRealMes = $"{MyExtend.MsgTimeStr()},宸叉帹閫佺粨鏉燂紝杩斿洖:{JsonConvert.SerializeObject(ret)}";
+                                    if (ret.Success)
+                                    {
+                                        db_itemTask.isSendToMes = (int)EIsSendToMes.鎺ㄩ�佹垚鍔�;//鎺ㄩ�佹垚鍔�
+                                        db_itemTask.isSendToMesStr = "鎴愬姛";
+                                    }
+                                    else
+                                    {
+                                        db_itemTask.isSendToMes = (int)EIsSendToMes.寰呮帹閫�;//寰呮帹閫�
+                                        db_itemTask.isSendToMesStr = "澶辫触";
+                                    }
+                                    db_itemTask.SendToMesTime = DateTime.Now;
+                                    db_itemTask.MesRet = ret.Message;
+                                    db_itemTask.SendToMesCount = (db_itemTask.SendToMesCount ?? 0) + 1;
+                                    if (db_itemTask.isSendToMes == (int)EIsSendToMes.寰呮帹閫� && db_itemTask.SendToMesCount > 100)
+                                    {
+                                        db_itemTask.isSendToMes = (int)EIsSendToMes.寮哄埗瀹屾垚;//琛ㄧず寮哄埗鎺ㄩ�佹垚鍔�
+                                        db_itemTask.isSendToMesStr = "寮哄埗鎴愬姛";
+                                    }
+                                    mod.SaveChanges();
+
+                                }
+                                catch (Exception ex)
+                                {
+                                    LogTextHelper.WriteLine(Resources.LogDir + @"/MES鍑哄叆搴撴暟鎹紶杈�/" + "mesDataTranfficForRealMesThread", "MES鍑哄叆搴撴暟鎹紶杈撳紓甯�:{0}", JsonConvert.SerializeObject(ex));
+                                    //LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "Handle", ex.Message);
+                                    //SystemWarningMsg.msg_mesDataTranfficForRealMes = $"{MyExtend.MsgTimeStr()},鎺ㄩ�佺粰MES鏁版嵁寮傚父:" + JsonConvert.SerializeObject(ex);
+                                    //Log4NetHelper.WriteErrorLog(_logType, //SystemWarningMsg.msg_mesDataTranfficForRealMes, ex);
+                                }
+                            }
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
+                    LogTextHelper.WriteLine(Resources.LogDir + @"/MES鍑哄叆搴撴暟鎹紶杈�/" + "mesDataTranfficForRealMesThread", "(澶栭儴)MES鍑哄叆搴撴暟鎹紶杈撳紓甯�:{0}", JsonConvert.SerializeObject(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 62393d7..b44af1a 100644
--- a/DEmon/iWareCc/iWareCc.csproj
+++ b/DEmon/iWareCc/iWareCc.csproj
@@ -200,7 +200,7 @@
     <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\mesDataTranfficForRealMesThread.cs" />
     <Compile Include="SystemInteraction\PushMesHandler.cs" />
     <Compile Include="Task\Service\TaskService.cs" />
     <Compile Include="Util\OPCHelper.cs" />
diff --git a/DEmon/iWareCommon/Utils/ConfigHelper.cs b/DEmon/iWareCommon/Utils/ConfigHelper.cs
new file mode 100644
index 0000000..609a02a
--- /dev/null
+++ b/DEmon/iWareCommon/Utils/ConfigHelper.cs
@@ -0,0 +1,106 @@
+锘縰sing System;
+using System.Configuration;
+
+namespace iWareCommon.Utils
+{
+	/// <summary>
+	/// web.config鎿嶄綔绫�
+    /// Copyright (C) TBEA.WMS
+	/// </summary>
+	public sealed class ConfigHelper
+	{
+		/// <summary>
+		/// 寰楀埌AppSettings涓殑閰嶇疆瀛楃涓蹭俊鎭�
+		/// </summary>
+		/// <param name="key"></param>
+		/// <returns></returns>
+		public static string GetConfigString(string key)
+		{
+            string CacheKey = "AppSettings-" + key;
+            object objModel = DataCache.GetCache(CacheKey);
+            if (objModel == null)
+            {
+                try
+                {
+                    objModel = ConfigurationManager.AppSettings[key]; 
+                    if (objModel != null)
+                    {                        
+                        DataCache.SetCache(CacheKey, objModel, DateTime.Now.AddMinutes(180), TimeSpan.Zero);
+                    }
+                }
+                catch
+                { }
+            }
+            return objModel.ToString();
+		}
+
+		/// <summary>
+		/// 寰楀埌AppSettings涓殑閰嶇疆Bool淇℃伅
+		/// </summary>
+		/// <param name="key"></param>
+		/// <returns></returns>
+		public static bool GetConfigBool(string key)
+		{
+			bool result = false;
+			string cfgVal = GetConfigString(key);
+			if(null != cfgVal && string.Empty != cfgVal)
+			{
+				try
+				{
+					result = bool.Parse(cfgVal);
+				}
+				catch(FormatException)
+				{
+					// Ignore format exceptions.
+				}
+			}
+			return result;
+		}
+		/// <summary>
+		/// 寰楀埌AppSettings涓殑閰嶇疆Decimal淇℃伅
+		/// </summary>
+		/// <param name="key"></param>
+		/// <returns></returns>
+		public static decimal GetConfigDecimal(string key)
+		{
+			decimal result = 0;
+			string cfgVal = GetConfigString(key);
+			if(null != cfgVal && string.Empty != cfgVal)
+			{
+				try
+				{
+					result = decimal.Parse(cfgVal);
+				}
+				catch(FormatException)
+				{
+					// Ignore format exceptions.
+				}
+			}
+
+			return result;
+		}
+		/// <summary>
+		/// 寰楀埌AppSettings涓殑閰嶇疆int淇℃伅
+		/// </summary>
+		/// <param name="key"></param>
+		/// <returns></returns>
+		public static int GetConfigInt(string key)
+		{
+			int result = 0;
+			string cfgVal = GetConfigString(key);
+			if(null != cfgVal && string.Empty != cfgVal)
+			{
+				try
+				{
+					result = int.Parse(cfgVal);
+				}
+				catch(FormatException)
+				{
+					// Ignore format exceptions.
+				}
+			}
+
+			return result;
+		}
+	}
+}
diff --git a/DEmon/iWareCommon/Utils/DataCache.cs b/DEmon/iWareCommon/Utils/DataCache.cs
new file mode 100644
index 0000000..e5a1d92
--- /dev/null
+++ b/DEmon/iWareCommon/Utils/DataCache.cs
@@ -0,0 +1,45 @@
+锘縰sing System;
+using System.Web;
+
+namespace iWareCommon.Utils
+{
+	/// <summary>
+	/// 缂撳瓨鐩稿叧鐨勬搷浣滅被
+    /// Copyright (C) TBEA.WMS
+	/// </summary>
+	public class DataCache
+	{
+		/// <summary>
+		/// 鑾峰彇褰撳墠搴旂敤绋嬪簭鎸囧畾CacheKey鐨凜ache鍊�
+		/// </summary>
+		/// <param name="CacheKey"></param>
+		/// <returns></returns>
+		public static object GetCache(string CacheKey)
+		{
+			System.Web.Caching.Cache objCache = HttpRuntime.Cache;
+			return objCache[CacheKey];
+		}
+
+		/// <summary>
+		/// 璁剧疆褰撳墠搴旂敤绋嬪簭鎸囧畾CacheKey鐨凜ache鍊�
+		/// </summary>
+		/// <param name="CacheKey"></param>
+		/// <param name="objObject"></param>
+		public static void SetCache(string CacheKey, object objObject)
+		{
+			System.Web.Caching.Cache objCache = HttpRuntime.Cache;
+			objCache.Insert(CacheKey, objObject);
+		}
+
+		/// <summary>
+		/// 璁剧疆褰撳墠搴旂敤绋嬪簭鎸囧畾CacheKey鐨凜ache鍊�
+		/// </summary>
+		/// <param name="CacheKey"></param>
+		/// <param name="objObject"></param>
+		public static void SetCache(string CacheKey, object objObject, DateTime absoluteExpiration,TimeSpan slidingExpiration )
+		{
+			System.Web.Caching.Cache objCache = HttpRuntime.Cache;
+			objCache.Insert(CacheKey, objObject,null,absoluteExpiration,slidingExpiration);
+		}
+	}
+}
diff --git a/DEmon/iWareCommon/iWareCommon.csproj b/DEmon/iWareCommon/iWareCommon.csproj
index ac80c0d..d97c0df 100644
--- a/DEmon/iWareCommon/iWareCommon.csproj
+++ b/DEmon/iWareCommon/iWareCommon.csproj
@@ -61,6 +61,7 @@
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.ComponentModel.DataAnnotations" />
+    <Reference Include="System.Configuration" />
     <Reference Include="System.Core" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.Web" />
@@ -106,6 +107,8 @@
       <DependentUpon>Resources.resx</DependentUpon>
     </Compile>
     <Compile Include="Utils\Base64Helper.cs" />
+    <Compile Include="Utils\ConfigHelper.cs" />
+    <Compile Include="Utils\DataCache.cs" />
     <Compile Include="Utils\DESHelper.cs" />
     <Compile Include="Utils\EntityPropHelper.cs" />
     <Compile Include="Utils\FileHelper.cs" />
diff --git a/DEmon/iWareDataCore/BASE/Service/PlaceMaterialViewService.cs b/DEmon/iWareDataCore/BASE/Service/PlaceMaterialViewService.cs
index 729152b..5eb4d49 100644
--- a/DEmon/iWareDataCore/BASE/Service/PlaceMaterialViewService.cs
+++ b/DEmon/iWareDataCore/BASE/Service/PlaceMaterialViewService.cs
@@ -87,7 +87,8 @@
                 {
                     string sql = @"SELECT A.id, ISNULL(C.createtime,'1990-01-01') as createtime, ISNULL(C.updatetime,'1990-01-01') as updatetime, A.code AS placecode, A.status,
 A.islock, A.isexecute, B.name as placetypename, B.remark as placetyperemark, D.name, D.code AS materialcode, D.description, D.typeremark, D.typename, 
-ISNULL(D.status,0) AS materialstatus, A.id as placeid, ISNULL(C.materialid,0) as materialid, D.remark, A.layer, A.col, A.row, A.typeid as placetypeid
+ISNULL(D.status,0) AS materialstatus, A.id as placeid, ISNULL(C.materialid,0) as materialid, D.remark, A.layer, A.col, A.row, A.typeid as placetypeid,
+D.thick, D.wide, D.length,D.IssueProjectNo,D.ProcurementProjectNo,D.SerialNo,D.ClassificationSociety,D.CuttingType,D.Version
 FROM   dbo.BASEPlace AS A LEFT OUTER JOIN
        dbo.BASEPlaceType AS B ON A.typeid = B.id LEFT OUTER JOIN
        dbo.BASEPlaceMaterial as C on A.id=C.placeid  LEFT OUTER JOIN
diff --git a/DEmon/iWareDataCore/TASK/EnumType/EIsSendToMes.cs b/DEmon/iWareDataCore/TASK/EnumType/EIsSendToMes.cs
new file mode 100644
index 0000000..7168a2c
--- /dev/null
+++ b/DEmon/iWareDataCore/TASK/EnumType/EIsSendToMes.cs
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace iWareDataCore.TASK.EnumType
+{
+    public enum EIsSendToMes
+    {
+        寰呮帹閫� = 1,
+        鎺ㄩ�佹垚鍔� = 2,
+        鎺ㄩ�佸け璐� = 3,
+        寮哄埗瀹屾垚 = 4
+    }
+}
diff --git a/DEmon/iWareDataCore/iWareDataCore.csproj b/DEmon/iWareDataCore/iWareDataCore.csproj
index a8e0b5b..e49d5c2 100644
--- a/DEmon/iWareDataCore/iWareDataCore.csproj
+++ b/DEmon/iWareDataCore/iWareDataCore.csproj
@@ -248,6 +248,7 @@
     <Compile Include="TASK\EnumType\EMainTaskCheck.cs" />
     <Compile Include="TASK\EnumType\EMainTaskPriority.cs" />
     <Compile Include="TASK\EnumType\EMainTaskStatus.cs" />
+    <Compile Include="TASK\EnumType\EIsSendToMes.cs" />
     <Compile Include="TASK\EnumType\EMainTaskType.cs" />
     <Compile Include="TASK\EnumType\EInstorgNextNode.cs" />
     <Compile Include="TASK\EnumType\EPartTaskStatus.cs" />
diff --git a/DEmon/iWareLog/ORM/InOutStorageDetail.cs b/DEmon/iWareLog/ORM/InOutStorageDetail.cs
index ea93482..0259c66 100644
--- a/DEmon/iWareLog/ORM/InOutStorageDetail.cs
+++ b/DEmon/iWareLog/ORM/InOutStorageDetail.cs
@@ -26,6 +26,9 @@
 
         public DateTime? updatetime { get; set; }
 
+        /// <summary>
+        /// 任务类型,枚举  EMainTaskType
+        /// </summary>
         public int type { get; set; }
 
         public int? equipid { get; set; }
@@ -37,5 +40,17 @@
 
         [StringLength(50)]
         public string materialcode { get; set; }
+
+
+        public int? isSendToMes { get; set; }
+
+        public string isSendToMesStr { get; set; }
+
+        public int? SendToMesCount { get; set; }
+
+        public DateTime? SendToMesTime { get; set; }
+
+        public string MesRet { get; set; }
+
     }
 }
diff --git a/DEmon/iWareLog/Report/Helper/InOutStorageDetailResultForMes.cs b/DEmon/iWareLog/Report/Helper/InOutStorageDetailResultForMes.cs
new file mode 100644
index 0000000..2aab734
--- /dev/null
+++ b/DEmon/iWareLog/Report/Helper/InOutStorageDetailResultForMes.cs
@@ -0,0 +1,53 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace iWareLog.Report.Helper
+{
+    // 寤鸿鏀惧湪 Models 鎴� DTOs 鏂囦欢澶逛笅
+    public class InOutStorageDetailResultForMes
+    {
+
+        /// <summary>
+        /// 琛↖nOutStorageDetail鐨処D
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鍨嬫潗鍞竴缂栫爜
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 鑸瑰彿/鍙戞斁宸ョ▼鍙�
+        /// </summary>
+        public string IssueProjectNo { get; set; }
+
+        /// <summary>
+        /// 鍒嗘鍙�
+        /// </summary>
+        public string SerialNo { get; set; }
+
+        /// <summary>
+        /// 涓氬姟鏍囪瘑锛堟殏涓� A.type锛�
+        /// </summary>
+        public int? BusinessFlag { get; set; }
+
+        /// <summary>
+        /// 搴撲綅缂栫爜锛堟殏涓� A.toplacecode锛岀洰鏍囧簱浣嶏級
+        /// </summary>
+        public string PlaceCode { get; set; }
+
+        /// <summary>
+        /// 鍙戦�佹椂闂存埑锛堟殏涓� A.createtime锛�
+        /// </summary>
+        public DateTime? Timestamp { get; set; }
+
+        /// <summary>
+        /// 鍙戠敓鏃堕棿锛堟殏涓� Timestamp 涓�鑷达紝鎴栧彲鏇挎崲涓哄叾瀹冨瓧娈碉級
+        /// </summary>
+        public DateTime? OccurrenceTime { get; set; }
+    }
+}
diff --git a/DEmon/iWareLog/Report/Service/InOutService.cs b/DEmon/iWareLog/Report/Service/InOutService.cs
index ee41eb4..36635d0 100644
--- a/DEmon/iWareLog/Report/Service/InOutService.cs
+++ b/DEmon/iWareLog/Report/Service/InOutService.cs
@@ -51,7 +51,7 @@
                 {
                     string sql = @"select count(B.typename)quantity,B.typename materialcode from  InOutStorageDetail A left join WGQ_WB19011_CORE.[dbo].[BASEMaterialView] B on A.materialid=B.id
                                     where A.type=@p0 and A.updatetime>=@p1 and A.updatetime<@p2 group by B.typename";
-                    List<InOutHelper> data = context.Database.SqlQuery<InOutHelper>(sql,type, start, end).ToList();
+                    List<InOutHelper> data = context.Database.SqlQuery<InOutHelper>(sql, type, start, end).ToList();
                     return data;
                 }
                 catch (Exception ex)
@@ -62,6 +62,46 @@
             }
         }
 
-       
+
+        /// <summary>
+        /// 鏌ヨ鍑哄叆搴撴槑缁嗗強鐗╂枡淇℃伅锛堣仈鏌� InOutStorageDetail 鍜� BASEMaterialView锛�
+        /// </summary>
+        /// <returns>杩斿洖鍖呭惈鍨嬫潗缂栫爜銆佽埞鍙枫�佸垎娈靛彿銆佷笟鍔℃爣璇嗐�佸簱浣嶃�佹椂闂寸瓑淇℃伅鐨勫垪琛�</returns>
+        public List<InOutStorageDetailResultForMes> GetInOutStorageDetailListForMes()
+        {
+            using (DbModelLog context = new DbModelLog())
+            {
+                try
+                {
+                    string sql = @"
+                SELECT 
+                    A.id AS Id,
+                    B.code AS Code,
+                    B.issueprojectno AS IssueProjectNo,
+                    B.serialno AS SerialNo,
+                    A.type AS BusinessFlag,
+                    A.toplacecode AS PlaceCode,
+                    A.createtime AS Timestamp,
+                    A.createtime AS OccurrenceTime
+                FROM 
+                    InOutStorageDetail A
+                INNER JOIN 
+                    WGQ_WB19011_CORE.[dbo].[BASEMaterialView] B
+                    ON A.materialid = B.id And A.isSendToMes=1 ";
+
+                    // 鎵ц SQL 鏌ヨ锛屽苟鏄犲皠鍒拌嚜瀹氫箟绫� InOutStorageDetailResult
+                    var data = context.Database.SqlQuery<InOutStorageDetailResultForMes>(sql).ToList();
+
+                    return data;
+                }
+                catch (Exception ex)
+                {
+                    // 璁板綍寮傚父鏃ュ織锛堝拰浣犲師鏈夋柟娉曚繚鎸佷竴鑷达級
+                    LogTextHelper.WriteLine("InOutService", "GetInOutStorageDetailList", ex.ToString());
+                    return null; // 鎴栬�呰繑鍥� new List<InOutStorageDetailResult>()锛屾牴鎹綘鐨勪笟鍔¢渶姹�
+                }
+            }
+        }
+
     }
 }
diff --git a/DEmon/iWareLog/iWareLog.csproj b/DEmon/iWareLog/iWareLog.csproj
index 583399c..24a74c1 100644
--- a/DEmon/iWareLog/iWareLog.csproj
+++ b/DEmon/iWareLog/iWareLog.csproj
@@ -93,6 +93,7 @@
       <DependentUpon>Resources.resx</DependentUpon>
     </Compile>
     <Compile Include="Report\Helper\AlertHelper.cs" />
+    <Compile Include="Report\Helper\InOutStorageDetailResultForMes.cs" />
     <Compile Include="Report\Helper\InOutHelper.cs" />
     <Compile Include="Report\Service\AlertService.cs" />
     <Compile Include="Report\Service\InOutService.cs" />

--
Gitblit v1.9.3