UNPKG

flexbiz-server

Version:

Flexible Server

11 lines (10 loc) 4.74 kB
const ExcelJS=require("exceljs"),crypto=require("crypto"),createTmpFile=($fileName$$,$data$$)=>new Promise(($resolve$$,$reject$$)=>{const $cacheKey$$=`export_${crypto.randomBytes(16).toString("hex")}_${$fileName$$}`,$base64Data$$=(Buffer.isBuffer($data$$)?$data$$:Buffer.from($data$$,"utf-8")).toString("base64");global.clientRedis.setex($cacheKey$$,60,$base64Data$$,$err$$=>{if($err$$)return console.error("[excelHelper] L\u1ed7i khi ghi d\u1eef li\u1ec7u v\u00e0o Redis:",$err$$),$reject$$($err$$);console.warn("[excelHelper] \u0110\u00e3 t\u1ea1o file t\u1ea1m tr\u00ean Redis:", $cacheKey$$);$resolve$$($cacheKey$$)})}),getTmpFile=$cacheKey$$=>new Promise(($resolve$$,$reject$$)=>{global.clientRedis.get($cacheKey$$,($dataBuffer$jscomp$1_err$$,$result$$)=>{if($dataBuffer$jscomp$1_err$$)return console.error(`[excelHelper] L\u1ed7i khi \u0111\u1ecdc Redis key ${$cacheKey$$}:`,$dataBuffer$jscomp$1_err$$),$reject$$($dataBuffer$jscomp$1_err$$);if(!$result$$)return console.warn(`[excelHelper] Kh\u00f4ng t\u00ecm th\u1ea5y d\u1eef li\u1ec7u ho\u1eb7c \u0111\u00e3 h\u1ebft h\u1ea1n: ${$cacheKey$$}`), $resolve$$(null);$dataBuffer$jscomp$1_err$$=Buffer.from($result$$,"base64");global.clientRedis.del($cacheKey$$,$delErr$$=>{$delErr$$&&console.error(`[Cleanup] L\u1ed7i khi x\u00f3a key ${$cacheKey$$}:`,$delErr$$)});$resolve$$($dataBuffer$jscomp$1_err$$)})}),generateDefaultExcel=async({title:$filterTexts_headerRow_title$$,data:$data$$=[],columns:$columns$$=[],filterFields:$filterFields$$=[],condition:$condition$$={}})=>{const $workbook$$=new ExcelJS.Workbook;$workbook$$.creator="ERP System";const $sheet$$= $workbook$$.addWorksheet("Data");$sheet$$.getColumn(1).key="stt";$sheet$$.getColumn(1).width=5;$columns$$.forEach(($col$$,$index$$)=>{$index$$=$sheet$$.getColumn($index$$+2);$index$$.key=$col$$.field;$index$$.width=$col$$.type==="Date"||$col$$.type==="DateTime"?15:20;$col$$.type==="Number"?$index$$.numFmt="#,##0":$col$$.type==="Date"?$index$$.numFmt="dd/mm/yyyy":$col$$.type==="DateTime"&&($index$$.numFmt="dd/mm/yyyy hh:mm")});$sheet$$.addRow([$filterTexts_headerRow_title$$?$filterTexts_headerRow_title$$.toUpperCase(): "B\u00c1O C\u00c1O"]).font={bold:!0,size:14,color:{argb:"FF000000"}};$sheet$$.addRow([]);Object.keys($condition$$).length>0&&$filterFields$$.length>0&&($filterTexts_headerRow_title$$=$filterFields$$.map($fieldDef$$=>{if($fieldDef$$.type==="DateFilter"){var $fromVal_val$$=$condition$$[$fieldDef$$.mapTo?.[0]||"fromDate"];const $toVal$$=$condition$$[$fieldDef$$.mapTo?.[1]||"toDate"];return $fromVal_val$$||$toVal$$?`${$fieldDef$$.label}: T\u1eeb ${$fromVal_val$$?$fromVal_val$$.split("-").reverse().join("/"): "..."} \u0111\u1ebfn ${$toVal$$?$toVal$$.split("-").reverse().join("/"):"..."}`:null}$fromVal_val$$=$condition$$[$fieldDef$$.field];return $fromVal_val$$===void 0||$fromVal_val$$===null||$fromVal_val$$===""||Array.isArray($fromVal_val$$)&&$fromVal_val$$.length===0?null:$fieldDef$$.type==="Boolean"?`${$fieldDef$$.label}: ${$fromVal_val$$?"C\u00f3":"Kh\u00f4ng"}`:`${$fieldDef$$.label}: ${Array.isArray($fromVal_val$$)?$fromVal_val$$.join(", "):$fromVal_val$$}`}).filter(Boolean),$filterTexts_headerRow_title$$.length> 0&&($sheet$$.addRow([$filterTexts_headerRow_title$$.join(" | ")]).font={italic:!0,color:{argb:"FF555555"}},$sheet$$.addRow([])));const $headerValues$$=["STT"];$columns$$.forEach($col$$=>$headerValues$$.push($col$$.label||$col$$.field));$filterTexts_headerRow_title$$=$sheet$$.addRow($headerValues$$);$filterTexts_headerRow_title$$.font={bold:!0};$filterTexts_headerRow_title$$.fill={type:"pattern",pattern:"solid",fgColor:{argb:"FFF0F0F0"}};$filterTexts_headerRow_title$$.eachCell($cell$$=>{$cell$$.border= {top:{style:"thin"},left:{style:"thin"},bottom:{style:"thin"},right:{style:"thin"}}});$sheet$$.views=[{state:"frozen",ySplit:$filterTexts_headerRow_title$$.number}];$data$$.forEach(($rowObj$$,$currentRow_index$$)=>{const $rowData$$={stt:$currentRow_index$$+1};$columns$$.forEach($col$$=>{let $val$$=$rowObj$$[$col$$.field];$val$$!==null&&$val$$!==void 0&&$val$$!==""&&($col$$.type==="Number"?$val$$=Number($val$$)||0:$col$$.type==="Date"||$col$$.type==="DateTime"?$val$$=new Date($val$$):$col$$.type=== "Boolean"&&($val$$=$val$$?"C\u00f3":"Kh\u00f4ng"));$rowData$$[$col$$.field]=$val$$});$currentRow_index$$=$sheet$$.addRow($rowData$$);$currentRow_index$$.eachCell($cell$$=>{$cell$$.border={top:{style:"thin"},left:{style:"thin"},bottom:{style:"thin"},right:{style:"thin"}}});$rowObj$$.bold===!0&&($currentRow_index$$.font={bold:!0},$currentRow_index$$.fill={type:"pattern",pattern:"solid",fgColor:{argb:"FFFFFBE6"}})});$data$$=await $workbook$$.xlsx.writeBuffer();return createTmpFile(".xlsx",$data$$)}; module.exports={createTmpFile,getTmpFile,generateDefaultExcel};