|
@@ -17,6 +17,7 @@ import cn.com.qmth.stmms.biz.exam.dao.MarkGroupDao;
|
|
import cn.com.qmth.stmms.biz.exam.dao.MarkerDao;
|
|
import cn.com.qmth.stmms.biz.exam.dao.MarkerDao;
|
|
import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
|
|
import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
|
|
import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
|
|
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.MarkGroup;
|
|
import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
|
|
import cn.com.qmth.stmms.biz.exam.model.Marker;
|
|
import cn.com.qmth.stmms.biz.exam.model.Marker;
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
|
|
import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
|
|
@@ -768,13 +769,15 @@ public class MarkServiceImpl implements MarkService {
|
|
@Transactional
|
|
@Transactional
|
|
public void updateLibraryCount(MarkGroup group) {
|
|
public void updateLibraryCount(MarkGroup group) {
|
|
if (group.getStatus() == MarkStatus.FORMAL) {
|
|
if (group.getStatus() == MarkStatus.FORMAL) {
|
|
|
|
+ group.setLibraryCount((int) libraryDao.countByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(),
|
|
|
|
+ group.getSubjectCode(), group.getNumber()));
|
|
groupDao.updateLibraryCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
|
|
groupDao.updateLibraryCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
|
|
- (int) libraryDao.countByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(),
|
|
|
|
- group.getSubjectCode(), group.getNumber()));
|
|
|
|
|
|
+ group.getLibraryCount());
|
|
} else if (group.getStatus() == MarkStatus.TRIAL) {
|
|
} else if (group.getStatus() == MarkStatus.TRIAL) {
|
|
|
|
+ group.setLibraryCount((int) trialLibraryDao.countByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(),
|
|
|
|
+ group.getSubjectCode(), group.getNumber()));
|
|
groupDao.updateLibraryCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
|
|
groupDao.updateLibraryCount(group.getExamId(), group.getSubjectCode(), group.getNumber(),
|
|
- (int) trialLibraryDao.countByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(),
|
|
|
|
- group.getSubjectCode(), group.getNumber()));
|
|
|
|
|
|
+ group.getLibraryCount());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -801,10 +804,11 @@ public class MarkServiceImpl implements MarkService {
|
|
* @param student
|
|
* @param student
|
|
* @param campus
|
|
* @param campus
|
|
* @param group
|
|
* @param group
|
|
|
|
+ * @param subject
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
@Transactional
|
|
@Transactional
|
|
- public void buildFormalLibrary(ExamStudent student, Campus campus, MarkGroup group) {
|
|
|
|
|
|
+ public void buildFormalLibrary(ExamStudent student, Campus campus, MarkGroup group, ExamSubject subject) {
|
|
// 等待大题释放锁定
|
|
// 等待大题释放锁定
|
|
lockService.waitUnlockGroup(group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
lockService.waitUnlockGroup(group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
// 等待考生释放锁定
|
|
// 等待考生释放锁定
|
|
@@ -827,12 +831,15 @@ public class MarkServiceImpl implements MarkService {
|
|
if (group.getDoubleRate() == 1) {
|
|
if (group.getDoubleRate() == 1) {
|
|
needDouble = true;
|
|
needDouble = true;
|
|
} else {
|
|
} else {
|
|
- double studentCount = studentService.countUploadedByExamIdAndSubjectCode(group.getExamId(),
|
|
|
|
- group.getSubjectCode());
|
|
|
|
|
|
+ double studentCount = subject.getUploadCount();
|
|
|
|
+ double libraryCount = group.getLibraryCount();
|
|
double doubleCount = libraryDao.countByExamIdAndSubjectCodeAndGroupNumberAndTaskNumber(
|
|
double doubleCount = libraryDao.countByExamIdAndSubjectCodeAndGroupNumberAndTaskNumber(
|
|
group.getExamId(), group.getSubjectCode(), group.getNumber(), 2);
|
|
group.getExamId(), group.getSubjectCode(), group.getNumber(), 2);
|
|
|
|
+ int expectCount = (int) (studentCount * group.getDoubleRate());
|
|
// 随机数判断加入当前已经生成双评任务的比例加权
|
|
// 随机数判断加入当前已经生成双评任务的比例加权
|
|
- needDouble = Math.random() < (group.getDoubleRate() - doubleCount / studentCount);
|
|
|
|
|
|
+ needDouble = doubleCount < expectCount
|
|
|
|
+ && ((studentCount - libraryCount + doubleCount) <= (expectCount - doubleCount)
|
|
|
|
+ || Math.random() < group.getDoubleRate());
|
|
}
|
|
}
|
|
if (needDouble) {
|
|
if (needDouble) {
|
|
library = new MarkLibrary();
|
|
library = new MarkLibrary();
|
|
@@ -850,7 +857,6 @@ public class MarkServiceImpl implements MarkService {
|
|
}
|
|
}
|
|
group.setBuildTime(student.getUploadTime());
|
|
group.setBuildTime(student.getUploadTime());
|
|
groupDao.updateBuildTime(group.getExamId(), group.getSubjectCode(), group.getNumber(), student.getUploadTime());
|
|
groupDao.updateBuildTime(group.getExamId(), group.getSubjectCode(), group.getNumber(), student.getUploadTime());
|
|
- // updateTotalCount(group);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -877,7 +883,6 @@ public class MarkServiceImpl implements MarkService {
|
|
library.setStudentId(student.getId());
|
|
library.setStudentId(student.getId());
|
|
library.setExamNumber(student.getExamNumber());
|
|
library.setExamNumber(student.getExamNumber());
|
|
trialLibraryDao.save(library);
|
|
trialLibraryDao.save(library);
|
|
- // updateTotalCount(group);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|