zhangqian
2023-09-06 283433e329dbd8de66f763caa7add995685b9d50
生产看板下发多次任务后,数据库中相同工单的数据应不重复
3个文件已修改
22 ■■■■■ 已修改文件
.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/procedures.go 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
nsq/msg_handler.go 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -23,6 +23,7 @@
*.test
apsClient
aps.db
aps.db-journal
.idea
logs
datafile
model/procedures.go
@@ -16,6 +16,7 @@
        WorkOrderID    string `gorm:"index;type:varchar(191);not null;comment:工单ID" json:"-"`
        OrderID        string `gorm:"index;type:varchar(191);not null;comment:订单ID" json:"-"`
        DeviceID       string `gorm:"index;type:varchar(191);comment:设备ID" json:"deviceId"`
        ProcedureID    string `gorm:"index;type:varchar(191);comment:工序ID" json:"procedureId"`
        StartTime      int64  `gorm:"comment:计划开始时间" json:"startTime"`
        EndTime        int64  `gorm:"comment:计划结束时间" json:"endTime"`
        Status         ProcedureStatus
@@ -32,6 +33,7 @@
        Preload      bool
        StartTimeMax int64
        StatusNot    ProcedureStatus
        ProcedureIds []string
    }
)
@@ -93,6 +95,11 @@
    return slf
}
func (slf *ProceduresSearch) SetProcedureIds(procedureIds []string) *ProceduresSearch {
    slf.ProcedureIds = procedureIds
    return slf
}
func (slf *ProceduresSearch) SetDeviceId(id string) *ProceduresSearch {
    slf.DeviceID = id
    return slf
@@ -148,6 +155,10 @@
        db = db.Where("status <> ?", slf.StatusNot)
    }
    if len(slf.ProcedureIds) > 0 {
        db = db.Where("procedure_id in ?", slf.ProcedureIds)
    }
    return db
}
nsq/msg_handler.go
@@ -49,15 +49,16 @@
        }
        procedureRecords := make([]*model.Procedures, 0, len(task.Procedures))
        procedureIds := make([]string, 0, len(task.Procedures))
        for _, procedure := range task.Procedures {
            procedureRecord := model.Procedures{
                WorkOrderID:    task.WorkOrder.WorkOrderID,
                OrderID:        task.WorkOrder.OrderID,
                DeviceID:       procedure.DeviceID,
                ProcedureID:    procedure.ProcedureID,
                StartTime:      procedure.StartTime,
                EndTime:        procedure.EndTime,
                Status:         model.ProcedureStatusWaitProcess,
                ProcedureData:  "",
                ProceduresInfo: common.ProductProcedure{},
            }
            procedureData, err := json.Marshal(procedure)
@@ -66,6 +67,7 @@
            }
            procedureRecord.ProcedureData = string(procedureData)
            procedureRecords = append(procedureRecords, &procedureRecord)
            procedureIds = append(procedureIds, procedure.ProcedureID)
        }
        var orderRecord model.Order
@@ -77,9 +79,15 @@
        }
        err = model.WithTransaction(func(db *gorm.DB) error {
            if err = model.NewOrderSearch(db).SetWorkOrderId(task.WorkOrder.WorkOrderID).Delete(); err != nil {
                return err
            }
            if err = model.NewOrderSearch(db).Save(&orderRecord); err != nil {
                return err
            }
            if err = model.NewProceduresSearch(db).SetProcedureIds(procedureIds).Delete(); err != nil {
                return err
            }
            return model.NewProceduresSearch(db).CreateBatch(procedureRecords)
        })
        if err != nil {