优化录取计算:计算专业后保存为结果数据
This commit is contained in:
zhouwentao 2024-03-17 20:17:45 +08:00
parent 4085bae747
commit c537b9f2f6
30 changed files with 1104 additions and 482 deletions

View File

@ -55,7 +55,7 @@ public class ArtRecommendMajorController {
@ApiOperation(value = "获取可报专业总数")
@GetMapping("/rulesEnrollrobabilityMenuList")
public Result<?> rulesEnrollrobabilityMenuList(QueryRecommendMajorVO queryRecommendMajorVO) {
String key = "rulesEnrollrobabilityMenuList_professionalCategory_" + queryRecommendMajorVO.getProfessionalCategory();
String key = "rulesEnrollrobabilityMenuList:professionalCategory_" + queryRecommendMajorVO.getProfessionalCategory();
String json = null;
List<Map> dataList = new ArrayList<>();
Map<String, String> data = null;

View File

@ -28,14 +28,4 @@ public class ArtRecommendMajorBaseDTO implements Serializable {
public ArtRecommendMajorBaseDTO() {
}
public ArtRecommendMajorBaseDTO(IPage<RecommendMajorDTO> pageList,boolean vipFlag) {
this.pageList = pageList;
this.isVip = vipFlag?1:0;
}
public ArtRecommendMajorBaseDTO(List<RecommendMajorDTO> list,boolean vipFlag) {
this.list = list;
this.isVip = vipFlag?1:0;
}
}

View File

@ -24,6 +24,7 @@ import java.util.Set;
@Data
@ApiModel(value = "学院专业列表对象")
public class RecommendMajorDTO implements Serializable {
private String id;
@ApiModelProperty(value = "录取概率")
private BigDecimal enrollProbability=new BigDecimal(0);
@ApiModelProperty(value = "学院名称")

View File

@ -5,10 +5,12 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.art.dto.ArtRecommendMajorBaseDTO;
import org.jeecg.modules.art.vo.QueryRecommendMajorVO;
import org.jeecg.modules.yx.entity.YxHistoryMajorEnroll;
import org.jeecg.modules.yx.entity.YxMajor;
import org.jeecg.modules.yx.entity.YxSchoolMajor;
import org.jeecg.modules.yx.service.IYxCalculationMajorService;
import org.jeecg.modules.yx.service.IYxHistoryMajorEnrollService;
import org.jeecg.modules.yx.service.IYxMajorService;
import org.jeecg.modules.yx.service.IYxSchoolMajorService;
@ -36,12 +38,27 @@ public class MiniMajorController {
@Autowired
private IYxSchoolMajorService yxSchoolMajorService;
@Autowired
private IYxCalculationMajorService yxCalculationMajorService;
@Autowired
private IYxHistoryMajorEnrollService yxHistoryMajorEnrollService;
@ApiOperation(value = "小程序端-智能推荐")
@GetMapping("/recommendMajor/aiAuto")
public Result<?> aiAutoRecommendMajor(QueryRecommendMajorVO queryRecommendMajorVO) {
ArtRecommendMajorBaseDTO artRecommendMajorBaseDTO = yxCalculationMajorService.aiAutoRecommendMajor(queryRecommendMajorVO);
return Result.OK(artRecommendMajorBaseDTO);
}
@GetMapping(value = "/recommendMajor/page")
public Result<?> recommendMajorPage(QueryRecommendMajorVO queryRecommendMajorVO){
return Result.OK(yxCalculationMajorService.recommendMajorPage(queryRecommendMajorVO));
}
@ApiOperation(value = "获取院校当前其他推荐专业")
@GetMapping(value = "/schoolOtherMajor")
public Result<?> schoolOtherMajor(QueryRecommendMajorVO queryRecommendMajorVO){
return Result.OK(yxSchoolMajorService.schoolOtherMajor(queryRecommendMajorVO));
return Result.OK(yxCalculationMajorService.schoolOtherMajor(queryRecommendMajorVO));
}
@ApiOperation(value = "专业介绍")
@GetMapping("/majorInfo")

View File

@ -35,8 +35,8 @@ public class YxConstant {
public static List<String> cankaoYearList = Arrays.asList("2023", "2022");
public static String w1z1="文1专1";
public static String w1jiaz1="文1+专1";
public static String w1z1 = "文1专1";
public static String w1jiaz1 = "文1+专1";
public static BigDecimal bigDecimal0 = new BigDecimal(0);
//100倍率
public static BigDecimal bigDecimal100 = new BigDecimal("100");
@ -54,17 +54,19 @@ public class YxConstant {
public static BigDecimal bigDecimal300 = new BigDecimal(300);
//默认的录取方式类型
public static String culturalControlLineGuo= "文过专排";
public static String specialControlLineGuo= "专过文排";
public static String culturalControlLineGuo = "文过专排";
public static String specialControlLineGuo = "专过文排";
//默认的录取方式类型
public static String culturalControlLineGuo2= "文过专排主科";
public static String culturalControlLineGuo2 = "文过专排主科";
public static List<String> defaultRulesEnrollProbabilityList =Arrays.asList("文过专排","专过文排");
public static List<String> defaultRulesEnrollProbabilityList = Arrays.asList("文过专排", "专过文排");
//当天最多修改成绩次数
public static final Integer todayMaxEditScoreCount =10;
public static final Integer todayMaxEditScoreCount = 10;
public static BigDecimal bigDecimal1 = new BigDecimal("1");
public static BigDecimal bigDecimal175= new BigDecimal("175");
public static BigDecimal bigDecimal50=new BigDecimal("50");
public static BigDecimal bigDecimal175 = new BigDecimal("175");
public static BigDecimal bigDecimal50 = new BigDecimal("50");
public static String oldCalculationMajorName = "yx_calculation_major";
public static String newCalculationMajorName = "yx_calculation_major";
}

View File

@ -15,7 +15,6 @@ import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.modules.yx.dto.MajorImport;
import org.jeecg.modules.yx.entity.YxFirstLevelDisciplines;
import org.jeecg.modules.yx.entity.YxMajor;
import org.jeecg.modules.yx.service.IYxFirstLevelDisciplinesService;
@ -29,7 +28,6 @@ import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

View File

@ -16,8 +16,10 @@ import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.AssertUtils;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.modules.art.dto.ArtRecommendMajorBaseDTO;
import org.jeecg.modules.art.dto.RecommendMajorDTO;
import org.jeecg.modules.art.vo.QueryRecommendMajorVO;
import org.jeecg.modules.yx.constant.YxConstant;
import org.jeecg.modules.yx.dto.UserScoreDto;
import org.jeecg.modules.yx.entity.*;
import org.jeecg.modules.yx.service.*;
import org.jeecg.modules.yx.util.ScoreUtil;
@ -55,6 +57,7 @@ public class YxScoreController {
private IYxHistoryScoreControlLineService yxHistoryScoreControlLineService;
@Autowired
private IYxScoreSegmentService yxScoreSegmentService;
@PostMapping(value = "/save")
public Result<?> save(@NotNull @RequestBody YxUserScore yxUserScore) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
@ -90,46 +93,42 @@ public class YxScoreController {
volunteerUpdateWrapper.set(YxVolunteer::getState, "0");
yxVolunteerService.update(volunteerUpdateWrapper);
}
//保存新的分数信息
yxUserScore.setType("2");//报考类型 1.普通类 2.艺术类
yxUserScore.setRanking(0);//位次
yxUserScore.setCreateBy(userId);
AssertUtils.notTrue(culturalScore.compareTo(YxConstant.bigDecimal750) > 0,"[文化成绩]最高分为750");
AssertUtils.notTrue(culturalScore.compareTo(YxConstant.bigDecimal0) < 0,"[文化成绩]最低分为0");
AssertUtils.notTrue(culturalScore.compareTo(YxConstant.bigDecimal750) > 0, "[文化成绩]最高分为750");
AssertUtils.notTrue(culturalScore.compareTo(YxConstant.bigDecimal0) < 0, "[文化成绩]最低分为0");
if ("音乐类".equals(professionalCategory)) {
AssertUtils.notTrue(professionalScore.compareTo(YxConstant.bigDecimal300) > 0,"[主项成绩]最高分为300");
AssertUtils.notTrue(professionalScore.compareTo(YxConstant.bigDecimal0) < 0,"[主项成绩]最低分为0");
}else if(!"表演类".equals(professionalCategory)){
AssertUtils.notTrue(professionalScore.compareTo(YxConstant.bigDecimal300) > 0,"[统考成绩]最高分为300");
AssertUtils.notTrue(professionalScore.compareTo(YxConstant.bigDecimal0) < 0,"[统考成绩]最低分为0");
AssertUtils.notTrue(professionalScore.compareTo(YxConstant.bigDecimal300) > 0, "[主项成绩]最高分为300");
AssertUtils.notTrue(professionalScore.compareTo(YxConstant.bigDecimal0) < 0, "[主项成绩]最低分为0");
} else if (!"表演类".equals(professionalCategory)) {
AssertUtils.notTrue(professionalScore.compareTo(YxConstant.bigDecimal300) > 0, "[统考成绩]最高分为300");
AssertUtils.notTrue(professionalScore.compareTo(YxConstant.bigDecimal0) < 0, "[统考成绩]最低分为0");
}
if (StringUtils.isBlank(professionalCategoryChildren)) {
if (!professionalCategoryChildren.contains("音乐表演声乐")) {
yxUserScore.setYybysy(YxConstant.bigDecimal0);
}else if(!professionalCategoryChildren.contains("音乐表演器乐")){
} else if (!professionalCategoryChildren.contains("音乐表演器乐")) {
yxUserScore.setXjysby(YxConstant.bigDecimal0);
}else if(!professionalCategoryChildren.contains("音乐教育")){
} else if (!professionalCategoryChildren.contains("音乐教育")) {
yxUserScore.setYyjy(YxConstant.bigDecimal0);
}else if(!professionalCategoryChildren.contains("服装表演")){
} else if (!professionalCategoryChildren.contains("服装表演")) {
yxUserScore.setXjysby(YxConstant.bigDecimal0);
}else if(!professionalCategoryChildren.contains("戏剧影视导演")){
} else if (!professionalCategoryChildren.contains("戏剧影视导演")) {
yxUserScore.setXjysby(YxConstant.bigDecimal0);
}else if(!professionalCategoryChildren.contains("戏剧影视表演")){
} else if (!professionalCategoryChildren.contains("戏剧影视表演")) {
yxUserScore.setXjysby(YxConstant.bigDecimal0);
}
}
//==============判断 批次 start
LambdaQueryWrapper<YxHistoryScoreControlLine> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(YxHistoryScoreControlLine::getYear,YxConstant.nowYear);//24年省控线
lambdaQueryWrapper.eq(YxHistoryScoreControlLine::getCategory,yxUserScore.getCognitioPolyclinic());
lambdaQueryWrapper.eq(YxHistoryScoreControlLine::getYear, YxConstant.nowYear);//24年省控线
lambdaQueryWrapper.eq(YxHistoryScoreControlLine::getCategory, yxUserScore.getCognitioPolyclinic());
//表演类型的方向
if ("舞蹈类".equals(professionalCategory)) {
//舞蹈类使用艺术舞蹈的省控线判定批次
lambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory,"舞蹈类");
}else{
lambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory,professionalCategory);
lambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, "舞蹈类");
} else {
lambdaQueryWrapper.eq(YxHistoryScoreControlLine::getProfessionalCategory, professionalCategory);
}
lambdaQueryWrapper.last("ORDER BY year DESC,field(batch,'提前批','本科A段','本科B段','本科','高职高专')");
List<YxHistoryScoreControlLine> historyScoreControlLineList = yxHistoryScoreControlLineService.list(lambdaQueryWrapper);
@ -137,59 +136,60 @@ public class YxScoreController {
//24年分数转换折合23年分数
YxScoreSegment scoreSegment = null;
if ("舞蹈类".equals(professionalCategory)) {
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, professionalScore, professionalCategory,null, yxUserScore.getProvince());
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, professionalScore, professionalCategory, null, yxUserScore.getProvince());
professionalScore = scoreSegment.getScore();
}else if("音乐类".equals(professionalCategory)){
} else if ("音乐类".equals(professionalCategory)) {
if (!professionalCategoryChildren.contains("器乐")) {
yxUserScore.setYybyqy(YxConstant.bigDecimal0);
}if (!professionalCategoryChildren.contains("声乐")) {
}
if (!professionalCategoryChildren.contains("声乐")) {
yxUserScore.setYybysy(YxConstant.bigDecimal0);
}if (!professionalCategoryChildren.contains("音乐教育")) {
}
if (!professionalCategoryChildren.contains("音乐教育")) {
yxUserScore.setYyjy(YxConstant.bigDecimal0);
}
BigDecimal yybysy = yxUserScore.getYybysy();//音乐表演声乐成绩
BigDecimal yybyqy = yxUserScore.getYybyqy();//音乐表演器乐成绩
BigDecimal yyjy = yxUserScore.getYyjy();//音乐教育成绩
BigDecimal yyjy = yxUserScore.getYyjy();//音乐教育成绩
if (yybysy!=null && yybysy.compareTo(YxConstant.bigDecimal0) > 0) {
if (yybysy != null && yybysy.compareTo(YxConstant.bigDecimal0) > 0) {
//音乐表演声乐
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, yybysy, professionalCategory,"音乐表演声乐", yxUserScore.getProvince());
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, yybysy, professionalCategory, "音乐表演声乐", yxUserScore.getProvince());
yybysy = scoreSegment.getScore();
}
if(yybyqy!=null && yybyqy.compareTo(YxConstant.bigDecimal0) > 0){
if (yybyqy != null && yybyqy.compareTo(YxConstant.bigDecimal0) > 0) {
//音乐表演器乐成绩
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, yybyqy, professionalCategory,"音乐表演器乐", yxUserScore.getProvince());
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, yybyqy, professionalCategory, "音乐表演器乐", yxUserScore.getProvince());
yybyqy = scoreSegment.getScore();
}else{
} else {
}
if(yyjy!=null && yyjy.compareTo(YxConstant.bigDecimal0) > 0){
if (yyjy != null && yyjy.compareTo(YxConstant.bigDecimal0) > 0) {
//音乐教育成绩
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, yyjy, professionalCategory,"音乐教育", yxUserScore.getProvince());
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, yyjy, professionalCategory, "音乐教育", yxUserScore.getProvince());
yyjy = scoreSegment.getScore();
}
professionalScore = yybysy.max(yybyqy).max(yyjy);
}else if("播音与主持类".equals(professionalCategory)){
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, professionalScore, professionalCategory,null, yxUserScore.getProvince());
} else if ("播音与主持类".equals(professionalCategory)) {
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, professionalScore, professionalCategory, null, yxUserScore.getProvince());
professionalScore = scoreSegment.getScore();
}else if("表演类".equals(professionalCategory)){
} else if ("表演类".equals(professionalCategory)) {
BigDecimal xjysby = yxUserScore.getXjysby();//戏剧影视表演
BigDecimal xjysdy = yxUserScore.getXjysdy();//戏剧影视导演
BigDecimal fzby = yxUserScore.getFzby();//服装表演
oldProfessionalScore = xjysby.max(xjysdy).max(fzby);
if (xjysby!=null && xjysby.compareTo(YxConstant.bigDecimal0) > 0) {
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, xjysby, professionalCategory,"戏剧影视表演", yxUserScore.getProvince());
if (xjysby != null && xjysby.compareTo(YxConstant.bigDecimal0) > 0) {
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, xjysby, professionalCategory, "戏剧影视表演", yxUserScore.getProvince());
xjysby = scoreSegment.getScore();
}
if(xjysdy!=null && xjysdy.compareTo(YxConstant.bigDecimal0) > 0){
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, xjysdy, professionalCategory,"戏剧影视导演", yxUserScore.getProvince());
if (xjysdy != null && xjysdy.compareTo(YxConstant.bigDecimal0) > 0) {
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, xjysdy, professionalCategory, "戏剧影视导演", yxUserScore.getProvince());
xjysdy = scoreSegment.getScore();
}
if(fzby!=null && fzby.compareTo(YxConstant.bigDecimal0) > 0){
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, fzby, professionalCategory,"服装表演", yxUserScore.getProvince());
if (fzby != null && fzby.compareTo(YxConstant.bigDecimal0) > 0) {
scoreSegment = yxScoreSegmentService.checkOldYearScore(YxConstant.nowYear, fzby, professionalCategory, "服装表演", yxUserScore.getProvince());
fzby = scoreSegment.getScore();
}
professionalScore = xjysby.max(xjysdy).max(fzby);
@ -197,11 +197,17 @@ public class YxScoreController {
}
}
String batch = "高职高专";
if (professionalScore!=null && professionalScore.compareTo(YxConstant.bigDecimal0) > 0) {
if (professionalScore != null && professionalScore.compareTo(YxConstant.bigDecimal0) > 0) {
batch = ScoreUtil.conversionScoreBatch(culturalScore, professionalScore, historyScoreControlLineList);
}
//================批次 end
//根据批次判断 本科/高职高专
//保存新的分数信息
yxUserScore.setType("2");//报考类型 1.普通类 2.艺术类
yxUserScore.setRanking(0);//位次
yxUserScore.setCreateBy(userId);
yxUserScore.setEducationalLevel("1");
yxUserScore.setBatch(batch);
/*if ("体育类".equals(professionalCategory)) {
@ -212,31 +218,29 @@ public class YxScoreController {
yxUserScore.setId(null);
yxUserScore.setCreateTime(null);
yxUserScore.setUpdateTime(null);
yxUserScore.setCalculationTableName("yx_calculation_major");
//保存当前用户的得分
yxUserScoreService.save(yxUserScore);
//yxCalculationMajorService.calculationMajor(yxUserScore);
List<RecommendMajorDTO> recommendMajorDTOList = yxCalculationMajorService.calculationMajor(yxUserScore);
//创建新的志愿单信息
YxVolunteer yxVolunteer = new YxVolunteer();
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
yxVolunteer.setVolunteerName(sdf.format(new Date())+"志愿表");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
yxVolunteer.setVolunteerName(sdf.format(new Date()) + "志愿表");
yxVolunteer.setScoreId(yxUserScore.getId());
yxVolunteer = yxVolunteerService.addNew(yxVolunteer);
//获取志愿单推荐数量
ArtRecommendMajorBaseDTO artRecommendMajorBaseDTO = yxSchoolMajorService.recommendMajorCount(new QueryRecommendMajorVO());
ArtRecommendMajorBaseDTO artRecommendMajorBaseDTO = yxCalculationMajorService.checkLevelNum(recommendMajorDTOList);
yxUserScore.setJwtNum(artRecommendMajorBaseDTO.getJwt());
yxUserScore.setKcjNum(artRecommendMajorBaseDTO.getKcj());
yxUserScore.setKbdNum(artRecommendMajorBaseDTO.getKbd());
yxUserScore.setNlqNum(artRecommendMajorBaseDTO.getNan());
yxUserScoreService.updateById(yxUserScore);
//返回对象
JSONObject responseBody=JSONObject.parseObject(JSONObject.toJSONString(yxUserScore));
JSONObject responseBody = JSONObject.parseObject(JSONObject.toJSONString(yxUserScore));
responseBody.put("volunteer",yxVolunteer);
return Result.OK(responseBody);
}
@ -245,51 +249,54 @@ public class YxScoreController {
public Result<?> getUserScoreInfo() {
//获取分数信息
YxUserScore activeCurrentUserScore = yxUserScoreService.getActiveCurrentUserScore();
if (activeCurrentUserScore==null) {
if (activeCurrentUserScore == null) {
return Result.OK();
}
//获取当前成绩下的第志愿单
LambdaQueryWrapper<YxVolunteer> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(YxVolunteer::getScoreId,activeCurrentUserScore.getId());
lambdaQueryWrapper.eq(YxVolunteer::getState,1);
lambdaQueryWrapper.eq(YxVolunteer::getScoreId, activeCurrentUserScore.getId());
lambdaQueryWrapper.eq(YxVolunteer::getState, 1);
lambdaQueryWrapper.last("limit 1");
YxVolunteer yxVolunteer = yxVolunteerService.getOne(lambdaQueryWrapper);
//获取可报院校数量
QueryRecommendMajorVO queryRecommendMajorVO = new QueryRecommendMajorVO();
queryRecommendMajorVO.setBatch(activeCurrentUserScore.getBatch());
ArtRecommendMajorBaseDTO artRecommendMajorBaseDTO = yxSchoolMajorService.recommendMajorCount(queryRecommendMajorVO);
String jsonString = JSONObject.toJSONString(activeCurrentUserScore);
JSONObject jsonObject = JSONObject.parseObject(jsonString);
jsonObject.put("fillVolunteer",artRecommendMajorBaseDTO);
jsonObject.put("volunteer",yxVolunteer);
return Result.OK(jsonObject);
ArtRecommendMajorBaseDTO artRecommendMajorBaseDTO = new ArtRecommendMajorBaseDTO();
artRecommendMajorBaseDTO.setKbd(activeCurrentUserScore.getKbdNum());
artRecommendMajorBaseDTO.setJwt(activeCurrentUserScore.getJwtNum());
artRecommendMajorBaseDTO.setKcj(activeCurrentUserScore.getKcjNum());
artRecommendMajorBaseDTO.setNan(activeCurrentUserScore.getNlqNum());
artRecommendMajorBaseDTO.setAllNumber(activeCurrentUserScore.getKbdNum() + activeCurrentUserScore.getJwtNum() + activeCurrentUserScore.getKcjNum());
UserScoreDto userScoreDto = new UserScoreDto();
userScoreDto.setScoreInfo(activeCurrentUserScore);
userScoreDto.setVolunteer(yxVolunteer);
userScoreDto.setFillVolunteer(artRecommendMajorBaseDTO);
return Result.OK(userScoreDto);
}
@ApiOperation(value = "今日编辑成绩的次数")
@GetMapping(value = "/todayOfEditScoreCount")
public Result<?> todayOfEditScoreCount(){
LoginUser loginUser = (LoginUser)SecurityUtils.getSubject().getPrincipal();
public Result<?> todayOfEditScoreCount() {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
JSONObject jsonObject = new JSONObject();
Date date = new Date();
String format = YxConstant.sdf.format(date);
String startTime = format+" 00:00:00";
String endTime = format+" 23:59:59";
String startTime = format + " 00:00:00";
String endTime = format + " 23:59:59";
LambdaQueryWrapper<YxUserScore> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.between(YxUserScore::getCreateTime,startTime,endTime);
lambdaQueryWrapper.eq(YxUserScore::getCreateBy,loginUser.getId());
lambdaQueryWrapper.between(YxUserScore::getCreateTime, startTime, endTime);
lambdaQueryWrapper.eq(YxUserScore::getCreateBy, loginUser.getId());
long useCount = yxUserScoreService.count(lambdaQueryWrapper);
long residueCount = 0;
if (YxConstant.todayMaxEditScoreCount>useCount) {
if (YxConstant.todayMaxEditScoreCount > useCount) {
//当天没有超过更改次数
residueCount = YxConstant.todayMaxEditScoreCount - useCount;
}
jsonObject.put("useCount",useCount);
jsonObject.put("residueCount",residueCount);
jsonObject.put("useCount", useCount);
jsonObject.put("residueCount", residueCount);
return Result.OK(jsonObject);
}
}

View File

@ -1,19 +0,0 @@
package org.jeecg.modules.yx.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @Description
* @Author ZhouWenTao
* @Date 2023/11/21 16:16
*/
@Data
public class ScoreBatchDTO implements Serializable {
private double wenScore;
private double liScore;
private double zhuanScore;
private String batch;
private String type;
}

View File

@ -0,0 +1,27 @@
package org.jeecg.modules.yx.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecg.modules.art.dto.ArtRecommendMajorBaseDTO;
import org.jeecg.modules.yx.entity.YxUserScore;
import org.jeecg.modules.yx.entity.YxVolunteer;
import java.io.Serializable;
/**
* @Description
* @Author ZhouWenTao
* @Date 2024/3/17 18:40
*/
@Data
@ApiModel(value = "用户成绩信息dto")
public class UserScoreDto implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "用户成绩信息")
private YxUserScore scoreInfo;
@ApiModelProperty(value = "志愿单信息")
private YxVolunteer volunteer;
@ApiModelProperty(value = "推荐专业数量信息")
private ArtRecommendMajorBaseDTO fillVolunteer;
}

View File

@ -63,7 +63,7 @@ public class YxCalculationMajor implements Serializable {
/**备注*/
@Excel(name = "备注", width = 15)
@ApiModelProperty(value = "备注")
private java.lang.String detail;
private java.lang.String detail="";
/**科类(文科/理科)*/
@Excel(name = "科类(文科/理科)", width = 15)
@ApiModelProperty(value = "科类(文科/理科)")
@ -104,29 +104,21 @@ public class YxCalculationMajor implements Serializable {
/**二级专业类型*/
@Excel(name = "二级专业类型", width = 15)
@ApiModelProperty(value = "二级专业类型")
private java.lang.String majorTypeChild;
private java.lang.String majorTypeChild="";
/**计划招生人数*/
@Excel(name = "计划招生人数", width = 15)
@ApiModelProperty(value = "计划招生人数")
private java.lang.Integer planNum;
/**是否使用主项成绩*/
@Excel(name = "是否使用主项成绩", width = 15)
@ApiModelProperty(value = "是否使用主项成绩")
private java.lang.String checkMaster;
/**主考科目*/
@Excel(name = "主考科目", width = 15)
@ApiModelProperty(value = "主考科目")
private java.lang.String mainSubjects;
/**学制*/
@Excel(name = "学制", width = 15)
@ApiModelProperty(value = "学制")
private java.lang.String semester;
/**院校限制*/
@Excel(name = "院校限制", width = 15)
@ApiModelProperty(value = "院校限制")
private java.lang.String limitation;
private java.lang.String limitation="";
/**其他分数限制*/
@Excel(name = "其他分数限制", width = 15)
@ApiModelProperty(value = "其他分数限制")
private java.lang.String otherScoreLimitation;
private java.lang.String otherScoreLimitation="";
}

View File

@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecg.modules.yx.dto.ProfessionalCategoryChildrenDTO;
@ -137,7 +138,9 @@ public class YxUserScore implements Serializable {
private Integer nlqNum;
@ApiModelProperty(value = "记录结果表的表名")
@JsonIgnore
private String calculationTableName;
//===================
/*是否是vip 0-不是,1-是*/
@TableField(exist = false)

View File

@ -2,16 +2,22 @@ package org.jeecg.modules.yx.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.art.dto.RecommendMajorDTO;
import org.jeecg.modules.art.vo.QueryRecommendMajorVO;
import org.jeecg.modules.yx.entity.YxCalculationMajor;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 用户可报专业折合关联表
* @Author: jeecg-boot
* @Date: 2024-03-15
* @Date: 2024-03-15
* @Version: V1.0
*/
public interface YxCalculationMajorMapper extends BaseMapper<YxCalculationMajor> {
List<RecommendMajorDTO> recommendMajorList(@Param(value = "tableName")String tableName,@Param("queryvo") QueryRecommendMajorVO queryRecommendMajorVO);
void insertBatch(@Param("tableName") String tableName,@Param("list") List<YxCalculationMajor> list);
}

View File

@ -18,4 +18,6 @@ public interface YxVolunteerRecordMapper extends BaseMapper<YxVolunteerRecord> {
List<YxVolunteerRecord> getListByCreateBy(@Param("yxVolunteerRecord") YxVolunteerRecord yxVolunteerRecord);
List<VolunteerRecordDTO> listDTOByVolunteerId(@Param("volunteerId") String volunteerId);
List<VolunteerRecordDTO> listDTOByVolunteerId2(@Param("scoreId")String scoreId, @Param("calutionTableName") String calculationTableName, @Param("volunteerId") String volunteerId);
}

View File

@ -1,5 +1,172 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.yx.mapper.YxCalculationMajorMapper">
<insert id="insertBatch" parameterType="java.util.List">
INSERT INTO ${tableName} (id, score_id, school_code, major_code, major_name, enrollment_code, tuition,
detail, category, rules_enroll_probability, batch, student_old_converted_score, student_converted_score,
enroll_probability, probability_operator, create_time, major_type, major_type_child, plan_num, main_subjects,
limitation, other_score_limitation)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.id}, #{item.scoreId}, #{item.schoolCode}, #{item.majorCode}, #{item.majorName},
#{item.enrollmentCode}, #{item.tuition}, #{item.detail}, #{item.category}, #{item.rulesEnrollProbability},
#{item.batch}, #{item.studentOldConvertedScore}, #{item.studentConvertedScore}, #{item.enrollProbability},
#{item.probabilityOperator}, #{item.createTime}, #{item.majorType}, #{item.majorTypeChild}, #{item.planNum},
#{item.mainSubjects}, #{item.limitation}, #{item.otherScoreLimitation}
)
</foreach>
</insert>
</mapper>
<select id="recommendMajorList" resultType="org.jeecg.modules.art.dto.RecommendMajorDTO">
SELECT
s.school_name,
s.school_icon,
cm.school_code,
cm.major_code,
cm.major_name,
cm.enrollment_code,
cm.tuition,
cm.detail,
cm.category,
cm.batch,
cm.student_old_converted_score as studentScore,
cm.student_converted_score,
cm.enroll_probability,
cm.rules_enroll_probability,
cm.probability_operator,
cm.create_time,
cm.major_type,
cm.major_type_child,
cm.plan_num,
cm.main_subjects,
cm.limitation,
cm.other_score_limitation
FROM ${tableName} cm
LEFT JOIN yx_school_child sc ON sc.school_code = cm.school_code
LEFT JOIN yx_school s ON s.id = sc.school_id
WHERE cm.rules_enroll_probability is not null
<!--成绩单-->
<if test="queryvo.scoreId!=null and queryvo.scoreId!=''">
AND cm.score_id = #{queryvo.scoreId}
</if>
<!--院校名称搜索-->
<if test="queryvo.schoolName!=null and queryvo.schoolName!=''">
AND (s.school_name like concat('%',#{queryvo.schoolName},'%') or sc.schooL_code like
concat('%',#{queryvo.schoolName},'%') or cm.major_name like
concat('%',#{queryvo.schoolName},'%'))
</if>
<if test="queryvo.schoolCode!=null and queryvo.schoolCode!=''">
AND cm.school_code = #{queryvo.schoolCode}
</if>
<!--专业编码-->
<if test="queryvo.majorCodeList!=null and queryvo.majorCodeList.size>0">
AND cm.major_code in
<foreach collection="queryvo.majorCodeList" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
<!--地区-->
<if test="queryvo.addressList!=null and queryvo.addressList.size>0">
AND s.province in
<foreach collection="queryvo.addressList" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
<!--文理分科-->
<if test="queryvo.cognitioPolyclinic!=null and queryvo.cognitioPolyclinic!=''">
AND cm.category = #{queryvo.cognitioPolyclinic}
</if>
<!--批次-->
<if test="queryvo.batch!=null and queryvo.batch!=''">
AND cm.batch = #{queryvo.batch}
</if>
<if test="queryvo.batchList!=null and queryvo.batchList.size>0">
AND cm.batch in
<foreach collection="queryvo.batchList" index="index" item="b" open="(" separator="," close=")">
#{b}
</foreach>
</if>
<!--录取方式-->
<if test="queryvo.rulesEnrollProbability!=null and queryvo.rulesEnrollProbability!=''">
AND cm.rules_enroll_probability = #{queryvo.rulesEnrollProbability}
</if>
<!--办学性质-->
<if test="queryvo.schoolNatureList!=null and queryvo.schoolNatureList.size>0">
AND s.school_nature in
<foreach collection="queryvo.schoolNatureList" index="index" item="b" open="(" separator="," close=")">
#{b}
</foreach>
</if>
<!--院校标签-->
<if test="queryvo.tagsList!=null and queryvo.tagsList.size>0">
<choose>
<when test="queryvo.tagsList.contains('985') and queryvo.tagsList.contains('211')">
AND s.is985 = '1' AND s.is211 = '1'
</when>
<when test="queryvo.tagsList.contains('985')">
AND s.is985 = '1'
</when>
<when test="queryvo.tagsList.contains('211')">
AND s.is211 = '1'
</when>
<when test="queryvo.tagsList.contains('双一流')">
AND s.sfsyl !='双一流'
</when>
<otherwise>
</otherwise>
</choose>
</if>
<!--专业类别-->
<if test="queryvo.professionalCategory!=null and queryvo.professionalCategory!=''">
<!--AND fld.disciplines_name like concat('%',#{queryvo.professionalCategory},'%')-->
AND cm.major_type like concat('%',#{queryvo.professionalCategory},'%')
</if>
<!--音乐类 子项专业查询 start-->
<if test="queryvo.professionalCategory!=null and queryvo.professionalCategory=='音乐类' and queryvo.pCategoryChildrenList!=null and queryvo.pCategoryChildrenList.size>0">
AND(
<choose>
<when test="queryvo.pCategoryChildrenList.contains('音乐表演声乐')">
cm.main_subjects like '%声乐%' AND (
cm.major_type_child = '音乐表演'
<if test="queryvo.pCategoryChildrenList.contains('音乐教育')">
or cm.major_type_child = '音乐教育'
</if>
)
</when>
<when test="queryvo.pCategoryChildrenList.contains('音乐表演器乐')">
cm.main_subjects like '%器乐%' AND (
cm.major_type_child = '音乐表演'
<if test="queryvo.pCategoryChildrenList.contains('音乐教育')">
or cm.major_type_child = '音乐教育'
</if>
)
</when>
<when test="queryvo.pCategoryChildrenList.contains('音乐教育')">
cm.major_type_child = '音乐教育'
</when>
</choose>
)
</if>
<!--音乐类 子项专业查询 end-->
<!--表演类 子项专业查询 start-->
<if test="queryvo.professionalCategory!=null and queryvo.professionalCategory=='表演类' and queryvo.pCategoryChildrenList!=null and queryvo.pCategoryChildrenList.size>0">
AND cm.main_subjects in
<foreach collection="queryvo.pCategoryChildrenList" index="index" item="b" open="(" separator="," close=")">
#{b}
</foreach>
</if>
<!--表演类 子项专业查询 end-->
<!--院校类型-->
<if test="queryvo.institutionType!=null and queryvo.institutionType!=''">
AND s.institution_type= #{queryvo.institutionType}
</if>
<!--办学性质-->
<if test="queryvo.schoolNature!=null and queryvo.schoolNature!=''">
AND s.school_nature= #{queryvo.schoolNature}
</if>
ORDER BY enroll_probability desc
</select>
</mapper>

View File

@ -152,11 +152,11 @@
</if>
<!--表演类 子项专业查询 end-->
/*院校类型*/
<!--院校类型-->
<if test="queryvo.institutionType!=null and queryvo.institutionType!=''">
AND s.institution_type= #{queryvo.institutionType}
</if>
/*办学性质*/
<!--办学性质-->
<if test="queryvo.schoolNature!=null and queryvo.schoolNature!=''">
AND s.school_nature= #{queryvo.schoolNature}
</if>

View File

@ -13,7 +13,6 @@
</if>
</select>
<select id="myVolunteerList" resultType="org.jeecg.modules.art.dto.RecommendMajorDTO">
SELECT
sc.school_name,
@ -79,4 +78,36 @@
group by vr.id
ORDER BY vr.indexs asc
</select>
<select id="listDTOByVolunteerId2" resultType="org.jeecg.modules.yx.dto.VolunteerRecordDTO">
SELECT vr.id,
vr.indexs,
vr.major_code,
vr.school_code,
vr.enrollment_code,
vr.enroll_probability,
vr.student_converted_score,
vr.batch as batch,
vr.fctj as fctj,
sc.school_name,
s.province as province,
s.school_nature as propertyName,
s.institution_type as institutionType,
cm.major_name,
cm.category,
cm.rules_enroll_probability as rulesEnrollProbability,
cm.probability_operator as probabilityOperator,
cm.detail as majorDetail,
m.first_level_discipline as firstLevelDiscipline,
m.major_desc as majorRemarks,
m.semester as studyYear
FROM yx_volunteer_record vr
LEFT JOIN ${calutionTableName} cm ON cm.major_code = vr.major_code AND cm.school_code = vr.school_code AND cm.enrollment_code = vr.enrollment_code AND cm.score_id = #{scoreId}
LEFT JOIN yx_major m ON m.major_code = cm.major_code
LEFT JOIN (SELECT school_id,school_code,school_name FROM yx_school_child group by school_code) sc ON sc.school_code = cm.school_code
LEFT JOIN yx_school s ON s.id = sc.school_id
WHERE vr.volunteer_id = #{volunteerId}
group by vr.id
ORDER BY vr.indexs asc
</select>
</mapper>

View File

@ -1,9 +1,14 @@
package org.jeecg.modules.yx.service;
import org.jeecg.modules.art.dto.ArtRecommendMajorBaseDTO;
import org.jeecg.modules.art.dto.RecommendMajorDTO;
import org.jeecg.modules.art.vo.QueryRecommendMajorVO;
import org.jeecg.modules.yx.entity.YxCalculationMajor;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.yx.entity.YxUserScore;
import java.util.List;
/**
* @Description: 用户可报专业折合关联表
* @Author: jeecg-boot
@ -11,5 +16,48 @@ import org.jeecg.modules.yx.entity.YxUserScore;
* @Version: V1.0
*/
public interface IYxCalculationMajorService extends IService<YxCalculationMajor> {
void calculationMajor(YxUserScore userScore);
List<RecommendMajorDTO> calculationMajor(YxUserScore userScore);
/**
* 获取推荐专业
* @param queryRecommendMajorVO
* @return
*/
ArtRecommendMajorBaseDTO recommendMajorPage(QueryRecommendMajorVO queryRecommendMajorVO);
/**
* 获取院校其他专业
* @param queryRecommendMajorVO
* @return
*/
ArtRecommendMajorBaseDTO schoolOtherMajor(QueryRecommendMajorVO queryRecommendMajorVO);
/**
* 从专业列表中折合出难冲的数量
* @param calculationMajorList
* @return
*/
ArtRecommendMajorBaseDTO checkLevelNum(List<RecommendMajorDTO> calculationMajorList);
/**
* 检测表名是否存在不存在则创建
* @param calculationTableName 表名
*/
String checkCalculationTableNameOfCreate(String calculationTableName);
/**
* AI一键填报
* @param queryRecommendMajorVO
* @return
*/
ArtRecommendMajorBaseDTO aiAutoRecommendMajor(QueryRecommendMajorVO queryRecommendMajorVO);
/**
* 从旧表的旧成绩id数据复制到新表的新的成绩单中
* @param oldScoreId 旧成绩单id
* @param newScoreId 新成绩单id
* @param oldCalculationMajorTableName 旧TableName
* @param newCalculationMajorTableName 新TableName
*/
void copyNew(String oldScoreId, String newScoreId, String oldCalculationMajorTableName, String newCalculationMajorTableName);
}

View File

@ -1,5 +1,7 @@
package org.jeecg.modules.yx.service;
import org.jeecg.modules.art.dto.RecommendMajorDTO;
import org.jeecg.modules.yx.dto.VolunteerRecordDTO;
import org.jeecg.modules.yx.entity.YxHistoryMajorEnroll;
import com.baomidou.mybatisplus.extension.service.IService;
@ -22,4 +24,15 @@ public interface IYxHistoryMajorEnrollService extends IService<YxHistoryMajorEnr
* @return Map<院校编码,数据>
*/
Map<String,YxHistoryMajorEnroll> getDataGroupBySchoolCodeAndMaxYear(List<String> schoolCodeList);
/**
* 给推荐专业列表写入历年分数信息
* @param recommendMajorDtoList 推荐专业列表
*/
void recommendMajorDTOListSetHistoryInfo(List<RecommendMajorDTO> recommendMajorDtoList);
/**
* 给志愿单中的专业写入历年分数信息
*/
void volunteerRecordDTOListSetHistoryInfo(List<VolunteerRecordDTO> recordDtoList);
}

View File

@ -35,4 +35,16 @@ public interface IYxUserScoreService extends IService<YxUserScore> {
* @param id
*/
void setDefaultScore(String id);
/**
* 关闭状态
* @param id
*/
void closeStatus(String id);
/**
* 根据id复制
* @param id
*/
YxUserScore copyById(String id);
}

View File

@ -23,6 +23,8 @@ public interface IYxVolunteerRecordService extends IService<YxVolunteerRecord> {
List<VolunteerRecordDTO> listDTOByVolunteerId(String volunteerId);
List<VolunteerRecordDTO> listDTOByVolunteerId(String scoreId,String calculationTableName, String volunteerId);
boolean artVolunteerSave(SaveVolunteerVO saveVolunteerVO);
List<YxVolunteerRecord> getListByCreateBy(YxVolunteerRecord yxVolunteerRecord);
@ -31,4 +33,6 @@ public interface IYxVolunteerRecordService extends IService<YxVolunteerRecord> {
* 根据volunteerId删除
*/
boolean deleteByVolunteerId(String volunteerId);
}

View File

@ -49,4 +49,5 @@ public interface IYxVolunteerService extends IService<YxVolunteer> {
* 志愿单 另存
*/
String saveAs(SaveVolunteerVO saveVolunteerVO);
}

View File

@ -61,7 +61,7 @@ public class BiaoyanService {
BigDecimal enrollProbability = null;//录取率
Map<String, Object> differenceMap = null;
List<YxHistoryMajorEnroll> historyMajorEnrollList = null;//历年录取信息
BigDecimal fzby= activeCurrentUserScore.getFzby();//服装表演-分数
BigDecimal fzby = activeCurrentUserScore.getFzby();//服装表演-分数
BigDecimal xjysdy = activeCurrentUserScore.getXjysdy();//戏剧影视导演-分数
BigDecimal xjysby = activeCurrentUserScore.getXjysby();//戏剧影视表演-分数
@ -103,33 +103,23 @@ public class BiaoyanService {
probabilityOperator = recommendMajorDTO.getProbabilityOperator();
culturalControlLine = batchControlLineMaps.get(recommendMajorDTO.getBatch()).getCulturalScore();
specialControlLine = batchControlLineMaps.get(recommendMajorDTO.getBatch()).getSpecialScore();
//没有计算方式 跳过
if (StringUtils.isBlank(rulesEnrollProbability)) {
continue;
}
//没有往年录取分数线信息
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());
//不是体育类的专业如果是文过专排并且没有录取计算运算符时文过专排是文*0+*1,专过文排是文*1+*0
if ("文过专排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) {
probabilityOperator = "文*0+专*1";
} else if ("专过文排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) {
probabilityOperator = "文*1+专*0";
}
if (StringUtils.isBlank(probabilityOperator)) {
//没有计算方式 没有往年录取分数线信息 或者没有过该批次 时跳过
if (StringUtils.isBlank(rulesEnrollProbability)
|| StringUtils.isBlank(probabilityOperator)
|| CollectionUtils.isEmpty(historyMajorEnrollList)
|| !ScoreUtil.hasComputeEnrollProbabilityPermissions(nowBatch, recommendMajorDTO.getBatch())) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
//只获取参考的年份,23,22 这两年
historyMajorEnrollList = historyMajorEnrollList.stream().filter(h -> YxConstant.cankaoYearList.contains(h.getYear())).collect(Collectors.toList());
//将当期成绩按照专业录取分数方式折算
//majorTypeChild = recommendMajorDTO.getMajorTypeChild();
mainSubjects = recommendMajorDTO.getMainSubjects();
//判断 使用什么成绩
if ("高职高专".equals(recommendMajorDTO.getBatch()) || "兼报".equals(mainSubjects)) {
//如果是高职/兼报用最高分
professionalScore2 = byMaxScoreOld;
professionalScore3 = byMaxScore;
} else if ("戏剧影视表演".equals(mainSubjects)) {
@ -143,20 +133,16 @@ public class BiaoyanService {
professionalScore3 = fzby;
} else {
log.error("当前专业有问题,不清楚主考科目:" + JSONObject.toJSONString(recommendMajorDTO));
continue;
}
//判断其他录取要求
if(!ScoreUtil.otherScoreJudge(professionalScore,activeCurrentUserScore,recommendMajorDTO)){
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
//分数是否过省控线
if(!ScoreUtil.crossingControlLine(rulesEnrollProbability,culturalScore,professionalScore,culturalControlLine,specialControlLine)){
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
//判断其他录取要求 分数是否过省控线
if (!ScoreUtil.otherScoreJudge(professionalScore, activeCurrentUserScore, recommendMajorDTO)
|| !ScoreUtil.crossingControlLine(rulesEnrollProbability, culturalScore, professionalScore, culturalControlLine, specialControlLine)) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
//使用主考科目成绩将当期成绩按照专业录取分数方式折算
recommendMajorDTO.setStudentConvertedScore(ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), professionalScore2, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator));
studentScore = ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), professionalScore3, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
@ -177,8 +163,8 @@ public class BiaoyanService {
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;
}
@ -186,20 +172,20 @@ public class BiaoyanService {
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList);
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
if(nowYearDiff.compareTo(YxConstant.bigDecimal0)==0 && (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0)) {
if (nowYearDiff.compareTo(YxConstant.bigDecimal0) == 0 && (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0)) {
//当前年分差为0并且 前年的分差也为0
enrollProbability = YxConstant.bigDecimal50;//录取率50
}else if (nowYearDiff.compareTo(YxConstant.bigDecimal0)>0 && (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0)) {
} else if (nowYearDiff.compareTo(YxConstant.bigDecimal0) > 0 && (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0)) {
//当前年分差不为0且历年分差为0
enrollProbability = nowYearDiff.multiply(YxConstant.bigDecimal075).multiply(YxConstant.bigDecimal100);
} else if(nowYearDiff.compareTo(YxConstant.bigDecimal0)==0 && historyThreeYearDiff.compareTo(YxConstant.bigDecimal0)>0){
} else if (nowYearDiff.compareTo(YxConstant.bigDecimal0) == 0 && historyThreeYearDiff.compareTo(YxConstant.bigDecimal0) > 0) {
//当前年分差为0但是之前年分差大于零0
enrollProbability = YxConstant.bigDecimal1.divide(historyThreeYearDiff,4,RoundingMode.HALF_UP).multiply(YxConstant.bigDecimal100);
if (historyThreeYearDiff.compareTo(YxConstant.bigDecimal1)==0) {
enrollProbability = YxConstant.bigDecimal1.divide(historyThreeYearDiff, 4, RoundingMode.HALF_UP).multiply(YxConstant.bigDecimal100);
if (historyThreeYearDiff.compareTo(YxConstant.bigDecimal1) == 0) {
//如果历年分差为1再乘0.75
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal075);
}
}else{
} else {
enrollProbability = nowYearDiff.divide(historyThreeYearDiff, 4, RoundingMode.HALF_UP).multiply(YxConstant.bigDecimal100);
//录取率*0.75
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal075);
@ -247,7 +233,7 @@ public class BiaoyanService {
BigDecimal divide = null;
String mainSubjects = null;
//=====================分数转换 start
BigDecimal fzby= userScore.getFzby();//服装表演-分数
BigDecimal fzby = userScore.getFzby();//服装表演-分数
BigDecimal xjysdy = userScore.getXjysdy();//戏剧影视导演-分数
BigDecimal xjysby = userScore.getXjysby();//戏剧影视表演-分数

View File

@ -41,10 +41,8 @@ public class MusicService {
try {
//专业类别
String professionalCategory = activeCurrentUserScore.getProfessionalCategory();
String cognitioPolyclinic = activeCurrentUserScore.getCognitioPolyclinic();
String rulesEnrollProbability = null;
String probabilityOperator = null;
String majorType = null;//专业类别
String majorTypeChild = null;
String mainSubjects = null;
String nowBatch = activeCurrentUserScore.getBatch();
@ -67,6 +65,7 @@ public class MusicService {
BigDecimal yybysy = activeCurrentUserScore.getYybysy();//音乐表演声乐-分数
BigDecimal yybyqy = activeCurrentUserScore.getYybyqy();//音乐表演声乐-分数
BigDecimal yyjy = activeCurrentUserScore.getYyjy();//音乐表演声乐-分数
BigDecimal yyScore = yybysy.max(yybyqy).max(yyjy);
//=====================分数转换 start
if ("2024".equals(YxConstant.nowYear)) {
YxScoreSegment scoreSegment = null;
@ -100,15 +99,12 @@ public class MusicService {
zxcj = scoreSegment.getScore();
}
}
}
int index = 0;
if (CollectionUtils.isNotEmpty(recommendMajorList)) {
//遍历专业列表
for (RecommendMajorDTO recommendMajorDTO : recommendMajorList) {
rulesEnrollProbability = recommendMajorDTO.getRulesEnrollProbability();
//专业类别
//majorType = recommendMajorDTO.getMajorType();
//取出往年的分数信息, 算出 三年平均差值
historyMajorEnrollList = recommendMajorDTO.getHistoryMajorEnrollList();
probabilityOperator = recommendMajorDTO.getProbabilityOperator();

View File

@ -1,21 +1,24 @@
package org.jeecg.modules.yx.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.modules.art.dto.ArtRecommendMajorBaseDTO;
import org.jeecg.modules.art.dto.RecommendMajorDTO;
import org.jeecg.modules.art.vo.QueryRecommendMajorVO;
import org.jeecg.modules.yx.constant.YxConstant;
import org.jeecg.modules.yx.entity.YxCalculationMajor;
import org.jeecg.modules.yx.entity.YxHistoryMajorEnroll;
import org.jeecg.modules.yx.entity.YxHistoryScoreControlLine;
import org.jeecg.modules.yx.entity.YxUserScore;
import org.jeecg.modules.yx.entity.*;
import org.jeecg.modules.yx.mapper.YxCalculationMajorMapper;
import org.jeecg.modules.yx.mapper.YxHistoryMajorEnrollMapper;
import org.jeecg.modules.yx.mapper.YxSchoolMajorMapper;
import org.jeecg.modules.yx.service.IYxCalculationMajorService;
import org.jeecg.modules.yx.service.IYxHistoryScoreControlLineService;
import org.jeecg.modules.yx.service.IYxSchoolMajorService;
import org.jeecg.modules.yx.mapper.YxSchoolMapper;
import org.jeecg.modules.yx.service.*;
import org.jeecg.modules.yx.util.ScoreUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -41,6 +44,8 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
@Resource
private IYxHistoryScoreControlLineService yxHistoryScoreControlLineService;
@Resource
private IYxUserScoreService yxUserScoreService;
@Resource
private ZhuanService zhuanService;
@Resource
private MusicService musicService;
@ -52,267 +57,511 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
private WuDaoService wuDaoService;
@Resource
private BoYinService boYinService;
@Resource
private YxHistoryMajorEnrollMapper yxHistoryMajorEnrollMapper;
@Resource
private IYxHistoryMajorEnrollService yxHistoryMajorEnrollService;
@Resource
private YxSchoolMajorMapper yxSchoolMajorMapper;
@Resource
private YxSchoolMapper yxSchoolMapper;
@Resource
private RedisUtil redisUtil;
@Override
public void calculationMajor(YxUserScore userScore) {
public List<RecommendMajorDTO> calculationMajor(YxUserScore userScore) {
List<RecommendMajorDTO> recommendMajorDTOList = new ArrayList<>();
if (userScore != null) {
String batch = userScore.getBatch();
String professionalCategory = userScore.getProfessionalCategory();
String professionalCategoryChildren = userScore.getProfessionalCategoryChildren();
QueryRecommendMajorVO queryRecommendMajorVO = new QueryRecommendMajorVO();
queryRecommendMajorVO.setProfessionalCategory(professionalCategory);//专业类别
queryRecommendMajorVO.setCognitioPolyclinic(userScore.getCognitioPolyclinic());//文理分科
//有子级专业
if (StringUtils.isNotBlank(professionalCategoryChildren)) {
queryRecommendMajorVO.setPCategoryChildrenList(new ArrayList<>(Arrays.asList(professionalCategoryChildren.split(","))));
}
//查询专业
long startTime = new Date().getTime();
List<RecommendMajorDTO> recommendMajorDTOList = yxSchoolMajorMapper.recommendMajorList(queryRecommendMajorVO);
recommendMajorDTOList = yxSchoolMajorMapper.recommendMajorList(queryRecommendMajorVO);
//将历史录取信息合并到专业信息里
if (CollectionUtils.isNotEmpty(recommendMajorDTOList)) {
//获取上一年的招生人数
List<YxHistoryMajorEnroll> historyMajorEnrollList = null;
//获取历年的招生计划
LambdaQueryWrapper<YxHistoryMajorEnroll> hmeWrapper = new LambdaQueryWrapper<>();
Set<String> majorNameList = recommendMajorDTOList.stream().map(RecommendMajorDTO::getMajorName).collect(Collectors.toSet());
hmeWrapper.in(YxHistoryMajorEnroll::getYear, YxConstant.oldYearList);
hmeWrapper.eq(YxHistoryMajorEnroll::getCategory, queryRecommendMajorVO.getCognitioPolyclinic());//文科/理科
hmeWrapper.isNotNull(YxHistoryMajorEnroll::getRulesEnrollProbability);
hmeWrapper.in(YxHistoryMajorEnroll::getMajorName, majorNameList);
hmeWrapper.orderByDesc(YxHistoryMajorEnroll::getYear);
List<YxHistoryMajorEnroll> yxHistoryMajorEnrollList = yxHistoryMajorEnrollMapper.selectList(hmeWrapper);
//获取院校信息
String a_ = "_";
String key = null;
//将历年计划 组合成map对象
Map<String, YxHistoryMajorEnroll> majorEnrollMap = new LinkedHashMap<>();
for (YxHistoryMajorEnroll h : yxHistoryMajorEnrollList) {
key = h.getYear() + a_ + h.getSchoolCode() + a_ + h.getMajorName() + a_ + h.getCategory() + a_ + h.getBatch();
majorEnrollMap.put(key, h);
}
//遍历获取历年数据 添加到专业 的历年信息中
Map<String, YxHistoryMajorEnroll> yearMajorEnrollMap;
YxHistoryMajorEnroll yxHistoryMajorEnroll;
for (RecommendMajorDTO recommendMajorDTO : recommendMajorDTOList) {
historyMajorEnrollList = new ArrayList<>();
yearMajorEnrollMap = new LinkedHashMap<>();
//2022年
for (String year : YxConstant.oldYearList) {
key = recommendMajorDTO.getSchoolCode() + a_ + recommendMajorDTO.getMajorName() + a_ + recommendMajorDTO.getCategory() + a_ + recommendMajorDTO.getBatch();
yxHistoryMajorEnroll = majorEnrollMap.get(year + a_ + key);
if (yxHistoryMajorEnroll != null) {
yearMajorEnrollMap.put(yxHistoryMajorEnroll.getYear(), yxHistoryMajorEnroll);
historyMajorEnrollList.add(yxHistoryMajorEnroll);
}
}
recommendMajorDTO.setHistoryMajorEnrollMap(yearMajorEnrollMap);
recommendMajorDTO.setHistoryMajorEnrollList(historyMajorEnrollList);
}
}
checkEnrollProbability(recommendMajorDTOList, userScore);
//计算录取率
////计算录取概率
if ("高职高专".equals(queryRecommendMajorVO.getBatch())) {
zhuanService.zhuanRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else {
if (YxConstant.betaMajorTypeList.contains(professionalCategory)) {
//如果当前专业是(美术设计类,书法类,体育类)
//不需要换算为往年分数
betaRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else {
if ("音乐类".equals(professionalCategory)) {
//音乐类的
musicService.musicRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("表演类".equals(professionalCategory)) {
biaoyanService.biaoyanRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("舞蹈类".equals(professionalCategory)) {
wuDaoService.wudaoRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("播音与主持类".equals(professionalCategory)) {
boYinService.boYinRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
}
}
yxHistoryMajorEnrollService.recommendMajorDTOListSetHistoryInfo(recommendMajorDTOList);
this.checkEnrollProbability(recommendMajorDTOList, userScore);
}
long endTime = new Date().getTime();
log.warn("耗费时长:" + (endTime - startTime));
log.warn("测算专业录取率-耗费时长:" + (endTime - startTime));
//保存结果到用户的专业结果表
YxCalculationMajor yxCalculationMajor = null;
List<YxCalculationMajor> calculationMajorList = new ArrayList<>();
StringBuilder otherScoreLimitation = null;
for (RecommendMajorDTO recommendMajorDTO : recommendMajorDTOList) {
otherScoreLimitation = new StringBuilder();
yxCalculationMajor = new YxCalculationMajor();
BeanUtils.copyProperties(recommendMajorDTO, yxCalculationMajor);
yxCalculationMajor.setScoreId(userScore.getId());
yxCalculationMajor.setStudentOldConvertedScore(recommendMajorDTO.getStudentScore());
//其他分数要求
if(true){
//语文成绩
if (recommendMajorDTO.getChineseScoreLimitation()!=null && recommendMajorDTO.getChineseScoreLimitation().compareTo(YxConstant.bigDecimal0)>0) {
otherScoreLimitation.append("语文成绩不低于").append(recommendMajorDTO.getChineseScoreLimitation()).append("分,");
}
//外语成绩
if (recommendMajorDTO.getEnglishScoreLimitation()!=null && recommendMajorDTO.getEnglishScoreLimitation().compareTo(YxConstant.bigDecimal0)>0) {
otherScoreLimitation.append("外语成绩不低于").append(recommendMajorDTO.getEnglishScoreLimitation()).append("分,");
}
//文化成绩
if (recommendMajorDTO.getCulturalScoreLimitation()!=null && recommendMajorDTO.getCulturalScoreLimitation().compareTo(YxConstant.bigDecimal0)>0) {
otherScoreLimitation.append("文化成绩不低于").append(recommendMajorDTO.getCulturalScoreLimitation()).append("分,");
}
//专业成绩
if (recommendMajorDTO.getProfessionalScoreLimitation()!=null && recommendMajorDTO.getProfessionalScoreLimitation().compareTo(YxConstant.bigDecimal0)>0) {
otherScoreLimitation.append("语文成绩不低于").append(recommendMajorDTO.getProfessionalScoreLimitation()).append("分,");
}
if (otherScoreLimitation.length()>0) {
yxCalculationMajor.setOtherScoreLimitation(otherScoreLimitation.substring(0,otherScoreLimitation.length()-2));
}
}
calculationMajorList.add(yxCalculationMajor);
}
long saveStartTime = new Date().getTime();
super.saveBatch(calculationMajorList);
baseMapper.insertBatch(userScore.getCalculationTableName(),calculationMajorList);
//super.saveBatch(calculationMajorList,500);
long saveEndTime = new Date().getTime();
log.warn("插入数据耗费时长:" + (saveEndTime - saveStartTime));
}
return recommendMajorDTOList;
}
@Override
public ArtRecommendMajorBaseDTO recommendMajorPage(QueryRecommendMajorVO queryRecommendMajorVO) {
Integer pageNum = queryRecommendMajorVO.getPageNum();
Integer pageSize = queryRecommendMajorVO.getPageSize();
if (pageNum == null) {
pageNum = 1;
}
if (pageSize == null) {
pageSize = 5;
}
//获取当前分数
YxUserScore activeCurrentUserScore = null;
if (StringUtils.isNotBlank(queryRecommendMajorVO.getScoreId())) {
//是根据成绩单来的
activeCurrentUserScore = yxUserScoreService.findById(queryRecommendMajorVO.getScoreId());
} else {
//直接获取当前使用中的成绩单
activeCurrentUserScore = yxUserScoreService.getActiveCurrentUserScore();
}
queryRecommendMajorVO.setScoreId(activeCurrentUserScore.getId());
//文理分科
queryRecommendMajorVO.setCognitioPolyclinic(activeCurrentUserScore.getCognitioPolyclinic());
//专业类别
queryRecommendMajorVO.setProfessionalCategory(activeCurrentUserScore.getProfessionalCategory());
//有子级专业
if (StringUtils.isNotBlank(activeCurrentUserScore.getProfessionalCategoryChildren()) && !"高职高专".equals(queryRecommendMajorVO.getBatch())) {
queryRecommendMajorVO.setPCategoryChildrenList(new ArrayList<>(Arrays.asList(activeCurrentUserScore.getProfessionalCategoryChildren().split(","))));
if("表演类".equals(activeCurrentUserScore.getProfessionalCategory())){
queryRecommendMajorVO.getPCategoryChildrenList().add("兼报");
}
}
//标签类别
if (StringUtils.isNotBlank(queryRecommendMajorVO.getTagsStrs())) {
queryRecommendMajorVO.setTagsList(Arrays.asList(queryRecommendMajorVO.getTagsStrs().split(",")));
}
//院校类型
if (StringUtils.isNotBlank(queryRecommendMajorVO.getSchoolNatureStrs())) {
queryRecommendMajorVO.setSchoolNatureList(Arrays.asList(queryRecommendMajorVO.getSchoolNatureStrs().split(",")));
}
//院校地区
if (StringUtils.isNotBlank(queryRecommendMajorVO.getProvince())) {
queryRecommendMajorVO.setAddressList(Arrays.asList(queryRecommendMajorVO.getProvince().split(",")));
}
//获取推荐志愿信息service
List<RecommendMajorDTO> recommendMajorList = baseMapper.recommendMajorList(activeCurrentUserScore.getCalculationTableName(),queryRecommendMajorVO);
ArtRecommendMajorBaseDTO artRecommendMajorBaseDTO = this.checkLevelNum(recommendMajorList);
//当前选中的录取率页面
String paneName = queryRecommendMajorVO.getPaneName();
//判断 paneName
if (StringUtils.isNotBlank(paneName) && !paneName.equals("全部")) {
BigDecimal bigDecimal93 = new BigDecimal("93");
BigDecimal bigDecimal92 = new BigDecimal("92");
BigDecimal bigDecimal74 = new BigDecimal("74");
BigDecimal bigDecimal73 = new BigDecimal("73");
BigDecimal bigDecimal60 = new BigDecimal("60");
switch (paneName) {
case "可保底":
recommendMajorList = recommendMajorList.stream().filter(r -> r.getEnrollProbability().compareTo(bigDecimal93) >= 0).collect(Collectors.toList());
break;
case "较稳妥":
recommendMajorList = recommendMajorList.stream().filter(r -> r.getEnrollProbability().compareTo(bigDecimal92) < 0 && r.getEnrollProbability().compareTo(bigDecimal74) >= 0).collect(Collectors.toList());
break;
case "可冲击":
recommendMajorList = recommendMajorList.stream().filter(r -> r.getEnrollProbability().compareTo(bigDecimal73) < 0 && r.getEnrollProbability().compareTo(bigDecimal60) >= 0).collect(Collectors.toList());
break;
case "难录取":
recommendMajorList = recommendMajorList.stream().filter(r -> r.getEnrollProbability().compareTo(bigDecimal60) < 0).collect(Collectors.toList());
break;
}
}
//插入 院校标签
this.setSchoolTagsList(recommendMajorList);
List<RecommendMajorDTO> recommendMajorDTOList = recommendMajorList.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize)
.collect(Collectors.toList());
//包装历年信息
yxHistoryMajorEnrollService.recommendMajorDTOListSetHistoryInfo(recommendMajorDTOList);
//组装返回对象
int total = recommendMajorList.size();
IPage<RecommendMajorDTO> pageList = new Page<>();
pageList.setTotal(total);//总记录数
pageList.setCurrent(pageNum);
pageList.setSize(pageSize);
pageList.setRecords(recommendMajorDTOList);
artRecommendMajorBaseDTO.setPageList(pageList);
return artRecommendMajorBaseDTO;
}
@Override
public ArtRecommendMajorBaseDTO schoolOtherMajor(QueryRecommendMajorVO queryRecommendMajorVO) {
//获取当前分数
YxUserScore activeCurrentUserScore = null;
if (StringUtils.isNotBlank(queryRecommendMajorVO.getScoreId())) {
//是根据成绩单来的
activeCurrentUserScore = yxUserScoreService.findById(queryRecommendMajorVO.getScoreId());
} else {
//直接获取当前使用中的成绩单
activeCurrentUserScore = yxUserScoreService.getActiveCurrentUserScore();
}
queryRecommendMajorVO.setScoreId(activeCurrentUserScore.getId());
//文理分科
queryRecommendMajorVO.setCognitioPolyclinic(activeCurrentUserScore.getCognitioPolyclinic());
//专业类别
queryRecommendMajorVO.setProfessionalCategory(activeCurrentUserScore.getProfessionalCategory());
queryRecommendMajorVO.setScoreId(activeCurrentUserScore.getId());
//文理分科
queryRecommendMajorVO.setCognitioPolyclinic(activeCurrentUserScore.getCognitioPolyclinic());
//专业类别
queryRecommendMajorVO.setProfessionalCategory(activeCurrentUserScore.getProfessionalCategory());
//有子级专业
if (StringUtils.isNotBlank(activeCurrentUserScore.getProfessionalCategoryChildren()) && !"高职高专".equals(queryRecommendMajorVO.getBatch())) {
queryRecommendMajorVO.setPCategoryChildrenList(new ArrayList<>(Arrays.asList(activeCurrentUserScore.getProfessionalCategoryChildren().split(","))));
if("表演类".equals(activeCurrentUserScore.getProfessionalCategory())){
queryRecommendMajorVO.getPCategoryChildrenList().add("兼报");
}
}
//获取推荐志愿信息service
List<RecommendMajorDTO> recommendMajorList = baseMapper.recommendMajorList(activeCurrentUserScore.getCalculationTableName(),queryRecommendMajorVO);
yxHistoryMajorEnrollService.recommendMajorDTOListSetHistoryInfo(recommendMajorList);
ArtRecommendMajorBaseDTO artRecommendMajorBaseDTO = new ArtRecommendMajorBaseDTO();
artRecommendMajorBaseDTO.setList(recommendMajorList);
return artRecommendMajorBaseDTO;
}
@Override
public ArtRecommendMajorBaseDTO checkLevelNum(List<RecommendMajorDTO> recommendMajorList) {
int number = 0;
int kbd=0,jwt=0,kcj=0,nan=0;
double enrollProbabilityDouble = 0;
for (RecommendMajorDTO recommendMajorDTO : recommendMajorList) {
number++;
enrollProbabilityDouble = recommendMajorDTO.getEnrollProbability().doubleValue();
//保底
if (enrollProbabilityDouble >= 93) {
kbd++;
} else if (enrollProbabilityDouble < 92 && enrollProbabilityDouble >= 74) {
//较稳妥
jwt++;
} else if (enrollProbabilityDouble < 73 && enrollProbabilityDouble >= 60) {
//可冲击
kcj++;
} else {
//
nan++;
}
}
ArtRecommendMajorBaseDTO artRecommendMajorBaseDTO = new ArtRecommendMajorBaseDTO();
artRecommendMajorBaseDTO.setKcj(kcj);
artRecommendMajorBaseDTO.setJwt(jwt);
artRecommendMajorBaseDTO.setKbd(kbd);
artRecommendMajorBaseDTO.setNan(nan);
artRecommendMajorBaseDTO.setAllNumber(number);
return artRecommendMajorBaseDTO;
}
@Override
public String checkCalculationTableNameOfCreate(String calculationTableName) {
return null;
}
@Override
public ArtRecommendMajorBaseDTO aiAutoRecommendMajor(QueryRecommendMajorVO queryRecommendMajorVO) {
String batch = queryRecommendMajorVO.getBatch();
int pageNum = 1;
int pageSize = 12;
if ("提前批".equals(batch)) {
pageSize = 2;
}
YxUserScore activeCurrentUserScore = null;
if (StringUtils.isNotBlank(queryRecommendMajorVO.getScoreId())) {
activeCurrentUserScore = yxUserScoreService.findById(queryRecommendMajorVO.getScoreId());
} else {
activeCurrentUserScore = yxUserScoreService.getActiveCurrentUserScore();
}
String cognitioPolyclinic = activeCurrentUserScore.getCognitioPolyclinic();
String professionalCategory = activeCurrentUserScore.getProfessionalCategory();//专业类别
queryRecommendMajorVO.setProfessionalCategory(professionalCategory);
queryRecommendMajorVO.setCognitioPolyclinic(cognitioPolyclinic);
//有子级专业
if (StringUtils.isNotBlank(activeCurrentUserScore.getProfessionalCategoryChildren()) && !"高职高专".equals(queryRecommendMajorVO.getBatch())) {
queryRecommendMajorVO.setPCategoryChildrenList(new ArrayList<>(Arrays.asList(activeCurrentUserScore.getProfessionalCategoryChildren().split(","))));
if("表演类".equals(activeCurrentUserScore.getProfessionalCategory())){
queryRecommendMajorVO.getPCategoryChildrenList().add("兼报");
}
}
if (StringUtils.isNotBlank(queryRecommendMajorVO.getMajorCode())) {
queryRecommendMajorVO.setMajorCodeList(Arrays.asList(queryRecommendMajorVO.getMajorCode().split(",")));
}
if (StringUtils.isNotBlank(queryRecommendMajorVO.getSchoolNatureStrs())) {
queryRecommendMajorVO.setSchoolNatureList(Arrays.asList(queryRecommendMajorVO.getSchoolNatureStrs().split(",")));
}
if (StringUtils.isNotBlank(queryRecommendMajorVO.getProvince())) {
queryRecommendMajorVO.setAddressList(Arrays.asList(queryRecommendMajorVO.getProvince().split(",")));
}
queryRecommendMajorVO.setScoreId(activeCurrentUserScore.getId());
List<RecommendMajorDTO> recommendMajorList = baseMapper.recommendMajorList(activeCurrentUserScore.getCalculationTableName(),queryRecommendMajorVO);
yxHistoryMajorEnrollService.recommendMajorDTOListSetHistoryInfo(recommendMajorList);
//插入 院校标签
this.setSchoolTagsList(recommendMajorList);
int total = recommendMajorList.size();
List<RecommendMajorDTO> recommendMajorDTOList = recommendMajorList.stream().skip(0).limit(pageSize).collect(Collectors.toList());
ArtRecommendMajorBaseDTO artRecommendMajorBaseDTO = new ArtRecommendMajorBaseDTO();
IPage<RecommendMajorDTO> pageList = new Page<>();
pageList.setTotal(total);//总记录数
pageList.setCurrent(pageNum);
pageList.setSize(pageSize);
pageList.setRecords(recommendMajorDTOList);
artRecommendMajorBaseDTO.setPageList(pageList);
return artRecommendMajorBaseDTO;
}
@Override
public void copyNew(String oldScoreId, String newScoreId, String oldCalculationMajorTableName, String newCalculationMajorTableName) {
LambdaQueryWrapper<YxCalculationMajor> yxCalculationMajorLambdaQueryWrapper = new LambdaQueryWrapper<>();
yxCalculationMajorLambdaQueryWrapper.eq(YxCalculationMajor::getScoreId,oldScoreId);
List<YxCalculationMajor> list = this.list(yxCalculationMajorLambdaQueryWrapper);
for (YxCalculationMajor yxCalculationMajor : list) {
yxCalculationMajor.setId(null);
yxCalculationMajor.setScoreId(newScoreId);
}
baseMapper.insertBatch(newCalculationMajorTableName,list);
}
private void setSchoolTagsList(List<RecommendMajorDTO> recommendMajorList) {
if (CollectionUtils.isNotEmpty(recommendMajorList)) {
Set<String> schoolIdSet = recommendMajorList.stream().map(RecommendMajorDTO::getSchoolId).collect(Collectors.toSet());
List<YxSchool> schoolList = yxSchoolMapper.selectBatchIds(schoolIdSet);
if (CollectionUtils.isNotEmpty(schoolList)) {
Map<String, YxSchool> yxSchoolMap = schoolList.stream().collect(Collectors.toMap(YxSchool::getId, s -> s));
YxSchool school = null;
Set<String> tagsList;
for (RecommendMajorDTO recommendMajorDTO : recommendMajorList) {
school = yxSchoolMap.get(recommendMajorDTO.getSchoolId());
if (school == null) {
continue;
}
tagsList = new HashSet<>();
if (org.apache.commons.lang3.StringUtils.isNotBlank(school.getSchoolType())) {
tagsList.add(school.getSchoolType());//学校层次
}
if (org.apache.commons.lang3.StringUtils.isNotBlank(school.getSchoolNature())) {
tagsList.add(school.getSchoolNature());//办学性质
}
if (org.apache.commons.lang3.StringUtils.isNotBlank(school.getInstitutionType())) {
String[] split = school.getInstitutionType().split(" ");
for (String s : split) {
tagsList.add(s + "");//院校类型
}
}
//判断 是否是 985,211
if (1 == school.getIs211()) {
tagsList.add("211");
}
if (1 == school.getIs985()) {
tagsList.add("985");
}
if ("双一流".equals(school.getSfsyl())) {
tagsList.add("双一流");
}
if (org.apache.commons.lang3.StringUtils.isNotBlank(school.getGzsz())) {
tagsList.add(school.getGzsz());
}
recommendMajorDTO.setTagsList(tagsList);
}
}
}
}
/**
* 统一测算录取率方法
*
* @param recommendMajorDTOList
* @param userScore
*/
private void checkEnrollProbability(List<RecommendMajorDTO> recommendMajorDTOList, YxUserScore userScore) {
String professionalCategory = null;
for (RecommendMajorDTO recommendMajorDTO : recommendMajorDTOList) {
professionalCategory = recommendMajorDTO.getMajorType();
if ("高职高专".equals(recommendMajorDTO.getBatch())) {
zhuanService.calculateEnrollProbability(recommendMajorDTO,userScore);
} else {
//判断 专业类别
if (YxConstant.betaMajorTypeList.contains(professionalCategory)) {
//如果当前专业是(美术设计类,书法类,体育类)
//不需要换算为往年分数
betaRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("音乐类".equals(professionalCategory)) {
//音乐类的
musicService.musicRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("表演类".equals(professionalCategory)) {
biaoyanService.biaoyanRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("舞蹈类".equals(professionalCategory)) {
wuDaoService.wudaoRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("播音与主持类".equals(professionalCategory)) {
boYinService.boYinRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
}
}
String professionalCategory = userScore.getProfessionalCategory();
if ("表演类".equals(professionalCategory)) {
biaoyanService.biaoyanRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("音乐类".equals(professionalCategory)) {
//音乐类的
musicService.musicRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("舞蹈类".equals(professionalCategory)) {
wuDaoService.wudaoRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("播音与主持类".equals(professionalCategory)) {
boYinService.boYinRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else {
betaRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
}
//zhuanService.zhuanRecommendMajorListSetEnrollProbability(recommendMajorDTOList,userScore);
/*if ("高职高专".equals(batch)) {
} else {
//判断 专业类别
if (YxConstant.betaMajorTypeList.contains(professionalCategory)) {
//如果当前专业是(美术设计类,书法类,体育类)
//不需要换算为往年分数
betaRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("音乐类".equals(professionalCategory)) {
//音乐类的
musicService.musicRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("表演类".equals(professionalCategory)) {
biaoyanService.biaoyanRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("舞蹈类".equals(professionalCategory)) {
wuDaoService.wudaoRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
} else if ("播音与主持类".equals(professionalCategory)) {
boYinService.boYinRecommendMajorListSetEnrollProbability(recommendMajorDTOList, userScore);
}
}*/
}
/**
* 美术与设计类书法类体育类 按这个走 获取录取率
*/
private void betaRecommendMajorListSetEnrollProbability(List<RecommendMajorDTO> recommendMajorList, YxUserScore activeCurrentUserScore) {
try {
long startTime = new Date().getTime();
//专业类别
String professionalCategory = activeCurrentUserScore.getProfessionalCategory();
String cognitioPolyclinic = activeCurrentUserScore.getCognitioPolyclinic();
String rulesEnrollProbability = null;
String probabilityOperator = null;
String majorType = null;//专业类别
String majorTypeChild = null;//专业类别子项
String mainSubjects = null;//主考科目
String nowBatch = activeCurrentUserScore.getBatch();
BigDecimal studentScore = null;//学生折合分
BigDecimal culturalScore = activeCurrentUserScore.getCulturalScore();//学生的文化分
BigDecimal professionalScore = activeCurrentUserScore.getProfessionalScore();//学生的专业分
BigDecimal professionalScore2 = null;
BigDecimal nowYearDiff = null;//当前年分差
YxHistoryScoreControlLine yxHistoryScoreControlLine = yxHistoryScoreControlLineService.getByProfessionalCategoryOfYear(Integer.parseInt(YxConstant.historyControlLineYear), professionalCategory, activeCurrentUserScore.getCognitioPolyclinic(), activeCurrentUserScore.getBatch());
BigDecimal culturalControlLine = yxHistoryScoreControlLine.getCulturalScore();//文化分省控线
BigDecimal specialControlLine = yxHistoryScoreControlLine.getSpecialScore();//专业分省控线
BigDecimal nowYearProvincialControlLine = null;//当前年省控线
BigDecimal historyThreeYearDiff = null;//近三年平均差值
BigDecimal enrollProbability = null;//录取率
Map<String, Object> differenceMap = null;
List<YxHistoryMajorEnroll> historyMajorEnrollList = null;//历年录取信息
int index = 0;
if (CollectionUtils.isNotEmpty(recommendMajorList)) {
//遍历专业列表
for (RecommendMajorDTO recommendMajorDTO : recommendMajorList) {
rulesEnrollProbability = recommendMajorDTO.getRulesEnrollProbability();
//专业类别
//majorType = recommendMajorDTO.getMajorType();
//取出往年的分数信息, 算出 三年平均差值
historyMajorEnrollList = recommendMajorDTO.getHistoryMajorEnrollList();
probabilityOperator = recommendMajorDTO.getProbabilityOperator();
//没有计算方式 跳过
if (StringUtils.isBlank(rulesEnrollProbability)) {
continue;
}
//没有往年录取分数线信息
if (CollectionUtils.isEmpty(historyMajorEnrollList) || !(ScoreUtil.hasComputeEnrollProbabilityPermissions(nowBatch, recommendMajorDTO.getBatch()))) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
//不是体育类的专业如果是文过专排并且没有录取计算运算符时文过专排是文*0+*1,专过文排是文*1+*0
if ("文过专排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) {
probabilityOperator = "文*0+专*1";
} else if ("专过文排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) {
probabilityOperator = "文*1+专*0";
}
if (StringUtils.isBlank(probabilityOperator)) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
//判断其他录取要求
if (!ScoreUtil.otherScoreJudge(professionalScore, activeCurrentUserScore, recommendMajorDTO)) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
//判断录取方式分数是否过省控线
if (!ScoreUtil.crossingControlLine(rulesEnrollProbability, culturalScore, professionalScore, culturalControlLine, specialControlLine)) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
studentScore = ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), activeCurrentUserScore.getProfessionalScore(), recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
recommendMajorDTO.setStudentConvertedScore(studentScore);
recommendMajorDTO.setStudentScore(studentScore);
//录取方式计算
if ("文过专排主科".equals(rulesEnrollProbability)) {
if (CollectionUtils.isEmpty(historyMajorEnrollList)) {
/**
* 美术与设计类书法类体育类 按这个走 获取录取率
*/
private void betaRecommendMajorListSetEnrollProbability(List<RecommendMajorDTO> recommendMajorList, YxUserScore activeCurrentUserScore) {
try {
long startTime = new Date().getTime();
//专业类别
String professionalCategory = activeCurrentUserScore.getProfessionalCategory();
String rulesEnrollProbability = null;
String probabilityOperator = null;
String nowBatch = activeCurrentUserScore.getBatch();
BigDecimal studentScore = null;//学生折合分
BigDecimal culturalScore = activeCurrentUserScore.getCulturalScore();//学生的文化分
BigDecimal professionalScore = activeCurrentUserScore.getProfessionalScore();//学生的专业分
BigDecimal professionalScore2 = null;
BigDecimal nowYearDiff = null;//当前年分差
Map<String, YxHistoryScoreControlLine> historyScoreControlLineMap = yxHistoryScoreControlLineService.mapsBatchByProfessionalCategoryOfYear(Integer.parseInt(YxConstant.historyControlLineYear), professionalCategory, activeCurrentUserScore.getCognitioPolyclinic());
BigDecimal culturalControlLine = null;//文化分省控线
BigDecimal specialControlLine = null;//专业分省控线
BigDecimal nowYearProvincialControlLine = null;//当前年省控线
BigDecimal historyThreeYearDiff = null;//近三年平均差值
BigDecimal enrollProbability = null;//录取率
Map<String, Object> differenceMap = null;
List<YxHistoryMajorEnroll> historyMajorEnrollList = null;//历年录取信息
int index = 0;
if (CollectionUtils.isNotEmpty(recommendMajorList)) {
//遍历专业列表
for (RecommendMajorDTO recommendMajorDTO : recommendMajorList) {
rulesEnrollProbability = recommendMajorDTO.getRulesEnrollProbability();
//取出往年的分数信息, 算出 三年平均差值
historyMajorEnrollList = recommendMajorDTO.getHistoryMajorEnrollList();
probabilityOperator = recommendMajorDTO.getProbabilityOperator();
culturalControlLine = historyScoreControlLineMap.get(recommendMajorDTO.getBatch()).getCulturalScore();
specialControlLine = historyScoreControlLineMap.get(recommendMajorDTO.getBatch()).getSpecialScore();
//没有计算方式 跳过
if (StringUtils.isBlank(rulesEnrollProbability)) {
continue;
}
//没有往年录取分数线信息
if (CollectionUtils.isEmpty(historyMajorEnrollList) || ! (ScoreUtil.hasComputeEnrollProbabilityPermissions(nowBatch, recommendMajorDTO.getBatch()))) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
} else {
YxHistoryMajorEnroll yxHistoryMajorEnroll = historyMajorEnrollList.get(0);
BigDecimal admissionLine = yxHistoryMajorEnroll.getAdmissionLine();
enrollProbability = studentScore.multiply(admissionLine).multiply(YxConstant.bigDecimal075);
if (studentScore.compareTo(admissionLine) < 0) {
//如果当前主项成绩<近一年的录取分数录取概率*0.5
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal05);
}
}
} else {
nowYearProvincialControlLine = ScoreUtil.covertIntoControlLine(rulesEnrollProbability, culturalControlLine, specialControlLine, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
if (nowYearProvincialControlLine == null) {
continue;
}
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList);
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
//historyThreeYearDiff = sum.divide(new BigDecimal(size), 4, RoundingMode.HALF_UP);
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
if (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0) {
continue;
}
enrollProbability = nowYearDiff.divide(historyThreeYearDiff, 4, RoundingMode.HALF_UP).multiply(YxConstant.bigDecimal100);
}
//录取率*0.75
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal075);
if (enrollProbability.compareTo(YxConstant.bigDecimal150) > 0) {
enrollProbability = YxConstant.bigDecimal95x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal100) > 0) {
enrollProbability = YxConstant.bigDecimal85x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal0) <= 0) {
enrollProbability = YxConstant.bigDecimal0;
//不是体育类的专业如果是文过专排并且没有录取计算运算符时文过专排是文*0+*1,专过文排是文*1+*0
if ("文过专排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) {
probabilityOperator = "文*0+专*1";
} else if ("专过文排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) {
probabilityOperator = "文*1+专*0";
}
if (StringUtils.isBlank(probabilityOperator)) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
//判断其他录取要求
if(!ScoreUtil.otherScoreJudge(professionalScore,activeCurrentUserScore,recommendMajorDTO)){
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
//判断录取方式分数是否过省控线
if (!ScoreUtil.crossingControlLine(rulesEnrollProbability, culturalScore, professionalScore, culturalControlLine, specialControlLine)) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
}
studentScore = ScoreUtil.convertIntoScore(rulesEnrollProbability, activeCurrentUserScore.getCulturalScore(), activeCurrentUserScore.getProfessionalScore(), recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
recommendMajorDTO.setStudentConvertedScore(studentScore);
recommendMajorDTO.setStudentScore(studentScore);
//录取方式计算
if (rulesEnrollProbability.equals("文过专排主科")) {
if (CollectionUtils.isEmpty(historyMajorEnrollList)) {
recommendMajorDTO.setEnrollProbability(YxConstant.bigDecimal0);
continue;
} else {
YxHistoryMajorEnroll yxHistoryMajorEnroll = historyMajorEnrollList.get(0);
BigDecimal admissionLine = yxHistoryMajorEnroll.getAdmissionLine();
enrollProbability = studentScore.multiply(admissionLine).multiply(YxConstant.bigDecimal075);
if (studentScore.compareTo(admissionLine) < 0) {
//如果当前主项成绩<近一年的录取分数录取概率*0.5
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal05);
}
}
} else {
nowYearProvincialControlLine = ScoreUtil.covertIntoControlLine(rulesEnrollProbability, culturalControlLine, specialControlLine, recommendMajorDTO.getFirstLevelDiscipline(), probabilityOperator);
if (nowYearProvincialControlLine == null) {
continue;
}
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList);
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
//historyThreeYearDiff = sum.divide(new BigDecimal(size), 4, RoundingMode.HALF_UP);
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
if (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0) {
continue;
}
enrollProbability = nowYearDiff.divide(historyThreeYearDiff, 4, RoundingMode.HALF_UP).multiply(YxConstant.bigDecimal100);
}
//录取率*0.75
enrollProbability = enrollProbability.multiply(YxConstant.bigDecimal075);
if (enrollProbability.compareTo(YxConstant.bigDecimal150) > 0) {
enrollProbability = YxConstant.bigDecimal95x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal100) > 0) {
enrollProbability = YxConstant.bigDecimal85x;
} else if (enrollProbability.compareTo(YxConstant.bigDecimal0) <= 0) {
enrollProbability = YxConstant.bigDecimal0;
}
recommendMajorDTO.setEnrollProbability(enrollProbability);
recommendMajorDTO.setRulesEnrollProbability(ScoreUtil.replaceLastZeroChar(rulesEnrollProbability));
recommendMajorDTO.setProbabilityOperator(ScoreUtil.replaceLastZeroChar(probabilityOperator));
//==============================================
}
recommendMajorDTO.setEnrollProbability(enrollProbability);
recommendMajorDTO.setRulesEnrollProbability(ScoreUtil.replaceLastZeroChar(rulesEnrollProbability));
recommendMajorDTO.setProbabilityOperator(ScoreUtil.replaceLastZeroChar(probabilityOperator));
//==============================================
}
long endTime = new Date().getTime();
log.warn("用时:"+(endTime-startTime)+"毫秒");
} catch (Exception e) {
e.printStackTrace();
}
long endTime = new Date().getTime();
log.warn("用时:" + (endTime - startTime) + "毫秒");
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -1,7 +1,12 @@
package org.jeecg.modules.yx.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.jeecg.modules.art.dto.ArtRecommendMajorBaseDTO;
import org.jeecg.modules.art.dto.RecommendMajorDTO;
import org.jeecg.modules.yx.constant.YxConstant;
import org.jeecg.modules.yx.dto.VolunteerRecordDTO;
import org.jeecg.modules.yx.entity.YxHistoryMajorEnroll;
import org.jeecg.modules.yx.mapper.YxHistoryMajorEnrollMapper;
import org.jeecg.modules.yx.service.IYxHistoryMajorEnrollService;
@ -9,9 +14,8 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: 历年录取数据表
@ -53,4 +57,103 @@ public class YxHistoryMajorEnrollServiceImpl extends ServiceImpl<YxHistoryMajorE
}
return dataMaps;
}
@Override
public void recommendMajorDTOListSetHistoryInfo(List<RecommendMajorDTO> recommendMajorDtoList){
if (CollectionUtils.isNotEmpty(recommendMajorDtoList)) {
String majorType = recommendMajorDtoList.get(0).getMajorType();
String category = recommendMajorDtoList.get(0).getCategory();
Set<String> majorNameSet = recommendMajorDtoList.stream().map(RecommendMajorDTO::getMajorName).collect(Collectors.toSet());
Set<String> schoolCodeSet = recommendMajorDtoList.stream().map(RecommendMajorDTO::getSchoolCode).collect(Collectors.toSet());
//获取历年的招生计划
LambdaQueryWrapper<YxHistoryMajorEnroll> hmeWrapper = new LambdaQueryWrapper<>();
hmeWrapper.in(YxHistoryMajorEnroll::getYear, YxConstant.oldYearList);
hmeWrapper.in(YxHistoryMajorEnroll::getMajorName, majorNameSet);
hmeWrapper.in(YxHistoryMajorEnroll::getSchoolCode,schoolCodeSet);
hmeWrapper.eq(YxHistoryMajorEnroll::getCategory, category);//文科/理科
hmeWrapper.eq(YxHistoryMajorEnroll::getMajorType,majorType);
hmeWrapper.ne(YxHistoryMajorEnroll::getAdmissionLine,0);
hmeWrapper.isNotNull(YxHistoryMajorEnroll::getRulesEnrollProbability);
hmeWrapper.orderByDesc(YxHistoryMajorEnroll::getYear);
List<YxHistoryMajorEnroll> yxHistoryMajorEnrollList = this.list(hmeWrapper);
//获取院校信息
String a_ = "_";
String key = null;
//将历年计划 组合成map对象
Map<String, YxHistoryMajorEnroll> majorEnrollMap = new LinkedHashMap<>();
for (YxHistoryMajorEnroll h : yxHistoryMajorEnrollList) {
key = h.getYear() + a_ + h.getSchoolCode() + a_ + h.getMajorName() + a_ + h.getCategory() + a_ + h.getBatch();
majorEnrollMap.put(key, h);
}
//遍历获取历年数据 添加到专业 的历年信息中
Map<String, YxHistoryMajorEnroll> yearMajorEnrollMap;
YxHistoryMajorEnroll yxHistoryMajorEnroll;
List<YxHistoryMajorEnroll> historyMajorEnrollList=null;
for (RecommendMajorDTO recommendMajorDTO : recommendMajorDtoList) {
historyMajorEnrollList = new ArrayList<>();
yearMajorEnrollMap = new LinkedHashMap<>();
//2022年
for (String year : YxConstant.oldYearList) {
key = recommendMajorDTO.getSchoolCode() + a_ + recommendMajorDTO.getMajorName() + a_ + recommendMajorDTO.getCategory() + a_ + recommendMajorDTO.getBatch();
yxHistoryMajorEnroll = majorEnrollMap.get(year + a_ + key);
if (yxHistoryMajorEnroll != null) {
yearMajorEnrollMap.put(yxHistoryMajorEnroll.getYear(), yxHistoryMajorEnroll);
historyMajorEnrollList.add(yxHistoryMajorEnroll);
}
}
recommendMajorDTO.setHistoryMajorEnrollMap(yearMajorEnrollMap);
recommendMajorDTO.setHistoryMajorEnrollList(historyMajorEnrollList);
}
}
}
@Override
public void volunteerRecordDTOListSetHistoryInfo(List<VolunteerRecordDTO> recordDtoList) {
if (CollectionUtils.isNotEmpty(recordDtoList)) {
String majorType = recordDtoList.get(0).getMajorType();
String category = recordDtoList.get(0).getCategory();
Set<String> majorNameSet = recordDtoList.stream().map(RecommendMajorDTO::getMajorName).collect(Collectors.toSet());
Set<String> schoolCodeSet = recordDtoList.stream().map(RecommendMajorDTO::getSchoolCode).collect(Collectors.toSet());
//获取历年的招生计划
LambdaQueryWrapper<YxHistoryMajorEnroll> hmeWrapper = new LambdaQueryWrapper<>();
hmeWrapper.in(YxHistoryMajorEnroll::getYear, YxConstant.oldYearList);
hmeWrapper.in(YxHistoryMajorEnroll::getMajorName, majorNameSet);
hmeWrapper.in(YxHistoryMajorEnroll::getSchoolCode,schoolCodeSet);
hmeWrapper.eq(YxHistoryMajorEnroll::getCategory, category);//文科/理科
hmeWrapper.eq(YxHistoryMajorEnroll::getMajorType,majorType);
hmeWrapper.ne(YxHistoryMajorEnroll::getAdmissionLine,0);
hmeWrapper.isNotNull(YxHistoryMajorEnroll::getRulesEnrollProbability);
hmeWrapper.orderByDesc(YxHistoryMajorEnroll::getYear);
List<YxHistoryMajorEnroll> yxHistoryMajorEnrollList = this.list(hmeWrapper);
//获取院校信息
String a_ = "_";
String key = null;
//将历年计划 组合成map对象
Map<String, YxHistoryMajorEnroll> majorEnrollMap = new LinkedHashMap<>();
for (YxHistoryMajorEnroll h : yxHistoryMajorEnrollList) {
key = h.getYear() + a_ + h.getSchoolCode() + a_ + h.getMajorName() + a_ + h.getCategory() + a_ + h.getBatch();
majorEnrollMap.put(key, h);
}
//遍历获取历年数据 添加到专业 的历年信息中
Map<String, YxHistoryMajorEnroll> yearMajorEnrollMap;
YxHistoryMajorEnroll yxHistoryMajorEnroll;
List<YxHistoryMajorEnroll> historyMajorEnrollList=null;
for (VolunteerRecordDTO recommendMajorDTO : recordDtoList) {
historyMajorEnrollList = new ArrayList<>();
yearMajorEnrollMap = new LinkedHashMap<>();
//2022年
for (String year : YxConstant.oldYearList) {
key = recommendMajorDTO.getSchoolCode() + a_ + recommendMajorDTO.getMajorName() + a_ + recommendMajorDTO.getCategory() + a_ + recommendMajorDTO.getBatch();
yxHistoryMajorEnroll = majorEnrollMap.get(year + a_ + key);
if (yxHistoryMajorEnroll != null) {
yearMajorEnrollMap.put(yxHistoryMajorEnroll.getYear(), yxHistoryMajorEnroll);
historyMajorEnrollList.add(yxHistoryMajorEnroll);
}
}
recommendMajorDTO.setHistoryMajorEnrollMap(yearMajorEnrollMap);
recommendMajorDTO.setHistoryMajorEnrollList(historyMajorEnrollList);
}
}
}
}

View File

@ -175,7 +175,6 @@ public class YxSchoolMajorServiceImpl extends ServiceImpl<YxSchoolMajorMapper, Y
historyMajorEnrollList.add(yxHistoryMajorEnroll);
}
}
recommendMajorDTO.setHistoryMajorEnrollMap(yearMajorEnrollMap);
recommendMajorDTO.setHistoryMajorEnrollList(historyMajorEnrollList);
@ -264,22 +263,26 @@ public class YxSchoolMajorServiceImpl extends ServiceImpl<YxSchoolMajorMapper, Y
String paneName = queryRecommendMajorVO.getPaneName();
////计算录取概率
if (YxConstant.betaMajorTypeList.contains(professionalCategory)) {
if ("音乐类".equals(professionalCategory)) {
//音乐类的
musicService.musicRecommendMajorListSetEnrollProbability(recommendMajorList, activeCurrentUserScore);
} else if ("表演类".equals(professionalCategory)) {
biaoyanService.biaoyanRecommendMajorListSetEnrollProbability(recommendMajorList, activeCurrentUserScore);
} else if ("舞蹈类".equals(professionalCategory)) {
wuDaoService.wudaoRecommendMajorListSetEnrollProbability(recommendMajorList, activeCurrentUserScore);
} else if ("播音与主持类".equals(professionalCategory)) {
boYinService.boYinRecommendMajorListSetEnrollProbability(recommendMajorList, activeCurrentUserScore);
}else{
//如果当前专业是(美术设计类,书法类,体育类)
betaRecommendMajorListSetEnrollProbability(recommendMajorList, activeCurrentUserScore);
}
/*if (YxConstant.betaMajorTypeList.contains(professionalCategory)) {
//如果当前专业是(美术设计类,书法类,体育类)
//不需要换算为往年分数
betaRecommendMajorListSetEnrollProbability(recommendMajorList, activeCurrentUserScore);
} else {
if ("音乐类".equals(professionalCategory)) {
//音乐类的
musicService.musicRecommendMajorListSetEnrollProbability(recommendMajorList, activeCurrentUserScore);
} else if ("表演类".equals(professionalCategory)) {
biaoyanService.biaoyanRecommendMajorListSetEnrollProbability(recommendMajorList, activeCurrentUserScore);
} else if ("舞蹈类".equals(professionalCategory)) {
wuDaoService.wudaoRecommendMajorListSetEnrollProbability(recommendMajorList, activeCurrentUserScore);
} else if ("播音与主持类".equals(professionalCategory)) {
boYinService.boYinRecommendMajorListSetEnrollProbability(recommendMajorList, activeCurrentUserScore);
}
}
}*/
/*if ("高职高专".equals(queryRecommendMajorVO.getBatch())) {
zhuanService.zhuanRecommendMajorListSetEnrollProbability(recommendMajorList, activeCurrentUserScore);

View File

@ -1,6 +1,7 @@
package org.jeecg.modules.yx.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.shiro.SecurityUtils;
@ -130,4 +131,24 @@ public class YxUserScoreServiceImpl extends ServiceImpl<YxUserScoreMapper, YxUse
//创建一个志愿
}
@Override
public void closeStatus(String id) {
LambdaUpdateWrapper<YxUserScore> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(YxUserScore::getId,id);
lambdaUpdateWrapper.set(YxUserScore::getState,"0");
this.update(lambdaUpdateWrapper);
}
@Override
public YxUserScore copyById(String id) {
YxUserScore userScore = getById(id);
if (userScore==null) {
return null;
}
userScore.setId(null);
userScore.setState("1");
this.save(userScore);
return userScore;
}
}

View File

@ -45,6 +45,11 @@ public class YxVolunteerRecordServiceImpl extends ServiceImpl<YxVolunteerRecordM
return baseMapper.listDTOByVolunteerId(volunteerId);
}
@Override
public List<VolunteerRecordDTO> listDTOByVolunteerId(String scoreId,String calculationTableName, String volunteerId) {
return baseMapper.listDTOByVolunteerId2(scoreId,calculationTableName,volunteerId);
}
@Override
public boolean artVolunteerSave(SaveVolunteerVO saveVolunteerVO) {
YxVolunteerRecord yxVolunteerRecord=new YxVolunteerRecord();
@ -55,7 +60,7 @@ public class YxVolunteerRecordServiceImpl extends ServiceImpl<YxVolunteerRecordM
String enrollmentCode = yxVolunteerRecord.getEnrollmentCode();//招生代码
Integer indexs = yxVolunteerRecord.getIndexs();
//获取专业的批次 (根据学校代码+专业代码+招生代码)
LambdaQueryWrapper<YxSchoolMajor> smQueryWrapper = new LambdaQueryWrapper<YxSchoolMajor>();
LambdaQueryWrapper<YxSchoolMajor> smQueryWrapper = new LambdaQueryWrapper<>();
smQueryWrapper.eq(YxSchoolMajor::getSchoolCode, schoolCode);
smQueryWrapper.eq(YxSchoolMajor::getMajorCode, majorCode);
smQueryWrapper.eq(YxSchoolMajor::getEnrollmentCode,enrollmentCode);

View File

@ -45,6 +45,8 @@ public class YxVolunteerServiceImpl extends ServiceImpl<YxVolunteerMapper, YxVol
@Resource
private IYxUserScoreService yxUserScoreService;
@Resource
private IYxCalculationMajorService yxCalculationMajorService;
@Resource
private IYxVolunteerRecordService yxVolunteerRecordService;
@Resource
private IYxHistoryMajorEnrollService yxHistoryMajorEnrollService;
@ -73,8 +75,7 @@ public class YxVolunteerServiceImpl extends ServiceImpl<YxVolunteerMapper, YxVol
BigDecimal culturalScore = userScore.getCulturalScore();//文化成绩
BigDecimal professionalScore = userScore.getProfessionalScore();//专业成绩
//获取已填报的志愿单
List<VolunteerRecordDTO> recordDTOList = yxVolunteerRecordService.listDTOByVolunteerId(volunteer.getId());
List<VolunteerRecordDTO> recordDTOList = yxVolunteerRecordService.listDTOByVolunteerId(userScore.getId(),userScore.getCalculationTableName(),volunteer.getId());
//临时变量
String schoolCode;
String majorName;
@ -156,49 +157,9 @@ public class YxVolunteerServiceImpl extends ServiceImpl<YxVolunteerMapper, YxVol
volunteerDTO.setUserScoreInfo(userScore);
String cognitioPolyclinic = userScore.getCognitioPolyclinic();
//获取已填报的志愿单
List<VolunteerRecordDTO> recordDTOList = yxVolunteerRecordService.listDTOByVolunteerId(volunteer.getId());
List<VolunteerRecordDTO> recordDTOList = yxVolunteerRecordService.listDTOByVolunteerId(userScore.getId(),userScore.getCalculationTableName(),volunteer.getId());
//获取上一年的招生人数
List<YxHistoryMajorEnroll> historyMajorEnrollList = null;
//获取历年的招生计划
LambdaQueryWrapper<YxHistoryMajorEnroll> hmeWrapper = new LambdaQueryWrapper<>();
Set<String> majorNameList = recordDTOList.stream().map(VolunteerRecordDTO::getMajorName).collect(Collectors.toSet());
Set<String> schoolCodeList = recordDTOList.stream().map(VolunteerRecordDTO::getSchoolCode).collect(Collectors.toSet());
if (CollectionUtils.isNotEmpty(majorNameList)) {
hmeWrapper.in(YxHistoryMajorEnroll::getYear, YxConstant.oldYearList);
hmeWrapper.eq(YxHistoryMajorEnroll::getCategory, cognitioPolyclinic);//文科/理科
hmeWrapper.in(YxHistoryMajorEnroll::getMajorName, majorNameList);
hmeWrapper.in(YxHistoryMajorEnroll::getSchoolCode, schoolCodeList);
hmeWrapper.orderByDesc(YxHistoryMajorEnroll::getYear);
List<YxHistoryMajorEnroll> yxHistoryMajorEnrollList = yxHistoryMajorEnrollService.list(hmeWrapper);
//将历年计划 组合成map对象
String a_ = "_";
String key = null;
Map<String, YxHistoryMajorEnroll> majorEnrollMap = new LinkedHashMap<>();
for (YxHistoryMajorEnroll h : yxHistoryMajorEnrollList) {
key = h.getYear() + a_ + h.getSchoolCode() + a_ + h.getMajorName() + a_ + h.getCategory() + a_ + h.getBatch();
majorEnrollMap.put(key, h);
}
//遍历获取历年数据 添加到专业 的历年信息中
Map<String, YxHistoryMajorEnroll> yearMajorEnrollMap;
YxHistoryMajorEnroll yxHistoryMajorEnroll;
for (RecommendMajorDTO recommendMajorDTO : recordDTOList) {
historyMajorEnrollList = new ArrayList<>();
yearMajorEnrollMap = new LinkedHashMap<>();
key = recommendMajorDTO.getSchoolCode() + a_ + recommendMajorDTO.getMajorName() + a_ + recommendMajorDTO.getCategory() + a_ + recommendMajorDTO.getBatch();
//2022~2020年
for (String year : historyYearList) {
yxHistoryMajorEnroll = majorEnrollMap.get(year + a_ + key);
if (yxHistoryMajorEnroll != null) {
yearMajorEnrollMap.put(yxHistoryMajorEnroll.getYear(), yxHistoryMajorEnroll);
historyMajorEnrollList.add(yxHistoryMajorEnroll);
}
}
recommendMajorDTO.setHistoryMajorEnrollMap(yearMajorEnrollMap);
recommendMajorDTO.setHistoryMajorEnrollList(historyMajorEnrollList);
}
}
//计算录取概率
//YxSchoolMajorServiceImpl.volunteerRecordListSetEnrollProbability(recordDTOList, userScore);
yxHistoryMajorEnrollService.volunteerRecordDTOListSetHistoryInfo(recordDTOList);
//填报志愿明细信息-提前批
List<VolunteerRecordDTO> volunteerRecordEarlyAdmissionList = recordDTOList.stream().filter(r -> r.getBatch().equals("提前批")).collect(Collectors.toList());
//填报志愿明细信息-本科A段
@ -375,7 +336,6 @@ public class YxVolunteerServiceImpl extends ServiceImpl<YxVolunteerMapper, YxVol
@Override
public String saveAs(SaveVolunteerVO saveVolunteerVO) {
List<SaveVolunteerRecordVO> volunteerRecordList = saveVolunteerVO.getVolunteerRecordList();
//先保存一个志愿单
String volunteerName = saveVolunteerVO.getVolunteerName();
long count = count(new LambdaQueryWrapper<YxVolunteer>().eq(YxVolunteer::getVolunteerName, volunteerName).eq(YxVolunteer::getCreateBy, saveVolunteerVO.getCreateBy()));
@ -383,14 +343,25 @@ public class YxVolunteerServiceImpl extends ServiceImpl<YxVolunteerMapper, YxVol
throw new JeecgBootException("志愿单名称已存在!请更换");
}
AssertUtils.notNull(volunteerName, "请输入志愿单名称");
String scoreId = saveVolunteerVO.getScoreId();
//将之前的成绩单状态改为0再复制一份新的成绩单
yxUserScoreService.closeStatus(saveVolunteerVO.getScoreId());
YxUserScore newUserScore = yxUserScoreService.copyById(saveVolunteerVO.getScoreId());
String scoreId = newUserScore.getId();
//复制新的专业结果
yxCalculationMajorService.copyNew(saveVolunteerVO.getScoreId(),scoreId, YxConstant.oldCalculationMajorName,YxConstant.newCalculationMajorName);
//将之前的志愿单状态改为0
LambdaUpdateWrapper<YxVolunteer> yxVolunteerLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
yxVolunteerLambdaUpdateWrapper.eq(YxVolunteer::getScoreId,saveVolunteerVO.getScoreId());
yxVolunteerLambdaUpdateWrapper.set(YxVolunteer::getState,"0");
this.update(yxVolunteerLambdaUpdateWrapper);
//创建新的志愿单
YxVolunteer yxVolunteer = new YxVolunteer();
yxVolunteer.setVolunteerName(volunteerName);
yxVolunteer.setScoreId(scoreId);
yxVolunteer.setState("1");
yxVolunteer.setCreateType("2");//类型 自动生成
yxVolunteer.setCreateBy(saveVolunteerVO.getCreateBy());
save(yxVolunteer);
this.save(yxVolunteer);
String volunteerId = yxVolunteer.getId();
int tqpIndex = 0, bkaIndex = 0, bkbIndex = 0, bkIndex = 0, gzgzIndex = 0;
List<YxVolunteerRecord> yxVolunteerRecordList = new ArrayList<>();
@ -415,19 +386,9 @@ public class YxVolunteerServiceImpl extends ServiceImpl<YxVolunteerMapper, YxVol
gzgzIndex++;
yxVolunteerRecord.setIndexs(gzgzIndex);
}
/*yxVolunteerRecord.setBatch(v.getBatch());
yxVolunteerRecord.setVolunteerId(volunteerId);
yxVolunteerRecord.setCategory(saveVolunteerVO.getCategory());*/
yxVolunteerRecordList.add(yxVolunteerRecord);
}
yxVolunteerRecordService.saveBatch(yxVolunteerRecordList);
//获取各批次的明细
//List<SaveVolunteerRecordVO> tqpList = volunteerRecordList.stream().filter(v -> "提前批".equals(v.getBatch())).collect(Collectors.toList());
//List<SaveVolunteerRecordVO> bkaList = volunteerRecordList.stream().filter(v -> "本科A段".equals(v.getBatch())).collect(Collectors.toList());
//List<SaveVolunteerRecordVO> bkbList = volunteerRecordList.stream().filter(v -> "本科B段".equals(v.getBatch())).collect(Collectors.toList());
//List<SaveVolunteerRecordVO> bkList = volunteerRecordList.stream().filter(v -> "本科".equals(v.getBatch())).collect(Collectors.toList());
//List<SaveVolunteerRecordVO> gzgzList = volunteerRecordList.stream().filter(v -> "高职高专".equals(v.getBatch())).collect(Collectors.toList());
return volunteerId;
}
}

View File

@ -1,14 +1,10 @@
package org.jeecg.modules.yx.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.jeecg.modules.art.dto.RecommendMajorDTO;
import org.jeecg.modules.yx.constant.YxConstant;
import org.jeecg.modules.yx.dto.ScoreBatchDTO;
import org.jeecg.modules.yx.entity.YxHistoryMajorEnroll;
import org.jeecg.modules.yx.entity.YxHistoryScoreBatch;
import org.jeecg.modules.yx.entity.YxHistoryScoreControlLine;
import org.jeecg.modules.yx.entity.YxUserScore;
@ -473,19 +469,19 @@ public class ScoreUtil {
public static boolean otherScoreJudge(BigDecimal professionalScore, YxUserScore activeCurrentUserScore, RecommendMajorDTO recommendMajorDTO) {
if (recommendMajorDTO!=null) {
//语文成绩判断
if (recommendMajorDTO.getChineseScoreLimitation()!=null && activeCurrentUserScore.getChineseScore().compareTo(recommendMajorDTO.getChineseScoreLimitation())<0) {
if (recommendMajorDTO.getChineseScoreLimitation()!=null && (activeCurrentUserScore.getChineseScore()==null || activeCurrentUserScore.getChineseScore().compareTo(recommendMajorDTO.getChineseScoreLimitation())<0)) {
return false;
}
//外语成绩判断
if (recommendMajorDTO.getEnglishScoreLimitation()!=null && activeCurrentUserScore.getEnglishScore().compareTo(recommendMajorDTO.getEnglishScoreLimitation())<0) {
if (recommendMajorDTO.getEnglishScoreLimitation()!=null && (activeCurrentUserScore.getEnglishScore()==null ||activeCurrentUserScore.getEnglishScore().compareTo(recommendMajorDTO.getEnglishScoreLimitation())<0)) {
return false;
}
//文化成绩判断
if (recommendMajorDTO.getCulturalScoreLimitation()!=null && activeCurrentUserScore.getCulturalScore().compareTo(recommendMajorDTO.getCulturalScoreLimitation())<0) {
if (recommendMajorDTO.getCulturalScoreLimitation()!=null && (activeCurrentUserScore.getCulturalScore()==null || activeCurrentUserScore.getCulturalScore().compareTo(recommendMajorDTO.getCulturalScoreLimitation())<0)) {
return false;
}
//统考成绩判断
if (recommendMajorDTO.getProfessionalScoreLimitation()!=null && activeCurrentUserScore.getProfessionalScore().compareTo(recommendMajorDTO.getProfessionalScoreLimitation())<0) {
if (recommendMajorDTO.getProfessionalScoreLimitation()!=null && (activeCurrentUserScore.getProfessionalScore()==null ||activeCurrentUserScore.getProfessionalScore().compareTo(recommendMajorDTO.getProfessionalScoreLimitation())<0)) {
return false;
}
}