数据分析平台 直方图接口调整
This commit is contained in:
parent
4089aa80ff
commit
c017af30a7
@ -50,12 +50,12 @@ func (S *TestService) Histogram(c *gin.Context) {
|
||||
response.FailWithMessage(msg, c)
|
||||
return
|
||||
}
|
||||
data, err := test_data.Histogram(&r)
|
||||
data, lineData, err := test_data.Histogram(&r)
|
||||
if err != nil {
|
||||
response.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
response.OkWithData(gin.H{"data": data}, c)
|
||||
response.OkWithData(gin.H{"data": data, "line": lineData}, c)
|
||||
}
|
||||
|
||||
// @Tags 数据分析平台
|
||||
|
@ -9,6 +9,18 @@ type Histogram struct {
|
||||
Min string
|
||||
X []string
|
||||
Y []string
|
||||
MaxY float64
|
||||
MaxYX float64
|
||||
}
|
||||
type HistogramLine struct {
|
||||
Field string
|
||||
Average float64
|
||||
StandardDeviation float64
|
||||
N float64
|
||||
Max string
|
||||
Min string
|
||||
X []string
|
||||
Y []string
|
||||
}
|
||||
|
||||
type Scatter struct {
|
||||
|
@ -10,3 +10,17 @@ func GetFactorySelections() []string {
|
||||
global.Oracle.Model(&model.PmcFile{}).Where("pmc02 IN ?", []string{"AB", "CPFT", "FT"}).Select("pmc03").Find(&factories)
|
||||
return factories
|
||||
}
|
||||
|
||||
func GetAllProductSelection() []string {
|
||||
var products []string
|
||||
global.Oracle.Model(&model.ImaFile{}).Select("Ima02").Group("Ima02").Find(&products)
|
||||
productsMap := make(map[string]bool)
|
||||
for _, product := range products {
|
||||
productsMap[product[:6]] = true
|
||||
}
|
||||
products = []string{}
|
||||
for product := range productsMap {
|
||||
products = append(products, product)
|
||||
}
|
||||
return products
|
||||
}
|
||||
|
@ -18,8 +18,9 @@ func QuerySelection(req *request.QuerySelection) map[string][]string {
|
||||
}
|
||||
|
||||
// Histogram 直方图
|
||||
func Histogram(req *request.Histogram) ([]*model.Histogram, error) {
|
||||
func Histogram(req *request.Histogram) ([]*model.Histogram, []*model.HistogramLine, error) {
|
||||
var fTHistogram []*model.Histogram
|
||||
var fTHistogramLine []*model.HistogramLine
|
||||
var x, groups []string
|
||||
var xMax, xMin string
|
||||
|
||||
@ -364,6 +365,10 @@ func Histogram(req *request.Histogram) ([]*model.Histogram, error) {
|
||||
|
||||
var yCounter float64 = 0
|
||||
for k, v := range counter {
|
||||
if float64(v) > fTHistogram[index].MaxY {
|
||||
fTHistogram[index].MaxY = float64(v)
|
||||
fTHistogram[index].MaxYX = k
|
||||
}
|
||||
if xPointMin.LessThanOrEqual(decimal.NewFromFloat(k)) && decimal.NewFromFloat(k).LessThan(xPointMax) {
|
||||
yCounter += float64(v)
|
||||
}
|
||||
@ -445,6 +450,10 @@ func Histogram(req *request.Histogram) ([]*model.Histogram, error) {
|
||||
xPointMax, _ := strconv.ParseFloat(x[i+1], 64)
|
||||
var yCounter float64 = 0
|
||||
for k, v := range counter {
|
||||
if float64(v) > fTHistogram[index].MaxY {
|
||||
fTHistogram[index].MaxY = float64(v)
|
||||
fTHistogram[index].MaxYX = k
|
||||
}
|
||||
if xPointMin <= k && k < xPointMax {
|
||||
yCounter += float64(v)
|
||||
}
|
||||
@ -459,7 +468,25 @@ func Histogram(req *request.Histogram) ([]*model.Histogram, error) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return fTHistogram, nil
|
||||
for _, histogram := range fTHistogram {
|
||||
var aFTHistogramLine model.HistogramLine
|
||||
for _, histogramX := range histogram.X {
|
||||
aFTHistogramLine.X = append(aFTHistogramLine.X, histogramX)
|
||||
}
|
||||
for _, histogramX := range histogram.X {
|
||||
xDecimal, _ := decimal.NewFromString(histogramX)
|
||||
xFloat, _ := xDecimal.Float64()
|
||||
aFTHistogramLine.Y = append(aFTHistogramLine.Y, decimal.NewFromFloat(1).
|
||||
Div(decimal.NewFromFloat(histogram.StandardDeviation*math.Sqrt(2*math.Pi))).
|
||||
Mul(decimal.NewFromFloat(math.Exp(-1*math.Pow(xFloat-histogram.MaxYX, 2)/(2*math.Pow(histogram.StandardDeviation, 2))))).
|
||||
String())
|
||||
//histogram.Average
|
||||
}
|
||||
aFTHistogramLine.Field = histogram.Field
|
||||
aFTHistogramLine.N = histogram.MaxYX
|
||||
fTHistogramLine = append(fTHistogramLine, &aFTHistogramLine)
|
||||
}
|
||||
return fTHistogram, fTHistogramLine, nil
|
||||
}
|
||||
|
||||
// Scatter 散点图
|
||||
|
@ -1451,7 +1451,7 @@ func ExportFT() string {
|
||||
for _, ftList := range ftLists {
|
||||
ftList.Product = strings.ReplaceAll(ftList.Product, "管装", "")
|
||||
var warning *model.Warning
|
||||
global.PostGreSQL.Where("step LIKE ? AND product = ?", "%FT%", ftList.Product).
|
||||
global.PostGreSQL.Where("step LIKE ? AND product LIKE ?", "%FT%", "%"+ftList.Product+"%").
|
||||
Preload("ProductionControl").Preload("PassProbabilityDiff").Preload("BinControl").
|
||||
Preload("SelectionDiffControl").Preload("StackingMaterialsWarning").Preload("HistogramSelection").
|
||||
Preload("ScatterSelection").Find(&warning)
|
||||
|
@ -10,5 +10,6 @@ func InitTestDataERPRouter(R *gin.RouterGroup) {
|
||||
testDataGroup := R.Group("")
|
||||
{
|
||||
testDataGroup.GET("import/testFile/factorySelection", testDataService.FactorySelection)
|
||||
testDataGroup.GET("warning/productSelection", testDataService.GetAllProductSelection)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user