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 0372ec8..5ad6886 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 @@ -214,7 +214,7 @@ public class YxHistoryMajorEnrollController extends JeecgController majrseTest1(){ - String majorType = "音乐类"; + String majorType = "表演类"; LambdaQueryWrapper helqw = new LambdaQueryWrapper<>(); helqw.eq(YxHistoryMajorEnroll::getYear,"2024"); helqw.eq(YxHistoryMajorEnroll::getMajorType, majorType); @@ -250,6 +250,9 @@ public class YxHistoryMajorEnrollController extends JeecgController importExcel(HttpServletRequest request, HttpServletResponse response) { + public Result importExcel1(HttpServletRequest request, HttpServletResponse response) { MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map fileMap = multipartRequest.getFileMap(); int nowYear = DateUtils.getYear(); // 当前年 @@ -492,13 +495,25 @@ public class YxHistoryMajorEnrollController extends JeecgController historyScoreControlLineMap = yxHistoryScoreControlLineService.allMaps(); + // Map historyScoreControlLineMap = yxHistoryScoreControlLineService.allMaps(); + Map historyScoreControlLineMap = new LinkedHashMap<>(); + LambdaQueryWrapper yhsclWrapper = new LambdaQueryWrapper<>(); + yhsclWrapper.in(YxHistoryScoreControlLine::getBatch,"本科","高职高专","本科A段","本科B段"); +// yhsclWrapper.eq(YxHistoryScoreControlLine::getYear,"2024"); + // yhsclWrapper.like(YxHistoryScoreControlLine::getProfessionalCategory,); + List yhsclList = yxHistoryScoreControlLineService.list(yhsclWrapper); + String key = null; + for (YxHistoryScoreControlLine yhscl : yhsclList) { + key = yhscl.getYear()+"_" +yhscl.getCategory()+"-"+ yhscl.getBatch()+"-"+yhscl.getProfessionalCategory(); + historyScoreControlLineMap.put(key,yhscl); + } + Map majorMap = yxMajorService.mapsForMajorNameBatch(); //Map schoolNameMap = yxSchoolService.mapsForSchoolName(); //Collection schoolCodeList = schoolNameMap.values(); String schoolCode = null; String schoolName = null; - String majorName = null, mn = null, key = null; + String majorName = null, mn = null; String majorType = null; String batch = null; String enrollmentCode = null; @@ -532,6 +547,7 @@ public class YxHistoryMajorEnrollController extends JeecgController smQueryWrapper = new LambdaQueryWrapper<>(); for (YxHistoryMajorEnroll yxHistoryMajorEnroll : list) { schoolCode = yxHistoryMajorEnroll.getSchoolCode();//学校代码 schoolName = yxHistoryMajorEnroll.getSchoolName();//学校名称 @@ -563,16 +579,13 @@ public class YxHistoryMajorEnrollController extends JeecgController importExcel(HttpServletRequest request, HttpServletResponse response) { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map fileMap = multipartRequest.getFileMap(); + int nowYear = DateUtils.getYear(); // 当前年 + int nowMonth = DateUtils.getMonth(); // 当前月 + 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 = 0; + try { + //加载省控线 + // Map historyScoreControlLineMap = yxHistoryScoreControlLineService.allMaps(); + Map historyScoreControlLineMap = new LinkedHashMap<>(); + LambdaQueryWrapper yhsclWrapper = new LambdaQueryWrapper<>(); + yhsclWrapper.in(YxHistoryScoreControlLine::getBatch,"本科","高职高专","本科A段","本科B段"); +// yhsclWrapper.eq(YxHistoryScoreControlLine::getYear,"2024"); + // yhsclWrapper.like(YxHistoryScoreControlLine::getProfessionalCategory,); + List yhsclList = yxHistoryScoreControlLineService.list(yhsclWrapper); + String key = null; + for (YxHistoryScoreControlLine yhscl : yhsclList) { + key = yhscl.getYear()+"_" +yhscl.getCategory()+"-"+ yhscl.getBatch()+"-"+yhscl.getProfessionalCategory(); + historyScoreControlLineMap.put(key,yhscl); + } + Map majorMap = yxMajorService.mapsForMajorNameBatch(); + //Map schoolNameMap = yxSchoolService.mapsForSchoolName(); + //Collection schoolCodeList = schoolNameMap.values(); + String schoolCode = null; + String schoolName = null; + String majorName = null, mn = null; + String majorType = null; + String batch = null; + String enrollmentCode = null; + String year = null; + String category = null; + String rulesEnrollProbability = null; + String probabilityOperator = null; + BigDecimal admissionLine = null; + BigDecimal culturalScore = null; + BigDecimal specialScore = null; + BigDecimal wenhuaBili = null; + BigDecimal zhuanyeBili = null; + Integer enrollNum = null; + Integer admissionNum = null; + String detail = null; + String majorTypeChild = null; + String mainSubjects = null; + YxMajor major = null; + YxSchoolMajor schoolMajor = null; + YxHistoryScoreControlLine historyScoreControlLine = null; + YxHistoryMajorEnroll oldYxHistoryMajorEnroll = null; + LambdaQueryWrapper yxHistoryMajorEnrollLambdaQueryWrapper = new LambdaQueryWrapper<>(); + List updateList = new ArrayList<>(); + List schoolMajorList = new ArrayList<>(); + List list = ExcelImportUtil.importExcel(file.getInputStream(), YxHistoryMajorEnroll.class, params); + index = 3; + List schoolCodeList = list.stream().filter(l -> StringUtils.isNotBlank(l.getSchoolCode())).map(l -> l.getSchoolCode()).collect(Collectors.toList()); + AssertUtils.notTrue(CollectionUtils.isEmpty(schoolCodeList),"未读取到学校代码"); + Map schoolMajorMap = new LinkedHashMap<>(); + for (YxSchoolMajor yxSchoolMajor : yxSchoolMajorService.list(new LambdaQueryWrapper().in(YxSchoolMajor::getSchoolCode, schoolCodeList))) { + key = yxSchoolMajor.getSchoolCode()+"_"+yxSchoolMajor.getMajorName()+"_"+yxSchoolMajor.getBatch()+"_"+yxSchoolMajor.getCategory(); + schoolMajorMap.put(key,yxSchoolMajor); + } + LambdaQueryWrapper smQueryWrapper = new LambdaQueryWrapper<>(); + for (YxHistoryMajorEnroll yxHistoryMajorEnroll : list) { + schoolCode = yxHistoryMajorEnroll.getSchoolCode();//学校代码 + schoolName = yxHistoryMajorEnroll.getSchoolName();//学校名称 + majorName = yxHistoryMajorEnroll.getMajorName();//专业名称 + batch = yxHistoryMajorEnroll.getBatch();//批次 + if (StringUtils.isBlank(schoolCode) && StringUtils.isBlank(schoolName) && StringUtils.isBlank(majorName)) { + continue; + } + index++; + year = yxHistoryMajorEnroll.getYear(); + enrollmentCode = yxHistoryMajorEnroll.getEnrollmentCode();//招生代码 + majorType = yxHistoryMajorEnroll.getMajorType();//专业类型 + category = yxHistoryMajorEnroll.getCategory();//科类 + rulesEnrollProbability = yxHistoryMajorEnroll.getRulesEnrollProbability();//录取方式 + probabilityOperator = yxHistoryMajorEnroll.getProbabilityOperator();//录取概率计算规则运算符 + admissionLine = yxHistoryMajorEnroll.getAdmissionLine();//录取线 + enrollNum = yxHistoryMajorEnroll.getEnrollNum();//招生人数 + admissionNum = yxHistoryMajorEnroll.getAdmissionNum();//录取人数 + detail = yxHistoryMajorEnroll.getDetail();//备注 + majorTypeChild = yxHistoryMajorEnroll.getMajorTypeChild(); + mainSubjects = yxHistoryMajorEnroll.getMainSubjects(); + AssertUtils.notEmpty(schoolCode, String.format("行[%s],请输入学校代码", index)); + AssertUtils.notEmpty(schoolName, String.format("行[%s],请输入学校名称", index)); + AssertUtils.notEmpty(batch, String.format("行[%s],请输入批次", index)); + AssertUtils.notEmpty(enrollmentCode, String.format("行[%s],请输入专业代码", index)); + AssertUtils.notEmpty(majorName, String.format("行[%s],请输入专业名称", index)); + AssertUtils.notEmpty(majorType, String.format("行[%s],请输入专业类型", index)); + //========================================================================= + AssertUtils.notEmpty(year, String.format("行[%s],请输入年份", index)); + AssertUtils.notEmpty(category, String.format("行[%s],请输入科类", index)); + //AssertUtils.notEmpty(rulesEnrollProbability, String.format("行[%s],请输入录取方式", index)); + // AssertUtils.notEmpty(probabilityOperator, String.format("行[%s],请输入录取方式运算符", index)); + + // 如果录取线没有,则替换为0 + //AssertUtils.notNull(admissionLine, String.format("行[%s],请输入录取线", index)); + if(admissionLine == null){ + admissionLine = new BigDecimal(0); + } +// AssertUtils.notNull(enrollNum, String.format("行[%s],请输入招生人数", index)); +// AssertUtils.notNull(admissionNum, String.format("行[%s],请输入录取人数", index)); + //========================================================================= + majorName = majorName.replace("(", "(").replace(")", ")"); + // 判断 majorName 是否包含(符号,如果包含,则判断最后一个字符是否为),不是则补 + if (majorName.contains("(") && majorName.charAt(majorName.length() - 1) != ')') { + majorName += ")"; + } + + yxHistoryMajorEnroll.setMajorName(majorName); + int i = majorName.indexOf("("); + mn = majorName; + if (i != -1) { + mn = majorName.substring(0, i); + } + + if(yxHistoryMajorEnroll.getBatch().contains("专")){ + mn+="_专"; + }else{ + mn+="_本"; + } + major = majorMap.get(mn); + AssertUtils.notNull(major, String.format("行[%s],专业未在系统中找到", index)); + + if(index == 267){ + System.out.println("qvq"); + } + + yxHistoryMajorEnroll.setMajorCode(major.getMajorCode()); + + if(enrollmentCode.length() == 1){ + enrollmentCode = "0" + enrollmentCode; + } + + if(schoolCode.length() == 3){ + schoolCode = "0" + schoolCode; + }else if(schoolCode.length() == 2){ + schoolCode = "00" + schoolCode; + }else if(schoolCode.length() == 1){ + schoolCode = "000" + schoolCode; + } + + if ("提前批".equals(batch)) { + batch = "本科提前批"; + } + + //省控线 + if (year.equals("2024")) { + if("高职高专".equals(yxHistoryMajorEnroll.getBatch())){ + key = "2024_"+ category +"-高职高专"; + }else{ + key = "2024_"+ category +"-本科"; + } + }else{ + if("高职高专".equals(yxHistoryMajorEnroll.getBatch())){ + key = year+"_" + yxHistoryMajorEnroll.getCategory() + "-" + yxHistoryMajorEnroll.getBatch(); + }else{ + key = year+"_" + yxHistoryMajorEnroll.getCategory() + "-"+ yxHistoryMajorEnroll.getBatch(); + } + } + + if("体育".contains(yxHistoryMajorEnroll.getMajorType())){ + if(batch.contains("专科") || batch.contains("高职高专")){ + yxHistoryMajorEnroll.setBatch("高职高专"); + }else { + yxHistoryMajorEnroll.setBatch("本科"); + } + }else if (batch.contains("提前")) { + yxHistoryMajorEnroll.setBatch("提前批"); + } + + // 查询招录信息 + schoolMajor = new YxSchoolMajor(); + smQueryWrapper.clear(); + smQueryWrapper.eq(YxSchoolMajor::getSchoolCode, schoolCode); + smQueryWrapper.eq(YxSchoolMajor::getEnrollmentCode, enrollmentCode); + smQueryWrapper.eq(YxSchoolMajor::getMajorName, majorName); + smQueryWrapper.eq(YxSchoolMajor::getBatch, batch); + smQueryWrapper.eq(YxSchoolMajor::getCategory, category); + smQueryWrapper.eq(YxSchoolMajor::getMajorType, majorType); + + //查询库中是否有该条数据 + yxHistoryMajorEnrollLambdaQueryWrapper.clear(); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getYear, year); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getMajorName, majorName); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getEnrollmentCode, enrollmentCode); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getSchoolCode, schoolCode); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getBatch, batch.contains("提前批") ? "提前批" : batch); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getCategory, category); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getMajorType, majorType); + if(majorType.equals("音乐类") || majorType.equals("表演类")){ + if(StringUtils.isNotBlank(majorTypeChild)){ + smQueryWrapper.eq(YxSchoolMajor::getMajorTypeChild, majorTypeChild); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getMajorTypeChild, majorTypeChild); + } + if (StringUtils.isNotBlank(mainSubjects)) { + smQueryWrapper.eq(YxSchoolMajor::getMainSubjects, mainSubjects); + yxHistoryMajorEnrollLambdaQueryWrapper.eq(YxHistoryMajorEnroll::getMainSubjects, mainSubjects); + } + } + + schoolMajor = yxSchoolMajorService.getOne(smQueryWrapper); + if(schoolMajor!=null){ + schoolMajor.setBatch("本科A段"); + schoolMajorList.add(schoolMajor); + }else{ + System.out.println("不存在"); + } + + try { + oldYxHistoryMajorEnroll = yxHistoryMajorEnrollService.getOne(yxHistoryMajorEnrollLambdaQueryWrapper); + }catch (TooManyResultsException e){ + throw new JeecgBootException("该数据已存在多条该历年数据"); + } + + if (oldYxHistoryMajorEnroll == null) { + System.out.println("sout111"); + // updateList.add(yxHistoryMajorEnroll); + } else { + oldYxHistoryMajorEnroll.setBatch("本科A段"); + updateList.add(oldYxHistoryMajorEnroll); + } + } + if (CollectionUtils.isNotEmpty(updateList)) { + yxHistoryMajorEnrollService.saveOrUpdateBatch(updateList); + } + if(CollectionUtils.isNotEmpty(schoolMajorList)){ + yxSchoolMajorService.saveOrUpdateBatch(schoolMajorList); + } + log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒"); + return Result.ok("文件导入成功!数据行数:" + list.size()); + } catch (Exception e) { + 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("文件导入失败!"); + } }