Сделал первые функции под MRP

This commit is contained in:
2026-05-06 23:15:50 +03:00
parent 5417092796
commit 3b7a740081
27 changed files with 2996 additions and 767 deletions
+13
View File
@@ -0,0 +1,13 @@
package models
import "gorm.io/gorm"
type Order struct {
gorm.Model
OrderNo string `gorm:"uniqueIndex;not null" json:"order_no"`
ClientName string `json:"client_name"`
Deadline string `json:"deadline"`
Status string `gorm:"default:'Новый'" json:"status"`
Parts []Part `gorm:"foreignKey:OrderNo;references:OrderNo" json:"parts"`
}
+56 -58
View File
@@ -1,68 +1,66 @@
package models
const (
StatusImport = "Запланировано"
StatusWarehouse = "Склад"
StatusSawing = "Пила"
StatusEdging = "Кромка"
StatusEdgingHand = "Кромка ручная"
StatusCNCDelta = "ЧПУ Дельта"
StatusCNCTrepan = "ЧПУ Трепан"
StatusHandDrilling = "Присадка на ручном станке"
StatusSawHand = "Циркулярная пила"
StatusAssembly = "Сборка"
StatusAbrasive = "Шлифовка"
StatusDrying = "Сушка после малярки"
StatusPainting = "Малярная камера"
StatusGlass = "Стекольный цех"
StatusMetalSelf = "Сварочный цех"
StatusPaintingOutsource = "Порошковая покраска"
StatusAdv = "Рекламный участок"
StatusLight = "Светодиодный участок"
StatusSemiFinished = "Упаковка полуфабриката"
StatusFinished = "Упаковка изделия"
StatusShipment = "Отгружено на монтаж"
StatusInstallation = "Монтаж оборудования"
StatusRejected = "Отбраковано/сломано"
StatusImport = "Запланировано"
StatusWarehouse = "Склад"
StatusSawing = "Пила"
StatusEdging = "Кромка"
StatusEdgingHand = "Кромка ручная"
StatusCNCDelta = "ЧПУ Дельта"
StatusCNCTrepan = "ЧПУ Трепан"
StatusHandDrilling = "Присадка на ручном станке"
StatusSawHand = "Циркулярная пила"
StatusAssembly = "Сборка"
StatusAbrasive = "Шлифовка"
StatusDrying = "Сушка после малярки"
StatusPainting = "Малярная камера"
StatusGlass = "Стекольный цех"
StatusMetalSelf = "Сварочный цех"
StatusPaintingOutsource = "Порошковая покраска"
StatusAdv = "Рекламный участок"
StatusLight = "Светодиодный участок"
StatusSemiFinished = "Упаковка полуфабриката"
StatusFinished = "Упаковка изделия"
StatusShipment = "Отгружено на монтаж"
StatusInstallation = "Монтаж оборудования"
StatusRejected = "Отбраковано/сломано"
)
func IsValidStatus(s string) bool {
switch s {
case StatusWarehouse, StatusSawing, StatusEdging, StatusEdgingHand,
StatusCNCDelta, StatusCNCTrepan, StatusHandDrilling, StatusSawHand,
StatusAssembly, StatusAbrasive, StatusDrying, StatusPainting,
StatusGlass, StatusMetalSelf, StatusPaintingOutsource, StatusAdv,
StatusLight, StatusSemiFinished, StatusFinished, StatusShipment,
StatusInstallation, StatusRejected:
return true
}
return false
switch s {
case StatusWarehouse, StatusSawing, StatusEdging, StatusEdgingHand,
StatusCNCDelta, StatusCNCTrepan, StatusHandDrilling, StatusSawHand,
StatusAssembly, StatusAbrasive, StatusDrying, StatusPainting,
StatusGlass, StatusMetalSelf, StatusPaintingOutsource, StatusAdv,
StatusLight, StatusSemiFinished, StatusFinished, StatusShipment,
StatusInstallation, StatusRejected:
return true
}
return false
}
type Part struct {
ID string `gorm:"primaryKey" json:"id" binding:"required"` // № или Обозначение
Destignation string `json:"destignation" binding:"required"` // № или Обозначение
OrderNo string `json:"order_no" binding:"required"` // Заказ изделия
Name string `json:"name" binding:"required"` // Наименование детали
Material string `json:"material" binding:"required"` // Наименование материала
Thickness float64 `json:"thickness" binding:"required"` // Толщина
Quantity int `json:"quantity" binding:"required"` // Количество
// Размеры (используем Готовую деталь как основной стандарт)
Length float64 `json:"length" binding:"required"` // Готовая деталь [L]
Width float64 `json:"width" binding:"required"` // Готовая деталь [W]
// Кромка
EdgeL1 string `json:"edge_l1"` // Обозначение кромки [L1]
EdgeL2 string `json:"edge_l2"` // Обозначение кромки [L2]
EdgeW1 string `json:"edge_w1"` // Обозначение кромки [W1]
EdgeW2 string `json:"edge_w2"` // Обозначение кромки [W2]
// Доп. инфо
Groove string `json:"groove"` // Паз
Note string `json:"note"` // Примечание
ProductName string `json:"product_name" binding:"required"` // Наимен. изделия
Status string `json:"status" gorm:"default:Создан"`
}
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
Designation string `json:"designation" binding:"required"`
OrderNo string `json:"order_no" binding:"required"`
Name string `json:"name" binding:"required"`
Material string `json:"material" binding:"required"`
Thickness float64 `json:"thickness" binding:"required"`
Quantity int `json:"quantity" binding:"required"`
Length float64 `json:"length" binding:"required"`
Width float64 `json:"width" binding:"required"`
LengthFirst float64 `json:"length_first" binding:"required"`
WidthFirst float64 `json:"width_first" binding:"required"`
EdgeL1 string `json:"edge_l1"`
EdgeL2 string `json:"edge_l2"`
EdgeW1 string `json:"edge_w1"`
EdgeW2 string `json:"edge_w2"`
Groove string `json:"groove"`
Note string `json:"note"`
ProductName string `json:"product_name" binding:"required"`
Status string `json:"status" gorm:"default:Создан"`
}