using System.Text;
|
using System.Web;
|
using MES.Service.Dto.service;
|
using MES.Service.Modes;
|
using MES.Service.service.Warehouse;
|
using Newtonsoft.Json;
|
using Newtonsoft.Json.Linq;
|
|
namespace MES.Service.service;
|
|
public class GetErpParametersServer
|
{
|
private readonly MesInvItemInCDetailsManager _invItemInCDetailsServer =
|
new();
|
|
private readonly MessageCenterManager _messageCenterServer = new();
|
|
public List<MessageCenter> GetErpParameters(List<MessageCenter> data)
|
{
|
var centers = new List<MessageCenter>();
|
|
//获取第一个请求
|
var center = data.Find(p => p.Seq == 1);
|
|
//解析URL
|
var queryString =
|
center.PageName.Substring(center.PageName.IndexOf('?') + 1);
|
//提取参数
|
var queryParameters = HttpUtility.ParseQueryString(queryString);
|
|
switch (center.TableName)
|
{
|
//采购入库单审核
|
case "MES_INV_ITEM_INS_A":
|
//采购入库单反审核
|
case "MES_INV_ITEM_INS_B":
|
var strings = center.TableName.Split("_");
|
|
var query = new WarehouseQuery();
|
//获取到类型(审核还是反审核)
|
query.Type = strings[^1];
|
query.id = Convert.ToDecimal(queryParameters["id"]);
|
query.billNo = queryParameters["billNo"];
|
|
var mesToErp = _invItemInCDetailsServer.MesToErpParam(query);
|
mesToErp.Id = center.Id;
|
centers.Add(mesToErp);
|
|
var messageCenter = data[0];
|
var json = new JObject();
|
json.Add(new JProperty("id", query.id));
|
json.Add(new JProperty("billNo", query.billNo));
|
messageCenter.Data = json.ToString();
|
centers.Add(messageCenter);
|
|
break;
|
default:
|
throw new Exception("无法识别TableName类型");
|
}
|
|
//根据顺序返回
|
return centers.OrderBy(p => p.Seq).ToList();
|
}
|
|
|
public string Resend(MessageCenter data)
|
{
|
//获取所有的回调
|
var messageCenters =
|
_messageCenterServer.GetList(it => it.Pid == data.Id);
|
messageCenters.Add(data);
|
var erpParameters = GetErpParameters(messageCenters);
|
|
return sendHttp(erpParameters).Result;
|
}
|
|
|
private async Task<string> sendHttp(List<MessageCenter> requestList)
|
{
|
var sortedRequests = requestList.OrderBy(r => r.Seq).ToList();
|
|
using var httpClient = new HttpClient();
|
|
var responses = "";
|
|
foreach (var request in sortedRequests)
|
{
|
var httpRequestMessage = new HttpRequestMessage
|
{
|
Method = new HttpMethod(request.Method),
|
RequestUri = new Uri(request.Url),
|
Content = new StringContent(request.Data, Encoding.UTF8,
|
request.ContentType)
|
};
|
|
var response =
|
await httpClient.SendAsync(httpRequestMessage);
|
var responseData = await response.Content.ReadAsStringAsync();
|
|
var result = JsonConvert.DeserializeObject<Result>(responseData);
|
|
responses += result.msg + "!!!";
|
responses += result.message + "!!!";
|
|
if ("500".Equals(result.state))
|
{
|
responses = "返回报错:" + responses;
|
return responses;
|
}
|
|
if ("1".Equals(result.status))
|
{
|
responses = "返回报错:" + responses;
|
return responses;
|
}
|
|
request.Result = 1;
|
request.ResultData = result.msg;
|
request.Status = 1;
|
request.DealWith = 1;
|
|
_messageCenterServer.ResetUpdate(request);
|
}
|
|
responses = "重推成功:" + responses;
|
return responses;
|
}
|
}
|
|
public class Result
|
{
|
public string? state { get; set; }
|
public string? msg { get; set; }
|
|
public string? status { get; set; }
|
|
public string? message { get; set; }
|
}
|