feat(production): 新增排产支撑功能并移除手动报工页面

- 在main.go中更新排产物料需求注释说明,明确WMS与MES系统间交互方式
- 从前端help.js中移除手动报工(helpScan)相关帮助文档
- 更新工艺流程、绩效报表等页面帮助文档中的报工流程说明
- 在主布局中添加排产支撑菜单项并移除手动报工菜单项
- 新增ProducibleSupport.vue组件实现排产支撑页面功能
- 移除Scan.vue手动报工页面组件
- 更新相关帮助文档内容以匹配新的业务流程
This commit is contained in:
SunYF
2026-09-21 14:06:05 +08:00
parent 132c3ed6bd
commit 0e769f3813
105 changed files with 2313 additions and 5314 deletions
+3 -1
View File
@@ -29,9 +29,11 @@ func (InspectionRecord) Fields() []ent.Field {
field.String("inspection_type").Default("incoming").Comment("来料检/过程检/成品检"),
field.String("status").Default("未检").Comment("未检/合格/不合格"),
field.String("result_value").Optional().Comment("实测值(部分检验项)"),
// 检验数量 / 合格数量(量化闭环:来料/过程/成品检的批次抽检量)
// 检验数量 / 合格数量 / 不合格数量(量化闭环:来料/过程/成品检的批次抽检量)
field.Int("inspect_qty").Default(0).Comment("检验数量(抽检件数)"),
field.Int("pass_qty").Default(0).Comment("合格数量(≤检验数量)"),
// 不合格数量 = 检验数量 - 合格数量(后端复核口径,不信任前端;问题记录 L150 三问题之三)
field.Int("reject_qty").Default(0).Comment("不合格数量(=检验数量-合格数量)"),
// 检测说明 / 不合格原因
field.String("check_desc").Optional().Comment("检测说明(检验项目/方法)"),
field.String("inspector").Optional().Comment("检验人"),
@@ -1,34 +0,0 @@
package schema
import (
"entgo.io/ent"
"entgo.io/ent/schema/field"
"entgo.io/ent/schema/index"
)
// ProducibleSnapshot 可生产数量快照(MES 计算后推送,WMS 只读展示)
//
// 业务背景(问题记录 L470-474):客户要求"已知原材料库存量和生产原材料清单计算出可生产数量"。
// BOM(单台用量)只在 MES,库存只在 WMS;为满足"两套系统互不影响可独立运行"的约束,
// 由 MES 实时计算(经内部接口取 WMS 库存)并推送快照到本表,WMS 库存页卡片直接读快照展示。
// 每次推送全量覆盖(先清后写),synced_at 供界面标注数据时间。
type ProducibleSnapshot struct {
ent.Schema
}
func (ProducibleSnapshot) Fields() []ent.Field {
return []ent.Field{
field.String("product_code").Comment("产品编号"),
field.String("product_name").Optional().Comment("产品名称"),
field.Int("producible_qty").Default(0).Comment("可生产套数=min(各物料可用量/单台用量)"),
field.String("short_text").Optional().Comment("短板物料描述(如 SCR-M4-12缺20)"),
field.Int64("computed_at").Default(0).Comment("MES 计算时间(unix 秒)"),
field.Int64("synced_at").DefaultFunc(nowUnix).Comment("同步到 WMS 时间(unix 秒)"),
}
}
func (ProducibleSnapshot) Indexes() []ent.Index {
return []ent.Index{
index.Fields("product_code"),
}
}