From 37300badf3fb1ee07fe8f0e5b97a3bbd1a5ee2db Mon Sep 17 00:00:00 2001 From: jh_peng Date: Thu, 24 Apr 2025 14:33:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=86=E6=9E=90=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=20=E9=A2=84=E8=AD=A6=E8=AE=BE=E7=BD=AE=E7=AA=97?= =?UTF-8?q?=E5=8F=A3=E6=96=B0=E5=A2=9E=E5=88=A4=E6=96=AD=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E4=B8=8E=E8=8E=B7=E5=8F=96=E4=BA=A7=E5=93=81=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/test.data/warning.go | 7 +++- repository/erp/erp.go | 10 ++++-- repository/test.data/warning.go | 57 +++++++++++++++++++++++++++++---- 3 files changed, 65 insertions(+), 9 deletions(-) diff --git a/api/test.data/warning.go b/api/test.data/warning.go index 68b7f2d..a913920 100644 --- a/api/test.data/warning.go +++ b/api/test.data/warning.go @@ -35,7 +35,12 @@ func (S *SWarningService) Update(c *gin.Context) { response.FailWithMessage(msg, c) return } - response.OkWithData(test_data.UpdateWarning(&r), c) + if err := test_data.UpdateWarning(&r); err != nil { + response.FailWithMessage(err.Error(), c) + return + } else { + response.Ok(c) + } } // @Tags 数据分析平台 diff --git a/repository/erp/erp.go b/repository/erp/erp.go index 5e96cad..f4cce9d 100644 --- a/repository/erp/erp.go +++ b/repository/erp/erp.go @@ -1,6 +1,7 @@ package erp import ( + "strings" "testData/global" "testData/model" ) @@ -13,10 +14,15 @@ func GetFactorySelections() []string { func GetAllProductSelection() []string { var products []string - global.Oracle.Model(&model.ImaFile{}).Select("Ima02").Group("Ima02").Find(&products) + global.Oracle.Model(&model.ImaFile{}).Where("IMA06 IN ?", []string{"FT", "AB", "ABFT", "CP", "CPAB", "TR", "WF"}). + Select("Ima02").Group("Ima02").Find(&products) productsMap := make(map[string]bool) for _, product := range products { - productsMap[product[:6]] = true + s := strings.Split(product, "_") + s1 := strings.Split(s[0], "-") + s2 := strings.ReplaceAll(s1[0], "管装", "") + s2 = strings.ReplaceAll(s2, "白板", "") + productsMap[s2] = true } products = []string{} for product := range productsMap { diff --git a/repository/test.data/warning.go b/repository/test.data/warning.go index 95af60d..572ca8e 100644 --- a/repository/test.data/warning.go +++ b/repository/test.data/warning.go @@ -3,11 +3,28 @@ package test_data import ( "errors" "gorm.io/gorm" + "strconv" "testData/global" "testData/model" ) func UpdateWarning(req *model.Warning) error { + _, err := strconv.ParseFloat(req.FirstPassProbabilityLimitL, 64) + if err != nil { + return errors.New("一次通过率下限必须是数字") + } + _, err = strconv.ParseFloat(req.ReturnProbabilityLimitH, 64) + if err != nil { + return errors.New("回收率上限必须是数字") + } + _, err = strconv.ParseFloat(req.PassProbabilityLimitL, 64) + if err != nil { + return errors.New("良率下限必须是数字") + } + _, err = strconv.ParseFloat(req.AveragePassProbability, 64) + if err != nil { + return errors.New("平均良率必须是数字") + } var warning *model.Warning if errors.Is(global.PostGreSQL.Where("product = ? AND step = ?", req.Product, req.Step).First(&warning).Error, gorm.ErrRecordNotFound) { global.PostGreSQL.Create(&model.Warning{ @@ -27,33 +44,61 @@ func UpdateWarning(req *model.Warning) error { "average_pass_probability": req.AveragePassProbability, }) } - for k := range req.ProductionControl { - req.ProductionControl[k].ID = 0 - req.ProductionControl[k].WarningID = warning.ID - } - global.PostGreSQL.Where("warning_id = ?", warning.ID).Delete(&model.ProductionControl{}) - global.PostGreSQL.Create(&req.ProductionControl) + //for k := range req.ProductionControl { + // req.ProductionControl[k].ID = 0 + // req.ProductionControl[k].WarningID = warning.ID + //} + //global.PostGreSQL.Where("warning_id = ?", warning.ID).Delete(&model.ProductionControl{}) + //global.PostGreSQL.Create(&req.ProductionControl) for k := range req.PassProbabilityDiff { req.PassProbabilityDiff[k].ID = 0 req.PassProbabilityDiff[k].WarningID = warning.ID + _, err = strconv.ParseFloat(req.PassProbabilityDiff[k].SitePassProbabilityDiff, 64) + if err != nil { + return errors.New("良率差异设置必须是数字") + } + _, err = strconv.ParseFloat(req.PassProbabilityDiff[k].PassProbabilityDiff, 64) + if err != nil { + return errors.New("良率差异设置必须是数字") + } + _, err = strconv.ParseFloat(req.PassProbabilityDiff[k].PassProbabilityWave, 64) + if err != nil { + return errors.New("良率差异设置必须是数字") + } } global.PostGreSQL.Where("warning_id = ?", warning.ID).Delete(&model.PassProbabilityDiff{}) global.PostGreSQL.Create(&req.PassProbabilityDiff) for k := range req.BinControl { req.BinControl[k].ID = 0 req.BinControl[k].WarningID = warning.ID + _, err = strconv.ParseFloat(req.BinControl[k].BinFailLimitH, 64) + if err != nil { + return errors.New("关键BIN设置必须是数字") + } } global.PostGreSQL.Where("warning_id = ?", warning.ID).Delete(&model.BinControl{}) global.PostGreSQL.Create(&req.BinControl) for k := range req.SelectionDiffControl { req.SelectionDiffControl[k].ID = 0 req.SelectionDiffControl[k].WarningID = warning.ID + _, err = strconv.ParseFloat(req.SelectionDiffControl[k].SiteDiff, 64) + if err != nil { + return errors.New("参数允许差异设置必须是数字") + } + _, err = strconv.ParseFloat(req.SelectionDiffControl[k].SubBatchDiff, 64) + if err != nil { + return errors.New("参数允许差异设置必须是数字") + } } global.PostGreSQL.Where("warning_id = ?", warning.ID).Delete(&model.SelectionDiffControl{}) global.PostGreSQL.Create(&req.SelectionDiffControl) for k := range req.StackingMaterialsWarning { req.StackingMaterialsWarning[k].ID = 0 req.StackingMaterialsWarning[k].WarningID = warning.ID + _, err = strconv.ParseFloat(req.StackingMaterialsWarning[k].Diff, 64) + if err != nil { + return errors.New("叠料报警设置必须是数字") + } } global.PostGreSQL.Where("warning_id = ?", warning.ID).Delete(&model.StackingMaterialsWarning{}) global.PostGreSQL.Create(&req.StackingMaterialsWarning)