| 
					
				 | 
			
			
				@@ -167,11 +167,23 @@ func praseReportform(sqlnamestr string, parammaps *gofasion.Fasion, tx *xorm.Ses 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			// fmt.Println(flleight) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		flleightint, _ := strconv.Atoi(flleight) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if sqlnamestr == "downloadPlanTSLJD" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			queryData, err = getAccuracyV9(queryList, sqlnamestr, flleightint, feednamesort3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// getAccuracyV9English 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		languageStatus := GetLanguageStatus() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if languageStatus == "0" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if sqlnamestr == "downloadPlanTSLJD" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				queryData, err = getAccuracyV9(queryList, sqlnamestr, flleightint, feednamesort3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				queryData, err = getAccuracyV9(queryList, sqlnamestr, flleightint, feednamesort) //投料简打、累加 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			queryData, err = getAccuracyV9(queryList, sqlnamestr, flleightint, feednamesort) //投料简打、累加 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if sqlnamestr == "downloadPlanTSLJD" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				queryData, err = getAccuracyV9English(queryList, sqlnamestr, flleightint, feednamesort3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				queryData, err = getAccuracyV9English(queryList, sqlnamestr, flleightint, feednamesort) //投料简打、累加 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		queryData, err = nil, nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -359,6 +371,189 @@ func getAccuracyV9(queryList []map[string]interface{}, sqlnamestr string, flleig 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	queryData["data"] = queryList 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return queryData, nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func getAccuracyV9English(queryList []map[string]interface{}, sqlnamestr string, flleightint int, feednamesort []string) (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"] = "Batch" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	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{}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//if sqlnamestr == "downloadPlanSFJD": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//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, feedNames []string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, feed := range feednamesort { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		feed = strings.ReplaceAll(feed, " ", "") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		mtem[feed] = struct{}{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// fmt.Println(feed) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		stem = append(stem, feed) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	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{}{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		feedNames = append(feedNames, queryList[i]["fname"].(string)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	sort.Strings(feedNames) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, feed := range feedNames { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if _, ok := mtem[feed]; ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			continue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// fmt.Println(feed) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		stem = append(stem, feed) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		mtem[feed] = struct{}{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	stemEnd := []string{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if sqlnamestr == "downloadPlanSFJD" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		bb := stem[len(stem)-flleightint : len(stem) : len(stem)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//aa := stem[0 : len(stem)-flleightint : len(stem)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		stemEnd = append(stemEnd, bb...) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		stemEnd = append(stemEnd, feednamesort...) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//fmt.Println(stemEnd) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		stemEnd = stem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//logging.Info("导出数据 ",stemEnd ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for _, va := range stemEnd { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		mapc3["label"] = va 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		mapc3["prop"] = va 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		data1 = append(data1, mapc3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		mapc3 = make(map[string]interface{}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if queryList[0]["sumlweight"] != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		mapc3["label"] = "Sum" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		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] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if mapc2["sumlweight"] != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var sumlweight float64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sumlweight, _ = strconv.ParseFloat(mapc2["sumlweight"].(string), 64) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				mapc2["sumlweight"] = sumlweight 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for key := range mtem { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				mapc2[xorm.String(key)] = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// var lweight float64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if queryList[i]["lweight"] != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// var error errors.Error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				lweight, err := strconv.ParseFloat(queryList[i]["lweight"].(string), 64) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if err == nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					mapc2[xorm.String(queryList[i]["fname"])] = lweight 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					mapc2[xorm.String(queryList[i]["fname"])] = queryList[i]["lweight"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				mapc2[xorm.String(queryList[i]["fname"])] = queryList[i]["lweight"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if tem == queryList[i]["projname"] { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// var lweight float64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if queryList[i]["lweight"] != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				lweight, err := strconv.ParseFloat(queryList[i]["lweight"].(string), 64) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if err == nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					mapc2[xorm.String(queryList[i]["fname"])] = lweight 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					mapc2[xorm.String(queryList[i]["fname"])] = queryList[i]["lweight"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				mapc2[xorm.String(queryList[i]["fname"])] = queryList[i]["lweight"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			data2 = append(data2, mapc2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			tem = queryList[i]["projname"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			mapc2 = queryList[i] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if mapc2["sumlweight"] != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var sumlweight float64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sumlweight, _ = strconv.ParseFloat(mapc2["sumlweight"].(string), 64) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				mapc2["sumlweight"] = sumlweight 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for key := range mtem { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				mapc2[xorm.String(key)] = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if queryList[i]["lweight"] != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				lweight, err := strconv.ParseFloat(queryList[i]["lweight"].(string), 64) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if err == nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					mapc2[xorm.String(queryList[i]["fname"])] = lweight 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					mapc2[xorm.String(queryList[i]["fname"])] = queryList[i]["lweight"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				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{}) 
			 |