kpiplus
Version:
KPI+
1 lines • 1.7 kB
JavaScript
var cddt=require("../models/cddt"),Vsocai=require("./vsocai"),arrayfuncs=require("./array-funcs"),async=require("async"),underscore=require("underscore"),moment=require("moment");module.exports=function(n,e){if(n&&n.ngay&&n.id_app){var t=n.ma_dvcs;t||(t=""),t={$regex:t,$options:"i"};var a,o=n.tk;if(o||(o=""),underscore.isArray(o))o.forEach(function(n){a=a?a+"|^"+n:"^"+n}),a||(a="^"),o={$regex:a,$options:"i"};else o={$regex:"^"+o,$options:"i"};var u=n.ma_dt;u||(u={$ne:""});var r,c,s=moment(new Date(n.ngay)).endOf("date").toDate();if(n.tu_ngay){var _=new Date(n.tu_ngay);c=_.getFullYear()}else c=s.getFullYear();r=moment(new Date(c.toString()+"-01-01")).startOf("year").toDate();var d=n.id_app;async.parallel({dn:function(n){var e={id_app:d,nam:c,tk:o,ma_dt:u,ma_dvcs:t};cddt.find(e).lean().exec(function(e,t){e?n(e):n(null,t)})},ps:function(n){var e={id_app:d,ngay_ct:{$gte:r,$lte:s},ma_dt:u,tk:o,ma_dvcs:t};Vsocai.find(e,function(e,t){if(e)return n(e);n(null,t)})}},function(n,t){if(n)e(n);else{var a=t.dn;t.ps.forEach(function(n){a.push(n)});var o=underscore.groupBy(a,function(n){return n.tk+"$s"+n.ma_dt}),u=underscore.keys(o);async.map(u,function(n,e){var t=o[n],a={},u=n.split("$s");a.tk=u[0],a.ma_dt=u[1],a.du_no00=t.csum("du_no00")+t.csum("ps_no")-t.csum("du_co00")-t.csum("ps_co"),a.du_no_nt00=t.csum("du_no_nt00")+t.csum("ps_no_nt")-t.csum("du_co_nt00")-t.csum("ps_co_nt"),a.du_no00<0?(a.du_co00=Math.abs(a.du_no00),a.du_no00=0):a.du_co00=0,a.du_no_nt00<0?(a.du_co_nt00=Math.abs(a.du_no_nt00),a.du_no_nt00=0):a.du_co_nt00=0,a.ps_no_nt=0,a.ps_co_nt=0,a.ps_no=0,a.ps_co=0,e(null,a)},function(n,t){n?e(n):e(null,t)})}})}else e(new Error("Hàm này yêu cầu các tham số ngay,id_app"))};