feat: 完成WMS系统权限体系与业务功能迭代

本提交完成了WMS系统的多维度优化升级:
1. 新增RBAC权限系统,支持角色/菜单/按钮三级权限管控
2. 重构库存盘点、物料管理、区域维护等模块的查询筛选与展示逻辑
3. 优化入库/出库/质检等业务流程,完善数据冗余与业务闭环
4. 移除旧装箱表,将装箱逻辑合并到出库主表
5. 新增前端权限判断工具、导出工具与端到端测试用例
6. 补充完善各类注释与数据库字段说明
This commit is contained in:
SunYF
2026-09-03 14:20:37 +08:00
parent 665ff257dc
commit 572fa975bc
101 changed files with 14531 additions and 4692 deletions
+37 -4
View File
@@ -26,13 +26,13 @@ type OutboundOrder struct {
MaterialCode string `json:"materialCode,omitempty"`
// 物料名称(冗余)
MaterialName string `json:"materialName,omitempty"`
// ManageMode holds the value of the "manage_mode" field.
// 管理粒度 1批次/2序列号
ManageMode int `json:"manageMode,omitempty"`
// 批次号(结构件)
BatchNo string `json:"batchNo,omitempty"`
// 出库区域
ZoneCode string `json:"zoneCode,omitempty"`
// 数量
// 本次出库总数量
Quantity int `json:"quantity,omitempty"`
// 操作人
Operator string `json:"operator,omitempty"`
@@ -42,7 +42,13 @@ type OutboundOrder struct {
TargetDock string `json:"targetDock,omitempty"`
// 备注
Remark string `json:"remark,omitempty"`
// CreatedAt holds the value of the "created_at" field.
// 箱号(装箱出库时填写,用于整箱发货追溯)
BoxNo string `json:"boxNo,omitempty"`
// 装箱 SN 清单(JSON 数组字符串)
BoxSnList string `json:"boxSnList,omitempty"`
// 合同号(装箱选填)
ContractNo string `json:"contractNo,omitempty"`
// 创建时间
CreatedAt int64 `json:"createdAt,omitempty"`
selectValues sql.SelectValues
}
@@ -54,7 +60,7 @@ func (*OutboundOrder) scanValues(columns []string) ([]any, error) {
switch columns[i] {
case outboundorder.FieldID, outboundorder.FieldManageMode, outboundorder.FieldQuantity, outboundorder.FieldCreatedAt:
values[i] = new(sql.NullInt64)
case outboundorder.FieldOutboundNo, outboundorder.FieldOutboundType, outboundorder.FieldOrderNo, outboundorder.FieldMaterialCode, outboundorder.FieldMaterialName, outboundorder.FieldBatchNo, outboundorder.FieldZoneCode, outboundorder.FieldOperator, outboundorder.FieldReviewer, outboundorder.FieldTargetDock, outboundorder.FieldRemark:
case outboundorder.FieldOutboundNo, outboundorder.FieldOutboundType, outboundorder.FieldOrderNo, outboundorder.FieldMaterialCode, outboundorder.FieldMaterialName, outboundorder.FieldBatchNo, outboundorder.FieldZoneCode, outboundorder.FieldOperator, outboundorder.FieldReviewer, outboundorder.FieldTargetDock, outboundorder.FieldRemark, outboundorder.FieldBoxNo, outboundorder.FieldBoxSnList, outboundorder.FieldContractNo:
values[i] = new(sql.NullString)
default:
values[i] = new(sql.UnknownType)
@@ -155,6 +161,24 @@ func (_m *OutboundOrder) assignValues(columns []string, values []any) error {
} else if value.Valid {
_m.Remark = value.String
}
case outboundorder.FieldBoxNo:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field box_no", values[i])
} else if value.Valid {
_m.BoxNo = value.String
}
case outboundorder.FieldBoxSnList:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field box_sn_list", values[i])
} else if value.Valid {
_m.BoxSnList = value.String
}
case outboundorder.FieldContractNo:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field contract_no", values[i])
} else if value.Valid {
_m.ContractNo = value.String
}
case outboundorder.FieldCreatedAt:
if value, ok := values[i].(*sql.NullInt64); !ok {
return fmt.Errorf("unexpected type %T for field created_at", values[i])
@@ -236,6 +260,15 @@ func (_m *OutboundOrder) String() string {
builder.WriteString("remark=")
builder.WriteString(_m.Remark)
builder.WriteString(", ")
builder.WriteString("box_no=")
builder.WriteString(_m.BoxNo)
builder.WriteString(", ")
builder.WriteString("box_sn_list=")
builder.WriteString(_m.BoxSnList)
builder.WriteString(", ")
builder.WriteString("contract_no=")
builder.WriteString(_m.ContractNo)
builder.WriteString(", ")
builder.WriteString("created_at=")
builder.WriteString(fmt.Sprintf("%v", _m.CreatedAt))
builder.WriteByte(')')