master
wubin 5 years ago
parent 40fc07f423
commit 1f0454d2b2

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

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

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

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

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

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

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

Binary file not shown.
Loading…
Cancel
Save