| | |
| | | EndFineness decimal.Decimal |
| | | GradeMap map[string]struct{} |
| | | ValueList []*Pair |
| | | SortType SortType |
| | | SortType ValueType |
| | | GradeRank map[string]int |
| | | } |
| | | |
| | |
| | | RankValue decimal.Decimal |
| | | } |
| | | |
| | | type SortType int |
| | | type ValueType int |
| | | |
| | | const ( |
| | | SortTypeAsc SortType = 0 |
| | | SortTypeDesc SortType = 1 |
| | | ValueTypeSmallerBetter ValueType = 0 //值按升序排名(值越大,等级越高) |
| | | ValueTypeGreaterBetter ValueType = 1 //值按降序排名(值越小,等级越低) |
| | | ) |
| | | |
| | | var sortTypeMap = map[constvar.CheckItem]SortType{ |
| | | constvar.CheckItemDeviation: SortTypeAsc, |
| | | constvar.CheckItemTwiceChange: SortTypeAsc, |
| | | constvar.CheckItemCleanliness: SortTypeDesc, |
| | | constvar.CheckItemPurity: SortTypeDesc, |
| | | constvar.CheckItemMaxDeviation: SortTypeAsc, |
| | | var sortTypeMap = map[constvar.CheckItem]ValueType{ |
| | | constvar.CheckItemDeviation: ValueTypeSmallerBetter, |
| | | constvar.CheckItemTwiceChange: ValueTypeSmallerBetter, |
| | | constvar.CheckItemCleanliness: ValueTypeGreaterBetter, |
| | | constvar.CheckItemPurity: ValueTypeGreaterBetter, |
| | | constvar.CheckItemMaxDeviation: ValueTypeSmallerBetter, |
| | | } |
| | | |
| | | func GetSilkRankStandard() (map[string]*Standard, error) { |
| | | rankStandards, err := models.NewRawSilkRankStandardSearch().FindNotTotal() |
| | | func GetSilkRankStandard(startFineness, endFineness decimal.Decimal) (map[string]*Standard, error) { |
| | | rankStandards, err := models.NewRawSilkRankStandardSearch().SetFineness(startFineness, endFineness).FindNotTotal() |
| | | if err != nil { |
| | | return nil, err |
| | | } |
| | |
| | | } |
| | | } |
| | | //value排序 |
| | | for k := range standardMap { |
| | | for k := range standardMap { //等级降序排列 |
| | | sort.Slice(standardMap[k].ValueList, func(i, j int) bool { |
| | | sortType := sortTypeMap[standardMap[k].CheckItem] |
| | | standardMap[k].SortType = sortType |
| | | if sortType == SortTypeAsc { |
| | | if sortType == ValueTypeSmallerBetter { |
| | | return standardMap[k].ValueList[i].RankValue.LessThan(standardMap[k].ValueList[j].RankValue) |
| | | } else { |
| | | return standardMap[k].ValueList[i].RankValue.GreaterThan(standardMap[k].ValueList[j].RankValue) |
| | | } |
| | | }) |
| | | } |
| | | //等级排名 |
| | | //等级排名 GradeRank越大,等级越高 |
| | | for lineId, standard := range standardMap { |
| | | for k, pair := range standard.ValueList { |
| | | if standardMap[lineId].GradeRank == nil { |
| | | standardMap[lineId].GradeRank = make(map[string]int, 0) |
| | | } |
| | | if standard.SortType == SortTypeAsc { |
| | | standardMap[lineId].GradeRank[pair.RankName] = k + 1 |
| | | } else { |
| | | standardMap[lineId].GradeRank[pair.RankName] = len(standard.ValueList) - k |
| | | } |
| | | standardMap[lineId].GradeRank[pair.RankName] = len(standard.ValueList) - k |
| | | } |
| | | } |
| | | return standardMap, nil |