feat(mes): 添加定时同步可生产数量到WMS及BOM项相关标准字段

- 在main.go中添加定时任务每10分钟同步可生产数量到WMS系统
- 为BomItem实体添加relatedStandard字段及相关CRUD方法
- 为InspectionRecord实体添加reportNo、materialCode、materialName等字段
- 更新ent schema确保新字段的验证和默认值设置
- 添加必要的数据库迁移和字段映射逻辑
This commit is contained in:
SunYF
2026-09-17 12:49:07 +08:00
parent b4b274301d
commit 1cc93795ce
191 changed files with 24504 additions and 1250 deletions
+90 -2
View File
@@ -18,7 +18,7 @@ type InspectionRecord struct {
config `json:"-"`
// ID of the ent.
ID int `json:"id,omitempty"`
// 记录类型 CHECKIN/POINT/PROCESS/DONE/ALARM
// 记录类型 CHECKIN/POINT/PROCESS/DONE/ALARM/INCOMING/FINAL
Category string `json:"category,omitempty"`
// 工位号
StationNo string `json:"stationNo,omitempty"`
@@ -46,6 +46,22 @@ type InspectionRecord struct {
StepName string `json:"stepName,omitempty"`
// 实测值(过程巡检录入)
MeasuredValue string `json:"measuredValue,omitempty"`
// 报检单号
ReportNo string `json:"reportNo,omitempty"`
// 物料编码(图号)
MaterialCode string `json:"materialCode,omitempty"`
// 物料名称
MaterialName string `json:"materialName,omitempty"`
// 生产厂家
Manufacturer string `json:"manufacturer,omitempty"`
// 检验单号
InspectionNo string `json:"inspectionNo,omitempty"`
// 附件ID,逗号分隔(关联 attachment 表)
AttachmentIds string `json:"attachmentIds,omitempty"`
// 处置类型 退货/返修/退换
DisposalType string `json:"disposalType,omitempty"`
// 处置说明
DisposalRemark string `json:"disposalRemark,omitempty"`
// CreatedAt holds the value of the "createdAt" field.
CreatedAt time.Time `json:"createdAt,omitempty"`
selectValues sql.SelectValues
@@ -60,7 +76,7 @@ func (*InspectionRecord) scanValues(columns []string) ([]any, error) {
values[i] = new([]byte)
case inspectionrecord.FieldID, inspectionrecord.FieldProcessCode, inspectionrecord.FieldStepId:
values[i] = new(sql.NullInt64)
case inspectionrecord.FieldCategory, inspectionrecord.FieldStationNo, inspectionrecord.FieldShift, inspectionrecord.FieldOrderNo, inspectionrecord.FieldSn, inspectionrecord.FieldResult, inspectionrecord.FieldPhoto, inspectionrecord.FieldRemark, inspectionrecord.FieldOperator, inspectionrecord.FieldStepName, inspectionrecord.FieldMeasuredValue:
case inspectionrecord.FieldCategory, inspectionrecord.FieldStationNo, inspectionrecord.FieldShift, inspectionrecord.FieldOrderNo, inspectionrecord.FieldSn, inspectionrecord.FieldResult, inspectionrecord.FieldPhoto, inspectionrecord.FieldRemark, inspectionrecord.FieldOperator, inspectionrecord.FieldStepName, inspectionrecord.FieldMeasuredValue, inspectionrecord.FieldReportNo, inspectionrecord.FieldMaterialCode, inspectionrecord.FieldMaterialName, inspectionrecord.FieldManufacturer, inspectionrecord.FieldInspectionNo, inspectionrecord.FieldAttachmentIds, inspectionrecord.FieldDisposalType, inspectionrecord.FieldDisposalRemark:
values[i] = new(sql.NullString)
case inspectionrecord.FieldCreatedAt:
values[i] = new(sql.NullTime)
@@ -171,6 +187,54 @@ func (_m *InspectionRecord) assignValues(columns []string, values []any) error {
} else if value.Valid {
_m.MeasuredValue = value.String
}
case inspectionrecord.FieldReportNo:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field reportNo", values[i])
} else if value.Valid {
_m.ReportNo = value.String
}
case inspectionrecord.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 inspectionrecord.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 inspectionrecord.FieldManufacturer:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field manufacturer", values[i])
} else if value.Valid {
_m.Manufacturer = value.String
}
case inspectionrecord.FieldInspectionNo:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field inspectionNo", values[i])
} else if value.Valid {
_m.InspectionNo = value.String
}
case inspectionrecord.FieldAttachmentIds:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field attachmentIds", values[i])
} else if value.Valid {
_m.AttachmentIds = value.String
}
case inspectionrecord.FieldDisposalType:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field disposalType", values[i])
} else if value.Valid {
_m.DisposalType = value.String
}
case inspectionrecord.FieldDisposalRemark:
if value, ok := values[i].(*sql.NullString); !ok {
return fmt.Errorf("unexpected type %T for field disposalRemark", values[i])
} else if value.Valid {
_m.DisposalRemark = value.String
}
case inspectionrecord.FieldCreatedAt:
if value, ok := values[i].(*sql.NullTime); !ok {
return fmt.Errorf("unexpected type %T for field createdAt", values[i])
@@ -255,6 +319,30 @@ func (_m *InspectionRecord) String() string {
builder.WriteString("measuredValue=")
builder.WriteString(_m.MeasuredValue)
builder.WriteString(", ")
builder.WriteString("reportNo=")
builder.WriteString(_m.ReportNo)
builder.WriteString(", ")
builder.WriteString("materialCode=")
builder.WriteString(_m.MaterialCode)
builder.WriteString(", ")
builder.WriteString("materialName=")
builder.WriteString(_m.MaterialName)
builder.WriteString(", ")
builder.WriteString("manufacturer=")
builder.WriteString(_m.Manufacturer)
builder.WriteString(", ")
builder.WriteString("inspectionNo=")
builder.WriteString(_m.InspectionNo)
builder.WriteString(", ")
builder.WriteString("attachmentIds=")
builder.WriteString(_m.AttachmentIds)
builder.WriteString(", ")
builder.WriteString("disposalType=")
builder.WriteString(_m.DisposalType)
builder.WriteString(", ")
builder.WriteString("disposalRemark=")
builder.WriteString(_m.DisposalRemark)
builder.WriteString(", ")
builder.WriteString("createdAt=")
builder.WriteString(_m.CreatedAt.Format(time.ANSIC))
builder.WriteByte(')')