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.

616 lines
18 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 SchoolController
import (
"dsBigData/Business/Area/AreaService"
"dsBigData/Business/Dict/DictService"
"dsBigData/Business/School/SchoolDao"
"dsBigData/Business/School/SchoolModel"
"dsBigData/Business/School/SchoolService"
"dsBigData/Business/Student/StudentService"
"dsBigData/Business/Teacher/TeacherService"
"dsBigData/Model"
"dsBigData/Utils/CommonUtil"
"encoding/json"
"github.com/gin-gonic/gin"
"net/http"
)
//模块的路由配置
func Routers(r *gin.RouterGroup) {
rr := r.Group("/school")
rr.GET("/GetSchoolCountByCity", GetSchoolCountByCity)
rr.GET("/GetEduAssistCountByCity", GetEduAssistCountByCity)
rr.GET("/PageStageBySchoolId", PageStageBySchoolId)
rr.GET("/GetCityBaseInfo", GetCityBaseInfo)
rr.GET("/GetDistrictBaseInfo", GetDistrictBaseInfo)
rr.GET("/GetSchoolBaseInfo", GetSchoolBaseInfo)
rr.GET("/GetBaseAccessTopByAreaCode", GetBaseAccessTopByAreaCode)
return
}
func test(c *gin.Context) {
count, _ := SchoolDao.GetOrgInfoByOrgIds([]string{"e2d0131a-b906-11ea-8315-f48e38f73cf7", "e2d01323-b906-11ea-8315-f48e38f73cf7", "e2d013b9-b906-11ea-8315-f48e38f73cf7", "e2d0147c-b906-11ea-8315-f48e38f73cf7", "e2d01485-b906-11ea-8315-f48e38f73cf7", "e2d01509-b906-11ea-8315-f48e38f73cf7", "e2d0151b-b906-11ea-8315-f48e38f73cf7", "e2d01524-b906-11ea-8315-f48e38f73cf7", "e2d01536-b906-11ea-8315-f48e38f73cf7", "e2d01549-b906-11ea-8315-f48e38f73cf7"})
c.JSON(http.StatusOK, Model.Res{
Success: true,
List: count,
})
}
func GetBaseAccessTopByAreaCode(c *gin.Context) {
areaCode := c.Query("areaCode")
topNum := c.Query("topNum")
resArr, err := SchoolService.GetBaseAccessTop(areaCode, topNum)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
resArrByte, _ := json.Marshal(resArr)
resList := CommonUtil.ConvertJsonStringToMapArray(string(resArrByte))
resMap := make(map[string]int)
orgArr := make([]string, 0)
for i := 0; i < len(resList); i++ {
orgId := resList[i]["org_id"].(string)
count := int(resList[i]["count"].(float64))
resMap[orgId] = count
orgArr = append(orgArr, orgId)
}
orgInfo, err := SchoolService.GetOrgInfoByOrgIds(orgArr)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
baseAccessTopArr := make([]SchoolModel.BaseAccessTop, 0)
for i := range orgInfo {
var baseAccessTop SchoolModel.BaseAccessTop
orgId := orgInfo[i].OrgId
orgName := orgInfo[i].OrgName
baseAccessTop.OrgId = orgId
baseAccessTop.OrgName = orgName
if _, ok := resMap[orgId]; ok {
baseAccessTop.Count = resMap[orgId]
}
baseAccessTopArr = append(baseAccessTopArr, baseAccessTop)
}
CommonUtil.SortItems(baseAccessTopArr, "Count", "desc")
c.JSON(http.StatusOK, Model.Res{
Success: true,
List: baseAccessTopArr,
})
}
/**
功能:获取市级的基本信息统计
*/
func GetCityBaseInfo(c *gin.Context) {
cityCode := c.Query("cityCode")
TotalCountAndCurrentTermCountArr := make([]SchoolModel.TotalCountAndCurrentTermCount, 0)
var schoolTotalCountAndCurrentTermCount SchoolModel.TotalCountAndCurrentTermCount
schoolTotalCount, err := SchoolService.GetOrgTotalCount(cityCode, "2")
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
schoolCurrentTermCount, err := SchoolService.GetOrgCurrentTermAddCount(cityCode, "2")
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
schoolTotalCountAndCurrentTermCount.Title = "学校数量"
schoolTotalCountAndCurrentTermCount.TotalCount = schoolTotalCount
schoolTotalCountAndCurrentTermCount.CurrentTermAddCount = schoolCurrentTermCount
TotalCountAndCurrentTermCountArr = append(TotalCountAndCurrentTermCountArr, schoolTotalCountAndCurrentTermCount)
var eduAssistTotalCountAndCurrentTermCount SchoolModel.TotalCountAndCurrentTermCount
eduAssistTotalCount, err := SchoolService.GetOrgTotalCount(cityCode, "7")
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
eduAssistCurrentTermCount, err := SchoolService.GetOrgCurrentTermAddCount(cityCode, "7")
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
eduAssistTotalCountAndCurrentTermCount.Title = "教辅单位数量"
eduAssistTotalCountAndCurrentTermCount.TotalCount = eduAssistTotalCount
eduAssistTotalCountAndCurrentTermCount.CurrentTermAddCount = eduAssistCurrentTermCount
TotalCountAndCurrentTermCountArr = append(TotalCountAndCurrentTermCountArr, eduAssistTotalCountAndCurrentTermCount)
var teacherTotalCountAndCurrentTermCount SchoolModel.TotalCountAndCurrentTermCount
teacherTotalCount, err := TeacherService.GetTeacherTotalCount(cityCode)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
teacherCurrentTermCount, err := TeacherService.GetTeacherCurrentTermAddCount(cityCode)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
teacherTotalCountAndCurrentTermCount.Title = "教职工数量"
teacherTotalCountAndCurrentTermCount.TotalCount = teacherTotalCount
teacherTotalCountAndCurrentTermCount.CurrentTermAddCount = teacherCurrentTermCount
TotalCountAndCurrentTermCountArr = append(TotalCountAndCurrentTermCountArr, teacherTotalCountAndCurrentTermCount)
var studentTotalCountAndCurrentTermCount SchoolModel.TotalCountAndCurrentTermCount
studentTotalCount, err := StudentService.GetStudentTotalCount(cityCode)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
studentCurrentTermCount, err := StudentService.GetStudentCurrentTermAddCount(cityCode)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
studentTotalCountAndCurrentTermCount.Title = "学生数量"
studentTotalCountAndCurrentTermCount.TotalCount = studentTotalCount
studentTotalCountAndCurrentTermCount.CurrentTermAddCount = studentCurrentTermCount
TotalCountAndCurrentTermCountArr = append(TotalCountAndCurrentTermCountArr, studentTotalCountAndCurrentTermCount)
c.JSON(http.StatusOK, Model.Res{
Success: true,
List: TotalCountAndCurrentTermCountArr,
})
}
/**
功能:获取区级的基本信息统计
*/
func GetDistrictBaseInfo(c *gin.Context) {
districtCode := c.Query("districtCode")
TotalCountAndCurrentTermCountArr := make([]SchoolModel.TotalCountAndCurrentTermCount, 0)
var schoolTotalCountAndCurrentTermCount SchoolModel.TotalCountAndCurrentTermCount
schoolTotalCount, err := SchoolService.GetOrgTotalCount(districtCode, "2")
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
schoolCurrentTermCount, err := SchoolService.GetOrgCurrentTermAddCount(districtCode, "2")
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
schoolTotalCountAndCurrentTermCount.Title = "学校数量"
schoolTotalCountAndCurrentTermCount.TotalCount = schoolTotalCount
schoolTotalCountAndCurrentTermCount.CurrentTermAddCount = schoolCurrentTermCount
TotalCountAndCurrentTermCountArr = append(TotalCountAndCurrentTermCountArr, schoolTotalCountAndCurrentTermCount)
var eduAssistTotalCountAndCurrentTermCount SchoolModel.TotalCountAndCurrentTermCount
eduAssistTotalCount, err := SchoolService.GetOrgTotalCount(districtCode, "7")
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
eduAssistCurrentTermCount, err := SchoolService.GetOrgCurrentTermAddCount(districtCode, "7")
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
eduAssistTotalCountAndCurrentTermCount.Title = "教辅单位数量"
eduAssistTotalCountAndCurrentTermCount.TotalCount = eduAssistTotalCount
eduAssistTotalCountAndCurrentTermCount.CurrentTermAddCount = eduAssistCurrentTermCount
TotalCountAndCurrentTermCountArr = append(TotalCountAndCurrentTermCountArr, eduAssistTotalCountAndCurrentTermCount)
var teacherTotalCountAndCurrentTermCount SchoolModel.TotalCountAndCurrentTermCount
teacherTotalCount, err := TeacherService.GetTeacherTotalCount(districtCode)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
teacherCurrentTermCount, err := TeacherService.GetTeacherCurrentTermAddCount(districtCode)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
teacherTotalCountAndCurrentTermCount.Title = "教职工数量"
teacherTotalCountAndCurrentTermCount.TotalCount = teacherTotalCount
teacherTotalCountAndCurrentTermCount.CurrentTermAddCount = teacherCurrentTermCount
TotalCountAndCurrentTermCountArr = append(TotalCountAndCurrentTermCountArr, teacherTotalCountAndCurrentTermCount)
var studentTotalCountAndCurrentTermCount SchoolModel.TotalCountAndCurrentTermCount
studentTotalCount, err := StudentService.GetStudentTotalCount(districtCode)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
studentCurrentTermCount, err := StudentService.GetStudentCurrentTermAddCount(districtCode)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
studentTotalCountAndCurrentTermCount.Title = "学生数量"
studentTotalCountAndCurrentTermCount.TotalCount = studentTotalCount
studentTotalCountAndCurrentTermCount.CurrentTermAddCount = studentCurrentTermCount
TotalCountAndCurrentTermCountArr = append(TotalCountAndCurrentTermCountArr, studentTotalCountAndCurrentTermCount)
c.JSON(http.StatusOK, Model.Res{
Success: true,
List: TotalCountAndCurrentTermCountArr,
})
}
/**
功能:获取校级的基本信息统计
*/
func GetSchoolBaseInfo(c *gin.Context) {
schoolId := c.Query("schoolId")
TotalCountAndCurrentTermCountArr := make([]SchoolModel.TotalCountAndCurrentTermCount, 0)
var classTotalCountAndCurrentTermCount SchoolModel.TotalCountAndCurrentTermCount
classTotalCount, err := SchoolService.GetClassTotalCount(schoolId)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
classCurrentTermCount, err := SchoolService.GetClassCurrentTermAddCount(schoolId)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
classTotalCountAndCurrentTermCount.Title = "班级数量"
classTotalCountAndCurrentTermCount.TotalCount = classTotalCount
classTotalCountAndCurrentTermCount.CurrentTermAddCount = classCurrentTermCount
TotalCountAndCurrentTermCountArr = append(TotalCountAndCurrentTermCountArr, classTotalCountAndCurrentTermCount)
var orgTotalCountAndCurrentTermCount SchoolModel.TotalCountAndCurrentTermCount
orgTotalCount, err := SchoolService.GetOrgTotalCount(schoolId, "3")
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
orgCurrentTermCount, err := SchoolService.GetOrgCurrentTermAddCount(schoolId, "3")
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
orgTotalCountAndCurrentTermCount.Title = "部门数量"
orgTotalCountAndCurrentTermCount.TotalCount = orgTotalCount
orgTotalCountAndCurrentTermCount.CurrentTermAddCount = orgCurrentTermCount
TotalCountAndCurrentTermCountArr = append(TotalCountAndCurrentTermCountArr, orgTotalCountAndCurrentTermCount)
var teacherTotalCountAndCurrentTermCount SchoolModel.TotalCountAndCurrentTermCount
teacherTotalCount, err := TeacherService.GetTeacherTotalCount(schoolId)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
teacherCurrentTermCount, err := TeacherService.GetTeacherCurrentTermAddCount(schoolId)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
teacherTotalCountAndCurrentTermCount.Title = "教职工数量"
teacherTotalCountAndCurrentTermCount.TotalCount = teacherTotalCount
teacherTotalCountAndCurrentTermCount.CurrentTermAddCount = teacherCurrentTermCount
TotalCountAndCurrentTermCountArr = append(TotalCountAndCurrentTermCountArr, teacherTotalCountAndCurrentTermCount)
var studentTotalCountAndCurrentTermCount SchoolModel.TotalCountAndCurrentTermCount
studentTotalCount, err := StudentService.GetStudentTotalCount(schoolId)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
studentCurrentTermCount, err := StudentService.GetStudentCurrentTermAddCount(schoolId)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
studentTotalCountAndCurrentTermCount.Title = "学生数量"
studentTotalCountAndCurrentTermCount.TotalCount = studentTotalCount
studentTotalCountAndCurrentTermCount.CurrentTermAddCount = studentCurrentTermCount
TotalCountAndCurrentTermCountArr = append(TotalCountAndCurrentTermCountArr, studentTotalCountAndCurrentTermCount)
c.JSON(http.StatusOK, Model.Res{
Success: true,
List: TotalCountAndCurrentTermCountArr,
})
}
/**
功能根据学校ID获取该学校有哪些学段
*/
func PageStageBySchoolId(c *gin.Context) {
schoolId := c.Query("schoolId")
resArr, err := SchoolService.PageStageBySchoolId(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,
})
}
/**
功能:根据市获取各区的教辅单位个数
*/
func GetEduAssistCountByCity(c *gin.Context) {
areaType := c.Query("areaType")
cityCode := c.Query("cityCode")
//获取区信息
areaInfo, err := AreaService.PageDistrictByCityCode(cityCode, areaType)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
//生成区信息的数组
areaCodeArr := make([]string, 0)
for i := range areaInfo {
areaCodeArr = append(areaCodeArr, areaInfo[i].AreaCode)
}
resArr, err := SchoolService.AggsDistrictStatEduAssist(areaCodeArr)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
resArrByte, _ := json.Marshal(resArr)
resList := CommonUtil.ConvertJsonStringToMapArray(string(resArrByte))
resMap := make(map[string]int)
for i := 0; i < len(resList); i++ {
areaCode := resList[i]["area_code"].(string)
count := CommonUtil.ConvertStringToInt(resList[i]["count"].(string))
resMap[areaCode] = count
}
eduAssistCountArr := make([]SchoolModel.EduAssistCount, 0)
for i := range areaInfo {
var eduAssistCount SchoolModel.EduAssistCount
areaCode := areaInfo[i].AreaCode
areaName := areaInfo[i].AreaName
eduAssistCount.AreaCode = areaCode
eduAssistCount.AreaName = areaName
if _, ok := resMap[areaCode]; ok {
eduAssistCount.Count = resMap[areaCode]
}
eduAssistCountArr = append(eduAssistCountArr, eduAssistCount)
}
c.JSON(http.StatusOK, Model.Res{
Success: true,
List: eduAssistCountArr,
})
}
/**
功能:根据市获取各区的学校个数
*/
func GetSchoolCountByCity(c *gin.Context) {
areaType := c.Query("areaType")
cityCode := c.Query("cityCode")
xxbxlx := c.Query("xxbxlx")
aggsXxbxlx := false
if xxbxlx == "1" {
aggsXxbxlx = true
}
//获取区信息
areaInfo, err := AreaService.PageDistrictByCityCode(cityCode, areaType)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
//生成区信息的数组
areaCodeArr := make([]string, 0)
for i := range areaInfo {
areaCodeArr = append(areaCodeArr, areaInfo[i].AreaCode)
}
resArr, err := SchoolService.AggsDistrictStatSchoolCount(areaCodeArr)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
resArrByte, _ := json.Marshal(resArr)
resList := CommonUtil.ConvertJsonStringToMapArray(string(resArrByte))
resMap := make(map[string]int)
for i := 0; i < len(resList); i++ {
areaCode := resList[i]["area_code"].(string)
count := CommonUtil.ConvertStringToInt(resList[i]["count"].(string))
resMap[areaCode] = count
}
//获取办学类型信息
xxbxlxInfo, err := DictService.GetDictInfo("xxbxlxm")
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
schoolCountArr := make([]SchoolModel.SchoolCount, 0)
for i := range areaInfo {
var schoolCount SchoolModel.SchoolCount
areaCode := areaInfo[i].AreaCode
areaName := areaInfo[i].AreaName
schoolCount.AreaCode = areaCode
schoolCount.AreaName = areaName
if _, ok := resMap[areaCode]; ok {
schoolCount.Count = resMap[areaCode]
}
xxbxlxArr := make([]SchoolModel.Xxbxlx, 0)
if aggsXxbxlx {
resArr, err := SchoolService.AggsXxbxlxStatSchoolCountByDistrictCode(areaCode)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
resArrByte, _ := json.Marshal(resArr)
resList := CommonUtil.ConvertJsonStringToMapArray(string(resArrByte))
resMap := make(map[string]int)
for i := 0; i < len(resList); i++ {
areaCode := resList[i]["xxbxlxm"].(string)
count := CommonUtil.ConvertStringToInt(resList[i]["count"].(string))
resMap[areaCode] = count
}
for j := range xxbxlxInfo {
var xxbxlx SchoolModel.Xxbxlx
dictCode := xxbxlxInfo[j].DictCode
dictValue := xxbxlxInfo[j].DictValue
xxbxlx.XxbxlxCode = dictCode
xxbxlx.XxbxlxName = dictValue
if _, ok := resMap[dictCode]; ok {
xxbxlx.Count = resMap[dictCode]
}
xxbxlxArr = append(xxbxlxArr, xxbxlx)
}
}
schoolCount.Xxbxlx = xxbxlxArr
schoolCountArr = append(schoolCountArr, schoolCount)
}
if areaType == "1" {
cityDirectlyCount, err := SchoolService.GetCityDirectlySchoolCount(cityCode)
if err != nil {
c.JSON(http.StatusOK, Model.Res{
Success: false,
Message: err.Error(),
})
return
}
var schoolCount SchoolModel.SchoolCount
schoolCount.AreaCode = cityCode
schoolCount.AreaName = "市直属"
schoolCount.Count = cityDirectlyCount
schoolCountArr = append(schoolCountArr, schoolCount)
}
schoolCountArrByte, _ := json.Marshal(schoolCountArr)
schoolCountArrStr := string(schoolCountArrByte)
if !aggsXxbxlx {
schoolCountArrStr = CommonUtil.RemoveArrKey(schoolCountArrStr, "xxbxlx")
}
c.JSON(http.StatusOK, Model.Res{
Success: true,
List: CommonUtil.ConvertJsonStringToMapArray(schoolCountArrStr),
})
}