|
|
package StudentController
|
|
|
|
|
|
import (
|
|
|
"dsBigData/Business/Area/AreaService"
|
|
|
"dsBigData/Business/Dict/DictService"
|
|
|
"dsBigData/Business/School/SchoolService"
|
|
|
"dsBigData/Business/Student/StudentModel"
|
|
|
"dsBigData/Business/Student/StudentService"
|
|
|
"dsBigData/Model"
|
|
|
"dsBigData/Utils/CommonUtil"
|
|
|
"github.com/gin-gonic/gin"
|
|
|
"net/http"
|
|
|
"strings"
|
|
|
)
|
|
|
|
|
|
//模块的路由配置
|
|
|
func Routers(r *gin.RouterGroup) {
|
|
|
rr := r.Group("/student")
|
|
|
|
|
|
rr.GET("/GetStudentCountAggsXxbxlxByArea", GetStudentCountAggsXxbxlxByArea)
|
|
|
rr.GET("/GetStudentCountAggsOrgByDistrict", GetStudentCountAggsOrgByDistrict)
|
|
|
rr.GET("/GetStudentCountAggsRxnfBySchoolId", GetStudentCountAggsRxnfBySchoolId)
|
|
|
rr.GET("/GetStudentCountAggsXbBySchoolId", GetStudentCountAggsXbBySchoolId)
|
|
|
|
|
|
return
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:根据学校ID聚合性别获取学生数量
|
|
|
*/
|
|
|
func GetStudentCountAggsXbBySchoolId(c *gin.Context) {
|
|
|
schoolId := c.Query("schoolId")
|
|
|
|
|
|
resArr, err := StudentService.GetStudentCountAggsXb(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 GetStudentCountAggsRxnfBySchoolId(c *gin.Context) {
|
|
|
stageId := c.Query("stageId")
|
|
|
schoolId := c.Query("schoolId")
|
|
|
|
|
|
studentCountRxnfArr, err := StudentService.GetStudentCountAggsRxnf(schoolId, stageId)
|
|
|
if err != nil {
|
|
|
c.JSON(http.StatusOK, Model.Res{
|
|
|
Success: false,
|
|
|
Message: err.Error(),
|
|
|
})
|
|
|
return
|
|
|
}
|
|
|
c.JSON(http.StatusOK, Model.Res{
|
|
|
Success: true,
|
|
|
List: studentCountRxnfArr,
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
功能:根据区编码聚合学校获取学生数量
|
|
|
*/
|
|
|
func GetStudentCountAggsOrgByDistrict(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 := StudentService.GetStudentCountAggsOrgId(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
|
|
|
}
|
|
|
|
|
|
StudentCountOrgArr := make([]StudentModel.StudentCountOrg, 0)
|
|
|
for i := range schoolInfo {
|
|
|
var studentCountOrg StudentModel.StudentCountOrg
|
|
|
schoolId := schoolInfo[i].SchoolId
|
|
|
studentCountOrg.OrgId = schoolId
|
|
|
studentCountOrg.OrgName = schoolInfo[i].SchoolName
|
|
|
if _, ok := resMap[schoolId]; ok {
|
|
|
studentCountOrg.Count = resMap[schoolId]
|
|
|
}
|
|
|
StudentCountOrgArr = append(StudentCountOrgArr, studentCountOrg)
|
|
|
}
|
|
|
|
|
|
CommonUtil.SortItems(StudentCountOrgArr, "Count", "desc")
|
|
|
|
|
|
c.JSON(http.StatusOK, Model.Res{
|
|
|
Success: true,
|
|
|
List: StudentCountOrgArr,
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
功能:根据地区编码聚合办学类型获取学生数量
|
|
|
*/
|
|
|
func GetStudentCountAggsXxbxlxByArea(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 := StudentService.GetStudentCountAggsXxbxlx(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
|
|
|
}
|
|
|
|
|
|
StudentCountArr := make([]StudentModel.StudentCountXxbxlx, 0)
|
|
|
for i := range xxbxlxInfo {
|
|
|
var studentCount StudentModel.StudentCountXxbxlx
|
|
|
dictCode := xxbxlxInfo[i].DictCode
|
|
|
studentCount.XxbxlxCode = dictCode
|
|
|
studentCount.XxbxlxName = xxbxlxInfo[i].DictValue
|
|
|
if _, ok := resMapCount[dictCode]; ok {
|
|
|
studentCount.Count = resMapCount[dictCode]
|
|
|
}
|
|
|
if _, ok := resMapPercent[dictCode]; ok {
|
|
|
studentCount.Percent = resMapPercent[dictCode]
|
|
|
}
|
|
|
StudentCountArr = append(StudentCountArr, studentCount)
|
|
|
}
|
|
|
|
|
|
c.JSON(http.StatusOK, Model.Res{
|
|
|
Success: true,
|
|
|
List: StudentCountArr,
|
|
|
})
|
|
|
}
|