package customChartesing import ( "appPlatform/api/version1/customerform" "appPlatform/overall/publicmethod" "fmt" "strconv" "strings" "time" ) /* * @ 作者: 秦东 @ 时间: 2025-07-21 09:50:02 @ 功能: 雷达图 */ func (c *ChartInfo) radarChart(val interface{}, untis []customerform.MasterStruct, chartType string) (snedMap interface{}) { for _, v := range c.XAxis { fmt.Printf("\n\nc.X ===1==> %v =====> %v\n\n", v.Type, v) switch v.Type { case 3: snedMap = c.RadarTimeDataAnaly(v, c.YAxis, val, chartType) default: snedMap = c.RadarDataAnaly(v, c.YAxis, val, chartType, untis) } } return } func (c *ChartInfo) RadarTimeDataAnaly(x XAxisInfo, y []YAxisInfo, val interface{}, chartType string) (charData RadarInfo) { tayTime := time.Now().Unix() searchTime := c.JieXiSearchTime() fmt.Printf("时间集---1-->%v\n\n", searchTime) switch x.TimeType { case "year": tayTimeing := int(time.Now().Year()) var timeList []string // for i := 0; i <= tayTimeing; i++ { timeList = append(timeList, fmt.Sprintf("%v", tayTimeing)) // } if len(searchTime) > 0 { timeList = searchTime } var jiSuanVal []RadarTimeInfo fmt.Printf("时间集----->%v\n\n", timeList) // for _, v := range y { // charData.Legend = append(charData.Legend, v.OldTitle) var newVal []map[string]interface{} for _, tv := range timeList { startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-01-01 00:00:00", tv)) endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-12-31 23:59:59", tv)) if yVal, isOk := val.([]map[string]interface{}); isOk { for _, mv := range yVal { if xVal, isOk := mv[x.Field]; isOk { var begTime int64 var eldTime int64 pageTime, _ := publicmethod.StringToInt64(xVal) if publicmethod.GetIntLength(pageTime) >= 13 { begTime = startTime * 1000 eldTime = endTime * 1000 } if begTime <= pageTime && pageTime <= eldTime { // fmt.Printf("维度--3---》%v---》%v---》%v\n\n", tv, begTime <= pageTime, pageTime <= eldTime) newVal = append(newVal, mv) } } } } var timeData RadarTimeInfo timeData.XName = tv timeData.DataVal = newVal jiSuanVal = append(jiSuanVal, timeData) // fmt.Printf("维度--1---》%v---》%v\n\n", tv, len(newVal)) } // jsonVal, _ := json.Marshal(jiSuanVal) // fmt.Printf("维度-----》%v\n\n", string(jsonVal)) charData.ParsingData(jiSuanVal, y) case "month": var timeList []string yearVal := publicmethod.UnixTimeToDay(tayTime, 16) tayTimeing := int(time.Now().Month()) for i := 1; i <= tayTimeing; i++ { timeList = append(timeList, fmt.Sprintf("%v-%v", yearVal, i)) } if len(searchTime) > 0 { timeList = searchTime } var jiSuanVal []RadarTimeInfo // for _, v := range y { // charData.Legend = append(charData.Legend, v.OldTitle) var newVal []map[string]interface{} for _, tv := range timeList { startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-01 00:00:00", tv)) nyAry := strings.Split(tv, "-") year, _ := strconv.Atoi(nyAry[0]) mon, _ := strconv.Atoi(nyAry[len(nyAry)-1]) endTime := publicmethod.GetDaysInMonth(year, mon) fmt.Printf("维度--1---》%v---》%v---》%v\n\n", startTime, mon, endTime) // endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v- 23:59:59", tv)) if yVal, isOk := val.([]map[string]interface{}); isOk { for _, mv := range yVal { if xVal, isOk := mv[x.Field]; isOk { var begTime int64 var eldTime int64 pageTime, _ := publicmethod.StringToInt64(xVal) if publicmethod.GetIntLength(pageTime) >= 13 { begTime = startTime * 1000 eldTime = endTime.AllTime * 1000 } if begTime <= pageTime && pageTime <= eldTime { // fmt.Printf("维度--3---》%v---》%v---》%v\n\n", tv, begTime <= pageTime, pageTime <= eldTime) newVal = append(newVal, mv) } } } } var timeData RadarTimeInfo timeData.XName = tv timeData.DataVal = newVal jiSuanVal = append(jiSuanVal, timeData) // fmt.Printf("维度--1---》%v---》%v\n\n", tv, len(newVal)) } // jsonVal, _ := json.Marshal(jiSuanVal) // fmt.Printf("维度-----》%v\n\n", string(jsonVal)) charData.ParsingData(jiSuanVal, y) // }y case "day": tayTimeing := int(time.Now().Day()) yearVal := publicmethod.UnixTimeToDay(tayTime, 15) var timeList []string for i := 1; i <= tayTimeing; i++ { timeList = append(timeList, fmt.Sprintf("%v-%v", yearVal, i)) } if len(searchTime) > 0 { timeList = searchTime } var jiSuanVal []RadarTimeInfo // for _, v := range y { // charData.Legend = append(charData.Legend, v.OldTitle) var newVal []map[string]interface{} for _, tv := range timeList { startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v 00:00:00", tv)) endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v 23:59:59", tv)) if yVal, isOk := val.([]map[string]interface{}); isOk { for _, mv := range yVal { if xVal, isOk := mv[x.Field]; isOk { var begTime int64 var eldTime int64 pageTime, _ := publicmethod.StringToInt64(xVal) if publicmethod.GetIntLength(pageTime) >= 13 { begTime = startTime * 1000 eldTime = endTime * 1000 } if begTime <= pageTime && pageTime <= eldTime { fmt.Printf("维度--3---》%v---》%v---》%v\n\n", tv, begTime <= pageTime, pageTime <= eldTime) newVal = append(newVal, mv) } } } } var timeData RadarTimeInfo timeData.XName = tv timeData.DataVal = newVal jiSuanVal = append(jiSuanVal, timeData) fmt.Printf("维度--1---》%v---》%v\n\n", tv, len(newVal)) } // jsonVal, _ := json.Marshal(jiSuanVal) // fmt.Printf("维度-----》%v\n\n", string(jsonVal)) charData.ParsingData(jiSuanVal, y) // }y // case "hour": // case "minute": // case "second": // case "ymdhms": default: yearVal := publicmethod.UnixTimeToDay(tayTime, 16) yearValInt, _ := strconv.Atoi(yearVal) tayTime := int(time.Now().Month()) var jiSuanVal []RadarTimeInfo for i := 1; i <= tayTime; i++ { createTime := fmt.Sprintf("%v-%v-01 00:00:00", yearVal, i) if i < 10 { createTime = fmt.Sprintf("%v-0%v-01 00:00:00", yearVal, i) } startTime := publicmethod.DateToTimeStampOld(createTime) endTime := publicmethod.GetDaysInMonth(yearValInt, i) var newVal []map[string]interface{} if yVal, isOk := val.([]map[string]interface{}); isOk { for _, mv := range yVal { if xVal, isOk := mv[x.Field]; isOk { pageTime, _ := publicmethod.StringToInt64(xVal) if publicmethod.GetIntLength(pageTime) >= 13 { startTime = startTime * 1000 endTime.AllTime = endTime.AllTime * 1000 } if startTime <= pageTime && pageTime <= endTime.AllTime { newVal = append(newVal, mv) } } } } var timeData RadarTimeInfo timeData.XName = fmt.Sprintf("%v年%v月", yearVal, i) timeData.DataVal = newVal jiSuanVal = append(jiSuanVal, timeData) } charData.ParsingData(jiSuanVal, y) } return } func (r *RadarInfo) ParsingNewData(timeVal []RadarTimeInfo, y YAxisInfo) { switch y.Method { case 2: r.AverageValueesTime(y, timeVal, y.Format) case 3: r.StatisticalQuantityesTime(y, timeVal, y.Format) case 4: r.RemoveDuplicateCountssTime(y, timeVal, y.Format) case 5: r.maxDataesTime(y, timeVal, y.Format) case 6: r.minDataesTime(y, timeVal, y.Format) default: r.sumDataesTime(y, timeVal, y.Format) } } /* * @ 作者: 秦东 @ 时间: 2025-07-23 11:33:29 @ 功能: 解析时间模式下的数据 */ func (r *RadarInfo) ParsingData(timeVal []RadarTimeInfo, y []YAxisInfo) { for _, v := range y { //量化指标 if !publicmethod.IsInTrue[string](v.OldTitle, r.Legend) { r.Legend = append(r.Legend, v.OldTitle) } switch v.Method { case 2: r.AverageValueesTime(v, timeVal, v.Format) case 3: r.StatisticalQuantityesTime(v, timeVal, v.Format) case 4: r.RemoveDuplicateCountssTime(v, timeVal, v.Format) case 5: r.maxDataesTime(v, timeVal, v.Format) case 6: r.minDataesTime(v, timeVal, v.Format) default: r.sumDataesTime(v, timeVal, v.Format) } } } // 平均值 func (r *RadarInfo) AverageValueesTime(y YAxisInfo, timeVal []RadarTimeInfo, format int) { var serData DataInfo serData.Name = y.OldTitle for _, v := range timeVal { var sumVal float64 jibuqi := 1 for _, tv := range v.DataVal { if vVal, isOk := tv[y.Field]; isOk { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(vVal), 64) if err == nil { sumVal = sumVal + minVal jibuqi++ } } } var jieguo interface{} if sumVal > 0 { sumValAvg := sumVal / float64(jibuqi) jieguo := publicmethod.DataChuli(sumValAvg, format) serData.Value = append(serData.Value, jieguo) } else { serData.Value = append(serData.Value, 0) } isWrite := true for ri, rv := range r.Indicator { if rv.Name == v.XName { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(rv.Max), 64) if err == nil { isWrite = false if minVal <= sumVal { r.Indicator[ri].Max = sumVal } } } } if isWrite { var newIndic IndicatorInfo newIndic.Name = publicmethod.TypeToInterface(v.XName) newIndic.Max = jieguo r.Indicator = append(r.Indicator, newIndic) } } r.DataList = append(r.DataList, serData) } // 计数 func (r *RadarInfo) StatisticalQuantityesTime(y YAxisInfo, timeVal []RadarTimeInfo, format int) { var serData DataInfo serData.Name = y.OldTitle for _, v := range timeVal { var sumVal []float64 for _, tv := range v.DataVal { if vVal, isOk := tv[y.Field]; isOk { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(vVal), 64) if err == nil { sumVal = append(sumVal, minVal) } } } jieguo := float64(len(sumVal)) serData.Value = append(serData.Value, jieguo) isWrite := true for ri, rv := range r.Indicator { if rv.Name == v.XName { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(rv.Max), 64) if err == nil { isWrite = false if minVal <= jieguo { r.Indicator[ri].Max = sumVal } } } } if isWrite { var newIndic IndicatorInfo newIndic.Name = publicmethod.TypeToInterface(v.XName) newIndic.Max = jieguo r.Indicator = append(r.Indicator, newIndic) } } r.DataList = append(r.DataList, serData) } // 去重计数 func (r *RadarInfo) RemoveDuplicateCountssTime(y YAxisInfo, timeVal []RadarTimeInfo, format int) { var serData DataInfo serData.Name = y.OldTitle for _, v := range timeVal { var sumVal []float64 for _, tv := range v.DataVal { if vVal, isOk := tv[y.Field]; isOk { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(vVal), 64) if err == nil { if !publicmethod.IsInTrue[float64](minVal, sumVal) { sumVal = append(sumVal, minVal) } } } } jieguo := float64(len(sumVal)) serData.Value = append(serData.Value, jieguo) isWrite := true for ri, rv := range r.Indicator { if rv.Name == v.XName { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(rv.Max), 64) if err == nil { isWrite = false if minVal <= jieguo { r.Indicator[ri].Max = sumVal } } } } if isWrite { var newIndic IndicatorInfo newIndic.Name = publicmethod.TypeToInterface(v.XName) newIndic.Max = jieguo r.Indicator = append(r.Indicator, newIndic) } } r.DataList = append(r.DataList, serData) } // 最大值 func (r *RadarInfo) maxDataesTime(y YAxisInfo, timeVal []RadarTimeInfo, format int) { var serData DataInfo serData.Name = y.OldTitle for _, v := range timeVal { var sumVal float64 for _, tv := range v.DataVal { if vVal, isOk := tv[y.Field]; isOk { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(vVal), 64) if err == nil { if sumVal <= minVal { sumVal = minVal } } } } jieguo := publicmethod.DataChuli(sumVal, format) serData.Value = append(serData.Value, jieguo) isWrite := true for ri, rv := range r.Indicator { if rv.Name == v.XName { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(rv.Max), 64) if err == nil { isWrite = false if minVal <= sumVal { r.Indicator[ri].Max = sumVal } } } } if isWrite { var newIndic IndicatorInfo newIndic.Name = publicmethod.TypeToInterface(v.XName) newIndic.Max = jieguo r.Indicator = append(r.Indicator, newIndic) } } r.DataList = append(r.DataList, serData) } // 最小值 func (r *RadarInfo) minDataesTime(y YAxisInfo, timeVal []RadarTimeInfo, format int) { var serData DataInfo serData.Name = y.OldTitle for _, v := range timeVal { var sumVal float64 for _, tv := range v.DataVal { if vVal, isOk := tv[y.Field]; isOk { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(vVal), 64) if err == nil { if sumVal >= minVal { sumVal = minVal } } } } jieguo := publicmethod.DataChuli(sumVal, format) serData.Value = append(serData.Value, jieguo) isWrite := true for ri, rv := range r.Indicator { if rv.Name == v.XName { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(rv.Max), 64) if err == nil { isWrite = false if minVal <= sumVal { r.Indicator[ri].Max = sumVal } } } } if isWrite { var newIndic IndicatorInfo newIndic.Name = publicmethod.TypeToInterface(v.XName) newIndic.Max = jieguo r.Indicator = append(r.Indicator, newIndic) } } r.DataList = append(r.DataList, serData) } // 求和 func (r *RadarInfo) sumDataesTime(y YAxisInfo, timeVal []RadarTimeInfo, format int) { var serData DataInfo serData.Name = y.OldTitle for _, v := range timeVal { var sumVal float64 for _, tv := range v.DataVal { if vVal, isOk := tv[y.Field]; isOk { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(vVal), 64) if err == nil { sumVal = sumVal + minVal } } } jieguo := publicmethod.DataChuli(sumVal, format) serData.Value = append(serData.Value, jieguo) isWrite := true for ri, rv := range r.Indicator { if rv.Name == v.XName { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(rv.Max), 64) if err == nil { isWrite = false if minVal <= sumVal { r.Indicator[ri].Max = sumVal + TianJiaCanshu(sumVal) } } } } if isWrite { var newIndic IndicatorInfo newIndic.Name = publicmethod.TypeToInterface(v.XName) newIndic.Max = jieguo r.Indicator = append(r.Indicator, newIndic) } } r.DataList = append(r.DataList, serData) } func TianJiaCanshu(val float64) float64 { if val > 100000 { return 100000 } else if val > 10000 { return 10000 } else if val > 1000 { return 1000 } else if val > 100 { return 100 } else { return 10 } return 0 } // 普通字段 func (c *ChartInfo) RadarDataAnaly(x XAxisInfo, y []YAxisInfo, val interface{}, chartType string, untis []customerform.MasterStruct) (charData RadarInfo) { var timeList []string //根据维度分组 if yVal, isOk := val.([]map[string]interface{}); isOk { for _, mv := range yVal { if xVal, isOk := mv[x.Field]; isOk { // fmt.Printf("人员--->%v\n\n", xVal) pageTime := publicmethod.TypeToInterface(xVal) if !publicmethod.IsInTrue[string](pageTime, timeList) { timeList = append(timeList, pageTime) } } } } //纬度信息 var weiDu []PicChartInfo for _, v := range timeList { pickName := DimensionToChinaName(x.Field, v, untis) // charData.AnalyRadarData(x.Field, v, y, pickName, val) var weiduInfo PicChartInfo weiduInfo.Name = v weiduInfo.Value = pickName weiDu = append(weiDu, weiduInfo) } charData.AnalyRadarData(x.Field, weiDu, y, val) return } /* * @ 作者: 秦东 @ 时间: 2025-07-22 11:22:34 @ 功能: 解析雷达数据 #xField x轴设定 w # y Y轴设定 # val 查询到的值 #chartType 图标类型 1:求和;2:平均值;3:计数;4:去重计数;5:最大值;6:最小值 当字段为时间类型时. 1:自动(原始值);2:整数;3:保留1位小数;4:保留2位小数;5:百分比;6:百分比1位小数;7:百分比2位小数; */ func (b *RadarInfo) AnalyRadarData(xField string, x []PicChartInfo, y []YAxisInfo, val interface{}) { for _, v := range y { b.Legend = append(b.Legend, v.OldTitle) switch v.Method { case 2: b.AverageValuees(v, xField, x, val, v.Format) case 3: b.StatisticalQuantityes(v, xField, x, val, v.Format) case 4: b.RemoveDuplicateCountss(v, xField, x, val, v.Format) case 5: b.maxDataes(v, xField, x, val, v.Format) case 6: b.minDataes(v, xField, x, val, v.Format) default: b.sumDataes(v, xField, x, val, v.Format) } } } // 平均值 func (b *RadarInfo) AverageValuees(y YAxisInfo, xField string, x []PicChartInfo, val interface{}, format int) { var serData DataInfo serData.Name = y.OldTitle for _, v := range x { if yVal, isOk := val.([]map[string]interface{}); isOk { var sumVal float64 jibuqi := 1 for _, mv := range yVal { if xVal, isOk := mv[xField]; isOk { xValStr := publicmethod.TypeToInterface(xVal) if xValStr == v.Name { if yval, isOk := mv[y.Field]; isOk { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yval), 64) if err == nil { sumVal = sumVal + minVal jibuqi++ } } } } } if jibuqi > 0 { sumValAvg := sumVal / float64(jibuqi) jieguo := publicmethod.DataChuli(sumValAvg, format) serData.Value = append(serData.Value, jieguo) b.WeiDuMaxVal(v.Value, jieguo) } else { jieguo := 0 serData.Value = append(serData.Value, jieguo) b.WeiDuMaxVal(v.Value, jieguo) } } else { b.WeiDuMaxVal(v.Value, 0) } } b.DataList = append(b.DataList, serData) } // 计数 func (b *RadarInfo) StatisticalQuantityes(y YAxisInfo, xField string, x []PicChartInfo, val interface{}, format int) { var serData DataInfo serData.Name = y.OldTitle for _, v := range x { if yVal, isOk := val.([]map[string]interface{}); isOk { var sumVal []float64 for _, mv := range yVal { if xVal, isOk := mv[xField]; isOk { xValStr := publicmethod.TypeToInterface(xVal) if xValStr == v.Name { if yval, isOk := mv[y.Field]; isOk { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yval), 64) if err == nil { sumVal = append(sumVal, minVal) } } } } } jieguo := len(sumVal) serData.Value = append(serData.Value, jieguo) b.WeiDuMaxVal(v.Value, jieguo) } else { b.WeiDuMaxVal(v.Value, 0) } } b.DataList = append(b.DataList, serData) } // 去重计数 func (b *RadarInfo) RemoveDuplicateCountss(y YAxisInfo, xField string, x []PicChartInfo, val interface{}, format int) { var serData DataInfo serData.Name = y.OldTitle for _, v := range x { if yVal, isOk := val.([]map[string]interface{}); isOk { var sumVal []float64 for _, mv := range yVal { if xVal, isOk := mv[xField]; isOk { xValStr := publicmethod.TypeToInterface(xVal) if xValStr == v.Name { if yval, isOk := mv[y.Field]; isOk { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yval), 64) if err == nil { if !publicmethod.IsInTrue[float64](minVal, sumVal) { sumVal = append(sumVal, minVal) } } } } } } jieguo := len(sumVal) serData.Value = append(serData.Value, jieguo) b.WeiDuMaxVal(v.Value, jieguo) } else { b.WeiDuMaxVal(v.Value, 0) } } b.DataList = append(b.DataList, serData) } // 最大值 func (b *RadarInfo) maxDataes(y YAxisInfo, xField string, x []PicChartInfo, val interface{}, format int) { var serData DataInfo serData.Name = y.OldTitle for _, v := range x { if yVal, isOk := val.([]map[string]interface{}); isOk { var sumVal float64 = 0 for _, mv := range yVal { if xVal, isOk := mv[xField]; isOk { xValStr := publicmethod.TypeToInterface(xVal) if xValStr == v.Name { if yval, isOk := mv[y.Field]; isOk { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yval), 64) if err == nil { if sumVal <= minVal { sumVal = minVal } } } } } } jieguo := publicmethod.DataChuli(sumVal, format) serData.Value = append(serData.Value, jieguo) b.WeiDuMaxVal(v.Value, jieguo) } else { b.WeiDuMaxVal(v.Value, 0) } } b.DataList = append(b.DataList, serData) } // 最小值 func (b *RadarInfo) minDataes(y YAxisInfo, xField string, x []PicChartInfo, val interface{}, format int) { var serData DataInfo serData.Name = y.OldTitle for _, v := range x { if yVal, isOk := val.([]map[string]interface{}); isOk { var sumVal float64 = 0 for _, mv := range yVal { if xVal, isOk := mv[xField]; isOk { xValStr := publicmethod.TypeToInterface(xVal) if xValStr == v.Name { if yval, isOk := mv[y.Field]; isOk { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yval), 64) if err == nil { if sumVal >= minVal { sumVal = minVal } } } } } } jieguo := publicmethod.DataChuli(sumVal, format) serData.Value = append(serData.Value, jieguo) b.WeiDuMaxVal(v.Value, jieguo) } else { b.WeiDuMaxVal(v.Value, 0) } } b.DataList = append(b.DataList, serData) } // 求和 func (b *RadarInfo) sumDataes(y YAxisInfo, xField string, x []PicChartInfo, val interface{}, format int) { var serData DataInfo serData.Name = y.OldTitle for _, v := range x { if yVal, isOk := val.([]map[string]interface{}); isOk { var sumVal float64 for _, mv := range yVal { if xVal, isOk := mv[xField]; isOk { xValStr := publicmethod.TypeToInterface(xVal) if xValStr == v.Name { if yval, isOk := mv[y.Field]; isOk { minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yval), 64) if err == nil { sumVal = sumVal + minVal } } } } } jieguo := publicmethod.DataChuli(sumVal, format) serData.Value = append(serData.Value, jieguo) b.WeiDuMaxVal(v.Value, jieguo) } else { b.WeiDuMaxVal(v.Value, 0) } } // if yVal, isOk := val.([]map[string]interface{}); isOk { // for _, xv := range yVal { // var sumVal float64 // for _, v := range x { // if vVal, isOk := xv[xField]; isOk { // if v.Name == publicmethod.TypeToInterface(vVal) { // if yVal, isOk := xv[y.Field]; isOk { // minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64) // if err == nil { // sumVal = sumVal + minVal // } // } // } // } // } // serData.Value = append(serData.Value, sumVal) // } // } else { // for i := 0; i < len(x); i++ { // serData.Value = append(serData.Value, 0) // } // } b.DataList = append(b.DataList, serData) } // 组装纬度最大值 func (b *RadarInfo) WeiDuMaxVal(name, val interface{}) { isNew := true for i, v := range b.Indicator { if v.Name == name { isNew = false valFloat, _ := strconv.ParseFloat(publicmethod.TypeToInterface(val), 64) indFloat, _ := strconv.ParseFloat(publicmethod.TypeToInterface(v.Max), 64) if valFloat >= indFloat { b.Indicator[i].Max = valFloat + 10 } } } if isNew { var newIndic IndicatorInfo newIndic.Name = publicmethod.TypeToInterface(name) newIndic.Max = val b.Indicator = append(b.Indicator, newIndic) } }