山东雷驰
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
3.9 KiB

3 months ago
using Kean.Infrastructure.Database.Repository.Record;
using Kean.Infrastructure.Database.Repository.Record.Entities;
using Kean.Infrastructure.Soap.MES.Models;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using SMesService;
using System;
using System.Threading.Tasks;
namespace Kean.Infrastructure.Soap.MES
{
public sealed class MesService
{
private readonly ILogger<MesService> _logger; // 日志
//private readonly IDefaultDb _defaultDb; // 默认数据库
private readonly IRecordDb _recordDb;
/// <summary>
/// 依赖注入
/// </summary>
public MesService(ILogger<MesService> logger,
//IDefaultDb defaultDb
IRecordDb recordDb
)
{
_logger = logger;
//_defaultDb = defaultDb;
_recordDb = recordDb;
}
public async Task<string> Invoke(string function, string paramIn, string barcode, string requestNo)
{
_logger.LogInformation($"WMS调用MES接口[{function}]开始:参数 requestNo-{requestNo} barcode-{barcode} paramIn-{paramIn}");
T_INTERFACE_RECORD interfaceRecord = new T_INTERFACE_RECORD();
interfaceRecord.DIRECTION = "WMS->MES";
interfaceRecord.METHOD = function;
interfaceRecord.BARCODE = barcode;
interfaceRecord.REQUEST_NO = requestNo;
interfaceRecord.START_TIME = DateTime.Now;
MesServiceClient mesServiceClient = new MesServiceClient();
//mesServiceClient.ClientCredentials.UserName.UserName = "user";
//mesServiceClient.ClientCredentials.UserName.Password = "123";
string result = String.Empty;
bool bResult = true;
try
{
switch (function)
{
case "ProductionInfo":
result = await mesServiceClient.ProductionInfoAsync(paramIn);
break;
case "WarehouseInventoryTransfer":
result = await mesServiceClient.WarehouseInventoryTransferAsync(paramIn);
break;
}
Production production = JsonConvert.DeserializeObject<Production>(result);
if (!production.status_code.Equals("0"))
{
bResult = false;
production.message = $"调用MES接口({function})返回失败,返回信息:{production.message})";
}
result = JsonConvert.SerializeObject(production);
}
catch (Exception e)
{
bResult = false;
_logger.LogWarning($"WMS调用MES接口[{function}]异常:参数 requestNo-{requestNo} barcode-{barcode} 原因-{e.Message}");
result = JsonConvert.SerializeObject(new
{
code = "1",
message = $"调用MES接口({function})错误,原因:{e.Message}"
});
}
try
{
interfaceRecord.END_TIME = DateTime.Now;
interfaceRecord.CREATE_TIME = DateTime.Now;
interfaceRecord.PARAM_IN = paramIn;
interfaceRecord.PARAM_OUT = result;
interfaceRecord.RESULT = bResult?"0":"1";
var temp = await _recordDb.From<T_INTERFACE_RECORD>().Add(interfaceRecord);
_recordDb.Save();
}
catch(Exception ex)
{
_logger.LogWarning($"创建WMS调用MES接口[{function}]记录异常。参数 requestNo-{requestNo} barcode-{barcode} 原因-{ex.Message}");
}
_logger.LogInformation($"WMS调用MES接口[{function}]结束:参数 requestNo-{requestNo} barcode-{barcode} result-{result}");
return result;
}
}
}