Browse Source

Merge branch 'update-branch' into aijia-branch

chen 5 years ago
parent
commit
a38820eb2c

+ 24 - 25
ssj-kmt-exercise-service-impl/src/main/java/com/ssj/service/kmt/kmt/service/impl/KmtExerciseQuestionDealServiceImpl.java

@@ -70,19 +70,19 @@ public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDe
             String answerImage = getImagePath(request.getAnswer());
 
             if (StringUtils.isBlank(request.getQuestionId())){
-                //题目id不存在则是新增, 新增需要把一个num减1
+                //题目id不存在则是新增, 前端传过来的是新增题目的上一题
                 KmtExerciseBook book  = kmtExerciseBookService.getById(request.getExerciseBookId());
-                KmtExerciseQuestion nextQuestion = kmtExerciseMapper.findNextByBookIdAndNum(book.getBookId(), request.getNum());
+                KmtExerciseQuestion previousQuestion = kmtExerciseMapper.findPreviousByBookIdAndNum(book.getBookId(), request.getNum());
                 //新增小题
                 if (request.getQuestionClassType() == 2){
-                    KmtExerciseQuestion newQuestion = saveQuestion(book, request, nextQuestion, questionImage, answerImage);
+                    KmtExerciseQuestion newQuestion = saveQuestion(book, request, previousQuestion, questionImage, answerImage);
                     saveJSONFile(newQuestion, request, questionImage);
                     ThreadPool.getInstance().addTask(new SyncSaveExerciseBookTask(kmtExerciseMapper, exerciseQuestionSearchService, book.getBookId()));
                 } else {
                     //新增大题, 如果已存在当前大题号,则报错
-                    String bqi = kmtExerciseMapper.findBigQuestionIndexByBookCourseId(nextQuestion.getBookCourseId(), request.getBigQuestionIndex());
+                    String bqi = kmtExerciseMapper.findBigQuestionIndexByBookCourseId(previousQuestion.getBookCourseId(), request.getBigQuestionIndex());
                     if (StringUtil.isBlank(bqi)){
-                        KmtExerciseQuestion newQuestion = saveQuestion(book, request, nextQuestion, questionImage, answerImage);
+                        KmtExerciseQuestion newQuestion = saveQuestion(book, request, previousQuestion, questionImage, answerImage);
                         saveJSONFile(newQuestion, request, questionImage);
                         ThreadPool.getInstance().addTask(new SyncSaveExerciseBookTask(kmtExerciseMapper, exerciseQuestionSearchService, book.getBookId()));
                     } else {
@@ -183,21 +183,23 @@ public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDe
         return result;
     }
 
-    private KmtExerciseQuestion saveQuestion(KmtExerciseBook book,AddExerciseQuestionRequest request, KmtExerciseQuestion nextQuestion, String questionImage, String answerImage){
-        kmtExerciseMapper.updateQuestionNumByBookIdAndNum(book.getBookId(), request.getNum());
+    private KmtExerciseQuestion saveQuestion(KmtExerciseBook book,AddExerciseQuestionRequest request, KmtExerciseQuestion previousQuestion, String questionImage, String answerImage){
+        kmtExerciseMapper.updateQuestionNumByBookIdAndNum(book.getBookId(), request.getNum() + 1);
         KmtExerciseQuestion kmtExerciseQuestion = new KmtExerciseQuestion();
         String newQuestionId = IdWorker.generateId();
         kmtExerciseQuestion.setId(newQuestionId);
-        kmtExerciseQuestion.setBookId(nextQuestion.getBookId());
-        kmtExerciseQuestion.setUnitId(nextQuestion.getUnitId());
-        kmtExerciseQuestion.setBookCourseId(nextQuestion.getBookCourseId());
+        kmtExerciseQuestion.setBookId(previousQuestion.getBookId());
+        kmtExerciseQuestion.setUnitId(previousQuestion.getUnitId());
+        kmtExerciseQuestion.setBookCourseId(previousQuestion.getBookCourseId());
         if (request.getQuestionClassType() == 2){
-            kmtExerciseQuestion.setBigQuestionIndex(nextQuestion.getBigQuestionIndex());
-            if (StringUtil.isBlank(nextQuestion.getParentId())){
-                kmtExerciseQuestion.setParentId(null);
-                kmtExerciseQuestion.setQuestionClassType(1);
+            kmtExerciseQuestion.setBigQuestionIndex(previousQuestion.getBigQuestionIndex());
+            if (StringUtil.isBlank(previousQuestion.getParentId()) && previousQuestion.getQuestionClassType() == 0){
+                //如果上一题是单题,修改为大标题
+                kmtExerciseMapper.updateKmtExerciseQuestionClassTypeAndParentId(null, 1, previousQuestion.getId());
+                kmtExerciseQuestion.setParentId(previousQuestion.getId());
+                kmtExerciseQuestion.setQuestionClassType(2);
             } else {
-                kmtExerciseQuestion.setParentId(nextQuestion.getParentId());
+                kmtExerciseQuestion.setParentId(previousQuestion.getParentId());
                 kmtExerciseQuestion.setQuestionClassType(2);
             }
         } else {
@@ -205,23 +207,20 @@ public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDe
             kmtExerciseQuestion.setParentId(null);
             kmtExerciseQuestion.setQuestionClassType(0);
         }
-        kmtExerciseQuestion.setPageIndex(nextQuestion.getPageIndex());
+        kmtExerciseQuestion.setPageIndex(previousQuestion.getPageIndex());
         kmtExerciseQuestion.setImage(questionImage);
         kmtExerciseQuestion.setCreateTime(new Date());
         kmtExerciseQuestion.setDealStatus(3);
         kmtExerciseQuestion.setAnswerImage(answerImage);
-        kmtExerciseQuestion.setNum(nextQuestion.getNum());
+        kmtExerciseQuestion.setNum(previousQuestion.getNum() + 1);
         kmtExerciseQuestion.setSmallQuestionName(request.getSmallQuestionIndex());
-        kmtExerciseQuestion.setCourseName(nextQuestion.getCourseName());
-        kmtExerciseQuestion.setIsCommonFlag(nextQuestion.getIsCommonFlag());
-        kmtExerciseQuestion.setExerciseBookId(nextQuestion.getExerciseBookId());
+        kmtExerciseQuestion.setCourseName(previousQuestion.getCourseName());
+        kmtExerciseQuestion.setIsCommonFlag(previousQuestion.getIsCommonFlag());
+        kmtExerciseQuestion.setExerciseBookId(previousQuestion.getExerciseBookId());
         kmtExerciseQuestion.setHandlerSubmitTime(DateUtil.parse_yyyyMMddHHmmss("1970-01-01 00:00:01"));
-        kmtExerciseQuestion.setQuestionPath(nextQuestion.getQuestionPath().substring(0, nextQuestion.getQuestionPath().lastIndexOf("/")) + "/" + newQuestionId + ".json");
+        kmtExerciseQuestion.setQuestionPath(previousQuestion.getQuestionPath().substring(0, previousQuestion.getQuestionPath().lastIndexOf("/")) + "/" + newQuestionId + ".json");
 //        logger.error(JSON.toJSONString(kmtExerciseQuestion));
         kmtExerciseQuestion = kmtExerciseQuestionService.save(kmtExerciseQuestion);
-        if (request.getQuestionClassType() == 2 && StringUtil.isBlank(nextQuestion.getParentId())) {
-            kmtExerciseMapper.updateParentIdAndClassType(kmtExerciseQuestion.getId(), 2, book.getBookId(), request.getNum());
-        }
         return kmtExerciseQuestion;
     }
 
@@ -387,7 +386,7 @@ public class KmtExerciseQuestionDealServiceImpl implements KmtExerciseQuestionDe
     @Override
     public ResponseEntity findEditExerciseQuestions(ExerciseQuestionsEditRequest request) {
         Page page = new Page(request.getPageNo(), request.getPageSize());
-        List<ExerciseQuestionEditDto> list = kmtExerciseMapper.findEditExerciseQuestions(request.getExerciseBookId(), page);
+        List<ExerciseQuestionEditDto> list = kmtExerciseMapper.findEditExerciseQuestions(request, page);
         Map<String, String> users = new HashMap<>();
         for (ExerciseQuestionEditDto questionEditDto : list){
             String versionStr = knowledgeVersion.getVersionNameBySubjectAndVersionNum(questionEditDto.getCourseName(), questionEditDto.getVersion());

+ 12 - 0
ssj-kmt-exercise-service-impl/src/main/java/com/ssj/service/kmt/kmt/service/impl/KmtExerciseQuestionServiceImpl.java

@@ -145,9 +145,21 @@ public class KmtExerciseQuestionServiceImpl extends BaseServiceImpl<KmtExerciseQ
         if (StringUtils.isNotBlank(request.getPeriodId())){
             List<ExerciseQuetionDto> questions = null;
             if (StringUtil.isNotBlank(request.getQuestionId())){
+                String temp = kmtExerciseMapper.findDifferentExerciseBookId(request.getQuestionId().trim());
                 questions = kmtExerciseMapper.findExerciseQuestionByQuestionId(request.getQuestionId().trim(), page);
+                if (StringUtil.isNotBlank(temp)){
+                    for (ExerciseQuetionDto q : questions){
+                        q.setIsCommonFlag(q.getIsCommonFlag() == 0 ? 1 : 0);
+                    }
+                }
             } else {
+                String temp = kmtExerciseMapper.findDifferentExerciseBookIdByBookId(request.getBookId());
                 questions = kmtExerciseMapperService.findQuestionByBookCourseIdAndUserId(request, page,  userId);
+                if (StringUtil.isNotBlank(temp)){
+                    for (ExerciseQuetionDto q : questions){
+                        q.setIsCommonFlag(q.getIsCommonFlag() == 0 ? 1 : 0);
+                    }
+                }
             }
             kmtExerciseService.appendQuestionDtoDataFromJSONFile(questions);
             list = this.getQuestionGroupList(questions, true);

+ 10 - 0
ssj-kmt-exercise-service/src/main/java/com/ssj/service/kmt/dto/ExerciseQuetionDto.java

@@ -90,6 +90,8 @@ public class ExerciseQuetionDto implements Serializable {
 
     private String questionImage;
 
+    private int isCommonFlag;
+
     @JSONField(serialize = false)
     private String handleUserId;
 
@@ -708,4 +710,12 @@ public class ExerciseQuetionDto implements Serializable {
     public void setOriginAnswer(String originAnswer) {
         this.originAnswer = originAnswer;
     }
+
+    public int getIsCommonFlag() {
+        return isCommonFlag;
+    }
+
+    public void setIsCommonFlag(int isCommonFlag) {
+        this.isCommonFlag = isCommonFlag;
+    }
 }

+ 11 - 0
ssj-kmt-exercise-service/src/main/java/com/ssj/service/kmt/request/rollbackai/ExerciseBooksEditRequest.java

@@ -22,6 +22,9 @@ public class ExerciseBooksEditRequest implements Serializable {
     @ApiModelProperty(name = "bookName", value = "练习册名称", required = false)
     private String  bookName;
 
+    @ApiModelProperty(name = "questionId", value = "题目id", required = false)
+    private String questionId;
+
 
     public String getSubject() {
         return subject;
@@ -62,4 +65,12 @@ public class ExerciseBooksEditRequest implements Serializable {
     public void setBookName(String bookName) {
         this.bookName = bookName;
     }
+
+    public String getQuestionId() {
+        return questionId;
+    }
+
+    public void setQuestionId(String questionId) {
+        this.questionId = questionId;
+    }
 }

+ 11 - 0
ssj-kmt-exercise-service/src/main/java/com/ssj/service/kmt/request/rollbackai/ExerciseQuestionsEditRequest.java

@@ -8,6 +8,9 @@ import java.io.Serializable;
 public class ExerciseQuestionsEditRequest implements Serializable {
     private static final long serialVersionUID = 1L;
 
+    @ApiModelProperty(name = "questionId", value = "题目id", required = false)
+    private String questionId;
+
     @ApiModelProperty(name = "exerciseBookId", value = "练习册id", required = true)
     private String  exerciseBookId;
 
@@ -40,4 +43,12 @@ public class ExerciseQuestionsEditRequest implements Serializable {
     public void setPageSize(int pageSize) {
         this.pageSize = pageSize;
     }
+
+    public String getQuestionId() {
+        return questionId;
+    }
+
+    public void setQuestionId(String questionId) {
+        this.questionId = questionId;
+    }
 }

+ 9 - 1
ssj-mybatis-service-impl/src/main/java/com/ssj/service/mapper/KmtExerciseMapper.java

@@ -19,6 +19,7 @@ import com.ssj.service.kmt.exercisesys.request.*;
 import com.ssj.service.kmt.request.UnitAndPeriodListRequest;
 import com.ssj.service.kmt.request.rollbackai.AddExerciseQuestionRequest;
 import com.ssj.service.kmt.request.rollbackai.ExerciseBooksEditRequest;
+import com.ssj.service.kmt.request.rollbackai.ExerciseQuestionsEditRequest;
 import com.ssj.service.sys.homework.vo.HomeworkExerciseBookDto;
 import org.apache.ibatis.annotations.*;
 
@@ -1224,6 +1225,13 @@ public interface KmtExerciseMapper {
     List<ExerciseBookEditDto> findEditExerciseBooks (@Param("request")ExerciseBooksEditRequest request);
 
 
-    List<ExerciseQuestionEditDto> findEditExerciseQuestions (@Param("exerciseBookId") String exerciseBookId,
+    List<ExerciseQuestionEditDto> findEditExerciseQuestions (@Param("request") ExerciseQuestionsEditRequest request,
                                     Page page);
+
+    @Select("select eb.id from kmt_exercise_book eb, kmt_exercise_questions eq where eb.book_id=eq.book_id" +
+            " and eq.id=#{questionId} and eb.book_type=3 limit 1")
+    String findDifferentExerciseBookId (@Param("questionId") String questionId);
+
+    @Select("select eb.id from kmt_exercise_book eb where eb.book_id=#{bookId} and eb.book_type=3 limit 1")
+    String findDifferentExerciseBookIdByBookId (@Param("bookId") String bookId);
 }

+ 24 - 8
ssj-mybatis-service-impl/src/main/resources/mybatis/mapper/KmtExerciseMapper.xml

@@ -2013,7 +2013,7 @@
 
     <select id="findExerciseQuestionByQuestionId" resultType="com.ssj.service.kmt.dto.ExerciseQuetionDto">
         select eq.id question_id, eq.course_name, eb.handle_user_id, eb.auditing_user_id, eb.analysis_user_id, eb.analysis_auditer_id, eq.book_course_id course_id,
-        eq.big_question_index, eq.small_question_name small_question_index,
+        eq.big_question_index, eq.small_question_name small_question_index, eq.is_common_flag,
         eq.deal_status question_status, eq.create_time, eq.remark reason, eq.from_user_id, eq.to_user_id,
         eq.question_type question_types, eq.difficulty_level difficulty_levels, eq.real_exam_type real_exam_types,
         eq.training_skill training_skills, eq.parent_id, eq.proofread_status, eq.question_path, eq.num, eq.create_time
@@ -2037,19 +2037,35 @@
 
     <select id="findEditExerciseBooks" resultType="com.ssj.service.kmt.dto.exercise.ExerciseBookEditDto">
         select distinct eb.id exercise_book_id, eb.book_name exercise_book_name from kmt_exercise_question_rollback rb, kmt_exercise_questions eq, kmt_exercise_book eb
-        where rb.question_id=eq.id and eq.exercise_book_id=eb.id and  rb.type=2 and eb.grade=#{request.grade}
-        and eb.course_name=#{request.subject}
-        and eb.version=#{request.versionType} and eb.semester=#{request.semester}
-        <if test="request.bookName != null and request.bookName != ''">
-            and eb.book_name like concat('%',#{request.bookName},'%')
-        </if>
+        where rb.question_id=eq.id and eq.exercise_book_id=eb.id and  rb.type=2
+        <choose>
+            <when test="request.questionId != null and request.questionId != ''">
+                and eq.id=#{request.questionId}
+            </when>
+            <otherwise>
+                and eb.grade=#{request.grade}
+                and eb.course_name=#{request.subject}
+                and eb.version=#{request.versionType} and eb.semester=#{request.semester}
+                <if test="request.bookName != null and request.bookName != ''">
+                    and eb.book_name like concat('%',#{request.bookName},'%')
+                </if>
+            </otherwise>
+        </choose>
     </select>
 
     <select id="findEditExerciseQuestions" resultType="com.ssj.service.kmt.dto.exercise.ExerciseQuestionEditDto">
         select eq.id question_id, eb.book_name exercise_book_name, eb.course_name, eb.grade, eb.version, eb.semester,
         eq.deal_status, eb.book_type type, rb.create_time, rb.user_id from kmt_exercise_question_rollback rb,
         kmt_exercise_questions eq, kmt_exercise_book eb
-        where rb.question_id=eq.id and eq.exercise_book_id=eb.id and  rb.type=2 and eb.id=#{exerciseBookId}
+        where rb.question_id=eq.id and eq.exercise_book_id=eb.id and  rb.type=2
+        <choose>
+            <when test="request.questionId != null and request.questionId != ''">
+                and eq.id=#{request.getQuestionId}
+            </when>
+            <otherwise>
+                and eb.id=#{request.exerciseBookId}
+            </otherwise>
+        </choose>
         order by rb.create_time desc
     </select>
 </mapper>