Browse Source

Merge branch 'master' of http://124.70.43.205:3000/GYEE_R.D/exam

Koishi 2 years ago
parent
commit
c280e32a7e
23 changed files with 249 additions and 50 deletions
  1. 9 3
      exam-06173-api/src/main/java/com/gyee/exam/modules/course/controller/CourseController.java
  2. 26 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/course/dto/request/CheckUserCourseStatDTO.java
  3. 11 2
      exam-06173-api/src/main/java/com/gyee/exam/modules/course/dto/response/CourseUserIdTotalDTO.java
  4. 11 7
      exam-06173-api/src/main/java/com/gyee/exam/modules/course/dto/response/courseDepartIdTotalDTO.java
  5. 6 4
      exam-06173-api/src/main/java/com/gyee/exam/modules/course/service/impl/CourseServiceImpl.java
  6. 24 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/ectotal/controller/ExamAndCourseTotalController.java
  7. 28 15
      exam-06173-api/src/main/java/com/gyee/exam/modules/ectotal/dto/response/ExamAndCourseDepartTotalDTO.java
  8. 9 7
      exam-06173-api/src/main/java/com/gyee/exam/modules/ectotal/dto/response/ExamAndCourseUserTotalDTO.java
  9. 3 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/dto/ExamDTO.java
  10. 4 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/dto/response/ExamCheckRespDTO.java
  11. 17 7
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/dto/response/ExamDepartidTotalDTO.java
  12. 9 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/dto/response/ExamOnlineRespDTO.java
  13. 5 2
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/dto/response/ExamUseridTotalDTO.java
  14. 7 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/entity/Exam.java
  15. 14 1
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/service/impl/ExamServiceImpl.java
  16. 6 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/paper/service/impl/PaperServiceImpl.java
  17. 8 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/stat/course/mapper/StatCourseMapper.java
  18. 9 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/stat/course/service/StatCourseService.java
  19. 7 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/stat/course/service/impl/StatCourseServiceImpl.java
  20. 6 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/sys/user/service/SysUserService.java
  21. 8 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/sys/user/service/impl/SysUserServiceImpl.java
  22. 2 0
      exam-06173-api/src/main/resources/mapper/exam/ExamMapper.xml
  23. 20 2
      exam-06173-api/src/main/resources/mapper/stat/course/StatCourseMapper.xml

+ 9 - 3
exam-06173-api/src/main/java/com/gyee/exam/modules/course/controller/CourseController.java

@@ -16,6 +16,7 @@ import com.gyee.exam.modules.course.dto.response.*;
 import com.gyee.exam.modules.course.entity.Course;
 import com.gyee.exam.modules.course.service.CourseService;
 import com.gyee.exam.modules.qu.service.QuService;
+import com.gyee.exam.modules.sys.user.service.SysUserService;
 import com.gyee.exam.modules.tmpl.service.TmplService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -51,6 +52,9 @@ public class CourseController extends BaseController {
     @Autowired
     private QuService quService;
 
+    @Autowired
+    private SysUserService sysUserService;
+
     /**
     * 添加或修改
     * @param reqDTO
@@ -171,10 +175,12 @@ public class CourseController extends BaseController {
         int coursetotal = baseService.courseAllTotal();
         int tmpltotal = tmplService.tmplTotal();
         int titletotal = quService.titleTotal();
+        int usertoal = sysUserService.getSysUserTotal();
 
-        map.put("course",coursetotal);
-        map.put("tmpl",tmpltotal);
-        map.put("title",titletotal);
+        map.put("usernum",usertoal);//学院总数
+        map.put("coursenum",coursetotal);//课程总数
+        map.put("tmplnum",tmpltotal);//试卷总数
+        map.put("titlenum",titletotal);//题目总数
 
         return super.success(map);
     }

+ 26 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/course/dto/request/CheckUserCourseStatDTO.java

@@ -0,0 +1,26 @@
+package com.gyee.exam.modules.course.dto.request;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+
+/**
+ * @author bool
+ */
+@Data
+@ApiModel(value="检查用户关联课程是否学完请求类", description="检查用户关联课程是否学完请求类")
+public class CheckUserCourseStatDTO {
+
+
+    @ApiModelProperty(value = "课程ID")
+    private String courseId;
+
+    @ApiModelProperty(value = "用户ID")
+    private String userId;
+
+}

+ 11 - 2
exam-06173-api/src/main/java/com/gyee/exam/modules/course/dto/response/CourseUserIdTotalDTO.java

@@ -24,14 +24,17 @@ public class CourseUserIdTotalDTO {
     @ApiModelProperty(value = "课时数")
     private Integer periods;
 
-    @ApiModelProperty(value = "创建时间")
+    @ApiModelProperty(value = "开始时间")
     private String createTime;
 
     @ApiModelProperty(value = "最后学习时间时间")
     private String updateTime;
 
+    @ApiModelProperty(value = "学习完成时间")
+    private String finishTime;
+
     @ApiModelProperty(value = "是否关联考试")
-    private String associate;
+    private int associate;
 
     @ApiModelProperty(value = "规定学习时长(分钟)")
     private int needLearn;
@@ -40,4 +43,10 @@ public class CourseUserIdTotalDTO {
     private int learnMin;
 
 
+    public String getFinishTime() {
+        if(1==state){
+            finishTime = updateTime;
+        }
+        return finishTime;
+    }
 }

+ 11 - 7
exam-06173-api/src/main/java/com/gyee/exam/modules/course/dto/response/courseDepartIdTotalDTO.java

@@ -19,12 +19,21 @@ public class courseDepartIdTotalDTO {
     @ApiModelProperty(value = "课程标题")
     private String title;
 
-    @ApiModelProperty(value = "课时数")
+    @ApiModelProperty(value = "课程是否完成培训;1(已完成),0(未完成)")
+    private Integer  passed;
+
+
+    @ApiModelProperty(value = "课时")
     private Integer periods;
 
-    @ApiModelProperty(value = "创建时间")
+    @ApiModelProperty(value = "开始时间")
     private String createTime;
 
+
+    @ApiModelProperty(value = "完成时间")
+    private String finishTime;
+
+
     @ApiModelProperty(value = "已学习完成人数")
     private Integer  passUser;
 
@@ -33,9 +42,4 @@ public class courseDepartIdTotalDTO {
     private Integer  actualUser;
 
 
-    @ApiModelProperty(value = "课程是否完成培训;1(已完成),0(未完成)")
-    private Integer  passed;
-
-
-
 }

+ 6 - 4
exam-06173-api/src/main/java/com/gyee/exam/modules/course/service/impl/CourseServiceImpl.java

@@ -355,10 +355,12 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
 
         List<CourseUserIdTotalDTO> dtoList = baseMapper.selectCourseUserIdTotal(reqDTO);
         List<CourseUserIdTotalDTO> mindtos = courseFileLearnService.getCourseUserIdTotalMin(reqDTO);
-        Map<String,Integer> map = mindtos.stream().collect(Collectors.toMap(CourseUserIdTotalDTO::getId, CourseUserIdTotalDTO::getLearnMin));
-        dtoList.stream().forEach(d->{
-            d.setLearnMin(map.get(d.getId()));
-        });
+        if(null != mindtos && mindtos.size()>0){
+            Map<String,Integer> map = mindtos.stream().collect(Collectors.toMap(CourseUserIdTotalDTO::getId, CourseUserIdTotalDTO::getLearnMin));
+            dtoList.stream().forEach(d->{
+                d.setLearnMin(map.get(d.getId()));
+            });
+        }
         return dtoList;
 
     }

+ 24 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/ectotal/controller/ExamAndCourseTotalController.java

@@ -5,6 +5,7 @@ import com.gyee.boot.base.api.api.ApiRest;
 import com.gyee.boot.base.api.api.controller.BaseController;
 import com.gyee.boot.base.api.api.dto.BaseQueryReqDTO;
 import com.gyee.boot.base.api.api.dto.BaseUserQueryReqDTO;
+import com.gyee.boot.base.api.utils.excel.ExportExcel;
 import com.gyee.exam.modules.ectotal.dto.response.ExamAndCourseDepartTotalDTO;
 import com.gyee.exam.modules.ectotal.dto.response.ExamAndCourseUserTotalDTO;
 import com.gyee.exam.modules.ectotal.service.ExamAndCourseTotalService;
@@ -13,6 +14,7 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -33,6 +35,10 @@ public class ExamAndCourseTotalController extends BaseController {
     @Autowired
     private ExamAndCourseTotalService baseService;
 
+
+    @Autowired
+    private ExportExcel exportExcel;
+
     /**
      * 全部门培训考试统计
      * @return
@@ -60,5 +66,23 @@ public class ExamAndCourseTotalController extends BaseController {
 
 
 
+    /**
+     * 全部门培训考试统计导出
+     * @param reqDTO
+     * @return
+     */
+    @ApiOperation(value = "全部门培训考试统计导出")
+    @ResponseBody
+    @RequestMapping(value = "/ec-depart-total-export")
+    public  void repoPreviewExport2(HttpServletResponse response, @RequestBody BaseQueryReqDTO reqDTO) {
+
+        List<ExamAndCourseDepartTotalDTO> dtoList = baseService.examAndCourseTotal(reqDTO);
+        // 执行导出
+        exportExcel.export(response, ExamAndCourseDepartTotalDTO.class, "门培训考试统计导出", dtoList);
+//        return super.success();
+
+    }
+
+
 
 }

+ 28 - 15
exam-06173-api/src/main/java/com/gyee/exam/modules/ectotal/dto/response/ExamAndCourseDepartTotalDTO.java

@@ -1,47 +1,60 @@
 package com.gyee.exam.modules.ectotal.dto.response;
 
+import com.gyee.boot.base.api.utils.excel.annotation.ExcelField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.io.Serializable;
+
 @Data
 @ApiModel(value="部门考试培训统计", description="部门考试培训统计")
-public class ExamAndCourseDepartTotalDTO {
+public class ExamAndCourseDepartTotalDTO{
 
     private static final long serialVersionUID = 1L;
 
+
+    @ExcelField(title = "部门编码", sort=9)
     @ApiModelProperty(value = "部门编码")
     private String deptCode;
 
+    @ExcelField(title = "部门名称", sort=1)
     @ApiModelProperty(value = "部门名称")
     private String deptName;
 
-    @ApiModelProperty(value = "培训总人次")
+    @ExcelField(title = "应培训总人次", sort=2)
+    @ApiModelProperty(value = "应培训总人次")
     private Integer ecTotalUser;
 
-    @ApiModelProperty(value = "培训人数")
+    @ExcelField(title = "实培训人数", sort=3)
+    @ApiModelProperty(value = "实培训人数")
     private Integer ecActualUser;
 
-    @ApiModelProperty(value = "已培训结束人数")
+    @ExcelField(title = "培训完成人数", sort=4)
+    @ApiModelProperty(value = "培训完成人数")
     private Integer ecPassUser;
 
-    @ApiModelProperty(value = "培训时长")
+    @ExcelField(title = "累计学时", sort=5)
+    @ApiModelProperty(value = "累计学时")
     private Integer ecTotalMin;
 
-    @ApiModelProperty(value = "考试总人次")
+    @ExcelField(title = "应考试总人数", sort=6)
+    @ApiModelProperty(value = "应考试总人数")
     private Integer eeTotalUser;
 
-    @ApiModelProperty(value = "考试人次")
+    @ExcelField(title = "实考试人次", sort=7)
+    @ApiModelProperty(value = "实考试人次")
     private Integer eeActualUser;
 
-    @ApiModelProperty(value = "已考试结束人数")
+    @ExcelField(title = "考试及格人数", sort=8)
+    @ApiModelProperty(value = "考试及格人数")
     private Integer eePassUser;
 
-    public Integer getEcTotalMin() {
-        if (null == ecTotalMin)
-        {
-            ecTotalMin = 0;
-        }
-        return ecTotalMin;
-    }
+//    public Integer getEcTotalMin() {
+//        if (null == ecTotalMin)
+//        {
+//            ecTotalMin = 0;
+//        }
+//        return ecTotalMin;
+//    }
 }

+ 9 - 7
exam-06173-api/src/main/java/com/gyee/exam/modules/ectotal/dto/response/ExamAndCourseUserTotalDTO.java

@@ -24,19 +24,21 @@ public class ExamAndCourseUserTotalDTO {
     @ApiModelProperty(value = "职员code")
     private String userName;
 
-    @ApiModelProperty(value = "考试次数")
-    private int tryCount;
-
-    @ApiModelProperty(value = "及格次数")
-    private int passed;
-
     @ApiModelProperty(value = "参与课程数")
     private int courseNum;
 
-    @ApiModelProperty(value = "已学习课程")
+    @ApiModelProperty(value = "已学习完成课程")
     private int learnCourse;
 
     @ApiModelProperty(value = "学习时长(分钟)")
     private int totalMin;
 
+    @ApiModelProperty(value = "参与考试次数")
+    private int tryCount;
+
+    @ApiModelProperty(value = "及格次数")
+    private int passed;
+
+
+
 }

+ 3 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/dto/ExamDTO.java

@@ -143,6 +143,9 @@ public class ExamDTO implements Serializable {
     @ApiModelProperty(value = "修改人", required=true)
     private String updateBy;
 
+    @ApiModelProperty(value = "关联课程")
+    private String courseId;
+
     @ApiModelProperty(value = "数据标识", required=true)
     private Integer dataFlag;
 

+ 4 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/dto/response/ExamCheckRespDTO.java

@@ -2,6 +2,7 @@ package com.gyee.exam.modules.exam.dto.response;
 
 import com.gyee.exam.modules.exam.dto.ExamDTO;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.extern.log4j.Log4j2;
 
@@ -33,6 +34,9 @@ public class ExamCheckRespDTO extends ExamDTO {
      */
     public Boolean isBuy;
 
+    @ApiModelProperty(value = "null=未学习,0=学习中,1=已学完")
+    private Integer finish;
+
     /**
      * 是否迟到
      * @return

+ 17 - 7
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/dto/response/ExamDepartidTotalDTO.java

@@ -12,9 +12,12 @@ public class ExamDepartidTotalDTO {
 
     private static final long serialVersionUID = 1L;
 
-    @ApiModelProperty(value = "考试id")
+    @ApiModelProperty(value = "id")
     private String id;
 
+    @ApiModelProperty(value = "考试id")
+    private String  tmplId;
+
     @ApiModelProperty(value = "考试题目")
     private String title;
 
@@ -24,12 +27,6 @@ public class ExamDepartidTotalDTO {
     @ApiModelProperty(value = "结束考试时间")
     private String endTime;
 
-    @ApiModelProperty(value = "总分数")
-    private double totalScore;
-
-    @ApiModelProperty(value = "考试总时长")
-    private int totalTime;
-
     @ApiModelProperty(value = "考试最高分")
     private double maxScore;
 
@@ -42,6 +39,19 @@ public class ExamDepartidTotalDTO {
     @ApiModelProperty(value = "考试及格人数")
     private int passed;
 
+    @ApiModelProperty(value = "是否关联考试")
+    private int associate;
+
+    @ApiModelProperty(value = "总分数")
+    private double totalScore;
+
+    @ApiModelProperty(value = "考试总时长")
+    private int totalTime;
+
+
+
+
+
 
 
 

+ 9 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/dto/response/ExamOnlineRespDTO.java

@@ -23,6 +23,15 @@ public class ExamOnlineRespDTO extends ExamDTO {
     @ApiModelProperty(value = "我的考试次数", required=true)
     private Integer tryCount;
 
+    @ApiModelProperty(value = "是否关联考试 1:关联;0:未关联")
+    private Integer associate;
+
+
+
+
+
+
+
 
 
     /**

+ 5 - 2
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/dto/response/ExamUseridTotalDTO.java

@@ -12,9 +12,12 @@ public class ExamUseridTotalDTO {
 
     private static final long serialVersionUID = 1L;
 
-    @ApiModelProperty(value = "考试id")
+    @ApiModelProperty(value = "id")
     private String id;
 
+    @ApiModelProperty(value = "考试id")
+    private String  tmplId;
+
     @ApiModelProperty(value = "考试题目")
     private String title;
 
@@ -28,6 +31,6 @@ public class ExamUseridTotalDTO {
     private double score;
 
     @ApiModelProperty(value = "是否关联课程")
-    private String associate;
+    private int associate;
 
 }

+ 7 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/entity/Exam.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -250,4 +251,10 @@ public class Exam extends Model<Exam> {
     @TableField("data_flag")
     private Integer dataFlag;
 
+    /**
+     * 试卷id
+     */
+    @TableField("course_id")
+    private String courseId;
+
 }

+ 14 - 1
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/service/impl/ExamServiceImpl.java

@@ -9,7 +9,10 @@ import com.gyee.boot.base.api.api.dto.BaseUserQueryReqDTO;
 import com.gyee.boot.base.api.api.dto.PagingReqDTO;
 import com.gyee.boot.base.api.exception.ServiceException;
 import com.gyee.boot.base.api.utils.BeanMapper;
+import com.gyee.exam.modules.course.dto.request.CheckUserCourseStatDTO;
 import com.gyee.exam.modules.exam.dto.response.*;
+import com.gyee.exam.modules.stat.course.dto.response.StatCourseLearnDTO;
+import com.gyee.exam.modules.stat.course.service.StatCourseService;
 import org.apache.commons.lang3.StringUtils;
 import com.gyee.exam.ability.redis.service.RedisService;
 import com.gyee.exam.enums.OpenType;
@@ -27,6 +30,7 @@ import com.gyee.exam.modules.tmpl.entity.Tmpl;
 import com.gyee.exam.modules.tmpl.service.TmplService;
 import com.gyee.exam.modules.user.UserUtils;
 import com.gyee.exam.modules.user.exam.service.UserExamService;
+import org.apache.poi.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -63,6 +67,9 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements Ex
     @Autowired
     private RedisService redisService;
 
+    @Autowired
+    private StatCourseService statCourseService;
+
     @Override
     public void save(ExamSaveReqDTO reqDTO) {
 
@@ -173,7 +180,13 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements Ex
         // 需要购买的
         respDTO.setIsBuy(true);
 
-
+        CheckUserCourseStatDTO dto = new CheckUserCourseStatDTO();
+        if(null !=exam.getCourseId() && exam.getCourseId().length() >0){
+            dto.setCourseId(exam.getCourseId());
+            dto.setUserId(UserUtils.getUserId());
+            StatCourseLearnDTO state = statCourseService.checkUserCourseStat(dto);
+            respDTO.setFinish(state.getState());
+        }
         return respDTO;
     }
 

+ 6 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/paper/service/impl/PaperServiceImpl.java

@@ -121,6 +121,12 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, Paper> implements
 
         ExamCheckRespDTO check = examService.findCheckInfo(examId);
 
+
+        //
+        if(null != check.getFinish() && check.getFinish()<1){
+            throw new ServiceException("请考生完成相关培训课程再来考试!");
+        }
+
         // 未开始或已结束
         if(check.getOverTime()!=null && check.getOverTime()){
             throw new ServiceException("考试未开始或已结束!");

+ 8 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/stat/course/mapper/StatCourseMapper.java

@@ -2,6 +2,7 @@ package com.gyee.exam.modules.stat.course.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.gyee.exam.modules.course.dto.request.CheckUserCourseStatDTO;
 import com.gyee.exam.modules.stat.course.dto.StatCourseTotalDTO;
 import com.gyee.exam.modules.stat.course.dto.request.StatCourseFileReqDTO;
 import com.gyee.exam.modules.stat.course.dto.request.StatCourseLearnReqDTO;
@@ -47,4 +48,11 @@ public interface StatCourseMapper {
      */
     IPage<StatCourseLearnDTO> userStatPaging(Page page, @Param("openType") Integer openType, @Param("query") StatCourseLearnReqDTO reqDTO);
 
+    /**
+     * 检查课程是否学完
+     * @param reqDTO
+     * @return
+     */
+    StatCourseLearnDTO checkUserCourseStat( @Param("query") CheckUserCourseStatDTO reqDTO);
+
 }

+ 9 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/stat/course/service/StatCourseService.java

@@ -2,6 +2,7 @@ package com.gyee.exam.modules.stat.course.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.gyee.boot.base.api.api.dto.PagingReqDTO;
+import com.gyee.exam.modules.course.dto.request.CheckUserCourseStatDTO;
 import com.gyee.exam.modules.stat.course.dto.StatCourseTotalDTO;
 import com.gyee.exam.modules.stat.course.dto.request.StatCourseFileReqDTO;
 import com.gyee.exam.modules.stat.course.dto.request.StatCourseLearnReqDTO;
@@ -40,4 +41,12 @@ public interface StatCourseService {
      */
     IPage<StatCourseLearnDTO> userStatPaging(PagingReqDTO<StatCourseLearnReqDTO> reqDTO);
 
+
+    /**
+     * 检查用户课程是否学完
+     * @param reqDTO
+     * @return
+     */
+    StatCourseLearnDTO checkUserCourseStat(CheckUserCourseStatDTO reqDTO);
+
 }

+ 7 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/stat/course/service/impl/StatCourseServiceImpl.java

@@ -2,6 +2,7 @@ package com.gyee.exam.modules.stat.course.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.gyee.boot.base.api.api.dto.PagingReqDTO;
+import com.gyee.exam.modules.course.dto.request.CheckUserCourseStatDTO;
 import com.gyee.exam.modules.course.entity.Course;
 import com.gyee.exam.modules.course.service.CourseService;
 import com.gyee.exam.modules.stat.course.dto.StatCourseTotalDTO;
@@ -50,4 +51,10 @@ public class StatCourseServiceImpl implements StatCourseService {
         return statCourseMapper.userStatPaging(reqDTO.toPage(), course.getOpenType(), reqDTO.getParams());
     }
 
+    @Override
+    public StatCourseLearnDTO checkUserCourseStat(CheckUserCourseStatDTO reqDTO) {
+        StatCourseLearnDTO dto = statCourseMapper.checkUserCourseStat(reqDTO);
+        return dto;
+    }
+
 }

+ 6 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/sys/user/service/SysUserService.java

@@ -173,4 +173,10 @@ public interface SysUserService extends IService<SysUser> {
      * @return
      */
     boolean existsMobile(String mobile);
+
+    /**
+     * 统计总人数
+     * @return
+     */
+    int getSysUserTotal();
 }

+ 8 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/sys/user/service/impl/SysUserServiceImpl.java

@@ -856,4 +856,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
         return this.count(wrapper) > 0;
     }
+
+    @Override
+    public int getSysUserTotal() {
+        QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
+        int count = baseMapper.selectCount(wrapper);
+        return count;
+    }
+
 }

+ 2 - 0
exam-06173-api/src/main/resources/mapper/exam/ExamMapper.xml

@@ -239,6 +239,7 @@
             resultType="com.gyee.exam.modules.exam.dto.response.ExamDepartidTotalDTO">
                 SELECT
                     ee.id id,
+                    ee.tmpl_id tmplId,
                     ee.title title,
                     ee.start_time startTime,
                     ee.end_time endTime,
@@ -332,6 +333,7 @@
     <select id="selectExamUseridTotal" resultType="com.gyee.exam.modules.exam.dto.response.ExamUseridTotalDTO">
 				SELECT
 					ec.id id,
+                    ec.tmpl_id tmplId,
 				    ec.title title,
 					ep.create_time startTime,
 					ep.limit_time endTime,

+ 20 - 2
exam-06173-api/src/main/resources/mapper/stat/course/StatCourseMapper.xml

@@ -76,13 +76,31 @@
         </choose>
     </select>
 
+    <select id="checkUserCourseStat"
+            resultType="com.gyee.exam.modules.stat.course.dto.response.StatCourseLearnDTO">
+        SELECT
+        uc.id,
+        cl.state,
+        uc.id AS userId,
+        IFNULL(cl.learn_file, 0) AS learnFile,
+        (SELECT COUNT(0) FROM el_course_ref_file WHERE course_id=dept.course_id) AS totalFile,
+        uc.real_name AS realName,
+        (SELECT IFNULL(SUM(learn_min),0) FROM el_course_file_learn fl WHERE fl.course_id=cl.course_id AND fl.user_id=cl.user_id) AS totalMin
+        FROM el_course_depart dept
+        LEFT JOIN sys_user uc ON dept.dept_code=uc.dept_code
+        LEFT JOIN el_course_learn cl ON cl.user_id=uc.id AND cl.course_id=dept.course_id
+        WHERE uc.id IS NOT NULL AND dept.course_id=#{query.courseId}
+        <if test="query.userId!=null and query.userId!=''">
+            AND uc.id = #{query.userId}
+        </if>
+        ORDER BY cl.state DESC,totalMin DESC
 
-
+    </select>
 
 
     <sql id="queryOpen">
         SELECT
-               cl.id,
+        cl.id,
         cl.state,
         cl.user_id AS userId,
         cl.learn_file AS learnFile,