package api import ( "../../routers/restful" "encoding/json" "fmt" "github.com/Anderson-Lu/gofasion/gofasion" "github.com/xormplus/xorm" "sort" "strconv" "strings" "time" ) //包含报表模块需要的各种数据格式转换 func praseReportform(sqlnamestr string, parammaps *gofasion.Fasion, tx *xorm.Session) (queryData map[string]interface{}, err error) { sql, p := restful.GetSqlByNameDBT(sqlnamestr, tx) s_params := make([]interface{}, 0) if sql != "" { paramslist := strings.Split(p, ",") if len(paramslist) > 0 && p != "" { for _, value := range paramslist { s_params = append(s_params, parammaps.Get(strings.Trim(value, " ")).ValueStr()) } } } queryList, err := tx.SQL(sql, s_params...).Query().List() if err != nil{ return nil,err } if len(queryList) == 0{ return nil,nil } temstr := "" switch sqlnamestr { case "getAccuracyAllHL", "getAccuracyAllQX", "getAccuracyAllJH", "getFeedEffMR", "getFeedEffHL", "getHomepageCB", "getAccuraa", "judgenurFTReportDetail": temstr = sqlnamestr default: temstr = sqlnamestr[:10] } switch temstr { case "getAccurac", "getFeedEff": queryData, err = getAccuracy(queryList) // 不定参数 case "getprocess": //queryData, err = getAccuracyV3v1(queryList) queryData, err = getAccuracyV3(queryList) case "getHomepro": queryData, err = getAccuracyV3(queryList) case "getAccuracyAllHL", "getAccuracyAllQX", "getAccuracyAllJH", "getFeedEffMR", "getFeedEffHL", "getHomepageCB", "getAccuraa": queryData, err = getAccuracyV2(queryList) //固定维度 日期 case "getMateria": queryData, err = getAccuracyV4(queryList) case "getPriceAn": queryData, err = getAccuracyV5(queryList) case "getJT1Accu": queryData, err = getAccuracyV6(queryList) //固定维度 牧场 case "judgenurFT": queryData, err = getAccuracyV7(queryList) case "judgenurFTReportDetail": queryData, err = getAccuracyV8(queryList) case "downloadPl": queryData, err = getAccuracyV9(queryList) //投料简打、累加 default: queryData, err = nil, nil } return //switch sqlnamestr { //case "getAccuracyAllFT", "getAccuracyAllNQ", "getAccuracyAllCC", "getAccuracyAllLS","getFeedEffSL","getFeedEffZH","getFeedEffCB","getFeedEffCBLS","getFeedEffCBFT": // queryData, err = getAccuracy(queryList) //case "getprocessAnalysisTB","getHomeprocessAnalysis": // queryData, err = getAccuracyV3(queryList) //case "getAccuracyAllHL", "getAccuracyAllQX","getAccuracyAllJH","getFeedEffMR","getFeedEffHL","getHomepageCB": // queryData, err = getAccuracyV2(queryList) //default: // queryData, err = nil, nil //} //return } func getAccuracyV10(queryList []map[string]interface{}) (map[string]interface{}, error) { queryData := make(map[string]interface{}) chartData := make(map[string]interface{}) mapc3 := make(map[string]interface{}) data2 := []interface{}{} data1 := []interface{}{} mapc3["label"] = "车次" mapc3["prop"] = "projname" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mapc3["label"] = "TMR" mapc3["prop"] = "tmrtname" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mapc3["label"] = "时间" mapc3["prop"] = "plantime" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mapc3["label"] = "班组" mapc3["prop"] = "times" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mapc3["label"] = "驾驶员" mapc3["prop"] = "driver" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mapc3["label"] = "日系数比例" mapc3["prop"] = "rate" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mapc3["label"] = "牛头数" mapc3["prop"] = "feedpcount" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mapc3["label"] = "配方模板" mapc3["prop"] = "templetname" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) var stem []string var tem1 interface{} max,count := 0,0 for i := 0; i < len(queryList); i++ { // 获取所有饲料种类 if i == 0{ tem1 = queryList[i]["projname"] } if tem1 != queryList[i]["projname"]{ tem1 = queryList[i]["projname"] if max < count { max = count } count = 0 }else{ count ++ } } sort.Strings(stem) for i := 0;i<=max;i++{ mapc3["label"] = "发料位"+ strconv.Itoa(i+1) mapc3["prop"] = "发料位"+ strconv.Itoa(i+1) data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) } mapc3["label"] = "合计" mapc3["prop"] = "sumlweight" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) var tem interface{} mapc2 := make(map[string]interface{}) count = 1 for i := 0; i < len(queryList); i++ { // 获取所有饲料种类 if i == 0{ tem = queryList[i]["projname"] mapc2 = queryList[i] mapc2["发料位"+ strconv.Itoa(count)] = queryList[i]["lweight"] continue } if tem == queryList[i]["projname"]{ count ++ fmt.Println("===========aa ",queryList[i]["projname"],"发料位"+ strconv.Itoa(count)) mapc2["发料位"+ strconv.Itoa(count)] = queryList[i]["lweight"] }else{ count = 1 fmt.Println("===========bb ",queryList[i]["projname"],count) data2 = append(data2, mapc2) tem = queryList[i]["projname"] mapc2 = queryList[i] mapc2["发料位"+ strconv.Itoa(count)] = queryList[i]["lweight"] } } data2 = append(data2, mapc2) chartData["data1"] = data1 chartData["data2"] = data2 queryData["list"] = chartData queryData["code"] = 0 queryData["message"] = "ok" queryData["data"] = queryList return queryData, nil } func getAccuracyV9(queryList []map[string]interface{}) (map[string]interface{}, error) { queryData := make(map[string]interface{}) chartData := make(map[string]interface{}) mapc3 := make(map[string]interface{}) data2 := []interface{}{} data1 := []interface{}{} mapc3["label"] = "车次" mapc3["prop"] = "projname" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mapc3["label"] = "TMR" mapc3["prop"] = "tmrtname" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mapc3["label"] = "时间" mapc3["prop"] = "plantime" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mapc3["label"] = "班组" mapc3["prop"] = "times" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mapc3["label"] = "驾驶员" mapc3["prop"] = "driver" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mapc3["label"] = "日系数比例" mapc3["prop"] = "rate" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mapc3["label"] = "牛头数" mapc3["prop"] = "feedpcount" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mapc3["label"] = "配方模板" mapc3["prop"] = "templetname" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) mtem := make(map[interface{}]interface{}) var stem []string for i := 0; i < len(queryList); i++ { // 获取所有饲料种类 if _,ok :=mtem[queryList[i]["fname"]];ok { continue } stem = append(stem,queryList[i]["fname"].(string)) mtem[queryList[i]["fname"]] = struct {}{} } sort.Strings(stem) for _, va := range stem { mapc3["label"] = va mapc3["prop"] = va data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) } mapc3["label"] = "合计" mapc3["prop"] = "sumlweight" data1 = append(data1, mapc3) mapc3 = make(map[string]interface{}) var tem interface{} mapc2 := make(map[string]interface{}) for i := 0; i < len(queryList); i++ { // 获取所有饲料种类 if i == 0{ tem = queryList[i]["projname"] mapc2 = queryList[i] //for key:= range mtem { // mapc2[xorm.String(key)] = "" //} mapc2[xorm.String(queryList[i]["fname"])] = queryList[i]["lweight"] } if tem == queryList[i]["projname"]{ mapc2[xorm.String(queryList[i]["fname"])] = queryList[i]["lweight"] }else{ data2 = append(data2, mapc2) tem = queryList[i]["projname"] mapc2 = queryList[i] //for key := range mtem { // mapc2[xorm.String(key)] = "" //} mapc2[xorm.String(queryList[i]["fname"])] = queryList[i]["lweight"] } } data2 = append(data2, mapc2) chartData["data1"] = data1 chartData["data2"] = data2 queryData["list"] = chartData queryData["code"] = 0 queryData["message"] = "ok" queryData["data"] = queryList return queryData, nil } func getAccuracyV8(queryList []map[string]interface{}) (map[string]interface{}, error) { queryData := make(map[string]interface{}) chartData := make(map[string]interface{}) //list := make(map[string]interface{}) data := []interface{}{} for i := 0; i < len(queryList); i++ { dry, _ := strconv.ParseFloat(queryList[i]["dry"].(string), 64) Hrate, _ := strconv.ParseFloat(queryList[i]["Hrate"].(string), 64) Srate, _ := strconv.ParseFloat(queryList[i]["Srate"].(string), 64) trans35f, _ := strconv.ParseFloat(queryList[i]["trans35f"].(string), 64) jcrate, _ := strconv.ParseFloat(queryList[i]["jcrate"].(string), 64) uprice, _ := strconv.ParseFloat(queryList[i]["uprice"].(string), 64) kprice, _ := strconv.ParseFloat(queryList[i]["dry"].(string), 64) adf, _ := strconv.ParseFloat(queryList[i]["adf"].(string), 64) ca, _ := strconv.ParseFloat(queryList[i]["ca"].(string), 64) cdry, _ := strconv.ParseFloat(queryList[i]["cdry"].(string), 64) cad, _ := strconv.ParseFloat(queryList[i]["cad"].(string), 64) cndf, _ := strconv.ParseFloat(queryList[i]["cndf"].(string), 64) cp, _ := strconv.ParseFloat(queryList[i]["cp"].(string), 64) cpd, _ := strconv.ParseFloat(queryList[i]["cpd"].(string), 64) fat, _ := strconv.ParseFloat(queryList[i]["fat"].(string), 64) ndf, _ := strconv.ParseFloat(queryList[i]["ndf"].(string), 64) nm, _ := strconv.ParseFloat(queryList[i]["nm"].(string), 64) nmd, _ := strconv.ParseFloat(queryList[i]["nmd"].(string), 64) nuint, _ := strconv.ParseFloat(queryList[i]["nuint"].(string), 64) p, _ := strconv.ParseFloat(queryList[i]["p"].(string), 64) pd, _ := strconv.ParseFloat(queryList[i]["pd"].(string), 64) starch, _ := strconv.ParseFloat(queryList[i]["starch"].(string), 64) trans4f, _ := strconv.ParseFloat(queryList[i]["trans4f"].(string), 64) list := make(map[string]interface{}) list["ft"] = dry list["index"] = "干物质(kg)" list["tmr"] = TransFloat(dry * Hrate) list["cyl"] = TransFloat(dry * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = jcrate list["index"] = "粗精比(%)" list["tmr"] = TransFloat(jcrate * Hrate) list["cyl"] = TransFloat(jcrate * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = uprice list["index"] = "日粮成本(元)" list["tmr"] = TransFloat(uprice * Hrate) list["cyl"] = TransFloat(uprice * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = kprice list["index"] = "公斤奶成本" list["tmr"] = TransFloat(kprice * Hrate) list["cyl"] = TransFloat(kprice * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = cdry list["index"] = "粗料中的干物质" list["tmr"] = TransFloat(cdry * Hrate) list["cyl"] = TransFloat(cdry * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = nm list["index"] = " 产奶净能(MJ)" list["tmr"] = TransFloat(nm * Hrate) list["cyl"] = TransFloat(nm * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = nuint list["index"] = "奶牛能量单位(NND)" list["tmr"] = TransFloat(nuint * Hrate) list["cyl"] = TransFloat(nuint * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = cp list["index"] = "粗蛋白(g)" list["tmr"] = TransFloat(cp * Hrate) list["cyl"] = TransFloat(cp * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = cpd list["index"] = "粗蛋白(%DM)" list["tmr"] = TransFloat(cpd * Hrate) list["cyl"] = TransFloat(cpd * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = ca list["index"] = "钙(g)" list["tmr"] = TransFloat(ca * Hrate) list["cyl"] = TransFloat(ca * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = p list["index"] = "磷(g)" list["tmr"] = TransFloat(p * Hrate) list["cyl"] = TransFloat(p * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = nmd list["index"] = "产奶净能(Mcal/DM)" list["tmr"] = TransFloat(nmd * Hrate) list["cyl"] = TransFloat(nmd * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = fat list["index"] = "脂肪" list["tmr"] = TransFloat(fat * Hrate) list["cyl"] = TransFloat(fat * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = starch list["index"] = "淀粉" list["tmr"] = TransFloat(starch * Hrate) list["cyl"] = TransFloat(starch * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = ndf list["index"] = "NDF(%DM)" list["tmr"] = TransFloat(ndf * Hrate) list["cyl"] = TransFloat(ndf * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = cndf list["index"] = "粗料中的NDF(%DM)" list["tmr"] = TransFloat(cndf * Hrate) list["cyl"] = TransFloat(cndf * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = adf list["index"] = " ADF(%DM)" list["tmr"] = TransFloat(adf * Hrate) list["cyl"] = TransFloat(adf * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = cad list["index"] = "钙(%DM)" list["tmr"] = TransFloat(cad * Hrate) list["cyl"] = TransFloat(cad * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = pd list["index"] = " 磷(%DM)" list["tmr"] = TransFloat(pd * Hrate) list["cyl"] = TransFloat(pd * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = trans35f list["index"] = "(3.5)FCR(kg/DM)" list["tmr"] = TransFloat(trans35f * Hrate) list["cyl"] = TransFloat(trans35f * Srate) data = append(data, list) list = make(map[string]interface{}) list["ft"] = trans4f list["index"] = "(4.0)FCR(kg/DM)" list["tmr"] = TransFloat(trans4f * Hrate) list["cyl"] = TransFloat(trans4f * Srate) data = append(data, list) } chartData["data"] = data queryData["list"] = chartData queryData["code"] = 0 queryData["message"] = "ok" queryData["data"] = queryList return queryData, nil } func TransFloat(flo float64)(float64){ hf,_ :=strconv.ParseFloat(fmt.Sprintf("%.3f", float64(flo)), 64) return hf } func getAccuracyV7(queryList []map[string]interface{}) (map[string]interface{}, error) { queryData := make(map[string]interface{}) chartData := make(map[string]interface{}) //list := make(map[string]interface{}) data := []interface{}{} for i := 0; i < len(queryList); i++ { dry, _ := strconv.ParseFloat(queryList[i]["dry"].(string), 64) Hrate, _ := strconv.ParseFloat(queryList[i]["Hrate"].(string), 64) Srate, _ := strconv.ParseFloat(queryList[i]["Srate"].(string), 64) trans35f, _ := strconv.ParseFloat(queryList[i]["trans35f"].(string), 64) jcrate, _ := strconv.ParseFloat(queryList[i]["jcrate"].(string), 64) uprice, _ := strconv.ParseFloat(queryList[i]["uprice"].(string), 64) kprice, _ := strconv.ParseFloat(queryList[i]["dry"].(string), 64) list := make(map[string]interface{}) list["tname"] = queryList[i]["tname"] list["ftid"] = queryList[i]["ftid"] list["ft"] = dry list["index"] = "干物质(kg)" list["tmr"] = TransFloat(dry * Hrate) list["cyl"] = TransFloat(dry * Srate) data = append(data, list) list = make(map[string]interface{}) list["tname"] = queryList[i]["tname"] list["ftid"] = queryList[i]["ftid"] list["ft"] = trans35f list["index"] = "(3.5)FCR(kg/DM)" list["tmr"] = TransFloat(trans35f * Hrate) list["cyl"] = TransFloat(trans35f * Srate) data = append(data, list) list = make(map[string]interface{}) list["tname"] = queryList[i]["tname"] list["ftid"] = queryList[i]["ftid"] list["ft"] = jcrate list["index"] = "粗精比(%)" list["tmr"] = TransFloat(jcrate * Hrate) list["cyl"] = TransFloat(jcrate * Srate) data = append(data, list) list = make(map[string]interface{}) list["tname"] = queryList[i]["tname"] list["ftid"] = queryList[i]["ftid"] list["ft"] = uprice list["index"] = "日粮成本(元)" list["tmr"] = TransFloat(uprice * Hrate) list["cyl"] = TransFloat(uprice * Srate) data = append(data, list) list = make(map[string]interface{}) list["tname"] = queryList[i]["tname"] list["ftid"] = queryList[i]["ftid"] list["ft"] = kprice list["index"] = "公斤奶成本" list["tmr"] = TransFloat(kprice * Hrate) list["cyl"] = TransFloat(kprice * Srate) data = append(data, list) } chartData["data"] = data queryData["list"] = chartData queryData["code"] = 0 queryData["message"] = "ok" queryData["data"] = queryList return queryData, nil } func getAccuracyV6(queryList []map[string]interface{}) (map[string]interface{}, error) { queryData := make(map[string]interface{}) chartData := make(map[string]interface{}) data := []interface{}{} data1 := []interface{}{} data2 := []interface{}{} data3 := []interface{}{} data4 := []interface{}{} for i := 0; i < len(queryList); i++ { data = append(data, queryList[i]["牧场"]) data1 = append(data1, queryList[i]["field1"]) data2 = append(data2, queryList[i]["field2"]) data3 = append(data3, queryList[i]["field3"]) data4 = append(data4, queryList[i]["field4"]) } chartData["data1"] = data chartData["data2"] = data1 chartData["data3"] = data2 chartData["data4"] = data3 chartData["data5"] = data4 queryData["list"] = chartData queryData["code"] = 0 queryData["message"] = "ok" queryData["data"] = queryList return queryData, nil } func getAccuracyV5(queryList []map[string]interface{}) (map[string]interface{}, error) { queryData := make(map[string]interface{}) chartData := make(map[string]interface{}) datamap1 := make(map[string]interface{}) datamap2 := make(map[string]interface{}) temsmap := make(map[interface{}]interface{}) mapc2 := make(map[interface{}]interface{}) data3 := []interface{}{} datamap2child := make(map[string]interface{}) data2 := []interface{}{} data1 := []interface{}{} var dtem interface{} var temstr interface{} var typestr interface{} count2 := 0 a := 0 for i := 0; i < len(queryList); i++ { if i == 0 { temstr = queryList[i]["fname"] typestr = queryList[i]["typestr"] } if temstr == queryList[i]["fname"] { temsmap[queryList[i]["feedname"]] = 1 } if _, ok := mapc2[queryList[i]["feedname"]]; !ok { mapc2[queryList[i]["feedname"]] = count2 mapc2[count2] = queryList[i]["feedname"] count2++ } } //for i := 0; i0{ queryjsonList, _ := restful.Engine.SQL("select weightjson from recweightmuster where pid = ? and pastureid = ?" ,queryList[0]["pid"],queryList[0]["pastureid"]).Query().List() if len(queryjsonList)>0{ jsonstr = queryjsonList[0]["weightjson"].(string) } } err := json.Unmarshal([]byte(jsonstr),&jsonmap) if err != nil{ return nil ,err } for i := 0; i < len(queryList); i++ { datatem = append(datatem, queryList[i]["startstime"], queryList[i]["lastactualweight"]) data3 = append(data3, datatem) datatem = []interface{}{} datatem = append(datatem, queryList[i]["intime"], queryList[i]["actualweight"]) data3 = append(data3, datatem) datatem = []interface{}{} } j := 0 for i := 0; i < len(jsonmap); i++ { if jsonmap[i]["mt"].(string)>queryList[j]["intime"].(string){ if j < len(queryList)-1{ j++ } } data1 = append(data1, queryList[j]["lweight"]) data = append(data, jsonmap[i]["mt"]) data2 = append(data2, jsonmap[i]["w"]) } chartData["data1"] = data chartData["data2"] = data1 chartData["data3"] = data2 chartData["data4"] = data3 chartData["data5"] = data4 queryData["list"] = chartData queryData["code"] = 0 queryData["message"] = "ok" queryData["data"] = queryList return queryData, nil } func getAccuracyV2(queryList []map[string]interface{}) (map[string]interface{}, error) { queryData := make(map[string]interface{}) chartData := make(map[string]interface{}) data := []interface{}{} data1 := []interface{}{} data2 := []interface{}{} data3 := []interface{}{} data4 := []interface{}{} for i := 0; i < len(queryList); i++ { data = append(data, queryList[i]["日期"]) data1 = append(data1, queryList[i]["field1"]) data2 = append(data2, queryList[i]["field2"]) data3 = append(data3, queryList[i]["field3"]) data4 = append(data4, queryList[i]["field4"]) } chartData["data1"] = data chartData["data2"] = data1 chartData["data3"] = data2 chartData["data4"] = data3 chartData["data5"] = data4 queryData["list"] = chartData queryData["code"] = 0 queryData["message"] = "ok" queryData["data"] = queryList return queryData, nil } func getAccuracy(queryList []map[string]interface{}) (map[string]interface{}, error) { queryData := make(map[string]interface{}) chartData := make(map[string]interface{}) t1 := make(map[interface{}]interface{}, 0) t2 := make(map[interface{}]interface{}, 0) data := make(map[string][]interface{}, 0) t := make([]map[string][]interface{}, 0) e1 := []interface{}{} e2 := []string{} for _, value := range queryList { if _, ok := t1[value["名称"]]; !ok { e1 = append(e1, value["名称"]) } if _, ok := t2[value["日期"]]; !ok { switch value["日期"].(type) { case string: e2 = append(e2, value["日期"].(string)) } } t1[value["名称"]] = value["名称"] t2[value["日期"]] = value["日期"] } sort.Strings(e2) var b interface{} a := 0 for i := 0; i < len(queryList); i++ { if i == 0 { b = queryList[i]["名称"] } if b != queryList[i]["名称"] { if a < len(e2)-1 { for k := 0; k < len(e2)-a; k++ { data["data"] = append(data["data"], "") } } t = append(t, data) data = make(map[string][]interface{}, 0) b = queryList[i]["名称"] a = 0 } switch queryList[i]["日期"].(type) { case string: dates, _ := time.Parse("2006-01-02", queryList[i]["日期"].(string)) dates1 := "" if a < len(e2) -1{ dates1 = e2[a] }else { dates1 = e2[len(e2)-1] } if a < len(e2)-1 { if e2[a] != queryList[i]["日期"].(string) { if e2[a] < queryList[i]["日期"].(string) { dates1 = queryList[i]["日期"].(string) dates, _ = time.Parse("2006-01-02", e2[a]) for ; a < len(e2)-1; a++ { if e2[a] >= queryList[i]["日期"].(string) { break } } } for ; dates.Format("2006-01-02") < dates1; dates = dates.Add(24 * time.Hour) { data["data"] = append(data["data"], "") } } } } data["data"] = append(data["data"], queryList[i]["准确率"]) a++ } if a < len(e2)-1 { for k := 0; k < len(e2)-a; k++ { data["data"] = append(data["data"], "") } } t = append(t, data) chartData["data1"] = e1 chartData["data2"] = e2 chartData["data3"] = t queryData["list"] = chartData queryData["code"] = 0 queryData["message"] = "ok" queryData["data"] = queryList return queryData, nil }