|
@@ -38,6 +38,8 @@ public class ExamTeacherSalaryServiceImpl extends BaseServiceImpl<Long, ExamTeac
|
|
|
private TeacherDao teacherDao;
|
|
|
@Autowired
|
|
|
private ExaminationBasicDao examinationBasicDao;
|
|
|
+ @Autowired
|
|
|
+ private StudentExamResultDao studentExamResultDao;
|
|
|
|
|
|
@Override
|
|
|
public BaseDAO<Long, ExamTeacherSalary> getDAO() {
|
|
@@ -54,6 +56,9 @@ public class ExamTeacherSalaryServiceImpl extends BaseServiceImpl<Long, ExamTeac
|
|
|
|
|
|
Map<Integer, List<ExamRoom>> teacherExamRoomMap=new HashMap<>();
|
|
|
for (ExamRoom examRoom : examRooms) {
|
|
|
+ if(examRoom.getExamRoomStudentNum()<=0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
if(!teacherExamRoomMap.containsKey(examRoom.getMainTeacherUserId())){
|
|
|
teacherExamRoomMap.put(examRoom.getMainTeacherUserId(), new ArrayList<>());
|
|
|
}
|
|
@@ -71,6 +76,8 @@ public class ExamTeacherSalaryServiceImpl extends BaseServiceImpl<Long, ExamTeac
|
|
|
|
|
|
List<ExamRoomStudentRelation> examRoomStudentRelations = examRoomStudentRelationDao.getExamRoomStudentRelations(examId, null, null);
|
|
|
|
|
|
+ Set<Long> isFinishedExamRegistIds = studentExamResultDao.getIsFinishedExamRegistIds(examId);
|
|
|
+
|
|
|
List<ExamTeacherSalary> examTeacherSalaries = examTeacherSalaryDao.queryWithExam(examId);
|
|
|
for (ExamTeacherSalary examTeacherSalary : examTeacherSalaries) {
|
|
|
List<ExamRoom> teacherExamRooms = teacherExamRoomMap.get(examTeacherSalary.getTeacherId());
|
|
@@ -81,7 +88,7 @@ public class ExamTeacherSalaryServiceImpl extends BaseServiceImpl<Long, ExamTeac
|
|
|
continue;
|
|
|
}
|
|
|
Set<Long> examRoomIds = teacherExamRooms.stream().map(ExamRoom::getId).collect(Collectors.toSet());
|
|
|
- long studentNum = examRoomStudentRelations.stream().filter(e -> examRoomIds.contains(e.getExamRoomId())).count();
|
|
|
+ long studentNum = examRoomStudentRelations.stream().filter(e -> examRoomIds.contains(e.getExamRoomId())&&isFinishedExamRegistIds.contains(e.getExamRegistrationId())).count();
|
|
|
examTeacherSalary.setTotalInvigilationNum(examRoomIds.size());
|
|
|
examTeacherSalary.setTotalInvigilationStudentNum((int) studentNum);
|
|
|
if(TeacherSettlementTypeEnum.SINGLE.equals(examTeacherSalary.getSettlementType())){
|