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