flexbiz-server 12.6.7 → 12.6.8
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/package.json +2 -1
- package/server/app.js +1 -1
- package/server/cluster.js +1 -1
- package/server/controllers/controller.js +6 -6
- package/server/controllers/controllerRPT.js +23 -22
- package/server/controllers/findHandler.js +39 -37
- package/server/controllers/rptExcelHandler.js +16 -15
- package/server/controllers/rptHandler.js +3 -3
- package/server/libs/WorkerStaticPool.js +16 -16
- package/server/libs/WorkerStaticPool_v3.js +19 -0
- package/server/libs/cdpskh.js +10 -10
- package/server/libs/excelHelper.js +8 -0
- package/server/libs/invoiceEasy.js +1 -1
- package/server/libs/mongoosePatch.js +9 -8
- package/server/libs/permission.js +2 -2
- package/server/libs/queryBuilding.js +2 -2
- package/server/libs/redis-cache.js +7 -6
- package/server/libs/sessionContext.js +5 -4
- package/server/libs/utils.js +4 -2
- package/server/models/cacheSessionReport.js +1 -1
- package/server/models/hd2.js +2 -2
- package/server/models/rptform.js +3 -5
- package/server/models/user.js +3 -3
- package/server/modules/lists/ls-customer.js +21 -21
- package/server/modules/lists/ls-dmvt.js +43 -43
- package/server/modules/lists/ls-rptform.js +3 -4
- package/server/modules/reports/calc-tinhluong.js +17 -15
- package/server/modules/reports/rp-bcqt.js +23 -23
- package/server/modules/reports/rp-cdpskh.js +7 -7
- package/server/modules/reports/rp-ckcn.js +3 -3
- package/server/modules/reports/rp-kgchamcong.js +2 -1
- package/server/modules/reports/rp-khoaso.js +4 -3
- package/server/modules/reports/rp-ptcttct.js +19 -17
- package/server/modules/reports/rp-pttct.js +48 -45
- package/server/modules/reports/rp-pttctkho.js +15 -14
- package/server/modules/reports/rp-pttctkho2.js +12 -12
- package/server/modules/reports/rp-scttk.js +5 -4
- package/server/modules/reports/rp-thnxtnpp.js +2 -2
- package/server/modules/systems/sys-app.js +20 -20
- package/server/modules/systems/sys-listinfo.js +8 -8
- package/server/modules/systems/sys-reportinfo.js +4 -3
- package/server/modules/systems/sys-users.js +2 -2
- package/server/modules/vouchers/vo-hd2.js +22 -18
- package/server/route.js +17 -16
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "flexbiz-server",
|
|
3
3
|
"main": "./server/app.js",
|
|
4
4
|
"description": "Flexible Server",
|
|
5
|
-
"version": "12.6.
|
|
5
|
+
"version": "12.6.8",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Van Truong Pham",
|
|
8
8
|
"email": "invncur@gmail.com"
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
"ejs": "^4.0.1",
|
|
33
33
|
"elliptic-nodejs": "^6.5.4",
|
|
34
34
|
"excel-report": "^1.0.3",
|
|
35
|
+
"exceljs": "^4.4.0",
|
|
35
36
|
"expo-server-sdk": "^3.6.0",
|
|
36
37
|
"express": "^4.17.1",
|
|
37
38
|
"express-session": "^1.17.2",
|
package/server/app.js
CHANGED
|
@@ -15,7 +15,7 @@ global.getModel("assabcihandler").start();const {recoverBackgroundTasks:$recover
|
|
|
15
15
|
$app$$)}else $cpus_report_cpus_server_sslConfig$$=http.createServer($app$$);$cpus_report_cpus_server_sslConfig$$.timeout=6E5;$options$$.useSocket!==!1&&$User$$.initSocket($cpus_report_cpus_server_sslConfig$$);if($options$$.cluster!==!1){if(!$StaticPool$$.listen($cpus_report_cpus_server_sslConfig$$,global.port))$cpus_report_cpus_server_sslConfig$$.once("listening",function(){Logger.info("[app] server started on",global.port)});$StaticPool$$=require("cluster");$StaticPool$$.on("exit",function($worker$$,
|
|
16
16
|
$code$$,$signal$$){Logger.error("[app] worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool$$.on("online",function($worker$$){console.info("[app] worker "+$worker$$.process.pid+" is online")})}else $cpus_report_cpus_server_sslConfig$$.listen(global.port,()=>{Logger.info("[app] server start at "+global.port+" port")})}$cpus_report_cpus_server_sslConfig$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool?$options$$.start_report_pool||$options$$.start_input_data_pool?
|
|
17
17
|
1:Math.round($cpus_report_cpus_server_sslConfig$$/2):0);var $StaticPool$jscomp$0$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_report_cpus_server_sslConfig$$/2),2):0);$cpus_report_cpus_server_sslConfig$$=$options$$.report_cpus||($options$$.start_import_data_pool?Math.max(Math.min($cpus_report_cpus_server_sslConfig$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_report_cpus_server_sslConfig$$/2))-1,2):0);if($StaticPool$jscomp$0$$){const $StaticPool$$=
|
|
18
|
-
require("./libs/WorkerStaticPool");global.inputMainPool=new $StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,
|
|
18
|
+
require("./libs/WorkerStaticPool");global.inputMainPool=new $StaticPool$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,5E3,$StaticPool$jscomp$0$$,"input pool");global.inputMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("\ud83d\udd25 [app] Crud pool ready")})}$StaticPool$$&&($StaticPool$jscomp$0$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool$jscomp$0$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||
|
|
19
19
|
0,$StaticPool$$,36E5,1,"import pool"),global.importDataMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("[app] Import pool ready")}));$cpus_report_cpus_server_sslConfig$$&&($StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0,$cpus_report_cpus_server_sslConfig$$,3E5,2,"report pool"),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("[app] Report pool ready")}));
|
|
20
20
|
$callbackServer$$&&$callbackServer$$()})}else require("./route")($app$$,()=>{$callbackServer$$&&$callbackServer$$()},!0)})}).catch($err$$=>{Logger.info("[app] Not Connected to Database ERROR! ",$err$$);process.exit(1)});return $app$$};process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});
|
|
21
21
|
process.on("uncaughtException",function($err$jscomp$3_error$$){Logger.error((new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);Logger.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
|
package/server/cluster.js
CHANGED
|
@@ -18,7 +18,7 @@ email:$StaticPool_adminUser$$.email,active:!0},$u$$=new $StaticPool$$($StaticPoo
|
|
|
18
18
|
$configs$$.use_ssl&&$sslDir$$?https.createServer(sslConfig($sslDir$$),$app$$):http.createServer($app$$);$cpus_init_system_data_report_cpus_server$$.timeout=6E5;$StaticPool$$.initSocket($cpus_init_system_data_report_cpus_server$$);$StaticPool$$.initClientSockets();if($options$$.cluster){if(!require("sticky-session").listen($cpus_init_system_data_report_cpus_server$$,global.port))$cpus_init_system_data_report_cpus_server$$.once("listening",function(){Logger.info("[cluster] server cluster started on",
|
|
19
19
|
global.port)});$StaticPool$$=require("cluster");$StaticPool$$.on("exit",function($worker$$,$code$$,$signal$$){Logger.error("[cluster] worker "+$worker$$.process.pid+" died",$code$$,$signal$$)});$StaticPool$$.on("online",function($worker$$){console.info("[cluster] worker "+$worker$$.process.pid+" is online");global.clientRedis.set("lastworker",JSON.stringify({pid:$worker$$.process.pid}))})}else $cpus_init_system_data_report_cpus_server$$.listen(global.port,()=>{Logger.info("[cluster] server start at "+
|
|
20
20
|
global.port+" port")});$cpus_init_system_data_report_cpus_server$$=os.cpus().length;$StaticPool$$=$options$$.import_cpus||($options$$.start_import_data_pool?$options$$.start_report_pool||$options$$.start_input_data_pool?1:Math.round($cpus_init_system_data_report_cpus_server$$/2):0);$StaticPool$jscomp$0$$=$options$$.input_cpus||($options$$.start_input_data_pool?Math.max(Math.round($cpus_init_system_data_report_cpus_server$$/2),2):0);$cpus_init_system_data_report_cpus_server$$=$options$$.report_cpus||
|
|
21
|
-
($options$$.start_import_data_pool?Math.max(Math.min($cpus_init_system_data_report_cpus_server$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_init_system_data_report_cpus_server$$/2))-1,2):0);$StaticPool$jscomp$0$$&&($StaticPool_adminUser$$=require("./libs/WorkerStaticPool"),global.inputMainPool=new $StaticPool_adminUser$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,
|
|
21
|
+
($options$$.start_import_data_pool?Math.max(Math.min($cpus_init_system_data_report_cpus_server$$-$StaticPool$jscomp$0$$-$StaticPool$$,Math.round($cpus_init_system_data_report_cpus_server$$/2))-1,2):0);$StaticPool$jscomp$0$$&&($StaticPool_adminUser$$=require("./libs/WorkerStaticPool"),global.inputMainPool=new $StaticPool_adminUser$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$jscomp$0$$,5E3,$StaticPool$jscomp$0$$,"input pool"),global.inputMainPool.exec({load:!0,
|
|
22
22
|
configs:JSON.stringify($configs$$)},()=>{Logger.info("\ud83d\udd25 [cluster] Crud pool ready")}));$StaticPool$$&&($StaticPool$jscomp$0$$=require("./libs/WorkerStaticPool"),global.importDataMainPool=new $StaticPool$jscomp$0$$(__dirname+"/workers/inputWorker.js",$options$$.max_queue_imports||0,$StaticPool$$,36E5,1,"import pool"),global.importDataMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("[cluster] Import pool ready")}));$cpus_init_system_data_report_cpus_server$$&&
|
|
23
23
|
($StaticPool$$=require("./libs/WorkerStaticPool"),global.reportMainPool=new $StaticPool$$(__dirname+"/workers/reportWorker.js",$options$$.max_queue_reports||0,$cpus_init_system_data_report_cpus_server$$,3E5,2,"report pool"),global.reportMainPool.exec({load:!0,configs:JSON.stringify($configs$$)},()=>{Logger.info("[cluster] Report pool ready")}))})}).catch($err$$=>{Logger.error("[cluster] Not Connected to Database ERROR!",$err$$);process.exit(1)})};
|
|
24
24
|
process.on("SIGINT",async()=>{global.sharedRedisConnection&&await global.sharedRedisConnection.quit();process.exit(0)});process.on("uncaughtException",function($err$jscomp$3_error$$){Logger.error("[cluster]",(new Date).toUTCString()+" uncaughtException:",$err$jscomp$3_error$$.message);Logger.error($err$jscomp$3_error$$.stack);$err$jscomp$3_error$$=`
|
|
@@ -34,9 +34,9 @@ $ds_nguoi_duyet$$);if($ds_nguoi_duyet$$&&$ds_nguoi_duyet$$.length!==0&&($ds_nguo
|
|
|
34
34
|
!1,$options$$={title:"",data:{}}){return pushNotification(this,$_obj$$,$eventName$$,$old_obj$$,$justFireEvents$$,$options$$)}}controller.prototype.__proto__=EventEmitter.prototype;controller.prototype.asyncGetNextSequence=async($id_app$$,$ma_ct$$,$field$$="so_ct",$options$$)=>new Promise($resolve$$=>{getNextSequence($id_app$$,$ma_ct$$,$field$$,($error$$,$rs$$)=>{if($error$$)return Error($error$$);$resolve$$($rs$$)},$options$$)});
|
|
35
35
|
controller.prototype.getFieldNoRight=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/field-not-right/:fieldName`).get(async($req$$,$res$$)=>{let $fieldName$$=$req$$.params.fieldName;try{(await permission.getFieldNotRight($req$$.user.current_id_app,$req$$.user.email,$ctrl$$.name)).indexOf($fieldName$$)>=0?$res$$.send({allow:!1}):$res$$.send({allow:!0})}catch($e$$){$res$$.state(400).send($e$$.message)}})};
|
|
36
36
|
controller.prototype.find=function($_route_name_route_name$$,$shareRoute$$=!1,$method$$="GET"){let $ctrl$$=this;const $handlerResult$$=($res$$,$data$$)=>{const {result:$result$$,dataType:$dataType$$}=$data$$;$dataType$$=="xlsx"?($res$$.setHeader("Content-Type","application/vnd.openxmlformats"),$res$$.setHeader("Content-Disposition","attachment; filename="+$ctrl$$.name+".xlsx"),$res$$.end($result$$,"binary")):$res$$.send($result$$)},$findRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,
|
|
37
|
-
body:$body$$,user:$user$$,params:$params$$,headers:$headers$$}=$ip$jscomp$1_req$$;var $_req$jscomp$
|
|
38
|
-
global.inputMainPool){const $id_task$$=`task-find-${crypto.randomBytes(20).toString("hex")}`;global.inputMainPool.exec({id_task:$id_task$$,req:$_req
|
|
39
|
-
|
|
37
|
+
body:$body$$,user:$user$$,params:$params$$,headers:$headers$$,protocol:$protocol$$}=$ip$jscomp$1_req$$;var $_req$$=$ip$jscomp$1_req$$.get("host");const $user_agent$$=$ip$jscomp$1_req$$.header("user-agent");$ip$jscomp$1_req$$=$ip$jscomp$1_req$$.ip||$ip$jscomp$1_req$$.headers["x-forwarded-for"]||$ip$jscomp$1_req$$.connection.remoteAddress;try{if($_req$$={handler:"findHandler",protocol:$protocol$$,host:$_req$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$,user_agent:$user_agent$$,
|
|
38
|
+
ip:$ip$jscomp$1_req$$,shareRoute:$shareRoute$$},global.inputMainPool){const $id_task$$=`task-find-${crypto.randomBytes(20).toString("hex")}`;global.inputMainPool.exec({id_task:$id_task$$,req:$_req$$,module:$ctrl$$.name.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{if($response$$.error)return $res$$.status(400).send({error:$response$$.error.error||$response$$.error.message||$response$$.error,message:$response$$.message||$response$$.error.error||$response$$.error.message||$response$$.error,
|
|
39
|
+
code:$response$$.code});$handlerResult$$($res$$,$response$$.result)})}else handlers.findHandler($ctrl$$,$_req$$,($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);$handlerResult$$($res$$,$returnvalue$$)})}catch($e$$){$res$$.status(400).send($e$$)}};$_route_name_route_name$$=$_route_name_route_name$$||this.route_name;$method$$==="GET"?(this.router.route($_route_name_route_name$$).get($findRoute$$),this.router.route($_route_name_route_name$$+"/excel").get($findRoute$$)):(this.router.route($_route_name_route_name$$).post($findRoute$$),
|
|
40
40
|
this.router.route($_route_name_route_name$$+"/excel").post($findRoute$$))};
|
|
41
41
|
controller.prototype.get=function($route_name$$,$shareRoute$$=!1){const $ctrl$$=this;this.router.route(`${$route_name$$||this.route_name}/:id`).get(async function($req$$,$res$$){let $id$$=$req$$.params.id;if(!global.mongoose.Types.ObjectId.isValid($id$$))return $res$$.status(404).send({error:ERRORS.ERR_ID_INVALID,code:ERRORS.ERR_ID_INVALID_CODE});let $body$$={_id:$id$$};const $user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,
|
|
42
42
|
{query:$query$$,user:$user$$,params:$params$$,headers:$headers$$}=$req$$;if($ctrl$$.getting)try{await new Promise(($resolve$$,$reject$$)=>{$ctrl$$.getting($user$$,$id$$,$e$$=>{if($e$$)return $reject$$($e$$);$resolve$$()})})}catch($e$$){return $res$$.status(400).send($e$$)}try{handlers.findHandler($ctrl$$,{query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$,user_agent:$user_agent$$,ip:$ip$$,shareRoute:$shareRoute$$,originalUrl:$req$$.originalUrl},($e$jscomp$19_result$$,$returnvalue$$)=>
|
|
@@ -59,9 +59,9 @@ headers:$headers$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$,originalUrl:
|
|
|
59
59
|
controller.prototype.exportToExcel=function(){let $ctrl$$=this;const $handlerResult$$=($res$$,$data$jscomp$3_data$jscomp$4_returnvalue$$)=>{switch($data$jscomp$3_data$jscomp$4_returnvalue$$.ext){case "xlsx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$ctrl$$.name+'".xlsx');$data$jscomp$3_data$jscomp$4_returnvalue$$=$data$jscomp$3_data$jscomp$4_returnvalue$$.data;$data$jscomp$3_data$jscomp$4_returnvalue$$?.type==
|
|
60
60
|
"Buffer"&&$data$jscomp$3_data$jscomp$4_returnvalue$$?.data&&($data$jscomp$3_data$jscomp$4_returnvalue$$=Buffer.from($data$jscomp$3_data$jscomp$4_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$3_data$jscomp$4_returnvalue$$.length);$res$$.end($data$jscomp$3_data$jscomp$4_returnvalue$$);break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$ctrl$$.name+
|
|
61
61
|
'".docx');$data$jscomp$3_data$jscomp$4_returnvalue$$=$data$jscomp$3_data$jscomp$4_returnvalue$$.data;$data$jscomp$3_data$jscomp$4_returnvalue$$?.type=="Buffer"&&$data$jscomp$3_data$jscomp$4_returnvalue$$?.data&&($data$jscomp$3_data$jscomp$4_returnvalue$$=Buffer.from($data$jscomp$3_data$jscomp$4_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$3_data$jscomp$4_returnvalue$$.length);$res$$.end($data$jscomp$3_data$jscomp$4_returnvalue$$);break;case "print":$res$$.send($data$jscomp$3_data$jscomp$4_returnvalue$$.data.join('<p style="page-break-before: always"></p>'));
|
|
62
|
-
break;case "json":$res$$.json($data$jscomp$3_data$jscomp$4_returnvalue$$.data);break;default:$res$$.send($data$jscomp$3_data$jscomp$4_returnvalue$$.data)}}
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
break;case "json":$res$$.json($data$jscomp$3_data$jscomp$4_returnvalue$$.data);break;default:$res$$.send($data$jscomp$3_data$jscomp$4_returnvalue$$.data)}},$handleRoute$$=async function($req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $_req$$={handler:"exportHandler",query:$query$$,body:$body$$,user:$user$$,
|
|
63
|
+
params:$params$$,headers:$headers$$,user_agent:$user_agent$$,ip:$ip$$,originalUrl:$req$$.originalUrl};global.inputMainPool?global.inputMainPool.exec({req:$_req$$,module:$ctrl$$.name.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{if($response$$.error)return $res$$.status(400).send({error:$response$$.error.error||$response$$.error.message||$response$$.error,message:$response$$.message||$response$$.error.error||$response$$.error.message||$response$$.error});Logger.info("[controller][export] X\u1eed l\u00fd k\u1ebft qu\u1ea3...",
|
|
64
|
+
$response$$?.result?.ext);$handlerResult$$($res$$,$response$$.result)}):handlers.exportHandler($ctrl$$,$_req$$,($e$$,$returnvalue$$)=>{if($e$$)return $res$$.status(400).send($e$$);$handlerResult$$($res$$,$returnvalue$$)})}catch($e$$){$res$$.status(400).send($e$$)}};this.router.route(`${this.route_name}/excel/:rpt_id`).get($handleRoute$$);this.router.route(`${this.route_name}/export/:rpt_id`).get($handleRoute$$)};
|
|
65
65
|
controller.prototype.importFromGoogleSheet=function(){let $ctrl$$=this;this.router.route(`${this.route_name}/import/googlesheet`).get(async function($req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$}=$req$$,$user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{const $_req$$={handler:"importFromGsHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,headers:$headers$$,
|
|
66
66
|
user_agent:$user_agent$$,ip:$ip$$,originalUrl:$req$$.originalUrl};if(global.importDataMainPool){const $id_task$$=`task-import-google-sheet-${crypto.randomBytes(20).toString("hex")}`,$status_task$$=`${configs.api_url||configs.domain}/task-status/${$id_task$$}`;$_req$$.status_task=$status_task$$;$res$$.status(202).send({message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111ang th\u1ef1c hi\u1ec7n. Khi ho\u00e0n th\u00e0nh, ch\u01b0\u01a1ng tr\u00ecnh s\u1ebd g\u1eedi cho b\u1ea1n m\u1ed9t th\u00f4ng b\u00e1o",
|
|
67
67
|
status_task:$status_task$$});global.importDataMainPool.exec({id_task:$id_task$$,req:$_req$$,module:$ctrl$$.name.toUpperCase(),configs:JSON.stringify(configs)},$e$jscomp$34_response$$=>{if($e$jscomp$34_response$$=$e$jscomp$34_response$$.error)return Logger.error("\u274c [importFromGoogleSheet] l\u1ed7i",$e$jscomp$34_response$$),global.getModel("notification").createNotification($req$$.user.email,$req$$.user.email,"Kh\u00f4ng th\u1ec3 import d\u1eef li\u1ec7u",$e$jscomp$34_response$$.message||$e$jscomp$34_response$$.error||
|
|
@@ -11,25 +11,26 @@ $func_string_rptInfo$$=`return (async ()=>{
|
|
|
11
11
|
})`;try{let $rs$$=await evalute($func_string_rptInfo$$,{data:$data_response$$,moment,numeral,condition:$req$$.query,user:$req$$.user,_,utils,getData:getParameterData})();if($rs$$){if($rs$$.error)return Logger.error("handle_data_expression_server",$rs$$.error,$func_string_rptInfo$$,$rptId$$),$callback$$($rs$$.error.message||$rs$$.error);$data_response$$=$rs$$}}catch($e$$){return Logger.error("handle_data_expression_server",$e$$,$func_string_rptInfo$$,$rptId$$),$callback$$($e$$.message||$e$$)}}$callback$$(null,
|
|
12
12
|
$data_response$$)};this.getDataFunc=()=>{const $currentStore$$=getCurrentStore();Logger.info(`\u2705 [rptHanlder] [getDataFunc], storeId=${$currentStore$$?.storeId||"none"},sessionID=${getCurrentSession()?._debugId}`);return $options$$.stream?$fecthData$$:async($req$$,$callback$$)=>{Logger.info(`\u2705 [rptHanlder] Ch\u1ea1y b\u00e1o c\u00e1o ${$rptId$$}, sessionID=${getCurrentSession()?._debugId}`);try{await $fecthData$$($req$$,($e$$,$data$$)=>{this.handleResult($req$$,{error:$e$$,result:$data$$},
|
|
13
13
|
($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})}catch($e$$){$callback$$($e$$)}}};const $mainRoute$$=async($req$$,$res$$)=>{if($options$$.stream)handlers.rptHandler(this,$req$$,($e$$,$rs$$)=>{if($options$$.resHandler)return $options$$.resHandler($req$$,{error:$e$$,data:$rs$$},$res$$);if($e$$)return $e$$.error?$res$$.status(500).send($e$$):$res$$.status(500).send({error:$e$$.message||$e$$});$rs$$=="__end_stream__"?Logger.info("[controllerRPT] end stream...",$rptId$$):$res$$.send($rs$$)},$res$$);else{const {query:$query$$,
|
|
14
|
-
body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$req$$;var $
|
|
15
|
-
if($options$$.waiting_message){const $status_task$$=`${configs.api_url||configs.domain}/task-status/${$id_task$$}`;$res$$.status(202).send([{message:$options$$.waiting_message,status_task:$status_task$$}])}global.reportMainPool.exec({id_task:$id_task$$,req:$
|
|
16
|
-
if($response$$.error)return $res$$.status(400).send($response$$.error);$res$$.send($response$$.result)}})}else $options$$.waiting_message&&$res$$.status(202).send([{message:$options$$.waiting_message}]),handlers.rptHandler(this,$
|
|
17
|
-
$rptId$$,$e$$),$res$$.status(400).send($e$$)}}},$excelRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$1_req$$;var $_req$jscomp$
|
|
18
|
-
|
|
19
|
-
var $result_returnvalue$$=$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.result;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$.type;$result_returnvalue$$=$result_returnvalue$$.data;switch($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$){case "xlsx":Logger.info("[controllerRPT] send file from worker..."
|
|
20
|
-
$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xlsx');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type===
|
|
21
|
-
$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length);$res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document")
|
|
22
|
-
"Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=Buffer.from($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data));$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length)
|
|
23
|
-
'attachment; filename="'+$rptId$$+'".xml');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type==="Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=
|
|
24
|
-
$res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;default:$res$$.send($result_returnvalue$$)}})}else handlers.rptExcelHandler(this,$_req$jscomp$
|
|
25
|
-
if(typeof $e$jscomp$7_result$$=="string")return $res$$.send($e$jscomp$7_result$$);$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xlsx');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue
|
|
26
|
-
Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.length);$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;case "docx":$res$$.setHeader("Content-Type",
|
|
27
|
-
$e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data))
|
|
28
|
-
"application/xml");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xml');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=$e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&
|
|
29
|
-
$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;default:$res$$.send($e$jscomp$7_result$$)}})}catch($e$$){$res$$.status(400).send($e$$)}};$router$$.route(`${this.base_path+this.module}`).get($mainRoute$$);$router$$.route(`${this.base_path+this.module}`).post($mainRoute$$)
|
|
30
|
-
$router$$.route(`${this.base_path+this.module}/export`).post($excelRoute$$)}getData($req$$,$callback$$){const $ctrl$$=this;let $callback_run$$=!1;setImmediate(()=>{try{$ctrl$$.fecthDataFunc($req$$,($err$$,$data$$,$event$$)=>{if($ctrl$$.options?.stream){if($err$$)return $callback$$($err$$)
|
|
31
|
-
result:$data$$},($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})}catch($e$$){Logger.error("[report controller] [getData]",$e$$),$callback$$($e$$.message)}})}createRoute($routeName$$,$callbackRoute_handler$$,$_options$$={method:"GET",not_use_worker:!1,action_code:"view"}){const $self$$=this;$_options$$.method
|
|
32
|
-
$callbackRoute_handler$$=async function($ip$jscomp$2_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$2_req$$;var $_req$jscomp$2_user_agent$$=$ip$jscomp$2_req$$.header("user-agent");$ip$jscomp$2_req$$=$ip$jscomp$2_req$$.ip||$ip$jscomp$2_req$$.headers["x-forwarded-for"]
|
|
33
|
-
query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$_req$jscomp$2_user_agent$$,ip:$ip$jscomp$2_req$$,files:$files$$},!global.reportMainPool||global.reportMainPool.fullQueue()||$_options$$.not_use_worker)handlers.rptCreateRouteHandler($self$$,$_req$jscomp$2_user_agent$$,($e$$,$returnvalue$$)=>
|
|
34
|
-
req:$_req$jscomp$2_user_agent$$,module:$self$$.module.toUpperCase(),configs:JSON.stringify(configs)},$response$jscomp$6_result$$=>{if($response$jscomp$6_result$$.error)return $res$$.status(400).send($response$jscomp$6_result$$.error);({result:$response$jscomp$6_result$$}=$response$jscomp$6_result$$)
|
|
35
|
-
$_options$$.method=="
|
|
14
|
+
body:$body$$,user:$user$$,params:$params$$,files:$files$$,protocol:$protocol$$}=$req$$;var $_req_host$$=$req$$.get("host");const $user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{if($_req_host$$={handler:"rptHandler",protocol:$protocol$$,host:$_req_host$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()&&
|
|
15
|
+
$options$$.queue!=0){const $id_task$$=`report-${crypto.randomBytes(20).toString("hex")}`;if($options$$.waiting_message){const $status_task$$=`${configs.api_url||configs.domain}/task-status/${$id_task$$}`;$res$$.status(202).send([{message:$options$$.waiting_message,status_task:$status_task$$}])}global.reportMainPool.exec({id_task:$id_task$$,req:$_req_host$$,module:$rptId$$.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{if(!$options$$.waiting_message){if($options$$.resHandler)return $options$$.resHandler($req$$,
|
|
16
|
+
{error:$response$$.error,data:$response$$.result},$res$$);if($response$$.error)return $res$$.status(400).send($response$$.error);$res$$.send($response$$.result)}})}else $options$$.waiting_message&&$res$$.status(202).send([{message:$options$$.waiting_message}]),handlers.rptHandler(this,$_req_host$$,($e$$,$returnvalue$$)=>{if(!$options$$.waiting_message){if($options$$.resHandler)return $options$$.resHandler($req$$,{error:$e$$,data:$returnvalue$$},$res$$);if($e$$)return $res$$.status(400).send($e$$);
|
|
17
|
+
$res$$.send($returnvalue$$)}})}catch($e$$){Logger.error("L\u1ed7i t\u1ea1o job cho b\u00e1o c\u00e1o",$rptId$$,$e$$),$res$$.status(400).send($e$$)}}},$excelRoute$$=async($ip$jscomp$1_req$$,$res$$)=>{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$,protocol:$protocol$$}=$ip$jscomp$1_req$$;var $_req$jscomp$1_host$$=$ip$jscomp$1_req$$.get("host");const $user_agent$$=$ip$jscomp$1_req$$.header("user-agent");$ip$jscomp$1_req$$=$ip$jscomp$1_req$$.ip||$ip$jscomp$1_req$$.headers["x-forwarded-for"]||
|
|
18
|
+
$ip$jscomp$1_req$$.connection.remoteAddress;try{if($_req$jscomp$1_host$$={handler:"rptExcelHandler",protocol:$protocol$$,host:$_req$jscomp$1_host$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$user_agent$$,ip:$ip$jscomp$1_req$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()&&$options$$.queue!=0){const $id_task$$=`report-export-${crypto.randomBytes(20).toString("hex")}`;global.reportMainPool.exec({id_task:$id_task$$,req:$_req$jscomp$1_host$$,module:$rptId$$.toUpperCase(),
|
|
19
|
+
configs:JSON.stringify(configs)},$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=>{if($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.error)return $res$$.status(400).send($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.error);var $result_returnvalue$$=$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.result;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$.type;$result_returnvalue$$=$result_returnvalue$$.data;switch($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$){case "xlsx":Logger.info("[controllerRPT] send file from worker...",
|
|
20
|
+
$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$,typeof $result_returnvalue$$);if(typeof $result_returnvalue$$=="string")return $res$$.send($result_returnvalue$$);$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xlsx');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type===
|
|
21
|
+
"Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=Buffer.from($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data));$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length);$res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");
|
|
22
|
+
$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".docx');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type==="Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=Buffer.from($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data));$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length);
|
|
23
|
+
$res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;case "xml":$res$$.setHeader("Content-Type","application/xml");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xml');$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=$result_returnvalue$$;$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$?.type==="Buffer"&&Array.isArray($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data)&&($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$=
|
|
24
|
+
Buffer.from($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.data));$res$$.setHeader("Content-Length",$data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$.length);$res$$.end($data$jscomp$2_data$jscomp$3_data$jscomp$4_ext_response$$);break;default:$res$$.send($result_returnvalue$$)}})}else handlers.rptExcelHandler(this,$_req$jscomp$1_host$$,($e$jscomp$7_result$$,$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$)=>{if($e$jscomp$7_result$$)return $res$$.status(400).send($e$jscomp$7_result$$);
|
|
25
|
+
$e$jscomp$7_result$$=$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data;switch($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.type){case "xlsx":Logger.info("[controllerRPT] send xls file...");if(typeof $e$jscomp$7_result$$=="string")return $res$$.send($e$jscomp$7_result$$);$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xlsx');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=
|
|
26
|
+
$e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.length);$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;case "docx":$res$$.setHeader("Content-Type",
|
|
27
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".docx');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=$e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data));
|
|
28
|
+
$res$$.setHeader("Content-Length",$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.length);$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;case "xml":$res$$.setHeader("Content-Type","application/xml");$res$$.setHeader("Content-Disposition",'attachment; filename="'+$rptId$$+'".xml');$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=$e$jscomp$7_result$$;$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$?.type==="Buffer"&&Array.isArray($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data)&&
|
|
29
|
+
($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$=Buffer.from($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.data));$res$$.setHeader("Content-Length",$data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$.length);$res$$.end($data$jscomp$5_data$jscomp$6_data$jscomp$7_returnvalue$$);break;default:$res$$.send($e$jscomp$7_result$$)}})}catch($e$$){$res$$.status(400).send($e$$)}};$router$$.route(`${this.base_path+this.module}`).get($mainRoute$$);$router$$.route(`${this.base_path+this.module}`).post($mainRoute$$);
|
|
30
|
+
$router$$.route(`${this.base_path+this.module}/excel`).get($excelRoute$$);$router$$.route(`${this.base_path+this.module}/excel`).post($excelRoute$$);$router$$.route(`${this.base_path+this.module}/export`).get($excelRoute$$);$router$$.route(`${this.base_path+this.module}/export`).post($excelRoute$$)}getData($req$$,$callback$$){const $ctrl$$=this;let $callback_run$$=!1;setImmediate(()=>{try{$ctrl$$.fecthDataFunc($req$$,($err$$,$data$$,$event$$)=>{if($ctrl$$.options?.stream){if($err$$)return $callback$$($err$$);
|
|
31
|
+
$event$$!="data"||$callback_run$$||($callback_run$$=!0,this.handleResult($req$$,{error:$err$$,result:$data$$},($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)}))}else $callback_run$$=!0,this.handleResult($req$$,{error:$err$$,result:$data$$},($e$$,$rs$$)=>{$callback$$($e$$,$rs$$)})})}catch($e$$){Logger.error("[report controller] [getData]",$e$$),$callback$$($e$$.message)}})}createRoute($routeName$$,$callbackRoute_handler$$,$_options$$={method:"GET",not_use_worker:!1,action_code:"view"}){const $self$$=this;$_options$$.method=
|
|
32
|
+
$_options$$.method?$_options$$.method.toUpperCase():"GET";const $route_action_key$$=`rpt_route_action_${$self$$.module}_${$routeName$$}_${$_options$$.method}`;$self$$[$route_action_key$$]=$callbackRoute_handler$$;$callbackRoute_handler$$=async function($ip$jscomp$2_req$$,$res$$){const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$ip$jscomp$2_req$$;var $_req$jscomp$2_user_agent$$=$ip$jscomp$2_req$$.header("user-agent");$ip$jscomp$2_req$$=$ip$jscomp$2_req$$.ip||$ip$jscomp$2_req$$.headers["x-forwarded-for"]||
|
|
33
|
+
$ip$jscomp$2_req$$.connection.remoteAddress;try{if($_req$jscomp$2_user_agent$$={handler:"rptCreateRouteHandler",routeName:$routeName$$,_options:$_options$$,route_action_key:$route_action_key$$,query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$_req$jscomp$2_user_agent$$,ip:$ip$jscomp$2_req$$,files:$files$$},!global.reportMainPool||global.reportMainPool.fullQueue()||$_options$$.not_use_worker)handlers.rptCreateRouteHandler($self$$,$_req$jscomp$2_user_agent$$,($e$$,$returnvalue$$)=>
|
|
34
|
+
{if($e$$)return $res$$.status(400).send($e$$);$res$$.send($returnvalue$$)});else{const $id_task$$=`report-create-route-${crypto.randomBytes(20).toString("hex")}`;global.reportMainPool.exec({id_task:$id_task$$,req:$_req$jscomp$2_user_agent$$,module:$self$$.module.toUpperCase(),configs:JSON.stringify(configs)},$response$jscomp$6_result$$=>{if($response$jscomp$6_result$$.error)return $res$$.status(400).send($response$jscomp$6_result$$.error);({result:$response$jscomp$6_result$$}=$response$jscomp$6_result$$);
|
|
35
|
+
$res$$.send($response$jscomp$6_result$$)})}}catch($e$$){$res$$.status(400).send($e$$)}};$_options$$.method=="DELETE"?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).delete($callbackRoute_handler$$):$_options$$.method=="POST"?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).post($callbackRoute_handler$$):$_options$$.method=="PUT"?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).put($callbackRoute_handler$$):this.router.route(`${this.base_path+
|
|
36
|
+
this.module}/${$routeName$$}`).get($callbackRoute_handler$$)}}module.exports=controllerRPT;
|
|
@@ -1,32 +1,33 @@
|
|
|
1
|
-
const fs=require("fs"),path=require("path"),async=require("async"),_=require("lodash"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),numeral=require("numeral"),excelReport=require("excel-report"),{evalute,JSONParser}=require("../libs/utils"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),utils=require("../libs/utils"),queryBuilding=require("../libs/queryBuilding"),{
|
|
2
|
-
async($ctrl$$,$req$$,$callback$$)=>{let $model$$=$ctrl$$.model,$shareRoute$$=$req$$.shareRoute,$listinfo_code$$=$req$$?.body?.["listinfo-code"]||$req$$?.query["listinfo-code"]||$req$$?.headers?.["listinfo-code"]||$req$$?.headers?.["Listinfo-Code"]
|
|
3
|
-
($listinfo_code$$=$ctrl$$.name):$listinfo_code$$=$ctrl$$.name}async.series([function($callback$$){setImmediate(async()=>{var $body_query$$={};_.isObject($req$$.body)&&($body_query$$=$req$$.body);$body_query$$={...$req$$.query,...$body_query$$};$req$$.query=$body_query$$;if($body_query$$.sort)if(typeof $body_query$$.sort=="object")var $condition_sort
|
|
4
|
-
$callback$$({error:`Sort ${$body_query$$.sort} is not valid`})}!$condition_sort$$&&$ctrl$$.sort&&($condition_sort$$=Object.assign({},$ctrl$$.sort));$req$$.sort=$condition_sort$$;$req$$.fetch_by_groups=$body_query$$.fetch_by_groups;delete $body_query$$.fetch_by_groups;$condition_sort$$={};let $or$$=[];for(var $k_newFilters$$ in $body_query$$)if($k_newFilters$$!==
|
|
5
|
-
global.mongoose.Types.ObjectId($body_query$$._id);$or$$.push({_id:$id$$})}catch($error$$){Logger.error("find condition",$error$$)}else{if($k_newFilters$$==="q"&&$body_query$$[$k_newFilters$$])try{let $q$$=_.isObject($body_query$$[$k_newFilters$$])?$body_query$$[$k_newFilters$$]:JSONParser($body_query$$[$k_newFilters$$]);$req$$.fetch_by_groups=$req$$.fetch_by_groups
|
|
6
|
-
"object"&&!global.mongoose.Types.ObjectId.isValid($q$$._id))return Logger.error("Condition is not valid",$q$$),$callback$$({error:"Condition is not valid"});($
|
|
7
|
-
$
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
$
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
{setImmediate(()=>{let $
|
|
16
|
-
|
|
17
|
-
$
|
|
1
|
+
const fs=require("fs"),path=require("path"),async=require("async"),_=require("lodash"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),numeral=require("numeral"),excelReport=require("excel-report"),{evalute,JSONParser,getDateRangeByType}=require("../libs/utils"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),utils=require("../libs/utils"),queryBuilding=require("../libs/queryBuilding"),{generateDefaultExcel}=
|
|
2
|
+
require("../libs/excelHelper"),{ERRORS}=require("./controllerUtils"),findHanlder=async($ctrl$$,$req$$,$callback$$,$current_id_app$$)=>{let $model$$=$ctrl$$.model,$shareRoute$$=$req$$.shareRoute,$listinfo_code$$=$req$$?.body?.["listinfo-code"]||$req$$?.query["listinfo-code"]||$req$$?.headers?.["listinfo-code"]||$req$$?.headers?.["Listinfo-Code"];$listinfo_code$$=$listinfo_code$$||$ctrl$$.name;$current_id_app$$=$current_id_app$$||$req$$.user.current_id_app;if($listinfo_code$$&&$listinfo_code$$!=$ctrl$$.name){const $listinfo$$=
|
|
3
|
+
await global.getModel("listinfo").findOne({code:$listinfo_code$$},{api_code:1,code:1}).lean();$listinfo$$?($listinfo$$.api_code||$listinfo$$.code)!=$ctrl$$.name&&($listinfo_code$$=$ctrl$$.name):$listinfo_code$$=$ctrl$$.name}async.series([function($callback$$){setImmediate(async()=>{var $body_query$$={};_.isObject($req$$.body)&&($body_query$$=$req$$.body);$body_query$$={...$req$$.query,...$body_query$$};$req$$.query=$body_query$$;if($body_query$$.sort)if(typeof $body_query$$.sort=="object")var $condition_sort$$=
|
|
4
|
+
$body_query$$.sort;else try{$condition_sort$$=JSONParser($body_query$$.sort)}catch($e$$){return Logger.error("error parse json",$e$$,$body_query$$.sort),$callback$$({error:`Sort ${$body_query$$.sort} is not valid`})}!$condition_sort$$&&$ctrl$$.sort&&($condition_sort$$=Object.assign({},$ctrl$$.sort));$req$$.sort=$condition_sort$$;$req$$.fetch_by_groups=$body_query$$.fetch_by_groups;delete $body_query$$.fetch_by_groups;$condition_sort$$={};let $or$$=[];for(var $k_newFilters$$ in $body_query$$)if($k_newFilters$$!==
|
|
5
|
+
"id_app"&&$k_newFilters$$!=="access_token")if($k_newFilters$$==="_id"&&global.mongoose.Types.ObjectId.isValid($body_query$$._id))try{let $id$$=global.mongoose.Types.ObjectId($body_query$$._id);$or$$.push({_id:$id$$})}catch($error$$){Logger.error("find condition",$error$$)}else{if($k_newFilters$$==="q"&&$body_query$$[$k_newFilters$$])try{let $q$$=_.isObject($body_query$$[$k_newFilters$$])?$body_query$$[$k_newFilters$$]:JSONParser($body_query$$[$k_newFilters$$]);$req$$.fetch_by_groups=$req$$.fetch_by_groups||
|
|
6
|
+
$q$$.fetch_by_groups;delete $q$$.fetch_by_groups;if(Object.keys($q$$).includes("_id"))if(!$q$$._id)delete $q$$._id;else if(typeof $q$$._id!=="object"&&!global.mongoose.Types.ObjectId.isValid($q$$._id))return Logger.error("Condition is not valid",$q$$),$callback$$({error:"Condition is not valid"});for(let $k$$ in $q$$)if(typeof $q$$[$k$$]=="string"&&$ctrl$$.model.schema.paths[$k$$]?.instance?.toLowerCase()=="date"){let {fromDate:$fromDate$$,toDate:$toDate$$}=getDateRangeByType($q$$[$k$$]);$fromDate$$&&
|
|
7
|
+
$toDate$$&&($q$$[$k$$]={$gte:$fromDate$$,$lte:$toDate$$})}($condition_sort$$=$q$$)||($condition_sort$$={});continue}catch($e$$){return Logger.error("find condition",$e$$,$body_query$$[$k_newFilters$$]),$callback$$({error:"Condition is not valid"})}if($k_newFilters$$!=="fields"&&_.has($model$$.schema.paths,$k_newFilters$$))if($ctrl$$.options.findExact[$k_newFilters$$])$condition_sort$$[$k_newFilters$$]=$body_query$$[$k_newFilters$$];else{let $item$$={};if($ctrl$$.model.schema.paths[$k_newFilters$$].instance.toLowerCase()==
|
|
8
|
+
"number")$item$$[$k_newFilters$$]=Number($body_query$$[$k_newFilters$$]);else if($ctrl$$.model.schema.paths[$k_newFilters$$].instance.toLowerCase()=="date"){let {fromDate:$fromDate$$,toDate:$toDate$$}=getDateRangeByType($body_query$$[$k_newFilters$$]);$item$$[$k_newFilters$$]=$fromDate$$&&$toDate$$?{$gte:$fromDate$$,$lte:$toDate$$}:new Date($body_query$$[$k_newFilters$$])}else $ctrl$$.model.schema.paths[$k_newFilters$$].instance.toLowerCase()=="string"?$item$$[$k_newFilters$$]={$regex:($body_query$$[$k_newFilters$$]||
|
|
9
|
+
"").trim().replace(/[.*+\-?^${}()|[\]\\]/g,"\\$&"),$options:"i"}:$item$$[$k_newFilters$$]=$body_query$$[$k_newFilters$$];$or$$.push($item$$)}else $k_newFilters$$==="$text"&&$or$$.push({$text:{$search:$body_query$$[$k_newFilters$$]}})}$or$$.length!==0&&($body_query$$.cType==="$and"?$condition_sort$$.$and=$or$$:$condition_sort$$.$or=$or$$);$k_newFilters$$=queryBuilding.convertLegacyQuery(_.cloneDeep($condition_sort$$));$condition_sort$$=queryBuilding.buildSearchQuery($k_newFilters$$);$shareRoute$$||
|
|
10
|
+
$ctrl$$.require_id_app==0||($condition_sort$$.id_app=$current_id_app$$);$ctrl$$.finding?$ctrl$$.finding($req$$.user,$condition_sort$$,function($error$$,$condition$$){setImmediate(()=>{if($error$$)return $callback$$({error:$error$$.message||$error$$.error||$error$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$$,function($e$$,$condition$$){if($e$$)return Logger.error("dynamicFinding",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.condition=
|
|
11
|
+
$condition$$;$callback$$()},{listinfo_code:$listinfo_code$$,req:$req$$}):($req$$.condition=$condition$$,$callback$$())})},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition_sort$$,function($e$$,$condition$$){if($e$$)return Logger.error("dynamicFinding",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.condition=$condition$$;$callback$$()},{listinfo_code:$listinfo_code$$,req:$req$$}):($req$$.condition=$condition_sort$$,$callback$$())})},
|
|
12
|
+
function($callback$$){if($shareRoute$$)return $callback$$();setImmediate(async()=>{let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.getRightByItem($current_id_app$$,$model$$,$req$$.user.email,function($e$$,$_condition$$,$admin$$){if($e$$)return Logger.error("[findHandler] [getRightByItem] L\u1ed7i Kh\u00f4ng c\u00f3 quy\u1ec1n:",$e$$),$callback$$({error:$e$$.error||$e$$.message||$e$$,code:$e$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($admin$$)return $callback$$();
|
|
13
|
+
setImmediate(()=>{$req$$.admin=$admin$$;let $condition$$=$req$$.condition;$condition$$||={};$condition$$.$and||($condition$$.$and=[]);if($ctrl$$.options.onRightByItem)$ctrl$$.options.onRightByItem($req$$.user,$_condition$$,($e$$,$_condition$$)=>{setImmediate(()=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});_.isObject($_condition$$)&&Object.keys($_condition$$).length>0&&$condition$$.$and.push($_condition$$);$req$$.condition_assign=$_condition$$;$req$$.condition=$condition$$;
|
|
14
|
+
$callback$$()})});else _.isObject($_condition$$)&&Object.keys($_condition$$).length>0&&$condition$$.$and.push($_condition$$),$req$$.condition_assign=$_condition$$,$req$$.condition=$condition$$,$callback$$()})},$ctrl$$.name,{notNeedRight:$notNeedRight$$,right_code:$listinfo_code$$})})},function($callback$$){if($shareRoute$$||$req$$.admin||!$req$$.condition_assign||Object.keys($req$$.condition_assign).length===0)return $callback$$();setImmediate(()=>{if($ctrl$$.options.assignWiths){let $condition_assignwiths$$=
|
|
15
|
+
{};async.map($ctrl$$.options.assignWiths,($col$$,$callback$$)=>{setImmediate(()=>{let $m$$=global.getModel($col$$.ref_collection);permission.getRightByItem($current_id_app$$,$m$$,$req$$.user.email,function($e$$,$_condition$$,$admin$$){if($e$$)return $callback$$({e:$e$$.error||$e$$.message||$e$$,code:$e$$.code||ERRORS.ERR_NOT_PERMIT_CODE});if($admin$$)return $callback$$();$_condition$$.id_app=$current_id_app$$;$req$$.condition[$col$$.ref_field]&&($_condition$$[$col$$.ref_field]=$req$$.condition[$col$$.ref_field]);
|
|
16
|
+
$m$$.find($_condition$$,{[$col$$.ref_field]:1}).lean().then($rs$$=>{setImmediate(()=>{let $dsdt$$=$rs$$.map($r$$=>$r$$[$col$$.ref_field]);$dsdt$$.push("");$dsdt$$.push(null);$condition_assignwiths$$[$col$$.field]={$in:$dsdt$$};$callback$$()})}).catch($e$$=>{$callback$$($e$$)})},$col$$.ref_module)})},$e$$=>{setImmediate(()=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});if(Object.keys($condition_assignwiths$$).length>0){let $condition$$=$req$$.condition_assign||$req$$.condition;
|
|
17
|
+
$condition$$.$and||($condition$$.$and=[]);$condition$$.$and.push($condition_assignwiths$$)}$callback$$()})})}else $callback$$()})},function($callback$$){setImmediate(async()=>{if($shareRoute$$)return $callback$$();let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user,{action:"view"});permission.hasRight($current_id_app$$,$req$$.user.email,$ctrl$$.module,"view",function($e$$,$permission$$){$e$$&&Logger.error("[findHandler] [hasRight] L\u1ed7i Kh\u00f4ng c\u00f3 quy\u1ec1n truy c\u1eadp:",$e$$);
|
|
18
|
+
if($ctrl$$.options.onQuery)$req$$.permission=$permission$$,$ctrl$$.options.onQuery($req$$,$e$$=>{if($e$$)return $callback$$({error:$e$$.error||$e$$.message||$e$$});if(!$req$$.permission)return $req$$.result=[],$callback$$("0");$callback$$()});else{if(!$permission$$)return $req$$.result=[],$callback$$("0");$callback$$()}},{notNeedRight:$notNeedRight$$,right_code:$listinfo_code$$})})},function($callback$$){setImmediate(async()=>{let $condition$$=$req$$.condition;$condition$$||={};for(var $data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$ in $condition$$)if($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$===
|
|
18
19
|
"_id"||$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.startsWith("$")||$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.includes(".")||_.has($model$$.schema.paths,$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)||delete $condition$$[$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$],$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$==
|
|
19
20
|
"$and"){for(var $dk_limit_group$$ of $condition$$.$and)for(var $key_q$jscomp$1_page$$ in $dk_limit_group$$)$key_q$jscomp$1_page$$==="_id"||$key_q$jscomp$1_page$$.startsWith("$")||$key_q$jscomp$1_page$$.includes(".")||_.has($model$$.schema.paths,$key_q$jscomp$1_page$$)||delete $dk_limit_group$$[$key_q$jscomp$1_page$$];$condition$$.$and=$condition$$.$and.filter($a$$=>Object.keys($a$$).length>0)}$shareRoute$$?($condition$$.shared=!0,$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=
|
|
20
|
-
(await global.getModel("app").find({sale_online:!0},{_id:1}).lean()).map($a$$=>$a$$._id),$condition$$.$and||($condition$$.$and=[]),$condition$$.$and.push({id_app:{$in:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$}}),$condition$$.id_app&&$condition$$.$and.push({id_app:$condition$$.id_app})):_.has($model$$.schema.paths,"id_app")&&$ctrl$$.require_id_app!==!1&&($condition$$.id_app=$
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
(await global.getModel("app").find({sale_online:!0},{_id:1}).lean()).map($a$$=>$a$$._id),$condition$$.$and||($condition$$.$and=[]),$condition$$.$and.push({id_app:{$in:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$}}),$condition$$.id_app&&$condition$$.$and.push({id_app:$condition$$.id_app})):_.has($model$$.schema.paths,"id_app")&&$ctrl$$.require_id_app!==!1&&($condition$$.id_app=$current_id_app$$);$req$$.user.email==="public"&&_.has($model$$.schema.paths,"session_created")&&
|
|
22
|
+
($condition$$.session_created=($req$$.cookies||{}).uid);_.extend($condition$$,$ctrl$$.keyValues);utils.deleteEmptyObject($condition$$);_.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&($condition$$.ma_ct=$ctrl$$.name.toUpperCase());if($condition$$.$where)return $callback$$("Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p s\u1eed d\u1ee5ng $where");if($req$$.fetch_by_groups&&$req$$.fetch_by_groups.model_group&&$req$$.fetch_by_groups.field){var $condition_group_rows_number$$=$req$$.fetch_by_groups.condition||
|
|
23
|
+
{};$condition_group_rows_number$$.status=!0;$condition_group_rows_number$$.id_app=$current_id_app$$;$condition$$[$req$$.fetch_by_groups.field]&&($condition_group_rows_number$$[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]=$condition$$[$req$$.fetch_by_groups.field])}if($req$$.query.count)return $data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=0,$condition_group_rows_number$$&&($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=
|
|
23
24
|
await global.getModel($req$$.fetch_by_groups.model_group).countDocuments($condition_group_rows_number$$)),$condition_group_rows_number$$=await $model$$.countDocuments($condition$$),$req$$.result={groups_number:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$,rows_number:$condition_group_rows_number$$},$callback$$("0");$req$$.query.pagination&&($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=await $model$$.countDocuments($condition$$),
|
|
24
|
-
$req$$.pagination={total:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$});let $field_not_right$$;try{$field_not_right$$=await permission.getFieldNotRight($
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
$req$$.pagination={total:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$});let $field_not_right$$;try{$field_not_right$$=await permission.getFieldNotRight($current_id_app$$,$req$$.user.email,$ctrl$$.name)}catch($e$$){$field_not_right$$=[]}$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=$req$$.query.fields;let $gfields$$={};$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$&&(_.isArray($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)?
|
|
26
|
+
$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.forEach($f$$=>{$f$$!=="_id"&&($gfields$$[$f$$]=1)}):_.isObject($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)?$gfields$$={...$gfields$$,...$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$}:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.split(",").filter($f$$=>$f$$&&$field_not_right$$.indexOf($f$$)<
|
|
27
|
+
0).forEach($f$$=>{$f$$!=="_id"&&($gfields$$[$f$$]=1)}));$field_not_right$$.forEach($f$$=>{Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0});!$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$&&(($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=$req$$.query.notfields)&&(_.isArray($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)?$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.forEach($f$$=>
|
|
28
|
+
{$f$$&&$f$$!=="_id"&&(Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)}):_.isObject($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)?$gfields$$={...$gfields$$,...$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$}:$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.split(",").forEach($f$$=>{$f$$&&$f$$!=="_id"&&(Object.keys($gfields$$).find($k$$=>
|
|
29
|
+
$gfields$$[$k$$]==1)?delete $gfields$$[$f$$]:$gfields$$[$f$$]=0)})),$shareRoute$$||$req$$.user.email==="public")&&(Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)?(delete $gfields$$.dataview_to,delete $gfields$$.dataview_to_users):($gfields$$.dataview_to=0,$gfields$$.dataview_to_users=0));$condition$$.$text&&($gfields$$||={},$gfields$$.textScore={$meta:"textScore"});delete $req$$.query_cache;$ctrl$$.cache&&($req$$.query_cache={..._.cloneDeep($req$$.query),..._.cloneDeep($condition$$)},delete $req$$.query_cache.q,
|
|
30
|
+
delete $req$$.query_cache.refresh_required,$req$$.query_cache.gfields=_.cloneDeep($gfields$$));const $fetchData$$=($condition$$,$limit$$,$page$$,$callback$$)=>{setImmediate(async()=>{let $query$$;if($req$$.query.group||$req$$.query.project||$req$$.query.match||$req$$.query.aggregate||$req$$.query.$aggregate)try{if($req$$.query.aggregate){var $aggregate_piples_sort$$=JSONParser($req$$.query.$aggregate||$req$$.query.aggregate);if(!Array.isArray($aggregate_piples_sort$$))return $callback$$({error:"Aggregate ph\u1ea3i l\u00e0 m\u1ed9t m\u1ea3ng"});
|
|
30
31
|
if($aggregate_piples_sort$$.find($f$$=>$f$$.$lookup))return $callback$$({error:"Kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e9p s\u1eed d\u1ee5ng $lookup trong aggregate"});$aggregate_piples_sort$$=[{$match:$condition$$},...$aggregate_piples_sort$$];$query$$=$model$$.aggregate($aggregate_piples_sort$$)}else{$query$$=$model$$.aggregate([{$match:$condition$$}]);let $group$$;$req$$.query.group&&($group$$=JSONParser($req$$.query.group),$query$$.group($group$$));if($req$$.query.match){let $match$$=JSONParser($req$$.query.match);
|
|
31
32
|
$query$$.match($match$$)}let $project$$;if($req$$.query.project)$project$$=JSONParser($req$$.query.project),$query$$.project($project$$);else if($gfields$$&&Object.keys($gfields$$).length>0)$project$$=$gfields$$;else if($project$$={_id:1},$group$$)for(let $key$$ in $group$$)$project$$[$key$$]=1;$query$$.project($project$$)}}catch($e$$){return Logger.error("[findHanlder]",$e$$,$req$$.query),$callback$$({error:$e$$.message||$e$$.error||$e$$})}else _.has($model$$.schema.paths,"id_app")&&Object.keys($gfields$$).length>
|
|
32
33
|
0&&Object.keys($gfields$$).find($k$$=>$gfields$$[$k$$]==1)&&($gfields$$.id_app=1),$query$$=$model$$.find($condition$$,$gfields$$);$aggregate_piples_sort$$=$req$$.sort;if(!$aggregate_piples_sort$$)$gfields$$.textScore&&($aggregate_piples_sort$$={textScore:{$meta:"textScore"}});else for(var $key$$ in $aggregate_piples_sort$$)if($key$$!=="textScore"&&$aggregate_piples_sort$$[$key$$]!=1&&$aggregate_piples_sort$$[$key$$]!=-1)return Logger.error("sort is valid",$aggregate_piples_sort$$,$key$$,$aggregate_piples_sort$$[$key$$]),
|
|
@@ -34,25 +35,26 @@ $callback$$({error:`Sort ${JSON.stringify($aggregate_piples_sort$$)} is not vali
|
|
|
34
35
|
$query$$.lean&&($query$$=$query$$.lean());if($req$$.query.explainQuery){$req$$.query.explainQuery!="explainQuery"&&$req$$.query.explainQuery!="executionStats"&&($req$$.query.explainQuery="queryPlanner");try{const $filter$$=$query$$.getFilter(),$projection$$=$query$$.getOptions().projection||{},$skip$$=$query$$.getOptions().skip||0,$limit$$=$query$$.getOptions().limit||0,$sort$$=$query$$.getOptions().sort||{},$explainResult$$=await $query$$.mongooseCollection.find($filter$$,{projection:$projection$$}).skip($skip$$).limit($limit$$).sort($sort$$).explain($req$$.query.explainQuery),
|
|
35
36
|
{parsedQuery:$parsedQuery$$,winningPlan:$winningPlan$$}=$explainResult$$.queryPlanner||{},{executionSuccess:$executionSuccess$$,nReturned:$nReturned$$,executionTimeMillis:$executionTimeMillis$$,totalKeysExamined:$totalKeysExamined$$,totalDocsExamined:$totalDocsExamined$$}=$explainResult$$.executionStats||{};$callback$$(null,[{queryPlanner:{parsedQuery:$parsedQuery$$,winningPlan:$winningPlan$$},executionStats:{executionSuccess:$executionSuccess$$,nReturned:$nReturned$$,executionTimeMillis:$executionTimeMillis$$,
|
|
36
37
|
totalKeysExamined:$totalKeysExamined$$,totalDocsExamined:$totalDocsExamined$$},_id:""}])}catch($e$$){$callback$$($e$$)}}else $query$$.lean().then($rs$$=>{$callback$$(null,$rs$$)}).catch($e$$=>{$callback$$($e$$)})})};$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$=$req$$.query;delete $data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.access_token;$req$$.user&&!$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$.count&&
|
|
37
|
-
$ctrl$$.name!=="log"&&$ctrl$$.name!=="labelinfo"&&$ctrl$$.name!=="listinfo"&&$ctrl$$.name!=="reportinfo"&&$ctrl$$.name!=="moduleinfo"&&$ctrl$$.name!=="options"&&global.getModel("log").create({id_app:$
|
|
38
|
-
0);let $limit$$=$req$$.query.limit;$req$$.query.type_data!=="xlsx"&&$req$$.query.type_data!=="json_export"&&$req$$.query.rpt!="1"&&($limit
|
|
38
|
+
$ctrl$$.name!=="log"&&$ctrl$$.name!=="labelinfo"&&$ctrl$$.name!=="listinfo"&&$ctrl$$.name!=="reportinfo"&&$ctrl$$.name!=="moduleinfo"&&$ctrl$$.name!=="options"&&global.getModel("log").create({id_app:$current_id_app$$,id_func:$ctrl$$.name,action:"QUERY",data:{condition:JSON.stringify($data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$)}},$req$$.user.email,$req$$.user_agent,$req$$);let $page_fetch$$=Number($req$$.query.page||0);isNaN($page_fetch$$)&&($page_fetch$$=
|
|
39
|
+
0);let $limit$$=$req$$.query.limit;$limit$$&&=Number($limit$$);isNaN($limit$$)&&($limit$$=0);$req$$.query.type_data!=="xlsx"&&$req$$.query.type_data!=="json_export"&&$req$$.query.rpt!="1"&&($limit$$||=$ctrl$$.require_id_app!==!1&&$ctrl$$.name!=="right"&&$ctrl$$.name!=="labelinfo"?20:500,$limit$$&&$limit$$>500&&!$req$$.query.print&&$ctrl$$.require_id_app!==!1&&$ctrl$$.name!=="right"&&$ctrl$$.name!=="labelinfo"&&($limit$$=500));$req$$.pagination&&($limit$$||=20,$req$$.pagination.page=$page_fetch$$?
|
|
39
40
|
$page_fetch$$:1,$req$$.pagination.limit=$limit$$,$req$$.pagination.totalPages=Math.ceil($req$$.pagination.total/$limit$$));let $condition_groups$$=[];if($condition_group_rows_number$$){let $field_ref$$=$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field;$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$={[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1};$dk_limit_group$$=$req$$.fetch_by_groups.limit_group||10;$key_q$jscomp$1_page$$=
|
|
40
41
|
Number($req$$.query.page||0);isNaN($key_q$jscomp$1_page$$)&&($key_q$jscomp$1_page$$=0);let $skip$$=0;$key_q$jscomp$1_page$$>1&&($skip$$=($key_q$jscomp$1_page$$-1)*$dk_limit_group$$);$skip$$<0&&($skip$$=0);(await global.getModel($req$$.fetch_by_groups.model_group).find($condition_group_rows_number$$,$data_log_fields_fields$jscomp$1_groups_number_id_sellers_key_q_notfields_rows_number$$).sort({stt:1,[$req$$.fetch_by_groups.ref_field||$req$$.fetch_by_groups.field]:1}).skip($skip$$).limit($dk_limit_group$$).lean()).forEach($g$$=>
|
|
41
42
|
{let $c$$={...$condition$$};$c$$[$req$$.fetch_by_groups.field]=$g$$[$field_ref$$];$condition_groups$$.push($c$$)});$condition_groups$$.length==0?$condition_groups$$=[$condition$$]:($page_fetch$$=0,$req$$.fetch_by_groups.limit&&($limit$$=Math.max(Number($req$$.fetch_by_groups.limit),Math.round($limit$$/$condition_groups$$.length))))}else $condition_groups$$=[$condition$$];async.map($condition_groups$$,($condition$$,$cb$$)=>{$fetchData$$($condition$$,$limit$$,$page_fetch$$,$cb$$)},($e$$,$obj4views$$)=>
|
|
42
43
|
{if($e$$)return Logger.error("exec query find",$e$$,JSON.stringify($condition$$)),$callback$$({error:$e$$.error||$e$$.message||$e$$});let $obj4view$$=$obj4views$$.reduce(($a$$,$b$$)=>$a$$.concat($b$$),[]);$obj4view$$||=[];async.parallel({found:function($callback$$){$ctrl$$.found?$ctrl$$.found($req$$.user,$condition$$,$obj4view$$,function($error$$,$items$$){setImmediate(()=>{$callback$$($error$$,$items$$)})}):$callback$$(null,$obj4view$$)},set_collection_name:function($callback$$){$obj4view$$.forEach($obj$$=>
|
|
43
44
|
{$obj$$.collection_name||($obj$$.collection_name=$ctrl$$.collection_name)});$callback$$(null)}},function($error$$,$rs$$){setImmediate(()=>{if($error$$)return $callback$$({error:$error$$.error||$error$$.message||$error$$});$obj4view$$=$rs$$.found;async.parallel({e_view:function($callback$$){$ctrl$$.onView($req$$.user,$obj4view$$,($error$$,$viewValue$$)=>{setImmediate(()=>{if($error$$)return Logger.error("Erron on view:",$error$$),$callback$$($error$$);$callback$$(null,$viewValue$$)})},{req:$req$$,
|
|
44
|
-
shareRoute:$shareRoute$$})}},async function($
|
|
45
|
-
$
|
|
46
|
-
|
|
47
|
-
$
|
|
48
|
-
$d$$.toDate(),$item$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){Logger.error("Error convert to date"
|
|
45
|
+
shareRoute:$shareRoute$$})}},async function($e$$,$_rs_func_string_rs$$){if($error$$)return $callback$$({error:$error$$.error||$error$$.message||$error$$});if($req$$.query.type_data==="xlsx"){if($req$$.body.template){var {template:$_groupBy_template$$}=$req$$.body;try{var $app_dir_root_template_fileName$$=await generateDefaultExcel({title:$_groupBy_template$$.title,data:$_rs_func_string_rs$$.e_view,columns:$_groupBy_template$$.columns,filterFields:$_groupBy_template$$.filterFields,condition:$_groupBy_template$$.condition||
|
|
46
|
+
$req$$.body.q||$req$$.query||{}});$req$$.result={url:`https://${$req$$.host}/downloads/temp/${$app_dir_root_template_fileName$$}`};$req$$.dataType="json";return $callback$$("0")}catch($e$$){return $callback$$($e$$)}}$app_dir_root_template_fileName$$=(configs.paths||{}).templates;let $excelTemplate$$;if($e$$=$req$$.query.id_template){if(!global.mongoose.Types.ObjectId.isValid($e$$))return $callback$$({error:"ID m\u1eabu file xu\u1ea5t kh\u00f4ng h\u1ee3p l\u1ec7"});$excelTemplate$$=await global.getModel("exportexceltemplate").findById($e$$);
|
|
47
|
+
if(!$excelTemplate$$||!$excelTemplate$$.file)return $callback$$({error:"M\u1eabu file xu\u1ea5t kh\u00f4ng t\u1ed3n t\u1ea1i"});$_groupBy_template$$=$app_dir_root_template_fileName$$?`${path.dirname($app_dir_root_template_fileName$$)}${$excelTemplate$$.file}`:`${path.dirname(__dirname)}${$excelTemplate$$.file}`}else $app_dir_root_template_fileName$$&&($_groupBy_template$$=`${$app_dir_root_template_fileName$$}/excels/lists/${$ctrl$$.name}.xlsx`),$_groupBy_template$$&&fs.existsSync($_groupBy_template$$)||
|
|
48
|
+
($_groupBy_template$$=`${path.dirname(__dirname)}/templates/excels/lists/${$ctrl$$.name}.xlsx`);if(!fs.existsSync($_groupBy_template$$))return $callback$$({error:"File m\u1eabu excel ch\u01b0a \u0111\u01b0\u1ee3c khai b\u00e1o t\u1ea1i '"+$_groupBy_template$$+"'"});$app_dir_root_template_fileName$$={};$_rs_func_string_rs$$.e_view.forEach($item$$=>{for(let $_key$$ in $item$$){let $_v$$=$item$$[$_key$$];if(_.isObject($_v$$))for(let $__key$$ in $_v$$){let $__v$$=$_v$$[$__key$$];if(!_.isFunction($__v$$))if($_key$$.indexOf("user")<
|
|
49
|
+
0&&($__key$$.indexOf("ngay")>=0||$__key$$.indexOf("date")>=0))try{$item$$[`${$_key$$}_${$__key$$}`]=new Date($__v$$)}catch($e$$){$item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else $item$$[`${$_key$$}_${$__key$$}`]=$__v$$}else if($_v$$&&$_key$$.indexOf("user")<0&&($_key$$.indexOf("ngay")>=0||$_key$$.indexOf("date")>=0))try{Logger.info("convert date",$_key$$,$_v$$);let $d$$=moment($_v$$,"YYYY-MM-DD");$d$$.isValid()&&($item$$[`${$_key$$}`]=$d$$.toDate(),$item$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){Logger.error("Error convert to date",
|
|
50
|
+
$_v$$,$e$$)}}});$app_dir_root_template_fileName$$.detail=$_rs_func_string_rs$$.e_view;if($excelTemplate$$&&$excelTemplate$$.handle_data){$_rs_func_string_rs$$=`return (async ()=>{
|
|
49
51
|
try{
|
|
50
52
|
${$excelTemplate$$.handle_data}
|
|
51
53
|
}catch(e){
|
|
52
54
|
return {error:e}
|
|
53
55
|
}
|
|
54
56
|
|
|
55
|
-
})`;try{if(($
|
|
56
|
-
$e$$.error||$e$$})}}excelReport($
|
|
57
|
-
...$req$$.query,company:{...$req$$.user.current_app_info},detail:$
|
|
58
|
-
$e$$),$callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$_items$$;$callback$$("0")})):($req$$.result=$
|
|
57
|
+
})`;try{if(($app_dir_root_template_fileName$$=await evalute($_rs_func_string_rs$$,{data:$app_dir_root_template_fileName$$,moment,numeral,_,utils})())&&$app_dir_root_template_fileName$$.error)return Logger.error($app_dir_root_template_fileName$$.error,$_rs_func_string_rs$$),$callback$$({error:$app_dir_root_template_fileName$$.error.message||$app_dir_root_template_fileName$$.error.error||$app_dir_root_template_fileName$$.error})}catch($e$$){return Logger.error($e$$,$_rs_func_string_rs$$),
|
|
58
|
+
$callback$$({error:$e$$.message||$e$$.error||$e$$})}}excelReport($_groupBy_template$$,$app_dir_root_template_fileName$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return Logger.error("excelReport",$e$$),$callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$result$$;$req$$.dataType="xlsx";$callback$$("0")})},{timezone:configs.timezone||"Asia/Ho_Chi_Minh"})}else $req$$.query.print&&$req$$.query.id_rpt&&global.mongoose.Types.ObjectId.isValid($req$$.query.id_rpt)?htmlReport($req$$.query.id_rpt,
|
|
59
|
+
{...$req$$.user.current_app_info,...$req$$.query,company:{...$req$$.user.current_app_info},detail:$_rs_func_string_rs$$.e_view,details:$_rs_func_string_rs$$.e_view}).then($rs$$=>{$req$$.result=$rs$$;$callback$$("0")},$e$$=>{Logger.error("htmlReport",$e$$);$callback$$($e$$)}):($_rs_func_string_rs$$=$_rs_func_string_rs$$.e_view,$req$$.query.groupBy?($_groupBy_template$$=$req$$.query.groupBy.split(","),$_rs_func_string_rs$$.groupBy($_groupBy_template$$,[],($e$$,$_items$$)=>{if($e$$)return Logger.error("jsonReport",
|
|
60
|
+
$e$$),$callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$_items$$;$callback$$("0")})):($req$$.result=$_rs_func_string_rs$$,$callback$$("0")))})})})})})}],$e$$=>{if($e$$&&$e$$!="0")return $callback$$($e$$);$callback$$(null,{result:$req$$.pagination?{data:$req$$.result,pagination:$req$$.pagination}:$req$$.result,dataType:$req$$.dataType||"json"})})};module.exports=findHanlder;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
const fs=require("fs"),moment=require("moment"),numeral=require("numeral"),_=require("lodash"),path=require("path"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),textReport=require("../libs/textReport"),excelReport=require("excel-report"),{JSONParser,evalute,prepareParameters,getParameterData}=require("../libs/utils"),{getCacheReport}=require("../libs/redis-cache"),utils=require("../libs/utils"),
|
|
2
|
-
$ctrl$$.module,$module$$=$ctrl$$.module,$options$$=$ctrl$$.options;let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user);delete $req$$.query.rpt;let $body$$={};_.isObject($req$$.body)&&($body$$=$req$$.body);$req$$.query={...$req$$.query,...$body$$};try{for(let $q$$ in $req$$.query)if(!$req$$.query[$q$$])delete $req$$.query[$q$$];else if(_.isString($req$$.query[$q$$])&&($req$$.query[$q$$].indexOf("[")>=0||$req$$.query[$q$$].indexOf("{")>=0))try{$req$$.query[$q$$]=
|
|
3
|
-
$req$$.query[$q$$],$rptId$$,"...")}delete $req$$.query.t;$req$$.query.tu_ngay&&($req$$.query.tu_ngay=moment(new Date($req$$.query.tu_ngay)).startOf("date").toDate());$req$$.query.den_ngay&&($req$$.query.den_ngay=moment(new Date($req$$.query.den_ngay)).endOf("date").toDate());$req$$.query.tu_ngay_kt&&($req$$.query.tu_ngay_kt=moment(new Date($req$$.query.tu_ngay_kt)).startOf("date").toDate());$req$$.query.den_ngay_kt&&($req$$.query.den_ngay_kt=
|
|
4
|
-
$options$$.onExport||($options$$.onExport=function($app$$,$next$$){$next$$()});let $getData$$,$_new_query$$={...$req$$.query};delete $_new_query$$.id_rpt;delete $_new_query$$.jsonstream;delete $_new_query$$.cType;delete $_new_query$$.refresh_required;delete $_new_query$$.isDrilldown;let $cacheData$$=await getCacheReport($req$$.user.email,$req$$.user.current_id_app,$rptId$$,$req$$.query.id_session,null,null,JSON.stringify($_new_query$$))
|
|
5
|
-
$cacheData$$.data)}:$ctrl$$.getData:$ctrl$$.getData;let $streamData$$=async function($app$$){await $getData$$($req$$,async function($
|
|
6
|
-
$
|
|
7
|
-
delete $app$$.zalo_code;delete $app$$.zalo_oa_id;delete $app$$.zalo_code_verifier;delete $app$$.zalo_code_challenge;delete $app$$.zalo_access_token;delete $app$$.zalo_refresh_token;delete $app$$.google_credentials;delete $app$$.sip_uri;delete $app$$.sip_password;delete $app$$.sip_websocket;delete $app$$.voiip_access_token;delete $app$$.voiip_webhook;delete $app$$.wallet_address;delete $app$$.wallet_token;delete $app$$.owner;delete $app$$.default_password;
|
|
8
|
-
delete $app$$.email_secure;delete $app$$.email_authMethod;delete $app$$.email_user;delete $app$$.email_pass;delete $app$$.email_name;delete $app$$.ssl_key;delete $app$$.ssl_cert;delete $app$$.ssl_ca;$app$$.company=$app$$.appInfo={...$app$$};_.extend($app$$,$req$$.query);delete $app$$.access_token;for(var $func_string_key$$ in $app$$)$
|
|
9
|
-
$app$$.details=$
|
|
1
|
+
const fs=require("fs"),moment=require("moment"),numeral=require("numeral"),_=require("lodash"),path=require("path"),permission=require("../libs/permission"),htmlReport=require("../libs/htmlReport"),textReport=require("../libs/textReport"),excelReport=require("excel-report"),{JSONParser,evalute,prepareParameters,getParameterData}=require("../libs/utils"),{getCacheReport}=require("../libs/redis-cache"),utils=require("../libs/utils"),{generateDefaultExcel}=require("../libs/excelHelper"),rptExcelHandler=
|
|
2
|
+
async($ctrl$$,$req$$,$callback$$)=>{const $rptId$$=$ctrl$$.module,$module$$=$ctrl$$.module,$options$$=$ctrl$$.options;let $notNeedRight$$=await $ctrl$$.notNeedRight($req$$.user);delete $req$$.query.rpt;let $body$$={};_.isObject($req$$.body)&&($body$$=$req$$.body);$req$$.query={...$req$$.query,...$body$$};try{for(let $q$$ in $req$$.query)if(!$req$$.query[$q$$])delete $req$$.query[$q$$];else if(_.isString($req$$.query[$q$$])&&($req$$.query[$q$$].indexOf("[")>=0||$req$$.query[$q$$].indexOf("{")>=0))try{$req$$.query[$q$$]=
|
|
3
|
+
JSONParser($req$$.query[$q$$])}catch($e$$){Logger.error("can't parse json",$req$$.query[$q$$],$rptId$$,"...")}delete $req$$.query.t;$req$$.query.tu_ngay&&($req$$.query.tu_ngay=moment(new Date($req$$.query.tu_ngay)).startOf("date").toDate());$req$$.query.den_ngay&&($req$$.query.den_ngay=moment(new Date($req$$.query.den_ngay)).endOf("date").toDate());$req$$.query.tu_ngay_kt&&($req$$.query.tu_ngay_kt=moment(new Date($req$$.query.tu_ngay_kt)).startOf("date").toDate());$req$$.query.den_ngay_kt&&($req$$.query.den_ngay_kt=
|
|
4
|
+
moment(new Date($req$$.query.den_ngay_kt)).endOf("date").toDate());$options$$.onExport||($options$$.onExport=function($app$$,$next$$){$next$$()});let $getData$$,$_new_query$$={...$req$$.query};delete $_new_query$$.id_rpt;delete $_new_query$$.jsonstream;delete $_new_query$$.cType;delete $_new_query$$.refresh_required;delete $_new_query$$.isDrilldown;let $cacheData$$=await getCacheReport($req$$.user.email,$req$$.user.current_id_app,$rptId$$,$req$$.query.id_session,null,null,JSON.stringify($_new_query$$));
|
|
5
|
+
$getData$$=$cacheData$$?$cacheData$$.data?function($req$$,$callback$$){$callback$$(null,$cacheData$$.data)}:$ctrl$$.getData:$ctrl$$.getData;let $streamData$$=async function($app$$){await $getData$$($req$$,async function($e$$,$data_report$$){if($e$$)return Logger.error("report getData",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$rptId$$,action:"EXCELRPT",data:{condition:JSON.stringify($req$$.query)}},
|
|
6
|
+
$req$$.user.email,$req$$.user_agent,$req$$);let $data$$=$data_report$$;_.isArray($data_report$$)||($data$$=$data_report$$.data||$data_report$$.rows||[$data_report$$]);delete $app$$.participants;delete $app$$.expire_date;delete $app$$.sale_online;delete $app$$.viettel_user;delete $app$$.viettel_password;delete $app$$.viettel_url_service;delete $app$$.vnpt_user;delete $app$$.vnpt_password;delete $app$$.vnpt_url_service;delete $app$$.easy_user;delete $app$$.easy_password;delete $app$$.easy_url_service;
|
|
7
|
+
delete $app$$.zalo_app_id;delete $app$$.zalo_secret_key;delete $app$$.zalo_code;delete $app$$.zalo_oa_id;delete $app$$.zalo_code_verifier;delete $app$$.zalo_code_challenge;delete $app$$.zalo_access_token;delete $app$$.zalo_refresh_token;delete $app$$.google_credentials;delete $app$$.sip_uri;delete $app$$.sip_password;delete $app$$.sip_websocket;delete $app$$.voiip_access_token;delete $app$$.voiip_webhook;delete $app$$.wallet_address;delete $app$$.wallet_token;delete $app$$.owner;delete $app$$.default_password;
|
|
8
|
+
delete $app$$.email_host;delete $app$$.email_port;delete $app$$.email_secure;delete $app$$.email_authMethod;delete $app$$.email_user;delete $app$$.email_pass;delete $app$$.email_name;delete $app$$.ssl_key;delete $app$$.ssl_cert;delete $app$$.ssl_ca;$app$$.company=$app$$.appInfo={...$app$$};_.extend($app$$,$req$$.query);delete $app$$.access_token;for(var $func_string_key$$ in $app$$)$e$$=$app$$[$func_string_key$$],_.isDate($e$$)&&($app$$[$func_string_key$$+"_string"]=moment($e$$).format("DD/MM/YYYY"));
|
|
9
|
+
$app$$.detail=$app$$.details=$data$$;$app$$.datasource={...$app$$};if($rptConfig$$&&$rptConfig$$.handle_data_expression){if($rptConfig$$.handle_data_expression.indexOf("async ")>=0)return $callback$$({error:"async function is not allow"});$func_string_key$$=`return (async ()=>{
|
|
10
10
|
try{
|
|
11
11
|
${$rptConfig$$.handle_data_expression}
|
|
12
12
|
}catch(e){
|
|
@@ -20,13 +20,14 @@ $rptId$$).toLowerCase()}).lean())&&$func_string$$.handle_data_expression){if($fu
|
|
|
20
20
|
}catch(e){
|
|
21
21
|
return {error:e}
|
|
22
22
|
}
|
|
23
|
-
})`;try{const $rs$$=await evalute($func_string$$,{data:$
|
|
23
|
+
})`;try{const $rs$$=await evalute($func_string$$,{data:$data$$,moment,user:$req$$.user,utils,numeral,getData:getParameterData})();if($rs$$){if($rs$$.error)return Logger.error("global: handle data before export",$rs$$.error,$func_string$$),$callback$$({error:$rs$$.error.message||$rs$$.error});$app$$.detail=$app$$.details=$rs$$}}catch($e$$){return Logger.error("global: handle data before export",$e$$,$func_string$$),$callback$$({error:$e$$.message||$e$$})}}else $app$$.detail.forEach($r$$=>
|
|
24
24
|
{for(let $_key$$ in $r$$){let $_v$$=$r$$[$_key$$];if($_v$$&&($_key$$.indexOf("ngay")>=0||$_key$$.indexOf("date")>=0))try{let $d$$=moment($_v$$);$d$$.isValid()&&($r$$[`${$_key$$}`]=$d$$.toDate(),$r$$[`${$_key$$}_string`]=$d$$.format("DD/MM/YYYY"))}catch($e$$){Logger.error("Error convert to date",$_v$$,$e$$)}}});$rptConfig$$&&$rptConfig$$.parameters&&await prepareParameters($rptConfig$$.parameters,$app$$,$app$$);if($req$$.query.json)$callback$$(null,{type:"json",data:$app$$});else $options$$.onExport($app$$,
|
|
25
|
-
function(){setImmediate(()=>{if($req$$.query.print||$send_to$$)htmlReport($html_template$$,$app$$).then($rs$$=>{$send_to$$&&global.getModel("app").emitEvent($req$$.user.current_id_app,"report",{id_app:$req$$.user.current_id_app,title:$title_template$$,body:$title_template$$,email_content:$rs$$,allow_unsubcribe:!1},null,$send_to$$.split(","),!0,!0);return $callback$$(null,{type:"html",data:$rs$$})},$error$$=>{$callback$$({error:$error$$.message||$error$$.error||$error$$})});else{
|
|
26
|
-
|
|
27
|
-
$
|
|
25
|
+
function(){setImmediate(async()=>{if($req$$.query.print||$send_to$$)htmlReport($html_template$$,$app$$).then($rs$$=>{$send_to$$&&global.getModel("app").emitEvent($req$$.user.current_id_app,"report",{id_app:$req$$.user.current_id_app,title:$title_template$$,body:$title_template$$,email_content:$rs$$,allow_unsubcribe:!1},null,$send_to$$.split(","),!0,!0);return $callback$$(null,{type:"html",data:$rs$$})},$error$$=>{$callback$$({error:$error$$.message||$error$$.error||$error$$})});else{if($templatePath$$==
|
|
26
|
+
"auto"){const {template:$template$$}=$req$$.body;try{const $fileName$$=await generateDefaultExcel({title:$template$$.title,data:$data$$,columns:$template$$.columns,filterFields:$template$$.filterFields,condition:$template$$.condition||$req$$.query||{}});return $callback$$(null,{type:"json",data:{url:`https://${$req$$.host}/downloads/temp/${$fileName$$}`}})}catch($e$$){return $callback$$($e$$)}}let $ext$$=$templatePath$$.split(".").pop();$ext$$==="xlsx"?excelReport($templatePath$$,$app$$,function($error$$,
|
|
27
|
+
$result$$){if($error$$)return Logger.error("[rptExcelHandler] Error export to excel",$error$$),$callback$$({error:$error$$.message||$error$$.error||$error$$});$callback$$(null,{type:"xlsx",data:$result$$})},{timezone:configs.timezone||"Asia/Ho_Chi_Minh"}):textReport($templatePath$$,$app$$,function($error$$,$result$$){if($error$$)return Logger.error("[rptExcelHandler] Error export to text",$error$$),$callback$$({error:$error$$.message||$error$$.error||$error$$});if($ext$$==="docx")$callback$$(null,
|
|
28
|
+
{type:"docx",data:$result$$});else return $callback$$(null,{type:$ext$$,data:$result$$})})}})})})},$id_rpt$$=$req$$.query.id_rpt,$dir_root_templates$$=configs.paths.templates||__dirname,$templatePath$$,$rptConfig$$,$html_template$$,$title_template$$,$send_to$$;(new Promise(($resolve$$,$reject$$)=>{$rptConfig$$=$templatePath$$=void 0;if($id_rpt$$=="default"&&$req$$.body?.template&&$req$$.body?.template.columns)return $templatePath$$="auto",$resolve$$($templatePath$$);if($id_rpt$$&&global.mongoose.Types.ObjectId.isValid($id_rpt$$))global.getModel("rpt").findOne({_id:$id_rpt$$}).lean().then(async function($r$$){if(!$r$$)return Logger.error("Not found excel template",
|
|
28
29
|
$id_rpt$$),$reject$$("Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu");$send_to$$=$req$$.query.send_to||$r$$.send_to;if($req$$.query.print||$send_to$$)$html_template$$=$r$$.html_template,$title_template$$=$r$$.ten_mau_in;else{if($r$$.file_mau_in.indexOf("/file/download")>0){let $id_file$$=$r$$.file_mau_in.split("/").pop();const $file$$=global.getModel("file");try{const $_fileMauIn$$=await $file$$.findOne({_id:$id_file$$}).lean();if(!$_fileMauIn$$)return $reject$$("Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu");
|
|
29
30
|
let $file_name$$=$_fileMauIn$$.file.name,$root$$=configs.paths.uploads;$root$$||($root$$=__dirname,$root$$=path.dirname($root$$),$root$$=path.join($root$$,"uploads"));$templatePath$$=path.join($root$$,$file_name$$)}catch($e$$){return $reject$$($e$$.message||"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu")}}else $templatePath$$=path.dirname($dir_root_templates$$)+$r$$.file_mau_in;fs.existsSync($templatePath$$)||(Logger.error("[rptExcelHandler] file template not found",$templatePath$$),$templatePath$$=`${path.dirname($dir_root_templates$$)}/templates/excels/reports/${$module$$}.xlsx`,
|
|
30
31
|
Logger.info("[rptExcelHandler] using default template",$templatePath$$));fs.existsSync($templatePath$$)||($templatePath$$=`${path.dirname(__dirname)}/templates/excels/reports/${$module$$}.xlsx`,Logger.info("[rptExcelHandler] using default template",$templatePath$$));if(!fs.existsSync($templatePath$$))return $reject$$("M\u1eabu kh\u00f4ng t\u1ed3n t\u1ea1i")}$rptConfig$$=$r$$;return $resolve$$($templatePath$$,$html_template$$)}).catch($error$$=>{Logger.error("Not found excel template",$error$$);return $reject$$($error$$)});
|
|
31
|
-
else
|
|
32
|
-
"view",function($error$$,$hr$$,$app$$){$hr$$?$streamData$$({...$app$$}):$callback$$({error:"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n xu\u1ea5t excel b\u00e1o c\u00e1o n\u00e0y"})},{notNeedRight:$notNeedRight$$})}).catch($e$$=>{Logger.error($e$$);return $e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})})}catch($e$$){return $e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})}};module.exports=rptExcelHandler;
|
|
32
|
+
else return $templatePath$$=`${path.dirname($dir_root_templates$$)}/templates/excels/reports/${$module$$}.xlsx`,fs.existsSync($templatePath$$)||($templatePath$$=`${path.dirname(__dirname)}/templates/excels/reports/${$module$$}.xlsx`),fs.existsSync($templatePath$$)?$resolve$$($templatePath$$):$reject$$("M\u1eabu file xu\u1ea5t kh\u00f4ng h\u1ee3p l\u1ec7 ho\u1eb7c kh\u00f4ng t\u1ed3n t\u1ea1i")})).then(async()=>{$options$$.require_id_app===!1?$streamData$$({}):permission.hasRight($req$$.params.id_app,
|
|
33
|
+
$req$$.user.email,$module$$,"view",function($error$$,$hr$$,$app$$){$hr$$?$streamData$$({...$app$$}):$callback$$({error:"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n xu\u1ea5t excel b\u00e1o c\u00e1o n\u00e0y"})},{notNeedRight:$notNeedRight$$})}).catch($e$$=>{Logger.error($e$$);return $e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})})}catch($e$$){return $e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})}};module.exports=rptExcelHandler;
|
|
@@ -8,6 +8,6 @@ delete $_query$$.isDrilldown;let $getData$$;const $getDataFromServer$$=$ctrl$$.g
|
|
|
8
8
|
case "data":Logger.info("data stream",$rptId$$,"...");_.isArray($data$$)?$rows$$=$rows$$.concat($data$$):$rows$$.push($data$$);$query$$.jsonstream?$res$$.write(JSON.stringify($data$$)+"$$end%"):$prechunk$$?$res$$.write(","+JSON.stringify($data$$)):$res$$.write(JSON.stringify($data$$));$prechunk$$=$data$$;break;case "end":$_interval$$&&clearInterval($_interval$$);setImmediate(()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$rptId$$,action:"VIEWRPT",data:{condition:JSON.stringify($query$$)}},
|
|
9
9
|
$req$$.user.email,$req$$.user_agent,$req$$)});setTimeout(function(){Logger.info("end stream",$rptId$$,"...");$res$$.end();$callback$$(null,"__end_stream__")},1E3);break;default:Logger.info($stream$$,$rptId$$,"..."),$res$$.write("")}else setImmediate(()=>{global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$rptId$$,action:"VIEWRPT",data:{condition:JSON.stringify($query$$)}},$req$$.user.email,$req$$.user_agent,$req$$)}),setImmediate(async()=>{let $report$$=$data$$;if(_.isArray($report$$)){if($query$$.fields){let $fields$$=
|
|
10
10
|
$query$$.fields.split(",");$report$$=$report$$.map($item$$=>{let $_item$$={};$fields$$.forEach($field$$=>{$_item$$[$field$$]=$item$$[$field$$]});return $_item$$})}if($query$$.group_by&&$query$$.group_by_summary)try{$report$$=await $report$$.asyncGroupBy($query$$.group_by.split(","),$query$$.group_by_summary.split(","))}catch($e$$){return Logger.error("report groupBy data",$e$$,$rptId$$,"..."),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})}}if($req$$.query.pagination&&!$from_cache$$)try{let $session$$=
|
|
11
|
-
await setCacheReport($req$$.user.email,$req$$.user.current_id_app,$rptId$$,$report$$,JSON.stringify($_query$$)),$
|
|
12
|
-
$
|
|
13
|
-
$
|
|
11
|
+
await setCacheReport($req$$.user.email,$req$$.user.current_id_app,$rptId$$,$report$$,JSON.stringify($_query$$)),$data_cache$$=$session$$.data_cache||[],$total$$=$data_cache$$.length;$callback$$(null,{...($session$$.info||{}),id_session:$session$$._id.toString(),data:$data_cache$$.slice($skip$$,$skip$$+$limit$$),pagination:{limit:$limit$$,page:$page$$,total:$total$$,totalPages:Math.ceil($total$$/$limit$$)}})}catch($e$$){Logger.error("[rptHandler] L\u1ed7i cache report",$e$$),$callback$$(null,$report$$)}else $callback$$(null,
|
|
12
|
+
$report$$)})})};$options$$.require_id_app===!1?$streamData$$():permission.hasRight($req$$.params.id_app,$req$$.user.email,$module$$,"view",($error$$,$hr$$)=>{$hr$$?$streamData$$():$callback$$({error:"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n xem b\u00e1o c\u00e1o n\u00e0y"})},{notNeedRight:$notNeedRight$$})}catch($e$$){return $e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$})}},rptHandlerAsync=($ctrl$$,$req$$,$res$$)=>new Promise(($resolve$$,$reject$$)=>{rptHandler($ctrl$$,$req$$,($e$$,
|
|
13
|
+
$rs$$)=>{if($e$$)return $reject$$($e$$);$resolve$$($rs$$)},$res$$)}),withSesssion=async($ctrl$$,$req$$,$callback$$,$res$$)=>{if($ctrl$$.options?.useSession)try{const $rs$$=await executeInTransaction(()=>rptHandlerAsync($ctrl$$,$req$$,$res$$));$callback$$(null,$rs$$)}catch($e$$){$callback$$($e$$)}else rptHandler($ctrl$$,$req$$,$callback$$,$res$$)};module.exports=withSesssion;
|