using iWareCommon.Utils;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using yunneiWCS.EnumDefine;
using yunneiWCS.ExtendFunction;
using yunneiWCS.mes;
using yunneiWCS.ORM;
using yunneiWCS.SystemInteraction.mes2.dto;
namespace yunneiWCS.ThreadTask
{
///
/// MES出入库数据传输(真正的MES)
///
public class mesDataTranfficForRealMes
{
public static LogType _logType = LogType.mesDataTranfficForRealMes;
public static async void Handler()
{
while (true)
{
try
{
Thread.Sleep(5000);
//Log4NetHelper.WriteErrorLog(_logType, "测试啊啊啊啊 ");
//Log4NetHelper.WriteInfoLog(_logType, "测试啊啊啊啊 ");
using (dbmodel mod = new dbmodel())
{
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
{
mesMsg ret = null;
//获取信息明细
var details = mod.Wms_outInStockRecord_Details_V2_Mes.Where(x => x.mainId == itemTask.ID).ToList();
List pushData = new List();
foreach (var de in details)
{
pushData.Add(new InboundStockInfoToMes()
{
identifier = de.ID.ToString(),
containerCode = itemTask.containerCode,
createTime = itemTask.CreateTime?.ToString("yyyy-MM-dd HH:mm:ss"),
materialCode = de.productCode,
materialName = de.productName,
positionName = itemTask.sourcePlace,
productName = itemTask.materialName,
serialNumber = de.serialNumber,
supplier = itemTask.supplier,
version = itemTask.version,
Creator = string.IsNullOrEmpty(itemTask.Creator) ? "wms" : itemTask.Creator
});;
}
switch (itemTask.outInFlag)
{
case (int)OutInFlag.入库:
ret = PushMesHandler.Mes_InStockSend(pushData, _logType);
break;
case (int)OutInFlag.出库:
ret = PushMesHandler.Mes_OutStockSend(pushData, _logType);
break;
default:
break;
}
SystemWarningMsg.msg_mesDataTranfficForRealMes = $"{MyExtend.MsgTimeStr()},已推送结束,返回:{JsonConvert.SerializeObject(ret)}";
if (ret.ErrorCode == 0)
{
itemTask.isSendToMes = 1;//推送成功
}
else
{
itemTask.isSendToMes = 0;//推送失败
}
itemTask.SendToMesTime = DateTime.Now;
itemTask.MesRet = ret.ErrorMsg;
itemTask.SendToMesCount = (itemTask.SendToMesCount ?? 0) + 1;
if (itemTask.isSendToMes == 0 && itemTask.SendToMesCount > 100)
{
itemTask.isSendToMes = 3;//表示强制推送成功
}
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);
}
}
}
}
}