1 | |
2 |
|
3 |
|
4 | 'use strict'
|
5 |
|
6 | var sysConsts = require('../lib/scripts/sysConsts.json');
|
7 | var debug = require('debug')('aprac:DataService');
|
8 | var PagerInfo = require('../lib/scripts/dataSource/pagerInfo.js');
|
9 | var cacheManager = require('../lib/common/cacheManager.js');
|
10 | var configStore = require('../lib/scripts/configStore.js');
|
11 | var iPrinter = require('../lib/scripts/iPrinter.js');
|
12 | var request = require("request");
|
13 | var apracConfig = require("../index").ApracConfig;
|
14 | var signature = require('cookie-signature');
|
15 |
|
16 | class DataService {
|
17 | openGspx(req, newPageSrc) {
|
18 | return new Promise((resolve, reject) => {
|
19 | let url = `http://127.0.0.1:${apracConfig.port}${newPageSrc}`;
|
20 | let cookie = apracConfig.sessionIdKey + "=" +
|
21 | encodeURIComponent('s:' + signature.sign(req.sessionID, apracConfig.cookieSecret));
|
22 | let cookies = req.cookies;
|
23 | for (var name in cookies) {
|
24 | cookie += ("; " + name + "=" + cookies[name]);
|
25 | }
|
26 |
|
27 | request({
|
28 | url: url,
|
29 | method: "GET",
|
30 | headers: {
|
31 | "content-type": "text/html; charset=utf-8",
|
32 | "Cookie": cookie,
|
33 | "server-reqesut": "true"
|
34 | }
|
35 | }, (req, res, msg) => {
|
36 | resolve(msg);
|
37 | });
|
38 | })
|
39 | }
|
40 |
|
41 | _updatePagerInfoData(pagerInfo, pagerInfoData) {
|
42 |
|
43 | let dataSource = pagerInfo.getDataSource();
|
44 | if (dataSource) {
|
45 | pagerInfoData._oldQueryParams = dataSource.queryParams == null ? null : { ...dataSource.queryParams
|
46 | };
|
47 | pagerInfoData._oldItemCount = dataSource._itemCount == null ? null : dataSource._itemCount;
|
48 | pagerInfoData._isFirstLoad = false;
|
49 | }
|
50 | }
|
51 |
|
52 | _updatePagerInfo(pagerInfo, pagerInfoData) {
|
53 |
|
54 | let dataSource = pagerInfo.getDataSource();
|
55 | if (dataSource && pagerInfoData._isFirstLoad === false) {
|
56 | dataSource.queryParams = pagerInfoData._oldQueryParams == null ? null : { ...pagerInfoData._oldQueryParams
|
57 | };
|
58 | dataSource._itemCount = pagerInfoData._oldItemCount == null ? null : pagerInfoData._oldItemCount;
|
59 | }
|
60 | }
|
61 |
|
62 | getPagerInfoData(session, pagerId) {
|
63 | var key = sysConsts.SessionPrefixPagerInfo + pagerId;
|
64 |
|
65 |
|
66 |
|
67 | var pagerInfoData = session[key];
|
68 |
|
69 | if (!pagerInfoData) {
|
70 | throw new Error("会话超时,查询失败。请刷新该页,或重新登录!");
|
71 | }
|
72 | return pagerInfoData;
|
73 | }
|
74 |
|
75 | async getPagerInfo(session, pagerId) {
|
76 | var pagerInfoData = this.getPagerInfoData(session, pagerId);
|
77 | var pagerInfo = cacheManager.get(pagerInfoData._cacheId);
|
78 | if (!pagerInfo) {
|
79 | await this.openGspx(session.req, pagerInfoData._src);
|
80 | pagerInfo = cacheManager.get(pagerInfoData._cacheId);
|
81 | if (!pagerInfo) {
|
82 | throw new Error("缓存失效,查询失败。请刷新该页,或重新登录!");
|
83 | } else {
|
84 | this._updatePagerInfo(pagerInfo, pagerInfoData);
|
85 | }
|
86 | } else {
|
87 | this._updatePagerInfo(pagerInfo, pagerInfoData);
|
88 | }
|
89 |
|
90 | return pagerInfo;
|
91 | }
|
92 |
|
93 | async GetPagerData(pagerId, queryParams, orders, filter, first, count) {
|
94 | let pagerInfo = await this.getPagerInfo(this.req.session, pagerId);
|
95 | let result = pagerInfo.getPagerData(queryParams, orders, filter, first, count, null);
|
96 | let pagerInfoData = this.getPagerInfoData(this.req.session, pagerId);
|
97 | this._updatePagerInfoData(pagerInfo, pagerInfoData);
|
98 | return result;
|
99 | }
|
100 |
|
101 | async GetPagerSummary(pagerId) {
|
102 | var pagerInfo = await this.getPagerInfo(this.req.session, pagerId);
|
103 | let result = pagerInfo.getPagerSummary();
|
104 | let pagerInfoData = this.getPagerInfoData(this.req.session, pagerId);
|
105 | this._updatePagerInfoData(pagerInfo, pagerInfoData);
|
106 | return result;
|
107 | }
|
108 |
|
109 | RemoveSessionData(controlIds) {
|
110 | var session = this.req.session;
|
111 | if (session == null || controlIds == null) return 0;
|
112 |
|
113 | controlIds.forEach(function(controlId, i, a) {
|
114 | var data = session[controlId];
|
115 | if (data != null) {
|
116 | delete session[controlId];
|
117 | return;
|
118 | }
|
119 |
|
120 | var key = sysConsts.SessionPrefixPagerInfo + controlId;
|
121 | var pagerInfoData = session[key];
|
122 | if (pagerInfoData != null) {
|
123 | if (pagerInfoData._createdCount > 1) {
|
124 | pagerInfoData._createdCount--;
|
125 | session[key] = pagerInfoData;
|
126 | return;
|
127 | }
|
128 | var pagerInfo = cacheManager.remove(pagerInfoData._cacheId);
|
129 | pagerInfo.getDataSource().invalidateCache();
|
130 | pagerInfo = null;
|
131 | } else {
|
132 | debug(`${session.id} PagerInfo已丢失:${key}`);
|
133 | }
|
134 | delete session[key];
|
135 | });
|
136 |
|
137 | return 1;
|
138 | }
|
139 |
|
140 | SavePanelConfig(panelId, data) {
|
141 | return configStore.saveData(this.req, panelId, data, "panel");
|
142 | }
|
143 |
|
144 | SaveGridConfig(gridId, data) {
|
145 | return configStore.saveData(this.req, gridId, data, "grid");
|
146 | }
|
147 |
|
148 | SaveFormConfig(formId, data) {
|
149 | return configStore.saveData(this.req, formId, data, "form");
|
150 | }
|
151 |
|
152 | GetCustomConfig(key) {
|
153 | return configStore.loadData(this.req, key, "custom");
|
154 | }
|
155 |
|
156 | SaveCustomConfig(key, data) {
|
157 | return configStore.saveData(this.req, key, data, "custom");
|
158 | }
|
159 |
|
160 |
|
161 | GetCloudPrinterInfo() {
|
162 | if (!iPrinter.cloudPrinterHandler) return null;
|
163 | iPrinter.cloudPrinterHandler.req = this.req;
|
164 | return iPrinter.cloudPrinterHandler.GetCloudPrinterInfo();
|
165 | }
|
166 |
|
167 |
|
168 | GetPrintClients() {
|
169 | if (!iPrinter.cloudPrinterHandler) return null;
|
170 | iPrinter.cloudPrinterHandler.req = this.req;
|
171 | return iPrinter.cloudPrinterHandler.GetPrintClients();
|
172 | }
|
173 |
|
174 |
|
175 | GetPrintStyles(reportName, styleFomatType, productType) {
|
176 | if (!iPrinter.cloudPrinterHandler) return null;
|
177 | var info = {
|
178 | ReportName: reportName
|
179 | };
|
180 | iPrinter.cloudPrinterHandler.req = this.req;
|
181 | return iPrinter.cloudPrinterHandler.GetPrintStyles(info, styleFomatType, productType);
|
182 | }
|
183 |
|
184 |
|
185 | GetAccessCode() {
|
186 | if (!iPrinter.cloudPrinterHandler) return null;
|
187 | iPrinter.cloudPrinterHandler.req = this.req;
|
188 | return iPrinter.cloudPrinterHandler.GetAccessCode();
|
189 | }
|
190 | }
|
191 | exports.WebMethod = DataService; |
\ | No newline at end of file |