This repository has been archived on 2025-03-16. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
boilerplate/internal/services/default_data.go

414 lines
12 KiB
Go

package services
import (
"app/internal/dialogs"
"fmt"
"time"
)
func InsertDefaultData() {
insertWorkshops()
insertProductTypes()
insertCustomers()
insertOrders()
insertTasks()
insertPrepTasks()
insertShifts()
insertTeamTypes()
insertWorkers()
insertTeamTasks()
}
func InsertDefaultEntityData[T any](service Service[T], entities []T) {
for _, item := range entities {
createdItem, err := service.Create(item)
if err != nil {
dialogs.ErrorDialog("Ошибка при вставке данных по умолчанию", fmt.Sprintf("Произошла ошибка при вставке значения %#v: %s", createdItem, err))
}
}
}
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,
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,
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,
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,
},
})
}