From e4c57c50216d7d3a4b8d12c644322d5a507ae757 Mon Sep 17 00:00:00 2001 From: zhouwentao <1577701412@qq.com> Date: Mon, 18 Mar 2024 17:31:12 +0800 Subject: [PATCH] updates --- .../modules/art/vo/QueryRecommendMajorVO.java | 5 ++- .../jeecg/modules/yx/constant/YxConstant.java | 2 + .../YxHistoryMajorEnrollController.java | 10 +++++ .../controller/YxScoreSegmentController.java | 12 +++--- .../mapper/xml/YxCalculationMajorMapper.xml | 26 ++++++++--- .../modules/yx/mapper/xml/YxSchoolMapper.xml | 6 +-- .../yx/service/impl/BiaoyanService.java | 27 +----------- .../modules/yx/service/impl/BoYinService.java | 19 +++----- .../modules/yx/service/impl/MusicService.java | 43 ++++++------------- .../modules/yx/service/impl/WuDaoService.java | 32 +++----------- .../impl/YxCalculationMajorServiceImpl.java | 21 ++++----- .../modules/yx/service/impl/ZhuanService.java | 7 +-- .../org/jeecg/modules/yx/util/ScoreUtil.java | 37 ++++++++++++++++ 13 files changed, 124 insertions(+), 123 deletions(-) diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/vo/QueryRecommendMajorVO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/vo/QueryRecommendMajorVO.java index c1de1ae..4c87cde 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/vo/QueryRecommendMajorVO.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/vo/QueryRecommendMajorVO.java @@ -42,7 +42,10 @@ public class QueryRecommendMajorVO extends ArtBaseDTO { private String schoolNatureStrs; @ApiModelProperty(value = "办学性质List") private List schoolNatureList; - + @ApiModelProperty(value = "科研教学") + private String kyjxStrs; + @ApiModelProperty(value = "科研教学List") + private List kyjxList; @ApiModelProperty(value = "院校类型") private String institutionType; @ApiModelProperty(value = "院校类型List") diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/constant/YxConstant.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/constant/YxConstant.java index f7e0373..a377393 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/constant/YxConstant.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/constant/YxConstant.java @@ -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"); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxHistoryMajorEnrollController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxHistoryMajorEnrollController.java index 2ca34a3..5ff3ea1 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxHistoryMajorEnrollController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxHistoryMajorEnrollController.java @@ -486,6 +486,15 @@ public class YxHistoryMajorEnrollController extends JeecgController test() { - String year = "2023"; - String professionalCategory = "舞蹈类"; - String professionalCategoryChild=null; + String year = "2024"; + String professionalCategory = "表演类"; + String professionalCategoryChild="服装表演"; String province = "河南"; LambdaQueryWrapper yxScoreSegmentLambdaQueryWrapper = new LambdaQueryWrapper<>(); yxScoreSegmentLambdaQueryWrapper.eq(YxScoreSegment::getYear,year); @@ -289,7 +289,7 @@ public class YxScoreSegmentController extends JeecgController list = yxScoreSegmentService.list(yxScoreSegmentLambdaQueryWrapper); List scoreSegmentNextAddList=new ArrayList<>(); //根据5分一段表,遍历,折算出每个段位内4分的占比 @@ -337,8 +337,8 @@ public class YxScoreSegmentController extends JeecgController 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("约等于上一年的分数:"); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxCalculationMajorMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxCalculationMajorMapper.xml index 9086a20..0d16c17 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxCalculationMajorMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxCalculationMajorMapper.xml @@ -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} + + + + AND (srt.academic_master_degree_point >0 or srt.professional_master_degree_point >0) + + + AND srt.doctoral_point>0 + + + AND srt.byzg = 1 + + @@ -128,20 +141,22 @@ AND( - cm.main_subjects like '%声乐%' AND ( + cm.main_subjects like '%声乐%' + - cm.main_subjects like '%器乐%' AND ( + cm.main_subjects like '%器乐%' + cm.major_type_child = '音乐教育' @@ -170,3 +185,4 @@ ORDER BY enroll_probability desc + diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxSchoolMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxSchoolMapper.xml index 669f45a..91f8f27 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxSchoolMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxSchoolMapper.xml @@ -249,11 +249,11 @@ - + AND s.school_type like '%本科%' - - AND s.school_type like '%高职高专%' + + AND s.school_type like '%专科%' AND s.school_nature = #{qvo.schoolType} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/BiaoyanService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/BiaoyanService.java index e20f67d..fb5bde9 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/BiaoyanService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/BiaoyanService.java @@ -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)); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/BoYinService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/BoYinService.java index e9c3ad8..5dd2078 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/BoYinService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/BoYinService.java @@ -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)); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/MusicService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/MusicService.java index 59653c6..b9313e7 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/MusicService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/MusicService.java @@ -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)); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/WuDaoService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/WuDaoService.java index 3e6b186..4bce80e 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/WuDaoService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/WuDaoService.java @@ -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)); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxCalculationMajorServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxCalculationMajorServiceImpl.java index ff732f4..08b93a9 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxCalculationMajorServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxCalculationMajorServiceImpl.java @@ -94,6 +94,7 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl recommendMajorList = baseMapper.recommendMajorList(activeCurrentUserScore.getCalculationTableName(),queryRecommendMajorVO); @@ -488,6 +493,9 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl 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 ServiceImplYxConstant.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)) { diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/util/ScoreUtil.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/util/ScoreUtil.java index 15dacef..98b4a17 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/util/ScoreUtil.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/util/ScoreUtil.java @@ -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; + } }