|
@@ -1695,13 +1695,18 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, StudentEntity> i
|
|
public void importExamStatus(ExamStatusImportTaskVo vo) {
|
|
public void importExamStatus(ExamStatusImportTaskVo vo) {
|
|
Map<String, StudentEntity> examNumbers = new HashMap<>();
|
|
Map<String, StudentEntity> examNumbers = new HashMap<>();
|
|
Map<String, Boolean> absentMap = new HashMap<>();
|
|
Map<String, Boolean> absentMap = new HashMap<>();
|
|
- List<String> lineList = null;
|
|
|
|
InputStream in = null;
|
|
InputStream in = null;
|
|
try {
|
|
try {
|
|
in = new FileInputStream(vo.getFile());
|
|
in = new FileInputStream(vo.getFile());
|
|
- lineList = IOUtils.readLines(in, "UTF-8");
|
|
|
|
- } catch (IOException e) {
|
|
|
|
- throw new ParameterException("读取文件出错", e);
|
|
|
|
|
|
+ examStatusImportCheck(vo, in,examNumbers,absentMap);
|
|
|
|
+ } catch (ParameterException e) {
|
|
|
|
+ vo.setErrMsg(e.getMessage());
|
|
|
|
+ vo.setStatus(AsyncTaskStatus.FAILED);
|
|
|
|
+ throw e;
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ vo.setErrMsg("系统错误");
|
|
|
|
+ vo.setStatus(AsyncTaskStatus.FAILED);
|
|
|
|
+ throw new ParameterException("系统错误", e);
|
|
} finally {
|
|
} finally {
|
|
if (in != null) {
|
|
if (in != null) {
|
|
try {
|
|
try {
|
|
@@ -1710,6 +1715,49 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, StudentEntity> i
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ if (ExamStatusCheckMode.OVERRIDE.equals(vo.getMode())) {
|
|
|
|
+ for (StudentEntity student : examNumbers.values()) {
|
|
|
|
+ concurrentService.getReadWriteLock(LockType.STUDENT + "-" + student.getId()).writeLock().lock();
|
|
|
|
+ try {
|
|
|
|
+ if (absentMap.get(student.getExamNumber())) {
|
|
|
|
+ student.setExamStatus(ExamStatus.ABSENT);
|
|
|
|
+ } else {
|
|
|
|
+ student.setExamStatus(ExamStatus.OK);
|
|
|
|
+ }
|
|
|
|
+ saveOrUpdate(student);
|
|
|
|
+ vo.setProgressCount(vo.getProgressCount() + 1);
|
|
|
|
+ } finally {
|
|
|
|
+ concurrentService.getReadWriteLock(LockType.STUDENT + "-" + student.getId()).writeLock().unlock();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (ExamStatusCheckMode.COMPARE.equals(vo.getMode())) {
|
|
|
|
+ for (StudentEntity student : examNumbers.values()) {
|
|
|
|
+ concurrentService.getReadWriteLock(LockType.STUDENT + "-" + student.getId()).writeLock().lock();
|
|
|
|
+ try {
|
|
|
|
+ if (absentMap.get(student.getExamNumber()) && !ExamStatus.ABSENT.equals(student.getExamStatus())) {
|
|
|
|
+ student.setExamStatus(ExamStatus.UNCHECK3);
|
|
|
|
+ }
|
|
|
|
+ if (!absentMap.get(student.getExamNumber()) && !ExamStatus.OK.equals(student.getExamStatus())) {
|
|
|
|
+ student.setExamStatus(ExamStatus.UNCHECK3);
|
|
|
|
+ }
|
|
|
|
+ saveOrUpdate(student);
|
|
|
|
+ vo.setProgressCount(vo.getProgressCount() + 1);
|
|
|
|
+ } finally {
|
|
|
|
+ concurrentService.getReadWriteLock(LockType.STUDENT + "-" + student.getId()).writeLock().unlock();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void examStatusImportCheck(ExamStatusImportTaskVo vo, InputStream in,Map<String, StudentEntity> examNumbers , Map<String, Boolean> absentMap) {
|
|
|
|
+ List<String> lineList = null;
|
|
|
|
+ try {
|
|
|
|
+ lineList = IOUtils.readLines(in, "UTF-8");
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
+ throw new ParameterException("读取文件出错", e);
|
|
|
|
+ }
|
|
for (int i = 1; i < lineList.size(); i++) {
|
|
for (int i = 1; i < lineList.size(); i++) {
|
|
String line = lineList.get(i);
|
|
String line = lineList.get(i);
|
|
if (StringUtils.isBlank(line)) {
|
|
if (StringUtils.isBlank(line)) {
|
|
@@ -1725,6 +1773,9 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, StudentEntity> i
|
|
String examNumber = str[0];
|
|
String examNumber = str[0];
|
|
String absent = str[1];
|
|
String absent = str[1];
|
|
String subjectCode = str[2];
|
|
String subjectCode = str[2];
|
|
|
|
+ if(StringUtils.isBlank(subjectCode)||!vo.getSubjectCode().equals(subjectCode)){
|
|
|
|
+ msg.append(" 科目代码不正确");
|
|
|
|
+ }
|
|
if (StringUtils.isBlank(examNumber)) {
|
|
if (StringUtils.isBlank(examNumber)) {
|
|
examNumber = null;
|
|
examNumber = null;
|
|
msg.append(" 准考证号不能为空");
|
|
msg.append(" 准考证号不能为空");
|
|
@@ -1755,39 +1806,6 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, StudentEntity> i
|
|
throw new ParameterException(newError(i + 1, msg.toString()));
|
|
throw new ParameterException(newError(i + 1, msg.toString()));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if (ExamStatusCheckMode.OVERRIDE.equals(vo.getMode())) {
|
|
|
|
- for (StudentEntity student : examNumbers.values()) {
|
|
|
|
- concurrentService.getReadWriteLock(LockType.STUDENT + "-" + student.getId()).writeLock().lock();
|
|
|
|
- try {
|
|
|
|
- if (absentMap.get(student.getExamNumber())) {
|
|
|
|
- student.setExamStatus(ExamStatus.ABSENT);
|
|
|
|
- } else {
|
|
|
|
- student.setExamStatus(ExamStatus.OK);
|
|
|
|
- }
|
|
|
|
- saveOrUpdate(student);
|
|
|
|
- vo.setProgressCount(vo.getProgressCount() + 1);
|
|
|
|
- } finally {
|
|
|
|
- concurrentService.getReadWriteLock(LockType.STUDENT + "-" + student.getId()).writeLock().unlock();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if (ExamStatusCheckMode.COMPARE.equals(vo.getMode())) {
|
|
|
|
- for (StudentEntity student : examNumbers.values()) {
|
|
|
|
- concurrentService.getReadWriteLock(LockType.STUDENT + "-" + student.getId()).writeLock().lock();
|
|
|
|
- try {
|
|
|
|
- if (absentMap.get(student.getExamNumber()) && !ExamStatus.ABSENT.equals(student.getExamStatus())) {
|
|
|
|
- student.setExamStatus(ExamStatus.UNCHECK3);
|
|
|
|
- }
|
|
|
|
- if (!absentMap.get(student.getExamNumber()) && !ExamStatus.OK.equals(student.getExamStatus())) {
|
|
|
|
- student.setExamStatus(ExamStatus.UNCHECK3);
|
|
|
|
- }
|
|
|
|
- saveOrUpdate(student);
|
|
|
|
- vo.setProgressCount(vo.getProgressCount() + 1);
|
|
|
|
- } finally {
|
|
|
|
- concurrentService.getReadWriteLock(LockType.STUDENT + "-" + student.getId()).writeLock().unlock();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
private String newError(int lineNum, String msg) {
|
|
private String newError(int lineNum, String msg) {
|