liujiandao
2024-04-30 52d6ec2b86005444441a7c7033d7d2ffd35631d2
service/silk_rank.go
@@ -14,7 +14,7 @@
   EndFineness   decimal.Decimal
   GradeMap      map[string]struct{}
   ValueList     []*Pair
   SortType      SortType
   SortType      ValueType
   GradeRank     map[string]int
}
@@ -23,23 +23,23 @@
   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
   }
@@ -87,28 +87,24 @@
      }
   }
   //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