owl-cli 6.179.0 → 6.181.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.
@@ -27,80 +27,19 @@ var spec = @spec;
27
27
  //判断是subplatform,还是shop,还是platform
28
28
  var params = JSON.parse($body);
29
29
  var searchArgs = params.searchArgs;
30
- var keyword = searchArgs.keyword;
31
- var pageSize = params.pageSize;
32
- var exportKey = params.exportKey;
33
- env.exportKey = exportKey;
34
-
35
- function getKeywordQuery(){
36
- if(keyword && trim(keyword).length>0){
37
- return "\"" + trim(keyword) + "\""
38
- }
39
- else{
40
- return "*"
41
- }
42
- }
43
-
44
- function getFilters(){
45
- delete searchArgs.keyword;
46
- var filters = [];
47
- for(var k in searchArgs){
48
- var v = searchArgs[k];
49
- if(typeof(v)=='object' && Array.isArray(v)){
50
- var range={}
51
- range[k] = {
52
- 'gte':v[0],
53
- 'lte':v[1]
54
- }
55
- filters.push({range:range});
56
- }
57
- else{
58
- var term = {};
59
- term[k+".keyword"] = trim('' + v)
60
- filters.push({term:term})
61
- }
62
-
63
- }
64
- return filters;
65
- }
66
-
67
- var filters = getFilters();
68
-
69
- if(m!=='0'){
70
- filters = filters.concat([
71
- {"term": { "_m.keyword": m }},
72
- {"term":{"_t":spec["_t"]}}
73
- ]);
74
- }
75
- else{
76
- filters = filters.concat([
77
- {"term":{"_t":spec["_t"]}}
78
- ]);
79
- }
30
+ var searchArgs = params.searchArgs;
31
+ var templateId = params.templateId;
80
32
 
33
+ var sort = params.sort;
34
+ var exportRange = params.exportRange;
35
+ var outputTarget = params.outputTarget;
36
+ var ids = params.ids;
37
+ var key = params.key;
38
+ env.params = params;
81
39
 
82
- var query = {
83
- "query": {
84
- "bool": {
85
- "must": {
86
- "query_string": {
87
- "query":getKeywordQuery()
88
- }
89
- },
90
- "must_not": {
91
- "match": {
92
- "del": "T"
93
- }
94
- },
95
- "filter": filters
96
- }
97
- },
98
- "from" : 0, "size" : 1,
99
- sort:[{owl_createTime:{order:"desc"}}]
100
- }
101
40
 
102
41
 
103
- var taskInfoId = @projectCodeService.addExportTask(query,env);
42
+ var taskInfoId = @projectCodeService.addExportTask(null,env);
104
43
 
105
44
  var ret = {
106
45
  state:'ok',
@@ -34,7 +34,7 @@ function checklogin() {
34
34
  now: new Date().getTime(),
35
35
  loginUserId: 'internal',
36
36
  loginId: 'internal',
37
- loginUser:user,
37
+ // loginUser:user,
38
38
  shopId: m,
39
39
  warehouseId: "",
40
40
  roleId: 'internal',
@@ -61,7 +61,7 @@ function checklogin() {
61
61
  now: new Date().getTime(),
62
62
  loginUserId: loginUserId,
63
63
  loginId: loginUserId,
64
- loginUser:loginUser,
64
+ // loginUser:loginUser,
65
65
  shopId: m,
66
66
  warehouseId: "",
67
67
  roleId: roleId,
@@ -8,7 +8,7 @@
8
8
  //#import kafkautil.js
9
9
  //#import @services/dblayer.jsx
10
10
  //#import @handlers/include/diff.jsx
11
- //#import $owl_change_logs:services/modelService.jsx
11
+ //#import $owl_task_info:services/modelService.jsx
12
12
 
13
13
  function trim(s){
14
14
  if(s){
@@ -790,33 +790,35 @@ var @projectCodeService = (function (pigeon) {
790
790
  addExportTask: function (query, env) {
791
791
  var now = new Date().getTime()
792
792
  var taskInfo = {
793
- loginUser: f.getEnvValue('$loginUser', env),
793
+ submitUserId:env.loginId,
794
794
  submitTime: now,
795
- startTime: 0,
796
- processState: 'processing',
797
- percent: 0,
798
- _v: 0,
795
+ beginTime: null,
796
+ processState: 'notstart',
797
+ appId:"owl_" + spec['_t'],
798
+ params:JSON.stringify(env.params),
799
+ taskId:null
799
800
  }
800
801
  //这个key如果不多加一个export,会把原有的单据数据覆盖
801
- var taskInfoId = objPrefix + '_export_' + pigeon.getId()
802
+ // var taskInfoId = objPrefix + '_export_' + pigeon.getId()
802
803
  var taskId = JobsService.submitExportTask('@projectCode', 'tasks/export.jsx', {
803
804
  query: query,
804
- env: env,
805
- taskInfoId: taskInfoId,
805
+ env: env
806
806
  }, now)
807
807
  taskInfo.taskId = '' + taskId
808
- taskInfo.id = taskInfoId
809
- var key = pigeon.getRKey(taskInfo.submitTime, 13)
810
- pigeon.addToList(f.getExportRunningList(), key, taskInfoId)
811
- pigeon.saveObject(taskInfoId, taskInfo)
808
+ // taskInfo.id = taskInfoId
809
+ // var key = pigeon.getRKey(taskInfo.submitTime, 13)
810
+ // pigeon.addToList(f.getExportRunningList(), key, taskInfoId)
811
+ // pigeon.saveObject(taskInfoId, taskInfo)
812
+ owl_task_infoService.add(taskInfo);
812
813
 
813
- return taskInfoId
814
+ return taskInfo.id
814
815
  },
815
816
 
816
817
  addDocExportTask: function (docId, env) {
817
818
  var now = new Date().getTime()
818
819
  var taskInfo = {
819
- loginUser: f.getEnvValue('$loginUser', env),
820
+ // loginUser: f.getEnvValue('$loginUser', env),
821
+ loginUserId:env.loginUserId,
820
822
  submitTime: now,
821
823
  startTime: 0,
822
824
  processState: 'processing',
@@ -843,7 +845,8 @@ var @projectCodeService = (function (pigeon) {
843
845
  addZipExportTask : function(env){
844
846
  var now = new Date().getTime()
845
847
  var taskInfo = {
846
- loginUser: f.getEnvValue('$loginUser', env),
848
+ // loginUser: f.getEnvValue('$loginUser', env),
849
+ loginUserId:env.loginUserId,
847
850
  submitTime: now,
848
851
  startTime: 0,
849
852
  processState: 'processing',
@@ -866,15 +869,11 @@ var @projectCodeService = (function (pigeon) {
866
869
  },
867
870
 
868
871
  getExportTaskInfo: function (taskInfoId) {
869
- return pigeon.getObject(taskInfoId)
872
+ return owl_task_infoService.get(taskInfoId);
870
873
  },
871
874
 
872
875
  updateExportTaskInfo: function (taskInfoId, taskInfo) {
873
- var oInfo = f.getExportTaskInfo(taskInfoId)
874
- if (oInfo._v == taskInfo._v) {
875
- taskInfo._v += 1
876
- pigeon.saveObject(taskInfoId, taskInfo)
877
- }
876
+ return owl_task_infoService.update(taskInfo);
878
877
  },
879
878
 
880
879
 
@@ -1,358 +1,154 @@
1
+ //#import Util.js
2
+ //#import @handlers/include/checklogin.jsx
1
3
  //#import $@projectCode:services/modelService.jsx
2
4
  //#import excel.js
5
+ //#import DateUtil.js
3
6
 
4
7
 
5
8
  var formSpecs = @formSpecs;
9
+ var spec = @spec;
6
10
 
7
- function getFieldByKey(fullKey){
8
- var keys = fullKey.split(".");
9
- var curField = formSpecs;
10
- for(var i=0; i<keys.length; i++){
11
- if(curField._ft=='field'){
12
- if(curField.key == fullKey){
13
- return curField;
14
- }
15
- else{
16
- return null;
17
- }
18
- }
19
- else{
20
- var key = keys[i];
21
- var fields = curField.fields;
22
- curField == null;
23
- for(var j=0; j<fields.length; j++){
24
- var f = fields[j];
25
- if(f.origKey == key){
26
- curField = f;
27
- break;
28
- }
29
- }
30
- if(curField==null){
31
- return null;
32
- }
33
- }
34
- }
35
- return curField;
36
- }
37
-
38
-
39
- function normalizeValue(value,spec){
40
- if(value == null){
41
- return null;
42
- }
43
- switch (spec.fieldType){
44
- case 'string':
45
- return 's'+value;
46
- case 'number':
47
- return 'n' + value;
48
- case 'date':
49
- try{
50
- var d = null;
51
- if(isNaN(value)){
52
- d = new Date(value).getTime();
53
- }
54
- else{
55
- d = new Date(Number(value)).getTime();
56
- }
57
- return 'd'+ d;
58
- }
59
- catch(e){
60
- return null;
61
- }
62
- case 'choice':
63
- for(var i=0; i<spec.options.length; i++){
64
- var option = spec.options[i];
65
- if(option[0]==value){
66
- return 's'+option[1];
67
- }
68
- }
69
- return 's'+value;
70
- case 'image':
71
- var final = "";
72
- for(var i=0; i<value.length; i++){
73
- var f = value[i];
74
- final = final + f.url + "\n";
75
- }
76
- return 's' + final;
77
- default:
78
- return "s"+value;
79
- }
80
- }
81
-
82
- function tranverseFields(formSpec, callback, ctx){
83
- formSpec.fields.forEach( function(field){
84
- if (field[ '_ft' ] == 'field') {
85
- callback( field, ctx );
86
- }
87
- else if (field[ '_ft' ] == 'subform') {
88
- var context = { parentField: field }
89
- tranverseFields( field, callback, context );
90
- }
91
- else if (field[ '_ft' ] == 'array') {
92
- var context = { parentField: field }
93
- tranverseFields( field, callback, context )
94
- }
95
- } );
96
- }
11
+ main(@projectCodeService, spec);
97
12
 
98
- function getMainAndSubFields(exConfig){
99
- var mainFields = [];
100
- var subFields = [];
101
- if (exConfig.fields == "*") {
102
- tranverseFields(formSpecs,function(field,ctx){
103
- if (ctx.parentField && ctx.parentField._ft == 'array') {
104
- //nothing
105
- }
106
- else {
107
- mainFields.push( field );
108
- }
109
- },{})
110
- }
111
- else{
112
- for(var i=0; i<exConfig.fields.length; i++){
113
- var fieldKey = exConfig.fields[i];
114
- var field = getFieldByKey(fieldKey);
115
- if(field){
116
- mainFields.push(field);
117
- }
118
- }
119
- }
120
-
121
- if(exConfig && exConfig.items && exConfig.items.name){
122
- if(exConfig.items.itemFields=='*'){
123
- //找到items.name对应的field
124
- var f = getFieldByKey(exConfig.items.name);
125
- f.fields.forEach(function(spec){
126
- if(spec._ft=='field'){
127
- subFields.push(spec);
128
- }
129
- });
130
- }
131
- else{
132
- for(var i=0; i<exConfig.items.itemFields.length; i++){
133
- var itemField = exConfig.items.itemFields[i];
134
- var fieldKey = "";
135
- if(itemField.indexOf("$parent.")==0){
136
- fieldKey = itemField.substring(8);
137
- var field = getFieldByKey(fieldKey);
138
- if(field){
139
- field.isItemField = false;
140
- subFields.push(field);
141
- }
142
- else{
143
- $.log("panic!!!!-------------------------++++++++++++++" + fieldKey);
144
- }
145
-
146
- }
147
- else{
148
- fieldKey = exConfig.items.name + "." + itemField;
149
- var field = getFieldByKey(fieldKey);
150
- if(field){
151
- field.isItemField = true;
152
- subFields.push(field);
153
- }
154
- else{
155
- $.log("panic!!!!-------------------------++++++++++++++" + fieldKey);
156
- }
157
-
158
- }
159
-
160
-
161
- }
162
- }
163
- }
164
- return [mainFields,subFields];
165
- }
166
13
 
167
14
 
15
+ function main(modelService,spec){
168
16
 
169
- (function(){
170
- var spec = @spec;
171
- var q = JSON.parse(query);
172
17
  var ctx = JSON.parse(env);
173
- var exportKey = ctx.exportKey;
174
-
175
- var elasticSearchUrl = $.getEnv( "elasticSearchUrl" );
176
-
177
- var headers = { "Content-Type": "application/json;charset=utf-8" };
178
- var elasticSearchUser = $.getEnv( "elasticSearchUser" );
179
- var elasticSearchPass = $.getEnv( "elasticSearchPass" );
180
- if (elasticSearchUser && elasticSearchPass) {
181
- var auth = Base64.encode( elasticSearchUser + ":" + elasticSearchPass );
182
- var basicAuth = "Basic " + auth;
183
- headers[ "Authorization" ] = basicAuth;
184
- }
185
- var searchUrl = elasticSearchUrl + "/is1erp/_doc/_search";
186
-
187
- var sndTxt = JSON.stringify( q );
188
- var s = HttpUtils.postRaw( searchUrl, sndTxt, headers );
189
- var result = JSON.parse( s );
18
+ var params = ctx.params;
19
+ var key = params.key;
190
20
 
21
+ /******************************/
22
+ var ret = getRows(modelService, spec);
23
+ var taskInfo = modelService.getExportTaskInfo(taskInfoId);
24
+ taskInfo.processState = "processing";
25
+ taskInfo.percent = 20;
26
+ taskInfo.lastTime = new Date().getTime();
27
+ taskInfo.msg = "获取数据记录完成, 数据条数:" + ret.total;
28
+ modelService.updateExportTaskInfo(taskInfoId, taskInfo);
29
+ /*****************************/
191
30
 
192
- var elasticSearchUrl = $.getEnv( "elasticSearchUrl" );
193
31
 
194
- var headers = { "Content-Type": "application/json;charset=utf-8" };
195
- var elasticSearchUser = $.getEnv( "elasticSearchUser" );
196
- var elasticSearchPass = $.getEnv( "elasticSearchPass" );
197
- if (elasticSearchUser && elasticSearchPass) {
198
- var auth = Base64.encode( elasticSearchUser + ":" + elasticSearchPass );
199
- var basicAuth = "Basic " + auth;
200
- headers[ "Authorization" ] = basicAuth;
32
+ /****************************************/
33
+ var exportConfig = getExportConfig(spec,key);
34
+ var titleList = exportConfig.cols;
35
+ if(!titleList){
36
+ return;
201
37
  }
202
- var searchUrl = elasticSearchUrl + "/@projectCode/_search";
203
-
204
- var sndTxt = JSON.stringify( q );
205
- $.log("export.jsx")
206
- $.log(sndTxt)
207
-
208
- var s = HttpUtils.postRaw( searchUrl, sndTxt, headers );
209
- $.log(s);
210
- var result = JSON.parse( s );
211
- var total = result.hits.total.value;
212
-
213
- var taskInfo = @projectCodeService.getExportTaskInfo( taskInfoId );
214
- taskInfo.total = total;
215
- taskInfo.lastTime = new Date().getTime();
38
+ var recordList = ret.rows.map(function(row){
39
+ var record = {};
40
+ titleList.forEach(function(title){
41
+ var field = title.field;
42
+ var value = modelService.getValue(field,row);
43
+ record[field] = value;
44
+ });
45
+ return record;
46
+ });
47
+
48
+ var taskInfo = modelService.getExportTaskInfo(taskInfoId);
216
49
  taskInfo.processState = "processing";
217
- taskInfo.msg = "获取导出总数成功......";
218
- taskInfo.percent = "20";
50
+ taskInfo.percent = 40;
51
+ taskInfo.lastTime = new Date().getTime();
52
+ taskInfo.msg = "准备完数据,正在生成Excel文件......";
53
+ modelService.updateExportTaskInfo(taskInfoId, taskInfo);
54
+ /****************************************/
219
55
 
220
- @projectCodeService.updateExportTaskInfo( taskInfoId, taskInfo );
221
56
 
222
- q.size = total;
57
+ /****************************************/
58
+ var export_fileName = DateUtil.getLongDate(new Date().getTime());
223
59
 
224
- var sndTxt = JSON.stringify( q );
225
- $.log('second times=============' + sndTxt);
226
- var s = HttpUtils.postRaw( searchUrl, sndTxt, headers );
227
- $.log('second times=============' + s);
228
- var result = JSON.parse( s );
60
+ var fileUrl = Excel.createExcelList(export_fileName, titleList, recordList);
229
61
 
230
- var hits = result.hits.hits;
231
- var objs = hits.map( function (hit){
232
- return hit._source
233
- } );
62
+ var taskInfo = modelService.getExportTaskInfo(taskInfoId);
63
+ taskInfo.processState = "succeeded";
64
+ taskInfo.percent = 100;
65
+ taskInfo.lastTime = new Date().getTime();
66
+ taskInfo.msg = "导出文件成功,共导出" + ret.total + "条数据";
67
+ taskInfo.fileUrl = fileUrl;
68
+ modelService.updateExportTaskInfo(taskInfoId, taskInfo);
69
+ /********************************************/
70
+ }
234
71
 
235
- var meta = spec[ "#meta" ];
72
+ function getExportConfig(spec, key) {
73
+ var meta = spec['#meta'];
74
+ var exportConfigs = meta.export;
75
+ var effectiveExportConfig = null;
76
+ exportConfigs.forEach(function(exportConfig){
77
+ if(exportConfig.key === key){
78
+ effectiveExportConfig = exportConfig;
79
+ }
80
+ });
81
+ return effectiveExportConfig;
82
+ }
236
83
 
237
- var rows = [];
238
- var row = [];
84
+ function getRows(modelService, spec) {
239
85
 
240
- var groupings = [];
86
+ var meta = spec['#meta'];
87
+ var isPublic = meta && meta.isPublic;
88
+ var tableId = 'owl_' + spec._t;
89
+ var ctx = JSON.parse(env);
90
+ var params = ctx.params;
91
+
92
+ var loginId = ctx.loginId;
93
+ var roleId = params.rroleId || ctx.roleId;
94
+ var orgId = params.rorgId || ctx.orgId;
95
+
96
+ var searchArgs = params.searchArgs;
97
+ var templateId = params.templateId;
98
+
99
+ var sort = params.sort;
100
+ var exportRange = params.exportRange;
101
+ var outputTarget = params.outputTarget;
102
+ var ids = params.ids;
103
+ var key = params.key;
104
+
105
+ if (exportRange === "all") {
106
+ var keyword = searchArgs.keyword;
107
+ var mfilters = null;
108
+ delete searchArgs.keyword;
109
+ if (isPublic || orgId === '0') {
110
+ delete searchArgs["_orgIds"];
111
+ } else {
112
+ searchArgs["_orgIds"] = orgId;
113
+ var permissions = getPermissions(roleId,tableId);
114
+ mfilters = getListPermissionFilter(tableId, roleId, orgId, loginId, permissions);
115
+ }
241
116
 
242
- var mainFields = [];
243
- var subFields = [];
117
+ delete searchArgs.recycleBin;
244
118
 
245
- var exConfig = null;
246
- if (meta.export) {
247
- meta.export.forEach(function(config){
248
- if(config.key == exportKey){
249
- exConfig = config;
250
- }
251
- });
252
- if (exConfig && exConfig.fields) {
253
- var fields = getMainAndSubFields(exConfig);
254
- $.log("getMainAndSubFields=" + JSON.stringify(fields));
255
- mainFields = fields[0];
256
- subFields = fields[1];
257
-
258
- if(mainFields.length>0){
259
- row.push(exConfig.mainTitleFormat);
260
- mainFields.forEach( function (f){
261
- row.push( "s"+f.fieldLabel );
262
- } );
263
- rows.push(row);
264
- }
265
- else{
266
- //写入子记录的title一次
267
- row.push(exConfig.subTitleFormat);
268
- subFields.forEach( function (spec){
269
- row.push( "s" + spec.fieldLabel ); //子记录title
270
- } );
271
- rows.push(row);
119
+ var pageSize = 100000;
120
+ var from = 0;
121
+ var sort = {
122
+ owl_modifyTime: {order: "desc"}
272
123
  }
273
124
 
274
- var subTitleInterval = exConfig.subTitleInterval || 9999999;
275
- objs.forEach( function (obj,objIdx){
276
- if(mainFields.length>0){
277
- var row = [];
278
- row.push(exConfig.mainRecordFormat);
279
- mainFields.forEach( function (f){
280
- if(!f.key){
281
- row.push('null');
282
- }
283
- else{
284
-
285
- var value = @projectCodeService.getValue( f.key, obj );
286
- $.log("getValue:" + f.key+":" +value);
287
- value = normalizeValue(value,f);
288
- row.push( value );
289
- }
290
-
291
- } );
292
- rows.push( row );
293
- }
294
- //写入子item的title
295
- if (subFields.length>0) {
296
- var row = [];
297
- var grouping = [];
298
- if(mainFields.length>0 && (objIdx % subTitleInterval)==0){
299
- //当有主记录的时候才写入子记录的Title
300
- row.push(exConfig.subTitleFormat);
301
- subFields.forEach( function (spec){
302
- row.push( "s" +spec.fieldLabel ); //子记录title
303
- } );
304
- rows.push( row );
305
- grouping[ 0 ] = rows.length - 1;
306
- }
307
- var items = obj[exConfig.items.name];
308
- items && items.forEach && items.forEach( function (item){
309
- var row = [];
310
- row.push(exConfig.subRecordFormat);
311
- subFields.forEach( function (spec){
312
- if(spec.isItemField){
313
- var value = item[ spec.origKey ];
314
- value = normalizeValue(value,spec);
315
- row.push( value );
316
- }
317
- else{
318
- if(spec.key){
319
- var value = @projectCodeService.getValue( spec.key, obj );
320
- value = normalizeValue(value,spec);
321
- row.push(value);
322
- }
323
- else{
324
- row.push("")
325
- }
326
-
327
- }
328
- } );
329
- rows.push( row );
330
- } );
331
- if(mainFields.length>0){
332
- grouping[ 1 ] = rows.length - 1;
333
- groupings.push( grouping );
125
+ var sr = modelService.search(mfilters, searchArgs, keyword, from, pageSize, sort);
126
+ var count = modelService.count(mfilters, searchArgs, keyword );
127
+ return {
128
+ rows: sr.list,
129
+ total: count
130
+ }
131
+ }
132
+ else if(exportRange=== "selected") {
133
+ var ids = params.ids;
134
+ var rows = [];
135
+ ids.forEach(function(id){
136
+ var row = modelService.get(id);
137
+ if(row){
138
+ rows.push(row);
334
139
  }
335
- }
336
- } );
337
- }
338
-
339
- var taskInfo = @projectCodeService.getExportTaskInfo( taskInfoId );
340
- taskInfo.processState = "success";
341
- taskInfo.percent = 70;
342
- taskInfo.lastTime = new Date().getTime();
343
- taskInfo.msg = "获取数据记录完成";
344
- $.log("rows======" + JSON.stringify(rows));
345
- var fileId = Excel.createExcel( rows, groupings, "export" );
346
- var taskInfo = @projectCodeService.getExportTaskInfo( taskInfoId );
347
- taskInfo.processState = "success";
348
- taskInfo.percent = 100;
349
- taskInfo.fileId = fileId;
350
- taskInfo.lastTime = new Date().getTime();
351
- taskInfo.msg = "生成Excel文件成功";
352
- @projectCodeService.updateExportTaskInfo(taskInfoId, taskInfo );
140
+ });
141
+ return {
142
+ rows: rows,
143
+ total: rows.length
144
+ }
353
145
  }
354
- }
355
- )();
146
+ return {
147
+ rows: [],
148
+ total: 0
149
+ };
150
+
151
+ }
356
152
 
357
153
 
358
154
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "owl-cli",
3
- "version": "6.179.0",
3
+ "version": "6.181.0",
4
4
  "main": "index.js",
5
5
  "preferGlobal": true,
6
6
  "bin": {