package TeacherController import ( "dsBigData/Business/Area/AreaService" "dsBigData/Business/Dict/DictService" "dsBigData/Business/School/SchoolService" "dsBigData/Business/Teacher/TeacherModel" "dsBigData/Business/Teacher/TeacherService" "dsBigData/Model" "github.com/gin-gonic/gin" "net/http" "strings" ) //模块的路由配置 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, }) } /* 功能:根据市或区的编码聚合办学类型获取学生数量 */ func GetTeacherCountAggsXxbxlxByArea(c *gin.Context) { areaCode := c.Query("areaCode") cityCode := "" districtCode := "" if strings.HasSuffix(areaCode, "00") { //市 cityCode = areaCode } else { //区 districtCode = areaCode } //获取区的数组 districtArr := make([]string, 0) if len(cityCode) > 0 { //获取区信息 areaInfo, err := AreaService.PageDistrictByCityCode(cityCode, "-1") if err != nil { c.JSON(http.StatusOK, Model.Res{ Success: false, Message: err.Error(), }) return } for i := range areaInfo { districtArr = append(districtArr, areaInfo[i].AreaCode) } } //获取学校的数组 schoolArr := make([]string, 0) if len(districtCode) > 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) } } //获取办学类型数组 xxbxlxInfo, err := DictService.GetDictInfo("xxbxlxm") if err != nil { c.JSON(http.StatusOK, Model.Res{ Success: false, Message: err.Error(), }) return } xxbxlxArr := make([]string, 0) for i := range xxbxlxInfo { xxbxlxArr = append(xxbxlxArr, xxbxlxInfo[i].DictCode) } resArr, err := TeacherService.GetTeacherCountAggsXxbxlxByCityOrDistrict(districtArr, schoolArr, xxbxlxArr) 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].XxbxlxCode] = resArr[i].Count } TeacherCountArr := make([]TeacherModel.TeacherCountXxbxlx, 0) for i := range xxbxlxInfo { var teacherCount TeacherModel.TeacherCountXxbxlx dictCode := xxbxlxInfo[i].DictCode teacherCount.XxbxlxCode = dictCode teacherCount.XxbxlxName = xxbxlxInfo[i].DictValue if _, ok := resMap[dictCode]; ok { teacherCount.Count = resMap[dictCode] } TeacherCountArr = append(TeacherCountArr, teacherCount) } c.JSON(http.StatusOK, Model.Res{ Success: true, List: TeacherCountArr, }) }