UNPKG

flexbiz-server

Version:

Flexible Server

10 lines (9 loc) 3.5 kB
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, 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:""}}); (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({id_app:1,ma_vt:1}),tontucthoiScheam.index({id_app:1,status:1}),tontucthoiScheam.index({id_app:1,user_created:1,visible_to:1,visible_to_users:1})); const tontucthoi=mongoose.models.tontucthoi||mongoose.model("tontucthoi",tontucthoiScheam),ckvt=require("../libs/ckvt"),_=require("lodash"),{onAfterCommit}=require("../libs/sessionContext"),debouncedCalculators={},DEBOUNCE_WAIT_MS=1E4; async function _runActualCalculation($sk$$,$debouncerKey$$){try{let $query$$={id_app:$sk$$.id_app,ma_vt:$sk$$.ma_vt};await tontucthoi.deleteMany($query$$);$query$$.groupBy="id_app ma_vt ma_kho ma_dvcs ma_lo ma_tt1 ma_tt2 ma_tt3 han_sd".split(" ");$query$$.ngay=new Date;const $rs$$=await new Promise(($resolve$$,$reject$$)=>{ckvt($query$$,($e$$,$rs$$)=>$e$$?$reject$$($e$$):$resolve$$($rs$$))});if($rs$$&&$rs$$.length!==0){var $validRs$$=$rs$$.filter($r$$=>$r$$.ma_vt&&$r$$.ma_kho&&$r$$.id_app);await $validRs$$.asyncJoinModel2(null, global.getModel("dmkho"),{where:$item$$=>({id_app:$item$$.id_app,ma_kho:$item$$.ma_kho}),fields:"la_kho_online"});if($validRs$$.length>0){await tontucthoi.create($validRs$$);const $ton_kho_online_hien_tai$$=$validRs$$.filter($r$$=>$r$$.la_kho_online).map($r$$=>$r$$.ton00||0).reduce(($a$$,$b$$)=>$a$$+$b$$,0);await global.getModel("dmvt").updateOne({id_app:$sk$$.id_app,ma_vt:$sk$$.ma_vt},{ton_kho_online_hien_tai:$ton_kho_online_hien_tai$$});Logger.info(`[tinhTonTucThoi] \u2705 C\u1eadp nh\u1eadt xong ${$sk$$.ma_vt}, t\u1ed3n online: ${$ton_kho_online_hien_tai$$}`)}}else await global.getModel("dmvt").updateOne({id_app:$sk$$.id_app, ma_vt:$sk$$.ma_vt},{ton_kho_online_hien_tai:0})}catch($e$$){Logger.error(`[tinhTonTucThoi] \u274c L\u1ed7i khi t\u00ednh to\u00e1n cho ${$debouncerKey$$}:`,$e$$)}finally{$debouncerKey$$&&delete debouncedCalculators[$debouncerKey$$]}} tontucthoi.tinhTonTucThoi=function($sks$$,$cb$$){const $finalCallback$$=$cb$$||function($e$$){$e$$&&Logger.error("[tinhTonTucThoi] L\u1ed7i khi l\u00ean l\u1ecbch:",$e$$)};onAfterCommit(()=>{try{_.isArray($sks$$)||($sks$$=[$sks$$]);const $uniqueSks$$=_.uniq($sks$$.reverse(),!1,$sk$$=>$sk$$?`${$sk$$.id_app}:${$sk$$.ma_vt}`:null).reverse();for(const $sk$$ of $uniqueSks$$){if(!$sk$$||!$sk$$.id_app||!$sk$$.ma_vt)continue;const $key$$=`${$sk$$.id_app}:${$sk$$.ma_vt}`;debouncedCalculators[$key$$]||(debouncedCalculators[$key$$]= _.debounce($latestSk$$=>{_runActualCalculation($latestSk$$,$key$$)},DEBOUNCE_WAIT_MS,!1));debouncedCalculators[$key$$]($sk$$)}$finalCallback$$(null)}catch($e$$){$finalCallback$$($e$$)}})};module.exports=tontucthoi;