updates
This commit is contained in:
parent
a5727d175d
commit
e4cd87a92c
|
|
@ -0,0 +1,154 @@
|
|||
package org.jeecg.modules.mini.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.modules.mini.service.MiniTestCulturalService;
|
||||
import org.jeecg.modules.web.dto.ArtCalculateInvestmentDTO;
|
||||
import org.jeecg.modules.web.vo.QueryCalculateInvestmentVO;
|
||||
import org.jeecg.modules.yx.constant.YxConstant;
|
||||
import org.jeecg.modules.yx.entity.YxSchoolMajor;
|
||||
import org.jeecg.modules.yx.service.IYxCalculationMajorService;
|
||||
import org.jeecg.modules.yx.service.IYxSchoolMajorService;
|
||||
import org.jeecg.modules.yx.util.ScoreUtil;
|
||||
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.*;
|
||||
|
||||
/**
|
||||
* @Description 艺术类接口
|
||||
* @Author ZhouWenTao
|
||||
* @Date 2023/9/18 17:16
|
||||
*/
|
||||
@Api(tags = "艺术类查询")
|
||||
@RestController
|
||||
@RequestMapping(value = "/mini/recommendMajor")
|
||||
public class MiniRecommendMajorController {
|
||||
@Resource
|
||||
IYxSchoolMajorService yxSchoolMajorService;
|
||||
@Resource
|
||||
IYxCalculationMajorService yxCalculationMajorService;
|
||||
@Resource
|
||||
MiniTestCulturalService testCulturalService;
|
||||
|
||||
|
||||
|
||||
@ApiOperation(value = "投档分测算")
|
||||
@GetMapping("/calculateInvestment")
|
||||
public Result<?> calculateInvestment(QueryCalculateInvestmentVO queryCalculateInvestmentVO) {
|
||||
BigDecimal culturalScore = new BigDecimal(queryCalculateInvestmentVO.getCulturalScore());
|
||||
BigDecimal professionalScore = new BigDecimal(queryCalculateInvestmentVO.getProfessionalScore());
|
||||
//获取 院校专业信息列表,录取方式notnull
|
||||
LambdaQueryWrapper<YxSchoolMajor> yxSchoolMajorLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
yxSchoolMajorLambdaQueryWrapper.isNotNull(YxSchoolMajor::getRulesEnrollProbability);
|
||||
//字段匹配: batch 批次,category 文理分科,majorType 专业类型
|
||||
if (!"高职高专".equals(queryCalculateInvestmentVO.getBatch())) {
|
||||
yxSchoolMajorLambdaQueryWrapper.ne(YxSchoolMajor::getBatch, "高职高专");
|
||||
} else {
|
||||
yxSchoolMajorLambdaQueryWrapper.eq(YxSchoolMajor::getBatch, queryCalculateInvestmentVO.getBatch());
|
||||
}
|
||||
|
||||
yxSchoolMajorLambdaQueryWrapper.eq(StringUtils.isNotBlank(queryCalculateInvestmentVO.getCategory()), YxSchoolMajor::getCategory, queryCalculateInvestmentVO.getCategory());
|
||||
yxSchoolMajorLambdaQueryWrapper.eq(StringUtils.isNotBlank(queryCalculateInvestmentVO.getProfessionalCategory()), YxSchoolMajor::getMajorType, queryCalculateInvestmentVO.getProfessionalCategory());
|
||||
yxSchoolMajorLambdaQueryWrapper.orderByDesc(YxSchoolMajor::getRulesEnrollProbabilitySx);
|
||||
List<ArtCalculateInvestmentDTO> calculateInvestmentDTOList = new ArrayList<>();
|
||||
Map<String,String> rulesEnrollProbabilityMap=new HashMap<>();
|
||||
rulesEnrollProbabilityMap.put("专过文排","专过文排");
|
||||
rulesEnrollProbabilityMap.put("文*0.8+专*0.5","文8专2");
|
||||
rulesEnrollProbabilityMap.put("文*0.7+专*0.75","文7专3");
|
||||
rulesEnrollProbabilityMap.put("文*0.6+专*1","文6专4");
|
||||
rulesEnrollProbabilityMap.put("文*0.5+专*1.25","文5专5");
|
||||
if (!"体育类".equals(queryCalculateInvestmentVO.getProfessionalCategory())) {
|
||||
//非体育类
|
||||
List<String> rulesEnrollProbabilityList = null;
|
||||
if ("高职高专".equals(queryCalculateInvestmentVO.getBatch())) {
|
||||
rulesEnrollProbabilityList = Arrays.asList("文*0.5+专*1.25");
|
||||
}else{
|
||||
rulesEnrollProbabilityList = Arrays.asList("文*0.8+专*0.5", "文*0.7+专*0.75", "文*0.6+专*1", "文*0.5+专*1.25", "专过文排");
|
||||
}
|
||||
|
||||
yxSchoolMajorLambdaQueryWrapper.in(YxSchoolMajor::getRulesEnrollProbability, rulesEnrollProbabilityList);
|
||||
List<YxSchoolMajor> schooMajorList = yxSchoolMajorService.list(yxSchoolMajorLambdaQueryWrapper);
|
||||
BigDecimal wenhuaBili = null;
|
||||
BigDecimal zhuanyeBili = null;
|
||||
ArtCalculateInvestmentDTO artCalculateInvestmentDTO = null;
|
||||
for (String probabilityOperator : rulesEnrollProbabilityList) {
|
||||
artCalculateInvestmentDTO = new ArtCalculateInvestmentDTO();
|
||||
if (probabilityOperator.equals("专过文排")) {
|
||||
artCalculateInvestmentDTO.setRulesEnrollProbability(rulesEnrollProbabilityMap.get(probabilityOperator));
|
||||
artCalculateInvestmentDTO.setProbabilityOperator("文*1");
|
||||
artCalculateInvestmentDTO.setScore(culturalScore);
|
||||
artCalculateInvestmentDTO.setSchoolNum((int) schooMajorList.stream().filter(s->s.getRulesEnrollProbability().equals("专过文排")).count());
|
||||
calculateInvestmentDTOList.add(artCalculateInvestmentDTO);
|
||||
} else {
|
||||
wenhuaBili = null;
|
||||
zhuanyeBili = null;
|
||||
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 (wenhuaBili == null || zhuanyeBili == null) {
|
||||
wenhuaBili = YxConstant.bigDecimal100;
|
||||
zhuanyeBili = YxConstant.bigDecimal100;
|
||||
}
|
||||
artCalculateInvestmentDTO = new ArtCalculateInvestmentDTO();
|
||||
artCalculateInvestmentDTO.setRulesEnrollProbability(rulesEnrollProbabilityMap.get(probabilityOperator));
|
||||
artCalculateInvestmentDTO.setProbabilityOperator(probabilityOperator);
|
||||
artCalculateInvestmentDTO.setScore((culturalScore.multiply(wenhuaBili)).add((professionalScore.multiply(zhuanyeBili))));
|
||||
artCalculateInvestmentDTO.setSchoolNum((int) schooMajorList.stream().filter(s->s.getProbabilityOperator().contains(probabilityOperator)).count());
|
||||
calculateInvestmentDTOList.add(artCalculateInvestmentDTO);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
List<YxSchoolMajor> schooMajorList = yxSchoolMajorService.list(yxSchoolMajorLambdaQueryWrapper);
|
||||
try {
|
||||
if (CollectionUtils.isEmpty(schooMajorList)) {
|
||||
return Result.OK();
|
||||
}
|
||||
ArtCalculateInvestmentDTO artCalculateInvestmentDTO = null;
|
||||
Integer schoolNum = 0;
|
||||
//遍历 院校专业列表,将录取方式,院校代码储存起来
|
||||
//map,key:录取方式,value: array[院校代码]
|
||||
Map<String, Set<String>> maps = new LinkedHashMap<>();
|
||||
Set<String> schoolCodeSet = null;
|
||||
for (YxSchoolMajor yxSchoolMajor : schooMajorList) {
|
||||
schoolCodeSet = maps.getOrDefault(yxSchoolMajor.getRulesEnrollProbability(), new HashSet<>());
|
||||
schoolCodeSet.add(yxSchoolMajor.getSchoolCode());
|
||||
maps.put(yxSchoolMajor.getRulesEnrollProbability(), schoolCodeSet);
|
||||
}
|
||||
if (maps.isEmpty()) {
|
||||
return Result.OK();
|
||||
}
|
||||
//根据录取方式,计算折合分数
|
||||
for (String rulesEnrollProbability : maps.keySet()) {
|
||||
Optional<YxSchoolMajor> any = schooMajorList.stream().filter(s -> s.getRulesEnrollProbability().equals(rulesEnrollProbability)).findAny();
|
||||
if (any.isPresent()) {
|
||||
YxSchoolMajor yxSchoolMajor = any.get();
|
||||
artCalculateInvestmentDTO = new ArtCalculateInvestmentDTO();
|
||||
artCalculateInvestmentDTO.setSchoolNum(maps.get(rulesEnrollProbability).size());
|
||||
artCalculateInvestmentDTO.setRulesEnrollProbability(yxSchoolMajor.getRulesEnrollProbabilitySx());
|
||||
artCalculateInvestmentDTO.setProbabilityOperator(yxSchoolMajor.getProbabilityOperator());
|
||||
artCalculateInvestmentDTO.setScore(ScoreUtil.convertIntoScore(rulesEnrollProbability, culturalScore, professionalScore, null, yxSchoolMajor.getProbabilityOperator()));
|
||||
calculateInvestmentDTOList.add(artCalculateInvestmentDTO);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
return Result.error("计算折合分出错,请联系管理员");
|
||||
}
|
||||
}
|
||||
return Result.OK(calculateInvestmentDTOList);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -239,10 +239,6 @@ public class YxHistoryMajorEnrollController extends JeecgController<YxHistoryMaj
|
|||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequiresPermissions("yx:yx_history_major_enroll:importExcel")
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package org.jeecg.modules.yx.controller;
|
|||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
|
|
@ -17,10 +18,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jeecg.common.api.vo.Result;
|
||||
import org.jeecg.common.exception.JeecgBootException;
|
||||
import org.jeecg.common.system.query.QueryGenerator;
|
||||
import org.jeecg.common.util.AssertUtils;
|
||||
import org.jeecg.modules.yx.constant.YxConstant;
|
||||
import org.jeecg.modules.yx.dto.LiNianShuJuDTO;
|
||||
import org.jeecg.modules.yx.dto.SchoolMajorImport3;
|
||||
import org.jeecg.modules.yx.dto.SchoolMajorLqfsDTO;
|
||||
import org.jeecg.modules.yx.dto.YxSchoolMajorDTO;
|
||||
import org.jeecg.modules.yx.entity.*;
|
||||
import org.jeecg.modules.yx.service.*;
|
||||
|
|
@ -37,6 +41,8 @@ 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;
|
||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
|
@ -258,10 +264,90 @@ public class YxSchoolMajorController extends JeecgController<YxSchoolMajor, IYxS
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* 导入,刷新专业录取方式
|
||||
*/
|
||||
@RequiresPermissions("yx:yx_school_major:importExcel")
|
||||
@RequestMapping(value = "/importExcelLqfs", method = RequestMethod.POST)
|
||||
public Result<?> importExcelLqfs(HttpServletRequest request, HttpServletResponse response) {
|
||||
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
|
||||
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
|
||||
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
|
||||
// 获取上传文件对象
|
||||
MultipartFile file = entity.getValue();
|
||||
ImportParams params = new ImportParams();
|
||||
params.setTitleRows(2);
|
||||
params.setHeadRows(1);
|
||||
params.setNeedSave(true);
|
||||
long start = System.currentTimeMillis();
|
||||
int index = 3;
|
||||
try {
|
||||
//加载省控线
|
||||
List<SchoolMajorLqfsDTO> list = ExcelImportUtil.importExcel(file.getInputStream(), SchoolMajorLqfsDTO.class, params);
|
||||
String a="_";
|
||||
String key;
|
||||
List<YxSchoolMajor> yxSchoolMajorList =yxSchoolMajorService.list();
|
||||
Map<String,YxSchoolMajor> schoolMajorMap = new HashMap<>();
|
||||
List<YxSchoolMajor> updatesList = new ArrayList<>();
|
||||
for (YxSchoolMajor item : yxSchoolMajorList) {
|
||||
index++;
|
||||
key = item.getSchoolCode()+a+item.getBatch()+a+item.getMajorName()+a+item.getCategory();
|
||||
schoolMajorMap.put(key,item);
|
||||
}
|
||||
|
||||
YxSchoolMajor yxSchoolMajor;
|
||||
String probabilityOperator ="";
|
||||
for (SchoolMajorLqfsDTO item : list) {
|
||||
index++;
|
||||
probabilityOperator="";
|
||||
key = item.getSchoolCode()+a+item.getBatch()+a+item.getMajorName()+a+item.getCategory();
|
||||
if(StringUtils.isBlank(item.getProbabilityOperatorWen()) && StringUtils.isBlank(item.getProbabilityOperatorZhuan())){
|
||||
continue;
|
||||
}
|
||||
if(StringUtils.isNotBlank(item.getProbabilityOperatorWen())){
|
||||
probabilityOperator+="文*"+item.getProbabilityOperatorWen();
|
||||
}
|
||||
|
||||
if(StringUtils.isNotBlank(item.getProbabilityOperatorZhuan())){
|
||||
if(StringUtils.isNotBlank(item.getProbabilityOperatorWen())){
|
||||
probabilityOperator+="+";
|
||||
}
|
||||
probabilityOperator+="专*"+item.getProbabilityOperatorZhuan();
|
||||
}
|
||||
yxSchoolMajor = schoolMajorMap.get(key);
|
||||
yxSchoolMajor.setRulesEnrollProbabilitySx(item.getRulesEnrollProbabilitySx());
|
||||
yxSchoolMajor.setRulesEnrollProbability(probabilityOperator);
|
||||
yxSchoolMajor.setProbabilityOperator(probabilityOperator);
|
||||
updatesList.add(yxSchoolMajor);
|
||||
}
|
||||
service.updateBatchById(updatesList);
|
||||
log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
|
||||
return Result.ok("文件导入成功!数据行数:" + list.size());
|
||||
} catch (Exception e) {
|
||||
System.out.println("索引:"+index);
|
||||
String msg = e.getMessage();
|
||||
log.error(msg, e);
|
||||
if (msg != null && msg.indexOf("Duplicate entry") >= 0) {
|
||||
return Result.error("文件导入失败:有重复数据!");
|
||||
} else {
|
||||
return Result.error("文件导入失败:" + e.getMessage() + ",行:" + index);
|
||||
}
|
||||
} finally {
|
||||
try {
|
||||
file.getInputStream().close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
return Result.error("文件导入失败!");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 刷新专业信息importExcel1Xz
|
||||
*/
|
||||
@RequestMapping(value = "/importExcel1Xz", method = RequestMethod.POST)
|
||||
/*@RequestMapping(value = "/importExcel1Xz", method = RequestMethod.POST)
|
||||
public Result<?> importExcel1Xz(HttpServletRequest request, HttpServletResponse response) {
|
||||
// 获取上传文件对象
|
||||
File file = new File("C:\\Users\\Denim\\Desktop\\艺体志愿宝数据\\招录限制.xlsx");
|
||||
|
|
@ -460,9 +546,9 @@ public class YxSchoolMajorController extends JeecgController<YxSchoolMajor, IYxS
|
|||
|
||||
|
||||
|
||||
/**
|
||||
*//**
|
||||
* 刷新专业信息
|
||||
*/
|
||||
*//*
|
||||
@RequestMapping(value = "/importExcel1", method = RequestMethod.POST)
|
||||
public Result<?> importExcel1(HttpServletRequest request, HttpServletResponse response) {
|
||||
// 获取上传文件对象
|
||||
|
|
@ -730,7 +816,7 @@ public class YxSchoolMajorController extends JeecgController<YxSchoolMajor, IYxS
|
|||
//service.updateRulesEnrollProbabilityByOldLastYearData();
|
||||
service.updateRulesEnrollProbabilityByOldLastYearData2();
|
||||
return Result.OK();
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,65 @@
|
|||
package org.jeecg.modules.yx.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author ZhouWenTao
|
||||
* @create 2024-05-21-20:19
|
||||
*/
|
||||
@Data
|
||||
public class SchoolMajorLqfsDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**学校代码*/
|
||||
@Excel(name = "学校代码", width = 15)
|
||||
@ApiModelProperty(value = "学校代码")
|
||||
private java.lang.String schoolCode;
|
||||
/**批次*/
|
||||
@Excel(name = "批次", width = 15)
|
||||
@ApiModelProperty(value = "批次")
|
||||
private java.lang.String batch;
|
||||
/**专业代码*/
|
||||
@Excel(name = "专业代码", width = 15)
|
||||
@ApiModelProperty(value = "专业代码")
|
||||
private java.lang.String enrollmentCode;
|
||||
/**专业名称*/
|
||||
@Excel(name = "专业名称", width = 15)
|
||||
@ApiModelProperty(value = "专业名称")
|
||||
private java.lang.String majorName;
|
||||
/**专业类型*/
|
||||
@Excel(name = "专业类型", width = 15)
|
||||
@ApiModelProperty(value = "专业类型")
|
||||
private String majorType;
|
||||
/**科类(文科/理科)*/
|
||||
@Excel(name = "科类(文科/理科)", width = 15)
|
||||
@ApiModelProperty(value = "科类(文科/理科)")
|
||||
private java.lang.String category;
|
||||
/**录取方式缩写*/
|
||||
@Excel(name = "录取方式缩写(用于筛选条件)", width = 15)
|
||||
@ApiModelProperty(value = "录取方式缩写(用于筛选条件)")
|
||||
private String rulesEnrollProbabilitySx;
|
||||
// 学校代码 批次 专业代码 专业名称 专业类型 科类(文科/理科) 计划招生人数 录取方式缩写(用于筛选条件)
|
||||
// 对外录取方式 对外录取方式运算符(文) 对外录取方式运算符(专) 内部录取方式 内部录取方式运算符
|
||||
/**对外录取方式*/
|
||||
@Excel(name = "对外录取方式", width = 15)
|
||||
@ApiModelProperty(value = "对外录取方式")
|
||||
private java.lang.String rulesEnrollProbability;
|
||||
|
||||
/**对外录取方式运算符(文)*/
|
||||
@Excel(name = "对外录取方式运算符(文)", width = 15)
|
||||
@ApiModelProperty(value = "对外录取方式运算符(文)")
|
||||
private java.lang.String probabilityOperatorWen;
|
||||
/**对外录取方式运算符(专)*/
|
||||
@Excel(name = "对外录取方式运算符(专)", width = 15)
|
||||
@ApiModelProperty(value = "对外录取方式运算符(专)")
|
||||
private java.lang.String probabilityOperatorZhuan;
|
||||
|
||||
/**对外录取方式*/
|
||||
@Excel(name = "内部录取方式", width = 15)
|
||||
@ApiModelProperty(value = "内部录取方式")
|
||||
private java.lang.String privateRulesEnrollProbability;
|
||||
}
|
||||
Loading…
Reference in New Issue