数据分析平台 预警设置窗口新增判断条件与获取产品名称

This commit is contained in:
jh_peng 2025-04-24 14:33:25 +08:00
parent 07af57b147
commit 37300badf3
3 changed files with 65 additions and 9 deletions

View File

@ -35,7 +35,12 @@ func (S *SWarningService) Update(c *gin.Context) {
response.FailWithMessage(msg, c) response.FailWithMessage(msg, c)
return 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 数据分析平台 // @Tags 数据分析平台

View File

@ -1,6 +1,7 @@
package erp package erp
import ( import (
"strings"
"testData/global" "testData/global"
"testData/model" "testData/model"
) )
@ -13,10 +14,15 @@ func GetFactorySelections() []string {
func GetAllProductSelection() []string { func GetAllProductSelection() []string {
var products []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) productsMap := make(map[string]bool)
for _, product := range products { 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{} products = []string{}
for product := range productsMap { for product := range productsMap {

View File

@ -3,11 +3,28 @@ package test_data
import ( import (
"errors" "errors"
"gorm.io/gorm" "gorm.io/gorm"
"strconv"
"testData/global" "testData/global"
"testData/model" "testData/model"
) )
func UpdateWarning(req *model.Warning) error { 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 var warning *model.Warning
if errors.Is(global.PostGreSQL.Where("product = ? AND step = ?", req.Product, req.Step).First(&warning).Error, gorm.ErrRecordNotFound) { if errors.Is(global.PostGreSQL.Where("product = ? AND step = ?", req.Product, req.Step).First(&warning).Error, gorm.ErrRecordNotFound) {
global.PostGreSQL.Create(&model.Warning{ global.PostGreSQL.Create(&model.Warning{
@ -27,33 +44,61 @@ func UpdateWarning(req *model.Warning) error {
"average_pass_probability": req.AveragePassProbability, "average_pass_probability": req.AveragePassProbability,
}) })
} }
for k := range req.ProductionControl { //for k := range req.ProductionControl {
req.ProductionControl[k].ID = 0 // req.ProductionControl[k].ID = 0
req.ProductionControl[k].WarningID = warning.ID // req.ProductionControl[k].WarningID = warning.ID
} //}
global.PostGreSQL.Where("warning_id = ?", warning.ID).Delete(&model.ProductionControl{}) //global.PostGreSQL.Where("warning_id = ?", warning.ID).Delete(&model.ProductionControl{})
global.PostGreSQL.Create(&req.ProductionControl) //global.PostGreSQL.Create(&req.ProductionControl)
for k := range req.PassProbabilityDiff { for k := range req.PassProbabilityDiff {
req.PassProbabilityDiff[k].ID = 0 req.PassProbabilityDiff[k].ID = 0
req.PassProbabilityDiff[k].WarningID = warning.ID 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.Where("warning_id = ?", warning.ID).Delete(&model.PassProbabilityDiff{})
global.PostGreSQL.Create(&req.PassProbabilityDiff) global.PostGreSQL.Create(&req.PassProbabilityDiff)
for k := range req.BinControl { for k := range req.BinControl {
req.BinControl[k].ID = 0 req.BinControl[k].ID = 0
req.BinControl[k].WarningID = warning.ID 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.Where("warning_id = ?", warning.ID).Delete(&model.BinControl{})
global.PostGreSQL.Create(&req.BinControl) global.PostGreSQL.Create(&req.BinControl)
for k := range req.SelectionDiffControl { for k := range req.SelectionDiffControl {
req.SelectionDiffControl[k].ID = 0 req.SelectionDiffControl[k].ID = 0
req.SelectionDiffControl[k].WarningID = warning.ID 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.Where("warning_id = ?", warning.ID).Delete(&model.SelectionDiffControl{})
global.PostGreSQL.Create(&req.SelectionDiffControl) global.PostGreSQL.Create(&req.SelectionDiffControl)
for k := range req.StackingMaterialsWarning { for k := range req.StackingMaterialsWarning {
req.StackingMaterialsWarning[k].ID = 0 req.StackingMaterialsWarning[k].ID = 0
req.StackingMaterialsWarning[k].WarningID = warning.ID 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.Where("warning_id = ?", warning.ID).Delete(&model.StackingMaterialsWarning{})
global.PostGreSQL.Create(&req.StackingMaterialsWarning) global.PostGreSQL.Create(&req.StackingMaterialsWarning)