master
wubin 5 years ago
parent 40fc07f423
commit 1f0454d2b2

@ -7,6 +7,7 @@ import (
"dsBigData/Business/Student/StudentModel"
"dsBigData/Business/Student/StudentService"
"dsBigData/Model"
"dsBigData/Utils/CommonUtil"
"github.com/gin-gonic/gin"
"net/http"
"strings"
@ -72,10 +73,12 @@ func GetStudentCountAggsRxnfBySchoolId(c *gin.Context) {
*/
func GetStudentCountAggsOrgByDistrict(c *gin.Context) {
districtCode := c.Query("districtCode")
//学校办学类型 -1为全部
xxbxlx := c.Query("xxbxlx")
//获取学校的数组
schoolArr := make([]string, 0)
schoolInfo, err := SchoolService.PageSchoolInfoByDistrictCode(districtCode, "-1")
schoolInfo, err := SchoolService.PageSchoolInfoByDistrictCode(districtCode, xxbxlx)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
@ -113,6 +116,8 @@ func GetStudentCountAggsOrgByDistrict(c *gin.Context) {
StudentCountOrgArr = append(StudentCountOrgArr, studentCountOrg)
}
CommonUtil.SortItems(StudentCountOrgArr, "Count", "desc")
c.JSON(http.StatusOK, Model.Res{
Success: true,
List: StudentCountOrgArr,
@ -190,9 +195,11 @@ func GetStudentCountAggsXxbxlxByArea(c *gin.Context) {
return
}
resMap := make(map[string]int)
resMapCount := make(map[string]int)
resMapPercent := make(map[string]string)
for i := range resArr {
resMap[resArr[i].XxbxlxCode] = resArr[i].Count
resMapCount[resArr[i].XxbxlxCode] = resArr[i].Count
resMapPercent[resArr[i].XxbxlxCode] = resArr[i].Percent
}
StudentCountArr := make([]StudentModel.StudentCountXxbxlx, 0)
@ -201,8 +208,11 @@ func GetStudentCountAggsXxbxlxByArea(c *gin.Context) {
dictCode := xxbxlxInfo[i].DictCode
studentCount.XxbxlxCode = dictCode
studentCount.XxbxlxName = xxbxlxInfo[i].DictValue
if _, ok := resMap[dictCode]; ok {
studentCount.Count = resMap[dictCode]
if _, ok := resMapCount[dictCode]; ok {
studentCount.Count = resMapCount[dictCode]
}
if _, ok := resMapPercent[dictCode]; ok {
studentCount.Percent = resMapPercent[dictCode]
}
StudentCountArr = append(StudentCountArr, studentCount)
}

@ -93,6 +93,7 @@ func GetStudentCountAggsXxbxlx(districtCode []string, schoolIds []string, xxbxlx
Query(boolQuery).
Size(0).
Aggregation("xxbxlx", xxbxlxAggs).
TrackTotalHits(true).
Do(CTX)
if err != nil {
@ -101,13 +102,18 @@ func GetStudentCountAggsXxbxlx(districtCode []string, schoolIds []string, xxbxlx
resByte, err := json.Marshal(result.Aggregations)
resStr := string(resByte)
totalCount := CommonUtil.ConvertInt64ToString(result.TotalHits())
totalCountFloat, _ := strconv.ParseFloat(totalCount, 64)
var studentCountAggsXxbxlxArr []StudentModel.StudentCountAggsXxbxlx
resCount := gjson.Get(resStr, "xxbxlx.buckets.#")
for i := 0; i < int(resCount.Num); i++ {
var studentCountAggsXxbxlx StudentModel.StudentCountAggsXxbxlx
studentCountAggsXxbxlx.XxbxlxCode = gjson.Get(resStr, "xxbxlx.buckets."+CommonUtil.ConvertIntToString(i)+".key").Str
studentCountAggsXxbxlx.Count = int(gjson.Get(resStr, "xxbxlx.buckets."+CommonUtil.ConvertIntToString(i)+".doc_count").Num)
percent := gjson.Get(resStr, "xxbxlx.buckets."+CommonUtil.ConvertIntToString(i)+".doc_count").Num / totalCountFloat * 100
percentFloat, _ := strconv.ParseFloat(fmt.Sprintf("%.0f", percent), 64)
percentString := CommonUtil.ConverFloat64ToString(percentFloat)
studentCountAggsXxbxlx.Percent = percentString + "%"
studentCountAggsXxbxlxArr = append(studentCountAggsXxbxlxArr, studentCountAggsXxbxlx)
}

@ -3,12 +3,14 @@ package StudentModel
type StudentCountAggsXxbxlx struct {
XxbxlxCode string `json:"xxbxlx_code"`
Count int `json:"count"`
Percent string `json:"percent"`
}
type StudentCountXxbxlx struct {
XxbxlxCode string `json:"xxbxlx_code"`
XxbxlxName string `json:"xxbxlx_name"`
Count int `json:"count"`
Percent string `json:"percent"`
}
type StudentCountAggsOrg struct {

@ -7,6 +7,7 @@ import (
"dsBigData/Business/Teacher/TeacherModel"
"dsBigData/Business/Teacher/TeacherService"
"dsBigData/Model"
"dsBigData/Utils/CommonUtil"
"github.com/gin-gonic/gin"
"net/http"
"strings"
@ -156,10 +157,12 @@ func GetTeacherCountAggsEduAssistByDistrict(c *gin.Context) {
*/
func GetTeacherCountAggsSchoolByDistrict(c *gin.Context) {
districtCode := c.Query("districtCode")
//学校办学类型 -1为全部
xxbxlx := c.Query("xxbxlx")
//获取学校的数组
schoolArr := make([]string, 0)
schoolInfo, err := SchoolService.PageSchoolInfoByDistrictCode(districtCode, "-1")
schoolInfo, err := SchoolService.PageSchoolInfoByDistrictCode(districtCode, xxbxlx)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
@ -197,6 +200,8 @@ func GetTeacherCountAggsSchoolByDistrict(c *gin.Context) {
teacherCountOrgArr = append(teacherCountOrgArr, teacherCountOrg)
}
CommonUtil.SortItems(teacherCountOrgArr, "Count", "desc")
c.JSON(http.StatusOK, Model.Res{
Success: true,
List: teacherCountOrgArr,
@ -274,9 +279,11 @@ func GetTeacherCountAggsXxbxlxByArea(c *gin.Context) {
return
}
resMap := make(map[string]int)
resMapCount := make(map[string]int)
resMapPercent := make(map[string]string)
for i := range resArr {
resMap[resArr[i].XxbxlxCode] = resArr[i].Count
resMapCount[resArr[i].XxbxlxCode] = resArr[i].Count
resMapPercent[resArr[i].XxbxlxCode] = resArr[i].Percent
}
TeacherCountArr := make([]TeacherModel.TeacherCountXxbxlx, 0)
@ -285,8 +292,11 @@ func GetTeacherCountAggsXxbxlxByArea(c *gin.Context) {
dictCode := xxbxlxInfo[i].DictCode
teacherCount.XxbxlxCode = dictCode
teacherCount.XxbxlxName = xxbxlxInfo[i].DictValue
if _, ok := resMap[dictCode]; ok {
teacherCount.Count = resMap[dictCode]
if _, ok := resMapCount[dictCode]; ok {
teacherCount.Count = resMapCount[dictCode]
}
if _, ok := resMapPercent[dictCode]; ok {
teacherCount.Percent = resMapPercent[dictCode]
}
TeacherCountArr = append(TeacherCountArr, teacherCount)
}

@ -91,6 +91,7 @@ func GetTeacherCountAggsXxbxlxByCityOrDistrict(districtCode []string, schoolIds
Query(boolQuery).
Size(0).
Aggregation("xxbxlx", xxbxlxAggs).
TrackTotalHits(true).
Do(CTX)
if err != nil {
@ -99,14 +100,18 @@ func GetTeacherCountAggsXxbxlxByCityOrDistrict(districtCode []string, schoolIds
resByte, err := json.Marshal(result.Aggregations)
resStr := string(resByte)
totalCount := CommonUtil.ConvertInt64ToString(result.TotalHits())
totalCountFloat, _ := strconv.ParseFloat(totalCount, 64)
var teacherCountAggsXxbxlxArr []TeacherModel.TeacherCountAggsXxbxlx
resCount := gjson.Get(resStr, "xxbxlx.buckets.#")
for i := 0; i < int(resCount.Num); i++ {
var teacherCountAggsXxbxlx TeacherModel.TeacherCountAggsXxbxlx
teacherCountAggsXxbxlx.XxbxlxCode = gjson.Get(resStr, "xxbxlx.buckets."+CommonUtil.ConvertIntToString(i)+".key").Str
teacherCountAggsXxbxlx.Count = int(gjson.Get(resStr, "xxbxlx.buckets."+CommonUtil.ConvertIntToString(i)+".doc_count").Num)
percent := gjson.Get(resStr, "xxbxlx.buckets."+CommonUtil.ConvertIntToString(i)+".doc_count").Num / totalCountFloat * 100
percentFloat, _ := strconv.ParseFloat(fmt.Sprintf("%.0f", percent), 64)
percentString := CommonUtil.ConverFloat64ToString(percentFloat)
teacherCountAggsXxbxlx.Percent = percentString + "%"
teacherCountAggsXxbxlxArr = append(teacherCountAggsXxbxlxArr, teacherCountAggsXxbxlx)
}
return teacherCountAggsXxbxlxArr, nil

@ -3,12 +3,14 @@ package TeacherModel
type TeacherCountAggsXxbxlx struct {
XxbxlxCode string `json:"xxbxlx_code"`
Count int `json:"count"`
Percent string `json:"percent"`
}
type TeacherCountXxbxlx struct {
XxbxlxCode string `json:"xxbxlx_code"`
XxbxlxName string `json:"xxbxlx_name"`
Count int `json:"count"`
Percent string `json:"percent"`
}
type TeacherCountAggsOrg struct {

@ -1,6 +1,7 @@
package Router
import (
"dsBigData/Business/Dict/DictController"
"dsBigData/Business/School/SchoolController"
"dsBigData/Business/Student/StudentController"
"dsBigData/Business/Teacher/TeacherController"
@ -15,5 +16,6 @@ func GinRouter(r *gin.Engine) {
SchoolController.Routers(rr)
StudentController.Routers(rr)
TeacherController.Routers(rr)
DictController.Routers(rr)
}

Binary file not shown.
Loading…
Cancel
Save