using iWareDataCore.ORM; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Threading; namespace iWareCc { /// /// MES出入库数据传输(真正的MES) /// 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 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 ret = null; //获取信息明细 List pushData = new List(); 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); } } } } }