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 = "投档分测算")
@GetMapping("/calculateInvestment")
public Result<?> calculateInvestment(QueryCalculateInvestmentVO queryCalculateInvestmentVO) {
BigDecimal culturalScore = new BigDecimal(queryCalculateInvestmentVO.getCulturalScore());
BigDecimal professionalScore = new BigDecimal(queryCalculateInvestmentVO.getProfessionalScore());
//获取 院校专业信息列表,录取方式notnull
LambdaQueryWrapper<YxSchoolMajor> yxSchoolMajorLambdaQueryWrapper = new LambdaQueryWrapper<>();
yxSchoolMajorLambdaQueryWrapper.isNotNull(YxSchoolMajor::getRulesEnrollProbability);
//字段匹配: batch 批次,category 文理分科,majorType 专业类型
if (!"高职高专".equals(queryCalculateInvestmentVO.getBatch())) {
yxSchoolMajorLambdaQueryWrapper.ne(YxSchoolMajor::getBatch, "高职高专");
}else{
} else {
yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getBatch, queryCalculateInvestmentVO.getBatch());
}
yxSchoolMajorLambdaQueryWrapper.eq(StringUtils.isNotBlank(queryCalculateInvestmentVO.getCategory()), YxSchoolMajor::getCategory, queryCalculateInvestmentVO.getCategory());
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<>();
try {
if (CollectionUtils.isEmpty(schooMajorList)) {
return Result.OK();
Map<String,String> rulesEnrollProbabilityMap=new HashMap<>();
rulesEnrollProbabilityMap.put("专过文排","专过文排");
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;
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();
}
BigDecimal culturalScore = new BigDecimal(queryCalculateInvestmentVO.getCulturalScore());
BigDecimal professionalScore = new BigDecimal(queryCalculateInvestmentVO.getProfessionalScore());
//根据录取方式计算折合分数
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(rulesEnrollProbability);
artCalculateInvestmentDTO.setProbabilityOperator(yxSchoolMajor.getProbabilityOperator());
if (rulesEnrollProbability.contains("文*0.133+专*0")) {
System.out.println("111");
for (String probabilityOperator : rulesEnrollProbabilityList) {
artCalculateInvestmentDTO = new ArtCalculateInvestmentDTO();
if (probabilityOperator.equals("专过文排")) {
artCalculateInvestmentDTO.setRulesEnrollProbability(rulesEnrollProbabilityMap.get(probabilityOperator));
artCalculateInvestmentDTO.setProbabilityOperator("文*1");
artCalculateInvestmentDTO.setScore(culturalScore);
artCalculateInvestmentDTO.setSchoolNum((int) schooMajorList.stream().filter(s->s.getRulesEnrollProbability().equals("专过文排")).count());
calculateInvestmentDTOList.add(artCalculateInvestmentDTO);
} else {
wenhuaBili = null;
zhuanyeBili = null;
String[] operators = probabilityOperator.split("\\+");
for (String operator : operators) {
if (operator.contains("")) {
wenhuaBili = new BigDecimal(operator.split("\\*")[1]);
}
if (operator.contains("")) {
zhuanyeBili = new BigDecimal(operator.split("\\*")[1]);
}
}
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);
}
}
} catch (Exception e) {
return Result.error("计算折合分出错,请联系管理员");
} else {
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);
}
@ -160,6 +208,6 @@ public class ArtRecommendMajorController {
String year = queryRecommendMajorVO.getYear();
AssertUtils.notNull(loginUser, "未获取到登录信息");
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.setRulesEnrollProbability("文过专排");
} else if ("专过文排".equals(rulesEnrollProbability)) {
BigDecimal multiply = specialScore.multiply(wenhuaBili);
BigDecimal multiply = culturalScore.multiply(wenhuaBili);
yxHistoryMajorEnroll.setControlLine(multiply);
yxHistoryMajorEnroll.setRulesEnrollProbability("专过文排");
} else if ("其他计算办法".equals(rulesEnrollProbability)) {

View File

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

View File

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