using iWareLog.ORM;
|
using iWareLog.LOG.Entity;
|
using iWareLog.LOG.Dao;
|
using iWareCommon.Common.Service;
|
using iWareCommon.Utils;
|
using System;
|
using iWareCommon.Common.EnumType;
|
using Newtonsoft.Json;
|
using iWareLog.Properties;
|
using iWareCommon.Common.Entity;
|
using System.Linq;
|
|
namespace iWareLog.LOG.Service
|
{
|
public class FailSentMessageService : CommonService<FailSentMessageEntity, LOGERRORFailSentMessage, DbModelLog>
|
{
|
private static object Lock = new object();
|
|
private FailSentMessageService() : base(FailSentMessageDao.GetInstance()) { }
|
|
private static FailSentMessageService Instance = null;
|
|
/// <summary>
|
/// 获取单例的方法
|
/// </summary>
|
/// <returns>log服务的单例实体</returns>
|
public static FailSentMessageService GetInstance()
|
{
|
|
if (Instance == null)
|
{
|
lock (Lock)
|
{
|
if (Instance == null)
|
{
|
Instance = new FailSentMessageService();
|
}
|
}
|
}
|
return Instance;
|
}
|
/// <summary>
|
/// 重新发送
|
/// </summary>
|
/// <param name="message"></param>
|
/// <param name="msg"></param>
|
/// <returns></returns>
|
public bool ReSend(int id, out string msg)
|
{
|
using (var dbModel = new DbModelLog())
|
{
|
try
|
{
|
msg = "";
|
var url = "";
|
|
var message = dbModel.LOGERRORFailSentMessages.FirstOrDefault(x => x.id == id);
|
|
if (message == null)
|
{
|
msg = string.Format("没有找到id为{0}的记录", id);
|
return false;
|
}
|
|
switch (message.url)
|
{
|
case "pushstatusforpreheating":
|
case "pushstatusforheatstorage":
|
case "pushstatusforbufferfeed":
|
case "preheatstoragefinish":
|
case "pushstatusforft":
|
case "pushstatusforecmfeedbyrcs":
|
case "pushstatusforecmblankingbyrcs":
|
case "pushstatusforheattrans":
|
case "pushstatusforartificialqualityinspection":
|
case "heatstoroutbindrfid":
|
case "heatstoroutbindfinish":
|
case "pushstatusforbuffertrans":
|
url = Resources.WipUrl + @"/";
|
break;
|
case "syncmaterialinfo":
|
case "materialstatemodify":
|
case "getloadingtablestatus":
|
case "getecmtablestatus":
|
case "businessexception":
|
case "equipwarn":
|
case "equipstatus":
|
case "agvrealtimelocation":
|
case "outstoragecompleted":
|
case "movestoragecompleted":
|
case "bufferlayingoffcompleted":
|
case "artificialwarehousing":
|
case "processcardforwcs":
|
case "resetprocesscardprintqueue":
|
url = Resources.WipUrl2 + @"/";
|
break;
|
case "reparsetask":
|
break;
|
|
|
}
|
|
var responseStr = HttpHelper.GetHttpResponse(url + message.url, JsonConvert.DeserializeObject(message.requeststr), 5000);
|
var resFormat = JsonConvert.DeserializeObject<ResEntity>(responseStr);
|
|
message.isok = resFormat.resCode == "00000" ? (int)EYesOrNo.是 : (int)EYesOrNo.否;
|
|
message.updatetime = DateTime.Now;
|
|
message.retrytimes += 1;
|
|
dbModel.SaveChanges();
|
|
if (message.isok == (int)EYesOrNo.否)
|
{
|
msg = resFormat.resMsg;
|
}
|
|
return message.isok == (int)EYesOrNo.是;
|
|
}
|
catch (Exception ex)
|
{
|
msg = ex.Message;
|
var message = dbModel.LOGERRORFailSentMessages.FirstOrDefault(x => x.id == id);
|
message.isok = (int)EYesOrNo.否;
|
|
message.updatetime = DateTime.Now;
|
|
message.retrytimes += 1;
|
|
dbModel.SaveChanges();
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "ReSend", msg);
|
return false;
|
}
|
}
|
}
|
|
public bool PushBusinessException(int id, out string msg)
|
{
|
using (var dbModel2 = new DbModelLog())
|
{
|
try
|
{
|
msg = "";
|
|
var message = dbModel2.LOGERRORFailSentMessages.FirstOrDefault(x => x.id == id);
|
|
if (message == null)
|
{
|
msg = string.Format("没有找到id为{0}的记录", id);
|
return false;
|
}
|
|
var requestBody = new
|
{
|
sysCode = "WCS",
|
taskNo = StringHelper.GetValue(message.requeststr, "taskNo"),
|
processCardNumber = StringHelper.GetValue(message.requeststr, "processCardNumber"),
|
exceptionCode = "001",
|
exceptionMsg = message.resmsg,
|
timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
|
};
|
|
var responseStr = HttpHelper.GetHttpResponse(Resources.WipUrl2 + @"/businessexception", requestBody, 5000);
|
|
LogTextHelper.WriteLine(Resources.LogDir, "PushBusinessException:responseStr = {0}", responseStr);
|
|
return true;
|
}
|
catch (Exception ex)
|
{
|
msg = ex.Message;
|
|
LogTextHelper.WriteLog(Resources.LogDir, this.ToString(), "PushBusinessException", msg);
|
return false;
|
}
|
|
}
|
|
}
|
|
|
}
|
}
|