diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtRecommendMajorController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtRecommendMajorController.java index 3f34f5e..0dd76a7 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtRecommendMajorController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtRecommendMajorController.java @@ -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 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 probabilityOperatorList = Arrays.asList("文*0.8+专*0.5","文*0.7+专*0.75","文*0.6+专*1","文*0.5+专*1.25"); - yxSchoolMajorLambdaQueryWrapper.in(YxSchoolMajor::getProbabilityOperator,probabilityOperatorList); - } - List schooMajorList = yxSchoolMajorService.list(yxSchoolMajorLambdaQueryWrapper); + List calculateInvestmentDTOList = new ArrayList<>(); - try { - if (CollectionUtils.isEmpty(schooMajorList)) { - return Result.OK(); + Map 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 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 schooMajorList = yxSchoolMajorService.list(yxSchoolMajorLambdaQueryWrapper); + BigDecimal wenhuaBili = null; + BigDecimal zhuanyeBili = null; ArtCalculateInvestmentDTO artCalculateInvestmentDTO = null; - Integer schoolNum = 0; - //遍历 院校专业列表,将录取方式,院校代码储存起来 - //map,key:录取方式,value: array[院校代码] - Map> maps = new LinkedHashMap<>(); - Set 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 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 schooMajorList = yxSchoolMajorService.list(yxSchoolMajorLambdaQueryWrapper); + try { + if (CollectionUtils.isEmpty(schooMajorList)) { + return Result.OK(); + } + ArtCalculateInvestmentDTO artCalculateInvestmentDTO = null; + Integer schoolNum = 0; + //遍历 院校专业列表,将录取方式,院校代码储存起来 + //map,key:录取方式,value: array[院校代码] + Map> maps = new LinkedHashMap<>(); + Set 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 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)); } } 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 7b35afd..0170979 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 @@ -366,7 +366,7 @@ public class YxHistoryMajorEnrollController extends JeecgController list = list(lambdaQueryWrapper); if (CollectionUtils.isNotEmpty(list)) { @@ -266,7 +267,7 @@ public class YxHistoryMajorEnrollServiceImpl extends ServiceImpl