You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

225 lines
5.4 KiB

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,
})
}