Jelajahi Sumber

批注接口提交

shenhao 4 tahun lalu
induk
melakukan
cc4d41279a

+ 20 - 0
src/main/java/com/ssj/api/controller/ApiManagerTeacherController.java

@@ -20,6 +20,8 @@ import com.ssj.framework.core.util.PasswordUtil;
 import com.ssj.framework.core.util.ResponseConstant;
 import com.ssj.framework.core.util.ResponseEntity;
 import com.ssj.framework.weixin.util.DateUtil;
+import com.ssj.service.kmt.correctsys.dto.HomeworkPictureCheckDto;
+import com.ssj.service.kmt.correctsys.service.KmtCorrectSysService;
 import com.ssj.service.sys.homework.service.HomeworkPictureService;
 import com.ssj.service.sys.imlibuser.service.TbClassTeacherTempService;
 import com.ssj.service.weixin.library.service.IBookManagerService;
@@ -61,6 +63,9 @@ public class ApiManagerTeacherController extends BaseController {
     @Autowired
     private ITeacherPayService teacherPayService;
 
+    @Autowired
+    private KmtCorrectSysService kmtCorrectSysService;
+
 
 	@RequestMapping(value = "/list", method = RequestMethod.POST)
     @ApiOperation(value = "获取平台批改老师列表接口",  notes = "获取平台批改老师列表接口")
@@ -279,6 +284,21 @@ public class ApiManagerTeacherController extends BaseController {
         }
         return responseEntity;
     }
+    @RequestMapping(value = "/checkHomeworkDetailList", method = RequestMethod.POST)
+    @ApiOperation(value = "查询报错图片列表数据",  notes = "查询报错图片列表数据")
+    public ResponseEntity checkHomeworkDetailList(@RequestParam(name = "accessToken") String accessToken,@RequestBody HomeworkReq req) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        try {
+            List<HomeworkPictureCheckDto> homeworkPictures = kmtCorrectSysService.checkHomeworkDetailList(req.getHomeworkId(),accessToken);
+            Map<String, Object> data = new HashMap<>();
+            data.put("homeworkPictures", homeworkPictures);
+            responseEntity.success(data, "请求成功");
+        } catch (Exception e) {
+            logger.error("数据统计列表异常", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
+        }
+        return responseEntity;
+    }
     @RequestMapping(value = "/pictureDetail", method = RequestMethod.POST)
     @ApiOperation(value = "作业批改痕迹",  notes = "作业批改痕迹")
     public ResponseEntity pictureDetail(@RequestParam(name = "accessToken") String accessToken,@RequestBody HomeworkReq req) {

+ 2 - 0
src/main/java/com/ssj/dao/sys/homework/dao/HomeworkPictureQueryDao.java

@@ -89,4 +89,6 @@ public interface HomeworkPictureQueryDao {
 	 * @return
 	 */
 	List<HomeworkPictureDto> findKnowCheckPictureByHomeworkId(String homeworkId);
+
+    List<HomeworkPictureDto> findCheckPictureByHomeworkId2(int type, String homeworkId);
 }

+ 15 - 0
src/main/java/com/ssj/dao/sys/homework/dao/impl/HomeworkPictureQueryDaoImpl.java

@@ -191,4 +191,19 @@ public class HomeworkPictureQueryDaoImpl  implements  HomeworkPictureQueryDao {
 		return dao.findList(sb.toString(), param.toArray(), HomeworkPictureDto.class);
 	}
 
+	@Override
+	public List<HomeworkPictureDto> findCheckPictureByHomeworkId2(int type, String homeworkId) {
+		StringBuffer sb = new StringBuffer();
+		List<Object> param = new ArrayList<Object>();
+		sb.append("SELECT distinct hp.id, hp.subject, hp.file_key, hp.is_feedback, hp.is_delete, hp.is_mark, hp.vip_id,")
+				.append(" hp.is_composition, hp.composition_comment, ")
+				.append(" hp.teacher_id, hp.allot_time,  hp.create_time, hp.corrected_picture_url, hpc.check_date, hpc.checker, hpc.is_check_error," )
+				.append(" hpc.error_reason, hp.is_checker_correct is_correct")
+				.append(" FROM scon_homework_picture hp left join scon_homework_picture_correct hpc on hp.id=hpc.homework_picture_id ")
+				.append(" where hp.homework_id=? and hpc.type = ? and hpc.is_checker_correct = 1 order by hp.create_time");
+		param.add(homeworkId);
+		param.add(type);
+		return dao.findList(sb.toString(), param.toArray(), HomeworkPictureDto.class);
+	}
+
 }

+ 6 - 6
src/main/java/com/ssj/dao/sys/homework/dao/impl/HomeworkQueryDaoImpl.java

@@ -311,26 +311,26 @@ public class HomeworkQueryDaoImpl implements HomeworkQueryDao {
         List<Object> queryParams = new ArrayList<Object>();
         selSQL.append("SELECT b.homework_id,b.student_name ,b.`subject`,b.grade,b.correctNums as correct_nums,b.totalNums as total_nums,\n");
         selSQL.append("case when state in (6,7) then concat(DATE_FORMAT(SEC_TO_TIME(b.next_1),'%i分%s秒'),'/张') \n");
-        selSQL.append("when state in (2,5) then concat(DATE_FORMAT(SEC_TO_TIME(b.start_time),'%i:%s'),'开始批注')\n");
-        selSQL.append("when state = 4 then concat('等待',DATE_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,b.allot_time,NOW())),'%i:%s'))\n");
+        selSQL.append("when state =4 then concat(DATE_FORMAT(SEC_TO_TIME(b.start_time),'%i:%s'),'开始批注')\n");
+        selSQL.append("when state = 2 then concat('等待',DATE_FORMAT(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,b.allot_time,NOW())),'%i:%s'))\n");
         selSQL.append("else '作业已超时' end state_msg,b.state \n");
         selSQL.append("from (\n");
         selSQL.append("SELECT a.homework_id,a.student_name,a.`subject`,a.grade,a.correctNums,a.totalNums, \n");
         selSQL.append("case when a.is_feedback = 1  and \n");
         selSQL.append("((DATE_FORMAT(a.create_time,'%i:%s')>='20:30' and DATE_FORMAT(a.end_time,'%Y-%m-%d %H%i:%s')>concat(DATE_FORMAT(DATE_ADD(a.create_time,interval 1 day),'%Y-%m-%d'),' 12:00:00')) or (DATE_FORMAT(a.create_time,'%i:%s')<'20:30' and DATE_FORMAT(a.end_time,'%Y-%m-%d %H%i:%s')>concat(DATE_FORMAT(a.create_time,'%Y-%m-%d'),' 23:59:59')))\n");
-        selSQL.append(" then 3\n");
+        selSQL.append(" then 5\n");
         selSQL.append("when a.is_feedback = 1 and a.next_1 > 120 then 6 \n");
         selSQL.append("when a.is_feedback = 1 then 7\n");
         selSQL.append("when a.is_feedback = 0 and a.start_time is not null and \n");
         selSQL.append("((DATE_FORMAT(a.create_time,'%i:%s')>='20:30' and DATE_FORMAT(now(),'%Y-%m-%d %H%i:%s')>concat(DATE_FORMAT(DATE_ADD(a.create_time,interval 1 day),'%Y-%m-%d'),' 12:00:00'))\n");
         selSQL.append(" or (DATE_FORMAT(a.create_time,'%i:%s')<'20:30' and DATE_FORMAT(now(),'%Y-%m-%d %H%i:%s')>concat(DATE_FORMAT(a.create_time,'%Y-%m-%d'),'23:59:59')))\n");
-        selSQL.append("then   2\n");
+        selSQL.append("then   3\n");
         selSQL.append("when a.is_feedback = 0 and a.start_time is  null and \n");
         selSQL.append("((DATE_FORMAT(a.create_time,'%i:%s')>='20:30' and DATE_FORMAT(now(),'%Y-%m-%d %H%i:%s')>concat(DATE_FORMAT(DATE_ADD(a.create_time,interval 1 day),'%Y-%m-%d'),' 12:00:00'))\n");
         selSQL.append(" or (DATE_FORMAT(a.create_time,'%i:%s')<'20:30' and DATE_FORMAT(now(),'%Y-%m-%d %H%i:%s')>concat(DATE_FORMAT(a.create_time,'%Y-%m-%d'),' 23:59:59')))\n");
         selSQL.append("then   1\n");
-        selSQL.append("when a.is_feedback = 0 and a.start_time is not null then 5\n");
-        selSQL.append("else 4 end as state,\n");
+        selSQL.append("when a.is_feedback = 0 and a.start_time is not null then 4\n");
+        selSQL.append("else 2 end as state,\n");
         selSQL.append("a.start_time,\n");
         selSQL.append("a.allot_time,\n");
         selSQL.append("a.next_1\n");

+ 153 - 9
src/main/java/com/ssj/service/kmt/correctsys/KmtCorrectSysServiceImpl.java

@@ -1,11 +1,5 @@
 package com.ssj.service.kmt.correctsys;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 import org.apache.commons.collections.CollectionUtils;
@@ -756,7 +750,7 @@ public class KmtCorrectSysServiceImpl implements KmtCorrectSysService {
 	                        	 Calendar ca = Calendar.getInstance();
 	                             ca.setTime(DateHelper.parseDate(homework.getCorrectDate()+" 12:00:00", "yyyy-MM-dd HH:mm:ss"));
 	            		         ca.add(Calendar.DATE, 4);// num为增加的天数,可以改变的
-	            		         if(new Date().getTime()>=ca.getTime().getTime()) {
+	            		         if(System.currentTimeMillis()>=ca.getTime().getTime()) {
 	            		        	 homeworkCheckStudentDto.setType(1);
 	            		         }else {
 	            		        	 homeworkCheckStudentDto.setType(0);
@@ -774,7 +768,157 @@ public class KmtCorrectSysServiceImpl implements KmtCorrectSysService {
         }
         return resultPage;
     }
-    
+
+    @Override
+    public List<HomeworkPictureCheckDto> checkHomeworkDetailList(String homeworkId, String accessToken) {
+        List<HomeworkPictureDto> homeworkPictures =
+                homeworkPictureService.findCheckHomeworkPictureByHomeworkId2(homeworkId);
+        String teacherId = Objects.nonNull(homeworkPictures) && homeworkPictures.size()>0 ?homeworkPictures.get(0).getTeacherId():"";
+        List<HomeworkPictureCheckDto> result = new ArrayList<>();
+        List<HomeworkExerciseQuestionsDto> exerciseQuestionDtos =
+                correctSysQueryDao.findHomeworkCorrectedQuestions(homeworkId);
+        Map<String, List<HomeworkExerciseQuestionsDto>> exerciseQuestionDtoMap =
+                exerciseQuestionDtos.stream().collect(Collectors.groupingBy(HomeworkExerciseQuestionsDto::getHomeworkPictureId));
+
+        if (CollectionUtils.isNotEmpty(homeworkPictures)) {
+            for (HomeworkPictureDto homeworkPictureDto : homeworkPictures) {
+                //属性copy
+                HomeworkPicture homeworkPicture = this.copyHomeworkPictureDto2HomeworkPicture(homeworkPictureDto);
+                HomeworkPictureCheckDto homeworkPictureCheckDto = null;
+
+                //模糊和不全的,需要查询模糊表
+                List<HomeworkPictureVagueRecord> vagueRecords =
+                        homeworkPictureVagueRecordService.findByHomeworkPictureId(homeworkPicture.getId());
+                Map<Integer, List<HomeworkPictureVagueRecord>> vagueRecordMap = null;
+
+                //把模糊不全表的数据加入返回列表
+                if (homeworkPicture.getIsMark() > 0 && homeworkPicture.getIsMark() < 4) {
+                    if (CollectionUtils.isNotEmpty(vagueRecords)) {
+                        vagueRecordMap =
+                                vagueRecords.stream().collect(Collectors.groupingBy(HomeworkPictureVagueRecord::getType,
+                                        LinkedHashMap::new, Collectors.toList()));
+                        if (homeworkPicture.getIsMark() != 2 && vagueRecords.size() > 1) {
+                            //模糊, 图片不是当前的图片的
+                            if (vagueRecordMap.containsKey(1)) {
+                                for (HomeworkPictureVagueRecord homeworkPictureVagueRecord : vagueRecordMap.get(1)) {
+                                    if (!homeworkPictureVagueRecord.getPictureVaguePath().equals(homeworkPicture.getFileKey())) {
+                                        this.addVagueNoCheckResult(result, homeworkPictureVagueRecord.getId(),
+                                                homeworkPictureVagueRecord.getPictureVaguePath(),
+                                                this.isOtherTeachersWork(teacherId, homeworkPicture, 1) ? 4 : 1);
+                                    }
+                                }
+                            }
+                            //作业不全, 图片不是当前图片
+                            if (vagueRecordMap.containsKey(3)) {
+                                for (HomeworkPictureVagueRecord homeworkPictureVagueRecord : vagueRecordMap.get(3)) {
+                                    if (!homeworkPictureVagueRecord.getPictureVaguePath().equals(homeworkPicture.getFileKey())) {
+                                        this.addVagueNoCheckResult(result, homeworkPictureVagueRecord.getId(),
+                                                homeworkPictureVagueRecord.getPictureVaguePath(),
+                                                this.isOtherTeachersWork(teacherId, homeworkPicture, 1) ? 4 : 2);
+                                    }
+                                }
+                            }
+                        } else if (homeworkPicture.getIsMark() == 2) {
+                            //已经有补拍的,把所有模糊不全图片加入列表
+                            for (HomeworkPictureVagueRecord homeworkPictureVagueRecord : vagueRecords) {
+                                this.addVagueNoCheckResult(result, homeworkPictureVagueRecord.getId(),
+                                        homeworkPictureVagueRecord.getPictureVaguePath(),
+                                        this.isOtherTeachersWork(teacherId, homeworkPicture, 1) ? 4
+                                                : homeworkPictureVagueRecord.getType() == 3 ? 2 :
+                                                homeworkPictureVagueRecord.getType());
+                            }
+                        }
+                    }
+                }
+                if (homeworkPicture.getCheckDate() == null && homeworkPicture.getIsMark() > 0) {
+                    if (vagueRecordMap != null) {
+                        //作业模糊、不全, 图片需要质检的
+                        if (homeworkPicture.getIsMark() == 1 || homeworkPicture.getIsMark() == 3) {
+                            HomeworkPictureCheckDto vagueCheckDto = new HomeworkPictureCheckDto();
+                            for (HomeworkPictureVagueRecord vr : vagueRecords) {
+                                if (vr.getHomeworkPictureId().equals(homeworkPicture.getId()) && vr.getPictureVaguePath().equals(homeworkPicture.getFileKey())) {
+                                    vagueCheckDto.setHomeworkPictureId("vague_" + vr.getId());
+                                }
+                            }
+                            vagueCheckDto.setType(this.isOtherTeachersWork(teacherId, homeworkPicture, 1) ? 4 : 0);
+                            vagueCheckDto.setSecondType(this.isOtherTeachersWork(teacherId, homeworkPicture, 1) ? 4 :
+                                    homeworkPicture.getIsMark());
+                            //作业不全设置为2
+                            if (homeworkPicture.getIsMark() == 3) {
+                                vagueCheckDto.setSecondType(this.isOtherTeachersWork(teacherId, homeworkPicture, 1) ?
+                                        4 : 2);
+                            }
+                            vagueCheckDto.setPath(homeworkPicture.getFileKey());
+                            result.add(vagueCheckDto);
+                            //作业模糊后补拍
+                        } else if (homeworkPicture.getIsMark() == 2) {
+                            //批改完才把补拍的显示出来
+                            if (homeworkPicture.getIsFeedback() == 1) {
+                                homeworkPictureCheckDto = this.getFeedbackHomeworkPictureData(homeworkPicture,
+                                        exerciseQuestionDtoMap, null,accessToken);
+                                if (this.isOtherTeachersWork(teacherId, homeworkPicture, 1)) {
+                                    homeworkPictureCheckDto.setType(4);
+                                    homeworkPictureCheckDto.setSecondType(4);
+                                }
+                                //质检员已批改
+                                if (homeworkPicture.getIsCheckerCorrect() > 0) {
+                                    homeworkPictureCheckDto.setSecondType(12);
+                                }
+                                result.add(homeworkPictureCheckDto);
+                            }
+                        }
+                    } else {
+                        homeworkPictureCheckDto = this.getFeedbackHomeworkPictureData(homeworkPicture,
+                                exerciseQuestionDtoMap, null,accessToken);
+                        if (homeworkPicture.getIsMark() == 4) {
+                            homeworkPictureCheckDto.setSecondType(3);
+                        } else {
+                            homeworkPictureCheckDto.setSecondType(homeworkPicture.getIsMark());
+                        }
+                        if (this.isOtherTeachersWork(teacherId, homeworkPicture, 1)) {
+                            homeworkPictureCheckDto.setType(4);
+                            homeworkPictureCheckDto.setSecondType(4);
+                        }
+                        //质检员已批改
+                        if (homeworkPicture.getIsCheckerCorrect() > 0) {
+                            homeworkPictureCheckDto.setSecondType(12);
+                        }
+                        result.add(homeworkPictureCheckDto);
+                    }
+
+                } else {
+                    homeworkPictureCheckDto = this.getFeedbackHomeworkPictureData(homeworkPicture,
+                            exerciseQuestionDtoMap, null,accessToken);
+                    //非学科图片
+                    if (homeworkPicture.getIsDelete() == 1) {
+                        homeworkPictureCheckDto.setSecondType(3);
+                    } else if (homeworkPicture.getIsMark() == 1) {
+                        homeworkPictureCheckDto.setSecondType(1);
+
+                    } else if (homeworkPicture.getIsMark() == 3) {
+                        homeworkPictureCheckDto.setSecondType(2);
+                    } else if (homeworkPicture.getIsMark() != 2) {
+                        homeworkPictureCheckDto.setSecondType(homeworkPicture.getIsMark());
+                    }
+
+                    //其他老师的作业
+                    if (this.isOtherTeachersWork(teacherId, homeworkPicture, 1)) {
+                        homeworkPictureCheckDto.setType(4);
+                        homeworkPictureCheckDto.setSecondType(4);
+                    }
+
+                    //质检员已批改
+                    if (homeworkPicture.getIsCheckerCorrect() > 0) {
+                        homeworkPictureCheckDto.setSecondType(12);
+                    }
+
+                    result.add(homeworkPictureCheckDto);
+                }
+            }
+        }
+        return result;
+    }
+
 
     /**
      * 按日期顺序插入

+ 8 - 2
src/main/java/com/ssj/service/kmt/correctsys/service/KmtCorrectSysService.java

@@ -67,11 +67,17 @@ public interface KmtCorrectSysService {
 
     /**
      * 查询某个老师的质检作业数据,默认150天的数据
-     * @param teacherId
+     * @param
      * @return
      */
     Page<HomeworkCheckSubjectDto> pageCheckHomeworkList(Map<String, Object> params, Pageable pageable);
 
 
-
+    /**
+     * 获取报错图片
+     * @param homeworkId
+     * @param accessToken
+     * @return
+     */
+    List<HomeworkPictureCheckDto> checkHomeworkDetailList(String homeworkId, String accessToken);
 }

+ 2 - 0
src/main/java/com/ssj/service/sys/homework/service/HomeworkPictureService.java

@@ -86,4 +86,6 @@ public interface HomeworkPictureService extends BaseService<HomeworkPicture, Str
     List<StudentListVO> teacherStudentList(String teacherId);
 
     Map<String, Object> pictureDetail(String pictureId);
+
+    List<HomeworkPictureDto> findCheckHomeworkPictureByHomeworkId2(String homeworkId);
 }

+ 5 - 0
src/main/java/com/ssj/service/sys/homework/service/impl/HomeworkPictureServiceImpl.java

@@ -414,6 +414,11 @@ public class HomeworkPictureServiceImpl extends BaseServiceImpl<HomeworkPicture,
         return result;
     }
 
+    @Override
+    public List<HomeworkPictureDto> findCheckHomeworkPictureByHomeworkId2(String homeworkId) {
+        return homeworkPictureQueryDao.findCheckPictureByHomeworkId2(8, homeworkId);
+    }
+
 
     private boolean isBigQuestionExists (List<String> questionIds, List<ExerciseQuestionDto> questionDtoList){
         boolean result = false;

+ 4 - 4
src/main/java/com/ssj/statistics/dao/impl/StatisticsQueryImpl.java

@@ -177,20 +177,20 @@ public class StatisticsQueryImpl implements IStatisticsQueryDao {
         sql.append("SELECT\n" );
         sql.append("count(1) as correct_nums,\n" );
         sql.append("0 as overtime_nums,\n" );
-        sql.append("count(IF(DATE_FORMAT(t.start_time,'%H:%s')>='18:00' and DATE_FORMAT(t.start_time,'%H:%s')<='20:00',TRUE,null)) as perk_nums,\n" );
+        sql.append("count(IF(DATE_FORMAT(t11.end_time,'%H:%s')>='18:00' and DATE_FORMAT(t11.end_time,'%H:%s')<='20:00',TRUE,null)) as perk_nums,\n" );
         sql.append("count(IF(t.is_check_error=1,TRUE,null)) as error_nums,\n" );
         sql.append("DATE_FORMAT(t.start_time,'%Y-%m-%d') as work_date,\n" );
         sql.append("2 as month,\n" );
         sql.append("2021 as year,\n" );
         sql.append("NOW() as create_time,\n" );
-        sql.append("sum(IF(DATE_FORMAT(t.start_time,'%H:%s')>='18:00' and DATE_FORMAT(t.start_time,'%H:%s')<='20:00',t.correction_time,0)) as sum_perk,\n" );
+        sql.append("sum(IF(DATE_FORMAT(t11.end_time,'%H:%s')>='18:00' and DATE_FORMAT(t11.end_time,'%H:%s')<='20:00',t.correction_time,0)) as sum_perk,\n" );
         sql.append("t11.teacher_id,\n" );
         sql.append("t.end_time,\n" );
         sql.append("t.start_time \n" );
         sql.append("from scon_homework_picture_correct t \n" );
         sql.append("join scon_homework_picture t11 on t.homework_picture_id = t11.id\n" );
-        sql.append("where t.type=8 and t11.is_mark in(0,2) \n" );
-        sql.append("and t.start_time like '%2021-02%'\n" );
+        sql.append("where t.type=8 and t11.is_mark in(0,2) and t11.is_feedback=1 \n" );
+        sql.append("and t.end_time like '%2021-02%'\n" );
         sql.append("GROUP BY t11.teacher_id\n" );
         sql.append(") a");
         return dao.findList(sql.toString(),queryParams.toArray(),TeacherSalarysVO.class);