1.修复报工单无法连续制单的问题

This commit is contained in:
qmj
2025-07-25 20:32:33 +08:00
parent ad04f2d658
commit b2121a1afb
11 changed files with 705 additions and 390 deletions
@@ -50,11 +50,18 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
try
{
var userToken = Request.Headers.GetValues("userToken").First();
if (!string.IsNullOrWhiteSpace(userToken))
try
{
return await MoRoutingBillSaveToken(cCardNum, input);
var userToken = Request.Headers.GetValues("userToken").First();
if (!string.IsNullOrWhiteSpace(userToken))
{
return await MoRoutingBillSaveToken(cCardNum, input);
}
}
catch (Exception ex)
{
_logInfo.Debug($"作业Id:{workId}-----userToken获取失败,错误信息:{ex.Message}");
}
_logInfo.Debug($"作业Id:{workId}-----当前接口:api/U8/SFC/MoRoutingBillSave,单据类型编码:{cCardNum},报文数据:{input.ToJson()}");
@@ -62,36 +69,16 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
if (cCardNum != "FC90" && cCardNum != "FC91" && cCardNum != "FC92")
throw new Exception("当前接口不支持此类型的单据");
if (!_cache.TryGetValue($"U8_{cAccId}", out BaseLogin baseLogin))
var baseLogin = new BaseLogin();
var param = await CommUnit.GetLoginParamter(cAccId);
if (param == null)
{
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
//可能存在其他的缓存,先清掉
_cache.Clear();
baseLogin = new BaseLogin();
var param = await CommUnit.GetLoginParamter(cAccId);
if (param == null)
{
throw new Exception("未能加载指定系统号的登录信息");
}
baseLogin.Init(param);
_cache.Set($"U8_{cAccId}", baseLogin);
throw new Exception("未能加载指定系统号的登录信息");
}
if (baseLogin == null)
{
throw new Exception("登录对象加载失败");
}
if (!baseLogin.CheckCallar())
{
baseLogin.RefreshCallar(baseLogin.userToken);
}
baseLogin.Init(param);
var bo = new MoRoutingBill();
BaseResult<string> res;
@@ -101,16 +88,18 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var inputs = input["inputs"] as List<Dictionary<string, object>> ?? $"{input["inputs"]}".ToObject<List<Dictionary<string, object>>>();
_logInfo.Debug($"作业Id:{workId}-----开始保存(批量)");
res = await bo.Save(baseLogin, cCardNum, inputs);
res = bo.Save(baseLogin, cCardNum, inputs);
_logInfo.Debug($"作业Id:{workId}-----结束保存(批量)");
}
else
{
_logInfo.Debug($"作业Id:{workId}-----开始保存");
res = await bo.Save(baseLogin, cCardNum, input);
res = bo.Save(baseLogin, cCardNum, input);
_logInfo.Debug($"作业Id:{workId}-----结束保存");
}
baseLogin.ShutDown();
return res;
}
@@ -152,29 +141,21 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
if (cCardNum != "FC90" && cCardNum != "FC91" && cCardNum != "FC92")
throw new Exception("当前接口不支持此类型的单据");
if (!_cache.TryGetValue($"U8_{userToken}_{output.cAccId}", out BaseLogin baseLogin))
var baseLogin = new BaseLogin();
var param = output.loginParamter;
if (param == null)
{
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
//可能存在其他的缓存,先清掉
_cache.Clear();
baseLogin = new BaseLogin();
baseLogin.Init(token, true, 5);
_cache.Set($"U8_{userToken}_{output.cAccId}", baseLogin);
throw new Exception("未能加载指定系统号的登录信息");
}
if (baseLogin == null)
if (param.pDate != $"{DateTime.Today:yyyy-MM-dd}")
{
throw new Exception("登录对象加载失败");
param.pDate = $"{DateTime.Today:yyyy-MM-dd}";
}
if (!baseLogin.CheckCallar())
{
baseLogin.RefreshCallar(baseLogin.userToken);
}
baseLogin.Init(param);
var bo = new MoRoutingBill();
BaseResult<string> res;
@@ -183,18 +164,20 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
var inputs = input["inputs"] as List<Dictionary<string, object>> ?? $"{input["inputs"]}".ToObject<List<Dictionary<string, object>>>();
_logInfo.Debug($"作业Id:{workId}-----开始保存(批量)");
res = await bo.Save(baseLogin, cCardNum, inputs);
res = bo.Save(baseLogin, cCardNum, inputs);
_logInfo.Debug($"作业Id:{workId}-----结束保存(批量)");
}
else
{
_logInfo.Debug($"作业Id:{workId}-----开始保存");
res = await bo.Save(baseLogin, cCardNum, input);
res = bo.Save(baseLogin, cCardNum, input);
_logInfo.Debug($"作业Id:{workId}-----结束保存");
}
baseLogin.ShutDown();
return res;
}
@@ -202,6 +185,8 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
{
_logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex);
await Task.Delay(1);
return new BaseResult<string> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
}
}
@@ -299,11 +284,18 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
try
{
var userToken = Request.Headers.GetValues("userToken").First();
if (!string.IsNullOrWhiteSpace(userToken))
try
{
return await MoRoutingBillDeleteToken(cCardNum, input);
var userToken = Request.Headers.GetValues("userToken").First();
if (!string.IsNullOrWhiteSpace(userToken))
{
return await MoRoutingBillDeleteToken(cCardNum, input);
}
}
catch (Exception ex)
{
_logInfo.Debug($"作业Id:{workId}-----userToken获取失败,错误信息:{ex.Message}");
}
_logInfo.Debug($"作业Id:{workId}-----当前接口:api/U8/SFC/MoRoutingBillDelete,单据类型编码:{cCardNum},报文数据:{input.ToJson()}");
@@ -311,36 +303,37 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
if (cCardNum != "FC90" && cCardNum != "FC91" && cCardNum != "FC92")
throw new Exception("当前接口不支持此类型的单据");
if (!_cache.TryGetValue($"U8M_{cAccId}", out BaseLogin baseLogin))
var baseLogin = new BaseLogin();
var param = await CommUnit.GetLoginParamter(cAccId);
if (param == null)
{
baseLogin = new BaseLogin();
var param = await CommUnit.GetLoginParamter(cAccId);
if (param == null)
{
throw new Exception("未能加载指定系统号的登录信息");
}
baseLogin.Init(param);
_cache.Set($"U8M_{cAccId}", baseLogin);
throw new Exception("未能加载指定系统号的登录信息");
}
baseLogin.Init(param);
var bf = new MoRoutingBill();
if (input.cVouchCode != null && input.cVouchCode.Count > 0)
{
_logInfo.Debug($"作业Id:{workId}-----开始删除(单号)(批量)");
var res = await bf.Delete(baseLogin, cCardNum, input.cVouchCode);
var res = bf.Delete(baseLogin, cCardNum, input.cVouchCode);
_logInfo.Debug($"作业Id:{workId}-----结束删除(单号)(批量)");
baseLogin.ShutDown();
return res;
}
else
{
_logInfo.Debug($"作业Id:{workId}-----开始删除(ID)(批量)");
var res = await bf.Delete(baseLogin, input.MID);
var res = bf.Delete(baseLogin, input.MID);
_logInfo.Debug($"作业Id:{workId}-----结束删除(ID)(批量)");
baseLogin.ShutDown();
return res;
}
@@ -385,34 +378,42 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
if (cCardNum != "FC90" && cCardNum != "FC91" && cCardNum != "FC92")
throw new Exception("当前接口不支持此类型的单据");
if (!_cache.TryGetValue($"U8_{userToken}_{output.cAccId}", out BaseLogin baseLogin))
var baseLogin = new BaseLogin();
var param = output.loginParamter;
if (param == null)
{
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
//可能存在其他的缓存,先清掉
_cache.Clear();
baseLogin = new BaseLogin();
baseLogin.Init(token, true, 5);
_cache.Set($"U8_{userToken}_{output.cAccId}", baseLogin);
throw new Exception("未能加载指定系统号的登录信息");
}
if (param.pDate != $"{DateTime.Today:yyyy-MM-dd}")
{
param.pDate = $"{DateTime.Today:yyyy-MM-dd}";
}
baseLogin.Init(param);
var bf = new MoRoutingBill();
if (input.cVouchCode != null && input.cVouchCode.Count > 0)
{
_logInfo.Debug($"作业Id:{workId}-----开始删除(单号)(批量)");
var res = await bf.Delete(baseLogin, cCardNum, input.cVouchCode);
var res = bf.Delete(baseLogin, cCardNum, input.cVouchCode);
_logInfo.Debug($"作业Id:{workId}-----结束删除(单号)(批量)");
baseLogin.ShutDown();
return res;
}
else
{
_logInfo.Debug($"作业Id:{workId}-----开始删除(ID)(批量)");
var res = await bf.Delete(baseLogin, input.MID);
var res = bf.Delete(baseLogin, input.MID);
_logInfo.Debug($"作业Id:{workId}-----结束删除(ID)(批量)");
baseLogin.ShutDown();
return res;
}
@@ -421,6 +422,8 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
{
_logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex);
await Task.Delay(1);
return new BaseResult<string> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
}
@@ -520,11 +523,18 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
try
{
var userToken = Request.Headers.GetValues("userToken").First();
if (!string.IsNullOrWhiteSpace(userToken))
try
{
return await MoRoutingBillVerifyToken(cCardNum, input);
var userToken = Request.Headers.GetValues("userToken").First();
if (!string.IsNullOrWhiteSpace(userToken))
{
return await MoRoutingBillVerifyToken(cCardNum, input);
}
}
catch (Exception ex)
{
_logInfo.Debug($"作业Id:{workId}-----userToken获取失败,错误信息:{ex.Message}");
}
_logInfo.Debug($"作业Id:{workId}-----当前接口:api/U8/SFC/MoRoutingBillVerify,单据类型编码:{cCardNum},报文数据:{input.ToJson()}");
@@ -532,37 +542,32 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
if (cCardNum != "FC90" && cCardNum != "FC91" && cCardNum != "FC92")
throw new Exception("当前接口不支持此类型的单据");
if (!_cache.TryGetValue($"U8M_{cAccId}", out BaseLogin baseLogin))
var baseLogin = new BaseLogin();
var param = await CommUnit.GetLoginParamter(cAccId);
if (param == null)
{
baseLogin = new BaseLogin();
var param = await CommUnit.GetLoginParamter(cAccId);
if (param == null)
{
throw new Exception("未能加载指定系统号的登录信息");
}
baseLogin.Init(param);
_cache.Set($"U8M_{cAccId}", baseLogin);
throw new Exception("未能加载指定系统号的登录信息");
}
baseLogin.Init(param);
var bf = new MoRoutingBill();
if (input.cVouchCode != null && input.cVouchCode.Count > 0)
{
return await bf.Verify(baseLogin, cCardNum, input.cVouchCode);
return bf.Verify(baseLogin, cCardNum, input.cVouchCode);
}
else
{
return await bf.Verify(baseLogin, input.MID);
return bf.Verify(baseLogin, input.MID);
}
}
catch (Exception ex)
{
_logInfo.Error(ex.Message, ex);
_logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex);
return new BaseResult<string> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
}
@@ -600,34 +605,42 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
if (cCardNum != "FC90" && cCardNum != "FC91" && cCardNum != "FC92")
throw new Exception("当前接口不支持此类型的单据");
if (!_cache.TryGetValue($"U8_{userToken}_{output.cAccId}", out BaseLogin baseLogin))
var baseLogin = new BaseLogin();
var param = output.loginParamter;
if (param == null)
{
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
//可能存在其他的缓存,先清掉
_cache.Clear();
baseLogin = new BaseLogin();
baseLogin.Init(token, true, 5);
_cache.Set($"U8_{userToken}_{output.cAccId}", baseLogin);
throw new Exception("未能加载指定系统号的登录信息");
}
if (param.pDate != $"{DateTime.Today:yyyy-MM-dd}")
{
param.pDate = $"{DateTime.Today:yyyy-MM-dd}";
}
baseLogin.Init(param);
var bf = new MoRoutingBill();
if (input.cVouchCode != null && input.cVouchCode.Count > 0)
{
_logInfo.Debug($"作业Id:{workId}-----开始审核(单号)(批量)");
var res = await bf.Verify(baseLogin, cCardNum, input.cVouchCode);
var res = bf.Verify(baseLogin, cCardNum, input.cVouchCode);
_logInfo.Debug($"作业Id:{workId}-----结束审核(单号)(批量)");
baseLogin.ShutDown();
return res;
}
else
{
_logInfo.Debug($"作业Id:{workId}-----开始审核(ID)(批量)");
var res = await bf.Verify(baseLogin, input.MID);
var res = bf.Verify(baseLogin, input.MID);
_logInfo.Debug($"作业Id:{workId}-----结束审核(ID)(批量)");
baseLogin.ShutDown();
return res;
}
@@ -636,6 +649,8 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
{
_logInfo.Error(ex.Message, ex);
await Task.Delay(1);
return new BaseResult<string> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
}
@@ -735,11 +750,18 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
try
{
var userToken = Request.Headers.GetValues("userToken").First();
if (!string.IsNullOrWhiteSpace(userToken))
try
{
return await MoRoutingBillUnVerifyToken(cCardNum, input);
var userToken = Request.Headers.GetValues("userToken").First();
if (!string.IsNullOrWhiteSpace(userToken))
{
return await MoRoutingBillUnVerifyToken(cCardNum, input);
}
}
catch (Exception ex)
{
_logInfo.Debug($"作业Id:{workId}-----userToken获取失败,错误信息:{ex.Message}");
}
_logInfo.Debug($"作业Id:{workId}-----当前接口:api/U8/SFC/MoRoutingBillUnVerify,单据类型编码:{cCardNum},报文数据:{input.ToJson()}");
@@ -747,36 +769,37 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
if (cCardNum != "FC90" && cCardNum != "FC91" && cCardNum != "FC92")
throw new Exception("当前接口不支持此类型的单据");
if (!_cache.TryGetValue($"U8M_{cAccId}", out BaseLogin baseLogin))
var baseLogin = new BaseLogin();
var param = await CommUnit.GetLoginParamter(cAccId);
if (param == null)
{
baseLogin = new BaseLogin();
var param = await CommUnit.GetLoginParamter(cAccId);
if (param == null)
{
throw new Exception("未能加载指定系统号的登录信息");
}
baseLogin.Init(param);
_cache.Set($"U8M_{cAccId}", baseLogin);
throw new Exception("未能加载指定系统号的登录信息");
}
baseLogin.Init(param);
var bf = new MoRoutingBill();
if (input.cVouchCode != null && input.cVouchCode.Count > 0)
{
_logInfo.Debug($"作业Id:{workId}-----开始弃审(单号)(批量)");
var res = await bf.UnVerify(baseLogin, cCardNum, input.cVouchCode);
var res = bf.UnVerify(baseLogin, cCardNum, input.cVouchCode);
_logInfo.Debug($"作业Id:{workId}-----结束弃审(单号)(批量)");
baseLogin.ShutDown();
return res;
}
else
{
_logInfo.Debug($"作业Id:{workId}-----开始弃审(单号)(批量)");
var res = await bf.UnVerify(baseLogin, input.MID);
var res = bf.UnVerify(baseLogin, input.MID);
_logInfo.Debug($"作业Id:{workId}-----结束弃审(单号)(批量)");
baseLogin.ShutDown();
return res;
}
@@ -821,34 +844,42 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
if (cCardNum != "FC90" && cCardNum != "FC91" && cCardNum != "FC92")
throw new Exception("当前接口不支持此类型的单据");
if (!_cache.TryGetValue($"U8_{userToken}_{output.cAccId}", out BaseLogin baseLogin))
var baseLogin = new BaseLogin();
var param = output.loginParamter;
if (param == null)
{
_logInfo.Debug($"作业Id:{workId}-----未获取到缓存的登录信息,正在重新构建");
//可能存在其他的缓存,先清掉
_cache.Clear();
baseLogin = new BaseLogin();
baseLogin.Init(token, true, 5);
_cache.Set($"U8_{userToken}_{output.cAccId}", baseLogin);
throw new Exception("未能加载指定系统号的登录信息");
}
if (param.pDate != $"{DateTime.Today:yyyy-MM-dd}")
{
param.pDate = $"{DateTime.Today:yyyy-MM-dd}";
}
baseLogin.Init(param);
var bf = new MoRoutingBill();
if (input.cVouchCode != null && input.cVouchCode.Count > 0)
{
_logInfo.Debug($"作业Id:{workId}-----开始弃审(单号)(批量)");
var res = await bf.UnVerify(baseLogin, cCardNum, input.cVouchCode);
var res = bf.UnVerify(baseLogin, cCardNum, input.cVouchCode);
_logInfo.Debug($"作业Id:{workId}-----结束弃审(单号)(批量)");
baseLogin.ShutDown();
return res;
}
else
{
_logInfo.Debug($"作业Id:{workId}-----开始弃审(ID)(批量)");
var res = await bf.UnVerify(baseLogin, input.MID);
var res = bf.UnVerify(baseLogin, input.MID);
_logInfo.Debug($"作业Id:{workId}-----结束弃审(ID)(批量)");
baseLogin.ShutDown();
return res;
}
@@ -857,10 +888,10 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8
{
_logInfo.Error($"作业Id:{workId}-----错误信息:{ex.Message}", ex);
await Task.Delay(1);
return new BaseResult<string> { bSuccess = false, message = ex.Message, result = ex.StackTrace };
}
}
/// <summary>