using iWareCommon;
using iWareCommon.Utils;
using iWareSql.Orm;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Collections;
using Newtonsoft.Json;
using System.Threading.Tasks;
using iWareSql.DBModel;
using iWareModel;
namespace iWareSql
{
public class TaskRequestLogHandler
{
///
/// 初始化请求日志
///
/// 任务ID
/// 设备号
/// PLC的任务号
/// 来源的库位号
/// 目标的库位号
/// 业务描述
/// 创建人
///
public static Task_RequestLog GetTask(string taskId,
int DeviceId, string PlcTaskId,
string SourcePlaceNo, string ToPlaceNo, string Business, string CreateBy)
{
Task_RequestLog log = new Task_RequestLog()
{
DeviceId = DeviceId,
DeviceName=
PlcTaskId = PlcTaskId,
Id = Guid.NewGuid().ToString(),
CreateTime = DateTime.Now,
ModifyTime = DateTime.Now,
CreateBy = CreateBy,
ModifyBy = CreateBy,
//Business = Business,
RequestStatus = Convert.ToInt32(RequestStatusEnum.已请求).ToString(),//1 已请求 2 请求成功 3 请求失败
PartTaskId = taskId.ToString(),
//SourcePlaceNo = SourcePlaceNo,
//ToPlaceNo = ToPlaceNo,
//Remark = "初始化请求日志"
};
return log;
}
public static void InsertTask(LogType currentLogType, RequestStatusEnum requestStatusEnum, string PlcResult, Task_RequestLog log, Exception exObect = null)
{
log.RequesResult = PlcResult;
log.RequestStatus = Convert.ToInt32(requestStatusEnum).ToString();
log.ModifyBy = "";
log.ModifyTime = DateTime.Now;
//log.Remark = "修改请求日志";
if (requestStatusEnum == RequestStatusEnum.请求失败)
{
//log.Remark = "请求失败:" + JsonConvert.SerializeObject(exObect);
}
Task.Run(() =>
{
try
{
using (DbModel edm = new DbModel())
{
InsertTask(log, edm);
}
//记录文本日志
switch (requestStatusEnum)
{
case RequestStatusEnum.请求成功:
Log4NetHelper.WriteInfoLog(currentLogType,
log.Business + "成功,log:" + JsonConvert.SerializeObject(log));
break;
case RequestStatusEnum.请求失败:
log.OperationRemark = "请求失败";
Log4NetHelper.WriteErrorLog(currentLogType, log.Business + "失败,log:" + JsonConvert.SerializeObject(log));
break;
}
}
catch (Exception ex)
{
Log4NetHelper.WriteErrorLog(currentLogType, "记录日志失败,log:" + JsonConvert.SerializeObject(log), ex);
}
});
}
private static void InsertTask(Task_RequestLog log, DbModel edm)
{
edm.Task_RequestLog.Add(log);
edm.SaveChanges();
}
}
}