flexbiz-server
Version:
Flexible Server
10 lines (9 loc) • 3.47 kB
JavaScript
'use strict';const _=require("underscore"),{parentPort,workerData}=require("worker_threads"),async=require("async");require("../global");const {evalute}=require("../libs/utils");function exec($cong_thuc_func_string$$){$cong_thuc_func_string$$=0>$cong_thuc_func_string$$.indexOf("return ")?`return ${$cong_thuc_func_string$$}`:$cong_thuc_func_string$$;return evalute($cong_thuc_func_string$$)}
function calcGrid4Column($report$$,$column$$,$rowCallback$$,$callback$$){$report$$.filter($r$$=>$r$$.cong_thuc&&!$r$$[`cong_thuc_${$column$$}`]).forEach($r$$=>{$r$$[`cong_thuc_${$column$$}`]=$r$$.cong_thuc});let $string_cong_thucs_old$$="";async.forever($cb$$=>{let $cong_thucs$$=$report$$.filter($r$$=>$r$$[`cong_thuc_${$column$$}`]),$string_cong_thucs$$=$cong_thucs$$.map($r$$=>$r$$[`cong_thuc_${$column$$}`]).join("");if(!$string_cong_thucs$$)return $cb$$(-1);if($string_cong_thucs$$===$string_cong_thucs_old$$)return $cong_thucs$$.forEach($row$$=>
{console.error("Formular error",$row$$[`cong_thuc_${$column$$}`],$row$$);let $cong_thuc$$=$row$$[`cong_thuc_${$column$$}`].replace(/(\[\w+\])/g,"0");try{$row$$[$column$$]=exec($cong_thuc$$)}catch($e$$){$row$$[$column$$]=0}$row$$[`cong_thuc_${$column$$}`]=""}),$cb$$(-1);$string_cong_thucs_old$$=$string_cong_thucs$$;$cong_thucs$$.forEach($row$$=>{let $cong_thuc$$=$row$$[`cong_thuc_${$column$$}`];$report$$.filter($_row$$=>0<=$cong_thuc$$.indexOf(`[${$_row$$.ma_so}]`)).forEach($_row$$=>{if($_row$$[`cong_thuc_${$column$$}`])$cong_thuc$$=
$cong_thuc$$.split(`[${$_row$$.ma_so}]`).join("("+$_row$$[`cong_thuc_${$column$$}`]+")");else{let $value$$=0;try{($value$$=Number($_row$$[$column$$]))||($value$$=0)}catch($e$$){$value$$=0,console.error("value is not value",$value$$,"of row",$_row$$)}$cong_thuc$$=$cong_thuc$$.split(`[${$_row$$.ma_so}]`).join("("+$value$$+")")}});if(0>$cong_thuc$$.indexOf("["))try{$row$$[$column$$]=exec($cong_thuc$$),$row$$[`cong_thuc_${$column$$}`]="",$rowCallback$$(null,$row$$)}catch($e$$){console.error("Error when exec formula",
$e$$.message||$e$$,$cong_thuc$$),$row$$[$column$$]=0,$row$$[`cong_thuc_${$column$$}`]="",$rowCallback$$($e$$.message||$e$$,$row$$)}else $row$$[`cong_thuc_${$column$$}`]=$cong_thuc$$});$cb$$()},()=>{$callback$$()})}
function calcGrid($report$$,$number_columns$$,$callback$$){let $columns$$={};_.isString($number_columns$$)?$number_columns$$.split(",").forEach($c$$=>{$columns$$[$c$$]=()=>{}}):$columns$$=$number_columns$$;async.map(Object.keys($columns$$),($key$$,$cb$$)=>{setImmediate(()=>{calcGrid4Column($report$$,$key$$,$columns$$[$key$$],()=>{$cb$$()})})},()=>{$callback$$($report$$)})}
parentPort.on("message",$msg$$=>{if($msg$$&&_.isString($msg$$))try{$msg$$=JSON.parse($msg$$)}catch($e$$){console.error($e$$);parentPort.postMessage({error:"msg is not valid"});return}const {report:$report$$,number_columns:$number_columns$$}=$msg$$;calcGrid($report$$,$number_columns$$,$rs$$=>{parentPort.postMessage({result:$rs$$,id_task:$msg$$.id_task})})});
workerData&&(()=>{let $msg$$=workerData;if(_.isString($msg$$))try{$msg$$=JSON.parse($msg$$)}catch($e$$){console.error($e$$);parentPort.postMessage({error:"msg is not valid"});return}const {report:$report$$,number_columns:$number_columns$$}=$msg$$;$report$$&&$number_columns$$?calcGrid($report$$,$number_columns$$,$rs$$=>{parentPort.postMessage({result:$rs$$,id_task:$msg$$.id_task})}):parentPort.postMessage({error:"msg is not valid",id_task:$msg$$.id_task})})();
setInterval(()=>{parentPort.postMessage("pong")},5E3);