This commit is contained in:
zhouwentao 2024-06-19 21:46:25 +08:00
parent 850caa7547
commit ea7bffc60c
2 changed files with 219 additions and 1 deletions

View File

@ -260,7 +260,172 @@ public class YxSchoolMajorController extends JeecgController<YxSchoolMajor, IYxS
@RequiresPermissions("yx:yx_school_major:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, YxSchoolMajor.class);
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<YxSchoolMajor> list = ExcelImportUtil.importExcel(file.getInputStream(), YxSchoolMajor.class, params);
String a="_";
String key;
List<YxSchoolMajor> yxSchoolMajorList =yxSchoolMajorService.list();
Map<String,YxSchoolMajor> schoolMajorMap = new HashMap<>();
for (YxSchoolMajor item : yxSchoolMajorList) {
key = item.getSchoolCode()+a+item.getBatch()+a+item.getMajorName()+a+item.getCategory();
schoolMajorMap.put(key,item);
}
Map<String, YxMajor> majorMap = yxMajorService.mapsForMajorName();
List<YxSchoolMajor> updatesList = new ArrayList<>();
YxMajor major = null;
String majorName = null;
String mn = null;
String majorType = null;
String mainSubjects = null;
String majorTypeChild = null;
List<String> 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<YxSchoolMajor, IYxS
List<YxSchoolMajor> 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<YxSchoolMajor, IYxS
yxSchoolMajor.setRulesEnrollProbabilitySx(item.getRulesEnrollProbabilitySx());
yxSchoolMajor.setRulesEnrollProbability(probabilityOperator);
yxSchoolMajor.setProbabilityOperator(probabilityOperator);
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.updateBatchById(updatesList);

View File

@ -5,6 +5,7 @@ import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author ZhouWenTao
@ -62,4 +63,36 @@ public class SchoolMajorLqfsDTO implements Serializable {
@Excel(name = "内部录取方式", width = 15)
@ApiModelProperty(value = "内部录取方式")
private java.lang.String privateRulesEnrollProbability;
/**备注*/
@Excel(name = "备注", width = 15)
@ApiModelProperty(value = "备注")
private java.lang.String detail;
/**
* 文化分限制
*/
@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;
}