This commit is contained in:
2025-09-09 00:10:53 +03:00
parent 38f2a05107
commit 204fc092d7
239 changed files with 22447 additions and 9536 deletions

BIN
scripts/entrances.xlsx Normal file

Binary file not shown.

123
scripts/generatorExcel.js Normal file
View File

@@ -0,0 +1,123 @@
const sqlite3 = require('sqlite3').verbose();
const ExcelJS = require('exceljs');
async function exportData() {
const db = new sqlite3.Database('database.sqlite');
const workbook = new ExcelJS.Workbook();
// выгрузка подъездов
await new Promise((resolve, reject) => {
db.all(`
SELECT
e.id as entrance_id,
e.entrance_number as entrance_title,
h.number as house_number,
h.title as house_title
FROM entrance e
JOIN house h ON e.house_id = h.id
`, async (err, entrances) => {
if (err) return reject(err);
for (const entrance of entrances) {
let title = String(entrance.house_title)
.replace('вул. ', '')
.replace('Проспект ', '');
const sheet = workbook.addWorksheet(
`${title} ${entrance.house_number} ( П. ${entrance.entrance_title + 1} )`
);
sheet.columns = [
{ header: 'ID', key: 'id', width: 10 },
{ header: 'Вістник / Група', key: 'name', width: 30 },
{ header: 'Початок', key: 'start', width: 20 },
{ header: 'Кінець', key: 'end', width: 20 }
];
sheet.getColumn('start').numFmt = 'dd.mm.yyyy';
sheet.getColumn('end').numFmt = 'dd.mm.yyyy';
await new Promise((resolve2, reject2) => {
db.all(`
SELECT id, name, date_start, date_end, group_id
FROM entrance_history
WHERE entrance_id = ?
`, [entrance.entrance_id], (err, rows) => {
if (err) return reject2(err);
rows.forEach(row => {
const startDate = row.date_start ? new Date(row.date_start) : null;
const endDate = row.date_end ? new Date(row.date_end) : null;
let name = row.name;
if (row.name === 'Групова') {
name = `${row.name} (${row.group_id})`;
}
sheet.addRow({ id: row.id, name, start: startDate, end: endDate });
});
resolve2();
});
});
}
resolve();
});
});
// выгрузка участков
await new Promise((resolve, reject) => {
db.all(`
SELECT
homestead.id as homestead_id,
homestead.number as homestead_number,
homestead.title as homestead_title
FROM homestead
`, async (err, homesteads) => {
if (err) return reject(err);
for (const homestead of homesteads) {
const sheet = workbook.addWorksheet(`${homestead.homestead_title} ${homestead.homestead_number}`);
sheet.columns = [
{ header: 'ID', key: 'id', width: 10 },
{ header: 'Вістник / Група', key: 'name', width: 30 },
{ header: 'Початок', key: 'start', width: 20 },
{ header: 'Кінець', key: 'end', width: 20 }
];
sheet.getColumn('start').numFmt = 'dd.mm.yyyy';
sheet.getColumn('end').numFmt = 'dd.mm.yyyy';
await new Promise((resolve2, reject2) => {
db.all(`
SELECT id, name, date_start, date_end, group_id
FROM homestead_history
WHERE homestead_id = ?
`, [homestead.homestead_id], (err, rows) => {
if (err) return reject2(err);
rows.forEach(row => {
const startDate = row.date_start ? new Date(row.date_start) : null;
const endDate = row.date_end ? new Date(row.date_end) : null;
let name = row.name;
if (row.name === 'Групова') {
name = `${row.name} (${row.group_id})`;
}
sheet.addRow({ id: row.id, name, start: startDate, end: endDate });
});
resolve2();
});
});
}
resolve();
});
});
// сохраняем один раз
await workbook.xlsx.writeFile('Території.xlsx');
console.log('Файл создан: entrances.xlsx');
db.close();
}
exportData();

View File

@@ -1,7 +1,7 @@
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('database.sqlite');
const db_old = new sqlite3.Database('old_db.sqlite');
const db_old = new sqlite3.Database('db_old.sqlite');
// Створення підїздів
@@ -57,7 +57,7 @@ const db_old = new sqlite3.Database('old_db.sqlite');
// Міграція історії з старої БД в нову
// const sql_1 = `SELECT * FROM history ORDER BY date_start`;
// const sql_1 = `SELECT * FROM history WHERE date_start >= 1737667735000 ORDER BY date_start`;
// db_old.all(sql_1, [], (err, historys) => {
// if (err) {
// throw err;
@@ -98,7 +98,7 @@ const db_old = new sqlite3.Database('old_db.sqlite');
// console.log(entrance.id, house.title, house.number, entrance.title);
// db.run(`INSERT INTO entrance_history(entrance_id, name, date_start, date_end, group_number, working) VALUES(?, ?, ?, ?, ?, ?)`,
// db.run(`INSERT INTO entrance_history(entrance_id, name, date_start, date_end, group_id, working) VALUES(?, ?, ?, ?, ?, ?)`,
// [
// entrance.id,
// history.name,
@@ -127,7 +127,7 @@ const db_old = new sqlite3.Database('old_db.sqlite');
// } else {
// // console.log(house.id, house.title, house.number);
// db.run(`INSERT INTO homestead_history(homestead_id, name, date_start, date_end, group_number, working) VALUES(?, ?, ?, ?, ?, ?)`,
// db.run(`INSERT INTO homestead_history(homestead_id, name, date_start, date_end, group_id, working) VALUES(?, ?, ?, ?, ?, ?)`,
// [
// homestead.id,
// history.name,
@@ -159,3 +159,50 @@ const db_old = new sqlite3.Database('old_db.sqlite');
// }
// });
// Додавання ID вісника в entrance_history
// Оновлення кожного запису в entrance_history
db.serialize(() => {
db.all(`SELECT id, name FROM entrance_history`, (err, rows) => {
if (err) return console.error('Read error:', err.message);
const updateStmt = db.prepare(`UPDATE entrance_history SET sheep_id = ? WHERE id = ?`);
let pending = rows.length;
if (pending === 0) {
updateStmt.finalize();
db.close();
console.log('Нема записів для оновлення.');
return;
}
rows.forEach((row) => {
db.get(`SELECT id FROM sheeps WHERE name = ?`, [row.name], (err, sheep) => {
if (err) {
console.error('Search error:', err.message);
if (--pending === 0) {
updateStmt.finalize();
db.close();
console.log('Оновлення завершено (з помилками).');
}
return;
}
const sheepId = sheep ? sheep.id : 0;
updateStmt.run(sheepId, row.id, (err) => {
if (err) {
console.error(`Помилка оновлення запису ID ${row.id}:`, err.message);
}
if (--pending === 0) {
updateStmt.finalize();
db.close();
console.log('Оновлення завершено');
}
});
});
});
});
});

1969
scripts/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +1,15 @@
{
"name": "import",
"version": "1.0.0",
"main": "import.js",
"main": "generatorExcel.js",
"scripts": {
"start": "node import.js"
"start": "node generatorExcel.js"
},
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"exceljs": "^4.4.0",
"sqlite3": "^5.1.7"
}
}

BIN
scripts/table.xlsx Normal file

Binary file not shown.

Binary file not shown.