kpiplus
Version:
KPI+
1 lines • 2.1 kB
JavaScript
var Cdkh=require("../models/cdkh"),Vsocai=require("./vsocai"),arrayfuncs=require("./array-funcs"),dstkcn=require("./dstkcn"),async=require("async"),underscore=require("underscore"),moment=require("moment");module.exports=function(_,n){if(_&&_.ngay&&_.id_app){var a,o=_.tk;if(o||(o=""),underscore.isArray(o))o.forEach(function(_){a=a?a+"|^"+_:"^"+_}),a||(a="^"),o={$regex:a,$options:"i"};else o={$regex:"^"+o,$options:"i"};var t,m,d=new Date(_.ngay);if(_.tu_ngay){let n=new Date(_.tu_ngay);m=n.getFullYear()}else m=d.getFullYear();d=moment(d).endOf("date").toDate(),t=moment(d).startOf("year").toDate();var e=_.id_app;async.parallel({dn:function(n){let a={id_app:e,nam:m,tk:o};_.ma_kh&&(a.ma_kh=_.ma_kh),_.ma_dvcs&&(a.ma_dvcs=_.ma_dvcs),_.ma_kho&&(a.ma_kho=_.ma_kho),_.ma_bp&&(a.ma_bp=_.ma_bp),_.ma_phi&&(a.ma_phi=_.ma_phi),_.ma_nv&&(a.ma_nv=_.ma_nv),_.ma_hd&&(a.ma_hd=_.ma_hd),_.ma_dt&&(a.ma_dt=_.ma_dt),Cdkh.find(a).lean().exec(function(_,a){_?n(_):n(null,a)})},ps:function(n){async.waterfall([function(_){dstkcn(e,o,function(n,a){n?_(n):_(null,a)})},function(n,a){let o={id_app:e,ngay_ct:{$gte:t,$lte:d},tk:{$in:n}};_.ma_kh&&(o.ma_kh=_.ma_kh),_.ma_dvcs&&(o.ma_dvcs=_.ma_dvcs),_.ma_kho&&(o.ma_kho=_.ma_kho),_.ma_bp&&(o.ma_bp=_.ma_bp),_.ma_phi&&(o.ma_phi=_.ma_phi),_.ma_nv&&(o.ma_nv=_.ma_nv),_.ma_hd&&(o.ma_hd=_.ma_hd),_.ma_dt&&(o.ma_dt=_.ma_dt),_.ex_id_ct&&(o.id_ct={$ne:_.ex_id_ct}),Vsocai.find(o,function(_,n){_?a(_):a(null,n)})}],function(_,a){_?n(_):n(null,a)})}},function(_,a){_?n(_):a.dn.concat(a.ps).groupBy(["tk","ma_kh","ma_kho","ma_bp","ma_phi","ma_dt","ma_hd","ma_nv"],["du_no00","du_co00","du_no_nt00","du_co_nt00","ps_no","ps_co","ps_no_nt","ps_co_nt"],(_,a)=>{_?n(_):(a.forEach(_=>{_.du_no00=_.du_no00+_.ps_no-_.du_co00-_.ps_co,_.du_no_nt00=_.du_no_nt00+_.ps_no_nt-_.du_co_nt00-_.ps_co_nt,_.du_co00=0-_.du_no00,_.du_co_nt00=0-_.du_no_nt00,_.du_no00<0&&(_.du_no00=0),_.du_no_nt00<0&&(_.du_no_nt00=0),_.du_co00<0&&(_.du_co00=0),_.du_co_nt00<0&&(_.du_co_nt00=0),_.ps_no_nt=0,_.ps_co_nt=0,_.ps_no=0,_.ps_co=0}),n(null,a))})})}else n("Chức năng này yêu cầu các tham số: ngay")};