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 mesStockDataForRealMes
{
public static LogType _logType = LogType.mesStockDataForRealMes;
public static async void Handler()
{
while (true)
{
try
{
//Log4NetHelper.WriteErrorLog(_logType, "测试啊啊啊啊 ");
//Log4NetHelper.WriteInfoLog(_logType, "测试啊啊啊啊 ");
using (dbmodel mod = new dbmodel())
{
List sendMesData = mod.v_srmStockdetails.OrderBy(x => x.positionName).ToList();
if (sendMesData.Count > 0)
{
SystemWarningMsg.mesStockDataForRealMes = $"{MyExtend.MsgTimeStr()},要推送{sendMesData.Count()}条!";
mesMsg ret = null;
List pushData = new List();
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,
materialName = itemTask.productName,
positionName = itemTask.positionName,
productName = itemTask.materialName,
serialNumber = itemTask.serialNumber,
supplier = itemTask.supplier,
version = itemTask.version,
});
}
ret = PushMesHandler.Mes_StockSend(pushData, _logType);
SystemWarningMsg.mesStockDataForRealMes = $"{MyExtend.MsgTimeStr()},已推送结束,{sendMesData.Count()}条!返回:{JsonConvert.SerializeObject(ret)}";
}
else
{
SystemWarningMsg.mesStockDataForRealMes = $"{MyExtend.MsgTimeStr()},没有数据要推送给MES!";
}
}
}
catch (Exception ex)
{
SystemWarningMsg.mesStockDataForRealMes = $"{MyExtend.MsgTimeStr()},数据要推送给MES出现异常:" + ex.Message;
Log4NetHelper.WriteErrorLog(_logType, SystemWarningMsg.mesStockDataForRealMes, ex);
}
finally
{
//Thread.Sleep(5000);//正式需要5分钟推送一次
Thread.Sleep(5 * 60 * 1000);//正式需要5分钟推送一次
}
}
}
}
}