flexbiz-server 12.3.53 → 12.3.55
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 +1 -1
- package/server/controllers/controller.js +1 -1
- package/server/controllers/controllerRPT.js +17 -17
- package/server/controllers/createHandler.js +1 -1
- package/server/controllers/createRouteHandler.js +1 -1
- package/server/controllers/deleteHandler.js +1 -1
- package/server/controllers/deleteManyHandler.js +1 -1
- package/server/controllers/exportHandler.js +1 -1
- package/server/controllers/findHandler.js +2 -2
- package/server/controllers/importFromExcelHandler.js +1 -1
- package/server/controllers/importFromGsHandler.js +1 -1
- package/server/controllers/importFromJsonHandler.js +1 -1
- package/server/controllers/rptCreateRouteHandler.js +1 -1
- package/server/controllers/rptExcelHandler.js +1 -1
- package/server/controllers/rptHandler.js +12 -254
- package/server/controllers/updateBookHandler.js +1 -1
- package/server/controllers/updateFieldHandler.js +1 -1
- package/server/controllers/updateHandler.js +1 -1
- package/server/controllers/updateKeyHandler.js +1 -1
- package/server/libs/sessionContext.js +5 -5
- package/server/models/tontucthoi.js +3 -3
package/package.json
CHANGED
|
@@ -42,7 +42,7 @@ this.router.route($_route_name_route_name$$+"/excel").post($findRoute$$))};
|
|
|
42
42
|
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$$){var $body$$=$req$$.params.id;if(!global.mongoose.Types.ObjectId.isValid($body$$))return $res$$.status(404).send({error:ERRORS.ERR_ID_INVALID,code:ERRORS.ERR_ID_INVALID_CODE});$body$$={_id:$body$$};const $user_agent$$=$req$$.header("user-agent"),$ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress,
|
|
43
43
|
{query:$query$$,user:$user$$,params:$params$$,headers:$headers$$}=$req$$;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$16_result$$,$returnvalue$$)=>{if($e$jscomp$16_result$$)return $res$$.status(400).send($e$jscomp$16_result$$);({result:$e$jscomp$16_result$$}=$returnvalue$$);if(0==$e$jscomp$16_result$$.length)return $res$$.status(404).send({error:ERRORS.ERR_NOT_FOUND,
|
|
44
44
|
code:ERRORS.ERR_NOT_FOUND_CODE});$res$$.send($e$jscomp$16_result$$[0])})}catch($e$$){console.error($e$$),$res$$.status(400).send($e$$)}})};
|
|
45
|
-
controller.prototype.postAgainHandler=function($user$$,$condition$$,$callback$jscomp$0$$,$options$$={req:null}){let $model$$=this.model,$ctrl$$=this;if(!$ctrl$$.post)return $callback$jscomp$0$$(null,{message:"Ch\u01b0\u01a1ng tr\u00ecnh \
|
|
45
|
+
controller.prototype.postAgainHandler=function($user$$,$condition$$,$callback$jscomp$0$$,$options$$={req:null}){let $model$$=this.model,$ctrl$$=this;if(!$ctrl$$.post)return $callback$jscomp$0$$(null,{message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 th\u1ef1c hi\u1ec7n xong"});const $update_tk_vt$$=$condition$$.update_tk_vt;delete $condition$$.update_tk_vt;const $user_update$$={date_updated:new Date,user_updated:$user$$.email};$model$$.find($condition$$).sort({ngay_ct:1}).lean().then(function($objsrepost$$){console.log("[postagain] start repost",
|
|
46
46
|
$condition$$,$objsrepost$$.length," vouchers","by",$user$$.email);setImmediate(()=>{async.map($objsrepost$$,function($obj$$,$callback$$){setImmediate(async()=>{console.log("postAgain: handle data before post",$obj$$.ma_ct,$obj$$.so_ct,$obj$$.ngay_ct,"by",$user$$.email);if($ctrl$$.reposting)try{await $ctrl$$.reposting($user$$,$obj$$)}catch($e$$){return $callback$$({error:"Kh\u00f4ng th\u1ec3 x\u1eed l\u00fd \u0111\u01b0\u1ee3c d\u1eef li\u1ec7u tr\u01b0\u1edbc khi repost ch\u1ee9ng t\u1eeb:"+$obj$$.so_ct+
|
|
47
47
|
", L\u1ed7i: "+($e$$.message||$e$$.error||"")})}$update_tk_vt$$&&$obj$$.details&&(console.log("postAgain: update tk_vt..."),await $obj$$.details.filter($d$$=>$d$$.ma_vt).asyncJoinModel2($obj$$.id_app,global.getModel("dmvt"),{where:"ma_vt",fields:"tk_vt"}),$user_update$$.details=$obj$$.details);try{console.log("postAgain: update voucher..."),await $model$$.updateOne({_id:$obj$$._id},{...$user_update$$})}catch($e$$){return console.error("postAgain: error update data before repost",$e$$),$callback$$({error:"Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt \u0111\u01b0\u1ee3c d\u1eef li\u1ec7u ch\u1ee9ng t\u1eeb "+
|
|
48
48
|
$obj$$.so_ct+",Error:"+$e$$.message||$e$$.error||""})}console.log("postAgain: posting...");postData($obj$$,$ctrl$$,function($e$$,$rs$$){console.log("postAgain: reported",$obj$$.ma_ct,$obj$$.so_ct,$obj$$.ngay_ct,"by",$user$$.email);if($e$$)return $callback$$({error:$e$$.message||$e$$.error||"Kh\u00f4ng th\u1ec3 post s\u1ed5 s\u00e1ch ch\u1ee9ng t\u1eeb:"+$obj$$.so_ct});$callback$$(null,$rs$$)},{req:$options$$.req,kiem_tra_han_muc_cong_no:!1})})},function($e$$){if($e$$)return console.error("postAgain: Error",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';const _=require("lodash"),crypto=require("crypto"),numeral=require("numeral"),Moment=require("moment-timezone"),moment=$time$$=>Moment.tz($time$$,configs.timezone||"Asia/Ho_Chi_Minh"),reportinfo=global.getModel("reportinfo"),{evalute,getParameterData}=require("../libs/utils"),utils=require("../libs/utils"),handlers=require("./handlers");
|
|
2
|
-
class controllerRPT{constructor($router$$,$rptId$$,$fecthData$$,$options$$={}){this.module=$rptId$$;this.router=$router$$;this.options=$options$$;this.fecthDataFunc=$fecthData$$;global.report_controllers[$rptId$$.toUpperCase()]=this;this.base_path=!1===$options$$.require_id_app?"/":"/:id_app/";this.getData=this.getData.bind(this);this.createRoute=this.createRoute.bind(this);this.notNeedRight=async($user$$,$_options$$={})=>{let $nnr$$=$options$$.notNeedRight;_.isFunction($nnr$$)&&($nnr
|
|
3
|
-
$_options$$));return $nnr$$};this.handleResult=async($req$$,$data_response$$,$callback$$)=>{if($data_response$$.error)return $callback$$($data_response$$.error);$data_response$$=$data_response$$.result;var $func_string_rptInfo$$=await reportinfo.findOne({code:($req$$.query.report_info_code||$rptId$$).toLowerCase()}).lean();if($func_string_rptInfo$$&&$func_string_rptInfo$$.handle_data_expression_server){if(0<=$func_string_rptInfo$$.handle_data_expression_server.indexOf("async "))return $callback$$("async function is not allow");
|
|
2
|
+
class controllerRPT{constructor($router$$,$rptId$$,$fecthData$$,$options$$={}){this.module=this.name=$rptId$$;this.router=$router$$;this.options=$options$$;this.fecthDataFunc=$fecthData$$;global.report_controllers[$rptId$$.toUpperCase()]=this;this.base_path=!1===$options$$.require_id_app?"/":"/:id_app/";this.getData=this.getData.bind(this);this.createRoute=this.createRoute.bind(this);this.notNeedRight=async($user$$,$_options$$={})=>{let $nnr$$=$options$$.notNeedRight;_.isFunction($nnr$$)&&($nnr$$=
|
|
3
|
+
$nnr$$($user$$,$_options$$));return $nnr$$};this.handleResult=async($req$$,$data_response$$,$callback$$)=>{if($data_response$$.error)return $callback$$($data_response$$.error);$data_response$$=$data_response$$.result;var $func_string_rptInfo$$=await reportinfo.findOne({code:($req$$.query.report_info_code||$rptId$$).toLowerCase()}).lean();if($func_string_rptInfo$$&&$func_string_rptInfo$$.handle_data_expression_server){if(0<=$func_string_rptInfo$$.handle_data_expression_server.indexOf("async "))return $callback$$("async function is not allow");
|
|
4
4
|
$func_string_rptInfo$$=`return (async ()=>{
|
|
5
5
|
try{
|
|
6
6
|
${$func_string_rptInfo$$.handle_data_expression_server}
|
|
@@ -10,18 +10,18 @@ $func_string_rptInfo$$=`return (async ()=>{
|
|
|
10
10
|
|
|
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 console.error("handle_data_expression_server",$rs$$.error,$func_string_rptInfo$$,$rptId$$),$callback$$($rs$$.error.message||$rs$$.error);$data_response$$=$rs$$}}catch($e$$){return console.error("handle_data_expression_server",$e$$,$func_string_rptInfo$$,$rptId$$),$callback$$($e$$.message||
|
|
12
12
|
$e$$)}}$callback$$(null,$data_response$$)};this.getDataFunc=()=>{console.log("get data from server",$rptId$$,"...");return $options$$.stream?$fecthData$$:async($req$$,$callback$$)=>{try{await $fecthData$$($req$$,($e$jscomp$0$$,$data$$)=>{this.handleResult($req$$,{error:$e$jscomp$0$$,result:$data$$},($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$$,
|
|
13
|
-
{error:$e$$,data:$rs$$},$res$$);if($e$$)return $e$$.error?$res$$.status(500).send($e$$):$res$$.status(500).send({error:$e$$.message||$e$$})
|
|
14
|
-
user_agent:$_req_user_agent$$,ip:$ip$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()&&0!=$options$$.queue){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$$,
|
|
15
|
-
configs:JSON.stringify(configs)},$response$$=>{setImmediate(()=>{if(!$options$$.waiting_message){if($options$$.resHandler)return $options$$.resHandler($req$$,{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_user_agent$$,
|
|
16
|
-
{error:$e$$,data:$returnvalue$$},$res$$);if($e$$)return $res$$.status(400).send($e$$);$res$$.send($returnvalue$$)}})}catch($e$$){console.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$$}=$ip$jscomp$1_req$$;
|
|
17
|
-
$ip$jscomp$1_req$$.connection.remoteAddress;try{if($_req$jscomp$1_user_agent$$={handler:"rptExcelHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$_req$jscomp$1_user_agent$$,ip:$ip$jscomp$1_req$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()&&0!=$options$$.queue){const $id_task$$=`report-export-${crypto.randomBytes(20).toString("hex")}`;
|
|
18
|
-
configs:JSON.stringify(configs)},$response$jscomp$3_returnvalue$$=>{if($response$jscomp$3_returnvalue$$.error)return $res$$.status(400).send($response$jscomp$3_returnvalue$$.error);$response$jscomp$3_returnvalue$$=$response$jscomp$3_returnvalue$$.result;const $result$$=$response$jscomp$3_returnvalue$$.data;switch($response$jscomp$3_returnvalue$$.type){case "xlsx":$res$$.setHeader("Content-Type",
|
|
19
|
-
".xlsx");$res$$.end($result$$,"binary");break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".docx");$res$$.write($result$$,"binary");$res$$.end(null,"binary");break;default:$res$$.send($result$$)}})}else handlers.rptExcelHandler(this,$_req$jscomp$1_user_agent$$,
|
|
20
|
-
$e$jscomp$7_result$$=$returnvalue$$.data;switch($returnvalue$$.type){case "xlsx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".xlsx");$res$$.end($e$jscomp$7_result$$,"binary");break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document")
|
|
21
|
-
"binary");$res$$.end(null,"binary");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$$);$router$$.route(`${this.base_path+this.module}/excel`).get($excelRoute$$);$router$$.route(`${this.base_path+this.module}/excel`).post($excelRoute$$)}getData($req
|
|
22
|
-
{try{$ctrl$$.fecthDataFunc($req$$,($err$$,$data$$,$event$$)=>{if($ctrl$$.options?.stream){if($err$$)return $callback$$($err$$);"data"!=$event$$||$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$$){console.error("[report controller] [getData]"
|
|
23
|
-
$callbackRoute_handler$$,$_options$$={method:"GET",not_use_worker:!1}){const $self$$=this;$_options$$.method=$_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$$,
|
|
24
|
-
$ip$jscomp$2_req$$.header("user-agent");$ip$jscomp$2_req$$=$ip$jscomp$2_req$$.ip||$ip$jscomp$2_req$$.headers["x-forwarded-for"]||$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$$,
|
|
25
|
-
|
|
26
|
-
({result:$response$jscomp$6_result$$}=$response$jscomp$6_result$$);$res$$.send($response$jscomp$6_result$$)})}}catch($e$$){$res$$.status(400).send($e$$)}};"DELETE"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).delete($callbackRoute_handler$$):"POST"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).post($callbackRoute_handler$$):
|
|
27
|
-
this.router.route(`${this.base_path+this.module}/${$routeName$$}`).get($callbackRoute_handler$$)}}module.exports=controllerRPT;
|
|
13
|
+
{error:$e$$,data:$rs$$},$res$$);if($e$$)return $e$$.error?$res$$.status(500).send($e$$):$res$$.status(500).send({error:$e$$.message||$e$$});"__end_stream__"==$rs$$?console.log("[handlerWithSession] end stream...",$rptId$$):$res$$.send($rs$$)},$res$$);else{const {query:$query$$,body:$body$$,user:$user$$,params:$params$$,files:$files$$}=$req$$;var $_req_user_agent$$=$req$$.header("user-agent");const $ip$$=$req$$.ip||$req$$.headers["x-forwarded-for"]||$req$$.connection.remoteAddress;try{if($_req_user_agent$$=
|
|
14
|
+
{handler:"rptHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$_req_user_agent$$,ip:$ip$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()&&0!=$options$$.queue){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$$,
|
|
15
|
+
req:$_req_user_agent$$,module:$rptId$$.toUpperCase(),configs:JSON.stringify(configs)},$response$$=>{setImmediate(()=>{if(!$options$$.waiting_message){if($options$$.resHandler)return $options$$.resHandler($req$$,{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_user_agent$$,
|
|
16
|
+
($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$$);$res$$.send($returnvalue$$)}})}catch($e$$){console.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$$}=$ip$jscomp$1_req$$;
|
|
17
|
+
var $_req$jscomp$1_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$jscomp$1_user_agent$$={handler:"rptExcelHandler",query:$query$$,body:$body$$,user:$user$$,params:$params$$,user_agent:$_req$jscomp$1_user_agent$$,ip:$ip$jscomp$1_req$$,files:$files$$},global.reportMainPool&&!global.reportMainPool.fullQueue()&&0!=$options$$.queue){const $id_task$$=`report-export-${crypto.randomBytes(20).toString("hex")}`;
|
|
18
|
+
global.reportMainPool.exec({id_task:$id_task$$,req:$_req$jscomp$1_user_agent$$,module:$rptId$$.toUpperCase(),configs:JSON.stringify(configs)},$response$jscomp$3_returnvalue$$=>{if($response$jscomp$3_returnvalue$$.error)return $res$$.status(400).send($response$jscomp$3_returnvalue$$.error);$response$jscomp$3_returnvalue$$=$response$jscomp$3_returnvalue$$.result;const $result$$=$response$jscomp$3_returnvalue$$.data;switch($response$jscomp$3_returnvalue$$.type){case "xlsx":$res$$.setHeader("Content-Type",
|
|
19
|
+
"application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".xlsx");$res$$.end($result$$,"binary");break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".docx");$res$$.write($result$$,"binary");$res$$.end(null,"binary");break;default:$res$$.send($result$$)}})}else handlers.rptExcelHandler(this,$_req$jscomp$1_user_agent$$,
|
|
20
|
+
($e$jscomp$7_result$$,$returnvalue$$)=>{if($e$jscomp$7_result$$)return $res$$.status(400).send($e$jscomp$7_result$$);$e$jscomp$7_result$$=$returnvalue$$.data;switch($returnvalue$$.type){case "xlsx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats");$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".xlsx");$res$$.end($e$jscomp$7_result$$,"binary");break;case "docx":$res$$.setHeader("Content-Type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");
|
|
21
|
+
$res$$.setHeader("Content-Disposition","attachment; filename="+$rptId$$+".docx");$res$$.write($e$jscomp$7_result$$,"binary");$res$$.end(null,"binary");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$$);$router$$.route(`${this.base_path+this.module}/excel`).get($excelRoute$$);$router$$.route(`${this.base_path+this.module}/excel`).post($excelRoute$$)}getData($req$$,
|
|
22
|
+
$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$$);"data"!=$event$$||$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$$){console.error("[report controller] [getData]",
|
|
23
|
+
$e$$),$callback$$($e$$.message)}})}createRoute($routeName$$,$callbackRoute_handler$$,$_options$$={method:"GET",not_use_worker:!1}){const $self$$=this;$_options$$.method=$_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$$,
|
|
24
|
+
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"]||$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$$,
|
|
25
|
+
files:$files$$},!global.reportMainPool||global.reportMainPool.fullQueue()||$_options$$.not_use_worker)handlers.rptCreateRouteHandler(this,$_req$jscomp$2_user_agent$$,($e$$,$returnvalue$$)=>{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$$=>
|
|
26
|
+
{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$$);$res$$.send($response$jscomp$6_result$$)})}}catch($e$$){$res$$.status(400).send($e$$)}};"DELETE"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).delete($callbackRoute_handler$$):"POST"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).post($callbackRoute_handler$$):
|
|
27
|
+
"PUT"==$_options$$.method?this.router.route(`${this.base_path+this.module}/${$routeName$$}`).put($callbackRoute_handler$$):this.router.route(`${this.base_path+this.module}/${$routeName$$}`).get($callbackRoute_handler$$)}}module.exports=controllerRPT;
|
|
@@ -33,4 +33,4 @@ var $co_gia_tri_tam_html$$=!1;$obj$$.exfields&&$obj$$.exfields.__files__&&($obj$
|
|
|
33
33
|
collection_link:$ctrl$$.collection_name}).lean().then(()=>{})}).catch($e$$=>{console.error("support updateone",$e$$)}),delete $obj$$.exfields.__supports__,$co_gia_tri_tam_html$$=!0);$co_gia_tri_tam_html$$&&await $model$$.updateOne({_id:$obj$$._id},{exfields:$obj$$.exfields});$ctrl$$.created?$ctrl$$.created($user$$,$obj$$,function($error$jscomp$0$$,$rs$$){setImmediate(()=>{if($error$jscomp$0$$)return $callback$$($error$jscomp$0$$);if($ctrl$$.dynamicCreated)$ctrl$$.dynamicCreated($user$$,$rs$$,function($error$$){if($error$$)return $callback$$($error$$);
|
|
34
34
|
$req$$&&$req$$.uploadFile?($error$$="<html><title>OK</title><body>"+JSON.stringify($rs$$)+"</body></html>",$callback$$(null,$error$$)):$callback$$(null,$rs$$)},{listinfo_code:$listinfo_code$$});else if($req$$&&$req$$.uploadFile){let $html$$="<html><title>OK</title><body>"+JSON.stringify($rs$$)+"</body></html>";$callback$$(null,$html$$)}else $callback$$(null,$rs$$)})}):$ctrl$$.dynamicCreated?$ctrl$$.dynamicCreated($user$$,$obj$$,function($error$jscomp$12_html$$){if($error$jscomp$12_html$$)return $callback$$($error$jscomp$12_html$$);
|
|
35
35
|
$req$$&&$req$$.uploadFile?($error$jscomp$12_html$$="<html><title>OK</title><body>"+JSON.stringify($obj$$)+"</body></html>",$callback$$(null,$error$jscomp$12_html$$)):$callback$$(null,$obj$$)},{listinfo_code:$listinfo_code$$}):$req$$&&$req$$.uploadFile?($co_gia_tri_tam_html$$="<html><title>OK</title><body>"+JSON.stringify($obj$$)+"</body></html>",$callback$$(null,$co_gia_tri_tam_html$$)):$callback$$(null,$obj$$)})}],($e$$,$obj_created$$)=>{$e$$?(console.error($e$$),$callback$jscomp$1$$($e$$)):($e$$=
|
|
36
|
-
$model$$.collection.name,$user$$.current_id_app&&($e$$+=$user$$.current_id_app),delete global.cacheDatas[$e$$],$callback$jscomp$1$$(null,{obj_created:$obj_created$$}))})}catch($e$$){console.error($e$$),$callback$jscomp$1$$($e$$)}},{
|
|
36
|
+
$model$$.collection.name,$user$$.current_id_app&&($e$$+=$user$$.current_id_app),delete global.cacheDatas[$e$$],$callback$jscomp$1$$(null,{obj_created:$obj_created$$}))})}catch($e$$){console.error($e$$),$callback$jscomp$1$$($e$$)}},{handlerWithSession}=require("../libs/sessionContext.js"),creatWithSesssion=async($ctrl$$,$req$$,$callback$$)=>{handlerWithSession(createHanlder,$ctrl$$,$req$$,$callback$$)};module.exports=creatWithSesssion;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use strict';const permission=require("../libs/permission"),{ERRORS}=require("./controllerUtils"),createRouteHandler=async($ctrl$$,$req$$,$callback$$)=>{let $res_send$$=!1;const {routeName:$routeName$$,route_action_key:$route_action_key$$,_options:$_options$$}=$req$$;if(!1===$ctrl$$.require_id_app)try{$ctrl$$[$route_action_key$$]($req$$,function($e$$,$rs$$){if($res_send$$)return console.error("route",$routeName$$,"sent header. callback had call");if($e$$){console.error("create route",$routeName$$,
|
|
2
2
|
$e$$);if($e$$.error)return $res_send$$=!0,$callback$$($e$$);$res_send$$=!0;return $callback$$({error:$e$$.message||$e$$})}$res_send$$=!0;return $callback$$(null,$rs$$)})}catch($e$$){return console.error("route",$routeName$$,$e$$),$res_send$$=!0,$callback$$({error:$e$$.message||$e$$})}else{let $id_app$$=$req$$.params.id_app,$notNeedRight$$=$_options$$.notNeedRight||await $ctrl$$.notNeedRight($req$$.user);permission.hasRight($id_app$$,$req$$.user.email,$ctrl$$.module,"view",function($error$$,$hr$$){if($res_send$$)return console.error("route",
|
|
3
3
|
$routeName$$,"sent header. hasRight had call");if($hr$$)try{$ctrl$$[$route_action_key$$]($req$$,function($e$$,$rs$$){$res_send$$&&console.error("route",$routeName$$,"sent header. callback had call");if($e$$){if($e$$.error)return $res_send$$=!0,$callback$$($e$$);$res_send$$=!0;return $callback$$({error:$e$$.message||$e$$})}$res_send$$=!0;return $callback$$(null,$rs$$)})}catch($e$$){return $res_send$$=!0,console.error("route",$routeName$$,$e$$),$callback$$({error:$e$$.message||$e$$})}else return $res_send$$=
|
|
4
|
-
!0,$callback$$({error:$error$$.error||$error$$||ERRORS.ERR_NOT_PERMIT,code:$error$$.code||ERRORS.ERR_NOT_PERMIT_CODE})},{notNeedRight:$notNeedRight$$})}},{
|
|
4
|
+
!0,$callback$$({error:$error$$.error||$error$$||ERRORS.ERR_NOT_PERMIT,code:$error$$.code||ERRORS.ERR_NOT_PERMIT_CODE})},{notNeedRight:$notNeedRight$$})}},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{handlerWithSession(createRouteHandler,$ctrl$$,$req$$,$callback$$)};module.exports=withSesssion;
|
|
@@ -9,4 +9,4 @@ $hr$$){if($hr$$)checkReference($model$$,$obj$jscomp$2$$,function($error$$){if($e
|
|
|
9
9
|
$e$jscomp$1$$),$e$jscomp$1$$.error?$callback$$($e$jscomp$1$$):$callback$$({error:$e$jscomp$1$$.message||$e$jscomp$1$$});if($ctrl$$.dynamicDeletePost)try{await $ctrl$$.dynamicDeletePost($obj$jscomp$0$$)}catch($e$$){return $callback$$({error:$e$$.message||$e$$.error||$e$$})}$model$$.deleteOne({_id:$obj$jscomp$0$$._id},function($e$jscomp$0$$){if($e$jscomp$0$$)return console.error("delete object",$e$jscomp$0$$),$e$jscomp$0$$.error?$callback$$($e$jscomp$0$$):$callback$$({error:$e$jscomp$0$$.message||$e$jscomp$0$$});
|
|
10
10
|
setImmediate(()=>{$ctrl$$.deleteData({...$obj$jscomp$0$$});global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"DELETE",data:{id:$obj$jscomp$0$$._id,data:$obj$jscomp$0$$}},$req$$.user.email,$req$$.user_agent,$req$$);global.getModel("log").deleteMany({$or:[{id_a:$obj$jscomp$0$$._id},{id_b:$obj$jscomp$0$$._id}]},function($e$$){$e$$&&console.error("Can't delete links\n"+$e$$)})});setImmediate(()=>{$ctrl$$.emit("deleted",$obj$jscomp$0$$);global.getModel("customer").updateActives&&
|
|
11
11
|
global.getModel("customer").updateActives($obj$jscomp$0$$);runWebhooks($ctrl$$,$obj$jscomp$0$$,"DELETE")});pushNotification($ctrl$$,$obj$jscomp$0$$,"delete",null,null,{exclude_token:$req$$.query.access_token});setImmediate(()=>{$ctrl$$.deleted?$ctrl$$.deleted($req$$.user,$obj$jscomp$0$$,function($e$$,$obj$$){setImmediate(()=>{if($e$$)return console.error("deleted",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.obj=$obj$$;$callback$$(null)})}):($req$$.obj=$obj$jscomp$0$$,
|
|
12
|
-
$callback$$(null))})})})})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);$mainCallback$$(null,$req$$.obj)})},{
|
|
12
|
+
$callback$$(null))})})})})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);$mainCallback$$(null,$req$$.obj)})},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{handlerWithSession(deleteHandler,$ctrl$$,$req$$,$callback$$)};module.exports=withSesssion;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use strict';const permission=require("../libs/permission"),deleteManyHandler=async($ctrl$$,$req$$,$mainCallback$$)=>{if(!$req$$.user.current_id_app)return $mainCallback$$("Kh\u00f4ng th\u1ec3 xo\u00e1 d\u1eef li\u1ec7u");permission.isAdmin($req$$.user.current_id_app,$req$$.user.email,async function($e_query$$,$admin$$){if(!$admin$$||$e_query$$)return $mainCallback$$("Kh\u00f4ng c\u00f3 quy\u1ec1n xo\u00e1 d\u1eef li\u1ec7u");$e_query$$=($req$$.body||{}).condition;if(!$e_query$$)return $mainCallback$$('B\u1ea1n c\u1ea7n cung c\u1ea5p \u0111i\u1ec1u ki\u1ec7n l\u1ecdc d\u1eef li\u1ec7u trong body c\u1ee7a request. V\u00ed d\u1ee5: {"condition":{"so_ct":"123"}}');
|
|
2
|
-
$e_query$$.id_app=$req$$.user.current_id_app;try{const $rs$$=await $ctrl$$.model.deleteMany($e_query$$);$mainCallback$$(null,$rs$$)}catch($e$$){return $mainCallback$$($e$$)}})},{
|
|
2
|
+
$e_query$$.id_app=$req$$.user.current_id_app;try{const $rs$$=await $ctrl$$.model.deleteMany($e_query$$);$mainCallback$$(null,$rs$$)}catch($e$$){return $mainCallback$$($e$$)}})},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{handlerWithSession(deleteManyHandler,$ctrl$$,$req$$,$callback$$)};module.exports=withSesssion;
|
|
@@ -15,4 +15,4 @@ var $dir_root_templates_id_file$$=configs.paths.templates||__dirname;let $templa
|
|
|
15
15
|
($root$$=__dirname,$root$$=path.dirname($root$$),$root$$=path.join($root$$,"uploads"));$templatePath$$=path.join($root$$,$file_name$$)}catch($e$$){return $callback$jscomp$0$$({error:$e$$.message||"Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu"})}}else $templatePath$$=path.dirname($dir_root_templates_id_file$$)+$rs$$.file_mau_in;if(!$templatePath$$||!fs.existsSync($templatePath$$))return $callback$jscomp$0$$({error:"File m\u1eabu kh\u00f4ng t\u1ed3n t\u1ea1i"});let $ext$$=$templatePath$$.split(".").pop();
|
|
16
16
|
"xlsx"===$ext$$?excelReport($templatePath$$,$data4export$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error($e$$),$e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$});$req$$.data=$result$$;$req$$.ext="xlsx";$callback$jscomp$0$$(null)})},{timezone:configs.timezone||"Asia/Ho_Chi_Minh"}):($_data$jscomp$0$$=$data4export$$[0],$_data$jscomp$0$$.datasource={...$_data$jscomp$0$$},$_data$jscomp$0$$.company={...$_app$$},textReport($templatePath$$,$_data$jscomp$0$$,
|
|
17
17
|
function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error("exportToExcel textreport",$e$$),$e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$});"docx"===$ext$$?($req$$.data=$result$$,$req$$.ext="docx"):($req$$.data=$result$$,$req$$.ext="text");$callback$jscomp$0$$(null)})}))}})})})})}).catch($error$$=>{console.error($error$$);return $callback$jscomp$0$$({error:"Kh\u00f4ng t\u1ed3n t\u1ea1i c\u00f4ng ty n\u00e0y"})})}).catch($e$$=>{console.error("exportToExcel find rpt",
|
|
18
|
-
$e$$);return $e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$})})}],$e$$=>{if($e$$)return $callback$jscomp$1$$($e$$);$callback$jscomp$1$$(null,{ext:$req$$.ext,data:$req$$.data})})},{
|
|
18
|
+
$e$$);return $e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$})})}],$e$$=>{if($e$$)return $callback$jscomp$1$$($e$$);$callback$jscomp$1$$(null,{ext:$req$$.ext,data:$req$$.data})})},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{handlerWithSession(exportHandler,$ctrl$$,$req$$,$callback$$)};module.exports=withSesssion;
|
|
@@ -52,5 +52,5 @@ $_rs_templatePath$$+"'"});$app_dir_root_template_e$$={};$rs$jscomp$0$$.e_view.fo
|
|
|
52
52
|
})`;try{if(($app_dir_root_template_e$$=await evalute($_groupBy_excelTemplate_func_string$$,{data:$app_dir_root_template_e$$,moment,numeral,_,utils})())&&$app_dir_root_template_e$$.error)return console.error($app_dir_root_template_e$$.error,$_groupBy_excelTemplate_func_string$$),$callback$jscomp$0$$({error:$app_dir_root_template_e$$.error.message||$app_dir_root_template_e$$.error.error||$app_dir_root_template_e$$.error})}catch($e$$){return console.error($e$$,$_groupBy_excelTemplate_func_string$$),
|
|
53
53
|
$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$})}}excelReport($_rs_templatePath$$,$app_dir_root_template_e$$,function($e$$,$result$$){setImmediate(()=>{if($e$$)return console.error("excelReport",$e$$),$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$result$$;$req$$.dataType="xlsx";$callback$jscomp$0$$("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)?
|
|
54
54
|
htmlReport($req$$.query.id_rpt,{...$req$$.user.current_app_info,...$req$$.query,company:{...$req$$.user.current_app_info},detail:$rs$jscomp$0$$.e_view,details:$rs$jscomp$0$$.e_view}).then($rs$$=>{$req$$.result=$rs$$;$callback$jscomp$0$$("0")},$e$$=>{console.error("htmlReport",$e$$);$callback$jscomp$0$$($e$$)}):($_rs_templatePath$$=$rs$jscomp$0$$.e_view,$req$$.query.groupBy?($_groupBy_excelTemplate_func_string$$=$req$$.query.groupBy.split(","),$_rs_templatePath$$.groupBy($_groupBy_excelTemplate_func_string$$,
|
|
55
|
-
[],($e$$,$_items$$)=>{if($e$$)return console.error("jsonReport",$e$$),$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$_items$$;$callback$jscomp$0$$("0")})):($req$$.result=$_rs_templatePath$$,$callback$jscomp$0$$("0")))})})})})}})}],$e$$=>{if($e$$&&"0"!=$e$$)return $callback$jscomp$1$$($e$$);$callback$jscomp$1$$(null,{result:$req$$.result,dataType:$req$$.dataType||"json"})})},{
|
|
56
|
-
{
|
|
55
|
+
[],($e$$,$_items$$)=>{if($e$$)return console.error("jsonReport",$e$$),$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$_items$$;$callback$jscomp$0$$("0")})):($req$$.result=$_rs_templatePath$$,$callback$jscomp$0$$("0")))})})})})}})}],$e$$=>{if($e$$&&"0"!=$e$$)return $callback$jscomp$1$$($e$$);$callback$jscomp$1$$(null,{result:$req$$.result,dataType:$req$$.dataType||"json"})})},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$)=>
|
|
56
|
+
{handlerWithSession(findHanlder,$ctrl$$,$req$$,$callback$$)};module.exports=withSesssion;
|
|
@@ -10,4 +10,4 @@ $row_master$$[$column$$])||($is_eq$$=!1)});$is_eq$$&&($row_master_exists$$=$m$$)
|
|
|
10
10
|
$row_master$$[$detail_name$$].push($row_detail$$);$cb$$()})},()=>{$req$$.data=$data_new$$;setImmediate(()=>{$callback$$()})})},function($callback$$){setImmediate(async()=>{let $data$$=$req$$.data||[],$columns$$=$req$$.columns;for(let $row$$ of $data$$){let $_first$$=$row$$._first;$_first$$&&0<$_first$$.length&&_.extend($row$$,$_first$$[0])}const $log$$=await global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTEXCEL",data:{data:$data$$,columns:$columns$$,
|
|
11
11
|
status_task:$req$$.status_task}},$req$$.user.email,$req$$.user_agent,$req$$);let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){console.error("parse value",$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,async($e$$,$rs$$)=>{$log$$.result={error:$e$$,result:$rs$$,finished_at:new Date};await $log$$.save();if($e$$)return console.error("import",
|
|
12
12
|
$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.message||$e$$,message:$e$$.message||$e$$});0===$rs$$.rows_error.length?($req$$.result=$rs$$,$callback$$()):($e$$=[...(new Set($rs$$.rows_error.map($r$$=>[...(new Set($r$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", "),$callback$$({message:$e$$,error:$rs$$.error||$rs$$}))},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);
|
|
13
|
-
$mainCallback$$(null,$req$$.result)})},{
|
|
13
|
+
$mainCallback$$(null,$req$$.result)})},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{handlerWithSession(importFromExcel,$ctrl$$,$req$$,$callback$$)};module.exports=withSesssion;
|
|
@@ -7,4 +7,4 @@ range:$range$$});if(0==$response$$.data.values.length)return $callback$$({error:
|
|
|
7
7
|
$req$$.data;if($ctrl$$.options.onImport)$ctrl$$.options.onImport($req$$.user,$data$$,[],function($e$$,$new_data$$){setImmediate(()=>{if($e$$)return console.error("onImport from json:",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.data=$new_data$$||$data$$;$callback$$()})});else $req$$.data=$data$$,$callback$$()},function($callback$$){setImmediate(async()=>{let $data$$=$req$$.data;const $log$$=await global.getModel("log").create({id_app:$req$$.user.current_id_app,
|
|
8
8
|
id_func:$ctrl$$.name,action:"IMPORTJSON",data:{data:$data$$,status_task:$req$$.status_task}},$req$$.user.email,$req$$.user_agent,$req$$);let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){console.error("importFromJson",$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=$values$$[$key$$]})}$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(async()=>{$log$$.result={error:$e$$,result:$rs$$,
|
|
9
9
|
finished_at:new Date};await $log$$.save();if($e$$)return console.error("import from json",$ctrl$$.name,$data$$.length,"rows with error:",$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.error||$e$$.message||$e$$,message:$e$$.message||$e$$.error});if(0===$rs$$.rows_error.length)$req$$.result=$rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$$=>[...(new Set($r$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");
|
|
10
|
-
$callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);$mainCallback$$(null,$req$$.result)})},{
|
|
10
|
+
$callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);$mainCallback$$(null,$req$$.result)})},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{handlerWithSession(importFromGs,$ctrl$$,$req$$,$callback$$)};module.exports=withSesssion;
|
|
@@ -3,5 +3,5 @@ $callback$$()}catch($e$$){return console.error("importFromJson",$e$$),$callback$
|
|
|
3
3
|
$e$$})}$callback$$()}else return $callback$$({error:"Kh\u00f4ng t\u00ecm th\u1ea5y d\u1eef li\u1ec7u c\u1ea7n import"})},function($callback$$){let $data$$=$req$$.data;if($ctrl$$.options.onImport)$ctrl$$.options.onImport($req$$.user,$data$$,[],function($e$$,$new_data$$){setImmediate(()=>{if($e$$)return console.error("onImport from json:",$e$$),$e$$.error?$callback$$($e$$):$callback$$({error:$e$$.message||$e$$});$req$$.data=$new_data$$||$data$$;$callback$$()})});else $req$$.data=$data$$,$callback$$()},
|
|
4
4
|
function($callback$$){setImmediate(async()=>{let $data$$=$req$$.data;const $logData$$=await global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,action:"IMPORTJSON",data:{data:$data$$,status_task:$req$$.status_task}},$req$$.user.email,$req$$.user_agent,$req$$);let $values$$=$req$$.query.values;if($values$$){try{$values$$=JSONParser($values$$)}catch($e$$){console.error("importFromJson",$e$$)}$values$$&&$data$$.forEach($row$$=>{for(let $key$$ in $values$$)$row$$[$key$$]=
|
|
5
5
|
$values$$[$key$$]})}$ctrl$$.import($req$$.user,$req$$.user.current_id_app,$data$$,($e$$,$rs$$)=>{setImmediate(async()=>{$logData$$.result={error:$e$$,result:$rs$$,finished_at:new Date};await $logData$$.save();if($e$$)return console.error("import from json",$ctrl$$.name,$data$$.length,"rows with error:",$e$$),$e$$.error?($e$$.message=$e$$.message||$e$$.error,$callback$$($e$$)):$callback$$({error:$e$$.error||$e$$.message||$e$$,message:$e$$.message||$e$$.error});if(0===$rs$$.rows_error.length)$req$$.result=
|
|
6
|
-
$rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$$=>[...(new Set($r$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);$mainCallback$$(null,$req$$.result)})},{
|
|
6
|
+
$rs$$,$callback$$();else{let $message$$=[...(new Set($rs$$.rows_error.map($r$$=>[...(new Set($r$$.error.map($r$$=>$r$$.error||$r$$)))].join(", "))))].join(", ");$callback$$({error:$rs$$.error||$rs$$,message:$message$$})}})},{replace:!0===$req$$.query.update||"true"==$req$$.query.update,req:$req$$})})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);$mainCallback$$(null,$req$$.result)})},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{handlerWithSession(importFromJSON,
|
|
7
7
|
$ctrl$$,$req$$,$callback$$)};module.exports=withSesssion;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
'use strict';const permission=require("../libs/permission"),createRouteHandler=async($ctrl$$,$req$$,$callback$$)=>{const {routeName:$routeName$$,route_action_key:$route_action_key$$,_options:$_options$$}=$req$$;let $notNeedRight$$=$_options$$.notNeedRight||await $ctrl$$.notNeedRight($req$$.user),$res_send$$=!1;if(!1===$ctrl$$.options.require_id_app)try{$ctrl$$[$route_action_key$$]($req$$,function($e$$,$rs$$){if($res_send$$)return console.error("no id_app route",$routeName$$,"sent header. calback had call");
|
|
2
2
|
if($e$$){console.error("handle create route ",$routeName$$,$e$$);if($e$$.error)return $res_send$$=!0,$callback$$($e$$);$res_send$$=!0;return $callback$$({error:$e$$.message||$e$$})}$res_send$$=!0;return $callback$$(null,$rs$$)})}catch($e$$){return $res_send$$=!0,$callback$$({error:$e$$.message||$e$$})}else permission.hasRight($req$$.params.id_app,$req$$.user.email,$ctrl$$.module,"view",function($error$$,$hr$$){if($res_send$$)return console.error("route",$routeName$$,"sent header. hasRight had call");
|
|
3
3
|
if($hr$$)try{$ctrl$$[$route_action_key$$]($req$$,function($e$$,$rs$$){if($res_send$$)return console.error("route",$routeName$$,"sent header. calback had call");if($e$$){console.error("handle create route ",$routeName$$,$e$$);if($e$$.error)return $res_send$$=!0,$callback$$($e$$);$res_send$$=!0;return $callback$$({error:$e$$.message||$e$$})}$res_send$$=!0;return $callback$$(null,$rs$$)})}catch($e$$){return $callback$$({error:$e$$.message||$e$$})}else $res_send$$=!0,$callback$$({error:"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n xem b\u00e1o c\u00e1o n\u00e0y"})},
|
|
4
|
-
{notNeedRight:$notNeedRight$$})},{
|
|
4
|
+
{notNeedRight:$notNeedRight$$})},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{handlerWithSession(createRouteHandler,$ctrl$$,$req$$,$callback$$)};module.exports=withSesssion;
|
|
@@ -29,4 +29,4 @@ $id_rpt$$),$reject$$("Kh\u00f4ng t\u00ecm th\u1ea5y m\u1eabu");$send_to$$=$req$$
|
|
|
29
29
|
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$$)||(console.log("file template not found",$templatePath$$),$templatePath$$=`${path.dirname($dir_root_templates$$)}/templates/excels/reports/${$module$$}.xlsx`);
|
|
30
30
|
fs.existsSync($templatePath$$)||($templatePath$$=`${path.dirname(__dirname)}/templates/excels/reports/${$module$$}.xlsx`);if(!fs.existsSync($templatePath$$))return $reject$$("M\u1eabu kh\u00f4ng t\u1ed3n t\u1ea1i")}$rptConfig$$=$r$$;return $resolve$$($templatePath$$,$html_template$$)}).catch($error$$=>{console.error("Not found excel template",$error$$);return $reject$$($error$$)});else if($templatePath$$=`${path.dirname($dir_root_templates$$)}/templates/excels/reports/${$module$$}.xlsx`,fs.existsSync($templatePath$$)||
|
|
31
31
|
($templatePath$$=`${path.dirname(__dirname)}/templates/excels/reports/${$module$$}.xlsx`),!fs.existsSync($templatePath$$))return $reject$$("M\u1eabu excel kh\u00f4ng t\u1ed3n t\u1ea1i")})).then(async()=>{!1===$options$$.require_id_app?$streamData$$({}):permission.hasRight($req$$.params.id_app,$req$$.user.email,$module$$,"view",function($error$$,$hr$$,$app$$){$hr$$?$streamData$$({...$app$$}):$callback$jscomp$0$$({error:"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n xu\u1ea5t excel b\u00e1o c\u00e1o n\u00e0y"})},
|
|
32
|
-
{notNeedRight:$notNeedRight$$})}).catch($e$$=>{console.error($e$$);return $e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$})})}catch($e$$){return $e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$})}},{
|
|
32
|
+
{notNeedRight:$notNeedRight$$})}).catch($e$$=>{console.error($e$$);return $e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$})})}catch($e$$){return $e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$})}},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{handlerWithSession(rptExcelHandler,$ctrl$$,$req$$,$callback$$)};module.exports=withSesssion;
|
|
@@ -1,254 +1,12 @@
|
|
|
1
|
-
const moment
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
let body = {};
|
|
14
|
-
if(_.isObject(req.body)) body =req.body;
|
|
15
|
-
let query = {...req.query,...body};
|
|
16
|
-
try{
|
|
17
|
-
if (query.tu_ngay) {
|
|
18
|
-
query.tu_ngay = moment(query.tu_ngay).startOf("date").toDate();
|
|
19
|
-
}
|
|
20
|
-
if (query.den_ngay) {
|
|
21
|
-
query.den_ngay = moment(query.den_ngay).endOf("date").toDate();
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (query.tu_ngay_kt) {
|
|
25
|
-
query.tu_ngay_kt = moment(query.tu_ngay_kt).startOf("date").toDate();
|
|
26
|
-
}
|
|
27
|
-
if (query.den_ngay_kt) {
|
|
28
|
-
query.den_ngay_kt = moment(query.den_ngay_kt).endOf("date").toDate();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if(query.tu_ngay_gio) query.tu_ngay = moment(query.tu_ngay_gio).toDate();//ưu tiên lấy điều kiện tu_ngay_gio;
|
|
32
|
-
if(query.den_ngay_gio) query.den_ngay = moment(query.den_ngay_gio).toDate();//ưu tiên lấy điều kiện den_ngay_gio;
|
|
33
|
-
if(query.tu_ngay_gio_kt) query.tu_ngay_kt = moment(query.tu_ngay_gio_kt).toDate();//ưu tiên lấy điều kiện tu_ngay_gio;
|
|
34
|
-
if(query.den_ngay_gio_kt) query.den_ngay_kt = moment(query.den_ngay_gio_kt).toDate() ;//ưu tiên lấy điều kiện den_ngay_gio;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
for (let q in query) {
|
|
38
|
-
if (!query[q]){
|
|
39
|
-
delete query[q];
|
|
40
|
-
}else{
|
|
41
|
-
if( _.isString(query[q]) && (query[q].indexOf("[")>=0 || query[q].indexOf("{")>=0)){
|
|
42
|
-
try{
|
|
43
|
-
query[q] = JSONParser(query[q]);
|
|
44
|
-
}catch(e){
|
|
45
|
-
console.error("can't parse json",query[q],rptId);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
req.query = query;
|
|
51
|
-
|
|
52
|
-
///create query cache
|
|
53
|
-
const _query = Object.assign({},query);
|
|
54
|
-
delete _query.id_rpt;
|
|
55
|
-
delete _query.t;
|
|
56
|
-
delete _query.jsonstream;
|
|
57
|
-
delete _query.cType;
|
|
58
|
-
delete _query.refresh_required;
|
|
59
|
-
delete _query.isDrilldown;
|
|
60
|
-
//
|
|
61
|
-
let getData;
|
|
62
|
-
let name_cached = rptId;
|
|
63
|
-
const getDataFromServer = ctrl.getDataFunc();
|
|
64
|
-
if (options.cache!=false && !query.refresh_required && !options.stream) {
|
|
65
|
-
//console.log("get cache",rptId,_query,"...");
|
|
66
|
-
let cacheData = await getCacheReport(req.user.email,req.user.current_id_app,name_cached,_query,options.cache_time||cache_time);
|
|
67
|
-
if(cacheData){
|
|
68
|
-
let _data = cacheData.data;
|
|
69
|
-
if (_data) {
|
|
70
|
-
//console.log("cache",rptId,_query,"...");
|
|
71
|
-
getData = function(req, callback) {
|
|
72
|
-
callback(null, _data,false,true);
|
|
73
|
-
setImmediate(()=>{
|
|
74
|
-
//cache report
|
|
75
|
-
getDataFromServer(req,(error,data)=>{
|
|
76
|
-
if(data){
|
|
77
|
-
setCacheReport(req.user.email,req.user.current_id_app,name_cached,_query, {
|
|
78
|
-
data: data,
|
|
79
|
-
time: new Date(),
|
|
80
|
-
query: _query
|
|
81
|
-
})
|
|
82
|
-
}
|
|
83
|
-
})
|
|
84
|
-
})
|
|
85
|
-
}
|
|
86
|
-
} else {
|
|
87
|
-
getData = getDataFromServer;
|
|
88
|
-
}
|
|
89
|
-
}else{
|
|
90
|
-
getData = getDataFromServer;
|
|
91
|
-
}
|
|
92
|
-
} else {
|
|
93
|
-
getData = getDataFromServer;
|
|
94
|
-
}
|
|
95
|
-
///
|
|
96
|
-
let streamData = function() {
|
|
97
|
-
let prechunk,_interval,sendHeader_yn;
|
|
98
|
-
let rows = [];
|
|
99
|
-
getData(req, async (error, data, stream,from_cache) => {
|
|
100
|
-
if (error) {
|
|
101
|
-
if (!sendHeader_yn || !options.stream || !res) return callback({error:error.message||error});
|
|
102
|
-
if (_interval) clearInterval(_interval);
|
|
103
|
-
setTimeout(() => {
|
|
104
|
-
res.end(JSON.stringify({error: error.toString()}));
|
|
105
|
-
}, 1000);
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
//stream
|
|
109
|
-
if (options.stream && res) {
|
|
110
|
-
switch (stream) {
|
|
111
|
-
case "begin":
|
|
112
|
-
//begin stream
|
|
113
|
-
console.log("begin stream",rptId,"...")
|
|
114
|
-
if (!query.jsonstream) {
|
|
115
|
-
res.setHeader('Content-Type', 'application/json');
|
|
116
|
-
res.setHeader('status', 200);
|
|
117
|
-
res.write("");
|
|
118
|
-
} else {
|
|
119
|
-
res.setHeader('Content-Type', 'application/jsonstream');
|
|
120
|
-
}
|
|
121
|
-
sendHeader_yn = true;
|
|
122
|
-
//lien tuc gui thong tin toi client de tranh tinh trang disconnect
|
|
123
|
-
_interval = setInterval(() => {
|
|
124
|
-
console.log("running stream","log",rptId,"...");
|
|
125
|
-
res.write("");
|
|
126
|
-
}, 100);
|
|
127
|
-
break;
|
|
128
|
-
case "running":
|
|
129
|
-
console.log("running stream",rptId,"...")
|
|
130
|
-
res.write("");
|
|
131
|
-
break;
|
|
132
|
-
case "data":
|
|
133
|
-
console.log("data stream",rptId,"...")
|
|
134
|
-
if(_.isArray(data)){
|
|
135
|
-
rows = rows.concat(data);
|
|
136
|
-
}else{
|
|
137
|
-
rows.push(data);
|
|
138
|
-
}
|
|
139
|
-
if (!query.jsonstream) {
|
|
140
|
-
if (prechunk) {
|
|
141
|
-
res.write("," + JSON.stringify(data));
|
|
142
|
-
} else {
|
|
143
|
-
res.write(JSON.stringify(data));
|
|
144
|
-
}
|
|
145
|
-
} else {
|
|
146
|
-
res.write(JSON.stringify(data) + "$$end%");
|
|
147
|
-
}
|
|
148
|
-
prechunk = data;
|
|
149
|
-
break;
|
|
150
|
-
case "end":{
|
|
151
|
-
if (_interval) clearInterval(_interval);
|
|
152
|
-
setImmediate(()=>{
|
|
153
|
-
global.getModel("log").create({
|
|
154
|
-
id_app: req.user.current_id_app,
|
|
155
|
-
id_func: rptId,
|
|
156
|
-
action: 'VIEWRPT',
|
|
157
|
-
data: {
|
|
158
|
-
condition: JSON.stringify(query)
|
|
159
|
-
}
|
|
160
|
-
}, req.user.email, req.user_agent, req);
|
|
161
|
-
})
|
|
162
|
-
setImmediate(()=>{
|
|
163
|
-
//cache report
|
|
164
|
-
setCacheReport(req.user.email,req.user.current_id_app,name_cached,_query, {
|
|
165
|
-
data: rows,
|
|
166
|
-
time: new Date(),
|
|
167
|
-
query: _query
|
|
168
|
-
})
|
|
169
|
-
})
|
|
170
|
-
setTimeout(function() {
|
|
171
|
-
console.log("end stream",rptId,"...")
|
|
172
|
-
res.end();
|
|
173
|
-
}, 1000);
|
|
174
|
-
break;
|
|
175
|
-
}
|
|
176
|
-
default:
|
|
177
|
-
console.log(stream,rptId,"...")
|
|
178
|
-
res.write("");
|
|
179
|
-
}
|
|
180
|
-
} else {
|
|
181
|
-
setImmediate(()=>{
|
|
182
|
-
global.getModel("log").create({
|
|
183
|
-
id_app: req.user.current_id_app,
|
|
184
|
-
id_func: rptId,
|
|
185
|
-
action: 'VIEWRPT',
|
|
186
|
-
data: {
|
|
187
|
-
condition: JSON.stringify(query)
|
|
188
|
-
}
|
|
189
|
-
}, req.user.email, req.user_agent, req);
|
|
190
|
-
})
|
|
191
|
-
if(options.cache!=false && !from_cache){
|
|
192
|
-
//cache report
|
|
193
|
-
setCacheReport(req.user.email,req.user.current_id_app,name_cached,_query, {
|
|
194
|
-
data: data,
|
|
195
|
-
time: new Date(),
|
|
196
|
-
query: _query
|
|
197
|
-
})
|
|
198
|
-
}
|
|
199
|
-
//handle data
|
|
200
|
-
setImmediate(async ()=>{
|
|
201
|
-
let report = data;
|
|
202
|
-
if(_.isArray(report)){
|
|
203
|
-
if(query.fields){
|
|
204
|
-
let fields = query.fields.split(",");
|
|
205
|
-
report = report.map(item=>{
|
|
206
|
-
let _item={};
|
|
207
|
-
fields.forEach(field => {
|
|
208
|
-
_item[field] = item[field]
|
|
209
|
-
});
|
|
210
|
-
return _item;
|
|
211
|
-
})
|
|
212
|
-
}
|
|
213
|
-
if(query.group_by && query.group_by_summary){
|
|
214
|
-
try{
|
|
215
|
-
report = await report.asyncGroupBy(query.group_by.split(","), query.group_by_summary.split(","));
|
|
216
|
-
}catch(e){
|
|
217
|
-
console.error("report groupBy data",e,rptId,"...")
|
|
218
|
-
if(e.error){
|
|
219
|
-
return callback(e);
|
|
220
|
-
}
|
|
221
|
-
return callback({error:e.message || e});
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
callback(null,report);
|
|
226
|
-
})
|
|
227
|
-
}
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
if (options.require_id_app === false) {
|
|
231
|
-
streamData();
|
|
232
|
-
} else {
|
|
233
|
-
let id_app = req.params.id_app;
|
|
234
|
-
permission.hasRight(id_app, req.user.email, module, 'view', (error, hr) => {
|
|
235
|
-
if (hr) {
|
|
236
|
-
streamData();
|
|
237
|
-
} else {
|
|
238
|
-
callback({error:'Bạn không có quyền xem báo cáo này'});
|
|
239
|
-
}
|
|
240
|
-
}, {notNeedRight});
|
|
241
|
-
}
|
|
242
|
-
}catch(e){
|
|
243
|
-
if(e.error){
|
|
244
|
-
return callback(e);
|
|
245
|
-
}
|
|
246
|
-
return callback({error:e.message || e});
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
const { handlerWithSesssion } = require("../libs/sessionContext.js");
|
|
251
|
-
const withSesssion = async (ctrl,req,callback,res)=>{
|
|
252
|
-
handlerWithSesssion(rptHandler,ctrl,req,callback,res)
|
|
253
|
-
}
|
|
254
|
-
module.exports =withSesssion;
|
|
1
|
+
'use strict';const moment=require("moment"),_=require("lodash"),permission=require("../libs/permission"),{JSONParser}=require("../libs/utils"),{getCacheReport,setCacheReport}=require("../libs/redis-cache"),cache_time=5,rptHandler=async($ctrl$$,$req$$,$callback$jscomp$0$$,$res$$)=>{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);
|
|
2
|
+
let $query$$={...$req$$.query,...$body$$};try{$query$$.tu_ngay&&($query$$.tu_ngay=moment($query$$.tu_ngay).startOf("date").toDate());$query$$.den_ngay&&($query$$.den_ngay=moment($query$$.den_ngay).endOf("date").toDate());$query$$.tu_ngay_kt&&($query$$.tu_ngay_kt=moment($query$$.tu_ngay_kt).startOf("date").toDate());$query$$.den_ngay_kt&&($query$$.den_ngay_kt=moment($query$$.den_ngay_kt).endOf("date").toDate());$query$$.tu_ngay_gio&&($query$$.tu_ngay=moment($query$$.tu_ngay_gio).toDate());$query$$.den_ngay_gio&&
|
|
3
|
+
($query$$.den_ngay=moment($query$$.den_ngay_gio).toDate());$query$$.tu_ngay_gio_kt&&($query$$.tu_ngay_kt=moment($query$$.tu_ngay_gio_kt).toDate());$query$$.den_ngay_gio_kt&&($query$$.den_ngay_kt=moment($query$$.den_ngay_gio_kt).toDate());for(let $q$$ in $query$$)if(!$query$$[$q$$])delete $query$$[$q$$];else if(_.isString($query$$[$q$$])&&(0<=$query$$[$q$$].indexOf("[")||0<=$query$$[$q$$].indexOf("{")))try{$query$$[$q$$]=JSONParser($query$$[$q$$])}catch($e$$){console.error("can't parse json",$query$$[$q$$],
|
|
4
|
+
$rptId$$)}$req$$.query=$query$$;const $_query$$=Object.assign({},$query$$);delete $_query$$.id_rpt;delete $_query$$.t;delete $_query$$.jsonstream;delete $_query$$.cType;delete $_query$$.refresh_required;delete $_query$$.isDrilldown;let $getData$$;const $getDataFromServer$$=$ctrl$$.getDataFunc();if(0==$options$$.cache||$query$$.refresh_required||$options$$.stream)$getData$$=$getDataFromServer$$;else{let $cacheData$$=await getCacheReport($req$$.user.email,$req$$.user.current_id_app,$rptId$$,$_query$$,
|
|
5
|
+
$options$$.cache_time||cache_time);if($cacheData$$){let $_data$$=$cacheData$$.data;$getData$$=$_data$$?function($req$$,$callback$$){$callback$$(null,$_data$$,!1,!0);setImmediate(()=>{$getDataFromServer$$($req$$,($error$$,$data$$)=>{$data$$&&setCacheReport($req$$.user.email,$req$$.user.current_id_app,$rptId$$,$_query$$,{data:$data$$,time:new Date,query:$_query$$})})})}:$getDataFromServer$$}else $getData$$=$getDataFromServer$$}let $streamData$$=function(){let $prechunk$$,$_interval$$,$sendHeader_yn$$,
|
|
6
|
+
$rows$$=[];$getData$$($req$$,async($error$$,$data$$,$stream$$,$from_cache$$)=>{if($error$$){if(!$sendHeader_yn$$||!$options$$.stream||!$res$$)return $callback$jscomp$0$$({error:$error$$.message||$error$$});$_interval$$&&clearInterval($_interval$$);setTimeout(()=>{$res$$.end(JSON.stringify({error:$error$$.toString()}))},1E3)}else if($options$$.stream&&$res$$)switch($stream$$){case "begin":console.log("begin stream",$rptId$$,"...");$query$$.jsonstream?$res$$.setHeader("Content-Type","application/jsonstream"):
|
|
7
|
+
($res$$.setHeader("Content-Type","application/json"),$res$$.setHeader("status",200),$res$$.write(""));$sendHeader_yn$$=!0;$_interval$$=setInterval(()=>{console.log("running stream","log",$rptId$$,"...");$res$$.write("")},100);break;case "running":console.log("running stream",$rptId$$,"...");$res$$.write("");break;case "data":console.log("data stream",$rptId$$,"...");_.isArray($data$$)?$rows$$=$rows$$.concat($data$$):$rows$$.push($data$$);$query$$.jsonstream?$res$$.write(JSON.stringify($data$$)+"$$end%"):
|
|
8
|
+
$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$$)}},$req$$.user.email,$req$$.user_agent,$req$$)});setImmediate(()=>{setCacheReport($req$$.user.email,$req$$.user.current_id_app,$rptId$$,$_query$$,{data:$rows$$,time:new Date,
|
|
9
|
+
query:$_query$$})});setTimeout(function(){console.log("end stream",$rptId$$,"...");$res$$.end();$callback$jscomp$0$$(null,"__end_stream__")},1E3);break;default:console.log($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$$)}),0==$options$$.cache||$from_cache$$||setCacheReport($req$$.user.email,$req$$.user.current_id_app,
|
|
10
|
+
$rptId$$,$_query$$,{data:$data$$,time:new Date,query:$_query$$}),setImmediate(async()=>{let $report$$=$data$$;if(_.isArray($report$$)){if($query$$.fields){let $fields$$=$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 console.error("report groupBy data",
|
|
11
|
+
$e$$,$rptId$$,"..."),$e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$})}}$callback$jscomp$0$$(null,$report$$)})})};!1===$options$$.require_id_app?$streamData$$():permission.hasRight($req$$.params.id_app,$req$$.user.email,$module$$,"view",($error$$,$hr$$)=>{$hr$$?$streamData$$():$callback$jscomp$0$$({error:"B\u1ea1n kh\u00f4ng c\u00f3 quy\u1ec1n xem b\u00e1o c\u00e1o n\u00e0y"})},{notNeedRight:$notNeedRight$$})}catch($e$$){return $e$$.error?$callback$jscomp$0$$($e$$):
|
|
12
|
+
$callback$jscomp$0$$({error:$e$$.message||$e$$})}},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$,$res$$)=>{handlerWithSession(rptHandler,$ctrl$$,$req$$,$callback$$,$res$$)};module.exports=withSesssion;
|
|
@@ -6,5 +6,5 @@ $k_ngay_ks_tu_ngay$$=new Date($k_ngay_ks_tu_ngay$$);if($k_ngay_ks_tu_ngay$$=awai
|
|
|
6
6
|
$callback$$({error:$e$jscomp$0$$.message||$e$jscomp$0$$.error||$e$jscomp$0$$});$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$jscomp$0$$,function($e$$,$condition$$){if($e$$)return console.error("postAgain dynamicFinding",$e$$),$callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.condition=$condition$$;$callback$$()},{req:$req$$}):($req$$.condition=$condition$jscomp$0$$,$callback$$())})},{req:$req$$}):$ctrl$$.dynamicFinding?$ctrl$$.dynamicFinding($req$$.user,$condition$$,
|
|
7
7
|
function($e$$,$condition$$){if($e$$)return console.error("postAgain dynamicFinding",$e$$),$callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.condition=$condition$$;$callback$$()},{req:$req$$}):($req$$.condition=$condition$$,$callback$$())})},function($callback$$){permission.isAdmin($req$$.user.current_id_app,$req$$.user.email,function($e$$,$admin$$){setImmediate(()=>{if($e$$)return $callback$$({error:$e$$.error||$e$$,code:$e$$.code});if(!$admin$$)return $callback$$({error:"B\u1ea1n ph\u1ea3i c\u00f3 quy\u1ec1n admin \u0111\u1ec3 th\u1ef1c hi\u1ec7n t\u00ednh n\u0103ng n\u00e0y"});
|
|
8
8
|
$callback$$()})})},function($callback$$){const $condition$$=$req$$.condition;_.has($model$$.schema.paths,"ma_ct")&&$ctrl$$.options.isVoucher&&($condition$$.ma_ct=$ctrl$$.name.toUpperCase());let $data_log$$={...$req$$.query};delete $data_log$$.access_token;$req$$.user&&"log"!==$ctrl$$.name&&"labelinfo"!==$ctrl$$.name&&"listinfo"!==$ctrl$$.name&&"reportinfo"!==$ctrl$$.name&&"moduleinfo"!==$ctrl$$.name&&"options"!==$ctrl$$.name&&global.getModel("log").create({id_app:$req$$.user.current_id_app,id_func:$ctrl$$.name,
|
|
9
|
-
action:"POSTAGAIN",data:{condition:JSON.stringify($data_log$$)}},$req$$.user.email,$req$$.user_agent,$req$$);$ctrl$$.postAgainHandler($req$$.user,$condition$$,($e$$,$rs$$)=>{if($e$$)return $callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$rs$$;$callback$$()},{req:$req$$})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);$mainCallback$$(null,$req$$.result)})},{
|
|
9
|
+
action:"POSTAGAIN",data:{condition:JSON.stringify($data_log$$)}},$req$$.user.email,$req$$.user_agent,$req$$);$ctrl$$.postAgainHandler($req$$.user,$condition$$,($e$$,$rs$$)=>{if($e$$)return $callback$$({error:$e$$.message||$e$$.error||$e$$});$req$$.result=$rs$$;$callback$$()},{req:$req$$})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);$mainCallback$$(null,$req$$.result)})},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{handlerWithSession(updateBookHanlder,
|
|
10
10
|
$ctrl$$,$req$$,$callback$$)};module.exports=withSesssion;
|
|
@@ -9,4 +9,4 @@ data:{condition:JSON.stringify($condition$$)}},$req$$.user.email,$req$$.user_age
|
|
|
9
9
|
$hau_to$$),$obj4view$$[$i$$][$field$$]=$gia_tri$$;async.map($obj4view$$,function($obj$$,$callback$$){setImmediate(()=>{delete $obj$$.__v;$model$$.updateOne({_id:$obj$$._id},$obj$$,function($e$jscomp$0$$){setImmediate(async()=>{if($e$jscomp$0$$)return $callback$$($e$jscomp$0$$);await $ctrl$$.cacheData($obj$$);$ctrl$$.post?postData($obj$$,$ctrl$$,function($e$$){if($e$$)return console.error("error post data",$e$$),$callback$$($e$$);$callback$$(null,$obj$$)},{req:$req$$}):$callback$$(null,$obj$$)})})})},
|
|
10
10
|
function($e$jscomp$0$$,$rs$$){setImmediate(()=>{if($e$jscomp$0$$)return console.error("updateField",$e$jscomp$0$$),$e$jscomp$0$$.error?$callback$jscomp$0$$($e$jscomp$0$$):$callback$jscomp$0$$({error:$e$jscomp$0$$.message||$e$jscomp$0$$});$ctrl$$.emit("saved",$rs$$);$ctrl$$.emit("updated",$rs$$);$rs$$=$rs$$.map($o$$=>{$o$$.toObject&&($o$$=convertObjectIdsToStrings($o$$.toObject()));return $o$$});$ctrl$$.onView($req$$.user,$rs$$,function($e$$,$viewValue$$){setImmediate(()=>{if($e$$)return console.error("updateField onview",
|
|
11
11
|
$e$$),$e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$});$req$$&&$viewValue$$.forEach($r$$=>{pushNotification($ctrl$$,$r$$,"update",null,!0,{exclude_token:$req$$.query.access_token})});$req$$.result=$rs$$;$callback$jscomp$0$$()})},{req:$req$$})})})})}).catch($e$$=>{console.error("updateField query",$e$$);return $e$$.error?$callback$jscomp$0$$($e$$):$callback$jscomp$0$$({error:$e$$.message||$e$$.error||$e$$})})}],$e$$=>{if($e$$)return $mainCallback$$($e$$);$mainCallback$$(null,
|
|
12
|
-
$req$$.result)})},{
|
|
12
|
+
$req$$.result)})},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{handlerWithSession(updateFieldHanlder,$ctrl$$,$req$$,$callback$$)};module.exports=withSesssion;
|
|
@@ -37,4 +37,4 @@ $obj$jscomp$0$$.trang_thai&&setImmediate(async()=>{global.getModel("approve").fi
|
|
|
37
37
|
$req$$.query.access_token);let $channel$$=`${$ctrl$$.name.toLowerCase()}-${"request_approved"}`;$obj$jscomp$0$$.id_app&&($channel$$=`${$channel$$}-${$obj$jscomp$0$$.id_app}`);let $message$$=JSON.stringify($obj$jscomp$0$$.toObject?$obj$jscomp$0$$.toObject():$obj$jscomp$0$$);try{await global.clientRedis.publish($channel$$,$message$$)}catch($e$$){console.error("[approve] [sendNotifyApproved] fire event","request_approved",$e$$)}}))}).catch($e$$=>{console.error($e$$)})});setImmediate(async()=>{(await permission.getFieldNotRight($obj$jscomp$0$$.id_app,
|
|
38
38
|
$user$$.email,$ctrl$$.name)).forEach($f$$=>{delete $obj$jscomp$0$$[$f$$]});$obj$jscomp$0$$.collection_name=$ctrl$$.collection_name;$ctrl$$.updated?$ctrl$$.updated($user$$,$obj$jscomp$0$$,function($error$jscomp$0$$,$obj$$){$error$jscomp$0$$?(console.error("error when saved",$error$jscomp$0$$),$_callback$$($error$jscomp$0$$,void 0)):$ctrl$$.dynamicUpdated?$ctrl$$.dynamicUpdated($user$$,$obj$$,function($error$$){$error$$?$_callback$$($error$$,void 0):$_callback$$(null,$obj$$)}):$_callback$$(null,$obj$$)},
|
|
39
39
|
$current_obj$$):$ctrl$$.dynamicUpdated?$ctrl$$.dynamicUpdated($user$$,$obj$jscomp$0$$,function($error$$){$error$$?$_callback$$($error$$,void 0):$_callback$$(null,$obj$jscomp$0$$)}):$_callback$$(null,$obj$jscomp$0$$)})}],($e$$,$rs$$)=>{$e$$?(console.error($e$$),$callback$jscomp$0$$($e$$)):($e$$=$model$$.collection.name,$user$$.current_id_app&&($e$$+=$user$$.current_id_app),delete global.cacheDatas[$e$$],$callback$jscomp$0$$(null,{new_obj:$rs$$,old_obj:$current_obj$$}))})}catch($e$$){console.error($e$$),
|
|
40
|
-
$callback$jscomp$0$$($e$$)}},{
|
|
40
|
+
$callback$jscomp$0$$($e$$)}},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{handlerWithSession(updateHandler,$ctrl$$,$req$$,$callback$$)};module.exports=withSesssion;
|
|
@@ -11,5 +11,5 @@ mongoose.models[$parent$$.model_code||$parent$$.api_code||$parent$$.code];let $f
|
|
|
11
11
|
$_ref_model$jscomp$0$$.schema.paths[$field_of_parent$$.name].instance.toLowerCase();$key$jscomp$0$$=`${$field_of_parent$$.name}.${$subField$$.name}`;$data_type_key_value$$="array"==$data_type_key_value$$?`${$field_of_parent$$.name}.$.${$subField$$.name}`:$key$jscomp$0$$;try{let $rs$$=await $_ref_model$jscomp$0$$.updateMany({[$key$jscomp$0$$]:$old_value$$,id_app:$id_app$$},{[$data_type_key_value$$]:$new_value$$,...$user_update$$});console.log(`[updateKey] update cho ${$_ref_model$jscomp$0$$.modelName}:`,
|
|
12
12
|
{[$key$jscomp$0$$]:$old_value$$,[$data_type_key_value$$]:$new_value$$},$rs$$)}catch($e$$){console.error(`[updateKey] update cho ${$_ref_model$jscomp$0$$.modelName}:${$key$jscomp$0$$}`,$e$$)}}}}}for(let $_ref_model$$ of Object.values(mongoose.models).filter($m$$=>$m$$.collection.name!=$model$$.collection.name))for(let $key$$ in $_ref_model$$.schema.paths){$data_type$jscomp$1_obj$$=$_ref_model$$.schema.paths[$key$$].instance.toLowerCase();if("array"==$data_type$jscomp$1_obj$$)try{await $_ref_model$$.updateMany({[`${$key$$}.${$field$$}`]:$old_value$$,
|
|
13
13
|
id_app:$id_app$$},{[`${$key$$}.$.${$field$$}`]:$new_value$$,...$user_update$$})}catch($e$$){console.error("[updateKey] update gia tri moi cho subdocument",$key$$,"type",$data_type$jscomp$1_obj$$,"cac model",$_ref_model$$.collection.name,{[$field$$]:$old_value$$,id_app:$id_app$$},{[$field$$]:$new_value$$},"error",$e$$)}if("object"==$data_type$jscomp$1_obj$$||"mixed"==$data_type$jscomp$1_obj$$)try{await $_ref_model$$.updateMany({[`${$key$$}.${$field$$}`]:$old_value$$,id_app:$id_app$$},{[`${$key$$}.${$field$$}`]:$new_value$$,
|
|
14
|
-
...$user_update$$})}catch($e$$){console.error("[updateKey] update gia tri moi cho subdocument",$key$$,"type",$data_type$jscomp$1_obj$$,"cac model",$_ref_model$$.collection.name,{[$field$$]:$old_value$$,id_app:$id_app$$},{[$field$$]:$new_value$$},"error",$e$$)}}$callback$$(null,{message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 th\u1ef1c hi\u1ec7n xong"})})})},{
|
|
14
|
+
...$user_update$$})}catch($e$$){console.error("[updateKey] update gia tri moi cho subdocument",$key$$,"type",$data_type$jscomp$1_obj$$,"cac model",$_ref_model$$.collection.name,{[$field$$]:$old_value$$,id_app:$id_app$$},{[$field$$]:$new_value$$},"error",$e$$)}}$callback$$(null,{message:"Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u00e3 th\u1ef1c hi\u1ec7n xong"})})})},{handlerWithSession}=require("../libs/sessionContext.js"),withSesssion=async($ctrl$$,$req$$,$callback$$)=>{handlerWithSession(updateKeyHanlder,
|
|
15
15
|
$ctrl$$,$req$$,$callback$$)};module.exports=withSesssion;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
'use strict';const {AsyncLocalStorage}=require("node:async_hooks"),storage=new AsyncLocalStorage,SESSION_EXCLUDE_MODELS="log token otp cache notification approve email tontucthoi listinfo reportinfo labelinfo".split(" ");exports.runWithSession=async function($session$$,$fn$$){return storage.run({session:$session$$},$fn$$)};
|
|
2
|
-
exports.handlerWithSession=async function($handler$$,$ctrl$$,$req$$,$callback$$,...$extraArgs$$){const $session$$=await mongoose.startSession();try{await exports.runWithSession($session$$,async()=>{await $session$$.startTransaction();let $finished$$=!1;$handler$$($ctrl$$,$req$$,async($error$$,$result$$)=>{if(!$finished$$){$finished$$=!0;try{$error$$?(
|
|
3
|
-
{})}}},...$extraArgs$$)})}catch($e$$){try{await $session$$.abortTransaction().catch(()=>{})}finally{await $session$$.endSession().catch(()=>{})}$callback$$($e$$)}};
|
|
4
|
-
exports.runWithoutSession=async function($fn$$){return storage.run({session:void 0},$fn$$)};exports.getCurrentSession=function(){const $store$$=storage.getStore();return $store$$?$store$$.session:void 0};
|
|
5
|
-
console.log("[sessionContext] \u2705 Loaded with model exclude & safety check");
|
|
1
|
+
'use strict';const {AsyncLocalStorage}=require("node:async_hooks"),storage=new AsyncLocalStorage,SESSION_EXCLUDE_MODELS="app log token otp cache notification approve email tontucthoi listinfo reportinfo labelinfo".split(" ");exports.runWithSession=async function($session$$,$fn$$){return storage.run({session:$session$$},$fn$$)};
|
|
2
|
+
exports.handlerWithSession=async function($handler$$,$ctrl$$,$req$$,$callback$$,...$extraArgs$$){const $session$$=await mongoose.startSession();try{await exports.runWithSession($session$$,async()=>{console.log("[handlerWithSession] start transation...",$ctrl$$.name);await $session$$.startTransaction();let $finished$$=!1;$handler$$($ctrl$$,$req$$,async($error$$,$result$$)=>{if(!$finished$$){$finished$$=!0;try{$error$$?(console.error("[handlerWithSession] abort transaction...",$ctrl$$.name,$error$$),
|
|
3
|
+
await $session$$.abortTransaction().catch(()=>{}),$callback$$($error$$)):(console.log("[handlerWithSession] commit transaction...",$ctrl$$.name),await $session$$.commitTransaction(),$callback$$(null,$result$$))}finally{await $session$$.endSession().catch(()=>{})}}},...$extraArgs$$)})}catch($e$$){console.error("[handlerWithSession] abort transaction...",$ctrl$$?.name,$e$$);try{await $session$$.abortTransaction().catch(()=>{})}finally{await $session$$.endSession().catch(()=>{})}$callback$$($e$$)}};
|
|
4
|
+
exports.onAfterCommit=function($cb$$){const $store$$=storage.getStore();$store$$&&Array.isArray($store$$.afterCommit)?$store$$.afterCommit.push($cb$$):Promise.resolve().then($cb$$).catch($err$$=>console.error("[onAfterCommit immediate error]",$err$$))};exports.runWithoutSession=async function($fn$$){return storage.run({session:void 0},$fn$$)};exports.getCurrentSession=function(){const $store$$=storage.getStore();return $store$$?$store$$.session:void 0};
|
|
5
|
+
exports.isModelExcludedFromSession=function($model_name$$){$model_name$$="string"===typeof $model_name$$?$model_name$$:$model_name$$?.modelName;return!(!$model_name$$||!SESSION_EXCLUDE_MODELS.includes($model_name$$))};exports.isSessionActive=function($session$$){if(!$session$$)return!1;try{return $session$$.inTransaction()}catch{return!1}};console.log("[sessionContext] \u2705 Loaded with model exclude & safety check");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';const tontucthoiScheam=new Schema({id_app:{type:String},nam:{type:Number},ma_dvcs:{type:String,maxlength:1024},ma_vt:{type:String,uppercase:!0,maxlength:1024},ma_kho:{type:String,uppercase:!0,maxlength:32},ma_lo:{type:String,default:"",uppercase:!0,maxlength:32},han_sd:{type:Date},ma_tt1:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt2:{type:String,default:"",uppercase:!0,maxlength:32},ma_tt3:{type:String,default:"",uppercase:!0,maxlength:32},ton00:{type:Number,default:0},du00:{type:Number,
|
|
2
2
|
default:0},du_nt00:{type:Number,default:0},kc_yn:{type:Boolean,default:!1},status:{type:Boolean,default:!0},date_created:{type:Date,default:Date.now},date_updated:{type:Date,default:Date.now},user_created:{type:String,default:""},user_updated:{type:String,default:""}});
|
|
3
3
|
(global.configs||{}).createIndexes&&(tontucthoiScheam.index({id_app:1,nam:1,ma_dvcs:1,ma_vt:1,ma_kho:1,ma_lo:1,ma_tt1:1,ma_tt2:1,ma_tt3:1},{name:"tontucthoi_index_1"}),tontucthoiScheam.index({status:1}),tontucthoiScheam.index({user_created:1,visible_to:1,visible_to_users:1}));const tontucthoi=mongoose.models.tontucthoi||mongoose.model("tontucthoi",tontucthoiScheam),ckvt=require("../libs/ckvt"),underscore=require("underscore"),async=require("async"),{onAfterCommit}=require("../libs/sessionContext");
|
|
4
|
-
tontucthoi.tinhTonTucThoi=function($sks$$,$cb$$){onAfterCommit(()=>{
|
|
5
|
-
|
|
6
|
-
$r$$.la_kho_online).map($r$$=>$r$$.ton00||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);global.getModel("dmvt").updateOne({id_app:$sk$$.id_app,ma_vt:$sk$$.ma_vt},{ton_kho_online_hien_tai:$e$jscomp$0$$}).then(()=>{}).catch($e$$=>{$e$$&&console.error($e$$)});$cb$$(null,$rs$$)}):$cb$$()})})},function($e$$,$rs$$){$cb$$($e$$,$rs$$)})})};module.exports=tontucthoi;
|
|
4
|
+
tontucthoi.tinhTonTucThoi=function($sks$$,$cb$$){onAfterCommit(()=>{console.log("[tinhTonTucThoi] afer transaction commit....");$cb$$||($cb$$=function($e$$){$e$$&&console.log("error when calc tontucthoi",$e$$)});underscore.isArray($sks$$)||($sks$$=[$sks$$]);async.mapSeries($sks$$,function($sk$$,$cb$$){if(!$sk$$)return $cb$$();let $query$$={id_app:$sk$$.id_app,ma_vt:$sk$$.ma_vt};tontucthoi.deleteMany($query$$,function($e$jscomp$2$$){if($e$jscomp$2$$)return $cb$$("remove tonkhotucthoi");$query$$.groupBy=
|
|
5
|
+
"id_app ma_vt ma_kho ma_dvcs ma_lo ma_tt1 ma_tt2 ma_tt3 han_sd".split(" ");$query$$.ngay=new Date;ckvt($query$$,async function($e$jscomp$1$$,$rs$$){if($e$jscomp$1$$)return $cb$$("error when calc tontucthoi\n"+$e$jscomp$1$$);$rs$$=$rs$$.filter($r$$=>$r$$.ma_vt&&$r$$.ma_kho&&$r$$.id_app);await $rs$$.asyncJoinModel2(null,global.getModel("dmkho"),{where:$item$$=>({id_app:$item$$.id_app,ma_kho:$item$$.ma_kho}),fields:"la_kho_online"});$rs$$&&0<$rs$$.length?tontucthoi.create($rs$$,async function($e$jscomp$0$$){if($e$jscomp$0$$)return $cb$$($e$jscomp$0$$);
|
|
6
|
+
$e$jscomp$0$$=$rs$$.filter($r$$=>$r$$.la_kho_online).map($r$$=>$r$$.ton00||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);global.getModel("dmvt").updateOne({id_app:$sk$$.id_app,ma_vt:$sk$$.ma_vt},{ton_kho_online_hien_tai:$e$jscomp$0$$}).then(()=>{}).catch($e$$=>{$e$$&&console.error($e$$)});$cb$$(null,$rs$$)}):$cb$$()})})},function($e$$,$rs$$){$cb$$($e$$,$rs$$)})})};module.exports=tontucthoi;
|