chore: 批量完成项目多模块迭代优化

1. 废弃半成品库存表并统一库存主表
2. 修复列表排序与搜索大小写不敏感问题
3. 新增用户最近登录时间、工单BOM名称字段
4. 完善角色管理、工位选择器功能
5. 增加拧紧数据补录、成品自动回流WMS能力
6. 统一导出时间范围校验规则
7. 丰富物料/备料单筛选条件
8. 调整菜单与权限命名适配产品型号业务
This commit is contained in:
SunYF
2026-09-08 11:44:04 +08:00
parent 06689970e2
commit e852c7cd37
96 changed files with 4528 additions and 542 deletions
+12 -1
View File
@@ -20,6 +20,8 @@ type BomItem struct {
ID int `json:"id,omitempty"`
// 产品编码
ProductCode string `json:"productCode,omitempty"`
// BOM名称:同一型号多份并存(如 厂家A/厂家B/含半成品),工单按名选用
BomName string `json:"bomName,omitempty"`
// 物料编码
MaterialCode string `json:"materialCode,omitempty"`
// MaterialName holds the value of the "materialName" field.
@@ -56,7 +58,7 @@ func (*BomItem) scanValues(columns []string) ([]any, error) {
values[i] = new(sql.NullFloat64)
case bomitem.FieldID, bomitem.FieldProcessCode:
values[i] = new(sql.NullInt64)
case bomitem.FieldProductCode, bomitem.FieldMaterialCode, bomitem.FieldMaterialName, bomitem.FieldSpec, bomitem.FieldUnit, bomitem.FieldManageMode:
case bomitem.FieldProductCode, bomitem.FieldBomName, bomitem.FieldMaterialCode, bomitem.FieldMaterialName, bomitem.FieldSpec, bomitem.FieldUnit, bomitem.FieldManageMode:
values[i] = new(sql.NullString)
case bomitem.FieldCreatedAt:
values[i] = new(sql.NullTime)
@@ -87,6 +89,12 @@ func (_m *BomItem) assignValues(columns []string, values []any) error {
} else if value.Valid {
_m.ProductCode = value.String
}
case bomitem.FieldBomName:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field bomName", values[i])
} else if value.Valid {
_m.BomName = value.String
}
case bomitem.FieldMaterialCode:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field materialCode", values[i])
@@ -194,6 +202,9 @@ func (_m *BomItem) String() string {
builder.WriteString("productCode=")
builder.WriteString(_m.ProductCode)
builder.WriteString(", ")
builder.WriteString("bomName=")
builder.WriteString(_m.BomName)
builder.WriteString(", ")
builder.WriteString("materialCode=")
builder.WriteString(_m.MaterialCode)
builder.WriteString(", ")