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" "dsBigData/Utils/CommonUtil" "github.com/gin-gonic/gin" "net/http" "strings" ) //模块的路由配置 func Routers(r *gin.RouterGroup) { rr := r.Group("/teacher") rr.GET("/GetTeacherCountAggsXxbxlxByArea", GetTeacherCountAggsXxbxlxByArea) rr.GET("/GetTeacherCountAggsSchoolByDistrict", GetTeacherCountAggsSchoolByDistrict) rr.GET("/GetTeacherCountAggsEduAssistByDistrict", GetTeacherCountAggsEduAssistByDistrict) rr.GET("/GetTeacherCountAggsBzlbBySchoolId", GetTeacherCountAggsBzlbBySchoolId) rr.GET("/GetTeacherCountAggsXbBySchoolId", GetTeacherCountAggsXbBySchoolId) return } /** 功能:根据学校ID聚合性别获取教职工数量 */ func GetTeacherCountAggsXbBySchoolId(c *gin.Context) { schoolId := c.Query("schoolId") resArr, err := TeacherService.GetTeacherCountAggsXb(schoolId) if err != nil { c.JSON(http.StatusOK, Model.Res{ Success: false, Message: err.Error(), }) return } c.JSON(http.StatusOK, Model.Res{ Success: true, List: resArr, }) } /** 功能:根据学校ID聚合编制获取教师数量 */ func GetTeacherCountAggsBzlbBySchoolId(c *gin.Context) { schoolId := c.Query("schoolId") //获取办学类型数组 bzlbInfo, err := DictService.GetDictInfo("bzlbm") if err != nil { c.JSON(http.StatusOK, Model.Res{ Success: false, Message: err.Error(), }) return } bzlbArr := make([]string, 0) for i := range bzlbInfo { bzlbArr = append(bzlbArr, bzlbInfo[i].DictCode) } resArr, err := TeacherService.GetTeacherCountAggsBzlb(schoolId, bzlbArr) 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].BzlbCode] = resArr[i].Count } teacherCountBzlbArr := make([]TeacherModel.TeacherCountBzlb, 0) for i := range bzlbInfo { var teacherCountBzlb TeacherModel.TeacherCountBzlb bzlbm := bzlbInfo[i].DictCode teacherCountBzlb.BzlbCode = bzlbm teacherCountBzlb.BzlbName = bzlbInfo[i].DictValue if _, ok := resMap[bzlbm]; ok { teacherCountBzlb.Count = resMap[bzlbm] } teacherCountBzlbArr = append(teacherCountBzlbArr, teacherCountBzlb) } c.JSON(http.StatusOK, Model.Res{ Success: true, List: teacherCountBzlbArr, }) } /* 功能:根据区编码聚合教辅单位获取教师数量 */ 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") //学校办学类型 -1:为全部 xxbxlx := c.Query("xxbxlx") //获取学校的数组 schoolArr := make([]string, 0) schoolInfo, err := SchoolService.PageSchoolInfoByDistrictCode(districtCode, xxbxlx) 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) } CommonUtil.SortItems(teacherCountOrgArr, "Count", "desc") 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 } resMapCount := make(map[string]int) resMapPercent := make(map[string]string) for i := range resArr { resMapCount[resArr[i].XxbxlxCode] = resArr[i].Count resMapPercent[resArr[i].XxbxlxCode] = resArr[i].Percent } 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 := resMapCount[dictCode]; ok { teacherCount.Count = resMapCount[dictCode] } if _, ok := resMapPercent[dictCode]; ok { teacherCount.Percent = resMapPercent[dictCode] } TeacherCountArr = append(TeacherCountArr, teacherCount) } c.JSON(http.StatusOK, Model.Res{ Success: true, List: TeacherCountArr, }) }