This commit is contained in:
zhouwentao 2025-05-12 21:53:12 +08:00
parent db764c0356
commit e2d4005c4d
10 changed files with 155 additions and 15 deletions

View File

@ -4,12 +4,18 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.util.AssertUtils; import org.jeecg.common.util.AssertUtils;
import org.jeecg.modules.yx.entity.YxHistoryMajorEnroll;
import org.jeecg.modules.yx.entity.YxSchoolMajor;
import org.jeecg.modules.yx.entity.YxSportsScore; import org.jeecg.modules.yx.entity.YxSportsScore;
import org.jeecg.modules.yx.service.IYxHistoryMajorEnrollService;
import org.jeecg.modules.yx.service.IYxSchoolMajorService;
import org.jeecg.modules.yx.service.IYxSportsScoreService; import org.jeecg.modules.yx.service.IYxSportsScoreService;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -30,6 +36,10 @@ import java.util.List;
public class StaticDataController { public class StaticDataController {
@Resource @Resource
private IYxSportsScoreService yxSportsScoreService; private IYxSportsScoreService yxSportsScoreService;
@Resource
private IYxSchoolMajorService yxSchoolMajorService;
@Resource
private IYxHistoryMajorEnrollService yxHistoryMajorEnrollService;
@RequestMapping(value = "/getJson",method = RequestMethod.POST) @RequestMapping(value = "/getJson",method = RequestMethod.POST)
public Result<?> getJson(@RequestBody JSONObject params, HttpServletRequest request){ public Result<?> getJson(@RequestBody JSONObject params, HttpServletRequest request){
@ -105,4 +115,126 @@ public class StaticDataController {
jsonObject.set("zhuanZhiYuanNum", 64); jsonObject.set("zhuanZhiYuanNum", 64);
return jsonObject; return jsonObject;
} }
@RequestMapping("test")
public Result<?> test() {
LambdaQueryWrapper<YxSchoolMajor> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.groupBy(YxSchoolMajor::getProbabilityOperator);
queryWrapper.select(YxSchoolMajor::getProbabilityOperator);
List<YxSchoolMajor> list = yxSchoolMajorService.list(queryWrapper);
int i1 = 0;
for (YxSchoolMajor major : list) {
i1++;
// System.out.println(i1);
if(i1 == 61){
// System.out.println("1");
}
if (major != null && StringUtils.isNotBlank(major.getProbabilityOperator()) && !major.getProbabilityOperator().equals("") && major.getProbabilityOperator().contains("+")) {
// 1. "+" 分割字符串
String[] parts = major.getProbabilityOperator().split("\\+");
// 2. 处理每个部分去除末尾的 0
for (int i = 0; i < parts.length; i++) {
if (parts[i].contains("*")) {
String[] subParts = parts[i].split("\\*");
if (subParts.length == 2) {
// 3. 去除小数末尾的 0
subParts[1] = subParts[1].replaceAll("0+$", ""); // 去掉末尾的 0
subParts[1] = subParts[1].endsWith(".") ? subParts[1] + "0" : subParts[1]; // 避免变成 "0." -> "0.0"
parts[i] = subParts[0] + "*" + subParts[1]; // 重新拼接
}
}
}
// 4. 重新组合成完整字符串
major.setProbabilityOperator(String.join("+", parts));
System.out.println(major.getProbabilityOperator());
}
}
return Result.OK();
}
@RequestMapping("test2")
public Result<?> test2() {
LambdaQueryWrapper<YxHistoryMajorEnroll> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.groupBy(YxHistoryMajorEnroll::getProbabilityOperator);
queryWrapper.select(YxHistoryMajorEnroll::getProbabilityOperator);
List<YxHistoryMajorEnroll> list = yxHistoryMajorEnrollService.list(queryWrapper);
int i1 = 0;
String old = "";
String newd = "";
for (YxHistoryMajorEnroll major : list) {
i1++;
// System.out.println(i1);
if(i1 == 61){
// System.out.println("1");
}
if (major != null && StringUtils.isNotBlank(major.getProbabilityOperator()) && !major.getProbabilityOperator().equals("") && major.getProbabilityOperator().contains("+")) {
old = major.getProbabilityOperator();
// 1. "+" 分割字符串
String[] parts = major.getProbabilityOperator().split("\\+");
// 2. 处理每个部分去除末尾的 0
for (int i = 0; i < parts.length; i++) {
if (parts[i].contains("*")) {
String[] subParts = parts[i].split("\\*");
if (subParts.length == 2) {
// 3. 去除小数末尾的 0
subParts[1] = subParts[1].replaceAll("0+$", ""); // 去掉末尾的 0
subParts[1] = subParts[1].endsWith(".") ? subParts[1] + "0" : subParts[1]; // 避免变成 "0." -> "0.0"
parts[i] = subParts[0] + "*" + subParts[1]; // 重新拼接
}
}
}
// 4. 重新组合成完整字符串
major.setProbabilityOperator(String.join("+", parts));
System.out.println(major.getProbabilityOperator());
newd = major.getProbabilityOperator();
// 修改
LambdaUpdateWrapper<YxHistoryMajorEnroll> updateWrapper = new LambdaUpdateWrapper();
updateWrapper.set(YxHistoryMajorEnroll::getProbabilityOperator, newd);
updateWrapper.eq(YxHistoryMajorEnroll::getProbabilityOperator, old);
yxHistoryMajorEnrollService.update(updateWrapper);
}
}
return Result.OK();
}
@RequestMapping("test3")
public Result<?> test3() {
LambdaQueryWrapper<YxSchoolMajor> queryWrapper = new LambdaQueryWrapper<>();
List<YxSchoolMajor> schoolMajorList = yxSchoolMajorService.list(queryWrapper);
LambdaQueryWrapper<YxHistoryMajorEnroll> hmel = new LambdaQueryWrapper<>();
List<YxHistoryMajorEnroll> hmelList = null;
List<YxSchoolMajor> newList = new ArrayList<>();
for (YxSchoolMajor yxSchoolMajor : schoolMajorList) {
hmel.clear();
hmel.eq(YxHistoryMajorEnroll::getSchoolCode,yxSchoolMajor.getSchoolCode());
hmel.eq(YxHistoryMajorEnroll::getMajorName,yxSchoolMajor.getMajorName());
hmel.eq(YxHistoryMajorEnroll::getCategory,yxSchoolMajor.getCategory());
hmel.eq(YxHistoryMajorEnroll::getBatch,yxSchoolMajor.getBatch());
hmel.eq(YxHistoryMajorEnroll::getMajorType,yxSchoolMajor.getMajorType());
hmel.eq(YxHistoryMajorEnroll::getYear, "2024");
hmelList = yxHistoryMajorEnrollService.list(hmel);
if (CollectionUtils.isNotEmpty(hmelList)) {
// 判断是否一致
if (StringUtils.isNotBlank(yxSchoolMajor.getProbabilityOperator()) && !yxSchoolMajor.getProbabilityOperator().equals(hmelList.get(0).getProbabilityOperator())) {
// 不一致
yxSchoolMajor.setProbabilityOperator(hmelList.get(0).getProbabilityOperator());
yxSchoolMajor.setPrivateProbabilityOperator(hmelList.get(0).getProbabilityOperator());
yxSchoolMajor.setRulesEnrollProbability(hmelList.get(0).getRulesEnrollProbability());
yxSchoolMajor.setRulesEnrollProbabilitySx(hmelList.get(0).getRulesEnrollProbability());
yxSchoolMajor.setPrivateRulesEnrollProbability(hmelList.get(0).getRulesEnrollProbability());
newList.add(yxSchoolMajor);
}
}
}
yxSchoolMajorService.updateBatchById(newList, 500);
return Result.OK();
}
} }

View File

@ -239,7 +239,7 @@ public class BiaoyanService {
continue; continue;
} }
//历年分差 //历年分差
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList); differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, historyMajorEnrollList);
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference"); historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
//当前年线差 //当前年线差
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine); nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);

View File

@ -167,7 +167,7 @@ public class BoYinService {
continue; continue;
} }
//历年分差 //历年分差
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList); differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, historyMajorEnrollList);
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference"); historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
//当前年线差 //当前年线差
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine); nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);

View File

@ -291,7 +291,7 @@ public class MusicService {
continue; continue;
} }
//历年分差 //历年分差
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList); differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, historyMajorEnrollList);
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference"); historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
//当前年线差 //当前年线差
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine); nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);

View File

@ -185,7 +185,7 @@ public class WuDaoService {
continue; continue;
} }
//历年分差 //历年分差
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList); differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, historyMajorEnrollList);
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference"); historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
//当前年线差 //当前年线差
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine); nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);

View File

@ -494,6 +494,7 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
* 美术与设计类书法类体育类 按这个走 获取录取率 * 美术与设计类书法类体育类 按这个走 获取录取率
*/ */
private void betaRecommendMajorListSetEnrollProbability(List<RecommendMajorDTO> recommendMajorList, YxUserScore activeCurrentUserScore) { private void betaRecommendMajorListSetEnrollProbability(List<RecommendMajorDTO> recommendMajorList, YxUserScore activeCurrentUserScore) {
int index = 0;
try { try {
long startTime = new Date().getTime(); long startTime = new Date().getTime();
//专业类别 //专业类别
@ -516,10 +517,14 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
BigDecimal enrollProbability = null;//录取率 BigDecimal enrollProbability = null;//录取率
Map<String, Object> differenceMap = null; Map<String, Object> differenceMap = null;
List<YxHistoryMajorEnroll> historyMajorEnrollList = null;//历年录取信息 List<YxHistoryMajorEnroll> historyMajorEnrollList = null;//历年录取信息
int index = 0;
if (CollectionUtils.isNotEmpty(recommendMajorList)) { if (CollectionUtils.isNotEmpty(recommendMajorList)) {
//遍历专业列表 //遍历专业列表
for (RecommendMajorDTO recommendMajorDTO : recommendMajorList) { for (RecommendMajorDTO recommendMajorDTO : recommendMajorList) {
index++;
System.out.println(recommendMajorDTO.getSchoolCode());
if ("4915".equals(recommendMajorDTO.getSchoolCode()) && recommendMajorDTO.getMajorName().equals("产品设计")) {
System.out.println("qvq");
}
//取出往年的分数信息, 算出 三年平均差值 //取出往年的分数信息, 算出 三年平均差值
historyMajorEnrollList = recommendMajorDTO.getHistoryMajorEnrollList(); historyMajorEnrollList = recommendMajorDTO.getHistoryMajorEnrollList();
rulesEnrollProbability = recommendMajorDTO.getPrivateRulesEnrollProbability(); rulesEnrollProbability = recommendMajorDTO.getPrivateRulesEnrollProbability();
@ -531,10 +536,6 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
continue; continue;
} }
// 判断 schoolCode 6110
if ("6110".equals(recommendMajorDTO.getSchoolCode()) && "动画".equals(recommendMajorDTO.getMajorName())) {
System.out.println("qvq");
}
//不是体育类的专业如果是文过专排并且没有录取计算运算符时文过专排是文*0+*1,专过文排是文*1+*0 //不是体育类的专业如果是文过专排并且没有录取计算运算符时文过专排是文*0+*1,专过文排是文*1+*0
if ("文过专排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) { if ("文过专排".equals(rulesEnrollProbability) && StringUtils.isBlank(probabilityOperator)) {
@ -561,7 +562,7 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
} }
} }
if("文3专7".equals(rulesEnrollProbability)){ if("6031".equals(recommendMajorDTO.getSchoolCode()) || "6175".equals(recommendMajorDTO.getSchoolCode())){
System.out.println("qvq"); System.out.println("qvq");
} }
//算分用 //算分用
@ -613,11 +614,12 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
} }
//历年分差 //历年分差
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList); differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, historyMajorEnrollList);
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference"); historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
//当前年线差 //当前年线差
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine); nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
//艺术类高职高专 当前年线差率 (当前年线差/当前年省控线) //艺术类高职高专 当前年线差率 (当前年线差/当前年省控线)
// "高职高专".equals(recommendMajorDTO.getBatch())
if ("高职高专".equals(recommendMajorDTO.getBatch()) && !"体育类".equals(recommendMajorDTO.getMajorType())) { if ("高职高专".equals(recommendMajorDTO.getBatch()) && !"体育类".equals(recommendMajorDTO.getMajorType())) {
nowYearDiff = nowYearDiff.divide(nowYearProvincialControlLine,6,RoundingMode.HALF_UP); nowYearDiff = nowYearDiff.divide(nowYearProvincialControlLine,6,RoundingMode.HALF_UP);
} }

View File

@ -99,6 +99,10 @@ public class YxHistoryMajorEnrollServiceImpl extends ServiceImpl<YxHistoryMajorE
for (RecommendMajorDTO recommendMajorDTO : recommendMajorDtoList) { for (RecommendMajorDTO recommendMajorDTO : recommendMajorDtoList) {
historyMajorEnrollList = new ArrayList<>(); historyMajorEnrollList = new ArrayList<>();
yearMajorEnrollMap = new LinkedHashMap<>(); yearMajorEnrollMap = new LinkedHashMap<>();
if("6031".equals(recommendMajorDTO.getSchoolCode())){
System.out.println("qqvqvq");
}
//2022年 //2022年
for (String year : historyYearsList) { for (String year : historyYearsList) {
key = recommendMajorDTO.getSchoolCode() + a_ + recommendMajorDTO.getMajorName() + a_ + recommendMajorDTO.getCategory() + a_ + recommendMajorDTO.getBatch(); key = recommendMajorDTO.getSchoolCode() + a_ + recommendMajorDTO.getMajorName() + a_ + recommendMajorDTO.getCategory() + a_ + recommendMajorDTO.getBatch();

View File

@ -499,7 +499,7 @@ public class YxSchoolMajorServiceImpl extends ServiceImpl<YxSchoolMajorMapper, Y
if (nowYearProvincialControlLine == null) { if (nowYearProvincialControlLine == null) {
continue; continue;
} }
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList); differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, historyMajorEnrollList);
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference"); historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
//historyThreeYearDiff = sum.divide(new BigDecimal(size), 4, RoundingMode.HALF_UP); //historyThreeYearDiff = sum.divide(new BigDecimal(size), 4, RoundingMode.HALF_UP);
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine); nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
@ -1195,7 +1195,7 @@ public class YxSchoolMajorServiceImpl extends ServiceImpl<YxSchoolMajorMapper, Y
} else { } else {
cankaoHistoryList = historyMajorEnrollList; cankaoHistoryList = historyMajorEnrollList;
} }
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, cankaoHistoryList); differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, cankaoHistoryList);
sum = (BigDecimal) differenceMap.get("scoreDifference"); sum = (BigDecimal) differenceMap.get("scoreDifference");
//historyThreeYearDiff = sum.divide(new BigDecimal(size), 4, RoundingMode.HALF_UP); //historyThreeYearDiff = sum.divide(new BigDecimal(size), 4, RoundingMode.HALF_UP);
historyThreeYearDiff = sum;// historyThreeYearDiff = sum;//

View File

@ -147,7 +147,7 @@ public class ZhuanService {
if (nowYearProvincialControlLine == null) { if (nowYearProvincialControlLine == null) {
continue; continue;
} }
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList); differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, historyMajorEnrollList);
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference"); historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine); nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
if (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0) { if (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0) {

View File

@ -82,6 +82,7 @@ public class ScoreUtil {
*/ */
public static Map<String, Object> computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability( public static Map<String, Object> computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(
String rulesEnrollProbability, String rulesEnrollProbability,
String probabilityOperator,
List<YxHistoryMajorEnroll> historyMajorEnrollList) { List<YxHistoryMajorEnroll> historyMajorEnrollList) {
// 1. 提前返回空结果避免后续空指针 // 1. 提前返回空结果避免后续空指针
if (CollectionUtils.isEmpty(historyMajorEnrollList)) { if (CollectionUtils.isEmpty(historyMajorEnrollList)) {
@ -106,7 +107,8 @@ public class ScoreUtil {
currentDiff = currentDiff.divide(controlLine, 6, RoundingMode.HALF_UP); currentDiff = currentDiff.divide(controlLine, 6, RoundingMode.HALF_UP);
} }
// 6. 非高职高专 or 体育类检查录取方式是否一致 validYearCount >= 1 && // 6. 非高职高专 or 体育类检查录取方式是否一致 validYearCount >= 1 &&
else if (!rulesEnrollProbability.equals(enrollData.getRulesEnrollProbability())) { // !rulesEnrollProbability.equals(enrollData.getRulesEnrollProbability()) &&
else if (!probabilityOperator.equals(enrollData.getProbabilityOperator())) {
continue; // 录取方式不一致跳过 continue; // 录取方式不一致跳过
} }