UNPKG

flexbiz-server

Version:

Flexible Server

13 lines (12 loc) 5.38 kB
const sokho=global.getModel("sokho"),_=require("lodash"),utils=require("./utils"),moment=require("moment"); module.exports=async function($condition$$,$fn$$){$fn$$||=()=>{};try{!$condition$$.ngay&&$condition$$.tu_ngay&&($condition$$.ngay=$condition$$.tu_ngay);if(!$condition$$||!$condition$$.ngay||!$condition$$.id_app)return $fn$$("B\u00e1o c\u00e1o n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: ngay, id_app");const {id_app:$id_app$$,ma_dvcs:$ma_dvcs$$,ma_kho:$ma_kho$$}=$condition$$;let $ma_vt$$=$condition$$.ma_vt;_.isArray($ma_vt$$)&&($ma_vt$$={$in:$ma_vt$$});const $ngay$$=moment($condition$$.ngay).startOf("date").toDate(), [$app$$,$lastLockData$$]=await Promise.all([global.getModel("app").findOne({_id:$id_app$$},{ngay_ks:1}).lean(),global.getModel("cdvttheongay").findOne({id_app:$id_app$$,den_ngay:{$lte:moment($ngay$$).startOf("date").toDate()}},{den_ngay:1}).sort({den_ngay:-1}).lean()]);if(!$app$$)return $fn$$("C\u00f4ng ty kh\u00f4ng t\u1ed3n t\u1ea1i");let $ngay_ks$$=$lastLockData$$?$lastLockData$$.den_ngay:null;$ngay_ks$$&&=moment($ngay_ks$$).endOf("date").toDate();var $merge_ngay_tinh_dn$$=moment($condition$$.ngay).startOf("date").toDate(); let $ngay_dn$$=moment($merge_ngay_tinh_dn$$).startOf("year").toDate(),$nam$$,$CdvtModel$$;!$ngay_ks$$||$ngay_ks$$<$ngay_dn$$?($CdvtModel$$=global.getModel("cdvt"),$nam$$=$merge_ngay_tinh_dn$$.getFullYear()):($CdvtModel$$=global.getModel("cdvttheongay"),$ngay_dn$$=moment($ngay_ks$$).startOf("date").add(1,"days").toDate());const $buildFilter$$=($base$$={})=>{const $q$$={...$base$$};$ma_vt$$&&($q$$.ma_vt=$ma_vt$$);$ma_kho$$&&($q$$.ma_kho=$ma_kho$$);$ma_dvcs$$&&($q$$.ma_dvcs=$ma_dvcs$$);["ma_lo","han_sd", "ma_tt1","ma_tt2","ma_tt3"].forEach($f$$=>{$condition$$[$f$$]&&($q$$[$f$$]=$condition$$[$f$$])});return $q$$},$pDauKy$$=(async()=>{var $c_dk_results$$={id_app:$id_app$$};$nam$$?$c_dk_results$$.nam=$nam$$:$c_dk_results$$.den_ngay=$ngay_ks$$;Object.assign($c_dk_results$$,$buildFilter$$());$c_dk_results$$=await $CdvtModel$$.find($c_dk_results$$).lean();$c_dk_results$$.length>0&&await $c_dk_results$$.asyncJoinModel2($id_app$$,"dmvt",{where:"ma_vt",fields:["tk_vt","ma_nvt","ma_nvt2","ma_nvt3","ma_nvt4"]}); return $c_dk_results$$})(),$pPhatSinh$$=(async()=>{const $query$$={id_app:$id_app$$,ngay_ct:{$gte:$ngay_dn$$,$lt:$ngay$$}};Object.assign($query$$,$buildFilter$$());return sokho.aggregate([{$match:$query$$},{$group:{_id:{ma_vt:"$ma_vt",ma_kho:"$ma_kho",ma_dvcs:"$ma_dvcs",ma_lo:"$ma_lo",han_sd:"$han_sd",ma_tt1:"$ma_tt1",ma_tt2:"$ma_tt2",ma_tt3:"$ma_tt3"},sl_nhap:{$sum:"$sl_nhap_qd"},sl_xuat:{$sum:"$sl_xuat_qd"},tien_nhap:{$sum:"$tien_nhap"},tien_xuat:{$sum:"$tien_xuat"}}},{$project:{_id:0,ma_vt:"$_id.ma_vt", ma_kho:"$_id.ma_kho",ma_dvcs:"$_id.ma_dvcs",ma_lo:"$_id.ma_lo",han_sd:"$_id.han_sd",ma_tt1:"$_id.ma_tt1",ma_tt2:"$_id.ma_tt2",ma_tt3:"$_id.ma_tt3",sl_nhap:1,sl_xuat:1,tien_nhap:1,tien_xuat:1}}])})(),[$dnData$$,$psData$$]=await Promise.all([$pDauKy$$,$pPhatSinh$$]);let $groupBy$$=$condition$$.groupBy||$condition$$.groupby||["ma_vt"];if(_.isString($groupBy$$))try{$groupBy$$=$groupBy$$.includes("[")?JSON.parse($groupBy$$):$groupBy$$.split(",")}catch($e$$){$groupBy$$=["ma_vt"]}if($groupBy$$.some($field$$=> ["ma_nvt","ma_nvt2","ma_nvt3","ma_nvt4"].includes($field$$))&&$psData$$.length>0){const $distinctMaVt$$=[...(new Set($psData$$.map($d$$=>$d$$.ma_vt)))],$listDmvt$$=await global.getModel("dmvt").find({id_app:$id_app$$,ma_vt:{$in:$distinctMaVt$$}},{ma_vt:1,ma_nvt:1,ma_nvt2:1,ma_nvt3:1,ma_nvt4:1}).lean(),$dmvtMap$$=new Map;$listDmvt$$.forEach($d$$=>$dmvtMap$$.set($d$$.ma_vt,$d$$));$psData$$.forEach($p$$=>{const $info$$=$dmvtMap$$.get($p$$.ma_vt);$info$$&&($p$$.ma_nvt=$info$$.ma_nvt,$p$$.ma_nvt2=$info$$.ma_nvt2, $p$$.ma_nvt3=$info$$.ma_nvt3,$p$$.ma_nvt4=$info$$.ma_nvt4)})}const $dataMap$$=new Map,$getGroupKey$$=$item$$=>$groupBy$$.map($k$$=>$item$$[$k$$]||"").join("||");$merge_ngay_tinh_dn$$=($JSCompiler_temp_const$jscomp$0$$,$type$$)=>{if($JSCompiler_temp_const$jscomp$0$$)for(const $item$$ of $JSCompiler_temp_const$jscomp$0$$){const $key$$=$getGroupKey$$($item$$);if(!$dataMap$$.has($key$$)){$JSCompiler_temp_const$jscomp$0$$=$dataMap$$;var $JSCompiler_temp_const$$=$JSCompiler_temp_const$jscomp$0$$.set;const $obj$$= _.pick($item$$,$groupBy$$);$obj$$.ton00=0;$obj$$.du00=0;$obj$$.sl_nhap=0;$obj$$.sl_xuat=0;$obj$$.tien_nhap=0;$obj$$.tien_xuat=0;$JSCompiler_temp_const$$.call($JSCompiler_temp_const$jscomp$0$$,$key$$,$obj$$)}$JSCompiler_temp_const$jscomp$0$$=$dataMap$$.get($key$$);$type$$==="dn"?($JSCompiler_temp_const$jscomp$0$$.ton00+=$item$$.ton00||0,$JSCompiler_temp_const$jscomp$0$$.du00+=$item$$.du00||0):$type$$==="ps"&&($JSCompiler_temp_const$jscomp$0$$.sl_nhap+=$item$$.sl_nhap||0,$JSCompiler_temp_const$jscomp$0$$.sl_xuat+= $item$$.sl_xuat||0,$JSCompiler_temp_const$jscomp$0$$.tien_nhap+=$item$$.tien_nhap||0,$JSCompiler_temp_const$jscomp$0$$.tien_xuat+=$item$$.tien_xuat||0)}};$merge_ngay_tinh_dn$$($dnData$$,"dn");$merge_ngay_tinh_dn$$($psData$$,"ps");const $finalResult$$=Array.from($dataMap$$.values()).map($r$$=>{$r$$.ton00=utils.round($r$$.ton00+$r$$.sl_nhap-$r$$.sl_xuat,4);$r$$.du00=utils.round($r$$.du00,0)+utils.round($r$$.tien_nhap,0)-utils.round($r$$.tien_xuat,0);$r$$.sl_nhap=0;$r$$.sl_xuat=0;$r$$.tien_nhap=0;$r$$.tien_xuat= 0;return $r$$});$fn$$(null,$finalResult$$);return $finalResult$$}catch($error$$){throw $fn$$($error$$),$error$$;}};