|
@@ -21,12 +21,10 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import cn.com.qmth.stmms.biz.common.BaseQueryService;
|
|
|
import cn.com.qmth.stmms.biz.exam.bean.ExamStudentVo;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
|
|
|
-import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
|
|
|
import cn.com.qmth.stmms.biz.exam.model.InspectHistory;
|
|
|
import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
|
|
|
import cn.com.qmth.stmms.biz.exam.query.InspectQuery;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
|
|
|
-import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.InspectHistoryService;
|
|
|
import cn.com.qmth.stmms.biz.exam.service.InspectedService;
|
|
|
import cn.com.qmth.stmms.biz.utils.TaskLock;
|
|
@@ -43,8 +41,6 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
|
|
|
@Autowired
|
|
|
private ExamStudentService studentService;
|
|
|
|
|
|
- @Autowired
|
|
|
- private ExamSubjectService examSubjectService;
|
|
|
|
|
|
@Autowired
|
|
|
private InspectHistoryService inspectHistoryService;
|
|
@@ -109,10 +105,17 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
|
|
|
}
|
|
|
whereSql.append(" and s.subject_code in ('" + StringUtils.join(in, "','") + "') ");
|
|
|
}
|
|
|
- whereSql.append(" and s.subjective_status ='MARKED'");
|
|
|
- if (query.getInspected() != null) {
|
|
|
- whereSql.append(" and s.inspected =" + (query.getInspected() ? 1 : 0));
|
|
|
+ if (query.getRejected() != null) {
|
|
|
+ if (query.getRejected()) {
|
|
|
+ whereSql.append(" and exists (select 1 from eb_subjective_score ess where ess.student_id=s.id and rejected=1) ");
|
|
|
+ }else {
|
|
|
+ whereSql.append(" and not exists (select 1 from eb_subjective_score ess where ess.student_id=s.id and rejected=1) ");
|
|
|
+ }
|
|
|
}
|
|
|
+ whereSql.append(" and s.subjective_status ='MARKED'");
|
|
|
+// if (query.getInspected() != null) {
|
|
|
+// whereSql.append(" and s.inspected =" + (query.getInspected() ? 1 : 0));
|
|
|
+// }
|
|
|
if (query.getStartScore() != null) {
|
|
|
whereSql.append(" and (cast(s.objective_score as decimal(10,3))+cast(s.subjective_score as decimal(10,3))) >="
|
|
|
+ query.getStartScore());
|
|
@@ -227,6 +230,24 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
|
|
|
query.setInspected(inspected);
|
|
|
return count;
|
|
|
}
|
|
|
+
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ @Override
|
|
|
+ public List<Integer> needInspectIds(InspectQuery query, Integer mainNumber, Double mainStartScore, Double mainEndScore,
|
|
|
+ SelectiveStatus selectiveStatus) {
|
|
|
+ query.setInspected(null);
|
|
|
+ StringBuilder countSql = new StringBuilder("select s.id from eb_exam_student s "
|
|
|
+ + " left join eb_exam_subject es on s.exam_id=es.exam_id and s.subject_code=es.code ");
|
|
|
+ String whereSql = getWhereSql(query, SubjectiveStatus.MARKED, mainNumber, mainStartScore, mainEndScore,
|
|
|
+ selectiveStatus);
|
|
|
+ countSql.append(whereSql);
|
|
|
+ Query countQuery = entityManager.createNativeQuery(countSql.toString());
|
|
|
+ List<Integer> ret = countQuery.getResultList();
|
|
|
+ if(ret==null) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public void releaseByUserId(Integer examId, String subjectCode, Integer userId) {
|
|
@@ -276,15 +297,18 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
|
|
|
@Override
|
|
|
public boolean inspect(ExamStudent student, Integer userId) {
|
|
|
if (this.hasApplied(student, userId) && SubjectiveStatus.MARKED.equals(student.getSubjectiveStatus())) {
|
|
|
- if (!SubjectiveStatus.MARKED.equals(student.getSubjectiveStatus()) || student.getInspected()) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- ExamSubject subject = examSubjectService.find(student.getExamId(), student.getSubjectCode());
|
|
|
- InspectHistory old = inspectHistoryService.findByStudentIdAndInspectRound(student.getId(),
|
|
|
- subject.getInspectRound());
|
|
|
- if (old != null) {
|
|
|
+ if (!SubjectiveStatus.MARKED.equals(student.getSubjectiveStatus())) {
|
|
|
return false;
|
|
|
}
|
|
|
+// if (!SubjectiveStatus.MARKED.equals(student.getSubjectiveStatus()) || student.getInspected()) {
|
|
|
+// return false;
|
|
|
+// }
|
|
|
+// ExamSubject subject = examSubjectService.find(student.getExamId(), student.getSubjectCode());
|
|
|
+// InspectHistory old = inspectHistoryService.findByStudentIdAndInspectRound(student.getId(),
|
|
|
+// subject.getInspectRound());
|
|
|
+// if (old != null) {
|
|
|
+// return false;
|
|
|
+// }
|
|
|
Date now = new Date();
|
|
|
// studentService.inspect(student.getId(), now, userId);
|
|
|
InspectHistory i = new InspectHistory();
|
|
@@ -293,7 +317,6 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
|
|
|
i.setSubjectCode(student.getSubjectCode());
|
|
|
i.setInspectorId(userId);
|
|
|
i.setInspectTime(now);
|
|
|
- i.setInspectRound(subject.getInspectRound());
|
|
|
inspectHistoryService.save(i);
|
|
|
studentService.updateInspectCount(student.getId(), inspectHistoryService.countByStudentId(student.getId()),
|
|
|
now, userId);
|
|
@@ -309,9 +332,9 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public boolean cancelByStudent(Integer studentId) {
|
|
|
- if (studentService.cancelInspect(studentId) > 0) {
|
|
|
- inspectHistoryService.deleteByStudentIdAndInspectRound(studentId);
|
|
|
- }
|
|
|
+// if (studentService.cancelInspect(studentId) > 0) {
|
|
|
+// inspectHistoryService.deleteByStudentIdAndInspectRound(studentId);
|
|
|
+// }
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -323,11 +346,12 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void fillInspectHistoryMap(List<ExamStudentVo> list, int maxInspectRound) {
|
|
|
+ public Integer fillInspectHistoryMap(List<ExamStudentVo> list) {
|
|
|
+ Integer maxCount=0;
|
|
|
List<Integer> sids = list.stream().map(e -> e.getId()).collect(Collectors.toList());
|
|
|
List<InspectHistory> ihs = inspectHistoryService.findByStudentIdIn(sids);
|
|
|
if (ihs == null || ihs.size() == 0) {
|
|
|
- return;
|
|
|
+ return maxCount;
|
|
|
}
|
|
|
Map<Integer, Map<String, InspectHistory>> map = new HashMap<>();
|
|
|
for (InspectHistory ih : ihs) {
|
|
@@ -336,11 +360,15 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
|
|
|
tem = new HashMap<>();
|
|
|
map.put(ih.getStudentId(), tem);
|
|
|
}
|
|
|
- tem.put(ih.getInspectRound().toString(), ih);
|
|
|
+ tem.put((tem.size()+1)+"", ih);
|
|
|
+ if(tem.size()>maxCount) {
|
|
|
+ maxCount=tem.size();
|
|
|
+ }
|
|
|
}
|
|
|
for (ExamStudentVo es : list) {
|
|
|
es.setInspectHistoryMap(map.get(es.getId()));
|
|
|
}
|
|
|
+ return maxCount;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -367,8 +395,7 @@ public class InspectedServiceImpl extends BaseQueryService<ExamStudent> implemen
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public void cancelBySubject(Integer examId, String subjectCode) {
|
|
|
- ExamSubject sub = examSubjectService.find(examId, subjectCode);
|
|
|
studentService.cancelInspect(examId, subjectCode);
|
|
|
- inspectHistoryService.deleteByExamIdAndSubjectCodeAndInspectRound(examId, subjectCode, sub.getInspectRound());
|
|
|
+ inspectHistoryService.deleteByExamIdAndSubjectCode(examId, subjectCode);
|
|
|
}
|
|
|
}
|