updates 25年音乐修复
This commit is contained in:
parent
4a435a1efb
commit
7c6c232706
|
|
@ -216,11 +216,28 @@ public class YxHistoryMajorEnrollController extends JeecgController<YxHistoryMaj
|
|||
public Result<?> insertNewMajorList() {
|
||||
LambdaQueryWrapper<YxHistoryMajorEnroll> helqw = new LambdaQueryWrapper<>();
|
||||
helqw.eq(YxHistoryMajorEnroll::getYear,"2024");
|
||||
helqw.eq(YxHistoryMajorEnroll::getMajorType,"美术与设计类");
|
||||
helqw.eq(YxHistoryMajorEnroll::getMajorType,"音乐类");
|
||||
List<YxHistoryMajorEnroll> list = yxHistoryMajorEnrollService.list(helqw);
|
||||
|
||||
LambdaQueryWrapper<YxSchoolMajor> smlqw = new LambdaQueryWrapper<>();
|
||||
smlqw.eq(YxSchoolMajor::getMajorType,"音乐类");
|
||||
List<YxSchoolMajor> yxSchoolMajorList = yxSchoolMajorService.list(smlqw);
|
||||
Map<String ,YxSchoolMajor> map = new HashMap<>();
|
||||
String key = "";
|
||||
String key2 = "";
|
||||
for (YxSchoolMajor yxSchoolMajor : yxSchoolMajorList) {
|
||||
key = yxSchoolMajor.getSchoolCode()+"_"+ yxSchoolMajor.getMajorName() + "_" + yxSchoolMajor.getBatch() + "_" + yxSchoolMajor.getCategory();
|
||||
map.put(key,yxSchoolMajor);
|
||||
}
|
||||
YxSchoolMajor yxSchoolMajor = null;
|
||||
|
||||
List<YxSchoolMajor> saveOrUpdateList = new ArrayList<>();
|
||||
for (YxHistoryMajorEnroll yxHistoryMajorEnroll : list) {
|
||||
yxSchoolMajor = new YxSchoolMajor();
|
||||
key2 = yxHistoryMajorEnroll.getSchoolCode()+"_"+ yxHistoryMajorEnroll.getMajorName() + "_" + yxHistoryMajorEnroll.getBatch() + "_" + yxHistoryMajorEnroll.getCategory();
|
||||
yxSchoolMajor = map.get(key2);
|
||||
if (yxSchoolMajor == null){
|
||||
yxSchoolMajor = new YxSchoolMajor();
|
||||
}
|
||||
yxSchoolMajor.setSchoolCode(yxHistoryMajorEnroll.getSchoolCode());
|
||||
yxSchoolMajor.setMajorCode(yxHistoryMajorEnroll.getMajorCode());
|
||||
yxSchoolMajor.setBatch(yxHistoryMajorEnroll.getBatch());
|
||||
|
|
@ -230,11 +247,31 @@ public class YxHistoryMajorEnrollController extends JeecgController<YxHistoryMaj
|
|||
yxSchoolMajor.setMajorType(yxHistoryMajorEnroll.getMajorType());
|
||||
yxSchoolMajor.setMajorTypeChild(yxHistoryMajorEnroll.getMajorTypeChild());
|
||||
yxSchoolMajor.setTuition(yxHistoryMajorEnroll.getTuition());
|
||||
//
|
||||
yxSchoolMajor.setMainSubjects(yxHistoryMajorEnroll.getMainSubjects());
|
||||
yxSchoolMajor.setDetail(yxHistoryMajorEnroll.getDetail());
|
||||
yxSchoolMajor.setCategory(yxHistoryMajorEnroll.getCategory());
|
||||
|
||||
yxSchoolMajor.setPlanNum(yxHistoryMajorEnroll.getEnrollNum());
|
||||
yxSchoolMajor.setKslx("统考");
|
||||
yxSchoolMajor.setRulesEnrollProbability(yxHistoryMajorEnroll.getRulesEnrollProbability());
|
||||
yxSchoolMajor.setProbabilityOperator(yxHistoryMajorEnroll.getProbabilityOperator());
|
||||
yxSchoolMajor.setPrivateProbabilityOperator(yxHistoryMajorEnroll.getProbabilityOperator());
|
||||
yxSchoolMajor.setRulesEnrollProbabilitySx(yxHistoryMajorEnroll.getRulesEnrollProbability());
|
||||
yxSchoolMajor.setPrivateRulesEnrollProbability(yxHistoryMajorEnroll.getRulesEnrollProbability());
|
||||
yxSchoolMajor.setState("2");
|
||||
//
|
||||
if ("音乐类".equals(yxSchoolMajor.getMajorType())) {
|
||||
yxSchoolMajor.setMajorTypeChild(yxHistoryMajorEnroll.getMajorTypeChild());
|
||||
if(StringUtils.isNotBlank(yxHistoryMajorEnroll.getMajorTypeChild()) && "音乐教育".equals(yxHistoryMajorEnroll.getMajorTypeChild())){
|
||||
// yxSchoolMajor.setMainSubjects("音乐教育");
|
||||
yxSchoolMajor.setMainSubjects("声乐,器乐");
|
||||
}else if("音乐表演".equals(yxHistoryMajorEnroll.getMajorTypeChild())){
|
||||
yxSchoolMajor.setMainSubjects(yxHistoryMajorEnroll.getMainSubjects());
|
||||
}
|
||||
}
|
||||
yxSchoolMajor.setCreateTime(new Date());
|
||||
saveOrUpdateList.add(yxSchoolMajor);
|
||||
}
|
||||
System.out.println(saveOrUpdateList.size());
|
||||
yxSchoolMajorService.saveBatch(saveOrUpdateList);
|
||||
// yxHistoryMajorEnrollService.renewControlLine(id);
|
||||
return Result.OK("操作成功");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,7 +72,8 @@ public class YxScoreController {
|
|||
|
||||
if("表演类".equals(professionalCategory) || "音乐类".equals(professionalCategory)){
|
||||
AssertUtils.hasSize(userScoreUpdateDTO.getSubjectList(),"请选择[专业选课]");
|
||||
AssertUtils.notTrue(userScoreUpdateDTO.getSubjectList().size() != 2,"选考科目必须选两项");
|
||||
// AssertUtils.notTrue(userScoreUpdateDTO.getSubjectList().size() <= 0,"选考科目必须选两项");
|
||||
userScoreUpdateDTO.setProfessionalScore(YxConstant.bigDecimal0);
|
||||
}
|
||||
AssertUtils.notTrue(culturalScore.compareTo(YxConstant.bigDecimal750) > 0, "[文化成绩]最高分为750");
|
||||
AssertUtils.notTrue(culturalScore.compareTo(YxConstant.bigDecimal0) < 0, "[文化成绩]最低分为0");
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package org.jeecg.modules.yx.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.jeecg.modules.web.dto.ArtTestCulturalDTO;
|
||||
|
|
@ -18,6 +19,7 @@ import org.springframework.stereotype.Service;
|
|||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
@ -29,6 +31,7 @@ import java.util.stream.Collectors;
|
|||
* @Date 2024/3/4 11:13
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class MusicService {
|
||||
@Resource
|
||||
private IYxHistoryScoreControlLineService yxHistoryScoreControlLineService;
|
||||
|
|
@ -38,7 +41,7 @@ public class MusicService {
|
|||
/**
|
||||
* 音乐类的 分数计算方式
|
||||
*/
|
||||
public void musicRecommendMajorListSetEnrollProbability(List<RecommendMajorDTO> recommendMajorList, YxUserScore activeCurrentUserScore) {
|
||||
public void musicRecommendMajorListSetEnrollProbability_2024year(List<RecommendMajorDTO> recommendMajorList, YxUserScore activeCurrentUserScore) {
|
||||
try {
|
||||
//专业类别
|
||||
String professionalCategory = activeCurrentUserScore.getProfessionalCategory();
|
||||
|
|
@ -325,6 +328,163 @@ public class MusicService {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 音乐类的 分数计算方式
|
||||
*/
|
||||
public void musicRecommendMajorListSetEnrollProbability(List<RecommendMajorDTO> recommendMajorList, YxUserScore activeCurrentUserScore) {
|
||||
int index = 0;
|
||||
try {
|
||||
long startTime = new Date().getTime();
|
||||
//专业类别
|
||||
String professionalCategory = activeCurrentUserScore.getProfessionalCategory();
|
||||
String rulesEnrollProbability = null;
|
||||
String probabilityOperator = null;
|
||||
String showRulesEnrollProbability = null;
|
||||
String showProbabilityOperator = null;
|
||||
String nowBatch = activeCurrentUserScore.getBatch();
|
||||
BigDecimal studentScore = null;//学生折合分
|
||||
BigDecimal privateStudentScore = null;//学生折合分显示用
|
||||
BigDecimal culturalScore = activeCurrentUserScore.getCulturalScore();//学生的文化分
|
||||
BigDecimal professionalScore = activeCurrentUserScore.getProfessionalScore();//学生的专业分
|
||||
BigDecimal nowYearDiff = null;//当前年分差
|
||||
Map<String, YxHistoryScoreControlLine> batchControlLineMaps = new LinkedHashMap<>();
|
||||
// batchControlLineMaps = yxHistoryScoreControlLineService.mapsBatchByProfessionalCategoryOfYear(Integer.parseInt(YxConstant.nowYear), professionalCategory, activeCurrentUserScore.getCognitioPolyclinic())
|
||||
LambdaQueryWrapper<YxHistoryScoreControlLine> yhsclWrapper = new LambdaQueryWrapper<>();
|
||||
yhsclWrapper.eq(YxHistoryScoreControlLine::getCategory,activeCurrentUserScore.getCognitioPolyclinic());
|
||||
yhsclWrapper.in(YxHistoryScoreControlLine::getBatch,"本科","高职高专");
|
||||
yhsclWrapper.like(YxHistoryScoreControlLine::getProfessionalCategory,"音乐类-");
|
||||
List<YxHistoryScoreControlLine> yhsclList = yxHistoryScoreControlLineService.list(yhsclWrapper);
|
||||
String key = null;
|
||||
for (YxHistoryScoreControlLine yhscl : yhsclList) {
|
||||
key = yhscl.getCategory()+"-"+ yhscl.getBatch()+"-"+yhscl.getProfessionalCategory();
|
||||
batchControlLineMaps.put(key,yhscl);
|
||||
}
|
||||
// Map<String, YxHistoryScoreControlLine> historyScoreControlLineMap = yxHistoryScoreControlLineService.mapsBatchByProfessionalCategoryOfYear(Integer.parseInt(YxConstant.nowYear), professionalCategory, activeCurrentUserScore.getCognitioPolyclinic());
|
||||
BigDecimal culturalControlLine = null;//文化分省控线
|
||||
BigDecimal specialControlLine = null;//专业分省控线
|
||||
BigDecimal nowYearProvincialControlLine = null;//当前年省控线
|
||||
BigDecimal historyThreeYearDiff = null;//近三年平均差值
|
||||
BigDecimal enrollProbability = null;//录取率
|
||||
Map<String, Object> differenceMap = null;
|
||||
List<YxHistoryMajorEnroll> historyMajorEnrollList = null;//历年录取信息
|
||||
if (CollectionUtils.isNotEmpty(recommendMajorList)) {
|
||||
//遍历专业列表
|
||||
for (RecommendMajorDTO recommendMajorDTO : recommendMajorList) {
|
||||
index++;
|
||||
//取出往年的分数信息, 算出 三年平均差值
|
||||
historyMajorEnrollList = recommendMajorDTO.getHistoryMajorEnrollList();
|
||||
rulesEnrollProbability = recommendMajorDTO.getPrivateRulesEnrollProbability();
|
||||
probabilityOperator = recommendMajorDTO.getPrivateProbabilityOperator();
|
||||
if ("1103".equals(recommendMajorDTO.getSchoolCode())) {
|
||||
System.out.println("111");
|
||||
}
|
||||
|
||||
key = recommendMajorDTO.getCategory();
|
||||
|
||||
if("高职高专".equals(recommendMajorDTO.getBatch())){
|
||||
key = key + "-" + recommendMajorDTO.getBatch();
|
||||
}else{
|
||||
key = key + "-本科";
|
||||
}
|
||||
// 判断是 音乐教育还是音乐表演 器乐/声乐
|
||||
if ("音乐类".equals(professionalCategory)) {
|
||||
key = key +"-音乐类-"+ recommendMajorDTO.getMajorTypeChild();
|
||||
if ("音乐表演".equals(recommendMajorDTO.getMajorTypeChild())) {
|
||||
key += recommendMajorDTO.getMainSubjects();
|
||||
if("器乐".equals(recommendMajorDTO.getMainSubjects())){
|
||||
professionalScore = activeCurrentUserScore.getYybyqy();
|
||||
}else{
|
||||
professionalScore = activeCurrentUserScore.getYybysy();
|
||||
}
|
||||
}else{
|
||||
professionalScore = activeCurrentUserScore.getYyjy();
|
||||
}
|
||||
batchControlLineMaps.get(recommendMajorDTO.getBatch());
|
||||
}
|
||||
culturalControlLine = batchControlLineMaps.get(key).getCulturalScore();
|
||||
specialControlLine = batchControlLineMaps.get(key).getSpecialScore();
|
||||
//没有计算方式 跳过
|
||||
if (StringUtils.isBlank(rulesEnrollProbability)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//不是体育类的专业,如果是文过专排,并且没有录取计算运算符时,文过专排是文*0+专*1,专过文排是文*1+专*0
|
||||
if ("文过专排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) {
|
||||
probabilityOperator = "文*0+专*1";
|
||||
} else if ("专过文排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) {
|
||||
probabilityOperator = "文*1+专*0";
|
||||
}
|
||||
if (StringUtils.isBlank(probabilityOperator)) {
|
||||
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
|
||||
continue;
|
||||
}
|
||||
|
||||
//判断其他录取要求
|
||||
if(!ScoreUtil.otherScoreJudge(professionalScore,activeCurrentUserScore,recommendMajorDTO)){
|
||||
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
|
||||
continue;
|
||||
}
|
||||
// // 体育类不判断分数过线
|
||||
// if (!professionalCategory.equals("体育类")) {
|
||||
// //判断录取方式,分数是否过省控线
|
||||
// if (!ScoreUtil.crossingControlLine(rulesEnrollProbability, culturalScore, professionalScore, culturalControlLine, specialControlLine)) {
|
||||
// recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
|
||||
// continue;
|
||||
// }
|
||||
// }
|
||||
|
||||
//算分用
|
||||
// 当前学生的分数折合
|
||||
|
||||
studentScore = ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), professionalScore, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
|
||||
|
||||
recommendMajorDTO.setPrivateStudentScore(studentScore);
|
||||
if (StringUtils.isNotBlank(recommendMajorDTO.getRulesEnrollProbability())) {
|
||||
//recommendMajorDTO.setStudentConvertedScore(studentScore);
|
||||
//计算展示用分数
|
||||
recommendMajorDTO.setStudentScore(studentScore);
|
||||
}
|
||||
|
||||
//没有往年录取分数线信息
|
||||
if (CollectionUtils.isEmpty(historyMajorEnrollList) || !(ScoreUtil.hasComputeEnrollProbabilityPermissions(nowBatch, recommendMajorDTO.getBatch()))) {
|
||||
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
|
||||
continue;
|
||||
}
|
||||
|
||||
// 如果没有24年数据,则不计算
|
||||
if(CollectionUtils.isEmpty(historyMajorEnrollList) && historyMajorEnrollList.stream().noneMatch(h -> "2024".equals(h.getYear()))){
|
||||
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
|
||||
continue;
|
||||
}
|
||||
|
||||
//当前年省控线 折合后
|
||||
nowYearProvincialControlLine = ScoreUtil.covertIntoControlLine(rulesEnrollProbability, culturalControlLine, specialControlLine, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
|
||||
if (nowYearProvincialControlLine == null) {
|
||||
continue;
|
||||
}
|
||||
//历年分差
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, historyMajorEnrollList);
|
||||
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
|
||||
//当前年线差
|
||||
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
|
||||
//艺术类,高职高专 算 当前年线差率 (当前年线差/当前年省控线)
|
||||
// "高职高专".equals(recommendMajorDTO.getBatch())
|
||||
if ("高职高专".equals(recommendMajorDTO.getBatch()) && !"体育类".equals(recommendMajorDTO.getMajorType())) {
|
||||
nowYearDiff = nowYearDiff.divide(nowYearProvincialControlLine,6,RoundingMode.HALF_UP);
|
||||
}
|
||||
enrollProbability = ScoreUtil.commonCheckEnrollProbability(nowYearDiff,historyThreeYearDiff);
|
||||
|
||||
enrollProbability = ScoreUtil.commonCheckEnrollProbabilityBeilv(enrollProbability);
|
||||
recommendMajorDTO.setEnrollProbability(enrollProbability);
|
||||
}
|
||||
}
|
||||
long endTime = new Date().getTime();
|
||||
log.warn("用时:"+(endTime-startTime)+"毫秒");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 文化分测算
|
||||
|
|
|
|||
Loading…
Reference in New Issue