|
@@ -29,6 +29,7 @@ import cn.com.qmth.stmms.biz.mark.dao.ArbitrateHistoryDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.MarkLibraryDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.MarkLibraryDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.MarkSpecialTagDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.MarkSpecialTagDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.MarkTrackDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.MarkTrackDao;
|
|
|
|
+import cn.com.qmth.stmms.biz.mark.dao.ProblemHistoryDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.TrialHistoryDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.TrialHistoryDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.TrialLibraryDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.TrialLibraryDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.TrialTagDao;
|
|
import cn.com.qmth.stmms.biz.mark.dao.TrialTagDao;
|
|
@@ -37,9 +38,11 @@ import cn.com.qmth.stmms.biz.mark.model.ArbitrateHistory;
|
|
import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
|
|
import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
|
|
import cn.com.qmth.stmms.biz.mark.model.MarkResult;
|
|
import cn.com.qmth.stmms.biz.mark.model.MarkResult;
|
|
import cn.com.qmth.stmms.biz.mark.model.MarkTrack;
|
|
import cn.com.qmth.stmms.biz.mark.model.MarkTrack;
|
|
|
|
+import cn.com.qmth.stmms.biz.mark.model.ProblemHistory;
|
|
import cn.com.qmth.stmms.biz.mark.model.TrialHistory;
|
|
import cn.com.qmth.stmms.biz.mark.model.TrialHistory;
|
|
import cn.com.qmth.stmms.biz.mark.model.TrialLibrary;
|
|
import cn.com.qmth.stmms.biz.mark.model.TrialLibrary;
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkService;
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkService;
|
|
|
|
+import cn.com.qmth.stmms.biz.mark.service.ProblemHistoryService;
|
|
import cn.com.qmth.stmms.biz.utils.FormalTaskUtil;
|
|
import cn.com.qmth.stmms.biz.utils.FormalTaskUtil;
|
|
import cn.com.qmth.stmms.biz.utils.ScoreItem;
|
|
import cn.com.qmth.stmms.biz.utils.ScoreItem;
|
|
import cn.com.qmth.stmms.biz.utils.TrialTaskUtil;
|
|
import cn.com.qmth.stmms.biz.utils.TrialTaskUtil;
|
|
@@ -102,6 +105,12 @@ public class MarkServiceImpl implements MarkService {
|
|
@Autowired
|
|
@Autowired
|
|
private ExamService examService;
|
|
private ExamService examService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private ProblemHistoryService problemHistoryService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ProblemHistoryDao problemHistoryDao;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 某个大题已申请的评卷任务数量
|
|
* 某个大题已申请的评卷任务数量
|
|
*
|
|
*
|
|
@@ -213,6 +222,8 @@ public class MarkServiceImpl implements MarkService {
|
|
specialTagDao.deleteByExamAndSubjectAndGroup(group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
specialTagDao.deleteByExamAndSubjectAndGroup(group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
arbitrateDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
arbitrateDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
group.getNumber());
|
|
group.getNumber());
|
|
|
|
+ problemHistoryDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
|
+ group.getNumber());
|
|
libraryDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
libraryDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
group.getNumber());
|
|
group.getNumber());
|
|
// 评卷员数据
|
|
// 评卷员数据
|
|
@@ -355,10 +366,12 @@ public class MarkServiceImpl implements MarkService {
|
|
}
|
|
}
|
|
if (group.getStatus() == MarkStatus.FORMAL) {
|
|
if (group.getStatus() == MarkStatus.FORMAL) {
|
|
// 仲裁和等待仲裁的任务不被重置
|
|
// 仲裁和等待仲裁的任务不被重置
|
|
- trackDao.deleteByMarkerId(marker.getId(), LibraryStatus.ARBITRATED, LibraryStatus.WAIT_ARBITRATE);
|
|
|
|
- specialTagDao.deleteByMarkerId(marker.getId(), LibraryStatus.ARBITRATED, LibraryStatus.WAIT_ARBITRATE);
|
|
|
|
|
|
+ trackDao.deleteByMarkerId(marker.getId(), LibraryStatus.ARBITRATED, LibraryStatus.WAIT_ARBITRATE,
|
|
|
|
+ LibraryStatus.PROBLEM);
|
|
|
|
+ specialTagDao.deleteByMarkerId(marker.getId(), LibraryStatus.ARBITRATED, LibraryStatus.WAIT_ARBITRATE,
|
|
|
|
+ LibraryStatus.PROBLEM);
|
|
libraryDao.resetByMarkerId(marker.getId(), LibraryStatus.WAITING, LibraryStatus.ARBITRATED,
|
|
libraryDao.resetByMarkerId(marker.getId(), LibraryStatus.WAITING, LibraryStatus.ARBITRATED,
|
|
- LibraryStatus.WAIT_ARBITRATE);
|
|
|
|
|
|
+ LibraryStatus.WAIT_ARBITRATE, LibraryStatus.PROBLEM);
|
|
markerDao.resetById(marker.getId());
|
|
markerDao.resetById(marker.getId());
|
|
} else if (group.getStatus() == MarkStatus.TRIAL) {
|
|
} else if (group.getStatus() == MarkStatus.TRIAL) {
|
|
trialTagDao.deleteByMarkerId(marker.getId());
|
|
trialTagDao.deleteByMarkerId(marker.getId());
|
|
@@ -381,6 +394,7 @@ public class MarkServiceImpl implements MarkService {
|
|
trackDao.deleteByStudentId(student.getId());
|
|
trackDao.deleteByStudentId(student.getId());
|
|
specialTagDao.deleteByStudentId(student.getId());
|
|
specialTagDao.deleteByStudentId(student.getId());
|
|
arbitrateDao.deleteByStudentId(student.getId());
|
|
arbitrateDao.deleteByStudentId(student.getId());
|
|
|
|
+ problemHistoryDao.deleteByStudentId(student.getId());
|
|
libraryDao.deleteByStudentId(student.getId());
|
|
libraryDao.deleteByStudentId(student.getId());
|
|
// 试评相关数据
|
|
// 试评相关数据
|
|
trialTrackDao.deleteByStudentId(student.getId());
|
|
trialTrackDao.deleteByStudentId(student.getId());
|
|
@@ -411,6 +425,25 @@ public class MarkServiceImpl implements MarkService {
|
|
// 根据评卷状态选择读取不同的评卷任务
|
|
// 根据评卷状态选择读取不同的评卷任务
|
|
if (group.getStatus() == MarkStatus.FORMAL) {
|
|
if (group.getStatus() == MarkStatus.FORMAL) {
|
|
MarkLibrary library = libraryDao.findOne(result.getLibraryId());
|
|
MarkLibrary library = libraryDao.findOne(result.getLibraryId());
|
|
|
|
+ if (result.isProblem()) {
|
|
|
|
+ ProblemHistory history = new ProblemHistory();
|
|
|
|
+ history.setCreateTime(new Date());
|
|
|
|
+ history.setExamId(library.getExamId());
|
|
|
|
+ history.setExamNumber(library.getExamNumber());
|
|
|
|
+ history.setStudentId(library.getStudentId());
|
|
|
|
+ history.setLibraryId(library.getId());
|
|
|
|
+ history.setSubjectCode(library.getSubjectCode());
|
|
|
|
+ history.setGroupNumber(library.getGroupNumber());
|
|
|
|
+ history.setProblemId(result.getReason());
|
|
|
|
+ history.setStatus(HistoryStatus.WAITING);
|
|
|
|
+ problemHistoryService.save(history);
|
|
|
|
+ // 状态更新
|
|
|
|
+ libraryDao.updateByStudentIdAndGroupNumber(library.getStudentId(), library.getGroupNumber(),
|
|
|
|
+ LibraryStatus.PROBLEM);
|
|
|
|
+ updateMarkedCount(group);
|
|
|
|
+ releaseLibrary(library, marker);
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
if (library != null && library.getExamId().equals(group.getExamId())
|
|
if (library != null && library.getExamId().equals(group.getExamId())
|
|
&& library.getSubjectCode().equals(group.getSubjectCode())
|
|
&& library.getSubjectCode().equals(group.getSubjectCode())
|
|
&& library.getGroupNumber().equals(group.getNumber())
|
|
&& library.getGroupNumber().equals(group.getNumber())
|
|
@@ -597,15 +630,17 @@ public class MarkServiceImpl implements MarkService {
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
@Transactional
|
|
@Transactional
|
|
- public boolean backLibrary(MarkLibrary library) {
|
|
|
|
|
|
+ public boolean backLibrary(MarkLibrary library, Integer userId) {
|
|
MarkGroup group = groupDao.findOne(library.getExamId(), library.getSubjectCode(), library.getGroupNumber());
|
|
MarkGroup group = groupDao.findOne(library.getExamId(), library.getSubjectCode(), library.getGroupNumber());
|
|
if (group.getStatus() == MarkStatus.FINISH) {
|
|
if (group.getStatus() == MarkStatus.FINISH) {
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
- if (libraryDao.resetById(library.getId(), LibraryStatus.WAITING, LibraryStatus.MARKED, LibraryStatus.INSPECTED) > 0) {
|
|
|
|
|
|
+ if (libraryDao.resetById(library.getId(), LibraryStatus.WAITING, LibraryStatus.MARKED, LibraryStatus.INSPECTED,
|
|
|
|
+ LibraryStatus.PROBLEM) > 0) {
|
|
trackDao.deleteByLibraryId(library.getId());
|
|
trackDao.deleteByLibraryId(library.getId());
|
|
specialTagDao.deleteByLibraryId(library.getId());
|
|
specialTagDao.deleteByLibraryId(library.getId());
|
|
updateMarkedCount(library.getExamId(), library.getSubjectCode(), library.getGroupNumber());
|
|
updateMarkedCount(library.getExamId(), library.getSubjectCode(), library.getGroupNumber());
|
|
|
|
+ problemHistoryService.resetByStudentId(library.getStudentId(), userId);
|
|
return true;
|
|
return true;
|
|
} else {
|
|
} else {
|
|
return false;
|
|
return false;
|
|
@@ -959,6 +994,8 @@ public class MarkServiceImpl implements MarkService {
|
|
specialTagDao.deleteByExamAndSubjectAndGroup(group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
specialTagDao.deleteByExamAndSubjectAndGroup(group.getExamId(), group.getSubjectCode(), group.getNumber());
|
|
arbitrateDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
arbitrateDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
group.getNumber());
|
|
group.getNumber());
|
|
|
|
+ problemHistoryDao.deleteByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
|
|
+ group.getNumber());
|
|
libraryDao.resetByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
libraryDao.resetByExamIdAndSubjectCodeAndGroupNumber(group.getExamId(), group.getSubjectCode(),
|
|
group.getNumber(), LibraryStatus.WAITING);
|
|
group.getNumber(), LibraryStatus.WAITING);
|
|
libraryDao.deleteByExamIdAndSubjectCodeAndGroupNumberAndTaskNumber(group.getExamId(),
|
|
libraryDao.deleteByExamIdAndSubjectCodeAndGroupNumberAndTaskNumber(group.getExamId(),
|