要比批量生成数据文件到指定目录,使用task模块远比file,search模块靠谱,前者生成200M文件只需要半分钟,后者需要1个小时。请看代码。
function execute() {
try {
var startTime = new Date();
let listObj = [{ "DemandWorkOrder.dat": { scriptId: "customsearch_DemandWorkOrder_dat", id: xx} },
{
"SalesOrder.dat": { scriptId: "customsearch_salesorder_dat", id: xx}
}, {
"BOMComponent.dat": { scriptId: "customsearch_bomcomponent_dat", id: xx}
}, { "Item.dat": { scriptId: "customsearch_item_dat", id: xx} }, {
"BOM.dat": { scriptId: "customsearch_bom_dat", id: xx}
}, {
"SupplyOnhand.dat": { scriptId: "customsearch_supplyonhand_dat", id: xx}
}, {
"WorkOrderSupply.dat": { scriptId: "customsearch_workordersupply_dat", id: xx}
}, {
"SafetyStock.dat": { scriptId: "customsearch_safetystock_dat", id: xx}
}, { "UOMClassConversion.dat": { scriptId: "customsearch_uomclassconversion_dat", id: xx} }, {
"UOMConversion.dat": { scriptId: "customsearch_uomconversion_dat", id: xx}
}, { "UOM.csv": { scriptId: "customsearch_uom_dat", id: xx} }];
var searchTaskList = [];
for (let obj of listObj) {
var searchTask = task.create({
taskType: task.TaskType.SEARCH
});
let key = Object.keys(obj)[0];
searchTask.savedSearchId = obj[key].id;
searchTask.filePath = 'ExportData/dat/' + key;
var searchTaskId = searchTask.submit();
log.debug('Search Task Id', searchTaskId);
searchTaskList.push({ fileName: key, searchTaskId: searchTaskId });
}
while (searchTaskList.length > 0) {
pause(3);//等待3秒
searchTaskList = searchTaskList.filter(t => {
var searchTaskStatus = task.checkStatus({
taskId: t.searchTaskId
});
if (searchTaskStatus.status === task.TaskStatus.COMPLETE || searchTaskStatus.status === task.TaskStatus.FAILED) {
log.debug(t.fileName, { task: t.searchTaskId, status: searchTaskStatus.status });
}
return searchTaskStatus.status !== task.TaskStatus.COMPLETE && searchTaskStatus.status !== task.TaskStatus.FAILED;
});
}
//打包目录下.dat文件
let files = findFiles({ name: '.dat', folderId: 4633 });
log.debug(files.length);
let zipFileId = createZip(files);
log.debug('zipFile', zipFileId);
} catch (e) {
log.debug(e.name, e.message)
} finally {
let endTime = new Date();
let s = (endTime.getTime() - startTime.getTime()) / 1000;
log.debug('==Finished==', {
usedTime: s
});
}
}