diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtRecommendMajorController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtRecommendMajorController.java index 1db446b..728d2e7 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtRecommendMajorController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/controller/ArtRecommendMajorController.java @@ -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 dataList = new ArrayList<>(); Map data = null; diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtRecommendMajorBaseDTO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtRecommendMajorBaseDTO.java index e91b7c6..ad9eeb9 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtRecommendMajorBaseDTO.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/ArtRecommendMajorBaseDTO.java @@ -28,14 +28,4 @@ public class ArtRecommendMajorBaseDTO implements Serializable { public ArtRecommendMajorBaseDTO() { } - - public ArtRecommendMajorBaseDTO(IPage pageList,boolean vipFlag) { - this.pageList = pageList; - this.isVip = vipFlag?1:0; - } - - public ArtRecommendMajorBaseDTO(List list,boolean vipFlag) { - this.list = list; - this.isVip = vipFlag?1:0; - } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/RecommendMajorDTO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/RecommendMajorDTO.java index 59e9475..374c3d8 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/RecommendMajorDTO.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/art/dto/RecommendMajorDTO.java @@ -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 = "学院名称") diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniMajorController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniMajorController.java index 6644b43..934860c 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniMajorController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniMajorController.java @@ -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") diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/constant/YxConstant.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/constant/YxConstant.java index d2ac8ed..f7e0373 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/constant/YxConstant.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/constant/YxConstant.java @@ -35,8 +35,8 @@ public class YxConstant { public static List 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 defaultRulesEnrollProbabilityList =Arrays.asList("文过专排","专过文排"); + public static List 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"; } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxMajorController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxMajorController.java index b270b6b..0c8616d 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxMajorController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxMajorController.java @@ -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; diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreController.java index a8ed78b..50d9760 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxScoreController.java @@ -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 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 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 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 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 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); } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/ScoreBatchDTO.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/ScoreBatchDTO.java deleted file mode 100644 index 8e70a7c..0000000 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/ScoreBatchDTO.java +++ /dev/null @@ -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; -} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/UserScoreDto.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/UserScoreDto.java new file mode 100644 index 0000000..8ac48e3 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/dto/UserScoreDto.java @@ -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; +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxCalculationMajor.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxCalculationMajor.java index f6a4957..a8c2a74 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxCalculationMajor.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxCalculationMajor.java @@ -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=""; } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxUserScore.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxUserScore.java index 6e2fd67..5b2bc31 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxUserScore.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/entity/YxUserScore.java @@ -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) diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/YxCalculationMajorMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/YxCalculationMajorMapper.java index e04ec96..d7e93ef 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/YxCalculationMajorMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/YxCalculationMajorMapper.java @@ -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 { + List recommendMajorList(@Param(value = "tableName")String tableName,@Param("queryvo") QueryRecommendMajorVO queryRecommendMajorVO); + void insertBatch(@Param("tableName") String tableName,@Param("list") List list); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/YxVolunteerRecordMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/YxVolunteerRecordMapper.java index 3b38cd0..dd095f8 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/YxVolunteerRecordMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/YxVolunteerRecordMapper.java @@ -18,4 +18,6 @@ public interface YxVolunteerRecordMapper extends BaseMapper { List getListByCreateBy(@Param("yxVolunteerRecord") YxVolunteerRecord yxVolunteerRecord); List listDTOByVolunteerId(@Param("volunteerId") String volunteerId); + + List listDTOByVolunteerId2(@Param("scoreId")String scoreId, @Param("calutionTableName") String calculationTableName, @Param("volunteerId") String volunteerId); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxCalculationMajorMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxCalculationMajorMapper.xml index 31488a7..9086a20 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxCalculationMajorMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxCalculationMajorMapper.xml @@ -1,5 +1,172 @@ + + 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 + + ( + #{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} + ) + + - \ No newline at end of file + + diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxSchoolMajorMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxSchoolMajorMapper.xml index 7b370c4..4f2bd50 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxSchoolMajorMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxSchoolMajorMapper.xml @@ -152,11 +152,11 @@ - /*院校类型*/ + AND s.institution_type= #{queryvo.institutionType} - /*办学性质*/ + AND s.school_nature= #{queryvo.schoolNature} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxVolunteerRecordMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxVolunteerRecordMapper.xml index cf936dd..8d031b9 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxVolunteerRecordMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/mapper/xml/YxVolunteerRecordMapper.xml @@ -13,7 +13,6 @@ - + + diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxCalculationMajorService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxCalculationMajorService.java index d716e1a..ca10270 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxCalculationMajorService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxCalculationMajorService.java @@ -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 { - void calculationMajor(YxUserScore userScore); + List calculationMajor(YxUserScore userScore); + + /** + * 获取推荐专业 + * @param queryRecommendMajorVO + * @return + */ + ArtRecommendMajorBaseDTO recommendMajorPage(QueryRecommendMajorVO queryRecommendMajorVO); + + /** + * 获取院校其他专业 + * @param queryRecommendMajorVO + * @return + */ + ArtRecommendMajorBaseDTO schoolOtherMajor(QueryRecommendMajorVO queryRecommendMajorVO); + + /** + * 从专业列表中折合出难,保,稳,冲的数量 + * @param calculationMajorList + * @return + */ + ArtRecommendMajorBaseDTO checkLevelNum(List 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); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxHistoryMajorEnrollService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxHistoryMajorEnrollService.java index 3170d49..5a19d96 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxHistoryMajorEnrollService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxHistoryMajorEnrollService.java @@ -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 */ Map getDataGroupBySchoolCodeAndMaxYear(List schoolCodeList); + + /** + * 给推荐专业列表写入历年分数信息 + * @param recommendMajorDtoList 推荐专业列表 + */ + void recommendMajorDTOListSetHistoryInfo(List recommendMajorDtoList); + + /** + * 给志愿单中的专业写入历年分数信息 + */ + void volunteerRecordDTOListSetHistoryInfo(List recordDtoList); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxUserScoreService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxUserScoreService.java index 5c1198a..e6fdc43 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxUserScoreService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxUserScoreService.java @@ -35,4 +35,16 @@ public interface IYxUserScoreService extends IService { * @param id */ void setDefaultScore(String id); + + /** + * 关闭状态 + * @param id + */ + void closeStatus(String id); + + /** + * 根据id复制 + * @param id + */ + YxUserScore copyById(String id); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxVolunteerRecordService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxVolunteerRecordService.java index 4729b5b..437929a 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxVolunteerRecordService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxVolunteerRecordService.java @@ -23,6 +23,8 @@ public interface IYxVolunteerRecordService extends IService { List listDTOByVolunteerId(String volunteerId); + List listDTOByVolunteerId(String scoreId,String calculationTableName, String volunteerId); + boolean artVolunteerSave(SaveVolunteerVO saveVolunteerVO); List getListByCreateBy(YxVolunteerRecord yxVolunteerRecord); @@ -31,4 +33,6 @@ public interface IYxVolunteerRecordService extends IService { * 根据volunteerId删除 */ boolean deleteByVolunteerId(String volunteerId); + + } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxVolunteerService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxVolunteerService.java index 1b8c0c4..f298dea 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxVolunteerService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/IYxVolunteerService.java @@ -49,4 +49,5 @@ public interface IYxVolunteerService extends IService { * 志愿单 另存 */ String saveAs(SaveVolunteerVO saveVolunteerVO); + } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/BiaoyanService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/BiaoyanService.java index 1362684..e20f67d 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/BiaoyanService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/BiaoyanService.java @@ -61,7 +61,7 @@ public class BiaoyanService { BigDecimal enrollProbability = null;//录取率 Map differenceMap = null; List 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();//戏剧影视表演-分数 diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/MusicService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/MusicService.java index 2e40b42..8d8a468 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/MusicService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/MusicService.java @@ -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(); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxCalculationMajorServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxCalculationMajorServiceImpl.java index 496ce77..3da84b9 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxCalculationMajorServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxCalculationMajorServiceImpl.java @@ -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 calculationMajor(YxUserScore userScore) { + List 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 recommendMajorDTOList = yxSchoolMajorMapper.recommendMajorList(queryRecommendMajorVO); + recommendMajorDTOList = yxSchoolMajorMapper.recommendMajorList(queryRecommendMajorVO); //将历史录取信息合并到专业信息里 if (CollectionUtils.isNotEmpty(recommendMajorDTOList)) { - //获取上一年的招生人数 - List historyMajorEnrollList = null; - //获取历年的招生计划 - LambdaQueryWrapper hmeWrapper = new LambdaQueryWrapper<>(); - Set 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 yxHistoryMajorEnrollList = yxHistoryMajorEnrollMapper.selectList(hmeWrapper); - //获取院校信息 - String a_ = "_"; - String key = null; - //将历年计划 组合成map对象 - Map 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 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 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 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 recommendMajorDTOList = recommendMajorList.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize) + .collect(Collectors.toList()); + //包装历年信息 + yxHistoryMajorEnrollService.recommendMajorDTOListSetHistoryInfo(recommendMajorDTOList); + //组装返回对象 + int total = recommendMajorList.size(); + IPage 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 recommendMajorList = baseMapper.recommendMajorList(activeCurrentUserScore.getCalculationTableName(),queryRecommendMajorVO); + yxHistoryMajorEnrollService.recommendMajorDTOListSetHistoryInfo(recommendMajorList); + ArtRecommendMajorBaseDTO artRecommendMajorBaseDTO = new ArtRecommendMajorBaseDTO(); + artRecommendMajorBaseDTO.setList(recommendMajorList); + return artRecommendMajorBaseDTO; + } + + @Override + public ArtRecommendMajorBaseDTO checkLevelNum(List 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 recommendMajorList = baseMapper.recommendMajorList(activeCurrentUserScore.getCalculationTableName(),queryRecommendMajorVO); + + yxHistoryMajorEnrollService.recommendMajorDTOListSetHistoryInfo(recommendMajorList); + + //插入 院校标签 + this.setSchoolTagsList(recommendMajorList); + int total = recommendMajorList.size(); + List recommendMajorDTOList = recommendMajorList.stream().skip(0).limit(pageSize).collect(Collectors.toList()); + ArtRecommendMajorBaseDTO artRecommendMajorBaseDTO = new ArtRecommendMajorBaseDTO(); + IPage 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 yxCalculationMajorLambdaQueryWrapper = new LambdaQueryWrapper<>(); + yxCalculationMajorLambdaQueryWrapper.eq(YxCalculationMajor::getScoreId,oldScoreId); + List list = this.list(yxCalculationMajorLambdaQueryWrapper); + for (YxCalculationMajor yxCalculationMajor : list) { + yxCalculationMajor.setId(null); + yxCalculationMajor.setScoreId(newScoreId); + } + baseMapper.insertBatch(newCalculationMajorTableName,list); + } + + private void setSchoolTagsList(List recommendMajorList) { + if (CollectionUtils.isNotEmpty(recommendMajorList)) { + Set schoolIdSet = recommendMajorList.stream().map(RecommendMajorDTO::getSchoolId).collect(Collectors.toSet()); + List schoolList = yxSchoolMapper.selectBatchIds(schoolIdSet); + if (CollectionUtils.isNotEmpty(schoolList)) { + Map yxSchoolMap = schoolList.stream().collect(Collectors.toMap(YxSchool::getId, s -> s)); + YxSchool school = null; + Set 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 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 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 differenceMap = null; - List 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 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 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 differenceMap = null; + List 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(); } } -} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxHistoryMajorEnrollServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxHistoryMajorEnrollServiceImpl.java index 3c99460..52cdb3d 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxHistoryMajorEnrollServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxHistoryMajorEnrollServiceImpl.java @@ -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 recommendMajorDtoList){ + if (CollectionUtils.isNotEmpty(recommendMajorDtoList)) { + String majorType = recommendMajorDtoList.get(0).getMajorType(); + String category = recommendMajorDtoList.get(0).getCategory(); + Set majorNameSet = recommendMajorDtoList.stream().map(RecommendMajorDTO::getMajorName).collect(Collectors.toSet()); + Set schoolCodeSet = recommendMajorDtoList.stream().map(RecommendMajorDTO::getSchoolCode).collect(Collectors.toSet()); + //获取历年的招生计划 + LambdaQueryWrapper 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 yxHistoryMajorEnrollList = this.list(hmeWrapper); + //获取院校信息 + String a_ = "_"; + String key = null; + //将历年计划 组合成map对象 + Map 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 yearMajorEnrollMap; + YxHistoryMajorEnroll yxHistoryMajorEnroll; + List 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 recordDtoList) { + if (CollectionUtils.isNotEmpty(recordDtoList)) { + String majorType = recordDtoList.get(0).getMajorType(); + String category = recordDtoList.get(0).getCategory(); + Set majorNameSet = recordDtoList.stream().map(RecommendMajorDTO::getMajorName).collect(Collectors.toSet()); + Set schoolCodeSet = recordDtoList.stream().map(RecommendMajorDTO::getSchoolCode).collect(Collectors.toSet()); + //获取历年的招生计划 + LambdaQueryWrapper 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 yxHistoryMajorEnrollList = this.list(hmeWrapper); + //获取院校信息 + String a_ = "_"; + String key = null; + //将历年计划 组合成map对象 + Map 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 yearMajorEnrollMap; + YxHistoryMajorEnroll yxHistoryMajorEnroll; + List 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); + } + } + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxSchoolMajorServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxSchoolMajorServiceImpl.java index 166549f..a68786d 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxSchoolMajorServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxSchoolMajorServiceImpl.java @@ -175,7 +175,6 @@ public class YxSchoolMajorServiceImpl extends ServiceImpl 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; + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxVolunteerRecordServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxVolunteerRecordServiceImpl.java index 4759db0..e81f9b7 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxVolunteerRecordServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxVolunteerRecordServiceImpl.java @@ -45,6 +45,11 @@ public class YxVolunteerRecordServiceImpl extends ServiceImpl 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 smQueryWrapper = new LambdaQueryWrapper(); + LambdaQueryWrapper smQueryWrapper = new LambdaQueryWrapper<>(); smQueryWrapper.eq(YxSchoolMajor::getSchoolCode, schoolCode); smQueryWrapper.eq(YxSchoolMajor::getMajorCode, majorCode); smQueryWrapper.eq(YxSchoolMajor::getEnrollmentCode,enrollmentCode); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxVolunteerServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxVolunteerServiceImpl.java index df44c6a..8563d4c 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxVolunteerServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/service/impl/YxVolunteerServiceImpl.java @@ -45,6 +45,8 @@ public class YxVolunteerServiceImpl extends ServiceImpl recordDTOList = yxVolunteerRecordService.listDTOByVolunteerId(volunteer.getId()); - + List recordDTOList = yxVolunteerRecordService.listDTOByVolunteerId(userScore.getId(),userScore.getCalculationTableName(),volunteer.getId()); //临时变量 String schoolCode; String majorName; @@ -156,49 +157,9 @@ public class YxVolunteerServiceImpl extends ServiceImpl recordDTOList = yxVolunteerRecordService.listDTOByVolunteerId(volunteer.getId()); + List recordDTOList = yxVolunteerRecordService.listDTOByVolunteerId(userScore.getId(),userScore.getCalculationTableName(),volunteer.getId()); //获取上一年的招生人数 - List historyMajorEnrollList = null; - //获取历年的招生计划 - LambdaQueryWrapper hmeWrapper = new LambdaQueryWrapper<>(); - Set majorNameList = recordDTOList.stream().map(VolunteerRecordDTO::getMajorName).collect(Collectors.toSet()); - Set 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 yxHistoryMajorEnrollList = yxHistoryMajorEnrollService.list(hmeWrapper); - //将历年计划 组合成map对象 - String a_ = "_"; - String key = null; - Map 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 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 volunteerRecordEarlyAdmissionList = recordDTOList.stream().filter(r -> r.getBatch().equals("提前批")).collect(Collectors.toList()); //填报志愿明细信息-本科A段 @@ -375,7 +336,6 @@ public class YxVolunteerServiceImpl extends ServiceImpl volunteerRecordList = saveVolunteerVO.getVolunteerRecordList(); - //先保存一个志愿单 String volunteerName = saveVolunteerVO.getVolunteerName(); long count = count(new LambdaQueryWrapper().eq(YxVolunteer::getVolunteerName, volunteerName).eq(YxVolunteer::getCreateBy, saveVolunteerVO.getCreateBy())); @@ -383,14 +343,25 @@ public class YxVolunteerServiceImpl extends ServiceImpl 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 yxVolunteerRecordList = new ArrayList<>(); @@ -415,19 +386,9 @@ public class YxVolunteerServiceImpl extends ServiceImpl tqpList = volunteerRecordList.stream().filter(v -> "提前批".equals(v.getBatch())).collect(Collectors.toList()); - //List bkaList = volunteerRecordList.stream().filter(v -> "本科A段".equals(v.getBatch())).collect(Collectors.toList()); - //List bkbList = volunteerRecordList.stream().filter(v -> "本科B段".equals(v.getBatch())).collect(Collectors.toList()); - //List bkList = volunteerRecordList.stream().filter(v -> "本科".equals(v.getBatch())).collect(Collectors.toList()); - //List gzgzList = volunteerRecordList.stream().filter(v -> "高职高专".equals(v.getBatch())).collect(Collectors.toList()); - return volunteerId; } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/util/ScoreUtil.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/util/ScoreUtil.java index b54510b..15dacef 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/util/ScoreUtil.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/util/ScoreUtil.java @@ -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; } }