Browse Source

xls:厂商库异常处理机制,和网络接口访问变更

xulisong 6 years ago
parent
commit
c4b793c319
77 changed files with 524 additions and 310 deletions
  1. BIN
      MBI/Dlls/FirmLibDll/FWindSoft.Wpf.dll
  2. BIN
      MBI/Dlls/FirmLibDll/FWindSoft.Wpf.pdb
  3. BIN
      MBI/Dlls/FirmLibDll/FWindSoft.dll
  4. BIN
      MBI/Dlls/FirmLibDll/FWindSoft.pdb
  5. 2 2
      MBI/FirmLib/Com.FirmLib.UI/BllCommon/AssetSelector.cs
  6. 2 0
      MBI/FirmLib/Com.FirmLib.UI/Com.FirmLib.UI.csproj
  7. 33 0
      MBI/FirmLib/Com.FirmLib.UI/Common/TryCatchWrapper.cs
  8. 48 0
      MBI/FirmLib/Com.FirmLib.UI/Extension/MessageTipExtension.cs
  9. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Insuer/Model/InsuerUtils.cs
  10. 3 3
      MBI/FirmLib/Com.FirmLib.UI/Insuer/VmInsuerAssetSelector.cs
  11. 2 2
      MBI/FirmLib/Com.FirmLib.UI/Insuer/VmInsuerEditor.cs
  12. 2 2
      MBI/FirmLib/Com.FirmLib.UI/Insuer/VmInsurancePolicyEditor.cs
  13. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Insuer/VmPolicyEnsure.cs
  14. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Insuer/VmPolicySaveEnsure.cs
  15. 2 2
      MBI/FirmLib/Com.FirmLib.UI/Insuer/VmSimplePolicyEditor.cs
  16. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Insuer/WinInsuerAssetSelector.xaml.cs
  17. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Insuer/WinInsuerBaseInfo.xaml.cs
  18. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Insuer/WinInsuerInfo.xaml.cs
  19. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Insuer/WinInsuerProjectInfo.xaml.cs
  20. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Insuer/WinInsurancePolicyEditor.xaml.cs
  21. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Insuer/WinPolicyEnsure.xaml.cs
  22. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Insuer/WinPolicySaveEnsure.xaml.cs
  23. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Insuer/WinPolicySelector.xaml.cs
  24. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Insuer/WinSimplePolicyEditor.xaml.cs
  25. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Maintainer/VmAddProductType.cs
  26. 3 3
      MBI/FirmLib/Com.FirmLib.UI/Maintainer/VmMaintainerAssetSelector.cs
  27. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Maintainer/VmMaintainerSaveEnsure.cs
  28. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Maintainer/VmUpdateProductType.cs
  29. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinAddLossProductType.xaml.cs
  30. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinAddProductType.xaml.cs
  31. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinMaintainerAssetSelector.xaml.cs
  32. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinMaintainerBaseInfo.xaml.cs
  33. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinMaintainerInfo.xaml.cs
  34. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinMaintainerProjectAsset.xaml.cs
  35. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinMaintainerSaveEnsure.xaml.cs
  36. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinManitainerProjectInfo.xaml.cs
  37. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinUpdateProductType.xaml.cs
  38. 7 2
      MBI/FirmLib/Com.FirmLib.UI/Manufacturer/VmBrandEditor.cs
  39. 7 2
      MBI/FirmLib/Com.FirmLib.UI/Manufacturer/VmManufactureInfo.cs
  40. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Manufacturer/VmProductType.cs
  41. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinBrandEditor.xaml.cs
  42. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinManufactureBaseInfo.xaml.cs
  43. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinManufactureInfo.xaml.cs
  44. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinManufacturerEditor.xaml.cs
  45. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinProductEditor.xaml.cs
  46. 2 1
      MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinProductList.xaml.cs
  47. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinProductType.xaml.cs
  48. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinProjectAssetList.xaml.cs
  49. 1 1
      MBI/FirmLib/Com.FirmLib.UI/NavigationManager/FirmLibPost.cs
  50. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Seller/VmMultiProductTypeSelector.cs
  51. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Seller/VmSellerProjectContract.cs
  52. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Seller/VmSellerProjectInfo.cs
  53. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Seller/VmSingleProductTypeSelector.cs
  54. 22 4
      MBI/FirmLib/Com.FirmLib.UI/Seller/VmSupplyAssetCreater.cs
  55. 3 3
      MBI/FirmLib/Com.FirmLib.UI/Seller/VmSupplyAssetSelector.cs
  56. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Seller/WinAddLossProductType.xaml.cs
  57. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Seller/WinMultiProductTypeSelector.xaml.cs
  58. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Seller/WinSellerBaseInfo.xaml.cs
  59. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Seller/WinSellerInfo.xaml.cs
  60. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Seller/WinSellerProjectContract.xaml.cs
  61. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Seller/WinSellerProjectInfo.xaml.cs
  62. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Seller/WinSingleProductTypeSelector.xaml.cs
  63. 2 1
      MBI/FirmLib/Com.FirmLib.UI/Seller/WinSupplyAssetCreater.xaml.cs
  64. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Seller/WinSupplyAssetSelector.xaml.cs
  65. 1 1
      MBI/FirmLib/Com.FirmLib.UI/Seller/WinSupplyContractNoSelector.xaml.cs
  66. 150 71
      MBI/FirmLib/Com.FirmLib/BaseHttpBll.cs
  67. 4 2
      MBI/FirmLib/Com.FirmLib/Bll/EquipmentFamilyBll.cs
  68. 4 2
      MBI/FirmLib/Com.FirmLib/Bll/EquipmentInfoPointBll.cs
  69. 4 2
      MBI/FirmLib/Com.FirmLib/Bll/FileBll.cs
  70. 2 17
      MBI/FirmLib/Com.FirmLib/Bll/MaintainerBll.cs
  71. 12 59
      MBI/FirmLib/Com.FirmLib/Bll/ManufacturerBll.cs
  72. 12 61
      MBI/FirmLib/Com.FirmLib/Bll/ProductBll.cs
  73. 1 22
      MBI/FirmLib/Com.FirmLib/Bll/ProductTypeBll.cs
  74. 2 1
      MBI/FirmLib/Com.FirmLib/Bll/ProjectBll.cs
  75. 2 0
      MBI/FirmLib/Com.FirmLib/Com.FirmLib.csproj
  76. 29 0
      MBI/FirmLib/Com.FirmLib/RequestInfo.cs
  77. 116 0
      MBI/FirmLib/Com.FirmLib/ResponseRelation.cs

BIN
MBI/Dlls/FirmLibDll/FWindSoft.Wpf.dll


BIN
MBI/Dlls/FirmLibDll/FWindSoft.Wpf.pdb


BIN
MBI/Dlls/FirmLibDll/FWindSoft.dll


BIN
MBI/Dlls/FirmLibDll/FWindSoft.pdb


+ 2 - 2
MBI/FirmLib/Com.FirmLib.UI/BllCommon/AssetSelector.cs

@@ -107,7 +107,7 @@ namespace Com.FirmLib.UI.BllCommon
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+                MessageTipEx.Show(ex);
             }
         }
         public bool CanSearchCommand(object parameter)
@@ -132,7 +132,7 @@ namespace Com.FirmLib.UI.BllCommon
             }
             catch (Exception ex)
             {
-                MessageTip.Show(ex.Message);
+              MessageTipEx.Show(ex);
             }
         }
         public bool CanPageIndexChangedCommand(object parameter)

+ 2 - 0
MBI/FirmLib/Com.FirmLib.UI/Com.FirmLib.UI.csproj

@@ -106,6 +106,8 @@
     <Compile Include="Common\Enums.cs" />
     <Compile Include="Common\IdNameItem.cs" />
     <Compile Include="Common\InfoPointTemplateManager.cs" />
+    <Compile Include="Common\TryCatchWrapper.cs" />
+    <Compile Include="Extension\MessageTipExtension.cs" />
     <Compile Include="Common\Model\AssetShowItem.cs" />
     <Compile Include="Common\Model\VenderItem.cs" />
     <Compile Include="Common\Model\VenderProjectParameter.cs" />

+ 33 - 0
MBI/FirmLib/Com.FirmLib.UI/Common/TryCatchWrapper.cs

@@ -0,0 +1,33 @@
+/*-------------------------------------------------------------------------
+ * 功能描述:TryCatchWrapper
+ * 作者:xulisong
+ * 创建时间: 2018/12/20 11:35:30
+ * 版本号:v1.0
+ *  -------------------------------------------------------------------------*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Com.FirmLib.UI
+{
+    /// <summary>
+    /// 异常处理包装器
+    /// </summary>
+    public class TryCatchWrapper
+    {
+        public static void Handled(Action action)
+        {
+            try
+            {
+                action?.Invoke();
+            }
+            catch (Exception e)
+            {
+                MessageTipEx.Show(e);
+            }
+        }
+    }
+}

+ 48 - 0
MBI/FirmLib/Com.FirmLib.UI/Extension/MessageTipExtension.cs

@@ -0,0 +1,48 @@
+/*-------------------------------------------------------------------------
+ * 功能描述:MessageTipExtension
+ * 作者:xulisong
+ * 创建时间: 2018/12/19 14:01:42
+ * 版本号:v1.0
+ *  -------------------------------------------------------------------------*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using FWindSoft;
+using FWindSoft.Wpf;
+
+namespace Com.FirmLib.UI
+{
+    public class MessageTipEx
+    {
+        public static void Show(Window owner, Exception ex)
+        {
+            string result = ex.Message;
+
+            #region 异常详细信息
+            #if DEBUG
+            StringBuilder builder = new StringBuilder();
+            builder.Append(ex.Message);
+            builder.Append(Environment.NewLine);
+            builder.Append(ex.StackTrace.ToString());
+            result = builder.ToString(); 
+            #endif
+            #endregion
+
+            if (ex is HttpApiException httpEx)
+            {
+                result = httpEx.ToString();
+            }
+
+            MessageTip.Show(owner,result,"错误提示");
+        }
+
+        public static void Show(Exception ex)
+        {
+            Show(null, ex);
+        }
+    }
+}

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Insuer/Model/InsuerUtils.cs

@@ -54,7 +54,7 @@ namespace Com.FirmLib.UI.Insuer.Model
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.StackTrace.ToString());
+                MessageTipEx.Show(ex);
             }
 
         }

+ 3 - 3
MBI/FirmLib/Com.FirmLib.UI/Insuer/VmInsuerAssetSelector.cs

@@ -145,7 +145,7 @@ namespace Com.FirmLib.UI.Insuer
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+                MessageTipEx.Show(ex);
             }
         }
         public bool CanEnsureCommand(object parameter)
@@ -179,7 +179,7 @@ namespace Com.FirmLib.UI.Insuer
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+               MessageTipEx.Show(ex);
             }
 
         }
@@ -214,7 +214,7 @@ namespace Com.FirmLib.UI.Insuer
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+                MessageTipEx.Show(ex);
             }
         }
         public bool CanTabChangedCommand(object parameter)

+ 2 - 2
MBI/FirmLib/Com.FirmLib.UI/Insuer/VmInsuerEditor.cs

@@ -89,7 +89,7 @@ namespace Com.FirmLib.UI.Insuer
             }
             catch (Exception e)
             {
-                MessageTip.Show(this.GetWindow(), e.Message);
+               MessageTipEx.Show(this.GetWindow(), e);
             }
         }
         public bool CanAddCommand(object parameter)
@@ -114,7 +114,7 @@ namespace Com.FirmLib.UI.Insuer
             }
             catch (Exception e)
             {
-                MessageTip.Show(this.GetWindow(), e.Message);
+               MessageTipEx.Show(this.GetWindow(), e);
             }
         }
         public bool CanAddAndManageCommand(object parameter)

+ 2 - 2
MBI/FirmLib/Com.FirmLib.UI/Insuer/VmInsurancePolicyEditor.cs

@@ -285,7 +285,7 @@ namespace Com.FirmLib.UI.Insuer
             }
             catch (Exception e)
             {
-                MessageTip.Show(e.ToString());
+               MessageTipEx.Show(this.GetWindow(), e);
             }
         }
         public bool CanUploadCommand(object parameter)
@@ -339,7 +339,7 @@ namespace Com.FirmLib.UI.Insuer
             catch (Exception e)
             {
 
-                MessageTip.Show(e.ToString());
+                MessageTipEx.Show(this.GetWindow(), e);
             }
         }
         public bool CanSaveCommand(object parameter)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Insuer/VmPolicyEnsure.cs

@@ -98,7 +98,7 @@ namespace Com.FirmLib.UI.Insuer
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+                MessageTipEx.Show(ex);
             }
         }
         public bool CanEnsureCommand(object parameter)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Insuer/VmPolicySaveEnsure.cs

@@ -119,7 +119,7 @@ namespace Com.FirmLib.UI.Insuer
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+                MessageTipEx.Show(ex);
             }
         }
         public bool CanEnsureCommand(object parameter)

+ 2 - 2
MBI/FirmLib/Com.FirmLib.UI/Insuer/VmSimplePolicyEditor.cs

@@ -140,7 +140,7 @@ namespace Com.FirmLib.UI.Insuer
             }
             catch (Exception e)
             {
-                MessageTip.Show(e.ToString());
+               MessageTipEx.Show(this.GetWindow(), e);
             }
         }
         public bool CanUploadCommand(object parameter)
@@ -196,7 +196,7 @@ namespace Com.FirmLib.UI.Insuer
             }
             catch (Exception ex)
             {
-                MessageTip.Show(ex.Message);
+               MessageTipEx.Show(ex);
             }
         }
         public bool CanEnsureCommand(object parameter)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Insuer/WinInsuerAssetSelector.xaml.cs

@@ -34,7 +34,7 @@ namespace Com.FirmLib.UI.Insuer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+             TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Insuer/WinInsuerBaseInfo.xaml.cs

@@ -35,7 +35,7 @@ namespace Com.FirmLib.UI.Insuer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化列表数据
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Insuer/WinInsuerInfo.xaml.cs

@@ -39,7 +39,7 @@ namespace Com.FirmLib.UI.Insuer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化列表数据
-            m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
             //加载醒目信息
             this.Title = this.m_Vm.Name;
         }

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Insuer/WinInsuerProjectInfo.xaml.cs

@@ -52,7 +52,7 @@ namespace Com.FirmLib.UI.Insuer
                     this.Title = string.Format("{0}", currentParameter.Project.Name);
                 }
             }
-            this.m_Vm.Init(parameter);
+             TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
 
        

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Insuer/WinInsurancePolicyEditor.xaml.cs

@@ -45,7 +45,7 @@ namespace Com.FirmLib.UI.Insuer
             {
                 this.Title = "修改保单";            
             }
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Insuer/WinPolicyEnsure.xaml.cs

@@ -33,7 +33,7 @@ namespace Com.FirmLib.UI.Insuer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Insuer/WinPolicySaveEnsure.xaml.cs

@@ -33,7 +33,7 @@ namespace Com.FirmLib.UI.Insuer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+           TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Insuer/WinPolicySelector.xaml.cs

@@ -33,7 +33,7 @@ namespace Com.FirmLib.UI.Insuer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+           TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Insuer/WinSimplePolicyEditor.xaml.cs

@@ -33,7 +33,7 @@ namespace Com.FirmLib.UI.Insuer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Maintainer/VmAddProductType.cs

@@ -139,7 +139,7 @@ namespace Com.FirmLib.UI.Maintainer
             catch (Exception ex)
             {
 
-                MessageTip.Show(this.GetWindow(), ex.ToString());
+              MessageTipEx.Show(this.GetWindow(), ex);
             }
         }
         #endregion

+ 3 - 3
MBI/FirmLib/Com.FirmLib.UI/Maintainer/VmMaintainerAssetSelector.cs

@@ -144,7 +144,7 @@ namespace Com.FirmLib.UI.Maintainer
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+               MessageTipEx.Show(ex);
             }
         }
         public bool CanEnsureCommand(object parameter)
@@ -178,7 +178,7 @@ namespace Com.FirmLib.UI.Maintainer
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+               MessageTipEx.Show(ex);
             }
 
         }
@@ -213,7 +213,7 @@ namespace Com.FirmLib.UI.Maintainer
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+               MessageTipEx.Show(ex);
             }
         }
         public bool CanTabChangedCommand(object parameter)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Maintainer/VmMaintainerSaveEnsure.cs

@@ -118,7 +118,7 @@ namespace Com.FirmLib.UI.Maintainer
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+                MessageTipEx.Show(ex);
             }
         }
         public bool CanEnsureCommand(object parameter)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Maintainer/VmUpdateProductType.cs

@@ -127,7 +127,7 @@ namespace Com.FirmLib.UI.Maintainer
             }
             catch (Exception ex)
             {
-                MessageTip.Show(this.GetWindow(), ex.ToString());
+                MessageTipEx.Show(this.GetWindow(), ex);
             }
 
         }

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinAddLossProductType.xaml.cs

@@ -33,7 +33,7 @@ namespace Com.FirmLib.UI.Maintainer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+           TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinAddProductType.xaml.cs

@@ -33,7 +33,7 @@ namespace Com.FirmLib.UI.Maintainer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+          TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinMaintainerAssetSelector.xaml.cs

@@ -34,7 +34,7 @@ namespace Com.FirmLib.UI.Maintainer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinMaintainerBaseInfo.xaml.cs

@@ -35,7 +35,7 @@ namespace Com.FirmLib.UI.Maintainer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化列表数据
-            this.m_Vm.Init(parameter);
+             TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinMaintainerInfo.xaml.cs

@@ -39,7 +39,7 @@ namespace Com.FirmLib.UI.Maintainer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化列表数据
-            m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
             //加载醒目信息
             this.Title = this.m_Vm.Name;
         }

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinMaintainerProjectAsset.xaml.cs

@@ -37,7 +37,7 @@ namespace Com.FirmLib.UI.Maintainer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化列表数据
-            m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
             //加载项目信息
         }
         #region 界面关联事件

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinMaintainerSaveEnsure.xaml.cs

@@ -33,7 +33,7 @@ namespace Com.FirmLib.UI.Maintainer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinManitainerProjectInfo.xaml.cs

@@ -38,7 +38,7 @@ namespace Com.FirmLib.UI.Maintainer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化列表数据
-            m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
             //加载项目信息
             this.Title = this.m_Vm.ProjectName;
         }

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinUpdateProductType.xaml.cs

@@ -33,7 +33,7 @@ namespace Com.FirmLib.UI.Maintainer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+           TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 7 - 2
MBI/FirmLib/Com.FirmLib.UI/Manufacturer/VmBrandEditor.cs

@@ -211,8 +211,13 @@ namespace Com.FirmLib.UI.Manufacturer
             var result = MessageTip.Show(this.GetWindow(), "是否要删除", "提示", MessageBoxButton.YesNo);
             if (result == MessageBoxResult.Yes)
             {
-                BllFactory<BrandBll>.Instance.Delete(new BrandItem() { Id = BrandId });
-                return true;
+                bool flag=BllFactory<BrandBll>.Instance.Delete(new BrandItem() { Id = BrandId });
+                if (!flag)
+                {
+                    MessageTip.Show(this.GetWindow(), "删除失败");
+                }
+
+                return flag;
             }
             return false;
         }

+ 7 - 2
MBI/FirmLib/Com.FirmLib.UI/Manufacturer/VmManufactureInfo.cs

@@ -267,14 +267,19 @@ namespace Com.FirmLib.UI.Manufacturer
                 var result = MessageTip.Show(this.GetWindow(), "是否要删除", "提示", MessageBoxButton.YesNo);
                 if (result == MessageBoxResult.Yes)
                 {
-                    BllFactory<ProductBll>.Instance.Delete(new ProductItem() { Id = item.ProductId });
+                    var flag=BllFactory<ProductBll>.Instance.Delete(new ProductItem() { Id = item.ProductId });
+                    if (!flag)
+                    {
+                        MessageTip.Show(this.GetWindow(), "删除失败");
+                    }
+
                     LoadProdutItems(CurrentSelectedBrand.Id);//或者用下面的方式
                    // ProductItems.Remove(item);
                 }
             }
             catch (Exception ex)
             {
-                MessageTip.Show(this.GetWindow(), ex.StackTrace?.ToString());
+              MessageTipEx.Show(this.GetWindow(), ex);
             }
         }
         public bool CanDeleteCommand(object parameter)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Manufacturer/VmProductType.cs

@@ -213,7 +213,7 @@ namespace Com.FirmLib.UI.Manufacturer
             catch (Exception e)
             {
 
-                MessageTip.Show(this.GetWindow(), e.Message.ToString());
+                MessageTipEx.Show(this.GetWindow(), e);
             }
            
         }

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinBrandEditor.xaml.cs

@@ -56,7 +56,7 @@ namespace Com.FirmLib.UI.Manufacturer
                 btnAddProduct.Visibility = Visibility.Collapsed;
                 stackDelete.Visibility = Visibility.Visible;
             }
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinManufactureBaseInfo.xaml.cs

@@ -36,7 +36,7 @@ namespace Com.FirmLib.UI.Manufacturer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化列表数据
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinManufactureInfo.xaml.cs

@@ -41,7 +41,7 @@ namespace Com.FirmLib.UI.Manufacturer
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化列表数据
-            m_Vm.Init(parameter);
+           TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
             //加载醒目信息
             this.Title = this.m_Vm.ManufactureName;
         }

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinManufacturerEditor.xaml.cs

@@ -44,7 +44,7 @@ namespace Com.FirmLib.UI.Manufacturer
             {
                 this.Title = "编辑生产厂商";
             }
-            this.m_Vm.Init(parameter);
+             TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinProductEditor.xaml.cs

@@ -36,7 +36,7 @@ namespace Com.FirmLib.UI.Manufacturer
 
         protected override void LoadData(LoadParameter parameter)
         {
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 2 - 1
MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinProductList.xaml.cs

@@ -35,7 +35,8 @@ namespace Com.FirmLib.UI.Manufacturer
         }
         protected override void LoadData(LoadParameter parameter)
         {
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
+            //this.m_Vm.Init(parameter);
         }
     }
 }

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinProductType.xaml.cs

@@ -37,7 +37,7 @@ namespace Com.FirmLib.UI.Manufacturer
 
         protected override void LoadData(LoadParameter parameter)
         {
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
             this.Title = string.Format("[{0}-{1}]{2}", this.m_Vm.Brand.Name, this.m_Vm.Product.Name, "型号");
 
             var columns = DataGrid.CreateColumns(this.m_Vm.RefDefinitions, "Parameters", InfoPointTemplateParse.CreateTemplateManager());

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinProjectAssetList.xaml.cs

@@ -48,7 +48,7 @@ namespace Com.FirmLib.UI.Manufacturer
                     this.Title = string.Format("{0}资产清单", currentParameter.ProjectLocalName);
                 }
             }
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
        
         #region 界面关联事件

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/NavigationManager/FirmLibPost.cs

@@ -61,7 +61,7 @@ namespace Com.FirmLib.UI
             catch (Exception e)
             {
 
-                MessageTip.Show(e.Message);
+               MessageTipEx.Show( e);
             }
             if (win != null)
             {

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Seller/VmMultiProductTypeSelector.cs

@@ -144,7 +144,7 @@ namespace Com.FirmLib.UI.Seller
             catch (Exception ex)
             {
 
-                MessageTip.Show(this.GetWindow(), ex.ToString());
+               MessageTipEx.Show(this.GetWindow(), ex);
             }
         }
         #endregion

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Seller/VmSellerProjectContract.cs

@@ -342,7 +342,7 @@ namespace Com.FirmLib.UI.Seller
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+                MessageTipEx.Show(ex);
             }
         }
         public bool CanSelectContractNo(object parameter)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Seller/VmSellerProjectInfo.cs

@@ -191,7 +191,7 @@ namespace Com.FirmLib.UI.Seller
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+              MessageTipEx.Show(ex);
             }
         }
         public bool CanSelectContractCommand(object parameter)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Seller/VmSingleProductTypeSelector.cs

@@ -115,7 +115,7 @@ namespace Com.FirmLib.UI.Seller
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+               MessageTipEx.Show(ex);
             }
         }
         public bool CanOkCommand(object parameter)

+ 22 - 4
MBI/FirmLib/Com.FirmLib.UI/Seller/VmSupplyAssetCreater.cs

@@ -11,6 +11,7 @@ using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Linq;
+using System.Text;
 using System.Windows;
 using Com.FirmLib.Bll;
 using Com.FirmLib.Entity;
@@ -148,7 +149,7 @@ namespace Com.FirmLib.UI.Seller
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+                MessageTipEx.Show(ex);
             }
         }
         public bool CanSelectProductType(object parameter)
@@ -171,7 +172,7 @@ namespace Com.FirmLib.UI.Seller
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.ToString());
+              MessageTipEx.Show(ex);
             }
         }
         public bool CanCreateAssetItem(object parameter)
@@ -202,9 +203,26 @@ namespace Com.FirmLib.UI.Seller
             }
             else
             {
-                for (int i = currentCount; i < uiCount; i++)
+                string localName = string.Empty;
+                if (CurrentProductType != null)
+                {
+                    StringBuilder builder = new StringBuilder();
+                    string famiy = EquipmentFamilyManager.GetFamilyName(CurrentProductType.FamilyCode);
+                    builder.Append($"{CurrentProductType.ProductName}({famiy}){CurrentProductType.ProductTypeName}");
+                    localName = builder.ToString();
+                }
+
+                for (int i = 0; i < currentCount; i++)
                 {
-                    this.AssetItems.Add(new AssetShowItem() { LocalName = i.ToString(),ProductionDate=DateTime.Today.ToString("yyyyMMdd") });
+                    var dataItem = this.AssetItems[i];
+                    if (dataItem != null && string.IsNullOrWhiteSpace(dataItem.LocalName))
+                    {
+                        dataItem.LocalName = localName ?? string.Empty;
+                    }
+                }
+                for (int i = currentCount; i < uiCount; i++)
+                {                    
+                    this.AssetItems.Add(new AssetShowItem() { LocalName =localName,ProductionDate=DateTime.Today.ToString("yyyyMMdd") });
                 }
             }
         }

+ 3 - 3
MBI/FirmLib/Com.FirmLib.UI/Seller/VmSupplyAssetSelector.cs

@@ -138,7 +138,7 @@ namespace Com.FirmLib.UI.Seller
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+               MessageTipEx.Show(ex);
             }
         }
         public bool CanEnsureCommand(object parameter)
@@ -173,7 +173,7 @@ namespace Com.FirmLib.UI.Seller
             catch (Exception ex)
             {
 
-                MessageTip.Show(ex.Message);
+               MessageTipEx.Show(ex);
             }
 
         }
@@ -207,7 +207,7 @@ namespace Com.FirmLib.UI.Seller
             }
             catch (Exception ex)
             {
-                MessageTip.Show(ex.Message);
+                MessageTipEx.Show(ex);
             }
         }
         public bool CanTabChangedCommand(object parameter)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Seller/WinAddLossProductType.xaml.cs

@@ -33,7 +33,7 @@ namespace Com.FirmLib.UI.Seller
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+           TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Seller/WinMultiProductTypeSelector.xaml.cs

@@ -36,7 +36,7 @@ namespace Com.FirmLib.UI.Seller
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化列表数据
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Seller/WinSellerBaseInfo.xaml.cs

@@ -35,7 +35,7 @@ namespace Com.FirmLib.UI.Seller
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化列表数据
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Seller/WinSellerInfo.xaml.cs

@@ -41,7 +41,7 @@ namespace Com.FirmLib.UI.Seller
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化列表数据
-            this.m_Vm.Init(parameter);
+           TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
             this.Title = this.m_Vm.Name;
         }
         #region 界面关联事件

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Seller/WinSellerProjectContract.xaml.cs

@@ -40,7 +40,7 @@ namespace Com.FirmLib.UI.Seller
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化列表数据
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Seller/WinSellerProjectInfo.xaml.cs

@@ -38,7 +38,7 @@ namespace Com.FirmLib.UI.Seller
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化列表数据
-            m_Vm.Init(parameter);
+           TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
             //加载醒目信息
             this.Title = this.m_Vm.ProjectName;
         }

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Seller/WinSingleProductTypeSelector.xaml.cs

@@ -33,7 +33,7 @@ namespace Com.FirmLib.UI.Seller
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 2 - 1
MBI/FirmLib/Com.FirmLib.UI/Seller/WinSupplyAssetCreater.xaml.cs

@@ -9,6 +9,7 @@
 
 using System;
 using System.Windows;
+using System.Windows.Controls;
 using FWindSoft.Wpf;
 
 namespace Com.FirmLib.UI.Seller
@@ -33,7 +34,7 @@ namespace Com.FirmLib.UI.Seller
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+            TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Seller/WinSupplyAssetSelector.xaml.cs

@@ -34,7 +34,7 @@ namespace Com.FirmLib.UI.Seller
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+           TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 1 - 1
MBI/FirmLib/Com.FirmLib.UI/Seller/WinSupplyContractNoSelector.xaml.cs

@@ -33,7 +33,7 @@ namespace Com.FirmLib.UI.Seller
         protected override void LoadData(LoadParameter parameter)
         {
             //初始化数据
-            this.m_Vm.Init(parameter);
+             TryCatchWrapper.Handled(() => this.m_Vm.Init(parameter));
         }
         #region 界面关联事件
         private void btnOK_Click(object sender, RoutedEventArgs e)

+ 150 - 71
MBI/FirmLib/Com.FirmLib/BaseHttpBll.cs

@@ -7,6 +7,7 @@ using System.Text;
 using System.Threading.Tasks;
 using Com.FirmLib.Common;
 using FirmHttpDao;
+using FWindSoft;
 using FWindSoft.Net.Http;
 using Newtonsoft.Json.Linq;
 
@@ -19,12 +20,16 @@ namespace Com.FirmLib
     {
         protected string m_ExtensionUri;
         protected HttpClient m_HttpClient;
+
         #region 错误机制
+
         /// <summary>
         /// 当前错误信息
         /// </summary>
         public string ErrorMessage { get; set; }
+
         #endregion
+
         #region 地址信息相关
 
         /// <summary>
@@ -35,6 +40,7 @@ namespace Com.FirmLib
         {
             return BllHttpSetting.Instance.EndUri;
         }
+
         /// <summary>
         /// 获取创建组
         /// </summary>
@@ -43,6 +49,7 @@ namespace Com.FirmLib
         {
             return BllHttpSetting.Instance.InsertKey();
         }
+
         /// <summary>
         /// 获取删除组
         /// </summary>
@@ -51,6 +58,7 @@ namespace Com.FirmLib
         {
             return BllHttpSetting.Instance.DeleteKey();
         }
+
         /// <summary>
         /// 获取更新组
         /// </summary>
@@ -59,6 +67,7 @@ namespace Com.FirmLib
         {
             return BllHttpSetting.Instance.UpdateKey();
         }
+
         /// <summary>
         /// 获取查询组
         /// </summary>
@@ -67,7 +76,9 @@ namespace Com.FirmLib
         {
             return BllHttpSetting.Instance.SearchKey();
         }
+
         #endregion
+
         public BaseHttpBll(string extensionUri)
         {
             Init(extensionUri);
@@ -78,35 +89,12 @@ namespace Com.FirmLib
             this.m_ExtensionUri = extensionUri;
         }
 
-        protected static void HandlerError(HttpResponseMessage responseMessage)
-        {
-            if (responseMessage.StatusCode != HttpStatusCode.OK)
-            {
-                StringBuilder builder = new StringBuilder();
-                builder.Append(string.Format("StatusCode:{0}", (int)responseMessage.StatusCode));
-                builder.AppendLine();
-                builder.Append(string.Format("Url:{0}", responseMessage.RequestMessage.RequestUri));
-                //var content = responseMessage.RequestMessage.Content;
-                //var input = content.ReadAsStringAsync();
-               
-                //builder.Append(string.Format("input:{0}", input.Result));
-                throw new ApplicationException(builder.ToString());
-            }
-               
-        }
-        protected void HandlerError(Task<HttpResponseMessage> result)
-        {
-            try
-            {
-                HandlerError(result.Result);
 
-            }
-            catch (Exception ex)
-            {
+        //protected void HandlerError(Task<HttpResponseMessage> result)
+        //{
+        //    HandlerError(result.Result);
+        //}
 
-                //throw new ApplicationException(string.Format("失败:{0}", ex.InnerException));
-            }
-        }
         protected virtual HttpClient CreateHttpClient()
         {
             //if (m_HttpClient != null)
@@ -114,6 +102,7 @@ namespace Com.FirmLib
             //return m_HttpClient = HttpClientManager.CreateClient();// new HttpClient() { BaseAddress = new Uri(GetEndUri()) };
             return HttpClientManager.CreateClient();
         }
+
         /// <summary>
         /// 获取操作的api
         /// </summary>
@@ -123,86 +112,176 @@ namespace Com.FirmLib
             return this.BaseEndUri() + this.m_ExtensionUri;
         }
 
+        #region 捕获业务处理返回消息
+
+        protected void CatchErrorMessage(JObject jobject)
+        {
+            PostResult p = PostResult.CreatePostResult(jobject);
+            this.ErrorMessage = p.ResultMessage;
+        }
+
+        #endregion
+
         #region 基础命令封装
 
-        public Task<HttpResponseMessage> PostJsonAsync(Uri requeUri, JObject jobject)
+        public string PostJsonAsync(Uri requeUri, JObject jobject)
         {
-            var client = CreateHttpClient();
-            return  client.PostJosnAsync(requeUri, jobject);
+            RequestInfo request = new RequestInfo(requeUri.ToString(), jobject);
+            try
+            {
+                #region 发送请求
+                var client = CreateHttpClient();
+                var response = client.PostJosnAsync(requeUri, jobject);
+                #endregion
+                return HandlerTaskResponse(response,request);
+            }
+            catch (Exception e)
+            {
+                throw;
+            }        
         }
-        public Task<HttpResponseMessage> PostJsonAdd(JObject jobject)
+
+        public string PostJsonAdd(JObject jobject)
         {
-            
-            return PostJsonAsync(new Uri(GetEndUri()+CreateKey(),UriKind.RelativeOrAbsolute) , jobject);
+            return PostJsonAsync(new Uri(GetEndUri() + CreateKey(), UriKind.RelativeOrAbsolute), jobject);
         }
-        public Task<HttpResponseMessage> PostJsonUpdate( JObject jobject)
+
+        public string PostJsonUpdate(JObject jobject)
         {
             return PostJsonAsync(new Uri(GetEndUri() + UpdateKey(), UriKind.RelativeOrAbsolute), jobject);
         }
-        public Task<HttpResponseMessage> PostJsonDelete(JObject jobject)
+
+        public string PostJsonDelete(JObject jobject)
         {
             return PostJsonAsync(new Uri(GetEndUri() + DeleteKey(), UriKind.RelativeOrAbsolute), jobject);
         }
-        public Task<HttpResponseMessage> PostJsonQuery( JObject jobject)
+
+        public string PostJsonQuery(JObject jobject)
         {
             return PostJsonAsync(new Uri(GetEndUri() + QueryKey(), UriKind.RelativeOrAbsolute), jobject);
         }
-        public Task<HttpResponseMessage> PostJsonQuery()
+
+        public string PostJsonQuery()
         {
             return PostJsonAsync(new Uri(GetEndUri() + QueryKey(), UriKind.RelativeOrAbsolute), new JObject());
         }
+
+        #endregion
+
+
+        #region 业务结果处理
+        /// <summary>
+        /// 业务结果处理
+        /// </summary>
+        /// <param name="responseResult"></param>
+        /// <param name="success"></param>
+        /// <param name="fail"></param>
+        /// <returns></returns>
+        public static bool HandlerResult(string responseResult, Action<JObject> success, Action<JObject> fail)
+        {
+            JObject result = JObject.Parse(responseResult);
+            PostResult p = PostResult.CreatePostResult(result);
+            if (p.IsSuccess)
+            {
+                success?.Invoke(result);
+                return true;
+            }
+
+            fail?.Invoke(result);
+            return false;
+        }
+
+        public static bool HandlerResult(string responseResult, Action<JObject> success)
+        {
+            return HandlerResult(responseResult, success, null);
+        }
+
+        public static bool HandlerResult(string responseResult)
+        {
+            return HandlerResult(responseResult, null, null);
+        }
+
         #endregion
 
 
-        #region 静态关联方法
-        public static bool HandlerResult(Task<HttpResponseMessage> taskResponse,Action<JObject> success,Action<JObject> fail)
+
+        #region 网络异常错误处理
+
+        /// <summary>
+        /// 处理错误返回消息
+        /// </summary>
+        /// <param name="responseMessage"></param>
+        /// <param name="requestInfo"></param>
+        public static void HandlerError(HttpResponseMessage responseMessage, RequestInfo requestInfo)
+        {
+            if (responseMessage.StatusCode != HttpStatusCode.OK)
+            {
+                StringBuilder builder = new StringBuilder();
+                builder.Append(string.Format("StatusCode:{0}", (int) responseMessage.StatusCode));
+                builder.AppendLine();
+                builder.Append(string.Format("Url:{0}", responseMessage.RequestMessage.RequestUri));
+                HttpApiException httpEx = new HttpApiException(builder.ToString());
+                if (requestInfo != null)
+                {
+                    httpEx.RequestUrl = requestInfo.Head;
+                    httpEx.RequestContent = requestInfo.Content;
+                }
+
+                throw httpEx;
+            }
+
+        }
+
+        /// <summary>
+        /// 处理返回消息任务
+        /// </summary>
+        /// <param name="ts"></param>
+        /// <param name="requestInfo"></param>
+        /// <returns></returns>
+        public static string HandlerTaskResponse(Task<HttpResponseMessage> ts, RequestInfo requestInfo)
         {
             try
             {
-                if (taskResponse.Result.IsSuccessStatusCode)
+                var responseResult = ts.Result;
+                if (responseResult.IsSuccessStatusCode)
                 {
-                    var strContent = taskResponse.Result.Content.ReadAsStringAsync();
-                    JObject result = JObject.Parse(strContent.Result);
-                    PostResult p = PostResult.CreatePostResult(result);
-                    if (p.IsSuccess)
-                    {
-                        success?.Invoke(result);
-                        return true;
-                    }
-                    fail?.Invoke(result);
-                    return false;
+                    var strContent = responseResult.Content.ReadAsStringAsync();
+                    return strContent.Result;
                 }
-                HandlerError(taskResponse.Result);
-                return false;
+                else
+                {
+                    HandlerError(responseResult, requestInfo);
+                }
+
+                return string.Empty;
             }
-            catch(Exception e)
+            catch (Exception e)
             {
-                var resultE = e.InnerException;
-                var temp = e.GetBaseException();     
-                if (temp != null)
+                #region 异常处理
+                var useE = e;
+                while (useE.InnerException != null)
+                {
+                    useE = useE.InnerException;
+                }
+
+                HttpApiException httpEx = new HttpApiException(useE.Message, useE);
+                var info = requestInfo;
+                if (info != null)
                 {
-                    resultE = temp.InnerException??temp;
+                    httpEx.RequestUrl = info.Head;
+                    httpEx.RequestContent = info.Content;
                 }
-                //HttpClientManager.Clear();
-                throw resultE;
-                //return false;
+
+                throw httpEx;
+
+                #endregion
             }
             finally
             {
 
-                //taskResponse.Result.Dispose();
             }
-           
-        }     
-        public static bool HandlerResult(Task<HttpResponseMessage> taskResponse, Action<JObject> success)
-        {
-           return HandlerResult(taskResponse, success, null);
-        }
-        public static bool HandlerResult(Task<HttpResponseMessage> taskResponse)
-        {
-            return HandlerResult(taskResponse, null, null);
+            return string.Empty;
         }
         #endregion
-
     }
 }

+ 4 - 2
MBI/FirmLib/Com.FirmLib/Bll/EquipmentFamilyBll.cs

@@ -35,8 +35,10 @@ namespace Com.FirmLib.Bll
             var items = new List<EquipmentFamilyItem>();
             string tempUrlExtension = @"/dict/query/equipment_family";
             var client = CreateHttpClient();
-            var result = client.GetAsync(new Uri(GetEndUri() + tempUrlExtension, UriKind.RelativeOrAbsolute));
-             HandlerResult(result, (jo) =>
+            var useUri = GetEndUri() + tempUrlExtension;
+            var result = client.GetAsync(new Uri(useUri, UriKind.RelativeOrAbsolute));
+             var stringResult = HandlerTaskResponse(result, new RequestInfo(useUri));
+             HandlerResult(stringResult, (jo) =>
              {
                  var listStr = jo["Content"].ToString();
                  items = JsonConvert.DeserializeObject<List<EquipmentFamilyItem>>(listStr);

+ 4 - 2
MBI/FirmLib/Com.FirmLib/Bll/EquipmentInfoPointBll.cs

@@ -44,7 +44,8 @@ namespace Com.FirmLib.Bll
             jObject.Add("is_all", "1");
             HttpClient client = HttpClientManager.CreateClient();
             var result = client.PostJosnAsync(new Uri(url, UriKind.RelativeOrAbsolute), jObject);
-            var flag = HandlerResult(result, 
+            var stringResult = HandlerTaskResponse(result, new RequestInfo(url,jObject));
+            var flag = HandlerResult(stringResult, 
                 (jo) => {
                     var content = jo["Content"];
                     foreach (JObject subj in content)
@@ -83,7 +84,8 @@ namespace Com.FirmLib.Bll
 
             HttpClient client = HttpClientManager.CreateClient();
             var result = client.GetAsync(new Uri(url, UriKind.RelativeOrAbsolute));
-            var flag = HandlerResult(result,
+             var stringResult = HandlerTaskResponse(result, new RequestInfo(url));
+            var flag = HandlerResult(stringResult,
                 (jo) => {
                     var content = jo["Content"];
                     foreach (JObject subj in content)

+ 4 - 2
MBI/FirmLib/Com.FirmLib/Bll/FileBll.cs

@@ -80,7 +80,8 @@ namespace Com.FirmLib.Bll
             using (MemoryStream stream = new MemoryStream(bytes))
             {
                 var result = client.PostAsync(new Uri(builder.ToString(), UriKind.RelativeOrAbsolute), new StreamContent(stream));
-                flag = HandlerResult(result, null, (jo) => { this.ErrorMessage = jo["ResultMsg"].ToString(); });
+                  var stringResult = HandlerTaskResponse(result, new RequestInfo(builder.ToString()));
+                flag = HandlerResult(stringResult, null, (jo) => { this.ErrorMessage = jo["ResultMsg"].ToString(); });
             }
 
 
@@ -139,7 +140,8 @@ namespace Com.FirmLib.Bll
             using (MemoryStream stream = new MemoryStream(bytes))
             {
                 var result = client.PostAsync(new Uri(builder.ToString(), UriKind.RelativeOrAbsolute), new StreamContent(stream));
-                flag = HandlerResult(result, null, (jo) => { this.ErrorMessage = jo["ResultMsg"].ToString(); });
+                var stringResult = HandlerTaskResponse(result, new RequestInfo(builder.ToString()));
+                flag = HandlerResult(stringResult, null, (jo) => { this.ErrorMessage = jo["ResultMsg"].ToString(); });
             }
 
 

+ 2 - 17
MBI/FirmLib/Com.FirmLib/Bll/MaintainerBll.cs

@@ -30,23 +30,8 @@ namespace Com.FirmLib.Bll
             JObject jObject = new JObject();
             jObject.Add("name", item.Name);
             jObject.Add("website", item.Website);
-            var postResult = PostJsonAdd(jObject);
-            //HandlerResult(result, (jo) => { item.Id = jo["id"].ToString(); });
-            if (postResult.Result.IsSuccessStatusCode)
-            {
-                var strContent = postResult.Result.Content.ReadAsStringAsync();
-                JObject result = JObject.Parse(strContent.Result);
-                PostResult p = PostResult.CreatePostResult(result);
-                if (p.IsSuccess)
-                {
-                    item.Id = result["id"].ToString();
-                    return true;
-                }
-                ErrorMessage = p.ResultMessage;
-                return false;
-            }
-            HandlerError(postResult.Result);
-            return false;
+            var result = PostJsonAdd(jObject);
+            return HandlerResult(result, (jo) => { item.Id = jo["id"].ToString(); }, jo => CatchErrorMessage(jo));   
         }
 
         /// <summary>

+ 12 - 59
MBI/FirmLib/Com.FirmLib/Bll/ManufacturerBll.cs

@@ -25,22 +25,8 @@ namespace Com.FirmLib.Bll
             JObject jObject=new JObject();
             jObject.Add("name",item.Name);
             //jObject.Add("url", "www.saaa.cn");//假的
-            var postResult = PostJsonAdd(jObject);              
-            if (postResult.Result.IsSuccessStatusCode)
-            {
-                var strContent = postResult.Result.Content.ReadAsStringAsync();
-                JObject result = JObject.Parse(strContent.Result);
-                PostResult p = PostResult.CreatePostResult(result);
-                if (p.IsSuccess)
-                {
-                    item.Id = result["id"].ToString();
-                    return true;
-                }
-                ErrorMessage = p.ResultMessage;
-                return false;
-            }
-            HandlerError(postResult.Result);
-            return false;
+            var result = PostJsonAdd(jObject);       
+            return HandlerResult(result, (jo) => { item.Id = jo["id"].ToString(); }, jo => CatchErrorMessage(jo));               
         }
 
         /// <summary>
@@ -79,21 +65,8 @@ namespace Com.FirmLib.Bll
             JObject jObject = new JObject();
             jObject.Add("venderId", item.Id);
             jObject.Add("name", item.Name);
-            var reault = PostJsonUpdate(jObject);
-            if (reault.Result.IsSuccessStatusCode)
-            {
-                var strContent = reault.Result.Content.ReadAsStringAsync();
-                JObject result = JObject.Parse(strContent.Result);
-                PostResult p = PostResult.CreatePostResult(result);
-                if (p.IsSuccess)
-                {
-                    return true;
-                }
-                ErrorMessage = p.ResultMessage;
-                return false;
-            }
-            HandlerError(reault.Result);
-            return false;
+            var result = PostJsonUpdate(jObject);
+            return HandlerResult(result, null, jo => CatchErrorMessage(jo));          
         }
 
         /// <summary>
@@ -105,21 +78,8 @@ namespace Com.FirmLib.Bll
         {
             JObject jObject = new JObject();
             jObject.Add("venderId", id);
-            var reault = PostJsonDelete(jObject);
-            if (reault.Result.IsSuccessStatusCode)
-            {
-                var strContent = reault.Result.Content.ReadAsStringAsync();
-                JObject result = JObject.Parse(strContent.Result);
-                PostResult p = PostResult.CreatePostResult(result);
-                if (p.IsSuccess)
-                {
-                    return true;
-                }
-                ErrorMessage = p.ResultMessage;
-                return false;
-            }
-            HandlerError(reault.Result);
-            return false;
+            var result = PostJsonDelete(jObject);
+            return HandlerResult(result, null, jo => CatchErrorMessage(jo));       
         }
 
 
@@ -134,20 +94,13 @@ namespace Com.FirmLib.Bll
             List<ProjectItem> items = new List<ProjectItem>();
             JObject jObject = new JObject();
             jObject.Add("venderId", manufacturerId);
-            var reault = PostJsonAsync(new Uri(GetEndUri() + uri, UriKind.RelativeOrAbsolute), jObject);
-            if ( reault.Result.IsSuccessStatusCode)
+            var result = PostJsonAsync(new Uri(GetEndUri() + uri, UriKind.RelativeOrAbsolute), jObject);
+             HandlerResult(result, (jo) =>
             {
-                var strContent = reault.Result.Content.ReadAsStringAsync();
-                JObject result = JObject.Parse(strContent.Result);
-                PostResult p = PostResult.CreatePostResult(result);
-                if (p.IsSuccess)
-                {
-                    var listStr = result["content"].ToString();
-                    return JsonConvert.DeserializeObject<List<ProjectItem>>(listStr);
-                }
-                return items;
-            }
-            HandlerError(reault);
+                var listStr = jo["content"].ToString();
+                items= JsonConvert.DeserializeObject<List<ProjectItem>>(listStr);
+            }, jo => CatchErrorMessage(jo));
+
             return items;
         }
 

+ 12 - 61
MBI/FirmLib/Com.FirmLib/Bll/ProductBll.cs

@@ -31,22 +31,8 @@ namespace Com.FirmLib.Bll
             jObject.Add("brandId", item.BrandId);
             jObject.Add("name", item.Name);
             jObject.Add("eqFamily", item.FamilyCode);
-            var reault = PostJsonAdd(jObject);
-            if (reault.Result.IsSuccessStatusCode)
-            {
-                var strContent = reault.Result.Content.ReadAsStringAsync();
-                JObject result = JObject.Parse(strContent.Result);
-                PostResult p = PostResult.CreatePostResult(result);
-                if (p.IsSuccess)
-                {
-                    item.Id = result["id"].ToString();
-                    return true;
-                }
-                ErrorMessage = p.ResultMessage;
-                return false;
-            }
-            HandlerError(reault.Result);
-            return false;
+            var result = PostJsonAdd(jObject);
+            return HandlerResult(result, (jo) => { item.Id = jo["id"].ToString(); }, jo => CatchErrorMessage(jo));        
         }
 
         /// <summary>
@@ -60,20 +46,12 @@ namespace Com.FirmLib.Bll
             JObject jObject = new JObject ();
             jObject.Add("brandId", brandId);
             jObject.Add("orderDesc", true);
-            var reault = PostJsonQuery(jObject);
-            if (reault.Result.IsSuccessStatusCode)
-            {
-                var strContent = reault.Result.Content.ReadAsStringAsync();
-                JObject result = JObject.Parse(strContent.Result);
-                PostResult p = PostResult.CreatePostResult(result);
-                if (p.IsSuccess)
-                {
-                    var listStr = result["content"].ToString();
-                    return JsonConvert.DeserializeObject<List<ProductItem>>(listStr);
-                }
-                return items;
-            }
-            HandlerError(reault);
+            var result = PostJsonQuery(jObject);
+             HandlerResult(result, (jo) =>
+             {
+                 var listStr = jo["content"].ToString();
+                 items=JsonConvert.DeserializeObject<List<ProductItem>>(listStr);
+             }, jo => CatchErrorMessage(jo));        
             return items;
         }
         /// <summary>
@@ -89,21 +67,8 @@ namespace Com.FirmLib.Bll
             jObject.Add("venderId", item.ManufacturerId);
             jObject.Add("name", item.Name);
             jObject.Add("eqFamily", item.FamilyCode);
-            var reault = PostJsonUpdate(jObject);
-            if (reault.Result.IsSuccessStatusCode)
-            {
-                var strContent = reault.Result.Content.ReadAsStringAsync();
-                JObject result = JObject.Parse(strContent.Result);
-                PostResult p = PostResult.CreatePostResult(result);
-                if (p.IsSuccess)
-                {
-                    return true;
-                }
-                ErrorMessage = p.ResultMessage;
-                return false;
-            }
-            HandlerError(reault.Result);
-            return false;
+            var result = PostJsonUpdate(jObject);
+            return HandlerResult(result,null,jo => CatchErrorMessage(jo));              
         }
 
         /// <summary>
@@ -117,22 +82,8 @@ namespace Com.FirmLib.Bll
             jObject.Add("productId", item.Id);
             jObject.Add("brandId", item.Id);
             jObject.Add("venderId", item.ManufacturerId);
-            var reault = PostJsonDelete(jObject);
-            if (reault.Result.IsSuccessStatusCode)
-            {
-                var strContent = reault.Result.Content.ReadAsStringAsync();
-                JObject result = JObject.Parse(strContent.Result);
-                PostResult p = PostResult.CreatePostResult(result);
-                if (p.IsSuccess)
-                {
-                    return true;
-                }
-                ErrorMessage = p.ResultMessage;
-                return false;
-            }
-           
-            HandlerError(reault.Result);
-            return false;
+            var result = PostJsonDelete(jObject);
+            return HandlerResult(result,null,jo => CatchErrorMessage(jo));               
         }
     }
 }

+ 1 - 22
MBI/FirmLib/Com.FirmLib/Bll/ProductTypeBll.cs

@@ -93,27 +93,6 @@ namespace Com.FirmLib.Bll
             var result = PostJsonDelete(jObject);
             return HandlerResult(result, null, (jo) => { this.ErrorMessage = jo["resultMsg"].ToString(); });
         }
-        /// <summary>
-        /// 获取产品类型相关联厂商品牌信息
-        /// </summary>
-        /// <param name="productTypeId">查找类型的关联信息</param>
-        /// <returns></returns>
-        public ProductTypeDetailItem GetProductTypeVender(string productTypeId)
-        {
-            List<ProductTypeDetailItem> items = new List<ProductTypeDetailItem>();
-            JObject jObject = new JObject();
-            JArray jArray = new JArray();
-            jArray.Add(productTypeId);
-            jObject.Add("specificationId", jArray);
-            string tempUrlExtension = @"/query_vender";
-            var client = CreateHttpClient();
-            var result = client.PostJosnAsync(new Uri(GetEndUri() + tempUrlExtension, UriKind.RelativeOrAbsolute),jObject);
-            HandlerResult(result, (jo) =>
-            {
-                var listStr = jo["content"]?.ToString()??string.Empty;
-                items = JsonConvert.DeserializeObject<List<ProductTypeDetailItem>>(listStr);
-            });
-            return items.FirstOrDefault(); 
-        }
+      
     }
 }

+ 2 - 1
MBI/FirmLib/Com.FirmLib/Bll/ProjectBll.cs

@@ -86,7 +86,8 @@ namespace Com.FirmLib.Bll
             var items = new List<PlatformProjectItem>();
             HttpClient client = HttpClientManager.CreateClient();
             var result = client.GetAsync(new Uri(url, UriKind.RelativeOrAbsolute));
-            HandlerResult(result, (jo) =>
+            var stringResult = HandlerTaskResponse(result, new RequestInfo(url));
+            HandlerResult(stringResult, (jo) =>
             {
                 var listStr = jo["Content"].ToString();
                 items = JsonConvert.DeserializeObject<List<PlatformProjectItem>>(listStr);

+ 2 - 0
MBI/FirmLib/Com.FirmLib/Com.FirmLib.csproj

@@ -123,6 +123,8 @@
     <Compile Include="FileUrlValidate.cs" />
     <Compile Include="HttpClientManager.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="RequestInfo.cs" />
+    <Compile Include="ResponseRelation.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="app.config">

+ 29 - 0
MBI/FirmLib/Com.FirmLib/RequestInfo.cs

@@ -0,0 +1,29 @@
+/*-------------------------------------------------------------------------
+ * 功能描述:RequestInfo
+ * 作者:xulisong
+ * 创建时间: 2018/12/19 14:54:53
+ * 版本号:v1.0
+ *  -------------------------------------------------------------------------*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Com.FirmLib
+{
+    public class RequestInfo
+    {
+        public RequestInfo(string head)
+        {
+            this.Head = head;
+        }
+        public RequestInfo(string head,object content):this(head)
+        {
+            this.Content = content;
+        }
+        public string Head { get; set; }
+        public object Content { get; set; }
+    }
+}

+ 116 - 0
MBI/FirmLib/Com.FirmLib/ResponseRelation.cs

@@ -0,0 +1,116 @@
+/*-------------------------------------------------------------------------
+ * 功能描述:ResponseRelation
+ * 作者:xulisong
+ * 创建时间: 2018/12/19 17:25:01
+ * 版本号:v1.0
+ *  -------------------------------------------------------------------------*/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http;
+using System.Text;
+using System.Threading.Tasks;
+using System.Timers;
+
+namespace Com.FirmLib
+{
+    public class ResponseRelationManager
+    {
+        public readonly static ResponseRelationManager Current = new ResponseRelationManager();
+        /// <summary>
+        /// 枷锁对象
+        /// </summary>
+        private List<ResponseRelation> Data { get; set; }
+        public ResponseRelationManager()
+        {
+            Data = new List<ResponseRelation>();
+        }
+        private bool IsClearing { get; set; }
+        public void ClearNoAlived()
+        {
+            if (IsClearing)
+                return;
+            lock (this)
+            {
+                try
+                {
+                    IsClearing = true;
+                    for (int i = Data.Count - 1; i > -1; i--)
+                    {
+                        var relation = Data[i];
+                        if (relation == null)
+                            continue;
+                        if (!relation.Key.TryGetTarget(out Task<HttpResponseMessage> reference) || reference == null)
+                        {
+                            Data.RemoveAt(i);
+                        }
+                    }
+                }
+                finally
+                {
+                     IsClearing = false;
+                }
+            }     
+        }
+
+        public void Add(Task<HttpResponseMessage> tr, RequestInfo requestInfo)
+        {
+            try
+            {
+                lock (this)
+                {
+                    Data.Add(new ResponseRelation(tr, requestInfo));
+                }
+
+                if (Data.Count > 5)
+                {
+                    Task.Run(() => { ClearNoAlived(); });
+
+                }
+            }
+            catch (Exception)
+            {
+
+            }
+        }
+
+        public RequestInfo GetValue(Task<HttpResponseMessage> tr)
+        {
+            try
+            {
+                RequestInfo result = null;
+                for (int i = Data.Count - 1; i > -1; i--)
+                {
+                    var relation = Data[i];
+                    if (!relation.Key.TryGetTarget(out Task<HttpResponseMessage> reference) || reference == null)
+                    {
+                        Data.RemoveAt(i);
+                    }
+                    else if (reference == tr)
+                    {
+                        result = relation.Value;
+                    }
+                }
+                return result;
+            }
+            catch (Exception)
+            {
+
+            }
+            return null;
+        }
+    }
+
+    public class ResponseRelation
+    {
+       
+        public ResponseRelation(Task<HttpResponseMessage> tr, RequestInfo requestInfo)
+        {
+            Key = new WeakReference<Task<HttpResponseMessage>>(tr);
+            Value = requestInfo;
+        }
+        public WeakReference<Task<HttpResponseMessage>> Key { get;private set; }
+        public RequestInfo Value { get;private set; }
+    }
+}