|
@@ -1,9 +1,13 @@
|
|
|
package cn.com.qmth.stmms.ms.admin.service;
|
|
|
|
|
|
import cn.com.qmth.stmms.ms.core.domain.InspectRange;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.InspectStudent;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.InspectTask;
|
|
|
import cn.com.qmth.stmms.ms.core.domain.Paper;
|
|
|
-import cn.com.qmth.stmms.ms.core.repository.InspectRangeRepo;
|
|
|
-import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.user.Role;
|
|
|
+import cn.com.qmth.stmms.ms.core.repository.*;
|
|
|
+import cn.com.qmth.stmms.ms.core.vo.Subject;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -23,11 +27,105 @@ public class InspectRangeService {
|
|
|
@Autowired
|
|
|
private PaperRepo paperRepo;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private InspectTaskRepo inspectTaskRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MarkUserRepo markUserRepo;
|
|
|
+
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InspectStudentRepo inspectStudentRepo;
|
|
|
+
|
|
|
@Transactional
|
|
|
public void start(Long id) {
|
|
|
+ //将本范围激活,并将其他范围设置成未激活
|
|
|
InspectRange inspectRange = inspectRangeRepo.findOne(id);
|
|
|
- inspectRange.setEnabled(true);
|
|
|
+ inspectRange.setEditable(false);
|
|
|
+ inspectRange.setActive(true);
|
|
|
inspectRangeRepo.save(inspectRange);
|
|
|
+
|
|
|
+ List<InspectRange> otherRanges = inspectRangeRepo.findByWorkId(inspectRange.getWorkId());
|
|
|
+ for (InspectRange r : otherRanges) {
|
|
|
+ if (!Objects.equals(r.getId(), inspectRange.getId())) {
|
|
|
+ r.setActive(false);
|
|
|
+ inspectRangeRepo.save(r);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //判断是否已经有复查任务了
|
|
|
+ int taskCount = inspectTaskRepo.countByWorkIdAndInspectRangeId(inspectRange.getWorkId(), inspectRange.getId());
|
|
|
+ if (taskCount > 0) {
|
|
|
+ //不要重新生产任务
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<MarkUser> scInspectors = markUserRepo.findByWorkIdAndSubjectAndRole(inspectRange.getWorkId(), Subject.SC, Role.INSPECTOR);
|
|
|
+ List<MarkUser> sxInspectors = markUserRepo.findByWorkIdAndSubjectAndRole(inspectRange.getWorkId(), Subject.SX, Role.INSPECTOR);
|
|
|
+ List<MarkUser> smInspectors = markUserRepo.findByWorkIdAndSubjectAndRole(inspectRange.getWorkId(), Subject.SM, Role.INSPECTOR);
|
|
|
+
|
|
|
+
|
|
|
+ List<InspectStudent> inspectStudents = inspectStudentRepo.findByInspectRangeId(id);
|
|
|
+
|
|
|
+ List<InspectTask> inspectTasks = new ArrayList<>();
|
|
|
+ for (InspectStudent inspectStudent : inspectStudents) {
|
|
|
+ String examNumber = inspectStudent.getExamNumber();
|
|
|
+ Paper scPaper = paperRepo.findByWorkIdAndSubjectAndExamNumber(inspectRange.getWorkId(), Subject.SC, examNumber);
|
|
|
+ Paper sxPaper = paperRepo.findByWorkIdAndSubjectAndExamNumber(inspectRange.getWorkId(), Subject.SX, examNumber);
|
|
|
+ Paper smPaper = paperRepo.findByWorkIdAndSubjectAndExamNumber(inspectRange.getWorkId(), Subject.SM, examNumber);
|
|
|
+
|
|
|
+
|
|
|
+ //色彩的
|
|
|
+ for (MarkUser inspector : scInspectors) {
|
|
|
+ InspectTask inspectTask = new InspectTask();
|
|
|
+
|
|
|
+ inspectTask.setMarkerId(inspector.getId());
|
|
|
+ inspectTask.setMarkerName(inspector.getName());
|
|
|
+ inspectTask.setSubject(inspector.getSubject());
|
|
|
+ inspectTask.setWorkId(inspectRange.getWorkId());
|
|
|
+ inspectTask.setInspectRangeId(id);
|
|
|
+ inspectTask.setPaper(scPaper);
|
|
|
+ inspectTask.setQuestionId(scPaper.getQuestionId());
|
|
|
+ inspectTask.setCreatedOn(new Date());
|
|
|
+
|
|
|
+ inspectTasks.add(inspectTask);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (MarkUser inspector : sxInspectors) {
|
|
|
+ InspectTask inspectTask = new InspectTask();
|
|
|
+
|
|
|
+ inspectTask.setMarkerId(inspector.getId());
|
|
|
+ inspectTask.setMarkerName(inspector.getName());
|
|
|
+ inspectTask.setSubject(inspector.getSubject());
|
|
|
+ inspectTask.setWorkId(inspectRange.getWorkId());
|
|
|
+ inspectTask.setInspectRangeId(id);
|
|
|
+ inspectTask.setPaper(sxPaper);
|
|
|
+ inspectTask.setQuestionId(sxPaper.getQuestionId());
|
|
|
+ inspectTask.setCreatedOn(new Date());
|
|
|
+
|
|
|
+ inspectTasks.add(inspectTask);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (MarkUser inspector : smInspectors) {
|
|
|
+ InspectTask inspectTask = new InspectTask();
|
|
|
+
|
|
|
+ inspectTask.setMarkerId(inspector.getId());
|
|
|
+ inspectTask.setMarkerName(inspector.getName());
|
|
|
+ inspectTask.setSubject(inspector.getSubject());
|
|
|
+ inspectTask.setWorkId(inspectRange.getWorkId());
|
|
|
+ inspectTask.setInspectRangeId(id);
|
|
|
+ inspectTask.setPaper(smPaper);
|
|
|
+ inspectTask.setQuestionId(smPaper.getQuestionId());
|
|
|
+ inspectTask.setCreatedOn(new Date());
|
|
|
+
|
|
|
+ inspectTasks.add(inspectTask);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ inspectTaskRepo.save(inspectTasks);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
@@ -97,16 +195,31 @@ public class InspectRangeService {
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+ inspectRange.setActive(false);
|
|
|
+ inspectRange.setEditable(true);
|
|
|
if (inspectRange.getId() != null) {
|
|
|
//如果是修改操作,要将先前标记的学生试卷改回来
|
|
|
- paperRepo.resetInspectRange(inspectRange.getId());
|
|
|
+// paperRepo.resetInspectRange(inspectRange.getId());
|
|
|
+ inspectStudentRepo.deleteByInspectRangeId(inspectRange.getId());
|
|
|
}
|
|
|
|
|
|
- //再重新标记
|
|
|
- paperRepo.markInspectRange(inspectRange.getId(), examNumbers);
|
|
|
-
|
|
|
inspectRange.setStudentCount(examNumbers.size());
|
|
|
- inspectRangeRepo.save(inspectRange);
|
|
|
+ InspectRange savedRange = inspectRangeRepo.save(inspectRange);
|
|
|
+
|
|
|
+
|
|
|
+ if (examNumbers.size() > 0) {
|
|
|
+
|
|
|
+ //再重新标记
|
|
|
+ //paperRepo.markInspectRange(inspectRange.getId(), examNumbers);
|
|
|
+ List<InspectStudent> inspectStudents = new ArrayList<>();
|
|
|
+ for (String examNumber : examNumbers) {
|
|
|
+ InspectStudent inspectStudent = new InspectStudent();
|
|
|
+ inspectStudent.setExamNumber(examNumber);
|
|
|
+ inspectStudent.setInspectRangeId(savedRange.getId());
|
|
|
+ inspectStudents.add(inspectStudent);
|
|
|
+ }
|
|
|
+ inspectStudentRepo.save(inspectStudents);
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
}
|