doomiwork 4.0.8 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/controller.js +12 -2
- package/index.js +1 -0
- package/package.json +1 -1
- package/utilities/excelutility.js +71 -2
- package/utilities/requestparser.js +1 -1
package/core/controller.js
CHANGED
|
@@ -54,6 +54,16 @@ class controller {
|
|
|
54
54
|
let excelResult = await exportUtility.recordset2ExcelFile(data,excelkey, this.beforeExportExcel)
|
|
55
55
|
return excelResult;
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* 导出数据到Excel的多个workseet中
|
|
59
|
+
* @param {*} data
|
|
60
|
+
* @param {*} excelkey
|
|
61
|
+
*/
|
|
62
|
+
async export2MutlisheetExcel(datainfo) {
|
|
63
|
+
if (!Array.isArray(datainfo) || datainfo.length == 0) return {successed:false};
|
|
64
|
+
let excelResult = await exportUtility.recordset2MutlisheetExcelFile(datainfo, this.beforeExportExcel)
|
|
65
|
+
return excelResult;
|
|
66
|
+
}
|
|
57
67
|
/**
|
|
58
68
|
* 写入Excel数据
|
|
59
69
|
* @param {*} data
|
|
@@ -217,11 +227,11 @@ class controller {
|
|
|
217
227
|
/*
|
|
218
228
|
* 获取详细记录的方法
|
|
219
229
|
*/
|
|
220
|
-
async getDataById(req, dataKey, sqlCommand) {
|
|
230
|
+
async getDataById(req, dataKey, sqlCommand,idValue) {
|
|
221
231
|
if (this.logger) this.logger.trace("准备获取dataconfig文件中对应的 %s 详细数据",dataKey)
|
|
222
232
|
const detailinfo = getDetailInfo(req, dataKey);
|
|
223
233
|
if (!detailinfo) return { successed: false, errcode: -10, errmsg: `缺失${dataKey}对应的详情配置` };
|
|
224
|
-
let beforeData = await this.beforeAccessDB(req, sqlCommand || this._daoModel.getByIdSql(), req.params.id, "detail", this);
|
|
234
|
+
let beforeData = await this.beforeAccessDB(req, sqlCommand || this._daoModel.getByIdSql(), idValue ||req.params.id, "detail", this);
|
|
225
235
|
////如果返回Null,则表示不加载数据了
|
|
226
236
|
if (beforeData.canceled===true) return { successed: false, errorcode: 1, errormessage: "操作已取消" };
|
|
227
237
|
/////处理SQL中的一些定义符
|
package/index.js
CHANGED
|
@@ -4,6 +4,7 @@ exports = module.exports = {
|
|
|
4
4
|
model: require('./core/database/daoBase'),
|
|
5
5
|
appsetting:require('./configuration/appsetting'),
|
|
6
6
|
actionresult:require('./core/actionresult'),
|
|
7
|
+
excelutility:require('./utilities/excelutility'),
|
|
7
8
|
tokenHelper:require('./utilities/tokenutility'),
|
|
8
9
|
constants:require('./core/enumconst'),
|
|
9
10
|
}
|
package/package.json
CHANGED
|
@@ -48,7 +48,7 @@ class ExcelUtility {
|
|
|
48
48
|
let _saveDir = path.dirname(fileName);
|
|
49
49
|
///创建本地文件夹
|
|
50
50
|
if (!this.mkdirsSync(_saveDir)) return { success: false, errorcode: 1, errmessage: 'create folder failed!' };
|
|
51
|
-
const buffer = xlsx.build([{ name:
|
|
51
|
+
const buffer = xlsx.build([{ name: sheetName, data: data }]);
|
|
52
52
|
return new Promise(reslove => {
|
|
53
53
|
return fs.writeFile(fileName, buffer, (err) => {
|
|
54
54
|
return reslove({ successed: !err, errmessage: err, fileName:randomFile })
|
|
@@ -65,7 +65,7 @@ class ExcelUtility {
|
|
|
65
65
|
let setting = exportConfig ? _instance.excelConfig[exportConfig] : null;
|
|
66
66
|
let dataBuffer = [], worksheetName = "sheet1", fieldKey = [], titleRow = [];
|
|
67
67
|
if (setting != null) {
|
|
68
|
-
worksheetName = setting.worksheet
|
|
68
|
+
worksheetName = setting.worksheet ?? "sheet1"; //== null ? "sheet1" : setting.worksheet;
|
|
69
69
|
////第一行导出标题行
|
|
70
70
|
setting.columns.forEach((field) => {
|
|
71
71
|
var dataOption = { type: 'title', config: exportConfig, title: field.title, field: field.name };
|
|
@@ -102,6 +102,75 @@ class ExcelUtility {
|
|
|
102
102
|
return result;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
+
///写Excel文件
|
|
106
|
+
async writeMutlisheetExcel(sheetinfo) {
|
|
107
|
+
//let sheetName = 'sheet1';
|
|
108
|
+
//if (workSheetName == null) sheetName = workSheetName;
|
|
109
|
+
let randomFile = uuid.v4() + '.xlsx';
|
|
110
|
+
let fileName = path.resolve(this.exportFolder, randomFile);
|
|
111
|
+
let _saveDir = path.dirname(fileName);
|
|
112
|
+
///创建本地文件夹
|
|
113
|
+
if (!this.mkdirsSync(_saveDir)) return { success: false, errorcode: 1, errmessage: 'create folder failed!' };
|
|
114
|
+
const buffer = xlsx.build(sheetinfo);// ([{ name: sheetName, data: data }]);
|
|
115
|
+
return new Promise(reslove => {
|
|
116
|
+
return fs.writeFile(fileName, buffer, (err) => {
|
|
117
|
+
return reslove({ successed: !err, errmessage: err, fileName: randomFile })
|
|
118
|
+
})
|
|
119
|
+
})
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 导出记录集到Excel的多个worksheet中
|
|
123
|
+
* @param {*} dataRow
|
|
124
|
+
* @param {*} exportConfig
|
|
125
|
+
* @param {*} readyDataFunc
|
|
126
|
+
* @returns
|
|
127
|
+
*/
|
|
128
|
+
async recordset2MutlisheetExcelFile(sheetsInfo, readyDataFunc) {
|
|
129
|
+
let _instance = this;
|
|
130
|
+
let sheetinfo = [];
|
|
131
|
+
for (const { data: dataRow, mapping: exportConfig } of sheetsInfo){
|
|
132
|
+
let setting = exportConfig ? _instance.excelConfig[exportConfig] : null;
|
|
133
|
+
let dataBuffer = [], worksheetName = "sheet1", fieldKey = [], titleRow = [];
|
|
134
|
+
if (setting != null) {
|
|
135
|
+
worksheetName = setting.worksheet == null ? "sheet1" : setting.worksheet;
|
|
136
|
+
////第一行导出标题行
|
|
137
|
+
setting.columns.forEach((field) => {
|
|
138
|
+
var dataOption = { type: 'title', config: exportConfig, title: field.title, field: field.name };
|
|
139
|
+
if (readyDataFunc != null && typeof (readyDataFunc) == "function")
|
|
140
|
+
dataOption = readyDataFunc(dataOption)
|
|
141
|
+
titleRow.push(dataOption.title);
|
|
142
|
+
fieldKey.push(dataOption.field);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
else if (dataRow.length > 0) {
|
|
146
|
+
var firstRow = dataRow[0];
|
|
147
|
+
Object.keys(firstRow).forEach(key => {
|
|
148
|
+
var dataOption = { type: 'title', config: null, title: key, field: key };
|
|
149
|
+
if (readyDataFunc != null && typeof (readyDataFunc) == "function")
|
|
150
|
+
dataOption = readyDataFunc(dataOption)
|
|
151
|
+
titleRow.push(dataOption.title);
|
|
152
|
+
fieldKey.push(dataOption.field);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
if (titleRow.length > 0) {
|
|
156
|
+
dataBuffer.push(titleRow);
|
|
157
|
+
dataRow.forEach((rowItem) => {
|
|
158
|
+
var dataRow = [];
|
|
159
|
+
fieldKey.forEach((field) => {
|
|
160
|
+
var dataOption = { type: 'data', config: exportConfig, field: field, data: rowItem, value: rowItem[field] };
|
|
161
|
+
if (readyDataFunc != null && typeof (readyDataFunc) == "function")
|
|
162
|
+
dataOption = readyDataFunc(dataOption)
|
|
163
|
+
dataRow.push(dataOption.value);
|
|
164
|
+
});
|
|
165
|
+
dataBuffer.push(dataRow);
|
|
166
|
+
})
|
|
167
|
+
}
|
|
168
|
+
sheetinfo.push({ name: worksheetName, data: dataBuffer });
|
|
169
|
+
}
|
|
170
|
+
const result = await _instance.writeMutlisheetExcel(sheetinfo);
|
|
171
|
+
return result;
|
|
172
|
+
}
|
|
173
|
+
|
|
105
174
|
/**
|
|
106
175
|
* 递归创建多级目录
|
|
107
176
|
* @param {*} dirpath
|
|
@@ -108,7 +108,7 @@ module.exports.getListInfo = (req, dataKey, cfgType = 0, dao) => {
|
|
|
108
108
|
// 防止页面数据传入非数字
|
|
109
109
|
if (!page || isNaN(page)) page = 1
|
|
110
110
|
///最大允许获取100条数据
|
|
111
|
-
pageSize = Math.min(pageSize,
|
|
111
|
+
pageSize = Math.min(pageSize, 10000);
|
|
112
112
|
///拼接排序的语句
|
|
113
113
|
if (order && sort && ORDER_STRING.includes(order.toLowerCase())) sort = sort + ' ' + order
|
|
114
114
|
//req.order =req.sort? utility.ifNull((req.body.order || req.query.order), ""):'';
|