diff --git a/repository/test.data/export.go b/repository/test.data/export.go index a711038..e0e23cc 100644 --- a/repository/test.data/export.go +++ b/repository/test.data/export.go @@ -1469,17 +1469,17 @@ func ExportFT(isWeek bool) string { var ftLists []*model.FTList var pbis, lots []string if isWeek { - global.PostGreSQL.Model(&model.Report{}).Where("pbi != ? AND created_at BETWEEN ? AND ?", "", + global.PostGreSQL.Model(&model.Report{}).Where("pbi != ? AND pbi LIKE ? AND created_at BETWEEN ? AND ?", "", "%M%", carbon.Now().SubWeek().Format("Y-m-d"), carbon.Now().Format("Y-m-d")). Group("pbi").Select("pbi").Find(&pbis) - global.PostGreSQL.Model(&model.Report{}).Where("lot != ? AND created_at BETWEEN ? AND ?", "", + global.PostGreSQL.Model(&model.Report{}).Where("lot != ? AND pbi LIKE ? AND created_at BETWEEN ? AND ?", "", "%M%", carbon.Now().SubWeek().Format("Y-m-d"), carbon.Now().Format("Y-m-d")). Group("lot").Select("lot").Find(&lots) } else { - global.PostGreSQL.Model(&model.Report{}).Where("pbi != ? AND created_at BETWEEN ? AND ?", "", + global.PostGreSQL.Model(&model.Report{}).Where("pbi != ? AND pbi LIKE ? AND created_at BETWEEN ? AND ?", "", "%M%", carbon.Now().SubMonths(2).Format("Y-m-d"), carbon.Now().Format("Y-m-d")). Group("pbi").Select("pbi").Find(&pbis) - global.PostGreSQL.Model(&model.Report{}).Where("lot != ? AND created_at BETWEEN ? AND ?", "", + global.PostGreSQL.Model(&model.Report{}).Where("lot != ? AND pbi LIKE ? AND created_at BETWEEN ? AND ?", "", "%M%", carbon.Now().SubMonths(2).Format("Y-m-d"), carbon.Now().Format("Y-m-d")). Group("lot").Select("lot").Find(&lots) } @@ -1601,7 +1601,7 @@ func ExportFT(isWeek bool) string { } } var fileHandles []*model.FileHandled - global.PostGreSQL.Where("step = ? AND pbi = ? AND product = ? AND lot = ?", "FT", ftList.PBI, + global.PostGreSQL.Where("step = ? AND pbi = ?AND product = ? AND lot = ?", "FT", ftList.PBI, ftList.Product, ftList.Lot).Find(&fileHandles) siteDiffState := "正常" stackingMaterials := "否" diff --git a/repository/test.data/report.chart.go b/repository/test.data/report.chart.go index 7e841fd..4ba4780 100644 --- a/repository/test.data/report.chart.go +++ b/repository/test.data/report.chart.go @@ -571,17 +571,17 @@ func PassProbability(r *request.PassProbability) (interface{}, string) { r.EndDate = carbon.Parse(r.EndDate).AddDay().Format("Y-m-d") var reports []*model.Report if len(r.Product) == 0 && len(r.Lot) == 0 { - global.PostGreSQL.Where("step LIKE ? AND DATE(created_at) BETWEEN DATE(?) AND DATE(?)", "%"+r.Step+"%", r.StartDate, r.EndDate). - Order("created_at").Find(&reports) + global.PostGreSQL.Where("step LIKE ? AND DATE(created_at) BETWEEN DATE(?) AND DATE(?) AND pbi LIKE ?", "%"+r.Step+"%", r.StartDate, r.EndDate, "%M%"). + Find(&reports) } else if len(r.Product) != 0 && len(r.Lot) == 0 { - global.PostGreSQL.Where("step LIKE ? AND DATE(created_at) BETWEEN DATE(?) AND DATE(?)", "%"+r.Step+"%", r.StartDate, r.EndDate). - Where("product IN ?", r.Product).Order("created_at").Find(&reports) + global.PostGreSQL.Where("step LIKE ? AND DATE(created_at) BETWEEN DATE(?) AND DATE(?) AND pbi LIKE ?", "%"+r.Step+"%", r.StartDate, r.EndDate, "%M%"). + Where("product IN ?", r.Product).Find(&reports) } else if len(r.Product) == 0 && len(r.Lot) != 0 { - global.PostGreSQL.Where("step LIKE ? AND DATE(created_at) BETWEEN DATE(?) AND DATE(?)", "%"+r.Step+"%", r.StartDate, r.EndDate). - Where("lot IN ?", r.Lot).Order("created_at").Find(&reports) + global.PostGreSQL.Where("step LIKE ? AND DATE(created_at) BETWEEN DATE(?) AND DATE(?) AND pbi LIKE ?", "%"+r.Step+"%", r.StartDate, r.EndDate, "%M%"). + Where("lot IN ?", r.Lot).Find(&reports) } else if len(r.Product) != 0 && len(r.Lot) != 0 { - global.PostGreSQL.Where("step LIKE ? AND DATE(created_at) BETWEEN DATE(?) AND DATE(?)", "%"+r.Step+"%", r.StartDate, r.EndDate). - Where("product IN ? AND lot IN ?", r.Product, r.Lot).Order("created_at").Find(&reports) + global.PostGreSQL.Where("step LIKE ? AND DATE(created_at) BETWEEN DATE(?) AND DATE(?) AND pbi LIKE ?", "%"+r.Step+"%", r.StartDate, r.EndDate, "%M%"). + Where("product IN ? AND lot IN ?", r.Product, r.Lot).Find(&reports) } passProbabilityMap := make(map[string][]float64) @@ -643,8 +643,15 @@ func PassProbability(r *request.PassProbability) (interface{}, string) { if _, ok := passProbabilityMap[s]; !ok { passProbabilityMap[s] = []float64{} } - testQuantityDecimal, _ := decimal.NewFromString(report.TestQuantity) - passQuantityDecimal, _ := decimal.NewFromString(report.PassQuantity) + var testQuantityDecimal, passQuantityDecimal decimal.Decimal + if r.Y == "初测良率" { + testQuantityDecimal, _ = decimal.NewFromString(report.TestQuantity) + passQuantityDecimal, _ = decimal.NewFromString(report.FirstPassQuantity) + } else if r.Y == "良率" { + testQuantityDecimal, _ = decimal.NewFromString(report.TestQuantity) + passQuantityDecimal, _ = decimal.NewFromString(report.PassQuantity) + } + if !testQuantityDecimal.IsZero() { passProbability, _ := passQuantityDecimal.Div(testQuantityDecimal).Round(4).Mul(decimal.NewFromInt(100)).Float64() passProbabilityMap[s] = append(passProbabilityMap[s], passProbability) @@ -739,15 +746,20 @@ func PassProbability(r *request.PassProbability) (interface{}, string) { } } } else { - for k, v := range passProbabilityMap { + for k := range passProbabilityMap { + x = append(x, k) + } + sort.Slice(x, func(i, j int) bool { + return x[i] < x[j] + }) + for _, v := range x { average := 0.0 - for _, passProbability := range v { + for _, passProbability := range passProbabilityMap[v] { average += passProbability } - if len(v) != 0 { - average /= float64(len(v)) + if len(passProbabilityMap[v]) != 0 { + average /= float64(len(passProbabilityMap[v])) } - x = append(x, k) y = append(y, decimal.NewFromFloat(average).Round(2).String()) } } @@ -765,14 +777,14 @@ func PassProbability(r *request.PassProbability) (interface{}, string) { if _, ok := passProbabilityGroup[s]; !ok { groupY = append(groupY, "") } else { - averagea := 0.0 + average := 0.0 for _, passProbability := range passProbabilityGroup[s] { - averagea += passProbability + average += passProbability } if len(passProbabilityGroup[s]) != 0 { - averagea /= float64(len(passProbabilityGroup[s])) + average /= float64(len(passProbabilityGroup[s])) } - groupY = append(groupY, decimal.NewFromFloat(averagea).Round(2).String()) + groupY = append(groupY, decimal.NewFromFloat(average).Round(2).String()) } } lineSeries := &model.Line{ diff --git a/request/report.chart.go b/request/report.chart.go index e682bbb..c70a2cb 100644 --- a/request/report.chart.go +++ b/request/report.chart.go @@ -39,6 +39,7 @@ type PassProbability struct { StartDate string `json:"start_date"` EndDate string `json:"end_date"` X []string `json:"x"` + Y string `json:"y"` Product []string `json:"product"` Lot []string `json:"lot"` ChartType string `json:"chart_type"`