|
@@ -37,8 +37,7 @@ import com.qmth.teachcloud.mark.entity.MarkPaper;
|
|
|
import com.qmth.teachcloud.mark.entity.ScanAnswerCard;
|
|
|
import com.qmth.teachcloud.mark.enums.CardSource;
|
|
|
import com.qmth.teachcloud.mark.enums.LockType;
|
|
|
-import com.qmth.teachcloud.mark.service.MarkPaperService;
|
|
|
-import com.qmth.teachcloud.mark.service.ScanAnswerCardService;
|
|
|
+import com.qmth.teachcloud.mark.service.*;
|
|
|
import org.apache.commons.codec.digest.DigestUtils;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -100,17 +99,23 @@ public class ExamCardModelFourServiceImpl extends ServiceImpl<ExamCardModelFourM
|
|
|
|
|
|
@Resource
|
|
|
ScanAnswerCardService scanAnswerCardService;
|
|
|
+ @Resource
|
|
|
+ ScanAnswerCardQuestionService scanAnswerCardQuestionService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ MarkQuestionService markQuestionService;
|
|
|
+ @Resource
|
|
|
+ MarkQuestionAnswerService markQuestionAnswerService;
|
|
|
|
|
|
/**
|
|
|
* 新增/修改模式4题卡
|
|
|
*
|
|
|
* @param params
|
|
|
* @return
|
|
|
- * @throws Exception
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public Map<String, String> saveGeneric(GenericExamCardModelFourParams params) throws Exception {
|
|
|
+ public Map<String, String> saveGeneric(GenericExamCardModelFourParams params) {
|
|
|
Objects.requireNonNull(params, "题卡信息不能为空");
|
|
|
Objects.requireNonNull(params.getExamId(), "考试id不能为空");
|
|
|
Objects.requireNonNull(params.getCourseId(), "课程id不能为空");
|
|
@@ -147,12 +152,12 @@ public class ExamCardModelFourServiceImpl extends ServiceImpl<ExamCardModelFourM
|
|
|
if (Objects.nonNull(checkTitleExamCardModelFourDb) && params.getId().longValue() != examCardModelFour.getId().longValue()) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("题卡名称重复");
|
|
|
}
|
|
|
+ int count = this.baseMapper.countByCardNumber(examCardModelFour.getId());
|
|
|
+ if (count > 0) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("题卡已扫描不能修改");
|
|
|
+ }
|
|
|
examCardModelFour.updateInfo(sysUser.getId());
|
|
|
}
|
|
|
- ScanAnswerCard scanAnswerCardDb = scanAnswerCardService.findByExamAndCardIdAndCardSource(examCardModelFour.getExamId(), examCardModelFour.getId(), CardSource.WEB);
|
|
|
- if (Objects.nonNull(scanAnswerCardDb)) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("题卡已扫描不能重复修改");
|
|
|
- }
|
|
|
|
|
|
examCardModelFour.updateInformation(params);
|
|
|
try {
|
|
@@ -192,7 +197,7 @@ public class ExamCardModelFourServiceImpl extends ServiceImpl<ExamCardModelFourM
|
|
|
if (markPaperList.size() > 1) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("找到多条试卷信息");
|
|
|
}
|
|
|
- ExamDetailCourseInitMarkDto dto = new ExamDetailCourseInitMarkDto(examCardModelFour, markPaperList.get(0).getPaperNumber(), sysUser.getId());
|
|
|
+ ExamDetailCourseInitMarkDto dto = new ExamDetailCourseInitMarkDto(examCardModelFour, markPaperList.get(0), sysUser.getId());
|
|
|
// 解析卡格式中试卷结构并保存
|
|
|
printFinishService.insertMarkQuestion(dto.getExamId(), dto.getCourseId(), dto.getPaperNumber(), examCardModelFour.getContent(), null);
|
|
|
// 生成并保存卡格式文件(后缀为.json)
|
|
@@ -258,16 +263,16 @@ public class ExamCardModelFourServiceImpl extends ServiceImpl<ExamCardModelFourM
|
|
|
* @param examId
|
|
|
* @param courseId
|
|
|
* @param paperNumber
|
|
|
- * @param collegeId
|
|
|
+ * @param openCollegeId
|
|
|
* @param title
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public IPage<ExamCardModelFour> listPage(IPage<Map> iPage, Long semesterId, Long examId, Long courseId, String paperNumber, Long collegeId, String title) {
|
|
|
+ public IPage<ExamCardModelFour> listPage(IPage<Map> iPage, Long semesterId, Long examId, Long courseId, String paperNumber, Long openCollegeId, String title) {
|
|
|
Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
|
SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
|
|
|
- IPage<ExamCardModelFour> cardPageDtoIPage = this.baseMapper.listPage(iPage, schoolId, semesterId, examId, courseId, collegeId, title, paperNumber, dpr);
|
|
|
+ IPage<ExamCardModelFour> cardPageDtoIPage = this.baseMapper.listPage(iPage, schoolId, semesterId, examId, courseId, openCollegeId, title, paperNumber, dpr);
|
|
|
for (ExamCardModelFour record : cardPageDtoIPage.getRecords()) {
|
|
|
if (StringUtils.isNotBlank(record.getJpgAttachment())) {
|
|
|
List<JSONObject> mapList = JSON.parseArray(record.getJpgAttachment(), JSONObject.class);
|
|
@@ -312,6 +317,18 @@ public class ExamCardModelFourServiceImpl extends ServiceImpl<ExamCardModelFourM
|
|
|
if (count > 0) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("已扫描的题卡不允许删除");
|
|
|
}
|
|
|
+ ExamCardModelFour examCardModelFour = this.getById(id);
|
|
|
+ List<MarkPaper> markPaperList = markPaperService.listByExamIdAndCourseIdForModel4(examCardModelFour.getExamId(), examCardModelFour.getCourseId());
|
|
|
+ if (CollectionUtils.isNotEmpty(markPaperList)) {
|
|
|
+ MarkPaper markPaper = markPaperList.get(0);
|
|
|
+ markQuestionService.deleteByExamIdAndPaperNumber(markPaper.getExamId(), markPaper.getPaperNumber());
|
|
|
+ markQuestionAnswerService.deleteByExamIdAndPaperNumber(markPaper.getExamId(), markPaper.getPaperNumber());
|
|
|
+ ScanAnswerCard scanAnswerCard = scanAnswerCardService.findByExamAndCardIdAndCardSource(markPaper.getExamId(), id, CardSource.WEB);
|
|
|
+ if (scanAnswerCard != null) {
|
|
|
+ scanAnswerCardService.removeById(scanAnswerCard.getId());
|
|
|
+ scanAnswerCardQuestionService.deleteByExamIdAndPaperNumberAndCardNumber(markPaper.getExamId(), markPaper.getPaperNumber(), scanAnswerCard.getNumber());
|
|
|
+ }
|
|
|
+ }
|
|
|
return this.removeById(id);
|
|
|
}
|
|
|
|
|
@@ -397,6 +414,28 @@ public class ExamCardModelFourServiceImpl extends ServiceImpl<ExamCardModelFourM
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public ExamCardModelFour getByExamIdAndCourseId(Long examId, Long courseId) {
|
|
|
+ QueryWrapper<ExamCardModelFour> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(ExamCardModelFour::getExamId, examId)
|
|
|
+ .eq(ExamCardModelFour::getCourseId, courseId);
|
|
|
+ return this.getOne(queryWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void validCourse(GenericExamCardModelFourParams params) {
|
|
|
+ ExamCardModelFour examCardModelFour = this.getByExamIdAndCourseId(params.getExamId(), params.getCourseId());
|
|
|
+ if (params.getId() == null) {
|
|
|
+ if (examCardModelFour != null) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("每个课程只能创建一个题卡");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (examCardModelFour != null && !examCardModelFour.getId().equals(params.getId())) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("每个课程只能创建一个题卡");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 创建zip
|
|
|
*
|