using 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 { /// /// MES出入库数据传输(真正的MES)-线程 /// public class mesDataTranfficForRealMesThread { //public static LogType _logType = LogType.mesDataTranfficForRealMes; public static async void Handler() { while (true) { try { Thread.Sleep(5000); List 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 ret = null; itemTask.Timestamp = DateTime.Now;//发送时间戳实时 //转换 var str_OccurrenceTime = ""; if (itemTask.OccurrenceTime != null) { str_OccurrenceTime = ((DateTime)itemTask.OccurrenceTime).ToString("yyyy-MM-dd HH:mm:ss"); } R_InOutStorageDetailResultForMes r = new R_InOutStorageDetailResultForMes() { BusinessFlag = itemTask.BusinessFlag.ToString(), Code = itemTask.Code, IssueProjectNo = itemTask.IssueProjectNo, PlaceCode = itemTask.PlaceCode, SerialNo = itemTask.SerialNo, Timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), OccurrenceTime = str_OccurrenceTime, }; ret = PushMesHandler.Mes_InStockSend(r); //查找对象 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); } } } } }