You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1792 lines
51 KiB
1792 lines
51 KiB
|
4 months ago
|
package customChartes
|
||
|
|
|
||
|
|
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"
|
||
|
|
switch x.TimeType {
|
||
|
|
case "year":
|
||
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 16)
|
||
|
|
charData.XAxis.Data = []string{yearVal}
|
||
|
|
charData.CalculateNumericalValues(y, val, x.Field, chartType, "all", 12)
|
||
|
|
case "month":
|
||
|
|
var timeList []string
|
||
|
|
tayTime := int(time.Now().Month())
|
||
|
|
for i := 1; i <= tayTime; i++ {
|
||
|
|
timeList = append(timeList, fmt.Sprintf("%v月", i))
|
||
|
|
}
|
||
|
|
charData.XAxis.Data = timeList
|
||
|
|
charData.CalculateNumericalValues(y, val, x.Field, chartType, "month", tayTime)
|
||
|
|
case "day":
|
||
|
|
// tayTime := int(time.Now().Day())
|
||
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 4)
|
||
|
|
charData.XAxis.Data = []string{yearVal}
|
||
|
|
charData.CalculateNumericalValues(y, val, x.Field, chartType, "day", 1)
|
||
|
|
|
||
|
|
case "hour":
|
||
|
|
var timeList []string
|
||
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 7)
|
||
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 4)
|
||
|
|
hourInt, _ := strconv.Atoi(yearVal)
|
||
|
|
for i := 1; i <= hourInt; i++ {
|
||
|
|
timeList = append(timeList, fmt.Sprintf("%v 时", ymd, i))
|
||
|
|
}
|
||
|
|
charData.XAxis.Data = timeList
|
||
|
|
charData.CalculateNumericalValues(y, val, x.Field, chartType, "hour", hourInt)
|
||
|
|
case "minute":
|
||
|
|
var timeList []string
|
||
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 9)
|
||
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 3)
|
||
|
|
hourInt, _ := strconv.Atoi(yearVal)
|
||
|
|
for i := 1; i <= hourInt; i++ {
|
||
|
|
timeList = append(timeList, fmt.Sprintf("%v", ymd, i))
|
||
|
|
}
|
||
|
|
charData.XAxis.Data = timeList
|
||
|
|
charData.CalculateNumericalValues(y, val, x.Field, chartType, "minute", hourInt)
|
||
|
|
case "second":
|
||
|
|
var timeList []string
|
||
|
|
yearVal := publicmethod.UnixTimeToDay(tayTime, 10)
|
||
|
|
ymd := publicmethod.UnixTimeToDay(tayTime, 2)
|
||
|
|
hourInt, _ := strconv.Atoi(yearVal)
|
||
|
|
for i := 1; i <= hourInt; i++ {
|
||
|
|
timeList = append(timeList, fmt.Sprintf("%v", ymd, i))
|
||
|
|
}
|
||
|
|
charData.XAxis.Data = timeList
|
||
|
|
charData.CalculateNumericalValues(y, val, x.Field, chartType, "second", hourInt)
|
||
|
|
default:
|
||
|
|
var timeList []string
|
||
|
|
tayTime := int(time.Now().Month())
|
||
|
|
for i := 1; i <= tayTime; i++ {
|
||
|
|
timeList = append(timeList, fmt.Sprintf("%v月", i))
|
||
|
|
}
|
||
|
|
charData.XAxis.Data = timeList
|
||
|
|
charData.CalculateNumericalValues(y, val, x.Field, chartType, "month", tayTime)
|
||
|
|
}
|
||
|
|
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) {
|
||
|
|
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)
|
||
|
|
case 3:
|
||
|
|
seriesInfo.StatisticalQuantity(xField, v.Field, types, val, v.Format, lenght)
|
||
|
|
case 4:
|
||
|
|
seriesInfo.RemoveDuplicateCounts(xField, v.Field, types, val, v.Format, lenght)
|
||
|
|
case 5:
|
||
|
|
seriesInfo.maxData(xField, v.Field, types, val, v.Format, lenght)
|
||
|
|
case 6:
|
||
|
|
seriesInfo.minData(xField, v.Field, types, val, v.Format, lenght)
|
||
|
|
default:
|
||
|
|
seriesInfo.sumData(xField, v.Field, types, val, v.Format, lenght)
|
||
|
|
}
|
||
|
|
|
||
|
|
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) {
|
||
|
|
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) {
|
||
|
|
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) {
|
||
|
|
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) {
|
||
|
|
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, 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 = 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) {
|
||
|
|
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) {
|
||
|
|
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
|
||
|
|
}
|