This commit is contained in:
zhouwentao 2024-03-31 14:46:48 +08:00
parent 1953f50c5c
commit 64069bf2f2
4 changed files with 96 additions and 47 deletions

View File

@ -91,62 +91,110 @@ public class ArtRecommendMajorController {
@ApiOperation(value = "投档分测算") @ApiOperation(value = "投档分测算")
@GetMapping("/calculateInvestment") @GetMapping("/calculateInvestment")
public Result<?> calculateInvestment(QueryCalculateInvestmentVO queryCalculateInvestmentVO) { public Result<?> calculateInvestment(QueryCalculateInvestmentVO queryCalculateInvestmentVO) {
BigDecimal culturalScore = new BigDecimal(queryCalculateInvestmentVO.getCulturalScore());
BigDecimal professionalScore = new BigDecimal(queryCalculateInvestmentVO.getProfessionalScore());
//获取 院校专业信息列表,录取方式notnull //获取 院校专业信息列表,录取方式notnull
LambdaQueryWrapper<YxSchoolMajor> yxSchoolMajorLambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<YxSchoolMajor> yxSchoolMajorLambdaQueryWrapper = new LambdaQueryWrapper<>();
yxSchoolMajorLambdaQueryWrapper.isNotNull(YxSchoolMajor::getRulesEnrollProbability); yxSchoolMajorLambdaQueryWrapper.isNotNull(YxSchoolMajor::getRulesEnrollProbability);
//字段匹配: batch 批次,category 文理分科,majorType 专业类型 //字段匹配: batch 批次,category 文理分科,majorType 专业类型
if (!"高职高专".equals(queryCalculateInvestmentVO.getBatch())) { if (!"高职高专".equals(queryCalculateInvestmentVO.getBatch())) {
yxSchoolMajorLambdaQueryWrapper.ne(YxSchoolMajor::getBatch, "高职高专"); yxSchoolMajorLambdaQueryWrapper.ne(YxSchoolMajor::getBatch, "高职高专");
}else{ } else {
yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getBatch, queryCalculateInvestmentVO.getBatch()); yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getBatch, queryCalculateInvestmentVO.getBatch());
} }
yxSchoolMajorLambdaQueryWrapper.eq(StringUtils.isNotBlank(queryCalculateInvestmentVO.getCategory()), YxSchoolMajor::getCategory, queryCalculateInvestmentVO.getCategory()); yxSchoolMajorLambdaQueryWrapper.eq(StringUtils.isNotBlank(queryCalculateInvestmentVO.getCategory()), YxSchoolMajor::getCategory, queryCalculateInvestmentVO.getCategory());
yxSchoolMajorLambdaQueryWrapper.eq(StringUtils.isNotBlank(queryCalculateInvestmentVO.getProfessionalCategory()), YxSchoolMajor::getMajorType, queryCalculateInvestmentVO.getProfessionalCategory()); yxSchoolMajorLambdaQueryWrapper.eq(StringUtils.isNotBlank(queryCalculateInvestmentVO.getProfessionalCategory()), YxSchoolMajor::getMajorType, queryCalculateInvestmentVO.getProfessionalCategory());
if (!"体育类".equals(queryCalculateInvestmentVO.getProfessionalCategory())) {
List<String> probabilityOperatorList = Arrays.asList("文*0.8+专*0.5","文*0.7+专*0.75","文*0.6+专*1","文*0.5+专*1.25");
yxSchoolMajorLambdaQueryWrapper.in(YxSchoolMajor::getProbabilityOperator,probabilityOperatorList);
}
List<YxSchoolMajor> schooMajorList = yxSchoolMajorService.list(yxSchoolMajorLambdaQueryWrapper);
List<ArtCalculateInvestmentDTO> calculateInvestmentDTOList = new ArrayList<>(); List<ArtCalculateInvestmentDTO> calculateInvestmentDTOList = new ArrayList<>();
try { Map<String,String> rulesEnrollProbabilityMap=new HashMap<>();
if (CollectionUtils.isEmpty(schooMajorList)) { rulesEnrollProbabilityMap.put("专过文排","专过文排");
return Result.OK(); rulesEnrollProbabilityMap.put("文*0.8+专*0.5","文8专2");
rulesEnrollProbabilityMap.put("文*0.7+专*0.75","文7专3");
rulesEnrollProbabilityMap.put("文*0.6+专*1","文6专4");
rulesEnrollProbabilityMap.put("文*0.5+专*1.25","文5专5");
if (!"体育类".equals(queryCalculateInvestmentVO.getProfessionalCategory())) {
//非体育类
List<String> rulesEnrollProbabilityList = null;
if ("高职高专".equals(queryCalculateInvestmentVO.getBatch())) {
rulesEnrollProbabilityList = Arrays.asList("文*0.5+专*1.25");
}else{
rulesEnrollProbabilityList = Arrays.asList("文*0.8+专*0.5", "文*0.7+专*0.75", "文*0.6+专*1", "文*0.5+专*1.25", "专过文排");
} }
yxSchoolMajorLambdaQueryWrapper.in(YxSchoolMajor::getRulesEnrollProbability, rulesEnrollProbabilityList);
List<YxSchoolMajor> schooMajorList = yxSchoolMajorService.list(yxSchoolMajorLambdaQueryWrapper);
BigDecimal wenhuaBili = null;
BigDecimal zhuanyeBili = null;
ArtCalculateInvestmentDTO artCalculateInvestmentDTO = null; ArtCalculateInvestmentDTO artCalculateInvestmentDTO = null;
Integer schoolNum = 0; for (String probabilityOperator : rulesEnrollProbabilityList) {
//遍历 院校专业列表将录取方式院校代码储存起来 artCalculateInvestmentDTO = new ArtCalculateInvestmentDTO();
//mapkey:录取方式value: array[院校代码] if (probabilityOperator.equals("专过文排")) {
Map<String, Set<String>> maps = new LinkedHashMap<>(); artCalculateInvestmentDTO.setRulesEnrollProbability(rulesEnrollProbabilityMap.get(probabilityOperator));
Set<String> schoolCodeSet = null; artCalculateInvestmentDTO.setProbabilityOperator("文*1");
for (YxSchoolMajor yxSchoolMajor : schooMajorList) { artCalculateInvestmentDTO.setScore(culturalScore);
schoolCodeSet = maps.getOrDefault(yxSchoolMajor.getRulesEnrollProbability(), new HashSet<>()); artCalculateInvestmentDTO.setSchoolNum((int) schooMajorList.stream().filter(s->s.getRulesEnrollProbability().equals("专过文排")).count());
schoolCodeSet.add(yxSchoolMajor.getSchoolCode()); calculateInvestmentDTOList.add(artCalculateInvestmentDTO);
maps.put(yxSchoolMajor.getRulesEnrollProbability(), schoolCodeSet); } else {
} wenhuaBili = null;
if (maps.isEmpty()) { zhuanyeBili = null;
return Result.OK(); String[] operators = probabilityOperator.split("\\+");
} for (String operator : operators) {
BigDecimal culturalScore = new BigDecimal(queryCalculateInvestmentVO.getCulturalScore()); if (operator.contains("")) {
BigDecimal professionalScore = new BigDecimal(queryCalculateInvestmentVO.getProfessionalScore()); wenhuaBili = new BigDecimal(operator.split("\\*")[1]);
//根据录取方式计算折合分数 }
for (String rulesEnrollProbability : maps.keySet()) { if (operator.contains("")) {
Optional<YxSchoolMajor> any = schooMajorList.stream().filter(s -> s.getRulesEnrollProbability().equals(rulesEnrollProbability)).findAny(); zhuanyeBili = new BigDecimal(operator.split("\\*")[1]);
if (any.isPresent()) { }
YxSchoolMajor yxSchoolMajor = any.get();
artCalculateInvestmentDTO = new ArtCalculateInvestmentDTO();
artCalculateInvestmentDTO.setSchoolNum(maps.get(rulesEnrollProbability).size());
artCalculateInvestmentDTO.setRulesEnrollProbability(rulesEnrollProbability);
artCalculateInvestmentDTO.setProbabilityOperator(yxSchoolMajor.getProbabilityOperator());
if (rulesEnrollProbability.contains("文*0.133+专*0")) {
System.out.println("111");
} }
artCalculateInvestmentDTO.setScore(ScoreUtil.convertIntoScore(rulesEnrollProbability, culturalScore, professionalScore, null, yxSchoolMajor.getProbabilityOperator())); if (wenhuaBili == null || zhuanyeBili == null) {
wenhuaBili = YxConstant.bigDecimal100;
zhuanyeBili = YxConstant.bigDecimal100;
}
artCalculateInvestmentDTO = new ArtCalculateInvestmentDTO();
artCalculateInvestmentDTO.setRulesEnrollProbability(rulesEnrollProbabilityMap.get(probabilityOperator));
artCalculateInvestmentDTO.setProbabilityOperator(probabilityOperator);
artCalculateInvestmentDTO.setScore((culturalScore.multiply(wenhuaBili)).add((professionalScore.multiply(zhuanyeBili))));
artCalculateInvestmentDTO.setSchoolNum((int) schooMajorList.stream().filter(s->s.getProbabilityOperator().contains(probabilityOperator)).count());
calculateInvestmentDTOList.add(artCalculateInvestmentDTO); calculateInvestmentDTOList.add(artCalculateInvestmentDTO);
} }
} }
} catch (Exception e) { } else {
return Result.error("计算折合分出错,请联系管理员"); List<YxSchoolMajor> schooMajorList = yxSchoolMajorService.list(yxSchoolMajorLambdaQueryWrapper);
try {
if (CollectionUtils.isEmpty(schooMajorList)) {
return Result.OK();
}
ArtCalculateInvestmentDTO artCalculateInvestmentDTO = null;
Integer schoolNum = 0;
//遍历 院校专业列表将录取方式院校代码储存起来
//mapkey:录取方式value: array[院校代码]
Map<String, Set<String>> maps = new LinkedHashMap<>();
Set<String> schoolCodeSet = null;
for (YxSchoolMajor yxSchoolMajor : schooMajorList) {
schoolCodeSet = maps.getOrDefault(yxSchoolMajor.getRulesEnrollProbability(), new HashSet<>());
schoolCodeSet.add(yxSchoolMajor.getSchoolCode());
maps.put(yxSchoolMajor.getRulesEnrollProbability(), schoolCodeSet);
}
if (maps.isEmpty()) {
return Result.OK();
}
//根据录取方式计算折合分数
for (String rulesEnrollProbability : maps.keySet()) {
Optional<YxSchoolMajor> any = schooMajorList.stream().filter(s -> s.getRulesEnrollProbability().equals(rulesEnrollProbability)).findAny();
if (any.isPresent()) {
YxSchoolMajor yxSchoolMajor = any.get();
artCalculateInvestmentDTO = new ArtCalculateInvestmentDTO();
artCalculateInvestmentDTO.setSchoolNum(maps.get(rulesEnrollProbability).size());
artCalculateInvestmentDTO.setRulesEnrollProbability(yxSchoolMajor.getRulesEnrollProbabilitySx());
artCalculateInvestmentDTO.setProbabilityOperator(yxSchoolMajor.getProbabilityOperator());
artCalculateInvestmentDTO.setScore(ScoreUtil.convertIntoScore(rulesEnrollProbability, culturalScore, professionalScore, null, yxSchoolMajor.getProbabilityOperator()));
calculateInvestmentDTOList.add(artCalculateInvestmentDTO);
}
}
} catch (Exception e) {
return Result.error("计算折合分出错,请联系管理员");
}
} }
return Result.OK(calculateInvestmentDTOList); return Result.OK(calculateInvestmentDTOList);
} }
@ -160,6 +208,6 @@ public class ArtRecommendMajorController {
String year = queryRecommendMajorVO.getYear(); String year = queryRecommendMajorVO.getYear();
AssertUtils.notNull(loginUser, "未获取到登录信息"); AssertUtils.notNull(loginUser, "未获取到登录信息");
AssertUtils.notNull(year, "请选择年份"); AssertUtils.notNull(year, "请选择年份");
return Result.OK(testCulturalService.testCultural(schoolCode,year)); return Result.OK(testCulturalService.testCultural(schoolCode, year));
} }
} }

View File

@ -366,7 +366,7 @@ public class YxHistoryMajorEnrollController extends JeecgController<YxHistoryMaj
yxHistoryMajorEnroll.setControlLine(multiply); yxHistoryMajorEnroll.setControlLine(multiply);
yxHistoryMajorEnroll.setRulesEnrollProbability("文过专排"); yxHistoryMajorEnroll.setRulesEnrollProbability("文过专排");
} else if ("专过文排".equals(rulesEnrollProbability)) { } else if ("专过文排".equals(rulesEnrollProbability)) {
BigDecimal multiply = specialScore.multiply(wenhuaBili); BigDecimal multiply = culturalScore.multiply(wenhuaBili);
yxHistoryMajorEnroll.setControlLine(multiply); yxHistoryMajorEnroll.setControlLine(multiply);
yxHistoryMajorEnroll.setRulesEnrollProbability("专过文排"); yxHistoryMajorEnroll.setRulesEnrollProbability("专过文排");
} else if ("其他计算办法".equals(rulesEnrollProbability)) { } else if ("其他计算办法".equals(rulesEnrollProbability)) {

View File

@ -518,6 +518,9 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
recommendMajorDTO.setStudentConvertedScore(studentScore); recommendMajorDTO.setStudentConvertedScore(studentScore);
recommendMajorDTO.setStudentScore(studentScore); recommendMajorDTO.setStudentScore(studentScore);
if (recommendMajorDTO.getSchoolCode().equals("6198") && "06".equals(recommendMajorDTO.getEnrollmentCode())) {
System.out.println("1111");
}
//录取方式计算 //录取方式计算
if (rulesEnrollProbability.equals("文过专排主科")) { if (rulesEnrollProbability.equals("文过专排主科")) {
@ -542,9 +545,6 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference"); historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
//historyThreeYearDiff = sum.divide(new BigDecimal(size), 4, RoundingMode.HALF_UP); //historyThreeYearDiff = sum.divide(new BigDecimal(size), 4, RoundingMode.HALF_UP);
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine); nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
if (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0) {
continue;
}
enrollProbability = ScoreUtil.commonCheckEnrollProbability(nowYearDiff,historyThreeYearDiff); enrollProbability = ScoreUtil.commonCheckEnrollProbability(nowYearDiff,historyThreeYearDiff);
} }

View File

@ -170,8 +170,9 @@ public class YxHistoryMajorEnrollServiceImpl extends ServiceImpl<YxHistoryMajorE
if (StringUtils.isNotBlank(id)) { if (StringUtils.isNotBlank(id)) {
lambdaQueryWrapper.in(YxHistoryMajorEnroll::getId, Arrays.asList(id.split(","))); lambdaQueryWrapper.in(YxHistoryMajorEnroll::getId, Arrays.asList(id.split(",")));
} }
lambdaQueryWrapper.eq(YxHistoryMajorEnroll::getMajorType,"体育类"); // lambdaQueryWrapper.eq(YxHistoryMajorEnroll::getMajorType,"体育类");
lambdaQueryWrapper.eq(YxHistoryMajorEnroll::getBatch,"本科"); // lambdaQueryWrapper.eq(YxHistoryMajorEnroll::getBatch,"本科");
lambdaQueryWrapper.eq(YxHistoryMajorEnroll::getRulesEnrollProbability,"专过文排");
//lambdaQueryWrapper.in(YxHistoryMajorEnroll::getRulesEnrollProbability,"专过文排","文过专排"); //lambdaQueryWrapper.in(YxHistoryMajorEnroll::getRulesEnrollProbability,"专过文排","文过专排");
List<YxHistoryMajorEnroll> list = list(lambdaQueryWrapper); List<YxHistoryMajorEnroll> list = list(lambdaQueryWrapper);
if (CollectionUtils.isNotEmpty(list)) { if (CollectionUtils.isNotEmpty(list)) {
@ -266,7 +267,7 @@ public class YxHistoryMajorEnrollServiceImpl extends ServiceImpl<YxHistoryMajorE
record.setControlLine(multiply); record.setControlLine(multiply);
record.setRulesEnrollProbability("文过专排"); record.setRulesEnrollProbability("文过专排");
} else if ("专过文排".equals(rulesEnrollProbability)) { } else if ("专过文排".equals(rulesEnrollProbability)) {
BigDecimal multiply = specialScore.multiply(wenhuaBili); BigDecimal multiply = culturalScore.multiply(wenhuaBili);
record.setControlLine(multiply); record.setControlLine(multiply);
record.setRulesEnrollProbability("专过文排"); record.setRulesEnrollProbability("专过文排");
} else if ("其他计算办法".equals(rulesEnrollProbability)) { } else if ("其他计算办法".equals(rulesEnrollProbability)) {
@ -291,7 +292,7 @@ public class YxHistoryMajorEnrollServiceImpl extends ServiceImpl<YxHistoryMajorE
} }
} }
updateBatchById(list,500); updateBatchById(list,500);
log.debug("已刷新省控线"); log.error("已刷新省控线");
} }
} }