增加审核参数

This commit is contained in:
qmj
2025-08-28 00:44:34 +08:00
parent b2121a1afb
commit 0720f7a904
24 changed files with 3549 additions and 140 deletions
File diff suppressed because it is too large Load Diff
@@ -1,9 +1,14 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
using System.Web.Http.Description;
using System.Web.UI.WebControls;
using log4net;
using Microsoft.Extensions.Hosting;
using UFIDA.U8.Framework.Api.ControlObject.Common;
using UFIDA.U8.Framework.Api.ControlObject.Entity;
using UFIDA.U8.Framework.Api.ControlObject.Json;
@@ -22,7 +27,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
/// <summary>
/// 日志组件
/// </summary>
protected readonly ILog logInfo = LogManager.GetLogger("logInfo");
protected readonly ILog _logInfo = LogManager.GetLogger("logInfo");
/// <summary>
/// U8登录接口
@@ -36,7 +41,8 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
{
try
{
logInfo.Debug($"当前接口:api/U8/DP/Login,参数:{input.ToJson()}");
_logInfo.Debug($"当前接口:api/U8/DP/Login,参数:{input.ToJson()}");
var db = CommUnit.GetDbClient();
@@ -81,7 +87,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
await Task.Delay(1);
@@ -90,7 +96,6 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
/// <summary>
/// U8登录接口
/// </summary>
@@ -103,7 +108,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
try
{
logInfo.Debug($"当前接口:api/U8/DP/Login/Token,参数:{input.ToJson()}");
_logInfo.Debug($"当前接口:api/U8/DP/Login/Token,参数:{input.ToJson()}");
var token = CommUnit.GetUserToken(input.userToken);
@@ -123,7 +128,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
await Task.Delay(1);
@@ -149,7 +154,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "登录失败", result = ex.Message };
}
@@ -176,7 +181,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<dynamic> { bSuccess = false, message = "查询失败", result = ex.Message };
}
@@ -200,7 +205,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "加密失败", result = ex.Message };
}
@@ -224,7 +229,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "解密失败", result = ex.Message };
}
@@ -259,7 +264,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Debug($"密码未加密:{ex.Message},将进行密码加密");
_logInfo.Debug($"密码未加密:{ex.Message},将进行密码加密");
input.cPassword = CommUnit.GetEncrypt(input.cPassword);
}
@@ -270,7 +275,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<dynamic> { bSuccess = false, message = "新增失败", result = ex.Message };
}
@@ -306,7 +311,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Debug($"密码未加密:{ex.Message},将进行密码加密");
_logInfo.Debug($"密码未加密:{ex.Message},将进行密码加密");
input.cPassword = CommUnit.GetEncrypt(input.cPassword);
}
@@ -317,7 +322,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<dynamic> { bSuccess = false, message = "更新失败", result = ex.Message };
}
@@ -344,10 +349,110 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<dynamic> { bSuccess = false, message = "查询失败", result = ex.Message };
}
}
/// <summary>
/// 上传配置
/// </summary>
/// <param name="cKey"></param>
/// <param name="inputs"></param>
/// <returns></returns>
[HttpPost]
[Route("api/U8/DP/UploadConfig")]
public async Task<BaseResult<string>> UploadConfig(string cKey,[FromBody] List<Dictionary<string,object>> inputs)
{
try
{
var fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"App_Data/{cKey}.json");
File.WriteAllText(fileName, inputs.ToJson());
return new BaseResult<string>()
{
result = "上传成功",
message = "上传成功",
bSuccess = true
};
}
catch (Exception ex)
{
_logInfo.Error(ex.Message, ex);
await Task.Delay(1);
return new BaseResult<string> { bSuccess = false, message = "查询失败", result = ex.Message };
}
}
/// <summary>
/// 下载配置
/// </summary>
/// <param name="cKey"></param>
/// <returns></returns>
[HttpPost]
[Route("api/U8/DP/DownloadConfig")]
public async Task<BaseResult<string>> DownloadConfig(string cKey)
{
try
{
var fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"App_Data/{cKey}.json");
var txt=File.ReadAllText(fileName );
return new BaseResult<string>()
{
result = txt,
message = "上传成功",
bSuccess = true
};
}
catch (Exception ex)
{
_logInfo.Error(ex.Message, ex);
await Task.Delay(1);
return new BaseResult<string> { bSuccess = false, message = "查询失败", result = ex.Message };
}
}
/// <summary>
/// 查询日志
/// </summary>
/// <param name="dDate"></param>
/// <returns></returns>
[HttpGet]
[Route("api/U8/DP/LoadLog")]
public async Task<string> LoadLog(string dDate)
{
try
{
if (!DateTime.TryParse(dDate, out var cDate))
{
throw new Exception("日期格式错误");
}
var fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Log/Log_{cDate:yyyyMMdd}.log");
var txt = File.ReadAllLines(fileName);
return string.Join(Environment.NewLine, txt);
}
catch (Exception ex)
{
_logInfo.Error(ex.Message, ex);
await Task.Delay(1);
return ex.Message;
}
}
}
}
@@ -1,9 +1,17 @@
using System;
using log4net;
using Microsoft.Extensions.Caching.Memory;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http;
using UFIDA.U8.Framework.Api.ControlObject.Entity;
using UFIDA.U8.Framework.Api.ControlObject.Json;
using UFIDA.U8.Framework.Api.ControlObject.U8M;
using UFIDA.U8.Framework.Api.Entity;
using UFIDA.U8.Framework.Api.Unit;
namespace UFIDA.U8.Framework.Api.Controllers.U8
{
@@ -12,6 +20,363 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
/// </summary>
public class MOController : ApiController
{
/// <summary>
/// 日志组件
/// </summary>
private 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="input"></param>
/// <returns></returns>
[HttpPost]
[Route("api/U8/MO/MO21/Load")]
public async Task<BaseResult<dynamic>> MO21_Load(string cAccId,[FromBody] Dictionary<string, object> input)
{
var workId = SnowFlakeSingle.Instance.NextId();
try
{
//var userToken = Request.Headers.GetValues("userToken").First();
//if (userToken!= "04fafa004ad8851485d9026229964a488f2080907248680178bae68a236b33bc086aa234c94927e4099f21209bea98640ad4e9b1b5319cd5f55144606d82f3dbeff44ec66575ca2438144df9fa3f3e1babd80a140d2170975a031fca1ade326234b4d9a61386")
//{
// throw new Exception("调用信息不正确,请确认参数");
//}
_logInfo.Debug($"作业Id:{workId}-----单据:MO21,操作:查询,对接账套:{cAccId},条件:{input.ToJson()}");
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
{
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
var param = await CommUnit.GetLoginParamter(cAccId);
if (param == null)
{
throw new Exception("未能加载指定系统号的登录信息");
}
baseLogin.Init(param, false);
_cache.Clear();
_cache.Set($"U8_{cAccId}", baseLogin);
}
var db = new SqlSugarClient(new ConnectionConfig()
{
DbType = DbType.SqlServer,
ConfigId = cAccId,
ConnectionString = baseLogin.UFDataConnstringForNet
});
var mo21Txt = File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data/MO21.json"));
var mo21s = mo21Txt.ToObject<List<QuerySelect>>();
var query = db.Queryable<dynamic>().AS("v_mom_order_wf", "v_mom_order_wf")
.AddJoinInfo("v_mom_orderdetail_wf", "v_mom_orderdetail_wf", "v_mom_order_wf.MoId=v_mom_orderdetail_wf.MoId");
if (db.DbMaintenance.IsAnyTable("mom_order_extradefine", false))
{
query.AddJoinInfo("mom_order_extradefine", "mom_order_extradefine",
"v_mom_order_wf.MoId=mom_order_extradefine.MoId");
}
if (db.DbMaintenance.IsAnyTable("mom_orderdetail_extradefine", false))
{
query.AddJoinInfo("mom_orderdetail_extradefine", "mom_order_extradefine",
"v_mom_orderdetail_wf.MoDId=mom_orderdetail_extradefine.MoDId");
}
if (input != null)
{
var conModels = new List<IConditionalModel>();
foreach (var o in input)
{
if (o.Key == "MoId" && input.ContainsKey($"{o.Key}__2"))
{
conModels.Add(new ConditionalModel
{
FieldName = "v_mom_order_wf.MoId",
ConditionalType = ConditionalType.GreaterThanOrEqual,
FieldValue = $"{o.Value}"
});
}
else if (o.Key == "MoId")
{
conModels.Add(new ConditionalModel
{
FieldName = "v_mom_order_wf.MoId",
ConditionalType = ConditionalType.Equal,
FieldValue = $"{o.Value}"
});
}
else if (o.Key == "MoId__2")
{
conModels.Add(new ConditionalModel
{
FieldName = "v_mom_order_wf.MoId",
ConditionalType = ConditionalType.LessThanOrEqual,
FieldValue = $"{o.Value}"
});
}else if (o.Key == "MoDId" && input.ContainsKey($"{o.Key}__2"))
{
conModels.Add(new ConditionalModel
{
FieldName = "v_mom_orderdetail_wf.MoDId",
ConditionalType = ConditionalType.GreaterThanOrEqual,
FieldValue = $"{o.Value}"
});
}
else if (o.Key == "MoDId")
{
conModels.Add(new ConditionalModel
{
FieldName = "v_mom_orderdetail_wf.MoDId",
ConditionalType = ConditionalType.Equal,
FieldValue = $"{o.Value}"
});
}
else if (o.Key == "MoDId__2")
{
conModels.Add(new ConditionalModel
{
FieldName = "v_mom_orderdetail_wf.MoDId",
ConditionalType = ConditionalType.LessThanOrEqual,
FieldValue = $"{o.Value}"
});
}
else if (o.Key.EndsWith("__2"))
{
conModels.Add(new ConditionalModel
{
FieldName = $"{o.Key.Replace("__2", "")}",
ConditionalType = ConditionalType.LessThanOrEqual,
FieldValue = $"{o.Value}"
});
}
else if (input.ContainsKey($"{o.Key}__2"))
{
conModels.Add(new ConditionalModel
{
FieldName = $"{o.Key}",
ConditionalType = ConditionalType.GreaterThanOrEqual,
FieldValue = $"{o.Value}"
});
}
else
{
conModels.Add(new ConditionalModel
{
FieldName = o.Key,
ConditionalType = ConditionalType.Equal,
FieldValue = $"{o.Value}"
});
}
}
query.Where(conModels);
}
if (mo21s != null && mo21s.Count > 0)
{
var selector = new List<SelectModel>();
foreach (var mo21 in mo21s)
{
var model = new SelectModel() { FieldName = $"{mo21.TableName}.{mo21.FieldName}" };
if (mo21.AsName != null && !string.IsNullOrWhiteSpace(mo21.AsName))
{
model.AsName = mo21.AsName;
}
selector.Add(model);
}
query.Select(selector);
}
return new BaseResult<dynamic> { bSuccess = true, message = "查询成功", result = await query.ToListAsync() };
}
catch (Exception ex)
{
_logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex);
await Task.Delay(1);
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/MO/MO2101/Load")]
public async Task<BaseResult<dynamic>> MO2101_Load(string cAccId, [FromBody] Dictionary<string, object> input)
{
var workId = SnowFlakeSingle.Instance.NextId();
try
{
//var userToken = Request.Headers.GetValues("userToken").First();
//if (userToken != "04fafa004ad8851485d9026229964a488f2080907248680178bae68a236b33bc086aa234c94927e4099f21209bea98640ad4e9b1b5319cd5f55144606d82f3dbeff44ec66575ca2438144df9fa3f3e1babd80a140d2170975a031fca1ade326234b4d9a61386")
//{
// throw new Exception("调用信息不正确,请确认参数");
//}
_logInfo.Debug($"作业Id:{workId}-----单据:MO2101,操作:查询,对接账套:{cAccId},条件:{input.ToJson()}");
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
{
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
var param = await CommUnit.GetLoginParamter(cAccId);
if (param == null)
{
throw new Exception("未能加载指定系统号的登录信息");
}
baseLogin.Init(param, false);
_cache.Clear();
_cache.Set($"U8_{cAccId}", baseLogin);
}
var db = new SqlSugarClient(new ConnectionConfig()
{
DbType = DbType.SqlServer,
ConfigId = cAccId,
ConnectionString = baseLogin.UFDataConnstringForNet
});
var mo2101Txt = File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data/MO2101.json"));
var mo2101s = mo2101Txt.ToObject<List<QuerySelect>>();
var query = db.Queryable<dynamic>().AS("mom_moallocate", "mom_moallocate");
if (db.DbMaintenance.IsAnyTable("mom_moallocate_extradefine", false))
{
query.AddJoinInfo("mom_moallocate_extradefine", "mom_moallocate_extradefinemom_moallocate_extradefine",
"om_moallocate.AllocateId=mom_moallocate_extradefine.AllocateId");
}
if (input != null)
{
var conModels = new List<IConditionalModel>();
foreach (var o in input)
{
if (o.Key == "AllocateId" && input.ContainsKey($"{o.Key}__2"))
{
conModels.Add(new ConditionalModel
{
FieldName = "mom_moallocate.AllocateId",
ConditionalType = ConditionalType.GreaterThanOrEqual,
FieldValue = $"{o.Value}"
});
}
else if (o.Key == "AllocateId")
{
conModels.Add(new ConditionalModel
{
FieldName = "mom_moallocate.AllocateId",
ConditionalType = ConditionalType.Equal,
FieldValue = $"{o.Value}"
});
}
else if (o.Key == "AllocateId__2")
{
conModels.Add(new ConditionalModel
{
FieldName = "mom_moallocate.AllocateId",
ConditionalType = ConditionalType.LessThanOrEqual,
FieldValue = $"{o.Value}"
});
}
else if (o.Key.EndsWith("__2"))
{
conModels.Add(new ConditionalModel
{
FieldName = $"{o.Key.Replace("__2", "")}",
ConditionalType = ConditionalType.LessThanOrEqual,
FieldValue = $"{o.Value}"
});
}
else if (input.ContainsKey($"{o.Key}__2"))
{
conModels.Add(new ConditionalModel
{
FieldName = $"{o.Key}",
ConditionalType = ConditionalType.GreaterThanOrEqual,
FieldValue = $"{o.Value}"
});
}
else
{
conModels.Add(new ConditionalModel
{
FieldName = o.Key,
ConditionalType = ConditionalType.Equal,
FieldValue = $"{o.Value}"
});
}
}
query.Where(conModels);
}
if (mo2101s != null && mo2101s.Count > 0)
{
var selector = new List<SelectModel>();
foreach (var mo2101 in mo2101s)
{
var model = new SelectModel() { FieldName = $"{mo2101.TableName}.{mo2101.FieldName}" };
if (mo2101.AsName != null && !string.IsNullOrWhiteSpace(mo2101.AsName))
{
model.AsName = mo2101.AsName;
}
selector.Add(model);
}
query.Select(selector);
}
return new BaseResult<dynamic> { bSuccess = true, message = "查询成功", result = await query.ToListAsync() };
}
catch (Exception ex)
{
_logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex);
await Task.Delay(1);
return new BaseResult<dynamic> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
}
}
}
}
@@ -17,6 +17,7 @@ using UFIDA.U8.Framework.Api.ControlObject.ST;
using UFIDA.U8.Framework.Api.ControlObject.U8M;
using UFIDA.U8.Framework.Api.Models;
using UFIDA.U8.Framework.Api.Unit;
using static System.Runtime.CompilerServices.RuntimeHelpers;
namespace UFIDA.U8.Framework.Api.Controllers.U8
{
@@ -28,7 +29,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
/// <summary>
/// 日志组件
/// </summary>
protected readonly ILog logInfo = LogManager.GetLogger("logInfo");
protected readonly ILog _logInfo = LogManager.GetLogger("logInfo");
private static readonly MemoryCache _cache = new MemoryCache(new MemoryCacheOptions { ExpirationScanFrequency = TimeSpan.FromMinutes(10) });
@@ -56,13 +57,13 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var workId = SnowFlakeSingle.Instance.NextId();
logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:新增,对接账套:{cAccId},数据:{input.ToJson()}");
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:新增,对接账套:{cAccId},数据:{input.ToJson()}");
//LoginParamter param;
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
{
logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
@@ -84,7 +85,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
// param = await CommUnit.GetLoginParamter(cAccId);
//}
logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
_logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
var voucherInfo = await db.Queryable<SysU8VoucherDefine>().FirstAsync(s => s.CardNumber == cCardNum);
@@ -100,45 +101,45 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
bGetCode = true;
codeKey = defs.Where(a => a.bDefault == true && a.cPosition == "H" && a.DefaultValue == "单号" && a.bEnable == true).Select(a => a.FieldName).First();
logInfo.Debug($"作业Id:{workId}-----配置获取单号");
_logInfo.Debug($"作业Id:{workId}-----配置获取单号");
}
else
{
logInfo.Debug($"作业Id:{workId}-----没有单号需要自动指定");
_logInfo.Debug($"作业Id:{workId}-----没有单号需要自动指定");
}
#region 调整日期,去掉时间部分
if (input.ContainsKey("ddate"))
{
logInfo.Debug($"作业Id:{workId}-----调整日期,去掉时间部分");
_logInfo.Debug($"作业Id:{workId}-----调整日期,去掉时间部分");
input["ddate"] = $"{Convert.ToDateTime(input["ddate"]):yyyy-MM-dd}";
}
if (input.ContainsKey("dtvdate"))
{
logInfo.Debug($"作业Id:{workId}-----调整日期,去掉时间部分");
_logInfo.Debug($"作业Id:{workId}-----调整日期,去掉时间部分");
input["dtvdate"] = $"{Convert.ToDateTime(input["dtvdate"]):yyyy-MM-dd}";
}
#endregion
logInfo.Debug($"作业Id:{workId}-----设置表头数据");
_logInfo.Debug($"作业Id:{workId}-----设置表头数据");
input.SetDictionaryData(defs, baseLogin.Connection, newNumber);
logInfo.Debug($"作业Id:{workId}-----读取表体数据");
_logInfo.Debug($"作业Id:{workId}-----读取表体数据");
var bodyData = input[voucherInfo.BodyName].ToJson().ToList<Dictionary<string, object>>(); //读取表体的数据
if (bodyData == null || bodyData.Count <= 0)
throw new Exception("无表体数据!");
logInfo.Debug($"作业Id:{workId}-----获取表体字段配置");
_logInfo.Debug($"作业Id:{workId}-----获取表体字段配置");
var defsBody = await db.Queryable<SysU8FieldDefine>().Where(s => s.CardNumber == cCardNum && s.cPosition == "B" && s.bEnable == true).ToListAsync(); //获取表体的字段配置
var rowNo = 1;
foreach (var body in bodyData)
{
logInfo.Debug($"作业Id:{workId}-----设置第{rowNo}行单据数据");
_logInfo.Debug($"作业Id:{workId}-----设置第{rowNo}行单据数据");
body.SetDictionaryData(defsBody, baseLogin.Connection, newNumber, rowNo);
rowNo++;
@@ -154,7 +155,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
}
@@ -182,13 +183,13 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var workId = SnowFlakeSingle.Instance.NextId();
logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:审核,对接账套:{cAccId},单号:{cCode}");
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:审核,对接账套:{cAccId},单号:{cCode}");
//LoginParamter param;
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin) || baseLogin == null)
{
logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
@@ -210,7 +211,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
// param = await CommUnit.GetLoginParamter(cAccId);
//}
logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
_logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
var voucherInfo = await db.Queryable<SysU8VoucherDefine>().FirstAsync(s => s.CardNumber == cCardNum);
@@ -220,7 +221,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "审核失败", result = ex.Message };
}
@@ -248,11 +249,11 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var workId = SnowFlakeSingle.Instance.NextId();
logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:审核,对接账套:{cAccId},ID:{voucherId}");
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:审核,对接账套:{cAccId},ID:{voucherId}");
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
{
logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
@@ -270,7 +271,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
_cache.Set($"U8_{cAccId}", baseLogin);
}
logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
_logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
var voucherInfo = await db.Queryable<SysU8VoucherDefine>().FirstAsync(s => s.CardNumber == cCardNum);
@@ -280,7 +281,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "审核失败", result = ex.Message };
}
@@ -337,13 +338,13 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
strId = string.Join(",", voucherIds);
}
logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:审核,对接账套:{cAccId},单号:{strCode},ID:{strId}");
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:审核,对接账套:{cAccId},单号:{strCode},ID:{strId}");
//LoginParamter param;
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
{
logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
@@ -365,7 +366,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
// param = await CommUnit.GetLoginParamter(cAccId);
//}
logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
_logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
var voucherInfo = await db.Queryable<SysU8VoucherDefine>().FirstAsync(s => s.CardNumber == cCardNum);
@@ -386,7 +387,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<List<BaseResult<string>>> { bSuccess = false, message = ex.Message, result = null };
}
@@ -414,11 +415,11 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var workId = SnowFlakeSingle.Instance.NextId();
logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:弃审,对接账套:{cAccId},单号:{cCode}");
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:弃审,对接账套:{cAccId},单号:{cCode}");
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin) || baseLogin == null)
{
logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
@@ -436,7 +437,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
_cache.Set($"U8_{cAccId}", baseLogin);
}
logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
_logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
var voucherInfo = await db.Queryable<SysU8VoucherDefine>().FirstAsync(s => s.CardNumber == cCardNum);
@@ -446,7 +447,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "弃审失败", result = ex.Message };
}
@@ -474,11 +475,11 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var workId = SnowFlakeSingle.Instance.NextId();
logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:弃审,对接账套:{cAccId},ID:{voucherId}");
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:弃审,对接账套:{cAccId},ID:{voucherId}");
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
{
logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
@@ -496,7 +497,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
_cache.Set($"U8_{cAccId}", baseLogin);
}
logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
_logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
var voucherInfo = await db.Queryable<SysU8VoucherDefine>().FirstAsync(s => s.CardNumber == cCardNum);
@@ -506,7 +507,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "弃审失败", result = ex.Message };
}
@@ -563,13 +564,13 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
strId = string.Join(",", voucherIds);
}
logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:弃审,对接账套:{cAccId},单号:{strCode},ID:{strId}");
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:弃审,对接账套:{cAccId},单号:{strCode},ID:{strId}");
//LoginParamter param;
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
{
logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
@@ -591,7 +592,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
// param = await CommUnit.GetLoginParamter(cAccId);
//}
logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
_logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
var voucherInfo = await db.Queryable<SysU8VoucherDefine>().FirstAsync(s => s.CardNumber == cCardNum);
@@ -612,7 +613,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<List<BaseResult<string>>> { bSuccess = false, message = ex.Message, result = null };
}
@@ -640,11 +641,11 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var workId = SnowFlakeSingle.Instance.NextId();
logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:删除,对接账套:{cAccId},单号:{cCode}");
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:删除,对接账套:{cAccId},单号:{cCode}");
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin) || baseLogin == null)
{
logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
@@ -662,7 +663,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
_cache.Set($"U8_{cAccId}", baseLogin);
}
logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
_logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
var voucherInfo = await db.Queryable<SysU8VoucherDefine>().FirstAsync(s => s.CardNumber == cCardNum);
@@ -672,7 +673,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "删除失败", result = ex.Message };
}
@@ -700,11 +701,11 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var workId = SnowFlakeSingle.Instance.NextId();
logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:删除,对接账套:{cAccId},ID:{voucherId}");
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:删除,对接账套:{cAccId},ID:{voucherId}");
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
{
logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
@@ -722,7 +723,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
_cache.Set($"U8_{cAccId}", baseLogin);
}
logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
_logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
var voucherInfo = await db.Queryable<SysU8VoucherDefine>().FirstAsync(s => s.CardNumber == cCardNum);
@@ -732,7 +733,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = "删除失败", result = ex.Message };
}
@@ -754,12 +755,12 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
[Route("api/U8/PU/{cCardNum}/Delete")]
public async Task<BaseResult<List<BaseResult<string>>>> Delete(string cAccId, string cCardNum, [FromBody] STInput input, bool bPositive = true, string sBillType = null, string sBusType = null, UseMode UserMode = UseMode.CS, string sOverDetailsXml = null)
{
var workId = SnowFlakeSingle.Instance.NextId();
try
{
var db = CommUnit.GetDbClient();
var workId = SnowFlakeSingle.Instance.NextId();
if (input == null)
{
throw new Exception("参数不能为空");
@@ -789,11 +790,11 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
strId = string.Join(",", voucherIds);
}
logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:删除,对接账套:{cAccId},单号:{strCode},ID:{strId}");
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:删除,对接账套:{cAccId},单号:{strCode},ID:{strId}");
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
{
logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
@@ -811,7 +812,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
_cache.Set($"U8_{cAccId}", baseLogin);
}
logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
_logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
var voucherInfo = await db.Queryable<SysU8VoucherDefine>().FirstAsync(s => s.CardNumber == cCardNum);
@@ -832,11 +833,259 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
}
catch (Exception ex)
{
logInfo.Error(ex.Message, ex);
_logInfo.Error(ex.Message, ex);
return new BaseResult<List<BaseResult<string>>> { bSuccess = false, message = ex.Message, result = null };
}
}
/// <summary>
/// 查询特定单据部分
/// </summary>
/// <param name="cAccId">系统号</param>
/// <param name="cCardNum">单据类型编码</param>
/// <param name="input">查询条件</param>
/// <param name="cCardPostion">查询所属区域 H:表头,B:表体</param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
[HttpPost]
[Route("api/U8/PU/{cCardNum}/Load")]
[Route("api/U8/PU/{cCardNum}/Load/{cCardPostion}")]
public async Task<BaseResult<dynamic>> Load(string cAccId, string cCardNum, [FromBody] Dictionary<string, object> input, string cCardPostion = "H")
{
var workId = SnowFlakeSingle.Instance.NextId();
try
{
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:查询,对接账套:{cAccId},条件:{input.ToJson()}");
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
{
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
var param = await CommUnit.GetLoginParamter(cAccId);
if (param == null)
{
throw new Exception("未能加载指定系统号的登录信息");
}
baseLogin.Init(param, false);
_cache.Clear();
_cache.Set($"U8_{cAccId}", baseLogin);
}
var vouchers = CommonHelper.GetVouchers(baseLogin.Connection, cCardNum);
if (vouchers == null)
{
throw new Exception("未能获取到单据配置信息");
}
var db = new SqlSugarClient(new ConnectionConfig()
{
DbType = DbType.SqlServer,
ConfigId = cAccId,
ConnectionString = baseLogin.UFDataConnstringForNet
});
var cBTQName = vouchers.cBTQName;
var cBWQName = vouchers.cBWQName;
var cBTTblName = vouchers.cBTTblName;
var cBWTblName = vouchers.cBWTblName;
var voucherIdFieldName = vouchers.voucherIdFieldName;
var vouchersIdFieldName = "";
var tableName = cBTQName;
var colsHeadList=new List<string>();
var colsBodyList=new List<string>();
var bExtHead = false;
var bExtBody = false;
if (cCardPostion == "H")
{
tableName = cBWQName;
}
if (cCardPostion == "B")
{
tableName = cBWQName;
}
var cDefWhere = vouchers.cDefWhere;
var query = db.Queryable<dynamic>().AS(cBTQName, cBTQName);
if (!string.IsNullOrWhiteSpace(cBWQName))
{
query.AddJoinInfo(cBWQName, cBWQName, $"{cBTQName}.[{voucherIdFieldName}]={cBWQName}.[{voucherIdFieldName}]");
var bodyCols = db.DbMaintenance.GetColumnInfosByTableName(cBWQName);
if (bodyCols != null && bodyCols.Count > 0)
{
colsBodyList.AddRange(from col in bodyCols where !col.DbColumnName.ToLower().Contains("ufts") && col.DbColumnName.ToLower()!=voucherIdFieldName select $"{cBWQName}.[{col.DbColumnName}]");
}
}
var headCols = db.DbMaintenance.GetColumnInfosByTableName(cBTQName);
if(headCols!=null && headCols.Count > 0)
{
colsHeadList.AddRange(from col in headCols where !col.DbColumnName.ToLower().Contains("ufts") select $"{cBTQName}.[{col.DbColumnName}]");
}
if (db.DbMaintenance.IsAnyTable($"{cBTTblName}_extradefine", false))
{
bExtHead = true;
var cols = db.DbMaintenance.GetColumnInfosByTableName($"{cBTTblName}_extradefine");
if (cols != null && cols.Count > 0)
{
foreach (var col in cols)
{
if (col.DbColumnName.ToLower().StartsWith("chdefine"))
{
colsHeadList.Add($"{cBTTblName}_extradefine.[{col.DbColumnName.ToLower()}]");
}
else
{
vouchersIdFieldName = col.DbColumnName;
}
}
}
query.AddJoinInfo($"{cBTTblName}_extradefine", $"{cBTTblName}_extradefine", $"{cBTQName}.[{voucherIdFieldName}]={cBTTblName}_extradefine.[{voucherIdFieldName}]");
}
if (db.DbMaintenance.IsAnyTable($"{cBWTblName}_extradefine", false))
{
bExtBody = true;
var cols= db.DbMaintenance.GetColumnInfosByTableName($"{cBWTblName}_extradefine");
if (cols != null && cols.Count > 0)
{
foreach (var col in cols)
{
if (col.DbColumnName.ToLower().StartsWith("cbdefine"))
{
colsBodyList.Add($"{cBWTblName}_extradefine.[{col.DbColumnName.ToLower()}]");
}
else
{
vouchersIdFieldName = col.DbColumnName;
}
}
}
query.AddJoinInfo($"{cBWTblName}_extradefine", $"{cBWTblName}_extradefine", $"{cBWQName}.[{vouchersIdFieldName}]={cBWTblName}_extradefine.[{vouchersIdFieldName}]");
}
if (input != null)
{
var conModels = new List<IConditionalModel>();
foreach (var o in input)
{
if (o.Key == "dModifyDate")
{
conModels.Add(new ConditionalModel
{
FieldName = "caudittime",
ConditionalType = ConditionalType.GreaterThanOrEqual,
FieldValue = $"{o.Value}"
});
}
else if(o.Key == "dModifyDate__2")
{
conModels.Add(new ConditionalModel
{
FieldName = "caudittime",
ConditionalType = ConditionalType.LessThanOrEqual,
FieldValue = $"{o.Value}"
});
}
else if ($"{o.Value}".EndsWith("%") || $"{o.Value}".StartsWith("%"))
{
conModels.Add(new ConditionalModel
{
FieldName = $"{o.Key}",
ConditionalType = ConditionalType.Like,
FieldValue = $"{o.Value}"
});
}
else if (o.Key.EndsWith("__2"))
{
conModels.Add(new ConditionalModel
{
FieldName = $"{o.Key.Replace("__2", "")}",
ConditionalType = ConditionalType.LessThanOrEqual,
FieldValue = $"{o.Value}"
});
}
else if (input.ContainsKey($"{o.Key}__2"))
{
conModels.Add(new ConditionalModel
{
FieldName = $"{o.Key}",
ConditionalType = ConditionalType.GreaterThanOrEqual,
FieldValue = $"{o.Value}"
});
}
else
{
conModels.Add(new ConditionalModel
{
FieldName = o.Key,
ConditionalType = ConditionalType.Equal,
FieldValue = $"{o.Value}"
});
}
}
query.Where(conModels);
}
query.Where(cDefWhere);
if (cCardPostion == "H")
{
if (bExtHead)
{
query.Select($"{string.Join(",", colsHeadList)}").Distinct();
}
else
{
query.Select($"{string.Join(",", colsHeadList)}").Distinct();
}
}
if (cCardPostion == "B")
{
if (bExtBody)
{
query.Select($"{string.Join(",",colsBodyList)}").Distinct();
}
else
{
query.Select($"{string.Join(",", colsBodyList)}").Distinct();
}
}
_logInfo.Debug(query.ToSqlString());
return new BaseResult<dynamic>() { bSuccess = true, message = "查询成功", result = await query.ToListAsync() };
}
catch (Exception ex)
{
_logInfo.Error(ex.Message, ex);
return new BaseResult<dynamic> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
}
}
}
}
@@ -0,0 +1,150 @@
using log4net;
using Microsoft.Extensions.Caching.Memory;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.UI.WebControls;
using UFIDA.U8.Framework.Api.Common.Entity;
using UFIDA.U8.Framework.Api.ControlObject.Common;
using UFIDA.U8.Framework.Api.ControlObject.Entity;
using UFIDA.U8.Framework.Api.ControlObject.Json;
using UFIDA.U8.Framework.Api.ControlObject.PU;
using UFIDA.U8.Framework.Api.ControlObject.SA;
using UFIDA.U8.Framework.Api.ControlObject.U8M;
using UFIDA.U8.Framework.Api.Unit;
namespace UFIDA.U8.Framework.Api.Controllers.U8
{
public class SAController : ApiController
{
/// <summary>
/// 日志组件
/// </summary>
private 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>
/// <param name="VoucherState">单据状态:0新增,1修改</param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
[HttpPost]
[Route("api/U8/SA/{cCardNum}/Save")]
public async Task<BaseResult<string>> Save(string cAccId, string cCardNum, [FromBody] Dictionary<string, object> input, int VoucherState = 0)
{
try
{
var db = CommUnit.GetDbClient();
var workId = SnowFlakeSingle.Instance.NextId();
_logInfo.Debug($"作业Id:{workId}-----单据:{cCardNum},操作:新增,对接账套:{cAccId},数据:{input.ToJson()}");
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
{
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
baseLogin = new BaseLogin();
var param = await CommUnit.GetLoginParamter(cAccId);
if (param == null)
{
throw new Exception("未能加载指定系统号的登录信息");
}
baseLogin.Init(param, false);
_cache.Clear();
_cache.Set($"U8_{cAccId}", baseLogin);
}
_logInfo.Debug($"作业Id:{workId}-----登录信息获取完成,缓存设置完成,开始加载单据配置信息");
var voucherInfo = await db.Queryable<SysU8VoucherDefine>().FirstAsync(s => s.CardNumber == cCardNum);
var defs = await db.Queryable<SysU8FieldDefine>().Where(s => s.CardNumber == cCardNum && s.cPosition == "H" && s.bEnable == true).ToListAsync(); //查询表头字段配置,供后续设置字段值
var newNumber = "";
var bGetCode = false;
var codeKey = "";
if (defs.Any(a => a.bDefault == true && a.cPosition == "H" && a.DefaultValue == "单号" && a.bEnable == true))
{
bGetCode = true;
codeKey = defs.Where(a => a.bDefault == true && a.cPosition == "H" && a.DefaultValue == "单号" && a.bEnable == true).Select(a => a.FieldName).First();
_logInfo.Debug($"作业Id:{workId}-----配置获取单号");
}
else
{
_logInfo.Debug($"作业Id:{workId}-----没有单号需要自动指定");
}
#region 调整日期,去掉时间部分
if (input.ContainsKey("ddate"))
{
_logInfo.Debug($"作业Id:{workId}-----调整日期,去掉时间部分");
input["ddate"] = $"{Convert.ToDateTime(input["ddate"]):yyyy-MM-dd}";
}
if (input.ContainsKey("dtvdate"))
{
_logInfo.Debug($"作业Id:{workId}-----调整日期,去掉时间部分");
input["dtvdate"] = $"{Convert.ToDateTime(input["dtvdate"]):yyyy-MM-dd}";
}
#endregion
_logInfo.Debug($"作业Id:{workId}-----设置表头数据");
input.SetDictionaryData(defs, baseLogin.Connection, newNumber);
_logInfo.Debug($"作业Id:{workId}-----读取表体数据");
var bodyData = input[voucherInfo.BodyName].ToJson().ToList<Dictionary<string, object>>(); //读取表体的数据
if (bodyData == null || bodyData.Count <= 0)
throw new Exception("无表体数据!");
_logInfo.Debug($"作业Id:{workId}-----获取表体字段配置");
var defsBody = await db.Queryable<SysU8FieldDefine>().Where(s => s.CardNumber == cCardNum && s.cPosition == "B" && s.bEnable == true).ToListAsync(); //获取表体的字段配置
var rowNo = 1;
foreach (var body in bodyData)
{
_logInfo.Debug($"作业Id:{workId}-----设置第{rowNo}行单据数据");
body.SetDictionaryData(defsBody, baseLogin.Connection, newNumber, rowNo);
rowNo++;
}
input[voucherInfo.BodyName] = bodyData;
var co = new ClsVoucherCO_SA();
var res = await co.Save(baseLogin, input, cCardNum, (VoucherTypeSA)Convert.ToInt32(voucherInfo.VoucherType), VoucherState,bGetCode, codeKey, voucherInfo.bVerify, voucherInfo.iswfcontrolled, voucherInfo.cFlowFieldName);
return res;
}
catch (Exception ex)
{
_logInfo.Error(ex.Message, ex);
return new BaseResult<string> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
}
}
}
}
@@ -4,9 +4,7 @@ using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
using UFIDA.U8.Framework.Api.Common.Entity;
using UFIDA.U8.Framework.Api.ControlObject.Common;
@@ -46,10 +44,11 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
/// <param name="bIsRedVouch">是否红字单据</param>
/// <param name="sAddedState">传空字符串</param>
/// <param name="bReMote">是否远程</param>
/// <param name="bVerify">是否生成时审核</param>
/// <returns></returns>
[HttpPost]
[Route("api/U8/ST/{cCardNum}/Insert")]
public async Task<BaseResult<string>> Insert(string cAccId ,string cCardNum,[FromBody] Dictionary<string, object> input, bool bCheck = true,bool bBeforCheckStock=true,bool bIsRedVouch=false,string sAddedState="",bool bReMote=false)
public async Task<BaseResult<string>> Insert(string cAccId ,string cCardNum,[FromBody] Dictionary<string, object> input, bool bCheck = true,bool bBeforCheckStock=true,bool bIsRedVouch=false,string sAddedState="",bool bReMote=false,bool? bVerify=null)
{
try
{
@@ -244,7 +243,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var co = new USERPCO();
var res = await co.Insert(baseLogin, input, cCardNum, voucherInfo.VoucherType, bGetCode, codeKey, bCheck, bBeforCheckStock, bIsRedVouch, sAddedState, bReMote, voucherInfo.bVerify,voucherInfo.bPrintDom);
var res = await co.Insert(baseLogin, input, cCardNum, voucherInfo.VoucherType, bGetCode, codeKey, bCheck, bBeforCheckStock, bIsRedVouch, sAddedState, bReMote, bVerify??voucherInfo.bVerify,voucherInfo.bPrintDom);
return res;
}
@@ -267,10 +266,11 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
/// <param name="bIsRedVouch">是否红字单据</param>
/// <param name="sAddedState">传空字符串</param>
/// <param name="bReMote">是否远程</param>
/// <param name="bVerify">是否生成时审核</param>
/// <returns></returns>
[HttpPost]
[Route("api/U8/ST/{cCardNum}/Insert/Token")]
public async Task<BaseResult<string>> InsertToken(string cCardNum, [FromBody] Dictionary<string, object> input, bool bCheck = true, bool bBeforCheckStock = true, bool bIsRedVouch = false, string sAddedState = "", bool bReMote = false)
public async Task<BaseResult<string>> InsertToken(string cCardNum, [FromBody] Dictionary<string, object> input, bool bCheck = true, bool bBeforCheckStock = true, bool bIsRedVouch = false, string sAddedState = "", bool bReMote = false, bool? bVerify = null)
{
try
{
@@ -468,7 +468,7 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var co = new USERPCO();
var res = await co.Insert(baseLogin, input, cCardNum, voucherInfo.VoucherType, bGetCode, codeKey, bCheck, bBeforCheckStock, bIsRedVouch, sAddedState, bReMote, voucherInfo.bVerify, voucherInfo.bPrintDom);
var res = await co.Insert(baseLogin, input, cCardNum, voucherInfo.VoucherType, bGetCode, codeKey, bCheck, bBeforCheckStock, bIsRedVouch, sAddedState, bReMote, bVerify??voucherInfo.bVerify, voucherInfo.bPrintDom);
return res;
}