updates
This commit is contained in:
parent
c7eea7885a
commit
8fd3412bdf
|
|
@ -216,11 +216,10 @@ 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,"书法类");
|
||||
smlqw.eq(YxSchoolMajor::getMajorType,"美术与设计类");
|
||||
List<YxSchoolMajor> yxSchoolMajorList = yxSchoolMajorService.list(smlqw);
|
||||
Map<String ,YxSchoolMajor> map = new HashMap<>();
|
||||
String key = "";
|
||||
|
|
@ -230,7 +229,6 @@ public class YxHistoryMajorEnrollController extends JeecgController<YxHistoryMaj
|
|||
map.put(key,yxSchoolMajor);
|
||||
}
|
||||
YxSchoolMajor yxSchoolMajor = null;
|
||||
|
||||
List<YxSchoolMajor> saveOrUpdateList = new ArrayList<>();
|
||||
for (YxHistoryMajorEnroll yxHistoryMajorEnroll : list) {
|
||||
key2 = yxHistoryMajorEnroll.getSchoolCode()+"_"+ yxHistoryMajorEnroll.getMajorName() + "_" + yxHistoryMajorEnroll.getBatch() + "_" + yxHistoryMajorEnroll.getCategory();
|
||||
|
|
@ -257,7 +255,6 @@ public class YxHistoryMajorEnrollController extends JeecgController<YxHistoryMaj
|
|||
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())){
|
||||
|
|
@ -266,6 +263,8 @@ public class YxHistoryMajorEnrollController extends JeecgController<YxHistoryMaj
|
|||
}else if("音乐表演".equals(yxHistoryMajorEnroll.getMajorTypeChild())){
|
||||
yxSchoolMajor.setMainSubjects(yxHistoryMajorEnroll.getMainSubjects());
|
||||
}
|
||||
}else if("表演类".equals(yxSchoolMajor.getMajorType())){
|
||||
yxSchoolMajor.setMajorTypeChild(yxHistoryMajorEnroll.getMajorTypeChild());
|
||||
}
|
||||
yxSchoolMajor.setCreateTime(new Date());
|
||||
saveOrUpdateList.add(yxSchoolMajor);
|
||||
|
|
@ -411,7 +410,7 @@ public class YxHistoryMajorEnrollController extends JeecgController<YxHistoryMaj
|
|||
try {
|
||||
//加载省控线
|
||||
Map<String, YxHistoryScoreControlLine> historyScoreControlLineMap = yxHistoryScoreControlLineService.allMaps();
|
||||
Map<String, YxMajor> majorMap = yxMajorService.mapsForMajorName();
|
||||
Map<String, YxMajor> majorMap = yxMajorService.mapsForMajorNameBatch();
|
||||
//Map<String, YxSchool> schoolNameMap = yxSchoolService.mapsForSchoolName();
|
||||
//Collection<YxSchool> schoolCodeList = schoolNameMap.values();
|
||||
String schoolCode = null;
|
||||
|
|
@ -506,6 +505,12 @@ public class YxHistoryMajorEnrollController extends JeecgController<YxHistoryMaj
|
|||
if (i != -1) {
|
||||
mn = majorName.substring(0, i);
|
||||
}
|
||||
|
||||
if(yxHistoryMajorEnroll.getBatch().contains("专")){
|
||||
mn+="_专";
|
||||
}else{
|
||||
mn+="_本";
|
||||
}
|
||||
major = majorMap.get(mn);
|
||||
AssertUtils.notNull(major, String.format("行[%s],专业未在系统中找到", index));
|
||||
yxHistoryMajorEnroll.setMajorCode(major.getMajorCode());
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@
|
|||
<!--音乐类 子项专业查询 end-->
|
||||
<!--表演类 子项专业查询 start-->
|
||||
<if test="queryvo.professionalCategory!=null and queryvo.professionalCategory=='表演类' and queryvo.pCategoryChildrenList!=null and queryvo.pCategoryChildrenList.size>0">
|
||||
AND cm.main_subjects in
|
||||
AND cm.major_type_child in
|
||||
<foreach collection="queryvo.pCategoryChildrenList" index="index" item="b" open="(" separator="," close=")">
|
||||
#{b}
|
||||
</foreach>
|
||||
|
|
@ -381,7 +381,7 @@
|
|||
<!--音乐类 子项专业查询 end-->
|
||||
<!--表演类 子项专业查询 start-->
|
||||
<if test="queryvo.professionalCategory!=null and queryvo.professionalCategory=='表演类' and queryvo.pCategoryChildrenList!=null and queryvo.pCategoryChildrenList.size>0">
|
||||
AND cm.main_subjects in
|
||||
AND cm.major_type_child in
|
||||
<foreach collection="queryvo.pCategoryChildrenList" index="index" item="b" open="(" separator="," close=")">
|
||||
#{b}
|
||||
</foreach>
|
||||
|
|
@ -537,7 +537,7 @@
|
|||
<!--音乐类 子项专业查询 end-->
|
||||
<!--表演类 子项专业查询 start-->
|
||||
<if test="queryvo.professionalCategory!=null and queryvo.professionalCategory=='表演类' and queryvo.pCategoryChildrenList!=null and queryvo.pCategoryChildrenList.size>0">
|
||||
AND cm.main_subjects in
|
||||
AND cm.major_type_child in
|
||||
<foreach collection="queryvo.pCategoryChildrenList" index="index" item="b" open="(" separator="," close=")">
|
||||
#{b}
|
||||
</foreach>
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ public interface IYxMajorService extends IService<YxMajor> {
|
|||
|
||||
Map<String,YxMajor> mapsForMajorName();
|
||||
|
||||
Map<String,YxMajor> mapsForMajorNameBatch();
|
||||
|
||||
Map<String,YxMajor> mapsForMajorCode();
|
||||
|
||||
YxMajor findByMajorCode(String majorCode);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
@ -41,7 +42,7 @@ public class BiaoyanService {
|
|||
/**
|
||||
* 表演类的 分数计算方式
|
||||
*/
|
||||
public void biaoyanRecommendMajorListSetEnrollProbability(List<RecommendMajorDTO> recommendMajorList, YxUserScore activeCurrentUserScore) {
|
||||
public void biaoyanRecommendMajorListSetEnrollProbability1(List<RecommendMajorDTO> recommendMajorList, YxUserScore activeCurrentUserScore) {
|
||||
try {
|
||||
//专业类别
|
||||
String professionalCategory = activeCurrentUserScore.getProfessionalCategory();
|
||||
|
|
@ -273,6 +274,145 @@ public class BiaoyanService {
|
|||
}
|
||||
}
|
||||
|
||||
public void biaoyanRecommendMajorListSetEnrollProbability(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();
|
||||
|
||||
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())){
|
||||
professionalScore = activeCurrentUserScore.getXjysby();
|
||||
}else if("服装表演".equals(recommendMajorDTO.getMajorTypeChild())){
|
||||
professionalScore = activeCurrentUserScore.getFzby();
|
||||
}else{
|
||||
professionalScore = activeCurrentUserScore.getXjysdy();
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
//算分用
|
||||
// 当前学生的分数折合
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 文化分测算
|
||||
*
|
||||
|
|
|
|||
|
|
@ -56,6 +56,21 @@ public class YxMajorServiceImpl extends ServiceImpl<YxMajorMapper, YxMajor> impl
|
|||
return maps;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, YxMajor> mapsForMajorNameBatch() {
|
||||
LambdaQueryWrapper<YxMajor> yxMajorLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
yxMajorLambdaQueryWrapper.select(YxMajor::getMajorCode,YxMajor::getMajorName);
|
||||
Map<String,YxMajor> maps = new LinkedHashMap<>();
|
||||
for (YxMajor yxMajor : list(yxMajorLambdaQueryWrapper)) {
|
||||
if ("1".equals(yxMajor.getEducationalLevel())) {
|
||||
maps.put(yxMajor.getMajorName() + "_本",yxMajor);
|
||||
continue;
|
||||
}
|
||||
maps.put(yxMajor.getMajorName() + "_专",yxMajor);
|
||||
}
|
||||
return maps;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, YxMajor> mapsForMajorCode() {
|
||||
LambdaQueryWrapper<YxMajor> yxMajorLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
|
|
|
|||
Loading…
Reference in New Issue