|
|
@ -5,6 +5,7 @@ import ( |
|
|
"appPlatform/overall/publicmethod" |
|
|
"appPlatform/overall/publicmethod" |
|
|
"fmt" |
|
|
"fmt" |
|
|
"strconv" |
|
|
"strconv" |
|
|
|
|
|
"strings" |
|
|
"time" |
|
|
"time" |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
@ -29,13 +30,151 @@ func (c *ChartInfo) radarChart(val interface{}, untis []customerform.MasterStruc |
|
|
} |
|
|
} |
|
|
func (c *ChartInfo) RadarTimeDataAnaly(x XAxisInfo, y []YAxisInfo, val interface{}, chartType string) (charData RadarInfo) { |
|
|
func (c *ChartInfo) RadarTimeDataAnaly(x XAxisInfo, y []YAxisInfo, val interface{}, chartType string) (charData RadarInfo) { |
|
|
tayTime := time.Now().Unix() |
|
|
tayTime := time.Now().Unix() |
|
|
|
|
|
searchTime := c.JieXiSearchTime() |
|
|
|
|
|
fmt.Printf("时间集---1-->%v\n\n", searchTime) |
|
|
switch x.TimeType { |
|
|
switch x.TimeType { |
|
|
case "year": |
|
|
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": |
|
|
case "day": |
|
|
case "hour": |
|
|
tayTimeing := int(time.Now().Day()) |
|
|
case "minute": |
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 15) |
|
|
case "second": |
|
|
var timeList []string |
|
|
case "ymdhms": |
|
|
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: |
|
|
default: |
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 16) |
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 16) |
|
|
yearValInt, _ := strconv.Atoi(yearVal) |
|
|
yearValInt, _ := strconv.Atoi(yearVal) |
|
|
@ -73,6 +212,23 @@ func (c *ChartInfo) RadarTimeDataAnaly(x XAxisInfo, y []YAxisInfo, val interface |
|
|
return |
|
|
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) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/* |
|
|
/* |
|
|
* |
|
|
* |
|
|
@ 作者: 秦东 |
|
|
@ 作者: 秦东 |
|
|
@ -334,7 +490,8 @@ func (r *RadarInfo) sumDataesTime(y YAxisInfo, timeVal []RadarTimeInfo, format i |
|
|
if err == nil { |
|
|
if err == nil { |
|
|
isWrite = false |
|
|
isWrite = false |
|
|
if minVal <= sumVal { |
|
|
if minVal <= sumVal { |
|
|
r.Indicator[ri].Max = sumVal |
|
|
|
|
|
|
|
|
r.Indicator[ri].Max = sumVal + TianJiaCanshu(sumVal) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@ -349,6 +506,21 @@ func (r *RadarInfo) sumDataesTime(y YAxisInfo, timeVal []RadarTimeInfo, format i |
|
|
r.DataList = append(r.DataList, serData) |
|
|
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) { |
|
|
func (c *ChartInfo) RadarDataAnaly(x XAxisInfo, y []YAxisInfo, val interface{}, chartType string, untis []customerform.MasterStruct) (charData RadarInfo) { |
|
|
var timeList []string //根据维度分组
|
|
|
var timeList []string //根据维度分组
|
|
|
|