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

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)
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 数据分析平台

View File

@ -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 {

View File

@ -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)