Initial commit
This commit is contained in:
172
server/prisma/seed.ts
Normal file
172
server/prisma/seed.ts
Normal file
@@ -0,0 +1,172 @@
|
||||
import { PrismaClient } from '@prisma/client';
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
async function main() {
|
||||
const equipmentTypes = [
|
||||
{
|
||||
code: 'pump',
|
||||
name: 'Насосный агрегат',
|
||||
manufacturer: 'АО НасосПром',
|
||||
maintenanceIntervalHours: 2000,
|
||||
overhaulIntervalHours: 16000,
|
||||
},
|
||||
{
|
||||
code: 'compressor',
|
||||
name: 'Компрессорная установка',
|
||||
manufacturer: 'ОАО Компрессормаш',
|
||||
maintenanceIntervalHours: 1500,
|
||||
overhaulIntervalHours: 12000,
|
||||
},
|
||||
{
|
||||
code: 'generator',
|
||||
name: 'Дизель-генератор',
|
||||
manufacturer: 'АО ЭнергоМаш',
|
||||
maintenanceIntervalHours: 500,
|
||||
overhaulIntervalHours: 6000,
|
||||
},
|
||||
{
|
||||
code: 'valve',
|
||||
name: 'Запорная арматура',
|
||||
manufacturer: 'ЗАО АрматурПром',
|
||||
maintenanceIntervalHours: 1000,
|
||||
overhaulIntervalHours: 10000,
|
||||
},
|
||||
{
|
||||
code: 'sensor',
|
||||
name: 'Датчик давления',
|
||||
manufacturer: 'ООО ПриборСервис',
|
||||
maintenanceIntervalHours: 800,
|
||||
overhaulIntervalHours: 8000,
|
||||
},
|
||||
{
|
||||
code: 'motor',
|
||||
name: 'Электродвигатель',
|
||||
manufacturer: 'ПАО ЭлектроМотор',
|
||||
maintenanceIntervalHours: 1200,
|
||||
overhaulIntervalHours: 14000,
|
||||
},
|
||||
{
|
||||
code: 'fan',
|
||||
name: 'Вентилятор',
|
||||
manufacturer: 'АО ВентПром',
|
||||
maintenanceIntervalHours: 700,
|
||||
overhaulIntervalHours: 9000,
|
||||
},
|
||||
{
|
||||
code: 'heat-exchanger',
|
||||
name: 'Теплообменник',
|
||||
manufacturer: 'ОАО ТеплоТех',
|
||||
maintenanceIntervalHours: 1800,
|
||||
overhaulIntervalHours: 15000,
|
||||
},
|
||||
{
|
||||
code: 'filter',
|
||||
name: 'Фильтровальная установка',
|
||||
manufacturer: 'ООО ФильтрТех',
|
||||
maintenanceIntervalHours: 600,
|
||||
overhaulIntervalHours: 7000,
|
||||
},
|
||||
{
|
||||
code: 'separator',
|
||||
name: 'Сепаратор',
|
||||
manufacturer: 'АО СепараторМаш',
|
||||
maintenanceIntervalHours: 1600,
|
||||
overhaulIntervalHours: 13000,
|
||||
},
|
||||
{
|
||||
code: 'transformer',
|
||||
name: 'Трансформатор',
|
||||
manufacturer: 'ПАО ТрансЭнерго',
|
||||
maintenanceIntervalHours: 2500,
|
||||
overhaulIntervalHours: 20000,
|
||||
},
|
||||
] as const;
|
||||
|
||||
for (const type of equipmentTypes) {
|
||||
await prisma.equipmentType.upsert({
|
||||
where: { code: type.code },
|
||||
update: { ...type },
|
||||
create: { ...type },
|
||||
});
|
||||
}
|
||||
|
||||
const equipmentRecords: { id: string; inventoryNumber: string; name: string }[] = [];
|
||||
for (let i = 1; i <= 11; i++) {
|
||||
const type = equipmentTypes[(i - 1) % equipmentTypes.length];
|
||||
const inventoryNumber = `INV-${String(i).padStart(3, '0')}`;
|
||||
const serialNumber = `SN-2026-${String(i).padStart(4, '0')}`;
|
||||
const record = await prisma.equipment.upsert({
|
||||
where: { inventoryNumber },
|
||||
update: {
|
||||
serialNumber,
|
||||
name: `${type.name} #${i}`,
|
||||
equipmentTypeCode: type.code,
|
||||
status: i % 5 === 0 ? 'Repair' : 'Active',
|
||||
location: i % 2 === 0 ? `Площадка ${Math.ceil(i / 2)}` : `Цех ${Math.ceil(i / 3)}`,
|
||||
commissionedAt: new Date(2022, (i - 1) % 12, 1 + ((i - 1) % 28)),
|
||||
totalEngineHours: 1000 + i * 350,
|
||||
engineHoursSinceLastRepair: 200 + i * 25,
|
||||
},
|
||||
create: {
|
||||
inventoryNumber,
|
||||
serialNumber,
|
||||
name: `${type.name} #${i}`,
|
||||
equipmentTypeCode: type.code,
|
||||
status: i % 5 === 0 ? 'Repair' : 'Active',
|
||||
location: i % 2 === 0 ? `Площадка ${Math.ceil(i / 2)}` : `Цех ${Math.ceil(i / 3)}`,
|
||||
commissionedAt: new Date(2022, (i - 1) % 12, 1 + ((i - 1) % 28)),
|
||||
totalEngineHours: 1000 + i * 350,
|
||||
engineHoursSinceLastRepair: 200 + i * 25,
|
||||
},
|
||||
});
|
||||
equipmentRecords.push({ id: record.id, inventoryNumber: record.inventoryNumber, name: record.name });
|
||||
}
|
||||
|
||||
const repairKinds = ['TO', 'TR', 'TRE', 'KR', 'AR', 'MP'] as const;
|
||||
const statuses = ['Draft', 'Approved', 'InWork', 'Done', 'Cancelled'] as const;
|
||||
|
||||
for (let i = 1; i <= 11; i++) {
|
||||
const number = `RO-2026-${String(i).padStart(3, '0')}`;
|
||||
const equipment = equipmentRecords[(i - 1) % equipmentRecords.length];
|
||||
await prisma.repairOrder.upsert({
|
||||
where: { number },
|
||||
update: {
|
||||
equipmentId: equipment.id,
|
||||
repairKind: repairKinds[(i - 1) % repairKinds.length],
|
||||
status: statuses[(i - 1) % statuses.length],
|
||||
plannedAt: new Date(2026, ((i - 1) % 12), 1 + ((i - 1) % 28)),
|
||||
startedAt: i % 4 === 0 ? new Date(2026, ((i - 1) % 12), 2 + ((i - 1) % 28)) : null,
|
||||
completedAt: i % 5 === 0 ? new Date(2026, ((i - 1) % 12), 5 + ((i - 1) % 28)) : null,
|
||||
contractor: i % 3 === 0 ? 'ООО СервисРемонт' : 'АО ТехПодряд',
|
||||
engineHoursAtRepair: 1000 + i * 350,
|
||||
description: `Заявка на ремонт ${equipment.inventoryNumber} (${equipment.name})`,
|
||||
notes: i % 2 === 0 ? 'Тестовая заметка' : null,
|
||||
},
|
||||
create: {
|
||||
number,
|
||||
equipmentId: equipment.id,
|
||||
repairKind: repairKinds[(i - 1) % repairKinds.length],
|
||||
status: statuses[(i - 1) % statuses.length],
|
||||
plannedAt: new Date(2026, ((i - 1) % 12), 1 + ((i - 1) % 28)),
|
||||
startedAt: i % 4 === 0 ? new Date(2026, ((i - 1) % 12), 2 + ((i - 1) % 28)) : null,
|
||||
completedAt: i % 5 === 0 ? new Date(2026, ((i - 1) % 12), 5 + ((i - 1) % 28)) : null,
|
||||
contractor: i % 3 === 0 ? 'ООО СервисРемонт' : 'АО ТехПодряд',
|
||||
engineHoursAtRepair: 1000 + i * 350,
|
||||
description: `Заявка на ремонт ${equipment.inventoryNumber} (${equipment.name})`,
|
||||
notes: i % 2 === 0 ? 'Тестовая заметка' : null,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
console.log('Seed data created successfully');
|
||||
}
|
||||
|
||||
main()
|
||||
.catch((e) => {
|
||||
console.error(e);
|
||||
process.exit(1);
|
||||
})
|
||||
.finally(async () => {
|
||||
await prisma.$disconnect();
|
||||
});
|
||||
Reference in New Issue
Block a user