From b2121a1afbb6a8aba8dc298dd1be3942582d2290 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=95=8F=E5=81=A5=20=E9=82=B1?= Date: Fri, 25 Jul 2025 20:32:33 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=E6=8A=A5=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E8=BF=9E=E7=BB=AD=E5=88=B6=E5=8D=95=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UFIDA.U8.Framework.Api.App.csproj | 27 + .../UFIDA.U8.Framework.Api.Common.csproj | 1 + .../U8M/BaseLogin.cs | 615 ++++++++++++------ .../U8M/IBaseBF.cs | 4 +- .../U8M/MoRoutingBill.cs | 99 ++- ...FIDA.U8.Framework.Api.ControlObject.csproj | 1 + .../Controllers/U8/DPController.cs | 3 +- .../Controllers/U8/SFCController.cs | 333 +++++----- UFIDA.U8.Framework.Api/Entity/LoginInput.cs | 7 + .../UFIDA.U8.Framework.Api.csproj | 1 + UFIDA.U8.Framework.Api/Unit/RemoteLoader.cs | 4 +- 11 files changed, 705 insertions(+), 390 deletions(-) diff --git a/UFIDA.U8.Framework.Api.App/UFIDA.U8.Framework.Api.App.csproj b/UFIDA.U8.Framework.Api.App/UFIDA.U8.Framework.Api.App.csproj index 273a297..ec3b9bc 100644 --- a/UFIDA.U8.Framework.Api.App/UFIDA.U8.Framework.Api.App.csproj +++ b/UFIDA.U8.Framework.Api.App/UFIDA.U8.Framework.Api.App.csproj @@ -12,6 +12,21 @@ 512 true true + false + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + true AnyCPU @@ -92,5 +107,17 @@ + + + False + Microsoft .NET Framework 4.8 %28x86 和 x64%29 + true + + + False + .NET Framework 3.5 SP1 + false + + \ No newline at end of file diff --git a/UFIDA.U8.Framework.Api.Common/UFIDA.U8.Framework.Api.Common.csproj b/UFIDA.U8.Framework.Api.Common/UFIDA.U8.Framework.Api.Common.csproj index 7c4e554..faf46b9 100644 --- a/UFIDA.U8.Framework.Api.Common/UFIDA.U8.Framework.Api.Common.csproj +++ b/UFIDA.U8.Framework.Api.Common/UFIDA.U8.Framework.Api.Common.csproj @@ -31,6 +31,7 @@ TRACE prompt 4 + x86 diff --git a/UFIDA.U8.Framework.Api.ControlObject/U8M/BaseLogin.cs b/UFIDA.U8.Framework.Api.ControlObject/U8M/BaseLogin.cs index b132f7c..143df16 100644 --- a/UFIDA.U8.Framework.Api.ControlObject/U8M/BaseLogin.cs +++ b/UFIDA.U8.Framework.Api.ControlObject/U8M/BaseLogin.cs @@ -1,5 +1,4 @@ using System; -using System.Web.UI.WebControls; using ADODB; using log4net; using UFIDA.U8.Framework.Api.ControlObject.Entity; @@ -14,35 +13,72 @@ using VBLogin = U8Login.clsLogin; // ReSharper disable InconsistentNaming // ReSharper disable CommentTypo // ReSharper disable FieldCanBeMadeReadOnly.Local +// ReSharper disable UnusedMember.Global namespace UFIDA.U8.Framework.Api.ControlObject.U8M { + /// + /// 登录对象帮助类 + /// public class BaseLogin { private ILog _logInfo = LogManager.GetLogger("logInfo"); + /// + /// 登录对象(NET) + /// public NetLogin _netLogin; + /// + /// 登录对象(VB) + /// public VBLogin _vbLogin; + /// + /// Net上下文 + /// public ProductContext _productContext; + /// + /// 数据库连接对象(ADO) + /// public Connection Connection; + /// + /// userToken + /// public string userToken => _vbLogin.userToken; + /// + /// 业务库连接字符串(ADO) + /// public string UfDbName => _vbLogin.UfDbName; + /// + /// 业务库连接字符串(ADO.Net) + /// public string UFDataConnstringForNet => _vbLogin.UFDataConnstringForNet; + /// + /// 元数据库连接字符串(ADO) + /// public string UfMetaName => _vbLogin.UfMetaName; + /// + /// 元数据库连接字符串(ADO.Net) + /// public string UFMetaConnstringForNet => _vbLogin.UFMetaConnstringForNet; + /// + /// 系统库连接字符串(ADO) + /// public string UfSystemDb => _vbLogin.UfSystemDb; + /// + /// 制造上下文 + /// public IContextContainer callar { get; set; } /// @@ -53,7 +89,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M /// /// /// - public void Init(LoginParamter paramter,bool bMon=true, int traceTimes=0) + public void Init(LoginParamter paramter, bool bMon = true, int traceTimes = 0) { if (traceTimes > 5) @@ -93,6 +129,13 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M throw new Exception($"VB--U8登录失败---{_vbLogin.ShareString}"); } + _logInfo.Debug($"VB--开始创建连接对象:{_vbLogin.userToken}"); + + Connection = new Connection(); + Connection.Open(_vbLogin.UfDbName); + + _logInfo.Debug("VB--完成登录进程"); + _netLogin = new NetLogin(); _productContext= _netLogin.Login("DP", _vbLogin.userToken); @@ -112,15 +155,36 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M //throw new Exception($"Net--U8上下文构建失败---{_netLogin.ErrDescript}"); } - _logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); + #region U8 18.0时需要取消注释 + _logInfo.Debug($"U8M--正在创建应用池:{_netLogin.userToken}"); - ClientUserContext.Instance.RefreshContext(); + var info = U8LoginInfo.CreateInstance(_netLogin.userToken); + + U8LoginInfoPool.Add(_netLogin.userToken, info); + + _logInfo.Debug($"U8M--创建应用池:{info.U8LoginToken}"); + + _logInfo.Debug($"U8M--正在设置线程登录信息:{_netLogin.userToken}"); + ThreadContext.SetLoginInfo(_netLogin.userToken); + _logInfo.Debug($"U8M--设置线程登录信息:{_netLogin.userToken}"); + #endregion + + #region U8 18.0时需要注释 + + //_logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); + + //ClientUserContext.Instance.RefreshContext(); + + #endregion _logInfo.Debug("Net--完成生产制造登录进程"); callar = new DefaultContextContainer(); - _logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); + _logInfo.Debug("Net--构建制造上下文"); + //_logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); + + return; #else _netLogin = new NetLogin(); @@ -141,32 +205,68 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M throw new Exception($"Net--U8上下文构建失败---{_netLogin.ErrDescript}"); } + #region U8 18.0时需要取消注释 + //_logInfo.Debug($"U8M--正在创建应用池:{_netLogin.userToken}"); + + //var info = U8LoginInfo.CreateInstance(_netLogin.userToken); + + //U8LoginInfoPool.Add(_netLogin.userToken, info); + + //_logInfo.Debug($"U8M--创建应用池:{info.U8LoginToken}"); + + //_logInfo.Debug($"U8M--正在设置线程登录信息:{_netLogin.userToken}"); + //ThreadContext.SetLoginInfo(_netLogin.userToken); + //_logInfo.Debug($"U8M--设置线程登录信息:{_netLogin.userToken}"); + #endregion + + #region U8 18.0时需要注释 + + //_logInfo.Debug($"Net--开始设置线程信息:{_productContext.calledContext.token}"); + //ThreadContext.SetLoginInfo(_netLogin.userToken); + + //_logInfo.Debug($"U8M--正在创建应用池:{_netLogin.userToken}"); + + //var info = U8LoginInfo.CreateInstance(_netLogin.userToken); + + //U8LoginInfoPool.Add(_netLogin.userToken, info); + + _logInfo.Debug($"Net--开始设置userToken:{_netLogin.userToken}"); + Cryptography.m_userToken = _netLogin.userToken; _logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); - ClientUserContext.Instance.RefreshContext(); + #endregion + + _logInfo.Debug("Net--完成生产制造登录进程"); callar = new DefaultContextContainer(); - _logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); - + _logInfo.Debug("Net--构建制造上下文"); + //_logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); return; - #endif } _vbLogin = new VBLogin(); _vbLogin.ClearError(); + _logInfo.Debug($"VB--开始进行U8登录:{_netLogin.userToken}"); + _vbLogin.ConstructLogin(_netLogin.userToken); - _logInfo.Debug($"VB--开始进行U8登录:{paramter.cSrv}--{paramter.pUserId}--{paramter.pAccId}"); + var taskId = DateTime.Now.Ticks.ToString(); + _logInfo.Debug($"VB--设置参数:{taskId}"); + _vbLogin.set_TaskId(taskId); - if (!_vbLogin.Login(paramter.pSubId, paramter.pAccId, paramter.pYearId, paramter.pUserId, paramter.pPassword, paramter.pDate, paramter.cSrv, paramter.cSerial) && string.IsNullOrWhiteSpace(_vbLogin.userToken)) - { - throw new Exception($"VB--U8登录失败---{_vbLogin.ShareString}"); - } + //_vbLogin.ClearError(); + + //_logInfo.Debug($"VB--开始进行U8登录:{paramter.cSrv}--{paramter.pUserId}--{paramter.pAccId}"); + + //if (!_vbLogin.Login(paramter.pSubId, paramter.pAccId, paramter.pYearId, paramter.pUserId, paramter.pPassword, paramter.pDate, paramter.cSrv, paramter.cSerial) && string.IsNullOrWhiteSpace(_vbLogin.userToken)) + //{ + // throw new Exception($"VB--U8登录失败---{_vbLogin.ShareString}"); + //} _logInfo.Debug($"VB--开始创建连接对象:{_vbLogin.userToken}"); @@ -175,97 +275,90 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M _logInfo.Debug("VB--完成登录进程"); - return; + #region 弃用 + + //if (!bMon) + //{ + // _logInfo.Debug("非生产制造模块无需下面操作"); + // //Trace.WriteLine("非生产制造模块无需下面操作"); + // return; + //} + + //_logInfo.Debug($"U8版本:{_vbLogin.GetVersionInfo()}"); + + //_logInfo.Debug($"1--登录令牌:{_vbLogin.userToken}"); + + //if (!string.IsNullOrWhiteSpace(Cryptography.m_userToken)) + //{ + // Cryptography.m_userToken = ""; + //} + + //_productContext = _netLogin.Login("DP", _vbLogin.userToken); + + //if (_productContext != null) + //{ + // _logInfo.Debug($"222--成功初始化上下文信息:{_vbLogin.userToken}"); + + // ClientUserContext.Instance.RefreshContext(); + // //ThreadContext.ServerToken = _netLogin.userToken; + + // Connection = new Connection(); + // Connection.Open(_vbLogin.UfDbName); + + // _logInfo.Debug($"333--完成局部构建:{_netLogin.userToken}"); + + // return; + //} + //if (_netLogin.login(paramter.pSubId, paramter.pUserId, paramter.pPassword, paramter.cSrv, paramter.pDate, paramter.pAccId, paramter.cSerial)) + //{ + // _productContext = _netLogin.SubLogin("AS"); + + // if (_productContext == null) + // throw new Exception($"11--初始化U8登录上下文失败------{_netLogin.ErrDescript}"); + + // _logInfo.Debug($"22--登录令牌:{_netLogin.userToken}"); + // //Trace.WriteLine($"2--上下文令牌:{_productContext.calledContext.token}"); + + + // //_vbLogin.ClearError(); + // //_vbLogin.ConstructLogin(_netLogin.userToken); + // //var taskId = DateTime.Now.Ticks.ToString(); + // //_vbLogin.set_TaskId(taskId); + + + // _logInfo.Debug($"33--登录令牌:{_vbLogin.userToken}"); + + // _logInfo.Debug($"44--正在创建应用池:{_netLogin.userToken}"); + + // ClientUserContext.Instance.RefreshContext(); + // //ThreadContext.ServerToken = _netLogin.userToken; + // _logInfo.Debug($"55--完成局部构建:{_netLogin.userToken}"); + // return; - if (!bMon) - { - _logInfo.Debug("非生产制造模块无需下面操作"); - //Trace.WriteLine("非生产制造模块无需下面操作"); - return; - } + //} - _logInfo.Debug($"U8版本:{_vbLogin.GetVersionInfo()}"); + //_productContext = _netLogin.Login("AS", _vbLogin.userToken); - _logInfo.Debug($"1--登录令牌:{_vbLogin.userToken}"); + //_logInfo.Debug($"3--上下文令牌:{_productContext.calledContext.token}"); - if (!string.IsNullOrWhiteSpace(Cryptography.m_userToken)) - { - Cryptography.m_userToken = ""; - } + //if (_productContext == null) + // throw new Exception($"2--初始化U8登录上下文失败------{_netLogin.ErrDescript}"); - _productContext = _netLogin.Login("DP", _vbLogin.userToken); + //ClientUserContext.Instance.RefreshContext(); + ////ThreadContext.ServerToken = _netLogin.userToken; + //Connection = new Connection(); + //Connection.Open(_vbLogin.UfDbName); - if (_productContext != null) - { - _logInfo.Debug($"222--成功初始化上下文信息:{_vbLogin.userToken}"); - - ClientUserContext.Instance.RefreshContext(); - //ThreadContext.ServerToken = _netLogin.userToken; - - Connection = new Connection(); - Connection.Open(_vbLogin.UfDbName); - - _logInfo.Debug($"333--完成局部构建:{_netLogin.userToken}"); - - return; - } - - - - - - if (_netLogin.login(paramter.pSubId, paramter.pUserId, paramter.pPassword, paramter.cSrv, paramter.pDate, paramter.pAccId, paramter.cSerial)) - { - _productContext = _netLogin.SubLogin("AS"); - - if (_productContext == null) - throw new Exception($"11--初始化U8登录上下文失败------{_netLogin.ErrDescript}"); - - _logInfo.Debug($"22--登录令牌:{_netLogin.userToken}"); - //Trace.WriteLine($"2--上下文令牌:{_productContext.calledContext.token}"); - - - //_vbLogin.ClearError(); - //_vbLogin.ConstructLogin(_netLogin.userToken); - //var taskId = DateTime.Now.Ticks.ToString(); - //_vbLogin.set_TaskId(taskId); - - - _logInfo.Debug($"33--登录令牌:{_vbLogin.userToken}"); - - _logInfo.Debug($"44--正在创建应用池:{_netLogin.userToken}"); - - ClientUserContext.Instance.RefreshContext(); - //ThreadContext.ServerToken = _netLogin.userToken; - - - - _logInfo.Debug($"55--完成局部构建:{_netLogin.userToken}"); - - return; - - } - - _productContext = _netLogin.Login("AS", _vbLogin.userToken); - - _logInfo.Debug($"3--上下文令牌:{_productContext.calledContext.token}"); - - if (_productContext == null) - throw new Exception($"2--初始化U8登录上下文失败------{_netLogin.ErrDescript}"); - - ClientUserContext.Instance.RefreshContext(); - //ThreadContext.ServerToken = _netLogin.userToken; - Connection = new Connection(); - Connection.Open(_vbLogin.UfDbName); + #endregion } catch (Exception ex) { @@ -275,7 +368,15 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M } } - public void Init(string userToken, bool bMon = true, int traceTimes = 0) + /// + /// 初始化登录信息 + /// + /// + /// + /// + /// + /// + public void Init(string token, bool bMon = true, int traceTimes = 0) { if (traceTimes > 5) throw new Exception("U8登录异常"); @@ -292,7 +393,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M // ThreadContext.U8LoginInfo = null; //} - if (string.IsNullOrWhiteSpace(userToken)) throw new ArgumentNullException(nameof(userToken)); + if (string.IsNullOrWhiteSpace(token)) throw new ArgumentNullException(nameof(token)); if (!string.IsNullOrWhiteSpace(Cryptography.m_userToken)) { @@ -305,8 +406,8 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M #if DEBUG _vbLogin = new VBLogin(); _vbLogin.ClearError(); - _logInfo.Debug($"VB--开始进行U8登录:{userToken}"); - if (!_vbLogin.ConstructLogin(userToken)) + _logInfo.Debug($"VB--开始进行U8登录:{token}"); + if (!_vbLogin.ConstructLogin(token)) { throw new Exception($"VB--U8登录失败---{_vbLogin.ShareString}"); } @@ -316,40 +417,79 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M { _logInfo.Debug($"Net--U8上下文构建失败---{_netLogin.ErrDescript}"); - _logInfo.Debug($"Net--开始进行上下文构建:{userToken}"); + _logInfo.Debug($"Net--开始进行上下文构建:{_vbLogin.userToken}"); _productContext = _netLogin.Login("DP", _vbLogin.userToken); //throw new Exception($"Net--U8上下文构建失败---{_netLogin.ErrDescript}"); } - _logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); - ClientUserContext.Instance.RefreshContext(); + + #region U8 18.0时需要取消注释 + _logInfo.Debug($"U8M--正在创建应用池:{_netLogin.userToken}"); + + var info = U8LoginInfo.CreateInstance(_netLogin.userToken); + + U8LoginInfoPool.Add(_netLogin.userToken, info); + + _logInfo.Debug($"U8M--创建应用池:{info.U8LoginToken}"); + + _logInfo.Debug($"U8M--正在设置线程登录信息:{_netLogin.userToken}"); + ThreadContext.SetLoginInfo(_netLogin.userToken); + _logInfo.Debug($"U8M--设置线程登录信息:{_netLogin.userToken}"); + #endregion + + #region U8 18.0时需要注释 + //_logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); + //ClientUserContext.Instance.RefreshContext(); + #endregion + _logInfo.Debug("Net--完成生产制造登录进程"); callar = new DefaultContextContainer(); - _logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); + _logInfo.Debug("Net--构建制造上下文"); + //_logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); #else _netLogin = new NetLogin(); - _logInfo.Debug($"Net--开始进行U8登录:{userToken}"); + _logInfo.Debug($"Net--开始进行U8登录:{token}"); - _productContext = _netLogin.Login("DP", userToken); + _productContext = _netLogin.Login("DP", token); if (_productContext == null) { throw new Exception($"Net--U8上下文构建失败---{_netLogin.ErrDescript}"); } - _logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); + #region U8 18.0时需要取消注释 + //_logInfo.Debug($"U8M--正在创建应用池:{_netLogin.userToken}"); - ClientUserContext.Instance.RefreshContext(); + //var info = U8LoginInfo.CreateInstance(_netLogin.userToken); + + //U8LoginInfoPool.Add(_netLogin.userToken, info); + + //_logInfo.Debug($"U8M--创建应用池:{info.U8LoginToken}"); + + //_logInfo.Debug($"U8M--正在设置线程登录信息:{_netLogin.userToken}"); + //ThreadContext.SetLoginInfo(_netLogin.userToken); + //_logInfo.Debug($"U8M--设置线程登录信息:{_netLogin.userToken}"); + + //Cryptography.m_userToken = _netLogin.userToken; + //_logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); + //ClientUserContext.Instance.RefreshContext(); + #endregion + + #region U8 18.0时需要注释 + //_logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); + //ClientUserContext.Instance.RefreshContext(); + #endregion _logInfo.Debug("Net--完成生产制造登录进程"); callar = new DefaultContextContainer(); - _logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); + _logInfo.Debug("Net--构建制造上下文"); + //_logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); return; @@ -359,8 +499,8 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M _vbLogin = new VBLogin(); _vbLogin.ClearError(); - _logInfo.Debug($"VB--开始进行U8登录:{userToken}"); - if (!_vbLogin.ConstructLogin(userToken)) + _logInfo.Debug($"VB--开始进行U8登录:{token}"); + if (!_vbLogin.ConstructLogin(token)) { throw new Exception($"VB--U8登录失败---{_vbLogin.ShareString}"); } @@ -368,7 +508,6 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M Connection = new Connection(); Connection.Open(_vbLogin.UfDbName); _logInfo.Debug("VB--完成登录进程"); - return; } catch (Exception ex) { @@ -379,15 +518,23 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M throw new Exception("登录使用时间超过系统预置时间,请重新登录!"); } - Init(userToken, bMon, traceTimes + 1); + Init(token, bMon, traceTimes + 1); } } + /// + /// 校验制造上下文 + /// + /// public bool CheckCallar() { return callar != null; } + /// + /// 刷新制造上下文 + /// + /// public void RefreshCallar(LoginParamter paramter) { #if DEBUG @@ -411,114 +558,214 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M //throw new Exception($"Net--U8上下文构建失败---{_netLogin.ErrDescript}"); } - _logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); + #region U8 18.0时需要取消注释 + _logInfo.Debug($"U8M--正在创建应用池:{_netLogin.userToken}"); - ClientUserContext.Instance.RefreshContext(); + var info = U8LoginInfo.CreateInstance(_netLogin.userToken); - _logInfo.Debug("Net--完成生产制造登录进程"); + U8LoginInfoPool.Add(_netLogin.userToken, info); + + _logInfo.Debug($"U8M--创建应用池:{info.U8LoginToken}"); + + _logInfo.Debug($"U8M--正在设置线程登录信息:{_netLogin.userToken}"); + ThreadContext.SetLoginInfo(_netLogin.userToken); + _logInfo.Debug($"U8M--设置线程登录信息:{_netLogin.userToken}"); + #endregion + + #region U8 18.0时需要注释 + //_logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); + //ClientUserContext.Instance.RefreshContext(); + #endregion + + _logInfo.Debug("Net--完成生产制造登录进程"); callar = new DefaultContextContainer(); - _logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); - -#else - _netLogin = new NetLogin(); - - _logInfo.Debug($"Net--开始进行U8登录:{paramter.cSrv}--{paramter.pUserId}--{paramter.pAccId}"); - - if (!_netLogin.login(paramter.pSubId, paramter.pUserId, paramter.pPassword, paramter.cSrv, paramter.pDate, paramter.pAccId, paramter.cSerial) && string.IsNullOrWhiteSpace(_netLogin.userToken)) - { - throw new Exception($"Net--U8登录失败---{_netLogin.ErrDescript}"); - } - - _logInfo.Debug($"Net--开始进行上下文构建:{_netLogin.userToken}"); - - _productContext = _netLogin.SubLogin("DP"); - - if (_productContext == null) - { - throw new Exception($"Net--U8上下文构建失败---{_netLogin.ErrDescript}"); - } - - - _logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); - - ClientUserContext.Instance.RefreshContext(); - - _logInfo.Debug("Net--完成生产制造登录进程"); - - callar = new DefaultContextContainer(); - - _logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); - - return; - -#endif - } - - public void RefreshCallar(string userToken) - { -#if DEBUG - _netLogin = new NetLogin(); - _productContext = _netLogin.Login("DP", _vbLogin.userToken); - if (_productContext == null) - { - _logInfo.Debug($"Net--U8上下文构建失败---{_netLogin.ErrDescript}"); - - _logInfo.Debug($"Net--开始进行上下文构建:{userToken}"); - _productContext = _netLogin.Login("DP", _vbLogin.userToken); - //throw new Exception($"Net--U8上下文构建失败---{_netLogin.ErrDescript}"); - } - _logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); - ClientUserContext.Instance.RefreshContext(); - - _logInfo.Debug("Net--完成生产制造登录进程"); - - callar = new DefaultContextContainer(); - - _logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); + _logInfo.Debug("Net--构建制造上下文"); + //_logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); #else _netLogin = new NetLogin(); - _logInfo.Debug($"Net--开始进行U8登录:{userToken}"); + _logInfo.Debug($"Net--开始进行U8登录:{paramter.cSrv}--{paramter.pUserId}--{paramter.pAccId}"); - _productContext = _netLogin.Login("DP", userToken); + if (!_netLogin.login(paramter.pSubId, paramter.pUserId, paramter.pPassword, paramter.cSrv, paramter.pDate, paramter.pAccId, paramter.cSerial) && string.IsNullOrWhiteSpace(_netLogin.userToken)) + { + throw new Exception($"Net--U8登录失败---{_netLogin.ErrDescript}"); + } + + _logInfo.Debug($"Net--开始进行上下文构建:{_netLogin.userToken}"); + + _productContext = _netLogin.SubLogin("DP"); if (_productContext == null) { throw new Exception($"Net--U8上下文构建失败---{_netLogin.ErrDescript}"); } - _logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); + #region U8 18.0时需要取消注释 + _logInfo.Debug($"U8M--正在创建应用池:{_netLogin.userToken}"); - ClientUserContext.Instance.RefreshContext(); + var info = U8LoginInfo.CreateInstance(_netLogin.userToken); + + U8LoginInfoPool.Add(_netLogin.userToken, info); + + _logInfo.Debug($"U8M--创建应用池:{info.U8LoginToken}"); + + _logInfo.Debug($"U8M--正在设置线程登录信息:{_netLogin.userToken}"); + ThreadContext.SetLoginInfo(_netLogin.userToken); + _logInfo.Debug($"U8M--设置线程登录信息:{_netLogin.userToken}"); + #endregion + + #region U8 18.0时需要注释 + //_logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); + //ClientUserContext.Instance.RefreshContext(); + #endregion _logInfo.Debug("Net--完成生产制造登录进程"); callar = new DefaultContextContainer(); - _logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); + _logInfo.Debug("Net--构建制造上下文"); + //_logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); return; #endif } - public void ShutDown() + /// + /// 刷新制造上下文 + /// + /// + public void RefreshCallar(string token) + { +#if DEBUG + _netLogin = new NetLogin(); + _productContext = _netLogin.Login("DP", token); + if (_productContext == null) + { + _logInfo.Debug($"Net--U8上下文构建失败---{_netLogin.ErrDescript}"); + + _logInfo.Debug($"Net--开始进行上下文构建:{token}"); + _productContext = _netLogin.Login("DP", token); + //throw new Exception($"Net--U8上下文构建失败---{_netLogin.ErrDescript}"); + } + + #region U8 18.0时需要取消注释 + _logInfo.Debug($"U8M--正在创建应用池:{_netLogin.userToken}"); + + var info = U8LoginInfo.CreateInstance(_netLogin.userToken); + + U8LoginInfoPool.Add(_netLogin.userToken, info); + + _logInfo.Debug($"U8M--创建应用池:{info.U8LoginToken}"); + + _logInfo.Debug($"U8M--正在设置线程登录信息:{_netLogin.userToken}"); + ThreadContext.SetLoginInfo(_netLogin.userToken); + _logInfo.Debug($"U8M--设置线程登录信息:{_netLogin.userToken}"); + #endregion + + #region U8 18.0时需要注释 + //_logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); + //ClientUserContext.Instance.RefreshContext(); + #endregion + + _logInfo.Debug("Net--完成生产制造登录进程"); + + callar = new DefaultContextContainer(); + + _logInfo.Debug("Net--构建制造上下文"); + //_logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); + +#else + _netLogin = new NetLogin(); + + _logInfo.Debug($"Net--开始进行U8登录:{token}"); + + _productContext = _netLogin.Login("DP", token); + + if (_productContext == null) { - U8LoginInfoPool.Clear(); - ThreadContext.ServerToken = null; - _vbLogin?.ShutDown(); - _productContext=null; - _netLogin?.SubLogout("DP"); - _netLogin?.ShutDown(); - _vbLogin = null; - _netLogin = null; + throw new Exception($"Net--U8上下文构建失败---{_netLogin.ErrDescript}"); } - public bool CheckAccId(string cAccId) + + #region U8 18.0时需要取消注释 + _logInfo.Debug($"U8M--正在创建应用池:{_netLogin.userToken}"); + + var info = U8LoginInfo.CreateInstance(_netLogin.userToken); + + U8LoginInfoPool.Add(_netLogin.userToken, info); + + _logInfo.Debug($"U8M--创建应用池:{info.U8LoginToken}"); + + _logInfo.Debug($"U8M--正在设置线程登录信息:{_netLogin.userToken}"); + ThreadContext.SetLoginInfo(_netLogin.userToken); + _logInfo.Debug($"U8M--设置线程登录信息:{_netLogin.userToken}"); + #endregion + + #region U8 18.0时需要注释 + //_logInfo.Debug($"Net--开始进行上下文刷新:{_productContext.calledContext.token}"); + ClientUserContext.Instance.RefreshContext(); + #endregion + + _logInfo.Debug("Net--完成生产制造登录进程"); + + callar = new DefaultContextContainer(); + + _logInfo.Debug("Net--构建制造上下文"); + //_logInfo.Debug($"Net--构建制造上下文:{callar.context.calledContext.token}"); + + return; + +#endif + } + + /// + /// 注销登录对象 + /// + public void ShutDown() + { + U8LoginInfoPool.Remove(_netLogin.userToken); + + + + ThreadContext.ServerToken = null; + _vbLogin?.ShutDown(); + _productContext = null; + _netLogin?.SubLogout("DP"); + _netLogin?.ShutDown(); + _netLogin?.Dispose(); + _vbLogin = null; + _netLogin = null; + + if (!string.IsNullOrWhiteSpace(Cryptography.m_userToken)) { - return _vbLogin.get_cAcc_Id() == cAccId; + Cryptography.m_userToken = ""; } } + + /// + /// 校验当前账套 + /// + /// + /// + public bool CheckAccId(string cAccId) + { + return _vbLogin.get_cAcc_Id() == cAccId; + } + + /// + /// 清理登录上下文 + /// + public void ClearLoginInfoPool() + { + U8LoginInfoPool.Clear(); + ThreadContext.ServerToken = null; + _productContext = null; + _netLogin?.SubLogout("DP"); + _netLogin?.ShutDown(); + _netLogin = null; + } + } } diff --git a/UFIDA.U8.Framework.Api.ControlObject/U8M/IBaseBF.cs b/UFIDA.U8.Framework.Api.ControlObject/U8M/IBaseBF.cs index 66ae17a..bcd417b 100644 --- a/UFIDA.U8.Framework.Api.ControlObject/U8M/IBaseBF.cs +++ b/UFIDA.U8.Framework.Api.ControlObject/U8M/IBaseBF.cs @@ -9,8 +9,8 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M { public interface IBaseBF { - Task> Save(BaseLogin baseLogin,string cCardNum, Dictionary input); + BaseResult Save(BaseLogin baseLogin,string cCardNum, Dictionary input); - Task> Save(BaseLogin baseLogin, string cCardNum, List> inputs); + BaseResult Save(BaseLogin baseLogin, string cCardNum, List> inputs); } } diff --git a/UFIDA.U8.Framework.Api.ControlObject/U8M/MoRoutingBill.cs b/UFIDA.U8.Framework.Api.ControlObject/U8M/MoRoutingBill.cs index bec76bd..2c3ea56 100644 --- a/UFIDA.U8.Framework.Api.ControlObject/U8M/MoRoutingBill.cs +++ b/UFIDA.U8.Framework.Api.ControlObject/U8M/MoRoutingBill.cs @@ -8,6 +8,7 @@ using UFIDA.U8.Framework.Api.ControlObject.Common; using UFIDA.U8.Framework.Api.ControlObject.Entity; using UFIDA.U8.Framework.Api.ControlObject.Json; using UFSoft.U8.Framework.BizBase; +using UFSoft.U8.Framework.ContextSrv; using UFSoft.U8.U8M.BFDispatcher; using UFSoft.U8.U8M.Common; using UFSoft.U8.U8M.DAC; @@ -34,26 +35,35 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M /// /// /// - private static async Task GetEmptyDs(IContextContainer callar, string cCardNum) + private MoRoutingBillDs GetEmptyDs(IContextContainer callar, string cCardNum) { try { + _logInfo.Debug($"获取空数据集-----{cCardNum}"); + var ds = SFExecutor.BFMoRoutingBill_LoadData("LoadFirst", 0, "", cCardNum, callar); #region 清除数据集里的数据 + _logInfo.Debug("清空数据集-----MoRoutingBilldetail_ExtraDefine"); if (ds.Tables.Contains("fc_MoRoutingBilldetail_ExtraDefine")) { ds.Tables["fc_MoRoutingBilldetail_ExtraDefine"].Clear(); } + _logInfo.Debug("清空数据集-----MoRoutingBill_ExtraDefine"); if (ds.Tables.Contains("fc_MoRoutingBill_ExtraDefine")) { ds.Tables["fc_MoRoutingBill_ExtraDefine"].Clear(); } + _logInfo.Debug("清空数据集-----MoRoutingBillRes"); ds.MoRoutingBillRes.Clear(); + + _logInfo.Debug("清空数据集-----MoRoutingBillDetail"); ds.MoRoutingBillDetail.Clear(); + + _logInfo.Debug("清空数据集-----MoRoutingBill"); ds.MoRoutingBill.Clear(); #endregion @@ -62,8 +72,6 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M } catch { - await Task.Delay(1); - throw; } } @@ -76,33 +84,44 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M /// /// /// - private static async Task GetVoucherDs(IContextContainer callar, string cCardNum, AutoDocNoGenerateParam docNoParam, Dictionary input) + private MoRoutingBillDs GetVoucherDs(IContextContainer callar, string cCardNum, AutoDocNoGenerateParam docNoParam, Dictionary input) { - var ds = await GetEmptyDs(callar, cCardNum); + _logInfo.Debug("获取空数据集"); + var ds = GetEmptyDs(callar, cCardNum); var head = ds.MoRoutingBill.NewMoRoutingBillRow(); ds.MoRoutingBill.AddMoRoutingBillRow(head); - var docNo = U8MCommonExecutor.BFVoucher_GetVoucherID(cCardNum, docNoParam.Paramaters, false, callar); + //_logInfo.Debug($"获取单号规则-----{cCardNum}-----{docNoParam.Paramaters.ToJson()}"); + //var hsTable = U8MCommonExecutor.BFVoucher_GetVoucherIDFormula(cCardNum, callar); + //_logInfo.Debug($"获取单号-----{cCardNum}-----{hsTable.ToJson()}"); + //var docNo = U8MCommonExecutor.BFVoucher_GetVoucherID(cCardNum, hsTable, false, callar); + + var docNo = ""; + + _logInfo.Debug("BE处理中"); var be = new UFSoft.U8.SF.BE.MoRoutingBill(ds); be.cVouchType = cCardNum; be.cVouchCode = ""; + _logInfo.Debug("填充表头参数"); var beHead = new BEHelper(be); beHead.SetValue(input); if (string.IsNullOrWhiteSpace(be.cVouchCode)) { + _logInfo.Debug($"设置单号:{docNo}"); be.cVouchCode = docNo; } var bodys = input["body"] as List> ?? $"{input["body"]}".ToObject>>(); + _logInfo.Debug("填充表体参数"); for (var i = 0; i < bodys.Count; i++) { var body = bodys[i]; @@ -113,7 +132,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M beBody.SetValue(body); } - + _logInfo.Debug($"获取数据集:{be.DataObject.ToJson()}"); ds = (MoRoutingBillDs)be.DataObject; return ds; @@ -127,13 +146,13 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M /// /// /// - public async Task> Save(BaseLogin baseLogin, string cCardNum, Dictionary input) + public BaseResult Save(BaseLogin baseLogin, string cCardNum, Dictionary input) { try { - var callar = baseLogin.callar; + var callar = new DefaultContextContainer(); - var docNoParam = new AutoDocNoGenerateParam(EnumAutoDocNoType.HandAuto, cCardNum) + var docNoParam = new AutoDocNoGenerateParam(EnumAutoDocNoType.HandAuto, cCardNum,false) { IsCurrentDocNoByHand = false }; @@ -145,23 +164,21 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M throw new Exception("未能构建数据集"); } - _logInfo.Debug($"单据编码:{cCardNum},开始保存"); - var id = SFExecutor.BFMoRoutingBill_MoRoutingBillSave(ds.Result, docNoParam, callar); + var id = SFExecutor.BFMoRoutingBill_MoRoutingBillSave(ds, docNoParam, callar); + var voucherCode = SFExecutor.BFMoRoutingBill_GetCodeById(id, callar); - _logInfo.Debug($"单据编码:{cCardNum},保存完成,id:{id}"); + _logInfo.Debug($"单据编码:{cCardNum},保存完成,id:{id},单号:{voucherCode}"); - return new BaseResult { bSuccess = true, message = "新增成功", result = $"{id}" }; + return new BaseResult { bSuccess = true, message = "新增成功", result = $"{id}",voucherCode = voucherCode,voucherId =$"{id}" }; } catch (U8MReferenceBENotExistException ex) { _logInfo.Error(ex.Message, ex); - await Task.Delay(1); - return new BaseResult { bSuccess = false, message = "新增失败", result = ex.Message }; } catch (TargetInvocationException ex) @@ -170,16 +187,12 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M { _logInfo.Error(ex.InnerException.Message, ex.InnerException); - await Task.Delay(1); - return new BaseResult { bSuccess = false, message = "新增失败", result = ex.InnerException.Message }; } else { _logInfo.Error(ex.Message, ex); - await Task.Delay(1); - return new BaseResult { bSuccess = false, message = "新增失败", result = ex.Message }; } @@ -189,8 +202,6 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M _logInfo.Error(ex.Message, ex); - await Task.Delay(1); - return new BaseResult { bSuccess = false, message = "新增失败", result = ex.Message }; } } @@ -202,20 +213,21 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M /// /// /// - public async Task> Save(BaseLogin baseLogin, string cCardNum, List> inputs) + public BaseResult Save(BaseLogin baseLogin, string cCardNum, List> inputs) { var idList = new List(); + var codeList = new List(); try { foreach (var input in inputs) { - var iRes = await Save(baseLogin, cCardNum, input); + var iRes = Save(baseLogin, cCardNum, input); if (!iRes.bSuccess && idList.Count > 0) { - await Delete(baseLogin, idList); + Delete(baseLogin, idList); return iRes; } @@ -224,11 +236,12 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M return iRes; } - idList.Add(Convert.ToInt32(iRes.result)); + idList.Add(Convert.ToInt32(iRes.voucherId)); + codeList.Add(iRes.voucherCode); } - return new BaseResult { bSuccess = true, message = "新增成功", result = $"{string.Join(",", idList)}" }; + return new BaseResult { bSuccess = true, message = "新增成功", result = $"{string.Join(",", codeList)}" ,voucherCode = $"{string.Join(",", codeList)}",voucherId = $"{string.Join(",", idList)}" }; } catch (Exception ex) @@ -248,7 +261,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M /// /// /// - public async Task> Delete(BaseLogin baseLogin, string cCardNum, List inputs) + public BaseResult Delete(BaseLogin baseLogin, string cCardNum, List inputs) { try { @@ -264,7 +277,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M newInput.Add(int.Parse($"{dataReader[0]}")); } - return await Delete(baseLogin, newInput); + return Delete(baseLogin, newInput); } catch (U8MReferenceBENotExistException ex) { @@ -287,7 +300,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M /// /// /// - public async Task> Delete(BaseLogin baseLogin, List inputs) + public BaseResult Delete(BaseLogin baseLogin, List inputs) { try { @@ -309,16 +322,12 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M { _logInfo.Error(ex.Message, ex); - await Task.Delay(1); - return new BaseResult { bSuccess = false, message = "新增失败", result = ex.Message }; } catch (Exception ex) { _logInfo.Error(ex.Message, ex); - await Task.Delay(1); - return new BaseResult { bSuccess = false, message = "删除失败", result = ex.Message }; } @@ -333,7 +342,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M /// /// /// - public async Task> Verify(BaseLogin baseLogin, string cCardNum, List inputs) + public BaseResult Verify(BaseLogin baseLogin, string cCardNum, List inputs) { try { @@ -349,7 +358,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M newInput.Add(int.Parse($"{dataReader[0]}")); } - return await Verify(baseLogin, newInput); + return Verify(baseLogin, newInput); } catch (U8MReferenceBENotExistException ex) { @@ -372,7 +381,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M /// /// /// - public async Task> Verify(BaseLogin baseLogin, List inputs) + public BaseResult Verify(BaseLogin baseLogin, List inputs) { try { @@ -394,16 +403,12 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M { _logInfo.Error(ex.Message, ex); - await Task.Delay(1); - return new BaseResult { bSuccess = false, message = "新增失败", result = ex.Message }; } catch (Exception ex) { _logInfo.Error(ex.Message, ex); - await Task.Delay(1); - return new BaseResult { bSuccess = false, message = "审核失败", result = ex.Message }; } @@ -418,7 +423,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M /// /// /// - public async Task> UnVerify(BaseLogin baseLogin, string cCardNum, List inputs) + public BaseResult UnVerify(BaseLogin baseLogin, string cCardNum, List inputs) { try { @@ -434,14 +439,12 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M newInput.Add(int.Parse($"{dataReader[0]}")); } - return await UnVerify(baseLogin, newInput); + return UnVerify(baseLogin, newInput); } catch (U8MReferenceBENotExistException ex) { _logInfo.Error(ex.Message, ex); - await Task.Delay(1); - return new BaseResult { bSuccess = false, message = "弃审失败", result = ex.Message }; } catch (Exception ex) @@ -459,7 +462,7 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M /// /// /// - public async Task> UnVerify(BaseLogin baseLogin, List inputs) + public BaseResult UnVerify(BaseLogin baseLogin, List inputs) { try { @@ -481,16 +484,12 @@ namespace UFIDA.U8.Framework.Api.ControlObject.U8M { _logInfo.Error(ex.Message, ex); - await Task.Delay(1); - return new BaseResult { bSuccess = false, message = "新增失败", result = ex.Message }; } catch (Exception ex) { _logInfo.Error(ex.Message, ex); - await Task.Delay(1); - return new BaseResult { bSuccess = false, message = "弃审失败", result = ex.Message }; } diff --git a/UFIDA.U8.Framework.Api.ControlObject/UFIDA.U8.Framework.Api.ControlObject.csproj b/UFIDA.U8.Framework.Api.ControlObject/UFIDA.U8.Framework.Api.ControlObject.csproj index 713754b..6d15e39 100644 --- a/UFIDA.U8.Framework.Api.ControlObject/UFIDA.U8.Framework.Api.ControlObject.csproj +++ b/UFIDA.U8.Framework.Api.ControlObject/UFIDA.U8.Framework.Api.ControlObject.csproj @@ -31,6 +31,7 @@ TRACE prompt 4 + x86 diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/DPController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/DPController.cs index 66366d3..aa2148f 100644 --- a/UFIDA.U8.Framework.Api/Controllers/U8/DPController.cs +++ b/UFIDA.U8.Framework.Api/Controllers/U8/DPController.cs @@ -69,7 +69,8 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 var output = new LoginOutput { cAccId = cAccId, - userToken = CommUnit.GetEncrypt(userToken) + userToken = CommUnit.GetEncrypt(userToken), + loginParamter = param }; return new BaseResult() { bSuccess = true, message = "登录成功", result = CommUnit.GetEncrypt(output.ToJson()) }; diff --git a/UFIDA.U8.Framework.Api/Controllers/U8/SFCController.cs b/UFIDA.U8.Framework.Api/Controllers/U8/SFCController.cs index 6ff13ad..a72b617 100644 --- a/UFIDA.U8.Framework.Api/Controllers/U8/SFCController.cs +++ b/UFIDA.U8.Framework.Api/Controllers/U8/SFCController.cs @@ -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 res; @@ -101,16 +88,18 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 var inputs = input["inputs"] as List> ?? $"{input["inputs"]}".ToObject>>(); _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 res; @@ -183,18 +164,20 @@ namespace UFIDA.U8.Framework.Api.Controllers.U8 var inputs = input["inputs"] as List> ?? $"{input["inputs"]}".ToObject>>(); _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 { 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 { 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 { 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 { 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 { bSuccess = false, message = ex.Message, result = ex.StackTrace }; } - - } /// diff --git a/UFIDA.U8.Framework.Api/Entity/LoginInput.cs b/UFIDA.U8.Framework.Api/Entity/LoginInput.cs index 76b68ce..0cb4e8c 100644 --- a/UFIDA.U8.Framework.Api/Entity/LoginInput.cs +++ b/UFIDA.U8.Framework.Api/Entity/LoginInput.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.Linq; using System.Web; +using UFIDA.U8.Framework.Api.ControlObject.Entity; +// ReSharper disable IdentifierTypo namespace UFIDA.U8.Framework.Api.Entity { @@ -51,5 +53,10 @@ namespace UFIDA.U8.Framework.Api.Entity /// 用户令牌 /// public string userToken { get; set; } + + /// + /// 登录参数 + /// + public LoginParamter loginParamter { get; set; } } } \ No newline at end of file diff --git a/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj b/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj index 793b89c..3aebdba 100644 --- a/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj +++ b/UFIDA.U8.Framework.Api/UFIDA.U8.Framework.Api.csproj @@ -45,6 +45,7 @@ TRACE prompt 4 + x86 diff --git a/UFIDA.U8.Framework.Api/Unit/RemoteLoader.cs b/UFIDA.U8.Framework.Api/Unit/RemoteLoader.cs index 4a08f95..b1f40e9 100644 --- a/UFIDA.U8.Framework.Api/Unit/RemoteLoader.cs +++ b/UFIDA.U8.Framework.Api/Unit/RemoteLoader.cs @@ -58,7 +58,7 @@ namespace UFIDA.U8.Framework.Api.Unit baseLogin.Init(_paramter); - return await bf.Save(baseLogin, cCardNum, input); + return bf.Save(baseLogin, cCardNum, input); } catch (Exception ex) @@ -103,7 +103,7 @@ namespace UFIDA.U8.Framework.Api.Unit baseLogin.Init(_paramter); - return await bf.Save(baseLogin, cCardNum, inputs); + return bf.Save(baseLogin, cCardNum, inputs); } catch (Exception ex)