using iWareCC.Common.Helper;
|
using iWareCommon.Common.Globle;
|
using iWareCommon.Utils;
|
using iWareModel;
|
using iWareModel.EnumType.XiGangPublicCommon;
|
using iWareSql;
|
using iWareSql.DataAccess;
|
using iWareSql.DBModel;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Runtime.Remoting.Contexts;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
using XiGang.Core.Model;
|
using XiGang.Core.Model.PostParamModels.Task;
|
using XiGang.Core.Model.ViewModels;
|
using static WZ.Useful.Commons.NativeMethods;
|
|
namespace iWareCC
|
{
|
/// <summary>
|
/// 重新获取发动机信息,并赋值 任务
|
/// </summary>
|
public static class AutoUpdateEngineInfoTask
|
{
|
/// <summary>
|
/// 重新获取发动机信息,并赋值
|
/// </summary>
|
public static void Handler()
|
{
|
var alertMsg = "";
|
while (true)
|
{
|
Thread.Sleep(2000);//休眠2秒,将休眠写到前面,是为了下面的continue方法执行后不显示错误信息的提示!!!【EditBy shaocx,2022-05-24】
|
SystemWarningMsg._lbl_alert_AutoUpdateEngineInfoTask = string.Empty;
|
try
|
{
|
if (SystemValue.isAllowRuning_AutoUpdateEngineInfoTask && SystemValue.isStartedModel)
|
{
|
using (DbModel context = new DbModel())
|
{
|
var needIssueTask = context.Task_Main.Where(x => x.IsUpdateMatFinish == false).OrderBy(x => x.Id).FirstOrDefault();
|
if (needIssueTask == null)
|
{
|
SystemWarningMsg._lbl_alert_AutoUpdateEngineInfoTask = $"没有要处理[重新获取发动机信息,并赋值]任务,此次循环结束";
|
continue;
|
}
|
if (needIssueTask.UpdateMatFinishNum != null)
|
{
|
UpdateMat(context, needIssueTask);
|
}
|
|
var material = context.Base_Material.Where(x => x.Id == needIssueTask.MaterialId).FirstOrDefault();
|
|
//符合条件,即将进行重新获取发动机信息,并赋值
|
var _scan_salverCode = needIssueTask.SalverCode;
|
alertMsg = $"发动机码为{needIssueTask.SerialNumber},托盘码为{_scan_salverCode},符合条件,即将进行重新获取发动机信息,并赋值";
|
SystemWarningMsg._lbl_alert_AutoUpdateEngineInfoTask = alertMsg;
|
Log4NetHelper.WriteInfoLog(LogType.AutoUpdateEngineInfoTask, alertMsg);
|
|
try
|
{
|
//调用API
|
MesRetModel2<MesRetProductModel> getEngineInfoResult = WmsRequestHelper.GetEngineInfo(material.CargoNo);
|
if (getEngineInfoResult.code != 200)
|
{
|
alertMsg = ($"查询MES发动机信息失败,参数{material.CargoNo},MES返回code:" + getEngineInfoResult.code + ",信息:" + getEngineInfoResult.message);
|
SystemWarningMsg._lbl_alert_AutoUpdateEngineInfoTask = alertMsg;
|
Log4NetHelper.WriteInfoLog(LogType.AutoUpdateEngineInfoTask, alertMsg);
|
|
needIssueTask.UpdateMatFinishNum = needIssueTask.UpdateMatFinishNum == null ? 1 : (Convert.ToInt32(needIssueTask.UpdateMatFinishNum) + 1);
|
UpdateMat(context, needIssueTask);
|
continue;
|
}
|
var info_getEngineInfo = getEngineInfoResult.data;
|
if (info_getEngineInfo == null)
|
{
|
alertMsg = ($"查询MES发动机信息失败,参数{material.CargoNo},MES返回发动机信息为NULL,code:" + getEngineInfoResult.code
|
+ ",信息:" + getEngineInfoResult.message + ",data:" + JsonConvert.SerializeObject(getEngineInfoResult.data)
|
|
); ; ;
|
SystemWarningMsg._lbl_alert_AutoUpdateEngineInfoTask = alertMsg;
|
Log4NetHelper.WriteInfoLog(LogType.AutoUpdateEngineInfoTask, alertMsg);
|
|
needIssueTask.UpdateMatFinishNum = needIssueTask.UpdateMatFinishNum == null ? 1 : (Convert.ToInt32(needIssueTask.UpdateMatFinishNum) + 1);
|
UpdateMat(context, needIssueTask);
|
continue;
|
}
|
|
//调用API
|
UpdateEngineInfoParam param = new UpdateEngineInfoParam()
|
{
|
info_getEngineInfo = info_getEngineInfo,
|
mainTaskId = needIssueTask.Id,
|
materialId = material.Id
|
};
|
MessageModel<string> ret = WmsRequestHelper.UpdateEngineInfo(param);
|
if (ret.success)
|
{//处理成功了,WMS API会把这个状态更新的IsUpdateMatFinish
|
alertMsg = $"发动机码为{needIssueTask.SerialNumber},托盘码为{_scan_salverCode},请求参数:{JsonConvert.SerializeObject(param)},重新获取发动机信息,并赋值请求WMSAPI成功!";
|
SystemWarningMsg._lbl_alert_AutoUpdateEngineInfoTask = alertMsg;
|
Log4NetHelper.WriteInfoLog(LogType.AutoUpdateEngineInfoTask, alertMsg);
|
|
needIssueTask.IsUpdateMatFinish = true;
|
needIssueTask.UpdateMatFinishTime = DateTime.Now;
|
context.SaveChanges();
|
}
|
else
|
{//失败
|
alertMsg = $"发动机码为{needIssueTask.SerialNumber},托盘码为{_scan_salverCode},请求参数:{JsonConvert.SerializeObject(param)},重新获取发动机信息,并赋值请求WMSAPI失败:WMS返回消息为->{ret.msg}";
|
SystemWarningMsg._lbl_alert_AutoUpdateEngineInfoTask = alertMsg;
|
Log4NetHelper.WriteInfoLog(LogType.AutoUpdateEngineInfoTask, alertMsg);
|
Log4NetHelper.WriteErrorLog(LogType.AutoUpdateEngineInfoTask, alertMsg, null);
|
|
needIssueTask.UpdateMatFinishNum = needIssueTask.UpdateMatFinishNum == null ? 1 : (Convert.ToInt32(needIssueTask.UpdateMatFinishNum) + 1);
|
UpdateMat(context, needIssueTask);
|
}
|
}
|
catch (Exception ex)
|
{
|
alertMsg = $"发动机码为{needIssueTask.SerialNumber},托盘码为{_scan_salverCode},重新获取发动机信息,并赋值请求WMSAPI失败:出现异常->{ex.Message}";
|
SystemWarningMsg._lbl_alert_AutoUpdateEngineInfoTask = alertMsg;
|
Log4NetHelper.WriteInfoLog(LogType.AutoUpdateEngineInfoTask, alertMsg);
|
Log4NetHelper.WriteErrorLog(LogType.AutoUpdateEngineInfoTask, alertMsg, ex);
|
|
needIssueTask.UpdateMatFinishNum = needIssueTask.UpdateMatFinishNum == null ? 1 : (Convert.ToInt32(needIssueTask.UpdateMatFinishNum) + 1);
|
UpdateMat(context, needIssueTask);
|
}
|
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
SystemWarningMsg._lbl_alert_AutoUpdateEngineInfoTask += "重新获取发动机信息,并赋值 出现异常:" + ex.Message + SysGloble.SPLIT_STR;
|
Log4NetHelper.WriteErrorLog(LogType.AutoUpdateEngineInfoTask, "AutoUpdateEngineInfoTask 出现异常:" + ex.Message, ex);
|
}
|
|
}
|
}
|
|
private static void UpdateMat(DbModel context, Task_Main needIssueTask)
|
{
|
if (needIssueTask.UpdateMatFinishNum > 3)
|
{
|
needIssueTask.IsUpdateMatFinish = true;
|
}
|
needIssueTask.UpdateMatFinishTime = DateTime.Now;
|
context.SaveChanges();
|
}
|
|
}
|
}
|