evmtools-node
Version:
このライブラリは、プライムブレインズ社で利用している「進捗管理ツール(Excel)」ファイルを読み込み、 プロジェクトの進捗状況や要員別の作業量を可視化するためのライブラリです。
67 lines • 3.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PbevmDiffUsercase = void 0;
const excel_csv_read_write_1 = require("excel-csv-read-write");
const common_1 = require("../common");
class PbevmDiffUsercase {
constructor(_nowProjectCreator, _prevProjectCreator, _projectService) {
this._nowProjectCreator = _nowProjectCreator;
this._prevProjectCreator = _prevProjectCreator;
this._projectService = _projectService;
}
async execute() {
const nowP = await this._nowProjectCreator.createProject();
const prevP = await this._prevProjectCreator.createProject();
const taskDiffs = this._projectService.calculateTaskDiffs(nowP, prevP);
// console.table(taskDiffs.filter((row) => row.hasDiff))
const projectDiffs = this._projectService.calculateProjectDiffs(taskDiffs);
// console.table(projectDiffs.filter((row) => row.hasDiff))
const assigneeDiffs = this._projectService.calculateAssigneeDiffs(taskDiffs);
// console.table(assigneeDiffs.filter((row) => row.hasDiff))
await this.save(nowP, prevP, projectDiffs, assigneeDiffs, taskDiffs);
}
async save(currentProject, prevProject, projectDiffs, assigneeDiffs, taskDiffs) {
const path = `${currentProject.name}-diff.xlsx`;
const workbook = await (0, excel_csv_read_write_1.createWorkbook)();
if (projectDiffs) {
console.log('プロジェクトDiff');
console.table(projectDiffs.filter((row) => row.hasDiff));
(0, excel_csv_read_write_1.json2workbook)({
instances: projectDiffs,
workbook,
sheetName: `プロジェクトDiff`,
applyStyles: (0, common_1.createStyles)(),
});
}
if (assigneeDiffs) {
console.log('担当Diff');
console.table(assigneeDiffs.filter((row) => row.hasDiff));
(0, excel_csv_read_write_1.json2workbook)({
instances: assigneeDiffs,
workbook,
sheetName: '担当Diff',
applyStyles: (0, common_1.createStyles)(),
});
}
if (taskDiffs) {
console.log('タスクDiff');
console.table(taskDiffs.filter((row) => row.hasDiff));
(0, excel_csv_read_write_1.json2workbook)({
instances: taskDiffs,
workbook,
sheetName: `タスクDiff`,
applyStyles: (0, common_1.createStyles)(common_1.style6), // 日付列のフォーマットを指定
converters: {
// なんか、日付はコレやらないとキレイに出力できない
prevBaseDate: (value) => value,
currentBaseDate: (value) => value,
baseDate: (value) => value,
},
});
}
workbook.deleteSheet('Sheet1');
await (0, excel_csv_read_write_1.toFileAsync)(workbook, path);
}
}
exports.PbevmDiffUsercase = PbevmDiffUsercase;
//# sourceMappingURL=pbevm-diff-usercase.js.map