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.

310 lines
7.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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