This commit is contained in:
zhouwentao 2024-03-18 17:31:12 +08:00
parent 517c38bc6f
commit e4c57c5021
13 changed files with 124 additions and 123 deletions

View File

@ -42,7 +42,10 @@ public class QueryRecommendMajorVO extends ArtBaseDTO {
private String schoolNatureStrs;
@ApiModelProperty(value = "办学性质List")
private List<String> schoolNatureList;
@ApiModelProperty(value = "科研教学")
private String kyjxStrs;
@ApiModelProperty(value = "科研教学List")
private List<String> kyjxList;
@ApiModelProperty(value = "院校类型")
private String institutionType;
@ApiModelProperty(value = "院校类型List")

View File

@ -66,7 +66,9 @@ public class YxConstant {
public static final Integer todayMaxEditScoreCount = 10;
public static BigDecimal bigDecimal1 = new BigDecimal("1");
public static BigDecimal bigDecimal175 = new BigDecimal("175");
public static BigDecimal bigDecimal75 = new BigDecimal("75");
public static BigDecimal bigDecimal50 = new BigDecimal("50");
public static String oldCalculationMajorName = "yx_calculation_major";
public static String newCalculationMajorName = "yx_calculation_major";
public static BigDecimal bigDecimal10 = new BigDecimal("10");
}

View File

@ -486,6 +486,15 @@ public class YxHistoryMajorEnrollController extends JeecgController<YxHistoryMaj
majorType = "美术与设计类";
} else if (fileName.contains("音乐")) {
majorType = "音乐类";
if(fileName.contains("器乐")){
majorTypeChild = "器乐";
}
if(fileName.contains("声乐")){
majorTypeChild = "声乐";
}
if(fileName.contains("声乐")){
majorTypeChild = "声乐";
}
} else if (fileName.contains("艺术舞蹈")) {
majorType = "舞蹈类";
majorTypeChild = "艺术舞蹈";
@ -730,6 +739,7 @@ public class YxHistoryMajorEnrollController extends JeecgController<YxHistoryMaj
//File file = new File("C:\\Users\\Denim\\Desktop\\艺术类表格\\国际标准舞B段.xlsx");
//File file = new File("C:\\Users\\Denim\\Desktop\\艺术类表格\\艺术舞蹈B段.xlsx");
//File file = new File("C:\\Users\\Denim\\Desktop\\艺术类表格\\音乐B段.xlsx");
// File file = new File("C:\\Users\\Denim\\Desktop\\艺术类表格\\\\体育专科.xlsx");
File file = new File("C:\\Users\\Denim\\Desktop\\艺术类表格\\\\体育专科.xlsx");

View File

@ -278,9 +278,9 @@ public class YxScoreSegmentController extends JeecgController<YxScoreSegment, IY
*/
@RequestMapping(value = "/test", method = RequestMethod.POST)
public Result<?> test() {
String year = "2023";
String professionalCategory = "舞蹈";
String professionalCategoryChild=null;
String year = "2024";
String professionalCategory = "表演";
String professionalCategoryChild="服装表演";
String province = "河南";
LambdaQueryWrapper<YxScoreSegment> yxScoreSegmentLambdaQueryWrapper = new LambdaQueryWrapper<>();
yxScoreSegmentLambdaQueryWrapper.eq(YxScoreSegment::getYear,year);
@ -289,7 +289,7 @@ public class YxScoreSegmentController extends JeecgController<YxScoreSegment, IY
if (StringUtils.isNotBlank(professionalCategoryChild)) {
yxScoreSegmentLambdaQueryWrapper.eq(YxScoreSegment::getProfessionalCategoryChild,professionalCategoryChild);
}
yxScoreSegmentLambdaQueryWrapper.isNull(YxScoreSegment::getProfessionalCategoryChild);
//yxScoreSegmentLambdaQueryWrapper.isNull(YxScoreSegment::getProfessionalCategoryChild);
List<YxScoreSegment> list = yxScoreSegmentService.list(yxScoreSegmentLambdaQueryWrapper);
List<YxScoreSegment> scoreSegmentNextAddList=new ArrayList<>();
//根据5分一段表遍历折算出每个段位内4分的占比
@ -337,8 +337,8 @@ public class YxScoreSegmentController extends JeecgController<YxScoreSegment, IY
@RequestMapping(value = "/test2", method = RequestMethod.POST)
public Result<?> test2() {
BigDecimal score = new BigDecimal(273);
String professionalCategory = "音乐";
String professionalCategoryChild = "音乐表演声乐";
String professionalCategory = "表演";
String professionalCategoryChild = "服装表演";
String province = "河南";
YxScoreSegment scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, score, professionalCategory, professionalCategoryChild, province);
System.out.println("约等于上一年的分数:");

View File

@ -27,7 +27,7 @@
cm.major_name,
cm.enrollment_code,
cm.tuition,
cm.detail,
cm.detail as majorDetail,
cm.category,
cm.batch,
cm.student_old_converted_score as studentScore,
@ -45,6 +45,7 @@
FROM ${tableName} cm
LEFT JOIN yx_school_child sc ON sc.school_code = cm.school_code
LEFT JOIN yx_school_research_teaching srt ON srt.school_id = sc.school_id
LEFT JOIN yx_school s ON s.id = sc.school_id
WHERE cm.rules_enroll_probability is not null
<!--成绩单-->
@ -99,6 +100,18 @@
#{b}
</foreach>
</if>
<!--科研教学-->
<if test="queryvo.kyjxList!=null and queryvo.kyjxList.size>0">
<if test="queryvo.kyjxList.contains('硕士点')">
AND (srt.academic_master_degree_point >0 or srt.professional_master_degree_point >0)
</if>
<if test="queryvo.kyjxList.contains('博士点')">
AND srt.doctoral_point>0
</if>
<if test="queryvo.kyjxList.contains('保研')">
AND srt.byzg = 1
</if>
</if>
<!--院校标签-->
<if test="queryvo.tagsList!=null and queryvo.tagsList.size>0">
<choose>
@ -128,20 +141,22 @@
AND(
<choose>
<when test="queryvo.pCategoryChildrenList.contains('音乐表演声乐')">
cm.main_subjects like '%声乐%' AND (
cm.main_subjects like '%声乐%'
<!--AND (
cm.major_type_child = '音乐表演'
<if test="queryvo.pCategoryChildrenList.contains('音乐教育')">
or cm.major_type_child = '音乐教育'
</if>
)
)-->
</when>
<when test="queryvo.pCategoryChildrenList.contains('音乐表演器乐')">
cm.main_subjects like '%器乐%' AND (
cm.main_subjects like '%器乐%'
<!--AND (
cm.major_type_child = '音乐表演'
<if test="queryvo.pCategoryChildrenList.contains('音乐教育')">
or cm.major_type_child = '音乐教育'
</if>
)
)-->
</when>
<when test="queryvo.pCategoryChildrenList.contains('音乐教育')">
cm.major_type_child = '音乐教育'
@ -170,3 +185,4 @@
ORDER BY enroll_probability desc
</select>
</mapper>

View File

@ -249,11 +249,11 @@
</if>
<if test="qvo.schoolType!=null and qvo.schoolType!=''">
<choose>
<when test="qvo.schoolType=='普通本科'">
<when test="qvo.schoolType=='本科'">
AND s.school_type like '%本科%'
</when>
<when test="qvo.schoolType=='高职高专'">
AND s.school_type like '%高职高专%'
<when test="qvo.schoolType==''">
AND s.school_type like '%专%'
</when>
<otherwise>
AND s.school_nature = #{qvo.schoolType}

View File

@ -172,32 +172,9 @@ public class BiaoyanService {
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList);
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
if (nowYearDiff.compareTo(YxConstant.bigDecimal0) == 0 && (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0)) {
//当前年分差为0并且 前年的分差也为0
enrollProbability = YxConstant.bigDecimal50;//录取率50
} else if (nowYearDiff.compareTo(YxConstant.bigDecimal0) > 0 && (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0)) {
//当前年分差不为0且历年分差为0
enrollProbability = nowYearDiff.multiply(YxConstant.bigDecimal075).multiply(YxConstant.bigDecimal100);
} else if (nowYearDiff.compareTo(YxConstant.bigDecimal0) == 0 && historyThreeYearDiff.compareTo(YxConstant.bigDecimal0) > 0) {
//当前年分差为0但是之前年分差大于零0
enrollProbability = YxConstant.bigDecimal1.divide(historyThreeYearDiff, 4, RoundingMode.HALF_UP).multiply(YxConstant.bigDecimal100);
if (historyThreeYearDiff.compareTo(YxConstant.bigDecimal1) == 0) {
//如果历年分差为1再乘0.75
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal075);
}
} else {
enrollProbability = nowYearDiff.divide(historyThreeYearDiff, 4, RoundingMode.HALF_UP).multiply(YxConstant.bigDecimal100);
//录取率*0.75
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal075);
}
}
if (enrollProbability.compareTo(YxConstant.bigDecimal150) > 0) {
enrollProbability = YxConstant.bigDecimal95x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal100) > 0) {
enrollProbability = YxConstant.bigDecimal85x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal0) <= 0) {
enrollProbability = YxConstant.bigDecimal0;
enrollProbability = ScoreUtil.commonCheckEnrollProbability(nowYearDiff,historyThreeYearDiff);
}
enrollProbability = ScoreUtil.commonCheckEnrollProbabilityBeilv(enrollProbability);
recommendMajorDTO.setEnrollProbability(enrollProbability);
recommendMajorDTO.setRulesEnrollProbability(ScoreUtil.replaceLastZeroChar(rulesEnrollProbability));
recommendMajorDTO.setProbabilityOperator(ScoreUtil.replaceLastZeroChar(probabilityOperator));

View File

@ -86,12 +86,13 @@ public class BoYinService {
if (StringUtils.isBlank(rulesEnrollProbability)) {
continue;
}
historyMajorEnrollList = historyMajorEnrollList.stream().filter(h -> YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList());
//没有往年录取分数线信息
if (CollectionUtils.isEmpty(historyMajorEnrollList) || !ScoreUtil.hasComputeEnrollProbabilityPermissions(nowBatch, recommendMajorDTO.getBatch())) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
historyMajorEnrollList = historyMajorEnrollList.stream().filter(h -> YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList());
//不是体育类的专业如果是文过专排并且没有录取计算运算符时文过专排是文*0+*1,专过文排是文*1+*0
if ("文过专排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) {
@ -144,21 +145,11 @@ public class BoYinService {
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList);
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
if (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0) {
continue;
}
enrollProbability = nowYearDiff.divide(historyThreeYearDiff, 4, RoundingMode.HALF_UP).multiply(YxConstant.bigDecimal100);
enrollProbability = ScoreUtil.commonCheckEnrollProbability(nowYearDiff,historyThreeYearDiff);
}
//录取方式计算
//录取率*0.75
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal075);
if (enrollProbability.compareTo(YxConstant.bigDecimal150) > 0) {
enrollProbability = YxConstant.bigDecimal95x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal100) > 0) {
enrollProbability = YxConstant.bigDecimal85x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal0) <= 0) {
enrollProbability = YxConstant.bigDecimal0;
}
enrollProbability = ScoreUtil.commonCheckEnrollProbabilityBeilv(enrollProbability);
recommendMajorDTO.setEnrollProbability(enrollProbability);
recommendMajorDTO.setRulesEnrollProbability(ScoreUtil.replaceLastZeroChar(rulesEnrollProbability));
recommendMajorDTO.setProbabilityOperator(ScoreUtil.replaceLastZeroChar(probabilityOperator));

View File

@ -111,17 +111,20 @@ public class MusicService {
culturalControlLine = batchControlLineMaps.get(recommendMajorDTO.getBatch()).getCulturalScore();
specialControlLine = batchControlLineMaps.get(recommendMajorDTO.getBatch()).getSpecialScore();
if (recommendMajorDTO.getSchoolCode().equals("9941") && recommendMajorDTO.getBatch().equals("提前批") && recommendMajorDTO.getEnrollmentCode().contains("08")) {
System.out.println("111");
}
//没有计算方式 跳过
if (StringUtils.isBlank(rulesEnrollProbability)) {
continue;
}
historyMajorEnrollList = historyMajorEnrollList.stream().filter(h -> YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList());
//没有往年录取分数线信息
if (CollectionUtils.isEmpty(historyMajorEnrollList) || !ScoreUtil.hasComputeEnrollProbabilityPermissions(nowBatch, recommendMajorDTO.getBatch())) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
historyMajorEnrollList = historyMajorEnrollList.stream().filter(h -> YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList());
//不是体育类的专业如果是文过专排并且没有录取计算运算符时文过专排是文*0+*1,专过文排是文*1+*0
if ("文过专排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) {
@ -134,10 +137,6 @@ public class MusicService {
continue;
}
if (recommendMajorDTO.getSchoolCode().equals("6030") && recommendMajorDTO.getBatch().equals("本科A段") && recommendMajorDTO.getEnrollmentCode().contains("12")) {
System.out.println("111");
}
//将当期成绩按照专业录取分数方式折算
majorTypeChild = recommendMajorDTO.getMajorTypeChild();
mainSubjects = recommendMajorDTO.getMainSubjects();
@ -203,11 +202,12 @@ public class MusicService {
YxHistoryMajorEnroll yxHistoryMajorEnroll = historyMajorEnrollList.get(0);
BigDecimal admissionLine = yxHistoryMajorEnroll.getAdmissionLine();
enrollProbability = studentScore.divide(admissionLine,4,RoundingMode.HALF_UP);
/*if (studentScore.compareTo(admissionLine) < 0) {
//如果当前主项成绩<近一年的录取分数录取概率*0.5
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal05);
}*/
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal100);
//当前年主科成绩跟去年的专业主科录取分 相等按照正常的概率去算 *0.75
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal075).multiply(YxConstant.bigDecimal100);
//当前年主科成绩小于去年的专业主科录取分按照正常的概率去算 *0.75之后 每少1分少10%概率
if(studentScore.compareTo(admissionLine)<0){
enrollProbability = enrollProbability.subtract((admissionLine.subtract(studentScore)).multiply(YxConstant.bigDecimal10));
}
recommendMajorDTO.setEnrollProbability(enrollProbability);
recommendMajorDTO.setRulesEnrollProbability(ScoreUtil.replaceLastZeroChar(rulesEnrollProbability));
recommendMajorDTO.setProbabilityOperator(ScoreUtil.replaceLastZeroChar(probabilityOperator));
@ -219,26 +219,11 @@ public class MusicService {
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList);
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
if (historyThreeYearDiff.compareTo(YxConstant.bigDecimal0)<=0) {
enrollProbability = nowYearDiff.multiply(YxConstant.bigDecimal100);
}else{
if (historyThreeYearDiff == null) {
continue;
}
enrollProbability = nowYearDiff.divide(historyThreeYearDiff, 4, RoundingMode.HALF_UP).multiply(YxConstant.bigDecimal100);
}
enrollProbability = ScoreUtil.commonCheckEnrollProbability(nowYearDiff,historyThreeYearDiff);
}
//录取方式计算
//录取率*0.75
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal075);
if (enrollProbability.compareTo(YxConstant.bigDecimal150) > 0) {
enrollProbability = YxConstant.bigDecimal95x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal100) > 0) {
enrollProbability = YxConstant.bigDecimal85x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal0) <= 0) {
enrollProbability = YxConstant.bigDecimal0;
}
//调整录取倍率
enrollProbability = ScoreUtil.commonCheckEnrollProbabilityBeilv(enrollProbability);
recommendMajorDTO.setEnrollProbability(enrollProbability);
recommendMajorDTO.setRulesEnrollProbability(ScoreUtil.replaceLastZeroChar(rulesEnrollProbability));
recommendMajorDTO.setProbabilityOperator(ScoreUtil.replaceLastZeroChar(probabilityOperator));

View File

@ -86,12 +86,14 @@ public class WuDaoService {
if (StringUtils.isBlank(rulesEnrollProbability)) {
continue;
}
historyMajorEnrollList = historyMajorEnrollList.stream().filter(h -> YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList());
//没有往年录取分数线信息
if (CollectionUtils.isEmpty(historyMajorEnrollList) || !ScoreUtil.hasComputeEnrollProbabilityPermissions(nowBatch, recommendMajorDTO.getBatch())) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
historyMajorEnrollList = historyMajorEnrollList.stream().filter(h -> YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList());
//不是体育类的专业如果是文过专排并且没有录取计算运算符时文过专排是文*0+*1,专过文排是文*1+*0
if ("文过专排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) {
@ -161,33 +163,9 @@ public class WuDaoService {
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList);
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
if(nowYearDiff.compareTo(YxConstant.bigDecimal0)==0 && (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0)) {
//当前年分差为0并且 前年的分差也为0
enrollProbability = YxConstant.bigDecimal50;//录取率50
}else if (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0) {
continue;
} else if(nowYearDiff.compareTo(YxConstant.bigDecimal0)==0 && historyThreeYearDiff.compareTo(YxConstant.bigDecimal0)>0){
//当前年分差为0但是之前年分差大于零0
enrollProbability = YxConstant.bigDecimal1.divide(historyThreeYearDiff,4,RoundingMode.HALF_UP).multiply(YxConstant.bigDecimal100);
if (historyThreeYearDiff.compareTo(YxConstant.bigDecimal1)==0) {
//如果历年分差为1再乘0.75
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal075);
}
}else{
enrollProbability = nowYearDiff.divide(historyThreeYearDiff, 4, RoundingMode.HALF_UP).multiply(YxConstant.bigDecimal100);
//录取率*0.75
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal075);
}
}
//录取方式计算
if (enrollProbability.compareTo(YxConstant.bigDecimal150) > 0) {
enrollProbability = YxConstant.bigDecimal95x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal100) > 0) {
enrollProbability = YxConstant.bigDecimal85x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal0) <= 0) {
enrollProbability = YxConstant.bigDecimal0;
enrollProbability = ScoreUtil.commonCheckEnrollProbability(nowYearDiff,historyThreeYearDiff);
}
enrollProbability = ScoreUtil.commonCheckEnrollProbabilityBeilv(enrollProbability);
recommendMajorDTO.setEnrollProbability(enrollProbability);
recommendMajorDTO.setRulesEnrollProbability(ScoreUtil.replaceLastZeroChar(rulesEnrollProbability));
recommendMajorDTO.setProbabilityOperator(ScoreUtil.replaceLastZeroChar(probabilityOperator));

View File

@ -94,6 +94,7 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
otherScoreLimitation = new StringBuilder();
yxCalculationMajor = new YxCalculationMajor();
BeanUtils.copyProperties(recommendMajorDTO, yxCalculationMajor);
yxCalculationMajor.setDetail(recommendMajorDTO.getMajorDetail());
yxCalculationMajor.setScoreId(userScore.getId());
yxCalculationMajor.setStudentOldConvertedScore(recommendMajorDTO.getStudentScore());
//其他分数要求
@ -172,6 +173,10 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
if (StringUtils.isNotBlank(queryRecommendMajorVO.getProvince())) {
queryRecommendMajorVO.setAddressList(Arrays.asList(queryRecommendMajorVO.getProvince().split(",")));
}
//科研教学
if (StringUtils.isNotBlank(queryRecommendMajorVO.getKyjxStrs())) {
queryRecommendMajorVO.setKyjxList(Arrays.asList(queryRecommendMajorVO.getKyjxStrs().split(",")));
}
//获取推荐志愿信息service
List<RecommendMajorDTO> recommendMajorList = baseMapper.recommendMajorList(activeCurrentUserScore.getCalculationTableName(),queryRecommendMajorVO);
@ -488,6 +493,9 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
continue;
}
if(recommendMajorDTO.getRulesEnrollProbability().equals("文过专排") && recommendMajorDTO.getSchoolCode().equals("4100")){
System.out.println("11");
}
//不是体育类的专业如果是文过专排并且没有录取计算运算符时文过专排是文*0+*1,专过文排是文*1+*0
if ("文过专排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) {
probabilityOperator = "文*0+专*1";
@ -540,18 +548,10 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
if (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0) {
continue;
}
enrollProbability = nowYearDiff.divide(historyThreeYearDiff, 4, RoundingMode.HALF_UP).multiply(YxConstant.bigDecimal100);
enrollProbability = ScoreUtil.commonCheckEnrollProbability(nowYearDiff,historyThreeYearDiff);
}
//录取率*0.75
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal075);
if (enrollProbability.compareTo(YxConstant.bigDecimal150) > 0) {
enrollProbability = YxConstant.bigDecimal95x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal100) > 0) {
enrollProbability = YxConstant.bigDecimal85x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal0) <= 0) {
enrollProbability = YxConstant.bigDecimal0;
}
enrollProbability = ScoreUtil.commonCheckEnrollProbabilityBeilv(enrollProbability);
recommendMajorDTO.setEnrollProbability(enrollProbability);
recommendMajorDTO.setRulesEnrollProbability(ScoreUtil.replaceLastZeroChar(rulesEnrollProbability));
recommendMajorDTO.setProbabilityOperator(ScoreUtil.replaceLastZeroChar(probabilityOperator));
@ -564,4 +564,5 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
e.printStackTrace();
}
}
}

View File

@ -85,14 +85,15 @@ public class ZhuanService {
if (StringUtils.isBlank(rulesEnrollProbability)) {
continue;
}
if (YxConstant.cankaoMajorTypeList.contains(recommendMajorDTO.getMajorType())) {
historyMajorEnrollList = historyMajorEnrollList.stream().filter(h->YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList());
}
//没有往年录取分数线信息
if (CollectionUtils.isEmpty(historyMajorEnrollList) || !ScoreUtil.hasComputeEnrollProbabilityPermissions(nowBatch,recommendMajorDTO.getBatch())) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
if (YxConstant.cankaoMajorTypeList.contains(recommendMajorDTO.getMajorType())) {
historyMajorEnrollList = historyMajorEnrollList.stream().filter(h->YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList());
}
//不是体育类的专业如果是文过专排并且没有录取计算运算符时文过专排是文*0+*1,专过文排是文*1+*0
if ("文过专排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) {

View File

@ -487,4 +487,41 @@ public class ScoreUtil {
}
return true;
}
/**
* 统一计算录取率方法
* @param nowYearDiff 当前年分差
* @param historyThreeYearDiff 去年分差
* @return 录取率
*/
public static BigDecimal commonCheckEnrollProbability(BigDecimal nowYearDiff, BigDecimal historyThreeYearDiff) {
BigDecimal enrollProbability = null;
if(nowYearDiff.compareTo(YxConstant.bigDecimal0) == 0 && historyThreeYearDiff.compareTo(YxConstant.bigDecimal0)>0){
//当前年的分差为0去年分差不为0 75/去年的线差
enrollProbability = YxConstant.bigDecimal75.divide(historyThreeYearDiff,4,RoundingMode.HALF_UP);
}else if(nowYearDiff.compareTo(YxConstant.bigDecimal0) == 0 && historyThreeYearDiff.compareTo(YxConstant.bigDecimal0)<=0){
//当前年分差为0去年分差为0
enrollProbability = YxConstant.bigDecimal50;//录取率50
}else if(nowYearDiff.compareTo(YxConstant.bigDecimal0) > 0 && historyThreeYearDiff.compareTo(YxConstant.bigDecimal0)<=0){
//当前年分差不为0去年分差为0默认去年的分差为1
enrollProbability = nowYearDiff.multiply(YxConstant.bigDecimal075).multiply(YxConstant.bigDecimal100);
} else {
//当前年分差不为0去年分差也不为0当前年分差/去年分差*0.75
enrollProbability = nowYearDiff.divide(historyThreeYearDiff, 4, RoundingMode.HALF_UP).multiply(YxConstant.bigDecimal100);
//录取率*0.75
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal075);
}
return enrollProbability;
}
public static BigDecimal commonCheckEnrollProbabilityBeilv(BigDecimal enrollProbability) {
if (enrollProbability.compareTo(YxConstant.bigDecimal150) > 0) {
enrollProbability = YxConstant.bigDecimal95x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal100) > 0) {
enrollProbability = YxConstant.bigDecimal85x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal0) <= 0) {
enrollProbability = YxConstant.bigDecimal0;
}
return enrollProbability;
}
}