UNPKG

kpiplus

Version:

KPI+

1 lines 1.62 kB
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,t){if(n&&n.ngay&&n.id_app){var a=n.ma_dvcs;a||(a=""),a={$regex:a,$options:"i"};var o=n.tk;o||(o=""),o={$regex:"^"+o,$options:"i"};var u=n.ma_kh;u||(u=""),u={$regex:u,$options:"i"};var e=moment(new Date(n.ngay)).startOf("date").toDate(),r=e.getFullYear(),c=moment(e).startOf("year").toDate(),s=moment(e).startOf("year").toDate(),_=n.id_app;async.parallel({dn:function(n){var t={id_app:_,nam:r,tk:o,ma_kh:u,ma_dvcs:a};Cdkh.find(t).lean().exec(function(t,a){t?n(t):n(null,a)})},ps:function(n){async.waterfall([function(n){dstkcn(_,o,function(t,a){t?n(t):n(null,a)})},function(n,t){var o={id_app:_,ngay_ct:{$gte:s,$lt:c},ma_kh:u,tk:{$in:n},ma_dvcs:a};Vsocai.find(o,function(n,a){n?t(n):t(null,a)})}],function(t,a){t?n(t):n(null,a)})}},function(n,a){if(n)t(n);else{var o=a.dn;a.ps.forEach(function(n){o.push(n)});var u=underscore.groupBy(o,function(n){return n.tk+"$s"+n.ma_kh}),e=underscore.keys(u);async.map(e,function(n,t){var a=u[n],o={},e=n.split("$s");o.tk=e[0],o.ma_kh=e[1],o.du_no1=a.csum("du_no1")+a.csum("ps_no")-a.csum("du_co1")-a.csum("ps_co"),o.du_no_nt1=a.csum("du_no_nt1")+a.csum("ps_no_nt")-a.csum("du_co_nt1")-a.csum("ps_co_nt"),o.du_no1<0?(o.du_co1=Math.abs(o.du_no1),o.du_no1=0):o.du_co1=0,o.du_no_nt1<0?(o.du_co_nt1=Math.abs(o.du_no_nt1),o.du_no_nt1=0):o.du_co_nt1=0,t(null,o)},function(n,a){n?t(n):t(null,a)})}})}else t(new Error("ngay and id_app parameter condition"))};