wuwen il y a 4 ans
Parent
commit
16d247a136

+ 33 - 0
src/main/java/com/ssj/api/controller/ApiManagerTeacherQualityController.java

@@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController;
 import com.ssj.api.security.annotation.ModifySecurity;
 import com.ssj.bean.weixin.libmy.domain.TbLibManager;
 import com.ssj.framework.core.common.controller.BaseController;
+import com.ssj.framework.core.security.exception.CommonException;
 import com.ssj.framework.core.util.ResponseConstant;
 import com.ssj.framework.core.util.ResponseEntity;
 import com.ssj.service.kmt.correctsys.dto.HomeworkCheckSubjectDto;
@@ -25,7 +26,9 @@ import com.ssj.service.kmt.correctsys.dto.HomeworkPictureCheckDto;
 import com.ssj.service.kmt.correctsys.request.CorrectCheckReq;
 import com.ssj.service.kmt.correctsys.request.InspectorAllotListReq;
 import com.ssj.service.kmt.correctsys.request.TeacherAllotReq;
+import com.ssj.service.kmt.correctsys.service.KmtCorrectHomeworkService;
 import com.ssj.service.kmt.correctsys.service.KmtCorrectSysService;
+import com.ssj.service.sys.homework.request.CorrectionsRequest;
 import com.ssj.service.weixin.library.service.IBookManagerService;
 
 import io.swagger.annotations.Api;
@@ -41,6 +44,9 @@ public class ApiManagerTeacherQualityController extends BaseController {
 	
     @Autowired
     private KmtCorrectSysService kmtCorrectSysService;
+    
+    @Autowired
+    private KmtCorrectHomeworkService kmtCorrectHomeworkService;
 
     @RequestMapping(value = "/findCheckHomeworkList",method = RequestMethod.POST)
     @ApiOperation(value ="查询质检列表数据",httpMethod = "POST",notes = "查询质检列表数据")
@@ -110,5 +116,32 @@ public class ApiManagerTeacherQualityController extends BaseController {
         }
         return responseEntity;
     }
+    
+    
+    /**
+        * 质检员批改作业
+     */
+    @ApiOperation(value = "批改作业")
+    @ModifySecurity
+    @RequestMapping(value = "checkerCorrect", method = RequestMethod.POST)
+    public ResponseEntity checkerCorrect(@RequestParam(name = "accessToken") String accessToken, @RequestBody CorrectionsRequest request) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        try {
+            String teacherId = tokenManager.getUserId(accessToken);
+            responseEntity = kmtCorrectHomeworkService.checkCorrect(request, teacherId);
+        } catch (CommonException e) {
+            responseEntity.failure(ResponseConstant.CODE_500, e.getMessage());
+        } catch (Exception e){
+            logger.error("提交异常", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
+        }
+        return responseEntity;
+    }
+    
+    
+    
+    
+    
+    
 
 }

+ 94 - 0
src/main/java/com/ssj/service/kmt/correctsys/HomeworkHowDetailServiceImpl.java

@@ -0,0 +1,94 @@
+package com.ssj.service.kmt.correctsys;
+
+import java.util.Date;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.ssj.bean.sys.homework.domain.HomeworkHowDetail;
+import com.ssj.bean.weixin.zyb.domain.ZuoybKnowHowDetails;
+import com.ssj.dao.sys.homework.dao.HomeworkHowDetailsDao;
+import com.ssj.framework.core.common.service.BaseServiceImpl;
+import com.ssj.service.conch.parents.v2.dto.KnowHowDetailDTO;
+import com.ssj.service.kmt.correctsys.service.HomeworkHowDetailsService;
+import com.ssj.service.mapper.HomeworkMapper;
+import com.ssj.service.weixin.zuoyb.service.ZuoybKnowHowDetailsService;
+
+@Service
+@Transactional
+public class HomeworkHowDetailServiceImpl extends BaseServiceImpl<HomeworkHowDetail, String> implements HomeworkHowDetailsService {
+
+    @Autowired
+    private HomeworkHowDetailsDao dao;
+    @Autowired
+    private ZuoybKnowHowDetailsService zuoybKnowHowDetailsService;
+    @Autowired
+    private HomeworkMapper homeworkMapper;
+
+    @Override
+    public PagingAndSortingRepository<HomeworkHowDetail, String> getDao() {
+        return dao;
+    }
+
+    @Override
+    public HomeworkHowDetail createHomeworkHowDetail(Date now, String homeworkId, String detailId, Integer knowledgeVersion) {
+        ZuoybKnowHowDetails zuoybKnowHowDetails = zuoybKnowHowDetailsService.getById(detailId);
+
+        if (zuoybKnowHowDetails == null) {
+            throw new RuntimeException("知识点不存在");
+        }
+
+        HomeworkHowDetail homeworkHowDetail = new HomeworkHowDetail();
+        homeworkHowDetail.setHomeworkId(homeworkId);
+        homeworkHowDetail.setHowDetailId(zuoybKnowHowDetails.getId());
+        homeworkHowDetail.setModule(zuoybKnowHowDetails.getModule());
+        homeworkHowDetail.setWorkDetailType(1);
+        homeworkHowDetail.setDetailCount(1);
+        homeworkHowDetail.setKnowledgeVersion(knowledgeVersion);
+        homeworkHowDetail.setCreateTime(now);
+
+        return homeworkHowDetail;
+    }
+
+  
+    @Override
+    public void deleteByHomeworkPictureIdIn(List<String> homeworkPictureIdList) {
+        dao.deleteByHomeworkPictureIdIn(homeworkPictureIdList);
+    }
+
+    @Override
+    public void deleteByHomeworkPictureId(String homeworkPictureId) {
+        dao.deleteByHomeworkPictureId(homeworkPictureId);
+    }
+
+    @Override
+    public void deleteExerciseByHomeworkPictureId(String homeworkPictureId) {
+        dao.deleteExerciseByHomeworkPictureId(homeworkPictureId);
+    }
+
+    @Override
+    public void deleteWrongQuesByHomeworkId(String homeworkId) {
+        dao.deleteWrongQuesByHomeworkId(homeworkId);
+    }
+
+    @Override
+    public void deleteWrongBookQuestion(List<KnowHowDetailDTO> knowHowDetailDTOList, String homeworkId) {
+        knowHowDetailDTOList.forEach(knowHowDetailDTO -> {
+            dao.deleteWrongBookQuestion(knowHowDetailDTO.getKnowHowDetailId(), knowHowDetailDTO.getKnowledgeVersion(), homeworkId);
+            homeworkMapper.deleteWrongQuestionKnowledgeCount(homeworkId, knowHowDetailDTO.getKnowHowDetailId(), knowHowDetailDTO.getKnowledgeVersion());
+        });
+    }
+
+    @Override
+    public List<HomeworkHowDetail> findHowDetailsByHomeworkPictureId(String homeworkPictureId) {
+        return dao.findByHomeworkPictureId(homeworkPictureId);
+    }
+
+    @Override
+    public List<HomeworkHowDetail> findAllByHomeworkId(String homeworkId) {
+        return dao.findByHomeworkIdAndWrongQuestionIdIsNull(homeworkId);
+    }
+}

+ 387 - 0
src/main/java/com/ssj/service/kmt/correctsys/KmtCorrectHomeworkServiceImpl.java

@@ -0,0 +1,387 @@
+package com.ssj.service.kmt.correctsys;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.alibaba.fastjson.JSON;
+import com.ssj.bean.kmt.kmt.domain.KmtExerciseBookCourse;
+import com.ssj.bean.kmt.kmt.domain.KmtExerciseQuestion;
+import com.ssj.bean.kmt.kmt.domain.KmtExerciseQuestionKnow;
+import com.ssj.bean.kmt.kmt.domain.KmtHomeworkWrongQuestion;
+import com.ssj.bean.sys.compositioncomment.domain.CompositionComment;
+import com.ssj.bean.sys.homework.domain.HomeworkHowDetail;
+import com.ssj.bean.sys.homework.domain.HomeworkPicture;
+import com.ssj.bean.sys.homework.domain.HomeworkPictureCorrect;
+import com.ssj.bean.sys.homework.domain.SconTeacherCorrectRecord;
+import com.ssj.bean.weixin.libmy.domain.TbLibManager;
+import com.ssj.bean.weixin.zyb.domain.ZuoybKnowHowDetails;
+import com.ssj.framework.core.security.exception.CommonException;
+import com.ssj.framework.core.util.Constant;
+import com.ssj.framework.core.util.ResponseConstant;
+import com.ssj.framework.core.util.ResponseEntity;
+import com.ssj.framework.core.util.StringUtil;
+import com.ssj.framework.weixin.util.DateUtil;
+import com.ssj.service.kmt.correctsys.service.HomeworkHowDetailsService;
+import com.ssj.service.kmt.correctsys.service.KmtCorrectHomeworkService;
+import com.ssj.service.kmt.dto.CompositionCommentDto;
+import com.ssj.service.kmt.dto.exercise.ExerciseQuestionAnswerSpace;
+import com.ssj.service.kmt.enums.HomeworkWrongQuestionTypeEnum;
+import com.ssj.service.kmt.service.KmtExerciseBookCourseService;
+import com.ssj.service.kmt.service.KmtExerciseQuestionKnowService;
+import com.ssj.service.kmt.service.KmtExerciseQuestionService;
+import com.ssj.service.kmt.service.KmtExerciseService;
+import com.ssj.service.kmt.service.KmtHomeworkWrongQuestionService;
+import com.ssj.service.sys.compositioncomment.service.CompositionCommentService;
+import com.ssj.service.sys.homework.request.CorrectionQuestionRequest;
+import com.ssj.service.sys.homework.request.CorrectionRequest;
+import com.ssj.service.sys.homework.request.CorrectionSpaceRequest;
+import com.ssj.service.sys.homework.request.CorrectionsRequest;
+import com.ssj.service.sys.homework.service.HomeworkPictureCorrectService;
+import com.ssj.service.sys.homework.service.HomeworkPictureService;
+import com.ssj.service.sys.homework.service.HomeworkPictureVagueRecordService;
+import com.ssj.service.sys.homework.service.SconTeacherCorrectRecordService;
+import com.ssj.service.sys.template.CommentTemplateMapperService;
+import com.ssj.service.weixin.library.service.IBookManagerService;
+import com.ssj.service.weixin.zuoyb.service.ZuoybKnowHowDetailsService;
+/**
+ * @author yrf
+ * @date 2019/1/21 11:28
+ */
+
+@Service
+@Transactional
+public class KmtCorrectHomeworkServiceImpl implements KmtCorrectHomeworkService {
+
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+    @Autowired
+    private HomeworkPictureService homeworkPictureService;
+    @Autowired
+    private KmtHomeworkWrongQuestionService kmtHomeworkWrongQuestionService;
+    @Autowired
+    private ZuoybKnowHowDetailsService zuoybKnowHowDetailsService;
+    @Autowired
+    private HomeworkHowDetailsService homeworkHowDetailsService;
+    @Autowired
+    private KmtExerciseQuestionKnowService kmtExerciseQuestionKnowService;
+    @Autowired
+    private KmtExerciseBookCourseService kmtExerciseBookCourseService;
+    @Autowired
+    private KmtExerciseQuestionService kmtExerciseQuestionService;
+    @Autowired
+    private IBookManagerService bookManagerService;
+    @Autowired
+    private HomeworkPictureCorrectService homeworkPictureCorrectService;
+    @Autowired
+    private CompositionCommentService compositionCommentService;
+    @Autowired
+    private CommentTemplateMapperService commentTemplateMapperService;
+    @Autowired
+    private SconTeacherCorrectRecordService sconTeacherCorrectRecordService;
+    @Autowired
+    private HomeworkPictureVagueRecordService homeworkPictureVagueRecordService;
+    @Autowired
+    private KmtExerciseService kmtExerciseService;
+
+    /**
+     * 质检员保存作业批改结果
+     * @param correction
+     * @param homeworkPicture
+     */
+    private void correctionSaving4Checker (CorrectionRequest correction, HomeworkPicture homeworkPicture)  throws CommonException {
+        Date nowDateTime = new Date();
+
+        //保存勾选的对错题
+        if (CollectionUtils.isNotEmpty(correction.getAnswerList())){
+            List<KmtHomeworkWrongQuestion> wrongQuestions = kmtHomeworkWrongQuestionService.findList(homeworkPicture.getId(), false);
+            List<HomeworkHowDetail> homeworkHowDetails = homeworkHowDetailsService.findHowDetailsByHomeworkPictureId(homeworkPicture.getId());
+            logger.info("保存对错题前对错题记录{}", JSON.toJSON(wrongQuestions));
+            logger.info("报错错题知识点前的知识点记录{}", JSON.toJSON(homeworkHowDetails));
+            kmtHomeworkWrongQuestionService.deleteByHomeworkPictureId(homeworkPicture.getId());
+            homeworkHowDetailsService.deleteExerciseByHomeworkPictureId(homeworkPicture.getId());
+            this.saveExerciseCorretion(correction, homeworkPicture);
+        }
+
+        //保存质检员批改修改前的数据
+        SconTeacherCorrectRecord sconTeacherCorrectRecord = sconTeacherCorrectRecordService.findByHomeworkPictureId(homeworkPicture.getId());
+        if (sconTeacherCorrectRecord == null){
+            sconTeacherCorrectRecord = new SconTeacherCorrectRecord();
+            sconTeacherCorrectRecord.setCorrected_picture_url(homeworkPicture.getCorrectedPictureUrl());
+            sconTeacherCorrectRecord.setHomeworkPictureId(homeworkPicture.getId());
+            sconTeacherCorrectRecord.setTeacherId(homeworkPicture.getTeacherId());
+            sconTeacherCorrectRecord.setCreateTime(nowDateTime);
+            sconTeacherCorrectRecordService.save(sconTeacherCorrectRecord);
+        }
+
+        //保存作文评语的批改结果
+        List<CompositionCommentDto> selectedCompositionCommentList = correction.getCompositionCommentList();
+        if (CollectionUtils.isNotEmpty(selectedCompositionCommentList)){
+            homeworkPicture.setIsComposition(1);
+            List<String> selectedCompositionCommentIdList = selectedCompositionCommentList.stream()
+                    .map(CompositionCommentDto::getCompositionCommentId)
+                    .distinct()
+                    .collect(Collectors.toList());
+            boolean checkResult = commentTemplateMapperService.checkSelectedCompositionComment(selectedCompositionCommentIdList);
+            if (!checkResult) {
+                throw new CommonException("作文评语至少选择3个维度,同维度只能选择1个级别");
+            }
+
+            //清除旧的批改结果
+            List<CompositionComment> tmpList = compositionCommentService.findByHomeworkPictureId(homeworkPicture.getId());
+            logger.info("作业批改保存作文批改前的记录{}", JSON.toJSON(tmpList));
+            compositionCommentService.deleteByHomeworkPictureId(homeworkPicture.getId());
+
+            List<CompositionComment> compositionCommentList = new LinkedList<>();
+            selectedCompositionCommentList.forEach(compositionCommentDto -> {
+                CompositionComment compositionComment = new CompositionComment();
+                compositionComment.setHomeworkPictureId(homeworkPicture.getId());
+                compositionComment.setCommentTemplateId(compositionCommentDto.getCompositionCommentId());
+                compositionComment.setCreateTime(nowDateTime);
+                compositionCommentList.add(compositionComment);
+            });
+            compositionCommentService.save(compositionCommentList);
+        }
+
+        //二次批改状态记录,只有是可批改时间才设置为未匹配
+        if (homeworkPicture.getIsFeedback() == 1 && DateUtil.compareDate(DateUtil.parse_yyyyMMdd(this.getQueryBeginDate()), homeworkPicture.getCreateTime())) {
+            homeworkPicture.setIsKnowFeedback(0);
+            HomeworkPictureCorrect knowCorrect = homeworkPictureCorrectService.findByHomeworkPictureIdAndType(homeworkPicture.getId(), Constant.KNOW_MATCH_TYPE);
+            if (knowCorrect != null){
+                knowCorrect.setSecondCorrectType(1);
+                knowCorrect.setEndTime(null);
+                homeworkPictureCorrectService.save(knowCorrect);
+            }
+        }
+
+        if (homeworkPicture.getIsMark() == 10){
+            homeworkPicture.setIsMark(0);
+            if (CollectionUtils.isNotEmpty(homeworkPictureVagueRecordService.findByHomeworkPictureId(homeworkPicture.getId()))){
+                homeworkPicture.setIsMark(2);
+            }
+        }
+        homeworkPicture.setCorrectedPictureUrl(correction.getHomeworkPictureEditPath());
+        homeworkPicture.setIsCorrect(12);
+        homeworkPicture.setIsCheckerCorrect(1);
+        homeworkPictureService.save(homeworkPicture);
+
+        //异步推送报告、作文批改处理,减少批改老师的权重
+        //ThreadPool.getInstance().addTask(new SyncCheckerSubmitHomeworkCorrect(correction, homeworkPicture));
+    }
+    
+    
+    private String getQueryBeginDate(){
+        String beginTime;
+        if (DateUtil.getHour(new Date()) < 14) {
+            beginTime=DateUtil.format_yyyyMMdd(DateUtil.addDays(new Date(), -1));
+        } else {
+            beginTime=DateUtil.format_yyyyMMdd(DateUtil.getTodatDate());
+        }
+        return beginTime;
+    }
+
+    
+    
+    @Override
+    public void saveExerciseCorretion (CorrectionRequest correction, HomeworkPicture homeworkPicture){
+        List<KmtHomeworkWrongQuestion> kmtHomeworkQuestions = new ArrayList<>();
+        List<HomeworkHowDetail> knowList = new ArrayList<>();
+        List<CorrectionQuestionRequest> correctionQuestions = correction.getAnswerList();
+
+        if (correctionQuestions != null  && correctionQuestions.size() > 0){
+        	List<KmtExerciseQuestion> questions = kmtExerciseQuestionService.findByIdIn(correctionQuestions.stream().map(CorrectionQuestionRequest::getQuestionId).collect(Collectors.toList()));
+            kmtExerciseService.appendQuestionDataFromJSONFile(questions);
+            if (questions != null && questions.size() > 0) {
+                KmtExerciseBookCourse bookCourse = kmtExerciseBookCourseService.findBookDataByBookId(questions.get(0).getBookId());
+                //循环添加对错题
+                for (CorrectionQuestionRequest correctionQuestion : correctionQuestions) {
+                    //判断题目有没有分空
+                    boolean isSpace = false;
+                    for (KmtExerciseQuestion kmtExerciseQuestion : questions){
+                        //找到那道题目
+                        if (kmtExerciseQuestion.getId().equals(correctionQuestion.getQuestionId())){
+                            //json转对象后数组长度大于1则有分空
+                            if (StringUtils.isNotBlank(kmtExerciseQuestion.getAnswerJson())){
+                                List<ExerciseQuestionAnswerSpace> answerSpaces = JSON.parseArray(kmtExerciseQuestion.getAnswerJson(), ExerciseQuestionAnswerSpace.class);
+                                if (answerSpaces.size() > 1){
+                                    isSpace = true;
+                                }
+                            } else if (StringUtil.isNotBlank(kmtExerciseQuestion.getOptionAnswer())){
+                                //没有json的话,它的答案html按符号分割后空的数组长度大于1,则有分空
+                                String[] answerArray = kmtExerciseQuestion.getOptionAnswer().split("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
+                                if (answerArray != null && answerArray.length > 1){
+                                    isSpace = true;
+                                }
+                            }
+                            break;
+                        }
+                    }
+
+                    if (CollectionUtils.isNotEmpty(correctionQuestion.getSpaces())){
+                        List<CorrectionSpaceRequest> wrongSpaces = correctionQuestion.getSpaces().stream()
+                                .filter(correctionSpaceRequest -> correctionSpaceRequest.getType() == HomeworkWrongQuestionTypeEnum.WrongAnswer.getCode()).collect(Collectors.toList());
+                        List<CorrectionSpaceRequest> rightSpaces = correctionQuestion.getSpaces().stream()
+                                .filter(correctionSpaceRequest -> correctionSpaceRequest.getType() == HomeworkWrongQuestionTypeEnum.Right.getCode()).collect(Collectors.toList());
+                        //只有一个空,表示不分空
+                        KmtHomeworkWrongQuestion temp = null;
+                        if (isSpace){
+                            List<Integer> spaceIndexs = wrongSpaces.stream().map(CorrectionSpaceRequest::getIndex).collect(Collectors.toList());
+                            List<Integer> correctIndexs = rightSpaces.stream().map(CorrectionSpaceRequest::getIndex).collect(Collectors.toList());
+                            if (CollectionUtils.isNotEmpty(wrongSpaces)){
+                                temp = createKmtHomeworkWrongQuestionV1(homeworkPicture, new Date(),
+                                        correctionQuestion.getQuestionId(), spaceIndexs, correctIndexs,
+                                        HomeworkWrongQuestionTypeEnum.WrongAnswer.getCode());
+                                temp = kmtHomeworkWrongQuestionService.save(temp);
+                                this.saveWrongQuestionKnowHowDetails(knowList, temp, correctionQuestion.getQuestionId(), bookCourse);
+                            } else if (CollectionUtils.isNotEmpty(rightSpaces)){
+                                temp = createKmtHomeworkWrongQuestionV1(homeworkPicture, new Date(),
+                                        correctionQuestion.getQuestionId(), null, correctIndexs,
+                                        HomeworkWrongQuestionTypeEnum.Right.getCode());
+                                kmtHomeworkQuestions.add(temp);
+                            }
+                        } else {
+                            if (CollectionUtils.isNotEmpty(wrongSpaces)){
+                                temp = createKmtHomeworkWrongQuestionV1(homeworkPicture, new Date(),
+                                        correctionQuestion.getQuestionId(), null, null,
+                                        HomeworkWrongQuestionTypeEnum.WrongAnswer.getCode());
+                                temp = kmtHomeworkWrongQuestionService.save(temp);
+                                this.saveWrongQuestionKnowHowDetails(knowList, temp, correctionQuestion.getQuestionId(), bookCourse);
+                            } else if (CollectionUtils.isNotEmpty(rightSpaces)){
+                                temp = createKmtHomeworkWrongQuestionV1(homeworkPicture, new Date(),
+                                        correctionQuestion.getQuestionId(), null, null,
+                                        HomeworkWrongQuestionTypeEnum.Right.getCode());
+                                kmtHomeworkQuestions.add(temp);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        //保存
+        if (kmtHomeworkQuestions.size() > 0){
+            kmtHomeworkWrongQuestionService.save(kmtHomeworkQuestions);
+        }
+        if (knowList.size() > 0){
+            homeworkHowDetailsService.save(knowList);
+
+            // 更新needUpdateWrongQuestionKnowledgeCount字段
+//            homeworkMapper.updateNeedUpdateWrongQuestionKnowledgeCount(Collections.singleton(homeworkPicture.getHomeworkId()), 0, 1);
+        }
+    }
+    
+    
+    
+    /* 生成错题记录
+    * @param homeworkPicture
+    * @param now
+    * @param wrongQuestionId
+    * @param spaces
+    * @param correctSpaces
+    * @param wrongType
+    * @return
+    */
+   private KmtHomeworkWrongQuestion createKmtHomeworkWrongQuestionV1(HomeworkPicture homeworkPicture, Date now,
+                                                                   String wrongQuestionId, List<Integer> spaces,
+                                                                   List<Integer> correctSpaces,
+                                                                   Integer wrongType) {
+       KmtHomeworkWrongQuestion kmtHomeworkWrongQuestion = new KmtHomeworkWrongQuestion();
+       kmtHomeworkWrongQuestion.setHomeworkId(homeworkPicture.getHomeworkId());
+       kmtHomeworkWrongQuestion.setHomeworkPictureId(homeworkPicture.getId());
+       kmtHomeworkWrongQuestion.setQuestionId(wrongQuestionId);
+       kmtHomeworkWrongQuestion.setStudentId(homeworkPicture.getVipId());
+       kmtHomeworkWrongQuestion.setType(wrongType);
+       kmtHomeworkWrongQuestion.setIsDelete(false);
+       kmtHomeworkWrongQuestion.setCreateTime(now);
+       if (CollectionUtils.isNotEmpty(spaces)) {
+           kmtHomeworkWrongQuestion.setSpaceIndex(StringUtils.join(spaces, "、"));
+       }
+       if (CollectionUtils.isNotEmpty(correctSpaces)){
+           kmtHomeworkWrongQuestion.setCorrectSpaceIndex(StringUtils.join(correctSpaces, "、"));
+       }
+       return kmtHomeworkWrongQuestion;
+   }
+
+
+   
+
+   /**
+    * 保存练习册相关联的错题知识点
+    * @param knowList
+    * @param wrongQuestion
+    * @param questionId
+    */
+   private void saveWrongQuestionKnowHowDetails (List<HomeworkHowDetail> knowList, KmtHomeworkWrongQuestion wrongQuestion,  String questionId, KmtExerciseBookCourse bookCourse) {
+       //题目知识点
+       List<KmtExerciseQuestionKnow> kmtExerciseQuestionKnowList = kmtExerciseQuestionKnowService.findByQuestionId(questionId);
+       if (kmtExerciseQuestionKnowList != null){
+           for (KmtExerciseQuestionKnow kmtExerciseQuestionKnow : kmtExerciseQuestionKnowList) {
+               HomeworkHowDetail homeworkHowDetail = this.createHomeworkHowDetail(new Date(), wrongQuestion, kmtExerciseQuestionKnow.getHowDetailsId(), bookCourse);
+               knowList.add(homeworkHowDetail);
+           }
+       }
+   }
+   
+   
+   private HomeworkHowDetail createHomeworkHowDetail(Date now, KmtHomeworkWrongQuestion kmtHomeworkWrongQuestion, String knowledgeId, KmtExerciseBookCourse bookCourse) {
+       ZuoybKnowHowDetails zuoybKnowHowDetails = zuoybKnowHowDetailsService.getById(knowledgeId);
+
+       if (zuoybKnowHowDetails == null) {
+           throw new CommonException("知识点不存在");
+       }
+
+       HomeworkHowDetail homeworkHowDetail = new HomeworkHowDetail();
+       homeworkHowDetail.setWrongQuestionId(kmtHomeworkWrongQuestion.getId());
+       homeworkHowDetail.setHomeworkId(kmtHomeworkWrongQuestion.getHomeworkId());
+       homeworkHowDetail.setHomeworkPictureId(kmtHomeworkWrongQuestion.getHomeworkPictureId());
+       homeworkHowDetail.setHowDetailId(zuoybKnowHowDetails.getId());
+       homeworkHowDetail.setModule(zuoybKnowHowDetails.getModule());
+       homeworkHowDetail.setWorkDetailType(1);
+       homeworkHowDetail.setKnowledgeVersion(bookCourse.getVersion());
+       homeworkHowDetail.setSemester(bookCourse.getSemester());
+       homeworkHowDetail.setGrade(bookCourse.getGrade());
+       homeworkHowDetail.setDetailCount(1);
+       homeworkHowDetail.setCreateTime(now);
+
+       return homeworkHowDetail;
+   }
+
+
+    @Override
+    public ResponseEntity checkCorrect(CorrectionsRequest request, String teacherId) throws CommonException {
+        ResponseEntity responseEntity = new ResponseEntity();
+        if (request.getCorrects().size() > 0){
+            CorrectionRequest correction = request.getCorrects().get(0);
+            HomeworkPicture homeworkPicture = homeworkPictureService.getById(correction.getHomeworkPictureId());
+            List<TbLibManager> managers = bookManagerService.findByUserIdAndTypeIn(teacherId, new int[]{50});
+            if (homeworkPicture == null){
+                responseEntity.failure(ResponseConstant.CODE_000, "作业不存在");
+            } else if (homeworkPicture.getIsFeedback() == 0){
+                responseEntity.failure(ResponseConstant.CODE_000, "作业未批改,质检老师不能批改");
+            }else if (StringUtils.isNotBlank(homeworkPicture.getKnowTeacherId()) &&  CollectionUtils.isNotEmpty(correction.getAnswerList())){
+                responseEntity.failure(ResponseConstant.CODE_000, "已分配匹配老师,不可勾选题号");
+            } else if (CollectionUtils.isEmpty(managers)) {
+                responseEntity.failure(ResponseConstant.CODE_000, "没有质检批改的权限");
+            } else {
+                this.correctionSaving4Checker(correction, homeworkPicture);
+                Map<String, Object> data = new HashMap<>();
+                data.put("type", 2);
+                responseEntity.success(data, "批改成功");
+            }
+        } else {
+            responseEntity.failure(ResponseConstant.CODE_000, "没有提交任何作业");
+        }
+        return responseEntity;
+    }
+}

+ 0 - 2
src/main/java/com/ssj/service/kmt/correctsys/KmtCorrectSysServiceImpl.java

@@ -1,13 +1,11 @@
 package com.ssj.service.kmt.correctsys;
 import java.util.ArrayList;
 import java.util.Calendar;
-import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.TreeMap;
 import java.util.stream.Collectors;
 
 import org.apache.commons.collections.CollectionUtils;

+ 62 - 0
src/main/java/com/ssj/service/kmt/correctsys/service/HomeworkHowDetailsService.java

@@ -0,0 +1,62 @@
+package com.ssj.service.kmt.correctsys.service;
+
+import java.util.Date;
+import java.util.List;
+
+import com.ssj.bean.sys.homework.domain.HomeworkHowDetail;
+import com.ssj.framework.core.common.service.BaseService;
+import com.ssj.service.conch.parents.v2.dto.KnowHowDetailDTO;
+
+public interface HomeworkHowDetailsService extends BaseService<HomeworkHowDetail, String> {
+
+    /**
+     * new一个HomeworkHowDetail对象,用于作业批改
+     */
+    HomeworkHowDetail createHomeworkHowDetail(Date now, String homeworkId, String detailId, Integer knowledgeVersion);
+
+
+    /**
+     * 根据作业图片的id列表删除错题知识点记录
+     */
+    void deleteByHomeworkPictureIdIn(List<String> homeworkPictureIdList);
+
+
+    /**
+     * 删除作业图片的错题知识点
+     * @param homeworkPictureId
+     */
+    void deleteByHomeworkPictureId (String homeworkPictureId);
+
+    /**
+     * 删除作业图片的错题知识点
+     * @param homeworkPictureId
+     */
+    void deleteExerciseByHomeworkPictureId (String homeworkPictureId);
+
+    /**
+     * 错题本作业删除
+     *
+     * @param homeworkId
+     */
+    void deleteWrongQuesByHomeworkId(String homeworkId);
+
+    /**
+     * 删除错题本错题
+     * @param knowHowDetailDTOList 知识点id
+     * @param homeworkId 作业id
+     */
+    void deleteWrongBookQuestion(List<KnowHowDetailDTO> knowHowDetailDTOList, String homeworkId);
+
+    /**
+     * 查询作业图片手动勾选的知识点
+     * @param homeworkPictureId
+     * @return
+     */
+    List<HomeworkHowDetail> findHowDetailsByHomeworkPictureId (String homeworkPictureId);
+
+    /**
+     * 根据作业id查询
+     * @param homeworkId 作业id
+     */
+    List<HomeworkHowDetail> findAllByHomeworkId(String homeworkId);
+}

+ 28 - 0
src/main/java/com/ssj/service/kmt/correctsys/service/KmtCorrectHomeworkService.java

@@ -0,0 +1,28 @@
+package com.ssj.service.kmt.correctsys.service;
+
+
+import com.ssj.bean.sys.homework.domain.HomeworkPicture;
+import com.ssj.framework.core.security.exception.CommonException;
+import com.ssj.framework.core.util.ResponseEntity;
+import com.ssj.service.sys.homework.request.CorrectionRequest;
+import com.ssj.service.sys.homework.request.CorrectionsRequest;
+
+public interface KmtCorrectHomeworkService {
+	
+    /**
+         * 质检员提交批改结果
+     * @param request
+     * @param teacherId
+     * @return
+     * @throws CommonException
+     */
+    ResponseEntity checkCorrect(CorrectionsRequest request, String teacherId) throws CommonException;
+    
+    /**
+        *  保存练习册批改结果
+    * @param correction
+    * @param homeworkPicture
+    */
+   void saveExerciseCorretion (CorrectionRequest correction, HomeworkPicture homeworkPicture);
+
+}

+ 4 - 4
src/main/java/com/ssj/service/kmt/service/KmtExerciseQuestionService.java

@@ -1,11 +1,10 @@
 package com.ssj.service.kmt.service;
 
+import java.util.List;
+
 import com.ssj.bean.kmt.kmt.domain.KmtExerciseQuestion;
 import com.ssj.framework.core.common.service.BaseService;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * @author sh
  * @className KmtExerciseQuestionService
@@ -13,5 +12,6 @@ import java.util.List;
  * @date 2020/7/14
  */
 public interface KmtExerciseQuestionService extends BaseService<KmtExerciseQuestion, String> {
-    List<KmtExerciseQuestion> findByIdIn(ArrayList<String> strings);
+	
+	 List<KmtExerciseQuestion> findByIdIn(List<String> wrongQuestionIdList);
 }

+ 3 - 162
src/main/java/com/ssj/service/kmt/service/KmtExerciseService.java

@@ -1,137 +1,12 @@
 package com.ssj.service.kmt.service;
 
 
-import com.ssj.bean.kmt.kmt.domain.KmtExerciseBook;
-import com.ssj.bean.kmt.kmt.domain.KmtExerciseQuestion;
-import com.ssj.framework.core.security.exception.CommonException;
-import com.ssj.framework.core.util.ResponseEntity;
-import com.ssj.service.conch.common.request.PageReq;
-import com.ssj.service.kmt.dto.ExerciseBookCourseDTO;
-import com.ssj.service.kmt.dto.ExerciseQuetionDto;
-import com.ssj.service.kmt.exercise.request.SubmitAnswerProofreadResultReq;
-import com.ssj.service.kmt.request.*;
-
 import java.util.List;
-import java.util.Map;
-
-public interface KmtExerciseService {
-
-    /**
-     * 修改题目
-     * @return
-     */
-    ResponseEntity updateQuestion(QuestionUpdateRequest request);
-
-    /**
-     * 打回题目,审核打回给加工人员重加工,加工打回给ai
-     * @param userId 审核人
-     */
-    ResponseEntity questionRollback(String userId, QuestionRollbackRequest request) throws CommonException;
-
-    /**
-     * kmt题目打回
-     * @param userId
-     * @param request
-     * @return
-     */
-    ResponseEntity kmtQuestionRollback(String userId, KmtQuestionRollbackRequest request);
-
-    /**
-     * 发布题目
-     * @param request 题目id
-     * @param userId 审核人
-     */
-    ResponseEntity publishQuestion(QuestionPublishRequest request, String userId) throws CommonException;
-
-    /**
-     * 发布kmt题目
-     * @param request
-     * @param userId
-     * @return
-     */
-    ResponseEntity publishKmtQuestion(KmtQuestionPublishRequest request, String userId);
-
-    /**
-     * 提交审核
-     * @param questionIdList 题目id
-     * @param detailIds 知识点列表
-     * @param userId 加工人
-     */
-    void submit2Auditing(List<String> questionIdList, List<HowDetailPointsRequest> detailIds, String userId) throws CommonException;
-
-
-    /**
-     * 提交审核
-     * @param request
-     * @param userId 加工人
-     */
-    ResponseEntity submit2AuditingV1(AuditingV1Request request, String userId);
-
-    /**
-     * 分配题目,根据条件选择题目,条件优先级为:课时id->单元id->练习册id
-     */
-    void distributeQuestions(QuestionDistributeRequest request);
-
-    /**
-     * 根据条件查询练习册课时列表
-     * @param request
-     */
-    List<ExerciseBookCourseDTO> getBookExerciseList(QuestionDistributeRequest request);
-
-    /**
-     * 保存提交审核
-     * @param request
-     */
-    ResponseEntity submitKmtQuestions2Auditing (AuditingRequest request, String userId);
-
-    /**
-     * 添加es记录
-     * @param questions
-     */
-    void updateEsKmtExerciseQuestionKnow(List<KmtExerciseQuestion> questions);
-
-    /**
-     * 删除题目
-     * @param questionId
-     */
-    void deleteKmtQuestion (String questionId, String userId);
-
-    /**
-     * 答案校对提交结果
-     * @param req
-     * @return
-     */
-    ResponseEntity submitAnswerProofreadResult (SubmitAnswerProofreadResultReq req);
-
-    /**
-     * 答案校对提交答案
-     * @param request 入参
-     */
-    ResponseEntity answerProofreadSubmitAnswer(AnswerProofreadSubmitAnswerRequest request);
-
-    /**
-     * 查询答案校对本数
-     * @param userId
-     * @return
-     */
-    ResponseEntity teacherAnswerProofreadDetail(String userId);
 
+import com.ssj.bean.kmt.kmt.domain.KmtExerciseQuestion;
 
-    /**
-     * 题目报错
-     * @param userId
-     * @param request
-     * @return
-     */
-    ResponseEntity questionsError(String userId, QuestionRollbackRequest request);
+public interface KmtExerciseService {
 
-    /**
-     * 查询报错题目列表
-     * @param req
-     * @param userId
-     * @return
-     */
-    Map<String, Object> findExerciseErrorQuestions(PageReq req, String userId);
 
     /**
      * 查询题目的信息
@@ -139,39 +14,5 @@ public interface KmtExerciseService {
      */
     void appendQuestionDataFromJSONFile (List<KmtExerciseQuestion> kmtExerciseQuestions);
 
-    /**
-     * 查询题目信息
-     * @param kmtExerciseQuestions
-     */
-    void appendQuestionDtoDataFromJSONFile(List<ExerciseQuetionDto> kmtExerciseQuestions);
-
-    /**
-     * 往know查询出来的题目里加入题目信息
-     * @param questions
-     */
-    void appendQuestionMapFromJSONFile (List<Map<String, Object>> questions);
-
-    /**
-     * 保存题目信息
-     * @param kmtExerciseQuestions
-     */
-    void saveQuestionData2JSONFile (List<KmtExerciseQuestion> kmtExerciseQuestions);
-
-    /**
-     * 生成练习册json文件相对路径
-     * @param exerciseBook
-     * @param id
-     * @return
-     */
-    String getQuestionJSONPath (KmtExerciseBook exerciseBook, String id);
-
-    /**
-     * 生成kmtjson文件相对路径
-     * @param courseName
-     * @param id
-     * @return
-     */
-    String getKmtQuestionJSONPath (String courseName, String id);
-
-    ResponseEntity updateRollbackUserId();
+   
 }

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

@@ -1,17 +1,17 @@
 package com.ssj.service.kmt.service.impl;
 
 
-import com.ssj.bean.kmt.kmt.domain.KmtExerciseQuestion;
-import com.ssj.dao.kmt.kmt.dao.KmtExerciseQuestionDao;
-import com.ssj.framework.core.common.service.BaseServiceImpl;
-import com.ssj.service.kmt.service.KmtExerciseQuestionService;
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.repository.PagingAndSortingRepository;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.List;
+import com.ssj.bean.kmt.kmt.domain.KmtExerciseQuestion;
+import com.ssj.dao.kmt.kmt.dao.KmtExerciseQuestionDao;
+import com.ssj.framework.core.common.service.BaseServiceImpl;
+import com.ssj.service.kmt.service.KmtExerciseQuestionService;
 
 @Transactional
 @Service
@@ -25,8 +25,10 @@ public class KmtExerciseQuestionServiceImpl extends BaseServiceImpl<KmtExerciseQ
         return kmtExerciseQuestionDao;
     }
 
-    @Override
-    public List<KmtExerciseQuestion> findByIdIn(ArrayList<String> wrongQuestionIdList) {
-        return kmtExerciseQuestionDao.findByIdIn(wrongQuestionIdList);
-    }
+  
+
+	@Override
+	public List<KmtExerciseQuestion> findByIdIn(List<String> wrongQuestionIdList) {
+		 return kmtExerciseQuestionDao.findByIdIn(wrongQuestionIdList);
+	}
 }

+ 43 - 0
src/main/java/com/ssj/service/kmt/service/impl/KmtExerciseServiceImpl.java

@@ -0,0 +1,43 @@
+package com.ssj.service.kmt.service.impl;
+
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.alibaba.fastjson.JSONObject;
+import com.ssj.bean.kmt.kmt.domain.KmtExerciseQuestion;
+import com.ssj.framework.core.util.PropertiesUtil;
+import com.ssj.framework.core.util.StringUtil;
+import com.ssj.kmt.utils.JSONFileUtil;
+import com.ssj.service.kmt.service.KmtExerciseService;
+
+@Transactional
+@Service
+public class KmtExerciseServiceImpl implements KmtExerciseService {
+
+
+    @Override
+    public void appendQuestionDataFromJSONFile(List<KmtExerciseQuestion> kmtExerciseQuestions) {
+        for (KmtExerciseQuestion kmtExerciseQuestion : kmtExerciseQuestions){
+            //读取大字段文件
+            if (StringUtil.isNotBlank(kmtExerciseQuestion.getQuestionPath())){
+                String content = JSONFileUtil.readJSONFile(PropertiesUtil.getValue("file_save_path") + kmtExerciseQuestion.getQuestionPath());
+                if (StringUtils.isNotBlank(content)){
+                    JSONObject jsonObject = JSONObject.parseObject(content);
+                    kmtExerciseQuestion.setQuestion(jsonObject.getString("question"));
+                    kmtExerciseQuestion.setQuestionText(jsonObject.getString("question_text"));
+                    kmtExerciseQuestion.setQuestionJson(jsonObject.getString("question_json"));
+                    kmtExerciseQuestion.setOptionAnswer(jsonObject.getString("option_answer"));
+                    kmtExerciseQuestion.setOptionAnswerText(jsonObject.getString("option_answer_text"));
+                    kmtExerciseQuestion.setAnswerJson(jsonObject.getString("answer_json"));
+                    kmtExerciseQuestion.setAnalysis(jsonObject.getString("analysis"));
+                    kmtExerciseQuestion.setAnalysisJson(jsonObject.getString("analysis_json"));
+                }
+            }
+        }
+    }
+
+   
+}