diff --git a/dsBigData/Business/Student/StudentController/StudentController.go b/dsBigData/Business/Student/StudentController/StudentController.go index d622e9ad..28e76600 100644 --- a/dsBigData/Business/Student/StudentController/StudentController.go +++ b/dsBigData/Business/Student/StudentController/StudentController.go @@ -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) } diff --git a/dsBigData/Business/Student/StudentDao/StudentDao.go b/dsBigData/Business/Student/StudentDao/StudentDao.go index dbfa24d8..88301d39 100644 --- a/dsBigData/Business/Student/StudentDao/StudentDao.go +++ b/dsBigData/Business/Student/StudentDao/StudentDao.go @@ -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) } diff --git a/dsBigData/Business/Student/StudentModel/StudentModel.go b/dsBigData/Business/Student/StudentModel/StudentModel.go index 6e9d0e3c..1cbe7168 100644 --- a/dsBigData/Business/Student/StudentModel/StudentModel.go +++ b/dsBigData/Business/Student/StudentModel/StudentModel.go @@ -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 { diff --git a/dsBigData/Business/Teacher/TeacherController/TeacherController.go b/dsBigData/Business/Teacher/TeacherController/TeacherController.go index 80acb57b..bd9cd3c0 100644 --- a/dsBigData/Business/Teacher/TeacherController/TeacherController.go +++ b/dsBigData/Business/Teacher/TeacherController/TeacherController.go @@ -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) } diff --git a/dsBigData/Business/Teacher/TeacherDao/TeacherDao.go b/dsBigData/Business/Teacher/TeacherDao/TeacherDao.go index 14c01d69..e98329f7 100644 --- a/dsBigData/Business/Teacher/TeacherDao/TeacherDao.go +++ b/dsBigData/Business/Teacher/TeacherDao/TeacherDao.go @@ -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 diff --git a/dsBigData/Business/Teacher/TeacherModel/TeacherModel.go b/dsBigData/Business/Teacher/TeacherModel/TeacherModel.go index 16157fc2..5cfc62f6 100644 --- a/dsBigData/Business/Teacher/TeacherModel/TeacherModel.go +++ b/dsBigData/Business/Teacher/TeacherModel/TeacherModel.go @@ -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 { diff --git a/dsBigData/Router/BigDataRouter.go b/dsBigData/Router/BigDataRouter.go index cc38fe33..1323b6a3 100644 --- a/dsBigData/Router/BigDataRouter.go +++ b/dsBigData/Router/BigDataRouter.go @@ -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) } diff --git a/dsBigData/build/dsBigData b/dsBigData/build/dsBigData index 04181495..6ce1767f 100644 Binary files a/dsBigData/build/dsBigData and b/dsBigData/build/dsBigData differ