|
@@ -14,13 +14,11 @@ import com.ssj.framework.core.util.StringUtil;
|
|
import com.ssj.framework.idworker.IdWorker;
|
|
import com.ssj.framework.idworker.IdWorker;
|
|
import com.ssj.framework.weixin.util.DateUtil;
|
|
import com.ssj.framework.weixin.util.DateUtil;
|
|
import com.ssj.kmt.utils.JSONFileUtil;
|
|
import com.ssj.kmt.utils.JSONFileUtil;
|
|
-import com.ssj.service.kmt.exercisesys.request.ExerciseTeacherClassRequest;
|
|
|
|
import com.ssj.service.kmt.request.rollbackai.AddExerciseQuestionRequest;
|
|
import com.ssj.service.kmt.request.rollbackai.AddExerciseQuestionRequest;
|
|
import com.ssj.service.kmt.request.rollbackai.ExerciseQuestionDealRequest;
|
|
import com.ssj.service.kmt.request.rollbackai.ExerciseQuestionDealRequest;
|
|
import com.ssj.service.kmt.service.KmtExerciseBookService;
|
|
import com.ssj.service.kmt.service.KmtExerciseBookService;
|
|
import com.ssj.service.kmt.service.KmtExerciseQuestionDealService;
|
|
import com.ssj.service.kmt.service.KmtExerciseQuestionDealService;
|
|
import com.ssj.service.kmt.service.KmtExerciseQuestionService;
|
|
import com.ssj.service.kmt.service.KmtExerciseQuestionService;
|
|
-import com.ssj.service.kmt.service.KmtExerciseService;
|
|
|
|
import com.ssj.service.mapper.KmtExerciseMapper;
|
|
import com.ssj.service.mapper.KmtExerciseMapper;
|
|
import com.ssj.service.task.SyncSaveExerciseQuestionsTask;
|
|
import com.ssj.service.task.SyncSaveExerciseQuestionsTask;
|
|
import com.ssj.taskthread.ThreadPool;
|
|
import com.ssj.taskthread.ThreadPool;
|
|
@@ -29,8 +27,6 @@ import org.apache.commons.collections.CollectionUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.elasticsearch.index.query.QueryBuilder;
|
|
import org.elasticsearch.index.query.QueryBuilder;
|
|
import org.elasticsearch.index.query.QueryBuilders;
|
|
import org.elasticsearch.index.query.QueryBuilders;
|
|
-import org.elasticsearch.script.Script;
|
|
|
|
-import org.elasticsearch.script.ScriptType;
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -38,6 +34,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
import java.util.regex.Pattern;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
@Service
|
|
public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDealService {
|
|
public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDealService {
|
|
@@ -65,41 +62,17 @@ public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDe
|
|
//题目id不存在则是新增, 新增需要把一个num减1
|
|
//题目id不存在则是新增, 新增需要把一个num减1
|
|
KmtExerciseBook book = kmtExerciseBookService.getById(request.getExerciseBookId());
|
|
KmtExerciseBook book = kmtExerciseBookService.getById(request.getExerciseBookId());
|
|
KmtExerciseQuestion nextQuestion = kmtExerciseMapper.findByBookIdAndNum(book.getBookId(), request.getNum());
|
|
KmtExerciseQuestion nextQuestion = kmtExerciseMapper.findByBookIdAndNum(book.getBookId(), request.getNum());
|
|
- kmtExerciseMapper.updateQuestionNumByBookIdAndNum(book.getBookId(), request.getNum());
|
|
|
|
//新增小题
|
|
//新增小题
|
|
if (request.getQuestionClassType() == 2){
|
|
if (request.getQuestionClassType() == 2){
|
|
- KmtExerciseQuestion kmtExerciseQuestion = new KmtExerciseQuestion();
|
|
|
|
- String newQuestionId = IdWorker.generateId();
|
|
|
|
- kmtExerciseQuestion.setId(newQuestionId);
|
|
|
|
- kmtExerciseQuestion.setBookId(nextQuestion.getBookId());
|
|
|
|
- kmtExerciseQuestion.setUnitId(nextQuestion.getUnitId());
|
|
|
|
- kmtExerciseQuestion.setBookCourseId(nextQuestion.getBookCourseId());
|
|
|
|
- kmtExerciseQuestion.setBigQuestionIndex(nextQuestion.getBigQuestionIndex());
|
|
|
|
- kmtExerciseQuestion.setPageIndex(nextQuestion.getPageIndex());
|
|
|
|
- kmtExerciseQuestion.setImage(questionImage);
|
|
|
|
- kmtExerciseQuestion.setCreateTime(new Date());
|
|
|
|
- kmtExerciseQuestion.setDealStatus(3);
|
|
|
|
- kmtExerciseQuestion.setAnswerImage(answerImage);
|
|
|
|
- kmtExerciseQuestion.setNum(nextQuestion.getNum());
|
|
|
|
- kmtExerciseQuestion.setSmallQuestionName(request.getSmallQuestionIndex());
|
|
|
|
- if (StringUtil.isBlank(nextQuestion.getParentId())){
|
|
|
|
- kmtExerciseQuestion.setParentId(null);
|
|
|
|
- kmtExerciseQuestion.setQuestionClassType(1);
|
|
|
|
- kmtExerciseMapper.updateParentIdAndClassType(newQuestionId, 2, book.getBookId(), request.getNum());
|
|
|
|
|
|
+ saveQuestion(book, request, nextQuestion, questionImage, answerImage);
|
|
|
|
+ } else {
|
|
|
|
+ //新增大题, 如果已存在当前大题号,则报错
|
|
|
|
+ String bqi = kmtExerciseMapper.findBigQuestionIndexByBookCourseId(nextQuestion.getBookCourseId(), request.getBigQuestionIndex());
|
|
|
|
+ if (StringUtil.isBlank(bqi)){
|
|
|
|
+ saveQuestion(book, request, nextQuestion, questionImage, answerImage);
|
|
} else {
|
|
} else {
|
|
- kmtExerciseQuestion.setParentId(nextQuestion.getParentId());
|
|
|
|
- kmtExerciseQuestion.setQuestionClassType(2);
|
|
|
|
|
|
+ responseEntity.failure(ResponseConstant.CODE_000, "已存在大题号,请在大题号下直接添加小题");
|
|
}
|
|
}
|
|
- kmtExerciseQuestion.setCourseName(nextQuestion.getCourseName());
|
|
|
|
- kmtExerciseQuestion.setIsCommonFlag(nextQuestion.getIsCommonFlag());
|
|
|
|
- kmtExerciseQuestion.setExerciseBookId(nextQuestion.getExerciseBookId());
|
|
|
|
- kmtExerciseQuestion.setHandlerSubmitTime(DateUtil.parse_yyyyMMddHHmmss("1970-01-01 00:00:01"));
|
|
|
|
- kmtExerciseQuestion.setQuestionPath(nextQuestion.getQuestionPath().substring(0, nextQuestion.getQuestionPath().lastIndexOf("/")) + newQuestionId + ".json");
|
|
|
|
- kmtExerciseQuestionService.save(kmtExerciseQuestion);
|
|
|
|
- saveJSONFileAndEs(kmtExerciseQuestion, request, questionImage);
|
|
|
|
- } else {
|
|
|
|
- //新增大题
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
KmtExerciseQuestion kmtExerciseQuestion = kmtExerciseQuestionService.getById(request.getQuestionId());
|
|
KmtExerciseQuestion kmtExerciseQuestion = kmtExerciseQuestionService.getById(request.getQuestionId());
|
|
@@ -165,6 +138,45 @@ public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDe
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private void saveQuestion(KmtExerciseBook book,AddExerciseQuestionRequest request, KmtExerciseQuestion nextQuestion, String questionImage, String answerImage){
|
|
|
|
+ kmtExerciseMapper.updateQuestionNumByBookIdAndNum(book.getBookId(), request.getNum());
|
|
|
|
+ KmtExerciseQuestion kmtExerciseQuestion = new KmtExerciseQuestion();
|
|
|
|
+ String newQuestionId = IdWorker.generateId();
|
|
|
|
+ kmtExerciseQuestion.setId(newQuestionId);
|
|
|
|
+ kmtExerciseQuestion.setBookId(nextQuestion.getBookId());
|
|
|
|
+ kmtExerciseQuestion.setUnitId(nextQuestion.getUnitId());
|
|
|
|
+ kmtExerciseQuestion.setBookCourseId(nextQuestion.getBookCourseId());
|
|
|
|
+ if (request.getQuestionClassType() == 2){
|
|
|
|
+ kmtExerciseQuestion.setBigQuestionIndex(nextQuestion.getBigQuestionIndex());
|
|
|
|
+ if (StringUtil.isBlank(nextQuestion.getParentId())){
|
|
|
|
+ kmtExerciseQuestion.setParentId(null);
|
|
|
|
+ kmtExerciseQuestion.setQuestionClassType(1);
|
|
|
|
+ kmtExerciseMapper.updateParentIdAndClassType(newQuestionId, 2, book.getBookId(), request.getNum());
|
|
|
|
+ } else {
|
|
|
|
+ kmtExerciseQuestion.setParentId(nextQuestion.getParentId());
|
|
|
|
+ kmtExerciseQuestion.setQuestionClassType(2);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ kmtExerciseQuestion.setBigQuestionIndex(request.getBigQuestionIndex());
|
|
|
|
+ kmtExerciseQuestion.setParentId(null);
|
|
|
|
+ kmtExerciseQuestion.setQuestionClassType(0);
|
|
|
|
+ }
|
|
|
|
+ kmtExerciseQuestion.setPageIndex(nextQuestion.getPageIndex());
|
|
|
|
+ kmtExerciseQuestion.setImage(questionImage);
|
|
|
|
+ kmtExerciseQuestion.setCreateTime(new Date());
|
|
|
|
+ kmtExerciseQuestion.setDealStatus(3);
|
|
|
|
+ kmtExerciseQuestion.setAnswerImage(answerImage);
|
|
|
|
+ kmtExerciseQuestion.setNum(nextQuestion.getNum());
|
|
|
|
+ kmtExerciseQuestion.setSmallQuestionName(request.getSmallQuestionIndex());
|
|
|
|
+ kmtExerciseQuestion.setCourseName(nextQuestion.getCourseName());
|
|
|
|
+ kmtExerciseQuestion.setIsCommonFlag(nextQuestion.getIsCommonFlag());
|
|
|
|
+ kmtExerciseQuestion.setExerciseBookId(nextQuestion.getExerciseBookId());
|
|
|
|
+ kmtExerciseQuestion.setHandlerSubmitTime(DateUtil.parse_yyyyMMddHHmmss("1970-01-01 00:00:01"));
|
|
|
|
+ kmtExerciseQuestion.setQuestionPath(nextQuestion.getQuestionPath().substring(0, nextQuestion.getQuestionPath().lastIndexOf("/")) + newQuestionId + ".json");
|
|
|
|
+ kmtExerciseQuestionService.save(kmtExerciseQuestion);
|
|
|
|
+ saveJSONFileAndEs(kmtExerciseQuestion, request, questionImage);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -230,7 +242,6 @@ public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDe
|
|
for (String qid : questionIds) {
|
|
for (String qid : questionIds) {
|
|
kmtExerciseQuestionService.delete(qid);
|
|
kmtExerciseQuestionService.delete(qid);
|
|
}
|
|
}
|
|
-
|
|
|
|
//删除es
|
|
//删除es
|
|
QueryBuilder queryBuilder = QueryBuilders.termsQuery("id.keyword", questionIds);
|
|
QueryBuilder queryBuilder = QueryBuilders.termsQuery("id.keyword", questionIds);
|
|
exerciseQuestionSearchService.deleteByQuery("kmt_exercise_questions", queryBuilder);
|
|
exerciseQuestionSearchService.deleteByQuery("kmt_exercise_questions", queryBuilder);
|
|
@@ -244,7 +255,46 @@ public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDe
|
|
public ResponseEntity moveExerciseQuestion(String userId, ExerciseQuestionDealRequest request) {
|
|
public ResponseEntity moveExerciseQuestion(String userId, ExerciseQuestionDealRequest request) {
|
|
ResponseEntity responseEntity = new ResponseEntity();
|
|
ResponseEntity responseEntity = new ResponseEntity();
|
|
if (isManagerSubmit(userId)){
|
|
if (isManagerSubmit(userId)){
|
|
|
|
+ KmtExerciseQuestion kmtExerciseQuestion = kmtExerciseQuestionService.getById(request.getQuestionId());
|
|
|
|
+ if (request.getQuestionClassType() == 2){
|
|
|
|
+ //移动小题
|
|
|
|
+ if (request.getType() == 1){
|
|
|
|
+ //上移
|
|
|
|
+ kmtExerciseMapper.updateByBookIdAndNum(kmtExerciseQuestion.getBookId(), kmtExerciseQuestion.getNum(),kmtExerciseQuestion.getNum() - 1);
|
|
|
|
+ kmtExerciseMapper.updateQuestionNumByQuestionId(kmtExerciseQuestion.getId(), kmtExerciseQuestion.getNum() - 1);
|
|
|
|
+ } else if (request.getType() == 2){
|
|
|
|
+ kmtExerciseMapper.updateByBookIdAndNum(kmtExerciseQuestion.getBookId(), kmtExerciseQuestion.getNum(), kmtExerciseQuestion.getNum() + 1);
|
|
|
|
+ kmtExerciseMapper.updateQuestionNumByQuestionId(kmtExerciseQuestion.getId(), kmtExerciseQuestion.getNum() + 1);
|
|
|
|
+ }
|
|
|
|
+ } else if (request.getQuestionClassType() == 1){
|
|
|
|
+ if (request.getType() == 1){
|
|
|
|
+ //大题上移, 先查找上一题的题目id列表
|
|
|
|
+ KmtExerciseQuestion previousQuestion = kmtExerciseMapper.findByBookIdAndNum(kmtExerciseQuestion.getBookId(), kmtExerciseQuestion.getNum() - 1);
|
|
|
|
+ List<KmtExerciseQuestion> previousQuestions = kmtExerciseMapper.findQuestionsByBookCourseIdAndBigIndex(previousQuestion.getBookCourseId(), previousQuestion.getBigQuestionIndex());
|
|
|
|
+ List<KmtExerciseQuestion> thisQuestions = kmtExerciseMapper.findQuestionsByBookCourseIdAndBigIndex(kmtExerciseQuestion.getBookCourseId(), kmtExerciseQuestion.getBigQuestionIndex());
|
|
|
|
+ if (previousQuestions != null && thisQuestions != null){
|
|
|
|
+ int preSize = previousQuestions.size();
|
|
|
|
+ int thisSize = thisQuestions.size();
|
|
|
|
+ List<String> previousIds = previousQuestions.stream().map(KmtExerciseQuestion::getId).collect(Collectors.toList());
|
|
|
|
+ List<String> thisIds = thisQuestions.stream().map(KmtExerciseQuestion::getId).collect(Collectors.toList());
|
|
|
|
+ kmtExerciseMapper.updateQuestionMinusNumByQuestionIds(thisIds, preSize);
|
|
|
|
+ kmtExerciseMapper.updateQuestionAddNumByQuestionIds(previousIds, thisSize);
|
|
|
|
+ }
|
|
|
|
+ } else if (request.getType() == 2){
|
|
|
|
+ List<KmtExerciseQuestion> thisQuestions = kmtExerciseMapper.findQuestionsByBookCourseIdAndBigIndex(kmtExerciseQuestion.getBookCourseId(), kmtExerciseQuestion.getBigQuestionIndex());
|
|
|
|
+ int thisSize = thisQuestions.size();
|
|
|
|
|
|
|
|
+ KmtExerciseQuestion nextQuestion = kmtExerciseMapper.findByBookIdAndNum(kmtExerciseQuestion.getBookId(), kmtExerciseQuestion.getNum() + thisSize);
|
|
|
|
+ List<KmtExerciseQuestion> nextQuestions = kmtExerciseMapper.findQuestionsByBookCourseIdAndBigIndex(nextQuestion.getBookCourseId(), nextQuestion.getBigQuestionIndex());
|
|
|
|
+ if (nextQuestions != null && thisQuestions != null){
|
|
|
|
+ int nextSize = nextQuestions.size();
|
|
|
|
+ List<String> nextIds = nextQuestions.stream().map(KmtExerciseQuestion::getId).collect(Collectors.toList());
|
|
|
|
+ List<String> thisIds = thisQuestions.stream().map(KmtExerciseQuestion::getId).collect(Collectors.toList());
|
|
|
|
+ kmtExerciseMapper.updateQuestionMinusNumByQuestionIds(nextIds, thisSize);
|
|
|
|
+ kmtExerciseMapper.updateQuestionAddNumByQuestionIds(thisIds, nextSize);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return responseEntity.success("成功");
|
|
return responseEntity.success("成功");
|
|
} else {
|
|
} else {
|
|
return responseEntity.failure("没有操作权限");
|
|
return responseEntity.failure("没有操作权限");
|