From 283433e329dbd8de66f763caa7add995685b9d50 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期三, 06 九月 2023 21:47:09 +0800
Subject: [PATCH] 生产看板下发多次任务后,数据库中相同工单的数据应不重复
---
nsq/msg_handler.go | 10 +++++++++-
.gitignore | 1 +
model/procedures.go | 11 +++++++++++
3 files changed, 21 insertions(+), 1 deletions(-)
diff --git a/.gitignore b/.gitignore
index 1561e76..6872e17 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,6 +23,7 @@
*.test
apsClient
aps.db
+aps.db-journal
.idea
logs
datafile
\ No newline at end of file
diff --git a/model/procedures.go b/model/procedures.go
index 3ca628f..9cc75f2 100644
--- a/model/procedures.go
+++ b/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
}
diff --git a/nsq/msg_handler.go b/nsq/msg_handler.go
index c5d5bf9..6e8df60 100644
--- a/nsq/msg_handler.go
+++ b/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 {
--
Gitblit v1.8.0