feat: new models, sorting fix

This commit is contained in:
2025-03-15 21:12:15 +07:00
parent db7076182e
commit 2b8df155d3
103 changed files with 16214 additions and 4048 deletions

View File

@@ -7,10 +7,16 @@ import (
)
func InsertDefaultData() {
insertPostTypes()
insertAuthors()
insertPosts()
insertComments()
insertWorkshops()
insertProductTypes()
insertCustomers()
insertOrders()
insertTasks()
insertPrepTasks()
insertShifts()
insertTeamTypes()
insertWorkers()
insertTeamTasks()
}
func InsertDefaultEntityData[T any](service Service[T], entities []T) {
@@ -22,85 +28,386 @@ func InsertDefaultEntityData[T any](service Service[T], entities []T) {
}
}
func insertPosts() {
InsertDefaultEntityData(&PostService{}, []Post{
func insertWorkshops() {
InsertDefaultEntityData(&WorkshopService{}, []Workshop{
{
Id: 1,
Name: "Лесопильный комплекс",
WorkAreas: []WorkArea{
{
Id: 1,
Name: "Лесопильная линия №1",
Description: "Используется для распиловки тонкомеров, например, реек.",
PrepTasks: nil,
Performance: 50,
},
{
Id: 2,
Name: "Лесопильная линия №2",
Description: "Используется для распиловки среднего леса.",
PrepTasks: nil,
Performance: 100,
},
},
Tasks: nil,
},
{
Id: 2,
Name: "Сушильный комплекс",
WorkAreas: []WorkArea{
{Id: 3, Name: "Сушильная камера №1", Performance: 50},
{Id: 4, Name: "Сушильная камера №2", Performance: 60},
{Id: 5, Name: "Сушильная камера №3", Performance: 80},
{Id: 6, Name: "Сушильная камера №4", Performance: 85},
},
Tasks: nil,
},
{
Id: 3,
Name: "Цех строжки и обработки",
WorkAreas: []WorkArea{
{
Id: 7,
Name: "Линия строжки №1",
Description: "Используется для строжки тонкомеров",
Performance: 50,
},
{
Id: 8,
Name: "Линия строжки №2",
Description: "Используется для строжки среднего леса",
Performance: 80,
},
{
Id: 9,
Name: "Линия строжки №3",
Description: "Используется для строжки среднего леса",
Performance: 100,
},
},
Tasks: nil,
},
{
Id: 4,
Name: "Пеллетный цех",
WorkAreas: []WorkArea{
{Id: 10, Name: "Дробилка", Performance: 800},
{Id: 11, Name: "Сушилка", Performance: 900},
{Id: 12, Name: "Гранулятор №1", Performance: 900},
{Id: 13, Name: "Гранулятор №2", Performance: 600},
},
Tasks: nil,
},
})
}
func insertProductTypes() {
InsertDefaultEntityData(&ProductTypeService{}, []ProductType{
{Id: 1, Name: "Сырые пиломатериалы"},
{Id: 2, Name: "Сухие пиломатериалы"},
{Id: 3, Name: "Строганные доски"},
{Id: 4, Name: "Рейки"},
{Id: 5, Name: "Брус"},
{Id: 6, Name: "Пеллеты"},
})
}
func insertCustomers() {
InsertDefaultEntityData(&CustomerService{}, []Customer{
{
Id: 1,
Title: "Rivalli",
Contact: "Телефон: +74955855525",
Orders: []Order{},
},
{
Id: 2,
Title: "Elemfort",
Contact: "Телефон: +79270988888",
Orders: []Order{},
},
{
Id: 3,
Title: "Квазар",
Contact: "Телефон: +78002342134",
Orders: []Order{},
},
})
}
func insertOrders() {
InsertDefaultEntityData(&OrderService{}, []Order{
{
Status: "Согласован клиентом",
ProductAmount: 400,
ProductTypeId: 1,
Description: "Сырая древесина для Rivalli",
DeadlineDate: time.Date(2025, 6, 25, 0, 0, 0, 0, time.Local).Unix(),
CustomerId: 1,
},
{
Status: "Согласован клиентом",
ProductTypeId: 3,
ProductAmount: 300,
Description: "Сухая древесина для производителя мебели. Контракт #574853",
DeadlineDate: time.Date(2025, 6, 10, 0, 0, 0, 0, time.Local).Unix(),
CustomerId: 2,
},
{
Status: "Согласован клиентом",
ProductAmount: 100,
ProductTypeId: 4,
Description: "Контракт #234342",
DeadlineDate: time.Date(2025, 12, 5, 0, 0, 0, 0, time.Local).Unix(),
CustomerId: 3,
},
{
Status: "Согласован клиентом",
ProductAmount: 800,
ProductTypeId: 6,
Description: "Производство пеллет",
DeadlineDate: time.Date(2025, 2, 5, 0, 0, 0, 0, time.Local).Unix(),
CustomerId: 3,
},
{
Status: "Черновик",
ProductAmount: 100,
ProductTypeId: 6,
Description: "Производство пеллет. Заказ на стадии согласования",
DeadlineDate: time.Date(2026, 2, 5, 0, 0, 0, 0, time.Local).Unix(),
CustomerId: 1,
},
})
}
func insertTasks() {
InsertDefaultEntityData(&TaskService{}, []Task{
{
Id: 1,
Description: "Обработка сырых пиломатериалов",
ProductTypeId: 2,
Workshops: []*Workshop{{Id: 1}},
OrderId: 1,
ProductionStart: time.Date(2025, 11, 25, 0, 0, 0, 0, time.Local).Unix(),
Amount: 10,
},
{
Id: 2,
Description: "Распиловка леса",
ProductTypeId: 1,
Workshops: []*Workshop{{Id: 1}, {Id: 2}},
OrderId: 2,
ProductionStart: time.Date(2025, 8, 15, 0, 0, 0, 0, time.Local).Unix(),
Amount: 1,
},
{
Id: 3,
Description: "Строгание реек",
ProductTypeId: 3,
Workshops: []*Workshop{{Id: 1}, {Id: 2}},
OrderId: 3,
ProductionStart: time.Date(2025, 7, 10, 0, 0, 0, 0, time.Local).Unix(),
Amount: 5,
},
{
Id: 4,
Description: "Производство пеллет",
ProductTypeId: 6,
Workshops: []*Workshop{{Id: 4}},
OrderId: 4,
ProductionStart: time.Date(2025, 4, 5, 0, 0, 0, 0, time.Local).Unix(),
Amount: 1,
},
})
}
func insertPrepTasks() {
InsertDefaultEntityData(&PrepTaskService{}, []PrepTask{
{
Id: 1,
Description: "Подготовка лесопильной линии. Материал для обработки: сырые пиломатериалы",
TaskId: 1,
WorkAreaId: 2,
Deadline: time.Date(2025, 11, 10, 0, 0, 0, 0, time.Local).Unix(),
},
{
Id: 2,
Description: "Подготовка лесопильной линии. Материал для обработки: сухие пиломатериалы",
TaskId: 2,
WorkAreaId: 1,
Deadline: time.Date(2025, 8, 10, 0, 0, 0, 0, time.Local).Unix(),
},
{
Id: 3,
Description: "Подготовка сушильной камеры. Сушка распиленных сухих пиломатериалов",
TaskId: 2,
WorkAreaId: 3,
Deadline: time.Date(2025, 8, 15, 0, 0, 0, 0, time.Local).Unix(),
},
{
Id: 4,
Description: "Подготовка лесопильного цеха для производства реек. Сушка древесины для производства реек",
TaskId: 3,
WorkAreaId: 2,
Deadline: time.Date(2025, 8, 15, 0, 0, 0, 0, time.Local).Unix(),
},
{
Id: 5,
Description: "Подготовка сушильной камеры. Сушка распиленных сухих реек",
TaskId: 3,
WorkAreaId: 3,
Deadline: time.Date(2025, 8, 15, 0, 0, 0, 0, time.Local).Unix(),
},
{
Id: 6,
Description: "Подготовка дробилки для производства пеллет",
TaskId: 4,
WorkAreaId: 10,
Deadline: time.Date(2025, 4, 1, 0, 0, 0, 0, time.Local).Unix(),
},
{
Id: 7,
Description: "Подготовка сушилки для производства пеллет",
TaskId: 4,
WorkAreaId: 11,
Deadline: time.Date(2025, 4, 2, 0, 0, 0, 0, time.Local).Unix(),
},
{
Id: 8,
Description: "Подготовка гранулятора №1 для производства пеллет",
TaskId: 4,
WorkAreaId: 12,
Deadline: time.Date(2025, 4, 3, 0, 0, 0, 0, time.Local).Unix(),
},
{
Id: 9,
Description: "Подготовка гранулятора №2 для производства пеллет",
TaskId: 4,
WorkAreaId: 13,
Deadline: time.Date(2025, 4, 4, 0, 0, 0, 0, time.Local).Unix(),
},
})
}
func insertShifts() {
InsertDefaultEntityData(&ShiftService{}, []Shift{
{
Id: 1,
Description: "Распилка лесоматериалов",
ProductTypeId: 1,
ProductAmount: 45,
ShiftDate: time.Date(2025, 11, 20, 0, 0, 0, 0, time.Local).Unix(),
WorkAreaId: 2,
},
{
Id: 2,
Description: "Обработка сухой древесины",
ProductTypeId: 3,
ProductAmount: 39,
ShiftDate: time.Date(2025, 8, 13, 0, 0, 0, 0, time.Local).Unix(),
WorkAreaId: 1,
},
{
Id: 3,
Description: "Сушка реек",
ProductTypeId: 4,
ProductAmount: 55,
ShiftDate: time.Date(2025, 7, 8, 0, 0, 0, 0, time.Local).Unix(),
WorkAreaId: 4,
},
{
Id: 4,
Description: "Грануляция паллет",
ProductTypeId: 6,
ProductAmount: 890,
ShiftDate: time.Date(2025, 4, 1, 0, 0, 0, 0, time.Local).Unix(),
WorkAreaId: 12,
},
})
}
func insertTeamTypes() {
InsertDefaultEntityData(&TeamTypeService{}, []TeamType{
{Id: 1, Name: "Бригада по распиловке"},
{Id: 2, Name: "Бригада по сушке"},
{Id: 3, Name: "Бригада по обработке"},
{Id: 4, Name: "Бригада пеллетного цеха"},
})
}
func insertWorkers() {
InsertDefaultEntityData(&WorkerService{}, []Worker{
{Id: 1, Name: "Иванов Иван Иванович", WorkshopId: 1},
{Id: 2, Name: "Петров Петр Петрович", WorkshopId: 1},
{Id: 3, Name: "Сидоров Сидор Сидорович", WorkshopId: 1},
{Id: 4, Name: "Пеллетчиков Пеллет Пеллетович", WorkshopId: 4},
{Id: 5, Name: "Кузнецов Кузьма Кузьмич", WorkshopId: 2},
{Id: 6, Name: "Смирнов Сергей Сергеевич", WorkshopId: 2},
{Id: 7, Name: "Васильев Василий Васильевич", WorkshopId: 3},
{Id: 8, Name: "Михайлов Михаил Михайлович", WorkshopId: 3},
{Id: 10, Name: "Александров Александр Александрович", WorkshopId: 4},
{Id: 11, Name: "Николаев Николай Николаевич", WorkshopId: 4},
{Id: 12, Name: "Дмитриев Дмитрий Дмитриевич", WorkshopId: 4},
{Id: 13, Name: "Дмитриев Дмитрий Федорович", WorkshopId: 4},
})
}
func insertTeamTasks() {
InsertDefaultEntityData(&TeamTaskService{}, []TeamTask{
{
Id: 1,
Text: "Жителям Кузбасса запретили болеть.",
Deadline: time.Now().Unix(),
AuthorId: 1,
PostTypeId: 1,
TeamTypeId: 1,
TeamMembers: []*Worker{
{Id: 1},
},
WorkAreaId: 2,
ShiftDuties: "1/1",
WorkStartDate: time.Date(2024, 12, 5, 0, 0, 0, 0, time.Local).Unix(),
TeamLeaderId: 13,
},
{
Id: 2,
Deadline: time.Now().Add(time.Hour * 24 * 5).Unix(),
Text: "⚡️⚡️⚡️Дома будут летать.",
AuthorId: 2,
PostTypeId: 2,
TeamTypeId: 1,
TeamMembers: []*Worker{
{Id: 2}, {Id: 3},
},
WorkAreaId: 1,
ShiftDuties: "1/1",
WorkStartDate: time.Date(2024, 12, 10, 0, 0, 0, 0, time.Local).Unix(),
TeamLeaderId: 2,
},
{
Id: 3,
Deadline: time.Now().Add(time.Hour * 24 * 6).Unix(),
Text: "В Кузбассе начали строить дома выше, чтобы жители были ближе к богу и солнцу.",
AuthorId: 3,
PostTypeId: 3,
},
})
}
func insertAuthors() {
InsertDefaultEntityData(&AuthorService{}, []Author{
{
Id: 1,
Name: "ИА Кузбасс",
},
{
Id: 2,
Name: "ASTRA",
},
{
Id: 3,
Name: "ЧТД",
},
})
}
func insertComments() {
InsertDefaultEntityData(&CommentService{}, []Comment{
{
Id: 1,
Text: "Это просто замечательно!",
AuthorId: 1,
Posts: []Post{{Id: 1}},
},
{
Id: 2,
Text: "Я тоже думаю, что это замечательно!",
AuthorId: 2,
Posts: []Post{{Id: 2}},
},
{
Id: 3,
Text: "Я тоже думаю, что это замечательно!",
AuthorId: 3,
Posts: []Post{{Id: 3}},
},
})
}
func insertPostTypes() {
InsertDefaultEntityData(&PostTypeService{}, []PostType{
{
Id: 1,
Name: "Общество",
},
{
Id: 2,
Name: "Политика",
},
{
Id: 3,
Name: "Экономика",
TeamTypeId: 2,
TeamMembers: []*Worker{
{Id: 5}, {Id: 6},
},
WorkAreaId: 3,
ShiftDuties: "1/1",
WorkStartDate: time.Date(2025, 1, 7, 0, 0, 0, 0, time.Local).Unix(),
TeamLeaderId: 5,
},
{
Id: 4,
TeamTypeId: 3,
TeamMembers: []*Worker{
{Id: 7}, {Id: 8},
},
WorkAreaId: 8,
ShiftDuties: "2/2",
WorkStartDate: time.Date(2025, 2, 10, 0, 0, 0, 0, time.Local).Unix(),
TeamLeaderId: 7,
},
{
Id: 5,
TeamTypeId: 4,
TeamMembers: []*Worker{
{Id: 4}, {Id: 10}, {Id: 11}, {Id: 12},
},
WorkAreaId: 12,
ShiftDuties: "2/2",
WorkStartDate: time.Date(2025, 3, 10, 0, 0, 0, 0, time.Local).Unix(),
TeamLeaderId: 10,
},
})
}