Files
U8API/UFIDA.U8.Framework.Api/Controllers/U8/APController.cs
T
2024-08-07 18:44:46 +08:00

115 lines
3.5 KiB
C#

using log4net;
using Microsoft.Extensions.Caching.Memory;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Web.Http;
using UFIDA.U8.Framework.Api.ControlObject.AP;
using UFIDA.U8.Framework.Api.ControlObject.Models;
using UFIDA.U8.Framework.Api.ControlObject.U8M;
using UFIDA.U8.Framework.Api.Unit;
// ReSharper disable InconsistentNaming
namespace UFIDA.U8.Framework.Api.Controllers.U8
{
public class APController : ApiController
{
/// <summary>
/// 日志组件
/// </summary>
protected readonly ILog logInfo = LogManager.GetLogger("logInfo");
private static readonly MemoryCache _cache = new MemoryCache(new MemoryCacheOptions { ExpirationScanFrequency = TimeSpan.FromMinutes(10) });
/// <summary>
/// 收付款单保存
/// </summary>
/// <param name="cAccId">系统号</param>
/// <param name="cCardNum">单据类型编码</param>
/// <param name="input">报文数据</param>
/// <returns></returns>
[HttpPost]
[Route("api/U8/AP/{cCardNum}/CloseBillSave")]
[Route("api/U8/AR/{cCardNum}/CloseBillSave")]
public async Task<BaseResult<dynamic>> CloseBillSave(string cAccId, string cCardNum, [FromBody] Dictionary<string, object> input)
{
try
{
if (!_cache.TryGetValue($"U8AP_{cAccId}", out BaseLogin baseLogin))
{
baseLogin = new BaseLogin();
var param = await CommUnit.GetLoginParamter(cAccId);
if (param == null)
{
throw new Exception("未能加载指定系统号的登录信息");
}
baseLogin.Init(param, false);
_cache.Set($"U8AP_{cAccId}", baseLogin);
}
var subId = "";
if (cCardNum == "AP48")
{
subId = "AR";
}
if (cCardNum == "AP49")
{
subId = "AP";
}
if (string.IsNullOrWhiteSpace(subId))
throw new Exception("单据标识不正确");
var bo = new UFAPBO();
var res = bo.CloseBillSave(baseLogin, input, subId);
return res;
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
return new BaseResult<dynamic> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
}
}
/// <summary>
/// 收款单保存
/// </summary>
/// <param name="cAccId"></param>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
[Route("api/U8/AR/AP48/CloseBillSave")]
public async Task<BaseResult<dynamic>> AP48Save(string cAccId, [FromBody] Dictionary<string, object> input)
{
return await CloseBillSave(cAccId, "AP48", input);
}
/// <summary>
/// 收款单保存
/// </summary>
/// <param name="cAccId"></param>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
[Route("api/U8/AP/AP49/CloseBillSave")]
public async Task<BaseResult<dynamic>> AP49Save(string cAccId, [FromBody] Dictionary<string, object> input)
{
return await CloseBillSave(cAccId, "AP49", input);
}
}
}