owl-cli 6.72.0 → 6.75.0
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/defaultTemplate/api/src/handlers/exportEx.jsx +78 -0
- package/defaultTemplate/api/src/handlers/include/diff.jsx +1 -1
- package/defaultTemplate/api/src/handlers/include/util.jsx +61 -0
- package/defaultTemplate/api/src/handlers/list.jsx +1 -0
- package/defaultTemplate/api/src/tasks/exportExTask.jsx +217 -0
- package/package.json +1 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
//#import Util.js
|
|
2
|
+
//#import base64.js
|
|
3
|
+
//#import HttpUtil.js
|
|
4
|
+
//#import session.js
|
|
5
|
+
//#import $@projectCode:services/modelService.jsx
|
|
6
|
+
//#import @handlers/include/checklogin.jsx
|
|
7
|
+
//#import @handlers/include/util.jsx
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
function main(){
|
|
12
|
+
var env = checklogin();
|
|
13
|
+
if(!env){
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
var shopId = env.shopId;
|
|
17
|
+
var warehouseId = env.warehouseId;
|
|
18
|
+
var loginId = env.loginId;
|
|
19
|
+
var roleId = env.roleId;
|
|
20
|
+
var orgId = env.orgId;
|
|
21
|
+
var spec = @spec;
|
|
22
|
+
var tableId = 'owl_' + spec._t;
|
|
23
|
+
var m = shopId;
|
|
24
|
+
///////////////////////////////
|
|
25
|
+
|
|
26
|
+
//判断是subplatform,还是shop,还是platform
|
|
27
|
+
var params = JSON.parse($body);
|
|
28
|
+
var searchArgs = params.searchArgs;
|
|
29
|
+
var templateId = params.templateId;
|
|
30
|
+
|
|
31
|
+
var sort = params.sort;
|
|
32
|
+
var exportRange = params.exportRange;
|
|
33
|
+
var outputTarget = params.outputTarget;
|
|
34
|
+
var ids = params.ids;
|
|
35
|
+
|
|
36
|
+
var taskParams = {
|
|
37
|
+
searchArgs:searchArgs,
|
|
38
|
+
roleId:roleId,
|
|
39
|
+
tableId:tableId,
|
|
40
|
+
sort:sort,
|
|
41
|
+
orgId:orgId,
|
|
42
|
+
loginId:loginId,
|
|
43
|
+
exportRange:exportRange,
|
|
44
|
+
outputTarget:outputTarget,
|
|
45
|
+
templateId:templateId,
|
|
46
|
+
ids:ids
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
var now = new Date().getTime();
|
|
50
|
+
var taskInfo = {
|
|
51
|
+
submitDate: now,
|
|
52
|
+
appId:'@projectCode',
|
|
53
|
+
pageId:'tasks/exportExTask.jsx',
|
|
54
|
+
state:'notstart',
|
|
55
|
+
params:JSON.stringify(taskParams)
|
|
56
|
+
};
|
|
57
|
+
owl_task_infoService.add(taskInfo);
|
|
58
|
+
var taskInfoId = taskInfo.id;
|
|
59
|
+
JobsService.submitExportTask('@projectCode', 'tasks/exportExTask.jsx',{
|
|
60
|
+
taskParams:taskParams,
|
|
61
|
+
taskInfoId:"" + taskInfoId
|
|
62
|
+
},now);
|
|
63
|
+
|
|
64
|
+
var ret = {
|
|
65
|
+
state:'ok',
|
|
66
|
+
taskInfoId : taskInfoId
|
|
67
|
+
}
|
|
68
|
+
out.print(JSON.stringify(ret));
|
|
69
|
+
return;
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
main();
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
function buildSort(sort){
|
|
2
|
+
if(!sort){
|
|
3
|
+
return {};
|
|
4
|
+
}
|
|
5
|
+
var result = [];
|
|
6
|
+
for(var k in sort){
|
|
7
|
+
var direction = sort[k];
|
|
8
|
+
if(direction === 'ascend'){
|
|
9
|
+
var sortItem = {};
|
|
10
|
+
sortItem[k] = [{"order":"asc"}]
|
|
11
|
+
result.push(sortItem);
|
|
12
|
+
}
|
|
13
|
+
else if(direction === 'descend'){
|
|
14
|
+
var sortItem = {};
|
|
15
|
+
sortItem[k] = [{"order":"desc"}]
|
|
16
|
+
result.push(sortItem);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function getKeywordQuery(keyword){
|
|
23
|
+
if(keyword && trim(keyword).length>0){
|
|
24
|
+
return "\"" + trim(keyword) + "\""
|
|
25
|
+
}
|
|
26
|
+
else{
|
|
27
|
+
return "*"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function getFilters(searchArgs){
|
|
32
|
+
delete searchArgs.keyword;
|
|
33
|
+
var filters = [];
|
|
34
|
+
for(var k in searchArgs){
|
|
35
|
+
var v = searchArgs[k];
|
|
36
|
+
if(typeof(v)=='object' && Array.isArray(v)){
|
|
37
|
+
var range={}
|
|
38
|
+
range[k] = {
|
|
39
|
+
'gte':v[0],
|
|
40
|
+
'lte':v[1]
|
|
41
|
+
}
|
|
42
|
+
filters.push({range:range});
|
|
43
|
+
}
|
|
44
|
+
else if(typeof(v)=='object' && v.type==='terms'){
|
|
45
|
+
var terms = {};
|
|
46
|
+
if(v.values){
|
|
47
|
+
terms[k + ".keyword"] = v.values;
|
|
48
|
+
filters.push({terms:terms});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else{
|
|
52
|
+
var term = {};
|
|
53
|
+
if(v){
|
|
54
|
+
term[k+".keyword"] = trim('' + v)
|
|
55
|
+
filters.push({term:term})
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return filters;
|
|
61
|
+
}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
//#import Util.js
|
|
2
|
+
//#import base64.js
|
|
3
|
+
//#import HttpUtil.js
|
|
4
|
+
//#import session.js
|
|
5
|
+
//#import $@projectCode:services/modelService.jsx
|
|
6
|
+
//#import @handlers/include/checklogin.jsx
|
|
7
|
+
//#import @handlers/include/util.jsx
|
|
8
|
+
//#import $owl_dfiles:services/modelService.jsx
|
|
9
|
+
|
|
10
|
+
function getAllDocs(searchArgs,sort,tableId,roleId,orgId,loginId,permissions){
|
|
11
|
+
var keyword = searchArgs.keyword;
|
|
12
|
+
var effectiveSort = buildSort(sort);
|
|
13
|
+
var filters = getFilters(searchArgs);
|
|
14
|
+
var permissionFilter = getListPermissionFilter(tableId,roleId,orgId,loginId,permissions);
|
|
15
|
+
|
|
16
|
+
if(permissionFilter){
|
|
17
|
+
filters.push(permissionFilter);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
var from = 0;
|
|
21
|
+
var size = 9999;
|
|
22
|
+
var query = {
|
|
23
|
+
"query": {
|
|
24
|
+
"bool": {
|
|
25
|
+
"must": {
|
|
26
|
+
"query_string": {
|
|
27
|
+
"query":getKeywordQuery(keyword)
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"must_not": {
|
|
31
|
+
"match": {
|
|
32
|
+
"del": "T"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"filter": filters
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"from" : from, "size" : size,
|
|
39
|
+
sort:effectiveSort || [{owl_createTime:{order:"desc"}}]
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
var elasticSearchUrl = $.getEnv( "elasticSearchUrl" );
|
|
43
|
+
|
|
44
|
+
var headers = { "Content-Type": "application/json;charset=utf-8" };
|
|
45
|
+
var elasticSearchUser = $.getEnv("elasticSearchUser");
|
|
46
|
+
var elasticSearchPass = $.getEnv("elasticSearchPass");
|
|
47
|
+
if(elasticSearchUser && elasticSearchPass){
|
|
48
|
+
var auth =Base64.encode(elasticSearchUser + ":" + elasticSearchPass);
|
|
49
|
+
var basicAuth = "Basic " + auth;
|
|
50
|
+
headers["Authorization"] = basicAuth;
|
|
51
|
+
}
|
|
52
|
+
var searchUrl = elasticSearchUrl+"/@projectCode/_search";
|
|
53
|
+
var sndTxt = JSON.stringify(query);
|
|
54
|
+
$.log(sndTxt);
|
|
55
|
+
|
|
56
|
+
var s = HttpUtils.postRaw( searchUrl, sndTxt, headers);
|
|
57
|
+
var result = JSON.parse(s);
|
|
58
|
+
|
|
59
|
+
var hits = result.hits.hits;
|
|
60
|
+
|
|
61
|
+
if(hits){
|
|
62
|
+
var objs = hits.map(function(hit){return hit._source});
|
|
63
|
+
return objs;
|
|
64
|
+
}
|
|
65
|
+
return [];
|
|
66
|
+
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function getDocsByIds(ids){
|
|
70
|
+
var docs = @projectCodeService.getObjects(ids);
|
|
71
|
+
return docs;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function main(){
|
|
75
|
+
|
|
76
|
+
var template = owl_excel_templatesService.get(templateId);
|
|
77
|
+
if(!template || !template.template){
|
|
78
|
+
$.log("没有配置模版,templateId=" + templateId);
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
var templateId = taskParams.templateId;
|
|
83
|
+
|
|
84
|
+
var templateUrl = template.template[0].url;
|
|
85
|
+
|
|
86
|
+
var loginId = taskParams.loginId;
|
|
87
|
+
var roleId = taskParams.roleId;
|
|
88
|
+
var orgId = taskParams.orgId;
|
|
89
|
+
var spec = @spec;
|
|
90
|
+
var tableId = taskParams.tableId;
|
|
91
|
+
var permissions = getPermissions(roleId,tableId);
|
|
92
|
+
|
|
93
|
+
///////////////////////////////
|
|
94
|
+
|
|
95
|
+
//判断是subplatform,还是shop,还是platform
|
|
96
|
+
var searchArgs = taskParams.searchArgs;
|
|
97
|
+
|
|
98
|
+
var sort = taskParams.sort;
|
|
99
|
+
var exportRange = taskParams.exportRange;
|
|
100
|
+
var outputTarget = taskParams.outputTarget;
|
|
101
|
+
var docs = null;
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
if(exportRange === "all"){
|
|
105
|
+
docs = getAllDocs(searchArgs,sort,tableId,roleId,orgId,loginId,permissions);
|
|
106
|
+
}
|
|
107
|
+
else{
|
|
108
|
+
var ids = params.ids;
|
|
109
|
+
docs = getDocsByIds(ids);
|
|
110
|
+
}
|
|
111
|
+
if(template.exportType==='doc'){
|
|
112
|
+
if(outputTarget==='multifile'){
|
|
113
|
+
for(var i=0; i<docs.length; i++){
|
|
114
|
+
var exportDoc = docs[i];
|
|
115
|
+
var fileId = Excel.generateExcelFromTemplate( templateUrl, exportDoc );
|
|
116
|
+
if(template.toField){
|
|
117
|
+
var id=exportDoc.id;
|
|
118
|
+
var doc = @projectCodeService.get(id);
|
|
119
|
+
var url = FileService.getFullPath(fileId);
|
|
120
|
+
var docName =template.name + "_" +fileId;
|
|
121
|
+
|
|
122
|
+
doc[template.toField] = {
|
|
123
|
+
url: "" + url,
|
|
124
|
+
fileId: "" + fileId,
|
|
125
|
+
name:"" + docName
|
|
126
|
+
}
|
|
127
|
+
@projectCodeService.update(doc);
|
|
128
|
+
}
|
|
129
|
+
else{
|
|
130
|
+
var url = FileService.getFullPath(fileId);
|
|
131
|
+
|
|
132
|
+
var docName =template.name + "_" +fileId;
|
|
133
|
+
|
|
134
|
+
if(exportDoc.name){
|
|
135
|
+
docName = exportDoc.name + "_" +template.name;
|
|
136
|
+
}
|
|
137
|
+
else{
|
|
138
|
+
docName = exportDoc.id + "_" +template.name;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
var download = {
|
|
142
|
+
templateId:templateId,
|
|
143
|
+
templateName:template.name,
|
|
144
|
+
description:docName,
|
|
145
|
+
_orgId:orgId,
|
|
146
|
+
_orgIds:[orgId],
|
|
147
|
+
file:{
|
|
148
|
+
url: "" + url,
|
|
149
|
+
fileId: "" + fileId,
|
|
150
|
+
name:"" + docName
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
owl_dfilesService.add(download);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else if(outputTarget==='singlefile'){
|
|
159
|
+
//single file
|
|
160
|
+
var urls = [];
|
|
161
|
+
for(var i=0; i<docs.length; i++){
|
|
162
|
+
var exportDoc = docs[i];
|
|
163
|
+
var fileId = Excel.generateExcelFromTemplate( templateUrl, exportDoc );
|
|
164
|
+
var url = FileService.getFullPath(fileId);
|
|
165
|
+
urls.push(url);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
var fileId = $.zipUrls(urls,taskParams.password);
|
|
169
|
+
var fileUrl = FileService.getFullPath(fileId);
|
|
170
|
+
var docName =template.name + "_" +fileId;
|
|
171
|
+
var download = {
|
|
172
|
+
templateId:templateId,
|
|
173
|
+
templateName:template.name,
|
|
174
|
+
description:JSON.stringify(taskParams),
|
|
175
|
+
_orgId:orgId,
|
|
176
|
+
_orgIds:[orgId],
|
|
177
|
+
file:{
|
|
178
|
+
url: "" + fileUrl,
|
|
179
|
+
fileId: "" + fileId,
|
|
180
|
+
name:"" + docName
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
owl_dfilesService.add(download);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
else if(template.exportType==='list'){
|
|
188
|
+
var theDoc = {docs:docs}
|
|
189
|
+
var fileId = Excel.generateExcelFromTemplate( templateUrl, theDoc );
|
|
190
|
+
var fileUrl = FileService.getFullPath(fileId);
|
|
191
|
+
var docName =template.name + "_" +fileId;
|
|
192
|
+
var download = {
|
|
193
|
+
templateId:templateId,
|
|
194
|
+
templateName:template.name,
|
|
195
|
+
description:JSON.stringify(taskParams),
|
|
196
|
+
_orgId:orgId,
|
|
197
|
+
_orgIds:[orgId],
|
|
198
|
+
file:{
|
|
199
|
+
url: "" + fileUrl,
|
|
200
|
+
fileId: "" + fileId,
|
|
201
|
+
name:"" + docName
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
owl_dfilesService.add(download);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
var taskInfo = owl_task_infoService.get(taskInfoId);
|
|
208
|
+
taskInfo.state = "success";
|
|
209
|
+
taskInfo.percent = 100;
|
|
210
|
+
taskInfo.endDate = new Date().getTime();
|
|
211
|
+
taskInfo.state = "succeeded";
|
|
212
|
+
taskInfo.msg = "生成Excel文件成功";
|
|
213
|
+
owl_task_infoService.update(taskInfo);
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
}
|
|
217
|
+
main();
|