master
wubin 5 years ago
parent c56699c2db
commit 121d1416e3

@ -12,6 +12,41 @@ import (
var esClient = EsUtil.EsClient
var CTX = EsUtil.CTX
func PageEduAssistInfoByDistrictCode(districtCode string) ([]SchoolModel.EduAssist, error) {
enableFlagTerm := elastic.NewTermQuery("enable_flag", 1)
delFlagTerm := elastic.NewTermQuery("del_flag", 0)
districtCodeTerm := elastic.NewTermQuery("district_code", districtCode)
orgTypeTerm := elastic.NewTermQuery("org_type", "3")
bUseTerm := elastic.NewTermQuery("data_content.b_use", 1)
boolQuery := elastic.NewBoolQuery().Must(enableFlagTerm, delFlagTerm, districtCodeTerm, orgTypeTerm, bUseTerm)
result, err := esClient.Search().
Index("org_school").
Query(boolQuery).
Size(1000).
Do(CTX)
if err != nil {
return nil, err
}
resByte, err := json.Marshal(result.Hits)
if err != nil {
return nil, err
}
var eduAssistArr []SchoolModel.EduAssist
resStr := string(resByte)
resCount := gjson.Get(resStr, "total.value")
for i := 0; i < int(resCount.Num); i++ {
var eduAssist SchoolModel.EduAssist
eduAssist.EduAssistId = gjson.Get(resStr, "hits."+CommonUtil.ConvertIntToString(i)+"._source.data_content.org_id").Str
eduAssist.EduAssistName = gjson.Get(resStr, "hits."+CommonUtil.ConvertIntToString(i)+"._source.data_content.org_name").Str
eduAssistArr = append(eduAssistArr, eduAssist)
}
return eduAssistArr, nil
}
/**

@ -5,6 +5,11 @@ type School struct {
SchoolName string `json:"school_name"`
}
type EduAssist struct {
EduAssistId string `json:"eduassist_id"`
EduAssistName string `json:"eduassist_name"`
}
type EduAssistCountAggsDistrict struct {
AreaCode string `json:"area_code"`
Count string `json:"count"`

@ -16,6 +16,11 @@ func PageSchoolInfoByDistrictCode(districtCode string, xxbxlxm string) ([]School
return arr, err
}
func PageEduAssistInfoByDistrictCode(districtCode string) ([]SchoolModel.EduAssist, error) {
arr, err := SchoolDao.PageEduAssistInfoByDistrictCode(districtCode)
return arr, err
}
/**

@ -17,12 +17,66 @@ func Routers(r *gin.RouterGroup) {
rr := r.Group("/student")
rr.GET("/GetStudentCountAggsXxbxlxByArea", GetStudentCountAggsXxbxlxByArea)
rr.GET("/GetStudentCountAggsOrgByDistrict", GetStudentCountAggsOrgByDistrict)
return
}
/*
*/
func GetStudentCountAggsOrgByDistrict(c *gin.Context) {
districtCode := c.Query("districtCode")
//获取学校的数组
schoolArr := make([]string, 0)
schoolInfo, err := SchoolService.PageSchoolInfoByDistrictCode(districtCode, "-1")
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
for i := range schoolInfo {
schoolArr = append(schoolArr, schoolInfo[i].SchoolId)
}
resArr, err := StudentService.GetStudentCountAggsOrgId(schoolArr)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
resMap := make(map[string]int)
for i := range resArr {
resMap[resArr[i].OrgId] = resArr[i].Count
}
StudentCountOrgArr := make([]StudentModel.StudentCountOrg, 0)
for i := range schoolInfo {
var studentCountOrg StudentModel.StudentCountOrg
schoolId := schoolInfo[i].SchoolId
studentCountOrg.OrgId = schoolId
studentCountOrg.OrgName = schoolInfo[i].SchoolName
if _, ok := resMap[schoolId]; ok {
studentCountOrg.Count = resMap[schoolId]
}
StudentCountOrgArr = append(StudentCountOrgArr, studentCountOrg)
}
c.JSON(http.StatusOK, Model.Res{
Success: true,
List: StudentCountOrgArr,
})
}
/*
*/
func GetStudentCountAggsXxbxlxByArea(c *gin.Context) {
areaCode := c.Query("areaCode")
@ -82,7 +136,7 @@ func GetStudentCountAggsXxbxlxByArea(c *gin.Context) {
xxbxlxArr = append(xxbxlxArr, xxbxlxInfo[i].DictCode)
}
resArr, err := StudentService.GetStudentCountAggsXxbxlxByCityOrDistrict(districtArr, schoolArr, xxbxlxArr)
resArr, err := StudentService.GetStudentCountAggsXxbxlx(districtArr, schoolArr, xxbxlxArr)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
@ -96,9 +150,9 @@ func GetStudentCountAggsXxbxlxByArea(c *gin.Context) {
resMap[resArr[i].XxbxlxCode] = resArr[i].Count
}
StudentCountArr := make([]StudentModel.StudentCount, 0)
StudentCountArr := make([]StudentModel.StudentCountXxbxlx, 0)
for i := range xxbxlxInfo {
var studentCount StudentModel.StudentCount
var studentCount StudentModel.StudentCountXxbxlx
dictCode := xxbxlxInfo[i].DictCode
studentCount.XxbxlxCode = dictCode
studentCount.XxbxlxName = xxbxlxInfo[i].DictValue
@ -112,5 +166,4 @@ func GetStudentCountAggsXxbxlxByArea(c *gin.Context) {
Success: true,
List: StudentCountArr,
})
}

@ -12,7 +12,7 @@ import (
var esClient = EsUtil.EsClient
var CTX = EsUtil.CTX
func GetStudentCountAggsXxbxlxByCityOrDistrict(districtCode []string, schoolIds []string, xxbxlxs []string) ([]StudentModel.StudentCountAggsXxbxlx, error) {
func GetStudentCountAggsXxbxlx(districtCode []string, schoolIds []string, xxbxlxs []string) ([]StudentModel.StudentCountAggsXxbxlx, error) {
enableFlagTerm := elastic.NewTermQuery("enable_flag", 1)
delFlagTerm := elastic.NewTermQuery("del_flag", 0)
bUseTerm := elastic.NewTermQuery("data_content.b_use", 1)
@ -62,3 +62,43 @@ func GetStudentCountAggsXxbxlxByCityOrDistrict(districtCode []string, schoolIds
return studentCountAggsXxbxlxArr, nil
}
func GetStudentCountAggsOrgId(schoolIds []string) ([]StudentModel.StudentCountAggsOrg, error) {
enableFlagTerm := elastic.NewTermQuery("enable_flag", 1)
delFlagTerm := elastic.NewTermQuery("del_flag", 0)
bUseTerm := elastic.NewTermQuery("data_content.b_use", 1)
interfaceArr := CommonUtil.ConvertStringArrToInterfaceArr(schoolIds)
orgIdTerms := elastic.NewTermsQuery("org_id", interfaceArr...)
boolQuery := elastic.NewBoolQuery().Must(orgIdTerms, enableFlagTerm, delFlagTerm, bUseTerm, orgIdTerms)
orgIdAggs := elastic.
NewTermsAggregation().
Field("org_id").
Size(1000)
result, err := esClient.Search().
Index("user_student").
Query(boolQuery).
Size(1000).
Aggregation("orgId", orgIdAggs).
Do(CTX)
if err != nil {
return nil, err
}
resByte, err := json.Marshal(result.Aggregations)
resStr := string(resByte)
var StudentCountAggsOrgArr []StudentModel.StudentCountAggsOrg
resCount := gjson.Get(resStr, "orgId.buckets.#")
for i := 0; i < int(resCount.Num); i++ {
var studentCountAggsOrg StudentModel.StudentCountAggsOrg
studentCountAggsOrg.OrgId = gjson.Get(resStr, "orgId.buckets."+CommonUtil.ConvertIntToString(i)+".key").Str
studentCountAggsOrg.Count = int(gjson.Get(resStr, "orgId.buckets."+CommonUtil.ConvertIntToString(i)+".doc_count").Num)
StudentCountAggsOrgArr = append(StudentCountAggsOrgArr, studentCountAggsOrg)
}
return StudentCountAggsOrgArr, nil
}

@ -5,8 +5,30 @@ type StudentCountAggsXxbxlx struct {
Count int `json:"count"`
}
type StudentCount struct {
type StudentCountXxbxlx struct {
XxbxlxCode string `json:"xxbxlx_code"`
XxbxlxName string `json:"xxbxlx_name"`
Count int `json:"count"`
}
type StudentCountAggsOrg struct {
OrgId string `json:"org_id"`
Count int `json:"count"`
}
type StudentCountOrg struct {
OrgId string `json:"org_id"`
OrgName string `json:"org_name"`
Count int `json:"count"`
}
type StudentCountAggsRxnf struct {
OrgId string `json:"org_id"`
Count int `json:"count"`
}
type StudentCountRxnf struct {
OrgId string `json:"org_id"`
OrgName string `json:"org_name"`
Count int `json:"count"`
}

@ -5,7 +5,12 @@ import (
"dsBigData/Business/Student/StudentModel"
)
func GetStudentCountAggsXxbxlxByCityOrDistrict(districtCodes []string, schoolIds []string, xxbxlxs []string) ([]StudentModel.StudentCountAggsXxbxlx, error) {
arr, err := StudentDao.GetStudentCountAggsXxbxlxByCityOrDistrict(districtCodes, schoolIds, xxbxlxs)
func GetStudentCountAggsXxbxlx(districtCodes []string, schoolIds []string, xxbxlxs []string) ([]StudentModel.StudentCountAggsXxbxlx, error) {
arr, err := StudentDao.GetStudentCountAggsXxbxlx(districtCodes, schoolIds, xxbxlxs)
return arr, err
}
func GetStudentCountAggsOrgId(schoolIds []string) ([]StudentModel.StudentCountAggsOrg, error) {
arr, err := StudentDao.GetStudentCountAggsOrgId(schoolIds)
return arr, err
}

@ -17,10 +17,118 @@ func Routers(r *gin.RouterGroup) {
rr := r.Group("/teacher")
rr.GET("/GetTeacherCountAggsXxbxlxByArea", GetTeacherCountAggsXxbxlxByArea)
rr.GET("/GetTeacherCountAggsOrgByDistrict", GetTeacherCountAggsSchoolByDistrict)
rr.GET("/GetTeacherCountAggsEduAssistByDistrict", GetTeacherCountAggsEduAssistByDistrict)
return
}
/*
*/
func GetTeacherCountAggsEduAssistByDistrict(c *gin.Context) {
districtCode := c.Query("districtCode")
//获取教辅单位的数组
eduAssistArr := make([]string, 0)
eduAssistInfo, err := SchoolService.PageEduAssistInfoByDistrictCode(districtCode)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
for i := range eduAssistInfo {
eduAssistArr = append(eduAssistArr, eduAssistInfo[i].EduAssistId)
}
resArr, err := TeacherService.GetTeacherCountAggsOrgId(eduAssistArr)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
resMap := make(map[string]int)
for i := range resArr {
resMap[resArr[i].OrgId] = resArr[i].Count
}
teacherCountOrgArr := make([]TeacherModel.TeacherCountOrg, 0)
for i := range eduAssistInfo {
var teacherCountOrg TeacherModel.TeacherCountOrg
eduAssistId := eduAssistInfo[i].EduAssistId
teacherCountOrg.OrgId = eduAssistId
teacherCountOrg.OrgName = eduAssistInfo[i].EduAssistName
if _, ok := resMap[eduAssistId]; ok {
teacherCountOrg.Count = resMap[eduAssistId]
}
teacherCountOrgArr = append(teacherCountOrgArr, teacherCountOrg)
}
c.JSON(http.StatusOK, Model.Res{
Success: true,
List: teacherCountOrgArr,
})
}
/*
*/
func GetTeacherCountAggsSchoolByDistrict(c *gin.Context) {
districtCode := c.Query("districtCode")
//获取学校的数组
schoolArr := make([]string, 0)
schoolInfo, err := SchoolService.PageSchoolInfoByDistrictCode(districtCode, "-1")
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
for i := range schoolInfo {
schoolArr = append(schoolArr, schoolInfo[i].SchoolId)
}
resArr, err := TeacherService.GetTeacherCountAggsOrgId(schoolArr)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
resMap := make(map[string]int)
for i := range resArr {
resMap[resArr[i].OrgId] = resArr[i].Count
}
teacherCountOrgArr := make([]TeacherModel.TeacherCountOrg, 0)
for i := range schoolInfo {
var teacherCountOrg TeacherModel.TeacherCountOrg
schoolId := schoolInfo[i].SchoolId
teacherCountOrg.OrgId = schoolId
teacherCountOrg.OrgName = schoolInfo[i].SchoolName
if _, ok := resMap[schoolId]; ok {
teacherCountOrg.Count = resMap[schoolId]
}
teacherCountOrgArr = append(teacherCountOrgArr, teacherCountOrg)
}
c.JSON(http.StatusOK, Model.Res{
Success: true,
List: teacherCountOrgArr,
})
}
/*
*/
@ -96,9 +204,9 @@ func GetTeacherCountAggsXxbxlxByArea(c *gin.Context) {
resMap[resArr[i].XxbxlxCode] = resArr[i].Count
}
TeacherCountArr := make([]TeacherModel.TeacherCount, 0)
TeacherCountArr := make([]TeacherModel.TeacherCountXxbxlx, 0)
for i := range xxbxlxInfo {
var teacherCount TeacherModel.TeacherCount
var teacherCount TeacherModel.TeacherCountXxbxlx
dictCode := xxbxlxInfo[i].DictCode
teacherCount.XxbxlxCode = dictCode
teacherCount.XxbxlxName = xxbxlxInfo[i].DictValue

@ -62,3 +62,43 @@ func GetTeacherCountAggsXxbxlxByCityOrDistrict(districtCode []string, schoolIds
return teacherCountAggsXxbxlxArr, nil
}
func GetTeacherCountAggsOrgId(schoolIds []string) ([]TeacherModel.TeacherCountAggsOrg, error) {
enableFlagTerm := elastic.NewTermQuery("enable_flag", 1)
delFlagTerm := elastic.NewTermQuery("del_flag", 0)
bUseTerm := elastic.NewTermQuery("data_content.b_use", 1)
interfaceArr := CommonUtil.ConvertStringArrToInterfaceArr(schoolIds)
orgIdTerms := elastic.NewTermsQuery("org_id", interfaceArr...)
boolQuery := elastic.NewBoolQuery().Must(orgIdTerms, enableFlagTerm, delFlagTerm, bUseTerm, orgIdTerms)
orgIdAggs := elastic.
NewTermsAggregation().
Field("org_id").
Size(1000)
result, err := esClient.Search().
Index("user_teacher").
Query(boolQuery).
Size(1000).
Aggregation("orgId", orgIdAggs).
Do(CTX)
if err != nil {
return nil, err
}
resByte, err := json.Marshal(result.Aggregations)
resStr := string(resByte)
var teacherCountAggsOrgArr []TeacherModel.TeacherCountAggsOrg
resCount := gjson.Get(resStr, "orgId.buckets.#")
for i := 0; i < int(resCount.Num); i++ {
var teacherCountAggsOrg TeacherModel.TeacherCountAggsOrg
teacherCountAggsOrg.OrgId = gjson.Get(resStr, "orgId.buckets."+CommonUtil.ConvertIntToString(i)+".key").Str
teacherCountAggsOrg.Count = int(gjson.Get(resStr, "orgId.buckets."+CommonUtil.ConvertIntToString(i)+".doc_count").Num)
teacherCountAggsOrgArr = append(teacherCountAggsOrgArr, teacherCountAggsOrg)
}
return teacherCountAggsOrgArr, nil
}

@ -5,9 +5,20 @@ type TeacherCountAggsXxbxlx struct {
Count int `json:"count"`
}
type TeacherCount struct {
type TeacherCountXxbxlx struct {
XxbxlxCode string `json:"xxbxlx_code"`
XxbxlxName string `json:"xxbxlx_name"`
Count int `json:"count"`
}
type TeacherCountAggsOrg struct {
OrgId string `json:"org_id"`
Count int `json:"count"`
}
type TeacherCountOrg struct {
OrgId string `json:"org_id"`
OrgName string `json:"org_name"`
Count int `json:"count"`
}

@ -9,3 +9,8 @@ func GetTeacherCountAggsXxbxlxByCityOrDistrict(districtCodes []string, schoolIds
arr, err := TeacherDao.GetTeacherCountAggsXxbxlxByCityOrDistrict(districtCodes, schoolIds, xxbxlxs)
return arr, err
}
func GetTeacherCountAggsOrgId(schoolIds []string) ([]TeacherModel.TeacherCountAggsOrg, error) {
arr, err := TeacherDao.GetTeacherCountAggsOrgId(schoolIds)
return arr, err
}

Loading…
Cancel
Save