@provis/provis-common-be-module 1.4.26 → 1.4.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/helpers/excelDateToJsDate.d.ts +4 -0
- package/dist/helpers/excelDateToJsDate.js +30 -0
- package/dist/helpers/index.d.ts +2 -1
- package/dist/helpers/index.js +3 -1
- package/dist/helpers/readExcel.d.ts +4 -0
- package/dist/helpers/readExcel.js +105 -0
- package/dist/interface/read.excel.interface.d.ts +12 -0
- package/dist/interface/read.excel.interface.js +2 -0
- package/package.json +3 -2
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = ({ initialValue, }) => {
|
|
4
|
+
try {
|
|
5
|
+
if (!initialValue) {
|
|
6
|
+
throw new Error('initial value is not found');
|
|
7
|
+
}
|
|
8
|
+
const datePattern = /^\d{2}-\d{2}-\d{4}$/;
|
|
9
|
+
if (datePattern.test(String(initialValue))) {
|
|
10
|
+
const parts = String(initialValue).split('-');
|
|
11
|
+
const day = parseInt(parts[0]);
|
|
12
|
+
const month = parseInt(parts[1]);
|
|
13
|
+
const year = parseInt(parts[2]);
|
|
14
|
+
return `${year}-${month}-${day}`;
|
|
15
|
+
}
|
|
16
|
+
const utc_days = Math.floor(initialValue - 25569);
|
|
17
|
+
const utc_value = utc_days * 86400;
|
|
18
|
+
const date_info = new Date(utc_value * 1000);
|
|
19
|
+
const fractional_day = initialValue - Math.floor(initialValue) + 0.0000001;
|
|
20
|
+
let total_seconds = Math.floor(86400 * fractional_day);
|
|
21
|
+
const seconds = total_seconds % 60;
|
|
22
|
+
total_seconds -= seconds;
|
|
23
|
+
const hours = Math.floor(total_seconds / (60 * 60));
|
|
24
|
+
const minutes = Math.floor(total_seconds / 60) % 60;
|
|
25
|
+
return new Date(date_info.getFullYear(), date_info.getMonth(), date_info.getDate(), hours, minutes, seconds);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
throw new Error(`error convert ${err.message}`);
|
|
29
|
+
}
|
|
30
|
+
};
|
package/dist/helpers/index.d.ts
CHANGED
|
@@ -16,4 +16,5 @@ import getObjByKeys from "./getObjByKeys";
|
|
|
16
16
|
import loop from "./loop";
|
|
17
17
|
import loopBackward from "./loopBackward";
|
|
18
18
|
import searchValue from "./searchValue";
|
|
19
|
-
|
|
19
|
+
import readExcel from "./readExcel";
|
|
20
|
+
export { addDateTime, amountDescription, axiosGet, axiosPost, axiosPut, compareDiffObj, convertCurrencySymbol, convertDateTimeFormat, convertObjToNumber, convertToCurrency, filterObj, generateRelationId, getCurrentDate, getDiffValue, getObjByKeys, loop, loopBackward, searchValue, readExcel, };
|
package/dist/helpers/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.searchValue = exports.loopBackward = exports.loop = exports.getObjByKeys = exports.getDiffValue = exports.getCurrentDate = exports.generateRelationId = exports.filterObj = exports.convertToCurrency = exports.convertObjToNumber = exports.convertDateTimeFormat = exports.convertCurrencySymbol = exports.compareDiffObj = exports.axiosPut = exports.axiosPost = exports.axiosGet = exports.amountDescription = exports.addDateTime = void 0;
|
|
3
|
+
exports.readExcel = exports.searchValue = exports.loopBackward = exports.loop = exports.getObjByKeys = exports.getDiffValue = exports.getCurrentDate = exports.generateRelationId = exports.filterObj = exports.convertToCurrency = exports.convertObjToNumber = exports.convertDateTimeFormat = exports.convertCurrencySymbol = exports.compareDiffObj = exports.axiosPut = exports.axiosPost = exports.axiosGet = exports.amountDescription = exports.addDateTime = void 0;
|
|
4
4
|
const addDateTime_1 = require("./addDateTime");
|
|
5
5
|
exports.addDateTime = addDateTime_1.default;
|
|
6
6
|
const amountDescription_1 = require("./amountDescription");
|
|
@@ -37,3 +37,5 @@ const loopBackward_1 = require("./loopBackward");
|
|
|
37
37
|
exports.loopBackward = loopBackward_1.default;
|
|
38
38
|
const searchValue_1 = require("./searchValue");
|
|
39
39
|
exports.searchValue = searchValue_1.default;
|
|
40
|
+
const readExcel_1 = require("./readExcel");
|
|
41
|
+
exports.readExcel = readExcel_1.default;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const helpers_1 = require("../helpers");
|
|
13
|
+
const XLSX = require("xlsx");
|
|
14
|
+
const excelDateToJsDate_1 = require("./excelDateToJsDate");
|
|
15
|
+
const constants_1 = require("../constants");
|
|
16
|
+
function readExcel(file, data) {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
const dataPost = [];
|
|
19
|
+
let validationPassed = true;
|
|
20
|
+
let errorMessage = '';
|
|
21
|
+
try {
|
|
22
|
+
const { listKey, headerExcel, startRow, startColumn } = data;
|
|
23
|
+
const workbook = XLSX.read(file, { type: 'buffer' });
|
|
24
|
+
const sheet = workbook.Sheets[workbook.SheetNames[0]];
|
|
25
|
+
const merges = sheet['!merges'] || [];
|
|
26
|
+
const endRange = XLSX.utils.decode_range(sheet['!ref']);
|
|
27
|
+
const endRow = endRange.e.r;
|
|
28
|
+
const endColumn = endRange.e.c;
|
|
29
|
+
let tempData = {};
|
|
30
|
+
const rows = XLSX.utils.sheet_to_json(sheet, {
|
|
31
|
+
range: {
|
|
32
|
+
s: { c: startColumn || 0, r: startRow || 0 },
|
|
33
|
+
e: { c: endColumn, r: endRow },
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
for (let i = 0; i < rows.length; i++) {
|
|
37
|
+
const rowData = rows[i];
|
|
38
|
+
const obj = {};
|
|
39
|
+
let isReset = false;
|
|
40
|
+
for (let j = 0; j < listKey.length; j++) {
|
|
41
|
+
const { name: key, isMandatory, type } = listKey[j];
|
|
42
|
+
const header = headerExcel[j];
|
|
43
|
+
obj[key] = rowData[header];
|
|
44
|
+
if (obj[key] != undefined) {
|
|
45
|
+
tempData[key] = obj[key];
|
|
46
|
+
}
|
|
47
|
+
for (const merge of merges) {
|
|
48
|
+
if (i >= merge.s.r &&
|
|
49
|
+
i <= merge.e.r &&
|
|
50
|
+
j >= merge.s.c &&
|
|
51
|
+
j <= merge.e.c) {
|
|
52
|
+
console.log(`Merged Cell => ${key} | ${header}`, rowData[header]);
|
|
53
|
+
obj[key] = tempData[key];
|
|
54
|
+
const nextRow = rows[i + 1];
|
|
55
|
+
if (nextRow) {
|
|
56
|
+
if (nextRow[header] != undefined &&
|
|
57
|
+
nextRow[header] != obj[key]) {
|
|
58
|
+
isReset = true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (isMandatory && obj[key] == undefined) {
|
|
64
|
+
validationPassed = false;
|
|
65
|
+
errorMessage += `Error in column: ${headerExcel[j]} at row ${i + 1}\n`;
|
|
66
|
+
}
|
|
67
|
+
obj[key] = convertValue(type, obj[key]);
|
|
68
|
+
}
|
|
69
|
+
if (isReset) {
|
|
70
|
+
tempData = {};
|
|
71
|
+
}
|
|
72
|
+
dataPost.push(obj);
|
|
73
|
+
}
|
|
74
|
+
if (!validationPassed) {
|
|
75
|
+
throw new Error(errorMessage);
|
|
76
|
+
}
|
|
77
|
+
return dataPost;
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
console.error(`[error][${(0, helpers_1.getCurrentDate)()}] ${err.message}`);
|
|
81
|
+
throw err;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
function convertValue(type, value) {
|
|
86
|
+
try {
|
|
87
|
+
if (value == undefined)
|
|
88
|
+
return undefined;
|
|
89
|
+
switch (type) {
|
|
90
|
+
case 'date':
|
|
91
|
+
return (0, helpers_1.convertDateTimeFormat)({
|
|
92
|
+
initialValue: (0, excelDateToJsDate_1.default)({ initialValue: value }).toString(),
|
|
93
|
+
dateTimeFormatFrom: constants_1.config.date_format_timestamp,
|
|
94
|
+
dateTimeFormatTo: constants_1.config.date_simple_format,
|
|
95
|
+
}).toString();
|
|
96
|
+
default:
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error(`[error][provis-read-excel] Failed to convert type: ${type}, value: ${value}, error: ${error.message}`);
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.default = readExcel;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@provis/provis-common-be-module",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.28",
|
|
4
4
|
"description": "This common module for Provis internal backend use lib",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
"license": "ISC",
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"axios": "^0.21.1",
|
|
15
|
-
"uniqid": "^5.3.0"
|
|
15
|
+
"uniqid": "^5.3.0",
|
|
16
|
+
"xlsx": "^0.16.8"
|
|
16
17
|
},
|
|
17
18
|
"devDependencies": {}
|
|
18
19
|
}
|