feat: 完成多模块迭代更新

- 新增过程巡检按步骤上报、数量不符上报、工位退料功能
- 增加工单工程编号三级归属字段
- 新增物料安全库存与缺货预警
- 新增附件管理、退库单管理模块
- 优化生产看板展示逻辑与前端页面文案
- 清理冗余的工艺路线相关代码与备份文件
This commit is contained in:
SunYF
2026-09-15 16:37:39 +08:00
parent 951f3dfecd
commit 4a5e2d7bac
494 changed files with 24702 additions and 139223 deletions
+107 -90
View File
@@ -12,15 +12,15 @@ import (
"entgo.io/ent/dialect/sql"
"entgo.io/ent/dialect/sql/sqlgraph"
"entgo.io/ent/dialect/sql/sqljson"
"entgo.io/ent/schema/field"
)
// WorkOrderUpdate is the builder for updating WorkOrder entities.
type WorkOrderUpdate struct {
config
hooks []Hook
mutation *WorkOrderMutation
hooks []Hook
mutation *WorkOrderMutation
modifiers []func(*sql.UpdateBuilder)
}
// Where appends a list predicates to the WorkOrderUpdate builder.
@@ -169,48 +169,45 @@ func (_u *WorkOrderUpdate) SetNillableProcessSeq(v *string) *WorkOrderUpdate {
return _u
}
// SetRouteId sets the "routeId" field.
func (_u *WorkOrderUpdate) SetRouteId(v int) *WorkOrderUpdate {
_u.mutation.ResetRouteId()
_u.mutation.SetRouteId(v)
// SetContractNo sets the "contractNo" field.
func (_u *WorkOrderUpdate) SetContractNo(v string) *WorkOrderUpdate {
_u.mutation.SetContractNo(v)
return _u
}
// SetNillableRouteId sets the "routeId" field if the given value is not nil.
func (_u *WorkOrderUpdate) SetNillableRouteId(v *int) *WorkOrderUpdate {
// SetNillableContractNo sets the "contractNo" field if the given value is not nil.
func (_u *WorkOrderUpdate) SetNillableContractNo(v *string) *WorkOrderUpdate {
if v != nil {
_u.SetRouteId(*v)
_u.SetContractNo(*v)
}
return _u
}
// AddRouteId adds value to the "routeId" field.
func (_u *WorkOrderUpdate) AddRouteId(v int) *WorkOrderUpdate {
_u.mutation.AddRouteId(v)
// SetProjectNo sets the "projectNo" field.
func (_u *WorkOrderUpdate) SetProjectNo(v string) *WorkOrderUpdate {
_u.mutation.SetProjectNo(v)
return _u
}
// ClearRouteId clears the value of the "routeId" field.
func (_u *WorkOrderUpdate) ClearRouteId() *WorkOrderUpdate {
_u.mutation.ClearRouteId()
// SetNillableProjectNo sets the "projectNo" field if the given value is not nil.
func (_u *WorkOrderUpdate) SetNillableProjectNo(v *string) *WorkOrderUpdate {
if v != nil {
_u.SetProjectNo(*v)
}
return _u
}
// SetRouteSnapshot sets the "routeSnapshot" field.
func (_u *WorkOrderUpdate) SetRouteSnapshot(v []map[string]interface{}) *WorkOrderUpdate {
_u.mutation.SetRouteSnapshot(v)
// SetProductSerial sets the "productSerial" field.
func (_u *WorkOrderUpdate) SetProductSerial(v string) *WorkOrderUpdate {
_u.mutation.SetProductSerial(v)
return _u
}
// AppendRouteSnapshot appends value to the "routeSnapshot" field.
func (_u *WorkOrderUpdate) AppendRouteSnapshot(v []map[string]interface{}) *WorkOrderUpdate {
_u.mutation.AppendRouteSnapshot(v)
return _u
}
// ClearRouteSnapshot clears the value of the "routeSnapshot" field.
func (_u *WorkOrderUpdate) ClearRouteSnapshot() *WorkOrderUpdate {
_u.mutation.ClearRouteSnapshot()
// SetNillableProductSerial sets the "productSerial" field if the given value is not nil.
func (_u *WorkOrderUpdate) SetNillableProductSerial(v *string) *WorkOrderUpdate {
if v != nil {
_u.SetProductSerial(*v)
}
return _u
}
@@ -375,6 +372,21 @@ func (_u *WorkOrderUpdate) check() error {
return &ValidationError{Name: "processSeq", err: fmt.Errorf(`ent: validator failed for field "WorkOrder.processSeq": %w`, err)}
}
}
if v, ok := _u.mutation.ContractNo(); ok {
if err := workorder.ContractNoValidator(v); err != nil {
return &ValidationError{Name: "contractNo", err: fmt.Errorf(`ent: validator failed for field "WorkOrder.contractNo": %w`, err)}
}
}
if v, ok := _u.mutation.ProjectNo(); ok {
if err := workorder.ProjectNoValidator(v); err != nil {
return &ValidationError{Name: "projectNo", err: fmt.Errorf(`ent: validator failed for field "WorkOrder.projectNo": %w`, err)}
}
}
if v, ok := _u.mutation.ProductSerial(); ok {
if err := workorder.ProductSerialValidator(v); err != nil {
return &ValidationError{Name: "productSerial", err: fmt.Errorf(`ent: validator failed for field "WorkOrder.productSerial": %w`, err)}
}
}
if v, ok := _u.mutation.Status(); ok {
if err := workorder.StatusValidator(v); err != nil {
return &ValidationError{Name: "status", err: fmt.Errorf(`ent: validator failed for field "WorkOrder.status": %w`, err)}
@@ -383,6 +395,12 @@ func (_u *WorkOrderUpdate) check() error {
return nil
}
// Modify adds a statement modifier for attaching custom logic to the UPDATE statement.
func (_u *WorkOrderUpdate) Modify(modifiers ...func(u *sql.UpdateBuilder)) *WorkOrderUpdate {
_u.modifiers = append(_u.modifiers, modifiers...)
return _u
}
func (_u *WorkOrderUpdate) sqlSave(ctx context.Context) (_node int, err error) {
if err := _u.check(); err != nil {
return _node, err
@@ -431,25 +449,14 @@ func (_u *WorkOrderUpdate) sqlSave(ctx context.Context) (_node int, err error) {
if value, ok := _u.mutation.ProcessSeq(); ok {
_spec.SetField(workorder.FieldProcessSeq, field.TypeString, value)
}
if value, ok := _u.mutation.RouteId(); ok {
_spec.SetField(workorder.FieldRouteId, field.TypeInt, value)
if value, ok := _u.mutation.ContractNo(); ok {
_spec.SetField(workorder.FieldContractNo, field.TypeString, value)
}
if value, ok := _u.mutation.AddedRouteId(); ok {
_spec.AddField(workorder.FieldRouteId, field.TypeInt, value)
if value, ok := _u.mutation.ProjectNo(); ok {
_spec.SetField(workorder.FieldProjectNo, field.TypeString, value)
}
if _u.mutation.RouteIdCleared() {
_spec.ClearField(workorder.FieldRouteId, field.TypeInt)
}
if value, ok := _u.mutation.RouteSnapshot(); ok {
_spec.SetField(workorder.FieldRouteSnapshot, field.TypeJSON, value)
}
if value, ok := _u.mutation.AppendedRouteSnapshot(); ok {
_spec.AddModifier(func(u *sql.UpdateBuilder) {
sqljson.Append(u, workorder.FieldRouteSnapshot, value)
})
}
if _u.mutation.RouteSnapshotCleared() {
_spec.ClearField(workorder.FieldRouteSnapshot, field.TypeJSON)
if value, ok := _u.mutation.ProductSerial(); ok {
_spec.SetField(workorder.FieldProductSerial, field.TypeString, value)
}
if value, ok := _u.mutation.Status(); ok {
_spec.SetField(workorder.FieldStatus, field.TypeString, value)
@@ -484,6 +491,7 @@ func (_u *WorkOrderUpdate) sqlSave(ctx context.Context) (_node int, err error) {
if _u.mutation.UpdatedAtCleared() {
_spec.ClearField(workorder.FieldUpdatedAt, field.TypeTime)
}
_spec.AddModifiers(_u.modifiers...)
if _node, err = sqlgraph.UpdateNodes(ctx, _u.driver, _spec); err != nil {
if _, ok := err.(*sqlgraph.NotFoundError); ok {
err = &NotFoundError{workorder.Label}
@@ -499,9 +507,10 @@ func (_u *WorkOrderUpdate) sqlSave(ctx context.Context) (_node int, err error) {
// WorkOrderUpdateOne is the builder for updating a single WorkOrder entity.
type WorkOrderUpdateOne struct {
config
fields []string
hooks []Hook
mutation *WorkOrderMutation
fields []string
hooks []Hook
mutation *WorkOrderMutation
modifiers []func(*sql.UpdateBuilder)
}
// SetWorkOrderNo sets the "workOrderNo" field.
@@ -644,48 +653,45 @@ func (_u *WorkOrderUpdateOne) SetNillableProcessSeq(v *string) *WorkOrderUpdateO
return _u
}
// SetRouteId sets the "routeId" field.
func (_u *WorkOrderUpdateOne) SetRouteId(v int) *WorkOrderUpdateOne {
_u.mutation.ResetRouteId()
_u.mutation.SetRouteId(v)
// SetContractNo sets the "contractNo" field.
func (_u *WorkOrderUpdateOne) SetContractNo(v string) *WorkOrderUpdateOne {
_u.mutation.SetContractNo(v)
return _u
}
// SetNillableRouteId sets the "routeId" field if the given value is not nil.
func (_u *WorkOrderUpdateOne) SetNillableRouteId(v *int) *WorkOrderUpdateOne {
// SetNillableContractNo sets the "contractNo" field if the given value is not nil.
func (_u *WorkOrderUpdateOne) SetNillableContractNo(v *string) *WorkOrderUpdateOne {
if v != nil {
_u.SetRouteId(*v)
_u.SetContractNo(*v)
}
return _u
}
// AddRouteId adds value to the "routeId" field.
func (_u *WorkOrderUpdateOne) AddRouteId(v int) *WorkOrderUpdateOne {
_u.mutation.AddRouteId(v)
// SetProjectNo sets the "projectNo" field.
func (_u *WorkOrderUpdateOne) SetProjectNo(v string) *WorkOrderUpdateOne {
_u.mutation.SetProjectNo(v)
return _u
}
// ClearRouteId clears the value of the "routeId" field.
func (_u *WorkOrderUpdateOne) ClearRouteId() *WorkOrderUpdateOne {
_u.mutation.ClearRouteId()
// SetNillableProjectNo sets the "projectNo" field if the given value is not nil.
func (_u *WorkOrderUpdateOne) SetNillableProjectNo(v *string) *WorkOrderUpdateOne {
if v != nil {
_u.SetProjectNo(*v)
}
return _u
}
// SetRouteSnapshot sets the "routeSnapshot" field.
func (_u *WorkOrderUpdateOne) SetRouteSnapshot(v []map[string]interface{}) *WorkOrderUpdateOne {
_u.mutation.SetRouteSnapshot(v)
// SetProductSerial sets the "productSerial" field.
func (_u *WorkOrderUpdateOne) SetProductSerial(v string) *WorkOrderUpdateOne {
_u.mutation.SetProductSerial(v)
return _u
}
// AppendRouteSnapshot appends value to the "routeSnapshot" field.
func (_u *WorkOrderUpdateOne) AppendRouteSnapshot(v []map[string]interface{}) *WorkOrderUpdateOne {
_u.mutation.AppendRouteSnapshot(v)
return _u
}
// ClearRouteSnapshot clears the value of the "routeSnapshot" field.
func (_u *WorkOrderUpdateOne) ClearRouteSnapshot() *WorkOrderUpdateOne {
_u.mutation.ClearRouteSnapshot()
// SetNillableProductSerial sets the "productSerial" field if the given value is not nil.
func (_u *WorkOrderUpdateOne) SetNillableProductSerial(v *string) *WorkOrderUpdateOne {
if v != nil {
_u.SetProductSerial(*v)
}
return _u
}
@@ -863,6 +869,21 @@ func (_u *WorkOrderUpdateOne) check() error {
return &ValidationError{Name: "processSeq", err: fmt.Errorf(`ent: validator failed for field "WorkOrder.processSeq": %w`, err)}
}
}
if v, ok := _u.mutation.ContractNo(); ok {
if err := workorder.ContractNoValidator(v); err != nil {
return &ValidationError{Name: "contractNo", err: fmt.Errorf(`ent: validator failed for field "WorkOrder.contractNo": %w`, err)}
}
}
if v, ok := _u.mutation.ProjectNo(); ok {
if err := workorder.ProjectNoValidator(v); err != nil {
return &ValidationError{Name: "projectNo", err: fmt.Errorf(`ent: validator failed for field "WorkOrder.projectNo": %w`, err)}
}
}
if v, ok := _u.mutation.ProductSerial(); ok {
if err := workorder.ProductSerialValidator(v); err != nil {
return &ValidationError{Name: "productSerial", err: fmt.Errorf(`ent: validator failed for field "WorkOrder.productSerial": %w`, err)}
}
}
if v, ok := _u.mutation.Status(); ok {
if err := workorder.StatusValidator(v); err != nil {
return &ValidationError{Name: "status", err: fmt.Errorf(`ent: validator failed for field "WorkOrder.status": %w`, err)}
@@ -871,6 +892,12 @@ func (_u *WorkOrderUpdateOne) check() error {
return nil
}
// Modify adds a statement modifier for attaching custom logic to the UPDATE statement.
func (_u *WorkOrderUpdateOne) Modify(modifiers ...func(u *sql.UpdateBuilder)) *WorkOrderUpdateOne {
_u.modifiers = append(_u.modifiers, modifiers...)
return _u
}
func (_u *WorkOrderUpdateOne) sqlSave(ctx context.Context) (_node *WorkOrder, err error) {
if err := _u.check(); err != nil {
return _node, err
@@ -936,25 +963,14 @@ func (_u *WorkOrderUpdateOne) sqlSave(ctx context.Context) (_node *WorkOrder, er
if value, ok := _u.mutation.ProcessSeq(); ok {
_spec.SetField(workorder.FieldProcessSeq, field.TypeString, value)
}
if value, ok := _u.mutation.RouteId(); ok {
_spec.SetField(workorder.FieldRouteId, field.TypeInt, value)
if value, ok := _u.mutation.ContractNo(); ok {
_spec.SetField(workorder.FieldContractNo, field.TypeString, value)
}
if value, ok := _u.mutation.AddedRouteId(); ok {
_spec.AddField(workorder.FieldRouteId, field.TypeInt, value)
if value, ok := _u.mutation.ProjectNo(); ok {
_spec.SetField(workorder.FieldProjectNo, field.TypeString, value)
}
if _u.mutation.RouteIdCleared() {
_spec.ClearField(workorder.FieldRouteId, field.TypeInt)
}
if value, ok := _u.mutation.RouteSnapshot(); ok {
_spec.SetField(workorder.FieldRouteSnapshot, field.TypeJSON, value)
}
if value, ok := _u.mutation.AppendedRouteSnapshot(); ok {
_spec.AddModifier(func(u *sql.UpdateBuilder) {
sqljson.Append(u, workorder.FieldRouteSnapshot, value)
})
}
if _u.mutation.RouteSnapshotCleared() {
_spec.ClearField(workorder.FieldRouteSnapshot, field.TypeJSON)
if value, ok := _u.mutation.ProductSerial(); ok {
_spec.SetField(workorder.FieldProductSerial, field.TypeString, value)
}
if value, ok := _u.mutation.Status(); ok {
_spec.SetField(workorder.FieldStatus, field.TypeString, value)
@@ -989,6 +1005,7 @@ func (_u *WorkOrderUpdateOne) sqlSave(ctx context.Context) (_node *WorkOrder, er
if _u.mutation.UpdatedAtCleared() {
_spec.ClearField(workorder.FieldUpdatedAt, field.TypeTime)
}
_spec.AddModifiers(_u.modifiers...)
_node = &WorkOrder{config: _u.config}
_spec.Assign = _node.assignValues
_spec.ScanValues = _node.scanValues