|
|
|
|
package customChartesing
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"appPlatform/api/version1/customerform"
|
|
|
|
|
"appPlatform/overall/publicmethod"
|
|
|
|
|
"fmt"
|
|
|
|
|
"strconv"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
@ 作者: 秦东
|
|
|
|
|
@ 时间: 2025-07-17 09:18:12
|
|
|
|
|
@ 功能: 柱状图结果解析
|
|
|
|
|
*/
|
|
|
|
|
func (c *ChartInfo) zhuChart(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.TimeDataAnaly(v, c.YAxis, val, chartType)
|
|
|
|
|
default:
|
|
|
|
|
snedMap = c.DataAnaly(v, c.YAxis, val, chartType, untis)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 时间字段
|
|
|
|
|
func (c *ChartInfo) TimeDataAnaly(x XAxisInfo, y []YAxisInfo, val interface{}, chartType string) (charData BarDataInfo) {
|
|
|
|
|
tayTime := time.Now().Unix()
|
|
|
|
|
charData.XAxis.Types = "category"
|
|
|
|
|
charData.YAxis.Types = "value"
|
|
|
|
|
|
|
|
|
|
searchTime := c.JieXiSearchTime()
|
|
|
|
|
|
|
|
|
|
fmt.Printf("时间字段--->%v\n\n", x.TimeType)
|
|
|
|
|
|
|
|
|
|
switch x.TimeType {
|
|
|
|
|
case "year":
|
|
|
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 16)
|
|
|
|
|
if len(searchTime) > 0 {
|
|
|
|
|
charData.XAxis.Data = searchTime
|
|
|
|
|
} else {
|
|
|
|
|
charData.XAxis.Data = []string{yearVal}
|
|
|
|
|
}
|
|
|
|
|
charData.CalculateNumericalValues(y, val, x.Field, chartType, "all", 12, charData.XAxis.Data)
|
|
|
|
|
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 {
|
|
|
|
|
charData.XAxis.Data = searchTime
|
|
|
|
|
} else {
|
|
|
|
|
charData.XAxis.Data = timeList
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
charData.CalculateNumericalValues(y, val, x.Field, chartType, "month", tayTimeing, charData.XAxis.Data)
|
|
|
|
|
case "day":
|
|
|
|
|
tayTimeing := int(time.Now().Day())
|
|
|
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 15)
|
|
|
|
|
fmt.Printf("时间字段-1-->%v\n\n", tayTimeing)
|
|
|
|
|
var timeList []string
|
|
|
|
|
for i := 1; i <= tayTimeing; i++ {
|
|
|
|
|
timeList = append(timeList, fmt.Sprintf("%v-%v", yearVal, i))
|
|
|
|
|
}
|
|
|
|
|
fmt.Printf("时间字段-1-->%v-->%v\n\n", len(searchTime), searchTime)
|
|
|
|
|
if len(searchTime) > 0 {
|
|
|
|
|
charData.XAxis.Data = searchTime
|
|
|
|
|
} else {
|
|
|
|
|
charData.XAxis.Data = timeList
|
|
|
|
|
}
|
|
|
|
|
charData.NewCalculateNumericalValues(y, val, x.Field, chartType, "day", tayTimeing, charData.XAxis.Data)
|
|
|
|
|
|
|
|
|
|
case "hour":
|
|
|
|
|
var timeList []string
|
|
|
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 7)
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 14)
|
|
|
|
|
hourInt, _ := strconv.Atoi(yearVal)
|
|
|
|
|
for i := 1; i <= hourInt; i++ {
|
|
|
|
|
timeList = append(timeList, fmt.Sprintf("%v %v", ymd, i))
|
|
|
|
|
}
|
|
|
|
|
if len(searchTime) > 0 {
|
|
|
|
|
charData.XAxis.Data = searchTime
|
|
|
|
|
} else {
|
|
|
|
|
charData.XAxis.Data = timeList
|
|
|
|
|
}
|
|
|
|
|
charData.CalculateNumericalValues(y, val, x.Field, chartType, "hour", hourInt, charData.XAxis.Data)
|
|
|
|
|
case "minute":
|
|
|
|
|
var timeList []string
|
|
|
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 9)
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 13)
|
|
|
|
|
hourInt, _ := strconv.Atoi(yearVal)
|
|
|
|
|
for i := 1; i <= hourInt; i++ {
|
|
|
|
|
timeList = append(timeList, fmt.Sprintf("%v %v", ymd, i))
|
|
|
|
|
}
|
|
|
|
|
if len(searchTime) > 0 {
|
|
|
|
|
charData.XAxis.Data = searchTime
|
|
|
|
|
} else {
|
|
|
|
|
charData.XAxis.Data = timeList
|
|
|
|
|
}
|
|
|
|
|
charData.CalculateNumericalValues(y, val, x.Field, chartType, "minute", hourInt, charData.XAxis.Data)
|
|
|
|
|
case "second":
|
|
|
|
|
var timeList []string
|
|
|
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 10)
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 12)
|
|
|
|
|
hourInt, _ := strconv.Atoi(yearVal)
|
|
|
|
|
for i := 1; i <= hourInt; i++ {
|
|
|
|
|
timeList = append(timeList, fmt.Sprintf("%v %v", ymd, i))
|
|
|
|
|
}
|
|
|
|
|
if len(searchTime) > 0 {
|
|
|
|
|
charData.XAxis.Data = searchTime
|
|
|
|
|
} else {
|
|
|
|
|
charData.XAxis.Data = timeList
|
|
|
|
|
}
|
|
|
|
|
charData.CalculateNumericalValues(y, val, x.Field, chartType, "second", hourInt, charData.XAxis.Data)
|
|
|
|
|
default:
|
|
|
|
|
var timeList []string
|
|
|
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 15)
|
|
|
|
|
tayTime := int(time.Now().Month())
|
|
|
|
|
for i := 1; i <= tayTime; i++ {
|
|
|
|
|
timeList = append(timeList, fmt.Sprintf("%v-%v", yearVal, i))
|
|
|
|
|
}
|
|
|
|
|
if len(searchTime) > 0 {
|
|
|
|
|
charData.XAxis.Data = searchTime
|
|
|
|
|
} else {
|
|
|
|
|
charData.XAxis.Data = timeList
|
|
|
|
|
}
|
|
|
|
|
charData.CalculateNumericalValues(y, val, x.Field, chartType, "month", tayTime, charData.XAxis.Data)
|
|
|
|
|
}
|
|
|
|
|
// xAxis := c.JieXiSearchTime()
|
|
|
|
|
// if len(xAxis) > 0 {
|
|
|
|
|
// charData.XAxis.Data = xAxis
|
|
|
|
|
// }
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 计算数值
|
|
|
|
|
// 1:求和;2:平均值;3:计数;4:去重计数;5:最大值;6:最小值
|
|
|
|
|
// 当字段为时间类型时. 1:自动(原始值);2:整数;3:保留1位小数;4:保留2位小数;5:百分比;6:百分比1位小数;7:百分比2位小数;
|
|
|
|
|
func (b *BarDataInfo) NewCalculateNumericalValues(y []YAxisInfo, val interface{}, xField, chartType string, types string, lenght int, timeAry []string) {
|
|
|
|
|
|
|
|
|
|
for _, v := range y {
|
|
|
|
|
// if i == 0 {
|
|
|
|
|
var seriesInfo SeriesList
|
|
|
|
|
seriesInfo.Name = v.OldTitle
|
|
|
|
|
seriesInfo.Types = chartType
|
|
|
|
|
switch v.Method {
|
|
|
|
|
case 2:
|
|
|
|
|
seriesInfo.NewAverageValue(xField, v.Field, types, val, v.Format, timeAry)
|
|
|
|
|
case 3:
|
|
|
|
|
seriesInfo.NewStatisticalQuantity(xField, v.Field, types, val, v.Format, timeAry)
|
|
|
|
|
case 4:
|
|
|
|
|
seriesInfo.NewRemoveDuplicateCounts(xField, v.Field, types, val, v.Format, timeAry)
|
|
|
|
|
case 5:
|
|
|
|
|
seriesInfo.NewmaxData(xField, v.Field, types, val, v.Format, timeAry)
|
|
|
|
|
case 6:
|
|
|
|
|
seriesInfo.NewminData(xField, v.Field, types, val, v.Format, timeAry)
|
|
|
|
|
default:
|
|
|
|
|
seriesInfo.NewsumData(xField, v.Field, types, val, v.Format, timeAry)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if !publicmethod.IsInTrue[string](v.OldTitle, b.Legend.Data) {
|
|
|
|
|
b.Legend.Data = append(b.Legend.Data, v.OldTitle)
|
|
|
|
|
}
|
|
|
|
|
// if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
// for mi, mv := range yVal {
|
|
|
|
|
// fmt.Printf("\n\nyVal =====> %v =====> %v\n\n", mi, mv)
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
b.Series = append(b.Series, seriesInfo)
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
@ 作者: 秦东
|
|
|
|
|
@ 时间: 2025-07-25 14:51:33
|
|
|
|
|
@ 功能:
|
|
|
|
|
|
|
|
|
|
#xField X轴信息
|
|
|
|
|
#yField Y轴信息
|
|
|
|
|
#types 时间信息
|
|
|
|
|
#format 值约束
|
|
|
|
|
#timeAry 时间数组
|
|
|
|
|
*/
|
|
|
|
|
func (s *SeriesList) NewAverageValue(xField, yField, types string, val interface{}, format int, timeAry []string) {
|
|
|
|
|
var monthAry []interface{}
|
|
|
|
|
for _, v := range timeAry {
|
|
|
|
|
switch types {
|
|
|
|
|
case "year":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-01-01 00:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-12-31 23:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuPingjunSumData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "month":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-01 00:00:00", v))
|
|
|
|
|
yearValInt, _ := strconv.Atoi(publicmethod.UnixTimeToDay(startTime, 16))
|
|
|
|
|
monthValInt, _ := strconv.Atoi(publicmethod.UnixTimeToDay(startTime, 17))
|
|
|
|
|
endTime := publicmethod.GetDaysInMonth(yearValInt, monthValInt)
|
|
|
|
|
monthAry = append(monthAry, s.QuPingjunSumData(startTime, endTime.AllTime, val, xField, yField, format))
|
|
|
|
|
case "day":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v 00:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v 23:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuPingjunSumData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "hour":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuPingjunSumData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "minute":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuPingjunSumData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "second":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuPingjunSumData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
default:
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = monthAry
|
|
|
|
|
}
|
|
|
|
|
func (s *SeriesList) QuPingjunSumData(startTime, endTime int64, val interface{}, xField, yField string, format int) (jieguo interface{}) {
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
var sumVal float64
|
|
|
|
|
jibuqi := 0
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
var begTime int64
|
|
|
|
|
var eldTime int64
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
begTime = startTime * 1000
|
|
|
|
|
eldTime = endTime * 1000
|
|
|
|
|
} else {
|
|
|
|
|
begTime = startTime
|
|
|
|
|
eldTime = startTime
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("时间数组:\n\n%v==2====1==2=====>%v==2=====>%v\n\n", begTime, eldTime, pageTime)
|
|
|
|
|
// fmt.Printf("技术只:\n\n%v======3=======>%v\n\n", begTime <= pageTime, pageTime <= endTime)
|
|
|
|
|
if begTime <= pageTime && pageTime <= eldTime {
|
|
|
|
|
// fmt.Printf("技术只:\n\n%v======1=======>%v\n\n", yField, pageTime)
|
|
|
|
|
if yzVal, isOk := mv[yField]; isOk {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yzVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
jibuqi++
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("时间数组:\n\n%v======1=======>%v\n\n", yField, pageTime)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("时间数组:\n\n%v======1=======>%v======1=======>%v======1=======>%v\n\n", publicmethod.UnixTimeToDay(startTime, 14), xField, yField, sumVal)
|
|
|
|
|
// jieguo = publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
if jibuqi > 0 {
|
|
|
|
|
avgVal := sumVal / float64(jibuqi)
|
|
|
|
|
jieguo = publicmethod.DataChuli(avgVal, format)
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
jieguo = publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
// var sumVal float64
|
|
|
|
|
// jibuqi := 0
|
|
|
|
|
// for _, mv := range yVal {
|
|
|
|
|
// if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
// if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
// pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
// if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
// startTime = startTime * 1000
|
|
|
|
|
// endTime = endTime * 1000
|
|
|
|
|
// }
|
|
|
|
|
// if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
// minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
// if err == nil {
|
|
|
|
|
// sumVal = sumVal + minVal
|
|
|
|
|
// jibuqi++
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// if jibuqi > 0 {
|
|
|
|
|
// avgVal := sumVal / float64(jibuqi)
|
|
|
|
|
// jieguo = publicmethod.DataChuli(avgVal, format)
|
|
|
|
|
|
|
|
|
|
// } else {
|
|
|
|
|
// jieguo = publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
@ 作者: 秦东
|
|
|
|
|
@ 时间: 2025-07-25 14:51:33
|
|
|
|
|
@ 功能:
|
|
|
|
|
|
|
|
|
|
#xField X轴信息
|
|
|
|
|
#yField Y轴信息
|
|
|
|
|
#types 时间信息
|
|
|
|
|
#format 值约束
|
|
|
|
|
#timeAry 时间数组
|
|
|
|
|
*/
|
|
|
|
|
func (s *SeriesList) NewStatisticalQuantity(xField, yField, types string, val interface{}, format int, timeAry []string) {
|
|
|
|
|
var monthAry []interface{}
|
|
|
|
|
for _, v := range timeAry {
|
|
|
|
|
switch types {
|
|
|
|
|
case "year":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-01-01 00:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-12-31 23:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuJishuData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "month":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-01 00:00:00", v))
|
|
|
|
|
yearValInt, _ := strconv.Atoi(publicmethod.UnixTimeToDay(startTime, 16))
|
|
|
|
|
monthValInt, _ := strconv.Atoi(publicmethod.UnixTimeToDay(startTime, 17))
|
|
|
|
|
endTime := publicmethod.GetDaysInMonth(yearValInt, monthValInt)
|
|
|
|
|
monthAry = append(monthAry, s.QuJishuData(startTime, endTime.AllTime, val, xField, yField, format))
|
|
|
|
|
case "day":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v 00:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v 23:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuJishuData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "hour":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuJishuData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "minute":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuJishuData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "second":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuJishuData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
default:
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = monthAry
|
|
|
|
|
}
|
|
|
|
|
func (s *SeriesList) QuJishuData(startTime, endTime int64, val interface{}, xField, yField string, format int) (jieguo interface{}) {
|
|
|
|
|
// if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
// var valAry []float64
|
|
|
|
|
// for _, mv := range yVal {
|
|
|
|
|
// if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
// if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
// pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
// if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
// startTime = startTime * 1000
|
|
|
|
|
// endTime = endTime * 1000
|
|
|
|
|
// }
|
|
|
|
|
// if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
// minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
// if err == nil {
|
|
|
|
|
|
|
|
|
|
// valAry = append(valAry, minVal)
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// jieguo = len(valAry)
|
|
|
|
|
// }
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
var valAry []float64
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
var begTime int64
|
|
|
|
|
var eldTime int64
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
begTime = startTime * 1000
|
|
|
|
|
eldTime = endTime * 1000
|
|
|
|
|
} else {
|
|
|
|
|
begTime = startTime
|
|
|
|
|
eldTime = startTime
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("时间数组:\n\n%v==2====1==2=====>%v==2=====>%v\n\n", begTime, eldTime, pageTime)
|
|
|
|
|
// fmt.Printf("技术只:\n\n%v======3=======>%v\n\n", begTime <= pageTime, pageTime <= endTime)
|
|
|
|
|
if begTime <= pageTime && pageTime <= eldTime {
|
|
|
|
|
// fmt.Printf("技术只:\n\n%v======1=======>%v\n\n", yField, pageTime)
|
|
|
|
|
if yzVal, isOk := mv[yField]; isOk {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yzVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
valAry = append(valAry, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("时间数组:\n\n%v======1=======>%v\n\n", yField, pageTime)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo = len(valAry)
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
@ 作者: 秦东
|
|
|
|
|
@ 时间: 2025-07-25 14:51:33
|
|
|
|
|
@ 功能:
|
|
|
|
|
|
|
|
|
|
#xField X轴信息
|
|
|
|
|
#yField Y轴信息
|
|
|
|
|
#types 时间信息
|
|
|
|
|
#format 值约束
|
|
|
|
|
#timeAry 时间数组
|
|
|
|
|
*/
|
|
|
|
|
func (s *SeriesList) NewRemoveDuplicateCounts(xField, yField, types string, val interface{}, format int, timeAry []string) {
|
|
|
|
|
var monthAry []interface{}
|
|
|
|
|
for _, v := range timeAry {
|
|
|
|
|
switch types {
|
|
|
|
|
case "year":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-01-01 00:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-12-31 23:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuChongData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "month":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-01 00:00:00", v))
|
|
|
|
|
yearValInt, _ := strconv.Atoi(publicmethod.UnixTimeToDay(startTime, 16))
|
|
|
|
|
monthValInt, _ := strconv.Atoi(publicmethod.UnixTimeToDay(startTime, 17))
|
|
|
|
|
endTime := publicmethod.GetDaysInMonth(yearValInt, monthValInt)
|
|
|
|
|
monthAry = append(monthAry, s.QuChongData(startTime, endTime.AllTime, val, xField, yField, format))
|
|
|
|
|
case "day":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v 00:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v 23:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuChongData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "hour":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuChongData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "minute":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuChongData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "second":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuChongData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
default:
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = monthAry
|
|
|
|
|
}
|
|
|
|
|
func (s *SeriesList) QuChongData(startTime, endTime int64, val interface{}, xField, yField string, format int) (jieguo interface{}) {
|
|
|
|
|
// if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
// var valAry []float64
|
|
|
|
|
// for _, mv := range yVal {
|
|
|
|
|
// if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
// if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
// pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
// if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
// startTime = startTime * 1000
|
|
|
|
|
// endTime = endTime * 1000
|
|
|
|
|
// }
|
|
|
|
|
// if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
// minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
// if err == nil {
|
|
|
|
|
// if !publicmethod.IsInTrue[float64](minVal, valAry) {
|
|
|
|
|
// valAry = append(valAry, minVal)
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// jieguo = len(valAry)
|
|
|
|
|
// }
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
var valAry []float64
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
var begTime int64
|
|
|
|
|
var eldTime int64
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
begTime = startTime * 1000
|
|
|
|
|
eldTime = endTime * 1000
|
|
|
|
|
} else {
|
|
|
|
|
begTime = startTime
|
|
|
|
|
eldTime = startTime
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("时间数组:\n\n%v==2====1==2=====>%v==2=====>%v\n\n", begTime, eldTime, pageTime)
|
|
|
|
|
// fmt.Printf("技术只:\n\n%v======3=======>%v\n\n", begTime <= pageTime, pageTime <= endTime)
|
|
|
|
|
if begTime <= pageTime && pageTime <= eldTime {
|
|
|
|
|
// fmt.Printf("技术只:\n\n%v======1=======>%v\n\n", yField, pageTime)
|
|
|
|
|
if yzVal, isOk := mv[yField]; isOk {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yzVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if !publicmethod.IsInTrue[float64](minVal, valAry) {
|
|
|
|
|
valAry = append(valAry, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("时间数组:\n\n%v======1=======>%v\n\n", yField, pageTime)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo = len(valAry)
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
@ 作者: 秦东
|
|
|
|
|
@ 时间: 2025-07-25 14:51:33
|
|
|
|
|
@ 功能:
|
|
|
|
|
|
|
|
|
|
#xField X轴信息
|
|
|
|
|
#yField Y轴信息
|
|
|
|
|
#types 时间信息
|
|
|
|
|
#format 值约束
|
|
|
|
|
#timeAry 时间数组
|
|
|
|
|
*/
|
|
|
|
|
func (s *SeriesList) NewmaxData(xField, yField, types string, val interface{}, format int, timeAry []string) {
|
|
|
|
|
var monthAry []interface{}
|
|
|
|
|
for _, v := range timeAry {
|
|
|
|
|
switch types {
|
|
|
|
|
case "year":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-01-01 00:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-12-31 23:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuMaxData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "month":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-01 00:00:00", v))
|
|
|
|
|
yearValInt, _ := strconv.Atoi(publicmethod.UnixTimeToDay(startTime, 16))
|
|
|
|
|
monthValInt, _ := strconv.Atoi(publicmethod.UnixTimeToDay(startTime, 17))
|
|
|
|
|
endTime := publicmethod.GetDaysInMonth(yearValInt, monthValInt)
|
|
|
|
|
monthAry = append(monthAry, s.QuMaxData(startTime, endTime.AllTime, val, xField, yField, format))
|
|
|
|
|
case "day":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v 00:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v 23:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuMaxData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "hour":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuMaxData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "minute":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuMaxData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "second":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuMaxData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
default:
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = monthAry
|
|
|
|
|
}
|
|
|
|
|
func (s *SeriesList) QuMaxData(startTime, endTime int64, val interface{}, xField, yField string, format int) (jieguo interface{}) {
|
|
|
|
|
// if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
// var sumVal float64
|
|
|
|
|
// for i, mv := range yVal {
|
|
|
|
|
// if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
// if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
// pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
// if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
// startTime = startTime * 1000
|
|
|
|
|
// endTime = endTime * 1000
|
|
|
|
|
// }
|
|
|
|
|
// if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
// minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
// if err == nil {
|
|
|
|
|
// if i == 0 {
|
|
|
|
|
// sumVal = minVal
|
|
|
|
|
// } else {
|
|
|
|
|
// if sumVal <= minVal {
|
|
|
|
|
// sumVal = minVal
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// jieguo = publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
// }
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
var sumVal float64
|
|
|
|
|
for i, mv := range yVal {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
var begTime int64
|
|
|
|
|
var eldTime int64
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
begTime = startTime * 1000
|
|
|
|
|
eldTime = endTime * 1000
|
|
|
|
|
} else {
|
|
|
|
|
begTime = startTime
|
|
|
|
|
eldTime = startTime
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("时间数组:\n\n%v==2====1==2=====>%v==2=====>%v\n\n", begTime, eldTime, pageTime)
|
|
|
|
|
// fmt.Printf("技术只:\n\n%v======3=======>%v\n\n", begTime <= pageTime, pageTime <= endTime)
|
|
|
|
|
if begTime <= pageTime && pageTime <= eldTime {
|
|
|
|
|
// fmt.Printf("技术只:\n\n%v======1=======>%v\n\n", yField, pageTime)
|
|
|
|
|
if yzVal, isOk := mv[yField]; isOk {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yzVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if i == 0 {
|
|
|
|
|
sumVal = minVal
|
|
|
|
|
} else {
|
|
|
|
|
if sumVal <= minVal {
|
|
|
|
|
sumVal = minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("时间数组:\n\n%v======1=======>%v\n\n", yField, pageTime)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo = publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
@ 作者: 秦东
|
|
|
|
|
@ 时间: 2025-07-25 14:51:33
|
|
|
|
|
@ 功能:
|
|
|
|
|
|
|
|
|
|
#xField X轴信息
|
|
|
|
|
#yField Y轴信息
|
|
|
|
|
#types 时间信息
|
|
|
|
|
#format 值约束
|
|
|
|
|
#timeAry 时间数组
|
|
|
|
|
*/
|
|
|
|
|
func (s *SeriesList) NewminData(xField, yField, types string, val interface{}, format int, timeAry []string) {
|
|
|
|
|
var monthAry []interface{}
|
|
|
|
|
for _, v := range timeAry {
|
|
|
|
|
switch types {
|
|
|
|
|
case "year":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-01-01 00:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-12-31 23:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuMinData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "month":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-01 00:00:00", v))
|
|
|
|
|
yearValInt, _ := strconv.Atoi(publicmethod.UnixTimeToDay(startTime, 16))
|
|
|
|
|
monthValInt, _ := strconv.Atoi(publicmethod.UnixTimeToDay(startTime, 17))
|
|
|
|
|
endTime := publicmethod.GetDaysInMonth(yearValInt, monthValInt)
|
|
|
|
|
monthAry = append(monthAry, s.QuMinData(startTime, endTime.AllTime, val, xField, yField, format))
|
|
|
|
|
case "day":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v 00:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v 23:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuMinData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "hour":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuMinData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "minute":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuMinData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "second":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuMinData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
default:
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = monthAry
|
|
|
|
|
}
|
|
|
|
|
func (s *SeriesList) QuMinData(startTime, endTime int64, val interface{}, xField, yField string, format int) (jieguo interface{}) {
|
|
|
|
|
// if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
// var sumVal float64
|
|
|
|
|
// for i, mv := range yVal {
|
|
|
|
|
// if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
// if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
// pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
// if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
// startTime = startTime * 1000
|
|
|
|
|
// endTime = endTime * 1000
|
|
|
|
|
// }
|
|
|
|
|
// if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
// minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
// if err == nil {
|
|
|
|
|
// if i == 0 {
|
|
|
|
|
// sumVal = minVal
|
|
|
|
|
// } else {
|
|
|
|
|
// if sumVal >= minVal {
|
|
|
|
|
// sumVal = minVal
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// jieguo = publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
// }
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
var sumVal float64
|
|
|
|
|
for i, mv := range yVal {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
var begTime int64
|
|
|
|
|
var eldTime int64
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
begTime = startTime * 1000
|
|
|
|
|
eldTime = endTime * 1000
|
|
|
|
|
} else {
|
|
|
|
|
begTime = startTime
|
|
|
|
|
eldTime = startTime
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("时间数组:\n\n%v==2====1==2=====>%v==2=====>%v\n\n", begTime, eldTime, pageTime)
|
|
|
|
|
// fmt.Printf("技术只:\n\n%v======3=======>%v\n\n", begTime <= pageTime, pageTime <= endTime)
|
|
|
|
|
if begTime <= pageTime && pageTime <= eldTime {
|
|
|
|
|
// fmt.Printf("技术只:\n\n%v======1=======>%v\n\n", yField, pageTime)
|
|
|
|
|
if yzVal, isOk := mv[yField]; isOk {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yzVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if i == 0 {
|
|
|
|
|
sumVal = minVal
|
|
|
|
|
} else {
|
|
|
|
|
if sumVal >= minVal {
|
|
|
|
|
sumVal = minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("时间数组:\n\n%v======1=======>%v\n\n", yField, pageTime)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo = publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
*
|
|
|
|
|
@ 作者: 秦东
|
|
|
|
|
@ 时间: 2025-07-25 14:51:33
|
|
|
|
|
@ 功能:
|
|
|
|
|
|
|
|
|
|
#xField X轴信息
|
|
|
|
|
#yField Y轴信息
|
|
|
|
|
#types 时间信息
|
|
|
|
|
#format 值约束
|
|
|
|
|
#timeAry 时间数组
|
|
|
|
|
*/
|
|
|
|
|
func (s *SeriesList) NewsumData(xField, yField, types string, val interface{}, format int, timeAry []string) {
|
|
|
|
|
|
|
|
|
|
var monthAry []interface{}
|
|
|
|
|
for _, v := range timeAry {
|
|
|
|
|
// if i == 0 {
|
|
|
|
|
switch types {
|
|
|
|
|
case "year":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-01-01 00:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-12-31 23:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuSumData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "month":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v-01 00:00:00", v))
|
|
|
|
|
yearValInt, _ := strconv.Atoi(publicmethod.UnixTimeToDay(startTime, 16))
|
|
|
|
|
monthValInt, _ := strconv.Atoi(publicmethod.UnixTimeToDay(startTime, 17))
|
|
|
|
|
endTime := publicmethod.GetDaysInMonth(yearValInt, monthValInt)
|
|
|
|
|
monthAry = append(monthAry, s.QuSumData(startTime, endTime.AllTime, val, xField, yField, format))
|
|
|
|
|
case "day":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v 00:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v 23:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuSumData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
fmt.Printf("计算一天的数据:\n\n%v 到 %v 结果:%v\n\n", startTime, endTime, monthAry)
|
|
|
|
|
case "hour":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuSumData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "minute":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuSumData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
case "second":
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:00:00", v))
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(fmt.Sprintf("%v:59:59", v))
|
|
|
|
|
monthAry = append(monthAry, s.QuSumData(startTime, endTime, val, xField, yField, format))
|
|
|
|
|
default:
|
|
|
|
|
}
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
s.Data = monthAry
|
|
|
|
|
}
|
|
|
|
|
func (s *SeriesList) QuSumData(startTime, endTime int64, val interface{}, xField, yField string, format int) (jieguo interface{}) {
|
|
|
|
|
// if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
// var sumVal float64
|
|
|
|
|
// for _, mv := range yVal {
|
|
|
|
|
// if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
// fmt.Printf("要查询的字段:%v====y=====>%v\n", yField, yVal)
|
|
|
|
|
// if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
// fmt.Printf("要查询的字段:%v====x=====>%v\n", xField, xVal)
|
|
|
|
|
// pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
// if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
// startTime = startTime * 1000
|
|
|
|
|
// endTime = endTime * 1000
|
|
|
|
|
// }
|
|
|
|
|
// if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
// minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
// if err == nil {
|
|
|
|
|
// sumVal = sumVal + minVal
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// jieguo = publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
// }
|
|
|
|
|
// fmt.Printf("时间数组:\n\n%v======3=======>%v\n\n", startTime, endTime)
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
var sumVal float64
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
var begTime int64
|
|
|
|
|
var eldTime int64
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
begTime = startTime * 1000
|
|
|
|
|
eldTime = endTime * 1000
|
|
|
|
|
} else {
|
|
|
|
|
begTime = startTime
|
|
|
|
|
eldTime = endTime
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("时间数组:\n\n%v==2====1==2=====>%v==2=====>%v\n\n", begTime, eldTime, pageTime)
|
|
|
|
|
// fmt.Printf("技术只:\n\n%v======3=======>%v\n\n", begTime <= pageTime, pageTime <= endTime)
|
|
|
|
|
if begTime <= pageTime && pageTime <= eldTime {
|
|
|
|
|
// fmt.Printf("技术只:\n\n%v======1=======>%v\n\n", yField, pageTime)
|
|
|
|
|
if yzVal, isOk := mv[yField]; isOk {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yzVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("时间数组:\n\n%v======1=======>%v\n\n", yField, pageTime)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
fmt.Printf("时间数组:\n\n%v======1=======>%v======1=======>%v======1=======>%v\n\n", publicmethod.UnixTimeToDay(startTime, 14), xField, yField, sumVal)
|
|
|
|
|
jieguo = publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 计算数值
|
|
|
|
|
// 1:求和;2:平均值;3:计数;4:去重计数;5:最大值;6:最小值
|
|
|
|
|
// 当字段为时间类型时. 1:自动(原始值);2:整数;3:保留1位小数;4:保留2位小数;5:百分比;6:百分比1位小数;7:百分比2位小数;
|
|
|
|
|
func (b *BarDataInfo) CalculateNumericalValues(y []YAxisInfo, val interface{}, xField, chartType string, types string, lenght int, timeAry []string) {
|
|
|
|
|
|
|
|
|
|
for _, v := range y {
|
|
|
|
|
var seriesInfo SeriesList
|
|
|
|
|
seriesInfo.Name = v.OldTitle
|
|
|
|
|
seriesInfo.Types = chartType
|
|
|
|
|
switch v.Method {
|
|
|
|
|
case 2:
|
|
|
|
|
seriesInfo.AverageValue(xField, v.Field, types, val, v.Format, lenght, timeAry)
|
|
|
|
|
case 3:
|
|
|
|
|
seriesInfo.StatisticalQuantity(xField, v.Field, types, val, v.Format, lenght, timeAry)
|
|
|
|
|
case 4:
|
|
|
|
|
seriesInfo.RemoveDuplicateCounts(xField, v.Field, types, val, v.Format, lenght, timeAry)
|
|
|
|
|
case 5:
|
|
|
|
|
seriesInfo.maxData(xField, v.Field, types, val, v.Format, lenght, timeAry)
|
|
|
|
|
case 6:
|
|
|
|
|
seriesInfo.minData(xField, v.Field, types, val, v.Format, lenght, timeAry)
|
|
|
|
|
default:
|
|
|
|
|
seriesInfo.sumData(xField, v.Field, types, val, v.Format, lenght, timeAry)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if !publicmethod.IsInTrue[string](v.OldTitle, b.Legend.Data) {
|
|
|
|
|
b.Legend.Data = append(b.Legend.Data, v.OldTitle)
|
|
|
|
|
}
|
|
|
|
|
// if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
// for mi, mv := range yVal {
|
|
|
|
|
// fmt.Printf("\n\nyVal =====> %v =====> %v\n\n", mi, mv)
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
b.Series = append(b.Series, seriesInfo)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 求平均值
|
|
|
|
|
func (s *SeriesList) AverageValue(xField, yField, types string, val interface{}, format, lenght int, timeAry []string) {
|
|
|
|
|
tayTime := time.Now().Unix()
|
|
|
|
|
switch types {
|
|
|
|
|
case "month":
|
|
|
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 16)
|
|
|
|
|
yearValInt, _ := strconv.Atoi(yearVal)
|
|
|
|
|
var monthAry []interface{}
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
var sumVal float64
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
jibuqi := 1
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime.AllTime = endTime.AllTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime.AllTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
jibuqi++
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if jibuqi > 0 {
|
|
|
|
|
avgVal := sumVal / float64(jibuqi)
|
|
|
|
|
jieguo := publicmethod.DataChuli(avgVal, format)
|
|
|
|
|
monthAry = append(monthAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
monthAry = append(monthAry, 0)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
s.Data = monthAry
|
|
|
|
|
case "day":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
if lenght == 1 {
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
jibuqi := 0
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
jibuqi++
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if jibuqi > 0 {
|
|
|
|
|
avgVal := sumVal / float64(jibuqi)
|
|
|
|
|
jieguo := publicmethod.DataChuli(avgVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
dayAry = append(dayAry, 0)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 14)
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
createTime := fmt.Sprintf("%v %v:00:00", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
createTime = fmt.Sprintf("%v 0%v:00:00", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(createTime)
|
|
|
|
|
endTimeStr := fmt.Sprintf("%v %v:59:59", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
endTimeStr = fmt.Sprintf("%v 0%v:59:59", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(endTimeStr)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
jibuqi := 0
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
jibuqi++
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if jibuqi > 0 {
|
|
|
|
|
avgVal := sumVal / float64(jibuqi)
|
|
|
|
|
jieguo := publicmethod.DataChuli(avgVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
dayAry = append(dayAry, 0)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "hour":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
if lenght == 1 {
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
jibuqi := 0
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
jibuqi++
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if jibuqi > 0 {
|
|
|
|
|
avgVal := sumVal / float64(jibuqi)
|
|
|
|
|
jieguo := publicmethod.DataChuli(avgVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
dayAry = append(dayAry, 0)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 13)
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
createTime := fmt.Sprintf("%v:%v:00", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
createTime = fmt.Sprintf("%v:0%v:00", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(createTime)
|
|
|
|
|
endTimeStr := fmt.Sprintf("%v:%v:59", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
endTimeStr = fmt.Sprintf("%v:0%v:59", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(endTimeStr)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
jibuqi := 0
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
jibuqi++
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if jibuqi > 0 {
|
|
|
|
|
avgVal := sumVal / float64(jibuqi)
|
|
|
|
|
jieguo := publicmethod.DataChuli(avgVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
dayAry = append(dayAry, 0)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "minute":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
if lenght == 1 {
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
jibuqi := 0
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
jibuqi++
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if jibuqi > 0 {
|
|
|
|
|
avgVal := sumVal / float64(jibuqi)
|
|
|
|
|
jieguo := publicmethod.DataChuli(avgVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
dayAry = append(dayAry, 0)
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 12)
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
createTime := fmt.Sprintf("%v:%v", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
createTime = fmt.Sprintf("%v:0%v", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(createTime)
|
|
|
|
|
endTimeStr := fmt.Sprintf("%v:%v", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
endTimeStr = fmt.Sprintf("%v:0%v", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(endTimeStr)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
jibuqi := 0
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
jibuqi++
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if jibuqi > 0 {
|
|
|
|
|
avgVal := sumVal / float64(jibuqi)
|
|
|
|
|
jieguo := publicmethod.DataChuli(avgVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
dayAry = append(dayAry, 0)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "second":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
jibuqi := 0
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
jibuqi++
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if jibuqi > 0 {
|
|
|
|
|
avgVal := sumVal / float64(jibuqi)
|
|
|
|
|
jieguo := publicmethod.DataChuli(avgVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
dayAry = append(dayAry, 0)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "ymdhms":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
jibuqi := 0
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
jibuqi++
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if jibuqi > 0 {
|
|
|
|
|
avgVal := sumVal / float64(jibuqi)
|
|
|
|
|
jieguo := publicmethod.DataChuli(avgVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
dayAry = append(dayAry, 0)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
var sumVal float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
avgVal := sumVal / float64(len(yVal))
|
|
|
|
|
jieguo := publicmethod.DataChuli(avgVal, format)
|
|
|
|
|
s.Data = []interface{}{jieguo}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 统计数量
|
|
|
|
|
func (s *SeriesList) StatisticalQuantity(xField, yField, types string, val interface{}, format, lenght int, timeAry []string) {
|
|
|
|
|
tayTime := time.Now().Unix()
|
|
|
|
|
switch types {
|
|
|
|
|
case "month":
|
|
|
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 16)
|
|
|
|
|
yearValInt, _ := strconv.Atoi(yearVal)
|
|
|
|
|
var monthAry []interface{}
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
var sumVal []float64
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime.AllTime = endTime.AllTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime.AllTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = append(sumVal, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
monthAry = append(monthAry, len(sumVal))
|
|
|
|
|
}
|
|
|
|
|
s.Data = monthAry
|
|
|
|
|
case "day":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
if lenght == 1 {
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var sumVal []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = append(sumVal, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
dayAry = append(dayAry, len(sumVal))
|
|
|
|
|
} else {
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 14)
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
createTime := fmt.Sprintf("%v %v:00:00", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
createTime = fmt.Sprintf("%v 0%v:00:00", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(createTime)
|
|
|
|
|
endTimeStr := fmt.Sprintf("%v %v:59:59", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
endTimeStr = fmt.Sprintf("%v 0%v:59:59", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(endTimeStr)
|
|
|
|
|
var sumVal []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = append(sumVal, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
dayAry = append(dayAry, len(sumVal))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "hour":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
if lenght == 1 {
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var sumVal []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = append(sumVal, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := len(sumVal)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 13)
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
createTime := fmt.Sprintf("%v:%v:00", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
createTime = fmt.Sprintf("%v:0%v:00", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(createTime)
|
|
|
|
|
endTimeStr := fmt.Sprintf("%v:%v:59", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
endTimeStr = fmt.Sprintf("%v:0%v:59", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(endTimeStr)
|
|
|
|
|
var sumVal []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = append(sumVal, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := len(sumVal)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "minute":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
if lenght == 1 {
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var valAry []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
valAry = append(valAry, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := len(valAry)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 12)
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
createTime := fmt.Sprintf("%v:%v", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
createTime = fmt.Sprintf("%v:0%v", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(createTime)
|
|
|
|
|
endTimeStr := fmt.Sprintf("%v:%v", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
endTimeStr = fmt.Sprintf("%v:0%v", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(endTimeStr)
|
|
|
|
|
// var sumVal float64
|
|
|
|
|
var valAry []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
valAry = append(valAry, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := len(valAry)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "second":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var valAry []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
valAry = append(valAry, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := len(valAry)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "ymdhms":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var valAry []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
valAry = append(valAry, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := len(valAry)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
var valAry []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
valAry = append(valAry, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = []interface{}{len(valAry)}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 去重计数
|
|
|
|
|
func (s *SeriesList) RemoveDuplicateCounts(xField, yField, types string, val interface{}, format, lenght int, timeAry []string) {
|
|
|
|
|
tayTime := time.Now().Unix()
|
|
|
|
|
switch types {
|
|
|
|
|
case "month":
|
|
|
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 16)
|
|
|
|
|
yearValInt, _ := strconv.Atoi(yearVal)
|
|
|
|
|
var monthAry []interface{}
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
var sumVal []float64
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime.AllTime = endTime.AllTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime.AllTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if !publicmethod.IsInTrue[float64](minVal, sumVal) {
|
|
|
|
|
sumVal = append(sumVal, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
monthAry = append(monthAry, len(sumVal))
|
|
|
|
|
}
|
|
|
|
|
s.Data = monthAry
|
|
|
|
|
case "day":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
if lenght == 1 {
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var sumVal []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if !publicmethod.IsInTrue[float64](minVal, sumVal) {
|
|
|
|
|
sumVal = append(sumVal, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
dayAry = append(dayAry, len(sumVal))
|
|
|
|
|
} else {
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 14)
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
createTime := fmt.Sprintf("%v %v:00:00", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
createTime = fmt.Sprintf("%v 0%v:00:00", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(createTime)
|
|
|
|
|
endTimeStr := fmt.Sprintf("%v %v:59:59", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
endTimeStr = fmt.Sprintf("%v 0%v:59:59", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(endTimeStr)
|
|
|
|
|
var sumVal []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if !publicmethod.IsInTrue[float64](minVal, sumVal) {
|
|
|
|
|
sumVal = append(sumVal, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
dayAry = append(dayAry, len(sumVal))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "hour":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
if lenght == 1 {
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var sumVal []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if !publicmethod.IsInTrue[float64](minVal, sumVal) {
|
|
|
|
|
sumVal = append(sumVal, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := len(sumVal)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 13)
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
createTime := fmt.Sprintf("%v:%v:00", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
createTime = fmt.Sprintf("%v:0%v:00", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(createTime)
|
|
|
|
|
endTimeStr := fmt.Sprintf("%v:%v:59", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
endTimeStr = fmt.Sprintf("%v:0%v:59", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(endTimeStr)
|
|
|
|
|
var sumVal []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if !publicmethod.IsInTrue[float64](minVal, sumVal) {
|
|
|
|
|
sumVal = append(sumVal, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := len(sumVal)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "minute":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
if lenght == 1 {
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var valAry []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if !publicmethod.IsInTrue[float64](minVal, valAry) {
|
|
|
|
|
valAry = append(valAry, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := len(valAry)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 12)
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
createTime := fmt.Sprintf("%v:%v", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
createTime = fmt.Sprintf("%v:0%v", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(createTime)
|
|
|
|
|
endTimeStr := fmt.Sprintf("%v:%v", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
endTimeStr = fmt.Sprintf("%v:0%v", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(endTimeStr)
|
|
|
|
|
// var sumVal float64
|
|
|
|
|
var valAry []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if !publicmethod.IsInTrue[float64](minVal, valAry) {
|
|
|
|
|
valAry = append(valAry, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := len(valAry)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "second":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var valAry []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if !publicmethod.IsInTrue[float64](minVal, valAry) {
|
|
|
|
|
valAry = append(valAry, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := len(valAry)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "ymdhms":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var valAry []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if !publicmethod.IsInTrue[float64](minVal, valAry) {
|
|
|
|
|
valAry = append(valAry, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := len(valAry)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
var valAry []float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if !publicmethod.IsInTrue[float64](minVal, valAry) {
|
|
|
|
|
valAry = append(valAry, minVal)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = []interface{}{len(valAry)}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 求和
|
|
|
|
|
func (s *SeriesList) sumData(xField, yField, types string, val interface{}, format, lenght int, timeAry []string) {
|
|
|
|
|
fmt.Printf("求和------------>%v\n\n", lenght)
|
|
|
|
|
tayTime := time.Now().Unix()
|
|
|
|
|
switch types {
|
|
|
|
|
case "month":
|
|
|
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 16)
|
|
|
|
|
yearValInt, _ := strconv.Atoi(yearVal)
|
|
|
|
|
var monthAry []interface{}
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
var sumVal float64
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime.AllTime = endTime.AllTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime.AllTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
monthAry = append(monthAry, jieguo)
|
|
|
|
|
}
|
|
|
|
|
s.Data = monthAry
|
|
|
|
|
case "day":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
if lenght == 1 {
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 15)
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
createTime := fmt.Sprintf("%v-%v 00:00:00", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
createTime = fmt.Sprintf("%v-0%v 00:00:00", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(createTime)
|
|
|
|
|
endTimeStr := fmt.Sprintf("%v-%v 23:59:59", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
endTimeStr = fmt.Sprintf("%v-0%v 23:59:59", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(endTimeStr)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("startTime:%v====>pageTime%v=======endTime%v\n\n", startTime, pageTime, endTime)
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "hour":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
if lenght == 1 {
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 13)
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
createTime := fmt.Sprintf("%v:%v:00", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
createTime = fmt.Sprintf("%v:0%v:00", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(createTime)
|
|
|
|
|
endTimeStr := fmt.Sprintf("%v:%v:59", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
endTimeStr = fmt.Sprintf("%v:0%v:59", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(endTimeStr)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "minute":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
if lenght == 1 {
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 12)
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
createTime := fmt.Sprintf("%v:%v", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
createTime = fmt.Sprintf("%v:0%v", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(createTime)
|
|
|
|
|
endTimeStr := fmt.Sprintf("%v:%v", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
endTimeStr = fmt.Sprintf("%v:0%v", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(endTimeStr)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "second":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
case "ymdhms":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
var sumVal float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
default:
|
|
|
|
|
var sumVal float64
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
sumVal = sumVal + minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(sumVal, format)
|
|
|
|
|
s.Data = []interface{}{jieguo}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 求最小值
|
|
|
|
|
func (s *SeriesList) maxData(xField, yField, types string, val interface{}, format, lenght int, timeAry []string) {
|
|
|
|
|
var valData float64 = 1
|
|
|
|
|
tayTime := time.Now().Unix()
|
|
|
|
|
switch types {
|
|
|
|
|
case "month":
|
|
|
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 16)
|
|
|
|
|
yearValInt, _ := strconv.Atoi(yearVal)
|
|
|
|
|
var monthAry []interface{}
|
|
|
|
|
for i := 1; i <= lenght; 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)
|
|
|
|
|
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
// pageTimeLen := publicmethod.GetIntLength(pageTime)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime.AllTime = endTime.AllTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime.AllTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if valData <= minVal {
|
|
|
|
|
valData = minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(valData, format)
|
|
|
|
|
monthAry = append(monthAry, jieguo)
|
|
|
|
|
}
|
|
|
|
|
s.Data = monthAry
|
|
|
|
|
case "day":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
if lenght == 1 {
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if valData <= minVal {
|
|
|
|
|
valData = minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(valData, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 14)
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
createTime := fmt.Sprintf("%v %v:00:00", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
createTime = fmt.Sprintf("%v 0%v:00:00", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(createTime)
|
|
|
|
|
endTimeStr := fmt.Sprintf("%v %v:59:59", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
endTimeStr = fmt.Sprintf("%v 0%v:59:59", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(endTimeStr)
|
|
|
|
|
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if publicmethod.GetIntLength(pageTime) >= 13 {
|
|
|
|
|
startTime = startTime * 1000
|
|
|
|
|
endTime = endTime * 1000
|
|
|
|
|
}
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if valData <= minVal {
|
|
|
|
|
valData = minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(valData, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
default:
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if valData <= minVal {
|
|
|
|
|
valData = minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(valData, format)
|
|
|
|
|
s.Data = []interface{}{jieguo}
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 求最小值
|
|
|
|
|
func (s *SeriesList) minData(xField, yField, types string, val interface{}, format, lenght int, timeAry []string) {
|
|
|
|
|
var valData float64 = 1
|
|
|
|
|
tayTime := time.Now().Unix()
|
|
|
|
|
switch types {
|
|
|
|
|
case "month":
|
|
|
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 16)
|
|
|
|
|
yearValInt, _ := strconv.Atoi(yearVal)
|
|
|
|
|
var monthAry []interface{}
|
|
|
|
|
for i := 1; i <= lenght; 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)
|
|
|
|
|
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime.AllTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if valData >= minVal {
|
|
|
|
|
valData = minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(valData, format)
|
|
|
|
|
monthAry = append(monthAry, jieguo)
|
|
|
|
|
}
|
|
|
|
|
s.Data = monthAry
|
|
|
|
|
case "day":
|
|
|
|
|
var dayAry []interface{}
|
|
|
|
|
if lenght == 1 {
|
|
|
|
|
startTime, endTime := publicmethod.TimeUnixDayStartAndEnd(tayTime)
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if valData >= minVal {
|
|
|
|
|
valData = minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(valData, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
} else {
|
|
|
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 14)
|
|
|
|
|
for i := 1; i <= lenght; i++ {
|
|
|
|
|
createTime := fmt.Sprintf("%v %v:00:00", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
createTime = fmt.Sprintf("%v 0%v:00:00", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
startTime := publicmethod.DateToTimeStampOld(createTime)
|
|
|
|
|
endTimeStr := fmt.Sprintf("%v %v:59:59", ymd, i)
|
|
|
|
|
if i < 10 {
|
|
|
|
|
endTimeStr = fmt.Sprintf("%v 0%v:59:59", ymd, i)
|
|
|
|
|
}
|
|
|
|
|
endTime := publicmethod.DateToTimeStampOld(endTimeStr)
|
|
|
|
|
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
if xVal, isOk := mv[xField]; isOk {
|
|
|
|
|
pageTime, _ := publicmethod.StringToInt64(xVal)
|
|
|
|
|
if startTime <= pageTime && pageTime <= endTime {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if valData >= minVal {
|
|
|
|
|
valData = minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(valData, format)
|
|
|
|
|
dayAry = append(dayAry, jieguo)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
s.Data = dayAry
|
|
|
|
|
default:
|
|
|
|
|
if yVal, isOk := val.([]map[string]interface{}); isOk {
|
|
|
|
|
for _, mv := range yVal {
|
|
|
|
|
if yVal, isOk := mv[yField]; isOk {
|
|
|
|
|
minVal, err := strconv.ParseFloat(publicmethod.TypeToInterface(yVal), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
if valData >= minVal {
|
|
|
|
|
valData = minVal
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
jieguo := publicmethod.DataChuli(valData, format)
|
|
|
|
|
s.Data = []interface{}{jieguo}
|
|
|
|
|
}
|
|
|
|
|
// fmt.Printf("\n\nyVal =====> %v =====> =====> %v =====> %v\n\n", yField, valData, valData)
|
|
|
|
|
return
|
|
|
|
|
}
|