flexbiz-server
Version:
Flexible Server
15 lines (14 loc) • 6.75 kB
JavaScript
const Vsocai=require("./vsocai"),dstkcn=require("./dstkcn"),moment=require("moment"),_=require("lodash"),permistion=require("./permission");
module.exports=async function($condition$$,$fn$$,$options$$={model:"socaitc"}){try{if(!$condition$$||!$condition$$.ngay||!$condition$$.id_app)throw Error("Ch\u1ee9c n\u0103ng n\u00e0y y\u00eau c\u1ea7u c\u00e1c tham s\u1ed1: ngay, id_app");const {id_app:$id_app$$}=$condition$$;if(!$condition$$.ma_kh&&($condition$$.nh_kh||$condition$$.phu_trach)){var $_q__q$$={};$condition$$.nh_kh&&($_q__q$$.nh_kh=$condition$$.nh_kh);if($condition$$.phu_trach){let $ds_phu_trach$$=await permistion.dsDangPhuTrach($condition$$.id_app,
$condition$$.phu_trach);$ds_phu_trach$$.push($condition$$.phu_trach);$_q__q$$.$or=[{phu_trach:{$in:$ds_phu_trach$$}},{of_user:{$in:$ds_phu_trach$$}}]}const $Customer$$=global.getModel("customer");$condition$$.ma_kh=await $Customer$$.getList($condition$$.id_app,$_q__q$$,"ma_kh")}if(!$condition$$.ma_nv&&$condition$$.phu_trach_nv){let $ds_phu_trach$$=await permistion.dsDangPhuTrach($condition$$.id_app,$condition$$.phu_trach_nv);$ds_phu_trach$$.push($condition$$.phu_trach_nv);$_q__q$$={id_app:$id_app$$,
$or:[{phu_trach:{$in:$ds_phu_trach$$}},{user:{$in:$ds_phu_trach$$}}]};var $_q$$=(await global.getModel("dmnv").find($_q__q$$,{ma_nv:1}).lean()).map($nv$$=>$nv$$.ma_nv);$condition$$.ma_nv={$in:$_q$$}}if(!$condition$$.ma_nv_giao_hang&&$condition$$.phu_trach_gia_hang){let $ds_phu_trach$$=await permistion.dsDangPhuTrach($id_app$$,$condition$$.phu_trach_gia_hang);$ds_phu_trach$$.push($condition$$.phu_trach_gia_hang);$_q$$={id_app:$id_app$$,$or:[{phu_trach:{$in:$ds_phu_trach$$}},{user:{$in:$ds_phu_trach$$}}]};
var $_q$jscomp$3_ma_nvs$$=(await global.getModel("dmnv").find($_q$$,{ma_nv:1}).lean()).map($nv$$=>$nv$$.ma_nv);$condition$$.ma_nv_giao_hang={$in:$_q$jscomp$3_ma_nvs$$}}if(!$condition$$.phu_xe&&$condition$$.phu_trach_phu_xe){let $ds_phu_trach$$=await permistion.dsDangPhuTrach($id_app$$,$condition$$.phu_trach_phu_xe);$ds_phu_trach$$.push($condition$$.phu_trach_phu_xe);$_q$jscomp$3_ma_nvs$$={id_app:$id_app$$,$or:[{phu_trach:{$in:$ds_phu_trach$$}},{user:{$in:$ds_phu_trach$$}}]};var $ma_nvs$$=(await global.getModel("dmnv").find($_q$jscomp$3_ma_nvs$$,
{ma_nv:1}).lean()).map($nv$$=>$nv$$.ma_nv);$condition$$.phu_xe={$in:$ma_nvs$$}}var $getGroupKey_ngay$$=moment($condition$$.ngay).startOf("date").toDate();const [$app$$,$lastLockData$$]=await Promise.all([global.getModel("app").findOne({_id:$id_app$$},{ngay_ks:1}).lean(),global.getModel("cdkhtheongay").findOne({id_app:$id_app$$,den_ngay:{$lte:$getGroupKey_ngay$$}},{den_ngay:1}).sort({den_ngay:-1}).lean()]);if(!$app$$)throw Error("C\u00f4ng ty kh\u00f4ng t\u1ed3n t\u1ea1i");var $buildFilter_ngay_ks$$=
$lastLockData$$?$lastLockData$$.den_ngay:null;$buildFilter_ngay_ks$$&&=moment($buildFilter_ngay_ks$$).endOf("date").toDate();const $startOfYear$$=moment($getGroupKey_ngay$$).startOf("year").toDate();let $CdkhModel$$;$ma_nvs$$={id_app:$id_app$$};if(!$buildFilter_ngay_ks$$||$buildFilter_ngay_ks$$<$startOfYear$$){$CdkhModel$$=global.getModel("cdkh");$ma_nvs$$.nam=$getGroupKey_ngay$$.getFullYear();var $initItem_ngay_dn$$=$startOfYear$$;Logger.info("[dkcn] l\u1ea5y t\u1eeb cdkh..,ngay_dn",$initItem_ngay_dn$$)}else $CdkhModel$$=
global.getModel("cdkhtheongay"),$ma_nvs$$.den_ngay=$buildFilter_ngay_ks$$,$initItem_ngay_dn$$=moment($buildFilter_ngay_ks$$).startOf("date").add(1,"days").toDate(),Logger.info("[dkcn] l\u1ea5y t\u1eeb cdkhtheongay. ngay_dn",$initItem_ngay_dn$$);let $tkQuery$$=$condition$$.tk||"";$tkQuery$$=_.isArray($tkQuery$$)?{$regex:$tkQuery$$.map($t$$=>"^"+$t$$).join("|")||"^",$options:"i"}:{$regex:"^"+$tkQuery$$,$options:"i"};const $accs$$=await new Promise(($resolve$$,$reject$$)=>{dstkcn($id_app$$,$tkQuery$$,
($err$$,$res$$)=>$err$$?$reject$$($err$$):$resolve$$($res$$))});let $groupBy$$=$condition$$.groupBy||"tk ma_kh ma_kho ma_bp ma_phi ma_dt ma_hd ma_nv".split(" ");if(_.isString($groupBy$$))try{$groupBy$$=$groupBy$$.includes("[")?JSON.parse($groupBy$$):$groupBy$$.split(",")}catch($e$$){$groupBy$$=[$groupBy$$]}$groupBy$$=$groupBy$$.map($k$$=>$k$$.trim());$buildFilter_ngay_ks$$=$qObj$$=>{$condition$$.ma_kh&&(_.isArray($condition$$.ma_kh)&&$condition$$.ma_kh.length>0?$qObj$$.ma_kh={$in:$condition$$.ma_kh}:
$qObj$$.ma_kh=$condition$$.ma_kh);"ma_dvcs ma_kho ma_bp ma_phi ma_nv ma_nv_giao_hang phu_xe ma_hd ma_dt".split(" ").forEach($field$$=>{$condition$$[$field$$]&&($qObj$$[$field$$]=$condition$$[$field$$])});return $qObj$$};$buildFilter_ngay_ks$$($ma_nvs$$);$ma_nvs$$.tk={$in:$accs$$};const $pDauKy$$=$CdkhModel$$.find($ma_nvs$$).lean().exec(),$queryPS$$={id_app:$id_app$$,ngay_ct:{$gte:$initItem_ngay_dn$$,$lt:$getGroupKey_ngay$$},tk:{$in:$accs$$}};$buildFilter_ngay_ks$$($queryPS$$);$condition$$.ex_id_ct&&
($queryPS$$.id_ct={$ne:$condition$$.ex_id_ct});const $pPhatSinh$$=(async()=>new Promise(($resolve$$,$reject$$)=>{Vsocai.find($queryPS$$,($err$$,$res$$)=>$err$$?$reject$$($err$$):$resolve$$($res$$),{model:$options$$.model,groupBy:$groupBy$$})}))(),[$dauKyResults$$,$phatSinhResults$$]=await Promise.all([$pDauKy$$,$pPhatSinh$$]),$dataMap$$=new Map;$getGroupKey_ngay$$=$item$$=>$groupBy$$.map($k$$=>$item$$[$k$$]?String($item$$[$k$$]):"").join("||");$initItem_ngay_dn$$=$keyData$$=>({...$keyData$$,du_no00:0,
du_co00:0,du_no_nt00:0,du_co_nt00:0,ps_no:0,ps_co:0,ps_no_nt:0,ps_co_nt:0});for(const $item$$ of $dauKyResults$$){const $key$$=$getGroupKey_ngay$$($item$$);$dataMap$$.has($key$$)||$dataMap$$.set($key$$,$initItem_ngay_dn$$(_.pick($item$$,$groupBy$$)));const $current$$=$dataMap$$.get($key$$);$current$$.du_no00+=$item$$.du_no00||0;$current$$.du_co00+=$item$$.du_co00||0;$current$$.du_no_nt00+=$item$$.du_no_nt00||0;$current$$.du_co_nt00+=$item$$.du_co_nt00||0}for(const $item$$ of $phatSinhResults$$){const $key$$=
$getGroupKey_ngay$$($item$$);$dataMap$$.has($key$$)||$dataMap$$.set($key$$,$initItem_ngay_dn$$(_.pick($item$$,$groupBy$$)));const $current$$=$dataMap$$.get($key$$);$current$$.ps_no+=$item$$.ps_no||0;$current$$.ps_co+=$item$$.ps_co||0;$current$$.ps_no_nt+=$item$$.ps_no_nt||0;$current$$.ps_co_nt+=$item$$.ps_co_nt||0}const $finalResult$$=Array.from($dataMap$$.values()).map($r$$=>{const $netDebit$$=$r$$.du_no00+$r$$.ps_no-($r$$.du_co00+$r$$.ps_co),$netDebitNt$$=$r$$.du_no_nt00+$r$$.ps_no_nt-($r$$.du_co_nt00+
$r$$.ps_co_nt);$netDebit$$>=0?($r$$.du_no00=$netDebit$$,$r$$.du_co00=0):($r$$.du_no00=0,$r$$.du_co00=Math.abs($netDebit$$));$netDebitNt$$>=0?($r$$.du_no_nt00=$netDebitNt$$,$r$$.du_co_nt00=0):($r$$.du_no_nt00=0,$r$$.du_co_nt00=Math.abs($netDebitNt$$));$r$$.ps_no=0;$r$$.ps_co=0;$r$$.ps_no_nt=0;$r$$.ps_co_nt=0;return $r$$});$fn$$&&$fn$$(null,$finalResult$$);return $finalResult$$}catch($error$$){if($fn$$)$fn$$($error$$);else throw $error$$;}};