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.
348 lines
17 KiB
348 lines
17 KiB
using Dapper;
|
|
using Kean.Infrastructure.Database.Repository.Default;
|
|
using Kean.Infrastructure.Database.Repository.Default.Entities;
|
|
//using Kean.Infrastructure.Database.Repository.Record.Entities;
|
|
using Kean.Infrastructure.Soap.Hithium.Models;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.Logging;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
namespace Kean.Infrastructure.Soap.Hithium
|
|
{
|
|
public sealed class WmsAPIService
|
|
{
|
|
private readonly ILogger<WmsAPIService> _logger; // 日志
|
|
//private readonly IRecordDb _recordDb;
|
|
//private readonly IDefaultDb _database; // 默认数据库
|
|
private readonly HttpClient _client;
|
|
private readonly IConfiguration _configuration;
|
|
|
|
/// <summary>
|
|
/// 依赖注入
|
|
/// </summary>
|
|
public WmsAPIService(ILogger<WmsAPIService> logger
|
|
//IRecordDb recordDb
|
|
//IDefaultDb database
|
|
)
|
|
{
|
|
_logger = logger;
|
|
//_recordDb = recordDb;
|
|
//_database = database;
|
|
_client = new HttpClient();
|
|
_configuration = (IConfiguration)new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
|
|
}
|
|
/// <summary>
|
|
/// 入库过账
|
|
/// </summary>
|
|
/// <param name="function"></param>
|
|
/// <param name="paramIn"></param>
|
|
/// <param name="barcode"></param>
|
|
/// <param name="requestNo"></param>
|
|
/// <returns></returns>
|
|
public async Task<string> FeedbackIn(string function, string paramIn, string barcode, string requestNo, string feedbackStatus)
|
|
{
|
|
_logger.LogInformation($"调用海辰WMS接口[{function}]开始:参数 requestNo-{requestNo} barcode-{barcode} paramIn-{paramIn} feedbackStatus-{feedbackStatus}");
|
|
|
|
Database.Repository.Default.Entities.T_INTERFACE_RECORD interfaceRecord = new Database.Repository.Default.Entities.T_INTERFACE_RECORD();
|
|
interfaceRecord.DIRECTION = "ASRS->海辰WMS";
|
|
interfaceRecord.METHOD = function;
|
|
interfaceRecord.BARCODE = barcode;
|
|
interfaceRecord.REQUEST_NO = requestNo;
|
|
interfaceRecord.START_TIME = DateTime.Now;
|
|
|
|
string result = string.Empty;
|
|
bool bResult = true;
|
|
try
|
|
{
|
|
var url = _configuration["InterfaceUrl:HithiumWmsWebApi"];
|
|
var content = new StringContent(paramIn, Encoding.UTF8, "application/json");
|
|
|
|
//////实际用户
|
|
////byte[] bytes = Encoding.UTF8.GetBytes("siasun:siasun");
|
|
////_client.DefaultRequestHeaders.Add("Authorization", "Basic " + Convert.ToBase64String(bytes));
|
|
|
|
var response = await _client.PostAsync(string.Format(url, function), content);
|
|
|
|
|
|
if (response.StatusCode == HttpStatusCode.OK)
|
|
{
|
|
result = await response.Content.ReadAsStringAsync();
|
|
|
|
Result ouRresult = JsonConvert.DeserializeObject<Result>(result);
|
|
if (ouRresult.code != "0")
|
|
{
|
|
bResult = false;
|
|
ouRresult.message = $"调用海辰WMS接口({function})返回失败,返回信息:({ouRresult.message})";
|
|
}
|
|
|
|
result = JsonConvert.SerializeObject(ouRresult, Formatting.Indented);
|
|
}
|
|
else
|
|
{
|
|
bResult = false;
|
|
_logger.LogWarning($"调用海辰WMS接口[{function}]异常:参数 requestNo-{requestNo} barcode-{barcode} 原因-StatusCode:{response.StatusCode} ReasonPhrase:{response.ReasonPhrase}");
|
|
result = JsonConvert.SerializeObject(new
|
|
{
|
|
Success = false,
|
|
ReturnMsg = $"调用海辰WMS接口({function})错误,原因-StatusCode:{response.StatusCode} ReasonPhrase:{response.ReasonPhrase}"
|
|
}, Formatting.Indented);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
bResult = false;
|
|
_logger.LogWarning($"调用海辰WMS接口[{function}]异常:参数 requestNo-{requestNo} barcode-{barcode} 原因-{e.Message}");
|
|
result = JsonConvert.SerializeObject(new
|
|
{
|
|
Success = false,
|
|
ReturnMsg = $"调用海辰WMS接口({function})错误,原因:{e.Message}"
|
|
},Formatting.Indented);
|
|
}
|
|
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();
|
|
|
|
//var temp = await _database.From<T_INTERFACE_RECORD>().Add(interfaceRecord);
|
|
//_database.Save();
|
|
var driver = Infrastructure.Database.Configuration.Configure("Default");
|
|
using (var context = driver.CreateContext())
|
|
{
|
|
//await context.From<Database.Repository.Default.Entities.T_INTERFACE_RECORD>().Add(interfaceRecord);
|
|
|
|
string sql = $" insert into T_INTERFACE_RECORD (DIRECTION, METHOD, BARCODE, REQUEST_NO, START_TIME, END_TIME, CREATE_TIME, PARAM_IN, PARAM_OUT, RESULT) " +
|
|
$"VALUES ('{interfaceRecord.DIRECTION}','{interfaceRecord.METHOD}','{interfaceRecord.BARCODE}','{interfaceRecord.REQUEST_NO}'," +
|
|
$"'{interfaceRecord.START_TIME}','{interfaceRecord.END_TIME}','{interfaceRecord.CREATE_TIME}','{interfaceRecord.PARAM_IN}','{interfaceRecord.PARAM_OUT}','{interfaceRecord.RESULT}')";
|
|
|
|
context.Execute(sql);
|
|
}
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
_logger.LogWarning($"创建调用海辰WMS接口[{function}]记录异常。参数 requestNo-{requestNo} barcode-{barcode} 原因-{ex.Message}");
|
|
}
|
|
|
|
try
|
|
{
|
|
var driver = Infrastructure.Database.Configuration.Configure("Default");
|
|
using (var context = driver.CreateContext())
|
|
{
|
|
string requestNoType = $"{requestNo}-{feedbackStatus}";
|
|
|
|
string sql = $" select [ID],[METHOD],[REQUEST_NO_TYPE],[REQUEST_NO],[BARCODE],[FEEDBACK_STATUS],[RESULT],[START_TIME],[LAST_END_TIME],[PARAM_IN],[LAST_PARAM_OUT],[CREATE_TIME] from T_ERROR_FEEDBACK where REQUEST_NO_TYPE = '{requestNoType}'";
|
|
|
|
var errFeedTemp = context.Query<T_ERROR_FEEDBACK>(sql);
|
|
if (errFeedTemp.Count() == 0)
|
|
{
|
|
T_ERROR_FEEDBACK errFeed = new T_ERROR_FEEDBACK();
|
|
|
|
errFeed.METHOD = function;
|
|
errFeed.REQUEST_NO_TYPE = requestNoType;
|
|
errFeed.REQUEST_NO = requestNo;
|
|
errFeed.BARCODE = barcode;
|
|
errFeed.FEEDBACK_STATUS = feedbackStatus;
|
|
errFeed.RESULT = bResult ? "0" : "1";
|
|
errFeed.START_TIME = interfaceRecord.START_TIME;
|
|
errFeed.LAST_END_TIME = interfaceRecord.END_TIME;
|
|
errFeed.PARAM_IN = paramIn;
|
|
errFeed.LAST_PARAM_OUT = result;
|
|
errFeed.CREATE_TIME = DateTime.Now;
|
|
|
|
sql = $" insert into T_ERROR_FEEDBACK (METHOD, REQUEST_NO_TYPE, REQUEST_NO, BARCODE, RESULT, START_TIME, LAST_END_TIME, PARAM_IN, LAST_PARAM_OUT, CREATE_TIME, FEEDBACK_STATUS) " +
|
|
$"VALUES ('{errFeed.METHOD}','{errFeed.REQUEST_NO_TYPE}','{errFeed.REQUEST_NO}','{errFeed.BARCODE}'," +
|
|
$"'{errFeed.RESULT}','{errFeed.START_TIME}','{errFeed.LAST_END_TIME}','{errFeed.PARAM_IN}','{errFeed.LAST_PARAM_OUT}','{errFeed.CREATE_TIME}','{errFeed.FEEDBACK_STATUS}')";
|
|
|
|
context.Execute(sql);
|
|
}
|
|
else
|
|
{
|
|
T_ERROR_FEEDBACK errFeed = errFeedTemp.First();
|
|
if (errFeed.RESULT != "0")
|
|
{
|
|
errFeed.RESULT = bResult ? "0" : "1";
|
|
errFeed.LAST_END_TIME = interfaceRecord.END_TIME;
|
|
errFeed.PARAM_IN = paramIn;
|
|
errFeed.LAST_PARAM_OUT = result;
|
|
|
|
sql = $" update T_ERROR_FEEDBACK set RESULT = '{errFeed.RESULT}',LAST_END_TIME = '{errFeed.LAST_END_TIME}',PARAM_IN = '{errFeed.PARAM_IN}',LAST_PARAM_OUT = '{errFeed.LAST_PARAM_OUT}' where ID = {errFeed.ID} ";
|
|
|
|
context.Execute(sql);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogWarning($"创建接口ERR[{function}]记录异常。参数 requestNo-{requestNo} barcode-{barcode} feedbackStatus-{feedbackStatus} 原因-{ex.Message}");
|
|
}
|
|
|
|
_logger.LogInformation($"调用海辰WMS接口[{function}]结束:参数 requestNo-{requestNo} barcode-{barcode} result-{result}");
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 出库过账
|
|
/// </summary>
|
|
public async Task<string> FeedbackOut(string function, string paramIn, string barcode, string requestNo, string feedbackStatus)
|
|
{
|
|
_logger.LogInformation($"调用海辰WMS接口[{function}]开始:参数 requestNo-{requestNo} barcode-{barcode} paramIn-{paramIn} feedbackStatus-{feedbackStatus}");
|
|
|
|
T_INTERFACE_RECORD interfaceRecord = new T_INTERFACE_RECORD();
|
|
interfaceRecord.DIRECTION = "ASRS->海辰WMS";
|
|
interfaceRecord.METHOD = function;
|
|
interfaceRecord.BARCODE = barcode;
|
|
interfaceRecord.REQUEST_NO = requestNo;
|
|
interfaceRecord.START_TIME = DateTime.Now;
|
|
|
|
string result = string.Empty;
|
|
bool bResult = true;
|
|
try
|
|
{
|
|
var url = _configuration["InterfaceUrl:HithiumWmsWebApi"];
|
|
var content = new StringContent(paramIn, Encoding.UTF8, "application/json");
|
|
|
|
//////实际用户
|
|
////byte[] bytes = Encoding.UTF8.GetBytes("siasun:siasun");
|
|
////_client.DefaultRequestHeaders.Add("Authorization", "Basic " + Convert.ToBase64String(bytes));
|
|
|
|
var response = await _client.PostAsync(string.Format(url, function), content);
|
|
|
|
|
|
if (response.StatusCode == HttpStatusCode.OK)
|
|
{
|
|
result = await response.Content.ReadAsStringAsync();
|
|
|
|
Result ouRresult = JsonConvert.DeserializeObject<Result>(result);
|
|
if (ouRresult.code != "0")
|
|
{
|
|
bResult = false;
|
|
ouRresult.message = $"调用海辰WMS接口({function})返回失败,返回信息:({ouRresult.message})";
|
|
}
|
|
|
|
result = JsonConvert.SerializeObject(ouRresult, Formatting.Indented);
|
|
;
|
|
}
|
|
else
|
|
{
|
|
bResult = false;
|
|
_logger.LogWarning($"调用海辰WMS接口[{function}]异常:参数 requestNo-{requestNo} barcode-{barcode} 原因-StatusCode:{response.StatusCode} ReasonPhrase:{response.ReasonPhrase}");
|
|
result = JsonConvert.SerializeObject(new
|
|
{
|
|
Success = false,
|
|
ReturnMsg = $"调用海辰WMS接口({function})错误,原因-StatusCode:{response.StatusCode} ReasonPhrase:{response.ReasonPhrase}"
|
|
}, Formatting.Indented);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
bResult = false;
|
|
_logger.LogWarning($"调用海辰WMS接口[{function}]异常:参数 requestNo-{requestNo} barcode-{barcode} 原因-{e.Message}");
|
|
result = JsonConvert.SerializeObject(new
|
|
{
|
|
Success = false,
|
|
ReturnMsg = $"调用海辰WMS接口({function})错误,原因:{e.Message}"
|
|
}, Formatting.Indented);
|
|
}
|
|
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();
|
|
|
|
//var temp = await _database.From<T_INTERFACE_RECORD>().Add(interfaceRecord);
|
|
//_database.Save();
|
|
|
|
var driver = Infrastructure.Database.Configuration.Configure("Default");
|
|
using (var context = driver.CreateContext())
|
|
{
|
|
//await context.From<T_INTERFACE_RECORD>().Add(interfaceRecord);
|
|
string sql = $" insert into T_INTERFACE_RECORD (DIRECTION, METHOD, BARCODE, REQUEST_NO, START_TIME, END_TIME, CREATE_TIME, PARAM_IN, PARAM_OUT, RESULT) " +
|
|
$"VALUES ('{interfaceRecord.DIRECTION}','{interfaceRecord.METHOD}','{interfaceRecord.BARCODE}','{interfaceRecord.REQUEST_NO}'," +
|
|
$"'{interfaceRecord.START_TIME}','{interfaceRecord.END_TIME}','{interfaceRecord.CREATE_TIME}','{interfaceRecord.PARAM_IN}','{interfaceRecord.PARAM_OUT}','{interfaceRecord.RESULT}')";
|
|
context.Execute(sql);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogWarning($"创建调用海辰WMS接口[{function}]记录异常。参数 requestNo-{requestNo} barcode-{barcode} 原因-{ex.Message}");
|
|
}
|
|
|
|
try
|
|
{
|
|
var driver = Infrastructure.Database.Configuration.Configure("Default");
|
|
using (var context = driver.CreateContext())
|
|
{
|
|
string requestNoType = $"{requestNo}-{feedbackStatus}";
|
|
|
|
string sql = $" select [ID],[METHOD],[REQUEST_NO_TYPE],[REQUEST_NO],[BARCODE],[RESULT],[START_TIME],[LAST_END_TIME],[PARAM_IN],[LAST_PARAM_OUT],[CREATE_TIME] from T_ERROR_FEEDBACK where REQUEST_NO_TYPE = '{requestNoType}'";
|
|
|
|
var errFeedTemp = context.Query<T_ERROR_FEEDBACK>(sql);
|
|
if (errFeedTemp.Count() == 0)
|
|
{
|
|
T_ERROR_FEEDBACK errFeed = new T_ERROR_FEEDBACK();
|
|
|
|
errFeed.METHOD = function;
|
|
errFeed.REQUEST_NO_TYPE = requestNoType;
|
|
errFeed.REQUEST_NO = requestNo;
|
|
errFeed.BARCODE = barcode;
|
|
errFeed.FEEDBACK_STATUS = feedbackStatus;
|
|
errFeed.RESULT = bResult ? "0" : "1";
|
|
errFeed.START_TIME = interfaceRecord.START_TIME;
|
|
errFeed.LAST_END_TIME = interfaceRecord.END_TIME;
|
|
errFeed.PARAM_IN = paramIn;
|
|
errFeed.LAST_PARAM_OUT = result;
|
|
errFeed.CREATE_TIME = DateTime.Now;
|
|
|
|
sql = $" insert into T_ERROR_FEEDBACK (METHOD, REQUEST_NO_TYPE, REQUEST_NO, BARCODE, RESULT, START_TIME, LAST_END_TIME, PARAM_IN, LAST_PARAM_OUT, CREATE_TIME,FEEDBACK_STATUS) " +
|
|
$"VALUES ('{errFeed.METHOD}','{errFeed.REQUEST_NO_TYPE}','{errFeed.REQUEST_NO}','{errFeed.BARCODE}'," +
|
|
$"'{errFeed.RESULT}','{errFeed.START_TIME}','{errFeed.LAST_END_TIME}','{errFeed.PARAM_IN}','{errFeed.LAST_PARAM_OUT}','{errFeed.CREATE_TIME}','{errFeed.FEEDBACK_STATUS}')";
|
|
|
|
context.Execute(sql);
|
|
}
|
|
else
|
|
{
|
|
T_ERROR_FEEDBACK errFeed = errFeedTemp.First();
|
|
if (errFeed.RESULT != "0")
|
|
{
|
|
errFeed.RESULT = bResult ? "0" : "1";
|
|
errFeed.LAST_END_TIME = interfaceRecord.END_TIME;
|
|
errFeed.PARAM_IN = paramIn;
|
|
errFeed.LAST_PARAM_OUT = result;
|
|
|
|
sql = $" update T_ERROR_FEEDBACK set RESULT = '{errFeed.RESULT}',LAST_END_TIME = '{errFeed.LAST_END_TIME}',PARAM_IN = '{errFeed.PARAM_IN}',LAST_PARAM_OUT = '{errFeed.LAST_PARAM_OUT}' where ID = {errFeed.ID} ";
|
|
|
|
context.Execute(sql);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogWarning($"创建接口ERR[{function}]记录异常。参数 requestNo-{requestNo} barcode-{barcode} feedbackStatus-{feedbackStatus} 原因-{ex.Message}");
|
|
}
|
|
|
|
_logger.LogInformation($"调用海辰WMS接口[{function}]结束:参数 requestNo-{requestNo} barcode-{barcode} result-{result}");
|
|
return result;
|
|
}
|
|
}
|
|
}
|