应用集成平台服务端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

834 lines
23 KiB

package customChartesing
4 months ago
import (
"appPlatform/api/version1/customerform"
"appPlatform/overall/publicmethod"
"fmt"
"strconv"
4 months ago
"strings"
4 months ago
"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()
4 months ago
searchTime := c.JieXiSearchTime()
fmt.Printf("时间集---1-->%v\n\n", searchTime)
4 months ago
switch x.TimeType {
case "year":
4 months ago
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
4 months ago
case "day":
4 months ago
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":
4 months ago
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
}
4 months ago
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)
}
}
4 months ago
/*
*
@ 作者: 秦东
@ 时间: 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 {
4 months ago
r.Indicator[ri].Max = sumVal + TianJiaCanshu(sumVal)
4 months ago
}
}
}
}
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)
}
4 months ago
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
}
4 months ago
// 普通字段
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)
}
}