updates
This commit is contained in:
parent
00b925fe03
commit
64e385e50c
|
|
@ -5,12 +5,12 @@ import "time"
|
|||
// YxHistoryScoreControlLine 历年各专业省控分数线实体
|
||||
type YxHistoryScoreControlLine struct {
|
||||
ID string `gorm:"column:id;primaryKey" json:"id"`
|
||||
Year string `gorm:"column:year" json:"year"` // 年份
|
||||
Year string `gorm:"column:year" json:"year"` // 年份
|
||||
ProfessionalCategory string `gorm:"column:professional_category" json:"professionalCategory"` // 专业类别
|
||||
Category string `gorm:"column:category" json:"category"` // 文理科
|
||||
Batch string `gorm:"column:batch" json:"batch"` // 批次
|
||||
CulturalScore float64 `gorm:"column:cultural_score" json:"culturalScore"` // 文化分
|
||||
SpecialScore float64 `gorm:"column:special_score" json:"specialScore"` // 专业分
|
||||
Category string `gorm:"column:category" json:"category"` // 文理科
|
||||
Batch string `gorm:"column:batch" json:"batch"` // 批次
|
||||
CulturalScore float64 `gorm:"column:cultural_score" json:"culturalScore"` // 文化分
|
||||
SpecialScore float64 `gorm:"column:special_score" json:"specialScore"` // 专业分
|
||||
CreateBy string `gorm:"column:create_by" json:"createBy"`
|
||||
CreateTime time.Time `gorm:"column:create_time" json:"createTime"`
|
||||
UpdateBy string `gorm:"column:update_by" json:"updateBy"`
|
||||
|
|
@ -18,5 +18,5 @@ type YxHistoryScoreControlLine struct {
|
|||
}
|
||||
|
||||
func (YxHistoryScoreControlLine) TableName() string {
|
||||
return "yx_history_score_control_line"
|
||||
return "yx_history_score_control_line_new"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -81,6 +81,11 @@ func (m *YxCalculationMajorMapper) FindRecommendList(query dto.SchoolMajorQuery)
|
|||
params = append(params, query.MainSubjects)
|
||||
}
|
||||
|
||||
if query.Keyword != "" {
|
||||
baseSQL += " AND cm.major_name like ?"
|
||||
params = append(params, query.Keyword)
|
||||
}
|
||||
|
||||
// 3. 优化后的总数量COUNT SQL
|
||||
countSQL := fmt.Sprintf(`
|
||||
SELECT COUNT(cm.id) FROM %s cm
|
||||
|
|
|
|||
|
|
@ -312,9 +312,8 @@ func (s *YxCalculationMajorService) CheckEnrollProbability(schoolMajorDTOList *[
|
|||
professionalCategory := userScoreVO.ProfessionalCategory
|
||||
if "表演类" == professionalCategory {
|
||||
s.BiaoYanRecommendMajorListSetEnrollProbability(schoolMajorDTOList, userScoreVO)
|
||||
// TODO: biaoyanService
|
||||
} else if "音乐类" == professionalCategory {
|
||||
// TODO: musicService
|
||||
s.YinYueRecommendMajorListSetEnrollProbability(schoolMajorDTOList, userScoreVO)
|
||||
} else {
|
||||
s.BetaRecommendMajorListSetEnrollProbability(schoolMajorDTOList, userScoreVO)
|
||||
}
|
||||
|
|
@ -440,6 +439,138 @@ func (s *YxCalculationMajorService) BiaoYanRecommendMajorListSetEnrollProbabilit
|
|||
}
|
||||
}
|
||||
|
||||
// YinYueRecommendMajorListSetEnrollProbability 音乐类 获取录取率
|
||||
func (s *YxCalculationMajorService) YinYueRecommendMajorListSetEnrollProbability(recommendMajorList *[]dto.SchoolMajorDTO, userScoreVO vo.UserScoreVO) {
|
||||
if recommendMajorList == nil || len(*recommendMajorList) == 0 {
|
||||
return
|
||||
}
|
||||
professionalCategory := userScoreVO.ProfessionalCategory
|
||||
nowBatch := "本科"
|
||||
|
||||
// 获取省控线 Map
|
||||
historyScoreControlLineMap, err := s.historyScoreControlLineService.MapsBatchByProfessionalCategoryOfYear(common.NowYear, professionalCategory, userScoreVO.CognitioPolyclinic)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
culturalScore := userScoreVO.CulturalScore
|
||||
professionalScore := userScoreVO.ProfessionalScore
|
||||
|
||||
var rulesEnrollProbability string
|
||||
var probabilityOperator string
|
||||
var nowMajorTypeChild string
|
||||
var batchKey string
|
||||
for i := range *recommendMajorList {
|
||||
item := &(*recommendMajorList)[i]
|
||||
|
||||
rulesEnrollProbability = item.PrivateRulesEnrollProbability
|
||||
probabilityOperator = item.PrivateProbabilityOperator
|
||||
|
||||
// 当前子类型
|
||||
nowMajorTypeChild = item.MajorTypeChild
|
||||
|
||||
// 主考科目
|
||||
if "音乐表演" == nowMajorTypeChild {
|
||||
nowMajorTypeChild += item.MainSubjects
|
||||
}
|
||||
|
||||
// 整合为 表演类-XXX子类型
|
||||
if "高职高专" == item.Batch {
|
||||
batchKey = professionalCategory + "-" + nowMajorTypeChild + "_" + item.Batch
|
||||
} else {
|
||||
batchKey = professionalCategory + "-" + nowMajorTypeChild + "_本科"
|
||||
}
|
||||
|
||||
// 获取对应批次的省控线
|
||||
controlLineData, ok := historyScoreControlLineMap[batchKey]
|
||||
if !ok {
|
||||
continue
|
||||
// if val, okDefault := historyScoreControlLineMap["本科"]; okDefault {
|
||||
// controlLineData = val
|
||||
// } else {
|
||||
// continue
|
||||
// }
|
||||
}
|
||||
|
||||
// 判断子类型,使用对应的成绩进行计算
|
||||
professionalScore = userScoreVO.ProfessionalCategoryChildrenScore[nowMajorTypeChild]
|
||||
|
||||
culturalControlLine := controlLineData.CulturalScore
|
||||
specialControlLine := controlLineData.SpecialScore
|
||||
|
||||
if rulesEnrollProbability == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
// 补全 probabilityOperator 逻辑
|
||||
if rulesEnrollProbability == "文过专排" && probabilityOperator == "" {
|
||||
probabilityOperator = "文*0+专*1"
|
||||
} else if rulesEnrollProbability == "专过文排" && probabilityOperator == "" {
|
||||
probabilityOperator = "文*1+专*0"
|
||||
}
|
||||
|
||||
if probabilityOperator == "" {
|
||||
item.EnrollProbability = common.Number5
|
||||
continue
|
||||
}
|
||||
|
||||
// 判断其他录取要求
|
||||
if !calc.OtherScoreJudge(professionalScore, userScoreVO, *item) {
|
||||
item.EnrollProbability = common.Number0
|
||||
continue
|
||||
}
|
||||
|
||||
// 判断是否过省控线
|
||||
if !calc.CrossingControlLine(rulesEnrollProbability, culturalScore, professionalScore, culturalControlLine, specialControlLine) {
|
||||
item.EnrollProbability = common.Number0
|
||||
continue
|
||||
}
|
||||
|
||||
// 计算学生折合分
|
||||
studentScore := calc.ConvertIntoScore(rulesEnrollProbability, culturalScore, professionalScore, probabilityOperator)
|
||||
item.PrivateStudentScore = studentScore
|
||||
item.StudentScore = studentScore
|
||||
|
||||
// 权限检查
|
||||
if !calc.HasComputeEnrollProbabilityPermissions(nowBatch, item.Batch) {
|
||||
item.EnrollProbability = common.Number0
|
||||
continue
|
||||
}
|
||||
|
||||
// 录取方式计算
|
||||
if common.CulturalControlLineGuoMain == rulesEnrollProbability {
|
||||
if len(item.HistoryMajorEnrollList) == 0 {
|
||||
item.EnrollProbability = common.Number0
|
||||
continue
|
||||
}
|
||||
item.EnrollProbability = (studentScore * item.HistoryMajorEnrollList[0].AdmissionLine) * common.Number0p75
|
||||
if studentScore >= item.HistoryMajorEnrollList[0].AdmissionLine {
|
||||
item.EnrollProbability *= common.Number0p5
|
||||
}
|
||||
continue
|
||||
} else {
|
||||
nowYearProvincialControlLine := calc.ConvertIntoScore(rulesEnrollProbability, culturalControlLine, specialControlLine, probabilityOperator)
|
||||
if nowYearProvincialControlLine <= 0 {
|
||||
item.EnrollProbability = common.Number0
|
||||
continue
|
||||
}
|
||||
|
||||
diffMap := calc.ComputeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(item.MajorType, rulesEnrollProbability, probabilityOperator, item.HistoryMajorEnrollMap)
|
||||
historyThreeYearDiff := diffMap["scoreDifference"].(float64)
|
||||
|
||||
if historyThreeYearDiff == 0 {
|
||||
item.EnrollProbability = common.Number0
|
||||
continue
|
||||
}
|
||||
|
||||
nowYearDiff := studentScore - nowYearProvincialControlLine
|
||||
|
||||
enrollProbability := calc.CommonCheckEnrollProbability(nowYearDiff, historyThreeYearDiff)
|
||||
item.EnrollProbability = calc.CommonCheckEnrollProbabilityBeilv(enrollProbability)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// BetaRecommendMajorListSetEnrollProbability 美术与设计类,书法类,体育类 获取录取率
|
||||
func (s *YxCalculationMajorService) BetaRecommendMajorListSetEnrollProbability(recommendMajorList *[]dto.SchoolMajorDTO, userScoreVO vo.UserScoreVO) {
|
||||
if recommendMajorList == nil || len(*recommendMajorList) == 0 {
|
||||
|
|
|
|||
|
|
@ -26,13 +26,9 @@ func (s *YxHistoryScoreControlLineService) MapsBatchByProfessionalCategoryOfYear
|
|||
|
||||
switch professionalCategory {
|
||||
case "表演类":
|
||||
fallthrough
|
||||
case "音乐类":
|
||||
for _, item := range list {
|
||||
// 复制对象逻辑,处理"本科A段"映射为"提前批"
|
||||
// if item.Batch == "本科A段" {
|
||||
// newItem := item
|
||||
// newItem.Batch = "提前批"
|
||||
// result[newItem.Batch] = newItem
|
||||
// }
|
||||
result[item.ProfessionalCategory+"_"+item.Batch] = item
|
||||
}
|
||||
default:
|
||||
|
|
|
|||
Loading…
Reference in New Issue