UNPKG

kpiplus

Version:

KPI+

1 lines 2.48 kB
var socai=require("../../models/socai"),ctds=require("../../models/ctds"),dmkho=require("../../models/dmkho"),dmnv=require("../../models/dmnv"),dmbp=require("../../models/dmbp"),dmdt=require("../../models/dmdt"),dmphi=require("../../models/dmphi"),arrayFuncs=require("../../libs/array-funcs"),async=require("async"),underscore=require("underscore"),controller=require("../../controllers/controllerRPT"),moment=require("moment");module.exports=function(e){new controller(e,"sosanhkhvatt",function(e,n){let t=e.query;if(!t.nam)return n("Báo cáo này yêu cầu các tham số tk,nam");let a={id_app:t.id_app,nam:t.nam};if(t.tu_thang){let e=Number(t.tu_thang),n=Number(t.den_thang||e);a.thang={$gte:e,$lte:n}}t.ma_dvcs&&(a.ma_dvcs=t.ma_dvcs),t.ma_kho&&(a.ma_kho=t.ma_kho),t.ma_nv&&(a.ma_nv=t.ma_nv),t.ma_bp&&(a.ma_bp=t.ma_bp),t.ma_phi&&(a.ma_phi=t.ma_phi),t.ma_dt&&(a.ma_dt=t.ma_dt),t.group_id&&(a.group_id=t.group_id),ctds.find(a).lean().exec((e,a)=>{if(e)return n(e);async.map(a,(e,n)=>{let t={id_app:e.id_app,ma_dvcs:e.ma_dvcs};e.ma_kho&&(t.ma_kho=e.ma_kho),e.ma_nv&&(t.ma_nv=e.ma_nv),e.ma_bp&&(t.ma_bp=e.ma_bp),e.ma_dt&&(t.ma_dt=e.ma_dt),e.ma_phi&&(t.ma_phi=e.ma_phi);let a=moment().year(e.nam).month(e.thang-1);t.ngay_ct={$gte:a.startOf("month").toDate(),$lte:a.endOf("month").toDate()};let m=e.tk_no;m&&(underscore.isArray(m)||(m=[m]),m.length>0&&(t.tk_no={$regex:m.reg(),$options:"i"}));let r=e.tk_co;r&&(underscore.isArray(r)||(r=[r]),r.length>0&&(t.tk_co={$regex:r.reg(),$options:"i"})),socai.find(t).lean().exec((t,a)=>{if(t)return n(t);e.ps=a.csum("tien"),e.ps_nt=a.csum("tien_nt"),e.cl=e.chi_tieu-e.ps,e.bold=!1,e.sysorder=0,n(null,e)})},(e,m)=>{if(e)return n(e);async.parallel({kho:e=>{a.joinModel2(t.id_app,dmkho,{where:"ma_kho",fields:{ten_kho:"ten_kho"}},()=>{e()})},nv:e=>{a.joinModel2(t.id_app,dmnv,{where:"ma_nv",fields:{ten_nv:"ten_nv"}},()=>{e()})},ma_bp:e=>{a.joinModel2(t.id_app,dmbp,{where:"ma_bp",fields:{ten_bp:"ten_bp"}},()=>{e()})},ma_dt:e=>{a.joinModel2(t.id_app,dmdt,{where:"ma_dt",fields:{ten_dt:"ten_dt"}},()=>{e()})},ma_phi:e=>{a.joinModel2(t.id_app,dmphi,{where:"ma_phi",fields:{ten_phi:"ten_phi"}},()=>{e()})}},(e,m)=>{if(t.groupby)a.groupBy(t.groupby,["chi_tieu","ps","ps_nt","cl"],(e,t)=>{n(null,t)});else{let e={bold:!0,sysorder:5,ten_kho:"Tổng cộng",chi_tieu:a.csum("chi_tieu"),ps:a.csum("ps"),ps_nt:a.csum("ps_nt"),cl:a.csum("cl"),nam:0,thang:0};a.push(e),a=underscore.sortBy(a,e=>e.sysorder+"-"+e.year+"-"+e.thang),n(null,a)}})})})})};