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 6d78b44..1db446b 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 @@ -18,6 +18,7 @@ import org.jeecg.modules.art.dto.ArtRecommendMajorBaseDTO; import org.jeecg.modules.art.dto.ArtTestCulturalDTO; import org.jeecg.modules.art.vo.QueryCalculateInvestmentVO; import org.jeecg.modules.art.vo.QueryRecommendMajorVO; +import org.jeecg.modules.mini.service.MiniTestCulturalService; import org.jeecg.modules.yx.constant.YxConstant; import org.jeecg.modules.yx.entity.*; import org.jeecg.modules.yx.service.IYxHistoryMajorEnrollService; @@ -47,11 +48,7 @@ public class ArtRecommendMajorController { @Resource IYxSchoolMajorService yxSchoolMajorService; @Resource - IYxUserScoreService yxUserScoreService; - @Resource - IYxHistoryMajorEnrollService yxHistoryMajorEnrollService; - @Resource - IYxHistoryScoreControlLineService yxHistoryScoreControlLineService; + MiniTestCulturalService testCulturalService; @Resource private RedisUtil redisUtil; @@ -208,126 +205,6 @@ public class ArtRecommendMajorController { String year = queryRecommendMajorVO.getYear(); AssertUtils.notNull(loginUser, "未获取到登录信息"); AssertUtils.notNull(year, "请选择年份"); - //========================学生的成绩 start - YxUserScore userScore = yxUserScoreService.getActiveCurrentUserScore(); - String professionalCategory = userScore.getProfessionalCategory(); - String cognitioPolyclinic = userScore.getCognitioPolyclinic(); - BigDecimal culturalScore = userScore.getCulturalScore(); - BigDecimal professionalScore = userScore.getProfessionalScore(); - //========================end - List artTestCulturalDtoList = new ArrayList<>(); - //查询条件构建对象 - LambdaQueryWrapper yxSchoolMajorLambdaQueryWrapper = new LambdaQueryWrapper<>(); - LambdaQueryWrapper yxHistoryMajorEnrollLambdaQueryWrapper = new LambdaQueryWrapper<>(); - LambdaQueryWrapper yxHistoryScoreControlLineLambdaQueryWrapper = new LambdaQueryWrapper<>(); - if (userScore != null) { - //根据当前用户的专业类别查询 - yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getMajorType, userScore.getProfessionalCategory()); - yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getCategory,cognitioPolyclinic); - yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, userScore.getProfessionalCategory()); - yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getCategory,cognitioPolyclinic); - } - String a_ = "_"; - yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getSchoolCode, schoolCode); - List yxSchoolMajorList = yxSchoolMajorService.list(yxSchoolMajorLambdaQueryWrapper); - if (CollectionUtils.isEmpty(yxSchoolMajorList)) { - return Result.OK(artTestCulturalDtoList); - } - yxSchoolMajorList = yxSchoolMajorList.stream().collect(Collectors.collectingAndThen( - Collectors.toCollection(() -> new TreeSet<>( - Comparator.comparing(p ->p.getCategory()+ p.getRulesEnrollProbability()))), ArrayList::new)); - - Set majorNameSet = yxSchoolMajorList.stream().map(YxSchoolMajor::getMajorName).collect(Collectors.toSet()); - - yxHistoryMajorEnrollLambdaQueryWrapper.isNotNull(YxHistoryMajorEnroll::getRulesEnrollProbability); - yxHistoryMajorEnrollLambdaQueryWrapper.isNotNull(YxHistoryMajorEnroll::getAdmissionLine); - yxHistoryMajorEnrollLambdaQueryWrapper.orderByDesc(YxHistoryMajorEnroll::getYear); - yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getCategory,cognitioPolyclinic); - yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getSchoolCode, schoolCode); - yxHistoryMajorEnrollLambdaQueryWrapper.in(YxHistoryMajorEnroll::getMajorName, majorNameSet); - //获取 历年分数信息 - List yxHistoryMajorEnrollList = yxHistoryMajorEnrollService.list(yxHistoryMajorEnrollLambdaQueryWrapper); - Map historyMajorEnrollMap = new LinkedHashMap<>(); - for (YxHistoryMajorEnroll h : yxHistoryMajorEnrollList) { - historyMajorEnrollMap.put(h.getYear() + a_ + h.getCategory() + a_ + h.getMajorName() + a_ + h.getBatch(), h); - } - //获取 省控线 - List historyScoreControlLineList = yxHistoryScoreControlLineService.list(yxHistoryScoreControlLineLambdaQueryWrapper); - Map yxHistoryScoreControlLineMap = new LinkedHashMap<>();//key:文科_美术学_提前批 - String key = null; - YxHistoryScoreControlLine yxHistoryScoreControlLine = null; - if (CollectionUtils.isNotEmpty(historyScoreControlLineList)) { - yxHistoryScoreControlLineMap = historyScoreControlLineList.stream().collect(Collectors.toMap(h -> h.getYear() + a_ + h.getCategory() + a_ + h.getProfessionalCategory() + a_ + h.getBatch(), h -> h)); - } - - ArtTestCulturalDTO artTestCulturalDto = null; - for (YxSchoolMajor yxSchoolMajor : yxSchoolMajorList) { - artTestCulturalDto = new ArtTestCulturalDTO(); - // 获取上一年的录取信息 - key = yxSchoolMajor.getCategory() + a_ + yxSchoolMajor.getMajorName() + a_ + yxSchoolMajor.getBatch(); - YxHistoryMajorEnroll yxHistoryMajorEnroll = historyMajorEnrollMap.get(year + a_ + key); - if (yxHistoryMajorEnroll == null) { - yxHistoryMajorEnroll = historyMajorEnrollMap.get(Integer.parseInt(year) - 1 + a_ + key); - if (yxHistoryMajorEnroll == null) { - yxHistoryMajorEnroll = historyMajorEnrollMap.get(Integer.parseInt(year) - 2 + a_ + key); - } - } - artTestCulturalDto.setYear(year); - artTestCulturalDto.setMajorName(yxSchoolMajor.getMajorName()); - artTestCulturalDto.setCategory(yxSchoolMajor.getCategory()); - artTestCulturalDto.setBatch(yxSchoolMajor.getBatch()); - artTestCulturalDto.setDetail(yxSchoolMajor.getDetail()); - artTestCulturalDto.setProbabilityOperator(yxSchoolMajor.getProbabilityOperator()); - artTestCulturalDto.setRulesEnrollProbability(yxSchoolMajor.getRulesEnrollProbability()); - - artTestCulturalDto.setMajorNameAll(yxSchoolMajor.getMajorName() + "[" + yxSchoolMajor.getCategory() + "]" + "(" + yxSchoolMajor.getBatch() + ")"); - - - if (yxHistoryMajorEnroll == null) { - //没有历年信息,跳过 - continue; - } - artTestCulturalDto.setScore(yxHistoryMajorEnroll.getAdmissionLine()); - //获取上一年的 省控分信息 - key = yxSchoolMajor.getCategory() + a_ + yxSchoolMajor.getMajorType() + a_ + (yxSchoolMajor.getBatch().equals("提前批") ? "本科A段" : yxSchoolMajor.getBatch()); - yxHistoryScoreControlLine = yxHistoryScoreControlLineMap.get(yxHistoryMajorEnroll.getYear() + a_ + key); - if (yxHistoryScoreControlLine != null) { - //文化分控线 - artTestCulturalDto.setCulturalScore(yxHistoryScoreControlLine.getCulturalScore()); - //专业分控线 - artTestCulturalDto.setSpecialScore(yxHistoryScoreControlLine.getSpecialScore()); - } - //计算需要超过多少分可以录取 - BigDecimal schoolOldYearAdmissionLine = artTestCulturalDto.getScore(); - //录取方式 - String probabilityOperator = artTestCulturalDto.getProbabilityOperator(); - if (YxConstant.betaMajorTypeList.contains(professionalCategory) && StringUtils.isNotBlank(probabilityOperator) && probabilityOperator.contains("文")&& probabilityOperator.contains("专")) { - String[] split = probabilityOperator.split("\\+"); - BigDecimal culturalProbabilityOperator = null; - BigDecimal professionalProbabilityOperator = null; - //先取出文化分和专业分的计算方式 - for (String s : split) { - if (s.contains("专")) { - professionalProbabilityOperator = new BigDecimal( s.split("\\*")[1]); - }else{ - culturalProbabilityOperator = new BigDecimal(s.split("\\*")[1]); - } - } - //如果计算方式为空就不算了 - if (culturalProbabilityOperator!=null && professionalProbabilityOperator !=null && culturalProbabilityOperator.compareTo(YxConstant.bigDecimal0)>0 && professionalProbabilityOperator.compareTo(YxConstant.bigDecimal0)>0) { - //当前输入分数乘以专业折合分 - BigDecimal professionalConverted = professionalScore.multiply(professionalProbabilityOperator); - //余数,院校分数-专业折合分 - BigDecimal remainder = artTestCulturalDto.getScore().subtract(professionalConverted); - //余数/文化课计算方式 - BigDecimal divide = remainder.divide(culturalProbabilityOperator, 0, RoundingMode.HALF_UP); - //需要超越多少分 - artTestCulturalDto.setNeedScore(divide); - } - - } - artTestCulturalDtoList.add(artTestCulturalDto); - } - return Result.OK(artTestCulturalDtoList); + return Result.OK(testCulturalService.testCultural(schoolCode,year)); } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtTestCulturalDTO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtTestCulturalDTO.java index ce1c080..4550832 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtTestCulturalDTO.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtTestCulturalDTO.java @@ -19,14 +19,23 @@ public class ArtTestCulturalDTO implements Serializable { private String year; @ApiModelProperty("专业名称") private String majorName; + @ApiModelProperty("专业类别") + private String majorType; + @ApiModelProperty("专业类别子级") + private String majorTypeChild; + @ApiModelProperty("主考科目") + private String mainSubjects; @ApiModelProperty("专业名称+文理+批次") private String majorNameAll; @ApiModelProperty("文理分科") private String category; @ApiModelProperty("批次") private String batch; - @ApiModelProperty("院校限制") + @ApiModelProperty("院校备注") private String detail; + @ApiModelProperty("院校限制") + private String limitation; + private String checkMaster; @ApiModelProperty(value = "类型") private String rulesEnrollProbability; @ApiModelProperty(value = "分数运算符") diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/RecommendMajorDTO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/RecommendMajorDTO.java index 516812c..ed7725e 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/RecommendMajorDTO.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/RecommendMajorDTO.java @@ -58,6 +58,8 @@ public class RecommendMajorDTO implements Serializable { @JsonIgnore @ApiModelProperty(value = "是否使用主项成绩") private String checkMaster; + @ApiModelProperty(value = "院校限制") + private String limitation; @ApiModelProperty(value = "招生备注") private String majorDetail; diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniArticleController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniArticleController.java index e4408f1..210fc92 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniArticleController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniArticleController.java @@ -67,6 +67,46 @@ public class MiniArticleController { @ApiOperation(value = "文章列表") @GetMapping(value = "/page") public Result articlePage(QueryArticleVO queryArticleVO) { + if (false) { + String strs = "专业主科、器乐类只招、只招、不招、要求、语文成绩、英语成绩、高考文化课成绩、外语单科成绩、建议、只录取、无色盲、色弱者、体育、色弱、色盲、体检、体育专项统一测试成绩、身体无残疾、不予录取、男生身高、女生身高"; + String[] tiquList = strs.split("、"); + LambdaQueryWrapper yxSchoolMajorLambdaQueryWrapper = new LambdaQueryWrapper<>(); + yxSchoolMajorLambdaQueryWrapper.isNull(YxSchoolMajor::getLimitation); +// yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getId,"1763788787643392003"); + //yxSchoolMajorLambdaQueryWrapper.last("limit 1,100"); + List list = yxSchoolMajorService.list(yxSchoolMajorLambdaQueryWrapper); + String detail = null; + String limitation = null; + int i = 0; + int i1 = 0; + for (YxSchoolMajor yxSchoolMajor : list) { + detail = yxSchoolMajor.getDetail(); + detail = detail.replace(";", ",").replace(",", ",").replace("。",","); + //过滤 + detail = detail.replace(" ","").replace("录取要求详见学校招生章程及艺术类招生简章", "").replace("要求可获得本校本科文凭的同时,还可获法国 RNCP6级证书(等同于法国普通大学学士学位)(不以出国为前提)。", ""); + limitation = null; + for (String s : tiquList) { + if (detail.contains(s)) { + i = detail.indexOf(s); + limitation = detail.substring(i, detail.length() - 1); + System.out.println(limitation); + break; + } + } + //去除最后一位,符号 + if (StringUtils.isNotBlank(limitation)) { + i1 = limitation.lastIndexOf(","); + if (limitation.length()-1 ==i1) { + limitation = limitation.substring(0,i1); + } + yxSchoolMajor.setLimitation(limitation); + } + } + yxSchoolMajorService.updateBatchById(list,100); + return Result.OK(); + } + + //分页 Integer pageNum = queryArticleVO.getPageNum(); Integer pageSize = queryArticleVO.getPageSize(); @@ -85,15 +125,16 @@ public class MiniArticleController { //redis中存在 json = (String) redisUtil.get(key); Gson gson = new Gson(); - pageList = gson.fromJson(json,new TypeToken>(){}.getType()); + pageList = gson.fromJson(json, new TypeToken>() { + }.getType()); } else { //redis不存在,从数据库获取 LambdaQueryWrapper yxArticleLambdaQueryWrapper = new LambdaQueryWrapper<>(); yxArticleLambdaQueryWrapper.eq(YxArticle::getType, type); if (StringUtils.isNotBlank(title)) { - yxArticleLambdaQueryWrapper.like(YxArticle::getTitle,title); + yxArticleLambdaQueryWrapper.like(YxArticle::getTitle, title); } - yxArticleLambdaQueryWrapper.eq(StringUtils.isNotBlank(schoolId),YxArticle::getSchoolId,schoolId); + yxArticleLambdaQueryWrapper.eq(StringUtils.isNotBlank(schoolId), YxArticle::getSchoolId, schoolId); yxArticleLambdaQueryWrapper.orderByDesc(YxArticle::getCreateTime, YxArticle::getUpdateTime); pageList = yxArticleService.page(new Page<>(pageNum, pageSize), yxArticleLambdaQueryWrapper); //json = JSONArray.toJSONString(pageList); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/service/MiniTestCulturalService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/service/MiniTestCulturalService.java new file mode 100644 index 0000000..f6c7416 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/service/MiniTestCulturalService.java @@ -0,0 +1,201 @@ +package org.jeecg.modules.mini.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.jeecg.common.util.RedisUtil; +import org.jeecg.modules.art.dto.ArtTestCulturalDTO; +import org.jeecg.modules.yx.constant.YxConstant; +import org.jeecg.modules.yx.entity.YxHistoryMajorEnroll; +import org.jeecg.modules.yx.entity.YxHistoryScoreControlLine; +import org.jeecg.modules.yx.entity.YxSchoolMajor; +import org.jeecg.modules.yx.entity.YxUserScore; +import org.jeecg.modules.yx.service.IYxHistoryMajorEnrollService; +import org.jeecg.modules.yx.service.IYxHistoryScoreControlLineService; +import org.jeecg.modules.yx.service.IYxSchoolMajorService; +import org.jeecg.modules.yx.service.IYxUserScoreService; +import org.jeecg.modules.yx.service.impl.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Description 测文化service + * @Author ZhouWenTao + * @Date 2024/3/9 18:40 + */ +@Service +public class MiniTestCulturalService { + @Resource + private IYxUserScoreService yxUserScoreService; + @Resource + private IYxSchoolMajorService yxSchoolMajorService; + @Resource + private IYxHistoryMajorEnrollService yxHistoryMajorEnrollService; + @Resource + private IYxHistoryScoreControlLineService yxHistoryScoreControlLineService; + @Resource + private TiyuService tiyuService; + @Resource + private MusicService musicService; + @Resource + private WuDaoService wuDaoService; + @Resource + private BoYinService boYinService; + @Resource + private BiaoyanService biaoyanService; + + public List testCultural(String schoolCode,String year){ + //========================学生的成绩 start + YxUserScore userScore = yxUserScoreService.getActiveCurrentUserScore(); + String professionalCategory = userScore.getProfessionalCategory(); + String cognitioPolyclinic = userScore.getCognitioPolyclinic(); + BigDecimal culturalScore = userScore.getCulturalScore(); + BigDecimal professionalScore = userScore.getProfessionalScore(); + //========================end + List artTestCulturalDtoList = new ArrayList<>(); + //查询条件构建对象 + LambdaQueryWrapper yxSchoolMajorLambdaQueryWrapper = new LambdaQueryWrapper<>(); + LambdaQueryWrapper yxHistoryMajorEnrollLambdaQueryWrapper = new LambdaQueryWrapper<>(); + LambdaQueryWrapper yxHistoryScoreControlLineLambdaQueryWrapper = new LambdaQueryWrapper<>(); + //根据当前用户的专业类别查询 + yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getMajorType, userScore.getProfessionalCategory()); + yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getCategory,cognitioPolyclinic); + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, userScore.getProfessionalCategory()); + yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getCategory,cognitioPolyclinic); + String a_ = "_"; + yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getSchoolCode, schoolCode); + List yxSchoolMajorList = yxSchoolMajorService.list(yxSchoolMajorLambdaQueryWrapper); + if (CollectionUtils.isEmpty(yxSchoolMajorList)) { + return artTestCulturalDtoList; + } + yxSchoolMajorList = yxSchoolMajorList.stream().collect(Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>( + Comparator.comparing(p ->p.getCategory()+p.getMajorName()+ p.getRulesEnrollProbability()))), ArrayList::new)); + + Set majorNameSet = yxSchoolMajorList.stream().map(YxSchoolMajor::getMajorName).collect(Collectors.toSet()); + + yxHistoryMajorEnrollLambdaQueryWrapper.isNotNull(YxHistoryMajorEnroll::getRulesEnrollProbability); + yxHistoryMajorEnrollLambdaQueryWrapper.isNotNull(YxHistoryMajorEnroll::getAdmissionLine); + yxHistoryMajorEnrollLambdaQueryWrapper.orderByDesc(YxHistoryMajorEnroll::getYear); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getCategory,cognitioPolyclinic); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getSchoolCode, schoolCode); + yxHistoryMajorEnrollLambdaQueryWrapper.in(YxHistoryMajorEnroll::getMajorName, majorNameSet); + //获取 历年分数信息 + List yxHistoryMajorEnrollList = yxHistoryMajorEnrollService.list(yxHistoryMajorEnrollLambdaQueryWrapper); + Map historyMajorEnrollMap = new LinkedHashMap<>(); + for (YxHistoryMajorEnroll h : yxHistoryMajorEnrollList) { + historyMajorEnrollMap.put(h.getYear() + a_ + h.getCategory() + a_ + h.getMajorName() + a_ + h.getBatch(), h); + } + //获取 省控线 + List historyScoreControlLineList = yxHistoryScoreControlLineService.list(yxHistoryScoreControlLineLambdaQueryWrapper); + Map yxHistoryScoreControlLineMap = new LinkedHashMap<>();//key:文科_美术学_提前批 + String key = null; + YxHistoryScoreControlLine yxHistoryScoreControlLine = null; + if (CollectionUtils.isNotEmpty(historyScoreControlLineList)) { + yxHistoryScoreControlLineMap = historyScoreControlLineList.stream().collect(Collectors.toMap(h -> h.getYear() + a_ + h.getCategory() + a_ + h.getProfessionalCategory() + a_ + h.getBatch(), h -> h)); + } + + ArtTestCulturalDTO artTestCulturalDto = null; + for (YxSchoolMajor yxSchoolMajor : yxSchoolMajorList) { + artTestCulturalDto = new ArtTestCulturalDTO(); + // 获取上一年的录取信息 + key = yxSchoolMajor.getCategory() + a_ + yxSchoolMajor.getMajorName() + a_ + yxSchoolMajor.getBatch(); + YxHistoryMajorEnroll yxHistoryMajorEnroll = historyMajorEnrollMap.get(year + a_ + key); + if (yxHistoryMajorEnroll == null || yxHistoryMajorEnroll.getAdmissionLine()==null|| yxHistoryMajorEnroll.getAdmissionLine().compareTo(YxConstant.bigDecimal0)==0) { + yxHistoryMajorEnroll = historyMajorEnrollMap.get(Integer.parseInt(year) - 1 + a_ + key); + if (yxHistoryMajorEnroll == null || yxHistoryMajorEnroll.getAdmissionLine()==null|| yxHistoryMajorEnroll.getAdmissionLine().compareTo(YxConstant.bigDecimal0)==0) { + yxHistoryMajorEnroll = historyMajorEnrollMap.get(Integer.parseInt(year) - 2 + a_ + key); + if (yxHistoryMajorEnroll == null || yxHistoryMajorEnroll.getAdmissionLine()==null|| yxHistoryMajorEnroll.getAdmissionLine().compareTo(YxConstant.bigDecimal0)==0) { + yxHistoryMajorEnroll = historyMajorEnrollMap.get(Integer.parseInt(year) - 3 + a_ + key); + } + } + } + if (yxHistoryMajorEnroll == null) { + continue; + } + artTestCulturalDto.setMajorType(yxSchoolMajor.getMajorType()); + artTestCulturalDto.setMajorTypeChild(yxSchoolMajor.getMajorTypeChild()); + artTestCulturalDto.setMainSubjects(yxSchoolMajor.getMainSubjects()); + artTestCulturalDto.setYear(yxHistoryMajorEnroll.getYear()); + artTestCulturalDto.setMajorName(yxSchoolMajor.getMajorName()); + artTestCulturalDto.setCategory(yxSchoolMajor.getCategory()); + artTestCulturalDto.setBatch(yxSchoolMajor.getBatch()); + artTestCulturalDto.setLimitation(yxSchoolMajor.getLimitation()); + artTestCulturalDto.setDetail(yxSchoolMajor.getDetail()); + artTestCulturalDto.setProbabilityOperator(yxSchoolMajor.getProbabilityOperator()); + artTestCulturalDto.setRulesEnrollProbability(yxSchoolMajor.getRulesEnrollProbability()); + artTestCulturalDto.setMajorNameAll(yxSchoolMajor.getMajorName() + "[" + yxSchoolMajor.getCategory() + "]" + "(" + yxSchoolMajor.getBatch() + ")"); + + + if (yxHistoryMajorEnroll == null) { + //没有历年信息,跳过 + continue; + } + artTestCulturalDto.setScore(yxHistoryMajorEnroll.getAdmissionLine()); + //获取上一年的 省控分信息 + key = yxSchoolMajor.getCategory() + a_ + yxSchoolMajor.getMajorType() + a_ + (yxSchoolMajor.getBatch().equals("提前批") ? "本科A段" : yxSchoolMajor.getBatch()); + yxHistoryScoreControlLine = yxHistoryScoreControlLineMap.get(yxHistoryMajorEnroll.getYear() + a_ + key); + if (yxHistoryScoreControlLine != null) { + //文化分控线 + artTestCulturalDto.setCulturalScore(yxHistoryScoreControlLine.getCulturalScore()); + //专业分控线 + artTestCulturalDto.setSpecialScore(yxHistoryScoreControlLine.getSpecialScore()); + } + + //美术与设计类,书法类,体育类 + artTestCulturalDtoList.add(artTestCulturalDto); + } + //录取方式运算符 + String probabilityOperator = null; + if (CollectionUtils.isNotEmpty(artTestCulturalDtoList)) { + //转换测算文化分 + if ("体育类".equals(professionalCategory)) { + tiyuService.testCultural(artTestCulturalDtoList,userScore); + }else if("音乐类".equals(professionalCategory)){ + musicService.testCultural(artTestCulturalDtoList,userScore); + }else if("舞蹈类".equals(professionalCategory)){ + wuDaoService.testCultural(artTestCulturalDtoList,userScore); + }else if("播音与主持类".equals(professionalCategory)){ + boYinService.testCultural(artTestCulturalDtoList,userScore); + }else if("表演类".equals(professionalCategory)){ + biaoyanService.testCultural(artTestCulturalDtoList,userScore); + }else if(YxConstant.betaMajorTypeList.contains(probabilityOperator)){ + for (ArtTestCulturalDTO artTestCulturalDTO : artTestCulturalDtoList) { + probabilityOperator = artTestCulturalDTO.getProbabilityOperator(); + if (YxConstant.betaMajorTypeList.contains(professionalCategory) && StringUtils.isNotBlank(artTestCulturalDto.getRulesEnrollProbability())) { + String[] split = probabilityOperator.split("\\+"); + BigDecimal culturalProbabilityOperator = null; + BigDecimal professionalProbabilityOperator = null; + //先取出文化分和专业分的计算方式 + for (String s : split) { + if (s.contains("专")) { + professionalProbabilityOperator = new BigDecimal( s.split("\\*")[1]); + }else{ + culturalProbabilityOperator = new BigDecimal(s.split("\\*")[1]); + } + } + //如果计算方式为空就不算了 + if (culturalProbabilityOperator!=null && professionalProbabilityOperator !=null && culturalProbabilityOperator.compareTo(YxConstant.bigDecimal0)>0 && professionalProbabilityOperator.compareTo(YxConstant.bigDecimal0)>0) { + //当前输入分数乘以专业折合分 + BigDecimal professionalConverted = professionalScore.multiply(professionalProbabilityOperator); + //余数,院校分数-专业折合分 + BigDecimal remainder = artTestCulturalDto.getScore().subtract(professionalConverted); + //余数/文化课计算方式 + BigDecimal divide = remainder.divide(culturalProbabilityOperator, 0, RoundingMode.HALF_UP); + //需要超越多少分 + artTestCulturalDto.setNeedScore(divide); + } + } + } + } + } + + return artTestCulturalDtoList; + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreSegmentController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreSegmentController.java index 2078af4..23f8801 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreSegmentController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreSegmentController.java @@ -68,7 +68,7 @@ public class YxScoreSegmentController extends JeecgController historyScoreSegmentDTOList = new ArrayList<>(); HistoryScoreSegmentDTO historyScoreSegmentDto = null; @@ -340,7 +340,7 @@ public class YxScoreSegmentController extends JeecgController artTestCulturalDtoList, YxUserScore userScore) { + try { + if (CollectionUtils.isNotEmpty(artTestCulturalDtoList) && userScore != null) { + String rulesEnrollProbability = null; + String probabilityOperator = null; + String[] probabilityOperators = null; + String[] zhuanOperators = null; + BigDecimal culturalProbabilityOperator = null; + BigDecimal professionalProbabilityOperator = null; + String professionalCategory = userScore.getProfessionalCategory(); + BigDecimal professionalScore = userScore.getProfessionalScore(); + BigDecimal culturalScore = userScore.getCulturalScore(); + // + BigDecimal professionalScore3 = null; + BigDecimal a1 = null; + BigDecimal a2 = null; + BigDecimal divide = null; + String mainSubjects = null; + //=====================分数转换 start + BigDecimal fzby= userScore.getFzby();//服装表演-分数 + BigDecimal xjysdy = userScore.getXjysdy();//戏剧影视导演-分数 + BigDecimal xjysby = userScore.getXjysby();//戏剧影视表演-分数 + + //=====================分数转换 start + if ("2024".equals(YxConstant.nowYear)) { + YxScoreSegment scoreSegment = null; + if (fzby != null && fzby.compareTo(YxConstant.bigDecimal0) > 0) { + scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, fzby, professionalCategory, "服装表演", userScore.getProvince()); + if (scoreSegment != null) { + fzby = scoreSegment.getScore(); + } + } + if (xjysdy != null && xjysdy.compareTo(YxConstant.bigDecimal0) > 0) { + scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, xjysdy, professionalCategory, "戏剧影视导演", userScore.getProvince()); + if (scoreSegment != null) { + xjysdy = scoreSegment.getScore(); + } + } + if (xjysby != null && xjysby.compareTo(YxConstant.bigDecimal0) > 0) { + scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, xjysby, professionalCategory, "戏剧影视表演", userScore.getProvince()); + if (scoreSegment != null) { + xjysby = scoreSegment.getScore(); + } + } + } + assert xjysby != null; + BigDecimal byMaxScore = xjysby.max(xjysdy).max(fzby); + //表演 通用分数 未转化 + BigDecimal byMaxScoreOld = userScore.getXjysby().max(userScore.getXjysdy()).max(userScore.getFzby()); + for (ArtTestCulturalDTO artTestCulturalDTO : artTestCulturalDtoList) { + rulesEnrollProbability = artTestCulturalDTO.getRulesEnrollProbability(); + probabilityOperator = artTestCulturalDTO.getProbabilityOperator(); + probabilityOperators = probabilityOperator.split("\\+"); + for (String s : probabilityOperators) { + if (s.contains("专")) { + professionalProbabilityOperator = new BigDecimal(s.split("\\*")[1]); + } else { + culturalProbabilityOperator = new BigDecimal(s.split("\\*")[1]); + } + } + //将当期成绩按照专业录取分数方式折算 + mainSubjects = artTestCulturalDTO.getMainSubjects(); + if ("高职高专".equals(artTestCulturalDTO.getBatch()) || "兼报".equals(mainSubjects)) { + professionalScore3 = byMaxScore; + } else if ("戏剧影视表演".equals(mainSubjects)) { + professionalScore3 = fzby; + } else if ("戏剧影视导演".equals(mainSubjects)) { + professionalScore3 = xjysdy; + } else if ("服装表演".equals(mainSubjects)) { + professionalScore3 = xjysby; + } else { + log.error("当前专业有问题,不清楚主考科目:" + JSONObject.toJSONString(artTestCulturalDTO)); + continue; + } + + if (("文过专排".equals(rulesEnrollProbability) || !probabilityOperator.contains("文")) && professionalProbabilityOperator != null && professionalProbabilityOperator.compareTo(YxConstant.bigDecimal0) > 0) { + artTestCulturalDTO.setNeedScore(artTestCulturalDTO.getScore().subtract(professionalScore3)); + } else if (("专过文排".equals(rulesEnrollProbability) || !probabilityOperator.contains("专")) && culturalProbabilityOperator != null && culturalProbabilityOperator.compareTo(YxConstant.bigDecimal0) > 0) { + //测文化 体育类的 专过文排 ,分数转(最低录取线/文化分录取方式(0.133)) + continue; + } else { + //2.再用最低录取分数减去转换后的分数 + a1 = artTestCulturalDTO.getScore().subtract(professionalScore3); + //当前输入分数乘以专业折合分 + a2 = a1.multiply(professionalProbabilityOperator); + //3.再用这个数值除以文化分的公式 + //余数/文化课计算方式 + divide = a2.divide(culturalProbabilityOperator, 0, RoundingMode.HALF_UP); + //需要超越多少分 + artTestCulturalDTO.setNeedScore(divide); + } + } + } + } catch (Exception e) { + + } + } } 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 bbdd3ed..cb3ffbe 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 @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; +import org.jeecg.modules.art.dto.ArtTestCulturalDTO; import org.jeecg.modules.art.dto.RecommendMajorDTO; import org.jeecg.modules.yx.constant.YxConstant; import org.jeecg.modules.yx.entity.YxHistoryMajorEnroll; @@ -46,7 +47,6 @@ public class BoYinService { String rulesEnrollProbability = null; String probabilityOperator = null; //String majorType = null;//专业类别 - //String majorTypeChild = null; String mainSubjects = null; String nowBatch = activeCurrentUserScore.getBatch(); BigDecimal studentScore = null;//学生折合分 @@ -161,4 +161,65 @@ public class BoYinService { e.printStackTrace(); } } + + + /** + * 文化分测算 + * @param artTestCulturalDtoList + */ + public void testCultural(List artTestCulturalDtoList, YxUserScore userScore){ + if (CollectionUtils.isNotEmpty(artTestCulturalDtoList) &&userScore!=null) { + String rulesEnrollProbability = null; + String probabilityOperator = null; + String[] probabilityOperators = null; + String[] zhuanOperators = null; + BigDecimal culturalProbabilityOperator = null; + BigDecimal professionalProbabilityOperator = null; + BigDecimal professionalScore = userScore.getProfessionalScore(); + BigDecimal culturalScore = userScore.getCulturalScore(); + BigDecimal by = new BigDecimal(0);//1.先把当前专业分转换成去年分数 + //=====================分数转换 start + if ("2024".equals(YxConstant.nowYear)) { + YxScoreSegment scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, professionalScore, "播音与主持类", null, userScore.getProvince()); + if (scoreSegment != null) { + by = scoreSegment.getScore(); + } + } + + BigDecimal a1=null; + BigDecimal a2=null; + BigDecimal divide=null; + for (ArtTestCulturalDTO artTestCulturalDTO : artTestCulturalDtoList) { + rulesEnrollProbability = artTestCulturalDTO.getRulesEnrollProbability(); + probabilityOperator = artTestCulturalDTO.getProbabilityOperator(); + probabilityOperators = probabilityOperator.split("\\+"); + for (String s : probabilityOperators) { + if (s.contains("专")) { + professionalProbabilityOperator = new BigDecimal( s.split("\\*")[1]); + }else{ + culturalProbabilityOperator = new BigDecimal(s.split("\\*")[1]); + } + } + + if (("文过专排".equals(rulesEnrollProbability) || !probabilityOperator.contains("文") ||probabilityOperator.contains("专*")) && professionalProbabilityOperator!=null && professionalProbabilityOperator.compareTo(YxConstant.bigDecimal0)>0) { + //播音,表演,音乐,舞蹈,先把当前专业分转换成去年分数,再用最低录取分数减去转换后的分数 (文过专排) + artTestCulturalDTO.setNeedScore(artTestCulturalDTO.getScore().subtract(by)); + }else if (("专过文排".equals(rulesEnrollProbability)||!probabilityOperator.contains("专") || probabilityOperator.contains("文*")) && culturalProbabilityOperator!=null && culturalProbabilityOperator.compareTo(YxConstant.bigDecimal0)>0) { + continue; + //测文化 体育类的 专过文排 ,分数转(最低录取线/文化分录取方式(0.133)) + //artTestCulturalDTO.setNeedScore(artTestCulturalDTO.getScore().divide(culturalProbabilityOperator,0,RoundingMode.HALF_UP)); + }else{ + //2.再用最低录取分数减去转换后的分数 + a1 = artTestCulturalDTO.getScore().subtract(by); + //当前输入分数乘以专业折合分 + a2 = a1.multiply(professionalProbabilityOperator); + //3.再用这个数值除以文化分的公式 + //余数/文化课计算方式 + divide = a2.divide(culturalProbabilityOperator, 0, RoundingMode.HALF_UP); + //需要超越多少分 + artTestCulturalDTO.setNeedScore(divide); + } + } + } + } } 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 a2d804a..1f4a48a 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 @@ -2,6 +2,7 @@ package org.jeecg.modules.yx.service.impl; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; +import org.jeecg.modules.art.dto.ArtTestCulturalDTO; import org.jeecg.modules.art.dto.RecommendMajorDTO; import org.jeecg.modules.yx.constant.YxConstant; import org.jeecg.modules.yx.entity.YxHistoryMajorEnroll; @@ -14,6 +15,7 @@ import org.jeecg.modules.yx.util.ScoreUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.List; @@ -26,10 +28,10 @@ import java.util.stream.Collectors; * @Date 2024/3/4 11:13 */ @Service -public class MusicService{ - @Autowired +public class MusicService { + @Resource private IYxHistoryScoreControlLineService yxHistoryScoreControlLineService; - @Autowired + @Resource private IYxScoreSegmentService yxScoreSegmentService; /** @@ -115,11 +117,11 @@ public class MusicService{ continue; } //没有往年录取分数线信息 - if (CollectionUtils.isEmpty(historyMajorEnrollList)||!ScoreUtil.hasComputeEnrollProbabilityPermissions(nowBatch,recommendMajorDTO.getBatch())) { + 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()); + historyMajorEnrollList = historyMajorEnrollList.stream().filter(h -> YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList()); //不是体育类的专业,如果是文过专排,并且没有录取计算运算符时,文过专排是文*0+专*1,专过文排是文*1+专*0 if ("文过专排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) { @@ -140,10 +142,10 @@ public class MusicService{ if ("文过专排主科".equals(recommendMajorDTO.getRulesEnrollProbability())) { professionalScore2 = activeCurrentUserScore.getProfessionalScore(); professionalScore3 = activeCurrentUserScore.getProfessionalScore().multiply(YxConstant.bigDecimal05); - }else if ("1".equals(recommendMajorDTO.getCheckMaster())) { + } else if ("1".equals(recommendMajorDTO.getCheckMaster())) { professionalScore2 = activeCurrentUserScore.getProfessionalScore(); professionalScore3 = zxcj; - }else{ + } else { if ("音乐表演".equals(majorTypeChild)) { if (mainSubjects.contains("器乐")) { professionalScore2 = activeCurrentUserScore.getYybyqy(); @@ -160,7 +162,7 @@ public class MusicService{ } } //分数是否过省控线 - if(!ScoreUtil.crossingControlLine(rulesEnrollProbability,culturalScore,professionalScore,culturalControlLine,specialControlLine)){ + if (!ScoreUtil.crossingControlLine(rulesEnrollProbability, culturalScore, professionalScore, culturalControlLine, specialControlLine)) { recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0); continue; } @@ -187,8 +189,8 @@ public class MusicService{ recommendMajorDTO.setEnrollProbability(enrollProbability); recommendMajorDTO.setRulesEnrollProbability(ScoreUtil.replaceLastZeroChar(rulesEnrollProbability)); recommendMajorDTO.setProbabilityOperator(ScoreUtil.replaceLastZeroChar(probabilityOperator)); - }else{ - nowYearProvincialControlLine = ScoreUtil.covertIntoControlLine(rulesEnrollProbability,culturalControlLine, specialControlLine, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator); + } else { + nowYearProvincialControlLine = ScoreUtil.covertIntoControlLine(rulesEnrollProbability, culturalControlLine, specialControlLine, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator); if (nowYearProvincialControlLine == null) { continue; } @@ -220,4 +222,119 @@ public class MusicService{ e.printStackTrace(); } } + + + /** + * 文化分测算 + * + * @param artTestCulturalDtoList + */ + public void testCultural(List artTestCulturalDtoList, YxUserScore activeCurrentUserScore) { + if (CollectionUtils.isNotEmpty(artTestCulturalDtoList) && activeCurrentUserScore != null) { + String rulesEnrollProbability = null; + String probabilityOperator = null; + String[] probabilityOperators = null; + String[] zhuanOperators = null; + String professionalCategory = activeCurrentUserScore.getProfessionalCategory(); + BigDecimal culturalProbabilityOperator = null; + BigDecimal professionalProbabilityOperator = null; + BigDecimal professionalScore = activeCurrentUserScore.getProfessionalScore(); + BigDecimal culturalScore = activeCurrentUserScore.getCulturalScore(); + BigDecimal zxcj = YxConstant.bigDecimal0; + BigDecimal yybysy = activeCurrentUserScore.getYybysy();//音乐表演声乐-分数 + BigDecimal yybyqy = activeCurrentUserScore.getYybyqy();//音乐表演声乐-分数 + BigDecimal yyjy = activeCurrentUserScore.getYyjy();//音乐表演声乐-分数 + //=====================分数转换 start + if ("2024".equals(YxConstant.nowYear)) { + YxScoreSegment scoreSegment = null; + if (yybysy != null && yybysy.compareTo(YxConstant.bigDecimal0) > 0) { + scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, yybysy, professionalCategory, "音乐表演声乐", activeCurrentUserScore.getProvince()); + if (scoreSegment != null) { + yybysy = scoreSegment.getScore(); + } + scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, zxcj, professionalCategory, "音乐表演声乐", activeCurrentUserScore.getProvince()); + if (scoreSegment != null) { + zxcj = scoreSegment.getScore(); + } + } + if (yybyqy != null && yybyqy.compareTo(YxConstant.bigDecimal0) > 0) { + scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, yybyqy, professionalCategory, "音乐表演器乐", activeCurrentUserScore.getProvince()); + if (scoreSegment != null) { + yybyqy = scoreSegment.getScore(); + } + scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, zxcj, professionalCategory, "音乐表演器乐", activeCurrentUserScore.getProvince()); + if (scoreSegment != null) { + zxcj = scoreSegment.getScore(); + } + } + if (yyjy != null && yyjy.compareTo(YxConstant.bigDecimal0) > 0) { + scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, yyjy, professionalCategory, "音乐教育", activeCurrentUserScore.getProvince()); + if (scoreSegment != null) { + yyjy = scoreSegment.getScore(); + } + scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, zxcj, professionalCategory, "音乐教育", activeCurrentUserScore.getProvince()); + if (scoreSegment != null) { + zxcj = scoreSegment.getScore(); + } + } + + } + + String majorType = null; + BigDecimal professionalScore3 = null; + String majorTypeChild = null; + String mainSubjects = null; + BigDecimal a1 = null; + BigDecimal a2 = null; + BigDecimal divide = null; + for (ArtTestCulturalDTO artTestCulturalDTO : artTestCulturalDtoList) { + rulesEnrollProbability = artTestCulturalDTO.getRulesEnrollProbability(); + probabilityOperator = artTestCulturalDTO.getProbabilityOperator(); + probabilityOperators = probabilityOperator.split("\\+"); + for (String s : probabilityOperators) { + if (s.contains("专")) { + professionalProbabilityOperator = new BigDecimal(s.split("\\*")[1]); + } else { + culturalProbabilityOperator = new BigDecimal(s.split("\\*")[1]); + } + } + + //将当期成绩按照专业录取分数方式折算 + majorTypeChild = artTestCulturalDTO.getMajorTypeChild(); + mainSubjects = artTestCulturalDTO.getMainSubjects(); + if (!"高职高专".equals(activeCurrentUserScore.getBatch())) { + if ("音乐表演".equals(majorTypeChild)) { + if (mainSubjects.contains("器乐") && activeCurrentUserScore.getProfessionalCategoryChildren().contains("器乐")) { + professionalScore3 = yybyqy; + } else { + professionalScore3 = yybysy; + } + } else { + //音乐教育 + professionalScore3 = yyjy; + } + } + if(("文过专排主科".equals(artTestCulturalDTO.getRulesEnrollProbability())||"1".equals(artTestCulturalDTO.getCheckMaster()))){ + artTestCulturalDTO.setNeedScore(artTestCulturalDTO.getScore().subtract(zxcj)); + }else if (("文过专排".equals(rulesEnrollProbability) || !probabilityOperator.contains("文") || probabilityOperator.contains("专*")) && professionalProbabilityOperator != null && professionalProbabilityOperator.compareTo(YxConstant.bigDecimal0) > 0) { + //播音,表演,音乐,舞蹈,先把当前专业分转换成去年分数,再用最低录取分数减去转换后的分数 (文过专排) + artTestCulturalDTO.setNeedScore(artTestCulturalDTO.getScore().subtract(professionalScore3)); + } else if (("专过文排".equals(rulesEnrollProbability) || !probabilityOperator.contains("专") || probabilityOperator.contains("文*")) && culturalProbabilityOperator != null && culturalProbabilityOperator.compareTo(YxConstant.bigDecimal0) > 0) { + continue; + //测文化 体育类的 专过文排 ,分数转(最低录取线/文化分录取方式(0.133)) + //artTestCulturalDTO.setNeedScore(artTestCulturalDTO.getScore().divide(culturalProbabilityOperator,0,RoundingMode.HALF_UP)); + } else { + //2.再用最低录取分数减去转换后的分数 + a1 = artTestCulturalDTO.getScore().subtract(professionalScore3); + //当前输入分数乘以专业折合分 + a2 = a1.multiply(professionalProbabilityOperator); + //3.再用这个数值除以文化分的公式 + //余数/文化课计算方式 + divide = a2.divide(culturalProbabilityOperator, 0, RoundingMode.HALF_UP); + //需要超越多少分 + artTestCulturalDTO.setNeedScore(divide); + } + } + } + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/TiyuService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/TiyuService.java new file mode 100644 index 0000000..d0c1b24 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/TiyuService.java @@ -0,0 +1,66 @@ +package org.jeecg.modules.yx.service.impl; + +import org.apache.commons.collections.CollectionUtils; +import org.jeecg.modules.art.dto.ArtTestCulturalDTO; +import org.jeecg.modules.yx.constant.YxConstant; +import org.jeecg.modules.yx.entity.YxUserScore; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.List; + +/** + * @Description 体育专业相关的Service + * @Author ZhouWenTao + * @Date 2024/3/9 19:07 + */ +@Service +public class TiyuService { + /** + * 文化分测算 + * @param artTestCulturalDtoList + */ + public void testCultural(List artTestCulturalDtoList, YxUserScore userScore){ + if (CollectionUtils.isNotEmpty(artTestCulturalDtoList) &&userScore!=null) { + String rulesEnrollProbability = null; + String probabilityOperator = null; + String[] probabilityOperators = null; + String[] zhuanOperators = null; + BigDecimal culturalProbabilityOperator = null; + BigDecimal professionalProbabilityOperator = null; + BigDecimal professionalScore = userScore.getProfessionalScore(); + BigDecimal culturalScore = userScore.getCulturalScore(); + // + for (ArtTestCulturalDTO artTestCulturalDTO : artTestCulturalDtoList) { + rulesEnrollProbability = artTestCulturalDTO.getRulesEnrollProbability(); + probabilityOperator = artTestCulturalDTO.getProbabilityOperator(); + probabilityOperators = probabilityOperator.split("\\+"); + for (String s : probabilityOperators) { + if (s.contains("专")) { + professionalProbabilityOperator = new BigDecimal( s.split("\\*")[1]); + }else{ + culturalProbabilityOperator = new BigDecimal(s.split("\\*")[1]); + } + } + + if (("文过专排".equals(rulesEnrollProbability) || probabilityOperator.contains("专*")) && professionalProbabilityOperator!=null && professionalProbabilityOperator.compareTo(YxConstant.bigDecimal0)>0) { + //测文化 体育类的 文过专排 ,分数转换成150分(最低录取线/0.667) + artTestCulturalDTO.setNeedScore(artTestCulturalDTO.getScore().divide(professionalProbabilityOperator,0,RoundingMode.HALF_UP)); + }else if (("专过文排".equals(rulesEnrollProbability) || probabilityOperator.contains("文*")) && culturalProbabilityOperator!=null && culturalProbabilityOperator.compareTo(YxConstant.bigDecimal0)>0) { + //测文化 体育类的 专过文排 ,分数转(最低录取线/文化分录取方式(0.133)) + artTestCulturalDTO.setNeedScore(artTestCulturalDTO.getScore().divide(culturalProbabilityOperator,0,RoundingMode.HALF_UP)); + }else{ + //当前输入分数乘以专业折合分 + BigDecimal professionalConverted = professionalScore.multiply(professionalProbabilityOperator); + //余数,院校分数-专业折合分 + BigDecimal remainder = artTestCulturalDTO.getScore().subtract(professionalConverted); + //余数/文化课计算方式 + BigDecimal divide = remainder.divide(culturalProbabilityOperator, 0, RoundingMode.HALF_UP); + //需要超越多少分 + artTestCulturalDTO.setNeedScore(divide); + } + } + } + } +} 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 082a02d..bfa8bf8 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 @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; +import org.jeecg.modules.art.dto.ArtTestCulturalDTO; import org.jeecg.modules.art.dto.RecommendMajorDTO; import org.jeecg.modules.yx.constant.YxConstant; import org.jeecg.modules.yx.entity.YxHistoryMajorEnroll; @@ -39,7 +40,7 @@ public class WuDaoService { * 舞蹈类的 分数计算方式 */ public void wudaoRecommendMajorListSetEnrollProbability(List recommendMajorList, YxUserScore activeCurrentUserScore) { - int index=0; + int index = 0; try { //专业类别 String professionalCategory = activeCurrentUserScore.getProfessionalCategory(); @@ -66,7 +67,7 @@ public class WuDaoService { Map differenceMap = null; List historyMajorEnrollList = null;//历年录取信息 - BigDecimal yswd= new BigDecimal(0);// + BigDecimal yswd = new BigDecimal(0);// BigDecimal gjbzw = new BigDecimal(0); //=====================分数转换 start if ("2024".equals(YxConstant.nowYear)) { @@ -90,11 +91,11 @@ public class WuDaoService { continue; } //没有往年录取分数线信息 - if (CollectionUtils.isEmpty(historyMajorEnrollList) || !ScoreUtil.hasComputeEnrollProbabilityPermissions(nowBatch,recommendMajorDTO.getBatch())) { + 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()); + historyMajorEnrollList = historyMajorEnrollList.stream().filter(h -> YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList()); //不是体育类的专业,如果是文过专排,并且没有录取计算运算符时,文过专排是文*0+专*1,专过文排是文*1+专*0 if ("文过专排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) { @@ -110,11 +111,11 @@ public class WuDaoService { mainSubjects = recommendMajorDTO.getMainSubjects(); if ("艺术舞蹈".equals(mainSubjects)) { professionalScore3 = yswd; - culturalControlLine = yswdControlLine.getCulturalScore(); + culturalControlLine = yswdControlLine.getCulturalScore(); specialControlLine = yswdControlLine.getSpecialScore(); } else if ("国际标准舞".equals(mainSubjects)) { professionalScore3 = gjbzw; - culturalControlLine = gjbzwControlLine.getCulturalScore(); + culturalControlLine = gjbzwControlLine.getCulturalScore(); specialControlLine = gjbzwControlLine.getSpecialScore(); } else { log.error("当前专业有问题,不清楚主考科目:" + JSONObject.toJSONString(recommendMajorDTO)); @@ -122,7 +123,7 @@ public class WuDaoService { } //分数是否过省控线 - if(!ScoreUtil.crossingControlLine(rulesEnrollProbability,culturalScore,professionalScore,culturalControlLine,specialControlLine)){ + if (!ScoreUtil.crossingControlLine(rulesEnrollProbability, culturalScore, professionalScore, culturalControlLine, specialControlLine)) { recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0); continue; } @@ -147,8 +148,8 @@ public class WuDaoService { recommendMajorDTO.setEnrollProbability(enrollProbability); recommendMajorDTO.setRulesEnrollProbability(ScoreUtil.replaceLastZeroChar(rulesEnrollProbability)); recommendMajorDTO.setProbabilityOperator(ScoreUtil.replaceLastZeroChar(probabilityOperator)); - }else{ - nowYearProvincialControlLine = ScoreUtil.covertIntoControlLine(rulesEnrollProbability,culturalControlLine, specialControlLine, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator); + } else { + nowYearProvincialControlLine = ScoreUtil.covertIntoControlLine(rulesEnrollProbability, culturalControlLine, specialControlLine, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator); if (nowYearProvincialControlLine == null) { continue; } @@ -180,8 +181,86 @@ public class WuDaoService { } } } catch (Exception e) { - log.error("索引中出错:"+index); + log.error("索引中出错:" + index); e.printStackTrace(); } } + + /** + * 文化分测算 + * + * @param artTestCulturalDtoList + */ + public void testCultural(List artTestCulturalDtoList, YxUserScore userScore) { + try { + if (CollectionUtils.isNotEmpty(artTestCulturalDtoList) && userScore != null) { + String rulesEnrollProbability = null; + String probabilityOperator = null; + String[] probabilityOperators = null; + String[] zhuanOperators = null; + BigDecimal culturalProbabilityOperator = null; + BigDecimal professionalProbabilityOperator = null; + String professionalCategory = userScore.getProfessionalCategory(); + BigDecimal professionalScore = userScore.getProfessionalScore(); + BigDecimal culturalScore = userScore.getCulturalScore(); + // + BigDecimal professionalScore3 = null; + BigDecimal yswd = new BigDecimal(0); + BigDecimal gjbzw = new BigDecimal(0); + BigDecimal a1 = null; + BigDecimal a2 = null; + BigDecimal divide = null; + String mainSubjects = null; + //=====================分数转换 start + if ("2024".equals(YxConstant.nowYear)) { + YxScoreSegment scoreSegment = null; + scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, professionalScore, professionalCategory, "艺术舞蹈", userScore.getProvince()); + yswd = scoreSegment.getScore(); + scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, professionalScore, professionalCategory, "国际标准舞", userScore.getProvince()); + gjbzw = scoreSegment.getScore(); + } + for (ArtTestCulturalDTO artTestCulturalDTO : artTestCulturalDtoList) { + rulesEnrollProbability = artTestCulturalDTO.getRulesEnrollProbability(); + probabilityOperator = artTestCulturalDTO.getProbabilityOperator(); + probabilityOperators = probabilityOperator.split("\\+"); + for (String s : probabilityOperators) { + if (s.contains("专")) { + professionalProbabilityOperator = new BigDecimal(s.split("\\*")[1]); + } else { + culturalProbabilityOperator = new BigDecimal(s.split("\\*")[1]); + } + } + //将当期成绩按照专业录取分数方式折算 + mainSubjects = artTestCulturalDTO.getMainSubjects(); + if ("艺术舞蹈".equals(mainSubjects)) { + professionalScore3 = yswd; + } else if ("国际标准舞".equals(mainSubjects)) { + professionalScore3 = gjbzw; + } else { + log.error("当前专业有问题,不清楚主考科目:" + JSONObject.toJSONString(artTestCulturalDTO)); + continue; + } + + if (("文过专排".equals(rulesEnrollProbability) || !probabilityOperator.contains("文")) && professionalProbabilityOperator != null && professionalProbabilityOperator.compareTo(YxConstant.bigDecimal0) > 0) { + artTestCulturalDTO.setNeedScore(artTestCulturalDTO.getScore().subtract(professionalScore3)); + } else if (("专过文排".equals(rulesEnrollProbability) || !probabilityOperator.contains("专")) && culturalProbabilityOperator != null && culturalProbabilityOperator.compareTo(YxConstant.bigDecimal0) > 0) { + //测文化 体育类的 专过文排 ,分数转(最低录取线/文化分录取方式(0.133)) + continue; + } else { + //2.再用最低录取分数减去转换后的分数 + a1 = artTestCulturalDTO.getScore().subtract(professionalScore3); + //当前输入分数乘以专业折合分 + a2 = a1.multiply(professionalProbabilityOperator); + //3.再用这个数值除以文化分的公式 + //余数/文化课计算方式 + divide = a2.divide(culturalProbabilityOperator, 0, RoundingMode.HALF_UP); + //需要超越多少分 + artTestCulturalDTO.setNeedScore(divide); + } + } + } + } catch (Exception e) { + + } + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxSchoolMajorServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxSchoolMajorServiceImpl.java index af9f69f..5904f4a 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxSchoolMajorServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxSchoolMajorServiceImpl.java @@ -963,7 +963,7 @@ public class YxSchoolMajorServiceImpl extends ServiceImpl 0) {