Browse Source

Constract

main
hulei 3 weeks ago
parent
commit
2b08d4783e
100 changed files with 23243 additions and 0 deletions
  1. 71
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/EntryBase.cs
  2. 99
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/EntryBase.ts
  3. 22
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/HomePageBase.cs
  4. 29
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/HomePageBase.ts
  5. 33
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/ITradeHelper.cs
  6. 29
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/ITradeHelper.ts
  7. 252
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/PageBase.cs
  8. 174
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/PageBase.ts
  9. 2933
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeAPIsHelper.cs
  10. 5892
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeBusHelper.cs
  11. 89
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeInfoHelper.cs
  12. 83
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeInfoHelper.ts
  13. 25
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeResourcesHelper.cs
  14. 36
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeResourcesHelper.ts
  15. 435
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/ContractManager.cs
  16. 360
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/ContractManager.ts
  17. 20
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IAuthorizeContract.cs
  18. 8
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IAuthorizeContract.ts
  19. 43
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IEvaluationContract.cs
  20. 45
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IEvaluationContract.ts
  21. 48
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IPaymentFeeContract.cs
  22. 62
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IPaymentFeeContract.ts
  23. 33
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IPrintContract.cs
  24. 35
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IPrintContract.ts
  25. 16
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IRecheckContract.cs
  26. 18
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IRecheckContract.ts
  27. 24
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/ISubmitContract.cs
  28. 26
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/ISubmitContract.ts
  29. 190
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/AuthorizeEntry.cs
  30. 160
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/AuthorizeEntry.ts
  31. 239
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/CashCodeEntry.cs
  32. 143
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/CashCodeEntry.ts
  33. 1191
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/PaperlessEntry.cs
  34. 23
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/PrintEntry.cs
  35. 24
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/PrintEntry.ts
  36. 139
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/PrintflowEntry.cs
  37. 130
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/PrintflowEntry.ts
  38. 213
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/RecheckEntry.cs
  39. 125
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/RecheckEntry.ts
  40. 468
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/SubmitEntry.cs
  41. 406
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Entry/SubmitEntry.ts
  42. 956
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Extend/Reconciles.cs
  43. 27
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Extend/Reconciles.ts
  44. 80
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/ATMAmountClearing.cs
  45. 37
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/ATMAmountClearing.ts
  46. 126
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/AccountInterestCalculation.cs
  47. 115
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/AccountInterestCalculation.ts
  48. 107
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/AnticipationFreezeStoppaymentDeduct.cs
  49. 95
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/AnticipationFreezeStoppaymentDeduct.ts
  50. 86
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckAccountDeducInterest.cs
  51. 101
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckAccountStat.cs
  52. 312
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckBlackList.cs
  53. 110
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckBlackList_DQS.cs
  54. 86
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckCustomerCertificate.cs
  55. 104
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckGreyList.cs
  56. 86
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckStatusPledge.cs
  57. 107
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckTradeRule.cs
  58. 107
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/ChecksTellerSmallestCertificate.cs
  59. 100
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CountedInterest.cs
  60. 79
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/GetRates.cs
  61. 88
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/IDNumberVerification.cs
  62. 107
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/MessageComprehensive.cs
  63. 137
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/PasswordAuthentication.cs
  64. 79
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/PhoneComprehensive.cs
  65. 120
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/ProductUnderLevelSubjects.cs
  66. 93
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryATMAccountInformation.cs
  67. 65
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryATMGLYXX.cs
  68. 266
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAcceptanceAgreementNum.cs
  69. 168
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAcceptanceInformation.cs
  70. 172
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccordPackingNum.cs
  71. 178
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountDeductInfo.cs
  72. 94
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountDetail.cs
  73. 72
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountFHList.cs
  74. 179
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountInfoByCustomer.cs
  75. 80
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountMoreInfo.cs
  76. 135
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountOpeningInformation.cs
  77. 115
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountPayment.cs
  78. 170
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountPaymentPwdConnection.cs
  79. 156
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountTCTD.cs
  80. 88
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAmountsRecoveredATM.cs
  81. 388
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryApprovalInformation.cs
  82. 116
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryBatchOpenAccountList.cs
  83. 134
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryBatchResult.cs
  84. 210
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryBlackList.cs
  85. 142
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCDBHDZYP.cs
  86. 179
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCDHPXX.cs
  87. 218
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCM2CARef.cs
  88. 210
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardApplicationRregister.cs
  89. 161
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardApplyRecord.cs
  90. 120
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardListOfCustomer.cs
  91. 79
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardMsrInfo.cs
  92. 99
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardNoPartList.cs
  93. 99
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardSurfaceList.cs
  94. 86
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashAllocate.cs
  95. 242
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashApproveList_710001.cs
  96. 242
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashApproveList_710003.cs
  97. 242
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashApproveList_710201.cs
  98. 242
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashApproveList_710202.cs
  99. 260
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashIssuedIncomeRecords.cs
  100. 0
    0
      ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashPayReceiveRecords.cs

+ 71
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/EntryBase.cs View File

@@ -0,0 +1,71 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using TellerSystem.Communication;
6
+
7
+namespace TellerSystem.Contract.ContractBase
8
+{
9
+    /// <summary>
10
+    /// 入口基类,包括Message和PageBase
11
+    /// </summary>
12
+    public class EntryBase : ITradeHelper
13
+    {
14
+        #region 数据属性
15
+        public Message MessageData { get; private set; }
16
+        public PageBase PageData { get; private set; }
17
+        #endregion
18
+
19
+        /// <summary>
20
+        /// 加载数据
21
+        /// </summary>
22
+        /// <param name="page"></param>
23
+        /// <param name="message"></param>
24
+        /// <returns></returns>
25
+        public bool LoadData(PageBase page, Message message)
26
+        {
27
+            var flag = true;
28
+            //检测参数变化
29
+            if (page != null && page == PageData)
30
+            {
31
+                if (message == MessageData || (message.FileData == MessageData.FileData && message.GetAllFds().Except(MessageData.GetAllFds()).Count() == 0))//KeyValuePair是结构体,会对比下辖所有值
32
+                    flag = false;//参数与历史登记一致,未作修改
33
+            }
34
+            PageData = page;
35
+            MessageData = message;
36
+            return OnLoadData(flag);
37
+        }
38
+
39
+        /// <summary>
40
+        /// 加载数据时触发
41
+        /// </summary>
42
+        /// <param name="changed">标识数据是否发生改变</param>
43
+        /// <returns></returns>
44
+        protected virtual bool OnLoadData(bool changed)
45
+        {
46
+            return true;
47
+        }
48
+
49
+        #region ITradeHelper
50
+        public TradeBusHelper TradeBus
51
+        {
52
+            get { return PageData.TradeBus; }
53
+        }
54
+
55
+        public TradeInfoHelper TradeInfo
56
+        {
57
+            get { return PageData.TradeInfo; }
58
+        }
59
+
60
+        public TradeAPIsHelper TradeAPIs
61
+        {
62
+            get { return PageData.TradeAPIs; }
63
+        }
64
+
65
+        public TradeResourcesHelper TradeResources
66
+        {
67
+            get { return PageData.TradeResources; }
68
+        }
69
+        #endregion
70
+    }
71
+}

+ 99
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/EntryBase.ts View File

@@ -0,0 +1,99 @@
1
+import type { Message } from './Message'
2
+import type { PageBase } from './PageBase'
3
+import type { ITradeHelper } from './ITradeHelper'
4
+import type { TradeBusHelper } from './TradeBusHelper'
5
+import type { TradeInfoHelper } from './TradeInfoHelper'
6
+import type { TradeAPIsHelper } from './TradeAPIsHelper'
7
+import type { TradeResourcesHelper } from './TradeResourcesHelper'
8
+
9
+/**
10
+ * 入口基类,包括Message和PageBase
11
+ */
12
+export class EntryBase implements ITradeHelper {
13
+    #region 数据属性
14
+    private _messageData: Message | null = null
15
+    private _pageData: PageBase | null = null
16
+
17
+    public get MessageData(): Message | null {
18
+        return this._messageData
19
+    }
20
+    private set MessageData(value: Message | null) {
21
+        this._messageData = value
22
+    }
23
+
24
+    public get PageData(): PageBase | null {
25
+        return this._pageData
26
+    }
27
+    private set PageData(value: PageBase | null) {
28
+        this._pageData = value
29
+    }
30
+    #endregion
31
+
32
+    /**
33
+     * 加载数据
34
+     * @param page 
35
+     * @param message 
36
+     * @returns 
37
+     */
38
+    public LoadData(page: PageBase, message: Message): boolean {
39
+        let flag = true
40
+        
41
+        // 检测参数变化
42
+        if (page !== null && page === this.PageData) {
43
+            if (message === this.MessageData || 
44
+                (message.FileData === this.MessageData?.FileData && 
45
+                 this.getDiffFields(message, this.MessageData).length === 0)) {
46
+                flag = false // 参数与历史登记一致,未作修改
47
+            }
48
+        }
49
+        
50
+        this.PageData = page
51
+        this.MessageData = message
52
+        return this.OnLoadData(flag)
53
+    }
54
+
55
+    private getDiffFields(newMsg: Message, oldMsg: Message): string[] {
56
+        const newFields = Object.keys(newMsg)
57
+        const oldFields = Object.keys(oldMsg)
58
+        return newFields.filter(key => newMsg[key] !== oldMsg[key])
59
+    }
60
+
61
+    /**
62
+     * 加载数据时触发
63
+     * @param changed 标识数据是否发生改变
64
+     * @returns 
65
+     */
66
+    protected OnLoadData(changed: boolean): boolean {
67
+        return true
68
+    }
69
+
70
+    #region ITradeHelper
71
+    public get TradeBus(): TradeBusHelper {
72
+        if (!this.PageData) throw new Error('PageData is null')
73
+        return this.PageData.TradeBus
74
+    }
75
+
76
+    public get TradeInfo(): TradeInfoHelper {
77
+        if (!this.PageData) throw new Error('PageData is null')
78
+        return this.PageData.TradeInfo
79
+    }
80
+
81
+    public get TradeAPIs(): TradeAPIsHelper {
82
+        if (!this.PageData) throw new Error('PageData is null')
83
+        return this.PageData.TradeAPIs
84
+    }
85
+
86
+    public get TradeResources(): TradeResourcesHelper {
87
+        if (!this.PageData) throw new Error('PageData is null')
88
+        return this.PageData.TradeResources
89
+    }
90
+    #endregion
91
+}
92
+
93
+// Vue组件封装
94
+export const useEntryBase = () => {
95
+    return {
96
+        EntryBase,
97
+        createEntry: () => reactive(new EntryBase())
98
+    }
99
+}

+ 22
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/HomePageBase.cs View File

@@ -0,0 +1,22 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Windows;
6
+
7
+namespace TellerSystem.Contract.ContractBase
8
+{
9
+    /// <summary>
10
+    /// 主界面框架基础
11
+    /// </summary>
12
+    public abstract class HomePageBase : PageBase
13
+    {
14
+        public HomePageBase()
15
+        {
16
+        }
17
+
18
+        public void LoadTradeHost(UIElement host)
19
+        {
20
+        }
21
+    }
22
+}

+ 29
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/HomePageBase.ts View File

@@ -0,0 +1,29 @@
1
+import { PageBase } from './PageBase'
2
+import { defineComponent } from 'vue'
3
+
4
+/**
5
+ * 主界面框架基础
6
+ */
7
+export abstract class HomePageBase extends PageBase {
8
+    constructor() {
9
+        super()
10
+    }
11
+
12
+    /**
13
+     * 加载交易宿主
14
+     * @param host 宿主元素
15
+     */
16
+    public LoadTradeHost(host: HTMLElement): void {
17
+        // 实现加载逻辑
18
+    }
19
+}
20
+
21
+// Vue组件封装
22
+export const HomePageComponent = defineComponent({
23
+    extends: HomePageBase,
24
+    methods: {
25
+        LoadTradeHost(host: HTMLElement) {
26
+            super.LoadTradeHost(host)
27
+        }
28
+    }
29
+})

+ 33
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/ITradeHelper.cs View File

@@ -0,0 +1,33 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+
6
+namespace TellerSystem.Contract.ContractBase
7
+{
8
+    /// <summary>
9
+    /// 交易帮助接口
10
+    /// </summary>
11
+    public interface ITradeHelper
12
+    { 
13
+        /// <summary>
14
+        /// 业务总线
15
+        /// </summary>
16
+        TradeBusHelper TradeBus { get; }
17
+
18
+        /// <summary>
19
+        /// 交易信息
20
+        /// </summary>
21
+        TradeInfoHelper TradeInfo { get; }
22
+
23
+        /// <summary>
24
+        /// 操作接口
25
+        /// </summary> 
26
+        TradeAPIsHelper TradeAPIs { get; }
27
+
28
+        /// <summary>
29
+        /// 资源集合
30
+        /// </summary>
31
+        TradeResourcesHelper TradeResources { get; }
32
+    }
33
+}

+ 29
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/ITradeHelper.ts View File

@@ -0,0 +1,29 @@
1
+import { TradeBusHelper } from './TradeBusHelper'
2
+import { TradeInfoHelper } from './TradeInfoHelper'
3
+import { TradeAPIsHelper } from './TradeAPIsHelper'
4
+import { TradeResourcesHelper } from './TradeResourcesHelper'
5
+
6
+/**
7
+ * 交易帮助接口
8
+ */
9
+export interface ITradeHelper {
10
+    /**
11
+     * 业务总线
12
+     */
13
+    readonly TradeBus: TradeBusHelper
14
+
15
+    /**
16
+     * 交易信息
17
+     */
18
+    readonly TradeInfo: TradeInfoHelper
19
+
20
+    /**
21
+     * 操作接口
22
+     */
23
+    readonly TradeAPIs: TradeAPIsHelper
24
+
25
+    /**
26
+     * 资源集合
27
+     */
28
+    readonly TradeResources: TradeResourcesHelper
29
+}

+ 252
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/PageBase.cs View File

@@ -0,0 +1,252 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using Platform.Presentation.PageFunctions;
6
+using System.Windows.Documents;
7
+using System.Windows;
8
+using System.Windows.Media;
9
+using System.ComponentModel;
10
+using System.IO;
11
+using System.Reflection;
12
+using Platform.Common.RunningParameters;
13
+using TellerSystem.Library.Ext.Function;
14
+using Platform.Presentation.FocusManagers;
15
+using TellerSystem.ServiceProxy.Ext;
16
+using TellerSystem.Contract.Entry;
17
+using Platform.Common.LogSystem;
18
+using TellerSystem.PrintTemplate.Extension;
19
+using TellerSystem.ServiceProxy.Ext.ServiceHelper;
20
+
21
+namespace TellerSystem.Contract.ContractBase
22
+{
23
+    /// <summary>
24
+    /// 页面基类,填充通用的业务接口API
25
+    /// 注意:该对象需要支持序列化/反序列化
26
+    /// </summary>
27
+    public abstract class PageBase : TradePage, ITradeHelper
28
+    {
29
+        #region InitPage
30
+        /// <summary>
31
+        /// 银行标签
32
+        /// </summary>
33
+        public string BankFlag
34
+        {
35
+            get
36
+            {
37
+                return ServiceSettings.BankFlag;
38
+            }
39
+        }
40
+
41
+        /// <summary>
42
+        /// 密封
43
+        /// </summary>
44
+        protected sealed override void OnTradePageLoaded()
45
+        {
46
+            var flag = false;
47
+            try
48
+            {
49
+                base.OnTradePageLoaded();
50
+                //加载页面初始化
51
+                flag = InitPage();
52
+                if (flag)
53
+                    this.Dispatcher.BeginInvoke(new Action(() =>
54
+                    {
55
+                        if (FocusManager.GetEnableFocusControl(this))
56
+                        {
57
+                            //若焦点控件不存在,则认为初始化焦点失败
58
+                            var fm = FocusManager.GetManagerInstance(this);
59
+                            if (fm != null && fm.CurrentFocusedElement == null)
60
+                            {
61
+                                fm.Refresh();
62
+                                fm.ReSetFocus();
63
+                            }
64
+                            //将交易打开的时间登记到bus
65
+                            try {
66
+                                if (string.IsNullOrEmpty(TradeBus["__StartTime__"]))
67
+                                    this.TradeBus["__StartTime__"] = DateTime.Now.ToString("yyyyMMddHHmmss");
68
+                            }
69
+                            catch (Exception ex)
70
+                            {
71
+                                TradeHandle.WriteImportantLog("获取交易打开时间异常", ex.Message, "StartTime");
72
+                                return;
73
+                            }
74
+                        }
75
+                    }), System.Windows.Threading.DispatcherPriority.SystemIdle, null);
76
+            }
77
+            catch (Exception e)
78
+            {
79
+                Platform.Common.LogSystem.PlatformLogger.TradeErrorInfo("调用InitPage失败!", e, TradeModel.Code);
80
+            }
81
+            if (!flag)
82
+            {
83
+                this.OwnerContainer.ClosePage();
84
+                //this.Dispatcher.BeginInvoke(new Action(() => { this.OwnerContainer.ClosePage(); }), System.Windows.Threading.DispatcherPriority.Loaded);
85
+            }
86
+        }
87
+
88
+        /// <summary>
89
+        /// 初始化页面
90
+        /// </summary>
91
+        /// <returns></returns>
92
+        public virtual bool InitPage()
93
+        {
94
+            return true;
95
+        }
96
+
97
+        public class PagePrintedEventArgs : EventArgs
98
+        {
99
+            public PagePrintedEventArgs(PrintAttributes attr)
100
+            {
101
+                PrintAttr = attr;
102
+            }
103
+            public PrintAttributes PrintAttr { get; private set; }
104
+        }
105
+
106
+        public event EventHandler<PagePrintedEventArgs> PagePrinted;
107
+
108
+        public void Log2PagePrinted(string log)
109
+        {
110
+            try
111
+            {
112
+                PlatformLogger.SystemInfo("Log2PagePrinted:start 【" + log + "】=>" + this.PagePrinted);
113
+                if (this.PagePrinted == null) return;
114
+                var list = this.PagePrinted.GetInvocationList();
115
+                if (list == null) return;
116
+                PlatformLogger.SystemInfo("Log2PagePrinted:list length=>" + list.Length + ",data=>"
117
+                    + string.Join(",", list.ToList().Where(x => x != null).Select(d => d.Method.ToString()).ToList()));
118
+            }
119
+            catch { }
120
+        }
121
+
122
+        /// <summary>
123
+        /// 触发打印后事件
124
+        /// </summary>
125
+        public void OnPagePrinted(PrintAttributes attr)
126
+        {
127
+            PlatformLogger.SystemInfo("OnPagePrinted:触发事件=>" + this.PagePrinted);
128
+            if (this.PagePrinted != null)
129
+            {
130
+                Log2PagePrinted("OnPagePrinted.start");
131
+                this.PagePrinted(this, new PagePrintedEventArgs(attr));
132
+                Log2PagePrinted("OnPagePrinted.end");
133
+            }
134
+        }
135
+        #endregion
136
+
137
+        #region 访问接口
138
+        #region 业务总线TradeBus
139
+        private TradeBusHelper _tradeBus;
140
+        /// <summary>
141
+        /// 业务总线
142
+        /// </summary>
143
+        public TradeBusHelper TradeBus
144
+        {
145
+            get
146
+            {
147
+                if (_tradeBus == null)
148
+                    _tradeBus = new TradeBusHelper(this);
149
+                return _tradeBus;
150
+            }
151
+        }
152
+        #endregion
153
+
154
+        #region 交易信息TradeInfo
155
+        private TradeInfoHelper _tradeInfo;
156
+        /// <summary>
157
+        /// 交易信息
158
+        /// </summary>
159
+        public TradeInfoHelper TradeInfo
160
+        {
161
+            get
162
+            {
163
+                if (_tradeInfo == null)
164
+                    _tradeInfo = new TradeInfoHelper(this);
165
+                return _tradeInfo;
166
+            }
167
+        }
168
+        #endregion
169
+
170
+        #region 操作接口TradeAPIs
171
+
172
+        private TradeAPIsHelper _tradeAPIs;
173
+        /// <summary>
174
+        /// 操作接口
175
+        /// </summary>
176
+        public TradeAPIsHelper TradeAPIs
177
+        {
178
+            get
179
+            {
180
+                if (_tradeAPIs == null)
181
+                    _tradeAPIs = new TradeAPIsHelper(this);
182
+                return _tradeAPIs;
183
+            }
184
+        }
185
+
186
+        #endregion
187
+
188
+        #region 资源集合TradeResources
189
+        private TradeResourcesHelper _tradeResources;
190
+        /// <summary>
191
+        /// 资源集合
192
+        /// </summary>
193
+        public TradeResourcesHelper TradeResources
194
+        {
195
+            get
196
+            {
197
+                if (_tradeResources == null)
198
+                    _tradeResources = new TradeResourcesHelper(this);
199
+                return _tradeResources;
200
+            }
201
+        }
202
+
203
+        #endregion
204
+
205
+        #region Paperless
206
+        private PaperlessEntry paperless;
207
+        /// <summary>
208
+        /// 无纸化对象
209
+        /// </summary>
210
+        public PaperlessEntry Paperless
211
+        {
212
+            get
213
+            {
214
+                if (paperless == null)
215
+                    paperless = new PaperlessEntry();
216
+                return paperless;
217
+            }
218
+        }
219
+        #endregion
220
+
221
+        #region CashCode
222
+        private CashCodeEntry cashCode;
223
+        /// <summary>
224
+        /// 冠字号对象
225
+        /// </summary>
226
+        public CashCodeEntry CashCode
227
+        {
228
+            get
229
+            {
230
+                if (cashCode == null)
231
+                    cashCode = new CashCodeEntry();
232
+                return cashCode;
233
+            }
234
+        }
235
+        #endregion
236
+        #endregion
237
+
238
+        #region 清理
239
+        /// <summary>
240
+        /// 清理缓存数据
241
+        /// </summary>
242
+        public void Clear()
243
+        {
244
+            this.paperless = null;
245
+            this._tradeAPIs = null;
246
+            this._tradeBus = null;
247
+            this._tradeInfo = null;
248
+            this._tradeResources = null;
249
+        }
250
+        #endregion
251
+    }
252
+}

+ 174
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/PageBase.ts View File

@@ -0,0 +1,174 @@
1
+import { ref, reactive, defineComponent } from 'vue'
2
+import { TradeBusHelper } from './TradeBusHelper'
3
+import { TradeInfoHelper } from './TradeInfoHelper'
4
+import { TradeAPIsHelper } from './TradeAPIsHelper'
5
+import { TradeResourcesHelper } from './TradeResourcesHelper'
6
+import { PaperlessEntry } from './PaperlessEntry'
7
+import { CashCodeEntry } from './CashCodeEntry'
8
+import { PlatformLogger } from '../../Platform.Common/LogSystem/PlatformLogger'
9
+import { ServiceSettings } from '../../TellerSystem.ServiceProxy/Ext/ServiceHelper/ServiceSettings'
10
+import { TradeHandle } from '../../TellerSystem.Library/Ext/Function/TradeHandle'
11
+import { PrintAttributes } from '../../Platform.Presentation/PageFunctions/PrintAttributes'
12
+
13
+/**
14
+ * 页面基类,填充通用的业务接口API
15
+ * 注意:该对象需要支持序列化/反序列化
16
+ */
17
+export abstract class PageBase implements ITradeHelper {
18
+    // 业务总线
19
+    private _tradeBus: TradeBusHelper | null = null
20
+    get TradeBus(): TradeBusHelper {
21
+        if (!this._tradeBus) {
22
+            this._tradeBus = new TradeBusHelper(this)
23
+        }
24
+        return this._tradeBus
25
+    }
26
+
27
+    // 交易信息
28
+    private _tradeInfo: TradeInfoHelper | null = null
29
+    get TradeInfo(): TradeInfoHelper {
30
+        if (!this._tradeInfo) {
31
+            this._tradeInfo = new TradeInfoHelper(this)
32
+        }
33
+        return this._tradeInfo
34
+    }
35
+
36
+    // 操作接口
37
+    private _tradeAPIs: TradeAPIsHelper | null = null
38
+    get TradeAPIs(): TradeAPIsHelper {
39
+        if (!this._tradeAPIs) {
40
+            this._tradeAPIs = new TradeAPIsHelper(this)
41
+        }
42
+        return this._tradeAPIs
43
+    }
44
+
45
+    // 资源集合
46
+    private _tradeResources: TradeResourcesHelper | null = null
47
+    get TradeResources(): TradeResourcesHelper {
48
+        if (!this._tradeResources) {
49
+            this._tradeResources = new TradeResourcesHelper(this)
50
+        }
51
+        return this._tradeResources
52
+    }
53
+
54
+    // 无纸化对象
55
+    private paperless: PaperlessEntry | null = null
56
+    get Paperless(): PaperlessEntry {
57
+        if (!this.paperless) {
58
+            this.paperless = new PaperlessEntry()
59
+        }
60
+        return this.paperless
61
+    }
62
+
63
+    // 冠字号对象
64
+    private cashCode: CashCodeEntry | null = null
65
+    get CashCode(): CashCodeEntry {
66
+        if (!this.cashCode) {
67
+            this.cashCode = new CashCodeEntry()
68
+        }
69
+        return this.cashCode
70
+    }
71
+
72
+    // 银行标签
73
+    get BankFlag(): string {
74
+        return ServiceSettings.BankFlag
75
+    }
76
+
77
+    // 打印事件
78
+    private pagePrintedHandlers: ((attr: PrintAttributes) => void)[] = []
79
+
80
+    /**
81
+     * 初始化页面
82
+     */
83
+    public initPage(): boolean {
84
+        return true
85
+    }
86
+
87
+    /**
88
+     * 页面加载完成
89
+     */
90
+    protected onTradePageLoaded(): void {
91
+        let flag = false
92
+        try {
93
+            // 加载页面初始化
94
+            flag = this.initPage()
95
+            if (flag) {
96
+                // 焦点管理逻辑
97
+                // 将交易打开的时间登记到bus
98
+                try {
99
+                    if (!this.TradeBus.get('__StartTime__')) {
100
+                        this.TradeBus.set('__StartTime__', new Date().toISOString())
101
+                    }
102
+                } catch (ex) {
103
+                    TradeHandle.writeImportantLog('获取交易打开时间异常', ex.message, 'StartTime')
104
+                }
105
+            }
106
+        } catch (e) {
107
+            PlatformLogger.tradeErrorInfo('调用InitPage失败!', e, this.TradeModel.Code)
108
+        }
109
+        if (!flag) {
110
+            // 关闭页面逻辑
111
+        }
112
+    }
113
+
114
+    /**
115
+     * 记录打印日志
116
+     */
117
+    private log2PagePrinted(log: string): void {
118
+        try {
119
+            PlatformLogger.systemInfo(`Log2PagePrinted:start 【${log}】=>${this.pagePrintedHandlers.length}`)
120
+            if (this.pagePrintedHandlers.length === 0) return
121
+            PlatformLogger.systemInfo(`Log2PagePrinted:list length=>${this.pagePrintedHandlers.length}`)
122
+        } catch {}
123
+    }
124
+
125
+    /**
126
+     * 触发打印后事件
127
+     */
128
+    public onPagePrinted(attr: PrintAttributes): void {
129
+        PlatformLogger.systemInfo(`OnPagePrinted:触发事件=>${this.pagePrintedHandlers.length}`)
130
+        if (this.pagePrintedHandlers.length > 0) {
131
+            this.log2PagePrinted('OnPagePrinted.start')
132
+            this.pagePrintedHandlers.forEach(handler => handler(attr))
133
+            this.log2PagePrinted('OnPagePrinted.end')
134
+        }
135
+    }
136
+
137
+    /**
138
+     * 添加打印事件监听
139
+     */
140
+    public addPagePrintedListener(handler: (attr: PrintAttributes) => void): void {
141
+        this.pagePrintedHandlers.push(handler)
142
+    }
143
+
144
+    /**
145
+     * 移除打印事件监听
146
+     */
147
+    public removePagePrintedListener(handler: (attr: PrintAttributes) => void): void {
148
+        this.pagePrintedHandlers = this.pagePrintedHandlers.filter(h => h !== handler)
149
+    }
150
+
151
+    /**
152
+     * 清理缓存数据
153
+     */
154
+    public clear(): void {
155
+        this.paperless = null
156
+        this._tradeAPIs = null
157
+        this._tradeBus = null
158
+        this._tradeInfo = null
159
+        this._tradeResources = null
160
+    }
161
+}
162
+
163
+// Vue组件封装
164
+export const PageBaseComponent = defineComponent({
165
+    extends: PageBase,
166
+    methods: {
167
+        initPage(): boolean {
168
+            return super.initPage()
169
+        },
170
+        onPagePrinted(attr: PrintAttributes): void {
171
+            super.onPagePrinted(attr)
172
+        }
173
+    }
174
+})

+ 2933
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeAPIsHelper.cs
File diff suppressed because it is too large
View File


+ 5892
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeBusHelper.cs
File diff suppressed because it is too large
View File


+ 89
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeInfoHelper.cs View File

@@ -0,0 +1,89 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using TellerSystem.Library.Ext.TradeExtension;
6
+using System.Windows.Media;
7
+
8
+namespace TellerSystem.Contract.ContractBase
9
+{
10
+    /// <summary>
11
+    /// 交易基础信息的访问辅助类
12
+    /// </summary>
13
+    public class TradeInfoHelper
14
+    {
15
+        #region ctor & Property
16
+        public TradeInfoHelper(PageBase page)
17
+        {
18
+            Page = page;
19
+            _tradeInfoData = TradeInfoData.GetTradeInfo(Page);
20
+        }
21
+        public PageBase Page { get; private set; }
22
+        private TradeInfoData _tradeInfoData;
23
+        #endregion
24
+
25
+        #region 交易属性
26
+        /// <summary>
27
+        /// 柜员前端流水号
28
+        /// </summary>
29
+        public string SerialNumber
30
+        {
31
+            get { return _tradeInfoData.SerialNumber; }
32
+        }
33
+        /// <summary>
34
+        /// 系统前端流水号
35
+        /// </summary>
36
+        public string SystemSerialNumber
37
+        {
38
+            get { return _tradeInfoData.SystemSerialNumber; }
39
+        }
40
+
41
+        /// <summary>
42
+        /// 打印票号
43
+        /// </summary>
44
+        public string PrintNum
45
+        {
46
+            get { return _tradeInfoData.PrintNum; }
47
+        }
48
+        /// <summary>
49
+        /// 交易号,指代一个完整的业务流程
50
+        /// </summary>
51
+        public string TradeCode
52
+        {
53
+            get { return _tradeInfoData.TradeCode; }
54
+        }
55
+        /// <summary>
56
+        /// 交易名称,指代一个完整的业务流程
57
+        /// </summary>
58
+        public string TradeName
59
+        {
60
+            get { return _tradeInfoData.TradeName; }
61
+        }
62
+        /// <summary>
63
+        /// 交易截图 modify by hulei  20190116
64
+        /// </summary>
65
+        public Dictionary<string, List<ImageSource>> TradeScreens
66
+        {
67
+            set
68
+            {
69
+                _tradeInfoData.TradeScreens = value;
70
+            }
71
+            get { return _tradeInfoData.TradeScreens; }
72
+        }
73
+        /// <summary>
74
+        /// 主交易提交代码
75
+        /// </summary>
76
+        public string MainCode
77
+        {
78
+            get
79
+            {
80
+                return _tradeInfoData.TradeBus["MainCode"];
81
+            }
82
+            set
83
+            {
84
+                _tradeInfoData.TradeBus["MainCode"] = value;
85
+            }
86
+        }
87
+        #endregion
88
+    }
89
+}

+ 83
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeInfoHelper.ts View File

@@ -0,0 +1,83 @@
1
+import { reactive } from 'vue'
2
+import type { PageBase } from './PageBase'
3
+import type { TradeInfoData } from './TradeInfoData'
4
+
5
+/**
6
+ * 交易基础信息的访问辅助类
7
+ */
8
+export class TradeInfoHelper {
9
+    private _tradeInfoData: TradeInfoData
10
+    private _page: PageBase
11
+
12
+    constructor(page: PageBase) {
13
+        this._page = page
14
+        this._tradeInfoData = TradeInfoData.GetTradeInfo(page)
15
+    }
16
+
17
+    /**
18
+     * 获取页面对象
19
+     */
20
+    public get Page(): PageBase {
21
+        return this._page
22
+    }
23
+
24
+    /**
25
+     * 柜员前端流水号
26
+     */
27
+    public get SerialNumber(): string {
28
+        return this._tradeInfoData.SerialNumber
29
+    }
30
+
31
+    /**
32
+     * 系统前端流水号
33
+     */
34
+    public get SystemSerialNumber(): string {
35
+        return this._tradeInfoData.SystemSerialNumber
36
+    }
37
+
38
+    /**
39
+     * 打印票号
40
+     */
41
+    public get PrintNum(): string {
42
+        return this._tradeInfoData.PrintNum
43
+    }
44
+
45
+    /**
46
+     * 交易号,指代一个完整的业务流程
47
+     */
48
+    public get TradeCode(): string {
49
+        return this._tradeInfoData.TradeCode
50
+    }
51
+
52
+    /**
53
+     * 交易名称,指代一个完整的业务流程
54
+     */
55
+    public get TradeName(): string {
56
+        return this._tradeInfoData.TradeName
57
+    }
58
+
59
+    /**
60
+     * 交易截图
61
+     */
62
+    public get TradeScreens(): Map<string, Array<ImageBitmap>> {
63
+        return this._tradeInfoData.TradeScreens
64
+    }
65
+    public set TradeScreens(value: Map<string, Array<ImageBitmap>>) {
66
+        this._tradeInfoData.TradeScreens = value
67
+    }
68
+
69
+    /**
70
+     * 主交易提交代码
71
+     */
72
+    public get MainCode(): string {
73
+        return this._tradeInfoData.TradeBus.get('MainCode') || ''
74
+    }
75
+    public set MainCode(value: string) {
76
+        this._tradeInfoData.TradeBus.set('MainCode', value)
77
+    }
78
+}
79
+
80
+// Vue组件封装
81
+export const useTradeInfo = (page: PageBase) => {
82
+    return reactive(new TradeInfoHelper(page))
83
+}

+ 25
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeResourcesHelper.cs View File

@@ -0,0 +1,25 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+
6
+namespace TellerSystem.Contract.ContractBase
7
+{
8
+    /// <summary>
9
+    /// 业务资源的访问辅助类
10
+    /// </summary>
11
+    public class TradeResourcesHelper
12
+    {
13
+        #region ctor & Property
14
+        public TradeResourcesHelper(PageBase page)
15
+        {
16
+            Page = page;
17
+        }
18
+        public PageBase Page { get; private set; }
19
+        #endregion
20
+
21
+        #region 资源属性
22
+        public string ButtonStyle { get; set; }
23
+        #endregion
24
+    }
25
+}

+ 36
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/ContractBase/TradeResourcesHelper.ts View File

@@ -0,0 +1,36 @@
1
+import { reactive } from 'vue'
2
+import type { PageBase } from './PageBase'
3
+
4
+/**
5
+ * 业务资源的访问辅助类
6
+ */
7
+export class TradeResourcesHelper {
8
+    private _page: PageBase
9
+    private _buttonStyle: string = ''
10
+
11
+    constructor(page: PageBase) {
12
+        this._page = page
13
+    }
14
+
15
+    /**
16
+     * 获取页面对象
17
+     */
18
+    public get Page(): PageBase {
19
+        return this._page
20
+    }
21
+
22
+    /**
23
+     * 按钮样式
24
+     */
25
+    public get ButtonStyle(): string {
26
+        return this._buttonStyle
27
+    }
28
+    public set ButtonStyle(value: string) {
29
+        this._buttonStyle = value
30
+    }
31
+}
32
+
33
+// Vue组件封装
34
+export const useTradeResources = (page: PageBase) => {
35
+    return reactive(new TradeResourcesHelper(page))
36
+}

+ 435
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/ContractManager.cs View File

@@ -0,0 +1,435 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using TellerSystem.Contract.ContractBase;
6
+using TellerSystem.Communication;
7
+using TellerSystem.Library.Ext.TradeExtension;
8
+using Platform.Common.LogSystem;
9
+using TellerSystem.Library.Ext.Function;
10
+using Platform.Presentation.Interfaces;
11
+using Platform.Common.BasicFunctions;
12
+using Platform.Presentation.PagesHelper;
13
+using Platform.Print;
14
+using TellerSystem.PrintTemplate.Extension;
15
+using TellerSystem.ServiceProxy.Ext.TradeBusinessEntitys;
16
+using TellerSystem.ServiceProxy.Ext.ServiceHelper;
17
+using System.Windows;
18
+using System.Windows.Controls;
19
+using Platform.Common.RunningParameters;
20
+using TellerSystem.Contract.Function;
21
+using TellerSystem.Contract.Entry;
22
+
23
+namespace TellerSystem.Contract.Contracts
24
+{
25
+    /// <summary>
26
+    /// 契约执行流程定义
27
+    /// </summary>
28
+    public static class ContractManager
29
+    {
30
+        public static bool RaiseSubmit(this PageBase page)
31
+        {
32
+            if (page is ISubmitContract)
33
+            {
34
+                AuthDataHelper authdata = new AuthDataHelper(page);
35
+                authdata.ClearAuthData();
36
+                var contract = page as ISubmitContract;
37
+                if (contract == null || contract.SubmitEntry == null) return false;
38
+                //重复提交的情况
39
+                if (contract.SubmitEntry.Submitted)
40
+                {
41
+                    TradeHandle.WriteTraceLog("ContractManager.RaiseSubmit:阻断错误的重复提交!", contract.SubmitEntry.MessageData.Fd16);
42
+                    return false;
43
+                }
44
+                Message message = null;
45
+                //组装提交数据失败或组装对象为null,流程失败
46
+                if (!contract.PreviewSubmitting(out message)) return false;
47
+                if (message == null || message.Fd16 != page.TradeInfo.MainCode)
48
+                {
49
+                    PlatformLogger.TradeErrorInfo("提交通讯错误:", new Exception("提交报文与主交易码不一致,请检查..."));
50
+                }
51
+                //初始化提交入口对象,执行提交流程
52
+                var entry = contract.SubmitEntry;
53
+                if (entry == null || !entry.LoadData(page, message)) return false;
54
+                //检查复核
55
+                if (!RaiseRecheck(page, message)) return false;
56
+                //检查授权             
57
+                if (!RaiseAuthorize(page, message)) return false;
58
+                //检查收费
59
+                if (!RaisePaymentFee(page, message)) return false;
60
+                //触发提交
61
+                if (!entry.RaiseSubmit()) return false;
62
+            }
63
+            return true;
64
+        }
65
+
66
+        /// <summary>
67
+        /// 触发授权流程
68
+        /// </summary>
69
+        /// <param name="page"></param>
70
+        /// <param name="message"></param>
71
+        /// <param name="powerCode"></param>
72
+        /// <returns></returns>
73
+        public static bool RaiseAuthorize(this PageBase page, Message message, string powerCode = "0")
74
+        {
75
+            if (page is IAuthorizeContract)
76
+            {
77
+                var contract = page as IAuthorizeContract;
78
+                if (contract == null) return false;
79
+                //考试系统无需进行授权
80
+                if (ExamSystem.Instance.InExamMode) return true;
81
+                //若交易未启用授权标志,则认为无需进行授权
82
+                if (string.Compare(page.TradeAPIs.GetTradeMetadata("isAuth"), "true", true) != 0)
83
+                    return true;
84
+                //if (string.IsNullOrWhiteSpace(powerCode)) return false;
85
+                //获取授权入口
86
+                if (contract.AuthorizeEntries == null || contract.AuthorizeEntries.Count == 0) return false;
87
+
88
+                var entry = contract.AuthorizeEntries.Find(x => { return x.PowerCode == powerCode; });
89
+                if (entry == null) return false;
90
+                entry.LoadData(page, message);
91
+                return entry.RaiseAuthorize();
92
+            }
93
+            return true;
94
+        }
95
+
96
+        /// <summary>
97
+        /// 触发复核流程
98
+        /// </summary>
99
+        /// <param name="page"></param>
100
+        /// <param name="message"></param>
101
+        /// <param name="powerCode"></param>
102
+        /// <returns></returns>
103
+        public static bool RaiseRecheck(this PageBase page, Message message, string powerCode = "0")
104
+        {
105
+            if (page is IRecheckContract)
106
+            {
107
+                var contract = page as IRecheckContract;
108
+                if (contract == null) return false;
109
+                //考试系统无需进行复核
110
+                if (ExamSystem.Instance.InExamMode) return true;
111
+                //若交易未启用复核标志,则认为无需进行复核
112
+                if (string.Compare(page.TradeAPIs.GetTradeMetadata("isRecheck"), "true", true) != 0)
113
+                    return true;
114
+                //if (string.IsNullOrWhiteSpace(powerCode)) return false;
115
+                //获取授权入口
116
+                if (contract.RecheckEntries == null || contract.RecheckEntries.Count == 0) return false;
117
+
118
+                var entry = contract.RecheckEntries.Find(x => { return x.PowerCode == powerCode; });
119
+                if (entry == null) return false;
120
+                entry.LoadData(page, message);
121
+                return entry.RaiseRecheck();
122
+            }
123
+            return true;
124
+        }
125
+
126
+        /// <summary>
127
+        /// 触发收费流程
128
+        /// </summary>
129
+        /// <param name="page"></param>
130
+        /// <param name="message"></param>
131
+        /// <returns></returns>
132
+        public static bool RaisePaymentFee(this PageBase page, Message message)
133
+        {
134
+            if (page is IPaymentFeeContract)
135
+            {
136
+                var contract = page as IPaymentFeeContract;
137
+                if (contract == null) return false;
138
+                //若交易未启用收费检查标志,则认为无需进行收费检查
139
+                if (string.Compare(page.TradeAPIs.GetTradeMetadata("isPaymentFee"), "true", true) != 0)
140
+                    return true;
141
+                //若交易通讯方式为核心前置CallGateway2CBS,则不触发收费
142
+                if (message.TransitNode == TellerSystem.Communication.MessageHelper.TransitType.CallGateway2CBS)
143
+                {
144
+                    PlatformLogger.CommunicationInfo("核心前置通讯不支持收费(TransitType.CallGateway2CBS)");
145
+                    return true;
146
+                }
147
+                //if (string.IsNullOrWhiteSpace(powerCode)) return false;
148
+                string FLAG = TradeManagerHandle.TT_SYSCONFIG_GetConfigValueByConfigID("2ea3a7e6cfa04f89a335bf1e363295de");
149
+                string filedata = string.Empty;
150
+                filedata = message.FileData;
151
+                //执行收费流程
152
+                var isPaymentFee = false;
153
+                //检查收费失败
154
+                var args = new PaymentFeeArguments(message);
155
+                if (!contract.CheckFee(args, out isPaymentFee)) return false;
156
+                //需要收费且,执行收费决策失败
157
+                if (isPaymentFee && !contract.RaisePaymentFee(args)) return false;
158
+                message.FileData = filedata;
159
+            }
160
+            return true;
161
+        }
162
+
163
+        /// <summary>
164
+        /// 触发评价流程
165
+        /// </summary>
166
+        /// <param name="page"></param>
167
+        public static void RaiseEvaluation(this PageBase page)
168
+        {
169
+            var contract = page as IEvaluationContract;
170
+            if (contract == null) return;
171
+            //TODO:菜单开关控制,暂注释
172
+            if (page.TradeAPIs.GetTradeMetadata("isEvaluation") != "true") return;
173
+            //评价数据收集
174
+            var record = new EvaluationRecord();
175
+            if (!contract.PreviewEvaluation(record))
176
+            {
177
+                //采用默认提取//"扣划账号", "扣费账号", "账号/科目号","合同编号",
178
+                var list_accno = page.PositioningUI(new List<string>() { "账/卡号", "账号", "卡    号", "账    号", "结算账号", "账/卡号", "贷款账号", "还款账号", "贷方账号", "记贷付款账号", "借据展示号", "记账账号", "收款人账号", "付款人账号", "签约账号", "账/卡 号", "本行账号", "申请人账号" }).Select(x => x.Item2).Where(x => x is TextBox).Select(x => (x as TextBox).Text).Distinct().ToDictionary(x => x);
179
+                var list_idno = page.PositioningUI(new List<string>() { "证件号码" }).Select(x => x.Item2).Where(x => x is TextBox).Select(x => (x as TextBox).Text).Distinct().ToDictionary(x => x);
180
+                var list_name = page.PositioningUI(new List<string>() { "户    名", "户  名", "客户名称" }).Select(x => x.Item2).Where(x => x is TextBox).Select(x => (x as TextBox).Text).Distinct().ToDictionary(x => x);//一个是半角一个全角
181
+                var list_amt = page.PositioningUI(new List<string>() { "交易金额", "开户金额", "支取金额" }).Select(x => x.Item2).Where(x => x is TextBox).Select(x => (x as TextBox).Text).Distinct().ToDictionary(x => x);
182
+                //如存在分歧,则提醒客户选择
183
+                record.AccNo = list_accno.Count == 1 ? list_accno.ElementAt(0).Value : string.Empty;
184
+                record.IdNo = list_idno.Count == 1 ? list_idno.ElementAt(0).Value : string.Empty;
185
+                record.Name = list_name.Count == 1 ? list_name.ElementAt(0).Value : string.Empty;
186
+                record.Amt = list_amt.Count == 1 ? list_amt.ElementAt(0).Value : string.Empty;
187
+                var gen = new Func<string, Dictionary<string, string>, UIElement>((title, dict) =>
188
+                {
189
+                    var line = new StackPanel { Orientation = Orientation.Horizontal };
190
+                    line.Children.Add(new TextBlock { Text = title, Width = 120 });
191
+                    var comboBox = new ComboBox { ItemsSource = dict, SelectedIndex = 0, Width = 300 };
192
+                    comboBox.Loaded += (s, e) =>
193
+                    {
194
+                        comboBox.SelectedIndex = 0;
195
+                        if (dict.Count < 2)
196
+                            comboBox.IsEnabled = false;
197
+                    };
198
+                    line.Children.Add(comboBox);
199
+                    return line;
200
+                });
201
+                do
202
+                {
203
+                    //TODO:是否每次都提示信息
204
+                    if (list_accno.Count >= 1 || list_idno.Count >= 1)
205
+                    {
206
+                        var content = new StackPanel();
207
+                        //组织页面
208
+                        content.Children.Add(gen("银行账号", list_accno));
209
+                        content.Children.Add(gen("身份证号", list_idno));
210
+                        content.Children.Add(gen("客户姓名", list_name));
211
+                        content.Children.Add(gen("发生金额", list_amt));
212
+                        if (page.TradeAPIs.ShowQuestionMessageBox(content, "请确认当前客户信息:", MessageBoxResult.Yes) == MessageBoxResult.Yes)
213
+                        {
214
+                            content.FindVisualTreeChildren(x => x is ComboBox).ForEach(x =>
215
+                            {
216
+                                var comboBox = x as ComboBox;
217
+                                if (comboBox.ItemsSource == list_accno)
218
+                                    record.AccNo = comboBox.GetSelectedValue();
219
+                                else if (comboBox.ItemsSource == list_idno)
220
+                                    record.IdNo = comboBox.GetSelectedValue();
221
+                                else if (comboBox.ItemsSource == list_name)
222
+                                    record.Name = comboBox.GetSelectedValue();
223
+                                else if (comboBox.ItemsSource == list_amt)
224
+                                    record.Amt = comboBox.GetSelectedValue();
225
+                            });
226
+                            break;
227
+                        }
228
+                    }
229
+                    else
230
+                        return;
231
+
232
+                } while (true);
233
+            }
234
+            PlatformLogger.SystemInfo("RaiseEvaluation:数据=>" + record.ToString());
235
+            //处理账户喝证件问题,如果账户不为空,证件为空
236
+            if (string.IsNullOrEmpty(record.IdNo.Trim()) && !string.IsNullOrEmpty(record.AccNo.Trim()))
237
+            {
238
+                //var ac = page.TradeAPIs.TF_Deposit_QueryDepositAccount(new QueryDepositAccount.Input()
239
+                //{
240
+                //    ZH = record.AccNo.Trim()
241
+                //});
242
+                //if (!ac.IsFailed)
243
+                //    record.IdNo = ac.ZJH;
244
+                var ac = page.TradeAPIs.TF_Customer_QueryCustomerInformation(new QueryCustomerInformation.Input()
245
+                {
246
+                    ZH = record.AccNo.Trim()
247
+                });
248
+                if (!ac.IsFailed && !string.IsNullOrEmpty(ac.ZJHM.Trim()))
249
+                {
250
+                    record.IdNo = ac.ZJHM.Trim();
251
+                }
252
+            }
253
+            //处理户名问题
254
+            //通过证件号或账号获取户名
255
+            if (string.IsNullOrEmpty(record.Name))
256
+            {
257
+                if (!string.IsNullOrEmpty(record.IdNo.Trim()))//如果证件号不为空,则优先通过证件号去获取户名
258
+                {
259
+                    var khInfo = page.TradeAPIs.TF_Customer_QueryCustomerInformation(new QueryCustomerInformation.Input()
260
+                    {
261
+                        ZJLX = "1",
262
+                        ZJHM = record.IdNo.Trim(),
263
+                    });
264
+                    if (!khInfo.IsFailed && !string.IsNullOrEmpty(khInfo.HM.Trim()))
265
+                    {
266
+                        record.Name = khInfo.HM.Trim();
267
+                    }
268
+                    else//如果通过证件号查询户名失败,则通过账号去获取户名
269
+                    {
270
+                        if (!string.IsNullOrEmpty(record.AccNo.Trim()))
271
+                        {
272
+                            var khInfo1 = page.TradeAPIs.TF_Customer_QueryCustomerInformation(new QueryCustomerInformation.Input()
273
+                            {
274
+                                ZH = record.AccNo.Trim()
275
+                            });
276
+                            if (!khInfo1.IsFailed && !string.IsNullOrEmpty(khInfo1.HM.Trim()))
277
+                            {
278
+                                record.Name = khInfo1.HM.Trim();
279
+                            }
280
+                            else
281
+                            {
282
+                                page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!");
283
+                                return;//取不到户名就不推送
284
+                            }
285
+                        }
286
+                        else
287
+                        {
288
+                            page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!");
289
+                            return;//取不到户名就不推送
290
+                        }
291
+                    }
292
+                }
293
+                else//如果证件号为空,则通过账号去获取户名
294
+                {
295
+                    if (!string.IsNullOrEmpty(record.AccNo.Trim()))
296
+                    {
297
+                        var khInfo1 = page.TradeAPIs.TF_Customer_QueryCustomerInformation(new QueryCustomerInformation.Input()
298
+                        {
299
+                            ZH = record.AccNo.Trim()
300
+                        });
301
+                        if (!khInfo1.IsFailed && !string.IsNullOrEmpty(khInfo1.HM.Trim()))
302
+                        {
303
+                            record.Name = khInfo1.HM.Trim();
304
+                        }
305
+                        else
306
+                        {
307
+                            page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!");
308
+                            return;//取不到户名就不推送
309
+                        }
310
+                    }
311
+                    else
312
+                    {
313
+                        page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!");
314
+                        return;//取不到户名就不推送
315
+                    }
316
+                }
317
+            }
318
+            //处理评价通讯
319
+            Message msg1 = new Message(Message.BitMap.Agn);
320
+            page.InitFd(msg1);
321
+            page.CommSend(msg1);
322
+            msg1.Fd16 = "2021";
323
+            if (!string.IsNullOrEmpty(record.AccNo))
324
+                msg1.Fd20 = "2";//类型 1身份证 2卡号
325
+            else if (!string.IsNullOrEmpty(record.IdNo))
326
+                msg1.Fd20 = "1";//类型 1身份证 2卡号
327
+
328
+            msg1.Fd30 = record.IdNo;//身份证号
329
+            msg1.Fd31 = record.AccNo;//卡号
330
+            msg1.Fd28 = LoginUserInfo.TellerNo;//柜员号
331
+            msg1.Fd32 = LoginUserInfo.TellerName;//柜员姓名
332
+            msg1.Fd23 = "3"; //来源方式 1 柜面//应微信银行请求改成3,20210929
333
+            StringBuilder ServerTime = new StringBuilder(TradeHandle.GetServerTime());
334
+            msg1.Fd33 = ServerTime.ToString().Replace("-", "").Replace(":", "").Replace(" ", "");//14位时间
335
+            msg1.Fd29 = LoginUserInfo.KinbrNo;//开户机构
336
+            msg1.Fd25 = page.TradeModel.Name + "(" + page.TradeModel.Code + ")";//业务名称
337
+            msg1.Fd37 = string.IsNullOrEmpty(record.Amt) ? "0.00" : record.Amt;//金额
338
+            msg1.Fd26 = record.Name;///客户姓名
339
+            msg1.Fd24 = "1";//联动礼品  1
340
+            msg1.Fd38 = page.TradeInfo.SerialNumber;//TODO:流水
341
+            //msg1.Fd27 = LoginUserInfo.KinbrName.Contains("前郭县阳光村镇银行") ? LoginUserInfo.KinbrName.Substring(9, LoginUserInfo.KinbrName.Length - 9).Trim() : LoginUserInfo.KinbrName;//机构名
342
+            msg1.Fd27 = LoginUserInfo.KinbrName.Contains("银行") ? LoginUserInfo.KinbrName.Split(new String[] { "银行" }, StringSplitOptions.RemoveEmptyEntries)[1] : LoginUserInfo.KinbrName;
343
+            page.CallAgn(msg1);
344
+            if (msg1.Fd12 != "0000")
345
+            {
346
+                page.TradeAPIs.ShowInfoMessageBox(page.GetError(msg1) + "\n,微信评价推送失败!");
347
+
348
+            }
349
+            else
350
+            {
351
+                page.TradeAPIs.ShowInfoMessageBox("微信评价推送成功!");
352
+            }
353
+        }
354
+
355
+        /// <summary>
356
+        /// 触发通用的打印流程,包含检查和预处理
357
+        /// </summary>
358
+        /// <param name="page"></param>
359
+        /// <param name="message"></param>
360
+        /// <param name="printList"></param>
361
+        /// <returns></returns>
362
+        public static bool RaisePrint(this PageBase page, Message message, List<PrintContainer> printList)
363
+        {
364
+            //参数检查
365
+            if (page == null || message == null || printList == null) return false;
366
+            //拆解批量打印场景
367
+            var pl = new List<PrintContainer>();
368
+            //if (string.Compare(PageData.TradeAPIs.GetTradeMetadata("isPrintNumber"), "true", true) == 0)
369
+            //    this.PageData.CreatePrintNum(this.PageData.GetTradeInfoData().SystemSerialNumber);
370
+            var printAttr = page.GetPrintAttributes();
371
+            //根据核心返回的是否存在流水  如果不下流水 前台也不创建柜员流水 add by jun 20150514
372
+            if (!string.IsNullOrWhiteSpace(message.Fd4))
373
+            {
374
+                printAttr.SerialNumber = page.CreateTellerSerialNumber(printAttr.SystemSerialNumber);
375
+                //获取PrintAttributes,抓取第四域作为业务流水号
376
+                printAttr.BusinessTransaction = message.Fd4;
377
+                //当业务流水号为无效值,且存在自定义流水号时加载
378
+                if (printAttr.BusinessTransaction == "000000000" && message.CustomizeTransitEntry != null && !string.IsNullOrEmpty(message.CustomizeTransitEntry.SerialNo))
379
+                    printAttr.BusinessTransaction = message.CustomizeTransitEntry.SerialNo;
380
+            }
381
+            //数据加载
382
+            foreach (PrintContainer item in printList)
383
+            {
384
+                PrintContainerExt.SetPrintElement(item, printAttr);
385
+                //采用接口方式的打印项需要进行数据加载
386
+                var printfee = item as IPrintFeeContract;
387
+                var print = item as IPrintContract;
388
+                if (print == null || print.PrintData == null)
389
+                {
390
+                    pl.Add(item);
391
+                }
392
+                else
393
+                {
394
+                    print.PrintData.LoadData(page, message);
395
+                    //此方法由交易定制,容易发生异常,故捕获
396
+                    try
397
+                    {
398
+                        if (item.DocumentId == "TellerSystem.Controls.Ext.PrintsHelper.Print_Fee")
399
+                        {
400
+                            Message msg = new Message();
401
+                            page.TradeAPIs.CommSend(msg);
402
+                            msg.Fd16 = "9550";
403
+                            msg.Fd4 = message.Fd4;
404
+                            page.TradeAPIs.CallServer(msg);
405
+                            printfee.LoadPrint(msg.FileData);
406
+                        }
407
+                        else
408
+                        {
409
+                            print.LoadPrintData();
410
+                        }
411
+                    }
412
+                    catch (Exception ex)
413
+                    {
414
+                        PlatformLogger.SystemErrorInfo("RaisePrintflow:调用LoadPrintData方法发生异常!", ex);
415
+                        //TradeHandle.WriteImportantLog("RaiseDefaultPrint:调用LoadPrintData方法发生异常!", ex.Message + "\n" + ex.StackTrace, this.TradeModel.Code, item.DocumentId, "6", string.Join(",", SocketManager.GetLocalIpAddressList()));
416
+                    }
417
+                    if (print.PrintData.IsBatchPrint)
418
+                    {
419
+                        //批量打印时,需要补充打印属性
420
+                        print.PrintData.BatchList.ForEach(x => { PrintContainerExt.SetPrintElement(x, printAttr); });
421
+                        pl.AddRange(print.PrintData.BatchList);
422
+                    }
423
+                    else
424
+                    {
425
+                        pl.Add(item);
426
+                    }
427
+                }
428
+            }
429
+            //解析打印规则
430
+            var list = page.TradeAPIs.DoPrintLimit(page.TradeModel.Code, pl);
431
+            page.PrintCertificate(list.ToArray());
432
+            return true;
433
+        }
434
+    }
435
+}

+ 360
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/ContractManager.ts View File

@@ -0,0 +1,360 @@
1
+import { reactive } from 'vue'
2
+import type { PageBase } from './PageBase'
3
+import type { Message } from './Message'
4
+import type { PrintContainer } from './PrintContainer'
5
+import type { EvaluationRecord } from './EvaluationRecord'
6
+import type { PaymentFeeArguments } from './PaymentFeeArguments'
7
+import { PlatformLogger, TradeHandle } from './LogSystem'
8
+import { ExamSystem } from './ExamSystem'
9
+import { LoginUserInfo } from './UserInfo'
10
+
11
+/**
12
+ * 契约执行流程定义
13
+ */
14
+export class ContractManager {
15
+    /**
16
+     * 触发提交流程
17
+     */
18
+    public static RaiseSubmit(page: PageBase): boolean {
19
+        if (page.isSubmitContract) {
20
+            const authdata = new AuthDataHelper(page)
21
+            authdata.ClearAuthData()
22
+            const contract = page as ISubmitContract
23
+            if (!contract || !contract.SubmitEntry) return false
24
+            
25
+            if (contract.SubmitEntry.Submitted) {
26
+                TradeHandle.WriteTraceLog("ContractManager.RaiseSubmit:阻断错误的重复提交!", contract.SubmitEntry.MessageData.Fd16)
27
+                return false
28
+            }
29
+
30
+            let message: Message | null = null
31
+            if (!contract.PreviewSubmitting(out message)) return false
32
+            if (!message || message.Fd16 !== page.TradeInfo.MainCode) {
33
+                PlatformLogger.TradeErrorInfo("提交通讯错误:", new Error("提交报文与主交易码不一致,请检查..."))
34
+            }
35
+
36
+            const entry = contract.SubmitEntry
37
+            if (!entry || !entry.LoadData(page, message)) return false
38
+            
39
+            if (!this.RaiseRecheck(page, message)) return false             
40
+            if (!this.RaiseAuthorize(page, message)) return false
41
+            if (!this.RaisePaymentFee(page, message)) return false
42
+            if (!entry.RaiseSubmit()) return false
43
+        }
44
+        return true
45
+    }
46
+
47
+    /**
48
+     * 触发授权流程
49
+     */
50
+    public static RaiseAuthorize(page: PageBase, message: Message, powerCode = "0"): boolean {
51
+        if (page.isAuthorizeContract) {
52
+            const contract = page as IAuthorizeContract
53
+            if (!contract) return false
54
+            
55
+            if (ExamSystem.Instance.InExamMode) return true
56
+            
57
+            if (page.TradeAPIs.GetTradeMetadata("isAuth") !== "true") return true
58
+            
59
+            if (!contract.AuthorizeEntries || contract.AuthorizeEntries.length === 0) return false
60
+
61
+            const entry = contract.AuthorizeEntries.find(x => x.PowerCode === powerCode)
62
+            if (!entry) return false
63
+            
64
+            entry.LoadData(page, message)
65
+            return entry.RaiseAuthorize()
66
+        }
67
+        return true
68
+    }
69
+
70
+    /**
71
+     * 触发复核流程
72
+     */
73
+    public static RaiseRecheck(page: PageBase, message: Message, powerCode = "0"): boolean {
74
+        if (page.isRecheckContract) {
75
+            const contract = page as IRecheckContract
76
+            if (!contract) return false
77
+            
78
+            if (ExamSystem.Instance.InExamMode) return true
79
+            
80
+            if (page.TradeAPIs.GetTradeMetadata("isRecheck") !== "true") return true
81
+            
82
+            if (!contract.RecheckEntries || contract.RecheckEntries.length === 0) return false
83
+
84
+            const entry = contract.RecheckEntries.find(x => x.PowerCode === powerCode)
85
+            if (!entry) return false
86
+            
87
+            entry.LoadData(page, message)
88
+            return entry.RaiseRecheck()
89
+        }
90
+        return true
91
+    }
92
+
93
+    /**
94
+     * 触发收费流程
95
+     */
96
+    public static RaisePaymentFee(page: PageBase, message: Message): boolean {
97
+        if (page.isPaymentFeeContract) {
98
+            const contract = page as IPaymentFeeContract
99
+            if (!contract) return false
100
+            
101
+            if (page.TradeAPIs.GetTradeMetadata("isPaymentFee") !== "true") return true
102
+            
103
+            if (message.TransitNode === TransitType.CallGateway2CBS) {
104
+                PlatformLogger.CommunicationInfo("核心前置通讯不支持收费(TransitType.CallGateway2CBS)")
105
+                return true
106
+            }
107
+
108
+            const FLAG = TradeManagerHandle.TT_SYSCONFIG_GetConfigValueByConfigID("2ea3a7e6cfa04f89a335bf1e363295de")
109
+            const filedata = message.FileData
110
+            
111
+            let isPaymentFee = false
112
+            const args = new PaymentFeeArguments(message)
113
+            if (!contract.CheckFee(args, out isPaymentFee)) return false
114
+            
115
+            if (isPaymentFee && !contract.RaisePaymentFee(args)) return false
116
+            
117
+            message.FileData = filedata
118
+        }
119
+        return true
120
+    }
121
+
122
+    /**
123
+     * 触发评价流程
124
+     */
125
+    public static RaiseEvaluation(page: PageBase): void {
126
+        const contract = page as IEvaluationContract
127
+        if (!contract) return
128
+        
129
+        if (page.TradeAPIs.GetTradeMetadata("isEvaluation") !== "true") return
130
+        
131
+        const record = new EvaluationRecord()
132
+        if (!contract.PreviewEvaluation(record)) {
133
+            const list_accno = page.PositioningUI(["账/卡号", "账号", "卡    号", "账    号", "结算账号", "账/卡号", "贷款账号", "还款账号", "贷方账号", "记贷付款账号", "借据展示号", "记账账号", "收款人账号", "付款人账号", "签约账号", "账/卡 号", "本行账号", "申请人账号"])
134
+                .filter(x => x[1] instanceof HTMLInputElement)
135
+                .map(x => (x[1] as HTMLInputElement).value)
136
+                .filter((value, index, self) => self.indexOf(value) === index)
137
+                .reduce((acc, curr) => (acc[curr] = curr, acc), {} as Record<string, string>)
138
+            
139
+            const list_idno = page.PositioningUI(["证件号码"])
140
+                .filter(x => x[1] instanceof HTMLInputElement)
141
+                .map(x => (x[1] as HTMLInputElement).value)
142
+                .filter((value, index, self) => self.indexOf(value) === index)
143
+                .reduce((acc, curr) => (acc[curr] = curr, acc), {} as Record<string, string>)
144
+            
145
+            const list_name = page.PositioningUI(["户    名", "户  名", "客户名称"])
146
+                .filter(x => x[1] instanceof HTMLInputElement)
147
+                .map(x => (x[1] as HTMLInputElement).value)
148
+                .filter((value, index, self) => self.indexOf(value) === index)
149
+                .reduce((acc, curr) => (acc[curr] = curr, acc), {} as Record<string, string>)
150
+            
151
+            const list_amt = page.PositioningUI(["交易金额", "开户金额", "支取金额"])
152
+                .filter(x => x[1] instanceof HTMLInputElement)
153
+                .map(x => (x[1] as HTMLInputElement).value)
154
+                .filter((value, index, self) => self.indexOf(value) === index)
155
+                .reduce((acc, curr) => (acc[curr] = curr, acc), {} as Record<string, string>)
156
+            
157
+            record.AccNo = Object.keys(list_accno).length === 1 ? list_accno[Object.keys(list_accno)[0]] : ''
158
+            record.IdNo = Object.keys(list_idno).length === 1 ? list_idno[Object.keys(list_idno)[0]] : ''
159
+            record.Name = Object.keys(list_name).length === 1 ? list_name[Object.keys(list_name)[0]] : ''
160
+            record.Amt = Object.keys(list_amt).length === 1 ? list_amt[Object.keys(list_amt)[0]] : ''
161
+            
162
+            const gen = (title: string, dict: Record<string, string>): HTMLElement => {
163
+                const line = document.createElement('div')
164
+                line.style.display = 'flex'
165
+                const titleEl = document.createElement('span')
166
+                titleEl.textContent = title
167
+                titleEl.style.width = '120px'
168
+                line.appendChild(titleEl)
169
+                
170
+                const comboBox = document.createElement('select')
171
+                comboBox.style.width = '300px'
172
+                Object.keys(dict).forEach(key => {
173
+                    const option = document.createElement('option')
174
+                    option.value = key
175
+                    option.textContent = dict[key]
176
+                    comboBox.appendChild(option)
177
+                })
178
+                
179
+                comboBox.addEventListener('change', () => {
180
+                    if (dict === list_accno) record.AccNo = comboBox.value
181
+                    else if (dict === list_idno) record.IdNo = comboBox.value
182
+                    else if (dict === list_name) record.Name = comboBox.value
183
+                    else if (dict === list_amt) record.Amt = comboBox.value
184
+                })
185
+                
186
+                line.appendChild(comboBox)
187
+                return line
188
+            }
189
+
190
+            do {
191
+                if (Object.keys(list_accno).length >= 1 || Object.keys(list_idno).length >= 1) {
192
+                    const content = document.createElement('div')
193
+                    
194
+                    if (Object.keys(list_accno).length > 0) content.appendChild(gen("银行账号", list_accno))
195
+                    if (Object.keys(list_idno).length > 0) content.appendChild(gen("身份证号", list_idno))
196
+                    if (Object.keys(list_name).length > 0) content.appendChild(gen("客户姓名", list_name))
197
+                    if (Object.keys(list_amt).length > 0) content.appendChild(gen("发生金额", list_amt))
198
+                    
199
+                    if (confirm('请确认当前客户信息:')) {
200
+                        if (Object.keys(list_accno).length > 0) record.AccNo = (content.querySelector('select') as HTMLSelectElement).value
201
+                        if (Object.keys(list_idno).length > 0) record.IdNo = (content.querySelectorAll('select')[1] as HTMLSelectElement).value
202
+                        if (Object.keys(list_name).length > 0) record.Name = (content.querySelectorAll('select')[2] as HTMLSelectElement).value
203
+                        if (Object.keys(list_amt).length > 0) record.Amt = (content.querySelectorAll('select')[3] as HTMLSelectElement).value
204
+                        break
205
+                    }
206
+                } else {
207
+                    return
208
+                }
209
+            } while (true)
210
+        }
211
+        
212
+        PlatformLogger.SystemInfo("RaiseEvaluation:数据=>" + record.toString())
213
+        
214
+        if (!record.IdNo.trim() && record.AccNo.trim()) {
215
+            const ac = page.TradeAPIs.TF_Customer_QueryCustomerInformation({
216
+                ZH: record.AccNo.trim()
217
+            })
218
+            if (!ac.IsFailed && ac.ZJHM.trim()) {
219
+                record.IdNo = ac.ZJHM.trim()
220
+            }
221
+        }
222
+        
223
+        if (!record.Name) {
224
+            if (record.IdNo.trim()) {
225
+                const khInfo = page.TradeAPIs.TF_Customer_QueryCustomerInformation({
226
+                    ZJLX: "1",
227
+                    ZJHM: record.IdNo.trim(),
228
+                })
229
+                if (!khInfo.IsFailed && khInfo.HM.trim()) {
230
+                    record.Name = khInfo.HM.trim()
231
+                } else if (record.AccNo.trim()) {
232
+                    const khInfo1 = page.TradeAPIs.TF_Customer_QueryCustomerInformation({
233
+                        ZH: record.AccNo.trim()
234
+                    })
235
+                    if (!khInfo1.IsFailed && khInfo1.HM.trim()) {
236
+                        record.Name = khInfo1.HM.trim()
237
+                    } else {
238
+                        page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!")
239
+                        return
240
+                    }
241
+                } else {
242
+                    page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!")
243
+                    return
244
+                }
245
+            } else if (record.AccNo.trim()) {
246
+                const khInfo1 = page.TradeAPIs.TF_Customer_QueryCustomerInformation({
247
+                    ZH: record.AccNo.trim()
248
+                })
249
+                if (!khInfo1.IsFailed && khInfo1.HM.trim()) {
250
+                    record.Name = khInfo1.HM.trim()
251
+                } else {
252
+                    page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!")
253
+                    return
254
+                }
255
+            } else {
256
+                page.TradeAPIs.ShowInfoMessageBox("户名抓取失败,微信评价推送失败!")
257
+                return
258
+            }
259
+        }
260
+        
261
+        const msg1 = new Message(Message.BitMap.Agn)
262
+        page.InitFd(msg1)
263
+        page.CommSend(msg1)
264
+        msg1.Fd16 = "2021"
265
+        msg1.Fd20 = record.AccNo ? "2" : record.IdNo ? "1" : ""
266
+        msg1.Fd30 = record.IdNo
267
+        msg1.Fd31 = record.AccNo
268
+        msg1.Fd28 = LoginUserInfo.TellerNo
269
+        msg1.Fd32 = LoginUserInfo.TellerName
270
+        msg1.Fd23 = "3"
271
+        const ServerTime = TradeHandle.GetServerTime().replace(/-|:| /g, "")
272
+        msg1.Fd33 = ServerTime
273
+        msg1.Fd29 = LoginUserInfo.KinbrNo
274
+        msg1.Fd25 = `${page.TradeModel.Name}(${page.TradeModel.Code})`
275
+        msg1.Fd37 = record.Amt || "0.00"
276
+        msg1.Fd26 = record.Name
277
+        msg1.Fd24 = "1"
278
+        msg1.Fd38 = page.TradeInfo.SerialNumber
279
+        msg1.Fd27 = LoginUserInfo.KinbrName.includes("银行") 
280
+            ? LoginUserInfo.KinbrName.split("银行")[1] 
281
+            : LoginUserInfo.KinbrName
282
+        
283
+        page.CallAgn(msg1)
284
+        if (msg1.Fd12 !== "0000") {
285
+            page.TradeAPIs.ShowInfoMessageBox(`${page.GetError(msg1)}\n,微信评价推送失败!`)
286
+        } else {
287
+            page.TradeAPIs.ShowInfoMessageBox("微信评价推送成功!")
288
+        }
289
+    }
290
+
291
+    /**
292
+     * 触发通用的打印流程,包含检查和预处理
293
+     */
294
+    public static RaisePrint(page: PageBase, message: Message, printList: PrintContainer[]): boolean {
295
+        if (!page || !message || !printList) return false
296
+        
297
+        const pl: PrintContainer[] = []
298
+        const printAttr = page.GetPrintAttributes()
299
+        
300
+        if (message.Fd4) {
301
+            printAttr.SerialNumber = page.CreateTellerSerialNumber(printAttr.SystemSerialNumber)
302
+            printAttr.BusinessTransaction = message.Fd4
303
+            
304
+            if (printAttr.BusinessTransaction === "000000000" && message.CustomizeTransitEntry?.SerialNo) {
305
+                printAttr.BusinessTransaction = message.CustomizeTransitEntry.SerialNo
306
+            }
307
+        }
308
+        
309
+        for (const item of printList) {
310
+            PrintContainerExt.SetPrintElement(item, printAttr)
311
+            
312
+            const printfee = item as IPrintFeeContract
313
+            const print = item as IPrintContract
314
+            
315
+            if (!print || !print.PrintData) {
316
+                pl.push(item)
317
+            } else {
318
+                print.PrintData.LoadData(page, message)
319
+                
320
+                try {
321
+                    if (item.DocumentId === "TellerSystem.Controls.Ext.PrintsHelper.Print_Fee") {
322
+                        const msg = new Message()
323
+                        page.TradeAPIs.CommSend(msg)
324
+                        msg.Fd16 = "9550"
325
+                        msg.Fd4 = message.Fd4
326
+                        page.TradeAPIs.CallServer(msg)
327
+                        printfee.LoadPrint(msg.FileData)
328
+                    } else {
329
+                        print.LoadPrintData()
330
+                    }
331
+                } catch (ex) {
332
+                    PlatformLogger.SystemErrorInfo("RaisePrintflow:调用LoadPrintData方法发生异常!", ex)
333
+                }
334
+                
335
+                if (print.PrintData.IsBatchPrint) {
336
+                    print.PrintData.BatchList.forEach(x => PrintContainerExt.SetPrintElement(x, printAttr))
337
+                    pl.push(...print.PrintData.BatchList)
338
+                } else {
339
+                    pl.push(item)
340
+                }
341
+            }
342
+        }
343
+        
344
+        const list = page.TradeAPIs.DoPrintLimit(page.TradeModel.Code, pl)
345
+        page.PrintCertificate(list)
346
+        return true
347
+    }
348
+}
349
+
350
+// Vue组件封装
351
+export const useContractManager = () => {
352
+    return reactive({
353
+        RaiseSubmit: ContractManager.RaiseSubmit,
354
+        RaiseAuthorize: ContractManager.RaiseAuthorize,
355
+        RaiseRecheck: ContractManager.RaiseRecheck,
356
+        RaisePaymentFee: ContractManager.RaisePaymentFee,
357
+        RaiseEvaluation: ContractManager.RaiseEvaluation,
358
+        RaisePrint: ContractManager.RaisePrint
359
+    })
360
+}

+ 20
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IAuthorizeContract.cs View File

@@ -0,0 +1,20 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using TellerSystem.Library.Ext.TradeExtension;
6
+using TellerSystem.Contract.ContractBase;
7
+using TellerSystem.Communication;
8
+using TellerSystem.Library.Ext.Function;
9
+using TellerSystem.Contract.Entry;
10
+
11
+namespace TellerSystem.Contract.Contracts
12
+{
13
+    public interface IAuthorizeContract
14
+    {
15
+        /// <summary>
16
+        /// 授权入口
17
+        /// </summary>
18
+        List<AuthorizeEntry> AuthorizeEntries { get; }
19
+    }
20
+}

+ 8
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IAuthorizeContract.ts View File

@@ -0,0 +1,8 @@
1
+import { AuthorizeEntry } from './AuthorizeEntry';
2
+
3
+export interface IAuthorizeContract {
4
+  /**
5
+   * 授权入口
6
+   */
7
+  authorizeEntries: AuthorizeEntry[];
8
+}

+ 43
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IEvaluationContract.cs View File

@@ -0,0 +1,43 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+
6
+namespace TellerSystem.Contract.Contracts
7
+{
8
+    public interface IEvaluationContract
9
+    {
10
+        bool PreviewEvaluation(EvaluationRecord record);
11
+    }
12
+
13
+    /// <summary>
14
+    /// 预评价的记录
15
+    /// </summary>
16
+    public class EvaluationRecord
17
+    {
18
+        /// <summary>
19
+        /// 账号
20
+        /// </summary>
21
+        public string AccNo { get; set; }
22
+
23
+        /// <summary>
24
+        /// 身份证号
25
+        /// </summary>
26
+        public string IdNo { get; set; }
27
+
28
+        /// <summary>
29
+        /// 姓名
30
+        /// </summary>
31
+        public string Name { get; set; }
32
+
33
+        /// <summary>
34
+        /// 金额
35
+        /// </summary>
36
+        public string Amt { get; set; }
37
+
38
+        public override string ToString()
39
+        {
40
+            return string.Format("EvaluationRecord=[AccNo:{0},IdNo:{1},Name:{2},Amt:{3}]", AccNo, IdNo, Name, Amt);
41
+        }
42
+    }
43
+}

+ 45
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IEvaluationContract.ts View File

@@ -0,0 +1,45 @@
1
+export interface IEvaluationContract {
2
+  /**
3
+   * 预评价
4
+   */
5
+  previewEvaluation(record: EvaluationRecord): boolean;
6
+}
7
+
8
+/**
9
+ * 预评价的记录
10
+ */
11
+export class EvaluationRecord {
12
+  /**
13
+   * 账号
14
+   */
15
+  accNo: string;
16
+
17
+  /**
18
+   * 身份证号
19
+   */
20
+  idNo: string;
21
+
22
+  /**
23
+   * 姓名
24
+   */
25
+  name: string;
26
+
27
+  /**
28
+   * 金额
29
+   */
30
+  amt: string;
31
+
32
+  constructor(accNo: string = '', idNo: string = '', name: string = '', amt: string = '') {
33
+    this.accNo = accNo;
34
+    this.idNo = idNo;
35
+    this.name = name;
36
+    this.amt = amt;
37
+  }
38
+
39
+  /**
40
+   * 转换为字符串
41
+   */
42
+  toString(): string {
43
+    return `EvaluationRecord=[AccNo:${this.accNo},IdNo:${this.idNo},Name:${this.name},Amt:${this.amt}]`;
44
+  }
45
+}

+ 48
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IPaymentFeeContract.cs View File

@@ -0,0 +1,48 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using TellerSystem.Communication;
6
+
7
+namespace TellerSystem.Contract.Contracts
8
+{
9
+    public interface IPaymentFeeContract
10
+    {
11
+        /// <summary>
12
+        /// 检查收费情况,是否需要进行收费
13
+        /// </summary>
14
+        /// <param name="message"></param>
15
+        /// <returns></returns>
16
+        bool CheckFee(PaymentFeeArguments args, out bool isPaymentFee);
17
+
18
+        /// <summary>
19
+        /// 执行收费决策界面
20
+        /// </summary>
21
+        /// <param name="message"></param>
22
+        /// <returns></returns>
23
+        bool RaisePaymentFee(PaymentFeeArguments args);
24
+    }
25
+
26
+    public class PaymentFeeArguments
27
+    {
28
+        #region ctor
29
+        public PaymentFeeArguments(Message message)
30
+        {
31
+            Message = message;
32
+            Metadata = new Dictionary<string, object>();
33
+        }
34
+        #endregion
35
+
36
+        #region 属性
37
+        /// <summary>
38
+        /// 通讯报文
39
+        /// </summary>
40
+        public Message Message { get; private set; }
41
+
42
+        /// <summary>
43
+        /// 元数据集合
44
+        /// </summary>
45
+        public Dictionary<string, object> Metadata { get; private set; }
46
+        #endregion
47
+    }
48
+}

+ 62
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IPaymentFeeContract.ts View File

@@ -0,0 +1,62 @@
1
+import type { Message } from './Message'
2
+
3
+/**
4
+ * 收费合约接口
5
+ */
6
+export interface IPaymentFeeContract {
7
+    /**
8
+     * 检查收费情况,是否需要进行收费
9
+     * @param args 收费参数
10
+     * @param isPaymentFee 是否需要进行收费
11
+     * @returns 检查是否成功
12
+     */
13
+    CheckFee(args: PaymentFeeArguments, isPaymentFee: { value: boolean }): boolean
14
+
15
+    /**
16
+     * 执行收费决策界面
17
+     * @param args 收费参数 
18
+     * @returns 收费是否成功
19
+     */
20
+    RaisePaymentFee(args: PaymentFeeArguments): boolean
21
+}
22
+
23
+/**
24
+ * 收费参数类
25
+ */
26
+export class PaymentFeeArguments {
27
+    private readonly _message: Message
28
+    private readonly _metadata: Map<string, any>
29
+
30
+    /**
31
+     * 构造函数
32
+     * @param message 通讯报文
33
+     */
34
+    constructor(message: Message) {
35
+        this._message = message
36
+        this._metadata = new Map<string, any>()
37
+    }
38
+
39
+    /**
40
+     * 获取通讯报文
41
+     */
42
+    public get Message(): Message {
43
+        return this._message
44
+    }
45
+
46
+    /**
47
+     * 获取元数据集合
48
+     */
49
+    public get Metadata(): Map<string, any> {
50
+        return this._metadata
51
+    }
52
+}
53
+
54
+// Vue组件封装
55
+export const usePaymentFeeContract = (impl: IPaymentFeeContract) => {
56
+    return {
57
+        CheckFee: (args: PaymentFeeArguments, isPaymentFee: { value: boolean }) => 
58
+            impl.CheckFee(args, isPaymentFee),
59
+        RaisePaymentFee: (args: PaymentFeeArguments) => 
60
+            impl.RaisePaymentFee(args)
61
+    }
62
+}

+ 33
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IPrintContract.cs View File

@@ -0,0 +1,33 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using TellerSystem.Communication;
6
+using TellerSystem.Contract.ContractBase;
7
+using Platform.Print;
8
+using TellerSystem.Contract.Entry;
9
+
10
+namespace TellerSystem.Contract.Contracts
11
+{
12
+    public interface IPrintContract
13
+    {
14
+        /// <summary>
15
+        /// 打印数据入口,定义打印所需的数据集合
16
+        /// </summary>
17
+        PrintEntry PrintData { get; }
18
+        /// <summary>
19
+        /// 加载打印数据,该方法由系统自动调用
20
+        /// </summary>
21
+        void LoadPrintData(); 
22
+    }
23
+
24
+    public interface IPrintFeeContract
25
+    {
26
+       
27
+        /// <summary>
28
+        /// 加载打印数据,该方法由系统自动调用
29
+        /// </summary>
30
+        void LoadPrint(string kjfl);
31
+    }
32
+ 
33
+}

+ 35
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IPrintContract.ts View File

@@ -0,0 +1,35 @@
1
+import type { PrintEntry } from './PrintEntry'
2
+
3
+/**
4
+ * 打印合约接口
5
+ */
6
+export interface IPrintContract {
7
+    /**
8
+     * 打印数据入口,定义打印所需的数据集合
9
+     */
10
+    readonly PrintData: PrintEntry
11
+
12
+    /**
13
+     * 加载打印数据,该方法由系统自动调用
14
+     */
15
+    LoadPrintData(): void
16
+}
17
+
18
+/**
19
+ * 打印收费合约接口
20
+ */
21
+export interface IPrintFeeContract {
22
+    /**
23
+     * 加载打印数据,该方法由系统自动调用
24
+     * @param kjfl 打印数据字符串
25
+     */
26
+    LoadPrint(kjfl: string): void
27
+}
28
+
29
+// Vue组件封装
30
+export const usePrintContract = () => {
31
+    return {
32
+        IPrintContract,
33
+        IPrintFeeContract
34
+    }
35
+}

+ 16
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IRecheckContract.cs View File

@@ -0,0 +1,16 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using TellerSystem.Contract.Entry;
6
+
7
+namespace TellerSystem.Contract.Contracts
8
+{
9
+    public interface IRecheckContract
10
+    {
11
+        /// <summary>
12
+        /// 授权入口
13
+        /// </summary>
14
+        List<RecheckEntry> RecheckEntries { get; }
15
+    }
16
+}

+ 18
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/IRecheckContract.ts View File

@@ -0,0 +1,18 @@
1
+import type { RecheckEntry } from './RecheckEntry'
2
+
3
+/**
4
+ * 复核合约接口
5
+ */
6
+export interface IRecheckContract {
7
+    /**
8
+     * 复核入口集合
9
+     */
10
+    RecheckEntries: RecheckEntry[]
11
+}
12
+
13
+// Vue组件封装
14
+export const useRecheckContract = () => {
15
+    return {
16
+        IRecheckContract
17
+    }
18
+}

+ 24
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/ISubmitContract.cs View File

@@ -0,0 +1,24 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using TellerSystem.Communication;
6
+using TellerSystem.Contract.Entry;
7
+
8
+namespace TellerSystem.Contract.Contracts
9
+{
10
+    /// <summary>
11
+    /// 提交契约
12
+    /// </summary>
13
+    public interface ISubmitContract
14
+    {
15
+        /// <summary>
16
+        /// 提交准备
17
+        /// </summary>
18
+        bool PreviewSubmitting(out Message message);
19
+        /// <summary>
20
+        /// 提交入口
21
+        /// </summary>
22
+        SubmitEntry SubmitEntry { get; }
23
+    }
24
+}

+ 26
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Contracts/ISubmitContract.ts View File

@@ -0,0 +1,26 @@
1
+import type { Message } from './Message'
2
+import type { SubmitEntry } from './SubmitEntry'
3
+
4
+/**
5
+ * 提交契约接口
6
+ */
7
+export interface ISubmitContract {
8
+    /**
9
+     * 提交准备
10
+     * @param message 输出参数,返回生成的报文
11
+     * @returns 准备是否成功
12
+     */
13
+    PreviewSubmitting(message: { value: Message | null }): boolean
14
+
15
+    /**
16
+     * 提交入口
17
+     */
18
+    readonly SubmitEntry: SubmitEntry
19
+}
20
+
21
+// Vue组合式API封装
22
+export const useSubmitContract = () => {
23
+    return {
24
+        ISubmitContract
25
+    }
26
+}

+ 190
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/AuthorizeEntry.cs View File

@@ -0,0 +1,190 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using TellerSystem.Contract.ContractBase;
6
+using TellerSystem.Communication;
7
+using TellerSystem.Library.Ext.Function;
8
+using TellerSystem.Library.Ext.TradeExtension;
9
+using TellerSystem.ServiceProxy.Ext.ServiceEntitys;
10
+using System.Windows;
11
+using TellerSystem.Contract.Contracts;
12
+using TellerSystem.Contract.Function;
13
+
14
+namespace TellerSystem.Contract.Entry
15
+{
16
+    /// <summary>
17
+    /// 授权逻辑入口
18
+    /// </summary>
19
+    public class AuthorizeEntry : EntryBase
20
+    {
21
+        #region 构造
22
+        /// <summary>
23
+        /// 授权触发器,允许绑定权限编码
24
+        /// </summary>
25
+        /// <param name="powerCode"></param>
26
+        public AuthorizeEntry(string powerCode = "0")
27
+        {
28
+            PowerCode = powerCode;
29
+        }
30
+        /// <summary>
31
+        /// 权限编号
32
+        /// </summary>
33
+        public string PowerCode { get; private set; }
34
+        #endregion
35
+
36
+        #region 事件
37
+        /// <summary>
38
+        /// 准备授权数据事件
39
+        /// </summary>
40
+        public event EventHandler<PreviewAuthorizeEventArgs> PreviewAuthorize;
41
+
42
+        /// <summary>
43
+        /// 准备授权数据事件参数
44
+        /// </summary>
45
+        public class PreviewAuthorizeEventArgs : EventArgs
46
+        {
47
+            #region 构造
48
+            public PreviewAuthorizeEventArgs()
49
+            {
50
+                this.CustomizePages = new List<byte[]>();
51
+            }
52
+
53
+            public PreviewAuthorizeEventArgs(PageBase page)
54
+                : this()
55
+            {
56
+                Page = page;
57
+            }
58
+            #endregion
59
+
60
+            #region 核心要素
61
+            /// <summary>
62
+            /// 借方账号
63
+            /// </summary>
64
+            public string DeAccount { get; set; }
65
+            /// <summary>
66
+            /// 贷方账号
67
+            /// </summary>
68
+            public string CrAccount { get; set; }
69
+            /// <summary>
70
+            /// 单笔金额
71
+            /// </summary>
72
+            public decimal SinAmt { get; set; }
73
+            /// <summary>
74
+            /// 现转标志:1-现金 2-转账
75
+            /// </summary>
76
+            public string CTSigns { get; set; }
77
+            /// <summary>
78
+            /// 操作类型
79
+            /// </summary>
80
+            public string OperationType { get; set; }
81
+
82
+            /// <summary>
83
+            /// 借方账户序号
84
+            /// </summary>
85
+            public string DeAccountSeqn { get; set; }
86
+
87
+            #endregion
88
+
89
+            #region 查询要素
90
+            /// <summary>
91
+            /// 登记账号
92
+            /// </summary>
93
+            public string EnrollAccount { get; set; }
94
+            /// <summary>
95
+            /// 登记账号户名
96
+            /// </summary>
97
+            public string EnrollAccountName { get; set; }
98
+            /// <summary>
99
+            /// 登记发生金额
100
+            /// </summary>
101
+            public decimal EnrollAmt { get; set; }
102
+            /// <summary>
103
+            /// 登记积数
104
+            /// </summary>
105
+            public decimal EnrollAccumulation { get; set; }
106
+            /// <summary>
107
+            /// 登记授权描述
108
+            /// </summary>
109
+            public string EnrollDescription { get; set; }
110
+            #endregion
111
+
112
+            #region 其他元素
113
+            /// <summary>
114
+            /// 检阅授权页面,若缺失则采集当前页面快照
115
+            /// </summary>
116
+            public List<byte[]> CustomizePages { get; private set; }
117
+            /// <summary>
118
+            /// 检阅授权报文,若缺失则根据系统环境决定
119
+            /// </summary>
120
+            public Message CustomizeMessage { get; set; }
121
+            /// <summary>
122
+            /// 当前页面元素
123
+            /// </summary>
124
+            public PageBase Page { get; private set; }
125
+            #endregion
126
+        }
127
+
128
+        /// <summary>
129
+        /// 远程授权成功后执行
130
+        /// </summary>
131
+        public event EventHandler RemoteAuthorized;
132
+        #endregion
133
+
134
+        #region 逻辑
135
+        /// <summary>
136
+        /// 执行授权操作
137
+        /// </summary>
138
+        /// <returns></returns>
139
+        public bool RaiseAuthorize()
140
+        {
141
+            if (PreviewAuthorize == null) return false;
142
+            var args = new PreviewAuthorizeEventArgs(PageData);
143
+            PreviewAuthorize(PageData, args);
144
+            //获取内部授权要素
145
+            var openBranch = string.Empty;
146
+            //TODO:20140422
147
+            AuthConditionElement authCondition = PageData.TradeAPIs.GetAuthElement(out openBranch, args.DeAccount, args.CrAccount, args.SinAmt.ToString(), args.CTSigns, args.OperationType, args.DeAccountSeqn);
148
+            var pages = new List<TellerSystem.ServiceProxy.Ext.ServiceEntitys.PageData>();
149
+            if (args.CustomizePages.Count > 0)
150
+            {
151
+                for (int i = 0; i < args.CustomizePages.Count; i++)
152
+                {
153
+                    pages.Add(new ServiceProxy.Ext.ServiceEntitys.PageData { index = i + 1, datas = args.CustomizePages[i] });
154
+                }
155
+            }
156
+            else
157
+            {
158
+                pages.Add(new ServiceProxy.Ext.ServiceEntitys.PageData { index = 1, datas = args.Page.SaveTradePage((FrameworkElement)args.Page.Content) });
159
+            }
160
+            var authManager = new AuthManager();
161
+            //TODO:暂时写死,该部分效果需要优化
162
+            authManager.AsksuperResultMessage += (result, dataBus) =>
163
+            {
164
+                //授权结果呈现
165
+                switch (result)
166
+                {
167
+                    case AsksuperResultType.Success:
168
+                        //args.Page.TradeAPIs.ShowInfoMessageBox("授权已经通过,将提交交易");
169
+                        AuthDataHelper authdata = new AuthDataHelper(PageData);
170
+                        //远程授权,需提交
171
+                        if (authdata.AuthWay.Equals("remote") && RemoteAuthorized != null)
172
+                        {
173
+                            RemoteAuthorized(this, new EventArgs());
174
+                        }
175
+                        break;
176
+                    case AsksuperResultType.Failed:
177
+                        args.Page.TradeAPIs.ShowInfoMessageBox("授权没有通过");
178
+                        break;
179
+                    case AsksuperResultType.Undo:
180
+                        args.Page.TradeAPIs.ShowInfoMessageBox("授权已撤销");
181
+                        break;
182
+                    default:
183
+                        break;
184
+                }
185
+            };
186
+            return authManager.DoAuth(PageData, authCondition, args.CustomizeMessage ?? MessageData, pages.ToArray(), PowerCode, args.EnrollAccount, args.EnrollAmt.ToString(), args.EnrollAccumulation.ToString(), args.EnrollAccountName, args.EnrollDescription, openBranch);
187
+        }
188
+        #endregion
189
+    }
190
+}

+ 160
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/AuthorizeEntry.ts View File

@@ -0,0 +1,160 @@
1
+import { reactive, ref } from 'vue'
2
+import type { PageBase } from '../ContractBase/PageBase'
3
+import type { Message } from '../Communication/Message'
4
+import type { AuthConditionElement } from '../ServiceProxy/Ext/ServiceEntitys'
5
+import { AuthDataHelper } from '../ContractBase/AuthDataHelper'
6
+import { EntryBase } from '../ContractBase/EntryBase'
7
+
8
+/**
9
+ * 授权逻辑入口
10
+ */
11
+export class AuthorizeEntry extends EntryBase {
12
+    private readonly _powerCode: string
13
+
14
+    /**
15
+     * 授权触发器,允许绑定权限编码
16
+     * @param powerCode 权限编码
17
+     */
18
+    constructor(powerCode: string = "0") {
19
+        super()
20
+        this._powerCode = powerCode
21
+    }
22
+
23
+    /**
24
+     * 权限编号
25
+     */
26
+    public get PowerCode(): string {
27
+        return this._powerCode
28
+    }
29
+
30
+    /**
31
+     * 准备授权数据事件
32
+     */
33
+    public PreviewAuthorize?: (sender: PageBase, args: PreviewAuthorizeEventArgs) => void
34
+
35
+    /**
36
+     * 远程授权成功后执行
37
+     */
38
+    public RemoteAuthorized?: () => void
39
+
40
+    /**
41
+     * 执行授权操作
42
+     * @returns 授权是否成功
43
+     */
44
+    public RaiseAuthorize(): boolean {
45
+        if (!this.PreviewAuthorize) return false
46
+
47
+        const args = new PreviewAuthorizeEventArgs(this.PageData)
48
+        this.PreviewAuthorize(this.PageData, args)
49
+
50
+        // 获取内部授权要素
51
+        const openBranch = ref('')
52
+        const authCondition = this.PageData.TradeAPIs.GetAuthElement(
53
+            openBranch.value,
54
+            args.DeAccount,
55
+            args.CrAccount,
56
+            args.SinAmt.toString(),
57
+            args.CTSigns,
58
+            args.OperationType,
59
+            args.DeAccountSeqn
60
+        )
61
+
62
+        const pages = args.CustomizePages.length > 0
63
+            ? args.CustomizePages.map((data, index) => ({
64
+                index: index + 1,
65
+                datas: data
66
+            }))
67
+            : [{
68
+                index: 1,
69
+                datas: this.PageData.SaveTradePage(this.PageData.Content)
70
+            }]
71
+
72
+        const authManager = new AuthManager()
73
+        authManager.AsksuperResultMessage = (result, dataBus) => {
74
+            switch (result) {
75
+                case AsksuperResultType.Success:
76
+                    if (new AuthDataHelper(this.PageData).AuthWay === "remote" && this.RemoteAuthorized) {
77
+                        this.RemoteAuthorized()
78
+                    }
79
+                    break
80
+                case AsksuperResultType.Failed:
81
+                    this.PageData.TradeAPIs.ShowInfoMessageBox("授权没有通过")
82
+                    break
83
+                case AsksuperResultType.Undo:
84
+                    this.PageData.TradeAPIs.ShowInfoMessageBox("授权已撤销")
85
+                    break
86
+            }
87
+        }
88
+
89
+        return authManager.DoAuth(
90
+            this.PageData,
91
+            authCondition,
92
+            args.CustomizeMessage ?? this.MessageData,
93
+            pages,
94
+            this.PowerCode,
95
+            args.EnrollAccount,
96
+            args.EnrollAmt.toString(),
97
+            args.EnrollAccumulation.toString(),
98
+            args.EnrollAccountName,
99
+            args.EnrollDescription,
100
+            openBranch.value
101
+        )
102
+    }
103
+}
104
+
105
+/**
106
+ * 准备授权数据事件参数
107
+ */
108
+export class PreviewAuthorizeEventArgs {
109
+    public CustomizePages: Uint8Array[] = []
110
+    public CustomizeMessage: Message | null = null
111
+    public readonly Page: PageBase
112
+
113
+    constructor(page: PageBase) {
114
+        this.Page = page
115
+    }
116
+
117
+    // 核心要素
118
+    public DeAccount: string = ''
119
+    public CrAccount: string = ''
120
+    public SinAmt: number = 0
121
+    public CTSigns: string = ''
122
+    public OperationType: string = ''
123
+    public DeAccountSeqn: string = ''
124
+
125
+    // 查询要素
126
+    public EnrollAccount: string = ''
127
+    public EnrollAccountName: string = ''
128
+    public EnrollAmt: number = 0
129
+    public EnrollAccumulation: number = 0
130
+    public EnrollDescription: string = ''
131
+}
132
+
133
+// Vue组件封装
134
+export const useAuthorizeEntry = (powerCode: string = "0") => {
135
+    return reactive(new AuthorizeEntry(powerCode))
136
+}
137
+
138
+// 辅助类型
139
+enum AsksuperResultType {
140
+    Success,
141
+    Failed,
142
+    Undo
143
+}
144
+
145
+interface AuthManager {
146
+    AsksuperResultMessage?: (result: AsksuperResultType, dataBus: any) => void
147
+    DoAuth: (
148
+        page: PageBase,
149
+        authCondition: AuthConditionElement,
150
+        message: Message | null,
151
+        pages: Array<{ index: number, datas: Uint8Array }>,
152
+        powerCode: string,
153
+        enrollAccount: string,
154
+        enrollAmt: string,
155
+        enrollAccumulation: string,
156
+        enrollAccountName: string,
157
+        enrollDescription: string,
158
+        openBranch: string
159
+    ) => boolean
160
+}

+ 239
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/CashCodeEntry.cs View File

@@ -0,0 +1,239 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using TellerSystem.Contract.ContractBase;
6
+using Newtonsoft.Json;
7
+using TellerSystem.Library.Ext.Function;
8
+using Platform.Presentation.PageFunctions;
9
+using Platform.Presentation.Interfaces;
10
+using Platform.Library;
11
+
12
+namespace TellerSystem.Contract.Entry
13
+{
14
+    public class CashCodeEntry : EntryBase
15
+    {
16
+        #region static
17
+        private const string _action_ = "Trade.OperationManage.CASHVIEWER";
18
+
19
+        public static bool Enabled { get; private set; }
20
+
21
+        public static string lastendTime;
22
+
23
+        public static List<CashCodeEntry.BizItem> History { get; private set; }
24
+        static CashCodeEntry()
25
+        {
26
+            Enabled = ServiceProxy.Ext.ServiceSettings.GetConfig("CashCodeManage", false);
27
+            History = new List<CashCodeEntry.BizItem>();
28
+        }
29
+
30
+        public static bool Init(IPage target)
31
+        {
32
+            if (!Enabled) return true;
33
+            var flag = false;
34
+            try
35
+            {
36
+                //初始化点钞机节点程序
37
+                dynamic page = PageFactory.CreatePage(_action_);
38
+                while (true)
39
+                {
40
+                    target.OwnerContainer.ModalInvoke(() =>
41
+                    {
42
+                        flag = page.InitDevice();
43
+                    }, "链接冠字号设备,请稍候...");
44
+                    if (flag)
45
+                        break;
46
+                    var i = target.ShowComfirmBox("链接冠字号设备失败,是否重试?", new string[] { "重试", "关闭功能", "稍后处理" });
47
+                    if (i == 2) Enabled = false;
48
+                    if (i != 1) break;
49
+                }
50
+            }
51
+            catch (Exception ex)
52
+            {
53
+                Platform.Common.LogSystem.PlatformLogger.SystemErrorInfo("CashCodeEntry.InitDevice:发生异常!", ex);
54
+                //throw new InvalidOperationException("初始化现金冠字号程序失败!");
55
+            }
56
+            return flag;
57
+        }
58
+        #endregion
59
+
60
+        #region ctor
61
+        /// <summary>
62
+        /// 构造函数
63
+        /// </summary>
64
+        public CashCodeEntry()
65
+        {
66
+            Item = new BizItem();
67
+            Item.StartTime = DateTime.Now;
68
+        }
69
+
70
+        /// <summary>
71
+        /// 业务类型
72
+        /// </summary>
73
+        public enum BizType
74
+        {
75
+            /// <summary>
76
+            /// 存款业务
77
+            /// </summary>
78
+            Deposit = 0,
79
+            /// <summary>
80
+            /// 取款业务
81
+            /// </summary>
82
+            Withdrawal = 1,
83
+            /// <summary>
84
+            /// 残缺币兑换
85
+            /// </summary>
86
+            Incomplete = 4,
87
+            /// <summary>
88
+            /// 假币收缴
89
+            /// </summary>
90
+            Counterfeit = 5,
91
+            /// <summary>
92
+            /// 其他
93
+            /// </summary>
94
+            Other = 6,
95
+        }
96
+
97
+        public class BizItem
98
+        {
99
+            /// <summary>
100
+            /// 业务开始办理时间
101
+            /// </summary>
102
+            public DateTime? StartTime { get; internal set; }
103
+            /// <summary>
104
+            /// 业务结束办理时间
105
+            /// </summary>
106
+            public DateTime? EndTime { get; internal set; }
107
+
108
+            /// <summary>
109
+            /// 业务类型
110
+            /// </summary>
111
+            public BizType Biz { get; internal set; }
112
+
113
+            /// <summary>
114
+            /// 交易卡号
115
+            /// </summary>
116
+            public string CardNo { get; internal set; }
117
+
118
+            /// <summary>
119
+            /// 用户名称
120
+            /// </summary>
121
+            public string UserName { get; internal set; }
122
+
123
+            /// <summary>
124
+            /// 交易金额
125
+            /// </summary>
126
+            public decimal Money { get; internal set; }
127
+
128
+            /// <summary>
129
+            /// 柜面交易码
130
+            /// </summary>
131
+            public string TxCode { get; internal set; }
132
+
133
+            /// <summary>
134
+            /// 交易流水
135
+            /// </summary>
136
+            public string SerialNo { get; internal set; }
137
+        }
138
+
139
+        public class MyBizItem : BizItem
140
+        {
141
+            public void MyMethod(DateTime startTime, DateTime endTime, BizType biz, string cardNo, string userName, decimal money, string txCode, string serialNo)
142
+            {
143
+                this.StartTime = startTime;
144
+                this.EndTime = endTime;
145
+                this.Biz = biz;
146
+                this.CardNo = cardNo;
147
+                this.UserName = userName;
148
+                this.Money = money;
149
+                this.TxCode = txCode;
150
+                this.SerialNo = serialNo;
151
+            }
152
+        }
153
+
154
+        /// <summary>
155
+        /// 预处理时的柜员钱箱余额
156
+        /// </summary>
157
+        public Dictionary<string, decimal> Bals2Init { get; private set; }
158
+
159
+        /// <summary>
160
+        /// 当前处理的Item对象
161
+        /// </summary>
162
+        public BizItem Item { get; private set; }
163
+
164
+        /// <summary>
165
+        /// 预处理
166
+        /// </summary>
167
+        /// <param name="cardNo"></param>
168
+        /// <param name="userName"></param>
169
+        /// <param name="biz"></param>
170
+        /// <returns></returns>
171
+        internal bool Preview(string cardNo, string userName, BizType biz)
172
+        {
173
+            if (!Enabled) return true;
174
+            if (!string.IsNullOrEmpty(TradeBus["__StartTime__"]))
175
+                Item.StartTime = DateTime.ParseExact(TradeBus["__StartTime__"], "yyyyMMddHHmmss", null);
176
+            this.Item.CardNo = cardNo;
177
+            this.Item.UserName = userName;
178
+            this.Item.Biz = biz;
179
+            this.Item.TxCode = PageData.TradeModel.Code;
180
+            var dict = new Dictionary<string, string>();
181
+            //登记入库
182
+            //if (PageData.TradeAPIs.TraderecordsExp("CashCodeEntry", JsonConvert.SerializeObject(dict)))
183
+            //{
184
+            var current = PageData.GetTellerBalanceMoney();
185
+            if (current != null)
186
+            {
187
+                Bals2Init = current;
188
+                //打印后触发
189
+                PageData.PagePrinted -= PageData_PagePrinted;
190
+                PageData.PagePrinted += PageData_PagePrinted;
191
+                return true;
192
+            }
193
+            //}
194
+            return false;
195
+        }
196
+
197
+        void PageData_PagePrinted(object sender, PageBase.PagePrintedEventArgs e)
198
+        {
199
+            Proc(e.PrintAttr.SerialNumber);
200
+        }
201
+
202
+        /// <summary>
203
+        /// 业务处理
204
+        /// </summary>
205
+        void Proc(string serialNo)
206
+        {
207
+            if (!Enabled) return;
208
+            //未调用Preview,不触发
209
+            if (Bals2Init == null) return;
210
+            this.Item.SerialNo = serialNo;
211
+            this.Item.EndTime = DateTime.Now;
212
+            //检查余额变化,目前仅检测人民币
213
+            var current = PageData.GetTellerBalanceMoney();
214
+            this.Item.Money = current["01"] - Bals2Init["01"];
215
+            if (this.Item.Money != 0 || this.Item.Biz == BizType.Counterfeit)//假币收缴业务不会影响钱箱
216
+            {
217
+                //History.Add(this.Item);
218
+                while (true)
219
+                {
220
+                    //提示处理
221
+                    //if (PageData.TradeAPIs.ShowQuestionMessageBox("本次交易存在现金处理,是否进行现金冠字号处理?\n是:立即提交\n否:等待下一笔业务提交") == System.Windows.MessageBoxResult.No)
222
+                    //    break;
223
+                    var key = this.TradeAPIs.ShowComfirmBox("本次交易存在现金处理,是否进行现金冠字号处理?\n", "立即提交", "等待下一笔业务提交", "该交易无点钞操作无需处理");
224
+                    if (key == 3) break;
225
+                    History.Add(this.Item);
226
+                    if (key != 1) break;
227
+
228
+                    //弹窗处理业务
229
+                    var guid = PageData.OpenTradePage(_action_, TradePageExtension.OpenOptions.Dialog, new Dictionary<string, object> { { "STATUS_CASHVIEWER", "init" }, }, null, "现金业务-冠字号管理");
230
+                    var status = (string)PageData.ViewStateData["STATUS_CASHVIEWER"];
231
+                    //已提交或取消,跳出循环
232
+                    if (status == "commit" || status == "cancel")
233
+                        break;
234
+                }
235
+            }
236
+        }
237
+        #endregion
238
+    }
239
+}

+ 143
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/CashCodeEntry.ts View File

@@ -0,0 +1,143 @@
1
+import { ref, reactive } from 'vue'
2
+import { useTradeAPIs } from '@/composables/useTradeAPIs'
3
+import { usePlatformLogger } from '@/composables/usePlatformLogger'
4
+import { usePageFactory } from '@/composables/usePageFactory'
5
+import { useTradeBus } from '@/composables/useTradeBus'
6
+
7
+/**
8
+ * 现金冠字号管理入口
9
+ */
10
+export class CashCodeEntry {
11
+  private static readonly ACTION = 'Trade.OperationManage.CASHVIEWER'
12
+  private static enabled = ref(false)
13
+  private static lastEndTime = ref('')
14
+  private static history = reactive<BizItem[]>([])
15
+
16
+  private item = reactive<BizItem>({
17
+    startTime: new Date(),
18
+    endTime: null,
19
+    biz: BizType.Other,
20
+    cardNo: '',
21
+    userName: '',
22
+    money: 0,
23
+    txCode: '',
24
+    serialNo: ''
25
+  })
26
+
27
+  private bals2Init = reactive<Record<string, number>>({})
28
+
29
+  /**
30
+   * 初始化点钞机节点程序
31
+   */
32
+  public static async init(target: any): Promise<boolean> {
33
+    if (!this.enabled.value) return true
34
+
35
+    let flag = false
36
+    try {
37
+      const page = usePageFactory().createPage(this.ACTION)
38
+      while (true) {
39
+        flag = await target.ownerContainer.modalInvoke(() => page.initDevice(), '链接冠字号设备,请稍候...')
40
+        if (flag) break
41
+
42
+        const result = await target.showComfirmBox('链接冠字号设备失败,是否重试?', ['重试', '关闭功能', '稍后处理'])
43
+        if (result === 2) this.enabled.value = false
44
+        if (result !== 1) break
45
+      }
46
+    } catch (ex) {
47
+      usePlatformLogger().systemErrorInfo('CashCodeEntry.InitDevice:发生异常!', ex)
48
+    }
49
+    return flag
50
+  }
51
+
52
+  /**
53
+   * 预处理
54
+   */
55
+  public preview(cardNo: string, userName: string, biz: BizType): boolean {
56
+    if (!CashCodeEntry.enabled.value) return true
57
+
58
+    if (useTradeBus().get('__StartTime__')) {
59
+      this.item.startTime = new Date(useTradeBus().get('__StartTime__'))
60
+    }
61
+
62
+    this.item.cardNo = cardNo
63
+    this.item.userName = userName
64
+    this.item.biz = biz
65
+    this.item.txCode = useTradeAPIs().tradeModel.code
66
+
67
+    const current = useTradeAPIs().getTellerBalanceMoney()
68
+    if (current) {
69
+      Object.assign(this.bals2Init, current)
70
+      useTradeAPIs().onPagePrinted(this.handlePagePrinted)
71
+      return true
72
+    }
73
+    return false
74
+  }
75
+
76
+  /**
77
+   * 业务处理
78
+   */
79
+  private proc(serialNo: string): void {
80
+    if (!CashCodeEntry.enabled.value || !this.bals2Init) return
81
+
82
+    this.item.serialNo = serialNo
83
+    this.item.endTime = new Date()
84
+    const current = useTradeAPIs().getTellerBalanceMoney()
85
+    this.item.money = current['01'] - this.bals2Init['01']
86
+
87
+    if (this.item.money !== 0 || this.item.biz === BizType.Counterfeit) {
88
+      while (true) {
89
+        const key = useTradeAPIs().showComfirmBox(
90
+          '本次交易存在现金处理,是否进行现金冠字号处理?\n',
91
+          '立即提交',
92
+          '等待下一笔业务提交',
93
+          '该交易无点钞操作无需处理'
94
+        )
95
+
96
+        if (key === 3) break
97
+        CashCodeEntry.history.push({ ...this.item })
98
+
99
+        if (key !== 1) break
100
+
101
+        const guid = useTradeAPIs().openTradePage(
102
+          CashCodeEntry.ACTION,
103
+          'Dialog',
104
+          { STATUS_CASHVIEWER: 'init' },
105
+          null,
106
+          '现金业务-冠字号管理'
107
+        )
108
+
109
+        const status = useTradeAPIs().viewStateData['STATUS_CASHVIEWER']
110
+        if (status === 'commit' || status === 'cancel') break
111
+      }
112
+    }
113
+  }
114
+
115
+  private handlePagePrinted = (e: any): void => {
116
+    this.proc(e.printAttr.serialNumber)
117
+  }
118
+}
119
+
120
+/**
121
+ * 业务类型
122
+ */
123
+export enum BizType {
124
+  Deposit = 0,
125
+  Withdrawal = 1,
126
+  Incomplete = 4,
127
+  Counterfeit = 5,
128
+  Other = 6
129
+}
130
+
131
+/**
132
+ * 业务项
133
+ */
134
+export interface BizItem {
135
+  startTime: Date | null
136
+  endTime: Date | null
137
+  biz: BizType
138
+  cardNo: string
139
+  userName: string
140
+  money: number
141
+  txCode: string
142
+  serialNo: string
143
+}

+ 1191
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/PaperlessEntry.cs
File diff suppressed because it is too large
View File


+ 23
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/PrintEntry.cs View File

@@ -0,0 +1,23 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using TellerSystem.Contract.ContractBase;
6
+
7
+namespace TellerSystem.Contract.Entry
8
+{
9
+    /// <summary>
10
+    /// 打印数据入口
11
+    /// </summary>
12
+    public abstract class PrintEntry : EntryBase
13
+    {
14
+        /// <summary>
15
+        /// 批量打印标志
16
+        /// </summary>
17
+        public bool IsBatchPrint { get; set; }
18
+        /// <summary>
19
+        /// 批量打印清单
20
+        /// </summary>
21
+        public List<Platform.Print.PrintContainer> BatchList { get; set; }
22
+    }
23
+}

+ 24
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/PrintEntry.ts View File

@@ -0,0 +1,24 @@
1
+import { EntryBase } from '../ContractBase/EntryBase'
2
+import type { PrintContainer } from '../../Platform/Print/PrintContainer'
3
+
4
+/**
5
+ * 打印数据入口(抽象类)
6
+ */
7
+export abstract class PrintEntry extends EntryBase {
8
+    /**
9
+     * 批量打印标志
10
+     */
11
+    public IsBatchPrint: boolean = false
12
+
13
+    /**
14
+     * 批量打印清单
15
+     */
16
+    public BatchList: PrintContainer[] = []
17
+}
18
+
19
+// Vue组合式API封装
20
+export const usePrintEntry = () => {
21
+    return {
22
+        PrintEntry
23
+    }
24
+}

+ 139
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/PrintflowEntry.cs View File

@@ -0,0 +1,139 @@
1
+using System.Collections.Generic;
2
+using Platform.Library;
3
+using Platform.Print;
4
+using TellerSystem.Contract.ContractBase;
5
+using TellerSystem.Contract.Contracts;
6
+using TellerSystem.Library.Ext.Function;
7
+using System.Windows.Controls;
8
+using System.Windows.Controls.Primitives;
9
+using TellerSystem.Contract.Function;
10
+using TellerSystem.ServiceProxy.Ext.ServiceEntitys;
11
+using Platform.Common.RunningParameters;
12
+using TellerSystem.ServiceProxy.Ext.ServiceHelper;
13
+using System.Windows;
14
+using TellerSystem.Library.Ext.TradeExtension;
15
+using TellerSystem.PrintTemplate.Extension;
16
+using TellerSystem.PrintTemplate.PrintTemplateData;
17
+using System;
18
+using Platform.Common.LogSystem;
19
+using TellerSystem.Communication;
20
+using System.Text;
21
+using TellerSystem.Communication.SocketListener;
22
+using System.Linq;
23
+using TellerSystem.ServiceProxy.Ext.TradeBusinessEntitys;
24
+using TellerSystem.ServiceProxy.Ext;
25
+using System.Diagnostics;
26
+
27
+namespace TellerSystem.Contract.Entry
28
+{
29
+    /// <summary>
30
+    /// 打印逻辑入口
31
+    /// </summary>
32
+    public abstract class PrintflowEntry : EntryBase
33
+    {
34
+        #region 抽象方法
35
+        /// <summary>
36
+        /// 创建打印列表,抽象成交易自身定制
37
+        /// </summary>
38
+        /// <returns></returns>
39
+        public abstract List<PrintContainer> GeneratePrintList();
40
+
41
+        /// <summary>
42
+        /// 预处理过程
43
+        /// </summary>
44
+        /// <returns></returns>
45
+        public abstract bool PreviewPrintflow();
46
+        #endregion
47
+
48
+        protected override bool OnLoadData(bool changed)
49
+        {
50
+            //触发无纸化操作
51
+            return PageData.TradeAPIs.RaisePaperless(MessageData);
52
+        }
53
+
54
+        #region 控制
55
+        /// <summary>
56
+        /// 触发打印流程
57
+        /// </summary>
58
+        /// <param name="stash"></param>
59
+        /// <returns></returns>
60
+        internal bool RaisePrintflow(bool stash = true)
61
+        {
62
+            var flow = this;
63
+            var page = flow.PageData;
64
+            var message = flow.MessageData;
65
+            try
66
+            {
67
+                //stash数据
68
+                if (stash)
69
+                {
70
+                    if (!StashPrintData())
71
+                        return false;
72
+                }
73
+                //主流程执行,产生打印清单
74
+                var printList = flow.GeneratePrintList();
75
+                if (printList.Count == 0)
76
+                    return true;
77
+                return ContractManager.RaisePrint(page, message, printList);
78
+            }
79
+            catch (Exception ex)
80
+            {
81
+                page.TradeAPIs.ShowErrorMessageBox("RaisePrintflow:创建打印清单发生异常!\n" + ex.Message);
82
+                PlatformLogger.SystemErrorInfo("RaisePrintflow:创建打印清单发生异常!", ex);
83
+                return false;
84
+            }
85
+        }
86
+
87
+        /// <summary>
88
+        /// 存储页面打印信息,以系统流水作为key
89
+        /// </summary>
90
+        /// <returns></returns>
91
+        protected bool StashPrintData()
92
+        {
93
+            if (!this.PageData.CheckLoginStatus()) return false;
94
+            //触发存储,异步操作
95
+            StashPage();
96
+            //执行预处理
97
+            return PreviewPrintflow();
98
+        }
99
+
100
+        /// <summary>
101
+        /// 内部登记实现
102
+        /// </summary>
103
+        private void StashPage()
104
+        {
105
+            try
106
+            {
107
+                //开关检查
108
+                if (!ServiceSettings.IsRecordPrintData)
109
+                    return;
110
+                //存入到总线自定义项中
111
+                var id = PageData.TradeInfo.SystemSerialNumber;
112
+                var message = MessageData;
113
+                if (message != null)
114
+                {
115
+                    message.IsMainTrade = true;
116
+                    message.SerialNumber = id;
117
+                }
118
+                //流程对象存入到总线,方便后续恢复使用
119
+                PageData.TradeBus["PrintflowEntry"] = this.GetType().ToString();
120
+                //上送数据
121
+                var dll = Platform.Common.RunningParameters.PlatformSettings.PagesDirectory + @"\" + PageData.GetType().Assembly.GetName().Name + ".dll";
122
+                var fullName = PageData.GetType().ToString();
123
+                var printAttr = PageData.GetPrintAttributes();
124
+                string json = printAttr.Serialize();
125
+                string bus = Platform.ServiceProxy.CommonFunction.ChangeDicToStr((Dictionary<string, string>)PageData.GetTradeInfoData().TradeBus.Serialize());  //序列化总线数据
126
+                //异步触发,防止产生性能影响
127
+                new Action(() =>
128
+                {
129
+                    PrintManagerHandle.RecordPrintExt(id, dll, fullName, json, bus);
130
+                }).BeginInvoke(null, null);
131
+            }
132
+            catch (Exception ex)
133
+            {
134
+                PlatformLogger.SystemErrorInfo("StashPage:保存页面信息发生异常!", ex);
135
+            }
136
+        }
137
+        #endregion
138
+    }
139
+}

+ 130
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/PrintflowEntry.ts View File

@@ -0,0 +1,130 @@
1
+import { EntryBase } from '../ContractBase/EntryBase'
2
+import type { PrintContainer } from '../../Platform/Print/PrintContainer'
3
+import type { Message } from '../../Communication/Message'
4
+import { ContractManager } from '../Contracts/ContractManager'
5
+import { PlatformLogger } from '../../Platform/Common/LogSystem'
6
+
7
+/**
8
+ * 打印逻辑入口(抽象类)
9
+ */
10
+export abstract class PrintflowEntry extends EntryBase {
11
+    /**
12
+     * 创建打印列表,抽象成交易自身定制
13
+     */
14
+    public abstract GeneratePrintList(): PrintContainer[]
15
+
16
+    /**
17
+     * 预处理过程
18
+     */
19
+    public abstract PreviewPrintflow(): boolean
20
+
21
+    protected override OnLoadData(changed: boolean): boolean {
22
+        // 触发无纸化操作
23
+        return this.PageData.TradeAPIs.RaisePaperless(this.MessageData)
24
+    }
25
+
26
+    /**
27
+     * 触发打印流程
28
+     * @param stash 是否存储打印数据
29
+     */
30
+    internal RaisePrintflow(stash: boolean = true): boolean {
31
+        const flow = this
32
+        const page = flow.PageData
33
+        const message = flow.MessageData
34
+        
35
+        try {
36
+            // stash数据
37
+            if (stash && !this.StashPrintData()) {
38
+                return false
39
+            }
40
+
41
+            // 主流程执行,产生打印清单
42
+            const printList = flow.GeneratePrintList()
43
+            if (printList.length === 0) {
44
+                return true
45
+            }
46
+
47
+            return ContractManager.RaisePrint(page, message, printList)
48
+        } catch (ex) {
49
+            page.TradeAPIs.ShowErrorMessageBox(`RaisePrintflow:创建打印清单发生异常!\n${ex.message}`)
50
+            PlatformLogger.SystemErrorInfo("RaisePrintflow:创建打印清单发生异常!", ex)
51
+            return false
52
+        }
53
+    }
54
+
55
+    /**
56
+     * 存储页面打印信息,以系统流水作为key
57
+     */
58
+    protected StashPrintData(): boolean {
59
+        if (!this.PageData.CheckLoginStatus()) return false
60
+        
61
+        // 触发存储,异步操作
62
+        this.StashPage()
63
+        
64
+        // 执行预处理
65
+        return this.PreviewPrintflow()
66
+    }
67
+
68
+    /**
69
+     * 内部登记实现
70
+     */
71
+    private StashPage(): void {
72
+        try {
73
+            // 开关检查
74
+            if (!ServiceSettings.IsRecordPrintData) {
75
+                return
76
+            }
77
+
78
+            // 存入到总线自定义项中
79
+            const id = this.PageData.TradeInfo.SystemSerialNumber
80
+            const message = this.MessageData
81
+            
82
+            if (message) {
83
+                message.IsMainTrade = true
84
+                message.SerialNumber = id
85
+            }
86
+
87
+            // 流程对象存入到总线,方便后续恢复使用
88
+            this.PageData.TradeBus["PrintflowEntry"] = this.constructor.name
89
+
90
+            // 上送数据
91
+            const dll = `${PlatformSettings.PagesDirectory}\\${this.PageData.constructor.name}.dll`
92
+            const fullName = this.PageData.constructor.name
93
+            const printAttr = this.PageData.GetPrintAttributes()
94
+            const json = printAttr.Serialize()
95
+            const bus = CommonFunction.ChangeDicToStr(this.PageData.GetTradeInfoData().TradeBus.Serialize())
96
+
97
+            // 异步触发,防止产生性能影响
98
+            setTimeout(() => {
99
+                PrintManagerHandle.RecordPrintExt(id, dll, fullName, json, bus)
100
+            }, 0)
101
+            
102
+        } catch (ex) {
103
+            PlatformLogger.SystemErrorInfo("StashPage:保存页面信息发生异常!", ex)
104
+        }
105
+    }
106
+}
107
+
108
+// Vue组合式API封装
109
+export const usePrintflowEntry = () => {
110
+    return {
111
+        PrintflowEntry
112
+    }
113
+}
114
+
115
+// 辅助类型
116
+interface ServiceSettings {
117
+    IsRecordPrintData: boolean
118
+}
119
+
120
+interface PlatformSettings {
121
+    PagesDirectory: string
122
+}
123
+
124
+interface CommonFunction {
125
+    ChangeDicToStr(dict: Record<string, string>): string
126
+}
127
+
128
+interface PrintManagerHandle {
129
+    RecordPrintExt(id: string, dll: string, fullName: string, json: string, bus: string): void
130
+}

+ 213
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/RecheckEntry.cs View File

@@ -0,0 +1,213 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using TellerSystem.Contract.ContractBase;
6
+using TellerSystem.Communication;
7
+using TellerSystem.Library.Ext.TradeExtension;
8
+using Platform.Common.BasicFunctions;
9
+using Platform.Presentation.PagesHelper;
10
+using TellerSystem.Contract.Contracts;
11
+using TellerSystem.Contract.Function;
12
+
13
+namespace TellerSystem.Contract.Entry
14
+{
15
+    /// <summary>
16
+    /// 复核逻辑入口
17
+    /// </summary>
18
+    public class RecheckEntry : EntryBase
19
+    {
20
+        #region 构造
21
+        /// <summary>
22
+        /// 授权触发器,允许绑定权限编码
23
+        /// </summary>
24
+        /// <param name="powerCode"></param>
25
+        public RecheckEntry(string powerCode)
26
+        {
27
+            PowerCode = powerCode;
28
+        }
29
+        /// <summary>
30
+        /// 权限编号
31
+        /// </summary>
32
+        public string PowerCode { get; private set; }
33
+        #endregion
34
+
35
+        #region 事件
36
+        /// <summary>
37
+        /// 准备授权数据事件
38
+        /// </summary>
39
+        public event EventHandler<PreviewRecheckEventArgs> PreviewRecheck;
40
+        /// <summary>
41
+        /// 准备复核数据事件参数
42
+        /// </summary>
43
+        public class PreviewRecheckEventArgs : EventArgs
44
+        {
45
+            #region 构造
46
+            public PreviewRecheckEventArgs(PageBase page)
47
+            {
48
+                Page = page;
49
+            }
50
+            #endregion
51
+
52
+            #region 复核条件要素
53
+            /// <summary>
54
+            /// 账户
55
+            /// </summary>
56
+            public string Account { get; set; }
57
+            /// <summary>
58
+            /// 金额
59
+            /// </summary>
60
+            public decimal Amt { get; set; }
61
+            #endregion
62
+
63
+            #region 复核条件-核心要素
64
+            /// <summary>
65
+            /// 借方账号
66
+            /// </summary>
67
+            public string DeAccount { get; set; }
68
+            /// <summary>
69
+            /// 贷方账号
70
+            /// </summary>
71
+            public string CrAccount { get; set; }
72
+            /// <summary>
73
+            /// 单笔金额
74
+            /// </summary>
75
+            public decimal SinAmt { get; set; }
76
+            /// <summary>
77
+            /// 现转标志:1-现金 2-转账
78
+            /// </summary>
79
+            public string CTSigns { get; set; }
80
+            /// <summary>
81
+            /// 操作类型
82
+            /// </summary>
83
+            public string OperationType { get; set; }
84
+
85
+            /// <summary>
86
+            /// 借方账户序号
87
+            /// </summary>
88
+            public string DeAccountSeqn { get; set; }
89
+
90
+            #endregion
91
+
92
+            #region 查询要素
93
+            /// <summary>
94
+            /// 登记账号
95
+            /// </summary>
96
+            public string EnrollAccount { get; set; }
97
+            /// <summary>
98
+            /// 登记账号户名
99
+            /// </summary>
100
+            public string EnrollAccountName { get; set; }
101
+            /// <summary>
102
+            /// 登记发生金额
103
+            /// </summary>
104
+            public decimal EnrollAmt { get; set; }
105
+            /// <summary>
106
+            /// 登记授权描述
107
+            /// </summary>
108
+            public string EnrollDescription { get; set; }
109
+            #endregion
110
+
111
+            #region 其他元素
112
+            /// <summary>
113
+            /// 检阅复核页面,若缺失则采集当前页面快照
114
+            /// </summary>
115
+            public List<byte[]> CustomizePages { get; private set; }
116
+            /// <summary>
117
+            /// 检阅复核报文,若缺失则根据系统环境决定
118
+            /// </summary>
119
+            public Message CustomizeMessage { get; set; }
120
+            /// <summary>
121
+            /// 当前页面元素
122
+            /// </summary>
123
+            public PageBase Page { get; private set; }
124
+            #endregion
125
+        }
126
+        #endregion
127
+
128
+        #region 逻辑
129
+        /// <summary>
130
+        /// 执行复核操作
131
+        /// </summary>
132
+        /// <returns></returns>
133
+        public bool RaiseRecheck()
134
+        {
135
+            if (PreviewRecheck == null) return false;
136
+            var args = new PreviewRecheckEventArgs(PageData);
137
+            PreviewRecheck(PageData, args);
138
+            //获取内部授权要素
139
+            var recheckCondition = PageData.TradeAPIs.GetCheckElement(args);
140
+            if (recheckCondition == null)
141
+            {
142
+                return false;
143
+            }
144
+            recheckCondition.LegalPerson = LoginAuthentication.Instance.GroupKinbrNo;
145
+            CheckManager c = new CheckManager();
146
+            c.AsksuperResultMessage += (result, dataBus) =>
147
+                {
148
+                    //TODO:具体处理方案
149
+                    switch (result)
150
+                    {
151
+                        case AsksuperResultType.Success:
152
+                            IRecheckContract irc = args.Page as IRecheckContract;
153
+                            //执行提交部分授权检测
154
+                            TradeModel trademodel = PageHelper.GetTradeModel(PageData);
155
+                            //判断是否配置授权标志
156
+                            if (trademodel.Metadata != null && ((Dictionary<string, string>)trademodel.Metadata).ContainsKey("isAuth"))
157
+                            {
158
+                                string isauth = string.Empty;
159
+                                ((Dictionary<string, string>)trademodel.Metadata).TryGetValue("isAuth", out isauth);
160
+                                //如果配置授权标志为true,则调用授权检查
161
+                                if (isauth.Equals("true"))
162
+                                {
163
+                                    if (PageData is IAuthorizeContract)
164
+                                    {
165
+                                        var contract = PageData as IAuthorizeContract;
166
+                                        if (contract == null)
167
+                                        {
168
+                                            args.Page.TradeAPIs.ShowInfoMessageBox("复核已通过,在下一步检查授权时出错,请检查");
169
+                                            break;
170
+                                        }
171
+                                        if (contract.AuthorizeEntries == null || contract.AuthorizeEntries.Count == 0)
172
+                                        {
173
+                                            args.Page.TradeAPIs.ShowInfoMessageBox("复核已通过,在下一步检查授权时出错,请检查");
174
+                                            break;
175
+                                        }
176
+                                        var entry = contract.AuthorizeEntries.Find(x => { return x.PowerCode == "0"; });
177
+                                        if (entry == null)
178
+                                        {
179
+                                            args.Page.TradeAPIs.ShowInfoMessageBox("复核已通过,在下一步检查授权时出错,请检查");
180
+                                            break;
181
+                                        }
182
+                                        entry.LoadData(irc.RecheckEntries[0].PageData, irc.RecheckEntries[0].MessageData);
183
+                                        args.Page.TradeAPIs.ShowInfoMessageBox("复核已通过,将做下一步授权检查");
184
+                                        if (!entry.RaiseAuthorize()) //需要授权
185
+                                        {
186
+                                            break;
187
+                                        }
188
+                                    }
189
+                                }
190
+                            }
191
+                            else
192
+                            {
193
+                                args.Page.TradeAPIs.ShowInfoMessageBox("复核已经通过,将提交交易");
194
+                            }
195
+                            var submit = (args.Page as ISubmitContract);
196
+                            submit.SubmitEntry.LoadData(irc.RecheckEntries[0].PageData, irc.RecheckEntries[0].MessageData);
197
+                            submit.SubmitEntry.RaiseSubmit();
198
+                            break;
199
+                        case AsksuperResultType.Failed:
200
+                            args.Page.TradeAPIs.ShowInfoMessageBox("复核没有通过");
201
+                            break;
202
+                        case AsksuperResultType.Undo:
203
+                            args.Page.TradeAPIs.ShowInfoMessageBox("复核没已取消");
204
+                            break;
205
+                        default:
206
+                            break;
207
+                    }
208
+                };
209
+            return c.DoSuper(PageData, recheckCondition, args.CustomizeMessage ?? MessageData, PowerCode, args.EnrollAccount, double.Parse(args.EnrollAmt.ToString()), args.EnrollAccountName, args.EnrollDescription);
210
+        }
211
+        #endregion
212
+    }
213
+}

+ 125
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/RecheckEntry.ts View File

@@ -0,0 +1,125 @@
1
+import { EntryBase } from '../ContractBase/EntryBase'
2
+import type { PageBase } from '../ContractBase/PageBase'
3
+import type { Message } from '../Communication/Message'
4
+import { LoginAuthentication } from '../Library/Ext/Function/LoginAuthentication'
5
+import { CheckManager } from '../ServiceProxy/Ext/ServiceHelper/CheckManager'
6
+import type { IRecheckContract } from '../Contracts/IRecheckContract'
7
+import type { IAuthorizeContract } from '../Contracts/IAuthorizeContract'
8
+import type { ISubmitContract } from '../Contracts/ISubmitContract'
9
+import { TradeModel } from '../Models/TradeModel'
10
+import { PageHelper } from '../Presentation/PagesHelper'
11
+
12
+/**
13
+ * 复核逻辑入口
14
+ */
15
+export class RecheckEntry {
16
+  /**
17
+   * 权限编号
18
+   */
19
+  private powerCode: string
20
+
21
+  /**
22
+   * 准备复核数据事件
23
+   */
24
+  public previewRecheck?: (page: PageBase, args: PreviewRecheckEventArgs) => void
25
+
26
+  /**
27
+   * 构造函数
28
+   */
29
+  constructor(powerCode: string) {
30
+    this.powerCode = powerCode
31
+  }
32
+
33
+  /**
34
+   * 执行复核操作
35
+   */
36
+  public async raiseRecheck(): Promise<boolean> {
37
+    if (!this.previewRecheck) return false
38
+
39
+    const args = new PreviewRecheckEventArgs(PageData)
40
+    this.previewRecheck(PageData, args)
41
+
42
+    const recheckCondition = PageData.tradeAPIs.getCheckElement(args)
43
+    if (!recheckCondition) return false
44
+
45
+    recheckCondition.legalPerson = LoginAuthentication.instance.groupKinbrNo
46
+
47
+    const checkManager = useCheckManager()
48
+    checkManager.onAskSuperResult((result, dataBus) => {
49
+      switch (result) {
50
+        case 'Success':
51
+          const irc = args.page as IRecheckContract
52
+          const trademodel = PageHelper.getTradeModel(PageData)
53
+
54
+          if (trademodel.metadata?.isAuth === 'true') {
55
+            const contract = PageData as IAuthorizeContract
56
+            if (!contract?.authorizeEntries?.length) {
57
+              args.page.tradeAPIs.showInfoMessageBox('复核已通过,在下一步检查授权时出错,请检查')
58
+              break
59
+            }
60
+
61
+            const entry = contract.authorizeEntries.find(x => x.powerCode === '0')
62
+            if (!entry) {
63
+              args.page.tradeAPIs.showInfoMessageBox('复核已通过,在下一步检查授权时出错,请检查')
64
+              break
65
+            }
66
+
67
+            entry.loadData(irc.recheckEntries[0].pageData, irc.recheckEntries[0].messageData)
68
+            args.page.tradeAPIs.showInfoMessageBox('复核已通过,将做下一步授权检查')
69
+            if (!entry.raiseAuthorize()) break
70
+          } else {
71
+            args.page.tradeAPIs.showInfoMessageBox('复核已经通过,将提交交易')
72
+          }
73
+
74
+          const submit = args.page as ISubmitContract
75
+          submit.submitEntry.loadData(irc.recheckEntries[0].pageData, irc.recheckEntries[0].messageData)
76
+          submit.submitEntry.raiseSubmit()
77
+          break
78
+
79
+        case 'Failed':
80
+          args.page.tradeAPIs.showInfoMessageBox('复核没有通过')
81
+          break
82
+
83
+        case 'Undo':
84
+          args.page.tradeAPIs.showInfoMessageBox('复核没已取消')
85
+          break
86
+      }
87
+    })
88
+
89
+    return checkManager.doSuper(
90
+      PageData,
91
+      recheckCondition,
92
+      args.customizeMessage || args.messageData,
93
+      this.powerCode,
94
+      args.enrollAccount,
95
+      Number(args.enrollAmt),
96
+      args.enrollAccountName,
97
+      args.enrollDescription
98
+    )
99
+  }
100
+}
101
+
102
+/**
103
+ * 准备复核数据事件参数
104
+ */
105
+export class PreviewRecheckEventArgs {
106
+  public account: string = ''
107
+  public amt: number = 0
108
+  public deAccount: string = ''
109
+  public crAccount: string = ''
110
+  public sinAmt: number = 0
111
+  public ctSigns: string = ''
112
+  public operationType: string = ''
113
+  public deAccountSeqn: string = ''
114
+  public enrollAccount: string = ''
115
+  public enrollAccountName: string = ''
116
+  public enrollAmt: number = 0
117
+  public enrollDescription: string = ''
118
+  public customizePages: Uint8Array[] = []
119
+  public customizeMessage?: Message
120
+  public page: PageBase
121
+
122
+  constructor(page: PageBase) {
123
+    this.page = page
124
+  }
125
+}

+ 468
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/SubmitEntry.cs View File

@@ -0,0 +1,468 @@
1
+using System.Collections.Generic;
2
+using Platform.Library;
3
+using Platform.Print;
4
+using TellerSystem.Contract.ContractBase;
5
+using TellerSystem.Contract.Contracts;
6
+using TellerSystem.Library.Ext.Function;
7
+using System.Windows.Controls;
8
+using System.Windows.Controls.Primitives;
9
+using TellerSystem.Contract.Function;
10
+using TellerSystem.ServiceProxy.Ext.ServiceEntitys;
11
+using Platform.Common.RunningParameters;
12
+using TellerSystem.ServiceProxy.Ext.ServiceHelper;
13
+using System.Windows;
14
+using TellerSystem.Library.Ext.TradeExtension;
15
+using TellerSystem.PrintTemplate.Extension;
16
+using TellerSystem.PrintTemplate.PrintTemplateData;
17
+using System;
18
+using Platform.Common.LogSystem;
19
+using TellerSystem.Communication;
20
+using System.Text;
21
+using TellerSystem.Communication.SocketListener;
22
+using System.Linq;
23
+using TellerSystem.ServiceProxy.Ext.TradeBusinessEntitys;
24
+using TellerSystem.ServiceProxy.Ext;
25
+using System.Diagnostics;
26
+using System.Text.RegularExpressions;
27
+
28
+namespace TellerSystem.Contract.Entry
29
+{
30
+    /// <summary>
31
+    ///     提交逻辑入口
32
+    /// </summary>
33
+    public abstract class SubmitEntry : PrintflowEntry
34
+    {
35
+        #region 控制
36
+        /// <summary>
37
+        /// 提交标识,当提交成功后将变为true
38
+        /// </summary>
39
+        public bool Submitted { get; private set; }
40
+
41
+        /// <summary>
42
+        ///     是否自定义检测通讯返包
43
+        /// </summary>
44
+        public bool IsCustomizeVerify { get; protected set; }
45
+
46
+        /// <summary>
47
+        ///     自动检测通讯返包
48
+        /// </summary>
49
+        /// <returns></returns>
50
+        private bool AutoVerify()
51
+        {
52
+            //定制通讯失败情况下的通知方式
53
+            if (MessageData.Fd12 != "0000")
54
+            {
55
+                PageData.TradeAPIs.ShowErrorMessageBox(PageData.GetError(MessageData));
56
+                return false;
57
+            }
58
+            return true;
59
+        }
60
+
61
+        #endregion
62
+
63
+        #region 公开方法
64
+
65
+        /// <summary>
66
+        ///     执行提交流程
67
+        /// </summary>
68
+        /// <returns></returns>
69
+        public bool RaiseSubmit()
70
+        {
71
+            //条件检测
72
+            if (MessageData == null || PageData == null || Submitted) return false;
73
+            //填充公共数据
74
+            var SerialNumber = PageData.CreateSerialNumber();
75
+            if (string.IsNullOrWhiteSpace(SerialNumber))//校验前端流水是否产生
76
+            {
77
+                return false;
78
+            }
79
+            if (SerialNumber.Length > 8)
80
+            {
81
+                MessageData.Fd96_Q = SerialNumber.Substring(8);
82
+            }
83
+            AuthDataHelper authdata = new AuthDataHelper(PageData);
84
+            CheckDataHelper checkdata = new CheckDataHelper(PageData);
85
+            if (!string.IsNullOrEmpty(checkdata.SuperTeller)) //复核柜员
86
+            {
87
+                MessageData.Fd8 = checkdata.SuperTeller;
88
+            }
89
+            if (!string.IsNullOrEmpty(authdata.AuthTeller)) //授权柜员
90
+            {
91
+                MessageData.Fd9_1 = authdata.AuthTeller;
92
+            }
93
+            //核心需要记录交易号
94
+            MessageData.Fd14 = PageData.TradeModel.Code;
95
+
96
+            #region 考试系统相关begin
97
+            //考试系统相关:存储发送报文,用于后面发送至考试系统
98
+            string SendMessage = string.Empty;
99
+            if (ExamSystem.Instance.InExamMode)
100
+                SendMessage = ExamSystem.Instance.KGetMessageString(MessageData, "发送");
101
+            #endregion 考试系统相关end
102
+
103
+            //设定通讯流水,用于登记报文。通讯完毕后解除,防止重复登记
104
+            MessageData.SerialNumber = this.TradeInfo.SystemSerialNumber;
105
+            //登记打印数据
106
+            if (!this.StashPrintData())
107
+                return false;
108
+            //执行通讯操作
109
+            var flag = PageData.DoTransit(MessageData);
110
+            MessageData.SerialNumber = string.Empty;
111
+            //if (!flag)
112
+            //{
113
+            //    MessageBoxResult result = this.TradeAPIs.ShowWarnMessageBox("提交交易不成功, 为了避免重复提交\n请查看该笔业务流程是否已经完成!");
114
+            //    PlatformLogger.TradeInfo("提交交易不成功,为了避免重复提交</n>请主动去查看该笔业务流程是否已经完成!\n前端流水号:" + SerialNumber + "\n操作柜员:" + MessageData.Fd7);
115
+            //    TradeHandle.WriteImportantLog(SerialNumber + "提交交易无法确认状态", "通讯返回false,请检查网络", this.PageData.TradeModel.Code, "RaiseSubmit", "1", string.Join(",", SocketManager.GetLocalIpAddressList()));
116
+            //    this.PageData.Close();
117
+            //    return false;
118
+            //}
119
+            #region 考试系统相关begin
120
+            //将通讯返回的Message对象进行处理后,发送至考试系统
121
+            string ReceiveMessage = string.Empty;
122
+            if (ExamSystem.Instance.InExamMode)
123
+            {
124
+                ReceiveMessage = ExamSystem.Instance.KGetMessageString(MessageData, "返回");
125
+                ExamSystem.Instance.SendExamData(SendMessage, ReceiveMessage, this.TradeInfo.TradeCode, this.TradeInfo.SystemSerialNumber ?? string.Empty);
126
+            }
127
+            #endregion 考试系统相关end
128
+
129
+            //通讯成功后,进行结果判定
130
+            //通讯之后的逻辑,务必保证正常出票
131
+            if (IsCustomizeVerify)
132
+            {
133
+                if (!SubmitComplete())
134
+                    return false;
135
+            }
136
+            else
137
+            {
138
+                if (!flag)
139
+                {
140
+                    MessageBoxResult result = this.TradeAPIs.ShowWarnMessageBox("提交交易不成功, 为了避免重复提交\n请查看该笔业务流程是否已经完成!");
141
+                    PlatformLogger.TradeInfo("提交交易不成功,为了避免重复提交</n>请主动去查看该笔业务流程是否已经完成!\n前端流水号:" + SerialNumber + "\n操作柜员:" + MessageData.Fd7);
142
+                    TradeHandle.WriteImportantLog(SerialNumber + "提交交易无法确认状态", "通讯返回false,请检查网络", this.PageData.TradeModel.Code, "RaiseSubmit", "1", string.Join(",", SocketManager.GetLocalIpAddressList()));
143
+                    this.PageData.Close();
144
+                    return false;
145
+                }
146
+                if (!AutoVerify()) return false;
147
+                try
148
+                {
149
+                    SubmitComplete();
150
+                }
151
+                catch (Exception ex)
152
+                {
153
+                    PlatformLogger.SystemErrorInfo("SubmitEntry.RaiseSubmit方法,执行SubmitComplete发生异常!", ex);
154
+                }
155
+            }
156
+            try
157
+            {
158
+                //标识:交易已经提交完毕
159
+                if (!Regex.IsMatch(PageData.TradeInfo.TradeCode, ServiceProxy.Ext.ServiceSettings.GetConfig("SkipFlagSubmitted", "none")))
160
+                    Submitted = true;
161
+                //异常补打相关的资料上总线
162
+                PageData.TradeBus.RecvMessage = MessageData;
163
+                PageData.TradeBus.PageAction = PageData.GetType().ToString();
164
+                //异步提交交易记录
165
+                UploadData();
166
+                //插入柜员流水
167
+                //if (!string.IsNullOrWhiteSpace(MessageData.Fd4))
168
+                //{
169
+                //    PageData.CreateTellerSerialNumber(PageData.GetPrintAttributes().SystemSerialNumber);
170
+                //}
171
+                //回显界面
172
+                RaiseCallbackDescription();
173
+                this.PageData.PagePrinted += PageData_PagePrinted;
174
+                //交易执行成功,执行打印流程
175
+                RaisePrint();
176
+            }
177
+            catch (Exception ex)
178
+            {
179
+                this.TradeAPIs.ShowInfoMessageBox(string.Format("提交交易成功,解析返回数据出错,错误信息:\n{0}", ex.Message));
180
+                var msgLog = GetMessageString(MessageData);
181
+                PlatformLogger.SystemErrorInfo("提交交易成功,解析返回数据出错\n***************************************************\n" + msgLog + "\n", ex);
182
+                TradeHandle.WriteImportantLog(SerialNumber + "提交交易成功,解析返回数据出错", ex.Message + "\n" + ex.StackTrace, this.PageData.TradeModel.Code, "RaiseSubmit", "1", string.Join(",", SocketManager.GetLocalIpAddressList()));
183
+            }
184
+
185
+            ////执行后续操作
186
+            //Finally();
187
+            PageData_PagePrinted(null, null);//补偿一次,存在未触发的bug场景。原因未知,目前观测某些情况下动态调用未正常执行
188
+            //交易完成,清理
189
+            TradeCompleted();
190
+            //清除总线上授权柜员与复核柜员
191
+            authdata.AuthTeller = string.Empty;
192
+            authdata.AuthTeller2 = string.Empty;
193
+            checkdata.SuperTeller = string.Empty;
194
+            PageData.ClearSerialNumber();
195
+            //清除柜员流水
196
+            TradeInfoData.GetTradeInfo(PageData).SerialNumber = string.Empty;
197
+            return true;
198
+        }
199
+        private bool flag2Fina11y = false;
200
+        void PageData_PagePrinted(object sender, EventArgs e)
201
+        {
202
+            this.PageData.Log2PagePrinted("触发rinally" + flag2Fina11y);
203
+            this.PageData.PagePrinted -= PageData_PagePrinted;
204
+            if (flag2Fina11y) return;//不允许重复触发
205
+            flag2Fina11y = true;
206
+            Finally();
207
+        }
208
+
209
+        /// <summary>
210
+        /// 根据Message对象获取对于域的值
211
+        /// </summary>
212
+        /// <param name="msg">Message对象</param>
213
+        /// <returns>对于域的值</returns>
214
+        private string GetMessageString(Message msg)
215
+        {
216
+            System.Reflection.PropertyInfo[] info = msg.GetType().GetProperties();
217
+            StringBuilder strText = new StringBuilder(1000);
218
+            for (int i = 0; i < info.Length; i++)
219
+            {
220
+                if (info[i].Name.StartsWith("Fd"))
221
+                {
222
+                    var val = info[i].GetValue(msg, null).ToString().Trim().Replace("\r", "").Replace("\n", "");
223
+                    if (!string.IsNullOrWhiteSpace(val))
224
+                    {
225
+                        strText.Append("[" + info[i].Name + "=" + val + "]");
226
+                        strText.AppendLine();
227
+                    }
228
+                }
229
+            }
230
+            return strText.ToString();
231
+        }
232
+        private void UploadData()
233
+        {
234
+            try
235
+            {
236
+                //组装数据
237
+                var tradeInfo = new TellerInfo
238
+                {
239
+                    TellerNo = LoginUserInfo.TellerNo,
240
+                    TradeNo = PageData.TradeModel.Code,
241
+                    Tlrlvl = "",
242
+                    BrNo = LoginUserInfo.KinbrNo,
243
+                    Status = 1,      //默认为1,标明该流程为正常结束
244
+                    BlackSerialNo2 = (MessageData.CustomizeTransitEntry != null && !string.IsNullOrEmpty(MessageData.CustomizeTransitEntry.SerialNo))
245
+                        ? MessageData.CustomizeTransitEntry.SerialNo : MessageData.Fd126_1,//存在自定义流水号时加载
246
+                    BlackSerialNo = MessageData.Fd4,
247
+                    TradeFileName = this.GetType().FullName,
248
+                    BusinessDate = LoginUserInfo.TradeDate
249
+                };
250
+                //如果有授权柜员或复合柜员,则需保存交易页面数据
251
+                AuthDataHelper authdata = new AuthDataHelper(PageData);
252
+                CheckDataHelper checkdata = new CheckDataHelper(PageData);
253
+                byte[] pagedata = new byte[0];
254
+                if (!string.IsNullOrEmpty(checkdata.SuperTeller) || !string.IsNullOrEmpty(authdata.AuthTeller))
255
+                {
256
+                    pagedata = PageData.SaveTradePage((FrameworkElement)(PageData.Content));
257
+                }
258
+                var tradeBus = (Dictionary<string, string>)TradeInfoData.GetTradeInfo(PageData as DependencyObject).TradeBus.Serialize();
259
+                var serialNumber = PageData.CreateSerialNumber();
260
+                //异步提交
261
+                Action action = () =>
262
+                {
263
+                    PlatformLogger.SystemInfo("UploadData:Raise=>" + serialNumber);
264
+                    //提交工作流,返回柜员流水号
265
+                    WorkFlowHandle.GetWorkFlowTradeSubmit(
266
+                                         tradeInfo, pagedata, tradeBus, "", serialNumber, false, true);
267
+                };
268
+                action.BeginInvoke(new AsyncCallback(x =>
269
+                {
270
+                    try
271
+                    {
272
+                        action.EndInvoke(x);
273
+                    }
274
+                    catch (Exception e)
275
+                    {
276
+                        TradeHandle.WriteImportantLog("UploadData", e.Message + "\n" + e.StackTrace, "GetWorkFlowTradeSubmitException", "0", string.Join(",", SocketManager.GetLocalIpAddressList()));
277
+                    }
278
+                }), null);
279
+            }
280
+            catch (Exception ex)
281
+            {
282
+                PlatformLogger.SystemErrorInfo("SubmitEntry.UploadData方法,上载交易数据发生异常!", ex);
283
+            }
284
+        }
285
+
286
+        private void RaiseCallbackDescription()
287
+        {
288
+            //回显要素
289
+            Dictionary<string, string> displayDesc = null;
290
+            try
291
+            {
292
+                displayDesc = CreateDisplayDescription();
293
+            }
294
+            catch (Exception ex)
295
+            {
296
+                PlatformLogger.SystemErrorInfo("SubmitEntry.RaiseCallbackDescription方法,创建回显要素集合发生异常!", ex);
297
+            }
298
+            if (displayDesc == null)
299
+            {
300
+                TradeAPIs.ShowSuccessMessageBox();
301
+            }
302
+            else
303
+            {
304
+                var wrap = new WrapPanel();
305
+                foreach (var item in displayDesc)
306
+                {
307
+                    wrap.Children.Add(new BulletDecorator
308
+                    {
309
+                        MinWidth = 350,
310
+                        VerticalAlignment = System.Windows.VerticalAlignment.Center,
311
+                        HorizontalAlignment = System.Windows.HorizontalAlignment.Center,
312
+                        Bullet = new TextBlock
313
+                        {
314
+                            VerticalAlignment = System.Windows.VerticalAlignment.Center,
315
+                            HorizontalAlignment = System.Windows.HorizontalAlignment.Right,
316
+                            Text = item.Key + ":"
317
+                        },
318
+                        Child = new TextBlock
319
+                        {
320
+                            VerticalAlignment = System.Windows.VerticalAlignment.Center,
321
+                            HorizontalAlignment = System.Windows.HorizontalAlignment.Left,
322
+                            Text = item.Value
323
+                        }
324
+                    });
325
+                }
326
+                TradeAPIs.ShowSuccessMessageBox(wrap);
327
+            }
328
+        }
329
+
330
+        /// <summary>
331
+        ///     执行打印流程
332
+        /// </summary>
333
+        /// <returns></returns>
334
+        public bool RaisePrint()
335
+        {
336
+            //采用新的打印流程化,暂只对提交约束页面有效
337
+            if (PageData is ISubmitContract)
338
+                return this.RaisePrintflow(false);//前置流程已经执行stash
339
+            //产生打印清单
340
+            List<PrintContainer> printList = null;
341
+            try
342
+            {
343
+                if (!CreatePrintList(out printList))
344
+                    TradeHandle.WriteImportantLog("SubmitEntry.RaisePrint方法,调用CreatePrintList方法失败!", this.MessageData.FileData, this.PageData.TradeModel.Code, "RaiseSubmit", "5", string.Join(",", SocketManager.GetLocalIpAddressList()));
345
+            }
346
+            catch (Exception ex)
347
+            {
348
+                PlatformLogger.SystemErrorInfo("SubmitEntry.RaisePrint方法,调用CreatePrintList方法发生异常!", ex);
349
+                //提示一下
350
+                PageData.ShowErrorMessageBox("产生凭证打印清单失败!请检查完整性...");
351
+                TradeHandle.WriteImportantLog("SubmitEntry.RaisePrint方法,调用CreatePrintList方法发生异常!", ex.Message + "\n" + ex.StackTrace, this.PageData.TradeModel.Code, "RaiseSubmit", "5", string.Join(",", SocketManager.GetLocalIpAddressList()));
352
+            }
353
+            if (printList == null)
354
+                printList = new List<PrintContainer>();
355
+            printList.AddRange(MorePrintList);
356
+            if (printList.Count == 0)
357
+                return true;
358
+            return ContractManager.RaisePrint(PageData, MessageData, printList);
359
+        }
360
+
361
+        private List<PrintContainer> _morePrintList = new List<PrintContainer>();
362
+
363
+        /// <summary>
364
+        /// 更多的打印数据
365
+        /// </summary>
366
+        public List<PrintContainer> MorePrintList
367
+        {
368
+            get { return _morePrintList; }
369
+        }
370
+        #endregion
371
+
372
+        #region 抽象方法
373
+
374
+        /// <summary>
375
+        ///     提交完毕,并验证结果
376
+        /// </summary>
377
+        /// <returns></returns>
378
+        public abstract bool SubmitComplete();
379
+
380
+        /// <summary>
381
+        ///     流程处理结束,执行后续操作
382
+        /// </summary>
383
+        /// <returns></returns>
384
+        public abstract bool Finally();
385
+
386
+        /// <summary>
387
+        ///     创建打印列表,抽象成交易自身定制
388
+        /// </summary>
389
+        /// <returns></returns>
390
+        public abstract bool CreatePrintList(out List<PrintContainer> printList);
391
+        #endregion
392
+
393
+        #region 虚方法
394
+        /// <summary>
395
+        /// 创建回显要素集合
396
+        /// </summary>
397
+        /// <returns></returns>
398
+        public virtual Dictionary<string, string> CreateDisplayDescription()
399
+        {
400
+            return null;
401
+        }
402
+
403
+        /// <summary>
404
+        /// 提交交易计数器
405
+        /// </summary>
406
+        private static int _counter = 0;
407
+
408
+        /// <summary>
409
+        /// 交易完毕,执行清理工作
410
+        /// </summary>
411
+        public virtual bool TradeCompleted()
412
+        {
413
+            //执行固定次数交易后,做一次打印进程清理,避免进程使用太久导致内存溢出
414
+            _counter++;
415
+            if (_counter % ServiceSettings.GetConfig("PrinterLoop", 99999) == 0)
416
+            {
417
+                Process.GetProcessesByName("Platform.PrintService").ToList().ForEach(p =>
418
+                {
419
+                    try
420
+                    {
421
+                        p.Kill();
422
+                    }
423
+                    catch { }
424
+                });
425
+                System.Threading.Thread.Sleep(500);
426
+            }
427
+            //交易完成,默认采用关闭交易动作
428
+            if (string.Compare(PageData.TradeAPIs.GetTradeMetadata("isClosePage"), "true", true) == 0)
429
+            {
430
+                PageData.OpenPage(PageData.TradeModel.Action, null);
431
+            }
432
+            else
433
+            {
434
+                PageData.Close();
435
+            }
436
+            //PageData.Close();
437
+            return true;
438
+        }
439
+        #endregion
440
+
441
+        public override List<PrintContainer> GeneratePrintList()
442
+        {
443
+            List<PrintContainer> printList = null;
444
+            try
445
+            {
446
+                var message = this.MessageData;
447
+                if (!CreatePrintList(out printList))
448
+                    TradeHandle.WriteImportantLog("SubmitEntry.RaisePrint方法,调用CreatePrintList方法失败!", message.FileData, this.PageData.TradeModel.Code, "RaiseSubmit", "5", string.Join(",", SocketManager.GetLocalIpAddressList()));
449
+            }
450
+            catch (Exception ex)
451
+            {
452
+                PlatformLogger.SystemErrorInfo("SubmitEntry.RaisePrint方法,调用CreatePrintList方法发生异常!", ex);
453
+                //提示一下
454
+                this.TradeAPIs.ShowErrorMessageBox("产生凭证打印清单失败!请检查完整性...");
455
+                TradeHandle.WriteImportantLog("SubmitEntry.RaisePrint方法,调用CreatePrintList方法发生异常!", ex.Message + "\n" + ex.StackTrace, this.PageData.TradeModel.Code, "RaiseSubmit", "5", string.Join(",", SocketManager.GetLocalIpAddressList()));
456
+            }
457
+            if (printList == null)
458
+                printList = new List<PrintContainer>();
459
+            printList.AddRange(MorePrintList);
460
+            return printList;
461
+        }
462
+
463
+        public override bool PreviewPrintflow()
464
+        {
465
+            return true;
466
+        }
467
+    }
468
+}

+ 406
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Entry/SubmitEntry.ts View File

@@ -0,0 +1,406 @@
1
+import { reactive, ref } from 'vue'
2
+import { PrintflowEntry } from './PrintflowEntry'
3
+import type { PageBase } from '../ContractBase/PageBase'
4
+import type { Message } from '../Communication/Message'
5
+import type { PrintContainer } from '../../Platform/Print/PrintContainer'
6
+import { LoginAuthentication } from '../Library/Ext/Function/LoginAuthentication'
7
+import { ContractManager } from '../Contracts/ContractManager'
8
+import { PlatformLogger } from '../../Platform/Common/LogSystem'
9
+import { ExamSystem } from '../ServiceProxy/Ext/ServiceHelper/ExamSystem'
10
+import { AuthDataHelper } from '../ContractBase/AuthDataHelper'
11
+import { CheckDataHelper } from '../ContractBase/CheckDataHelper'
12
+import { TradeHandle } from '../Library/Ext/TradeExtension/TradeHandle'
13
+import { SocketManager } from '../Communication/SocketListener/SocketManager'
14
+import { WorkFlowHandle } from '../ServiceProxy/Ext/ServiceHelper/WorkFlowHandle'
15
+import { LoginUserInfo } from '../Models/UserInfo'
16
+
17
+/**
18
+ * 提交逻辑入口(抽象类)
19
+ */
20
+export abstract class SubmitEntry extends PrintflowEntry {
21
+    private _submitted = ref(false)
22
+    private _morePrintList: PrintContainer[] = []
23
+    private _flag2Finally = false
24
+    private static _counter = 0
25
+
26
+    /**
27
+     * 提交标识,当提交成功后将变为true
28
+     */
29
+    public get Submitted(): boolean {
30
+        return this._submitted.value
31
+    }
32
+    private set Submitted(value: boolean) {
33
+        this._submitted.value = value
34
+    }
35
+
36
+    /**
37
+     * 是否自定义检测通讯返包
38
+     */
39
+    public IsCustomizeVerify = false
40
+
41
+    /**
42
+     * 更多的打印数据
43
+     */
44
+    public get MorePrintList(): PrintContainer[] {
45
+        return this._morePrintList
46
+    }
47
+
48
+    /**
49
+     * 执行提交流程
50
+     */
51
+    public RaiseSubmit(): boolean {
52
+        if (!this.MessageData || !this.PageData || this.Submitted) return false
53
+
54
+        const serialNumber = this.PageData.CreateSerialNumber()
55
+        if (!serialNumber) return false
56
+
57
+        if (serialNumber.length > 8) {
58
+            this.MessageData.Fd96_Q = serialNumber.substring(8)
59
+        }
60
+
61
+        const authdata = new AuthDataHelper(this.PageData)
62
+        const checkdata = new CheckDataHelper(this.PageData)
63
+
64
+        if (checkdata.SuperTeller) {
65
+            this.MessageData.Fd8 = checkdata.SuperTeller
66
+        }
67
+
68
+        if (authdata.AuthTeller) {
69
+            this.MessageData.Fd9_1 = authdata.AuthTeller
70
+        }
71
+
72
+        this.MessageData.Fd14 = this.PageData.TradeModel.Code
73
+
74
+        // 考试系统相关处理
75
+        let sendMessage = ''
76
+        if (ExamSystem.Instance.InExamMode) {
77
+            sendMessage = ExamSystem.Instance.KGetMessageString(this.MessageData, "发送")
78
+        }
79
+
80
+        this.MessageData.SerialNumber = this.TradeInfo.SystemSerialNumber
81
+        if (!this.StashPrintData()) return false
82
+
83
+        const flag = this.PageData.DoTransit(this.MessageData)
84
+        this.MessageData.SerialNumber = ''
85
+
86
+        // 考试系统相关处理
87
+        if (ExamSystem.Instance.InExamMode) {
88
+            const receiveMessage = ExamSystem.Instance.KGetMessageString(this.MessageData, "返回")
89
+            ExamSystem.Instance.SendExamData(
90
+                sendMessage, 
91
+                receiveMessage, 
92
+                this.TradeInfo.TradeCode, 
93
+                this.TradeInfo.SystemSerialNumber || ''
94
+            )
95
+        }
96
+
97
+        if (this.IsCustomizeVerify) {
98
+            if (!this.SubmitComplete()) return false
99
+        } else {
100
+            if (!flag) {
101
+                this.TradeAPIs.ShowWarnMessageBox("提交交易不成功, 为了避免重复提交\n请查看该笔业务流程是否已经完成!")
102
+                PlatformLogger.TradeInfo(`提交交易不成功,为了避免重复提交</n>请主动去查看该笔业务流程是否已经完成!\n前端流水号:${serialNumber}\n操作柜员:${this.MessageData.Fd7}`)
103
+                TradeHandle.WriteImportantLog(
104
+                    `${serialNumber}提交交易无法确认状态`, 
105
+                    "通讯返回false,请检查网络", 
106
+                    this.PageData.TradeModel.Code, 
107
+                    "RaiseSubmit", 
108
+                    "1", 
109
+                    SocketManager.GetLocalIpAddressList().join(',')
110
+                )
111
+                this.PageData.Close()
112
+                return false
113
+            }
114
+            if (!this.AutoVerify()) return false
115
+            try {
116
+                this.SubmitComplete()
117
+            } catch (ex) {
118
+                PlatformLogger.SystemErrorInfo("SubmitEntry.RaiseSubmit方法,执行SubmitComplete发生异常!", ex)
119
+            }
120
+        }
121
+
122
+        try {
123
+            if (!new RegExp(ServiceProxy.Ext.ServiceSettings.GetConfig("SkipFlagSubmitted", "none")).test(this.PageData.TradeInfo.TradeCode)) {
124
+                this.Submitted = true
125
+            }
126
+
127
+            this.PageData.TradeBus.RecvMessage = this.MessageData
128
+            this.PageData.TradeBus.PageAction = this.PageData.constructor.name
129
+
130
+            this.UploadData()
131
+            this.RaiseCallbackDescription()
132
+            
133
+            this.PageData.PagePrinted = this.PageData_PagePrinted
134
+            this.RaisePrint()
135
+        } catch (ex) {
136
+            this.TradeAPIs.ShowInfoMessageBox(`提交交易成功,解析返回数据出错,错误信息:\n${ex.message}`)
137
+            const msgLog = this.GetMessageString(this.MessageData)
138
+            PlatformLogger.SystemErrorInfo(`提交交易成功,解析返回数据出错\n***************************************************\n${msgLog}\n`, ex)
139
+            TradeHandle.WriteImportantLog(
140
+                `${serialNumber}提交交易成功,解析返回数据出错`, 
141
+                `${ex.message}\n${ex.stack}`, 
142
+                this.PageData.TradeModel.Code, 
143
+                "RaiseSubmit", 
144
+                "1", 
145
+                SocketManager.GetLocalIpAddressList().join(',')
146
+            )
147
+        }
148
+
149
+        this.PageData_PagePrinted(null, null)
150
+        this.TradeCompleted()
151
+        
152
+        authdata.AuthTeller = ''
153
+        authdata.AuthTeller2 = ''
154
+        checkdata.SuperTeller = ''
155
+        this.PageData.ClearSerialNumber()
156
+        TradeInfoData.GetTradeInfo(this.PageData).SerialNumber = ''
157
+        
158
+        return true
159
+    }
160
+
161
+    /**
162
+     * 自动检测通讯返包
163
+     */
164
+    private AutoVerify(): boolean {
165
+        if (this.MessageData.Fd12 !== "0000") {
166
+            this.PageData.TradeAPIs.ShowErrorMessageBox(this.PageData.GetError(this.MessageData))
167
+            return false
168
+        }
169
+        return true
170
+    }
171
+
172
+    /**
173
+     * 执行打印流程
174
+     */
175
+    public RaisePrint(): boolean {
176
+        if (this.PageData instanceof ISubmitContract) {
177
+            return this.RaisePrintflow(false)
178
+        }
179
+
180
+        let printList: PrintContainer[] | null = null
181
+        try {
182
+            if (!this.CreatePrintList(printList)) {
183
+                TradeHandle.WriteImportantLog(
184
+                    "SubmitEntry.RaisePrint方法,调用CreatePrintList方法失败!", 
185
+                    this.MessageData.FileData, 
186
+                    this.PageData.TradeModel.Code, 
187
+                    "RaiseSubmit", 
188
+                    "5", 
189
+                    SocketManager.GetLocalIpAddressList().join(',')
190
+                )
191
+            }
192
+        } catch (ex) {
193
+            PlatformLogger.SystemErrorInfo("SubmitEntry.RaisePrint方法,调用CreatePrintList方法发生异常!", ex)
194
+            this.PageData.ShowErrorMessageBox("产生凭证打印清单失败!请检查完整性...")
195
+            TradeHandle.WriteImportantLog(
196
+                "SubmitEntry.RaisePrint方法,调用CreatePrintList方法发生异常!", 
197
+                `${ex.message}\n${ex.stack}`, 
198
+                this.PageData.TradeModel.Code, 
199
+                "RaiseSubmit", 
200
+                "5", 
201
+                SocketManager.GetLocalIpAddressList().join(',')
202
+            )
203
+        }
204
+
205
+        if (!printList) printList = []
206
+        printList.push(...this.MorePrintList)
207
+        if (printList.length === 0) return true
208
+        
209
+        return ContractManager.RaisePrint(this.PageData, this.MessageData, printList)
210
+    }
211
+
212
+    private PageData_PagePrinted(sender: any, e: any): void {
213
+        this.PageData.Log2PagePrinted(`触发finally${this._flag2Finally}`)
214
+        this.PageData.PagePrinted = null
215
+        if (this._flag2Finally) return
216
+        this._flag2Finally = true
217
+        this.Finally()
218
+    }
219
+
220
+    private GetMessageString(msg: Message): string {
221
+        const props = Object.getOwnPropertyNames(msg)
222
+        let strText = ''
223
+        
224
+        props.filter(p => p.startsWith('Fd')).forEach(p => {
225
+            const val = msg[p].toString().trim().replace(/\r|\n/g, '')
226
+            if (val) {
227
+                strText += `[${p}=${val}]\n`
228
+            }
229
+        })
230
+        
231
+        return strText
232
+    }
233
+
234
+    private UploadData(): void {
235
+        try {
236
+            const tradeInfo = {
237
+                TellerNo: LoginUserInfo.TellerNo,
238
+                TradeNo: this.PageData.TradeModel.Code,
239
+                Tlrlvl: "",
240
+                BrNo: LoginUserInfo.KinbrNo,
241
+                Status: 1,
242
+                BlackSerialNo2: this.MessageData.CustomizeTransitEntry?.SerialNo || this.MessageData.Fd126_1,
243
+                BlackSerialNo: this.MessageData.Fd4,
244
+                TradeFileName: this.constructor.name,
245
+                BusinessDate: LoginUserInfo.TradeDate
246
+            }
247
+
248
+            const authdata = new AuthDataHelper(this.PageData)
249
+            const checkdata = new CheckDataHelper(this.PageData)
250
+            let pageData: Uint8Array = new Uint8Array()
251
+            
252
+            if (checkdata.SuperTeller || authdata.AuthTeller) {
253
+                pageData = this.PageData.SaveTradePage(this.PageData.Content)
254
+            }
255
+
256
+            const tradeBus = TradeInfoData.GetTradeInfo(this.PageData).TradeBus.Serialize()
257
+            const serialNumber = this.PageData.CreateSerialNumber()
258
+
259
+            setTimeout(() => {
260
+                try {
261
+                    WorkFlowHandle.GetWorkFlowTradeSubmit(
262
+                        tradeInfo,
263
+                        pageData,
264
+                        tradeBus,
265
+                        "",
266
+                        serialNumber,
267
+                        false,
268
+                        true
269
+                    )
270
+                } catch (e) {
271
+                    TradeHandle.WriteImportantLog(
272
+                        "UploadData",
273
+                        `${e.message}\n${e.stack}`,
274
+                        "GetWorkFlowTradeSubmitException",
275
+                        "0",
276
+                        SocketManager.GetLocalIpAddressList().join(',')
277
+                    )
278
+                }
279
+            }, 0)
280
+        } catch (ex) {
281
+            PlatformLogger.SystemErrorInfo("SubmitEntry.UploadData方法,上载交易数据发生异常!", ex)
282
+        }
283
+    }
284
+
285
+    private RaiseCallbackDescription(): void {
286
+        let displayDesc: Record<string, string> | null = null
287
+        
288
+        try {
289
+            displayDesc = this.CreateDisplayDescription()
290
+        } catch (ex) {
291
+            PlatformLogger.SystemErrorInfo("SubmitEntry.RaiseCallbackDescription方法,创建回显要素集合发生异常!", ex)
292
+        }
293
+
294
+        if (!displayDesc) {
295
+            this.TradeAPIs.ShowSuccessMessageBox()
296
+        } else {
297
+            // Vue中实现类似WPF的WrapPanel和BulletDecorator效果
298
+            // 这里需要根据实际UI框架实现对应组件
299
+            const wrapper = document.createElement('div')
300
+            wrapper.style.display = 'flex'
301
+            wrapper.style.flexWrap = 'wrap'
302
+            wrapper.style.gap = '10px'
303
+            
304
+            Object.entries(displayDesc).forEach(([key, value]) => {
305
+                const item = document.createElement('div')
306
+                item.style.display = 'flex'
307
+                item.style.alignItems = 'center'
308
+                item.style.minWidth = '350px'
309
+                
310
+                const bullet = document.createElement('span')
311
+                bullet.textContent = `${key}:`
312
+                bullet.style.marginRight = '5px'
313
+                
314
+                const content = document.createElement('span')
315
+                content.textContent = value
316
+                
317
+                item.appendChild(bullet)
318
+                item.appendChild(content)
319
+                wrapper.appendChild(item)
320
+            })
321
+
322
+            this.TradeAPIs.ShowSuccessMessageBox(wrapper)
323
+        }
324
+    }
325
+
326
+    public TradeCompleted(): boolean {
327
+        SubmitEntry._counter++
328
+        if (SubmitEntry._counter % ServiceSettings.GetConfig("PrinterLoop", 99999) === 0) {
329
+            // 浏览器环境下无法直接操作进程,这里需要根据实际环境调整
330
+            console.log('Printer process cleanup triggered')
331
+        }
332
+
333
+        if (this.PageData.TradeAPIs.GetTradeMetadata("isClosePage")?.toLowerCase() === "true") {
334
+            this.PageData.OpenPage(this.PageData.TradeModel.Action, null)
335
+        } else {
336
+            this.PageData.Close()
337
+        }
338
+
339
+        return true
340
+    }
341
+
342
+    public override GeneratePrintList(): PrintContainer[] {
343
+        let printList: PrintContainer[] | null = null
344
+        
345
+        try {
346
+            if (!this.CreatePrintList(printList)) {
347
+                TradeHandle.WriteImportantLog(
348
+                    "SubmitEntry.RaisePrint方法,调用CreatePrintList方法失败!",
349
+                    this.MessageData.FileData,
350
+                    this.PageData.TradeModel.Code,
351
+                    "RaiseSubmit",
352
+                    "5",
353
+                    SocketManager.GetLocalIpAddressList().join(',')
354
+                )
355
+            }
356
+        } catch (ex) {
357
+            PlatformLogger.SystemErrorInfo("SubmitEntry.RaisePrint方法,调用CreatePrintList方法发生异常!", ex)
358
+            this.TradeAPIs.ShowErrorMessageBox("产生凭证打印清单失败!请检查完整性...")
359
+            TradeHandle.WriteImportantLog(
360
+                "SubmitEntry.RaisePrint方法,调用CreatePrintList方法发生异常!",
361
+                `${ex.message}\n${ex.stack}`,
362
+                this.PageData.TradeModel.Code,
363
+                "RaiseSubmit",
364
+                "5",
365
+                SocketManager.GetLocalIpAddressList().join(',')
366
+            )
367
+        }
368
+
369
+        if (!printList) printList = []
370
+        printList.push(...this.MorePrintList)
371
+        return printList
372
+    }
373
+
374
+    public override PreviewPrintflow(): boolean {
375
+        return true
376
+    }
377
+
378
+    /**
379
+     * 提交完毕,并验证结果
380
+     */
381
+    public abstract SubmitComplete(): boolean
382
+
383
+    /**
384
+     * 流程处理结束,执行后续操作
385
+     */
386
+    public abstract Finally(): boolean
387
+
388
+    /**
389
+     * 创建打印列表
390
+     */
391
+    public abstract CreatePrintList(outList: PrintContainer[] | null): boolean
392
+
393
+    /**
394
+     * 创建回显要素集合
395
+     */
396
+    public CreateDisplayDescription(): Record<string, string> | null {
397
+        return null
398
+    }
399
+}
400
+
401
+// Vue组合式API封装
402
+export const useSubmitEntry = () => {
403
+    return {
404
+        SubmitEntry
405
+    }
406
+}

+ 956
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Extend/Reconciles.cs View File

@@ -0,0 +1,956 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.Linq;
4
+using System.Text;
5
+using System.Data;
6
+using TellerSystem.Communication;
7
+using Platform.Common.RunningParameters;
8
+using TellerSystem.ServiceProxy.Ext.ServiceHelper;
9
+using System.IO;
10
+using System.Windows;
11
+using TellerSystem.Library.Ext.Function;
12
+using Newtonsoft.Json.Linq;
13
+using TellerSystem.Library.Ext.TradeExtension;
14
+using Newtonsoft.Json;
15
+using TellerSystem.Contract.Function;
16
+using TellerSystem.ServiceProxy.Ext;
17
+using TellerSystem.Contract.ContractBase;
18
+using ICSharpCode.SharpZipLib.Zip;
19
+using ICSharpCode.SharpZipLib.Checksums;
20
+using System.Text.RegularExpressions;
21
+
22
+namespace TellerSystem.Contract.Extend
23
+{
24
+    public class Reconciles
25
+    {
26
+        #region Ctor
27
+        private Reconciles()
28
+        {
29
+        }
30
+
31
+        private static Reconciles instance;
32
+
33
+        public static Reconciles Instance
34
+        {
35
+            get
36
+            {
37
+                if (instance == null)
38
+                    instance = new Reconciles();
39
+                return instance;
40
+            }
41
+        }
42
+        #endregion
43
+
44
+        //文件分割符
45
+        string Separator = "^|";
46
+
47
+
48
+        #region Query
49
+        /// <summary>
50
+        /// 查询机构同步的最新记录
51
+        /// </summary>
52
+        /// <returns></returns>
53
+        public List<Dictionary<string, string>> QuerySyncInfo()
54
+        {
55
+            var resp = AICapacity.GetInstence().AIRequest("/recon/manage/syncInfo", new Dictionary<string, string> { });
56
+            if (resp.HasError)
57
+                return null;
58
+            return resp.Value<List<Dictionary<string, string>>>("data", null);
59
+        }
60
+
61
+        public bool SyncData2Branch(string branch, Action<Tuple<int, string>> report)
62
+        {
63
+            var list = QuerySyncInfo();
64
+            if (list == null) return false;
65
+            var info = list.FirstOrDefault(x => x["branch"] == branch);
66
+            if (info == null) return false;
67
+            //网银同步任务
68
+            if (string.IsNullOrEmpty(info["ext"])) info["ext"] = "{}";
69
+            var ext = JsonConvert.DeserializeObject<Dictionary<string, string>>(info["ext"]);
70
+            return Work2Daily(branch, ext.ContainsKey("sync2netbank") ? ext["sync2netbank"] : "");
71
+            //采用同步ODS数据进行数据同步,弃用柜面的数据同步功能
72
+            //上传任务 status 0-可同步,1-上传完成,2-解析,21-解析出错,3-对账,31-对账出错,4-完结
73
+            //if (info["status"] != "0") return false;//状态允许上传时,才触发 
74
+            //return Work2Monthly(branch, info["syncIssue"]);
75
+        }
76
+        #endregion
77
+
78
+        #region Monthly
79
+        #region Dict
80
+        private static Dictionary<string, string> _ID_TYPE_ = new Dictionary<string, string>
81
+        {
82
+            {"1","身份证"},
83
+            {"2","户口簿"},
84
+            {"3","护照"},
85
+            {"4","军人证"},
86
+            {"5","回乡证"},
87
+            {"6","士兵证"},
88
+            {"7","港澳居民来往通行证"},
89
+            {"8","企业代码证"},
90
+            {"9","经营许可证"},
91
+            {"A","营业执照"},
92
+            {"B","事业法人证书 "},
93
+            {"C","工商核准号"},
94
+            {"D","其他(对公)"},
95
+            {"E","临时身份证"},
96
+            {"F","外国人居留证 "},
97
+            {"G","警官证"},
98
+            {"H","其他证件(对私)"},
99
+            {"I","台湾同胞来往通行证"},
100
+            {"J","军官证"},
101
+            {"K","文职干部证"},
102
+            {"L","军官退休证"},
103
+            {"M","文职干部退休证"},
104
+            {"N","武警身份证"},
105
+            {"O","武警士兵证"},
106
+            {"P","武警文职干部证"},
107
+            {"Q","武警军官退休证"},
108
+            {"R","武警文职干部退休证"},
109
+            {"S","机构信用代码证"},
110
+            {"T","贷款卡"},
111
+        };
112
+
113
+        private static Dictionary<string, string> _COP_SIZE_ = new Dictionary<string, string>
114
+        {
115
+            //{"1","身份证"},
116
+            {"2","大型企业"},
117
+            {"3","中型企业"},
118
+            {"4","小型企业"},
119
+            {"5","微型企业"},
120
+            {"6","小型企业"},
121
+            {"9","其他"},
122
+        };
123
+
124
+        private static Dictionary<string, string> _DD_TYPE_ = new Dictionary<string, string>
125
+        {
126
+            {"1","基本户"},
127
+            {"2","一般户"},
128
+            {"3","专用存款户"},
129
+            {"4","临时存款户"},
130
+            {"5","个人存款户(储蓄户)"},
131
+            {"6","协定(理财)户"},
132
+            {"7","公积金活期户(个人)"},
133
+            {"8","验证户"},
134
+        };
135
+
136
+        private static Dictionary<string, string> _TD_TYPE_ = new Dictionary<string, string>
137
+        {
138
+            {"0","整存整取"},
139
+            {"1","零存整取"},
140
+            {"2","整存零取"},
141
+            {"3","存本取息"},
142
+            {"4","通知存款"},
143
+            {"5","协议存款"},
144
+            {"6","定活两便"},
145
+            {"7","教育储蓄"},
146
+            {"A","利润最大化通知存款"},
147
+        };
148
+
149
+        private static Dictionary<string, string> _LN_TYPE_ = new Dictionary<string, string>
150
+        {
151
+            {"1","普通贷款"},
152
+            {"2","按揭贷款"},
153
+            {"5","承兑垫款"},
154
+            {"7","委托贷款"},
155
+            {"9","贴现"},
156
+            {"A","授信贷款"},
157
+            {"B","卡内融资、质押消费贷款"},
158
+            {"C","银/社团贷款"},
159
+        };
160
+
161
+        private static Dictionary<string, string> _AC_STS_ = new Dictionary<string, string>
162
+        {
163
+            {"0","开户待确认"},
164
+            {"1","正常"},
165
+            //{"2",""},
166
+            {"3","挂失结清"},
167
+            {"4","开户更正"},
168
+            {"5","临时销户"},
169
+            {"6","久悬"},
170
+            {"7","销户申请零余额"},
171
+            {"8","销户申请"},
172
+            {"9","挂失销户"},
173
+            {"*","销户"},
174
+            {"#","未激活"},
175
+            {"A","损坏卡更换介质申请"},
176
+        };
177
+
178
+        private static Dictionary<string, string> _LN_STS_ = new Dictionary<string, string>
179
+        {
180
+            {"1","正常"},
181
+            {"2","逾期90天内"},
182
+            {"3","呆滞"},
183
+            {"4","呆账"},
184
+            {"5","逾期90天外"},
185
+            {"8","开户未审核"},
186
+            {"9","开户撤销"},
187
+            {"*","销户"},
188
+            {"#","已出表"},
189
+        };
190
+
191
+        private static Dictionary<string, string> _CUR_NO_ = new Dictionary<string, string>
192
+        {
193
+            {"01","人民币"},
194
+        };
195
+
196
+        private static Dictionary<string, string> _CT_IND_ = new Dictionary<string, string>
197
+        {
198
+            {"1","现金"},
199
+            {"2","转账"},
200
+        };
201
+        #endregion
202
+
203
+        private string Chg2Dict(string key, Dictionary<string, string> dict)
204
+        {
205
+            //不做翻译
206
+            return key;
207
+            if (dict == null || !dict.ContainsKey(key)) return key;
208
+            return dict[key];
209
+        }
210
+
211
+        /// <summary>
212
+        /// 同步机构数据
213
+        /// </summary>
214
+        /// <param name="kinbr"></param>
215
+        /// <param name="report"></param>
216
+        /// <returns></returns>
217
+        private bool Work2Monthly(string branch, string last)
218
+        {
219
+            var current = last.ToDateTime();//上次同步截止日
220
+            var sdate = current.AddDays(1).ToString("yyyyMMdd");//设定开始日
221
+            var edate = LoginUserInfo.TradeDate.ToDateTime().AddDays(-1).ToString("yyyyMMdd");//截止到昨日
222
+            if (string.Compare(edate, sdate) < 0) return false;//截止日必须大约开始日
223
+            var regex_phone = new Regex("^1[3-9]{1}[0-9]{9}$");
224
+            //数据载体
225
+            var data = new List<Tuple<Dictionary<string, string>, List<Account>>>();
226
+            //公共 
227
+            var cif_basic_inf = Table("cif_basic_inf", " \"TYPE\" ='2' AND FILLER1 = '" + branch + "'");//客户基本信息
228
+            var cif = string.Format(cif_basic_inf.Namespace, "CIF_NO");
229
+            var add_info = Table("add_info", "INFO_TYPE ='1'");//联系人表
230
+            var cif_cop_inf = Table("cif_cop_inf", "CIF_NO in (" + cif + ")");//对公客户信息表
231
+            var cif_id_code_rel = Table("cif_id_code_rel", "CIF_NO in (" + cif + ")");//客户主证件信息表  //MAIN_FLAG ='1' and   去掉获取主证件的类型
232
+            var cif_mger_rel = Table("cif_mger_rel", "CIF_NO in (" + cif + ") and STAT = '1'");//客户经理关系
233
+            var note_parm = Table("note_parm", "1=1", new List<string> { "NOTE_TYPE", "NAME" }).Select().ToDictionary(x => x["NOTE_TYPE"].ToString(), x => x["NAME"].ToString());//凭证类型
234
+            var prdt_acc_no = Table("prdt_acc_no", "DATA_CODE = '0152'");//科目和产品关系信息表
235
+            var acc_no = string.Format(prdt_acc_no.Namespace, "ACC_NO");
236
+
237
+            var com_item = Table("com_item", "ACC_NO in (" + acc_no + ")"); //科目名称
238
+            foreach (DataRow row in cif_basic_inf.Rows)//装载客户信息
239
+            {
240
+                var cifcopinf = cif_cop_inf.Select("CIF_NO = '" + row["CIF_NO"].ToString() + "'").FirstOrDefault();
241
+                if (cifcopinf == null) continue;
242
+                var cifidcoderel = cif_id_code_rel.Select("MAIN_FLAG ='1' and CIF_NO = '" + row["CIF_NO"].ToString() + "'").FirstOrDefault();
243
+                if (cifidcoderel == null)
244
+                {
245
+                    cifidcoderel = cif_id_code_rel.Select("CIF_NO = '" + row["CIF_NO"].ToString() + "'").FirstOrDefault();
246
+                }
247
+                if (cifidcoderel == null) continue;
248
+
249
+                var dict = new Dictionary<string, string>
250
+                {
251
+                    {"客户编码", row["CIF_NO"].ToString()},
252
+                    {"主证件类型", Chg2Dict(cifidcoderel["ID_TYPE"].ToString(),_ID_TYPE_)},
253
+                    {"主证件号码", cifidcoderel["ID_NO"].ToString()},
254
+                    {"开户网点", row["FILLER1"].ToString()},
255
+                    {"客户名称", row["NAME"].ToString()},
256
+                    {"企业规模", Chg2Dict(cifcopinf["COP_SIZE"].ToString(),_COP_SIZE_)},
257
+                    {"企业联系人", cifcopinf["LINK_MAN"].ToString()},
258
+                    {"固定电话", cifcopinf["TELEPHONE"].ToString()},
259
+                    {"法人姓名", cifcopinf["AP_NAME"].ToString()},
260
+                    {"法人证件类型", cifcopinf["AP_ID_TYPE"].ToString()},
261
+                    {"法人证件号码", cifcopinf["AP_ID_NO"].ToString()},
262
+                };
263
+                //检测手机号合法性
264
+                if (!regex_phone.IsMatch(dict["固定电话"]))
265
+                {
266
+                    if (string.IsNullOrEmpty(dict["固定电话"]) || regex_phone.IsMatch(cifcopinf["PHONE"].ToString()))
267
+                        dict["固定电话"] = cifcopinf["PHONE"].ToString();
268
+                }
269
+                data.Add(new Tuple<Dictionary<string, string>, List<Account>>(dict, new List<Account>()));
270
+            }
271
+            //处理活期
272
+            var dd_mst = Table("dd_mst", "CIF_NO in (" + cif + ") and AC_STS <> '*' and AC_SEQN < '9999'");//账户序号>9999的专户暂不纳入
273
+            var acid = string.Format(dd_mst.Namespace, "ac_id");
274
+            var mdm_ac_rel2dd_mst = Table("mdm_ac_rel", "ac_id in(" + acid + ")", new List<string> { "AC_NO", "AC_ID", "AC_SEQN", "NAME", "NOTE_STS" });
275
+            var dd_mst_hst = Table("dd_mst_hst", "TX_DATE >= '" + sdate + "' and TX_DATE <= '" + edate + "' and ac_id in(" + acid + ")");
276
+            var dd_parm = Table("dd_parm", "CIF_TYPE <> '1'", new List<string> { "PRDT_NO", "TITLE" });
277
+            data.ForEach(x => //装载活期账户数据
278
+            {
279
+                var cifno = x.Item1["客户编码"];
280
+                dd_mst.Select("CIF_NO = '" + cifno + "'").ToList().ForEach(row =>
281
+                {
282
+                    //mdm_ac_rel表中的 ac_seqn 不是账户序号
283
+                   // var where = "AC_ID = '" + row["AC_ID"].ToString() + "' and AC_SEQN = '" + row["AC_SEQN"].ToString() + "'";
284
+                    var where = "AC_ID = '" + row["AC_ID"].ToString() + "'";
285
+                    var mdmacrel = mdm_ac_rel2dd_mst.Select(where).FirstOrDefault();
286
+                    if (mdmacrel == null)
287
+                    {
288
+                        return;
289
+                    }
290
+                    var addinfo = add_info.Select("AC_NO = '" + mdmacrel["AC_NO"].ToString() + "'").Where(a => regex_phone.IsMatch(a["INFO4"].ToString()) || regex_phone.IsMatch(a["INFO6"].ToString())).ToArray();
291
+                    var ddparm = dd_parm.Select("PRDT_NO = '" + row["PRDT_NO"].ToString() + "'").FirstOrDefault();
292
+                    var prdtaccno = prdt_acc_no.Select("PRDT_NO = '" + row["PRDT_NO"].ToString() + "'").FirstOrDefault();
293
+                    var comitem = com_item.Select("ACC_NO = '" + prdtaccno["ACC_NO"].ToString() + "'").FirstOrDefault();
294
+                    var account = new Account
295
+                    {
296
+                        KHH = cifno,
297
+                        ZH = mdmacrel["AC_NO"].ToString(),
298
+                        ZHLX = Chg2Dict(row["AC_TYPE"].ToString(), _DD_TYPE_),
299
+                        ZHMC = mdmacrel["NAME"].ToString(),
300
+                        ZHXH = row["AC_SEQN"].ToString(),
301
+                        ZHZT = Chg2Dict(row["AC_STS"].ToString(), _AC_STS_),
302
+                        BZ = Chg2Dict(row["CUR_NO"].ToString(), _CUR_NO_),
303
+                        JGH = row["OPN_BR_NO"].ToString(),
304
+                        CPBH = ddparm["PRDT_NO"].ToString(),
305
+                        CPMC = ddparm["TITLE"].ToString(),
306
+                        KHJL = string.Join(",", cif_mger_rel.Select(where).Select(i => i["MANG"].ToString())),
307
+                        LXRXX = string.Format("{0:D2}@{1}", addinfo.Length, string.Join("@", addinfo.Select(i => string.Format("{0}@{1}@{2}@{3}@{4}", i["INFO1"].ToString(), i["INFO2"].ToString(), i["INFO3"].ToString(), regex_phone.IsMatch(i["INFO4"].ToString()) ? i["INFO4"].ToString() : i["INFO6"].ToString(), string.Empty)))),
308
+                        ZHZL = "0",
309
+                        YE = row["YS_BAL"].ToString(),
310
+                        KMH = prdtaccno["ACC_NO"].ToString(),
311
+                        KMMC = comitem["ACC_NAME"].ToString(),
312
+                        Details = new List<Dictionary<string, string>>(),
313
+                    };
314
+                    dd_mst_hst.Select(where).ToList().ForEach(i =>
315
+                    {
316
+                        var dict = new Dictionary<string, string>
317
+                        {
318
+                            {"序号", account.ZHXH},
319
+                            {"交易日期", i["TX_DATE"].ToString()},
320
+                            {"现转", Chg2Dict(i["CT_IND"].ToString(),_CT_IND_)},
321
+                            {"摘要", i["BRF"].ToString()},
322
+                            {"凭证号码", i["NOTE_NO"].ToString()},
323
+                            {"凭证类型", Chg2Dict(i["NOTE_TYPE"].ToString(),note_parm)},
324
+                            {"借方发生额", i["ADD_IND"].ToString() == "0" ? i["TX_AMT"].ToString() : "0.00"},
325
+                            {"贷方发生额", i["ADD_IND"].ToString() == "1" ? i["TX_AMT"].ToString() : "0.00"},
326
+                            {"余额", i["BAL"].ToString()},
327
+                            {"记账柜员", i["TEL"].ToString()},
328
+                            {"记账流水", i["TRACE_NO"].ToString()},
329
+                            {"对方户名", i["DF_AC_NAME"].ToString()},
330
+                        };
331
+                        account.Details.Add(dict);
332
+                    });
333
+                    x.Item2.Add(account);
334
+                });
335
+            });
336
+            //处理定期
337
+            var td_mst = Table("td_mst", "CIF_NO in (" + cif + ") and AC_STS <> '*' and AC_SEQN < '9999'");
338
+            acid = string.Format(td_mst.Namespace, "ac_id");
339
+            var mdm_ac_rel2td_mst = Table("mdm_ac_rel", "ac_id in(" + acid + ")", new List<string> { "AC_NO", "AC_ID", "AC_SEQN", "NAME", "NOTE_STS" });
340
+            var td_mst_hst = Table("td_mst_hst", "TX_DATE >= '" + sdate + "' and TX_DATE <= '" + edate + "' and ac_id in(" + acid + ")");
341
+            var td_parm = Table("td_parm", "CIF_TYPE <> '1'", new List<string> { "PRDT_NO", "TITLE", "TD_TYPE" });
342
+            data.ForEach(x => //装载定期账户数据
343
+            {
344
+                var cifno = x.Item1["客户编码"];
345
+                td_mst.Select("CIF_NO = '" + cifno + "'").ToList().ForEach(row =>
346
+                {
347
+                    //mdm_ac_rel表中的 ac_seqn 不是账户序号
348
+                  //  var where = "AC_ID = '" + row["AC_ID"].ToString() + "' and AC_SEQN = '" + row["AC_SEQN"].ToString() + "'";
349
+                    var where = "AC_ID = '" + row["AC_ID"].ToString() + "'";
350
+                    var mdmacrel = mdm_ac_rel2td_mst.Select(where).FirstOrDefault();
351
+                    if (mdmacrel == null) return;
352
+                    var addinfo = add_info.Select("AC_NO = '" + mdmacrel["AC_NO"].ToString() + "'").Where(a => regex_phone.IsMatch(a["INFO4"].ToString()) || regex_phone.IsMatch(a["INFO6"].ToString())).ToArray();
353
+                    var tdparm = td_parm.Select("PRDT_NO = '" + row["PRDT_NO"].ToString() + "'").FirstOrDefault();
354
+                    var prdtaccno = prdt_acc_no.Select("PRDT_NO = '" + row["PRDT_NO"].ToString() + "'").FirstOrDefault();
355
+                    var comitem = com_item.Select("ACC_NO = '" + prdtaccno["ACC_NO"].ToString() + "'").FirstOrDefault();
356
+                    var account = new Account
357
+                    {
358
+                        KHH = cifno,
359
+                        ZH = mdmacrel["AC_NO"].ToString(),
360
+                        ZHLX = Chg2Dict(tdparm["TD_TYPE"].ToString(), _TD_TYPE_),
361
+                        ZHMC = mdmacrel["NAME"].ToString(),
362
+                        ZHXH = row["AC_SEQN"].ToString(),
363
+                        ZHZT = Chg2Dict(row["AC_STS"].ToString(), _AC_STS_),
364
+                        BZ = Chg2Dict(row["CUR_NO"].ToString(), _CUR_NO_),
365
+                        JGH = row["OPN_BR_NO"].ToString(),
366
+                        CPBH = tdparm["PRDT_NO"].ToString(),
367
+                        CPMC = tdparm["TITLE"].ToString(),
368
+                        KHJL = string.Join(",", cif_mger_rel.Select(where).Select(i => i["MANG"].ToString())),
369
+                        LXRXX = string.Format("{0:D2}@{1}", addinfo.Length, string.Join("@", addinfo.Select(i => string.Format("{0}@{1}@{2}@{3}@{4}", i["INFO1"].ToString(), i["INFO2"].ToString(), i["INFO3"].ToString(), regex_phone.IsMatch(i["INFO4"].ToString()) ? i["INFO4"].ToString() : i["INFO6"].ToString(), string.Empty)))),
370
+                        ZHZL = "1",
371
+                        YE = row["YS_BAL"].ToString(),
372
+                        KMH = prdtaccno["ACC_NO"].ToString(),
373
+                        KMMC = comitem["ACC_NAME"].ToString(),
374
+                        Details = new List<Dictionary<string, string>>(),
375
+                    };
376
+                    td_mst_hst.Select(where).ToList().ForEach(i =>
377
+                    {
378
+                        var dict = new Dictionary<string, string>
379
+                        {
380
+                            {"序号", account.ZHXH},
381
+                            {"交易日期", i["TX_DATE"].ToString()},
382
+                            {"现转", Chg2Dict(i["CT_IND"].ToString(),_CT_IND_)},
383
+                            {"摘要", i["BRF"].ToString()},
384
+                            {"凭证号码", i["NOTE_NO"].ToString()},
385
+                            {"凭证类型", Chg2Dict(i["NOTE_TYPE"].ToString(),note_parm)},
386
+                            {"借方发生额", i["ADD_IND"].ToString() == "0" ? i["TX_AMT"].ToString() : "0.00"},
387
+                            {"贷方发生额", i["ADD_IND"].ToString() == "1" ? i["TX_AMT"].ToString() : "0.00"},
388
+                            {"余额", i["BAL"].ToString()},
389
+                            {"记账柜员", i["TEL"].ToString()},
390
+                            {"记账流水", i["TRACE_NO"].ToString()},
391
+                            {"对方户名", i["DF_NAME"].ToString()},
392
+                        };
393
+                        account.Details.Add(dict);
394
+                    });
395
+                    x.Item2.Add(account);
396
+                });
397
+            });
398
+            //处理贷款
399
+            var ln_mst = Table("ln_mst", "CIF_NO in (" + cif + ") and AC_STS <> '*' and AC_SEQN < '9999'");
400
+            acid = string.Format(ln_mst.Namespace, "ac_id");
401
+            var mdm_ac_rel2ln_mst = Table("mdm_ac_rel", "ac_id in(" + acid + ")", new List<string> { "AC_NO", "AC_ID", "AC_SEQN", "NAME", "NOTE_STS" });
402
+            var ln_mst_hst = Table("ln_mst_hst", "TX_DATE >= '" + sdate + "' and TX_DATE <= '" + edate + "' and ac_id in(" + acid + ")");
403
+            var ln_parm = Table("ln_parm", "CIF_TYPE <> '1'", new List<string> { "PRDT_NO", "TITLE", "LN_TYPE" });
404
+            data.ForEach(x => //装载定期账户数据
405
+            {
406
+                var cifno = x.Item1["客户编码"];
407
+                ln_mst.Select("CIF_NO = '" + cifno + "'").ToList().ForEach(row =>
408
+                {
409
+                    //mdm_ac_rel表中的 ac_seqn 不是账户序号
410
+                    //  var where = "AC_ID = '" + row["AC_ID"].ToString() + "' and AC_SEQN = '" + row["AC_SEQN"].ToString() + "'";
411
+                    var where = "AC_ID = '" + row["AC_ID"].ToString() + "'";
412
+                    var mdmacrel = mdm_ac_rel2ln_mst.Select(where).FirstOrDefault();
413
+                    if (mdmacrel == null) return;
414
+                    var addinfo = add_info.Select("AC_NO = '" + mdmacrel["AC_NO"].ToString() + "'").Where(a => regex_phone.IsMatch(a["INFO4"].ToString()) || regex_phone.IsMatch(a["INFO6"].ToString())).ToArray();
415
+                    var lnparm = ln_parm.Select("PRDT_NO = '" + row["PRDT_NO"].ToString() + "'").FirstOrDefault();
416
+                    var prdtaccno = prdt_acc_no.Select("PRDT_NO = '" + row["PRDT_NO"].ToString() + "'").FirstOrDefault();
417
+                    var comitem = com_item.Select("ACC_NO = '" + prdtaccno["ACC_NO"].ToString() + "'").FirstOrDefault();
418
+                    var account = new Account
419
+                    {
420
+                        KHH = cifno,
421
+                        ZH = mdmacrel["AC_NO"].ToString(),
422
+                        ZHLX = Chg2Dict(lnparm["LN_TYPE"].ToString(), _LN_TYPE_),
423
+                        ZHMC = mdmacrel["NAME"].ToString(),
424
+                        ZHXH = row["AC_SEQN"].ToString(),
425
+                        ZHZT = Chg2Dict(row["AC_STS"].ToString(), _LN_STS_),
426
+                        BZ = Chg2Dict(row["CUR_NO"].ToString(), _CUR_NO_),
427
+                        JGH = row["OPN_BR_NO"].ToString(),
428
+                        CPBH = lnparm["PRDT_NO"].ToString(),
429
+                        CPMC = lnparm["TITLE"].ToString(),
430
+                        KHJL = string.Join(",", cif_mger_rel.Select(where).Select(i => i["MANG"].ToString())),
431
+                        LXRXX = string.Format("{0:D2}@{1}", addinfo.Length, string.Join("@", addinfo.Select(i => string.Format("{0}@{1}@{2}@{3}@{4}", i["INFO1"].ToString(), i["INFO2"].ToString(), i["INFO3"].ToString(), regex_phone.IsMatch(i["INFO4"].ToString()) ? i["INFO4"].ToString() : i["INFO6"].ToString(), string.Empty)))),
432
+                        ZHZL = "2",
433
+                        YE = row["YS_BAL"].ToString(),
434
+                        KMH = prdtaccno["ACC_NO"].ToString(),
435
+                        KMMC = comitem["ACC_NAME"].ToString(),
436
+                        Details = new List<Dictionary<string, string>>(),
437
+                    };
438
+                    ln_mst_hst.Select(where).ToList().ForEach(i =>
439
+                    {
440
+                        var dict = new Dictionary<string, string>
441
+                        {
442
+                            {"序号", account.ZHXH},
443
+                            {"交易日期", i["TX_DATE"].ToString()},
444
+                            {"现转", Chg2Dict(i["CT_IND"].ToString(),_CT_IND_)},
445
+                            {"摘要", i["BRF"].ToString()},
446
+                            {"凭证号码", i["NOTE_NO"].ToString()},
447
+                            {"凭证类型", Chg2Dict(i["NOTE_TYPE"].ToString(),note_parm)},
448
+                            {"借方发生额", i["ADD_IND"].ToString() == "1" ? i["TX_AMT"].ToString() : "0.00"},
449
+                            {"贷方发生额", i["ADD_IND"].ToString() == "0" ? i["TX_AMT"].ToString() : "0.00"},
450
+                            {"余额", i["BAL"].ToString()},
451
+                            {"记账柜员", i["TEL"].ToString()},
452
+                            {"记账流水", i["TRACE_NO"].ToString()},
453
+                            {"对方户名", i["DF_AC_NAME"].ToString()},
454
+                        };
455
+                        account.Details.Add(dict);
456
+                    });
457
+                    x.Item2.Add(account);
458
+                });
459
+            });
460
+            if (data.Count == 0)
461
+            {
462
+                return false;
463
+            }
464
+            //执行压缩上传,剔除空白客户
465
+            var zip = Zip(data.Where(x => x.Item2.Count > 0).ToList(), branch, edate);
466
+            if (zip == null) return false;
467
+            //上传文件服务器
468
+            var resp = AICapacity.GetInstence().UploadFile(zip, string.Format("Reconciles_{0}_{1}.zip", branch, edate), 10);//留存10天
469
+            if (resp.HasError) return false;
470
+            //通知银企对账平台
471
+            var req = new UploadData
472
+            {
473
+                branch = branch,
474
+                fds = resp.Value("data", ""),
475
+                syncIssue = edate,
476
+            };
477
+            resp = AICapacity.GetInstence().AIRequest("/recon/manage/uploadData", req);
478
+            return !resp.HasError;
479
+        }
480
+
481
+        class UploadData : AICapacity.Req
482
+        {
483
+            public string branch { get; set; }
484
+            public string fds { get; set; }
485
+            public string syncIssue { get; set; }
486
+        }
487
+
488
+        /// <summary>
489
+        /// 产生压缩文件
490
+        /// </summary>
491
+        /// <param name="data"></param>
492
+        /// <returns></returns>
493
+        private byte[] Zip(List<Tuple<Dictionary<string, string>, List<Account>>> data, string branch, string date)
494
+        {
495
+            byte[] zipData = null;
496
+            using (var ms = new MemoryStream())
497
+            {
498
+                var encoding = Encoding.UTF8;
499
+                var zipStream = new ZipOutputStream(ms);
500
+                zipStream.SetLevel(6);
501
+                Crc32 crc = new Crc32();
502
+                //var entry = new ZipEntry("20220520/");//一级目录
503
+                //zipStream.PutNextEntry(entry);
504
+                //处理客户文件
505
+                var sb = new StringBuilder();
506
+                sb.AppendLine("~" + string.Join(Separator, data.ElementAt(0).Item1.Keys));
507
+                data.ToList().ForEach(x => sb.AppendLine(string.Join(Separator, x.Item1.Values)));
508
+                var buffer = encoding.GetBytes(sb.ToString());
509
+                ZipBuffer(buffer, zipStream, string.Format("{0}/{1}_customer.txt", date, branch));
510
+                //处理账户文件
511
+                sb = new StringBuilder();
512
+                string customerheadle = "~客户号" + Separator + "账号" + Separator + "账户类型" + Separator + "账户种类" + Separator + "产品编号" + Separator + "产品名称" + Separator + "账户名称" + Separator + "账户序号" + Separator + "账户状态" + Separator + "余额" + Separator + "客户经理" + Separator + "交易明细" + Separator + "机构号" + Separator + "联系人信息" + Separator + "明细标志" + Separator + "币种" + Separator + "科目号" + Separator + "科目名称" + Separator;
513
+                sb.AppendLine(customerheadle);
514
+                data.Select(x => x.Item2).ToList().ForEach(list =>
515
+                {
516
+                    list.ForEach(acc =>
517
+                    {
518
+                        //处理账户明细
519
+                        var detail = string.Empty;
520
+                        if (acc.Details.Count > 0)
521
+                        {
522
+                            detail = string.Format("{0}_{1}.txt", acc.ZH, acc.ZHXH);
523
+                            var hst = new StringBuilder();
524
+                            hst.AppendLine("~" + string.Join(Separator, acc.Details[0].Keys));
525
+                            acc.Details.ForEach(x => hst.AppendLine(string.Join(Separator, x.Values)));
526
+                            buffer = encoding.GetBytes(hst.ToString());
527
+                            ZipBuffer(buffer, zipStream, string.Format("{0}/{1}", date, detail));
528
+                        }
529
+                        var item = new List<string>
530
+                        {
531
+                            acc.KHH,
532
+                            acc.ZH,
533
+                            acc.ZHLX,
534
+                            acc.ZHZL,
535
+                            acc.CPBH,
536
+                            acc.CPMC,
537
+                            acc.ZHMC,
538
+                            acc.ZHXH,
539
+                            acc.ZHZT,
540
+                            acc.YE,
541
+                            acc.KHJL,
542
+                            detail,
543
+                            acc.JGH,
544
+                            acc.LXRXX,
545
+                            string.IsNullOrEmpty(detail)?"2":"1",
546
+                            acc.BZ,
547
+                            acc.KMH,
548
+                            acc.KMMC,
549
+                        };
550
+                        sb.AppendLine(string.Join(Separator, item));
551
+                    });
552
+                });
553
+                var name = string.Format("{0}/{1}_account.txt", date, branch);
554
+                buffer = encoding.GetBytes(sb.ToString());
555
+                ZipBuffer(buffer, zipStream, name);
556
+                //写入到文件
557
+                zipStream.CloseEntry();
558
+                zipStream.Flush();
559
+                zipStream.Close();
560
+                zipData = ms.ToArray();
561
+            }
562
+            return zipData;
563
+        }
564
+
565
+        private void ZipBuffer(byte[] buffer, ZipOutputStream zipStream, string path)
566
+        {
567
+            Crc32 crc = new Crc32();
568
+            var entry = new ZipEntry(path);
569
+            entry.DateTime = DateTime.Now;
570
+            entry.Size = buffer.Length;
571
+            crc.Reset();
572
+            crc.Update(buffer);
573
+            entry.Crc = crc.Value;
574
+            zipStream.PutNextEntry(entry);
575
+            zipStream.Write(buffer, 0, buffer.Length);
576
+        }
577
+
578
+        #region table方案
579
+        /// <summary>
580
+        /// ~客户号|账号|账户类型|账户种类|产品名称|账户名称|账户序号|账户状态|余额|客户经理|交易明细|机构号|联系人信息|明细标志|币种|
581
+        /// </summary>
582
+        private class Account
583
+        {
584
+            /// <summary>
585
+            /// 客户号
586
+            /// </summary>
587
+            public string KHH { get; set; }
588
+            /// <summary>
589
+            /// 账号
590
+            /// </summary>
591
+            public string ZH { get; set; }
592
+            /// <summary>
593
+            /// 账户类型
594
+            /// </summary>
595
+            public string ZHLX { get; set; }
596
+            /// <summary>
597
+            /// 账户种类
598
+            /// </summary>
599
+            public string ZHZL { get; set; }
600
+            /// <summary>
601
+            /// 产品名称
602
+            /// </summary>
603
+            public string CPMC { get; set; }
604
+            /// <summary>
605
+            /// 产品编号
606
+            /// </summary>
607
+            public string CPBH { get; set; }
608
+            /// <summary>
609
+            /// 账户名称
610
+            /// </summary>
611
+            public string ZHMC { get; set; }
612
+            /// <summary>
613
+            /// 账户序号
614
+            /// </summary>
615
+            public string ZHXH { get; set; }
616
+            /// <summary>
617
+            /// 账户状态
618
+            /// </summary>
619
+            public string ZHZT { get; set; }
620
+            /// <summary>
621
+            /// 余额
622
+            /// </summary>
623
+            public string YE { get; set; }
624
+            /// <summary>
625
+            /// 客户经理
626
+            /// </summary>
627
+            public string KHJL { get; set; }
628
+            /// <summary>
629
+            /// 机构号
630
+            /// </summary>
631
+            public string JGH { get; set; }
632
+            /// <summary>
633
+            /// 联系人信息
634
+            /// </summary>
635
+            public string LXRXX { get; set; }
636
+            /// <summary>
637
+            /// 币种
638
+            /// </summary>
639
+            public string BZ { get; set; }
640
+            /// <summary>
641
+            /// 科目号
642
+            /// </summary>
643
+            public string KMH { get; set; }
644
+            /// <summary>
645
+            /// 科目名称
646
+            /// </summary>
647
+            public string KMMC { get; set; }
648
+            /// <summary>
649
+            /// 明细记录
650
+            /// </summary>
651
+            public List<Dictionary<string, string>> Details { get; set; }
652
+        }
653
+
654
+        private DataTable Table(string table, string where, List<string> cols = null)
655
+        {
656
+            var dt = new DataTable(table);
657
+            var sql = string.Format("select {0} from {1} where 1=1 and {2} ", "{0}", table, where);
658
+            dt.Namespace = sql;
659
+            var field = "*";
660
+            if (cols == null)
661
+                cols = Select("select column_name from user_tab_columns where table_name = '" + table.ToUpper() + "' order by  column_id ", "列名").Select(x => x["列名"].ToUpper()).ToList();
662
+            else
663
+                field = string.Join(",", cols);
664
+            cols.ForEach(x => dt.Columns.Add(x));
665
+            var rows = Select(string.Format(sql, field), string.Join("|", cols));
666
+            rows.ForEach(row =>
667
+            {
668
+                dt.Rows.Add(row.Values.ToArray());
669
+            });
670
+            return dt;
671
+        }
672
+
673
+        private List<Dictionary<string, string>> Select(string sql, string format)
674
+        {
675
+            Message msg = new Message();
676
+            SystemFunction.InitFd(null, msg);
677
+            SystemFunction.CommSend(null, msg);
678
+            msg.Fd16 = "9598";
679
+            msg.Fd123 = sql;
680
+            msg.DoTransit();
681
+            if (msg.Fd12 != "0000")
682
+            {
683
+                Platform.Common.LogSystem.PlatformLogger.SystemErrorInfo("Reconciles.Select:查询失败!" + SystemFunction.GetError(null, msg), null);
684
+                return null;
685
+            }
686
+            return TFInput.AnilyzeFileData(msg.FileData, format, x => x);
687
+        }
688
+        #endregion
689
+        #endregion
690
+
691
+        #region Daily
692
+
693
+
694
+
695
+        /// <summary>
696
+        /// 网银文件列
697
+        /// </summary>
698
+        private List<string> netBankcomList = new List<string>();
699
+
700
+
701
+        private bool Work2Daily(string branch, string last)
702
+        {
703
+            var date = LoginUserInfo.TradeDate.ToDateTime().AddDays(-1);
704
+            var start = string.IsNullOrEmpty(last) ? (date.ToString("yyyyMM") + "01") : last.ToDateTime().AddDays(1).ToString("yyyyMMdd");
705
+            var end = date.ToString("yyyyMMdd");
706
+            if (start.CompareTo(end) > 0) return false;//无效区间
707
+            var dt = Recon2Netbank(LoginUserInfo.KinbrNo, start, end);
708
+            //提取数据,调用银企对账接口处理同步,记得更新同步状态ext内sync2netbank=end
709
+            //没有获取到网银数据
710
+            if (dt == null)
711
+            {
712
+                return false;
713
+            }
714
+            return uploadReconDetail(branch, end, dt);
715
+        }
716
+        /// <summary>
717
+        /// 网银数据上传和组装txt
718
+        /// </summary>
719
+        /// <param name="branch"></param>
720
+        /// <param name="end"></param>
721
+        /// <param name="dt"></param>
722
+        /// <returns></returns>
723
+        private bool uploadReconDetail(string branch, string end, DataTable dt)
724
+        {
725
+            byte[] zipData = null;
726
+            string fileName = string.Format("{0}/{1}_reconDetailInfo", end, branch);
727
+            using (var ms = new MemoryStream())
728
+            {
729
+                var encoding = Encoding.UTF8;
730
+                var zipStream = new ZipOutputStream(ms);
731
+                zipStream.SetLevel(6);
732
+                Crc32 crc = new Crc32();
733
+                //处理客户文件
734
+                var sb = new StringBuilder();
735
+                sb.AppendLine("~" + string.Join(Separator, netBankcomList.ToArray()) + Separator);
736
+                foreach (DataRow row in dt.Rows)
737
+                {
738
+                    string rowstring = string.Empty;
739
+
740
+                    foreach (var item in netBankcomList)
741
+                    {
742
+                        rowstring += row[item].ToString() + Separator;
743
+                    }
744
+
745
+                    sb.AppendLine(rowstring);
746
+                }
747
+                var buffer = encoding.GetBytes(sb.ToString());
748
+
749
+                ZipBuffer(buffer, zipStream, fileName+".txt");
750
+                //写入到文件
751
+                zipStream.CloseEntry();
752
+                zipStream.Flush();
753
+                zipStream.Close();
754
+                zipData = ms.ToArray();
755
+            }
756
+            var resp = AICapacity.GetInstence().UploadFile(zipData, fileName+".zip", 10);//留存10天
757
+            if (resp.HasError) return false;
758
+
759
+            //通知银企对账平台
760
+            var req = new UploadNetbank
761
+            {
762
+                checkChannel = "NetBank",//渠道类型
763
+                filePath = resp.Value("data", ""),
764
+                syncEndDate = end,//结束日期
765
+                branch = LoginUserInfo.KinbrNo//机构号
766
+            };
767
+            resp = AICapacity.GetInstence().AIRequest("/recon/manage/uploadReconDetailByTxt", req);
768
+            return !resp.HasError;
769
+        }
770
+
771
+        /// <summary>
772
+        /// 文件 转 Byte[]
773
+        /// </summary>
774
+        /// <param name="fileUrl"></param>
775
+        /// <returns></returns>
776
+        public byte[] FileToByteArray(string fileUrl)
777
+        {
778
+            using (FileStream fs = new FileStream(fileUrl, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
779
+            {
780
+                byte[] buffur = new byte[fs.Length];
781
+                fs.Read(buffur, 0, (int)buffur.Length);
782
+                return buffur;
783
+            }
784
+        }
785
+
786
+        /// <summary>
787
+        /// 网银对账数据类
788
+        /// </summary>
789
+        class UploadNetbank : AICapacity.Req
790
+        {
791
+            public string checkChannel { get; set; }
792
+            public string filePath { get; set; }
793
+            public string syncEndDate { get; set; }
794
+            public string branch { get; set; }
795
+        }
796
+        /// <summary>
797
+        /// 查询网银对账记录
798
+        /// </summary>
799
+        /// <param name="branch"></param>
800
+        /// <param name="start"></param>
801
+        /// <param name="end"></param>
802
+        /// <returns></returns>
803
+        private DataTable Recon2Netbank(string branch, string start, string end)
804
+        {
805
+            var sb = new StringBuilder();
806
+            var pagenum = 1;
807
+            while (true)
808
+            {
809
+                Message message = new Message(Message.BitMap.Agn);
810
+                SystemFunction.InitFd(null, message);
811
+                SystemFunction.CommSend(null, message);
812
+                message.Fd16 = "3004";
813
+                message.Fd63 = "1";//对账标志
814
+                message.Fd38 = branch;//本机构
815
+                message.Fd18 = "ENT";
816
+                message.Fd25 = start;//对账日期-开始
817
+                message.Fd37 = end;//对账日期-截止
818
+                message.Fd30 = pagenum.ToString();//页码
819
+                message.TransitNode = Communication.MessageHelper.TransitType.CallAgn_CZYYSW;
820
+                message.DoTransit();
821
+                if (message.Fd12 == "0000")
822
+                {
823
+                    if (string.IsNullOrEmpty(message.FileData))
824
+                        break;
825
+                    sb.Append(message.FileData);
826
+                }
827
+                else
828
+                {
829
+                    sb.Clear();
830
+                    break;
831
+                }
832
+                pagenum++;
833
+            }
834
+            if (sb.Length == 0) return null;
835
+            var sr = new StringReader(sb.ToString());
836
+            var dt = new DataTable();
837
+            #region 原始处理数据情况
838
+            //dt.Columns.Add("账号");
839
+            //dt.Columns.Add("账户名称");
840
+            //dt.Columns.Add("对账日期");
841
+            //dt.Columns.Add("对账状态");//{ { "0", "未对账" }, { "1", "余额相符" }, { "2", "余额不符" } }
842
+            //dt.Columns.Add("导入日期");
843
+            //while (true)
844
+            //{
845
+            //    var line = sr.ReadLine();
846
+            //    if (string.IsNullOrEmpty(line)) break;
847
+            //    if (line.StartsWith("~")) continue;
848
+            //    var tmp = line.Split('|').Take(5).ToArray();//注意,中牟的格式与其他行有异
849
+            //    //只有中牟才返回了导入日期,其他行需要另处理
850
+            //    if (ServiceSettings.BankFlag != "V0")
851
+            //    {
852
+            //        //TODO:其他行没有返回导入日期,可能需要用单笔再循环查询;暂采用对账日期计算上月底
853
+            //        tmp[4] = (tmp[2].Substring(6) + "01").ToDateTime().AddDays(-1).ToString("yyyyMMdd");
854
+            //    }
855
+            //    dt.Rows.Add(tmp);
856
+            //} 
857
+            #endregion
858
+            netBankcomList.Clear();
859
+            netBankcomList.Add("账号");
860
+            netBankcomList.Add("账户序号");
861
+            netBankcomList.Add("对账期次");
862
+            netBankcomList.Add("核心余额");
863
+            netBankcomList.Add("核心余额日期");
864
+            netBankcomList.Add("用户余额");
865
+            netBankcomList.Add("用户余额备注");
866
+            netBankcomList.Add("对账时间");
867
+            netBankcomList.Add("完结时间");
868
+            netBankcomList.Add("对账方式");//{ { "0", "周期对账" }, { "1", "相对对账" } }
869
+            netBankcomList.Add("对账状态");//对账状态 0 未对账,1 待授权,2 差错处理中,3 对账完成
870
+            netBankcomList.Add("对账结果");//{ { "0", "未对账" }, { "1", "余额相符" }, { "2", "余额不符" } }
871
+            netBankcomList.Add("客户经理");
872
+
873
+
874
+            foreach (var item in netBankcomList)
875
+            {
876
+                dt.Columns.Add(item);
877
+            }
878
+            while (true)
879
+            {
880
+                var line = sr.ReadLine();
881
+                if (string.IsNullOrEmpty(line)) break;
882
+                if (line.StartsWith("~")) continue;
883
+                var tmp = line.Split('|').Take(6).ToArray();//注意,返回的格式是6列
884
+                string[] row = new string[13];
885
+                //只有中牟才返回了导入日期,其他行需要另处理
886
+               // if (ServiceSettings.BankFlag == "V0" || ServiceSettings.BankFlag == "V8" || ServiceSettings.BankFlag == "V23" || (ServiceSettings.BankFlag == "V2" && LoginUserInfo.KinbrNo.Substring(0, 3) == "152"))
887
+                #region 返回6列
888
+                //@账号 | @账户名称 | @对账日期 | @对账状态|余额日期 |@对账余额
889
+                if (tmp[5]!=null&& tmp[5].StartsWith("."))
890
+                {
891
+                    tmp[5] = "0" + tmp[5];
892
+                }
893
+                row[0] = tmp[0];	    //账号
894
+                row[1] = "1";	    //账户序号
895
+                row[2] = (tmp[4].Substring(0, 6) + "01").ToDateTime().AddMonths(1).ToString("yyyyMMdd");	 //对账期次   //对账期次
896
+                row[3] = tmp[5];	    //核心余额
897
+                row[4] = tmp[4];	    //核心余额时间
898
+                row[5] = tmp[3] == "1" ? tmp[5] : string.Empty;//    //用户余额
899
+                row[6] = string.Empty;	    //用户余额备注
900
+                row[7] = tmp[2];	    //对账时间
901
+                row[8] = tmp[2];	    //完结时间
902
+                row[9] = "0";	    //对账方式
903
+                row[10] = "3";    //对账状态
904
+                row[11] = tmp[3];    //	对账结果
905
+                row[12] = string.Empty;    //客户经理 
906
+                #endregion
907
+
908
+
909
+                #region 网银返回5列的情况  废除
910
+                    //    //@账号 | @账户名称 | @对账日期 | @对账状态 |@对账余额
911
+                    //    //TODO:其他行没有返回导入日期,可能需要用单笔再循环查询;暂采用对账日期计算上月底
912
+                    //    string impdate = (tmp[2].Substring(0, 6) + "01").ToDateTime().AddDays(-1).ToString("yyyyMMdd");
913
+                    //    row[0] = tmp[0];	    //账号
914
+                    //    row[1] = "1";	    //账户序号
915
+                    //    row[2] = tmp[2].Substring(0, 6) + "01";	    //对账期次
916
+                    //    row[3] = tmp[4];	    //核心余额
917
+                    //    row[4] = impdate;	    //核心余额时间
918
+                    //    row[5] = tmp[3] =="1" ? tmp[4] : string.Empty;//   //用户余额
919
+                    //    row[6] = string.Empty;	    //用户余额备注
920
+                    //    row[7] = tmp[2];	    //对账时间
921
+                    //    row[8] = tmp[2];	    //完结时间
922
+                    //    row[9] = "0";	    //对账方式
923
+                    //    row[10] = "3";    //	对账状态
924
+                    //    row[11] = tmp[3];    //	对账结果
925
+                    //    row[12] = string.Empty;    //	客户经理 
926
+                    #endregion
927
+
928
+
929
+                //0 余额相符
930
+                //1 余额不符
931
+                //2 差错相符
932
+                //3 差错不符
933
+
934
+                switch (row[11].ToString())
935
+                {
936
+                    case "0"://"未对账"
937
+                        row[11] = "";
938
+                        break;
939
+                    case "1"://"余额相符"
940
+                        row[11] = "0";
941
+                        break;
942
+                    case "2":// "余额不符"
943
+                        row[11] = "1";
944
+                        break;
945
+                    default:
946
+                        row[11] = "";
947
+                        break;
948
+                }
949
+
950
+                dt.Rows.Add(row);
951
+            }
952
+            return dt;
953
+        }
954
+        #endregion
955
+    }
956
+}

+ 27
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Extend/Reconciles.ts View File

@@ -0,0 +1,27 @@
1
+import { reactive } from 'vue'
2
+import type { Message } from '../Communication/Message'
3
+import { AICapacity } from '../ServiceProxy/Ext/ServiceHelper/AICapacity'
4
+import { LoginUserInfo } from '../Models/UserInfo'
5
+import { SystemFunction } from '../Library/Ext/Function/SystemFunction'
6
+import { TFInput } from '../Library/Ext/TradeExtension/TFInput'
7
+
8
+/**
9
+ * 对账管理类
10
+ */
11
+export class Reconciles {
12
+    private static _instance: Reconciles
13
+    private readonly _separator = "^|"
14
+    private readonly _netBankcomList: string[] = [
15
+        "账号", "账户序号", "对账期次", "核心余额", 
16
+        "核心余额日期", "用户余额", "用户余额备注", 
17
+        "对账时间", "完结时间", "对账方式", 
18
+        "对账状态", "对账结果", "客户经理"
19
+    ]
20
+
21
+    // 字典定义
22
+    private readonly _ID_TYPE_ = new Map<string, string>([
23
+        ["1", "身份证"], ["2", "户口簿"], ["3", "护照"],
24
+        ["4", "军人证"], ["5", "回乡证"], ["6", "士兵证"],
25
+        ["7", "港澳居民来往通行证"], ["8", "企业代码证"],
26
+        ["9", "经营许可证"], ["A", "营业执照"],
27
+        ["B

+ 80
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/ATMAmountClearing.cs View File

@@ -0,0 +1,80 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// ATM待清机金额
11
+    /// 根据相关要素,返回ATM清机现金金额
12
+    /// </summary>
13
+    public class ATMAmountClearing : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 清机金额 0400
18
+        /// (null)
19
+        /// </summary>
20
+        public string QJJE { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 标志位 0730
24
+        /// 第一位[0]验证是否有清机记录(0-有 1-无)
25
+        /// </summary>
26
+        public string BZW { get; internal set; }
27
+        /// <summary>
28
+        /// ATM柜员
29
+        /// (null)
30
+        /// </summary>
31
+        public string ATMTEL { get; internal set; }
32
+
33
+        #endregion
34
+
35
+        #region Input
36
+		/// <summary>
37
+        /// 参数清单
38
+        /// </summary>
39
+        public class Input : TFInput
40
+        {
41
+            /// <summary>
42
+            /// ATM柜员号 0920
43
+            /// (null) 
44
+            /// </summary>
45
+            public string ATMGYH { get; set; }
46
+
47
+            /// <summary>
48
+            /// ATM清钞编号
49
+            /// (null) 
50
+            /// </summary>
51
+            public string ATMQCNO { get; set; }
52
+            /// <summary>                 
53
+            /// 定义业务逻辑              
54
+            /// </summary>                
55
+            /// <returns></returns>  
56
+            public override TFOutput Raise()
57
+            {
58
+                //拉取数据                                  
59
+                var output = new ATMAmountClearing();
60
+                PageData.TradeAPIs.InitFd(MessageData);
61
+                PageData.TradeAPIs.CommSend(MessageData);
62
+				MessageData.Fd126_5 = MainCode;
63
+                MessageData.Fd16 = "K051";
64
+                MessageData.Fd92 = ATMGYH;
65
+                MessageData.Fd58 = ATMQCNO;
66
+                PageData.TradeAPIs.CallServer(MessageData);
67
+                if (MessageData.Fd12 != "0000")
68
+                {
69
+                    output.IsFailed = true;
70
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
71
+                }                
72
+                output.QJJE = (MessageData.Fd40);
73
+                output.BZW = (MessageData.Fd73);
74
+                output.ATMTEL = (MessageData.Fd92);
75
+                return output;
76
+            }
77
+        }
78
+        #endregion
79
+    }
80
+}

+ 37
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/ATMAmountClearing.ts View File

@@ -0,0 +1,37 @@
1
+import { TFOutput, TFInput, PageData, MessageData } from './types'; // 假设这些类型定义在 types.ts 文件中
2
+
3
+// 定义 ATMAmountClearing 类,对应 C# 中的同名类
4
+export class ATMAmountClearing extends TFOutput {
5
+    // 输出属性
6
+    public QJJE: string | null = null;
7
+    public BZW: string | null = null;
8
+    public ATMTEL: string | null = null;
9
+
10
+    // 输入类
11
+    public static Input = class Input extends TFInput {
12
+        public ATMGYH: string | null = null;
13
+        public ATMQCNO: string | null = null;
14
+
15
+        // 重写 Raise 方法
16
+        public override Raise(): ATMAmountClearing {
17
+            const output = new ATMAmountClearing();
18
+            PageData.TradeAPIs.InitFd(MessageData);
19
+            PageData.TradeAPIs.CommSend(MessageData);
20
+            MessageData.Fd126_5 = this.MainCode;
21
+            MessageData.Fd16 = "K051";
22
+            MessageData.Fd92 = this.ATMGYH;
23
+            MessageData.Fd58 = this.ATMQCNO;
24
+            PageData.TradeAPIs.CallServer(MessageData);
25
+
26
+            if (MessageData.Fd12 !== "0000") {
27
+                output.IsFailed = true;
28
+                output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
29
+            }
30
+
31
+            output.QJJE = MessageData.Fd40;
32
+            output.BZW = MessageData.Fd73;
33
+            output.ATMTEL = MessageData.Fd92;
34
+            return output;
35
+        }
36
+    };
37
+}

+ 126
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/AccountInterestCalculation.cs View File

@@ -0,0 +1,126 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 具体账户利息测算
11
+    /// 通过账号计算账户利息
12
+    /// </summary>
13
+    public class AccountInterestCalculation : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 应付利息 102P
18
+        /// (null)
19
+        /// </summary>
20
+        public string YFLX { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 利息税 102Q
24
+        /// (null)
25
+        /// </summary>
26
+        public string LXS { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 保值利息 102R
30
+        /// (null)
31
+        /// </summary>
32
+        public string BZLX { get; internal set; }
33
+
34
+        /// <summary>
35
+        /// 本息合计 102S
36
+        /// (null)
37
+        /// </summary>
38
+        public string BXHJ { get; internal set; }
39
+
40
+
41
+        #endregion
42
+
43
+        #region Input
44
+		/// <summary>
45
+        /// 参数清单
46
+        /// </summary>
47
+        public class Input : TFInput
48
+        {
49
+            /// <summary>
50
+            /// 账号 0300
51
+            /// (null) 
52
+            /// </summary>
53
+            public string ZH { get; set; }
54
+
55
+            /// <summary>
56
+            /// 账户序号 0340
57
+            /// (null) 
58
+            /// </summary>
59
+            public string ZHXH { get; set; }
60
+
61
+            /// <summary>
62
+            /// 支取金额 0400
63
+            /// (null) 
64
+            /// </summary>
65
+            public string ZQJE { get; set; }
66
+
67
+            /// <summary>
68
+            /// 交易日期 0440
69
+            /// (null) 
70
+            /// </summary>
71
+            public string JYRQ { get; set; }
72
+
73
+            /// <summary>
74
+            /// 支取方式 0700
75
+            /// 定期账户支取方式:1:销户,2:部提 活期(不销户,不计息) 空值默认:销户 
76
+            /// </summary>
77
+            public string ZQFS { get; set; }
78
+
79
+            /// <summary>
80
+            /// 是否有教育证明 0710
81
+            /// 1:有 0:没有,空值默认没有 
82
+            /// </summary>
83
+            public string SFJYZM { get; set; }
84
+            /// <summary>
85
+            /// 执行利率标志(通知存款特殊要求)
86
+            /// 0: 活期利率, 1:一天通知存款利率,2:七天通知存款利率,3:系统计算利率,空值默认没有 
87
+            /// </summary>
88
+            public string ZXLLBZ { get; set; }
89
+
90
+            /// <summary>                 
91
+            /// 定义业务逻辑              
92
+            /// </summary>                
93
+            /// <returns></returns>  
94
+            public override TFOutput Raise()
95
+            {
96
+                //拉取数据                                  
97
+                var output = new AccountInterestCalculation();
98
+                PageData.TradeAPIs.InitFd(MessageData);
99
+                PageData.TradeAPIs.CommSend(MessageData);
100
+				MessageData.Fd126_5 = MainCode;
101
+                MessageData.Fd16 = "K026";
102
+                MessageData.Fd20 = ZXLLBZ;
103
+                MessageData.Fd30 = ZH;
104
+                MessageData.Fd34 = ZHXH;
105
+                MessageData.Fd40 = ZQJE;
106
+                MessageData.Fd44 = JYRQ;
107
+                MessageData.Fd70 = ZQFS;
108
+                MessageData.Fd71 = SFJYZM;
109
+
110
+                PageData.TradeAPIs.CallServer(MessageData);
111
+                if (MessageData.Fd12 != "0000")
112
+                {
113
+                    output.IsFailed = true;
114
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
115
+                }                
116
+                output.YFLX = (MessageData.Fd102_P);
117
+                output.LXS = (MessageData.Fd102_Q);
118
+                output.BZLX = (MessageData.Fd102_R);
119
+                output.BXHJ = (MessageData.Fd102_S);
120
+
121
+                return output;
122
+            }
123
+        }
124
+        #endregion
125
+    }
126
+}

+ 115
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/AccountInterestCalculation.ts View File

@@ -0,0 +1,115 @@
1
+import { TFOutput } from '../TFOutput'
2
+import { TFInput } from '../TFInput'
3
+import type { Message } from '../../Communication/Message'
4
+import type { PageBase } from '../../ContractBase/PageBase'
5
+
6
+/**
7
+ * 具体账户利息测算
8
+ * 通过账号计算账户利息
9
+ */
10
+export class AccountInterestCalculation extends TFOutput {
11
+    /**
12
+     * 应付利息 102P
13
+     */
14
+    public YFLX: string = ''
15
+
16
+    /**
17
+     * 利息税 102Q
18
+     */
19
+    public LXS: string = ''
20
+
21
+    /**
22
+     * 保值利息 102R
23
+     */
24
+    public BZLX: string = ''
25
+
26
+    /**
27
+     * 本息合计 102S
28
+     */
29
+    public BXHJ: string = ''
30
+}
31
+
32
+/**
33
+ * 参数清单
34
+ */
35
+export class AccountInterestCalculationInput extends TFInput {
36
+    /**
37
+     * 账号 0300
38
+     */
39
+    public ZH: string = ''
40
+
41
+    /**
42
+     * 账户序号 0340
43
+     */
44
+    public ZHXH: string = ''
45
+
46
+    /**
47
+     * 支取金额 0400
48
+     */
49
+    public ZQJE: string = ''
50
+
51
+    /**
52
+     * 交易日期 0440
53
+     */
54
+    public JYRQ: string = ''
55
+
56
+    /**
57
+     * 支取方式 0700
58
+     * 定期账户支取方式:1:销户,2:部提 活期(不销户,不计息) 空值默认:销户
59
+     */
60
+    public ZQFS: string = ''
61
+
62
+    /**
63
+     * 是否有教育证明 0710
64
+     * 1:有 0:没有,空值默认没有
65
+     */
66
+    public SFJYZM: string = ''
67
+
68
+    /**
69
+     * 执行利率标志(通知存款特殊要求)
70
+     * 0: 活期利率, 1:一天通知存款利率,2:七天通知存款利率,3:系统计算利率,空值默认没有
71
+     */
72
+    public ZXLLBZ: string = ''
73
+
74
+    /**
75
+     * 定义业务逻辑
76
+     */
77
+    public override Raise(): AccountInterestCalculation {
78
+        const output = new AccountInterestCalculation()
79
+        
80
+        this.PageData.TradeAPIs.InitFd(this.MessageData)
81
+        this.PageData.TradeAPIs.CommSend(this.MessageData)
82
+        
83
+        this.MessageData.Fd126_5 = this.MainCode
84
+        this.MessageData.Fd16 = "K026"
85
+        this.MessageData.Fd20 = this.ZXLLBZ
86
+        this.MessageData.Fd30 = this.ZH
87
+        this.MessageData.Fd34 = this.ZHXH
88
+        this.MessageData.Fd40 = this.ZQJE
89
+        this.MessageData.Fd44 = this.JYRQ
90
+        this.MessageData.Fd70 = this.ZQFS
91
+        this.MessageData.Fd71 = this.SFJYZM
92
+
93
+        this.PageData.TradeAPIs.CallServer(this.MessageData)
94
+        
95
+        if (this.MessageData.Fd12 !== "0000") {
96
+            output.IsFailed = true
97
+            output.FailureCause = this.PageData.TradeAPIs.GetError(this.MessageData)
98
+        }
99
+        
100
+        output.YFLX = this.MessageData.Fd102_P
101
+        output.LXS = this.MessageData.Fd102_Q
102
+        output.BZLX = this.MessageData.Fd102_R
103
+        output.BXHJ = this.MessageData.Fd102_S
104
+
105
+        return output
106
+    }
107
+}
108
+
109
+// Vue组合式API封装
110
+export const useAccountInterestCalculation = () => {
111
+    return {
112
+        AccountInterestCalculation,
113
+        AccountInterestCalculationInput
114
+    }
115
+}

+ 107
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/AnticipationFreezeStoppaymentDeduct.cs View File

@@ -0,0 +1,107 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 冻结止付扣划预判
11
+    /// 冻结止付扣划预判
12
+    /// </summary>
13
+    public class AnticipationFreezeStoppaymentDeduct : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 可扣划金额 0400
18
+        /// 
19
+        /// </summary>
20
+        public string KKHJE { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 已扣划金额 0410
24
+        /// 
25
+        /// </summary>
26
+        public string YKHJE { get; internal set; }
27
+
28
+
29
+        #endregion
30
+
31
+        #region Input
32
+		/// <summary>
33
+        /// 参数清单
34
+        /// </summary>
35
+        public class Input : TFInput
36
+        {
37
+            /// <summary>
38
+            /// 账号 0310
39
+            ///  
40
+            /// </summary>
41
+            public string ZH { get; set; }
42
+
43
+            /// <summary>
44
+            /// 账户序号 0340
45
+            ///  
46
+            /// </summary>
47
+            public string ZHXH { get; set; }
48
+
49
+            /// <summary>
50
+            /// 冻结序号 0350
51
+            ///  
52
+            /// </summary>
53
+            public string DJXH { get; set; }
54
+
55
+            /// <summary>
56
+            /// 扣划金额 0400
57
+            ///  
58
+            /// </summary>
59
+            public string KHJE { get; set; }
60
+
61
+            /// <summary>
62
+            /// 销户标志 0690
63
+            /// 1:销户 0:不销户 
64
+            /// </summary>
65
+            public string XHBZ { get; set; }
66
+
67
+            /// <summary>
68
+            /// 扣划类型 0700
69
+            /// {"冻结扣划", "2" }, { "止付扣划", "4" }, { "直接扣划", "1" }, { "其他扣划", "3" }, {"特殊扣划","5"} 
70
+            /// </summary>
71
+            public string KHLX { get; set; }
72
+
73
+
74
+            /// <summary>                 
75
+            /// 定义业务逻辑              
76
+            /// </summary>                
77
+            /// <returns></returns>  
78
+            public override TFOutput Raise()
79
+            {
80
+                //拉取数据                                  
81
+                var output = new AnticipationFreezeStoppaymentDeduct();
82
+                PageData.TradeAPIs.InitFd(MessageData);
83
+                PageData.TradeAPIs.CommSend(MessageData);
84
+				MessageData.Fd126_5 = MainCode;
85
+                MessageData.Fd16 = "K058";
86
+                MessageData.Fd31 = ZH;
87
+                MessageData.Fd34 = ZHXH;
88
+                MessageData.Fd35 = DJXH;
89
+                MessageData.Fd40 = KHJE;
90
+                MessageData.Fd69 = XHBZ;
91
+                MessageData.Fd70 = KHLX;
92
+
93
+                PageData.TradeAPIs.CallServer(MessageData);
94
+                if (MessageData.Fd12 != "0000")
95
+                {
96
+                    output.IsFailed = true;
97
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
98
+                }                
99
+                output.KKHJE = (MessageData.Fd40);
100
+                output.YKHJE = (MessageData.Fd41);
101
+
102
+                return output;
103
+            }
104
+        }
105
+        #endregion
106
+    }
107
+}

+ 95
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/AnticipationFreezeStoppaymentDeduct.ts View File

@@ -0,0 +1,95 @@
1
+import { TFOutput } from '../TFOutput'
2
+import { TFInput } from '../TFInput'
3
+import type { Message } from '../../Communication/Message'
4
+import type { PageBase } from '../../ContractBase/PageBase'
5
+
6
+/**
7
+ * 冻结止付扣划预判
8
+ */
9
+export class AnticipationFreezeStoppaymentDeduct extends TFOutput {
10
+    /**
11
+     * 可扣划金额 0400
12
+     */
13
+    public KKHJE: string = ''
14
+
15
+    /**
16
+     * 已扣划金额 0410
17
+     */
18
+    public YKHJE: string = ''
19
+}
20
+
21
+/**
22
+ * 参数清单
23
+ */
24
+export class AnticipationFreezeStoppaymentDeductInput extends TFInput {
25
+    /**
26
+     * 账号 0310
27
+     */
28
+    public ZH: string = ''
29
+
30
+    /**
31
+     * 账户序号 0340
32
+     */
33
+    public ZHXH: string = ''
34
+
35
+    /**
36
+     * 冻结序号 0350
37
+     */
38
+    public DJXH: string = ''
39
+
40
+    /**
41
+     * 扣划金额 0400
42
+     */
43
+    public KHJE: string = ''
44
+
45
+    /**
46
+     * 销户标志 0690
47
+     * 1:销户 0:不销户
48
+     */
49
+    public XHBZ: string = ''
50
+
51
+    /**
52
+     * 扣划类型 0700
53
+     * {"冻结扣划", "2" }, { "止付扣划", "4" }, { "直接扣划", "1" }, { "其他扣划", "3" }, {"特殊扣划","5"}
54
+     */
55
+    public KHLX: string = ''
56
+
57
+    /**
58
+     * 定义业务逻辑
59
+     */
60
+    public override Raise(): AnticipationFreezeStoppaymentDeduct {
61
+        const output = new AnticipationFreezeStoppaymentDeduct()
62
+        
63
+        this.PageData.TradeAPIs.InitFd(this.MessageData)
64
+        this.PageData.TradeAPIs.CommSend(this.MessageData)
65
+        
66
+        this.MessageData.Fd126_5 = this.MainCode
67
+        this.MessageData.Fd16 = "K058"
68
+        this.MessageData.Fd31 = this.ZH
69
+        this.MessageData.Fd34 = this.ZHXH
70
+        this.MessageData.Fd35 = this.DJXH
71
+        this.MessageData.Fd40 = this.KHJE
72
+        this.MessageData.Fd69 = this.XHBZ
73
+        this.MessageData.Fd70 = this.KHLX
74
+
75
+        this.PageData.TradeAPIs.CallServer(this.MessageData)
76
+        
77
+        if (this.MessageData.Fd12 !== "0000") {
78
+            output.IsFailed = true
79
+            output.FailureCause = this.PageData.TradeAPIs.GetError(this.MessageData)
80
+        }
81
+        
82
+        output.KKHJE = this.MessageData.Fd40
83
+        output.YKHJE = this.MessageData.Fd41
84
+
85
+        return output
86
+    }
87
+}
88
+
89
+// Vue组合式API封装
90
+export const useAnticipationFreezeStoppaymentDeduct = () => {
91
+    return {
92
+        AnticipationFreezeStoppaymentDeduct,
93
+        AnticipationFreezeStoppaymentDeductInput
94
+    }
95
+}

+ 86
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckAccountDeducInterest.cs View File

@@ -0,0 +1,86 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询账户扣划利息
11
+    /// 通过账号查询账户扣划未提取利息
12
+    /// </summary>
13
+    public class CheckAccountDeducInterest : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 未提扣划利息 0400
18
+        /// (null)
19
+        /// </summary>
20
+        public string WTKHLX { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 有扣划利息的扣划记录笔数 0500
24
+        /// 
25
+        /// </summary>
26
+        public string YJLBS { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 扣划记录总笔数 0510
30
+        /// 
31
+        /// </summary>
32
+        public string KHZBS { get; internal set; }
33
+
34
+
35
+        #endregion
36
+
37
+        #region Input
38
+		/// <summary>
39
+        /// 参数清单
40
+        /// </summary>
41
+        public class Input : TFInput
42
+        {
43
+            /// <summary>
44
+            /// 账号 0300
45
+            /// (null) 
46
+            /// </summary>
47
+            public string ZH { get; set; }
48
+
49
+            /// <summary>
50
+            /// 账户序号 0340
51
+            /// (null) 
52
+            /// </summary>
53
+            public string ZHXH { get; set; }
54
+
55
+
56
+            /// <summary>                 
57
+            /// 定义业务逻辑              
58
+            /// </summary>                
59
+            /// <returns></returns>  
60
+            public override TFOutput Raise()
61
+            {
62
+                //拉取数据                                  
63
+                var output = new CheckAccountDeducInterest();
64
+                PageData.TradeAPIs.InitFd(MessageData);
65
+                PageData.TradeAPIs.CommSend(MessageData);
66
+				MessageData.Fd126_5 = MainCode;
67
+                MessageData.Fd16 = "K036";
68
+                MessageData.Fd30 = ZH;
69
+                MessageData.Fd34 = ZHXH;
70
+
71
+                PageData.TradeAPIs.CallServer(MessageData);
72
+                if (MessageData.Fd12 != "0000")
73
+                {
74
+                    output.IsFailed = true;
75
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
76
+                }                
77
+                output.WTKHLX = (MessageData.Fd40);
78
+                output.YJLBS = (MessageData.Fd50);
79
+                output.KHZBS = (MessageData.Fd51);
80
+
81
+                return output;
82
+            }
83
+        }
84
+        #endregion
85
+    }
86
+}

+ 101
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckAccountStat.cs View File

@@ -0,0 +1,101 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+using TellerSystem.ServiceProxy.Ext.ServiceHelper;
7
+
8
+namespace TellerSystem.Contract.Function
9
+{
10
+    /// <summary>
11
+    /// 与平台通讯,查询账户黑白名单状态
12
+    /// 黑名单-阻断,灰名单-提示,白名单-通过
13
+    /// </summary>
14
+    public class CheckAccountStat:TFOutput
15
+    {
16
+        #region Output
17
+        /// <summary>
18
+        /// 账户状态 0350
19
+        /// 0-通过,1-阻断,2-提示
20
+        /// </summary>
21
+        public string ZHZT { get; internal set; }
22
+
23
+        /// <summary>
24
+        /// 描述 0760
25
+        /// null
26
+        /// </summary>
27
+        public string MS { get; internal set; }
28
+
29
+        /// <summary>
30
+        /// 返回信息 0130
31
+        /// null
32
+        /// </summary>
33
+        public string FHXX { get; internal set; }
34
+
35
+
36
+        #endregion
37
+
38
+        #region Input
39
+        /// <summary>
40
+        /// 参数清单
41
+        /// </summary>
42
+        public class Input : TFInput
43
+        {
44
+            /// <summary>
45
+            /// 业务种类 0900
46
+            /// A-取现,B-存现,C-转账,D-汇款,E-介质更换
47
+            /// </summary>
48
+            public string YWZL { get; set; }
49
+
50
+            /// <summary>
51
+            /// 账号 0300
52
+            /// (null) 
53
+            /// </summary>
54
+            public string ZH { get; set; }
55
+
56
+            /// <summary>
57
+            /// 户名 0250
58
+            /// (null) 
59
+            /// </summary>
60
+            public string ZHHM { get; set; }
61
+
62
+
63
+            /// <summary>                 
64
+            /// 定义业务逻辑              
65
+            /// </summary>                
66
+            /// <returns></returns>  
67
+            public override TFOutput Raise()
68
+            {
69
+                //拉取数据                                  
70
+                var output = new CheckAccountStat();
71
+                MessageData.BitMapType = TellerSystem.Communication.Message.BitMap.Agn;
72
+                PageData.TradeAPIs.InitFd(MessageData);
73
+                PageData.TradeAPIs.CommSend(MessageData);
74
+                MessageData.Fd126_5 = MainCode;
75
+                MessageData.Fd16 = "0701";
76
+                MessageData.Fd28 = "100701";
77
+                MessageData.Fd18 = "GJFC";
78
+                MessageData.Fd89 = "01";
79
+                MessageData.Fd90 = YWZL;
80
+                MessageData.Fd30 = ZH;
81
+                MessageData.Fd25 = ZHHM;
82
+                if (TradeManagerHandle.TT_SYSCONFIG_GetConfigValueByConfigID("488aafd20ec440a988fe4b8e3d71a641") != "1")
83
+                {
84
+                    output.ZHZT = "0";
85
+                    return output;
86
+                }
87
+                PageData.TradeAPIs.CallAgn(MessageData);
88
+                if (MessageData.Fd12 != "0000")
89
+                {
90
+                    output.IsFailed = true;
91
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
92
+                }
93
+                output.ZHZT = (MessageData.Fd35);
94
+                output.MS = (MessageData.Fd76);
95
+                output.FHXX = (MessageData.Fd13);
96
+                return output;
97
+            }
98
+        }
99
+        #endregion
100
+    }
101
+}

+ 312
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckBlackList.cs View File

@@ -0,0 +1,312 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+using TellerSystem.ServiceProxy.Ext.ServiceHelper;
7
+using Platform.Common.RunningParameters;
8
+using System.Windows;
9
+using TellerSystem.Library.Ext.TradeExtension;
10
+using TellerSystem.Communication;
11
+using TellerSystem.Library.Ext.Function;
12
+
13
+namespace TellerSystem.Contract.Function
14
+{
15
+    /// <summary>
16
+    /// 与核心通讯,查询账户黑白名单状态/限制渠道
17
+    /// 黑名单-阻断,灰名单-提示,白名单-通过
18
+    /// </summary>
19
+    public class CheckBlackList : TFOutput
20
+    {
21
+        #region Output
22
+        /// <summary>
23
+        /// 标志位
24
+        /// 0-,1-阻断,2-提示
25
+        /// </summary>
26
+        public string BZW { get; internal set; }
27
+        /// <summary>
28
+        /// 提示信息
29
+        ///
30
+        /// </summary>
31
+        public string info { get; internal set; }
32
+        /// <summary>
33
+        /// 全渠道限制标志
34
+        /// 0-不限制,1-限制
35
+        /// </summary>
36
+        public int allrestrict { get; internal set; }
37
+        /// <summary>
38
+        /// 只进不出限制标志
39
+        /// 0-不限制,1-限制
40
+        /// </summary>
41
+        public int onleinrestrict { get; internal set; }
42
+        #endregion
43
+
44
+        #region Input
45
+        /// <summary>
46
+        /// 参数清单
47
+        /// </summary>
48
+        public class Input : TFInput
49
+        {
50
+            /// <summary>
51
+            /// 查询类型
52
+            /// 1-按账号,2-按证件
53
+            /// </summary>
54
+            public string CXLX { get; set; }
55
+
56
+            /// <summary>
57
+            /// 账号 0300
58
+            /// (null) 
59
+            /// </summary>
60
+            public string ZH { get; set; }
61
+
62
+            /// <summary>
63
+            /// 账户序号
64
+            /// (null) 
65
+            /// </summary>
66
+            public string ZHXH { get; set; }
67
+
68
+            /// <summary>
69
+            /// 证件类型
70
+            /// 
71
+            /// </summary>>
72
+            public string ZJLX { get; set; }
73
+
74
+            /// <summary>
75
+            /// 证件号码
76
+            /// (null)
77
+            /// </summary>
78
+            public string ZJHM { get; set; }
79
+
80
+            /// <summary>
81
+            /// 客户号
82
+            /// (null)
83
+            /// </summary>>
84
+            public string KHH { get; set; }
85
+
86
+            /// <summary>
87
+            /// 是否行内客户报错标志
88
+            /// (null)
89
+            /// </summary>>
90
+            public string SFHNKHBCBZ { get; set; }//核心建议Fd126_5传6255时,8855接口查不到客户时不报错。
91
+            string FLAG = TradeManagerHandle.TT_SYSCONFIG_GetConfigValueByConfigID("2ea3a7e6cfa04f89a335bf1e363295de");
92
+            private string _sqgybh;
93
+            /// <summary>                 
94
+            /// 定义业务逻辑              
95
+            /// </summary>                
96
+            /// <returns></returns>  
97
+            public override TFOutput Raise()
98
+            {
99
+                //拉取数据                                  
100
+                var output = new CheckBlackList();
101
+                MessageData.BitMapType = TellerSystem.Communication.Message.BitMap.Server;
102
+                PageData.TradeAPIs.InitFd(MessageData);
103
+                PageData.TradeAPIs.CommSend(MessageData);
104
+                MessageData.Fd16 = "8854";
105
+                MessageData.Fd71 = CXLX;
106
+                MessageData.Fd30 = ZH;
107
+                MessageData.Fd34 = ZHXH;
108
+                MessageData.Fd70 = ZJLX;
109
+                MessageData.Fd62 = ZJHM;
110
+                MessageData.Fd28 = KHH;
111
+                PageData.TradeAPIs.CallServer(MessageData);
112
+                if (MessageData.Fd12 != "0000")
113
+                {
114
+                    output.IsFailed = true;
115
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
116
+                    return output;
117
+                }
118
+
119
+                output.BZW = (MessageData.Fd73);
120
+                string restrict = MessageData.Fd73;
121
+                if (string.IsNullOrEmpty(restrict) || restrict.Length < 6)
122
+                {
123
+                    output.IsFailed = true;
124
+                    output.FailureCause = "后台系统返回数据异常";
125
+                    return output;
126
+                }
127
+                string tsacc = string.Empty;
128
+
129
+                if ("1".Equals(restrict.Substring(0, 1)))
130
+                {
131
+                    tsacc += "非柜面限制";
132
+                }
133
+                if ("1".Equals(restrict.Substring(1, 1)))
134
+                {
135
+                    tsacc += "全渠道限制";
136
+                }
137
+                if ("1".Equals(restrict.Substring(2, 1)))
138
+                {
139
+                    tsacc += "只进不出限制";
140
+                }
141
+                string tsID = string.Empty;
142
+                if ("1".Equals(restrict.Substring(3, 1)))
143
+                {
144
+                    tsID += "非柜面限制";
145
+                }
146
+                if ("1".Equals(restrict.Substring(4, 1)))
147
+                {
148
+                    tsID += "全渠道限制";
149
+                }
150
+                if ("1".Equals(restrict.Substring(5, 1)))
151
+                {
152
+                    tsID += "只进不出限制";
153
+                }
154
+
155
+                string info = (string.IsNullOrEmpty(tsacc) ? "" : "该账户做了") + tsacc + (string.IsNullOrEmpty(tsID) ? "" : ",该客户证件做了") + tsID + "请做灰名单维护交易!";
156
+                output.info = info;
157
+                //全渠道限制
158
+                int allrestrict = "1".Equals(restrict.Substring(1, 1)) || "1".Equals(restrict.Substring(4, 1)) ? 1 : 0;
159
+                output.allrestrict = allrestrict;
160
+                //只进不出限制
161
+                int onleinrestrict = "1".Equals(restrict.Substring(2, 1)) || "1".Equals(restrict.Substring(5, 1)) ? 1 : 0;
162
+                output.onleinrestrict = onleinrestrict;
163
+                // 只限制非柜面做提示即可
164
+                if (allrestrict + onleinrestrict < 1 && ("1".Equals(restrict.Substring(0, 1)) || "1".Equals(restrict.Substring(3, 1))))
165
+                {
166
+                    PageData.TradeAPIs.ShowInfoMessageBox(info);
167
+                }
168
+                //具体查询查询客户信息  检查是否登记了客户号控制的黑白名单(且内部账户【9开头的】无需校验黑名单)
169
+                if (ZH == null)
170
+                {
171
+                    PageData.TradeAPIs.InitFd(MessageData);
172
+                    PageData.TradeAPIs.CommSend(MessageData);
173
+                    MessageData.Fd16 = "8855";
174
+                    MessageData.Fd28 = KHH;
175
+                    MessageData.Fd30 = ZH;
176
+                    MessageData.Fd116_4 = ZJLX;
177
+                    MessageData.Fd116_5 = ZJHM;
178
+                    if (!string.IsNullOrEmpty(SFHNKHBCBZ))
179
+                        MessageData.Fd126_5 = SFHNKHBCBZ;
180
+                    PageData.TradeAPIs.CallServer(MessageData);
181
+                    if (MessageData.Fd12 != "0000")
182
+                    {
183
+                        this.TradeAPIs.ShowTip(PageData.TradeAPIs.GetError(MessageData));
184
+                        this.TradeAPIs.SetFocus();
185
+                        return output;
186
+                    }
187
+                    if (MessageData.Fd70.Substring(0, 1) == "1")//1黑名单  0 不是黑名单
188
+                    {
189
+                        if (FLAG == "V5" && LoginUserInfo.KinbrNo.Substring(0, 3) == "301")
190
+                        {
191
+                            this.TradeAPIs.ShowTip("该客户为黑名单客户!");
192
+                            if (AuthAction(new Message() { }))
193
+                            {
194
+                                output.IsFailed = false;
195
+                            }
196
+                            else 
197
+                            {
198
+                                output.IsFailed = true;
199
+                                output.FailureCause = "该客户为黑名单!";
200
+                            }
201
+                            
202
+                        }
203
+                        else
204
+                        {
205
+                            this.TradeAPIs.ShowTip("该客户为黑名单!");
206
+                            if (!string.IsNullOrEmpty(SFHNKHBCBZ))
207
+                            {
208
+                                output.IsFailed = true;
209
+                                output.FailureCause = "该客户为黑名单!";
210
+                            }
211
+                            this.TradeAPIs.SetFocus();
212
+                        }         
213
+                        return output;
214
+                    }
215
+                }
216
+                else
217
+                {
218
+                    if (ZH.Substring(0, 1) != "9")
219
+                    {
220
+                        PageData.TradeAPIs.InitFd(MessageData);
221
+                        PageData.TradeAPIs.CommSend(MessageData);
222
+                        MessageData.Fd16 = "8855";
223
+                        MessageData.Fd28 = KHH;
224
+                        MessageData.Fd30 = ZH;
225
+                        MessageData.Fd116_4 = ZJLX;
226
+                        MessageData.Fd116_5 = ZJHM;
227
+
228
+                        if (!string.IsNullOrEmpty(SFHNKHBCBZ))
229
+                            MessageData.Fd126_5 = SFHNKHBCBZ;
230
+                        PageData.TradeAPIs.CallServer(MessageData);
231
+                        if (MessageData.Fd12 != "0000")
232
+                        {
233
+                            this.TradeAPIs.ShowTip(PageData.TradeAPIs.GetError(MessageData));
234
+                            this.TradeAPIs.SetFocus();
235
+                            return output;
236
+                        }
237
+                        if (MessageData.Fd70.Substring(0, 1) == "1")//1黑名单  0 不是黑名单
238
+                        {
239
+                            if (FLAG == "V5" && LoginUserInfo.KinbrNo.Substring(0, 3) == "301")
240
+                            {
241
+                                this.TradeAPIs.ShowTip("该客户为黑名单客户!");
242
+                                if (AuthAction(new Message() { }))
243
+                                {
244
+                                    output.IsFailed = false;
245
+                                }
246
+                                else
247
+                                {
248
+                                    output.IsFailed = true;
249
+                                    output.FailureCause = "该客户为黑名单!";
250
+                                }
251
+                            }
252
+                            else
253
+                            {
254
+                                this.TradeAPIs.ShowTip("该客户为黑名单!");
255
+                                if (!string.IsNullOrEmpty(SFHNKHBCBZ))
256
+                                {
257
+                                    output.IsFailed = true;
258
+                                    output.FailureCause = "该客户为黑名单!";
259
+                                }
260
+                                this.TradeAPIs.SetFocus();
261
+                            }                           
262
+                            return output;
263
+                        }
264
+                    }
265
+                }
266
+
267
+                return output;
268
+            }
269
+            /// <summary>
270
+            /// 授权方法
271
+            /// </summary>
272
+            /// <param name="msg"></param>
273
+            /// <returns></returns>
274
+            private bool AuthAction(Message msg)
275
+            {
276
+                // 组织授权检查要素
277
+                TellerSystem.ServiceProxy.Ext.ServiceEntitys.PageData[] page = new TellerSystem.ServiceProxy.Ext.ServiceEntitys.PageData[1];
278
+                page[0] = new TellerSystem.ServiceProxy.Ext.ServiceEntitys.PageData() { index = 1, datas = PageData.SaveTradePage((FrameworkElement)PageData.Content) };
279
+                AuthConditionElement element = new AuthConditionElement();
280
+
281
+                AuthManager c = new AuthManager();
282
+                c.AsksuperResultMessage += new AuthManager.AsksuperResultHandle(AsksuperResultMessage);
283
+                return c.DoAuth_ZP(PageData, element, msg, page, "0", "", "", "", "", "黑名单授权", "");
284
+            }
285
+
286
+            private void AsksuperResultMessage(AsksuperResultType result, TradeBusData busData)
287
+            {
288
+                _sqgybh = "";
289
+                switch (result)
290
+                {
291
+                    case AsksuperResultType.Success:
292
+                        this.TradeAPIs.ShowTip("授权已经通过。");
293
+                        if (busData != null && busData.ContainsKey("AuthTeller"))
294
+                        {
295
+                            _sqgybh = busData["AuthTeller"];
296
+                        }
297
+                        break;
298
+                    case AsksuperResultType.Failed:
299
+                        this.TradeAPIs.ShowTip("授权没有通过。");
300
+                        break;
301
+                    case AsksuperResultType.Undo:
302
+                        this.TradeAPIs.ShowTip("授权已撤销。");
303
+                        break;
304
+                    default:
305
+                        break;
306
+                }
307
+            }
308
+        }
309
+        #endregion
310
+
311
+    }
312
+}

+ 110
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckBlackList_DQS.cs View File

@@ -0,0 +1,110 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+using TellerSystem.ServiceProxy.Ext.ServiceHelper;
7
+
8
+namespace TellerSystem.Contract.Function
9
+{
10
+    /// <summary>
11
+    /// 
12
+    /// </summary>
13
+    public class CheckBlackList_DQS:TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 1黑名单  0 不是黑名单
18
+        /// null
19
+        /// </summary>
20
+        public string Result { get; internal set; }
21
+        #endregion
22
+
23
+        #region Input
24
+        /// <summary>
25
+        /// 参数清单
26
+        /// </summary>
27
+        public class Input : TFInput
28
+        {
29
+
30
+            /// <summary>
31
+            /// 账号 0300
32
+            /// (null) 
33
+            /// </summary>
34
+            public string ZH { get; set; }
35
+
36
+            /// <summary>
37
+            /// 账户序号
38
+            /// (null) 
39
+            /// </summary>
40
+            public string ZHXH { get; set; }
41
+
42
+            /// <summary>
43
+            /// 证件类型
44
+            /// 
45
+            /// </summary>>
46
+            public string ZJLX { get; set; }
47
+
48
+            /// <summary>
49
+            /// 证件号码
50
+            /// (null)
51
+            /// </summary>
52
+            public string ZJHM { get; set; }
53
+
54
+            /// <summary>
55
+            /// 客户号
56
+            /// (null)
57
+            /// </summary>>
58
+            public string KHH { get; set; }
59
+
60
+            /// <summary>
61
+            /// 是否行内客户报错标志
62
+            /// (null)
63
+            /// </summary>>
64
+            public string SFHNKHBCBZ { get; set; }//核心建议Fd126_5传6255时,8855接口查不到客户时不报错。
65
+
66
+            /// <summary>                 
67
+            /// 定义业务逻辑              
68
+            /// </summary>                
69
+            /// <returns></returns>  
70
+            public override TFOutput Raise()
71
+            {
72
+                //拉取数据                                  
73
+                var output = new CheckBlackList_DQS();               
74
+                MessageData.BitMapType = TellerSystem.Communication.Message.BitMap.Server;
75
+                PageData.TradeAPIs.InitFd(MessageData);
76
+                PageData.TradeAPIs.CommSend(MessageData);
77
+                MessageData.Fd16 = "8855";
78
+                MessageData.Fd28 = KHH;
79
+                MessageData.Fd30 = ZH;
80
+                MessageData.Fd116_4 = ZJLX;
81
+                MessageData.Fd116_5 = ZJHM;
82
+
83
+                if (!string.IsNullOrEmpty(SFHNKHBCBZ))
84
+                    MessageData.Fd126_5 = SFHNKHBCBZ;
85
+
86
+                PageData.TradeAPIs.CallServer(MessageData);
87
+                if (MessageData.Fd12 != "0000")
88
+                {
89
+                    this.TradeAPIs.ShowTip(PageData.TradeAPIs.GetError(MessageData));
90
+                    this.TradeAPIs.SetFocus();
91
+                    return output;
92
+                }
93
+                if (MessageData.Fd70.Substring(0, 1) == "1")//1黑名单  0 不是黑名单
94
+                {
95
+                    this.TradeAPIs.ShowTip("该客户为黑名单!");
96
+                    if (!string.IsNullOrEmpty(SFHNKHBCBZ))
97
+                    {
98
+                        output.IsFailed = true;
99
+                        output.FailureCause = "该客户为黑名单!";
100
+                    }
101
+                    this.TradeAPIs.SetFocus();
102
+                    return output;
103
+                }
104
+                output.Result = MessageData.Fd70.Substring(0, 1); 
105
+                return output;
106
+            }
107
+        }
108
+        #endregion
109
+    }
110
+}

+ 86
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckCustomerCertificate.cs View File

@@ -0,0 +1,86 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 检查客户凭证
11
+    /// 客户凭证查询
12
+    /// </summary>
13
+    public class CheckCustomerCertificate : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 凭证状态 0700
18
+        /// 0无 1出售未使用 2挂失 3回收 4作废 5使用
19
+        /// </summary>
20
+        public string PZZT { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 出售日期 0440
24
+        /// 
25
+        /// </summary>
26
+        public string CSRQ { get; internal set; }
27
+
28
+
29
+        #endregion
30
+
31
+        #region Input
32
+		/// <summary>
33
+        /// 参数清单
34
+        /// </summary>
35
+        public class Input : TFInput
36
+        {
37
+            /// <summary>
38
+            /// 账号 0300
39
+            /// (null) 
40
+            /// </summary>
41
+            public string ZH { get; set; }
42
+
43
+            /// <summary>
44
+            /// 凭证号码 0580
45
+            /// (null) 
46
+            /// </summary>
47
+            public string PZHM { get; set; }
48
+
49
+            /// <summary>
50
+            /// 凭证类型 0890
51
+            /// (null) 
52
+            /// </summary>
53
+            public string PZLX { get; set; }
54
+
55
+
56
+            /// <summary>                 
57
+            /// 定义业务逻辑              
58
+            /// </summary>                
59
+            /// <returns></returns>  
60
+            public override TFOutput Raise()
61
+            {
62
+                //拉取数据                                  
63
+                var output = new CheckCustomerCertificate();
64
+                PageData.TradeAPIs.InitFd(MessageData);
65
+                PageData.TradeAPIs.CommSend(MessageData);
66
+				MessageData.Fd126_5 = MainCode;
67
+                MessageData.Fd16 = "K035";
68
+                MessageData.Fd30 = ZH;
69
+                MessageData.Fd58 = PZHM;
70
+                MessageData.Fd89 = PZLX;
71
+
72
+                PageData.TradeAPIs.CallServer(MessageData);
73
+                if (MessageData.Fd12 != "0000")
74
+                {
75
+                    output.IsFailed = true;
76
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
77
+                }                
78
+                output.PZZT = DelSpace(MessageData.Fd70);
79
+                output.CSRQ = DelSpace(MessageData.Fd44);
80
+
81
+                return output;
82
+            }
83
+        }
84
+        #endregion
85
+    }
86
+}

+ 104
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckGreyList.cs View File

@@ -0,0 +1,104 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+using TellerSystem.ServiceProxy.Ext.ServiceHelper;
7
+
8
+namespace TellerSystem.Contract.Function
9
+{
10
+    /// <summary>
11
+    /// 
12
+    /// </summary>
13
+    public class CheckGreyList:TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 1 有限制 0 无限制
18
+        /// null
19
+        /// </summary>
20
+        public string Result { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 标志位
24
+        /// bit[0]:0-不限制,1-限制非柜面  bit[1]:0--不限制,1-限制全渠道  bit[2]:0-不限制,1-限制只进不出
25
+        /// </summary>
26
+        public string BZW { get; internal set; }
27
+        #endregion
28
+
29
+        #region Input
30
+        /// <summary>
31
+        /// 参数清单
32
+        /// </summary>
33
+        public class Input : TFInput
34
+        {
35
+
36
+            /// <summary>
37
+            /// 账号 0300
38
+            /// (null) 
39
+            /// </summary>
40
+            public string ZH { get; set; }
41
+
42
+            /// <summary>
43
+            /// 账户序号
44
+            /// (null) 
45
+            /// </summary>
46
+            public string ZHXH { get; set; }
47
+
48
+            /// <summary>
49
+            /// 证件类型
50
+            /// 
51
+            /// </summary>>
52
+            public string ZJLX { get; set; }
53
+
54
+            /// <summary>
55
+            /// 证件号码
56
+            /// (null)
57
+            /// </summary>
58
+            public string ZJHM { get; set; }
59
+
60
+            /// <summary>
61
+            /// 客户号
62
+            /// (null)
63
+            /// </summary>>
64
+            public string KHH { get; set; }
65
+
66
+            /// <summary>
67
+            /// 单位编号
68
+            /// (null)
69
+            /// </summary>>
70
+            public string DWBH { get; set; }
71
+
72
+            /// <summary>                 
73
+            /// 定义业务逻辑              
74
+            /// </summary>                
75
+            /// <returns></returns>  
76
+            public override TFOutput Raise()
77
+            {
78
+                //拉取数据                                  
79
+                var output = new CheckGreyList();               
80
+                MessageData.BitMapType = TellerSystem.Communication.Message.BitMap.Server;
81
+                PageData.TradeAPIs.InitFd(MessageData);
82
+                PageData.TradeAPIs.CommSend(MessageData);
83
+                MessageData.Fd16 = "8857";
84
+                MessageData.Fd28 = KHH;
85
+                MessageData.Fd30 = ZH;
86
+                MessageData.Fd116_4 = ZJLX;
87
+                MessageData.Fd116_5 = ZJHM;
88
+                MessageData.Fd64 = DWBH;
89
+
90
+                PageData.TradeAPIs.CallServer(MessageData);
91
+                if (MessageData.Fd12 != "0000")
92
+                {
93
+                    this.TradeAPIs.ShowTip(PageData.TradeAPIs.GetError(MessageData));
94
+                    this.TradeAPIs.SetFocus();
95
+                    return output;
96
+                }
97
+                //output.BZW = (MessageData.Fd73);
98
+                output.Result = MessageData.Fd70.Substring(0, 1); 
99
+                return output;
100
+            }
101
+        }
102
+        #endregion
103
+    }
104
+}

+ 86
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckStatusPledge.cs View File

@@ -0,0 +1,86 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 根据质押总编号查询关联总金额和总数量
11
+    /// 根据质押总编号查询关联总金额和总数量
12
+    /// </summary>
13
+    public class CheckStatusPledge : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 关联总金额 0390
18
+        /// 
19
+        /// </summary>
20
+        public string GLZJE { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 关联质押物总质押金额 0400
24
+        /// 
25
+        /// </summary>
26
+        public string GLZYWZZYJE { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 关联质押物编号数量 0480
30
+        /// 
31
+        /// </summary>
32
+        public string GLZYWBHSL { get; internal set; }
33
+
34
+        /// <summary>
35
+        /// 关联质押物总数量 0490
36
+        /// 
37
+        /// </summary>
38
+        public string GLZYWZSL { get; internal set; }
39
+
40
+
41
+        #endregion
42
+
43
+        #region Input
44
+		/// <summary>
45
+        /// 参数清单
46
+        /// </summary>
47
+        public class Input : TFInput
48
+        {
49
+            /// <summary>
50
+            /// 质押总编号 0320
51
+            ///  
52
+            /// </summary>
53
+            public string ZYZBH { get; set; }
54
+
55
+
56
+            /// <summary>                 
57
+            /// 定义业务逻辑              
58
+            /// </summary>                
59
+            /// <returns></returns>  
60
+            public override TFOutput Raise()
61
+            {
62
+                //拉取数据                                  
63
+                var output = new CheckStatusPledge();
64
+                PageData.TradeAPIs.InitFd(MessageData);
65
+                PageData.TradeAPIs.CommSend(MessageData);
66
+				MessageData.Fd126_5 = MainCode;
67
+                MessageData.Fd16 = "K010";
68
+                MessageData.Fd32 = ZYZBH;
69
+
70
+                PageData.TradeAPIs.CallServer(MessageData);
71
+                if (MessageData.Fd12 != "0000")
72
+                {
73
+                    output.IsFailed = true;
74
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
75
+                }                
76
+                output.GLZJE = DelSpace(MessageData.Fd39);
77
+                output.GLZYWZZYJE = DelSpace(MessageData.Fd40);
78
+                output.GLZYWBHSL = DelSpace(MessageData.Fd48);
79
+                output.GLZYWZSL = DelSpace(MessageData.Fd49);
80
+
81
+                return output;
82
+            }
83
+        }
84
+        #endregion
85
+    }
86
+}

+ 107
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CheckTradeRule.cs View File

@@ -0,0 +1,107 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 交易规则检查
11
+    /// 交易规则检查,账户序号检查,根据交易代码,账号,交易金额检查是否超出限额
12
+    /// </summary>
13
+    public class CheckTradeRule : TFOutput
14
+    {
15
+        #region Output
16
+
17
+        #endregion
18
+
19
+        #region Input
20
+		/// <summary>
21
+        /// 参数清单
22
+        /// </summary>
23
+        public class Input : TFInput
24
+        {
25
+            /// <summary>
26
+            /// 目标交易代码 0120
27
+            /// 主交易代码 
28
+            /// </summary>
29
+            public string MBJYDM { get; set; }
30
+
31
+            /// <summary>
32
+            /// 账号 0300
33
+            ///  
34
+            /// </summary>
35
+            public string ZH { get; set; }
36
+
37
+            /// <summary>
38
+            /// 账户序号 0340
39
+            ///  
40
+            /// </summary>
41
+            public string ZHXH { get; set; }
42
+
43
+            /// <summary>
44
+            /// 交易金额 0420
45
+            ///  
46
+            /// </summary>
47
+            public string JYJE { get; set; }
48
+
49
+            /// <summary>
50
+            /// 开户机构 0020
51
+            ///  
52
+            /// </summary>
53
+            public string KHJG { get; set; }
54
+
55
+            /// <summary>
56
+            /// 渠道类型 096C
57
+            ///  
58
+            /// </summary>
59
+            public string QDLX { get; set; }
60
+
61
+            /// <summary>
62
+            /// 商户类型 096K
63
+            ///  
64
+            /// </summary>
65
+            public string SHLX { get; set; }
66
+
67
+            /// <summary>
68
+            /// 业务类型 096M
69
+            ///  
70
+            /// </summary>
71
+            public string YWLX { get; set; }
72
+
73
+
74
+            /// <summary>                 
75
+            /// 定义业务逻辑              
76
+            /// </summary>                
77
+            /// <returns></returns>  
78
+            public override TFOutput Raise()
79
+            {
80
+                //拉取数据                                  
81
+                var output = new CheckTradeRule();
82
+                PageData.TradeAPIs.InitFd(MessageData);
83
+                PageData.TradeAPIs.CommSend(MessageData);
84
+				MessageData.Fd126_5 = MainCode;
85
+                MessageData.Fd16 = "K039";
86
+                MessageData.Fd12 = MBJYDM;
87
+                MessageData.Fd30 = ZH;
88
+                MessageData.Fd34 = ZHXH;
89
+                MessageData.Fd42 = JYJE;
90
+                MessageData.Fd2 = KHJG;
91
+                MessageData.Fd96_C = QDLX;
92
+                MessageData.Fd96_K = SHLX;
93
+                MessageData.Fd96_M = YWLX;
94
+
95
+                PageData.TradeAPIs.CallServer(MessageData);
96
+                if (MessageData.Fd12 != "0000")
97
+                {
98
+                    output.IsFailed = true;
99
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
100
+                }                
101
+
102
+                return output;
103
+            }
104
+        }
105
+        #endregion
106
+    }
107
+}

+ 107
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/ChecksTellerSmallestCertificate.cs View File

@@ -0,0 +1,107 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 检查柜员凭证最小号
11
+    /// 根据相关要素,检查柜员凭证最小号
12
+    /// </summary>
13
+    public class ChecksTellerSmallestCertificate : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 标志位 0730
18
+        /// [空格表示没有查询相关数据]第一位[0]介质属性是否存在(0-存在 1-不存在) 第二位[1]是否需要输入卡号(0-否 1是) 第三位[2]卡号是否已经开户(0-否 1-是)第四位[3]是否是次小号码(0-是 1-否)第五位[4]查询最小号是否成功(0-成功 1-失败)第六位[5]卡凭证生成卡号是否成功(0-成功 1-失败)第七位[6]检验位是否正确(0-正确 1-错误)第八位[7]是否是最小号(0-是 1-否)
19
+        /// </summary>
20
+        public string BZW { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 最小卡号 0370
24
+        /// 仅用于开发环境
25
+        /// </summary>
26
+        public string ZXKH { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 最小凭证号 0580
30
+        /// 仅用于开发环境
31
+        /// </summary>
32
+        public string ZXPZH { get; internal set; }
33
+
34
+
35
+        #endregion
36
+
37
+        #region Input
38
+		/// <summary>
39
+        /// 参数清单
40
+        /// </summary>
41
+        public class Input : TFInput
42
+        {
43
+            /// <summary>
44
+            /// 凭证类型 0890
45
+            /// 介质代码 、凭证类型 至少输入一个 
46
+            /// </summary>
47
+            public string PZLX { get; set; }
48
+
49
+            /// <summary>
50
+            /// 次小号标志 0700
51
+            /// 1-校验次小号  其他-校验最小号 
52
+            /// </summary>
53
+            public string CXHBZ { get; set; }
54
+
55
+            /// <summary>
56
+            /// 介质代号 1161
57
+            /// 介质代码 、凭证类型 至少输入一个 
58
+            /// </summary>
59
+            public string JZDH { get; set; }
60
+
61
+            /// <summary>
62
+            /// 卡号 1162
63
+            ///  
64
+            /// </summary>
65
+            public string KH { get; set; }
66
+
67
+            /// <summary>
68
+            /// 凭证号码 1168
69
+            ///  
70
+            /// </summary>
71
+            public string PZHM { get; set; }
72
+
73
+
74
+            /// <summary>                 
75
+            /// 定义业务逻辑              
76
+            /// </summary>                
77
+            /// <returns></returns>  
78
+            public override TFOutput Raise()
79
+            {
80
+                //拉取数据                                  
81
+                var output = new ChecksTellerSmallestCertificate();
82
+                PageData.TradeAPIs.InitFd(MessageData);
83
+                PageData.TradeAPIs.CommSend(MessageData);
84
+				MessageData.Fd126_5 = MainCode;
85
+                MessageData.Fd16 = "K053";
86
+                MessageData.Fd89 = PZLX;
87
+                MessageData.Fd70 = CXHBZ;
88
+                MessageData.Fd116_1 = JZDH;
89
+                MessageData.Fd116_2 = KH;
90
+                MessageData.Fd116_8 = PZHM;
91
+
92
+                PageData.TradeAPIs.CallServer(MessageData);
93
+                if (MessageData.Fd12 != "0000")
94
+                {
95
+                    output.IsFailed = true;
96
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
97
+                }                
98
+                output.BZW = (MessageData.Fd73);
99
+                output.ZXKH = (MessageData.Fd37);
100
+                output.ZXPZH = (MessageData.Fd58);
101
+
102
+                return output;
103
+            }
104
+        }
105
+        #endregion
106
+    }
107
+}

+ 100
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/CountedInterest.cs View File

@@ -0,0 +1,100 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 计算贴现利息
11
+    /// 根据输入的要素计算贴现利息
12
+    /// </summary>
13
+    public class CountedInterest : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 利息 0410
18
+        /// (null)
19
+        /// </summary>
20
+        public string LX { get; internal set; }
21
+
22
+
23
+        #endregion
24
+
25
+        #region Input
26
+		/// <summary>
27
+        /// 参数清单
28
+        /// </summary>
29
+        public class Input : TFInput
30
+        {
31
+            /// <summary>
32
+            /// 票面金额 0400
33
+            /// (null) 
34
+            /// </summary>
35
+            public string PMJE { get; set; }
36
+
37
+            /// <summary>
38
+            /// 交易日期 0440
39
+            /// (null) 
40
+            /// </summary>
41
+            public string JYRQ { get; set; }
42
+
43
+            /// <summary>
44
+            /// 汇票到期日 0450
45
+            /// (null) 
46
+            /// </summary>
47
+            public string HPDQR { get; set; }
48
+
49
+            /// <summary>
50
+            /// 在途天数 0460
51
+            /// (null) 
52
+            /// </summary>
53
+            public string ZTTS { get; set; }
54
+
55
+            /// <summary>
56
+            /// 利率标志 0720
57
+            /// 84域输入的利率的类型 D日利率M月利率Y年利率 
58
+            /// </summary>
59
+            public string LLBZ { get; set; }
60
+
61
+            /// <summary>
62
+            /// 利率 0840
63
+            /// (null) 
64
+            /// </summary>
65
+            public string LL { get; set; }
66
+
67
+
68
+            /// <summary>                 
69
+            /// 定义业务逻辑              
70
+            /// </summary>                
71
+            /// <returns></returns>  
72
+            public override TFOutput Raise()
73
+            {
74
+                //拉取数据                                  
75
+                var output = new CountedInterest();
76
+                PageData.TradeAPIs.InitFd(MessageData);
77
+                PageData.TradeAPIs.CommSend(MessageData);
78
+				MessageData.Fd126_5 = MainCode;
79
+                MessageData.Fd16 = "K007";
80
+                MessageData.Fd40 = PMJE;
81
+                MessageData.Fd44 = JYRQ;
82
+                MessageData.Fd45 = HPDQR;
83
+                MessageData.Fd46 = ZTTS;
84
+                MessageData.Fd72 = LLBZ;
85
+                MessageData.Fd84 = LL;
86
+
87
+                PageData.TradeAPIs.CallServer(MessageData);
88
+                if (MessageData.Fd12 != "0000")
89
+                {
90
+                    output.IsFailed = true;
91
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
92
+                }                
93
+                output.LX = DelSpace(MessageData.Fd41);
94
+
95
+                return output;
96
+            }
97
+        }
98
+        #endregion
99
+    }
100
+}

+ 79
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/GetRates.cs View File

@@ -0,0 +1,79 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 获取利率
11
+    /// 根据输入的币种、计息类型获取利率
12
+    /// </summary>
13
+    public class GetRates : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 利率 0840
18
+        /// (null)
19
+        /// </summary>
20
+        public string LL { get; internal set; }
21
+
22
+
23
+        #endregion
24
+
25
+        #region Input
26
+		/// <summary>
27
+        /// 参数清单
28
+        /// </summary>
29
+        public class Input : TFInput
30
+        {
31
+            /// <summary>
32
+            /// 币种 0210
33
+            /// (null) 
34
+            /// </summary>
35
+            public string BZ { get; set; }
36
+
37
+            /// <summary>
38
+            /// 利率编号 0230
39
+            /// (null) 
40
+            /// </summary>
41
+            public string LLBH { get; set; }
42
+
43
+            /// <summary>
44
+            /// 利率日期 0440
45
+            /// 如果为当前挂牌利率可输入当前日期 
46
+            /// </summary>
47
+            public string LLRQ { get; set; }
48
+
49
+
50
+            /// <summary>                 
51
+            /// 定义业务逻辑              
52
+            /// </summary>                
53
+            /// <returns></returns>  
54
+            public override TFOutput Raise()
55
+            {
56
+                //拉取数据                                  
57
+                var output = new GetRates();
58
+                PageData.TradeAPIs.InitFd(MessageData);
59
+                PageData.TradeAPIs.CommSend(MessageData);
60
+				MessageData.Fd126_5 = MainCode;
61
+                MessageData.Fd16 = "K011";
62
+                MessageData.Fd21 = BZ;
63
+                MessageData.Fd23 = LLBH;
64
+                MessageData.Fd44 = LLRQ;
65
+
66
+                PageData.TradeAPIs.CallServer(MessageData);
67
+                if (MessageData.Fd12 != "0000")
68
+                {
69
+                    output.IsFailed = true;
70
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
71
+                }                
72
+                output.LL = DelSpace(MessageData.Fd84);
73
+
74
+                return output;
75
+            }
76
+        }
77
+        #endregion
78
+    }
79
+}

+ 88
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/IDNumberVerification.cs View File

@@ -0,0 +1,88 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 证件号码验证
11
+    /// 证件合法性验证
12
+    /// </summary>
13
+    public class IDNumberVerification : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 证件号码 0620
18
+        /// 15位身份证号转变成18位身份证号
19
+        /// </summary>
20
+        public string ZJHM { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 验证通过标志 0730
24
+        /// 第一位[0]验证是否成功 0.身份证验证失败1.身份证验证成功2.机构代码证验证失败3.机构代码证验证成功
25
+        /// </summary>
26
+        public string YZTGBZ { get; internal set; }
27
+
28
+
29
+        #endregion
30
+
31
+        #region Input
32
+		/// <summary>
33
+        /// 参数清单
34
+        /// </summary>
35
+        public class Input : TFInput
36
+        {
37
+            /// <summary>
38
+            /// 证件类型 0670
39
+            /// 1.身份证8.(组织机构)代码证 
40
+            /// </summary>
41
+            public string ZJLX { get; set; }
42
+
43
+            /// <summary>
44
+            /// 证件号码 0620
45
+            /// 主要验证身份证和组织机构代码证 
46
+            /// </summary>
47
+            public string ZJHM { get; set; }
48
+
49
+
50
+            /// <summary>                 
51
+            /// 定义业务逻辑              
52
+            /// </summary>                
53
+            /// <returns></returns>  
54
+            public override TFOutput Raise()
55
+            {
56
+                //拉取数据                                  
57
+                var output = new IDNumberVerification();
58
+                PageData.TradeAPIs.InitFd(MessageData);
59
+                PageData.TradeAPIs.CommSend(MessageData);
60
+				MessageData.Fd126_5 = MainCode;
61
+                MessageData.Fd16 = "K020";
62
+                MessageData.Fd67 = ZJLX;
63
+                MessageData.Fd62 = ZJHM;
64
+
65
+                PageData.TradeAPIs.CallServer(MessageData);
66
+                if (MessageData.Fd12 != "0000")
67
+                {
68
+                    output.IsFailed = true;
69
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
70
+                }                
71
+                output.ZJHM = (MessageData.Fd62);
72
+                output.YZTGBZ = (MessageData.Fd73);
73
+                //是否当前柜员给自己办理业务
74
+                if (TellerSystem.Library.Ext.TradeExtension.SystemSettingsHelper.Instance.IsTellerCustomer)
75
+                {
76
+                    var idCarNO = TellerSystem.Library.Ext.TradeExtension.LoginAuthentication.Instance.IdCarNO;
77
+                    if (!string.IsNullOrEmpty(idCarNO) && output.ZJHM.Trim() == idCarNO.Trim())
78
+                    {
79
+                        output.IsFailed = true;
80
+                        output.FailureCause = "当前柜员不能为自己办理业务!";
81
+                    }
82
+                }
83
+                return output;
84
+            }
85
+        }
86
+        #endregion
87
+    }
88
+}

+ 107
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/MessageComprehensive.cs View File

@@ -0,0 +1,107 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 客户综合签约
11
+    /// 客户综合签约
12
+    /// </summary>
13
+    public class MessageComprehensive : TFOutput
14
+    {
15
+        #region Output
16
+
17
+        #endregion
18
+
19
+        #region Input
20
+		/// <summary>
21
+        /// 参数清单
22
+        /// </summary>
23
+        public class Input : TFInput
24
+        {
25
+            /// <summary>
26
+            /// 多电话 0250
27
+            /// 多电话  
28
+            /// </summary>
29
+            public string DH { get; set; }
30
+
31
+            /// <summary>
32
+            /// 账号 0370
33
+            ///  
34
+            /// </summary>
35
+            public string ZH { get; set; }
36
+
37
+            /// <summary>
38
+            /// 贷方限额 0410
39
+            ///  
40
+            /// </summary>
41
+            public string DFXE { get; set; }
42
+
43
+            /// <summary>
44
+            /// 借方限额 0420
45
+            ///  
46
+            /// </summary>
47
+            public string JFXE { get; set; }
48
+
49
+            /// <summary>
50
+            /// 收费标志 0690
51
+            ///  
52
+            /// </summary>
53
+            public string SFBZ { get; set; }
54
+
55
+            /// <summary>
56
+            /// 账户类型 0710
57
+            ///  
58
+            /// </summary>
59
+            public string ZHLX { get; set; }
60
+
61
+            /// <summary>
62
+            /// 操作方式 0720
63
+            /// 0.开通1.修改2.注销 
64
+            /// </summary>
65
+            public string CZFS { get; set; }
66
+
67
+            /// <summary>
68
+            /// 服务类型 0860
69
+            ///  
70
+            /// </summary>
71
+            public string FWLX { get; set; }
72
+
73
+
74
+            /// <summary>                 
75
+            /// 定义业务逻辑              
76
+            /// </summary>                
77
+            /// <returns></returns>  
78
+            public override TFOutput Raise()
79
+            {
80
+                //拉取数据                                  
81
+                var output = new MessageComprehensive();
82
+                PageData.TradeAPIs.InitFd(MessageData);
83
+                PageData.TradeAPIs.CommSend(MessageData);
84
+				MessageData.Fd126_5 = MainCode;
85
+                MessageData.Fd16 = "8891";
86
+                MessageData.Fd25 = DH;
87
+                MessageData.Fd37 = ZH;
88
+                MessageData.Fd41 = DFXE;
89
+                MessageData.Fd42 = JFXE;
90
+                MessageData.Fd69 = SFBZ;
91
+                MessageData.Fd71 = ZHLX;
92
+                MessageData.Fd72 = CZFS;
93
+                MessageData.Fd86 = FWLX;
94
+
95
+                PageData.TradeAPIs.CallServer(MessageData);
96
+                if (MessageData.Fd12 != "0000")
97
+                {
98
+                    output.IsFailed = true;
99
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
100
+                }                
101
+
102
+                return output;
103
+            }
104
+        }
105
+        #endregion
106
+    }
107
+}

+ 137
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/PasswordAuthentication.cs View File

@@ -0,0 +1,137 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+using TellerSystem.ServiceProxy.Ext.ServiceHelper;
7
+
8
+namespace TellerSystem.Contract.Function
9
+{
10
+    /// <summary>
11
+    /// 密码验证
12
+    /// 对传入的柜员密码或是凭证密码单或是账号密码进行验证
13
+    /// </summary>
14
+    public class PasswordAuthentication : TFOutput
15
+    {
16
+        #region Output
17
+        /// <summary>
18
+        /// 凭证密码验证方式 0670
19
+        /// 0.密码单1.支付密码器
20
+        /// </summary>
21
+        public string PZMMYZFS { get; internal set; }
22
+
23
+
24
+        #endregion
25
+
26
+        #region Input
27
+		/// <summary>
28
+        /// 参数清单
29
+        /// </summary>
30
+        public class Input : TFInput
31
+        {
32
+            /// <summary>
33
+            /// 账号 0300
34
+            /// (null) 
35
+            /// </summary>
36
+            public string ZH { get; set; }
37
+
38
+            /// <summary>
39
+            /// 出票日期 0440
40
+            /// (null) 
41
+            /// </summary>
42
+            public string CPRQ { get; set; }
43
+
44
+            /// <summary>
45
+            /// 凭证号码 0580
46
+            /// (null) 
47
+            /// </summary>
48
+            public string PZHM { get; set; }
49
+
50
+            /// <summary>
51
+            /// 验证标志 0670
52
+            /// 0.账户密码1.柜员密码2.凭证密码3.支付密码器4.凭证密码方式选择 
53
+            /// </summary>
54
+            public string YZBZ { get; set; }
55
+
56
+            /// <summary>
57
+            /// 密码 0800
58
+            /// (null) 
59
+            /// </summary>
60
+            public string MM { get; set; }
61
+
62
+            /// <summary>
63
+            /// 凭证类型 0890
64
+            /// (null) 
65
+            /// </summary>
66
+            public string PZLX { get; set; }
67
+
68
+            /// <summary>
69
+            /// 柜员号 0920
70
+            /// (null) 
71
+            /// </summary>
72
+            public string GYH { get; set; }
73
+
74
+            /// <summary>
75
+            /// 票面金额 0400
76
+            ///  
77
+            /// </summary>
78
+            public string PMJE { get; set; }
79
+
80
+            /// <summary>
81
+            /// 证件号码 0620
82
+            ///  
83
+            /// </summary>
84
+            public string ZJHM { get; set; }
85
+
86
+            /// <summary>
87
+            /// 证件类型 0680
88
+            ///  
89
+            /// </summary>
90
+            public string ZJLX { get; set; }
91
+
92
+
93
+            /// <summary>                 
94
+            /// 定义业务逻辑              
95
+            /// </summary>                
96
+            /// <returns></returns>  
97
+            public override TFOutput Raise()
98
+            {
99
+                //拉取数据                                  
100
+                var output = new PasswordAuthentication();
101
+                PageData.TradeAPIs.InitFd(MessageData);
102
+                PageData.TradeAPIs.CommSend(MessageData);
103
+				MessageData.Fd126_5 = MainCode;
104
+                MessageData.Fd16 = "K021";
105
+                MessageData.Fd30 = ZH;
106
+                MessageData.Fd44 = CPRQ;
107
+                MessageData.Fd58 = PZHM;
108
+                MessageData.Fd67 = YZBZ;
109
+                //国密改造
110
+                if (TradeManagerHandle.TT_SYSCONFIG_GetConfigValueByConfigID("EncrypteGM") == "true")
111
+                {
112
+                    MessageData.Fd122_I = MM;
113
+                }
114
+                else
115
+                {
116
+                    MessageData.Fd80 = MM;
117
+                }
118
+                MessageData.Fd89 = PZLX;
119
+                MessageData.Fd92 = GYH;
120
+                MessageData.Fd40 = PMJE;
121
+                MessageData.Fd62 = ZJHM;
122
+                MessageData.Fd68 = ZJLX;
123
+
124
+                PageData.TradeAPIs.CallServer(MessageData);
125
+                if (MessageData.Fd12 != "0000")
126
+                {
127
+                    output.IsFailed = true;
128
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
129
+                }                
130
+                output.PZMMYZFS = (MessageData.Fd67);
131
+
132
+                return output;
133
+            }
134
+        }
135
+        #endregion
136
+    }
137
+}

+ 79
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/PhoneComprehensive.cs View File

@@ -0,0 +1,79 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 客户综合签约
11
+    /// 电话签约
12
+    /// </summary>
13
+    public class PhoneComprehensive : TFOutput
14
+    {
15
+        #region Output
16
+
17
+        #endregion
18
+
19
+        #region Input
20
+		/// <summary>
21
+        /// 参数清单
22
+        /// </summary>
23
+        public class Input : TFInput
24
+        {
25
+            /// <summary>
26
+            /// 账号 0370
27
+            ///  
28
+            /// </summary>
29
+            public string ZH { get; set; }
30
+
31
+            /// <summary>
32
+            /// 签约标志 0670
33
+            /// 0.签约2.解约3.重置密码4.修改密码 
34
+            /// </summary>
35
+            public string QYBZ { get; set; }
36
+
37
+            /// <summary>
38
+            /// 支取密码 0790
39
+            ///  
40
+            /// </summary>
41
+            public string ZQMM { get; set; }
42
+
43
+            /// <summary>
44
+            /// 电话银行密码 0800
45
+            ///  
46
+            /// </summary>
47
+            public string DHYHMM { get; set; }
48
+
49
+
50
+            /// <summary>                 
51
+            /// 定义业务逻辑              
52
+            /// </summary>                
53
+            /// <returns></returns>  
54
+            public override TFOutput Raise()
55
+            {
56
+                //拉取数据                                  
57
+                var output = new PhoneComprehensive();
58
+                PageData.TradeAPIs.InitFd(MessageData);
59
+                PageData.TradeAPIs.CommSend(MessageData);
60
+				MessageData.Fd126_5 = MainCode;
61
+                MessageData.Fd16 = "9316";
62
+                MessageData.Fd37 = ZH;
63
+                MessageData.Fd67 = QYBZ;
64
+                MessageData.Fd79 = ZQMM;
65
+                MessageData.Fd80 = DHYHMM;
66
+
67
+                PageData.TradeAPIs.CallServer(MessageData);
68
+                if (MessageData.Fd12 != "0000")
69
+                {
70
+                    output.IsFailed = true;
71
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
72
+                }                
73
+
74
+                return output;
75
+            }
76
+        }
77
+        #endregion
78
+    }
79
+}

+ 120
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/ProductUnderLevelSubjects.cs View File

@@ -0,0 +1,120 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 指定一级科目下的活期产品
11
+    /// 根据一级科目号、介质代码查询产品列表
12
+    /// </summary>
13
+    public class ProductUnderLevelSubjects : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 产品列表
18
+        /// 文件附件:产品代码|产品描述|
19
+        /// </summary>
20
+        public string CPLB { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 产品列表
24
+        /// 文件附件:产品代码|产品描述|
25
+        /// </summary>
26
+        public List<E_CPLB> CPLBData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 产品列表
30
+        /// 文件附件:产品代码|产品描述|
31
+        /// </summary>
32
+        public class E_CPLB
33
+        {
34
+            /// <summary>
35
+            /// 产品代码
36
+            /// </summary>
37
+            public string CPDM { get; set; }
38
+
39
+            /// <summary>
40
+            /// 产品描述
41
+            /// </summary>
42
+            public string CPMS { get; set; }
43
+
44
+        }
45
+
46
+        #endregion
47
+
48
+        #region Input
49
+		/// <summary>
50
+        /// 参数清单
51
+        /// </summary>
52
+        public class Input : TFInput
53
+        {
54
+            /// <summary>
55
+            /// 币种 0210
56
+            /// 必输 
57
+            /// </summary>
58
+            public string BZ { get; set; }
59
+
60
+            /// <summary>
61
+            /// 产品可以使用的介质代码 0310
62
+            /// 可选输入 
63
+            /// </summary>
64
+            public string CPKYSYDJZDM { get; set; }
65
+
66
+            /// <summary>
67
+            /// 客户类型 0670
68
+            /// 0:公用;1:个人;2:公司;3:机构(指政府机关等组织);4:金融同业;5:内部员工;6金融机构 
69
+            /// </summary>
70
+            public string KHLX { get; set; }
71
+
72
+            /// <summary>
73
+            /// 业务种类 0300
74
+            /// 一级科目号 
75
+            /// </summary>
76
+            public string YWZL { get; set; }
77
+
78
+
79
+            /// <summary>                 
80
+            /// 定义业务逻辑              
81
+            /// </summary>                
82
+            /// <returns></returns>  
83
+            public override TFOutput Raise()
84
+            {
85
+                //拉取数据                                  
86
+                var output = new ProductUnderLevelSubjects();
87
+                PageData.TradeAPIs.InitFd(MessageData);
88
+                PageData.TradeAPIs.CommSend(MessageData);
89
+				MessageData.Fd126_5 = MainCode;
90
+                MessageData.Fd16 = "CXCL";
91
+                MessageData.Fd21 = BZ;
92
+                MessageData.Fd31 = CPKYSYDJZDM;
93
+                MessageData.Fd67 = KHLX;
94
+                MessageData.Fd128 = "0013";
95
+                MessageData.Fd30 = YWZL;
96
+
97
+                PageData.TradeAPIs.CallServer(MessageData);
98
+                if (MessageData.Fd12 != "0000")
99
+                {
100
+                    output.IsFailed = true;
101
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
102
+                }                
103
+                output.CPLBData = AnilyzeFileData<E_CPLB>(MessageData.FileData,
104
+                                            "产品代码|产品描述|",
105
+                                            x =>
106
+                                            {
107
+                                                return new E_CPLB
108
+                                                {
109
+                                                    CPDM = x["产品代码"],
110
+                                                    CPMS = x["产品描述"]
111
+                                                };
112
+                                            });
113
+                output.CPLB = MessageData.FileData;
114
+
115
+                return output;
116
+            }
117
+        }
118
+        #endregion
119
+    }
120
+}

+ 93
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryATMAccountInformation.cs View File

@@ -0,0 +1,93 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询ATM账户信息
11
+    /// 根据相关要素,返回ATM机帐户各种现金金额
12
+    /// </summary>
13
+    public class QueryATMAccountInformation : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 账面余额 0410
18
+        /// (null)
19
+        /// </summary>
20
+        public string ZMYE { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 长款金额 0420
24
+        /// (null)
25
+        /// </summary>
26
+        public string CKJE { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 短款金额 0430
30
+        /// (null)
31
+        /// </summary>
32
+        public string DKJE { get; internal set; }
33
+
34
+        /// <summary>
35
+        /// 标志位 0730
36
+        /// 第一位[0]验证是否有现金付出(0-有 1-无)
37
+        /// </summary>
38
+        public string BZW { get; internal set; }
39
+
40
+
41
+        #endregion
42
+
43
+        #region Input
44
+		/// <summary>
45
+        /// 参数清单
46
+        /// </summary>
47
+        public class Input : TFInput
48
+        {
49
+            /// <summary>
50
+            /// 实缴金额 0390
51
+            /// (null) 
52
+            /// </summary>
53
+            public string SJJE { get; set; }
54
+
55
+            /// <summary>
56
+            /// ATM柜员号 0920
57
+            /// (null) 
58
+            /// </summary>
59
+            public string ATMGYH { get; set; }
60
+
61
+
62
+            /// <summary>                 
63
+            /// 定义业务逻辑              
64
+            /// </summary>                
65
+            /// <returns></returns>  
66
+            public override TFOutput Raise()
67
+            {
68
+                //拉取数据                                  
69
+                var output = new QueryATMAccountInformation();
70
+                PageData.TradeAPIs.InitFd(MessageData);
71
+                PageData.TradeAPIs.CommSend(MessageData);
72
+				MessageData.Fd126_5 = MainCode;
73
+                MessageData.Fd16 = "K052";
74
+                MessageData.Fd39 = SJJE;
75
+                MessageData.Fd92 = ATMGYH;
76
+
77
+                PageData.TradeAPIs.CallServer(MessageData);
78
+                if (MessageData.Fd12 != "0000")
79
+                {
80
+                    output.IsFailed = true;
81
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
82
+                }                
83
+                output.ZMYE = (MessageData.Fd41);
84
+                output.CKJE = (MessageData.Fd42);
85
+                output.DKJE = (MessageData.Fd43);
86
+                output.BZW = (MessageData.Fd73);
87
+
88
+                return output;
89
+            }
90
+        }
91
+        #endregion
92
+    }
93
+}

+ 65
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryATMGLYXX.cs View File

@@ -0,0 +1,65 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询ATM管理员信息
11
+    /// 通过ATM柜员号查询ATM管理员信息
12
+    /// </summary>
13
+    public class QueryATMGLYXX : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// ATM管理员 0920
18
+        /// 
19
+        /// </summary>
20
+        public string ATMM { get; internal set; }
21
+
22
+
23
+        #endregion
24
+
25
+        #region Input
26
+		/// <summary>
27
+        /// 参数清单
28
+        /// </summary>
29
+        public class Input : TFInput
30
+        {
31
+            /// <summary>
32
+            /// ATM柜员号 0640
33
+            ///  
34
+            /// </summary>
35
+            public string ATM { get; set; }
36
+
37
+
38
+            /// <summary>                 
39
+            /// 定义业务逻辑              
40
+            /// </summary>                
41
+            /// <returns></returns>  
42
+            public override TFOutput Raise()
43
+            {
44
+                //拉取数据                                  
45
+                var output = new QueryATMGLYXX();
46
+                PageData.TradeAPIs.InitFd(MessageData);
47
+                PageData.TradeAPIs.CommSend(MessageData);
48
+				MessageData.Fd126_5 = MainCode;
49
+                MessageData.Fd16 = "K071";
50
+                MessageData.Fd64 = ATM;
51
+
52
+                PageData.TradeAPIs.CallServer(MessageData);
53
+                if (MessageData.Fd12 != "0000")
54
+                {
55
+                    output.IsFailed = true;
56
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
57
+                }                
58
+                output.ATMM = (MessageData.Fd92);
59
+
60
+                return output;
61
+            }
62
+        }
63
+        #endregion
64
+    }
65
+}

+ 266
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAcceptanceAgreementNum.cs View File

@@ -0,0 +1,266 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 根据承兑汇票协议编号查询协议信息
11
+    /// 根据承兑汇票协议编号查询承兑汇票协议详细信息
12
+    /// </summary>
13
+    public class QueryAcceptanceAgreementNum : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 纸票电票标志 0200
18
+        /// P:纸票 E:电票
19
+        /// </summary>
20
+        public string ZPDPBZ { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 付款人开户行行名 0250
24
+        /// (null)
25
+        /// </summary>
26
+        public string FKRKHXXM { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 付款人全称 0260
30
+        /// (null)
31
+        /// </summary>
32
+        public string FKRQC { get; internal set; }
33
+
34
+        /// <summary>
35
+        /// 收款人全称 0270
36
+        /// (null)
37
+        /// </summary>
38
+        public string SKRQC { get; internal set; }
39
+
40
+        /// <summary>
41
+        /// 付款人开户行机构号 0300
42
+        /// (null)
43
+        /// </summary>
44
+        public string FKRKHXJGH { get; internal set; }
45
+
46
+        /// <summary>
47
+        /// 质押协议总编号 0310
48
+        /// (null)
49
+        /// </summary>
50
+        public string ZYXYZBH { get; internal set; }
51
+
52
+        /// <summary>
53
+        /// 保证金账号 0320
54
+        /// (null)
55
+        /// </summary>
56
+        public string BZJZH { get; internal set; }
57
+
58
+        /// <summary>
59
+        /// 付款人账号 0380
60
+        /// (null)
61
+        /// </summary>
62
+        public string FKRZH { get; internal set; }
63
+
64
+        /// <summary>
65
+        /// 保证金比例 0400
66
+        /// (null)
67
+        /// </summary>
68
+        public string BZJBL { get; internal set; }
69
+
70
+        /// <summary>
71
+        /// 已签发票据总金额 0410
72
+        /// (null)
73
+        /// </summary>
74
+        public string YQFPJZJE { get; internal set; }
75
+
76
+        /// <summary>
77
+        /// 到期日期 0440
78
+        /// (null)
79
+        /// </summary>
80
+        public string DQRQ { get; internal set; }
81
+
82
+        /// <summary>
83
+        /// 申请日期 0460
84
+        /// (null)
85
+        /// </summary>
86
+        public string SQRQ { get; internal set; }
87
+
88
+        /// <summary>
89
+        /// 该协议下最大编号 0480
90
+        /// (null)
91
+        /// </summary>
92
+        public string GXYXZDBH { get; internal set; }
93
+
94
+        /// <summary>
95
+        /// 承兑汇票的记账科目(表外) 0640
96
+        /// (null)
97
+        /// </summary>
98
+        public string CDHPDJZKMBW { get; internal set; }
99
+
100
+        /// <summary>
101
+        /// 承兑类型 0670
102
+        /// 1:差额承兑;2:100%质押存单;3:100%保证金;4:保兑仓;5:承兑拆分
103
+        /// </summary>
104
+        public string CDLX { get; internal set; }
105
+
106
+        /// <summary>
107
+        /// 协议状态 0700
108
+        /// 9:外行的承兑汇票过来质押X:信贷审批录入1:审核;2:全部签发;3:退票修改;4:部分签发
109
+        /// </summary>
110
+        public string XYZT { get; internal set; }
111
+
112
+        /// <summary>
113
+        /// 到期标志处理 0710
114
+        /// 0:未到期处理;1:已到期处理
115
+        /// </summary>
116
+        public string DQBZCL { get; internal set; }
117
+
118
+        /// <summary>
119
+        /// 是否有该协议 0720
120
+        /// 0无 1有
121
+        /// </summary>
122
+        public string SFYGXY { get; internal set; }
123
+
124
+        /// <summary>
125
+        /// 收款人行名 0810
126
+        /// (null)
127
+        /// </summary>
128
+        public string SKRXM { get; internal set; }
129
+
130
+        /// <summary>
131
+        /// 收款人账号 0830
132
+        /// (null)
133
+        /// </summary>
134
+        public string SKRZH { get; internal set; }
135
+
136
+        /// <summary>
137
+        /// 罚息利率 0840
138
+        /// (null)
139
+        /// </summary>
140
+        public string FXLL { get; internal set; }
141
+
142
+        /// <summary>
143
+        /// 申请机构编码 0910
144
+        /// (null)
145
+        /// </summary>
146
+        public string SQJGBM { get; internal set; }
147
+
148
+        /// <summary>
149
+        /// 协议金额 1001
150
+        /// (null)
151
+        /// </summary>
152
+        public string XYJE { get; internal set; }
153
+
154
+        /// <summary>
155
+        /// 质押总金额 1002
156
+        /// (null)
157
+        /// </summary>
158
+        public string ZYZJE { get; internal set; }
159
+
160
+        /// <summary>
161
+        /// 保证金金额 1003
162
+        /// (null)
163
+        /// </summary>
164
+        public string BZJJE { get; internal set; }
165
+
166
+        /// <summary>
167
+        /// 银行垫款账号 1011
168
+        /// (null)
169
+        /// </summary>
170
+        public string YXDKZH { get; internal set; }
171
+
172
+        /// <summary>
173
+        /// 银行垫款额 1013
174
+        /// (null)
175
+        /// </summary>
176
+        public string YXDKE { get; internal set; }
177
+
178
+        /// <summary>
179
+        /// 审核柜员 0650
180
+        /// 
181
+        /// </summary>
182
+        public string SHGY { get; internal set; }
183
+
184
+        /// <summary>
185
+        /// 录入柜员 0920
186
+        /// 
187
+        /// </summary>
188
+        public string LRGY { get; internal set; }
189
+
190
+        /// <summary>
191
+        /// 保证金利率 0850
192
+        /// 
193
+        /// </summary>
194
+        public string BZJLL { get; internal set; }
195
+        #endregion
196
+
197
+        #region Input
198
+		/// <summary>
199
+        /// 参数清单
200
+        /// </summary>
201
+        public class Input : TFInput
202
+        {
203
+            /// <summary>
204
+            /// 承兑汇票协议编号 0330
205
+            /// (null) 
206
+            /// </summary>
207
+            public string CDHPXYBH { get; set; }
208
+
209
+
210
+            /// <summary>                 
211
+            /// 定义业务逻辑              
212
+            /// </summary>                
213
+            /// <returns></returns>  
214
+            public override TFOutput Raise()
215
+            {
216
+                //拉取数据                                  
217
+                var output = new QueryAcceptanceAgreementNum();
218
+                PageData.TradeAPIs.InitFd(MessageData);
219
+                PageData.TradeAPIs.CommSend(MessageData);
220
+				MessageData.Fd126_5 = MainCode;
221
+                MessageData.Fd16 = "K001";
222
+                MessageData.Fd33 = CDHPXYBH;
223
+
224
+                PageData.TradeAPIs.CallServer(MessageData);
225
+                if (MessageData.Fd12 != "0000")
226
+                {
227
+                    output.IsFailed = true;
228
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
229
+                }                
230
+                output.ZPDPBZ = DelSpace(MessageData.Fd20);
231
+                output.FKRKHXXM = DelSpace(MessageData.Fd25);
232
+                output.FKRQC = DelSpace(MessageData.Fd26);
233
+                output.SKRQC = DelSpace(MessageData.Fd27);
234
+                output.FKRKHXJGH = DelSpace(MessageData.Fd30);
235
+                output.ZYXYZBH = DelSpace(MessageData.Fd31);
236
+                output.BZJZH = DelSpace(MessageData.Fd32);
237
+                output.FKRZH = DelSpace(MessageData.Fd38);
238
+                output.BZJBL = DelSpace(MessageData.Fd40);
239
+                output.YQFPJZJE = DelSpace(MessageData.Fd41);
240
+                output.DQRQ = DelSpace(MessageData.Fd44);
241
+                output.SQRQ = DelSpace(MessageData.Fd46);
242
+                output.GXYXZDBH = DelSpace(MessageData.Fd48);
243
+                output.CDHPDJZKMBW = DelSpace(MessageData.Fd64);
244
+                output.CDLX = DelSpace(MessageData.Fd67);
245
+                output.XYZT = DelSpace(MessageData.Fd70);
246
+                output.DQBZCL = DelSpace(MessageData.Fd71);
247
+                output.SFYGXY = DelSpace(MessageData.Fd72);
248
+                output.SKRXM = DelSpace(MessageData.Fd81);
249
+                output.SKRZH = DelSpace(MessageData.Fd83);
250
+                output.FXLL = DelSpace(MessageData.Fd84);
251
+                output.SQJGBM = DelSpace(MessageData.Fd91);
252
+                output.XYJE = DelSpace(MessageData.Fd100_1);
253
+                output.ZYZJE = DelSpace(MessageData.Fd100_2);
254
+                output.BZJJE = DelSpace(MessageData.Fd100_3);
255
+                output.YXDKZH = DelSpace(MessageData.Fd101_1);
256
+                output.YXDKE = DelSpace(MessageData.Fd101_3);
257
+                output.SHGY = DelSpace(MessageData.Fd65);
258
+                output.LRGY = DelSpace(MessageData.Fd92);
259
+                output.BZJLL = DelSpace(MessageData.Fd85);
260
+
261
+                return output;
262
+            }
263
+        }
264
+        #endregion
265
+    }
266
+}

+ 168
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAcceptanceInformation.cs View File

@@ -0,0 +1,168 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询承兑汇票票据信息
11
+    /// 根据输入的承兑汇票号码查询该票据信息
12
+    /// </summary>
13
+    public class QueryAcceptanceInformation : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 签发编号 0170
18
+        /// (null)
19
+        /// </summary>
20
+        public string QFBH { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 收款人名称 0270
24
+        /// (null)
25
+        /// </summary>
26
+        public string SKRMC { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 协议编号 0310
30
+        /// (null)
31
+        /// </summary>
32
+        public string XYBH { get; internal set; }
33
+
34
+        /// <summary>
35
+        /// 收到委托日期 0450
36
+        /// (null)
37
+        /// </summary>
38
+        public string SDWTRQ { get; internal set; }
39
+
40
+        /// <summary>
41
+        /// 签发日期 0460
42
+        /// (null)
43
+        /// </summary>
44
+        public string QFRQ { get; internal set; }
45
+
46
+        /// <summary>
47
+        /// 核销日期 0470
48
+        /// (null)
49
+        /// </summary>
50
+        public string HXRQ { get; internal set; }
51
+
52
+        /// <summary>
53
+        /// 承兑汇票状态 0680
54
+        /// 1:签发;2:核销;(状态为核销后才能兑付承兑)3:退票;4:托收 5:承兑汇票已入库;9:外行的承兑汇票过来质押。
55
+        /// </summary>
56
+        public string CDHPZT { get; internal set; }
57
+
58
+        /// <summary>
59
+        /// 到期处理标志 0700
60
+        /// Y:到期;N:未到期
61
+        /// </summary>
62
+        public string DQCLBZ { get; internal set; }
63
+
64
+        /// <summary>
65
+        /// 是否有该票据 0720
66
+        /// 0否1有
67
+        /// </summary>
68
+        public string SFYGPJ { get; internal set; }
69
+
70
+        /// <summary>
71
+        /// 收款人开户行行名 0810
72
+        /// (null)
73
+        /// </summary>
74
+        public string SKRKHXXM { get; internal set; }
75
+
76
+        /// <summary>
77
+        /// 收款人账号 0830
78
+        /// (null)
79
+        /// </summary>
80
+        public string SKRZH { get; internal set; }
81
+
82
+        /// <summary>
83
+        /// 签发机构 0910
84
+        /// (null)
85
+        /// </summary>
86
+        public string QFJG { get; internal set; }
87
+
88
+        /// <summary>
89
+        /// 承兑汇票标志 0930
90
+        /// 0:挂失;1:正常;2:止付
91
+        /// </summary>
92
+        public string CDHPBZ { get; internal set; }
93
+
94
+        /// <summary>
95
+        /// 票面金额 1001
96
+        /// (null)
97
+        /// </summary>
98
+        public string PMJE { get; internal set; }
99
+
100
+        /// <summary>
101
+        /// 承兑汇票手续费
102
+        /// </summary>
103
+        public string CDHPSXF { get; internal set; }
104
+
105
+        /// <summary>
106
+        ///承兑汇票敞口费
107
+        /// (null)
108
+        /// </summary>
109
+        public string CDHPCKF { get; internal set; }
110
+
111
+        #endregion
112
+
113
+        #region Input
114
+        /// <summary>
115
+        /// 参数清单
116
+        /// </summary>
117
+        public class Input : TFInput
118
+        {
119
+            /// <summary>
120
+            /// 承兑汇票号码 0580
121
+            /// (null) 
122
+            /// </summary>
123
+            public string CDHPHM { get; set; }
124
+
125
+
126
+            /// <summary>                 
127
+            /// 定义业务逻辑              
128
+            /// </summary>                
129
+            /// <returns></returns>  
130
+            public override TFOutput Raise()
131
+            {
132
+                //拉取数据                                  
133
+                var output = new QueryAcceptanceInformation();
134
+                PageData.TradeAPIs.InitFd(MessageData);
135
+                PageData.TradeAPIs.CommSend(MessageData);
136
+                MessageData.Fd126_5 = MainCode;
137
+                MessageData.Fd16 = "K002";
138
+                MessageData.Fd58 = CDHPHM;
139
+
140
+                PageData.TradeAPIs.CallServer(MessageData);
141
+                if (MessageData.Fd12 != "0000")
142
+                {
143
+                    output.IsFailed = true;
144
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
145
+                }
146
+                output.QFBH = DelSpace(MessageData.Fd17);
147
+                output.SKRMC = DelSpace(MessageData.Fd27);
148
+                output.XYBH = DelSpace(MessageData.Fd31);
149
+                output.SDWTRQ = DelSpace(MessageData.Fd45);
150
+                output.CDHPSXF = DelSpace(MessageData.Fd41);
151
+                output.CDHPCKF = DelSpace(MessageData.Fd42);
152
+                output.QFRQ = DelSpace(MessageData.Fd46);
153
+                output.HXRQ = DelSpace(MessageData.Fd47);
154
+                output.CDHPZT = DelSpace(MessageData.Fd68);
155
+                output.DQCLBZ = DelSpace(MessageData.Fd70);
156
+                output.SFYGPJ = DelSpace(MessageData.Fd72);
157
+                output.SKRKHXXM = DelSpace(MessageData.Fd81);
158
+                output.SKRZH = DelSpace(MessageData.Fd83);
159
+                output.QFJG = DelSpace(MessageData.Fd91);
160
+                output.CDHPBZ = DelSpace(MessageData.Fd93);
161
+                output.PMJE = DelSpace(MessageData.Fd100_1);
162
+
163
+                return output;
164
+            }
165
+        }
166
+        #endregion
167
+    }
168
+}

+ 172
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccordPackingNum.cs View File

@@ -0,0 +1,172 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 根据打包合同号查询录入或已审核的贴现信息
11
+    /// 根据合同号查询所有的录入或已审核的贴现信息,返回文件
12
+    /// </summary>
13
+    public class QueryAccordPackingNum : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 文件
18
+        /// 文件格式: 协议编号|转贴现率|转贴现利息|本地异地|在途天数|票据类型|票据号码|票面金额|票到期日|申请人名称| 总条数| 总票据金额| 总贴现利息|
19
+        /// </summary>
20
+        public string WJ { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 文件
24
+        /// 文件格式: 协议编号|转贴现率|转贴现利息|本地异地|在途天数|票据类型|票据号码|票面金额|票到期日|申请人名称| 总条数| 总票据金额| 总贴现利息|
25
+        /// </summary>
26
+        public List<E_WJ> WJData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 文件
30
+        /// 文件格式: 协议编号|转贴现率|转贴现利息|本地异地|在途天数|票据类型|票据号码|票面金额|票到期日|申请人名称| 总条数| 总票据金额| 总贴现利息|
31
+        /// </summary>
32
+        public class E_WJ
33
+        {
34
+            /// <summary>
35
+            /// 协议编号
36
+            /// </summary>
37
+            public string XYBH { get; set; }
38
+
39
+            /// <summary>
40
+            /// 转贴现率
41
+            /// </summary>
42
+            public string ZTXL { get; set; }
43
+
44
+            /// <summary>
45
+            /// 转贴现利息
46
+            /// </summary>
47
+            public string ZTXLX { get; set; }
48
+
49
+            /// <summary>
50
+            /// 本地异地
51
+            /// </summary>
52
+            public string BDYD { get; set; }
53
+
54
+            /// <summary>
55
+            /// 在途天数
56
+            /// </summary>
57
+            public string ZTTS { get; set; }
58
+
59
+            /// <summary>
60
+            /// 票据类型
61
+            /// </summary>
62
+            public string PJLX { get; set; }
63
+
64
+            /// <summary>
65
+            /// 票据号码
66
+            /// </summary>
67
+            public string PJHM { get; set; }
68
+
69
+            /// <summary>
70
+            /// 票面金额
71
+            /// </summary>
72
+            public string PMJE { get; set; }
73
+
74
+            /// <summary>
75
+            /// 票到期日
76
+            /// </summary>
77
+            public string PDQR { get; set; }
78
+
79
+            /// <summary>
80
+            /// 申请人名称
81
+            /// </summary>
82
+            public string SQRMC { get; set; }
83
+
84
+            /// <summary>
85
+            ///  总条数
86
+            /// </summary>
87
+            public string ZTS { get; set; }
88
+
89
+            /// <summary>
90
+            ///  总票据金额
91
+            /// </summary>
92
+            public string ZPJJE { get; set; }
93
+
94
+            /// <summary>
95
+            ///  总贴现利息
96
+            /// </summary>
97
+            public string ZTXLX_1 { get; set; }
98
+
99
+        }
100
+
101
+        #endregion
102
+
103
+        #region Input
104
+		/// <summary>
105
+        /// 参数清单
106
+        /// </summary>
107
+        public class Input : TFInput
108
+        {
109
+            /// <summary>
110
+            /// 打包合同号 0620
111
+            /// (null) 
112
+            /// </summary>
113
+            public string DBHTH { get; set; }
114
+
115
+            /// <summary>
116
+            /// 区分标志 0670
117
+            /// X录入 2已审核 
118
+            /// </summary>
119
+            public string QFBZ { get; set; }
120
+
121
+
122
+            /// <summary>                 
123
+            /// 定义业务逻辑              
124
+            /// </summary>                
125
+            /// <returns></returns>  
126
+            public override TFOutput Raise()
127
+            {
128
+                //拉取数据                                  
129
+                var output = new QueryAccordPackingNum();
130
+                PageData.TradeAPIs.InitFd(MessageData);
131
+                PageData.TradeAPIs.CommSend(MessageData);
132
+				MessageData.Fd126_5 = MainCode;
133
+                MessageData.Fd16 = "CXCL";
134
+                MessageData.Fd62 = DBHTH;
135
+                MessageData.Fd67 = QFBZ;
136
+                MessageData.Fd128 = "0007";
137
+
138
+                PageData.TradeAPIs.CallServer(MessageData);
139
+                if (MessageData.Fd12 != "0000")
140
+                {
141
+                    output.IsFailed = true;
142
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
143
+                }                
144
+                output.WJData = AnilyzeFileData<E_WJ>(MessageData.FileData,
145
+                                            "协议编号|转贴现率|转贴现利息|本地异地|在途天数|票据类型|票据号码|票面金额|票到期日|申请人名称| 总条数| 总票据金额| 总贴现利息|",
146
+                                            x =>
147
+                                            {
148
+                                                return new E_WJ
149
+                                                {
150
+                                                    XYBH = x["协议编号"],
151
+                                                    ZTXL = x["转贴现率"],
152
+                                                    ZTXLX = x["转贴现利息"],
153
+                                                    BDYD = x["本地异地"],
154
+                                                    ZTTS = x["在途天数"],
155
+                                                    PJLX = x["票据类型"],
156
+                                                    PJHM = x["票据号码"],
157
+                                                    PMJE = x["票面金额"],
158
+                                                    PDQR = x["票到期日"],
159
+                                                    SQRMC = x["申请人名称"],
160
+                                                    ZTS = x[" 总条数"],
161
+                                                    ZPJJE = x[" 总票据金额"],
162
+                                                    ZTXLX_1 = x[" 总贴现利息"]
163
+                                                };
164
+                                            });
165
+                output.WJ = MessageData.FileData;
166
+
167
+                return output;
168
+            }
169
+        }
170
+        #endregion
171
+    }
172
+}

+ 178
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountDeductInfo.cs View File

@@ -0,0 +1,178 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询账户计划扣划信息
11
+    /// 通过账号查询账户计划扣划信息
12
+    /// </summary>
13
+    public class QueryAccountDeductInfo : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 账户扣划信息
18
+        /// 账户序号|冻结序号|扣划类型|扣划周期|起始日期|终止日期|固定扣划金额|计划扣划总额|已扣划总额|已扣划笔数|上次扣划日期|扣划机构|扣划柜员|备注|
19
+        /// </summary>
20
+        public string ZHKHXX { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 账户扣划信息
24
+        /// 账户序号|冻结序号|扣划类型|扣划周期|起始日期|终止日期|固定扣划金额|计划扣划总额|已扣划总额|已扣划笔数|上次扣划日期|扣划机构|扣划柜员|备注|
25
+        /// </summary>
26
+        public List<E_ZHKHXX> ZHKHXXData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 账户扣划信息
30
+        /// 账户序号|冻结序号|扣划类型|扣划周期|起始日期|终止日期|固定扣划金额|计划扣划总额|已扣划总额|已扣划笔数|上次扣划日期|扣划机构|扣划柜员|备注|
31
+        /// </summary>
32
+        public class E_ZHKHXX
33
+        {
34
+            /// <summary>
35
+            /// 账户序号
36
+            /// </summary>
37
+            public string ZHXH { get; set; }
38
+
39
+            /// <summary>
40
+            /// 冻结序号
41
+            /// </summary>
42
+            public string DJXH { get; set; }
43
+
44
+            /// <summary>
45
+            /// 扣划类型
46
+            /// </summary>
47
+            public string KHLX { get; set; }
48
+
49
+            /// <summary>
50
+            /// 扣划周期
51
+            /// </summary>
52
+            public string KHZQ { get; set; }
53
+
54
+            /// <summary>
55
+            /// 起始日期
56
+            /// </summary>
57
+            public string QSRQ { get; set; }
58
+
59
+            /// <summary>
60
+            /// 终止日期
61
+            /// </summary>
62
+            public string ZZRQ { get; set; }
63
+
64
+            /// <summary>
65
+            /// 固定扣划金额
66
+            /// </summary>
67
+            public string GDKHJE { get; set; }
68
+
69
+            /// <summary>
70
+            /// 计划扣划总额
71
+            /// </summary>
72
+            public string JHKHZE { get; set; }
73
+
74
+            /// <summary>
75
+            /// 已扣划总额
76
+            /// </summary>
77
+            public string YKHZE { get; set; }
78
+
79
+            /// <summary>
80
+            /// 已扣划笔数
81
+            /// </summary>
82
+            public string YKHBS { get; set; }
83
+
84
+            /// <summary>
85
+            /// 上次扣划日期
86
+            /// </summary>
87
+            public string SCKHRQ { get; set; }
88
+
89
+            /// <summary>
90
+            /// 扣划机构
91
+            /// </summary>
92
+            public string KHJG { get; set; }
93
+
94
+            /// <summary>
95
+            /// 扣划柜员
96
+            /// </summary>
97
+            public string KHGY { get; set; }
98
+
99
+            /// <summary>
100
+            /// 备注
101
+            /// </summary>
102
+            public string BZ { get; set; }
103
+
104
+        }
105
+
106
+        #endregion
107
+
108
+        #region Input
109
+		/// <summary>
110
+        /// 参数清单
111
+        /// </summary>
112
+        public class Input : TFInput
113
+        {
114
+            /// <summary>
115
+            /// 账号 0300
116
+            /// (null) 
117
+            /// </summary>
118
+            public string ZH { get; set; }
119
+
120
+            /// <summary>
121
+            /// 账户序号 0340
122
+            /// (null) 
123
+            /// </summary>
124
+            public string ZHXH { get; set; }
125
+
126
+
127
+            /// <summary>                 
128
+            /// 定义业务逻辑              
129
+            /// </summary>                
130
+            /// <returns></returns>  
131
+            public override TFOutput Raise()
132
+            {
133
+                //拉取数据                                  
134
+                var output = new QueryAccountDeductInfo();
135
+                PageData.TradeAPIs.InitFd(MessageData);
136
+                PageData.TradeAPIs.CommSend(MessageData);
137
+				MessageData.Fd126_5 = MainCode;
138
+                MessageData.Fd16 = "CXCL";
139
+                MessageData.Fd30 = ZH;
140
+                MessageData.Fd34 = ZHXH;
141
+                MessageData.Fd128 = "0012";
142
+
143
+                PageData.TradeAPIs.CallServer(MessageData);
144
+                if (MessageData.Fd12 != "0000")
145
+                {
146
+                    output.IsFailed = true;
147
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
148
+                }                
149
+                output.ZHKHXXData = AnilyzeFileData<E_ZHKHXX>(MessageData.FileData,
150
+                                            "账户序号|冻结序号|扣划类型|扣划周期|起始日期|终止日期|固定扣划金额|计划扣划总额|已扣划总额|已扣划笔数|上次扣划日期|扣划机构|扣划柜员|备注|",
151
+                                            x =>
152
+                                            {
153
+                                                return new E_ZHKHXX
154
+                                                {
155
+                                                    ZHXH = x["账户序号"],
156
+                                                    DJXH = x["冻结序号"],
157
+                                                    KHLX = x["扣划类型"],
158
+                                                    KHZQ = x["扣划周期"],
159
+                                                    QSRQ = x["起始日期"],
160
+                                                    ZZRQ = x["终止日期"],
161
+                                                    GDKHJE = x["固定扣划金额"],
162
+                                                    JHKHZE = x["计划扣划总额"],
163
+                                                    YKHZE = x["已扣划总额"],
164
+                                                    YKHBS = x["已扣划笔数"],
165
+                                                    SCKHRQ = x["上次扣划日期"],
166
+                                                    KHJG = x["扣划机构"],
167
+                                                    KHGY = x["扣划柜员"],
168
+                                                    BZ = x["备注"]
169
+                                                };
170
+                                            });
171
+                output.ZHKHXX = MessageData.FileData;
172
+
173
+                return output;
174
+            }
175
+        }
176
+        #endregion
177
+    }
178
+}

+ 94
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountDetail.cs View File

@@ -0,0 +1,94 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询账户明细
11
+    /// 查询账户明细
12
+    /// </summary>
13
+    public class QueryAccountDetail : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 内容列表
18
+        /// 活期:交易日期|摘要|现转|借贷|发生额|余额|交易机构|交易柜员|流水号|交易时间|凭证号|代理人姓名|代理人证件类型|代理人证件号码|,定期:交易日期|摘要|现转|借贷|发生额|余额|交易机构|交易柜员|流水号|交易时间|凭证号|代理人姓名|代理人证件类型|代理人证件号码|,内部:交易日期|摘要|现转|借贷|发生额|余额|交易机构|交易柜员|流水号|交易时间|凭证号|,贷款:交易日期|摘要|现转|借贷|交易类型|发生额|余额|交易机构|交易柜员|流水号|交易时间|
19
+        /// </summary>
20
+        public string NRLB { get; internal set; }
21
+
22
+
23
+        #endregion
24
+
25
+        #region Input
26
+		/// <summary>
27
+        /// 参数清单
28
+        /// </summary>
29
+        public class Input : TFInput
30
+        {
31
+            /// <summary>
32
+            /// 账号 0380
33
+            ///  
34
+            /// </summary>
35
+            public string ZH { get; set; }
36
+
37
+            /// <summary>
38
+            /// 起始日期 0440
39
+            ///  
40
+            /// </summary>
41
+            public string QSRQ { get; set; }
42
+
43
+            /// <summary>
44
+            /// 截止日期 0450
45
+            ///  
46
+            /// </summary>
47
+            public string JZRQ { get; set; }
48
+
49
+            /// <summary>
50
+            /// 账户序号 0510
51
+            ///  
52
+            /// </summary>
53
+            public string ZHXH { get; set; }
54
+
55
+            /// <summary>
56
+            /// 查询标志 0660
57
+            /// 1活期2定期9内部3贷款 
58
+            /// </summary>
59
+            public string CXBZ { get; set; }
60
+
61
+
62
+            /// <summary>                 
63
+            /// 定义业务逻辑              
64
+            /// </summary>                
65
+            /// <returns></returns>  
66
+            public override TFOutput Raise()
67
+            {
68
+                //拉取数据                                  
69
+                var output = new QueryAccountDetail();
70
+                PageData.TradeAPIs.InitFd(MessageData);
71
+                PageData.TradeAPIs.CommSend(MessageData);
72
+				MessageData.Fd126_5 = MainCode;
73
+                MessageData.Fd16 = "CXCL";
74
+                MessageData.Fd38 = ZH;
75
+                MessageData.Fd44 = QSRQ;
76
+                MessageData.Fd45 = JZRQ;
77
+                MessageData.Fd51 = ZHXH;
78
+                MessageData.Fd66 = CXBZ;
79
+                MessageData.Fd128 = "0073";
80
+
81
+                PageData.TradeAPIs.CallServer(MessageData);
82
+                if (MessageData.Fd12 != "0000")
83
+                {
84
+                    output.IsFailed = true;
85
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
86
+                }                
87
+                output.NRLB = MessageData.FileData;
88
+
89
+                return output;
90
+            }
91
+        }
92
+        #endregion
93
+    }
94
+}

+ 72
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountFHList.cs View File

@@ -0,0 +1,72 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 根据账号查询分户信息
11
+    /// 根据账号查询分户信息
12
+    /// </summary>
13
+    public class QueryAccountFHList : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 内容列表
18
+        /// 存款:账号|账户序号|户名|余额|开户机构|产品名称|开户日期|账户类型|,内部帐:账号|户名|产品名称|余额|账户类型|,贷款:账号|序号|户名|产品名称|余额|账户类型|
19
+        /// </summary>
20
+        public string NRLB { get; internal set; }
21
+
22
+
23
+        #endregion
24
+
25
+        #region Input
26
+		/// <summary>
27
+        /// 参数清单
28
+        /// </summary>
29
+        public class Input : TFInput
30
+        {
31
+            /// <summary>
32
+            /// 账号 0380
33
+            ///  
34
+            /// </summary>
35
+            public string ZH { get; set; }
36
+
37
+            /// <summary>
38
+            /// 查询标志 0690
39
+            /// 1存款2内部3贷款 
40
+            /// </summary>
41
+            public string CXBZ { get; set; }
42
+
43
+
44
+            /// <summary>                 
45
+            /// 定义业务逻辑              
46
+            /// </summary>                
47
+            /// <returns></returns>  
48
+            public override TFOutput Raise()
49
+            {
50
+                //拉取数据                                  
51
+                var output = new QueryAccountFHList();
52
+                PageData.TradeAPIs.InitFd(MessageData);
53
+                PageData.TradeAPIs.CommSend(MessageData);
54
+				MessageData.Fd126_5 = MainCode;
55
+                MessageData.Fd16 = "CXCL";
56
+                MessageData.Fd38 = ZH;
57
+                MessageData.Fd69 = CXBZ;
58
+
59
+                PageData.TradeAPIs.CallServer(MessageData);
60
+                if (MessageData.Fd12 != "0000")
61
+                {
62
+                    output.IsFailed = true;
63
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
64
+                }                
65
+                output.NRLB = MessageData.FileData;
66
+
67
+                return output;
68
+            }
69
+        }
70
+        #endregion
71
+    }
72
+}

+ 179
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountInfoByCustomer.cs View File

@@ -0,0 +1,179 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询客户账户信息
11
+    /// 通过证件信息查询该客户所有账户
12
+    /// </summary>
13
+    public class QueryAccountInfoByCustomer : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 账户信息
18
+        /// 账/卡号|账号ID|户名|介质代码|介质名称|产品代码|产品名称|凭证号码|介质状态|支取方式|开户机构|启用日期|
19
+        /// </summary>
20
+        public string ZHXX { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 账户信息
24
+        /// 账/卡号|账号ID|户名|介质代码|介质名称|产品代码|产品名称|凭证号码|介质状态|支取方式|开户机构|启用日期|
25
+        /// </summary>
26
+        public List<E_ZHXX> ZHXXData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 账户信息
30
+        /// 账/卡号|账号ID|户名|介质代码|介质名称|产品代码|产品名称|凭证号码|介质状态|支取方式|开户机构|启用日期|
31
+        /// </summary>
32
+        public class E_ZHXX
33
+        {
34
+            /// <summary>
35
+            /// 账/卡号
36
+            /// </summary>
37
+            public string ZKH { get; set; }
38
+
39
+            /// <summary>
40
+            /// 账号ID
41
+            /// </summary>
42
+            public string ZHID { get; set; }
43
+
44
+            /// <summary>
45
+            /// 户名
46
+            /// </summary>
47
+            public string HM { get; set; }
48
+
49
+            /// <summary>
50
+            /// 介质代码
51
+            /// </summary>
52
+            public string JZDM { get; set; }
53
+
54
+            /// <summary>
55
+            /// 介质名称
56
+            /// </summary>
57
+            public string JZMC { get; set; }
58
+
59
+            /// <summary>
60
+            /// 产品代码
61
+            /// </summary>
62
+            public string CPDM { get; set; }
63
+
64
+            /// <summary>
65
+            /// 产品名称
66
+            /// </summary>
67
+            public string CPMC { get; set; }
68
+
69
+            /// <summary>
70
+            /// 凭证号码
71
+            /// </summary>
72
+            public string PZHM { get; set; }
73
+
74
+            /// <summary>
75
+            /// 介质状态
76
+            /// </summary>
77
+            public string JZZT { get; set; }
78
+
79
+            /// <summary>
80
+            /// 支取方式
81
+            /// </summary>
82
+            public string ZQFS { get; set; }
83
+
84
+            /// <summary>
85
+            /// 开户机构
86
+            /// </summary>
87
+            public string KHJG { get; set; }
88
+
89
+            /// <summary>
90
+            /// 启用日期
91
+            /// </summary>
92
+            public string QYRQ { get; set; }
93
+
94
+        }
95
+
96
+        #endregion
97
+
98
+        #region Input
99
+		/// <summary>
100
+        /// 参数清单
101
+        /// </summary>
102
+        public class Input : TFInput
103
+        {
104
+            /// <summary>
105
+            /// 户名 0250
106
+            ///  
107
+            /// </summary>
108
+            public string HM { get; set; }
109
+
110
+            /// <summary>
111
+            /// 证件号码 102A
112
+            ///  
113
+            /// </summary>
114
+            public string ZJHM { get; set; }
115
+
116
+            /// <summary>
117
+            /// 证件类型 102G
118
+            ///  
119
+            /// </summary>
120
+            public string ZJLX { get; set; }
121
+
122
+            /// <summary>
123
+            /// 查询标志 0670
124
+            /// 1-不包含无单折、对公一户通(用于介质相关的交易) 
125
+            /// </summary>
126
+            public string CXBZ { get; set; }
127
+
128
+
129
+            /// <summary>                 
130
+            /// 定义业务逻辑              
131
+            /// </summary>                
132
+            /// <returns></returns>  
133
+            public override TFOutput Raise()
134
+            {
135
+                //拉取数据                                  
136
+                var output = new QueryAccountInfoByCustomer();
137
+                PageData.TradeAPIs.InitFd(MessageData);
138
+                PageData.TradeAPIs.CommSend(MessageData);
139
+				MessageData.Fd126_5 = MainCode;
140
+                MessageData.Fd16 = "CXCL";
141
+                MessageData.Fd25 = HM;
142
+                MessageData.Fd102_A = ZJHM;
143
+                MessageData.Fd102_G = ZJLX;
144
+                MessageData.Fd128 = "0009";
145
+                MessageData.Fd67 = CXBZ;
146
+
147
+                PageData.TradeAPIs.CallServer(MessageData);
148
+                if (MessageData.Fd12 != "0000")
149
+                {
150
+                    output.IsFailed = true;
151
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
152
+                }                
153
+                output.ZHXXData = AnilyzeFileData<E_ZHXX>(MessageData.FileData,
154
+                                            "账/卡号|户名|介质代码|介质名称|产品代码|产品名称|凭证号码|介质状态|支取方式|开户机构|开户日期|",
155
+                                            x =>
156
+                                            {
157
+                                                return new E_ZHXX
158
+                                                {
159
+                                                    ZKH = x["账/卡号"],
160
+                                                    HM = x["户名"],
161
+                                                    JZDM = x["介质代码"],
162
+                                                    JZMC = x["介质名称"],
163
+                                                    CPDM = x["产品代码"],
164
+                                                    CPMC = x["产品名称"],
165
+                                                    PZHM = x["凭证号码"],
166
+                                                    JZZT = x["介质状态"],
167
+                                                    ZQFS = x["支取方式"],
168
+                                                    KHJG = x["开户机构"],
169
+                                                    QYRQ = x["开户日期"]
170
+                                                };
171
+                                            });
172
+                output.ZHXX = MessageData.FileData;
173
+
174
+                return output;
175
+            }
176
+        }
177
+        #endregion
178
+    }
179
+}

+ 80
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountMoreInfo.cs View File

@@ -0,0 +1,80 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询账户详细信息
11
+    /// 查询账户详细信息
12
+    /// </summary>
13
+    public class QueryAccountMoreInfo : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 内容列表
18
+        /// 活期:INFO账号|开户行|客户号|户名|开户日期|产品名称|账户类型|有无介质|计息类型|介质状态|上笔日期|账户状态|冻结状态|止付状态|利息基数|介质种类|凭证号|是否凭密|证件类型||证件号码|销户行|销户日期|通存通兑|主副标志|主卡卡号|到期日期|冻结金额|止付金额|控制金额|自动转存|结算类型|是否允许提现|,定期:INFO账号|开户行|客户号|户名|开户日期|产品名称|账户类型|有无介质|计息类型|介质状态|上笔日期|账户状态|冻结状态|止付状态|利息基数|介质种类|凭证号|是否凭密|证件类型|利率|证件号码|销户行|销户日期|通存通兑|主副标志|主卡卡号|到期日期|冻结金额|止付金额|控制金额|, 内部帐:INFO账号|户名|产品名称|余额|账户类型|,贷款:账号|开户行|户名|产品名称|开户日期|计息类型|账户状态|上笔日期|到期日期|昨日余额|冻结余额|余额|透支标志|利率|存期|逾期利率|
19
+        /// </summary>
20
+        public string NRLB { get; internal set; }
21
+
22
+
23
+        #endregion
24
+
25
+        #region Input
26
+		/// <summary>
27
+        /// 参数清单
28
+        /// </summary>
29
+        public class Input : TFInput
30
+        {
31
+            /// <summary>
32
+            /// 账号 0380
33
+            ///  
34
+            /// </summary>
35
+            public string ZH { get; set; }
36
+
37
+            /// <summary>
38
+            /// 账户序号 0510
39
+            ///  
40
+            /// </summary>
41
+            public string ZHXH { get; set; }
42
+
43
+            /// <summary>
44
+            /// 查询标志 0660
45
+            /// 1活期2定期9内部 
46
+            /// </summary>
47
+            public string CXBZ { get; set; }
48
+
49
+
50
+            /// <summary>                 
51
+            /// 定义业务逻辑              
52
+            /// </summary>                
53
+            /// <returns></returns>  
54
+            public override TFOutput Raise()
55
+            {
56
+                //拉取数据                                  
57
+                var output = new QueryAccountMoreInfo();
58
+                PageData.TradeAPIs.InitFd(MessageData);
59
+                PageData.TradeAPIs.CommSend(MessageData);
60
+				MessageData.Fd126_5 = MainCode;
61
+                MessageData.Fd16 = "CXCL";
62
+                MessageData.Fd38 = ZH;
63
+                MessageData.Fd51 = ZHXH;
64
+                MessageData.Fd66 = CXBZ;
65
+                MessageData.Fd128 = "0072";
66
+
67
+                PageData.TradeAPIs.CallServer(MessageData);
68
+                if (MessageData.Fd12 != "0000")
69
+                {
70
+                    output.IsFailed = true;
71
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
72
+                }                
73
+                output.NRLB = MessageData.FileData;
74
+
75
+                return output;
76
+            }
77
+        }
78
+        #endregion
79
+    }
80
+}

+ 135
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountOpeningInformation.cs View File

@@ -0,0 +1,135 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询账户开户信息
11
+    /// 通过账号查询账户开户信息
12
+    /// </summary>
13
+    public class QueryAccountOpeningInformation : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 代理人姓名 0260
18
+        /// (null)
19
+        /// </summary>
20
+        public string LXR1MC { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 代理人电话 0600
24
+        /// (null)
25
+        /// </summary>
26
+        public string LXR1DH { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 代理人证件号码 0620
30
+        /// (null)
31
+        /// </summary>
32
+        public string LXR1ZJHM { get; internal set; }
33
+
34
+        /// <summary>
35
+        /// 账户状态 0690
36
+        /// 0:申请;1:开户;2:销户
37
+        /// </summary>
38
+        public string ZHZT { get; internal set; }
39
+
40
+        /// <summary>
41
+        /// 代理人证件类型 0700
42
+        /// (null)
43
+        /// </summary>
44
+        public string LXR1ZJLX { get; internal set; }
45
+
46
+        /// <summary>
47
+        /// 开户确认退回原因 0820
48
+        /// (null)
49
+        /// </summary>
50
+        public string KHQRTHYY { get; internal set; }
51
+
52
+        /// <summary>
53
+        /// 核准号 0880
54
+        /// (null)
55
+        /// </summary>
56
+        public string HZH { get; internal set; }
57
+
58
+        /// <summary>
59
+        /// 备案号 0810
60
+        /// (null)
61
+        /// </summary>
62
+        public string BAH { get; internal set; }
63
+
64
+        /// <summary>
65
+        /// 信息集合 1230
66
+        /// 根据获取标志获取不同的信息集合
67
+        /// </summary>
68
+        public string XXJH { get; internal set; }
69
+
70
+
71
+        #endregion
72
+
73
+        #region Input
74
+		/// <summary>
75
+        /// 参数清单
76
+        /// </summary>
77
+        public class Input : TFInput
78
+        {
79
+            /// <summary>
80
+            /// 账号 0300
81
+            /// (null) 
82
+            /// </summary>
83
+            public string ZH { get; set; }
84
+
85
+            /// <summary>
86
+            /// 获取标志 0660
87
+            /// 1账号联系人信息 
88
+            /// </summary>
89
+            public string HQBZ { get; set; }
90
+
91
+            /// <summary>
92
+            /// 账号序号 1022
93
+            ///  
94
+            /// </summary>
95
+            public string ZHXH { get; set; }
96
+
97
+
98
+            /// <summary>                 
99
+            /// 定义业务逻辑              
100
+            /// </summary>                
101
+            /// <returns></returns>  
102
+            public override TFOutput Raise()
103
+            {
104
+                //拉取数据                                  
105
+                var output = new QueryAccountOpeningInformation();
106
+                PageData.TradeAPIs.InitFd(MessageData);
107
+                PageData.TradeAPIs.CommSend(MessageData);
108
+				MessageData.Fd126_5 = MainCode;
109
+                MessageData.Fd16 = "K034";
110
+                MessageData.Fd30 = ZH;
111
+                MessageData.Fd66 = HQBZ;
112
+                MessageData.Fd102_2 = ZHXH;
113
+
114
+                PageData.TradeAPIs.CallServer(MessageData);
115
+                if (MessageData.Fd12 != "0000")
116
+                {
117
+                    output.IsFailed = true;
118
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
119
+                }                
120
+                output.LXR1MC = (MessageData.Fd26);
121
+                output.LXR1DH = (MessageData.Fd60);
122
+                output.LXR1ZJHM = (MessageData.Fd62);
123
+                output.ZHZT = (MessageData.Fd69);
124
+                output.LXR1ZJLX = (MessageData.Fd70);
125
+                output.KHQRTHYY = (MessageData.Fd82);
126
+                output.HZH = (MessageData.Fd88);
127
+                output.XXJH = (MessageData.Fd123);
128
+                output.BAH = (MessageData.Fd81);
129
+
130
+                return output;
131
+            }
132
+        }
133
+        #endregion
134
+    }
135
+}

+ 115
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountPayment.cs View File

@@ -0,0 +1,115 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 账户支付密码器关联查询
11
+    /// 账户支付密码器关联查询
12
+    /// </summary>
13
+    public class QueryAccountPayment : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 文件格式
18
+        /// 带前台文件格式datatable:账号|支付密码器编号|本行标志|状态|关联日期|解除日期|机构|柜员|
19
+        /// </summary>
20
+        public string WJGS { get; internal set; }
21
+
22
+
23
+        #endregion
24
+
25
+        #region Input
26
+		/// <summary>
27
+        /// 参数清单
28
+        /// </summary>
29
+        public class Input : TFInput
30
+        {
31
+            /// <summary>
32
+            /// 解除日期-结束 0470
33
+            ///  
34
+            /// </summary>
35
+            public string DateEnd_JC { get; set; }
36
+
37
+            /// <summary>
38
+            /// 支付密码器编码 0580
39
+            ///  
40
+            /// </summary>
41
+            public string ZFMMQBM { get; set; }
42
+
43
+            /// <summary>
44
+            /// 本行标志 0670
45
+            ///  
46
+            /// </summary>
47
+            public string BHBZ { get; set; }
48
+
49
+            /// <summary>
50
+            /// 解除日期-开始 0460
51
+            ///  
52
+            /// </summary>
53
+            public string DateStart_JC { get; set; }
54
+
55
+            /// <summary>
56
+            /// 账号 0300
57
+            ///  
58
+            /// </summary>
59
+            public string ZH { get; set; }
60
+
61
+            /// <summary>
62
+            /// 关联日期-开始 0440
63
+            ///  
64
+            /// </summary>
65
+            public string DateStart_GL { get; set; }
66
+
67
+            /// <summary>
68
+            /// 关联日期-结束 0450
69
+            ///  
70
+            /// </summary>
71
+            public string DateEnd_GL { get; set; }
72
+
73
+            /// <summary>
74
+            /// 关联状态 0680
75
+            ///  
76
+            /// </summary>
77
+            public string GLZT { get; set; }
78
+
79
+
80
+            /// <summary>                 
81
+            /// 定义业务逻辑              
82
+            /// </summary>                
83
+            /// <returns></returns>  
84
+            public override TFOutput Raise()
85
+            {
86
+                //拉取数据                                  
87
+                var output = new QueryAccountPayment();
88
+                PageData.TradeAPIs.InitFd(MessageData);
89
+                PageData.TradeAPIs.CommSend(MessageData);
90
+				MessageData.Fd126_5 = MainCode;
91
+                MessageData.Fd16 = "CXCL";
92
+                MessageData.Fd47 = DateEnd_JC;
93
+                MessageData.Fd58 = ZFMMQBM;
94
+                MessageData.Fd67 = BHBZ;
95
+                MessageData.Fd46 = DateStart_JC;
96
+                MessageData.Fd30 = ZH;
97
+                MessageData.Fd44 = DateStart_GL;
98
+                MessageData.Fd45 = DateEnd_GL;
99
+                MessageData.Fd68 = GLZT;
100
+                MessageData.Fd128 = "0078";
101
+
102
+                PageData.TradeAPIs.CallServer(MessageData);
103
+                if (MessageData.Fd12 != "0000")
104
+                {
105
+                    output.IsFailed = true;
106
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
107
+                }                
108
+                output.WJGS = MessageData.FileData;
109
+
110
+                return output;
111
+            }
112
+        }
113
+        #endregion
114
+    }
115
+}

+ 170
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountPaymentPwdConnection.cs View File

@@ -0,0 +1,170 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 根据帐户或印鉴卡/支付密码器查询关联信息
11
+    /// 根据帐户或印鉴卡/支付密码器查询关联信息
12
+    /// </summary>
13
+    public class QueryAccountPaymentPwdConnection : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 文件列表
18
+        /// ~账号|印鉴/支付密码器|凭证编号|本行标识|关联状态|关联日期|解除日期|交易机构|
19
+        /// </summary>
20
+        public string WJLB { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 文件列表
24
+        /// ~账号|印鉴/支付密码器|凭证编号|本行标识|关联状态|关联日期|解除日期|交易机构|
25
+        /// </summary>
26
+        public List<E_WJLB> WJLBData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 文件列表
30
+        /// ~账号|印鉴/支付密码器|凭证编号|本行标识|关联状态|关联日期|解除日期|交易机构|
31
+        /// </summary>
32
+        public class E_WJLB
33
+        {
34
+            /// <summary>
35
+            /// 账号
36
+            /// </summary>
37
+            public string ZH { get; set; }
38
+
39
+            /// <summary>
40
+            /// 印鉴/支付密码器
41
+            /// </summary>
42
+            public string YJZFMMQ { get; set; }
43
+
44
+            /// <summary>
45
+            /// 凭证编号
46
+            /// </summary>
47
+            public string PZBH { get; set; }
48
+
49
+            /// <summary>
50
+            /// 本行标识
51
+            /// </summary>
52
+            public string BXBS { get; set; }
53
+
54
+            /// <summary>
55
+            /// 关联状态
56
+            /// </summary>
57
+            public string GLZT { get; set; }
58
+
59
+            /// <summary>
60
+            /// 关联日期
61
+            /// </summary>
62
+            public string GLRQ { get; set; }
63
+
64
+            /// <summary>
65
+            /// 解除日期
66
+            /// </summary>
67
+            public string JCRQ { get; set; }
68
+
69
+            /// <summary>
70
+            /// 交易机构
71
+            /// </summary>
72
+            public string JYJG { get; set; }
73
+
74
+        }
75
+
76
+        #endregion
77
+
78
+        #region Input
79
+		/// <summary>
80
+        /// 参数清单
81
+        /// </summary>
82
+        public class Input : TFInput
83
+        {
84
+            /// <summary>
85
+            /// 账号 0300
86
+            ///  
87
+            /// </summary>
88
+            public string ZH { get; set; }
89
+
90
+            /// <summary>
91
+            /// 印鉴卡/支付密码编号 0580
92
+            ///  
93
+            /// </summary>
94
+            public string BH { get; set; }
95
+
96
+            /// <summary>
97
+            /// 本行标识 0670
98
+            /// Y.本行N.他行 
99
+            /// </summary>
100
+            public string BHBS { get; set; }
101
+
102
+            /// <summary>
103
+            /// 凭证种类 0890
104
+            /// 117:支付密码器 188:印鉴卡  
105
+            /// </summary>
106
+            public string PZZL { get; set; }
107
+
108
+            /// <summary>
109
+            /// 机构号 0910
110
+            /// 账号的开户机构 
111
+            /// </summary>
112
+            public string JGH { get; set; }
113
+
114
+            /// <summary>
115
+            /// 关联公用标志/出售 0690
116
+            /// Y.关联N.公用 
117
+            /// </summary>
118
+            public string BZ { get; set; }
119
+
120
+
121
+            /// <summary>                 
122
+            /// 定义业务逻辑              
123
+            /// </summary>                
124
+            /// <returns></returns>  
125
+            public override TFOutput Raise()
126
+            {
127
+                //拉取数据                                  
128
+                var output = new QueryAccountPaymentPwdConnection();
129
+                PageData.TradeAPIs.InitFd(MessageData);
130
+                PageData.TradeAPIs.CommSend(MessageData);
131
+				MessageData.Fd126_5 = MainCode;
132
+                MessageData.Fd16 = "CXCL";
133
+                MessageData.Fd30 = ZH;
134
+                MessageData.Fd58 = BH;
135
+                MessageData.Fd128 = "0057";
136
+                MessageData.Fd67 = BHBS;
137
+                MessageData.Fd89 = PZZL;
138
+                MessageData.Fd91 = JGH;
139
+                MessageData.Fd69 = BZ;
140
+
141
+                PageData.TradeAPIs.CallServer(MessageData);
142
+                if (MessageData.Fd12 != "0000")
143
+                {
144
+                    output.IsFailed = true;
145
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
146
+                }                
147
+                output.WJLBData = AnilyzeFileData<E_WJLB>(MessageData.FileData,
148
+                                            "账号|印鉴/支付密码器|凭证编号|本行标识|关联状态|关联日期|解除日期|交易机构|",
149
+                                            x =>
150
+                                            {
151
+                                                return new E_WJLB
152
+                                                {
153
+                                                    ZH = x["账号"],
154
+                                                    YJZFMMQ = x["印鉴/支付密码器"],
155
+                                                    PZBH = x["凭证编号"],
156
+                                                    BXBS = x["本行标识"],
157
+                                                    GLZT = x["关联状态"],
158
+                                                    GLRQ = x["关联日期"],
159
+                                                    JCRQ = x["解除日期"],
160
+                                                    JYJG = x["交易机构"]
161
+                                                };
162
+                                            });
163
+                output.WJLB = MessageData.FileData;
164
+
165
+                return output;
166
+            }
167
+        }
168
+        #endregion
169
+    }
170
+}

+ 156
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAccountTCTD.cs View File

@@ -0,0 +1,156 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 账户通存通兑信息查询
11
+    /// 账户通存通兑信息查询
12
+    /// </summary>
13
+    public class QueryAccountTCTD : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 签约日期 0440
18
+        /// 
19
+        /// </summary>
20
+        public string QYRQ { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 解约日期 0450
24
+        /// 
25
+        /// </summary>
26
+        public string JYRQ { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 通存范围 0680
30
+        /// 
31
+        /// </summary>
32
+        public string TCFW { get; internal set; }
33
+
34
+        /// <summary>
35
+        /// 通兑范围 0690
36
+        /// 
37
+        /// </summary>
38
+        public string TDFW { get; internal set; }
39
+
40
+        /// <summary>
41
+        /// 状态 0700
42
+        /// 1.正常N.解约或未签约
43
+        /// </summary>
44
+        public string ZT { get; internal set; }
45
+
46
+        /// <summary>
47
+        /// 交易机构和开户机构能否通存 0710
48
+        /// Y.是N.否
49
+        /// </summary>
50
+        public string SFTC { get; internal set; }
51
+
52
+        /// <summary>
53
+        /// 现金单笔限额 1001
54
+        /// 
55
+        /// </summary>
56
+        public string XJDBXE { get; internal set; }
57
+
58
+        /// <summary>
59
+        /// 现金单日累计 1002
60
+        /// 
61
+        /// </summary>
62
+        public string XJDRLJ { get; internal set; }
63
+
64
+        /// <summary>
65
+        /// 转账单笔限额 1003
66
+        /// 
67
+        /// </summary>
68
+        public string ZZDBXE { get; internal set; }
69
+
70
+        /// <summary>
71
+        /// 转账单日累计 1004
72
+        /// 
73
+        /// </summary>
74
+        public string ZZDRLJ { get; internal set; }
75
+
76
+        /// <summary>
77
+        /// 单日现金发生额 0390
78
+        /// 
79
+        /// </summary>
80
+        public string DRXJFSE { get; internal set; }
81
+
82
+        /// <summary>
83
+        /// 单日转账发生额 0400
84
+        /// 
85
+        /// </summary>
86
+        public string DRZZFSE { get; internal set; }
87
+
88
+        /// <summary>
89
+        /// 交易机构和开户机构能否通兑 0720
90
+        /// Y.是N.否
91
+        /// </summary>
92
+        public string SFTD { get; internal set; }
93
+
94
+
95
+        #endregion
96
+
97
+        #region Input
98
+		/// <summary>
99
+        /// 参数清单
100
+        /// </summary>
101
+        public class Input : TFInput
102
+        {
103
+            /// <summary>
104
+            /// 账号 0300
105
+            /// 1:有 0:没有,空值默认没有 
106
+            /// </summary>
107
+            public string ZH { get; set; }
108
+
109
+            /// <summary>
110
+            /// 账户序号 0340
111
+            ///  
112
+            /// </summary>
113
+            public string ZHXH { get; set; }
114
+
115
+
116
+            /// <summary>                 
117
+            /// 定义业务逻辑              
118
+            /// </summary>                
119
+            /// <returns></returns>  
120
+            public override TFOutput Raise()
121
+            {
122
+                //拉取数据                                  
123
+                var output = new QueryAccountTCTD();
124
+                PageData.TradeAPIs.InitFd(MessageData);
125
+                PageData.TradeAPIs.CommSend(MessageData);
126
+				MessageData.Fd126_5 = MainCode;
127
+                MessageData.Fd16 = "K065";
128
+                MessageData.Fd30 = ZH;
129
+                MessageData.Fd34 = ZHXH;
130
+
131
+                PageData.TradeAPIs.CallServer(MessageData);
132
+                if (MessageData.Fd12 != "0000")
133
+                {
134
+                    output.IsFailed = true;
135
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
136
+                }                
137
+                output.QYRQ = (MessageData.Fd44);
138
+                output.JYRQ = (MessageData.Fd45);
139
+                output.TCFW = (MessageData.Fd68);
140
+                output.TDFW = (MessageData.Fd69);
141
+                output.ZT = (MessageData.Fd70);
142
+                output.SFTC = (MessageData.Fd71);
143
+                output.XJDBXE = (MessageData.Fd100_1);
144
+                output.XJDRLJ = (MessageData.Fd100_2);
145
+                output.ZZDBXE = (MessageData.Fd100_3);
146
+                output.ZZDRLJ = (MessageData.Fd100_4);
147
+                output.DRXJFSE = (MessageData.Fd39);
148
+                output.DRZZFSE = (MessageData.Fd40);
149
+                output.SFTD = (MessageData.Fd72);
150
+
151
+                return output;
152
+            }
153
+        }
154
+        #endregion
155
+    }
156
+}

+ 88
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryAmountsRecoveredATM.cs View File

@@ -0,0 +1,88 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询ATM收回金额
11
+    /// 根据相关要素,返回ATM可收回现金金额
12
+    /// </summary>
13
+    public class QueryAmountsRecoveredATM : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// ATM可收回金额 0410
18
+        /// (null)
19
+        /// </summary>
20
+        public string ATMKSHJE { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 标志位 0730
24
+        /// 第一位[0]验证是否有可收回金额记录(0-是 1-否)
25
+        /// </summary>
26
+        public string BZW { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// ATMTEL
30
+        /// ATM柜员号
31
+        /// </summary>
32
+        public string ATMTEL { get; internal set; }
33
+        #endregion
34
+
35
+        #region Input
36
+		/// <summary>
37
+        /// 参数清单
38
+        /// </summary>
39
+        public class Input : TFInput
40
+        {
41
+            /// <summary>
42
+            /// 加钞日期 0460
43
+            /// (null) 
44
+            /// </summary>
45
+            public string JCRQ { get; set; }
46
+
47
+            /// <summary>
48
+            /// ATM柜员号 0920
49
+            /// (null) 
50
+            /// </summary>
51
+            public string ATMGYH { get; set; }
52
+            /// <summary>
53
+            /// ATM加钞编号
54
+            /// (null) 
55
+            /// </summary>
56
+            public string ATMJCNO { get; set; }
57
+
58
+            /// <summary>                 
59
+            /// 定义业务逻辑              
60
+            /// </summary>                
61
+            /// <returns></returns>  
62
+            public override TFOutput Raise()
63
+            {
64
+                //拉取数据                                  
65
+                var output = new QueryAmountsRecoveredATM();
66
+                PageData.TradeAPIs.InitFd(MessageData);
67
+                PageData.TradeAPIs.CommSend(MessageData);
68
+				MessageData.Fd126_5 = MainCode;
69
+                MessageData.Fd16 = "K050";
70
+                MessageData.Fd46 = JCRQ;
71
+                MessageData.Fd92 = ATMGYH;
72
+                MessageData.Fd58 = ATMJCNO;
73
+
74
+                PageData.TradeAPIs.CallServer(MessageData);
75
+                if (MessageData.Fd12 != "0000")
76
+                {
77
+                    output.IsFailed = true;
78
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
79
+                }                
80
+                output.ATMKSHJE = (MessageData.Fd41);
81
+                output.BZW = (MessageData.Fd73);
82
+                output.ATMTEL = (MessageData.Fd92);
83
+                return output;
84
+            }
85
+        }
86
+        #endregion
87
+    }
88
+}

+ 388
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryApprovalInformation.cs View File

@@ -0,0 +1,388 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询审批信息
11
+    /// 通过借据号查询借据信息
12
+    /// </summary>
13
+    public class QueryApprovalInformation : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 产品号 0240
18
+        /// 修改还款顺序时用这个字段存放还款顺序代码
19
+        /// </summary>
20
+        public string CPH { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 客户名称 0250
24
+        /// 
25
+        /// </summary>
26
+        public string KHMC { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 第一还息账号 0300
30
+        /// 
31
+        /// </summary>
32
+        public string DYHXZH { get; internal set; }
33
+
34
+        /// <summary>
35
+        /// 第二还息账号 0310
36
+        /// 
37
+        /// </summary>
38
+        public string DEHXZH { get; internal set; }
39
+
40
+        /// <summary>
41
+        /// 第三还息账号 0320
42
+        /// 
43
+        /// </summary>
44
+        public string DSHXZH { get; internal set; }
45
+
46
+        /// <summary>
47
+        /// 贷款金额 0390
48
+        /// 此借据能发放的贷款金额;,核销时是核销的金额,(抵债资产变现时变现部分的账面金额,如果是全部的则是全部变现金额)修改贷款积数时为增加或减少的积数(正为增负为减)预约扣款时为预约扣款金额
49
+        /// </summary>
50
+        public string DKJE { get; internal set; }
51
+
52
+        /// <summary>
53
+        /// 最低放款额度 0400
54
+        /// 
55
+        /// </summary>
56
+        public string ZDFKED { get; internal set; }
57
+
58
+        /// <summary>
59
+        /// 受托支付金额 0410
60
+        /// 
61
+        /// </summary>
62
+        public string STZFJE { get; internal set; }
63
+
64
+        /// <summary>
65
+        /// 增减金额(尾款金额) 0420
66
+        /// 
67
+        /// </summary>
68
+        public string ZJJEWKJE { get; internal set; }
69
+
70
+        /// <summary>
71
+        /// 起始日 0440
72
+        /// 
73
+        /// </summary>
74
+        public string QSR { get; internal set; }
75
+
76
+        /// <summary>
77
+        /// 到期日 0450
78
+        /// 展期时为展期日期; 预约扣款时为预约扣款日期
79
+        /// </summary>
80
+        public string DQR { get; internal set; }
81
+
82
+        /// <summary>
83
+        /// 还款日 0460
84
+        /// 
85
+        /// </summary>
86
+        public string HKR { get; internal set; }
87
+
88
+        /// <summary>
89
+        /// 免息天数 0480
90
+        /// 
91
+        /// </summary>
92
+        public string MXTS { get; internal set; }
93
+
94
+        /// <summary>
95
+        /// 增长周期(间隔周期、气贷周期、宽限期) 0510
96
+        /// 
97
+        /// </summary>
98
+        public string ZCZQJGZQQDZQKXQ { get; internal set; }
99
+
100
+        /// <summary>
101
+        /// 期限 0520
102
+        /// 
103
+        /// </summary>
104
+        public string QX { get; internal set; }
105
+
106
+        /// <summary>
107
+        /// 客户号 0530
108
+        /// 
109
+        /// </summary>
110
+        public string KHH { get; internal set; }
111
+
112
+        /// <summary>
113
+        /// 证件号码 0620
114
+        /// 
115
+        /// </summary>
116
+        public string ZJHM { get; internal set; }
117
+
118
+        /// <summary>
119
+        /// 标志位 0740
120
+        /// [空格表示没有查询相关数据]第一位:证件类型[参考cif_id_code_rel中id_type] 第二位:担保方式[3:抵押  4:信用 5:保证 7:委托 B:质押] 第三位:复息标志[Y:收 N:不收] 第四位:利率浮动方式[1:浮比 2:浮点] 第五位:贷款类型[1:普通贷款 2:按揭贷款 5:承兑垫款7:委托贷款 9:贴现 A:授信贷款 B:卡内融资、质押消费贷款] 第六位:浮动标志[0:合同利率(不浮动)1:浮动] 第七位:计息类型[0:不计息;1:利随本清;2:按日计息;3:按月计息;4:按季计息;5:按半年计息; 6:按年计息;7:按揭;  形态调整借用这个字段,1表示正常转逾期,2表示正常转呆滞,3表示正常转呆账,4表示逾期转呆滞,5表示逾期转呆账,6表示呆滞转呆账; 抵债资产处置时借用这个字段,1-表示部分处置,2-表示全部处置 修改复利标志时借用这个字段: Y为收复利 ,N为不收 ] 第八位:还款方式[1:利随本清;2:按期还息;3:等额本息;4:等额本金;5:宽限期还款6:等额递增;7:等额递减;8:等比递增9:等比递减A:等额气球贷B:等额上周供C:尾款还款] 第九位:还款类型[M:固定日还款 F:日对日还款] 第十位:贴息标志[0:不贴息  1:贴息] 第十一位:自动还款标志[Y:自动还款 N:不自动还] 第十二位:支付方式[1:自主支付(修改还款计划)2:受托支付(删除还款计划)] 第十三位:是否允许POS消费[循环贷款是否允许pos消费0.允许 1不允许] 第十四位:是否找到记录[Y:已找到 N:未找到] 第十五位至第十七位暂不启用 第十八位:发放状态[X:信贷发送,0-审核 1-开户 2-放款 注:状态1为已展期;1为已修改利率;1为按揭已提前还款;1为已贷款核销;1为已形态调整 ]第十九位:客户类型[1:个人; 2:公司 ;3:机构(指政府机关等组织); 4:金融同业; 5:内部员工;6金融机构] 第二十位:合同号是否存在[Y:合同号存在 N:合同号不存在] 第二十一位:借据号所关联的贷款账号是否存在[Y 存在 N 不存在]
121
+        /// </summary>
122
+        public string BZW { get; internal set; }
123
+
124
+        /// <summary>
125
+        /// 浮动点数 0840
126
+        /// 
127
+        /// </summary>
128
+        public string FDDS { get; internal set; }
129
+
130
+        /// <summary>
131
+        /// 复利利率 0850
132
+        /// 
133
+        /// </summary>
134
+        public string FLLL { get; internal set; }
135
+
136
+        /// <summary>
137
+        /// 合同号 0870
138
+        /// 
139
+        /// </summary>
140
+        public string HTH { get; internal set; }
141
+
142
+        /// <summary>
143
+        /// 委托协议编号 0880
144
+        /// 
145
+        /// </summary>
146
+        public string WTXYBH { get; internal set; }
147
+
148
+        /// <summary>
149
+        /// 增减比例 0940
150
+        /// 
151
+        /// </summary>
152
+        public string ZJBL { get; internal set; }
153
+
154
+        /// <summary>
155
+        /// 合同利率 0970
156
+        /// 此贷款的利率; 展期时为展期利率;
157
+        /// </summary>
158
+        public string HTLL { get; internal set; }
159
+
160
+        /// <summary>
161
+        /// 罚息利率 1005
162
+        /// 
163
+        /// </summary>
164
+        public string FXLL { get; internal set; }
165
+
166
+        /// <summary>
167
+        /// 第一还本账号 1011
168
+        /// 
169
+        /// </summary>
170
+        public string DYHBZH { get; internal set; }
171
+
172
+        /// <summary>
173
+        /// 第二还本账号 1021
174
+        /// 
175
+        /// </summary>
176
+        public string DEHBZH { get; internal set; }
177
+
178
+        /// <summary>
179
+        /// 第三还本账号 102W
180
+        /// 
181
+        /// </summary>
182
+        public string DSHBZH { get; internal set; }
183
+
184
+        /// <summary>
185
+        /// 存款账号 1061
186
+        /// 
187
+        /// </summary>
188
+        public string CKZH { get; internal set; }
189
+
190
+        /// <summary>
191
+        /// 浮动比例 1123
192
+        /// 展期时,为展期浮动比
193
+        /// </summary>
194
+        public string FDBL { get; internal set; }
195
+
196
+        /// <summary>
197
+        /// 逾期利率 1124
198
+        /// 
199
+        /// </summary>
200
+        public string YQLL { get; internal set; }
201
+
202
+        /// <summary>
203
+        /// 综合要素 1230
204
+        /// 逾期利率比|罚息利率比|
205
+        /// </summary>
206
+        public string ZHYS { get; internal set; }
207
+
208
+        /// <summary>
209
+        /// 合同下已开户抵质押贷款金额 1003
210
+        /// 
211
+        /// </summary>
212
+        public string DZYDKJE { get; internal set; }
213
+
214
+        /// <summary>
215
+        /// 关联抵质押品金额 1002
216
+        /// 
217
+        /// </summary>
218
+        public string GLDZYPJE { get; internal set; }
219
+
220
+        /// <summary>
221
+        /// 贷款账号 0370
222
+        /// 
223
+        /// </summary>
224
+        public string DKZH { get; internal set; }
225
+
226
+        /// <summary>
227
+        /// 合同下抵质押贷款未放款总金额 1001
228
+        /// 
229
+        /// </summary>
230
+        public string DZYDKZJE { get; internal set; }
231
+
232
+        /// <summary>
233
+        /// 业务类型 0220
234
+        /// 
235
+        /// </summary>
236
+        public string YWLX { get; internal set; }
237
+
238
+        /// <summary>
239
+        /// 合同下贷款余额 1004
240
+        /// 
241
+        /// </summary>
242
+        public string HTDKYE { get; internal set; }
243
+
244
+        /// <summary>
245
+        /// 交易机构 0910
246
+        /// 
247
+        /// </summary>
248
+        public string JYJG { get; internal set; }
249
+        /// <summary>
250
+        ///  第一还本补贴比例或金额
251
+        /// </summary>
252
+        public string HBBTZ1 { get; internal set; }
253
+        /// <summary>
254
+        /// 第二还本补贴比例或金额
255
+        /// </summary>
256
+        public string HBBTZ2 { get; internal set; }
257
+        /// <summary>
258
+        /// 第三还本补贴比例或金额
259
+        /// </summary>
260
+        public string HBBTZ3 { get; internal set; }
261
+        /// <summary>
262
+        /// 第一还息补贴比例或金额
263
+        /// </summary>
264
+        public string HXBTZ1 { get; internal set; }
265
+        /// <summary>
266
+        /// 第二还息补贴比例或金额
267
+        /// </summary>
268
+        public string HXBTZ2 { get; internal set; }
269
+        /// <summary>
270
+        /// 第三还息补贴比例或金额
271
+        /// </summary>
272
+        public string HXBTZ3 { get; internal set; }
273
+
274
+        #endregion
275
+
276
+        #region Input
277
+		/// <summary>
278
+        /// 参数清单
279
+        /// </summary>
280
+        public class Input : TFInput
281
+        {
282
+            /// <summary>
283
+            /// 操作类型 0210
284
+            /// 01-审批 02-展期 03-修改合同利率 04-还款账号 05-提前还款缩短还款期 06-提前还款减小月供07-贷款核销本金 08-贷款核销利息 09-形态调整 10-抵债资产处置  11-还款方式  12-计息类型  13-展期利率  14-逾期利率 15-罚息利率 16-贷款积数 17-复息标志 18-还款顺序 19-违约状态 20-普通贷款提前还本 21-贷款预约还款 22-还款计划 
285
+            /// </summary>
286
+            public string CZLX { get; set; }
287
+
288
+            /// <summary>
289
+            /// 证件号码 0620
290
+            ///  
291
+            /// </summary>
292
+            public string ZJHM { get; set; }
293
+
294
+            /// <summary>
295
+            /// 证件类型 0670
296
+            /// 参考cif_id_code_rel中id_type 
297
+            /// </summary>
298
+            public string ZJLX { get; set; }
299
+
300
+            /// <summary>
301
+            /// 借据号 0860
302
+            ///  
303
+            /// </summary>
304
+            public string JJH { get; set; }
305
+
306
+            /// <summary>
307
+            /// 合同号 0870
308
+            /// 授信和卡内质押使用 
309
+            /// </summary>
310
+            public string HTH { get; set; }
311
+
312
+
313
+            /// <summary>                 
314
+            /// 定义业务逻辑              
315
+            /// </summary>                
316
+            /// <returns></returns>  
317
+            public override TFOutput Raise()
318
+            {
319
+                //拉取数据                                  
320
+                var output = new QueryApprovalInformation();
321
+                PageData.TradeAPIs.InitFd(MessageData);
322
+                PageData.TradeAPIs.CommSend(MessageData);
323
+				MessageData.Fd126_5 = MainCode;
324
+                MessageData.Fd16 = "K016";
325
+                MessageData.Fd21 = CZLX;
326
+                MessageData.Fd62 = ZJHM;
327
+                MessageData.Fd67 = ZJLX;
328
+                MessageData.Fd86 = JJH;
329
+                MessageData.Fd87 = HTH;
330
+
331
+                PageData.TradeAPIs.CallServer(MessageData);
332
+                if (MessageData.Fd12 != "0000")
333
+                {
334
+                    output.IsFailed = true;
335
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
336
+                }                
337
+                output.CPH = (MessageData.Fd24);
338
+                output.KHMC = (MessageData.Fd25);
339
+                output.DYHXZH = (MessageData.Fd30);
340
+                output.DEHXZH = (MessageData.Fd31);
341
+                output.DSHXZH = (MessageData.Fd32);
342
+                output.DKJE = (MessageData.Fd39);
343
+                output.ZDFKED = (MessageData.Fd40);
344
+                output.STZFJE = (MessageData.Fd41);
345
+                output.ZJJEWKJE = (MessageData.Fd42);
346
+                output.QSR = (MessageData.Fd44);
347
+                output.DQR = (MessageData.Fd45);
348
+                output.HKR = (MessageData.Fd46);
349
+                output.MXTS = (MessageData.Fd48);
350
+                output.ZCZQJGZQQDZQKXQ = (MessageData.Fd51);
351
+                output.QX = (MessageData.Fd52);
352
+                output.KHH = (MessageData.Fd53);
353
+                output.ZJHM = (MessageData.Fd62);
354
+                output.BZW = (MessageData.Fd74);
355
+                output.FDDS = (MessageData.Fd84);
356
+                output.FLLL = (MessageData.Fd85);
357
+                output.HTH = (MessageData.Fd87);
358
+                output.WTXYBH = (MessageData.Fd88);
359
+                output.ZJBL = (MessageData.Fd94);
360
+                output.HTLL = (MessageData.Fd97);
361
+                output.FXLL = (MessageData.Fd100_5);
362
+                output.DYHBZH = (MessageData.Fd101_1);
363
+                output.DEHBZH = (MessageData.Fd102_1);
364
+                output.DSHBZH = (MessageData.Fd102_W);
365
+                output.CKZH = (MessageData.Fd106_1);
366
+                output.HBBTZ1 = (MessageData.Fd107_4);
367
+                output.HBBTZ2 = (MessageData.Fd107_7);
368
+                output.HBBTZ3 = (MessageData.Fd107_E);
369
+                output.HXBTZ1 = (MessageData.Fd108_4); 
370
+                output.HXBTZ2 = (MessageData.Fd108_7); 
371
+                output.HXBTZ3 = (MessageData.Fd108_E);
372
+                output.FDBL = (MessageData.Fd112_3);
373
+                output.YQLL = (MessageData.Fd112_4);
374
+                output.ZHYS = (MessageData.Fd123);
375
+                output.DZYDKJE = (MessageData.Fd100_3);
376
+                output.GLDZYPJE = (MessageData.Fd100_2);
377
+                output.DKZH = (MessageData.Fd37);
378
+                output.DZYDKZJE = (MessageData.Fd100_1);
379
+                output.YWLX = (MessageData.Fd22);
380
+                output.HTDKYE = (MessageData.Fd100_4);
381
+                output.JYJG = (MessageData.Fd91);
382
+
383
+                return output;
384
+            }
385
+        }
386
+        #endregion
387
+    }
388
+}

+ 116
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryBatchOpenAccountList.cs View File

@@ -0,0 +1,116 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 9598查询-211201-查询批量开户明细表
11
+    /// 211201-查询批量开户明细表
12
+    /// </summary>
13
+    public class QueryBatchOpenAccountList : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 查询结果
18
+        /// 文件格式: 账号|户名|证件号
19
+        /// </summary>
20
+        public string CXJG { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 查询结果
24
+        /// 文件格式: 账号|户名|证件号
25
+        /// </summary>
26
+        public List<E_CXJG> CXJGData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 查询结果
30
+        /// 文件格式: 账号|户名|证件号
31
+        /// </summary>
32
+        public class E_CXJG
33
+        {
34
+            /// <summary>
35
+            /// 账号
36
+            /// </summary>
37
+            public string ZH { get; set; }
38
+
39
+            /// <summary>
40
+            /// 户名
41
+            /// </summary>
42
+            public string HM { get; set; }
43
+
44
+            /// <summary>
45
+            /// 证件号
46
+            /// </summary>
47
+            public string ZJH { get; set; }
48
+
49
+        }
50
+
51
+        #endregion
52
+
53
+        #region Input
54
+		/// <summary>
55
+        /// 参数清单
56
+        /// </summary>
57
+        public class Input : TFInput
58
+        {
59
+            /// <summary>
60
+            /// 查询条件 
61
+            /// 批次号
62
+            /// </summary>
63
+            public string PCH { get; set; }
64
+
65
+            /// <summary>
66
+            /// 查询条件 
67
+            /// 交易机构
68
+            /// </summary>
69
+            public string JYJG { get; set; }
70
+
71
+            /// <summary>
72
+            /// 查询条件 
73
+            /// 介质代码
74
+            /// </summary>
75
+            public string JZDM { get; set; }
76
+
77
+
78
+            /// <summary>                 
79
+            /// 定义业务逻辑              
80
+            /// </summary>                
81
+            /// <returns></returns>  
82
+            public override TFOutput Raise()
83
+            {
84
+                //拉取数据                                  
85
+                var output = new QueryBatchOpenAccountList();
86
+                PageData.TradeAPIs.InitFd(MessageData);
87
+                PageData.TradeAPIs.CommSend(MessageData);
88
+				MessageData.Fd126_5 = MainCode;
89
+                MessageData.Fd16 = "9598";
90
+                MessageData.Fd123 = string.Format("1,211201,{0},{1},{2},",PCH,JYJG,JZDM);
91
+
92
+                PageData.TradeAPIs.CallServer(MessageData);
93
+                if (MessageData.Fd12 != "0000")
94
+                {
95
+                    output.IsFailed = true;
96
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
97
+                }                
98
+                output.CXJGData = AnilyzeFileData<E_CXJG>(MessageData.FileData,
99
+                                            "账号|户名|证件号|",
100
+                                            x =>
101
+                                            {
102
+                                                return new E_CXJG
103
+                                                {
104
+                                                    ZH = x["账号"],
105
+                                                    HM = x["户名"],
106
+                                                    ZJH = x["证件号"]
107
+                                                };
108
+                                            });
109
+                output.CXJG = MessageData.FileData;
110
+
111
+                return output;
112
+            }
113
+        }
114
+        #endregion
115
+    }
116
+}

+ 134
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryBatchResult.cs View File

@@ -0,0 +1,134 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 9598查询-880202-批量结果查询
11
+    /// 880202-批量结果查询
12
+    /// </summary>
13
+    public class QueryBatchResult : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 查询结果
18
+        /// 文件格式:交易日期|流水号|总笔数|总金额|成功笔数|成功金额|
19
+        /// </summary>
20
+        public string CXJG { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 查询结果
24
+        /// 文件格式:交易日期|流水号|总笔数|总金额|成功笔数|成功金额|
25
+        /// </summary>
26
+        public List<E_CXJG> CXJGData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 查询结果
30
+        /// 文件格式:交易日期|流水号|总笔数|总金额|成功笔数|成功金额|
31
+        /// </summary>
32
+        public class E_CXJG
33
+        {
34
+            /// <summary>
35
+            /// 交易日期
36
+            /// </summary>
37
+            public string JYRQ { get; set; }
38
+
39
+            /// <summary>
40
+            /// 流水号
41
+            /// </summary>
42
+            public string LSH { get; set; }
43
+
44
+            /// <summary>
45
+            /// 总笔数
46
+            /// </summary>
47
+            public string ZBS { get; set; }
48
+
49
+            /// <summary>
50
+            /// 总金额
51
+            /// </summary>
52
+            public string ZJE { get; set; }
53
+
54
+            /// <summary>
55
+            /// 成功笔数
56
+            /// </summary>
57
+            public string CGBS { get; set; }
58
+
59
+            /// <summary>
60
+            /// 成功金额
61
+            /// </summary>
62
+            public string CGJE { get; set; }
63
+
64
+        }
65
+
66
+        #endregion
67
+
68
+        #region Input
69
+		/// <summary>
70
+        /// 参数清单
71
+        /// </summary>
72
+        public class Input : TFInput
73
+        {
74
+            /// <summary>
75
+            /// 查询条件 
76
+            /// 日期
77
+            /// </summary>
78
+            public string RQ { get; set; }
79
+
80
+            /// <summary>
81
+            /// 查询条件 
82
+            /// 账号
83
+            /// </summary>
84
+            public string ZH { get; set; }
85
+
86
+            /// <summary>
87
+            /// 查询条件 
88
+            /// 交易代码
89
+            /// </summary>
90
+            public string JYDM { get; set; }
91
+
92
+
93
+            /// <summary>                 
94
+            /// 定义业务逻辑              
95
+            /// </summary>                
96
+            /// <returns></returns>  
97
+            public override TFOutput Raise()
98
+            {
99
+                //拉取数据                                  
100
+                var output = new QueryBatchResult();
101
+                PageData.TradeAPIs.InitFd(MessageData);
102
+                PageData.TradeAPIs.CommSend(MessageData);
103
+				MessageData.Fd126_5 = MainCode;
104
+                MessageData.Fd16 = "9598";
105
+                MessageData.Fd123 = string.Format("1,880202,{0},{1},{2},",RQ,ZH,JYDM);
106
+
107
+                PageData.TradeAPIs.CallServer(MessageData);
108
+                if (MessageData.Fd12 != "0000")
109
+                {
110
+                    output.IsFailed = true;
111
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
112
+                }                
113
+                output.CXJGData = AnilyzeFileData<E_CXJG>(MessageData.FileData,
114
+                                            "交易日期|流水号|总笔数|总金额|成功笔数|成功金额|",
115
+                                            x =>
116
+                                            {
117
+                                                return new E_CXJG
118
+                                                {
119
+                                                    JYRQ = x["交易日期"],
120
+                                                    LSH = x["流水号"],
121
+                                                    ZBS = x["总笔数"],
122
+                                                    ZJE = x["总金额"],
123
+                                                    CGBS = x["成功笔数"],
124
+                                                    CGJE = x["成功金额"]
125
+                                                };
126
+                                            });
127
+                output.CXJG = MessageData.FileData;
128
+
129
+                return output;
130
+            }
131
+        }
132
+        #endregion
133
+    }
134
+}

+ 210
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryBlackList.cs View File

@@ -0,0 +1,210 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 黑名单信息信息
11
+    /// 通过证件信息查询黑名单信息
12
+    /// </summary>
13
+    public class QueryBlackList : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 黑名单列表
18
+        /// 黑名单类型|黑名单状态|客户类型|证件类型|证件号码|客户名称|黑名单状态|信息来源|上单原因|上单日期|上单操作机构|上单操作柜员|上单操作流水|注销日期|注销操作机构|注销操作员|注销操作流水|
19
+        /// </summary>
20
+        public string HMDLB { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 黑名单列表
24
+        /// 黑名单类型|黑名单状态|客户类型|证件类型|证件号码|客户名称|黑名单状态|信息来源|上单原因|上单日期|上单操作机构|上单操作柜员|上单操作流水|注销日期|注销操作机构|注销操作员|注销操作流水|
25
+        /// </summary>
26
+        public List<E_HMDLB> HMDLBData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 黑名单列表
30
+        /// 黑名单类型|黑名单状态|客户类型|证件类型|证件号码|客户名称|黑名单状态|信息来源|上单原因|上单日期|上单操作机构|上单操作柜员|上单操作流水|注销日期|注销操作机构|注销操作员|注销操作流水|
31
+        /// </summary>
32
+        public class E_HMDLB
33
+        {
34
+            /// <summary>
35
+            /// 黑名单类型
36
+            /// </summary>
37
+            public string HMDLX { get; set; }
38
+
39
+            /// <summary>
40
+            /// 黑名单状态
41
+            /// </summary>
42
+            public string HMDZT { get; set; }
43
+
44
+            /// <summary>
45
+            /// 客户类型
46
+            /// </summary>
47
+            public string KHLX { get; set; }
48
+
49
+            /// <summary>
50
+            /// 证件类型
51
+            /// </summary>
52
+            public string ZJLX { get; set; }
53
+
54
+            /// <summary>
55
+            /// 证件号码
56
+            /// </summary>
57
+            public string ZJHM { get; set; }
58
+
59
+            /// <summary>
60
+            /// 客户名称
61
+            /// </summary>
62
+            public string KHMC { get; set; }
63
+
64
+            /// <summary>
65
+            /// 黑名单状态
66
+            /// </summary>
67
+            public string HMDZT_1 { get; set; }
68
+
69
+            /// <summary>
70
+            /// 信息来源
71
+            /// </summary>
72
+            public string XXLY { get; set; }
73
+
74
+            /// <summary>
75
+            /// 上单原因
76
+            /// </summary>
77
+            public string SDYY { get; set; }
78
+
79
+            /// <summary>
80
+            /// 上单日期
81
+            /// </summary>
82
+            public string SDRQ { get; set; }
83
+
84
+            /// <summary>
85
+            /// 上单操作机构
86
+            /// </summary>
87
+            public string SDCZJG { get; set; }
88
+
89
+            /// <summary>
90
+            /// 上单操作柜员
91
+            /// </summary>
92
+            public string SDCZGY { get; set; }
93
+
94
+            /// <summary>
95
+            /// 上单操作流水
96
+            /// </summary>
97
+            public string SDCZLS { get; set; }
98
+
99
+            /// <summary>
100
+            /// 注销日期
101
+            /// </summary>
102
+            public string ZXRQ { get; set; }
103
+
104
+            /// <summary>
105
+            /// 注销操作机构
106
+            /// </summary>
107
+            public string ZXCZJG { get; set; }
108
+
109
+            /// <summary>
110
+            /// 注销操作员
111
+            /// </summary>
112
+            public string ZXCZY { get; set; }
113
+
114
+            /// <summary>
115
+            /// 注销操作流水
116
+            /// </summary>
117
+            public string ZXCZLS { get; set; }
118
+
119
+        }
120
+
121
+        #endregion
122
+
123
+        #region Input
124
+		/// <summary>
125
+        /// 参数清单
126
+        /// </summary>
127
+        public class Input : TFInput
128
+        {
129
+            /// <summary>
130
+            /// 户名 0260
131
+            ///  
132
+            /// </summary>
133
+            public string HM { get; set; }
134
+
135
+            /// <summary>
136
+            /// 证件号码 0620
137
+            ///  
138
+            /// </summary>
139
+            public string ZJHM { get; set; }
140
+
141
+            /// <summary>
142
+            /// 客户类型 0670
143
+            ///  
144
+            /// </summary>
145
+            public string KHLX { get; set; }
146
+
147
+            /// <summary>
148
+            /// 证件类型 0680
149
+            ///  
150
+            /// </summary>
151
+            public string ZJLX { get; set; }
152
+
153
+
154
+            /// <summary>                 
155
+            /// 定义业务逻辑              
156
+            /// </summary>                
157
+            /// <returns></returns>  
158
+            public override TFOutput Raise()
159
+            {
160
+                //拉取数据                                  
161
+                var output = new QueryBlackList();
162
+                PageData.TradeAPIs.InitFd(MessageData);
163
+                PageData.TradeAPIs.CommSend(MessageData);
164
+				MessageData.Fd126_5 = MainCode;
165
+                MessageData.Fd16 = "CXCL";
166
+                MessageData.Fd26 = HM;
167
+                MessageData.Fd62 = ZJHM;
168
+                MessageData.Fd67 = KHLX;
169
+                MessageData.Fd68 = ZJLX;
170
+                MessageData.Fd128 = "0038";
171
+
172
+                PageData.TradeAPIs.CallServer(MessageData);
173
+                if (MessageData.Fd12 != "0000")
174
+                {
175
+                    output.IsFailed = true;
176
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
177
+                }                
178
+                output.HMDLBData = AnilyzeFileData<E_HMDLB>(MessageData.FileData,
179
+                                            "黑名单类型|黑名单状态|客户类型|证件类型|证件号码|客户名称|黑名单状态|信息来源|上单原因|上单日期|上单操作机构|上单操作柜员|上单操作流水|注销日期|注销操作机构|注销操作员|注销操作流水|",
180
+                                            x =>
181
+                                            {
182
+                                                return new E_HMDLB
183
+                                                {
184
+                                                    HMDLX = x["黑名单类型"],
185
+                                                    HMDZT = x["黑名单状态"],
186
+                                                    KHLX = x["客户类型"],
187
+                                                    ZJLX = x["证件类型"],
188
+                                                    ZJHM = x["证件号码"],
189
+                                                    KHMC = x["客户名称"],
190
+                                                    HMDZT_1 = x["黑名单状态"],
191
+                                                    XXLY = x["信息来源"],
192
+                                                    SDYY = x["上单原因"],
193
+                                                    SDRQ = x["上单日期"],
194
+                                                    SDCZJG = x["上单操作机构"],
195
+                                                    SDCZGY = x["上单操作柜员"],
196
+                                                    SDCZLS = x["上单操作流水"],
197
+                                                    ZXRQ = x["注销日期"],
198
+                                                    ZXCZJG = x["注销操作机构"],
199
+                                                    ZXCZY = x["注销操作员"],
200
+                                                    ZXCZLS = x["注销操作流水"]
201
+                                                };
202
+                                            });
203
+                output.HMDLB = MessageData.FileData;
204
+
205
+                return output;
206
+            }
207
+        }
208
+        #endregion
209
+    }
210
+}

+ 142
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCDBHDZYP.cs View File

@@ -0,0 +1,142 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 承兑保函查询抵质押品信息
11
+    /// 承兑保函查询抵质押品信息
12
+    /// </summary>
13
+    public class QueryCDBHDZYP : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 业务类型 0210
18
+        /// 01贷款 02 承兑 04保函
19
+        /// </summary>
20
+        public string YWLX { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 户名 0250
24
+        /// 
25
+        /// </summary>
26
+        public string HM { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 抵质押名称 0260
30
+        /// 
31
+        /// </summary>
32
+        public string DZYMC { get; internal set; }
33
+
34
+        /// <summary>
35
+        /// 抵质押认定价值 0390
36
+        /// 
37
+        /// </summary>
38
+        public string DZYRDJZ { get; internal set; }
39
+
40
+        /// <summary>
41
+        /// 已关联总金额 0400
42
+        /// 
43
+        /// </summary>
44
+        public string YGLZJE { get; internal set; }
45
+
46
+        /// <summary>
47
+        /// 编号下最大序号 0440
48
+        /// 查询标志为1时返回
49
+        /// </summary>
50
+        public string ZDXH { get; internal set; }
51
+
52
+        /// <summary>
53
+        /// 抵质押类型 0680
54
+        /// 1抵押2质押
55
+        /// </summary>
56
+        public string DZYLX { get; internal set; }
57
+
58
+        /// <summary>
59
+        /// 状态/是否存在标志 0690
60
+        /// 0不存在,查询标志为1和2时是一条抵质押物的状态1入库2出库,查询表示为3时是关联状态1关联2取消
61
+        /// </summary>
62
+        public string ZT { get; internal set; }
63
+
64
+        /// <summary>
65
+        /// 所属机构 0910
66
+        /// 业务发生机构
67
+        /// </summary>
68
+        public string SSJG { get; internal set; }
69
+
70
+        /// <summary>
71
+        /// 存单类型 096M
72
+        /// 0001承兑汇票 0002外行存单 0008本行对公存单 0013本行个人存单 
73
+        /// </summary>
74
+        public string CDLX { get; internal set; }
75
+
76
+
77
+        #endregion
78
+
79
+        #region Input
80
+		/// <summary>
81
+        /// 参数清单
82
+        /// </summary>
83
+        public class Input : TFInput
84
+        {
85
+            /// <summary>
86
+            /// 抵质押序号 0440
87
+            /// 查询标志为2的时候必须输入 
88
+            /// </summary>
89
+            public string DZYXH { get; set; }
90
+
91
+            /// <summary>
92
+            /// 抵质押编号/协议编号 0620
93
+            /// 查询标志是1和2的时候表示抵质押品编号,查询标志是3的时候为关联的协议编号 
94
+            /// </summary>
95
+            public string DZYBH { get; set; }
96
+
97
+            /// <summary>
98
+            /// 操作类型 0670
99
+            /// 1根据抵质押编号查询该编号下最大序号,如果已存在抵质押物则返回业务类型和入库机构 2根据抵质押编号和序号查询抵质押物信息 3查找关联状态的任意一条合同信息返回业务和机构 
100
+            /// </summary>
101
+            public string CZLX { get; set; }
102
+
103
+
104
+            /// <summary>                 
105
+            /// 定义业务逻辑              
106
+            /// </summary>                
107
+            /// <returns></returns>  
108
+            public override TFOutput Raise()
109
+            {
110
+                //拉取数据                                  
111
+                var output = new QueryCDBHDZYP();
112
+                PageData.TradeAPIs.InitFd(MessageData);
113
+                PageData.TradeAPIs.CommSend(MessageData);
114
+				MessageData.Fd126_5 = MainCode;
115
+                MessageData.Fd16 = "K067";
116
+                MessageData.Fd44 = DZYXH;
117
+                MessageData.Fd62 = DZYBH;
118
+                MessageData.Fd67 = CZLX;
119
+
120
+                PageData.TradeAPIs.CallServer(MessageData);
121
+                if (MessageData.Fd12 != "0000")
122
+                {
123
+                    output.IsFailed = true;
124
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
125
+                }                
126
+                output.YWLX = (MessageData.Fd21);
127
+                output.HM = (MessageData.Fd25);
128
+                output.DZYMC = (MessageData.Fd26);
129
+                output.DZYRDJZ = (MessageData.Fd39);
130
+                output.YGLZJE = (MessageData.Fd40);
131
+                output.ZDXH = (MessageData.Fd44);
132
+                output.DZYLX = (MessageData.Fd68);
133
+                output.ZT = (MessageData.Fd69);
134
+                output.SSJG = (MessageData.Fd91);
135
+                output.CDLX = (MessageData.Fd96_M);
136
+
137
+                return output;
138
+            }
139
+        }
140
+        #endregion
141
+    }
142
+}

+ 179
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCDHPXX.cs View File

@@ -0,0 +1,179 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 借据号查询承兑汇票信息(文件)
11
+    /// 借据号查询承兑汇票信息
12
+    /// </summary>
13
+    public class QueryCDHPXX : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 文件
18
+        /// TITLE=~协议号|票据类型|票据号|票据金额|票据到期日期|票据签发日期|出票人全称|出票人账号|付款行全称|在途天数|票标志|异地同城标志|票据利息 
19
+        /// </summary>
20
+        public string WJ { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 文件
24
+        /// TITLE=~协议号|票据类型|票据号|票据金额|票据到期日期|票据签发日期|出票人全称|出票人账号|付款行全称|在途天数|票标志|异地同城标志|票据利息 
25
+        /// </summary>
26
+        public List<E_WJ> WJData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 文件
30
+        /// TITLE=~协议号|票据类型|票据号|票据金额|票据到期日期|票据签发日期|出票人全称|出票人账号|付款行全称|在途天数|票标志|异地同城标志|票据利息 
31
+        /// </summary>
32
+        public class E_WJ
33
+        {
34
+            /// <summary>
35
+            /// 协议号
36
+            /// </summary>
37
+            public string XYH { get; set; }
38
+
39
+            /// <summary>
40
+            /// 票据类型
41
+            /// </summary>
42
+            public string PJLX { get; set; }
43
+
44
+            /// <summary>
45
+            /// 票据号
46
+            /// </summary>
47
+            public string PJH { get; set; }
48
+
49
+            /// <summary>
50
+            /// 票据金额
51
+            /// </summary>
52
+            public string PJJE { get; set; }
53
+
54
+            /// <summary>
55
+            /// 票据到期日期
56
+            /// </summary>
57
+            public string PJDQRQ { get; set; }
58
+
59
+            /// <summary>
60
+            /// 票据签发日期
61
+            /// </summary>
62
+            public string PJQFRQ { get; set; }
63
+
64
+            /// <summary>
65
+            /// 出票人全称
66
+            /// </summary>
67
+            public string CPRQC { get; set; }
68
+
69
+            /// <summary>
70
+            /// 出票人账号
71
+            /// </summary>
72
+            public string CPRZH { get; set; }
73
+
74
+            /// <summary>
75
+            /// 付款行全称
76
+            /// </summary>
77
+            public string FKXQC { get; set; }
78
+
79
+            /// <summary>
80
+            /// 在途天数
81
+            /// </summary>
82
+            public string ZTTS { get; set; }
83
+
84
+            /// <summary>
85
+            /// 票标志
86
+            /// </summary>
87
+            public string PBZ { get; set; }
88
+
89
+            /// <summary>
90
+            /// 异地同城标志
91
+            /// </summary>
92
+            public string YDTCBZ { get; set; }
93
+
94
+            /// <summary>
95
+            /// 票据利息
96
+            /// </summary>
97
+            public string PJLX_1 { get; set; }
98
+
99
+        }
100
+
101
+        #endregion
102
+
103
+        #region Input
104
+		/// <summary>
105
+        /// 参数清单
106
+        /// </summary>
107
+        public class Input : TFInput
108
+        {
109
+            /// <summary>
110
+            /// 操作标志 0670
111
+            /// 操作标志:标志位 传1-返回录入和信贷审批的,传2-返回已审核的,传3-返回正常的,传4-返回正常再转出和销户的 
112
+            /// </summary>
113
+            public string CZBZ { get; set; }
114
+
115
+            /// <summary>
116
+            /// 借据号 0860
117
+            ///  
118
+            /// </summary>
119
+            public string JJH { get; set; }
120
+
121
+            /// <summary>
122
+            /// 机构号 0910
123
+            ///  
124
+            /// </summary>
125
+            public string JGH { get; set; }
126
+
127
+
128
+            /// <summary>                 
129
+            /// 定义业务逻辑              
130
+            /// </summary>                
131
+            /// <returns></returns>  
132
+            public override TFOutput Raise()
133
+            {
134
+                //拉取数据                                  
135
+                var output = new QueryCDHPXX();
136
+                PageData.TradeAPIs.InitFd(MessageData);
137
+                PageData.TradeAPIs.CommSend(MessageData);
138
+				MessageData.Fd126_5 = MainCode;
139
+                MessageData.Fd16 = "CXCL";
140
+                MessageData.Fd67 = CZBZ;
141
+                MessageData.Fd86 = JJH;
142
+                MessageData.Fd128 = "8101";
143
+                MessageData.Fd91 = JGH;
144
+
145
+                PageData.TradeAPIs.CallServer(MessageData);
146
+                if (MessageData.Fd12 != "0000")
147
+                {
148
+                    output.IsFailed = true;
149
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
150
+                }                
151
+                output.WJData = AnilyzeFileData<E_WJ>(MessageData.FileData,
152
+                                            "协议号|票据类型|票据号|票据金额|票据到期日期|票据签发日期|出票人全称|出票人账号|付款行全称|在途天数|票标志|异地同城标志|票据利息|",
153
+                                            x =>
154
+                                            {
155
+                                                return new E_WJ
156
+                                                {
157
+                                                    XYH = x["协议号"],
158
+                                                    PJLX = x["票据类型"],
159
+                                                    PJH = x["票据号"],
160
+                                                    PJJE = x["票据金额"],
161
+                                                    PJDQRQ = x["票据到期日期"],
162
+                                                    PJQFRQ = x["票据签发日期"],
163
+                                                    CPRQC = x["出票人全称"],
164
+                                                    CPRZH = x["出票人账号"],
165
+                                                    FKXQC = x["付款行全称"],
166
+                                                    ZTTS = x["在途天数"],
167
+                                                    PBZ = x["票标志"],
168
+                                                    YDTCBZ = x["异地同城标志"],
169
+                                                    PJLX_1 = x["票据利息"]
170
+                                                };
171
+                                            });
172
+                output.WJ = MessageData.FileData;
173
+
174
+                return output;
175
+            }
176
+        }
177
+        #endregion
178
+    }
179
+}

+ 218
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCM2CARef.cs View File

@@ -0,0 +1,218 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 客户经理客户账户关联关系查询
11
+    /// 客户经理客户账户关联关系查询
12
+    /// </summary>
13
+    public class QueryCM2CARef : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 文件
18
+        /// 客户号|客户经理编号|客户经理名称|客户经理类型|关联日期|解除日期|账号|账户名|账户ID|账户SEQN|揽存比例|产品类型|客户类型|累计金额|统计天数|机构编号|(增加揽存比例---:客户号|客户经理编号|客户经理类型|关联日期|解除日期|账号|账户名|账户ID|账户SEQN|产品类型|客户类型|累计金额|统计天数|机构编号|
19
+        /// </summary>
20
+        public string WJ { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 文件
24
+        /// 客户号|客户经理编号|客户经理名称|客户经理类型|关联日期|解除日期|账号|账户名|账户ID|账户SEQN|揽存比例|产品类型|客户类型|累计金额|统计天数|机构编号|(增加揽存比例---:客户号|客户经理编号|客户经理类型|关联日期|解除日期|账号|账户名|账户ID|账户SEQN|产品类型|客户类型|累计金额|统计天数|机构编号|
25
+        /// </summary>
26
+        public List<E_WJ> WJData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 文件
30
+        /// 客户号|客户经理编号|客户经理名称|客户经理类型|关联日期|解除日期|账号|账户名|账户ID|账户SEQN|揽存比例|产品类型|客户类型|累计金额|统计天数|机构编号|(增加揽存比例---:客户号|客户经理编号|客户经理类型|关联日期|解除日期|账号|账户名|账户ID|账户SEQN|产品类型|客户类型|累计金额|统计天数|机构编号|
31
+        /// </summary>
32
+        public class E_WJ
33
+        {
34
+            /// <summary>
35
+            /// 客户号
36
+            /// </summary>
37
+            public string KHH { get; set; }
38
+
39
+            /// <summary>
40
+            /// 客户经理编号
41
+            /// </summary>
42
+            public string KHJLBH { get; set; }
43
+
44
+            /// <summary>
45
+            /// 客户经理名称
46
+            /// </summary>
47
+            public string KHJLMC { get; set; }
48
+
49
+            /// <summary>
50
+            /// 客户经理类型
51
+            /// </summary>
52
+            public string KHJLLX { get; set; }
53
+
54
+            /// <summary>
55
+            /// 关联日期
56
+            /// </summary>
57
+            public string GLRQ { get; set; }
58
+
59
+            /// <summary>
60
+            /// 解除日期
61
+            /// </summary>
62
+            public string JCRQ { get; set; }
63
+
64
+            /// <summary>
65
+            /// 账号
66
+            /// </summary>
67
+            public string ZH { get; set; }
68
+
69
+            /// <summary>
70
+            /// 账户名
71
+            /// </summary>
72
+            public string ZHM { get; set; }
73
+
74
+            /// <summary>
75
+            /// 账户ID
76
+            /// </summary>
77
+            public string ZHID { get; set; }
78
+
79
+            /// <summary>
80
+            /// 账户SEQN
81
+            /// </summary>
82
+            public string ZHSEQN { get; set; }
83
+
84
+            /// <summary>
85
+            /// 揽存比例
86
+            /// </summary>
87
+            public string LCBL { get; set; }
88
+
89
+            /// <summary>
90
+            /// 产品类型
91
+            /// </summary>
92
+            public string CPLX { get; set; }
93
+
94
+            /// <summary>
95
+            /// 客户类型
96
+            /// </summary>
97
+            public string KHLX { get; set; }
98
+
99
+            /// <summary>
100
+            /// 累计金额
101
+            /// </summary>
102
+            public string LJJE { get; set; }
103
+
104
+            /// <summary>
105
+            /// 统计天数
106
+            /// </summary>
107
+            public string TJTS { get; set; }
108
+
109
+            /// <summary>
110
+            /// 机构编号
111
+            /// </summary>
112
+            public string JGBH { get; set; }
113
+
114
+        }
115
+
116
+        #endregion
117
+
118
+        #region Input
119
+		/// <summary>
120
+        /// 参数清单
121
+        /// </summary>
122
+        public class Input : TFInput
123
+        {
124
+            /// <summary>
125
+            /// 客户号 0280
126
+            ///  
127
+            /// </summary>
128
+            public string KHH { get; set; }
129
+
130
+            /// <summary>
131
+            /// 账号 0300
132
+            ///  
133
+            /// </summary>
134
+            public string ZH { get; set; }
135
+
136
+            /// <summary>
137
+            /// 关联日期 0440
138
+            ///  
139
+            /// </summary>
140
+            public string GLRQ { get; set; }
141
+
142
+            /// <summary>
143
+            /// 解除日期 0450
144
+            ///  
145
+            /// </summary>
146
+            public string JCRQ { get; set; }
147
+
148
+            /// <summary>
149
+            /// 客户经理编码 0920
150
+            ///  
151
+            /// </summary>
152
+            public string KHJLBM { get; set; }
153
+
154
+            /// <summary>
155
+            /// 账户序号 0340
156
+            ///  
157
+            /// </summary>
158
+            public string ZHXH { get; set; }
159
+
160
+
161
+            /// <summary>                 
162
+            /// 定义业务逻辑              
163
+            /// </summary>                
164
+            /// <returns></returns>  
165
+            public override TFOutput Raise()
166
+            {
167
+                //拉取数据                                  
168
+                var output = new QueryCM2CARef();
169
+                PageData.TradeAPIs.InitFd(MessageData);
170
+                PageData.TradeAPIs.CommSend(MessageData);
171
+				MessageData.Fd126_5 = MainCode;
172
+                MessageData.Fd16 = "CXCL";
173
+                MessageData.Fd28 = KHH;
174
+                MessageData.Fd30 = ZH;
175
+                MessageData.Fd44 = GLRQ;
176
+                MessageData.Fd45 = JCRQ;
177
+                MessageData.Fd92 = KHJLBM;
178
+                MessageData.Fd128 = "0026";
179
+                MessageData.Fd34 = ZHXH;
180
+
181
+                PageData.TradeAPIs.CallServer(MessageData);
182
+                if (MessageData.Fd12 != "0000")
183
+                {
184
+                    output.IsFailed = true;
185
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
186
+                }                
187
+                output.WJData = AnilyzeFileData<E_WJ>(MessageData.FileData,
188
+                                            "客户号|客户经理编号|客户经理名称|客户经理类型|关联日期|解除日期|账号|账户名|账户ID|账户SEQN|揽存比例|产品类型|客户类型|累计金额|统计天数|机构编号|",
189
+                                            x =>
190
+                                            {
191
+                                                return new E_WJ
192
+                                                {
193
+                                                    KHH = x["客户号"],
194
+                                                    KHJLBH = x["客户经理编号"],
195
+                                                    KHJLMC = x["客户经理名称"],
196
+                                                    KHJLLX = x["客户经理类型"],
197
+                                                    GLRQ = x["关联日期"],
198
+                                                    JCRQ = x["解除日期"],
199
+                                                    ZH = x["账号"],
200
+                                                    ZHM = x["账户名"],
201
+                                                    ZHID = x["账户ID"],
202
+                                                    ZHSEQN = x["账户SEQN"],
203
+                                                    LCBL = x["揽存比例"],
204
+                                                    CPLX = x["产品类型"],
205
+                                                    KHLX = x["客户类型"],
206
+                                                    LJJE = x["累计金额"],
207
+                                                    TJTS = x["统计天数"],
208
+                                                    JGBH = x["机构编号"]
209
+                                                };
210
+                                            });
211
+                output.WJ = MessageData.FileData;
212
+
213
+                return output;
214
+            }
215
+        }
216
+        #endregion
217
+    }
218
+}

+ 210
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardApplicationRregister.cs View File

@@ -0,0 +1,210 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询卡申请登记簿信息
11
+    /// 通过申请序号或卡号或证件信息查询卡申请登记簿
12
+    /// </summary>
13
+    public class QueryCardApplicationRregister : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 申请人客户号 0280
18
+        /// 
19
+        /// </summary>
20
+        public string SQRKHH { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 被申请人客户号 0290
24
+        /// 
25
+        /// </summary>
26
+        public string BSQRKHH { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 申请卡号 0300
30
+        /// 
31
+        /// </summary>
32
+        public string SQKH { get; internal set; }
33
+
34
+        /// <summary>
35
+        /// 主卡卡号 0310
36
+        /// 
37
+        /// </summary>
38
+        public string ZKKH { get; internal set; }
39
+
40
+        /// <summary>
41
+        /// 原卡号 0380
42
+        /// 
43
+        /// </summary>
44
+        public string YKH { get; internal set; }
45
+
46
+        /// <summary>
47
+        /// 申请序号 0540
48
+        /// 
49
+        /// </summary>
50
+        public string SQXH { get; internal set; }
51
+
52
+        /// <summary>
53
+        /// 申通过请标志 0670
54
+        /// 0通过 1不通过 2申请未审批
55
+        /// </summary>
56
+        public string STGQBZ { get; internal set; }
57
+
58
+        /// <summary>
59
+        /// 发卡标志(制卡状态) 0680
60
+        /// 0申请 1记名卡已确认制卡 2非记名卡已确认制卡 3已制卡,待确认制卡完成 e申请错误
61
+        /// </summary>
62
+        public string FKBZZKZT { get; internal set; }
63
+
64
+        /// <summary>
65
+        /// 凭证是否入库 0690
66
+        /// Y入库 N未入库
67
+        /// </summary>
68
+        public string PZSFRK { get; internal set; }
69
+
70
+        /// <summary>
71
+        /// 申请标志 1026
72
+        /// 0主卡申请  1附卡申请 2换卡不换号申请(主卡) 3换卡换号申请(主卡) 4 E卡通申请 5附卡换卡不换 6附卡换卡换号 7机构不记名申请 8一户通换卡不换号 9一户通换卡换号
73
+        /// </summary>
74
+        public string SQBZ { get; internal set; }
75
+
76
+        /// <summary>
77
+        /// 申请人证件号码 102A
78
+        /// 
79
+        /// </summary>
80
+        public string SQRZJHM { get; internal set; }
81
+
82
+        /// <summary>
83
+        /// 申请人证件类型 102G
84
+        /// 
85
+        /// </summary>
86
+        public string SQRZJLX { get; internal set; }
87
+
88
+        /// <summary>
89
+        /// 制卡批次 102U
90
+        /// 
91
+        /// </summary>
92
+        public string ZKPC { get; internal set; }
93
+
94
+        /// <summary>
95
+        /// 介质代码 1161
96
+        /// 
97
+        /// </summary>
98
+        public string JZDM { get; internal set; }
99
+
100
+        /// <summary>
101
+        /// 申请人户名 0250
102
+        /// 
103
+        /// </summary>
104
+        public string SQRHM { get; internal set; }
105
+
106
+        /// <summary>
107
+        /// 申请人与被申请人关系 0700
108
+        /// 
109
+        /// </summary>
110
+        public string SQGX { get; internal set; }
111
+
112
+        /// <summary>
113
+        /// 启用方式 0710
114
+        /// 
115
+        /// </summary>
116
+        public string QYFS { get; internal set; }
117
+
118
+        /// <summary>
119
+        /// 申请方式 0720
120
+        /// 
121
+        /// </summary>
122
+        public string SQFS { get; internal set; }
123
+
124
+        /// <summary>
125
+        /// 领取方式 0730
126
+        /// 
127
+        /// </summary>
128
+        public string LQFS { get; internal set; }
129
+
130
+        #endregion
131
+
132
+        #region Input
133
+		/// <summary>
134
+        /// 参数清单
135
+        /// </summary>
136
+        public class Input : TFInput
137
+        {
138
+            /// <summary>
139
+            /// 卡号 0300
140
+            ///  
141
+            /// </summary>
142
+            public string KH { get; set; }
143
+
144
+            /// <summary>
145
+            /// 申请序号 0540
146
+            ///  
147
+            /// </summary>
148
+            public string SQXH { get; set; }
149
+
150
+            /// <summary>
151
+            /// 证件号码 102A
152
+            ///  
153
+            /// </summary>
154
+            public string ZJHM { get; set; }
155
+
156
+            /// <summary>
157
+            /// 证件类型 102G
158
+            ///  
159
+            /// </summary>
160
+            public string ZJLX { get; set; }
161
+
162
+
163
+            /// <summary>                 
164
+            /// 定义业务逻辑              
165
+            /// </summary>                
166
+            /// <returns></returns>  
167
+            public override TFOutput Raise()
168
+            {
169
+                //拉取数据                                  
170
+                var output = new QueryCardApplicationRregister();
171
+                PageData.TradeAPIs.InitFd(MessageData);
172
+                PageData.TradeAPIs.CommSend(MessageData);
173
+				MessageData.Fd126_5 = MainCode;
174
+                MessageData.Fd16 = "K038";
175
+                MessageData.Fd30 = KH;
176
+                MessageData.Fd54 = SQXH;
177
+                MessageData.Fd102_A = ZJHM;
178
+                MessageData.Fd102_G = ZJLX;
179
+
180
+                PageData.TradeAPIs.CallServer(MessageData);
181
+                if (MessageData.Fd12 != "0000")
182
+                {
183
+                    output.IsFailed = true;
184
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
185
+                }                
186
+                output.SQRKHH = DelSpace(MessageData.Fd28);
187
+                output.BSQRKHH = DelSpace(MessageData.Fd29);
188
+                output.SQKH = DelSpace(MessageData.Fd30);
189
+                output.ZKKH = DelSpace(MessageData.Fd31);
190
+                output.YKH = DelSpace(MessageData.Fd38);
191
+                output.SQXH = DelSpace(MessageData.Fd54);
192
+                output.STGQBZ = DelSpace(MessageData.Fd67);
193
+                output.FKBZZKZT = DelSpace(MessageData.Fd68);
194
+                output.PZSFRK = DelSpace(MessageData.Fd69);
195
+                output.SQBZ = DelSpace(MessageData.Fd102_6);
196
+                output.SQRZJHM = DelSpace(MessageData.Fd102_A);
197
+                output.SQRZJLX = DelSpace(MessageData.Fd102_G);
198
+                output.ZKPC = DelSpace(MessageData.Fd102_U);
199
+                output.JZDM = DelSpace(MessageData.Fd116_1);
200
+                output.SQRHM = (MessageData.Fd25);
201
+                output.SQGX = (MessageData.Fd70);
202
+                output.QYFS = (MessageData.Fd71);
203
+                output.SQFS = (MessageData.Fd72);
204
+                output.LQFS = (MessageData.Fd73);
205
+                return output;
206
+            }
207
+        }
208
+        #endregion
209
+    }
210
+}

+ 161
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardApplyRecord.cs View File

@@ -0,0 +1,161 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询卡申请登记簿(文件)
11
+    /// 通过输入申请编号查询卡申请登记簿相关信息
12
+    /// </summary>
13
+    public class QueryCardApplyRecord : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 以文件形式返回卡申请相关记录
18
+        /// 申请日期|申请顺序号|申请张数|介质代码|卡号段|卡号的起始号码|卡号的终止号码|申请标志|申请通过标志|制卡批次|
19
+        /// </summary>
20
+        public string YWJXSFHKSQXGJL { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 以文件形式返回卡申请相关记录
24
+        /// 申请日期|申请顺序号|申请张数|介质代码|卡号段|卡号的起始号码|卡号的终止号码|申请标志|申请通过标志|制卡批次|
25
+        /// </summary>
26
+        public List<E_YWJXSFHKSQXGJL> YWJXSFHKSQXGJLData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 以文件形式返回卡申请相关记录
30
+        /// 申请日期|申请顺序号|申请张数|介质代码|卡号段|卡号的起始号码|卡号的终止号码|申请标志|申请通过标志|制卡批次|
31
+        /// </summary>
32
+        public class E_YWJXSFHKSQXGJL
33
+        {
34
+            /// <summary>
35
+            /// 申请日期
36
+            /// </summary>
37
+            public string SQRQ { get; set; }
38
+
39
+            /// <summary>
40
+            /// 申请顺序号
41
+            /// </summary>
42
+            public string SQSXH { get; set; }
43
+
44
+            /// <summary>
45
+            /// 申请张数
46
+            /// </summary>
47
+            public string SQZS { get; set; }
48
+
49
+            /// <summary>
50
+            /// 介质代码
51
+            /// </summary>
52
+            public string JZDM { get; set; }
53
+
54
+            /// <summary>
55
+            /// 卡号段
56
+            /// </summary>
57
+            public string KHD { get; set; }
58
+
59
+            /// <summary>
60
+            /// 卡号的起始号码
61
+            /// </summary>
62
+            public string KHDQSHM { get; set; }
63
+
64
+            /// <summary>
65
+            /// 卡号的终止号码
66
+            /// </summary>
67
+            public string KHDZZHM { get; set; }
68
+
69
+            /// <summary>
70
+            /// 申请标志
71
+            /// </summary>
72
+            public string SQBZ { get; set; }
73
+
74
+            /// <summary>
75
+            /// 申请通过标志
76
+            /// </summary>
77
+            public string SQTGBZ { get; set; }
78
+
79
+            /// <summary>
80
+            /// 制卡批次
81
+            /// </summary>
82
+            public string ZKPC { get; set; }
83
+
84
+        }
85
+
86
+        #endregion
87
+
88
+        #region Input
89
+		/// <summary>
90
+        /// 参数清单
91
+        /// </summary>
92
+        public class Input : TFInput
93
+        {
94
+            /// <summary>
95
+            /// 申请序号 0530
96
+            ///  
97
+            /// </summary>
98
+            public string SQXH { get; set; }
99
+
100
+            /// <summary>
101
+            /// 制卡批次 0860
102
+            ///  
103
+            /// </summary>
104
+            public string ZKPC { get; set; }
105
+
106
+            /// <summary>
107
+            /// 介质代码 1161
108
+            ///  
109
+            /// </summary>
110
+            public string JZDM { get; set; }
111
+
112
+
113
+            /// <summary>                 
114
+            /// 定义业务逻辑              
115
+            /// </summary>                
116
+            /// <returns></returns>  
117
+            public override TFOutput Raise()
118
+            {
119
+                //拉取数据                                  
120
+                var output = new QueryCardApplyRecord();
121
+                PageData.TradeAPIs.InitFd(MessageData);
122
+                PageData.TradeAPIs.CommSend(MessageData);
123
+				MessageData.Fd126_5 = MainCode;
124
+                MessageData.Fd16 = "CXCL";
125
+                MessageData.Fd53 = SQXH;
126
+                MessageData.Fd86 = ZKPC;
127
+                MessageData.Fd116_1 = JZDM;
128
+                MessageData.Fd128 = "0008";
129
+
130
+                PageData.TradeAPIs.CallServer(MessageData);
131
+                if (MessageData.Fd12 != "0000")
132
+                {
133
+                    output.IsFailed = true;
134
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
135
+                }                
136
+                output.YWJXSFHKSQXGJLData = AnilyzeFileData<E_YWJXSFHKSQXGJL>(MessageData.FileData,
137
+                                            "申请日期|申请顺序号|申请张数|介质代码|卡号段|卡号的起始号码|卡号的终止号码|申请标志|申请通过标志|制卡批次|",
138
+                                            x =>
139
+                                            {
140
+                                                return new E_YWJXSFHKSQXGJL
141
+                                                {
142
+                                                    SQRQ = x["申请日期"],
143
+                                                    SQSXH = x["申请顺序号"],
144
+                                                    SQZS = x["申请张数"],
145
+                                                    JZDM = x["介质代码"],
146
+                                                    KHD = x["卡号段"],
147
+                                                    KHDQSHM = x["卡号的起始号码"],
148
+                                                    KHDZZHM = x["卡号的终止号码"],
149
+                                                    SQBZ = x["申请标志"],
150
+                                                    SQTGBZ = x["申请通过标志"],
151
+                                                    ZKPC = x["制卡批次"]
152
+                                                };
153
+                                            });
154
+                output.YWJXSFHKSQXGJL = MessageData.FileData;
155
+
156
+                return output;
157
+            }
158
+        }
159
+        #endregion
160
+    }
161
+}

+ 120
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardListOfCustomer.cs View File

@@ -0,0 +1,120 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询客户允许的卡介质列表
11
+    /// 根据客户级别和卡种类返回卡介质列表
12
+    /// </summary>
13
+    public class QueryCardListOfCustomer : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 介质列表
18
+        /// 文件格式: 介质代码|介质名称|
19
+        /// </summary>
20
+        public string JZLB { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 介质列表
24
+        /// 文件格式: 介质代码|介质名称|
25
+        /// </summary>
26
+        public List<E_JZLB> JZLBData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 介质列表
30
+        /// 文件格式: 介质代码|介质名称|
31
+        /// </summary>
32
+        public class E_JZLB
33
+        {
34
+            /// <summary>
35
+            /// 介质代码
36
+            /// </summary>
37
+            public string JZDM { get; set; }
38
+
39
+            /// <summary>
40
+            /// 介质名称
41
+            /// </summary>
42
+            public string JZMC { get; set; }
43
+
44
+        }
45
+
46
+        #endregion
47
+
48
+        #region Input
49
+		/// <summary>
50
+        /// 参数清单
51
+        /// </summary>
52
+        public class Input : TFInput
53
+        {
54
+            /// <summary>
55
+            /// 是否自选号 0680
56
+            /// Y:是 N:否 
57
+            /// </summary>
58
+            public string SFZXH { get; set; }
59
+
60
+            /// <summary>
61
+            /// 卡类型 0690
62
+            /// 0:普通卡 1:联名卡 2:专用卡 
63
+            /// </summary>
64
+            public string KLX { get; set; }
65
+
66
+            /// <summary>
67
+            /// 是否记名卡 0700
68
+            /// Y:是 N:否 
69
+            /// </summary>
70
+            public string SFJMK { get; set; }
71
+
72
+            /// <summary>
73
+            /// 客户级别 0710
74
+            ///  
75
+            /// </summary>
76
+            public string KHJB { get; set; }
77
+
78
+
79
+            /// <summary>                 
80
+            /// 定义业务逻辑              
81
+            /// </summary>                
82
+            /// <returns></returns>  
83
+            public override TFOutput Raise()
84
+            {
85
+                //拉取数据                                  
86
+                var output = new QueryCardListOfCustomer();
87
+                PageData.TradeAPIs.InitFd(MessageData);
88
+                PageData.TradeAPIs.CommSend(MessageData);
89
+				MessageData.Fd126_5 = MainCode;
90
+                MessageData.Fd16 = "CXCL";
91
+                MessageData.Fd68 = SFZXH;
92
+                MessageData.Fd69 = KLX;
93
+                MessageData.Fd70 = SFJMK;
94
+                MessageData.Fd71 = KHJB;
95
+                MessageData.Fd128 = "0046";
96
+
97
+                PageData.TradeAPIs.CallServer(MessageData);
98
+                if (MessageData.Fd12 != "0000")
99
+                {
100
+                    output.IsFailed = true;
101
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
102
+                }                
103
+                output.JZLBData = AnilyzeFileData<E_JZLB>(MessageData.FileData,
104
+                                            "介质代码|介质名称|",
105
+                                            x =>
106
+                                            {
107
+                                                return new E_JZLB
108
+                                                {
109
+                                                    JZDM = x["介质代码"],
110
+                                                    JZMC = x["介质名称"]
111
+                                                };
112
+                                            });
113
+                output.JZLB = MessageData.FileData;
114
+
115
+                return output;
116
+            }
117
+        }
118
+        #endregion
119
+    }
120
+}

+ 79
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardMsrInfo.cs View File

@@ -0,0 +1,79 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 卡折校验磁道信息
11
+    /// 卡折校验磁道信息
12
+    /// </summary>
13
+    public class QueryCardMsrInfo : TFOutput
14
+    {
15
+        #region Output
16
+
17
+        #endregion
18
+
19
+        #region Input
20
+		/// <summary>
21
+        /// 参数清单
22
+        /// </summary>
23
+        public class Input : TFInput
24
+        {
25
+            /// <summary>
26
+            /// 账号 0300
27
+            ///  
28
+            /// </summary>
29
+            public string ZH { get; set; }
30
+
31
+            /// <summary>
32
+            /// 校验方式 0670
33
+            ///  1 卡检查2磁道  2 卡检查3磁道  3 卡检查2磁道cvn  4 卡、折检查所有磁道  5 卡核对3磁道cvn  
34
+            /// </summary>
35
+            public string JYFS { get; set; }
36
+
37
+            /// <summary>
38
+            /// 2磁道信息 0750
39
+            ///  
40
+            /// </summary>
41
+            public string MSR2 { get; set; }
42
+
43
+            /// <summary>
44
+            /// 3磁道信息 0760
45
+            ///  
46
+            /// </summary>
47
+            public string MSR3 { get; set; }
48
+
49
+
50
+            /// <summary>                 
51
+            /// 定义业务逻辑              
52
+            /// </summary>                
53
+            /// <returns></returns>  
54
+            public override TFOutput Raise()
55
+            {
56
+                //拉取数据                                  
57
+                var output = new QueryCardMsrInfo();
58
+                PageData.TradeAPIs.InitFd(MessageData);
59
+                PageData.TradeAPIs.CommSend(MessageData);
60
+				MessageData.Fd126_5 = MainCode;
61
+                MessageData.Fd16 = "K049";
62
+                MessageData.Fd30 = ZH;
63
+                MessageData.Fd67 = JYFS;
64
+                MessageData.Fd75 = MSR2;
65
+                MessageData.Fd76 = MSR3;
66
+
67
+                PageData.TradeAPIs.CallServer(MessageData);
68
+                if (MessageData.Fd12 != "0000")
69
+                {
70
+                    output.IsFailed = true;
71
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
72
+                }                
73
+
74
+                return output;
75
+            }
76
+        }
77
+        #endregion
78
+    }
79
+}

+ 99
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardNoPartList.cs View File

@@ -0,0 +1,99 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询卡号段列表
11
+    /// 根据介质代码查询卡号段列表
12
+    /// </summary>
13
+    public class QueryCardNoPartList : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 介质列表
18
+        /// 文件格式: 卡号段代码|卡号段名称|
19
+        /// </summary>
20
+        public string JZLB { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 介质列表
24
+        /// 文件格式: 卡号段代码|卡号段名称|
25
+        /// </summary>
26
+        public List<E_JZLB> JZLBData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 介质列表
30
+        /// 文件格式: 卡号段代码|卡号段名称|
31
+        /// </summary>
32
+        public class E_JZLB
33
+        {
34
+            /// <summary>
35
+            /// 卡号段代码
36
+            /// </summary>
37
+            public string KHDDM { get; set; }
38
+
39
+            /// <summary>
40
+            /// 卡号段名称
41
+            /// </summary>
42
+            public string KHDMC { get; set; }
43
+
44
+        }
45
+
46
+        #endregion
47
+
48
+        #region Input
49
+		/// <summary>
50
+        /// 参数清单
51
+        /// </summary>
52
+        public class Input : TFInput
53
+        {
54
+            /// <summary>
55
+            /// 介质代码 1161
56
+            ///  
57
+            /// </summary>
58
+            public string JZDM { get; set; }
59
+
60
+
61
+            /// <summary>                 
62
+            /// 定义业务逻辑              
63
+            /// </summary>                
64
+            /// <returns></returns>  
65
+            public override TFOutput Raise()
66
+            {
67
+                //拉取数据                                  
68
+                var output = new QueryCardNoPartList();
69
+                PageData.TradeAPIs.InitFd(MessageData);
70
+                PageData.TradeAPIs.CommSend(MessageData);
71
+				MessageData.Fd126_5 = MainCode;
72
+                MessageData.Fd16 = "CXCL";
73
+                MessageData.Fd116_1 = JZDM;
74
+                MessageData.Fd128 = "0047";
75
+
76
+                PageData.TradeAPIs.CallServer(MessageData);
77
+                if (MessageData.Fd12 != "0000")
78
+                {
79
+                    output.IsFailed = true;
80
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
81
+                }                
82
+                output.JZLBData = AnilyzeFileData<E_JZLB>(MessageData.FileData,
83
+                                            "卡号段代码|卡号段名称|",
84
+                                            x =>
85
+                                            {
86
+                                                return new E_JZLB
87
+                                                {
88
+                                                    KHDDM = x["卡号段代码"],
89
+                                                    KHDMC = x["卡号段名称"]
90
+                                                };
91
+                                            });
92
+                output.JZLB = MessageData.FileData;
93
+
94
+                return output;
95
+            }
96
+        }
97
+        #endregion
98
+    }
99
+}

+ 99
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCardSurfaceList.cs View File

@@ -0,0 +1,99 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 查询卡面列表
11
+    /// 根据介质代码查询卡面列表
12
+    /// </summary>
13
+    public class QueryCardSurfaceList : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 介质列表
18
+        /// 文件格式: 卡面代码|卡面名称|
19
+        /// </summary>
20
+        public string JZLB { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 介质列表
24
+        /// 文件格式: 卡面代码|卡面名称|
25
+        /// </summary>
26
+        public List<E_JZLB> JZLBData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 介质列表
30
+        /// 文件格式: 卡面代码|卡面名称|
31
+        /// </summary>
32
+        public class E_JZLB
33
+        {
34
+            /// <summary>
35
+            /// 卡面代码
36
+            /// </summary>
37
+            public string KMDM { get; set; }
38
+
39
+            /// <summary>
40
+            /// 卡面名称
41
+            /// </summary>
42
+            public string KMMC { get; set; }
43
+
44
+        }
45
+
46
+        #endregion
47
+
48
+        #region Input
49
+		/// <summary>
50
+        /// 参数清单
51
+        /// </summary>
52
+        public class Input : TFInput
53
+        {
54
+            /// <summary>
55
+            /// 介质代码 1161
56
+            ///  
57
+            /// </summary>
58
+            public string JZDM { get; set; }
59
+
60
+
61
+            /// <summary>                 
62
+            /// 定义业务逻辑              
63
+            /// </summary>                
64
+            /// <returns></returns>  
65
+            public override TFOutput Raise()
66
+            {
67
+                //拉取数据                                  
68
+                var output = new QueryCardSurfaceList();
69
+                PageData.TradeAPIs.InitFd(MessageData);
70
+                PageData.TradeAPIs.CommSend(MessageData);
71
+				MessageData.Fd126_5 = MainCode;
72
+                MessageData.Fd16 = "CXCL";
73
+                MessageData.Fd116_1 = JZDM;
74
+                MessageData.Fd128 = "0048";
75
+
76
+                PageData.TradeAPIs.CallServer(MessageData);
77
+                if (MessageData.Fd12 != "0000")
78
+                {
79
+                    output.IsFailed = true;
80
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
81
+                }                
82
+                output.JZLBData = AnilyzeFileData<E_JZLB>(MessageData.FileData,
83
+                                            "卡面代码|卡面名称|",
84
+                                            x =>
85
+                                            {
86
+                                                return new E_JZLB
87
+                                                {
88
+                                                    KMDM = x["卡面代码"],
89
+                                                    KMMC = x["卡面名称"]
90
+                                                };
91
+                                            });
92
+                output.JZLB = MessageData.FileData;
93
+
94
+                return output;
95
+            }
96
+        }
97
+        #endregion
98
+    }
99
+}

+ 86
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashAllocate.cs View File

@@ -0,0 +1,86 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 现金调拨查询
11
+    /// 通过现金管理员查询申请调拨的信息
12
+    /// </summary>
13
+    public class QueryCashAllocate : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 查询结果 0280
18
+        /// 
19
+        /// </summary>
20
+        public string CXJG { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 标志位 0730
24
+        /// [空格表示没有查询相关数据]第一位是否为现金管理员0-是 1-否 第二位是否交出现金管理权限0-否 1-是 第三位是否是清算中心0-否 1-是 第四位操作类型是否正确0-是 1-否
25
+        /// </summary>
26
+        public string BZW { get; internal set; }
27
+
28
+
29
+        #endregion
30
+
31
+        #region Input
32
+		/// <summary>
33
+        /// 参数清单
34
+        /// </summary>
35
+        public class Input : TFInput
36
+        {
37
+            /// <summary>
38
+            /// 查询标志 0700
39
+            ///  
40
+            /// </summary>
41
+            public string CXBZ { get; set; }
42
+
43
+            /// <summary>
44
+            /// 机构号 0910
45
+            ///  
46
+            /// </summary>
47
+            public string JGH { get; set; }
48
+
49
+            /// <summary>
50
+            /// 柜员号 0920
51
+            ///  
52
+            /// </summary>
53
+            public string GYH { get; set; }
54
+
55
+
56
+            /// <summary>                 
57
+            /// 定义业务逻辑              
58
+            /// </summary>                
59
+            /// <returns></returns>  
60
+            public override TFOutput Raise()
61
+            {
62
+                //拉取数据                                  
63
+                var output = new QueryCashAllocate();
64
+                PageData.TradeAPIs.InitFd(MessageData);
65
+                PageData.TradeAPIs.CommSend(MessageData);
66
+				MessageData.Fd126_5 = MainCode;
67
+                MessageData.Fd16 = "K059";
68
+                MessageData.Fd70 = CXBZ;
69
+                MessageData.Fd91 = JGH;
70
+                MessageData.Fd92 = GYH;
71
+
72
+                PageData.TradeAPIs.CallServer(MessageData);
73
+                if (MessageData.Fd12 != "0000")
74
+                {
75
+                    output.IsFailed = true;
76
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
77
+                }                
78
+                output.CXJG = (MessageData.Fd28);
79
+                output.BZW = (MessageData.Fd73);
80
+
81
+                return output;
82
+            }
83
+        }
84
+        #endregion
85
+    }
86
+}

+ 242
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashApproveList_710001.cs View File

@@ -0,0 +1,242 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 9598查询-710001-查询现金审批表
11
+    /// 提出申请
12
+    /// </summary>
13
+    public class QueryCashApproveList_710001 : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 查询结果
18
+        /// 文件格式:申请类型|申请金额|申请事由|券别要求|100元金额(完整)|50元金额(完整)|20元金额(完整)|10元金额(完整)|5元金额(完整)|2元金额(完整)|1元金额(完整)|5角金额(完整)|2角金额(完整)|1角金额(完整)|100元金额(损伤)|50元金额(损伤)|20元金额(损伤)|10元金额(损伤)|5元金额(损伤)|2元金额(损伤)|1元金额(损伤)|5角金额(损伤)|2角金额(损伤)|1角金额(损伤)|备注|申请模式
19
+        /// </summary>
20
+        public string CXJG { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 查询结果
24
+        /// 文件格式:申请类型|申请金额|申请事由|券别要求|100元金额(完整)|50元金额(完整)|20元金额(完整)|10元金额(完整)|5元金额(完整)|2元金额(完整)|1元金额(完整)|5角金额(完整)|2角金额(完整)|1角金额(完整)|100元金额(损伤)|50元金额(损伤)|20元金额(损伤)|10元金额(损伤)|5元金额(损伤)|2元金额(损伤)|1元金额(损伤)|5角金额(损伤)|2角金额(损伤)|1角金额(损伤)|备注|申请模式
25
+        /// </summary>
26
+        public List<E_CXJG> CXJGData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 查询结果
30
+        /// 文件格式:申请类型|申请金额|申请事由|券别要求|100元金额(完整)|50元金额(完整)|20元金额(完整)|10元金额(完整)|5元金额(完整)|2元金额(完整)|1元金额(完整)|5角金额(完整)|2角金额(完整)|1角金额(完整)|100元金额(损伤)|50元金额(损伤)|20元金额(损伤)|10元金额(损伤)|5元金额(损伤)|2元金额(损伤)|1元金额(损伤)|5角金额(损伤)|2角金额(损伤)|1角金额(损伤)|备注|申请模式
31
+        /// </summary>
32
+        public class E_CXJG
33
+        {
34
+            /// <summary>
35
+            /// 申请类型
36
+            /// </summary>
37
+            public string SQLX { get; set; }
38
+
39
+            /// <summary>
40
+            /// 申请金额
41
+            /// </summary>
42
+            public string SQJE { get; set; }
43
+
44
+            /// <summary>
45
+            /// 申请事由
46
+            /// </summary>
47
+            public string SQSY { get; set; }
48
+
49
+            /// <summary>
50
+            /// 券别要求
51
+            /// </summary>
52
+            public string QBYQ { get; set; }
53
+
54
+            /// <summary>
55
+            /// 金额100元(完整)
56
+            /// </summary>
57
+            public string JE100YWZ { get; set; }
58
+
59
+            /// <summary>
60
+            /// 金额50元(完整)
61
+            /// </summary>
62
+            public string JE50YWZ { get; set; }
63
+
64
+            /// <summary>
65
+            /// 金额20元(完整)
66
+            /// </summary>
67
+            public string JE20YWZ { get; set; }
68
+
69
+            /// <summary>
70
+            /// 金额10元(完整)
71
+            /// </summary>
72
+            public string JE10YWZ { get; set; }
73
+
74
+            /// <summary>
75
+            /// 金额5元(完整)
76
+            /// </summary>
77
+            public string JE5YWZ { get; set; }
78
+
79
+            /// <summary>
80
+            /// 金额2元(完整)
81
+            /// </summary>
82
+            public string JE2YWZ { get; set; }
83
+
84
+            /// <summary>
85
+            /// 金额1元(完整)
86
+            /// </summary>
87
+            public string JE1YWZ { get; set; }
88
+
89
+            /// <summary>
90
+            /// 金额5角(完整)
91
+            /// </summary>
92
+            public string JE5JWZ { get; set; }
93
+
94
+            /// <summary>
95
+            /// 金额2角(完整)
96
+            /// </summary>
97
+            public string JE2JWZ { get; set; }
98
+
99
+            /// <summary>
100
+            /// 金额1角(完整)
101
+            /// </summary>
102
+            public string JE1JWZ { get; set; }
103
+
104
+            /// <summary>
105
+            /// 金额100元(损伤)
106
+            /// </summary>
107
+            public string JE100YSS { get; set; }
108
+
109
+            /// <summary>
110
+            /// 金额50元(损伤)
111
+            /// </summary>
112
+            public string JE50YSS { get; set; }
113
+
114
+            /// <summary>
115
+            /// 金额20元(损伤)
116
+            /// </summary>
117
+            public string JE20YSS { get; set; }
118
+
119
+            /// <summary>
120
+            /// 金额10元(损伤)
121
+            /// </summary>
122
+            public string JE10YSS { get; set; }
123
+
124
+            /// <summary>
125
+            /// 金额5元(损伤)
126
+            /// </summary>
127
+            public string JE5YSS { get; set; }
128
+
129
+            /// <summary>
130
+            /// 金额2元(损伤)
131
+            /// </summary>
132
+            public string JE2YSS { get; set; }
133
+
134
+            /// <summary>
135
+            /// 金额1元(损伤)
136
+            /// </summary>
137
+            public string JE1YSS { get; set; }
138
+
139
+            /// <summary>
140
+            /// 金额5角(损伤)
141
+            /// </summary>
142
+            public string JE5JSS { get; set; }
143
+
144
+            /// <summary>
145
+            /// 金额2角(损伤)
146
+            /// </summary>
147
+            public string JE2JSS { get; set; }
148
+
149
+            /// <summary>
150
+            /// 金额1角(损伤)
151
+            /// </summary>
152
+            public string JE1JSS { get; set; }
153
+
154
+            /// <summary>
155
+            /// 备注
156
+            /// </summary>
157
+            public string BZ { get; set; }
158
+
159
+            /// <summary>
160
+            /// 申请模式
161
+            /// </summary>
162
+            public string SQMS { get; set; }
163
+
164
+        }
165
+
166
+        #endregion
167
+
168
+        #region Input
169
+		/// <summary>
170
+        /// 参数清单
171
+        /// </summary>
172
+        public class Input : TFInput
173
+        {
174
+            /// <summary>
175
+            /// 查询条件 
176
+            /// 申请编号
177
+            /// </summary>
178
+            public string SQBH { get; set; }
179
+
180
+
181
+            /// <summary>                 
182
+            /// 定义业务逻辑              
183
+            /// </summary>                
184
+            /// <returns></returns>  
185
+            public override TFOutput Raise()
186
+            {
187
+                //拉取数据                                  
188
+                var output = new QueryCashApproveList_710001();
189
+                PageData.TradeAPIs.InitFd(MessageData);
190
+                PageData.TradeAPIs.CommSend(MessageData);
191
+				MessageData.Fd126_5 = MainCode;
192
+                MessageData.Fd16 = "9598";
193
+                MessageData.Fd123 = string.Format("1,710001,{0},",SQBH);
194
+
195
+                PageData.TradeAPIs.CallServer(MessageData);
196
+                if (MessageData.Fd12 != "0000")
197
+                {
198
+                    output.IsFailed = true;
199
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
200
+                }                
201
+                output.CXJGData = AnilyzeFileData<E_CXJG>(MessageData.FileData,
202
+                                            "申请类型|申请金额|申请事由|券别要求|金额100元(完整)|金额50元(完整)|金额20元(完整)|金额10元(完整)|金额5元(完整)|金额2元(完整)|金额1元(完整)|金额5角(完整)|金额2角(完整)|金额1角(完整)|金额100元(损伤)|金额50元(损伤)|金额20元(损伤)|金额10元(损伤)|金额5元(损伤)|金额2元(损伤)|金额1元(损伤)|金额5角(损伤)|金额2角(损伤)|金额1角(损伤)|备注|申请模式|",
203
+                                            x =>
204
+                                            {
205
+                                                return new E_CXJG
206
+                                                {
207
+                                                    SQLX = x["申请类型"],
208
+                                                    SQJE = x["申请金额"],
209
+                                                    SQSY = x["申请事由"],
210
+                                                    QBYQ = x["券别要求"],
211
+                                                    JE100YWZ = x["金额100元(完整)"],
212
+                                                    JE50YWZ = x["金额50元(完整)"],
213
+                                                    JE20YWZ = x["金额20元(完整)"],
214
+                                                    JE10YWZ = x["金额10元(完整)"],
215
+                                                    JE5YWZ = x["金额5元(完整)"],
216
+                                                    JE2YWZ = x["金额2元(完整)"],
217
+                                                    JE1YWZ = x["金额1元(完整)"],
218
+                                                    JE5JWZ = x["金额5角(完整)"],
219
+                                                    JE2JWZ = x["金额2角(完整)"],
220
+                                                    JE1JWZ = x["金额1角(完整)"],
221
+                                                    JE100YSS = x["金额100元(损伤)"],
222
+                                                    JE50YSS = x["金额50元(损伤)"],
223
+                                                    JE20YSS = x["金额20元(损伤)"],
224
+                                                    JE10YSS = x["金额10元(损伤)"],
225
+                                                    JE5YSS = x["金额5元(损伤)"],
226
+                                                    JE2YSS = x["金额2元(损伤)"],
227
+                                                    JE1YSS = x["金额1元(损伤)"],
228
+                                                    JE5JSS = x["金额5角(损伤)"],
229
+                                                    JE2JSS = x["金额2角(损伤)"],
230
+                                                    JE1JSS = x["金额1角(损伤)"],
231
+                                                    BZ = x["备注"],
232
+                                                    SQMS = x["申请模式"]
233
+                                                };
234
+                                            });
235
+                output.CXJG = MessageData.FileData;
236
+
237
+                return output;
238
+            }
239
+        }
240
+        #endregion
241
+    }
242
+}

+ 242
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashApproveList_710003.cs View File

@@ -0,0 +1,242 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 9598查询-710003-查询现金审批表
11
+    /// 网点提现的审批 拒绝申请 
12
+    /// </summary>
13
+    public class QueryCashApproveList_710003 : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 查询结果
18
+        /// 文件格式:申请类型|申请金额|申请事由|券别要求|100元金额(完整)|50元金额(完整)|20元金额(完整)|10元金额(完整)|5元金额(完整)|2元金额(完整)|1元金额(完整)|5角金额(完整)|2角金额(完整)|1角金额(完整)|100元金额(损伤)|50元金额(损伤)|20元金额(损伤)|10元金额(损伤)|5元金额(损伤)|2元金额(损伤)|1元金额(损伤)|5角金额(损伤)|2角金额(损伤)|1角金额(损伤)|备注|申请模式
19
+        /// </summary>
20
+        public string CXJG { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 查询结果
24
+        /// 文件格式:申请类型|申请金额|申请事由|券别要求|100元金额(完整)|50元金额(完整)|20元金额(完整)|10元金额(完整)|5元金额(完整)|2元金额(完整)|1元金额(完整)|5角金额(完整)|2角金额(完整)|1角金额(完整)|100元金额(损伤)|50元金额(损伤)|20元金额(损伤)|10元金额(损伤)|5元金额(损伤)|2元金额(损伤)|1元金额(损伤)|5角金额(损伤)|2角金额(损伤)|1角金额(损伤)|备注|申请模式
25
+        /// </summary>
26
+        public List<E_CXJG> CXJGData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 查询结果
30
+        /// 文件格式:申请类型|申请金额|申请事由|券别要求|100元金额(完整)|50元金额(完整)|20元金额(完整)|10元金额(完整)|5元金额(完整)|2元金额(完整)|1元金额(完整)|5角金额(完整)|2角金额(完整)|1角金额(完整)|100元金额(损伤)|50元金额(损伤)|20元金额(损伤)|10元金额(损伤)|5元金额(损伤)|2元金额(损伤)|1元金额(损伤)|5角金额(损伤)|2角金额(损伤)|1角金额(损伤)|备注|申请模式
31
+        /// </summary>
32
+        public class E_CXJG
33
+        {
34
+            /// <summary>
35
+            /// 申请类型
36
+            /// </summary>
37
+            public string SQLX { get; set; }
38
+
39
+            /// <summary>
40
+            /// 申请金额
41
+            /// </summary>
42
+            public string SQJE { get; set; }
43
+
44
+            /// <summary>
45
+            /// 申请事由
46
+            /// </summary>
47
+            public string SQSY { get; set; }
48
+
49
+            /// <summary>
50
+            /// 券别要求
51
+            /// </summary>
52
+            public string QBYQ { get; set; }
53
+
54
+            /// <summary>
55
+            /// 金额100元(完整)
56
+            /// </summary>
57
+            public string JE100YWZ { get; set; }
58
+
59
+            /// <summary>
60
+            /// 金额50元(完整)
61
+            /// </summary>
62
+            public string JE50YWZ { get; set; }
63
+
64
+            /// <summary>
65
+            /// 金额20元(完整)
66
+            /// </summary>
67
+            public string JE20YWZ { get; set; }
68
+
69
+            /// <summary>
70
+            /// 金额10元(完整)
71
+            /// </summary>
72
+            public string JE10YWZ { get; set; }
73
+
74
+            /// <summary>
75
+            /// 金额5元(完整)
76
+            /// </summary>
77
+            public string JE5YWZ { get; set; }
78
+
79
+            /// <summary>
80
+            /// 金额2元(完整)
81
+            /// </summary>
82
+            public string JE2YWZ { get; set; }
83
+
84
+            /// <summary>
85
+            /// 金额1元(完整)
86
+            /// </summary>
87
+            public string JE1YWZ { get; set; }
88
+
89
+            /// <summary>
90
+            /// 金额5角(完整)
91
+            /// </summary>
92
+            public string JE5JWZ { get; set; }
93
+
94
+            /// <summary>
95
+            /// 金额2角(完整)
96
+            /// </summary>
97
+            public string JE2JWZ { get; set; }
98
+
99
+            /// <summary>
100
+            /// 金额1角(完整)
101
+            /// </summary>
102
+            public string JE1JWZ { get; set; }
103
+
104
+            /// <summary>
105
+            /// 金额100元(损伤)
106
+            /// </summary>
107
+            public string JE100YSS { get; set; }
108
+
109
+            /// <summary>
110
+            /// 金额50元(损伤)
111
+            /// </summary>
112
+            public string JE50YSS { get; set; }
113
+
114
+            /// <summary>
115
+            /// 金额20元(损伤)
116
+            /// </summary>
117
+            public string JE20YSS { get; set; }
118
+
119
+            /// <summary>
120
+            /// 金额10元(损伤)
121
+            /// </summary>
122
+            public string JE10YSS { get; set; }
123
+
124
+            /// <summary>
125
+            /// 金额5元(损伤)
126
+            /// </summary>
127
+            public string JE5YSS { get; set; }
128
+
129
+            /// <summary>
130
+            /// 金额2元(损伤)
131
+            /// </summary>
132
+            public string JE2YSS { get; set; }
133
+
134
+            /// <summary>
135
+            /// 金额1元(损伤)
136
+            /// </summary>
137
+            public string JE1YSS { get; set; }
138
+
139
+            /// <summary>
140
+            /// 金额5角(损伤)
141
+            /// </summary>
142
+            public string JE5JSS { get; set; }
143
+
144
+            /// <summary>
145
+            /// 金额2角(损伤)
146
+            /// </summary>
147
+            public string JE2JSS { get; set; }
148
+
149
+            /// <summary>
150
+            /// 金额1角(损伤)
151
+            /// </summary>
152
+            public string JE1JSS { get; set; }
153
+
154
+            /// <summary>
155
+            /// 备注
156
+            /// </summary>
157
+            public string BZ { get; set; }
158
+
159
+            /// <summary>
160
+            /// 申请模式
161
+            /// </summary>
162
+            public string SQMS { get; set; }
163
+
164
+        }
165
+
166
+        #endregion
167
+
168
+        #region Input
169
+		/// <summary>
170
+        /// 参数清单
171
+        /// </summary>
172
+        public class Input : TFInput
173
+        {
174
+            /// <summary>
175
+            /// 查询条件 
176
+            /// 申请编号
177
+            /// </summary>
178
+            public string SQBH { get; set; }
179
+
180
+
181
+            /// <summary>                 
182
+            /// 定义业务逻辑              
183
+            /// </summary>                
184
+            /// <returns></returns>  
185
+            public override TFOutput Raise()
186
+            {
187
+                //拉取数据                                  
188
+                var output = new QueryCashApproveList_710003();
189
+                PageData.TradeAPIs.InitFd(MessageData);
190
+                PageData.TradeAPIs.CommSend(MessageData);
191
+				MessageData.Fd126_5 = MainCode;
192
+                MessageData.Fd16 = "9598";
193
+                MessageData.Fd123 = string.Format("1,710001,{0},",SQBH);
194
+
195
+                PageData.TradeAPIs.CallServer(MessageData);
196
+                if (MessageData.Fd12 != "0000")
197
+                {
198
+                    output.IsFailed = true;
199
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
200
+                }                
201
+                output.CXJGData = AnilyzeFileData<E_CXJG>(MessageData.FileData,
202
+                                            "申请类型|申请金额|申请事由|券别要求|金额100元(完整)|金额50元(完整)|金额20元(完整)|金额10元(完整)|金额5元(完整)|金额2元(完整)|金额1元(完整)|金额5角(完整)|金额2角(完整)|金额1角(完整)|金额100元(损伤)|金额50元(损伤)|金额20元(损伤)|金额10元(损伤)|金额5元(损伤)|金额2元(损伤)|金额1元(损伤)|金额5角(损伤)|金额2角(损伤)|金额1角(损伤)|备注|申请模式|",
203
+                                            x =>
204
+                                            {
205
+                                                return new E_CXJG
206
+                                                {
207
+                                                    SQLX = x["申请类型"],
208
+                                                    SQJE = x["申请金额"],
209
+                                                    SQSY = x["申请事由"],
210
+                                                    QBYQ = x["券别要求"],
211
+                                                    JE100YWZ = x["金额100元(完整)"],
212
+                                                    JE50YWZ = x["金额50元(完整)"],
213
+                                                    JE20YWZ = x["金额20元(完整)"],
214
+                                                    JE10YWZ = x["金额10元(完整)"],
215
+                                                    JE5YWZ = x["金额5元(完整)"],
216
+                                                    JE2YWZ = x["金额2元(完整)"],
217
+                                                    JE1YWZ = x["金额1元(完整)"],
218
+                                                    JE5JWZ = x["金额5角(完整)"],
219
+                                                    JE2JWZ = x["金额2角(完整)"],
220
+                                                    JE1JWZ = x["金额1角(完整)"],
221
+                                                    JE100YSS = x["金额100元(损伤)"],
222
+                                                    JE50YSS = x["金额50元(损伤)"],
223
+                                                    JE20YSS = x["金额20元(损伤)"],
224
+                                                    JE10YSS = x["金额10元(损伤)"],
225
+                                                    JE5YSS = x["金额5元(损伤)"],
226
+                                                    JE2YSS = x["金额2元(损伤)"],
227
+                                                    JE1YSS = x["金额1元(损伤)"],
228
+                                                    JE5JSS = x["金额5角(损伤)"],
229
+                                                    JE2JSS = x["金额2角(损伤)"],
230
+                                                    JE1JSS = x["金额1角(损伤)"],
231
+                                                    BZ = x["备注"],
232
+                                                    SQMS = x["申请模式"]
233
+                                                };
234
+                                            });
235
+                output.CXJG = MessageData.FileData;
236
+
237
+                return output;
238
+            }
239
+        }
240
+        #endregion
241
+    }
242
+}

+ 242
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashApproveList_710201.cs View File

@@ -0,0 +1,242 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 9598查询-710201-查询现金审批表
11
+    /// 批准申请、上缴待收入
12
+    /// </summary>
13
+    public class QueryCashApproveList_710201 : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 查询结果
18
+        /// 文件格式:申请类型|申请金额|申请事由|券别要求|100元金额(完整)|50元金额(完整)|20元金额(完整)|10元金额(完整)|5元金额(完整)|2元金额(完整)|1元金额(完整)|5角金额(完整)|2角金额(完整)|1角金额(完整)|100元金额(损伤)|50元金额(损伤)|20元金额(损伤)|10元金额(损伤)|5元金额(损伤)|2元金额(损伤)|1元金额(损伤)|5角金额(损伤)|2角金额(损伤)|1角金额(损伤)|备注|申请模式
19
+        /// </summary>
20
+        public string CXJG { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 查询结果
24
+        /// 文件格式:申请类型|申请金额|申请事由|券别要求|100元金额(完整)|50元金额(完整)|20元金额(完整)|10元金额(完整)|5元金额(完整)|2元金额(完整)|1元金额(完整)|5角金额(完整)|2角金额(完整)|1角金额(完整)|100元金额(损伤)|50元金额(损伤)|20元金额(损伤)|10元金额(损伤)|5元金额(损伤)|2元金额(损伤)|1元金额(损伤)|5角金额(损伤)|2角金额(损伤)|1角金额(损伤)|备注|申请模式
25
+        /// </summary>
26
+        public List<E_CXJG> CXJGData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 查询结果
30
+        /// 文件格式:申请类型|申请金额|申请事由|券别要求|100元金额(完整)|50元金额(完整)|20元金额(完整)|10元金额(完整)|5元金额(完整)|2元金额(完整)|1元金额(完整)|5角金额(完整)|2角金额(完整)|1角金额(完整)|100元金额(损伤)|50元金额(损伤)|20元金额(损伤)|10元金额(损伤)|5元金额(损伤)|2元金额(损伤)|1元金额(损伤)|5角金额(损伤)|2角金额(损伤)|1角金额(损伤)|备注|申请模式
31
+        /// </summary>
32
+        public class E_CXJG
33
+        {
34
+            /// <summary>
35
+            /// 申请类型
36
+            /// </summary>
37
+            public string SQLX { get; set; }
38
+
39
+            /// <summary>
40
+            /// 申请金额
41
+            /// </summary>
42
+            public string SQJE { get; set; }
43
+
44
+            /// <summary>
45
+            /// 申请事由
46
+            /// </summary>
47
+            public string SQSY { get; set; }
48
+
49
+            /// <summary>
50
+            /// 券别要求
51
+            /// </summary>
52
+            public string QBYQ { get; set; }
53
+
54
+            /// <summary>
55
+            /// 金额100元(完整)
56
+            /// </summary>
57
+            public string JE100YWZ { get; set; }
58
+
59
+            /// <summary>
60
+            /// 金额50元(完整)
61
+            /// </summary>
62
+            public string JE50YWZ { get; set; }
63
+
64
+            /// <summary>
65
+            /// 金额20元(完整)
66
+            /// </summary>
67
+            public string JE20YWZ { get; set; }
68
+
69
+            /// <summary>
70
+            /// 金额10元(完整)
71
+            /// </summary>
72
+            public string JE10YWZ { get; set; }
73
+
74
+            /// <summary>
75
+            /// 金额5元(完整)
76
+            /// </summary>
77
+            public string JE5YWZ { get; set; }
78
+
79
+            /// <summary>
80
+            /// 金额2元(完整)
81
+            /// </summary>
82
+            public string JE2YWZ { get; set; }
83
+
84
+            /// <summary>
85
+            /// 金额1元(完整)
86
+            /// </summary>
87
+            public string JE1YWZ { get; set; }
88
+
89
+            /// <summary>
90
+            /// 金额5角(完整)
91
+            /// </summary>
92
+            public string JE5JWZ { get; set; }
93
+
94
+            /// <summary>
95
+            /// 金额2角(完整)
96
+            /// </summary>
97
+            public string JE2JWZ { get; set; }
98
+
99
+            /// <summary>
100
+            /// 金额1角(完整)
101
+            /// </summary>
102
+            public string JE1JWZ { get; set; }
103
+
104
+            /// <summary>
105
+            /// 金额100元(损伤)
106
+            /// </summary>
107
+            public string JE100YSS { get; set; }
108
+
109
+            /// <summary>
110
+            /// 金额50元(损伤)
111
+            /// </summary>
112
+            public string JE50YSS { get; set; }
113
+
114
+            /// <summary>
115
+            /// 金额20元(损伤)
116
+            /// </summary>
117
+            public string JE20YSS { get; set; }
118
+
119
+            /// <summary>
120
+            /// 金额10元(损伤)
121
+            /// </summary>
122
+            public string JE10YSS { get; set; }
123
+
124
+            /// <summary>
125
+            /// 金额5元(损伤)
126
+            /// </summary>
127
+            public string JE5YSS { get; set; }
128
+
129
+            /// <summary>
130
+            /// 金额2元(损伤)
131
+            /// </summary>
132
+            public string JE2YSS { get; set; }
133
+
134
+            /// <summary>
135
+            /// 金额1元(损伤)
136
+            /// </summary>
137
+            public string JE1YSS { get; set; }
138
+
139
+            /// <summary>
140
+            /// 金额5角(损伤)
141
+            /// </summary>
142
+            public string JE5JSS { get; set; }
143
+
144
+            /// <summary>
145
+            /// 金额2角(损伤)
146
+            /// </summary>
147
+            public string JE2JSS { get; set; }
148
+
149
+            /// <summary>
150
+            /// 金额1角(损伤)
151
+            /// </summary>
152
+            public string JE1JSS { get; set; }
153
+
154
+            /// <summary>
155
+            /// 备注
156
+            /// </summary>
157
+            public string BZ { get; set; }
158
+
159
+            /// <summary>
160
+            /// 申请模式
161
+            /// </summary>
162
+            public string SQMS { get; set; }
163
+
164
+        }
165
+
166
+        #endregion
167
+
168
+        #region Input
169
+		/// <summary>
170
+        /// 参数清单
171
+        /// </summary>
172
+        public class Input : TFInput
173
+        {
174
+            /// <summary>
175
+            /// 查询条件 
176
+            /// 申请编号
177
+            /// </summary>
178
+            public string SQBH { get; set; }
179
+
180
+
181
+            /// <summary>                 
182
+            /// 定义业务逻辑              
183
+            /// </summary>                
184
+            /// <returns></returns>  
185
+            public override TFOutput Raise()
186
+            {
187
+                //拉取数据                                  
188
+                var output = new QueryCashApproveList_710201();
189
+                PageData.TradeAPIs.InitFd(MessageData);
190
+                PageData.TradeAPIs.CommSend(MessageData);
191
+				MessageData.Fd126_5 = MainCode;
192
+                MessageData.Fd16 = "9598";
193
+                MessageData.Fd123 = string.Format("1,710001,{0},",SQBH);
194
+
195
+                PageData.TradeAPIs.CallServer(MessageData);
196
+                if (MessageData.Fd12 != "0000")
197
+                {
198
+                    output.IsFailed = true;
199
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
200
+                }                
201
+                output.CXJGData = AnilyzeFileData<E_CXJG>(MessageData.FileData,
202
+                                            "申请类型|申请金额|申请事由|券别要求|金额100元(完整)|金额50元(完整)|金额20元(完整)|金额10元(完整)|金额5元(完整)|金额2元(完整)|金额1元(完整)|金额5角(完整)|金额2角(完整)|金额1角(完整)|金额100元(损伤)|金额50元(损伤)|金额20元(损伤)|金额10元(损伤)|金额5元(损伤)|金额2元(损伤)|金额1元(损伤)|金额5角(损伤)|金额2角(损伤)|金额1角(损伤)|备注|申请模式|",
203
+                                            x =>
204
+                                            {
205
+                                                return new E_CXJG
206
+                                                {
207
+                                                    SQLX = x["申请类型"],
208
+                                                    SQJE = x["申请金额"],
209
+                                                    SQSY = x["申请事由"],
210
+                                                    QBYQ = x["券别要求"],
211
+                                                    JE100YWZ = x["金额100元(完整)"],
212
+                                                    JE50YWZ = x["金额50元(完整)"],
213
+                                                    JE20YWZ = x["金额20元(完整)"],
214
+                                                    JE10YWZ = x["金额10元(完整)"],
215
+                                                    JE5YWZ = x["金额5元(完整)"],
216
+                                                    JE2YWZ = x["金额2元(完整)"],
217
+                                                    JE1YWZ = x["金额1元(完整)"],
218
+                                                    JE5JWZ = x["金额5角(完整)"],
219
+                                                    JE2JWZ = x["金额2角(完整)"],
220
+                                                    JE1JWZ = x["金额1角(完整)"],
221
+                                                    JE100YSS = x["金额100元(损伤)"],
222
+                                                    JE50YSS = x["金额50元(损伤)"],
223
+                                                    JE20YSS = x["金额20元(损伤)"],
224
+                                                    JE10YSS = x["金额10元(损伤)"],
225
+                                                    JE5YSS = x["金额5元(损伤)"],
226
+                                                    JE2YSS = x["金额2元(损伤)"],
227
+                                                    JE1YSS = x["金额1元(损伤)"],
228
+                                                    JE5JSS = x["金额5角(损伤)"],
229
+                                                    JE2JSS = x["金额2角(损伤)"],
230
+                                                    JE1JSS = x["金额1角(损伤)"],
231
+                                                    BZ = x["备注"],
232
+                                                    SQMS = x["申请模式"]
233
+                                                };
234
+                                            });
235
+                output.CXJG = MessageData.FileData;
236
+
237
+                return output;
238
+            }
239
+        }
240
+        #endregion
241
+    }
242
+}

+ 242
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashApproveList_710202.cs View File

@@ -0,0 +1,242 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 9598查询-710202-查询现金审批表
11
+    /// 批准申请、下发待领入
12
+    /// </summary>
13
+    public class QueryCashApproveList_710202 : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 查询结果
18
+        /// 文件格式:申请类型|申请金额|申请事由|券别要求|100元金额(完整)|50元金额(完整)|20元金额(完整)|10元金额(完整)|5元金额(完整)|2元金额(完整)|1元金额(完整)|5角金额(完整)|2角金额(完整)|1角金额(完整)|100元金额(损伤)|50元金额(损伤)|20元金额(损伤)|10元金额(损伤)|5元金额(损伤)|2元金额(损伤)|1元金额(损伤)|5角金额(损伤)|2角金额(损伤)|1角金额(损伤)|备注|申请模式
19
+        /// </summary>
20
+        public string CXJG { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 查询结果
24
+        /// 文件格式:申请类型|申请金额|申请事由|券别要求|100元金额(完整)|50元金额(完整)|20元金额(完整)|10元金额(完整)|5元金额(完整)|2元金额(完整)|1元金额(完整)|5角金额(完整)|2角金额(完整)|1角金额(完整)|100元金额(损伤)|50元金额(损伤)|20元金额(损伤)|10元金额(损伤)|5元金额(损伤)|2元金额(损伤)|1元金额(损伤)|5角金额(损伤)|2角金额(损伤)|1角金额(损伤)|备注|申请模式
25
+        /// </summary>
26
+        public List<E_CXJG> CXJGData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 查询结果
30
+        /// 文件格式:申请类型|申请金额|申请事由|券别要求|100元金额(完整)|50元金额(完整)|20元金额(完整)|10元金额(完整)|5元金额(完整)|2元金额(完整)|1元金额(完整)|5角金额(完整)|2角金额(完整)|1角金额(完整)|100元金额(损伤)|50元金额(损伤)|20元金额(损伤)|10元金额(损伤)|5元金额(损伤)|2元金额(损伤)|1元金额(损伤)|5角金额(损伤)|2角金额(损伤)|1角金额(损伤)|备注|申请模式
31
+        /// </summary>
32
+        public class E_CXJG
33
+        {
34
+            /// <summary>
35
+            /// 申请类型
36
+            /// </summary>
37
+            public string SQLX { get; set; }
38
+
39
+            /// <summary>
40
+            /// 申请金额
41
+            /// </summary>
42
+            public string SQJE { get; set; }
43
+
44
+            /// <summary>
45
+            /// 申请事由
46
+            /// </summary>
47
+            public string SQSY { get; set; }
48
+
49
+            /// <summary>
50
+            /// 券别要求
51
+            /// </summary>
52
+            public string QBYQ { get; set; }
53
+
54
+            /// <summary>
55
+            /// 金额100元(完整)
56
+            /// </summary>
57
+            public string JE100YWZ { get; set; }
58
+
59
+            /// <summary>
60
+            /// 金额50元(完整)
61
+            /// </summary>
62
+            public string JE50YWZ { get; set; }
63
+
64
+            /// <summary>
65
+            /// 金额20元(完整)
66
+            /// </summary>
67
+            public string JE20YWZ { get; set; }
68
+
69
+            /// <summary>
70
+            /// 金额10元(完整)
71
+            /// </summary>
72
+            public string JE10YWZ { get; set; }
73
+
74
+            /// <summary>
75
+            /// 金额5元(完整)
76
+            /// </summary>
77
+            public string JE5YWZ { get; set; }
78
+
79
+            /// <summary>
80
+            /// 金额2元(完整)
81
+            /// </summary>
82
+            public string JE2YWZ { get; set; }
83
+
84
+            /// <summary>
85
+            /// 金额1元(完整)
86
+            /// </summary>
87
+            public string JE1YWZ { get; set; }
88
+
89
+            /// <summary>
90
+            /// 金额5角(完整)
91
+            /// </summary>
92
+            public string JE5JWZ { get; set; }
93
+
94
+            /// <summary>
95
+            /// 金额2角(完整)
96
+            /// </summary>
97
+            public string JE2JWZ { get; set; }
98
+
99
+            /// <summary>
100
+            /// 金额1角(完整)
101
+            /// </summary>
102
+            public string JE1JWZ { get; set; }
103
+
104
+            /// <summary>
105
+            /// 金额100元(损伤)
106
+            /// </summary>
107
+            public string JE100YSS { get; set; }
108
+
109
+            /// <summary>
110
+            /// 金额50元(损伤)
111
+            /// </summary>
112
+            public string JE50YSS { get; set; }
113
+
114
+            /// <summary>
115
+            /// 金额20元(损伤)
116
+            /// </summary>
117
+            public string JE20YSS { get; set; }
118
+
119
+            /// <summary>
120
+            /// 金额10元(损伤)
121
+            /// </summary>
122
+            public string JE10YSS { get; set; }
123
+
124
+            /// <summary>
125
+            /// 金额5元(损伤)
126
+            /// </summary>
127
+            public string JE5YSS { get; set; }
128
+
129
+            /// <summary>
130
+            /// 金额2元(损伤)
131
+            /// </summary>
132
+            public string JE2YSS { get; set; }
133
+
134
+            /// <summary>
135
+            /// 金额1元(损伤)
136
+            /// </summary>
137
+            public string JE1YSS { get; set; }
138
+
139
+            /// <summary>
140
+            /// 金额5角(损伤)
141
+            /// </summary>
142
+            public string JE5JSS { get; set; }
143
+
144
+            /// <summary>
145
+            /// 金额2角(损伤)
146
+            /// </summary>
147
+            public string JE2JSS { get; set; }
148
+
149
+            /// <summary>
150
+            /// 金额1角(损伤)
151
+            /// </summary>
152
+            public string JE1JSS { get; set; }
153
+
154
+            /// <summary>
155
+            /// 备注
156
+            /// </summary>
157
+            public string BZ { get; set; }
158
+
159
+            /// <summary>
160
+            /// 申请模式
161
+            /// </summary>
162
+            public string SQMS { get; set; }
163
+
164
+        }
165
+
166
+        #endregion
167
+
168
+        #region Input
169
+		/// <summary>
170
+        /// 参数清单
171
+        /// </summary>
172
+        public class Input : TFInput
173
+        {
174
+            /// <summary>
175
+            /// 查询条件 
176
+            /// 申请编号
177
+            /// </summary>
178
+            public string SQBH { get; set; }
179
+
180
+
181
+            /// <summary>                 
182
+            /// 定义业务逻辑              
183
+            /// </summary>                
184
+            /// <returns></returns>  
185
+            public override TFOutput Raise()
186
+            {
187
+                //拉取数据                                  
188
+                var output = new QueryCashApproveList_710202();
189
+                PageData.TradeAPIs.InitFd(MessageData);
190
+                PageData.TradeAPIs.CommSend(MessageData);
191
+				MessageData.Fd126_5 = MainCode;
192
+                MessageData.Fd16 = "9598";
193
+                MessageData.Fd123 = string.Format("1,710001,{0},",SQBH);
194
+
195
+                PageData.TradeAPIs.CallServer(MessageData);
196
+                if (MessageData.Fd12 != "0000")
197
+                {
198
+                    output.IsFailed = true;
199
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
200
+                }                
201
+                output.CXJGData = AnilyzeFileData<E_CXJG>(MessageData.FileData,
202
+                                            "申请类型|申请金额|申请事由|券别要求|金额100元(完整)|金额50元(完整)|金额20元(完整)|金额10元(完整)|金额5元(完整)|金额2元(完整)|金额1元(完整)|金额5角(完整)|金额2角(完整)|金额1角(完整)|金额100元(损伤)|金额50元(损伤)|金额20元(损伤)|金额10元(损伤)|金额5元(损伤)|金额2元(损伤)|金额1元(损伤)|金额5角(损伤)|金额2角(损伤)|金额1角(损伤)|备注|申请模式|",
203
+                                            x =>
204
+                                            {
205
+                                                return new E_CXJG
206
+                                                {
207
+                                                    SQLX = x["申请类型"],
208
+                                                    SQJE = x["申请金额"],
209
+                                                    SQSY = x["申请事由"],
210
+                                                    QBYQ = x["券别要求"],
211
+                                                    JE100YWZ = x["金额100元(完整)"],
212
+                                                    JE50YWZ = x["金额50元(完整)"],
213
+                                                    JE20YWZ = x["金额20元(完整)"],
214
+                                                    JE10YWZ = x["金额10元(完整)"],
215
+                                                    JE5YWZ = x["金额5元(完整)"],
216
+                                                    JE2YWZ = x["金额2元(完整)"],
217
+                                                    JE1YWZ = x["金额1元(完整)"],
218
+                                                    JE5JWZ = x["金额5角(完整)"],
219
+                                                    JE2JWZ = x["金额2角(完整)"],
220
+                                                    JE1JWZ = x["金额1角(完整)"],
221
+                                                    JE100YSS = x["金额100元(损伤)"],
222
+                                                    JE50YSS = x["金额50元(损伤)"],
223
+                                                    JE20YSS = x["金额20元(损伤)"],
224
+                                                    JE10YSS = x["金额10元(损伤)"],
225
+                                                    JE5YSS = x["金额5元(损伤)"],
226
+                                                    JE2YSS = x["金额2元(损伤)"],
227
+                                                    JE1YSS = x["金额1元(损伤)"],
228
+                                                    JE5JSS = x["金额5角(损伤)"],
229
+                                                    JE2JSS = x["金额2角(损伤)"],
230
+                                                    JE1JSS = x["金额1角(损伤)"],
231
+                                                    BZ = x["备注"],
232
+                                                    SQMS = x["申请模式"]
233
+                                                };
234
+                                            });
235
+                output.CXJG = MessageData.FileData;
236
+
237
+                return output;
238
+            }
239
+        }
240
+        #endregion
241
+    }
242
+}

+ 260
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashIssuedIncomeRecords.cs View File

@@ -0,0 +1,260 @@
1
+using System;
2
+using System.Collections.Generic;
3
+using System.ComponentModel;
4
+using System.Linq;
5
+using System.Text;
6
+
7
+namespace TellerSystem.Contract.Function
8
+{
9
+    /// <summary>
10
+    /// 现金下发/收缴、领入/上缴申请或审批等记录查询
11
+    /// 根据相关要素,返回相应的该柜员已申请在途的现金信息列表
12
+    /// </summary>
13
+    public class QueryCashIssuedIncomeRecords : TFOutput
14
+    {
15
+        #region Output
16
+        /// <summary>
17
+        /// 已申请在途现金列表
18
+        /// 后台返回文件,内容包括:状态|申请编号|申请柜员|申请机构|申请模式|币种|申请时间|申请金额|申请原因|拒绝原因|一百元|五十元|二十元|十元|五元|二元|一元|五角|二角|一角|
19
+        /// </summary>
20
+        public string YSQZTXJLB { get; internal set; }
21
+
22
+        /// <summary>
23
+        /// 已申请在途现金列表
24
+        /// 后台返回文件,内容包括:状态|申请编号|申请柜员|申请机构|申请模式|币种|申请时间|申请金额|申请原因|拒绝原因|一百元|五十元|二十元|十元|五元|二元|一元|五角|二角|一角|
25
+        /// </summary>
26
+        public List<E_YSQZTXJLB> YSQZTXJLBData { get; internal set; }
27
+
28
+        /// <summary>
29
+        /// 已申请在途现金列表
30
+        /// 后台返回文件,内容包括:状态|申请编号|申请柜员|申请机构|申请模式|币种|申请时间|申请金额|申请原因|拒绝原因|一百元|五十元|二十元|十元|五元|二元|一元|五角|二角|一角|
31
+        /// </summary>
32
+        public class E_YSQZTXJLB
33
+        {
34
+            /// <summary>
35
+            /// 状态
36
+            /// </summary>
37
+            public string ZT { get; set; }
38
+
39
+            /// <summary>
40
+            /// 申请编号
41
+            /// </summary>
42
+            public string SQBH { get; set; }
43
+
44
+            /// <summary>
45
+            /// 申请柜员
46
+            /// </summary>
47
+            public string SQGY { get; set; }
48
+
49
+            /// <summary>
50
+            /// 申请机构
51
+            /// </summary>
52
+            public string SQJG { get; set; }
53
+
54
+            /// <summary>
55
+            /// 申请模式
56
+            /// </summary>
57
+            public string SQMS { get; set; }
58
+
59
+            /// <summary>
60
+            /// 币种
61
+            /// </summary>
62
+            public string BZ { get; set; }
63
+
64
+            /// <summary>
65
+            /// 申请时间
66
+            /// </summary>
67
+            public string SQSJ { get; set; }
68
+
69
+            /// <summary>
70
+            /// 申请金额
71
+            /// </summary>
72
+            public string SQJE { get; set; }
73
+
74
+            /// <summary>
75
+            /// 申请原因
76
+            /// </summary>
77
+            public string SQYY { get; set; }
78
+
79
+            /// <summary>
80
+            /// 拒绝原因
81
+            /// </summary>
82
+            public string JJYY { get; set; }
83
+
84
+            /// <summary>
85
+            /// 一百元
86
+            /// </summary>
87
+            public string YBY { get; set; }
88
+
89
+            /// <summary>
90
+            /// 五十元
91
+            /// </summary>
92
+            public string WSY { get; set; }
93
+
94
+            /// <summary>
95
+            /// 二十元
96
+            /// </summary>
97
+            public string ESY { get; set; }
98
+
99
+            /// <summary>
100
+            /// 十元
101
+            /// </summary>
102
+            public string SY { get; set; }
103
+
104
+            /// <summary>
105
+            /// 五元
106
+            /// </summary>
107
+            public string WY { get; set; }
108
+
109
+            /// <summary>
110
+            /// 二元
111
+            /// </summary>
112
+            public string EY { get; set; }
113
+
114
+            /// <summary>
115
+            /// 一元
116
+            /// </summary>
117
+            public string YY { get; set; }
118
+
119
+            /// <summary>
120
+            /// 五角
121
+            /// </summary>
122
+            public string WJ { get; set; }
123
+
124
+            /// <summary>
125
+            /// 二角
126
+            /// </summary>
127
+            public string EJ { get; set; }
128
+
129
+            /// <summary>
130
+            /// 一角
131
+            /// </summary>
132
+            public string YJ { get; set; }
133
+
134
+        }
135
+
136
+        #endregion
137
+
138
+        #region Input
139
+		/// <summary>
140
+        /// 参数清单
141
+        /// </summary>
142
+        public class Input : TFInput
143
+        {
144
+            /// <summary>
145
+            /// 申请日期(起始) 0440
146
+            /// (null) 
147
+            /// </summary>
148
+            public string SQRQQS { get; set; }
149
+
150
+            /// <summary>
151
+            /// 申请日期(结束) 0450
152
+            /// (null) 
153
+            /// </summary>
154
+            public string SQRQJS { get; set; }
155
+
156
+            /// <summary>
157
+            /// 申请模式 0670
158
+            /// 0申请模式 1预约模式 
159
+            /// </summary>
160
+            public string SQMS { get; set; }
161
+
162
+            /// <summary>
163
+            /// 状态 0680
164
+            /// 1提出申请 2收回申请 3批准申请 4拒绝申请 5下发待领入 6正式领入 7上缴待收入 8收缴 
165
+            /// </summary>
166
+            public string ZT { get; set; }
167
+
168
+            /// <summary>
169
+            /// 机构号 0910
170
+            /// (null) 
171
+            /// </summary>
172
+            public string JGH { get; set; }
173
+
174
+            /// <summary>
175
+            /// 柜员号 0920
176
+            /// (null) 
177
+            /// </summary>
178
+            public string GYH { get; set; }
179
+
180
+            /// <summary>
181
+            /// 标志位 0720
182
+            /// 审批机构查询该域不传值 申请机构查询该域传1 
183
+            /// </summary>
184
+            public string BZW { get; set; }
185
+
186
+            /// <summary>
187
+            /// 申请类型 0660
188
+            /// 0上缴申请 1下发申请 
189
+            /// </summary>
190
+            public string SQLX { get; set; }
191
+            /// <summary>
192
+            /// 交易类型 0690
193
+            /// 0下发
194
+            /// </summary>
195
+            public string TMPLX { get; set; }
196
+
197
+            /// <summary>                 
198
+            /// 定义业务逻辑              
199
+            /// </summary>                
200
+            /// <returns></returns>  
201
+            public override TFOutput Raise()
202
+            {
203
+                //拉取数据                                  
204
+                var output = new QueryCashIssuedIncomeRecords();
205
+                PageData.TradeAPIs.InitFd(MessageData);
206
+                PageData.TradeAPIs.CommSend(MessageData);
207
+				MessageData.Fd126_5 = MainCode;
208
+                MessageData.Fd16 = "CXCL";
209
+                MessageData.Fd44 = SQRQQS;
210
+                MessageData.Fd45 = SQRQJS;
211
+                MessageData.Fd67 = SQMS;
212
+                MessageData.Fd68 = ZT;
213
+                MessageData.Fd91 = JGH;
214
+                MessageData.Fd92 = GYH;
215
+                MessageData.Fd128 = "0001";
216
+                MessageData.Fd72 = BZW;
217
+                MessageData.Fd66 = SQLX;
218
+                MessageData.Fd69 = TMPLX;
219
+                PageData.TradeAPIs.CallServer(MessageData);
220
+                if (MessageData.Fd12 != "0000")
221
+                {
222
+                    output.IsFailed = true;
223
+                    output.FailureCause = PageData.TradeAPIs.GetError(MessageData);
224
+                }                
225
+                output.YSQZTXJLBData = AnilyzeFileData<E_YSQZTXJLB>(MessageData.FileData,
226
+                                            "状态|申请编号|申请柜员|申请机构|申请模式|币种|申请时间|申请金额|申请原因|拒绝原因|一百元|五十元|二十元|十元|五元|二元|一元|五角|二角|一角|",
227
+                                            x =>
228
+                                            {
229
+                                                return new E_YSQZTXJLB
230
+                                                {
231
+                                                    ZT = x["状态"],
232
+                                                    SQBH = x["申请编号"],
233
+                                                    SQGY = x["申请柜员"],
234
+                                                    SQJG = x["申请机构"],
235
+                                                    SQMS = x["申请模式"],
236
+                                                    BZ = x["币种"],
237
+                                                    SQSJ = x["申请时间"],
238
+                                                    SQJE = x["申请金额"],
239
+                                                    SQYY = x["申请原因"],
240
+                                                    JJYY = x["拒绝原因"],
241
+                                                    YBY = x["一百元"],
242
+                                                    WSY = x["五十元"],
243
+                                                    ESY = x["二十元"],
244
+                                                    SY = x["十元"],
245
+                                                    WY = x["五元"],
246
+                                                    EY = x["二元"],
247
+                                                    YY = x["一元"],
248
+                                                    WJ = x["五角"],
249
+                                                    EJ = x["二角"],
250
+                                                    YJ = x["一角"]
251
+                                                };
252
+                                            });
253
+                output.YSQZTXJLB = MessageData.FileData;
254
+
255
+                return output;
256
+            }
257
+        }
258
+        #endregion
259
+    }
260
+}

+ 0
- 0
ant-design-pro-vue3/src/views/front/develop/Constract/Function/Entity/QueryCashPayReceiveRecords.cs View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save