UNPKG

kpiplus

Version:

KPI+

1 lines 1.51 kB
var Cdtk=require("../models/cdtk"),Vsocai=require("./vsocai"),arrayfuncs=require("./array-funcs"),dstktt=require("./dstktt"),async=require("async"),underscore=require("underscore"),moment=require("moment");module.exports=function(n,t){if(n&&n.ngay&&n.id_app){var u=n.ma_dvcs;u||(u=""),u={$regex:u,$options:"i"};var e=n.tk;e||(e=""),e={$regex:"^"+e,$options:"i"};var a=moment(new Date(n.ngay)).startOf("date").toDate(),o=a.getFullYear(),r=moment(a).startOf("year").toDate(),c=moment(a).startOf("year").toDate(),s=n.id_app;async.parallel({dn:function(n){var t={id_app:s,nam:o,tk:e,ma_dvcs:u};Cdtk.find(t).lean().exec(function(t,u){t?n(t):n(null,u)})},ps:function(n){async.waterfall([function(n){dstktt(s,e,function(t,u){t?n(t):n(null,u)})},function(n,t){var e={id_app:s,ngay_ct:{$gte:c,$lt:r},tk:{$in:n},ma_dvcs:u};Vsocai.find(e,function(n,u){n?t(n):t(null,u)})}],function(t,u){t?n(t):n(null,u)})}},function(n,u){if(n)t(n);else{var e=u.dn;u.ps.forEach(function(n){e.push(n)});var a=underscore.groupBy(e,function(n){return n.tk}),o=underscore.keys(a);async.map(o,function(n,t){var u=a[n],e={};e.tk=n,e.du_no1=u.csum("du_no1")+u.csum("ps_no")-u.csum("du_co1")-u.csum("ps_co"),e.du_no_nt1=u.csum("du_no_nt1")+u.csum("ps_no_nt")-u.csum("du_co_nt1")-u.csum("ps_co_nt"),e.du_no1<0?(e.du_co1=Math.abs(e.du_no1),e.du_no1=0):e.du_co1=0,e.du_no_nt1<0?(e.du_co_nt1=Math.abs(e.du_no_nt1),e.du_no_nt1=0):e.du_co_nt1=0,t(null,e)},function(n,u){n?t(n):t(null,u)})}})}else t(new Error("ngay and id_app parameter required"))};