diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniRecommendMajorController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniRecommendMajorController.java new file mode 100644 index 0000000..2d9a4aa --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mini/controller/MiniRecommendMajorController.java @@ -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 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 calculateInvestmentDTOList = new ArrayList<>(); + Map 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 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 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 schooMajorList = yxSchoolMajorService.list(yxSchoolMajorLambdaQueryWrapper); + try { + if (CollectionUtils.isEmpty(schooMajorList)) { + return Result.OK(); + } + ArtCalculateInvestmentDTO artCalculateInvestmentDTO = null; + Integer schoolNum = 0; + //遍历 院校专业列表,将录取方式,院校代码储存起来 + //map,key:录取方式,value: array[院校代码] + Map> maps = new LinkedHashMap<>(); + Set 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 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); + } + +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxHistoryMajorEnrollController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxHistoryMajorEnrollController.java index 4355d14..3b010e0 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxHistoryMajorEnrollController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxHistoryMajorEnrollController.java @@ -239,10 +239,6 @@ public class YxHistoryMajorEnrollController extends JeecgController importExcelLqfs(HttpServletRequest request, HttpServletResponse response) { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map fileMap = multipartRequest.getFileMap(); + for (Map.Entry 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 list = ExcelImportUtil.importExcel(file.getInputStream(), SchoolMajorLqfsDTO.class, params); + String a="_"; + String key; + List yxSchoolMajorList =yxSchoolMajorService.list(); + Map schoolMajorMap = new HashMap<>(); + List 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 importExcel1(HttpServletRequest request, HttpServletResponse response) { // 获取上传文件对象 @@ -730,7 +816,7 @@ public class YxSchoolMajorController extends JeecgController