This commit is contained in:
zhouwentao 2024-03-09 15:00:45 +08:00
parent a8c28627ce
commit 25fc43daf0
5 changed files with 52 additions and 3 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.yx.constant.YxConstant;
import org.jeecg.modules.yx.entity.*;
import org.jeecg.modules.yx.service.IYxHistoryMajorEnrollService;
import org.jeecg.modules.yx.service.IYxHistoryScoreControlLineService;
@ -30,6 +31,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
@ -206,7 +208,13 @@ 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<>();
@ -215,8 +223,9 @@ public class ArtRecommendMajorController {
if (userScore != null) {
//根据当前用户的专业类别查询
yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getMajorType, userScore.getProfessionalCategory());
// yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getBatch,userScore.getBatch());
yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getCategory,cognitioPolyclinic);
yxHistoryScoreControlLineLambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, userScore.getProfessionalCategory());
yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getCategory,cognitioPolyclinic);
}
String a_ = "_";
yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getSchoolCode, schoolCode);
@ -226,12 +235,14 @@ public class ArtRecommendMajorController {
}
yxSchoolMajorList = yxSchoolMajorList.stream().collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(
Comparator.comparing(p -> p.getRulesEnrollProbability()))), ArrayList::new));
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);
//获取 历年分数信息
@ -286,7 +297,35 @@ public class ArtRecommendMajorController {
//专业分控线
artTestCulturalDto.setSpecialScore(yxHistoryScoreControlLine.getSpecialScore());
}
//计算需要超过多少分可以录取
BigDecimal schoolOldYearAdmissionLine = artTestCulturalDto.getScore();
//录取方式
String probabilityOperator = artTestCulturalDto.getProbabilityOperator();
if (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);

View File

@ -37,5 +37,7 @@ public class ArtTestCulturalDTO implements Serializable {
private BigDecimal culturalScore;
@ApiModelProperty("省专业分控线")
private BigDecimal SpecialScore;
@ApiModelProperty("当前学生成绩需要超越多少分数")
private BigDecimal needScore;
}

View File

@ -100,6 +100,9 @@ public class YxHistoryScoreControlLineController extends JeecgController<YxHisto
historyScoreControlLine.setCulturalScoreXk(YxConstant.bigDecimal0);
historyScoreControlLine.setSpecialScore(YxConstant.bigDecimal0);
historyScoreControlLine.setSpecialScoreXk(YxConstant.bigDecimal0);
}else{
historyScoreControlLine.setCulturalScore(YxConstant.bigDecimal0);
historyScoreControlLine.setCulturalScoreXk(YxConstant.bigDecimal0);
}
}
list = dataMaps.getOrDefault(year,new ArrayList<>());

View File

@ -226,6 +226,10 @@
<if test="qvo.professionalCategory!=null and qvo.professionalCategory!=''">
AND major_type = #{qvo.professionalCategory}
</if>
<!--文理分科-->
<if test="qvo.cognitioPolyclinic!=null and qvo.cognitioPolyclinic!=''">
AND category = #{qvo.cognitioPolyclinic}
</if>
) sm ON sm.school_code = sc.school_code
where 1=1 AND s.is_ys = 1
<if test="qvo.schoolName!=null and qvo.schoolName!=''">

View File

@ -69,6 +69,7 @@ public class YxSchoolServiceImpl extends ServiceImpl<YxSchoolMapper, YxSchool> i
String professionalCategory = currentUserScore.getProfessionalCategory();//专业类别
String professionalCategoryChildren = currentUserScore.getProfessionalCategoryChildren();//子类
List<String> pCategoryChildrenList = ScoreUtil.checkProfessionalCategoryToChildrenList(professionalCategoryChildren);
queryRecommendMajorVO.setCognitioPolyclinic(currentUserScore.getCognitioPolyclinic());
queryRecommendMajorVO.setProfessionalCategory(professionalCategory);
queryRecommendMajorVO.setPCategoryChildrenList(pCategoryChildrenList);
if (StringUtils.isNotBlank(queryRecommendMajorVO.getMajorCode())) {