From 732e1e344addd02a4fa56531c7ffd0319e2d5b6c Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 28 十一月 2023 17:44:31 +0800
Subject: [PATCH] 进度更改兼容新旧模板
---
service/report_work.go | 2
service/progress.go | 43 +++++++++++++++++----
model/production_progress.go | 25 +++++++++---
3 files changed, 53 insertions(+), 17 deletions(-)
diff --git a/model/production_progress.go b/model/production_progress.go
index 293a660..76fbd68 100644
--- a/model/production_progress.go
+++ b/model/production_progress.go
@@ -9,13 +9,15 @@
type (
ProductionProgress struct {
gorm.Model
- WorkOrderID string `gorm:"index;type:varchar(191);not null" json:"workOrderID"`
- OrderID string `gorm:"index;type:varchar(191);not null" json:"orderID"`
- ProcedureID string `gorm:"type:varchar(191)" json:"procedureId"`
- DeviceID string `gorm:"type:varchar(191);not null" json:"deviceId"`
- FinishedQuantity int64 `gorm:"type:int;not null" json:"finishedQuantity"`
- Channel int32 `gorm:"type:int" json:"channel"` //閫氶亾
- TotalQuantity int64 `gorm:"type:int;not null" json:"totalQuantity"`
+ ProceduresID uint `gorm:"index;type:varchar(191)" json:"proceduresId"` //procedures琛ㄧ殑id
+ WorkOrderID string `gorm:"index;type:varchar(191);not null" json:"workOrderID"`
+ OrderID string `gorm:"index;type:varchar(191);not null" json:"orderID"`
+ ProcedureID string `gorm:"type:varchar(191)" json:"procedureId"`
+ ProductProcedureID string `gorm:"type:varchar(191);not null" json:"productProcedureID"` //浜у搧宸ュ簭id
+ DeviceID string `gorm:"type:varchar(191);not null" json:"deviceId"`
+ FinishedQuantity int64 `gorm:"type:int;not null" json:"finishedQuantity"`
+ Channel int32 `gorm:"type:int" json:"channel"` //閫氶亾
+ TotalQuantity int64 `gorm:"type:int;not null" json:"totalQuantity"`
}
ProductionProgressSearch struct {
@@ -64,6 +66,11 @@
return slf
}
+func (slf *ProductionProgressSearch) SetProceduresId(proceduresId uint) *ProductionProgressSearch {
+ slf.ProceduresID = proceduresId
+ return slf
+}
+
func (slf *ProductionProgressSearch) SetDeviceId(id string) *ProductionProgressSearch {
slf.DeviceID = id
return slf
@@ -107,6 +114,10 @@
db = db.Where("procedure_id = ?", slf.ProcedureID)
}
+ if slf.ProceduresID != 0 {
+ db = db.Where("procedures_id = ?", slf.ProceduresID)
+ }
+
if slf.DeviceID != "" {
db = db.Where("device_id = ?", slf.DeviceID)
}
diff --git a/service/progress.go b/service/progress.go
index ee41c05..4205413 100644
--- a/service/progress.go
+++ b/service/progress.go
@@ -14,15 +14,17 @@
}
func (slf ProgressService) Add(db *gorm.DB, procedure *model.Procedures, order *model.Order) error {
- _, err := model.NewProductionProgressSearch(db).SetProcedureId(procedure.ProcedureID).SetWorkOrderId(procedure.WorkOrderID).First()
+ _, err := model.NewProductionProgressSearch(db).SetProceduresId(procedure.ID).First()
if err == gorm.ErrRecordNotFound {
progress := &model.ProductionProgress{
- WorkOrderID: procedure.WorkOrderID,
- OrderID: procedure.OrderID,
- ProcedureID: procedure.ProceduresInfo.ProcedureID,
- DeviceID: procedure.DeviceID,
- TotalQuantity: order.Amount.IntPart(),
- Channel: procedure.Channel,
+ ProceduresID: procedure.ID,
+ WorkOrderID: procedure.WorkOrderID,
+ OrderID: procedure.OrderID,
+ ProcedureID: procedure.ProceduresInfo.ProcedureID,
+ ProductProcedureID: procedure.ProductProcedureID,
+ DeviceID: procedure.DeviceID,
+ TotalQuantity: order.Amount.IntPart(),
+ Channel: procedure.Channel,
}
err := model.NewProductionProgressSearch(db).Create(progress)
if err != nil {
@@ -34,7 +36,7 @@
return nil
}
-// UpdateProgress 浠呴檺plc鏁版嵁閲囬泦瀹氭椂浠诲姟鐢�
+// UpdateProgress 浠呴檺plc鏁版嵁閲囬泦瀹氭椂浠诲姟鐢�(缂哄皯宸ュ簭id鍙傛暟)
func (slf ProgressService) UpdateProgress(deviceID string, channel int32, finishedQuantity int64) (err error) {
progressCache, err := slf.GetCurrentProgress(deviceID, channel)
if err != nil {
@@ -51,7 +53,7 @@
return nil
}
-// GetCurrentProgress 浠呴檺plc鏁版嵁閲囬泦瀹氭椂浠诲姟鐢�
+// GetCurrentProgress 浠呴檺plc鏁版嵁閲囬泦瀹氭椂浠诲姟鐢�(缂哄皯宸ュ簭id鍙傛暟)
func (slf ProgressService) GetCurrentProgress(deviceID string, channel int32) (progressCache *model.ProductionProgress, err error) {
var ok bool
progressCache, ok = ProgressCacheGet(deviceID, channel)
@@ -74,6 +76,29 @@
return
}
+func (slf ProgressService) UpdateProgressByProceduresId(proceduresId uint, finishedQuantity int64) (err error) {
+ progress, err := slf.GetCurrentProgressByProceduresId(proceduresId)
+ if err != nil {
+ return err
+ }
+ if progress == nil {
+ return errors.New("progress not exists")
+ }
+ if finishedQuantity > progress.FinishedQuantity { //褰撴湁鍙樺寲鏃舵墠鏇存柊
+ progress.FinishedQuantity = finishedQuantity
+ return model.NewProductionProgressSearch(nil).SetId(progress.ID).Save(progress)
+ }
+ return nil
+}
+
+func (slf ProgressService) GetCurrentProgressByProceduresId(proceduresId uint) (progress *model.ProductionProgress, err error) {
+ progress, err = model.NewProductionProgressSearch(nil).SetProceduresId(proceduresId).First()
+ if err != nil {
+ return nil, err
+ }
+ return
+}
+
// GetProgressList 鑾峰彇寰呭悓姝ヨ繘搴﹀伐搴�
func (slf ProgressService) GetProgressList() (progressList []*model.ProductionProgress, err error) {
progressList, err = model.NewProductionProgressSearch(nil).SetUnFinished().SetOrder("id desc").SetPage(1, 100).FindNotTotal()
diff --git a/service/report_work.go b/service/report_work.go
index 4cbf466..1c9c50e 100644
--- a/service/report_work.go
+++ b/service/report_work.go
@@ -90,7 +90,7 @@
logx.Errorf("save report work transaction error: %v", err)
return err
}
- _ = NewProgressService().UpdateProgress(conf.Conf.CurrentDeviceID, procedure.Channel, int64(params.ReportAmount))
+ _ = NewProgressService().UpdateProgressByProceduresId(procedure.ID, int64(params.ReportAmount))
return nil
}
--
Gitblit v1.8.0