From ea7bffc60ca7e31587478ed6a3403248802082f9 Mon Sep 17 00:00:00 2001 From: zhouwentao <1577701412@qq.com> Date: Wed, 19 Jun 2024 21:46:25 +0800 Subject: [PATCH] updates --- .../controller/YxSchoolMajorController.java | 187 +++++++++++++++++- .../modules/yx/dto/SchoolMajorLqfsDTO.java | 33 ++++ 2 files changed, 219 insertions(+), 1 deletion(-) diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxSchoolMajorController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxSchoolMajorController.java index 924eabf..ed20644 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxSchoolMajorController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxSchoolMajorController.java @@ -260,7 +260,172 @@ public class YxSchoolMajorController extends JeecgController importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, YxSchoolMajor.class); + 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(), YxSchoolMajor.class, params); + String a="_"; + String key; + List yxSchoolMajorList =yxSchoolMajorService.list(); + Map schoolMajorMap = new HashMap<>(); + for (YxSchoolMajor item : yxSchoolMajorList) { + key = item.getSchoolCode()+a+item.getBatch()+a+item.getMajorName()+a+item.getCategory(); + schoolMajorMap.put(key,item); + } + Map majorMap = yxMajorService.mapsForMajorName(); + List updatesList = new ArrayList<>(); + YxMajor major = null; + String majorName = null; + String mn = null; + String majorType = null; + String mainSubjects = null; + String majorTypeChild = null; + List batchList = Arrays.asList("提前批", "本科A段", "本科B段", "本科", "高职高专"); + for (YxSchoolMajor item : list) { + index++; + if (org.apache.commons.lang.StringUtils.isBlank(item.getSchoolCode()) && org.apache.commons.lang.StringUtils.isBlank(item.getMajorName())) { + continue; + } + majorType = item.getMajorType(); + mainSubjects = item.getMainSubjects(); + majorTypeChild = item.getMajorTypeChild(); + AssertUtils.notEmpty(item.getSchoolCode(), String.format("行[%s],请输入学校代码", index)); + AssertUtils.notEmpty(item.getBatch(), String.format("行[%s],请输入批次", index)); + AssertUtils.notEmpty(item.getEnrollmentCode(), String.format("行[%s],请输入专业代码", index)); + AssertUtils.notEmpty(item.getMajorName(), String.format("行[%s],请输入专业名称", index)); + AssertUtils.notEmpty(item.getMajorType(), String.format("行[%s],请输入专业类型", index)); + AssertUtils.notEmpty(item.getCategory(), String.format("行[%s],请输入科类", index)); + /*AssertUtils.notEmpty(item.getRulesEnrollProbabilitySx(), String.format("行[%s],请输入录取方式缩写", index)); + AssertUtils.notEmpty(item.getRulesEnrollProbability(), String.format("行[%s],请输入对外录取方式", index)); + AssertUtils.notEmpty(item.getProbabilityOperator(), String.format("行[%s],请输入对外录取方式运算符", index)); + AssertUtils.notEmpty(item.getPrivateRulesEnrollProbability(), String.format("行[%s],请输入内部录取方式", index)); + AssertUtils.notEmpty(item.getPrivateProbabilityOperator(), String.format("行[%s],请输入内部录取方式运算符", index));*/ + + majorName = item.getMajorName().replace("(", "(").replace(")", ")"); + item.setMajorName(majorName); + //从库中找专业代码 + int i = majorName.indexOf("("); + mn = majorName; + if (i != -1) { + mn = majorName.substring(0, i); + } + major = majorMap.get(mn); + AssertUtils.notNull(major, String.format("行[%s],专业未在系统中找到", index)); + item.setMajorCode(major.getMajorCode()); + + //判断批次是否有效 + AssertUtils.isTrue(batchList.contains(item.getBatch()), String.format("行[%s],批次 无效", index)); + //判断专业类型 + if ("舞蹈类".equals(majorType)) { + AssertUtils.notEmpty(mainSubjects, String.format("行[%s],未识别到舞蹈类型-主考科目", index)); + if (mainSubjects.contains("艺术舞蹈")) { + item.setMainSubjects("艺术舞蹈"); + }else if (mainSubjects.contains("国际标准")) { + item.setMainSubjects("国际标准"); + }else { + throw new JeecgBootException(String.format("行[%s],未识别到舞蹈类型-主考科目", index)); + } + + } else if(majorType.contains("音乐类")){ + //主考科目 + if (mainSubjects.contains("器乐")&&mainSubjects.contains("声乐")) { + item.setMainSubjects("器乐,声乐"); + } else if (mainSubjects.contains("器乐")) { + item.setMainSubjects("器乐"); + }else if (mainSubjects.contains("声乐")) { + item.setMainSubjects("声乐"); + }else { + throw new JeecgBootException(String.format("行[%s],未识别到音乐类型-主考科目", index)); + } + //专业子类 + if (mainSubjects.contains("音乐表演")) { + item.setMainSubjects("音乐表演"); + }else if (mainSubjects.contains("音乐教育")) { + item.setMainSubjects("音乐教育"); + }else { + throw new JeecgBootException(String.format("行[%s],未识别到音乐类型-专业子级类别", index)); + } + }else if ("表演类".equals(majorType)) { + AssertUtils.notEmpty(mainSubjects, String.format("行[%s],未识别到表演类型-主考科目", index)); + if (mainSubjects.contains("服装表演")) { + item.setMainSubjects("服装表演"); + }else if (mainSubjects.contains("戏剧影视表演")) { + item.setMainSubjects("戏剧影视表演"); + }else if (mainSubjects.contains("戏剧影视导演")) { + item.setMainSubjects("戏剧影视导演"); + }else if (mainSubjects.contains("兼报")) { + item.setMainSubjects("兼报"); + }else { + throw new JeecgBootException(String.format("行[%s],未识别到表演类型-主考科目", index)); + } + } + } + + index=3; + YxSchoolMajor yxSchoolMajor; + String probabilityOperator =""; + for (YxSchoolMajor item : list) { + index++; + if (org.apache.commons.lang.StringUtils.isBlank(item.getSchoolCode()) && org.apache.commons.lang.StringUtils.isBlank(item.getMajorName())) { + continue; + } + key = item.getSchoolCode()+a+item.getBatch()+a+item.getMajorName()+a+item.getCategory(); + + yxSchoolMajor = schoolMajorMap.get(key); + yxSchoolMajor.setRulesEnrollProbabilitySx(item.getRulesEnrollProbabilitySx()); + yxSchoolMajor.setRulesEnrollProbability(item.getRulesEnrollProbability()); + yxSchoolMajor.setProbabilityOperator(item.getProbabilityOperator()); + yxSchoolMajor.setPrivateRulesEnrollProbability(item.getPrivateRulesEnrollProbability()); + yxSchoolMajor.setPrivateProbabilityOperator(item.getPrivateRulesEnrollProbability()); + + if (StringUtils.isNotBlank(item.getDetail())) { + yxSchoolMajor.setDetail(item.getDetail()); + } + if (item.getChineseScoreLimitation()!=null) { + yxSchoolMajor.setChineseScoreLimitation(item.getChineseScoreLimitation()); + } + if (item.getChineseScoreLimitation()!=null) { + yxSchoolMajor.setEnglishScoreLimitation(item.getEnglishScoreLimitation()); + } + if (item.getChineseScoreLimitation()!=null) { + yxSchoolMajor.setCulturalScoreLimitation(item.getCulturalScoreLimitation()); + } + if (item.getChineseScoreLimitation()!=null) { + yxSchoolMajor.setProfessionalScoreLimitation(item.getProfessionalScoreLimitation()); + } + updatesList.add(yxSchoolMajor); + } + service.saveOrUpdateBatch(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("文件导入失败!"); } @@ -291,10 +456,15 @@ public class YxSchoolMajorController extends JeecgController updatesList = new ArrayList<>(); for (YxSchoolMajor item : yxSchoolMajorList) { index++; + AssertUtils.notEmpty(item.getSchoolCode(), String.format("行[%s],请输入学校代码", index)); + AssertUtils.notEmpty(item.getBatch(), String.format("行[%s],请输入批次", index)); + AssertUtils.notEmpty(item.getMajorName(), String.format("行[%s],请输入专业名称", index)); + AssertUtils.notEmpty(item.getCategory(), String.format("行[%s],请输入科类", index)); key = item.getSchoolCode()+a+item.getBatch()+a+item.getMajorName()+a+item.getCategory(); schoolMajorMap.put(key,item); } + index=3; YxSchoolMajor yxSchoolMajor; String probabilityOperator =""; for (SchoolMajorLqfsDTO item : list) { @@ -318,6 +488,21 @@ public class YxSchoolMajorController extends JeecgController