@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public String rankScoreIn(MultipartFile file, String classid,
String testname, String grad, String subject) {
StringBuilder failureMsg = new StringBuilder();
int successNum = 0;
int failureNum = 0;
Classname classname = null;
// 班级信息
if (!StringUtils.isEmpty(classid)) {
classname = classnameService.get(classid);
grad = classname.getGrad();
}
Organization organization = SiteUtil.getSite().getOrg();
try {
ImportExcel ei = new ImportExcel(file, 1, 0);
String subjectid = DictUtils.getDictValue(subject,
Constants.SUBJECT, "0");
// 获得试卷信息
List<Testpaper> testpaperls = testpaperService.findByGrad(grad,
testname, new Integer(subjectid));
Testpaper testpaper = null;
if (testpaperls != null && testpaperls.size() > 0) {
testpaper = testpaperls.get(0);
} else {
return "<br/>年级:"+grad+" 没有"+subject+"科目试卷";
}
// 班级题目质量分析
List<StudentRank> list = ei.getDataListForScore(StudentRank.class,
3, subject);
for (StudentRank studentRank : list) {
try {
successNum = this.saveRankScore(studentRank, classname,
testpaper, organization, successNum);
} catch (ConstraintViolationException ex) {
failureMsg.append("<br/>考号: " + studentRank.getTestno()
+ " 导入学生成绩排名失败:");
List<String> messageList = BeanValidators
.extractPropertyAndMessageAsList(ex, ": ");
for (String message : messageList) {
failureMsg.append(message + "; ");
failureNum++;
}
} catch (Exception ex) {
ex.printStackTrace();
failureMsg.append("<br/>考号: " + studentRank.getTestno()
+ " 导入学生成绩排名失败:" + ex.getMessage());
}
}
if (failureNum > 0) {
failureMsg.insert(0, ",失败 " + failureNum + " 条问题得分,导入信息如下:");
}
} catch (Exception e) {
e.printStackTrace();
return "导入问题得分失败!失败信息:" + e.getMessage();
}
return "已成功导入 " + successNum + " 条问题得分" + failureMsg.toString();
}
public int saveRankScore(StudentRank studentRank, Classname classname,
Testpaper testpaper, Organization organization, int successNum) {
// 判断学生是否存在
String classnamestr = studentRank.getClassname().getClassname();
Classname classnameexist = classnameService.findByGradclass(
testpaper.getGrad(), classnamestr);
if (null == classnameexist) {
// 不存在则创建
if (classname == null) {
classname =studentRank.getClassname();
classname.setGrad(testpaper.getGrad());
classname.setClassname(classnamestr);
classname.setSchool(organization);
classname.setCreateTime(new Date());
classnameService.save(classname);
Student student = studentRank.getStudent();
student.setClassname(classname);
student.setGrad(testpaper.getGrad());
student.setPassword("123456");
student.setCreateTime(new Date());
studentService.save(student);
studentRank.setClassname(classname);
studentRank.setStudent(student);
} else {
// 如果班级存在判断学生是否存在??????????????
Student student = this.createStudent(
studentRank.getStudent(), classname, testpaper);
studentRank.setClassname(classname);
studentRank.setStudent(student);
}
} else {
// 如果班级存在判断学生是否存在??????????????
Student student = this.createStudent(studentRank.getStudent(),
classnameexist, testpaper);
studentRank.setClassname(classnameexist);
studentRank.setStudent(student);
}
studentRank.setTestpaper(testpaper);
studentRank.setCreateTime(new Date());
studentRankService.save(studentRank);
successNum++;
return successNum;
}
代码
if (null == classnameexist) {
// 不存在则创建
if (classname == null) { 这两个条件都满足时,只保存最后一条,其他条件则可以保存正常
请问是什么原因?