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
+46 -2
View File
@@ -28,6 +28,14 @@ type InspectionRecord struct {
Status string `json:"status,omitempty"`
// 实测值(部分检验项)
ResultValue string `json:"resultValue,omitempty"`
// 检验数量(抽检件数)
InspectQty int `json:"inspectQty,omitempty"`
// 合格数量(≤检验数量)
PassQty int `json:"passQty,omitempty"`
// 检测说明(检验项目/方法)
CheckDesc string `json:"checkDesc,omitempty"`
// 不合格原因(不合格时必填)
FailReason string `json:"failReason,omitempty"`
// 检验人
Inspector string `json:"inspector,omitempty"`
// 备注
@@ -44,9 +52,9 @@ func (*InspectionRecord) scanValues(columns []string) ([]any, error) {
values := make([]any, len(columns))
for i := range columns {
switch columns[i] {
case inspectionrecord.FieldID, inspectionrecord.FieldCreatedAt, inspectionrecord.FieldUpdatedAt:
case inspectionrecord.FieldID, inspectionrecord.FieldInspectQty, inspectionrecord.FieldPassQty, inspectionrecord.FieldCreatedAt, inspectionrecord.FieldUpdatedAt:
values[i] = new(sql.NullInt64)
case inspectionrecord.FieldTargetType, inspectionrecord.FieldTargetID, inspectionrecord.FieldMaterialCode, inspectionrecord.FieldInspectionType, inspectionrecord.FieldStatus, inspectionrecord.FieldResultValue, inspectionrecord.FieldInspector, inspectionrecord.FieldRemark:
case inspectionrecord.FieldTargetType, inspectionrecord.FieldTargetID, inspectionrecord.FieldMaterialCode, inspectionrecord.FieldInspectionType, inspectionrecord.FieldStatus, inspectionrecord.FieldResultValue, inspectionrecord.FieldCheckDesc, inspectionrecord.FieldFailReason, inspectionrecord.FieldInspector, inspectionrecord.FieldRemark:
values[i] = new(sql.NullString)
default:
values[i] = new(sql.UnknownType)
@@ -105,6 +113,30 @@ func (_m *InspectionRecord) assignValues(columns []string, values []any) error {
} else if value.Valid {
_m.ResultValue = value.String
}
case inspectionrecord.FieldInspectQty:
if value, ok := values[i].(*sql.NullInt64); !ok {
return fmt.Errorf("unexpected type %T for field inspect_qty", values[i])
} else if value.Valid {
_m.InspectQty = int(value.Int64)
}
case inspectionrecord.FieldPassQty:
if value, ok := values[i].(*sql.NullInt64); !ok {
return fmt.Errorf("unexpected type %T for field pass_qty", values[i])
} else if value.Valid {
_m.PassQty = int(value.Int64)
}
case inspectionrecord.FieldCheckDesc:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field check_desc", values[i])
} else if value.Valid {
_m.CheckDesc = value.String
}
case inspectionrecord.FieldFailReason:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field fail_reason", values[i])
} else if value.Valid {
_m.FailReason = value.String
}
case inspectionrecord.FieldInspector:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field inspector", values[i])
@@ -183,6 +215,18 @@ func (_m *InspectionRecord) String() string {
builder.WriteString("result_value=")
builder.WriteString(_m.ResultValue)
builder.WriteString(", ")
builder.WriteString("inspect_qty=")
builder.WriteString(fmt.Sprintf("%v", _m.InspectQty))
builder.WriteString(", ")
builder.WriteString("pass_qty=")
builder.WriteString(fmt.Sprintf("%v", _m.PassQty))
builder.WriteString(", ")
builder.WriteString("check_desc=")
builder.WriteString(_m.CheckDesc)
builder.WriteString(", ")
builder.WriteString("fail_reason=")
builder.WriteString(_m.FailReason)
builder.WriteString(", ")
builder.WriteString("inspector=")
builder.WriteString(_m.Inspector)
builder.WriteString(", ")