Browse Source

批注接口提交

shenhao 4 years ago
parent
commit
f6ae7bfb7c

+ 143 - 0
src/main/java/com/ssj/api/controller/ApiHomeworkController.java

@@ -0,0 +1,143 @@
+package com.ssj.api.controller;
+
+import com.ssj.api.domain.vo.homework.HomeworkReq;
+import com.ssj.api.domain.vo.homework.HomeworkTeacher;
+import com.ssj.api.domain.vo.teacher.HomeworkAllotReq;
+import com.ssj.api.domain.vo.teacher.TeacherAllotReq;
+import com.ssj.bean.sys.homework.domain.Homework;
+import com.ssj.framework.core.common.controller.BaseController;
+import com.ssj.framework.core.util.ResponseConstant;
+import com.ssj.framework.core.util.ResponseEntity;
+import com.ssj.service.sys.homework.service.HomeworkPictureService;
+import com.ssj.service.sys.homework.service.HomeworkService;
+import com.ssj.service.weixin.library.service.IBookManagerService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * @author sh
+ * @className ApiHomeworkController
+ * @description homework 作业管理
+ * @date 2021/2/25
+ */
+@RestController
+@RequestMapping("/api/homework")
+public class ApiHomeworkController extends BaseController {
+
+    @Autowired
+    private HomeworkPictureService homeworkPictureService;
+
+    @Autowired
+    private HomeworkService homeworkService;
+
+    @Autowired
+    private IBookManagerService managerService;
+
+    @RequestMapping(value = "/list", method = RequestMethod.POST)
+    @ApiOperation(value = "作业管理列表",  notes = "作业管理列表")
+    public ResponseEntity list(@RequestParam(name = "accessToken") String accessToken, @RequestBody HomeworkReq req) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        Map<String,Object> data=new HashMap<>(2);
+        Map<String,Object> params=new HashMap<>(2);
+        try {
+            //查询头信息
+            Map<String,Object> headMap = managerService.findHeadInfo();
+            data.putAll(headMap);
+            data.put("waitAllocatedNums",homeworkPictureService.findNotAllotHomework());
+            params.put("type",30);
+            params.put("name",req.getTeacherName());
+            /**
+             *  is_mark=15 重复作业,11改成15
+             *  is_mark=10不批注
+             */
+            Page<Map<String,Object>> list = managerService.findTeacherHomeworkList(params,initPage(req.getPageNo(),req.getPageSize()));
+            data.put("list",list.getContent());
+            data.put("totalNums",list.getTotalElements());
+            responseEntity.success(data,"获取平台批改老师列表成功!");
+        } catch (Exception e) {
+            logger.error("获取平台批改老师列表接口", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
+        }
+        return responseEntity;
+    }
+    @RequestMapping(value = "/teacherStudentList", method = RequestMethod.POST)
+    @ApiOperation(value = "老师名下学生作业列表",  notes = "老师名下学生作业列表")
+    public ResponseEntity teacherStudentList(@RequestParam(name = "accessToken") String accessToken, @RequestBody HomeworkTeacher req) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        Map<String,Object> data=new HashMap<>(2);
+        try {
+            List<Map<String,Object>> list = homeworkPictureService.teacherStudentList(req.getTeacherId());
+            data.put("list",list);
+            responseEntity.success(data,"获取平台批改老师列表成功!");
+        } catch (Exception e) {
+            logger.error("获取平台批改老师列表接口", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
+        }
+        return responseEntity;
+    }
+
+    @RequestMapping(value = "/waitCorrectList", method = RequestMethod.POST)
+    @ApiOperation(value = "未批注作业列表",  notes = "未批注作业列表")
+    public ResponseEntity waitCorrectList(@RequestParam(name = "accessToken") String accessToken) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        Map<String,Object> data=new HashMap<>(2);
+        try {
+            List<Map<String,Object>> list = homeworkPictureService.waitCorrectList();
+            data.put("list",list);
+            responseEntity.success(data,"获取未批注作业列表成功!");
+        } catch (Exception e) {
+            logger.error("获取未批注作业列表接口", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
+        }
+        return responseEntity;
+    }
+
+
+    @RequestMapping(value = "/teacherList", method = RequestMethod.POST)
+    @ApiOperation(value = "可分配老师列表",  notes = "可分配老师列表")
+    public ResponseEntity teacherList(@RequestParam(name = "accessToken") String accessToken,@RequestBody TeacherAllotReq req) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        Map<String,Object> data=new HashMap<>(2);
+        Map<String,Object> params=new HashMap<>(2);
+        try {
+            params.put("subject",req.getSubject());
+            params.put("teacherId",req.getTeacherId());
+            params.put("teacherName",req.getTeacherName());
+            Page<Map<String,Object>> list = homeworkPictureService.teacherList(params,initPage(req.getPageNo(),req.getPageSize()));
+            data.put("list",list);
+            responseEntity.success(data,"获取分配老师列表成功!");
+        } catch (Exception e) {
+            logger.error("获取分配老师列表异常", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
+        }
+        return responseEntity;
+    }
+
+    @RequestMapping(value = "/allocatedHomework", method = RequestMethod.POST)
+    @ApiOperation(value = "分配老师",  notes = "可分配老师列表")
+    public ResponseEntity allocatedHomework(@RequestParam(name = "accessToken") String accessToken,@RequestBody HomeworkAllotReq req) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        Map<String,Object> data=new HashMap<>(2);
+        try {
+            //查询作业是否在批改
+            int correctNum = homeworkPictureService.findHomeworkIsCorrect(req.getHomeworkId());
+            if(correctNum>0){
+                return  responseEntity.failure("此份作业正在批注中不不可分配");
+            }
+            //分配老师
+            homeworkPictureService.allotPlatHomework(req.getHomeworkId(),req.getTeacherId());
+            responseEntity.success(data,"获取分配老师列表成功!");
+        } catch (Exception e) {
+            logger.error("获取分配老师列表异常", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
+        }
+        return responseEntity;
+    }
+}

+ 72 - 1
src/main/java/com/ssj/api/controller/ApiManagerTeacherController.java

@@ -1,6 +1,8 @@
 package com.ssj.api.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.ssj.api.domain.vo.statistics.HomeworkReq;
+import com.ssj.api.domain.vo.statistics.ListReq;
 import com.ssj.api.domain.vo.teacher.TeacherAddReq;
 import com.ssj.api.domain.vo.teacher.TeacherChangeReq;
 import com.ssj.api.domain.vo.teacher.TeacherDelReq;
@@ -9,12 +11,14 @@ import com.ssj.bean.sys.imlibuser.TbClassTeacherTemp;
 import com.ssj.bean.weixin.libmy.domain.TbLibManager;
 import com.ssj.framework.core.common.controller.BaseController;
 import com.ssj.framework.core.util.Constant;
+import com.ssj.framework.core.util.PasswordUtil;
 import com.ssj.framework.core.util.ResponseConstant;
 import com.ssj.framework.core.util.ResponseEntity;
 import com.ssj.service.sys.homework.service.HomeworkPictureService;
 import com.ssj.service.sys.imlibuser.service.TbClassTeacherTempService;
 import com.ssj.service.weixin.library.service.IBookManagerService;
 import com.ssj.service.weixin.user.service.UserService;
+import com.ssj.statistics.service.IStatisticsService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,7 +42,7 @@ public class ApiManagerTeacherController extends BaseController {
     private TbClassTeacherTempService tbLibImTeacherTempService;
 
     @Autowired
-    private UserService userService;
+    private IStatisticsService statisticsService;
 
 
 	@RequestMapping(value = "/list", method = RequestMethod.POST)
@@ -190,4 +194,71 @@ public class ApiManagerTeacherController extends BaseController {
         return responseEntity;
     }
 
+    @RequestMapping(value = "/statisticsList", method = RequestMethod.POST)
+    @ApiOperation(value = "数据统计列表",  notes = "数据统计列表")
+    public ResponseEntity statisticsList(@RequestParam(name = "accessToken") String accessToken,@RequestBody ListReq req) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        Map<String,Object> data=new HashMap<>(2);
+        Map<String,Object> params=new HashMap<>(2);
+        try {
+            params.put("beginDate",req.getBeginDate());
+            params.put("endDate",req.getEndDate());
+            params.put("teacherName",req.getTeacherName());
+            Map<String,Object> total = statisticsService.findTotalData(params);
+            Page<Map<String,Object>> page = statisticsService.statisticsList(params,initPage(req.getPageNo(),req.getPageSize()));
+            data.put("list",page.getContent());
+            data.put("pages",page.getTotalElements());
+            responseEntity.success(data,"获取数据统计列表成功");
+        } catch (Exception e) {
+            logger.error("数据统计列表异常", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
+        }
+        return responseEntity;
+    }
+    @RequestMapping(value = "/errorList", method = RequestMethod.POST)
+    @ApiOperation(value = "查看报错列表",  notes = "数据统计列表")
+    public ResponseEntity errorList(@RequestParam(name = "accessToken") String accessToken,@RequestBody ListReq req) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        Map<String,Object> params=new HashMap<>(4);
+        try {
+            params.put("beginDate",req.getBeginDate());
+            params.put("endDate",req.getEndDate());
+            params.put("teacherId",req.getTeacherId());
+            params.put("subject",req.getSubject());
+            Map<String,Object> data = statisticsService.errorList(params,initPage(req.getPageNo(),req.getPageSize()));
+            responseEntity.success(data,"获取数据统计列表成功");
+        } catch (Exception e) {
+            logger.error("数据统计列表异常", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
+        }
+        return responseEntity;
+    }
+    @RequestMapping(value = "/checkDetailList", method = RequestMethod.POST)
+    @ApiOperation(value = "获取作业列表",  notes = "获取作业列表")
+    public ResponseEntity checkDetailList(@RequestParam(name = "accessToken") String accessToken,@RequestBody HomeworkReq req) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        try {
+            Map<String,Object> data=new HashMap<>(2);
+            List<Map<String,Object>> list = statisticsService.checkDetailList(req.getHomeworkId());
+            data.put("list",list);
+            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) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        Map<String,Object> params=new HashMap<>(4);
+        try {
+
+        } catch (Exception e) {
+            logger.error("数据统计列表异常", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
+        }
+        return responseEntity;
+    }
 }

+ 31 - 0
src/main/java/com/ssj/api/domain/vo/statistics/HomeworkReq.java

@@ -0,0 +1,31 @@
+package com.ssj.api.domain.vo.statistics;
+
+import com.ssj.bean.common.framework.core.domain.BaseRequest;
+
+/**
+ * @author sh
+ * @className HomeworkReq
+ * @description req
+ * @date 2021/3/1
+ */
+public class HomeworkReq extends BaseRequest {
+
+    private String homeworkId;
+    private String pictureId;
+
+    public String getHomeworkId() {
+        return homeworkId;
+    }
+
+    public void setHomeworkId(String homeworkId) {
+        this.homeworkId = homeworkId;
+    }
+
+    public String getPictureId() {
+        return pictureId;
+    }
+
+    public void setPictureId(String pictureId) {
+        this.pictureId = pictureId;
+    }
+}

+ 85 - 0
src/main/java/com/ssj/api/domain/vo/statistics/ListReq.java

@@ -0,0 +1,85 @@
+package com.ssj.api.domain.vo.statistics;
+
+import com.ssj.bean.common.framework.core.domain.BaseRequest;
+
+/**
+ * @author sh
+ * @className ListReq
+ * @description 数据分析request
+ * @date 2021/2/27
+ */
+public class ListReq extends BaseRequest {
+
+    /**
+     * pageSize	是	string(body)	分页数据量
+     * pageNo	是	string(body)	请求页码
+     * teacherName	否	string(body)	老师名称
+     * beginDate	否	string(body)	开始日期
+     * endDate	否	string(body)	结束日期
+     */
+
+    private Integer pageSize;
+    private Integer pageNo;
+
+    private String teacherName;
+    private String teacherId;
+    private String subject;
+    private String beginDate;
+    private String endDate;
+
+    public Integer getPageSize() {
+        return pageSize;
+    }
+
+    public void setPageSize(Integer pageSize) {
+        this.pageSize = pageSize;
+    }
+
+    public Integer getPageNo() {
+        return pageNo;
+    }
+
+    public void setPageNo(Integer pageNo) {
+        this.pageNo = pageNo;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getBeginDate() {
+        return beginDate;
+    }
+
+    public void setBeginDate(String beginDate) {
+        this.beginDate = beginDate;
+    }
+
+    public String getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(String endDate) {
+        this.endDate = endDate;
+    }
+
+    public String getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(String teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getSubject() {
+        return subject;
+    }
+
+    public void setSubject(String subject) {
+        this.subject = subject;
+    }
+}

+ 197 - 0
src/main/java/com/ssj/api/domain/vo/statistics/ListVO.java

@@ -0,0 +1,197 @@
+package com.ssj.api.domain.vo.statistics;
+
+import com.ssj.bean.common.framework.core.domain.BaseRequest;
+
+/**
+ * @author sh
+ * @className ListVO
+ * @description 数据统计
+ * @date 2021/2/27
+ */
+public class ListVO extends BaseRequest {
+    /**
+     * |correctTotalNums|int|data|批注总页数|
+     * |overtimeTotalNums|int|data|超时批注总页数|
+     * |notCorrectTotalNums|int|data|未批注总页数|
+     * |notCommentTotalNums|int|data|不批注总页数|
+     * |repeatTotalNums|int|data|重复总页数|
+     * |accuracyTotal|string|data|总正确率|
+     * |errorTotalNums|int|data|报错总页数|
+     * |list|array|data|列表list|
+     * |teacherId|string|list|老师id|
+     * |teacherName|string|list|老师姓名|
+     * |subject|string|list|科目|
+     * |allSubject|string|list|老师拥有的科目,多科目英文逗号隔开,|
+     * |correctNums|int|list|批注页数|
+     * |overtimeNums|int|list|超时批注页数|
+     * |notCorrectNums|int|list|未批注页数|
+     * |notCommentNums|int|list|不批注页数|
+     * |repeatNums|int|list|重复页数|
+     * |accuracy|string|list|正确率|
+     * |errorNums|int|list|报错页数|
+     */
+
+    private String accuracyTotal;
+    private Integer  correctTotalNums;
+    private Integer  overtimeTotalNums;
+    private Integer  notCorrectTotalNums;
+    private Integer  notCommentTotalNums;
+    private Integer  repeatTotalNums;
+    private Integer  errorTotalNums ;
+
+     private String teacherId;
+     private String teacherName;
+     private String subject;
+     private String allSubject;
+     private String accuracy;
+     private Integer  correctNums;
+     private Integer  overtimeNums;
+     private Integer  notCorrectNums;
+     private Integer  notCommentNums;
+     private Integer  repeatNums;
+     private Integer  errorNums ;
+
+    public String getAccuracyTotal() {
+        return accuracyTotal;
+    }
+
+    public void setAccuracyTotal(String accuracyTotal) {
+        this.accuracyTotal = accuracyTotal;
+    }
+
+    public Integer getCorrectTotalNums() {
+        return correctTotalNums;
+    }
+
+    public void setCorrectTotalNums(Integer correctTotalNums) {
+        this.correctTotalNums = correctTotalNums;
+    }
+
+    public Integer getOvertimeTotalNums() {
+        return overtimeTotalNums;
+    }
+
+    public void setOvertimeTotalNums(Integer overtimeTotalNums) {
+        this.overtimeTotalNums = overtimeTotalNums;
+    }
+
+    public Integer getNotCorrectTotalNums() {
+        return notCorrectTotalNums;
+    }
+
+    public void setNotCorrectTotalNums(Integer notCorrectTotalNums) {
+        this.notCorrectTotalNums = notCorrectTotalNums;
+    }
+
+    public Integer getNotCommentTotalNums() {
+        return notCommentTotalNums;
+    }
+
+    public void setNotCommentTotalNums(Integer notCommentTotalNums) {
+        this.notCommentTotalNums = notCommentTotalNums;
+    }
+
+    public Integer getRepeatTotalNums() {
+        return repeatTotalNums;
+    }
+
+    public void setRepeatTotalNums(Integer repeatTotalNums) {
+        this.repeatTotalNums = repeatTotalNums;
+    }
+
+    public Integer getErrorTotalNums() {
+        return errorTotalNums;
+    }
+
+    public void setErrorTotalNums(Integer errorTotalNums) {
+        this.errorTotalNums = errorTotalNums;
+    }
+
+    public String getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(String teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getSubject() {
+        return subject;
+    }
+
+    public void setSubject(String subject) {
+        this.subject = subject;
+    }
+
+    public String getAllSubject() {
+        return allSubject;
+    }
+
+    public void setAllSubject(String allSubject) {
+        this.allSubject = allSubject;
+    }
+
+    public String getAccuracy() {
+        return accuracy;
+    }
+
+    public void setAccuracy(String accuracy) {
+        this.accuracy = accuracy;
+    }
+
+    public Integer getCorrectNums() {
+        return correctNums;
+    }
+
+    public void setCorrectNums(Integer correctNums) {
+        this.correctNums = correctNums;
+    }
+
+    public Integer getOvertimeNums() {
+        return overtimeNums;
+    }
+
+    public void setOvertimeNums(Integer overtimeNums) {
+        this.overtimeNums = overtimeNums;
+    }
+
+    public Integer getNotCorrectNums() {
+        return notCorrectNums;
+    }
+
+    public void setNotCorrectNums(Integer notCorrectNums) {
+        this.notCorrectNums = notCorrectNums;
+    }
+
+    public Integer getNotCommentNums() {
+        return notCommentNums;
+    }
+
+    public void setNotCommentNums(Integer notCommentNums) {
+        this.notCommentNums = notCommentNums;
+    }
+
+    public Integer getRepeatNums() {
+        return repeatNums;
+    }
+
+    public void setRepeatNums(Integer repeatNums) {
+        this.repeatNums = repeatNums;
+    }
+
+    public Integer getErrorNums() {
+        return errorNums;
+    }
+
+    public void setErrorNums(Integer errorNums) {
+        this.errorNums = errorNums;
+    }
+}

+ 109 - 0
src/main/java/com/ssj/bean/statistics/PlatTeacherStatistics.java

@@ -0,0 +1,109 @@
+package com.ssj.bean.statistics;
+
+import com.ssj.bean.common.framework.core.domain.BaseEntity;
+
+import javax.persistence.Table;
+
+/**
+ * @author sh
+ * @className PlatTeacherStatistics
+ * @description 数据统计
+ * @date 2021/2/27
+ */
+@Table(name="plat_teacher_statistics")
+public class PlatTeacherStatistics extends BaseEntity {
+    private String teacherId;
+    //private String teacherName;
+    private String subject;
+    //private String allSubject;
+    private String accuracy;
+    private Integer  correctNums;
+    private Integer  overtimeNums;
+    private Integer  notCorrectNums;
+    private Integer  notCommentNums;
+    private Integer  repeatNums;
+    private Integer  errorNums ;
+    private String  calculateDate;
+
+    public String getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(String teacherId) {
+        this.teacherId = teacherId;
+    }
+
+
+    public String getSubject() {
+        return subject;
+    }
+
+    public void setSubject(String subject) {
+        this.subject = subject;
+    }
+
+
+    public String getAccuracy() {
+        return accuracy;
+    }
+
+    public void setAccuracy(String accuracy) {
+        this.accuracy = accuracy;
+    }
+
+    public Integer getCorrectNums() {
+        return correctNums;
+    }
+
+    public void setCorrectNums(Integer correctNums) {
+        this.correctNums = correctNums;
+    }
+
+    public Integer getOvertimeNums() {
+        return overtimeNums;
+    }
+
+    public void setOvertimeNums(Integer overtimeNums) {
+        this.overtimeNums = overtimeNums;
+    }
+
+    public Integer getNotCorrectNums() {
+        return notCorrectNums;
+    }
+
+    public void setNotCorrectNums(Integer notCorrectNums) {
+        this.notCorrectNums = notCorrectNums;
+    }
+
+    public Integer getNotCommentNums() {
+        return notCommentNums;
+    }
+
+    public void setNotCommentNums(Integer notCommentNums) {
+        this.notCommentNums = notCommentNums;
+    }
+
+    public Integer getRepeatNums() {
+        return repeatNums;
+    }
+
+    public void setRepeatNums(Integer repeatNums) {
+        this.repeatNums = repeatNums;
+    }
+
+    public Integer getErrorNums() {
+        return errorNums;
+    }
+
+    public void setErrorNums(Integer errorNums) {
+        this.errorNums = errorNums;
+    }
+
+    public String getCalculateDate() {
+        return calculateDate;
+    }
+
+    public void setCalculateDate(String calculateDate) {
+        this.calculateDate = calculateDate;
+    }
+}

+ 6 - 1
src/main/java/com/ssj/dao/sys/homework/dao/HomeworkPictureDao.java

@@ -1,6 +1,7 @@
 package com.ssj.dao.sys.homework.dao;
 
 import com.ssj.bean.sys.homework.domain.HomeworkPicture;
+import org.apache.ibatis.annotations.Update;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
@@ -595,6 +596,10 @@ public interface HomeworkPictureDao extends JpaRepository<HomeworkPicture, Strin
     @Query(nativeQuery = true, value = "select count(distinct t.homework_id) from scon_homework_picture t join tb_lib_vip_service t11 on t.vip_id = t11.vip_id and t11.correct_type =100 where teacher_id is null  ")
     long findNotAllotHomework();
 
-    @Query(nativeQuery = true, value = "SELECT count(1) from scon_homework_picture_correct t where homework_id=? and type=8 and start_time is not null ")
+    @Query(nativeQuery = true, value = "SELECT count(1) from scon_homework_picture_correct t where homework_id=?1 and type=8 and start_time is not null ")
     int findHomeworkIsCorrect(String homeworkId);
+
+    @Query(nativeQuery = true, value = "update  scon_homework_picture set teacher_id=?2 where homework_id=?1  ")
+    @Modifying
+    void allotPlatHomework(String homeworkId, String teacherId);
 }

+ 7 - 0
src/main/java/com/ssj/dao/sys/homework/dao/HomeworkQueryDao.java

@@ -92,4 +92,11 @@ public interface HomeworkQueryDao {
      * @return
      */
     Page<Map<String, Object>> teacherList(Map<String, Object> params, Pageable initPage);
+
+    /**
+     * 查询老师名下批改学生作业情况
+     * @param teacherId
+     * @return
+     */
+    List<Map<String, Object>> teacherStudentList(String teacherId);
 }

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

@@ -303,6 +303,46 @@ public class HomeworkQueryDaoImpl implements HomeworkQueryDao {
     }
 
     @Override
+    public List<Map<String, Object>> teacherStudentList(String teacherId) {
+        StringBuilder selSQL = new StringBuilder();
+        List<Object> queryParams = new ArrayList<Object>();
+        selSQL.append("SELECT b.homework_id,b.student_name,b.`subject`,b.grade,b.correctNums,b.totalNums ,\n");
+        selSQL.append("case when state in (4,5) then concat(DATE_FORMAT(SEC_TO_TIME(b.next_1),'%i分%s秒'),'/张') \n");
+        selSQL.append("when state = 3 then concat(DATE_FORMAT(SEC_TO_TIME(b.next_1),'%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 stateMsg,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.correctNums = a.totalNums and a.next_1 <=120 then 5\n");
+        selSQL.append("when a.correctNums = a.totalNums and a.next_1 >120 then 4\n");
+        selSQL.append("when a.correctNums<a.totalNums and a.start_time is not null  then 3\n");
+        selSQL.append("when a.correctNums<a.totalNums and a.start_time is  null then 2\n");
+        selSQL.append("else 1 end as state ,\n");
+        selSQL.append("a.start_time,\n");
+        selSQL.append("a.allot_time,\n");
+        selSQL.append("a.next_1\n");
+        selSQL.append("from (\n");
+        selSQL.append("select t.homework_id,t12.child_name as student_name, t14.`subject`,t14.grade,\n");
+        selSQL.append("count(if(t.is_feedback = 1,true,null)) as correctNums,\n");
+        selSQL.append("count(1) as totalNums,\n");
+        selSQL.append("min(t.allot_time) as allot_time,\n");
+        selSQL.append("min(t11.start_time) as start_time,\n");
+        selSQL.append("sum(t11.correction_time) as correction_time,\n");
+        selSQL.append("floor(sum(t11.correction_time)/ count(1)) as next_1\n");
+        selSQL.append("from scon_homework_picture t\n");
+        selSQL.append("left join scon_homework t14 on t.homework_id = t14.id\n");
+        selSQL.append("left join scon_homework_picture_correct t11 on t.id = t11.homework_picture_id\n");
+        selSQL.append("left join tb_lib_vip t12 on t.vip_id = t12.id\n");
+        selSQL.append(" where t.teacher_id=?\n");
+        queryParams.add(teacherId);
+        selSQL.append("where t.is_mark in (0,2)\n");
+        selSQL.append("group by t.homework_id\n");
+        selSQL.append(") a \n");
+        selSQL.append(") b order by b.state asc \n");
+        return  dao.findMap(selSQL.toString(),queryParams.toArray());
+    }
+
+    @Override
     public Page<Map<String, Object>> findHomeworkByPage(Map<String, Object> searchParam, Pageable pageable) {
         String childName = searchParam.get("LIKE_childName").toString();
         String beginTime = searchParam.get("beginTimeStr").toString();

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

@@ -74,4 +74,12 @@ public interface HomeworkPictureService extends BaseService<HomeworkPicture, Str
     List<HomeworkPictureDto> findCheckHomeworkPictureByHomeworkId (String homeworkId);
 
 
+    void allotPlatHomework(String homeworkId, String teacherId);
+
+    /**
+     * 查询老师名下的学生
+     * @param teacherId
+     * @return
+     */
+    List<Map<String, Object>> teacherStudentList(String teacherId);
 }

+ 13 - 0
src/main/java/com/ssj/service/sys/manager/service/IReadManagerService.java

@@ -0,0 +1,13 @@
+package com.ssj.service.sys.manager.service;
+
+import com.ssj.bean.weixin.libmy.domain.TbLibReadManager;
+import com.ssj.framework.core.common.service.BaseService;
+
+/**
+ * @author sh
+ * @className IReadManagerService
+ * @description interface
+ * @date 2021/2/22
+ */
+public interface IReadManagerService extends BaseService<TbLibReadManager,String> {
+}

+ 15 - 0
src/main/java/com/ssj/statistics/dao/IStatisticsDao.java

@@ -0,0 +1,15 @@
+package com.ssj.statistics.dao;
+
+import com.ssj.bean.statistics.PlatTeacherStatistics;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @author sh
+ * @className IStatisticsDao
+ * @description TODO
+ * @date 2021/2/27
+ */
+@Repository
+public interface IStatisticsDao extends JpaRepository<PlatTeacherStatistics,String> {
+}

+ 25 - 0
src/main/java/com/ssj/statistics/dao/IStatisticsQueryDao.java

@@ -0,0 +1,25 @@
+package com.ssj.statistics.dao;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author sh
+ * @className IStatisticsQueryDao
+ * @description interface
+ * @date 2021/2/27
+ */
+public interface IStatisticsQueryDao {
+    Page<Map<String, Object>> statisticsList(Map<String, Object> params, Pageable initPage);
+
+    Page<Map<String, Object>> errorList(Map<String, Object> params, Pageable initPage);
+
+    List<Map<String, Object>> findStudentErrorList(String date,String teacherId,String subject);
+
+    Map<String, Object> findTotalData(Map<String, Object> params);
+
+    List<Map<String, Object>> checkDetailList(String homeworkId);
+}

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

@@ -0,0 +1,126 @@
+package com.ssj.statistics.dao.impl;
+
+import com.ssj.framework.core.persistence.PagingHibernateJdbcDao;
+import com.ssj.statistics.dao.IStatisticsQueryDao;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Repository;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * @author sh
+ * @className StatisticsQueryImpl
+ * @description queryImpl
+ * @date 2021/2/27
+ */
+@Repository
+public class StatisticsQueryImpl implements IStatisticsQueryDao {
+    @Autowired
+    private PagingHibernateJdbcDao dao;
+
+    @Override
+    public Page<Map<String, Object>> statisticsList(Map<String, Object> params, Pageable initPage) {
+        StringBuffer sql = new StringBuffer();
+        /**
+         *
+         */
+        sql.append("select t.teacher_id,t11.name as teacherName,t.subject,t11.course_name as allSubject, \n");
+        sql.append(" from plat_teacher_statistics t \n");
+        sql.append(" left join tb_lib_manager t11 on t.teacher_id = t11.user_id \n");
+        sql.append(" where t11.type = 30 \n");
+
+        return null;
+    }
+
+    @Override
+    public Page<Map<String, Object>> errorList(Map<String, Object> params, Pageable initPage) {
+        StringBuffer sql = new StringBuffer();
+        List<Object> queryParams = new ArrayList<>();
+        sql.append("SELECT DATE_FORMAT(t11.create_time,'%Y-%m-%d') as year_1,DATE_FORMAT(t11.create_time,'%m月%d日') as workDate from scon_homework_picture_correct t \n");
+        sql.append("join scon_homework_picture t11 on t.homework_picture_id = t11.id\n");
+        sql.append("left join tb_lib_vip t12 on t11.vip_id = t12.id\n");
+        sql.append("where t.type = 8 and t.is_check_error  = 1\n");
+        sql.append("and t11.`subject`=? and t11.teacher_id=?\n");
+        queryParams.add(params.get("subject"));
+        queryParams.add(params.get("teacherId"));
+        if(Objects.nonNull(params.get("beginDate")) && StringUtils.isNotBlank(MapUtils.getString(params,"beginDate"))){
+            sql.append(" and  to_days(t11.create_time) >=to_days(?)  ");
+            queryParams.add(params.get("beginDate"));
+        }
+        if(Objects.nonNull(params.get("endDate")) && StringUtils.isNotBlank(MapUtils.getString(params,"endDate"))){
+            sql.append(" and  to_days(t11.create_time) <=to_days(?)  ");
+            queryParams.add(params.get("endDate"));
+        }
+        sql.append("GROUP BY DATE_FORMAT(t11.create_time,'%y-%m-%d')");
+
+        return dao.findPage(sql.toString(),queryParams.toArray(),initPage);
+    }
+
+    @Override
+    public List<Map<String, Object>> findStudentErrorList(String date,String teacherId,String subject) {
+        StringBuffer sql = new StringBuffer();
+        List<Object> queryParams = new ArrayList<>();
+        sql.append("SELECT  t11.homework_id as homeworkId,t12.child_name as studentName,count(1) as errorNums \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("left join tb_lib_vip t12 on t11.vip_id = t12.id\n");
+        sql.append("where t.type = 8 and t.is_check_error  = 1\n");
+        sql.append("and t11.`subject`=? and t11.teacher_id=?\n");
+        queryParams.add(subject);
+        queryParams.add(teacherId);
+        sql.append(" and  to_days(t11.create_time) =to_days(?)  ");
+        queryParams.add(date);
+        sql.append("t11.homework_id");
+        return dao.findMap(sql.toString(),queryParams.toArray());
+    }
+
+    @Override
+    public Map<String, Object> findTotalData(Map<String, Object> params) {
+        StringBuffer sql = new StringBuffer();
+        List<Object> queryParams = new ArrayList<>();
+        sql.append("SELECT a.teacher_id,a.teacherName,a.`subject`,a.allSubject,a.correctNums,a.overtimeNums,a.notCorrectNums,a.notCommentNums,a.repeatNums,a.errorNums,\n");
+        sql.append("floor(100*(a.total- a.errorNums-a.notCorrectNums)/a.total) as accuracy\n");
+        sql.append("from (\n");
+        sql.append("SELECT t12.name as teacherName,t.teacher_id,t.`subject`,t12.course_name as allSubject,count(if(t.is_mark in (0,2) and t.is_feedback=1,true,NULL)) as correctNums, \n");
+        sql.append("0 as overtimeNums,\n");
+        sql.append("count(1) as total,\n");
+        sql.append("count(if(t11.start_time is null,true,null)) as notCorrectNums,\n");
+        sql.append("count(if(t.is_mark=10,true,null)) as notCommentNums,\n");
+        sql.append("count(if(t.is_mark=15,true,null)) as repeatNums\n");
+        sql.append("count(if(t11.is_check_error=1,true,null)) as errorNums,\n");
+        sql.append("from scon_homework_picture t \n");
+        sql.append("left join scon_homework_picture_correct t11 on t.id = t11.homework_picture_id and t11.type = 8\n");
+        sql.append("left join tb_lib_manager t12 on t.teacher_id = t12.user_id\n");
+        sql.append("where t12.type = 30 \n");
+        if(Objects.nonNull(params.get("beginDate")) && StringUtils.isNotBlank(MapUtils.getString(params,"beginDate"))){
+            sql.append(" and  to_days(t11.end_time) >=to_days(?)  ");
+            queryParams.add(params.get("beginDate"));
+        }
+        if(Objects.nonNull(params.get("endDate")) && StringUtils.isNotBlank(MapUtils.getString(params,"endDate"))){
+            sql.append(" and  to_days(t11.end_time) <=to_days(?)  ");
+            queryParams.add(params.get("endDate"));
+        }
+        sql.append("GROUP BY t.teacher_id\n");
+        sql.append(")a");
+        return dao.findMap(sql.toString(),queryParams.toArray()).get(0);
+    }
+
+    @Override
+    public List<Map<String, Object>> checkDetailList(String homeworkId) {
+        StringBuffer sql = new StringBuffer();
+        List<Object> queryParams = new ArrayList<>();
+        sql.append("SELECT t.id as pictureId,t.corrected_picture_url as pictureUrl,2 as checkState from scon_homework_picture t  \n");
+        sql.append("left join scon_homework_picture_correct t11 on t.id = t11.homework_picture_id\n");
+        sql.append("where t11.type = 8 and t11.is_check_error=1\n");
+        sql.append(" and t.homework_id = ?");
+        queryParams.add(homeworkId);
+        return dao.findMap(sql.toString(),queryParams.toArray());
+    }
+}

+ 47 - 0
src/main/java/com/ssj/statistics/service/IStatisticsService.java

@@ -0,0 +1,47 @@
+package com.ssj.statistics.service;
+
+import com.ssj.bean.statistics.PlatTeacherStatistics;
+import com.ssj.framework.core.common.service.BaseService;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author sh
+ * @className IStatisticsService
+ * @description interface
+ * @date 2021/2/27
+ */
+public interface IStatisticsService extends BaseService<PlatTeacherStatistics,String> {
+    /**
+     * 查询数据统计列表
+     * @param params
+     * @param initPage
+     * @return
+     */
+    Page<Map<String, Object>> statisticsList(Map<String, Object> params, Pageable initPage);
+
+    /**
+     * 查看报错列表
+     * @param params
+     * @param initPage
+     * @return
+     */
+    Map<String, Object> errorList(Map<String, Object> params, Pageable initPage);
+
+    /**
+     * 查找数据统计头部统计
+     * @param params
+     * @return
+     */
+    Map<String, Object> findTotalData(Map<String, Object> params);
+
+    /**
+     * 查询作业列表详情
+     * @param homeworkId
+     * @return
+     */
+    List<Map<String, Object>> checkDetailList(String homeworkId);
+}

+ 72 - 0
src/main/java/com/ssj/statistics/service/impl/StatisticsServiceImpl.java

@@ -0,0 +1,72 @@
+package com.ssj.statistics.service.impl;
+
+import com.ssj.bean.statistics.PlatTeacherStatistics;
+import com.ssj.framework.core.common.service.BaseServiceImpl;
+import com.ssj.statistics.dao.IStatisticsDao;
+import com.ssj.statistics.dao.IStatisticsQueryDao;
+import com.ssj.statistics.service.IStatisticsService;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+/**
+ * @author sh
+ * @className StatisticsServiceImpl
+ * @description 数据统计service
+ * @date 2021/2/27
+ */
+@Service
+public class StatisticsServiceImpl  extends BaseServiceImpl<PlatTeacherStatistics,String> implements IStatisticsService {
+
+    @Autowired
+    private IStatisticsDao dao;
+
+    @Autowired
+    private IStatisticsQueryDao queryDao;
+
+    @Override
+    public PagingAndSortingRepository<PlatTeacherStatistics, String> getDao() {
+        return dao;
+    }
+
+    @Override
+    public Page<Map<String, Object>> statisticsList(Map<String, Object> params, Pageable initPage) {
+        return queryDao.statisticsList(params,initPage);
+    }
+
+    @Override
+    public Map<String, Object> errorList(Map<String, Object> params, Pageable initPage) {
+        Page<Map<String, Object>> page = queryDao.errorList(params,initPage);
+        Map<String, Object> data = new HashMap<>(2);
+        data.put("pages",page.getTotalElements());
+        List<Map<String, Object>> list = page.getContent();
+        List<Map<String, Object>> listLast = new ArrayList<>();
+        String teacherId = MapUtils.getString(params,"teacherId");
+        String subject = MapUtils.getString(params,"subject");
+        if(Objects.nonNull(list) && list.size()>0){
+            for(Map<String, Object> map:list){
+                Map<String, Object> map2 = new HashMap<>();
+                map2.put("workDate",map.get("workDate"));
+                map2.put("dateList",queryDao.findStudentErrorList(MapUtils.getString(map,"year_1"),teacherId,subject));
+                listLast.add(map2);
+            }
+        }
+        data.put("list",listLast);
+        return data;
+    }
+
+    @Override
+    public Map<String, Object> findTotalData(Map<String, Object> params) {
+        return queryDao.findTotalData(params);
+    }
+
+    @Override
+    public List<Map<String, Object>> checkDetailList(String homeworkId) {
+        return queryDao.checkDetailList(homeworkId);
+    }
+}