UNPKG

flexbiz-server

Version:

Flexible Server

13 lines (12 loc) 5.42 kB
const chamcong=global.getModel("chamcong"),dmnv=global.getModel("dmnv"),dmbp=global.getModel("dmbp"),dmloaicong=global.getModel("dmloaicong"),dmletet=global.getModel("dmletet"),controller=require("../../controllers/controllerRPT"),moment=require("moment"); module.exports=function($router$$){new controller($router$$,"kqchamcong",function($req$$,$callback$$){const $id_app$$=$req$$.query.id_app,$lam_thu_7$$=$req$$.query.lam_thu_7==="true"||$req$$.query.lam_thu_7==1,$query$$={id_app:$id_app$$};$query$$.ngay={$gte:$req$$.query.tu_ngay,$lte:$req$$.query.den_ngay};$req$$.query.ma_nv&&($query$$.ma_nv=$req$$.query.ma_nv);$req$$.query.ma_bp&&($query$$.ma_bp=$req$$.query.ma_bp);chamcong.find($query$$).lean().then(async $congs$$=>{var $danh_sach_le_tet_dm_nkl$$= await dmloaicong.findOne({id_app:$id_app$$,ngay_khong_luong:1}).lean();const $ma_loai_nkl$$=$danh_sach_le_tet_dm_nkl$$?$danh_sach_le_tet_dm_nkl$$.ma_loai_cong:"";$danh_sach_le_tet_dm_nkl$$=await dmletet.find({id_app:$id_app$$}).lean();for(var $cong_date$$ of $congs$$)$cong_date$$.ngay=moment($cong_date$$.ngay).format("YYYY-MM-DD");await $congs$$.asyncJoinModel2($id_app$$,dmnv,[{where:{ma_nv:"ma_nv"},fields:["ten_nv","bo_phan","ngay_bat_dau_lam","ngay_nghi_viec"]}]);$congs$$.forEach($item$$=>{($item$$.bo_phan|| []).forEach($bp$$=>{$bp$$.active=!$bp$$.den_ngay||$bp$$.den_ngay>=new Date;$bp$$.active&&($item$$.ma_bp=$item$$.ma_bp||$bp$$.ma_bp,$item$$.ten_bp=$item$$.ten_bp||$bp$$.ten_bp,$item$$.ngay_bd_lam_viec=$bp$$.tu_ngay,$item$$.phu_trach=$item$$.phu_trach||$bp$$.phu_trach,$item$$.chuc_vu=$item$$.chuc_vu||$bp$$.chuc_vu)});$item$$.ngay_bd_lam_viec=$item$$.ngay_bat_dau_lam||$item$$.ngay_bd_lam_viec||""});await $congs$$.asyncJoinModel2($id_app$$,dmbp,[{where:{ma_bp:"ma_bp"},fields:["ten_bp"]}]);const $uniqueEmployees$$= {};$congs$$.forEach($c$$=>{$uniqueEmployees$$[$c$$.ma_nv]||($uniqueEmployees$$[$c$$.ma_nv]={id_app:$c$$.id_app,ma_nv:$c$$.ma_nv,ten_nv:$c$$.ten_nv,ma_bp:$c$$.ma_bp,ten_bp:$c$$.ten_bp,ngay_bd_lam_viec:$c$$.ngay_bd_lam_viec,ngay_nghi_viec:$c$$.ngay_nghi_viec})});$cong_date$$=new Date($req$$.query.tu_ngay);let $endDate$$=new Date($req$$.query.den_ngay);for(;$cong_date$$.getTime()<=$endDate$$.getTime();){let $_d$$=moment(new Date($cong_date$$)),$_d_f$$=$_d$$.format("YYYY-MM-DD"),$currentDay$$=$cong_date$$.getDate(), $currentMonth$$=$cong_date$$.getMonth()+1,$isHoliday$$=$danh_sach_le_tet_dm_nkl$$.find($le$$=>$le$$.ngay==$currentDay$$&&$le$$.thang==$currentMonth$$),$dayOfWeek$$=$cong_date$$.getDay(),$isWorkingDay$$=!0;$dayOfWeek$$===0&&($isWorkingDay$$=!1);$dayOfWeek$$!==6||$lam_thu_7$$||($isWorkingDay$$=!1);Object.values($uniqueEmployees$$).forEach($emp$$=>{if(!$congs$$.find($cong$$=>$cong$$.ngay===$_d_f$$&&$cong$$.ma_nv===$emp$$.ma_nv)){let $empty_date$$={...$emp$$};$empty_date$$.ngay=$_d_f$$;$empty_date$$.ma_loai_cong= "";$empty_date$$.sl_cong=0;let $isValidDateForEmployee$$=!0,$checkDateTs$$=$_d$$.startOf("day").toDate().getTime();if($emp$$.ngay_bd_lam_viec){var $endDateTs_startDateTs$$=moment($emp$$.ngay_bd_lam_viec).startOf("day").toDate().getTime();$checkDateTs$$<$endDateTs_startDateTs$$&&($isValidDateForEmployee$$=!1)}$emp$$.ngay_nghi_viec&&($endDateTs_startDateTs$$=moment($emp$$.ngay_nghi_viec).endOf("day").toDate().getTime(),$checkDateTs$$>$endDateTs_startDateTs$$&&($isValidDateForEmployee$$=!1));$isValidDateForEmployee$$&& ($isHoliday$$&&$isHoliday$$.ma_loai_cong?($empty_date$$.ma_loai_cong=$isHoliday$$.ma_loai_cong,$empty_date$$.sl_cong=1):$isWorkingDay$$&&$ma_loai_nkl$$&&($empty_date$$.ma_loai_cong=$ma_loai_nkl$$,$empty_date$$.sl_cong=1));$congs$$.push($empty_date$$)}});$cong_date$$.setDate($cong_date$$.getDate()+1)}$congs$$=$congs$$.sort(($a$$,$b$$)=>(new Date($a$$.ngay)).getTime()-(new Date($b$$.ngay)).getTime());const $loaicong$$=await dmloaicong.find({id_app:$id_app$$}).sort({stt:1}).lean();await $congs$$.asyncJoinModel2($id_app$$, dmloaicong,[{where:{ma_loai_cong:"ma_loai_cong"},fields:["ngay_cong","ngay_phep","ngay_khong_phep","ngay_khong_luong"]}]);$congs$$.forEach($r$$=>{$r$$.ngay_cong=($r$$.sl_cong||1)*($r$$.ngay_cong||0);$r$$.ngay_phep=($r$$.sl_cong||1)*($r$$.ngay_phep||0);$r$$.ngay_khong_phep=($r$$.sl_cong||1)*($r$$.ngay_khong_phep||0);$r$$.ngay_khong_luong=($r$$.sl_cong||1)*($r$$.ngay_khong_luong||0)});$congs$$.pivot(["ma_nv","ten_nv","ma_bp","ten_bp","ngay_bd_lam_viec"],"ngay",["ngay_cong","ngay_phep","ngay_khong_luong", "ngay_khong_phep"],($e$$,$rs$$)=>{$rs$$.loaicong=$loaicong$$;$rs$$.data.forEach(($r$$,$index$$)=>{$r$$.stt=$index$$+1;$loaicong$$.forEach($l$$=>{$r$$[$l$$.ma_loai_cong]=$congs$$.csum("ngay_cong",{ma_nv:$r$$.ma_nv,ma_bp:$r$$.ma_bp,ma_loai_cong:$l$$.ma_loai_cong})+$congs$$.csum("ngay_phep",{ma_nv:$r$$.ma_nv,ma_bp:$r$$.ma_bp,ma_loai_cong:$l$$.ma_loai_cong})+$congs$$.csum("ngay_khong_phep",{ma_nv:$r$$.ma_nv,ma_bp:$r$$.ma_bp,ma_loai_cong:$l$$.ma_loai_cong})+$congs$$.csum("ngay_khong_luong",{ma_nv:$r$$.ma_nv, ma_bp:$r$$.ma_bp,ma_loai_cong:$l$$.ma_loai_cong})});$r$$.ngay_cong_tinh_luong=$congs$$.csum("ngay_cong",{ma_nv:$r$$.ma_nv,ma_bp:$r$$.ma_bp})+$congs$$.csum("ngay_phep",{ma_nv:$r$$.ma_nv,ma_bp:$r$$.ma_bp})-$congs$$.csum("ngay_khong_phep",{ma_nv:$r$$.ma_nv,ma_bp:$r$$.ma_bp});$r$$.tong_ngay_khong_luong=$congs$$.csum("ngay_khong_luong",{ma_nv:$r$$.ma_nv,ma_bp:$r$$.ma_bp})+$congs$$.csum("ngay_khong_phep",{ma_nv:$r$$.ma_nv,ma_bp:$r$$.ma_bp})});$callback$$(null,$rs$$)},{colMax:["ma_loai_cong"]})}).catch($e$$=> {$callback$$($e$$)})})};