schangxiang@126.com
2025-09-04 6b5de286683ac86026b2e9109166ced0332cfdad
处理推送
已添加1个文件
已修改9个文件
272 ■■■■ 文件已修改
wcs/yunneiWCS/yunneiWCS/App - 本地.config 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs/yunneiWCS/yunneiWCS/App -生产.config 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs/yunneiWCS/yunneiWCS/App.config 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs/yunneiWCS/yunneiWCS/SystemInteraction/mes2/PushMesHandler - 复制.cs 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs/yunneiWCS/yunneiWCS/SystemInteraction/mes2/PushMesHandler.cs 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs/yunneiWCS/yunneiWCS/SystemInteraction/mes2/dto/InboundStockInfoToMes.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs/yunneiWCS/yunneiWCS/SystemInteraction/mes2/dto/MesRequest.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs/yunneiWCS/yunneiWCS/ThreadTask/mesDataTranfficForRealMes.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs/yunneiWCS/yunneiWCS/ThreadTask/mesStockDataForRealMes.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs/yunneiWCS/yunneiWCS/yunneiWCS.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wcs/yunneiWCS/yunneiWCS/App - ±¾µØ.config
@@ -11,7 +11,7 @@
    <!--是否是虚拟仿真模式,true:是,false:否。生产环境要配置为false ã€EditBy shaocx,2022-01-27】-->
    <add key="IsVirtualMode" value="true"/>
    <!--MES地址 ã€EditBy shaocx,2025-08-27】-->
    <add key="MesUrl" value="http://192.168.6.47:8000/api/Save/"/>
    <add key="MesUrl" value="http://192.168.6.47:8000/api/Save"/>
  </appSettings>
  
  <system.serviceModel>
wcs/yunneiWCS/yunneiWCS/App -Éú²ú.config
@@ -12,7 +12,7 @@
    <!--是否是虚拟仿真模式,true:是,false:否。生产环境要配置为false ã€EditBy shaocx,2022-01-27】-->
    <add key="IsVirtualMode" value="false"/>
    <!--MES地址 ã€EditBy shaocx,2025-08-27】-->
    <add key="MesUrl" value="http://192.168.6.47:8000/api/Save/"/>
    <add key="MesUrl" value="http://192.168.6.47:8000/api/Save"/>
  </appSettings>
  <system.serviceModel>
        
wcs/yunneiWCS/yunneiWCS/App.config
@@ -12,7 +12,7 @@
    <!--是否是虚拟仿真模式,true:是,false:否。生产环境要配置为false ã€EditBy shaocx,2022-01-27】-->
    <add key="IsVirtualMode" value="true"/>
    <!--MES地址 ã€EditBy shaocx,2025-08-27】-->
    <add key="MesUrl" value="http://192.168.6.47:8000/api/Save/"/>
    <add key="MesUrl" value="http://192.168.6.47:8000/api/Save"/>
  </appSettings>
  <system.serviceModel>
wcs/yunneiWCS/yunneiWCS/SystemInteraction/mes2/PushMesHandler - ¸´ÖÆ.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,156 @@
//using iWareCommon.Utils;
//using Newtonsoft.Json;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Net;
//using System.Text;
//using System.Threading.Tasks;
//using yunneiWCS.EnumDefine;
//using yunneiWCS.ExtendFunction;
//using yunneiWCS.SystemInteraction.mes2.dto;
//using static WZ.Useful.Commons.NativeMethods;
//namespace yunneiWCS.mes
//{
//    /// <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<object> Mes_InStockSend(List<InboundStockInfoToMes> pushData, string _identifier, LogType _logType)
//        {
//            ApiResponse<object> res = null;
//            var funName = "Mes_InStockSend";
//            try
//            {
//                MesRequest<List<InboundStockInfoToMes>> mesRequest = new MesRequest<List<InboundStockInfoToMes>>();
//                mesRequest.data = pushData;
//                mesRequest.identifier = _identifier;
//                string paprm = JsonConvert.SerializeObject(mesRequest);
//                Log4NetHelper.WriteInfoLog(_logType, $"{funName},准备参数:{paprm}");
//                Guid guid = System.Guid.NewGuid();
//                //模拟
//                if (Form1.isvirtual)
//                {//模拟环境
//                    res = new ApiResponse<object>();
//                    res.Success = true;
//                    res.Message = "系统模拟完成";
//                }
//                else
//                {
//                    var resStr = mes_api.postContentForString("T_WMS_Inbound_Record", paprm, guid);
//                    Log4NetHelper.WriteInfoLog(_logType, $"{funName},结果返回:{resStr}");
//                    res = JsonConvert.DeserializeObject<ApiResponse<object>>(resStr);
//                }
//                Log4NetHelper.WriteInfoLog(_logType, $"{funName},参数:{paprm},返回:{JsonConvert.SerializeObject(res)}");
//            }
//            catch (Exception ex)
//            {
//                Log4NetHelper.WriteErrorLog(_logType, $"{funName},异常:" + ex.Message, ex);
//                res.Message = "发送异常:" + ex.Message;
//            }
//            return res;
//        }
//        /// <summary>
//        /// ç»™MES推送出库信息
//        /// </summary>
//        /// <param name="pushData"></param>
//        /// <returns></returns>
//        public static ApiResponse<object> Mes_OutStockSend(List<InboundStockInfoToMes> pushData, string _identifier, LogType _logType)
//        {
//            ApiResponse<object> res = null;
//            var funName = "Mes_OutStockSend";
//            try
//            {
//                MesRequest<List<InboundStockInfoToMes>> mesRequest = new MesRequest<List<InboundStockInfoToMes>>();
//                mesRequest.data = pushData;
//                mesRequest.identifier = _identifier;
//                string paprm = JsonConvert.SerializeObject(mesRequest);
//                Log4NetHelper.WriteInfoLog(_logType, $"{funName},准备参数:{paprm}");
//                Guid guid = System.Guid.NewGuid();
//                //模拟
//                if (Form1.isvirtual)
//                {//模拟环境
//                    res = new ApiResponse<object>();
//                    res.Success = true;
//                    res.Message = "系统模拟完成";
//                }
//                else
//                {
//                    var resStr = mes_api.postContentForString("T_WMS_Outbound_Record", paprm, guid);
//                    Log4NetHelper.WriteInfoLog(_logType, $"{funName},结果返回:{resStr}");
//                    res = JsonConvert.DeserializeObject<ApiResponse<object>>(resStr);
//                }
//                Log4NetHelper.WriteInfoLog(_logType, $"{funName},参数:{paprm},返回:{JsonConvert.SerializeObject(res)}");
//            }
//            catch (Exception ex)
//            {
//                Log4NetHelper.WriteErrorLog(_logType, $"{funName},异常:" + ex.Message, ex);
//                res.Message = "发送异常:" + ex.Message;
//            }
//            return res;
//        }
//        /// <summary>
//        /// ç»™MES推送库存信息
//        /// </summary>
//        /// <param name="pushData"></param>
//        /// <returns></returns>
//        public static ApiResponse<object> Mes_StockSend(List<InboundStockInfoToMes> pushData, LogType _logType)
//        {
//            ApiResponse<object> res = null;
//            var funName = "Mes_StockSend";
//            try
//            {
//                MesRequest<List<InboundStockInfoToMes>> mesRequest = new MesRequest<List<InboundStockInfoToMes>>();
//                mesRequest.data = pushData;
//                string paprm = JsonConvert.SerializeObject(mesRequest);
//                Guid guid = System.Guid.NewGuid();
//                Log4NetHelper.WriteInfoLog(_logType, $"{funName},准备参数:{paprm}");
//                //模拟
//                if (Form1.isvirtual)
//                {//模拟环境
//                    res = new ApiResponse<object>();
//                    res.Success = true;
//                    res.Message = "系统模拟完成";
//                }
//                else
//                {
//                    var resStr = mes_api.postContentForString("T_WMS_Realtime_Data", paprm, guid);
//                    Log4NetHelper.WriteInfoLog(_logType, $"{funName},结果返回:{resStr}");
//                    res = JsonConvert.DeserializeObject<ApiResponse<object>>(resStr);
//                }
//                Log4NetHelper.WriteInfoLog(_logType, $"{funName},参数:{paprm},返回:{JsonConvert.SerializeObject(res)}");
//            }
//            catch (Exception ex)
//            {
//                Log4NetHelper.WriteErrorLog(_logType, $"{funName},异常:" + ex.Message, ex);
//                res.Message = "发送异常:" + ex.Message;
//            }
//            return res;
//        }
//    }
//}
wcs/yunneiWCS/yunneiWCS/SystemInteraction/mes2/PushMesHandler.cs
@@ -26,15 +26,16 @@
        /// </summary>
        /// <param name="pushData"></param>
        /// <returns></returns>
        public static ApiResponse<object> Mes_InStockSend(List<InboundStockInfoToMes> pushData, string _identifier, LogType _logType)
        public static mesMsg Mes_InStockSend(List<InboundStockInfoToMes> pushData, LogType _logType)
        {
            ApiResponse<object> res = null;
            mesMsg res = null;
            var funName = "Mes_InStockSend";
            try
            {
                MesRequest<List<InboundStockInfoToMes>> mesRequest = new MesRequest<List<InboundStockInfoToMes>>();
                mesRequest.data = pushData;
                mesRequest.identifier = _identifier;
                mesRequest.Datas = pushData;
                mesRequest.TableName = "T_WMS_Inbound_Record";
                mesRequest.PrimaryKeys = "identifier";
                string paprm = JsonConvert.SerializeObject(mesRequest);
                Log4NetHelper.WriteInfoLog(_logType, $"{funName},准备参数:{paprm}");
@@ -43,15 +44,15 @@
                //模拟
                if (Form1.isvirtual)
                {//模拟环境
                    res = new ApiResponse<object>();
                    res.Success = true;
                    res.Message = "系统模拟完成";
                    res = new mesMsg();
                    res.ErrorCode = 0;
                    res.ErrorMsg = "系统模拟完成";
                }
                else
                {
                    var resStr = mes_api.postContentForString("T_WMS_Inbound_Record", paprm, guid);
                    var resStr = mes_api.postContentForString("", paprm, guid);
                    Log4NetHelper.WriteInfoLog(_logType, $"{funName},结果返回:{resStr}");
                    res = JsonConvert.DeserializeObject<ApiResponse<object>>(resStr);
                    res = JsonConvert.DeserializeObject<mesMsg>(resStr);
                }
                Log4NetHelper.WriteInfoLog(_logType, $"{funName},参数:{paprm},返回:{JsonConvert.SerializeObject(res)}");
@@ -59,7 +60,8 @@
            catch (Exception ex)
            {
                Log4NetHelper.WriteErrorLog(_logType, $"{funName},异常:" + ex.Message, ex);
                res.Message = "发送异常:" + ex.Message;
                res.ErrorCode = 4;
                res.ErrorMsg = "wms发送异常:" + ex.Message;
            }
            return res;
@@ -71,15 +73,16 @@
        /// </summary>
        /// <param name="pushData"></param>
        /// <returns></returns>
        public static ApiResponse<object> Mes_OutStockSend(List<InboundStockInfoToMes> pushData, string _identifier, LogType _logType)
        public static mesMsg Mes_OutStockSend(List<InboundStockInfoToMes> pushData, LogType _logType)
        {
            ApiResponse<object> res = null;
            mesMsg res = null;
            var funName = "Mes_OutStockSend";
            try
            {
                MesRequest<List<InboundStockInfoToMes>> mesRequest = new MesRequest<List<InboundStockInfoToMes>>();
                mesRequest.data = pushData;
                mesRequest.identifier = _identifier;
                mesRequest.Datas = pushData;
                mesRequest.TableName = "T_WMS_Outbound_Record";
                mesRequest.PrimaryKeys = "identifier";
                string paprm = JsonConvert.SerializeObject(mesRequest);
                Log4NetHelper.WriteInfoLog(_logType, $"{funName},准备参数:{paprm}");
@@ -87,15 +90,15 @@
                //模拟
                if (Form1.isvirtual)
                {//模拟环境
                    res = new ApiResponse<object>();
                    res.Success = true;
                    res.Message = "系统模拟完成";
                    res = new mesMsg();
                    res.ErrorCode = 0;
                    res.ErrorMsg = "系统模拟完成";
                }
                else
                {
                    var resStr = mes_api.postContentForString("T_WMS_Outbound_Record", paprm, guid);
                    var resStr = mes_api.postContentForString("", paprm, guid);
                    Log4NetHelper.WriteInfoLog(_logType, $"{funName},结果返回:{resStr}");
                    res = JsonConvert.DeserializeObject<ApiResponse<object>>(resStr);
                    res = JsonConvert.DeserializeObject<mesMsg>(resStr);
                }
                Log4NetHelper.WriteInfoLog(_logType, $"{funName},参数:{paprm},返回:{JsonConvert.SerializeObject(res)}");
@@ -103,7 +106,8 @@
            catch (Exception ex)
            {
                Log4NetHelper.WriteErrorLog(_logType, $"{funName},异常:" + ex.Message, ex);
                res.Message = "发送异常:" + ex.Message;
                res.ErrorCode = 4;
                res.ErrorMsg = "wms发送异常:" + ex.Message;
            }
            return res;
@@ -115,14 +119,16 @@
        /// </summary>
        /// <param name="pushData"></param>
        /// <returns></returns>
        public static ApiResponse<object> Mes_StockSend(List<InboundStockInfoToMes> pushData, LogType _logType)
        public static mesMsg Mes_StockSend(List<InboundStockInfoToMes> pushData, LogType _logType)
        {
            ApiResponse<object> res = null;
            mesMsg res = null;
            var funName = "Mes_StockSend";
            try
            {
                MesRequest<List<InboundStockInfoToMes>> mesRequest = new MesRequest<List<InboundStockInfoToMes>>();
                mesRequest.data = pushData;
                mesRequest.Datas = pushData;
                mesRequest.TableName = "T_WMS_Realtime_Data";
                mesRequest.PrimaryKeys = "serialNumber,positionName";
                string paprm = JsonConvert.SerializeObject(mesRequest);
                Guid guid = System.Guid.NewGuid();
@@ -130,15 +136,15 @@
                //模拟
                if (Form1.isvirtual)
                {//模拟环境
                    res = new ApiResponse<object>();
                    res.Success = true;
                    res.Message = "系统模拟完成";
                    res = new mesMsg();
                    res.ErrorCode = 0;
                    res.ErrorMsg = "系统模拟完成";
                }
                else
                {
                    var resStr = mes_api.postContentForString("T_WMS_Realtime_Data", paprm, guid);
                    var resStr = mes_api.postContentForString("", paprm, guid);
                    Log4NetHelper.WriteInfoLog(_logType, $"{funName},结果返回:{resStr}");
                    res = JsonConvert.DeserializeObject<ApiResponse<object>>(resStr);
                    res = JsonConvert.DeserializeObject<mesMsg>(resStr);
                }
@@ -147,7 +153,8 @@
            catch (Exception ex)
            {
                Log4NetHelper.WriteErrorLog(_logType, $"{funName},异常:" + ex.Message, ex);
                res.Message = "发送异常:" + ex.Message;
                res.ErrorCode = 4;
                res.ErrorMsg = "wms发送异常:" + ex.Message;
            }
            return res;
wcs/yunneiWCS/yunneiWCS/SystemInteraction/mes2/dto/InboundStockInfoToMes.cs
@@ -12,6 +12,11 @@
    public class InboundStockInfoToMes
    {
        /// <summary>
        /// å”¯ä¸€æ ‡è¯†ç¬¦
        /// </summary>
        public string identifier { get; set; }
        /// <summary>
        /// äº§å“åç§°
        /// </summary>
        public string productName { get; set; }
@@ -55,5 +60,7 @@
        /// æœºåž‹
        /// </summary>
        public string version { get; set; }
    }
}
wcs/yunneiWCS/yunneiWCS/SystemInteraction/mes2/dto/MesRequest.cs
@@ -14,21 +14,26 @@
        /// <summary>
        /// æ•°æ®
        /// </summary>
        public T data { get; set; }
        /// <summary>
        /// æŽ¨é€äºº
        /// </summary>
        public string Creator { get; set; } = "wms";                // åˆ›å»ºäººï¼Œå¦‚ "wms"
        public T Datas { get; set; }
        /// <summary>
        /// æŽ¨é€æ—¶é—´
        /// ç³»ç»Ÿç±»åž‹
        /// </summary>
        public string Timestamp { get; set; } = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");               // æ—¶é—´æˆ³ï¼Œå¦‚ "2022-03-15 06:43:15"
        public string SystemType { get; set; } = "ERP";
        /// <summary>
        /// Secret
        /// </summary>
        public string Secret { get; set; } = "HJY^*HGYIIY";
        /// <summary>
        /// å”¯ä¸€æ ‡è¯†ç¬¦
        /// è¡¨å
        /// </summary>
        public string identifier { get; set; }
        public string TableName { get; set; }
        /// <summary>
        /// ä¸»é”®
        /// </summary>
        public string PrimaryKeys { get; set; }
    }
}
wcs/yunneiWCS/yunneiWCS/ThreadTask/mesDataTranfficForRealMes.cs
@@ -38,7 +38,7 @@
                            {
                                try
                                {
                                    ApiResponse<object> ret = null;
                                    mesMsg ret = null;
                                    //获取信息明细
                                    var details = mod.Wms_outInStockRecord_Details_V2_Mes.Where(x => x.mainId == itemTask.ID).ToList();
@@ -47,6 +47,7 @@
                                    {
                                        pushData.Add(new InboundStockInfoToMes()
                                        {
                                            identifier = de.ID.ToString(),
                                            containerCode = itemTask.containerCode,
                                            createTime = itemTask.CreateTime?.ToString("yyyy-MM-dd HH:mm:ss"),
                                            materialCode = de.productCode,
@@ -63,17 +64,17 @@
                                    switch (itemTask.outInFlag)
                                    {
                                        case (int)OutInFlag.入库:
                                            ret = PushMesHandler.Mes_InStockSend(pushData, itemTask.ID.ToString(), _logType);
                                            ret = PushMesHandler.Mes_InStockSend(pushData, _logType);
                                            break;
                                        case (int)OutInFlag.出库:
                                            ret = PushMesHandler.Mes_OutStockSend(pushData, itemTask.ID.ToString(), _logType);
                                            ret = PushMesHandler.Mes_OutStockSend(pushData, _logType);
                                            break;
                                        default:
                                            break;
                                    }
                                    SystemWarningMsg.msg_mesDataTranfficForRealMes = $"{MyExtend.MsgTimeStr()},已推送结束,返回:{JsonConvert.SerializeObject(ret)}";
                                    if (ret.Success)
                                    if (ret.ErrorCode == 0)
                                    {
                                        itemTask.isSendToMes = 1;
                                    }
@@ -82,7 +83,7 @@
                                        itemTask.isSendToMes = 0;
                                    }
                                    itemTask.SendToMesTime = DateTime.Now;
                                    itemTask.MesRet = ret.Message;
                                    itemTask.MesRet = ret.ErrorMsg;
                                    itemTask.SendToMesCount = (itemTask.SendToMesCount ?? 0) + 1;
                                    mod.SaveChanges();
wcs/yunneiWCS/yunneiWCS/ThreadTask/mesStockDataForRealMes.cs
@@ -34,12 +34,13 @@
                        if (sendMesData.Count > 0)
                        {
                            SystemWarningMsg.mesStockDataForRealMes = $"{MyExtend.MsgTimeStr()},要推送{sendMesData.Count()}条!";
                            ApiResponse<object> ret = null;
                            mesMsg ret = null;
                            List<InboundStockInfoToMes> pushData = new List<InboundStockInfoToMes>();
                            foreach (var itemTask in sendMesData)
                            {
                                pushData.Add(new InboundStockInfoToMes()
                                {
                                    identifier=Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
                                    containerCode = itemTask.containerCode,
                                    createTime = itemTask.createTime?.ToString("yyyy-MM-dd HH:mm:ss"),
                                    materialCode = itemTask.productCode,
wcs/yunneiWCS/yunneiWCS/yunneiWCS.csproj
@@ -153,6 +153,7 @@
    <Compile Include="SystemInteraction\mes2\dto\ApiResponse.cs" />
    <Compile Include="SystemInteraction\mes2\dto\MesRequest.cs" />
    <Compile Include="SystemInteraction\mes2\dto\InboundStockInfoToMes.cs" />
    <Compile Include="SystemInteraction\mes2\PushMesHandler - å¤åˆ¶.cs" />
    <Compile Include="SystemInteraction\mes2\PushMesHandler.cs" />
    <Compile Include="SystemInteraction\tianyong\TianYongSystem.cs" />
    <Compile Include="TestForm.cs">