初始化2
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
package logic
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"bj_power_mes/ent"
|
||||
"bj_power_mes/ent/workorder"
|
||||
)
|
||||
|
||||
type WorkOrderReq struct {
|
||||
Id int `json:"id"`
|
||||
WorkOrderNo string `json:"workOrderNo"`
|
||||
ProductTypeId int `json:"productTypeId"`
|
||||
ProductCode string `json:"productCode"`
|
||||
ProductName string `json:"productName"`
|
||||
Quantity int `json:"quantity"`
|
||||
ProcessSeq string `json:"processSeq"`
|
||||
Status string `json:"status"`
|
||||
PlanStart string `json:"planStart"`
|
||||
PlanEnd string `json:"planEnd"`
|
||||
}
|
||||
|
||||
// CreateWorkOrder 创建工单
|
||||
func (s *Service) CreateWorkOrder(ctx context.Context, req WorkOrderReq, operator string) error {
|
||||
if req.WorkOrderNo == "" {
|
||||
return errors.New("工单号不能为空")
|
||||
}
|
||||
if req.ProductTypeId == 0 {
|
||||
return errors.New("请选择产品类型")
|
||||
}
|
||||
if req.Quantity <= 0 {
|
||||
req.Quantity = 1
|
||||
}
|
||||
status := req.Status
|
||||
if status == "" {
|
||||
status = "CREATED"
|
||||
}
|
||||
if req.ProcessSeq == "" {
|
||||
req.ProcessSeq = "123456789101112"
|
||||
}
|
||||
b := s.ctx.EntClient.WorkOrder.Create().
|
||||
SetWorkOrderNo(req.WorkOrderNo).
|
||||
SetProductTypeId(req.ProductTypeId).
|
||||
SetProductCode(req.ProductCode).
|
||||
SetProductName(req.ProductName).
|
||||
SetQuantity(req.Quantity).
|
||||
SetProcessSeq(req.ProcessSeq).
|
||||
SetStatus(status)
|
||||
if req.PlanStart != "" {
|
||||
if t, err := parseDate(req.PlanStart); err == nil {
|
||||
b.SetPlanStart(t)
|
||||
}
|
||||
}
|
||||
if req.PlanEnd != "" {
|
||||
if t, err := parseDate(req.PlanEnd); err == nil {
|
||||
b.SetPlanEnd(t)
|
||||
}
|
||||
}
|
||||
if _, err := b.Save(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
s.ctx.EventLog.Write(ctx, "work.order.create", req.WorkOrderNo, operator, "work_order", req.WorkOrderNo, "创建工单", map[string]any{"quantity": req.Quantity})
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Service) UpdateWorkOrder(ctx context.Context, req WorkOrderReq, operator string) error {
|
||||
if req.Id == 0 {
|
||||
return errors.New("缺少 id")
|
||||
}
|
||||
u := s.ctx.EntClient.WorkOrder.UpdateOneID(req.Id).
|
||||
SetStatus(req.Status).SetQuantity(req.Quantity).SetProcessSeq(req.ProcessSeq)
|
||||
if req.PlanStart != "" {
|
||||
if t, err := parseDate(req.PlanStart); err == nil {
|
||||
u.SetPlanStart(t)
|
||||
}
|
||||
}
|
||||
if req.PlanEnd != "" {
|
||||
if t, err := parseDate(req.PlanEnd); err == nil {
|
||||
u.SetPlanEnd(t)
|
||||
}
|
||||
}
|
||||
if err := u.Exec(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
wo, err := s.ctx.EntClient.WorkOrder.Get(ctx, req.Id)
|
||||
if err == nil {
|
||||
s.ctx.EventLog.Write(ctx, "work.order.update", wo.WorkOrderNo, operator, "work_order", wo.WorkOrderNo, "更新工单", map[string]any{"status": req.Status})
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// ListWorkOrders 查询工单(支持工单号/状态过滤)
|
||||
func (s *Service) ListWorkOrders(ctx context.Context, orderNo, status string) ([]*ent.WorkOrder, error) {
|
||||
q := s.ctx.EntClient.WorkOrder.Query()
|
||||
if orderNo != "" {
|
||||
q = q.Where(workorder.WorkOrderNoContains(orderNo))
|
||||
}
|
||||
if status != "" {
|
||||
q = q.Where(workorder.Status(status))
|
||||
}
|
||||
return q.Order(ent.Desc(workorder.FieldID)).All(ctx)
|
||||
}
|
||||
|
||||
func (s *Service) GetWorkOrder(ctx context.Context, id int) (*ent.WorkOrder, error) {
|
||||
if id > 0 {
|
||||
return s.ctx.EntClient.WorkOrder.Get(ctx, id)
|
||||
}
|
||||
return s.ctx.EntClient.WorkOrder.Query().Order(ent.Desc(workorder.FieldID)).First(ctx)
|
||||
}
|
||||
Reference in New Issue
Block a user