kpiplus
Version:
KPI+
1 lines • 2.95 kB
JavaScript
var dktk=require("./dktk"),cktk=require("./cktk"),pstk=require("./pstk"),arrayFunctions=require("./array-funcs"),Account=require("../models/account"),async=require("async"),underscore=require("underscore");module.exports=function(n,_){if(!n.tu_ngay||!n.den_ngay||!n.id_app)return _(new Error("Hàm này yêu cầu các tham số tu_ngay,den_ngay,id_app"));n.tk||(n.tk=""),n.ma_dvcs||(n.ma_dvcs=""),async.parallel({dk:function(_){var o={};underscore.extend(o,n),o.ngay=n.tu_ngay,dktk(o,function(n,o){if(n)return _(n);_(null,o)})},ps:function(_){var o={id_app:n.id_app};o.tk={$regex:"^"+n.tk,$options:"i"},o.ma_dvcs={$regex:n.ma_dvcs,$options:"i"},o.ngay_ct={$gte:n.tu_ngay,$lte:n.den_ngay},pstk(o,function(n,o){if(n)return _(n);_(null,o)})},ck:function(_){var o={};underscore.extend(o,n),o.ngay=n.den_ngay,cktk(o,function(n,o){if(n)return _(n);_(null,o)})}},function(o,c){if(o)return _(o);var t=c.ps;c.dk.forEach(function(n){n.dk_no=n.du_no00,n.dk_co=n.du_co00,n.dk_no_nt=n.du_no_nt00,n.dk_co_nt=n.du_co_nt00,t.push(n)}),c.ck.forEach(function(n){n.ck_no=n.du_no00,n.ck_co=n.du_co00,n.ck_no_nt=n.du_no_nt00,n.ck_co_nt=n.du_co_nt00,t.push(n)}),t.groupBy("tk",[{name:"dk_no",value:"dk_no"},{name:"dk_co",value:"dk_co"},{name:"dk_no_nt",value:"dk_no_nt"},{name:"dk_co_nt",value:"dk_co_nt"},{name:"ps_no",value:"ps_no"},{name:"ps_co",value:"ps_co"},{name:"ps_no_nt",value:"ps_no_nt"},{name:"ps_co_nt",value:"ps_co_nt"},{name:"ck_no",value:"ck_no"},{name:"ck_co",value:"ck_co"},{name:"ck_no_nt",value:"ck_no_nt"},{name:"ck_co_nt",value:"ck_co_nt"}],function(o,c){var t=[];async.map(c,function(_,o){_.loai_tk=1;var c=_.tk;async.forever(function(o){Account.find({tk:c,id_app:n.id_app},{tk_me:1},function(n,e){if(e&&1==e.length&&e[0].tk_me){var k={};underscore.extend(k,_),k.tk=e[0].tk_me,t.push(k),c=e[0].tk_me,o()}else o("finish or has error")})},function(n){o()})},function(o,e){t.groupBy("tk",[{name:"dk_no",value:"dk_no"},{name:"dk_co",value:"dk_co"},{name:"dk_no_nt",value:"dk_no_nt"},{name:"dk_co_nt",value:"dk_co_nt"},{name:"ps_no",value:"ps_no"},{name:"ps_co",value:"ps_co"},{name:"ps_no_nt",value:"ps_no_nt"},{name:"ps_co_nt",value:"ps_co_nt"},{name:"ck_no",value:"ck_no"},{name:"ck_co",value:"ck_co"},{name:"ck_no_nt",value:"ck_no_nt"},{name:"ck_co_nt",value:"ck_co_nt"}],function(o,t){if(o)return _(o);async.map(t,function(_,o){Account.find({tk:_.tk,id_app:n.id_app},{tk_cn:1,loai_tk:1},function(t,e){if(1!=e.length)return o(null);var k=e[0];if(_.loai_tk=k.loai_tk,!0===k.tk_cn&&!1===n.bu_tru)return c.push(_),o(null);_.dk_no=_.dk_no-_.dk_co,_.ck_no=_.ck_no-_.ck_co,_.dk_no_nt=_.dk_no_nt-_.dk_co_nt,_.ck_no_nt=_.ck_no_nt-_.ck_co_nt,_.dk_no<0?(_.dk_co=Math.abs(_.dk_no),_.dk_no=0):_.dk_co=0,_.dk_no_nt<0?(_.dk_co_nt=Math.abs(_.dk_no_nt),_.dk_no_nt=0):_.dk_co_nt=0,_.ck_no<0?(_.ck_co=Math.abs(_.ck_no),_.ck_no=0):_.ck_co=0,_.ck_no_nt<0?(_.ck_co_nt=Math.abs(_.ck_no_nt),_.ck_no_nt=0):_.ck_co_nt=0,c.push(_),o(null)})},function(n,o){_(null,c)})})})})})};