| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106 | 
							- 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{})
 
- 	}
 
- 	if queryList[0]["sumlweight"] != nil{
 
- 		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; i<count2 ; i++ {
 
- 	//	reslist := make([]map[string]interface{},1)
 
- 	//	res := make(map[string]interface{})
 
- 	//	res["fname"] = "分界线"
 
- 	//	res["feedname"] = mapc2[i]
 
- 	//	res["饲料名称"] = mapc2[i]
 
- 	//	reslist[0] = res
 
- 	//	queryList = append(reslist,queryList...)
 
- 	//}
 
- 	for i := 0; i < count2; i++ { // 将所有饲料种类新增为第一行 测试
 
- 		if _, ok := temsmap[mapc2[i]]; !ok {
 
- 			reslist := make([]map[string]interface{}, 1)
 
- 			res := make(map[string]interface{})
 
- 			res["fname"] = temstr
 
- 			res["feedname"] = mapc2[i]
 
- 			res["饲料名称"] = mapc2[i]
 
- 			res["typestr"] = typestr
 
- 			reslist[0] = res
 
- 			queryList = append(reslist, queryList...)
 
- 		}
 
- 	}
 
- 	for i := 0; i < len(queryList); i++ {
 
- 		a = mapc2[queryList[i]["feedname"]].(int) * 2
 
- 		if i == 0 {
 
- 			datamap2["label"] = "饲料名称"
 
- 			switch queryList[i]["typestr"].(type) {
 
- 			case string:
 
- 				datamap2child["label"] = queryList[i]["typestr"].(string) + "/饲料参数"
 
- 			default:
 
- 				datamap2child["label"] = "/饲料参数"
 
- 			}
 
- 			datamap2child["prop"] = "A"
 
- 			data3 = append(data3, datamap2child)
 
- 			datamap2["children"] = data3
 
- 			data2 = append(data2, datamap2)
 
- 			data3 = []interface{}{}
 
- 			datamap2child = make(map[string]interface{})
 
- 			datamap2 = make(map[string]interface{})
 
- 			dtem = queryList[i]["fname"]
 
- 		}
 
- 		if dtem != queryList[i]["fname"] && i != 0 {
 
- 			data1 = append(data1, datamap1)
 
- 			dtem = queryList[i]["fname"]
 
- 			datamap1 = make(map[string]interface{})
 
- 		}
 
- 		if queryList[i]["fname"] == temstr {
 
- 			datamap2["label"] = queryList[i]["feedname"]
 
- 			datamap2child["label"] = "理论"
 
- 			datamap2child["prop"] = "a" + strconv.Itoa(a)
 
- 			data3 = append(data3, datamap2child)
 
- 			datamap2child = make(map[string]interface{})
 
- 			datamap2child["label"] = "实际"
 
- 			datamap2child["prop"] = "a" + strconv.Itoa(a+1)
 
- 			data3 = append(data3, datamap2child)
 
- 			datamap2child = make(map[string]interface{})
 
- 			datamap2["children"] = data3
 
- 			data2 = append(data2, datamap2)
 
- 			data3 = []interface{}{}
 
- 			datamap2 = make(map[string]interface{})
 
- 			datamap2child = make(map[string]interface{})
 
- 		}
 
- 		datamap1["A"] = queryList[i]["fname"]
 
- 		datamap1["a"+strconv.Itoa(a)] = queryList[i]["lweight"]
 
- 		datamap1["a"+strconv.Itoa(a+1)] = queryList[i]["actualweightminus"]
 
- 		datamap2["label"] = queryList[i]["饲料名称"]
 
- 		a = a + 2
 
- 	}
 
- 	data1 = append(data1, datamap1)
 
- 	chartData["data1"] = data1
 
- 	chartData["data2"] = data2
 
- 	queryData["list"] = chartData
 
- 	queryData["code"] = 0
 
- 	queryData["message"] = "ok"
 
- 	queryData["data"] = queryList
 
- 	return queryData, nil
 
- }
 
- func getAccuracyV4(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{})
 
- 	mapc3 := make(map[interface{}]interface{})
 
- 	data3 := []interface{}{}
 
- 	datamap2child := make(map[string]interface{})
 
- 	data2 := []interface{}{}
 
- 	data1 := []interface{}{}
 
- 	a := 0
 
- 	var dtem interface{}
 
- 	count2 := 0
 
- 	var tem interface{}
 
- 	var temstr interface{}
 
- 	var typestr interface{}
 
- 	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; i < count2; i++ { // 将所有饲料种类新增为第一行 测试
 
- 		if _, ok := temsmap[mapc2[i]]; !ok {
 
- 			reslist := make([]map[string]interface{}, 1)
 
- 			res := make(map[string]interface{})
 
- 			res["fname"] = temstr
 
- 			res["feedname"] = mapc2[i]
 
- 			res["饲料名称"] = mapc2[i]
 
- 			res["typestr"] = typestr
 
- 			reslist[0] = res
 
- 			queryList = append(reslist, queryList...)
 
- 		}
 
- 	}
 
- 	//for i := 0; i<count2 ; i++ {
 
- 	//	reslist := make([]map[string]interface{},1)
 
- 	//	res := make(map[string]interface{})
 
- 	//	res["fname"] = "分界线"
 
- 	//	res["feedname"] = mapc2[i]
 
- 	//	res["饲料名称"] = mapc2[i]
 
- 	//	res["typestr"] =typestr
 
- 	//	reslist[0] = res
 
- 	//	queryList = append(reslist,queryList...)
 
- 	//}
 
- 	for i := 0; i < len(queryList); i++ {
 
- 		if i == 0 {
 
- 			tem = queryList[i]["fname"]
 
- 		}
 
- 		if queryList[i]["fname"] == tem {
 
- 			mapc3[queryList[i]["feedname"]] = i
 
- 		}
 
- 	}
 
- 	for i := 0; i < len(queryList); i++ {
 
- 		a = mapc2[queryList[i]["feedname"]].(int) * 4
 
- 		if i == 0 {
 
- 			datamap2["label"] = "饲料名称"
 
- 			switch queryList[i]["typestr"].(type) {
 
- 			case string:
 
- 				datamap2child["label"] = queryList[i]["typestr"].(string) + "/饲料参数"
 
- 			default:
 
- 				datamap2child["label"] = "/饲料参数"
 
- 			}
 
- 			datamap2child["prop"] = "A"
 
- 			data3 = append(data3, datamap2child)
 
- 			datamap2["children"] = data3
 
- 			data2 = append(data2, datamap2)
 
- 			data3 = []interface{}{}
 
- 			datamap2child = make(map[string]interface{})
 
- 			datamap2 = make(map[string]interface{})
 
- 			dtem = queryList[i]["fname"]
 
- 		}
 
- 		if dtem != queryList[i]["fname"] && i != 0 {
 
- 			data1 = append(data1, datamap1)
 
- 			dtem = queryList[i]["fname"]
 
- 			datamap1 = make(map[string]interface{})
 
- 		}
 
- 		if queryList[i]["fname"] == temstr {
 
- 			datamap2["label"] = queryList[i]["feedname"]
 
- 			datamap2child["label"] = "理论"
 
- 			datamap2child["prop"] = "a" + strconv.Itoa(a)
 
- 			data3 = append(data3, datamap2child)
 
- 			datamap2child = make(map[string]interface{})
 
- 			datamap2child["label"] = "实际"
 
- 			datamap2child["prop"] = "a" + strconv.Itoa(a+1)
 
- 			data3 = append(data3, datamap2child)
 
- 			datamap2child = make(map[string]interface{})
 
- 			datamap2child["label"] = "误差值"
 
- 			datamap2child["prop"] = "a" + strconv.Itoa(a+2)
 
- 			data3 = append(data3, datamap2child)
 
- 			datamap2child = make(map[string]interface{})
 
- 			datamap2child["label"] = "误差率"
 
- 			datamap2child["prop"] = "a" + strconv.Itoa(a+3)
 
- 			data3 = append(data3, datamap2child)
 
- 			datamap2["children"] = data3
 
- 			data2 = append(data2, datamap2)
 
- 			data3 = []interface{}{}
 
- 			datamap2 = make(map[string]interface{})
 
- 			datamap2child = make(map[string]interface{})
 
- 		}
 
- 		datamap1["A"] = queryList[i]["fname"]
 
- 		datamap1["a"+strconv.Itoa(a)] = queryList[i]["lweight"]
 
- 		datamap1["a"+strconv.Itoa(a+1)] = queryList[i]["actualweightminus"]
 
- 		datamap1["a"+strconv.Itoa(a+2)] = queryList[i]["diff"]
 
- 		datamap1["a"+strconv.Itoa(a+3)] = queryList[i]["diffrate"]
 
- 		datamap2["label"] = queryList[i]["饲料名称"]
 
- 	}
 
- 	data1 = append(data1, datamap1)
 
- 	chartData["data1"] = data1
 
- 	chartData["data2"] = data2
 
- 	queryData["list"] = chartData
 
- 	queryData["code"] = 0
 
- 	queryData["message"] = "ok"
 
- 	queryData["data"] = queryList
 
- 	return queryData, nil
 
- }
 
- func getAccuracyV3(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{}{}
 
- 	datatem := []interface{}{}
 
- 	t1 := make(map[interface{}]string, 0)
 
- 	for i := 0; i < len(queryList); i++ {
 
- 		data = append(data, queryList[i]["mtime"])
 
- 		data1 = append(data1, queryList[i]["lweight"])
 
- 		data2 = append(data2, queryList[i]["weight"])
 
- 		//data3 = append(data3, queryList[i]["field3"])
 
- 		//data4 = append(data4, queryList[i]["field4"])
 
- 		if _, ok := t1[queryList[i]["id"]]; !ok {
 
- 			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{}{}
 
- 		}
 
- 		t1[queryList[i]["id"]] = "1"
 
- 	}
 
- 	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 getAccuracyV3v1(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{}{}
 
- 	datatem := []interface{}{}
 
- 	//t1 := make(map[interface{}]string, 0)
 
- 	jsonstr := ""
 
- 	jsonmap := make([]map[string]interface{},0)
 
- 	if len(queryList)>0{
 
- 		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
 
- }
 
 
  |