This commit is contained in:
zhouwentao 2024-03-09 22:55:11 +08:00
parent 0cdf7c6fe7
commit 40160e42ea
14 changed files with 718 additions and 154 deletions

View File

@ -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<ArtTestCulturalDTO> artTestCulturalDtoList = new ArrayList<>();
//查询条件构建对象
LambdaQueryWrapper<YxSchoolMajor> yxSchoolMajorLambdaQueryWrapper = new LambdaQueryWrapper<>();
LambdaQueryWrapper<YxHistoryMajorEnroll> yxHistoryMajorEnrollLambdaQueryWrapper = new LambdaQueryWrapper<>();
LambdaQueryWrapper<YxHistoryScoreControlLine> 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<YxSchoolMajor> 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<String> 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<YxHistoryMajorEnroll> yxHistoryMajorEnrollList = yxHistoryMajorEnrollService.list(yxHistoryMajorEnrollLambdaQueryWrapper);
Map<String, YxHistoryMajorEnroll> historyMajorEnrollMap = new LinkedHashMap<>();
for (YxHistoryMajorEnroll h : yxHistoryMajorEnrollList) {
historyMajorEnrollMap.put(h.getYear() + a_ + h.getCategory() + a_ + h.getMajorName() + a_ + h.getBatch(), h);
}
//获取 省控线
List<YxHistoryScoreControlLine> historyScoreControlLineList = yxHistoryScoreControlLineService.list(yxHistoryScoreControlLineLambdaQueryWrapper);
Map<String, YxHistoryScoreControlLine> 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));
}
}

View File

@ -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 = "分数运算符")

View File

@ -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;

View File

@ -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<YxSchoolMajor> yxSchoolMajorLambdaQueryWrapper = new LambdaQueryWrapper<>();
yxSchoolMajorLambdaQueryWrapper.isNull(YxSchoolMajor::getLimitation);
// yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getId,"1763788787643392003");
//yxSchoolMajorLambdaQueryWrapper.last("limit 1,100");
List<YxSchoolMajor> 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<IPage<YxArticle>>(){}.getType());
pageList = gson.fromJson(json, new TypeToken<IPage<YxArticle>>() {
}.getType());
} else {
//redis不存在从数据库获取
LambdaQueryWrapper<YxArticle> 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);

View File

@ -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<ArtTestCulturalDTO> 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<ArtTestCulturalDTO> artTestCulturalDtoList = new ArrayList<>();
//查询条件构建对象
LambdaQueryWrapper<YxSchoolMajor> yxSchoolMajorLambdaQueryWrapper = new LambdaQueryWrapper<>();
LambdaQueryWrapper<YxHistoryMajorEnroll> yxHistoryMajorEnrollLambdaQueryWrapper = new LambdaQueryWrapper<>();
LambdaQueryWrapper<YxHistoryScoreControlLine> 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<YxSchoolMajor> 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<String> 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<YxHistoryMajorEnroll> yxHistoryMajorEnrollList = yxHistoryMajorEnrollService.list(yxHistoryMajorEnrollLambdaQueryWrapper);
Map<String, YxHistoryMajorEnroll> historyMajorEnrollMap = new LinkedHashMap<>();
for (YxHistoryMajorEnroll h : yxHistoryMajorEnrollList) {
historyMajorEnrollMap.put(h.getYear() + a_ + h.getCategory() + a_ + h.getMajorName() + a_ + h.getBatch(), h);
}
//获取 省控线
List<YxHistoryScoreControlLine> historyScoreControlLineList = yxHistoryScoreControlLineService.list(yxHistoryScoreControlLineLambdaQueryWrapper);
Map<String, YxHistoryScoreControlLine> 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;
}
}

View File

@ -68,7 +68,7 @@ public class YxScoreSegmentController extends JeecgController<YxScoreSegment, IY
String professionalCategory = yxScoreSegment.getProfessionalCategory();
if (YxConstant.cankaoMajorTypeList.contains(professionalCategory)) {
yearList = Arrays.asList("2024");
yearList = Arrays.asList(YxConstant.nowYear);
}
List<HistoryScoreSegmentDTO> historyScoreSegmentDTOList = new ArrayList<>();
HistoryScoreSegmentDTO historyScoreSegmentDto = null;
@ -340,7 +340,7 @@ public class YxScoreSegmentController extends JeecgController<YxScoreSegment, IY
String professionalCategory = "音乐类";
String professionalCategoryChild = "音乐表演声乐";
String province = "河南";
YxScoreSegment scoreSegment = yxScoreSegmentService.checkOldYearScore("2024", score, professionalCategory, professionalCategoryChild, province);
YxScoreSegment scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, score, professionalCategory, professionalCategoryChild, province);
System.out.println("约等于上一年的分数:");
System.out.println("分数:"+scoreSegment.getScore());
System.out.println("年份:"+scoreSegment.getYear());

View File

@ -123,4 +123,10 @@ public class YxSchoolMajor implements Serializable {
*/
@ApiModelProperty(value = "计划招生人数")
private Integer planNum;
/**
* 院校限制
*/
@ApiModelProperty(value = "院校限制")
private String limitation;
}

View File

@ -15,6 +15,7 @@
m.semester as studyYear,
m.first_level_discipline as firstLevelDiscipline,
sm.limitation,
sm.major_name,
sm.major_type,
sm.major_type_child,

View File

@ -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;
@ -208,4 +209,107 @@ public class BiaoyanService {
e.printStackTrace();
}
}
/**
* 文化分测算
*
* @param artTestCulturalDtoList
*/
public void testCultural(List<ArtTestCulturalDTO> 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) {
}
}
}

View File

@ -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<ArtTestCulturalDTO> 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);
}
}
}
}
}

View File

@ -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<ArtTestCulturalDTO> 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);
}
}
}
}
}

View File

@ -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<ArtTestCulturalDTO> 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);
}
}
}
}
}

View File

@ -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<RecommendMajorDTO> recommendMajorList, YxUserScore activeCurrentUserScore) {
int index=0;
int index = 0;
try {
//专业类别
String professionalCategory = activeCurrentUserScore.getProfessionalCategory();
@ -66,7 +67,7 @@ public class WuDaoService {
Map<String, Object> differenceMap = null;
List<YxHistoryMajorEnroll> 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<ArtTestCulturalDTO> 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) {
}
}
}

View File

@ -963,7 +963,7 @@ public class YxSchoolMajorServiceImpl extends ServiceImpl<YxSchoolMajorMapper, Y
BigDecimal xjysdy = activeCurrentUserScore.getXjysdy();//戏剧影视导演
BigDecimal fzby = activeCurrentUserScore.getFzby();//服装表演
//=====================分数转换 start
if ("2024".equals(nowYear)) {
if (YxConstant.nowYear.equals(nowYear)) {
YxScoreSegment scoreSegment = null;
if ("音乐类".equals(professionalCategory)) {
if (yybysy != null && yybysy.compareTo(bigDecimal0) > 0) {