414 lines
12 KiB
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,
|
|
},
|
|
})
|
|
}
|