From 288d78f66ecd1b628e8d1df7a3da99fc5e6880ec Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期五, 08 十二月 2023 14:13:37 +0800
Subject: [PATCH] debug
---
service/progress.go | 106 +++++++++++++++++++++++++++++++---------------------
1 files changed, 63 insertions(+), 43 deletions(-)
diff --git a/service/progress.go b/service/progress.go
index 972a248..ac415f6 100644
--- a/service/progress.go
+++ b/service/progress.go
@@ -3,7 +3,7 @@
import (
"apsClient/model"
"errors"
- "gorm.io/gorm"
+ "github.com/mitchellh/mapstructure"
)
type ProgressService struct {
@@ -13,57 +13,77 @@
return &ProgressService{}
}
-func (slf ProgressService) AddProgress(db *gorm.DB, procedure *model.Procedures, order *model.Order) error {
- progress := &model.ProductionProgress{
- WorkOrderID: procedure.WorkOrderID,
- OrderID: procedure.OrderID,
- ProcedureID: procedure.ProceduresInfo.ProcedureID,
- DeviceID: procedure.DeviceID,
- TotalQuantity: order.Amount.IntPart(),
- Position: procedure.Position,
- }
- err := model.NewProductionProgressSearch(db).Create(progress)
+// UpdateProgress 浠呴檺plc鏁版嵁閲囬泦瀹氭椂浠诲姟鐢�(缂哄皯宸ュ簭id鍙傛暟)
+func (slf ProgressService) UpdateProgress(deviceID string, channel int32, finishedQuantity int) (err error) {
+ progress, err := slf.GetCurrentProgress(deviceID, channel)
if err != nil {
return err
}
- ProgressCacheSet(procedure.Position, progress)
- return nil
-}
-
-func (slf ProgressService) UpdateProgress(position int, finishedQuantity int64) (err error) {
- progressCache, err := slf.GetCurrentProgress(position)
- if err != nil {
- return err
- }
- if progressCache == nil {
+ if progress == nil {
return errors.New("progress cache not found")
}
- if finishedQuantity > progressCache.FinishedQuantity { //褰撴湁鍙樺寲鏃舵墠鏇存柊
- progressCache.FinishedQuantity = finishedQuantity
- ProgressCacheSet(position, progressCache)
- return model.NewProductionProgressSearch(nil).SetId(progressCache.ID).Save(progressCache)
+ if finishedQuantity > progress.FinishedQuantity { //褰撴湁鍙樺寲鏃舵墠鏇存柊
+ return model.NewProceduresSearch(nil).SetId(progress.ID).UpdateByMap(map[string]interface{}{"finished_quantity": finishedQuantity})
}
return nil
}
-func (slf ProgressService) GetCurrentProgress(position int) (progressCache *model.ProductionProgress, err error) {
- var ok bool
- progressCache, ok = ProgressCacheGet(position)
- if !ok {
- progressCache, err = model.NewProductionProgressSearch(nil).SetPosition(position).SetOrder("id desc").First()
- if err == gorm.ErrRecordNotFound {
- return nil, errors.New("progress not found")
- }
- if err != nil {
- return nil, err
- }
-
- if progressCache.FinishedQuantity >= progressCache.TotalQuantity { //濡傛灉瀹屾垚閲忓ぇ浜庣瓑浜庢�婚噺灏辫鏄庢槸涓婁竴涓凡瀹屾垚鐨勪换鍔★紝涓嶆槸褰撳墠杩涜涓殑浠诲姟銆�
- progressCache = nil
- }
- if progressCache != nil {
- ProgressCacheSet(position, progressCache)
- }
+// GetCurrentProgress 浠呴檺plc鏁版嵁閲囬泦瀹氭椂浠诲姟鐢�(缂哄皯宸ュ簭id鍙傛暟)
+func (slf ProgressService) GetCurrentProgress(deviceID string, channel int32) (progress *model.Procedures, err error) {
+ progress, err = model.NewProceduresSearch(nil).SetDeviceId(deviceID).SetChannels([]int32{channel}).SetStatus(model.ProcedureStatusProcessing).SetOrder("id desc").First()
+ if err != nil {
+ return nil, err
}
return
}
+
+func (slf ProgressService) UpdateProgressByProceduresId(proceduresId uint, finishedQuantity int) (err error) {
+ progress, err := slf.GetProcedureByProceduresId(proceduresId)
+ if err != nil {
+ return err
+ }
+ if progress == nil {
+ return errors.New("progress not exists")
+ }
+ if finishedQuantity > progress.FinishedQuantity { //褰撴湁鍙樺寲鏃舵墠鏇存柊
+ return model.NewProceduresSearch(nil).SetId(progress.ID).UpdateByMap(map[string]interface{}{"finished_quantity": finishedQuantity})
+ }
+
+ return nil
+}
+
+func (slf ProgressService) GetProcedureByProceduresId(proceduresId uint) (progress *model.Procedures, err error) {
+ progress, err = model.NewProceduresSearch(nil).SetId(proceduresId).First()
+ if err != nil {
+ return nil, err
+ }
+ return
+}
+
+type ProductionProgress struct {
+ WorkOrderID string `json:"workOrderID"`
+ OrderID string `json:"orderID"`
+ ProcedureID string `json:"procedureId"`
+ ProductProcedureID string `json:"productProcedureID"` //浜у搧宸ュ簭id
+ DeviceID string `json:"deviceId"`
+ FinishedQuantity int64 `json:"finishedQuantity"`
+}
+
+// GetProgressList 鑾峰彇寰呭悓姝ヨ繘搴﹀伐搴�
+func (slf ProgressService) GetProgressList() (progressList []*ProductionProgress, err error) {
+ var procedureList []*model.Procedures
+ procedureList, err = model.NewProceduresSearch(nil).
+ SetFields([]string{"id",
+ "finished_quantity",
+ "work_order_id",
+ "order_id",
+ "procedure_id",
+ "product_procedure_id",
+ "device_id",
+ }).SetStatus(model.ProcedureStatusProcessing).SetOrder("id desc").FindNotTotal()
+ if err != nil {
+ return
+ }
+ err = mapstructure.Decode(procedureList, &progressList)
+ return
+}
--
Gitblit v1.8.0