refactor(wms): 合并库存表为统一inventory,重构业务逻辑

1. 合并inventory_batch与serial_number为统一inventory表,用manage_mode区分结构件批次/精密件SN
2. 移除冗余的material_type字段与相关逻辑
3. 重构库存查询、检验、入库出库等业务逻辑适配新表结构
4. 调整前端路由与菜单,拆分基础数据为区域维护和物料档案
5. 优化入库校验逻辑,避免空单问题
6. 调整Vite构建配置,关闭自动清空输出目录
7. 为各模块添加详细中文注释,统一业务术语
8. 生成并更新Ent自动代码文件
This commit is contained in:
SunYF
2026-09-02 08:21:11 +08:00
parent 47573e44b0
commit 68f50ee46e
70 changed files with 5895 additions and 9818 deletions
+37 -58
View File
@@ -116,42 +116,61 @@ var (
},
},
}
// InventoryBatchesColumns holds the columns for the "inventory_batches" table.
InventoryBatchesColumns = []*schema.Column{
// InventoriesColumns holds the columns for the "inventories" table.
InventoriesColumns = []*schema.Column{
{Name: "id", Type: field.TypeInt, Increment: true},
{Name: "batch_no", Type: field.TypeString, Unique: true},
{Name: "manage_mode", Type: field.TypeInt},
{Name: "material_code", Type: field.TypeString},
{Name: "material_name", Type: field.TypeString, Nullable: true},
{Name: "batch_no", Type: field.TypeString, Nullable: true},
{Name: "sn_code", Type: field.TypeString, Nullable: true},
{Name: "quantity", Type: field.TypeInt, Default: 0},
{Name: "locked_qty", Type: field.TypeInt, Default: 0},
{Name: "production_date", Type: field.TypeString, Nullable: true},
{Name: "supplier", Type: field.TypeString, Nullable: true},
{Name: "quality_status", Type: field.TypeString, Default: "未检"},
{Name: "zone_code", Type: field.TypeString, Nullable: true},
{Name: "status", Type: field.TypeString, Default: "在库"},
{Name: "production_date", Type: field.TypeString, Nullable: true},
{Name: "supplier", Type: field.TypeString, Nullable: true},
{Name: "inbound_no", Type: field.TypeString, Nullable: true},
{Name: "remark", Type: field.TypeString, Nullable: true},
{Name: "created_at", Type: field.TypeInt64},
{Name: "updated_at", Type: field.TypeInt64},
}
// InventoryBatchesTable holds the schema information for the "inventory_batches" table.
InventoryBatchesTable = &schema.Table{
Name: "inventory_batches",
Columns: InventoryBatchesColumns,
PrimaryKey: []*schema.Column{InventoryBatchesColumns[0]},
// InventoriesTable holds the schema information for the "inventories" table.
InventoriesTable = &schema.Table{
Name: "inventories",
Columns: InventoriesColumns,
PrimaryKey: []*schema.Column{InventoriesColumns[0]},
Indexes: []*schema.Index{
{
Name: "inventorybatch_material_code",
Name: "inventory_manage_mode",
Unique: false,
Columns: []*schema.Column{InventoryBatchesColumns[2]},
Columns: []*schema.Column{InventoriesColumns[1]},
},
{
Name: "inventorybatch_quality_status",
Name: "inventory_material_code",
Unique: false,
Columns: []*schema.Column{InventoryBatchesColumns[8]},
Columns: []*schema.Column{InventoriesColumns[2]},
},
{
Name: "inventorybatch_zone_code",
Name: "inventory_quality_status",
Unique: false,
Columns: []*schema.Column{InventoryBatchesColumns[9]},
Columns: []*schema.Column{InventoriesColumns[8]},
},
{
Name: "inventory_zone_code",
Unique: false,
Columns: []*schema.Column{InventoriesColumns[9]},
},
{
Name: "inventory_batch_no",
Unique: false,
Columns: []*schema.Column{InventoriesColumns[4]},
},
{
Name: "inventory_sn_code",
Unique: false,
Columns: []*schema.Column{InventoriesColumns[5]},
},
},
}
@@ -204,7 +223,6 @@ var (
{Name: "manage_mode", Type: field.TypeInt, Default: 1},
{Name: "is_batch_managed", Type: field.TypeBool, Default: false},
{Name: "is_serial_managed", Type: field.TypeBool, Default: false},
{Name: "material_type", Type: field.TypeString, Default: "raw"},
{Name: "template_code", Type: field.TypeString, Nullable: true},
{Name: "created_at", Type: field.TypeInt64},
{Name: "updated_at", Type: field.TypeInt64},
@@ -223,7 +241,7 @@ var (
{
Name: "material_template_code",
Unique: false,
Columns: []*schema.Column{MaterialsColumns[11]},
Columns: []*schema.Column{MaterialsColumns[10]},
},
},
}
@@ -400,44 +418,6 @@ var (
},
},
}
// SerialNumbersColumns holds the columns for the "serial_numbers" table.
SerialNumbersColumns = []*schema.Column{
{Name: "id", Type: field.TypeInt, Increment: true},
{Name: "sn_code", Type: field.TypeString, Unique: true},
{Name: "material_code", Type: field.TypeString, Nullable: true},
{Name: "batch_no", Type: field.TypeString, Nullable: true},
{Name: "status", Type: field.TypeString, Default: "在库"},
{Name: "current_zone", Type: field.TypeString, Nullable: true},
{Name: "quality_status", Type: field.TypeString, Default: "未检"},
{Name: "last_inbound_at", Type: field.TypeString, Nullable: true},
{Name: "last_outbound_at", Type: field.TypeString, Nullable: true},
{Name: "remark", Type: field.TypeString, Nullable: true},
{Name: "created_at", Type: field.TypeInt64},
{Name: "updated_at", Type: field.TypeInt64},
}
// SerialNumbersTable holds the schema information for the "serial_numbers" table.
SerialNumbersTable = &schema.Table{
Name: "serial_numbers",
Columns: SerialNumbersColumns,
PrimaryKey: []*schema.Column{SerialNumbersColumns[0]},
Indexes: []*schema.Index{
{
Name: "serialnumber_material_code",
Unique: false,
Columns: []*schema.Column{SerialNumbersColumns[2]},
},
{
Name: "serialnumber_status",
Unique: false,
Columns: []*schema.Column{SerialNumbersColumns[4]},
},
{
Name: "serialnumber_batch_no",
Unique: false,
Columns: []*schema.Column{SerialNumbersColumns[3]},
},
},
}
// StocktakeItemsColumns holds the columns for the "stocktake_items" table.
StocktakeItemsColumns = []*schema.Column{
{Name: "id", Type: field.TypeInt, Increment: true},
@@ -541,7 +521,7 @@ var (
InboundDetailsTable,
InboundOrdersTable,
InspectionRecordsTable,
InventoryBatchesTable,
InventoriesTable,
InventoryLocksTable,
MaterialsTable,
OrderMaterialLedgersTable,
@@ -549,7 +529,6 @@ var (
OutboundOrdersTable,
PackageBoxesTable,
SemiFinishedsTable,
SerialNumbersTable,
StocktakeItemsTable,
StocktakeOrdersTable,
UsersTable,