evmtools-node
Version:
このライブラリは、プライムブレインズ社で利用している「進捗管理ツール(Excel)」ファイルを読み込み、 プロジェクトの進捗状況や要員別の作業量を可視化するためのライブラリです。
122 lines • 5.9 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PbevmShowResourcePlanUsecase = void 0;
const excel_csv_read_write_1 = require("excel-csv-read-write");
const logger_1 = require("../../logger");
const resourceUtils_1 = require("../domain/resourceUtils");
const node_path_1 = __importDefault(require("node:path"));
const node_fs_1 = __importDefault(require("node:fs"));
const styles_1 = require("../domain/styles");
const myStyles_1 = require("../../common/myStyles");
class PbevmShowResourcePlanUsecase {
constructor(_creator, _outputDir) {
this._creator = _creator;
this._outputDir = _outputDir;
this.logger = (0, logger_1.getLogger)('PbevmShowResourcePlanUsercase');
}
async execute() {
// const creator = new ResourcePlansCreatorImpl(this._path)
const unitResults = await this._creator.createResourcePlans();
const outputDir = this._outputDir;
node_fs_1.default.existsSync(outputDir) || node_fs_1.default.mkdirSync(outputDir);
const workbook = await (0, excel_csv_read_write_1.createWorkbook)();
console.log('素データ');
console.table(unitResults);
const byNameInfo = (0, resourceUtils_1.toGroupBy)('名前', unitResults);
console.log('名前ごと');
console.table(byNameInfo);
console.log('プロジェクト情報,人ごと');
const projectMemberInfo = (0, resourceUtils_1.toProjectMemberInfo)(unitResults);
console.table(projectMemberInfo);
console.log('ユニット一覧');
const unitInfo = (0, resourceUtils_1.toUnitInfo)(unitResults);
console.table(unitInfo);
console.log('メンバー一覧');
const memberInfo = (0, resourceUtils_1.toMemberInfo)(unitResults);
console.table(memberInfo);
(0, excel_csv_read_write_1.json2workbook)({
instances: byNameInfo,
workbook,
sheetName: 'メンバーごとの工数',
applyStyles: (0, styles_1.createStyles)(myStyles_1.style0),
});
(0, excel_csv_read_write_1.json2workbook)({
instances: projectMemberInfo,
workbook,
sheetName: 'プロジェクト、人ごとの工数',
applyStyles: (0, styles_1.createStyles)(myStyles_1.style1),
});
// for (const targetColumn of attrTypeStrs) {
// console.log(`${targetColumn} でGroup Byした結果:`)
// const result = toGroupBy(targetColumn, unitResults)
// console.table(result)
// json2workbook({ instances: result, workbook, sheetName: targetColumn, applyStyles })
// }
console.log('単価調整素データ');
const 単価調整素データ = unitResults.map((unitResult) => (0, resourceUtils_1.単価単位調整)(unitResult));
console.table(単価調整素データ);
(0, excel_csv_read_write_1.json2workbook)({
instances: 単価調整素データ,
workbook,
sheetName: '要員(工数)',
applyStyles: (0, styles_1.createStyles)(myStyles_1.style2),
});
const costs = 単価調整素データ.map((unitResult) => (0, resourceUtils_1.toCost)(unitResult));
console.table(costs);
(0, excel_csv_read_write_1.json2workbook)({
instances: costs,
workbook,
sheetName: '要員(コスト)',
applyStyles: (0, styles_1.createStyles)(myStyles_1.style21),
});
const sales = 単価調整素データ.map((unitResult) => (0, resourceUtils_1.toSales)(unitResult));
console.table(sales);
(0, excel_csv_read_write_1.json2workbook)({
instances: sales,
workbook,
sheetName: '要員(売上)',
applyStyles: (0, styles_1.createStyles)(myStyles_1.style21),
});
const costsByUnit = (0, resourceUtils_1.toGroupBy)('ユニットコード', costs);
console.table(costsByUnit);
const salesByUnit = (0, resourceUtils_1.toGroupBy)('ユニットコード', sales);
console.table(salesByUnit);
(0, excel_csv_read_write_1.json2workbook)({
instances: costsByUnit,
workbook,
sheetName: 'ユニットごとコスト',
applyStyles: (0, styles_1.createStyles)(myStyles_1.style3),
});
(0, excel_csv_read_write_1.json2workbook)({
instances: salesByUnit,
workbook,
sheetName: 'ユニットごと売上',
applyStyles: (0, styles_1.createStyles)(myStyles_1.style3),
});
(0, excel_csv_read_write_1.json2workbook)({
instances: unitInfo,
workbook,
sheetName: 'ユニットごと工数',
applyStyles: (0, styles_1.createStyles)(myStyles_1.style4),
});
(0, excel_csv_read_write_1.json2workbook)({
instances: memberInfo,
workbook,
sheetName: 'メンバー一覧',
applyStyles: (0, styles_1.createStyles)(myStyles_1.style4),
});
workbook.deleteSheet('Sheet1');
await (0, excel_csv_read_write_1.toFileAsync)(workbook, node_path_1.default.join(outputDir, '要員計画集計.xlsx'));
// const project = await this._creator.createProject()
// const holidayDatas = project.holidayDatas
// console.table(holidayDatas)
// console.log(isHoliday(new Date('2025-07-21'), project))
// console.log(project.isHoliday(new Date('2025-07-21')))
// await this._repository.save(project)
}
}
exports.PbevmShowResourcePlanUsecase = PbevmShowResourcePlanUsecase;
//# sourceMappingURL=pbevm-show-resourceplan-usecase.js.map