|
@@ -5,6 +5,8 @@ import cn.com.qmth.stmms.biz.exam.dao.ExamStudentDao;
|
|
import cn.com.qmth.stmms.biz.exam.model.*;
|
|
import cn.com.qmth.stmms.biz.exam.model.*;
|
|
import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
|
|
import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
|
|
import cn.com.qmth.stmms.biz.exam.service.*;
|
|
import cn.com.qmth.stmms.biz.exam.service.*;
|
|
|
|
+import cn.com.qmth.stmms.biz.mark.dao.HeaderTagDao;
|
|
|
|
+import cn.com.qmth.stmms.biz.mark.dao.HeaderTrackDao;
|
|
import cn.com.qmth.stmms.biz.mark.model.*;
|
|
import cn.com.qmth.stmms.biz.mark.model.*;
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkSpecialTagService;
|
|
import cn.com.qmth.stmms.biz.mark.service.MarkSpecialTagService;
|
|
@@ -72,6 +74,12 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
@Autowired
|
|
@Autowired
|
|
private MarkSpecialTagService specialTagService;
|
|
private MarkSpecialTagService specialTagService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private HeaderTagDao headerTagDao;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private HeaderTrackDao headerTrackDao;
|
|
|
|
+
|
|
@Autowired
|
|
@Autowired
|
|
private CheckStudentService checkStudentService;
|
|
private CheckStudentService checkStudentService;
|
|
|
|
|
|
@@ -1016,17 +1024,17 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
List<MarkConfigItem> configList = group.getPictureConfigList();
|
|
List<MarkConfigItem> configList = group.getPictureConfigList();
|
|
if (configList.isEmpty()) {
|
|
if (configList.isEmpty()) {
|
|
// 未设置评卷区域,则自动取第一张裁切图的固定位置
|
|
// 未设置评卷区域,则自动取第一张裁切图的固定位置
|
|
- originTags.add(new OriginTag(0, group.getNumber(), format.format(score), 1, 10, 10));
|
|
|
|
|
|
+ originTags.add(new OriginTag(0, null, group.getNumber(), format.format(score), 1, 10, 10));
|
|
} else {
|
|
} else {
|
|
// 取第一个显示区域相对裁切图的位置
|
|
// 取第一个显示区域相对裁切图的位置
|
|
MarkConfigItem config = configList.get(0);
|
|
MarkConfigItem config = configList.get(0);
|
|
- OriginTag tag = new OriginTag(0, group.getNumber(), format.format(score), config.getI(), config.getX(),
|
|
|
|
- config.getY());
|
|
|
|
|
|
+ OriginTag tag = new OriginTag(0, null, group.getNumber(), format.format(score), config.getI(),
|
|
|
|
+ config.getX(), config.getY());
|
|
// 兼容比例模式,且元素在裁切坐标内
|
|
// 兼容比例模式,且元素在裁切坐标内
|
|
if (config.getX() <= 1 && config.getY() <= 1 && config.getI() <= sliceConfig.size()
|
|
if (config.getX() <= 1 && config.getY() <= 1 && config.getI() <= sliceConfig.size()
|
|
&& sliceConfig.get(config.getI() - 1).getW() > 0
|
|
&& sliceConfig.get(config.getI() - 1).getW() > 0
|
|
&& sliceConfig.get(config.getI() - 1).getH() > 0) {
|
|
&& sliceConfig.get(config.getI() - 1).getH() > 0) {
|
|
- tag = new OriginTag(0, group.getNumber(), format.format(score), config.getI(), config.getX()
|
|
|
|
|
|
+ tag = new OriginTag(0, null, group.getNumber(), format.format(score), config.getI(), config.getX()
|
|
* sliceConfig.get(config.getI() - 1).getW(), config.getY()
|
|
* sliceConfig.get(config.getI() - 1).getW(), config.getY()
|
|
* sliceConfig.get(config.getI() - 1).getH());
|
|
* sliceConfig.get(config.getI() - 1).getH());
|
|
}
|
|
}
|
|
@@ -1065,24 +1073,38 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
// }
|
|
// }
|
|
List<MarkLibrary> libraries = libraryService.findByStudentAndGroup(student.getId(), group.getNumber());
|
|
List<MarkLibrary> libraries = libraryService.findByStudentAndGroup(student.getId(), group.getNumber());
|
|
for (MarkLibrary library : libraries) {
|
|
for (MarkLibrary library : libraries) {
|
|
- if (checkScore(library, score.doubleValue(), details)) {
|
|
|
|
- // 添加轨迹分
|
|
|
|
- List<MarkTrack> tracks = trackService.findByLibraryId(library.getId());
|
|
|
|
- for (MarkTrack markTrack : tracks) {
|
|
|
|
- // 未作答时只显示汉字"空"
|
|
|
|
- originTags.add(new OriginTag(library.getMarkerId(), library.getGroupNumber(), markTrack
|
|
|
|
- .isUnanswered() ? "空" : format.format(markTrack.getScore()), markTrack.getOffsetIndex(),
|
|
|
|
- markTrack.getOffsetX(), markTrack.getOffsetY()));
|
|
|
|
- }
|
|
|
|
- // 添加特殊标记
|
|
|
|
- List<MarkSpecialTag> specialTags = specialTagService.findByLibraryId(library.getId());
|
|
|
|
- for (MarkSpecialTag markSpecialTag : specialTags) {
|
|
|
|
- originTags.add(new OriginTag(library.getMarkerId(), library.getGroupNumber(), markSpecialTag
|
|
|
|
- .getTagName(), markSpecialTag.getOffsetIndex(), markSpecialTag.getOffsetX(), markSpecialTag
|
|
|
|
- .getOffsetY()));
|
|
|
|
- }
|
|
|
|
|
|
+ // if (checkScore(library, score.doubleValue(), details)) {
|
|
|
|
+ // 添加轨迹分
|
|
|
|
+ List<MarkTrack> tracks = trackService.findByLibraryId(library.getId());
|
|
|
|
+ for (MarkTrack markTrack : tracks) {
|
|
|
|
+ // 未作答时只显示汉字"空"
|
|
|
|
+ originTags.add(new OriginTag(library.getMarkerId(), Role.MARKER, library.getGroupNumber(), markTrack
|
|
|
|
+ .isUnanswered() ? "空" : format.format(markTrack.getScore()), markTrack.getOffsetIndex(),
|
|
|
|
+ markTrack.getOffsetX(), markTrack.getOffsetY()));
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ // 添加特殊标记
|
|
|
|
+ List<MarkSpecialTag> specialTags = specialTagService.findByLibraryId(library.getId());
|
|
|
|
+ for (MarkSpecialTag markSpecialTag : specialTags) {
|
|
|
|
+ originTags.add(new OriginTag(library.getMarkerId(), Role.MARKER, library.getGroupNumber(),
|
|
|
|
+ markSpecialTag.getTagName(), markSpecialTag.getOffsetIndex(), markSpecialTag.getOffsetX(),
|
|
|
|
+ markSpecialTag.getOffsetY()));
|
|
|
|
+ }
|
|
|
|
+ // }
|
|
|
|
+ }
|
|
|
|
+ List<HeaderTag> headerTags = headerTagDao.findByStudentIdAndGroupNumberOrderByIdAsc(student.getId(),
|
|
|
|
+ group.getNumber());
|
|
|
|
+ for (HeaderTag headerTag : headerTags) {
|
|
|
|
+ originTags
|
|
|
|
+ .add(new OriginTag(headerTag.getUserId(), Role.SUBJECT_HEADER, headerTag.getGroupNumber(),
|
|
|
|
+ headerTag.getTagName(), headerTag.getOffsetIndex(), headerTag.getOffsetX(), headerTag
|
|
|
|
+ .getOffsetY()));
|
|
|
|
+ }
|
|
|
|
+ List<HeaderTrack> headerTracks = headerTrackDao.findByPkStudentIdAndGroupNumber(student.getId(),
|
|
|
|
+ group.getNumber());
|
|
|
|
+ for (HeaderTrack headerTrack : headerTracks) {
|
|
|
|
+ originTags.add(new OriginTag(headerTrack.getUserId(), Role.SUBJECT_HEADER, headerTrack.getGroupNumber(),
|
|
|
|
+ headerTrack.isUnanswered() ? "空" : format.format(headerTrack.getScore()), headerTrack
|
|
|
|
+ .getOffsetIndex(), headerTrack.getOffsetX(), headerTrack.getOffsetY()));
|
|
}
|
|
}
|
|
return originTags;
|
|
return originTags;
|
|
}
|
|
}
|
|
@@ -1234,6 +1256,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
|
|
pt.setLeft(tag.getOffsetX());
|
|
pt.setLeft(tag.getOffsetX());
|
|
pt.setTop(tag.getOffsetY());
|
|
pt.setTop(tag.getOffsetY());
|
|
pt.setUserId(tag.getUserId());
|
|
pt.setUserId(tag.getUserId());
|
|
|
|
+ pt.setUserRole(tag.getUserRole());
|
|
pt.setGroupNumber(tag.getGroupNumber());
|
|
pt.setGroupNumber(tag.getGroupNumber());
|
|
List<PictureTag> list = map.get(tag.getOffsetIndex());
|
|
List<PictureTag> list = map.get(tag.getOffsetIndex());
|
|
if (list == null) {
|
|
if (list == null) {
|