updates
This commit is contained in:
parent
db764c0356
commit
e2d4005c4d
|
|
@ -4,12 +4,18 @@ import cn.hutool.core.collection.CollectionUtil;
|
|||
import cn.hutool.json.JSONObject;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
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.service.IYxHistoryMajorEnrollService;
|
||||
import org.jeecg.modules.yx.service.IYxSchoolMajorService;
|
||||
import org.jeecg.modules.yx.service.IYxSportsScoreService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
|
@ -30,6 +36,10 @@ import java.util.List;
|
|||
public class StaticDataController {
|
||||
@Resource
|
||||
private IYxSportsScoreService yxSportsScoreService;
|
||||
@Resource
|
||||
private IYxSchoolMajorService yxSchoolMajorService;
|
||||
@Resource
|
||||
private IYxHistoryMajorEnrollService yxHistoryMajorEnrollService;
|
||||
|
||||
@RequestMapping(value = "/getJson",method = RequestMethod.POST)
|
||||
public Result<?> getJson(@RequestBody JSONObject params, HttpServletRequest request){
|
||||
|
|
@ -105,4 +115,126 @@ public class StaticDataController {
|
|||
jsonObject.set("zhuanZhiYuanNum", 64);
|
||||
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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -239,7 +239,7 @@ public class BiaoyanService {
|
|||
continue;
|
||||
}
|
||||
//历年分差
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList);
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, historyMajorEnrollList);
|
||||
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
|
||||
//当前年线差
|
||||
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ public class BoYinService {
|
|||
continue;
|
||||
}
|
||||
//历年分差
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList);
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, historyMajorEnrollList);
|
||||
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
|
||||
//当前年线差
|
||||
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
|
||||
|
|
|
|||
|
|
@ -291,7 +291,7 @@ public class MusicService {
|
|||
continue;
|
||||
}
|
||||
//历年分差
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList);
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, historyMajorEnrollList);
|
||||
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
|
||||
//当前年线差
|
||||
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ public class WuDaoService {
|
|||
continue;
|
||||
}
|
||||
//历年分差
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList);
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, historyMajorEnrollList);
|
||||
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
|
||||
//当前年线差
|
||||
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
|
||||
|
|
|
|||
|
|
@ -494,6 +494,7 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
|
|||
* 美术与设计类,书法类,体育类 按这个走 获取录取率
|
||||
*/
|
||||
private void betaRecommendMajorListSetEnrollProbability(List<RecommendMajorDTO> recommendMajorList, YxUserScore activeCurrentUserScore) {
|
||||
int index = 0;
|
||||
try {
|
||||
long startTime = new Date().getTime();
|
||||
//专业类别
|
||||
|
|
@ -516,10 +517,14 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
|
|||
BigDecimal enrollProbability = null;//录取率
|
||||
Map<String, Object> differenceMap = null;
|
||||
List<YxHistoryMajorEnroll> historyMajorEnrollList = null;//历年录取信息
|
||||
int index = 0;
|
||||
if (CollectionUtils.isNotEmpty(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();
|
||||
rulesEnrollProbability = recommendMajorDTO.getPrivateRulesEnrollProbability();
|
||||
|
|
@ -531,10 +536,6 @@ public class YxCalculationMajorServiceImpl extends ServiceImpl<YxCalculationMajo
|
|||
continue;
|
||||
}
|
||||
|
||||
// 判断 schoolCode 6110
|
||||
if ("6110".equals(recommendMajorDTO.getSchoolCode()) && "动画".equals(recommendMajorDTO.getMajorName())) {
|
||||
System.out.println("qvq");
|
||||
}
|
||||
|
||||
//不是体育类的专业,如果是文过专排,并且没有录取计算运算符时,文过专排是文*0+专*1,专过文排是文*1+专*0
|
||||
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");
|
||||
}
|
||||
//算分用
|
||||
|
|
@ -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");
|
||||
//当前年线差
|
||||
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
|
||||
//艺术类,高职高专 算 当前年线差率 (当前年线差/当前年省控线)
|
||||
// "高职高专".equals(recommendMajorDTO.getBatch())
|
||||
if ("高职高专".equals(recommendMajorDTO.getBatch()) && !"体育类".equals(recommendMajorDTO.getMajorType())) {
|
||||
nowYearDiff = nowYearDiff.divide(nowYearProvincialControlLine,6,RoundingMode.HALF_UP);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,6 +99,10 @@ public class YxHistoryMajorEnrollServiceImpl extends ServiceImpl<YxHistoryMajorE
|
|||
for (RecommendMajorDTO recommendMajorDTO : recommendMajorDtoList) {
|
||||
historyMajorEnrollList = new ArrayList<>();
|
||||
yearMajorEnrollMap = new LinkedHashMap<>();
|
||||
|
||||
if("6031".equals(recommendMajorDTO.getSchoolCode())){
|
||||
System.out.println("qqvqvq");
|
||||
}
|
||||
//2022年
|
||||
for (String year : historyYearsList) {
|
||||
key = recommendMajorDTO.getSchoolCode() + a_ + recommendMajorDTO.getMajorName() + a_ + recommendMajorDTO.getCategory() + a_ + recommendMajorDTO.getBatch();
|
||||
|
|
|
|||
|
|
@ -499,7 +499,7 @@ public class YxSchoolMajorServiceImpl extends ServiceImpl<YxSchoolMajorMapper, Y
|
|||
if (nowYearProvincialControlLine == null) {
|
||||
continue;
|
||||
}
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList);
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, historyMajorEnrollList);
|
||||
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
|
||||
//historyThreeYearDiff = sum.divide(new BigDecimal(size), 4, RoundingMode.HALF_UP);
|
||||
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
|
||||
|
|
@ -1195,7 +1195,7 @@ public class YxSchoolMajorServiceImpl extends ServiceImpl<YxSchoolMajorMapper, Y
|
|||
} else {
|
||||
cankaoHistoryList = historyMajorEnrollList;
|
||||
}
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, cankaoHistoryList);
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, cankaoHistoryList);
|
||||
sum = (BigDecimal) differenceMap.get("scoreDifference");
|
||||
//historyThreeYearDiff = sum.divide(new BigDecimal(size), 4, RoundingMode.HALF_UP);
|
||||
historyThreeYearDiff = sum;//
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ public class ZhuanService {
|
|||
if (nowYearProvincialControlLine == null) {
|
||||
continue;
|
||||
}
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, historyMajorEnrollList);
|
||||
differenceMap = ScoreUtil.computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(rulesEnrollProbability, probabilityOperator, historyMajorEnrollList);
|
||||
historyThreeYearDiff = (BigDecimal) differenceMap.get("scoreDifference");
|
||||
nowYearDiff = studentScore.subtract(nowYearProvincialControlLine);
|
||||
if (historyThreeYearDiff == null || historyThreeYearDiff.doubleValue() == 0) {
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@ public class ScoreUtil {
|
|||
*/
|
||||
public static Map<String, Object> computeHistoryMajorEnrollScoreLineDifferenceWithRulesEnrollProbability(
|
||||
String rulesEnrollProbability,
|
||||
String probabilityOperator,
|
||||
List<YxHistoryMajorEnroll> historyMajorEnrollList) {
|
||||
// 1. 提前返回空结果,避免后续空指针
|
||||
if (CollectionUtils.isEmpty(historyMajorEnrollList)) {
|
||||
|
|
@ -106,7 +107,8 @@ public class ScoreUtil {
|
|||
currentDiff = currentDiff.divide(controlLine, 6, RoundingMode.HALF_UP);
|
||||
}
|
||||
// 6. 非高职高专 or 体育类:检查录取方式是否一致 validYearCount >= 1 &&
|
||||
else if (!rulesEnrollProbability.equals(enrollData.getRulesEnrollProbability())) {
|
||||
// !rulesEnrollProbability.equals(enrollData.getRulesEnrollProbability()) &&
|
||||
else if (!probabilityOperator.equals(enrollData.getProbabilityOperator())) {
|
||||
continue; // 录取方式不一致,跳过
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue