1. 新增预警表添加工单号字段,支持按工单号检索预警 2. 添加工单过滤在制品/绩效报表/预警中心查询 3. 补全WMS台账字段口径与权限配置 4. 修复备料单与数量不符处理流程 5. 新增配送进度/库位联动/自动出库功能 6. 修复AGV配送状态更新逻辑 7. 优化退料与库存管理细节
378 lines
14 KiB
Go
378 lines
14 KiB
Go
// Code generated by ent, DO NOT EDIT.
|
|
|
|
package ent
|
|
|
|
import (
|
|
"bj_power_mes/ent/materialrequest"
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
|
|
"entgo.io/ent"
|
|
"entgo.io/ent/dialect/sql"
|
|
)
|
|
|
|
// MaterialRequest is the model entity for the MaterialRequest schema.
|
|
type MaterialRequest struct {
|
|
config `json:"-"`
|
|
// ID of the ent.
|
|
ID int `json:"id,omitempty"`
|
|
// 备料单号
|
|
RequestNo string `json:"requestNo,omitempty"`
|
|
// 工单号
|
|
OrderNo string `json:"orderNo,omitempty"`
|
|
// 对应排产日
|
|
PlanDate string `json:"planDate,omitempty"`
|
|
// 物料编码
|
|
MaterialCode string `json:"materialCode,omitempty"`
|
|
// MaterialName holds the value of the "materialName" field.
|
|
MaterialName string `json:"materialName,omitempty"`
|
|
// Unit holds the value of the "unit" field.
|
|
Unit string `json:"unit,omitempty"`
|
|
// ManageMode holds the value of the "manageMode" field.
|
|
ManageMode string `json:"manageMode,omitempty"`
|
|
// 需备数量
|
|
ReqQty float64 `json:"reqQty,omitempty"`
|
|
// Status holds the value of the "status" field.
|
|
Status string `json:"status,omitempty"`
|
|
// 目标接驳台 DOCK01..20
|
|
TargetDock string `json:"targetDock,omitempty"`
|
|
// 目标工位号(0=未指定)
|
|
StationNo int `json:"stationNo,omitempty"`
|
|
// 该物料所属装配工序(1~12)
|
|
ProcessCode int `json:"processCode,omitempty"`
|
|
// 已发出量(分批出库累加;幂等基准,勿与已接料混用)
|
|
SentQty float64 `json:"sentQty,omitempty"`
|
|
// 已接料量(工位扫码接料累加)
|
|
ReceivedQty float64 `json:"receivedQty,omitempty"`
|
|
// 最近接料时间(unix 秒)
|
|
ReceivedAt int64 `json:"receivedAt,omitempty"`
|
|
// 接料人
|
|
ReceiveBy string `json:"receiveBy,omitempty"`
|
|
// 来源 PLAN/REFILL
|
|
Source string `json:"source,omitempty"`
|
|
// 超出 BOM 需求的数量
|
|
OverQty float64 `json:"overQty,omitempty"`
|
|
// 超领原因 损耗/报废/返修/其他
|
|
OverReason string `json:"overReason,omitempty"`
|
|
// 关联数量不符单号
|
|
RefReportNo string `json:"refReportNo,omitempty"`
|
|
// 是否需要AGV配送到接驳台
|
|
NeedAgv bool `json:"needAgv,omitempty"`
|
|
// 发料批次号(分批出库时填写)
|
|
BatchNo string `json:"batchNo,omitempty"`
|
|
// Operator holds the value of the "operator" field.
|
|
Operator string `json:"operator,omitempty"`
|
|
// CreatedAt holds the value of the "createdAt" field.
|
|
CreatedAt time.Time `json:"createdAt,omitempty"`
|
|
// UpdatedAt holds the value of the "updatedAt" field.
|
|
UpdatedAt *time.Time `json:"updatedAt,omitempty"`
|
|
selectValues sql.SelectValues
|
|
}
|
|
|
|
// scanValues returns the types for scanning values from sql.Rows.
|
|
func (*MaterialRequest) scanValues(columns []string) ([]any, error) {
|
|
values := make([]any, len(columns))
|
|
for i := range columns {
|
|
switch columns[i] {
|
|
case materialrequest.FieldNeedAgv:
|
|
values[i] = new(sql.NullBool)
|
|
case materialrequest.FieldReqQty, materialrequest.FieldSentQty, materialrequest.FieldReceivedQty, materialrequest.FieldOverQty:
|
|
values[i] = new(sql.NullFloat64)
|
|
case materialrequest.FieldID, materialrequest.FieldStationNo, materialrequest.FieldProcessCode, materialrequest.FieldReceivedAt:
|
|
values[i] = new(sql.NullInt64)
|
|
case materialrequest.FieldRequestNo, materialrequest.FieldOrderNo, materialrequest.FieldPlanDate, materialrequest.FieldMaterialCode, materialrequest.FieldMaterialName, materialrequest.FieldUnit, materialrequest.FieldManageMode, materialrequest.FieldStatus, materialrequest.FieldTargetDock, materialrequest.FieldReceiveBy, materialrequest.FieldSource, materialrequest.FieldOverReason, materialrequest.FieldRefReportNo, materialrequest.FieldBatchNo, materialrequest.FieldOperator:
|
|
values[i] = new(sql.NullString)
|
|
case materialrequest.FieldCreatedAt, materialrequest.FieldUpdatedAt:
|
|
values[i] = new(sql.NullTime)
|
|
default:
|
|
values[i] = new(sql.UnknownType)
|
|
}
|
|
}
|
|
return values, nil
|
|
}
|
|
|
|
// assignValues assigns the values that were returned from sql.Rows (after scanning)
|
|
// to the MaterialRequest fields.
|
|
func (_m *MaterialRequest) assignValues(columns []string, values []any) error {
|
|
if m, n := len(values), len(columns); m < n {
|
|
return fmt.Errorf("mismatch number of scan values: %d != %d", m, n)
|
|
}
|
|
for i := range columns {
|
|
switch columns[i] {
|
|
case materialrequest.FieldID:
|
|
value, ok := values[i].(*sql.NullInt64)
|
|
if !ok {
|
|
return fmt.Errorf("unexpected type %T for field id", value)
|
|
}
|
|
_m.ID = int(value.Int64)
|
|
case materialrequest.FieldRequestNo:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field requestNo", values[i])
|
|
} else if value.Valid {
|
|
_m.RequestNo = value.String
|
|
}
|
|
case materialrequest.FieldOrderNo:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field orderNo", values[i])
|
|
} else if value.Valid {
|
|
_m.OrderNo = value.String
|
|
}
|
|
case materialrequest.FieldPlanDate:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field planDate", values[i])
|
|
} else if value.Valid {
|
|
_m.PlanDate = value.String
|
|
}
|
|
case materialrequest.FieldMaterialCode:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field materialCode", values[i])
|
|
} else if value.Valid {
|
|
_m.MaterialCode = value.String
|
|
}
|
|
case materialrequest.FieldMaterialName:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field materialName", values[i])
|
|
} else if value.Valid {
|
|
_m.MaterialName = value.String
|
|
}
|
|
case materialrequest.FieldUnit:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field unit", values[i])
|
|
} else if value.Valid {
|
|
_m.Unit = value.String
|
|
}
|
|
case materialrequest.FieldManageMode:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field manageMode", values[i])
|
|
} else if value.Valid {
|
|
_m.ManageMode = value.String
|
|
}
|
|
case materialrequest.FieldReqQty:
|
|
if value, ok := values[i].(*sql.NullFloat64); !ok {
|
|
return fmt.Errorf("unexpected type %T for field reqQty", values[i])
|
|
} else if value.Valid {
|
|
_m.ReqQty = value.Float64
|
|
}
|
|
case materialrequest.FieldStatus:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field status", values[i])
|
|
} else if value.Valid {
|
|
_m.Status = value.String
|
|
}
|
|
case materialrequest.FieldTargetDock:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field targetDock", values[i])
|
|
} else if value.Valid {
|
|
_m.TargetDock = value.String
|
|
}
|
|
case materialrequest.FieldStationNo:
|
|
if value, ok := values[i].(*sql.NullInt64); !ok {
|
|
return fmt.Errorf("unexpected type %T for field stationNo", values[i])
|
|
} else if value.Valid {
|
|
_m.StationNo = int(value.Int64)
|
|
}
|
|
case materialrequest.FieldProcessCode:
|
|
if value, ok := values[i].(*sql.NullInt64); !ok {
|
|
return fmt.Errorf("unexpected type %T for field processCode", values[i])
|
|
} else if value.Valid {
|
|
_m.ProcessCode = int(value.Int64)
|
|
}
|
|
case materialrequest.FieldSentQty:
|
|
if value, ok := values[i].(*sql.NullFloat64); !ok {
|
|
return fmt.Errorf("unexpected type %T for field sentQty", values[i])
|
|
} else if value.Valid {
|
|
_m.SentQty = value.Float64
|
|
}
|
|
case materialrequest.FieldReceivedQty:
|
|
if value, ok := values[i].(*sql.NullFloat64); !ok {
|
|
return fmt.Errorf("unexpected type %T for field receivedQty", values[i])
|
|
} else if value.Valid {
|
|
_m.ReceivedQty = value.Float64
|
|
}
|
|
case materialrequest.FieldReceivedAt:
|
|
if value, ok := values[i].(*sql.NullInt64); !ok {
|
|
return fmt.Errorf("unexpected type %T for field receivedAt", values[i])
|
|
} else if value.Valid {
|
|
_m.ReceivedAt = value.Int64
|
|
}
|
|
case materialrequest.FieldReceiveBy:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field receiveBy", values[i])
|
|
} else if value.Valid {
|
|
_m.ReceiveBy = value.String
|
|
}
|
|
case materialrequest.FieldSource:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field source", values[i])
|
|
} else if value.Valid {
|
|
_m.Source = value.String
|
|
}
|
|
case materialrequest.FieldOverQty:
|
|
if value, ok := values[i].(*sql.NullFloat64); !ok {
|
|
return fmt.Errorf("unexpected type %T for field overQty", values[i])
|
|
} else if value.Valid {
|
|
_m.OverQty = value.Float64
|
|
}
|
|
case materialrequest.FieldOverReason:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field overReason", values[i])
|
|
} else if value.Valid {
|
|
_m.OverReason = value.String
|
|
}
|
|
case materialrequest.FieldRefReportNo:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field refReportNo", values[i])
|
|
} else if value.Valid {
|
|
_m.RefReportNo = value.String
|
|
}
|
|
case materialrequest.FieldNeedAgv:
|
|
if value, ok := values[i].(*sql.NullBool); !ok {
|
|
return fmt.Errorf("unexpected type %T for field needAgv", values[i])
|
|
} else if value.Valid {
|
|
_m.NeedAgv = value.Bool
|
|
}
|
|
case materialrequest.FieldBatchNo:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field batchNo", values[i])
|
|
} else if value.Valid {
|
|
_m.BatchNo = value.String
|
|
}
|
|
case materialrequest.FieldOperator:
|
|
if value, ok := values[i].(*sql.NullString); !ok {
|
|
return fmt.Errorf("unexpected type %T for field operator", values[i])
|
|
} else if value.Valid {
|
|
_m.Operator = value.String
|
|
}
|
|
case materialrequest.FieldCreatedAt:
|
|
if value, ok := values[i].(*sql.NullTime); !ok {
|
|
return fmt.Errorf("unexpected type %T for field createdAt", values[i])
|
|
} else if value.Valid {
|
|
_m.CreatedAt = value.Time
|
|
}
|
|
case materialrequest.FieldUpdatedAt:
|
|
if value, ok := values[i].(*sql.NullTime); !ok {
|
|
return fmt.Errorf("unexpected type %T for field updatedAt", values[i])
|
|
} else if value.Valid {
|
|
_m.UpdatedAt = new(time.Time)
|
|
*_m.UpdatedAt = value.Time
|
|
}
|
|
default:
|
|
_m.selectValues.Set(columns[i], values[i])
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Value returns the ent.Value that was dynamically selected and assigned to the MaterialRequest.
|
|
// This includes values selected through modifiers, order, etc.
|
|
func (_m *MaterialRequest) Value(name string) (ent.Value, error) {
|
|
return _m.selectValues.Get(name)
|
|
}
|
|
|
|
// Update returns a builder for updating this MaterialRequest.
|
|
// Note that you need to call MaterialRequest.Unwrap() before calling this method if this MaterialRequest
|
|
// was returned from a transaction, and the transaction was committed or rolled back.
|
|
func (_m *MaterialRequest) Update() *MaterialRequestUpdateOne {
|
|
return NewMaterialRequestClient(_m.config).UpdateOne(_m)
|
|
}
|
|
|
|
// Unwrap unwraps the MaterialRequest entity that was returned from a transaction after it was closed,
|
|
// so that all future queries will be executed through the driver which created the transaction.
|
|
func (_m *MaterialRequest) Unwrap() *MaterialRequest {
|
|
_tx, ok := _m.config.driver.(*txDriver)
|
|
if !ok {
|
|
panic("ent: MaterialRequest is not a transactional entity")
|
|
}
|
|
_m.config.driver = _tx.drv
|
|
return _m
|
|
}
|
|
|
|
// String implements the fmt.Stringer.
|
|
func (_m *MaterialRequest) String() string {
|
|
var builder strings.Builder
|
|
builder.WriteString("MaterialRequest(")
|
|
builder.WriteString(fmt.Sprintf("id=%v, ", _m.ID))
|
|
builder.WriteString("requestNo=")
|
|
builder.WriteString(_m.RequestNo)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("orderNo=")
|
|
builder.WriteString(_m.OrderNo)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("planDate=")
|
|
builder.WriteString(_m.PlanDate)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("materialCode=")
|
|
builder.WriteString(_m.MaterialCode)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("materialName=")
|
|
builder.WriteString(_m.MaterialName)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("unit=")
|
|
builder.WriteString(_m.Unit)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("manageMode=")
|
|
builder.WriteString(_m.ManageMode)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("reqQty=")
|
|
builder.WriteString(fmt.Sprintf("%v", _m.ReqQty))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("status=")
|
|
builder.WriteString(_m.Status)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("targetDock=")
|
|
builder.WriteString(_m.TargetDock)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("stationNo=")
|
|
builder.WriteString(fmt.Sprintf("%v", _m.StationNo))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("processCode=")
|
|
builder.WriteString(fmt.Sprintf("%v", _m.ProcessCode))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("sentQty=")
|
|
builder.WriteString(fmt.Sprintf("%v", _m.SentQty))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("receivedQty=")
|
|
builder.WriteString(fmt.Sprintf("%v", _m.ReceivedQty))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("receivedAt=")
|
|
builder.WriteString(fmt.Sprintf("%v", _m.ReceivedAt))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("receiveBy=")
|
|
builder.WriteString(_m.ReceiveBy)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("source=")
|
|
builder.WriteString(_m.Source)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("overQty=")
|
|
builder.WriteString(fmt.Sprintf("%v", _m.OverQty))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("overReason=")
|
|
builder.WriteString(_m.OverReason)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("refReportNo=")
|
|
builder.WriteString(_m.RefReportNo)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("needAgv=")
|
|
builder.WriteString(fmt.Sprintf("%v", _m.NeedAgv))
|
|
builder.WriteString(", ")
|
|
builder.WriteString("batchNo=")
|
|
builder.WriteString(_m.BatchNo)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("operator=")
|
|
builder.WriteString(_m.Operator)
|
|
builder.WriteString(", ")
|
|
builder.WriteString("createdAt=")
|
|
builder.WriteString(_m.CreatedAt.Format(time.ANSIC))
|
|
builder.WriteString(", ")
|
|
if v := _m.UpdatedAt; v != nil {
|
|
builder.WriteString("updatedAt=")
|
|
builder.WriteString(v.Format(time.ANSIC))
|
|
}
|
|
builder.WriteByte(')')
|
|
return builder.String()
|
|
}
|
|
|
|
// MaterialRequests is a parsable slice of MaterialRequest.
|
|
type MaterialRequests []*MaterialRequest
|