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;//发送时间戳实时
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);
}
}
}
}
}