UNPKG

flexbiz-server

Version:

Flexible Server

15 lines (14 loc) 7.39 kB
const {onAfterCommit}=require("./sessionContext"),_=require("lodash"),moment=require("moment"),processingQueue=new Map,debouncedProcessors=new Map,DEBOUNCE_WAIT_MS=1E4,_runActualCalculation=async $id_app$$=>{const $sokho$$=global.getModel("sokho"),$sokhotc$$=global.getModel("sokhotc");var $dateSet_minDate_query$$=processingQueue.get($id_app$$);if($dateSet_minDate_query$$&&$dateSet_minDate_query$$.size!==0){processingQueue.delete($id_app$$);debouncedProcessors.delete($id_app$$);var $allDates_maxDate$$= Array.from($dateSet_minDate_query$$).map($d$$=>moment($d$$,"YYYY-MM-DD"));$dateSet_minDate_query$$=moment.min($allDates_maxDate$$).startOf("day").toDate();$allDates_maxDate$$=moment.max($allDates_maxDate$$).endOf("day").toDate();Logger.info(`[sokhotc] \ud83d\udd25 B\u1eaft \u0111\u1ea7u ch\u1ea1y debounced cho ${$id_app$$}. D\u1ea3i ng\u00e0y: ${moment($dateSet_minDate_query$$).format("YYYY-MM-DD")} T\u1edaI ${moment($allDates_maxDate$$).format("YYYY-MM-DD")}`);try{$dateSet_minDate_query$$={id_app:$id_app$$, ngay_ct:{$gte:$dateSet_minDate_query$$,$lte:$allDates_maxDate$$}};await $sokhotc$$.deleteMany($dateSet_minDate_query$$);let $data_sokho$$=await $sokho$$.find($dateSet_minDate_query$$).lean();if($data_sokho$$&&$data_sokho$$.length!==0){var $data_sokho_tc$$=await $data_sokho$$.asyncGroupBy("id_app ma_dvcs ma_ct ngay_ct ma_vt ma_dvt ma_lo han_sd ma_tt1 ma_tt2 ma_tt3 ma_kho ma_nt ty_gia ma_sp ma_cp ma_cong_doan".split(" "),"sl_nhap sl_xuat sl_nhap_qd sl_xuat_qd tien_hang_nt tien_hang tien_ck_nt tien_ck tien_phi_nt tien_phi tien_cp_nt tien_cp tien_hang_nk tien_hang_nk_nt tien_thue_nk tien_thue_nk_nt tien_nhap_nt tien_nhap tien_xuat tien_xuat_nt tien tien_nt tien_hang_ct_nt tien_hang_ct tien_ct tien_ct_nt tien_thue_nt tien_thue sl_sp".split(" ")), $rs$$=await $sokhotc$$.insertMany($data_sokho_tc$$);Logger.info(`[sokhotc] \u2705 Ho\u00e0n th\u00e0nh. S\u1ed1 b\u1ea3n ghi sokho \u0111\u00e3 x\u1eed l\u00fd ${$data_sokho$$.length}, \u0111\u00e3 t\u1ea1o ${$rs$$.length} b\u1ea3n ghi sokhotc cho ${$id_app$$}.`)}else Logger.info(`[sokhotc] Kh\u00f4ng t\u00ecm th\u1ea5y d\u1eef li\u1ec7u sokho cho ${$id_app$$} trong d\u1ea3i ng\u00e0y.`)}catch($e$$){Logger.error(`[sokhotc] \u274c L\u1ed7i khi ch\u1ea1y debounced cho ${$id_app$$}:`,$e$$)}}else Logger.info(`[sokhotc] Debounced run cho ${$id_app$$} kh\u00f4ng c\u00f3 ng\u00e0y n\u00e0o trong h\u00e0ng \u0111\u1ee3i.`)}, createSokhoTC=async function($id_app$$,$tu_ngay$$,$den_ngay$$){onAfterCommit(()=>{try{processingQueue.has($id_app$$)||processingQueue.set($id_app$$,new Set);const $dateSet$$=processingQueue.get($id_app$$),$m_tu_ngay$$=moment($tu_ngay$$),$m_den_ngay$$=moment($den_ngay$$||$tu_ngay$$);let $currentDate$$=$m_tu_ngay$$.clone().startOf("day");for(;$currentDate$$.isSameOrBefore($m_den_ngay$$,"day");)$dateSet$$.add($currentDate$$.format("YYYY-MM-DD")),$currentDate$$.add(1,"day");debouncedProcessors.has($id_app$$)|| (Logger.info(`[sokhotc] \u23f3 T\u1ea1o debouncer m\u1edbi cho ${$id_app$$} (delay ${DEBOUNCE_WAIT_MS}ms)`),debouncedProcessors.set($id_app$$,_.debounce(()=>{_runActualCalculation($id_app$$)},DEBOUNCE_WAIT_MS,{leading:!1,trailing:!0})));debouncedProcessors.get($id_app$$)()}catch($e$$){Logger.error(`[sokhotc] L\u1ed7i khi l\u00ean l\u1ecbch (scheduling) cho ${$id_app$$}:`,$e$$)}},"createSokhoTC");return Promise.resolve()};exports.createSokhoTC=createSokhoTC; const processingQueueSocai=new Map,debouncedProcessorsSocai=new Map,DEBOUNCE_WAIT_MS_SOCAI=1E4,_runActualCalculationSocai=async $id_app$$=>{const $socai$$=global.getModel("socai"),$socaitc$$=global.getModel("socaitc"),$socaitt$$=global.getModel("socaitt");var $dateSet$jscomp$2_minDate$jscomp$1_query$$=processingQueueSocai.get($id_app$$);if($dateSet$jscomp$2_minDate$jscomp$1_query$$&&$dateSet$jscomp$2_minDate$jscomp$1_query$$.size!==0){processingQueueSocai.delete($id_app$$);debouncedProcessorsSocai.delete($id_app$$); var $allDates$$=Array.from($dateSet$jscomp$2_minDate$jscomp$1_query$$).map($d$$=>moment($d$$,"YYYY-MM-DD"));$dateSet$jscomp$2_minDate$jscomp$1_query$$=moment.min($allDates$$).startOf("day").toDate();var $maxDate$$=moment.max($allDates$$).endOf("day").toDate();$allDates$$=`${moment($dateSet$jscomp$2_minDate$jscomp$1_query$$).format("YYYY-MM-DD")} T\u1edaI ${moment($maxDate$$).format("YYYY-MM-DD")}`;Logger.info(`[socai] \ud83d\udd25 B\u1eaft \u0111\u1ea7u ch\u1ea1y debounced cho ${$id_app$$}. D\u1ea3i ng\u00e0y: ${$allDates$$}`); try{$dateSet$jscomp$2_minDate$jscomp$1_query$$={id_app:$id_app$$,ngay_ct:{$gte:$dateSet$jscomp$2_minDate$jscomp$1_query$$,$lte:$maxDate$$}};await Promise.all([$socaitc$$.deleteMany($dateSet$jscomp$2_minDate$jscomp$1_query$$),$socaitt$$.deleteMany($dateSet$jscomp$2_minDate$jscomp$1_query$$)]);let $raw_data_socai$$=await $socai$$.find($dateSet$jscomp$2_minDate$jscomp$1_query$$).lean();if($raw_data_socai$$&&$raw_data_socai$$.length!==0){await $raw_data_socai$$.asyncJoinModel2($id_app$$,"account",{where:{tk_no:"tk"}, fields:{tk_cn_no:"tk_cn"}});await $raw_data_socai$$.asyncJoinModel2($id_app$$,"account",{where:{tk_co:"tk"},fields:{tk_cn_co:"tk_cn"}});for(let $item$$ of $raw_data_socai$$)$item$$.tk_cn_no||($item$$.ma_kh_no=""),$item$$.tk_cn_co||($item$$.ma_kh_co="");var $data_socaitc$$=await $raw_data_socai$$.asyncGroupBy("id_app ma_dvcs ma_ct ma_gd ngay_ct tk_no tk_co ma_kh_no ma_kh_co ma_kho ma_nt ty_gia ma_bp id_lenhsx ma_phi ma_hd ma_dt ma_nv ma_sp ma_cp ma_kenh ma_cong_doan".split(" "),["tien","tien_nt"]), $data_socaitt$$=await $raw_data_socai$$.asyncGroupBy("id_app ma_dvcs ma_ct ma_gd ngay_ct tk_no tk_co ma_nt ty_gia ma_bp ma_phi ma_hd ma_dt ma_nv".split(" "),["tien","tien_nt"]),[$rs_tc$$,$rs_tt$$]=await Promise.all([$data_socaitc$$.length>0?$socaitc$$.insertMany($data_socaitc$$):[],$data_socaitt$$.length>0?$socaitt$$.insertMany($data_socaitt$$):[]]);Logger.info(`[socai] \u2705 Ho\u00e0n th\u00e0nh ${$id_app$$}. \u0110\u00e3 x\u1eed l\u00fd ${$raw_data_socai$$.length} b\u1ea3n ghi socai, \u0110\u00e3 t\u1ea1o: ${$rs_tc$$.length} (socaitc), ${$rs_tt$$.length} (socaitt).`)}else Logger.info(`[socai] Kh\u00f4ng t\u00ecm th\u1ea5y d\u1eef li\u1ec7u socai cho ${$id_app$$} trong d\u1ea3i ng\u00e0y.`)}catch($e$$){Logger.error(`[socai] \u274c L\u1ed7i khi ch\u1ea1y debounced cho ${$id_app$$} (${$allDates$$}):`, $e$$)}}else Logger.info(`[socai] Debounced run cho ${$id_app$$} kh\u00f4ng c\u00f3 ng\u00e0y n\u00e0o.`)},createSocaiTC=async function($id_app$$,$tu_ngay$$,$den_ngay$$){onAfterCommit(()=>{try{processingQueueSocai.has($id_app$$)||processingQueueSocai.set($id_app$$,new Set);const $dateSet$$=processingQueueSocai.get($id_app$$),$m_tu_ngay$$=moment($tu_ngay$$),$m_den_ngay$$=moment($den_ngay$$||$tu_ngay$$);let $currentDate$$=$m_tu_ngay$$.clone().startOf("day");for(;$currentDate$$.isSameOrBefore($m_den_ngay$$, "day");)$dateSet$$.add($currentDate$$.format("YYYY-MM-DD")),$currentDate$$.add(1,"day");debouncedProcessorsSocai.has($id_app$$)||(Logger.info(`[socai] \u23f3 T\u1ea1o debouncer m\u1edbi cho ${$id_app$$} (delay ${DEBOUNCE_WAIT_MS_SOCAI}ms)`),debouncedProcessorsSocai.set($id_app$$,_.debounce(()=>{_runActualCalculationSocai($id_app$$)},DEBOUNCE_WAIT_MS_SOCAI,{leading:!1,trailing:!0})));debouncedProcessorsSocai.get($id_app$$)()}catch($e$$){Logger.error(`[socai] L\u1ed7i khi l\u00ean l\u1ecbch (scheduling) cho ${$id_app$$}:`, $e$$)}},"createSokhoTC");return Promise.resolve()};exports.createSocaiTC=createSocaiTC;