This commit is contained in:
zhouwentao 2024-06-19 16:12:11 +08:00
parent b52c8e859a
commit 0df7fcb3c4
4 changed files with 170 additions and 41 deletions

View File

@ -15,17 +15,24 @@ import org.jeecg.common.util.RedisUtil;
import org.jeecg.modules.mini.service.MiniTestCulturalService;
import org.jeecg.modules.web.service.WebMajorService;
import org.jeecg.modules.web.vo.QueryRecommendMajorVO;
import org.jeecg.modules.yx.constant.YxConstant;
import org.jeecg.modules.yx.entity.YxHistoryMajorEnroll;
import org.jeecg.modules.yx.entity.YxHistoryScoreControlLine;
import org.jeecg.modules.yx.entity.YxMajor;
import org.jeecg.modules.yx.service.IYxCalculationMajorService;
import org.jeecg.modules.yx.service.IYxHistoryMajorEnrollService;
import org.jeecg.modules.yx.service.IYxHistoryScoreControlLineService;
import org.jeecg.modules.yx.service.IYxMajorService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@ -47,8 +54,105 @@ public class WebMajorController {
IYxCalculationMajorService yxCalculationMajorService;
@Resource
RedisUtil redisUtil;
@Resource
private IYxHistoryMajorEnrollService yxHistoryMajorEnrollService;
@Resource
private IYxHistoryScoreControlLineService yxHistoryScoreControlLineService;
@GetMapping(value = "/recommendMajor/page")
public Result<?> recommendMajorPage(QueryRecommendMajorVO queryRecommendMajorVO) {
// Map<String, YxHistoryScoreControlLine> historyScoreControlLineMap = yxHistoryScoreControlLineService.allMaps();
//
// List<YxHistoryMajorEnroll> list = yxHistoryMajorEnrollService.list(new LambdaQueryWrapper<YxHistoryMajorEnroll>()
// .eq(YxHistoryMajorEnroll::getBatch,"高职高专")
// .eq(YxHistoryMajorEnroll::getYear, "2023")
// .eq(YxHistoryMajorEnroll::getRulesEnrollProbability, "文*0.5+专*1.25"));
// String year = "2023";
// String batch = "高职高专";
// String category = "";
// String key = "";
// YxHistoryScoreControlLine historyScoreControlLine = null;
// BigDecimal culturalScore = null;
// BigDecimal specialScore = null;
// BigDecimal wenhuaBili = null;
// BigDecimal zhuanyeBili = null;
// for (YxHistoryMajorEnroll yxHistoryMajorEnroll : list) {
// String majorType = yxHistoryMajorEnroll.getMajorType();
// category = yxHistoryMajorEnroll.getCategory();
// String mainSubjects = yxHistoryMajorEnroll.getMainSubjects();
// if(majorType.contains("美术")){
// yxHistoryMajorEnroll.setProbabilityOperator("文*0.067+专*0.167");
// }else if(majorType.contains("音乐")){
// yxHistoryMajorEnroll.setProbabilityOperator("文*0.067+专*0.25");
// }else if(majorType.contains("舞蹈")){
// yxHistoryMajorEnroll.setProbabilityOperator("文*0.067+专*0.25");
// }else if(majorType.contains("播音")){
// yxHistoryMajorEnroll.setProbabilityOperator("文*0.067+专*0.125");
// }else if(majorType.contains("表演")){
// yxHistoryMajorEnroll.setProbabilityOperator("文*0.067+专*0.25");
// }else if(majorType.contains("书法")){
// yxHistoryMajorEnroll.setProbabilityOperator("文*0.067+专*0.167");
// }
// String probabilityOperator = yxHistoryMajorEnroll.getProbabilityOperator();
// String rulesEnrollProbability = yxHistoryMajorEnroll.getRulesEnrollProbability();
// //省控线
// //美术与设计类文0.067 专0.167
// //音乐类文0.067 专0.25
// //舞蹈类文0.067 专0.25
// //播音与主持类文 0.067 专0.125
// //表演类文0.067 专0.25
// //书法类文0.067 专0.167
//
// //文科_本科A段_美术与设计_2023
// if ("舞蹈类".equals(majorType)) {
// if (mainSubjects.contains("艺术舞蹈")) {
// key = category + "_" + batch + "_" + "艺术舞蹈类" + "_" + year;
// } else if (mainSubjects.contains("国际标准")) {
// key = category + "_" + batch + "_" + "国际标准舞类" + "_" + year;
// }
// } else if(majorType.contains("体育")){
// if (batch.contains("专科") || batch.contains("高职高专")) {
// batch = "高职高专";
// }else{
// batch = "本科";
// }
// key = category + "_" + batch + "_" + majorType + "_" + year;
// } else {
// key = category + "_" + batch + "_" + majorType + "_" + year;
// }
// historyScoreControlLine = historyScoreControlLineMap.get(key);
// AssertUtils.notNull(historyScoreControlLine, String.format("行,未在系统中找到省控线"));
// culturalScore = historyScoreControlLine.getCulturalScore();
// specialScore = historyScoreControlLine.getSpecialScore();
// //换算分数
// String[] operators = probabilityOperator.split("\\+");
// for (String operator : operators) {
// if (operator.contains("")) {
// wenhuaBili = new BigDecimal(operator.split("\\*")[1]);
// }
// if (operator.contains("")) {
// zhuanyeBili = new BigDecimal(operator.split("\\*")[1]);
// }
// }
// if ("文过专排".equals(rulesEnrollProbability) || "文过专排主科".equals(rulesEnrollProbability)) {
// BigDecimal multiply = specialScore.multiply(zhuanyeBili);
// yxHistoryMajorEnroll.setControlLine(multiply);
// yxHistoryMajorEnroll.setRulesEnrollProbability("文过专排");
// } else if ("专过文排".equals(rulesEnrollProbability)) {
// BigDecimal multiply = culturalScore.multiply(wenhuaBili);
// yxHistoryMajorEnroll.setControlLine(multiply);
// yxHistoryMajorEnroll.setRulesEnrollProbability("专过文排");
// } else if ("其他计算办法".equals(rulesEnrollProbability)) {
// yxHistoryMajorEnroll.setRulesEnrollProbability("其他计算办法");
// } else {
// if (wenhuaBili == null || zhuanyeBili == null) {
// wenhuaBili = YxConstant.bigDecimal100;
// zhuanyeBili = YxConstant.bigDecimal100;
// }
// yxHistoryMajorEnroll.setControlLine((culturalScore.multiply(wenhuaBili)).add((specialScore.multiply(zhuanyeBili))));
// yxHistoryMajorEnroll.setRulesEnrollProbability(probabilityOperator);
// }
// }
// yxHistoryMajorEnrollService.updateBatchById(list,300);
return Result.OK(yxCalculationMajorService.recommendMajorPage(queryRecommendMajorVO));
}

View File

@ -244,50 +244,71 @@ public class YxHistoryMajorEnrollController extends JeecgController<YxHistoryMaj
@RequestMapping(value = "/exportXlsBySchoolMajor")
public ModelAndView exportXlsBySchoolMajor(HttpServletRequest request) {
List<YxHistoryMajorEnroll> dataList = new ArrayList<>();
List<YxHistoryMajorEnroll> historyMajorEnrollList = yxHistoryMajorEnrollService.list(new LambdaQueryWrapper<YxHistoryMajorEnroll>()
.eq(YxHistoryMajorEnroll::getYear,"2023")
.eq(YxHistoryMajorEnroll::getMajorType,"体育类"));
Set<String> notAddSet = new LinkedHashSet<>();
Map<String,YxHistoryMajorEnroll> map =new LinkedHashMap<>();
for (YxHistoryMajorEnroll y : historyMajorEnrollList) {
notAddSet.add(y.getSchoolCode()+"_"+y.getEnrollmentCode()+"_"+y.getMajorType()+"_"+y.getCategory());
map.put(y.getSchoolCode()+"_"+y.getEnrollmentCode()+"_"+y.getMajorType()+"_"+y.getCategory(),y);
LambdaQueryWrapper<YxHistoryMajorEnroll> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.apply("control_line > admission_line")
.gt(YxHistoryMajorEnroll::getAdmissionLine, 1);
List<YxHistoryMajorEnroll> historyMajorEnrollList = yxHistoryMajorEnrollService.list(queryWrapper);
dataList = historyMajorEnrollList;
List<YxSchoolMajor> schoolMajorList1 = yxSchoolMajorService.list(new LambdaQueryWrapper<YxSchoolMajor>());
Map<String,YxSchoolMajor> map1 =new LinkedHashMap<>();
for (YxSchoolMajor y : schoolMajorList1) {
map1.put(y.getSchoolCode()+"_"+y.getEnrollmentCode()+"_"+y.getMajorType()+"_"+y.getCategory(),y);
}
List<YxSchoolMajor> schoolMajorList = yxSchoolMajorService.list(new LambdaQueryWrapper<YxSchoolMajor>()
.eq(YxSchoolMajor::getMajorType,"体育类"));
List<YxSchoolChild> schoolChildList = yxSchoolChildService.list();
Map<String, String> schoolNameMap = schoolChildList.stream().collect(Collectors.toMap(YxSchoolChild::getSchoolCode, YxSchoolChild::getSchoolName));
String schoolName = "";
YxHistoryMajorEnroll yxHistoryMajorEnroll = null;
int i =0;
try {
String key = null;
for (YxSchoolMajor yxSchoolMajor : schoolMajorList) {
key = yxSchoolMajor.getSchoolCode()+"_"+yxSchoolMajor.getEnrollmentCode()+"_"+yxSchoolMajor.getMajorType()+"_"+yxSchoolMajor.getCategory();
if (!notAddSet.contains(key)) {
yxHistoryMajorEnroll = new YxHistoryMajorEnroll();
schoolName = schoolNameMap.getOrDefault(yxSchoolMajor.getSchoolCode(), "");
BeanUtils.copyProperties(yxSchoolMajor,yxHistoryMajorEnroll);
yxHistoryMajorEnroll.setSchoolName(schoolName);
yxHistoryMajorEnroll.setEnrollNum(yxSchoolMajor.getPlanNum());
yxHistoryMajorEnroll.setRulesEnrollProbability(yxSchoolMajor.getPrivateRulesEnrollProbability());
yxHistoryMajorEnroll.setProbabilityOperator(yxSchoolMajor.getPrivateProbabilityOperator());
}else{
yxHistoryMajorEnroll = map.get(key);
for (YxHistoryMajorEnroll y : dataList) {
YxSchoolMajor yxSchoolMajor = map1.get(y.getSchoolCode() + "_" + y.getEnrollmentCode() + "_" + y.getMajorType() + "_" + y.getCategory());
if (yxSchoolMajor!=null) {
if(yxSchoolMajor.getTuition()!=null){
y.setTuition(yxSchoolMajor.getTuition().toString());
}
if (yxSchoolMajor.getTuition()!=null) {
yxHistoryMajorEnroll.setTuition(yxSchoolMajor.getTuition().toString());
if(StringUtils.isNotBlank(yxSchoolMajor.getDetail())){
y.setDetail(yxSchoolMajor.getDetail());
}
if (StringUtils.isNotBlank(yxSchoolMajor.getDetail())) {
yxHistoryMajorEnroll.setDetail(yxSchoolMajor.getDetail());
}
dataList.add(yxHistoryMajorEnroll);
i++;
}
}catch (Exception e) {
System.out.println(i);
throw new JeecgBootException("导出数据有错误,第"+i+"行出错:"+e.getMessage());
}
if(false){
Set<String> notAddSet = new LinkedHashSet<>();
Map<String,YxHistoryMajorEnroll> map =new LinkedHashMap<>();
for (YxHistoryMajorEnroll y : historyMajorEnrollList) {
notAddSet.add(y.getSchoolCode()+"_"+y.getEnrollmentCode()+"_"+y.getMajorType()+"_"+y.getCategory());
map.put(y.getSchoolCode()+"_"+y.getEnrollmentCode()+"_"+y.getMajorType()+"_"+y.getCategory(),y);
}
List<YxSchoolMajor> schoolMajorList = yxSchoolMajorService.list(new LambdaQueryWrapper<YxSchoolMajor>()
.eq(YxSchoolMajor::getMajorType,"体育类"));
List<YxSchoolChild> schoolChildList = yxSchoolChildService.list();
Map<String, String> schoolNameMap = schoolChildList.stream().collect(Collectors.toMap(YxSchoolChild::getSchoolCode, YxSchoolChild::getSchoolName));
String schoolName = "";
YxHistoryMajorEnroll yxHistoryMajorEnroll = null;
int i =0;
try {
String key = null;
for (YxSchoolMajor yxSchoolMajor : schoolMajorList) {
key = yxSchoolMajor.getSchoolCode()+"_"+yxSchoolMajor.getEnrollmentCode()+"_"+yxSchoolMajor.getMajorType()+"_"+yxSchoolMajor.getCategory();
if (!notAddSet.contains(key)) {
yxHistoryMajorEnroll = new YxHistoryMajorEnroll();
schoolName = schoolNameMap.getOrDefault(yxSchoolMajor.getSchoolCode(), "");
BeanUtils.copyProperties(yxSchoolMajor,yxHistoryMajorEnroll);
yxHistoryMajorEnroll.setSchoolName(schoolName);
yxHistoryMajorEnroll.setEnrollNum(yxSchoolMajor.getPlanNum());
yxHistoryMajorEnroll.setRulesEnrollProbability(yxSchoolMajor.getPrivateRulesEnrollProbability());
yxHistoryMajorEnroll.setProbabilityOperator(yxSchoolMajor.getPrivateProbabilityOperator());
}else{
yxHistoryMajorEnroll = map.get(key);
}
if (yxSchoolMajor.getTuition()!=null) {
yxHistoryMajorEnroll.setTuition(yxSchoolMajor.getTuition().toString());
}
if (StringUtils.isNotBlank(yxSchoolMajor.getDetail())) {
yxHistoryMajorEnroll.setDetail(yxSchoolMajor.getDetail());
}
dataList.add(yxHistoryMajorEnroll);
i++;
}
}catch (Exception e) {
System.out.println(i);
throw new JeecgBootException("导出数据有错误,第"+i+"行出错:"+e.getMessage());
}
}
//Step.2 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());

View File

@ -89,7 +89,7 @@ public class YxHistoryMajorEnroll implements Serializable {
@ApiModelProperty(value = "录取方式运算符")
private java.lang.String probabilityOperator;
/**省控线*/
//@Excel(name = "省控线", width = 15)
@Excel(name = "省控线", width = 15)
@ApiModelProperty(value = "省控线")
private java.math.BigDecimal controlLine;
/**录取线*/

View File

@ -137,24 +137,28 @@ public class YxSchoolMajor implements Serializable {
* 文化分限制
*/
@ApiModelProperty(value = "文化成绩限制")
@Excel(name = "文化成绩限制", width = 15)
private BigDecimal culturalScoreLimitation;
/**
* 专业分限制
*/
@ApiModelProperty(value = "专业成绩限制")
@Excel(name = "专业成绩限制", width = 15)
private BigDecimal professionalScoreLimitation;
/**
* 语文分限制
*/
@ApiModelProperty(value = "语文成绩限制")
@Excel(name = "语文成绩限制", width = 15)
private BigDecimal chineseScoreLimitation;
/**
* 外语成绩限制
*/
@ApiModelProperty(value = "外语成绩限制")
@Excel(name = "外语成绩限制", width = 15)
private BigDecimal englishScoreLimitation;
/**