Browse Source

职员考试培训统计

wangchangsheng 2 years ago
parent
commit
1ca62d942f
21 changed files with 782 additions and 12 deletions
  1. 37 0
      exam-06173-api/src/main/java/com/gyee/boot/base/api/api/dto/BaseUserQueryReqDTO.java
  2. 35 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/course/controller/CourseController.java
  3. 43 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/course/dto/response/CourseUserIdTotalDTO.java
  4. 36 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/course/dto/response/CourseUserTotalDTO.java
  5. 10 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/course/mapper/CourseFileLearnMapper.java
  6. 6 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/course/mapper/CourseMapper.java
  7. 9 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/course/service/CourseFileLearnService.java
  8. 18 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/course/service/CourseService.java
  9. 25 5
      exam-06173-api/src/main/java/com/gyee/exam/modules/course/service/impl/CourseFileLearnServiceImpl.java
  10. 30 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/course/service/impl/CourseServiceImpl.java
  11. 36 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/controller/ExamController.java
  12. 55 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/dto/response/ExamDepartidTotalDTO.java
  13. 33 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/dto/response/examUserTotalDTO.java
  14. 12 3
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/mapper/ExamMapper.java
  15. 13 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/service/ExamService.java
  16. 17 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/service/impl/ExamServiceImpl.java
  17. 4 4
      exam-06173-api/src/main/resources/application-dev.yml
  18. 97 0
      exam-06173-api/src/main/resources/application-uat.yml
  19. 83 0
      exam-06173-api/src/main/resources/mapper/course/CourseFileLearnMapper.xml
  20. 90 0
      exam-06173-api/src/main/resources/mapper/course/CourseMapper.xml
  21. 93 0
      exam-06173-api/src/main/resources/mapper/exam/ExamMapper.xml

+ 37 - 0
exam-06173-api/src/main/java/com/gyee/boot/base/api/api/dto/BaseUserQueryReqDTO.java

@@ -0,0 +1,37 @@
+package com.gyee.boot.base.api.api.dto;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@ApiModel(value="按关键字查询请求通用类", description="按关键字查询请求通用类")
+@AllArgsConstructor
+@NoArgsConstructor
+public class BaseUserQueryReqDTO {
+
+    @ApiModelProperty(value = "日期开始", required=true)
+    private Date statDateL;
+
+    @ApiModelProperty(value = "日期结束", required=true)
+    private Date statDateR;
+
+    @ApiModelProperty(value = "部门名", required=true)
+    private String deptName;
+
+    @ApiModelProperty(value = "部门code", required=true)
+    private String deptCode;
+
+    @ApiModelProperty(value = "用户名称(CH)", required=true)
+    private String realName;
+
+    @ApiModelProperty(value = "用户名称(EN)", required=true)
+    private String userName;
+
+
+}

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

@@ -241,4 +241,39 @@ public class CourseController extends BaseController {
 
 
 
+    /**
+     * 职员培训统计
+     * @return
+     */
+    @ApiOperation(value = "职员培训统计")
+    @GetMapping("/course-user-total")
+    public ApiRest courseUserTotal(@RequestBody BaseUserQueryReqDTO reqDTO) {
+
+        List<CourseUserTotalDTO> dtoList = baseService.getCourseUserTotal(reqDTO);
+        return super.success(dtoList);
+
+    }
+
+
+
+
+    /**
+     * 单个职员培训统计
+     * @return
+     */
+    @ApiOperation(value = "单个职员培训统计")
+    @GetMapping("/course-userId-total")
+    public ApiRest courseUserIdTotal(@RequestBody BaseUserQueryReqDTO reqDTO) {
+
+        if(null == reqDTO || StringUtils.isEmpty(reqDTO.getUserName().trim())){
+            return super.failure("请求职员编号为空");
+        }
+        List<CourseUserIdTotalDTO> dtoList = baseService.getCourseUserIdTotal(reqDTO);
+        return super.success(dtoList);
+
+    }
+
+
+
+
 }

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

@@ -0,0 +1,43 @@
+package com.gyee.exam.modules.course.dto.response;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value="职员培训统计", description="职员培训统计")
+public class CourseUserIdTotalDTO {
+
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "课程id")
+    private String id;
+
+    @ApiModelProperty(value = "课程标题")
+    private String title;
+
+    @ApiModelProperty(value = "课程是否完成培训;1(已完成),0(未完成)")
+    private Integer  state;
+
+    @ApiModelProperty(value = "课时数")
+    private Integer periods;
+
+    @ApiModelProperty(value = "创建时间")
+    private String createTime;
+
+    @ApiModelProperty(value = "最后学习时间时间")
+    private String updateTime;
+
+    @ApiModelProperty(value = "是否关联考试")
+    private String associate;
+
+    @ApiModelProperty(value = "规定学习时长(分钟)")
+    private int needLearn;
+
+    @ApiModelProperty(value = "已学习时长(分钟)")
+    private int learnMin;
+
+
+}

+ 36 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/course/dto/response/CourseUserTotalDTO.java

@@ -0,0 +1,36 @@
+package com.gyee.exam.modules.course.dto.response;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value="职员培训统计", description="职员培训统计")
+public class CourseUserTotalDTO {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "部门名称")
+    private String deptName;
+
+    @ApiModelProperty(value = "部门code")
+    private String deptCode;
+
+    @ApiModelProperty(value = "职员名称")
+    private String realName;
+
+    @ApiModelProperty(value = "职员code")
+    private String userName;
+
+    @ApiModelProperty(value = "参与课程数")
+    private int courseNum;
+
+    @ApiModelProperty(value = "已学习课程")
+    private int learnCourse;
+
+    @ApiModelProperty(value = "学习时长(分钟)")
+    private int totalMin;
+
+
+}

+ 10 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/course/mapper/CourseFileLearnMapper.java

@@ -4,9 +4,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gyee.boot.base.api.api.dto.BaseQueryReqDTO;
+import com.gyee.boot.base.api.api.dto.BaseUserQueryReqDTO;
 import com.gyee.exam.modules.course.dto.CourseFileLearnDTO;
 import com.gyee.exam.modules.course.dto.response.CourseDepartTotalDTO;
 import com.gyee.exam.modules.course.dto.response.CourseFileLearnRespDTO;
+import com.gyee.exam.modules.course.dto.response.CourseUserIdTotalDTO;
+import com.gyee.exam.modules.course.dto.response.CourseUserTotalDTO;
 import com.gyee.exam.modules.course.entity.CourseFileLearn;
 import org.apache.ibatis.annotations.Param;
 
@@ -41,4 +44,11 @@ public interface CourseFileLearnMapper extends BaseMapper<CourseFileLearn> {
 
 
     List<CourseDepartTotalDTO> courseDepartTotalMin(@Param("query") BaseQueryReqDTO reqDTO);
+
+
+    List<CourseUserTotalDTO> selectCourseUserTotalMin(@Param("query") BaseUserQueryReqDTO reqDTO);
+
+
+
+    List<CourseUserIdTotalDTO> selectCourseUserIdTotalMin(@Param("query")  BaseUserQueryReqDTO reqDTO);
 }

+ 6 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/course/mapper/CourseMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gyee.boot.base.api.api.dto.BaseQueryReqDTO;
+import com.gyee.boot.base.api.api.dto.BaseUserQueryReqDTO;
 import com.gyee.exam.modules.course.dto.ext.CourseDetailExtDTO;
 import com.gyee.exam.modules.course.dto.request.UserCourseReqDTO;
 import com.gyee.exam.modules.course.dto.response.*;
@@ -45,4 +46,9 @@ public interface CourseMapper extends BaseMapper<Course> {
     List<CourseDepartTotalDTO> courseDepartTotal(@Param("query") BaseQueryReqDTO reqDTO);
 
     List<courseDepartIdTotalDTO> courseDepartIdTotal(@Param("query") BaseQueryReqDTO reqDTO);
+
+    List<CourseUserTotalDTO> selectCourseUserTotal(@Param("query") BaseUserQueryReqDTO reqDTO);
+
+
+    List<CourseUserIdTotalDTO> selectCourseUserIdTotal(@Param("query") BaseUserQueryReqDTO reqDTO);
 }

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

@@ -3,12 +3,16 @@ package com.gyee.exam.modules.course.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.gyee.boot.base.api.api.dto.BaseQueryReqDTO;
+import com.gyee.boot.base.api.api.dto.BaseUserQueryReqDTO;
 import com.gyee.boot.base.api.api.dto.PagingReqDTO;
 import com.gyee.exam.modules.course.dto.CourseFileLearnDTO;
 import com.gyee.exam.modules.course.dto.ext.CourseLearnResultExtDTO;
 import com.gyee.exam.modules.course.dto.response.CourseDepartTotalDTO;
 import com.gyee.exam.modules.course.dto.response.CourseFileLearnRespDTO;
+import com.gyee.exam.modules.course.dto.response.CourseUserTotalDTO;
+import com.gyee.exam.modules.course.dto.response.CourseUserIdTotalDTO;
 import com.gyee.exam.modules.course.entity.CourseFileLearn;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -63,4 +67,9 @@ public interface CourseFileLearnService extends IService<CourseFileLearn> {
 
 
     List<CourseDepartTotalDTO> courseDepartTotalMin(BaseQueryReqDTO reqDTO);
+
+
+    List<CourseUserTotalDTO> getCourseUserTotalMin(BaseUserQueryReqDTO reqDTO);
+
+    List<CourseUserIdTotalDTO> getCourseUserIdTotalMin(@Param("query") BaseUserQueryReqDTO reqDTO);
 }

+ 18 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/course/service/CourseService.java

@@ -3,6 +3,7 @@ package com.gyee.exam.modules.course.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.gyee.boot.base.api.api.dto.BaseQueryReqDTO;
+import com.gyee.boot.base.api.api.dto.BaseUserQueryReqDTO;
 import com.gyee.boot.base.api.api.dto.PagingReqDTO;
 import com.gyee.exam.modules.course.dto.CourseDTO;
 import com.gyee.exam.modules.course.dto.ext.CourseDetailExtDTO;
@@ -104,6 +105,23 @@ public interface CourseService extends IService<Course> {
     List<courseDepartIdTotalDTO> courseDepartIdTotal(BaseQueryReqDTO reqDTO);
 
 
+    /**
+     * 职员培训统计
+     * @param reqDTO
+     * @return
+     */
+    List<CourseUserTotalDTO> getCourseUserTotal(BaseUserQueryReqDTO reqDTO);
+
+
+
+    /**
+     * 单个职员培训统计
+     * @param reqDTO
+     * @return
+     */
+    List<CourseUserIdTotalDTO> getCourseUserIdTotal(BaseUserQueryReqDTO reqDTO);
+
+
 
 
 }

+ 25 - 5
exam-06173-api/src/main/java/com/gyee/exam/modules/course/service/impl/CourseFileLearnServiceImpl.java

@@ -4,12 +4,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gyee.boot.base.api.api.dto.BaseQueryReqDTO;
+import com.gyee.boot.base.api.api.dto.BaseUserQueryReqDTO;
 import com.gyee.boot.base.api.api.dto.PagingReqDTO;
 import com.gyee.exam.ability.redis.service.RedisService;
 import com.gyee.exam.modules.course.dto.CourseFileLearnDTO;
 import com.gyee.exam.modules.course.dto.ext.CourseLearnResultExtDTO;
 import com.gyee.exam.modules.course.dto.response.CourseDepartTotalDTO;
 import com.gyee.exam.modules.course.dto.response.CourseFileLearnRespDTO;
+import com.gyee.exam.modules.course.dto.response.CourseUserTotalDTO;
+import com.gyee.exam.modules.course.dto.response.CourseUserIdTotalDTO;
 import com.gyee.exam.modules.course.entity.*;
 import com.gyee.exam.modules.course.enums.CourseState;
 import com.gyee.exam.modules.course.mapper.CourseFileLearnMapper;
@@ -223,11 +226,7 @@ public class CourseFileLearnServiceImpl extends ServiceImpl<CourseFileLearnMappe
         return record;
     }
 
-    @Override
-    public List<CourseDepartTotalDTO> courseDepartTotalMin(BaseQueryReqDTO reqDTO) {
-        List<CourseDepartTotalDTO> dtos = baseMapper.courseDepartTotalMin(reqDTO);
-        return dtos;
-    }
+
 
     /**
      * 校验整个课程的学习进度
@@ -277,5 +276,26 @@ public class CourseFileLearnServiceImpl extends ServiceImpl<CourseFileLearnMappe
         courseLearnService.saveOrUpdate(learn);
     }
 
+    @Override
+    public List<CourseDepartTotalDTO> courseDepartTotalMin(BaseQueryReqDTO reqDTO) {
+        List<CourseDepartTotalDTO> dtos = baseMapper.courseDepartTotalMin(reqDTO);
+        return dtos;
+    }
+
+    @Override
+    public List<CourseUserTotalDTO> getCourseUserTotalMin(BaseUserQueryReqDTO reqDTO) {
+        List<CourseUserTotalDTO> dtos =  baseMapper.selectCourseUserTotalMin(reqDTO);
+        return dtos;
+    }
+
+
+
+    @Override
+    public List<CourseUserIdTotalDTO> getCourseUserIdTotalMin(BaseUserQueryReqDTO reqDTO) {
+
+        List<CourseUserIdTotalDTO> dtos = baseMapper.selectCourseUserIdTotalMin(reqDTO);
+
+        return dtos;
+    }
 
 }

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

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gyee.boot.base.api.api.dto.BaseQueryReqDTO;
+import com.gyee.boot.base.api.api.dto.BaseUserQueryReqDTO;
 import com.gyee.boot.base.api.api.dto.PagingReqDTO;
 import com.gyee.boot.base.api.utils.BeanMapper;
 import com.gyee.boot.base.api.utils.DecimalUtils;
@@ -333,5 +334,34 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
         return dtos;
     }
 
+    @Override
+    public List<CourseUserTotalDTO> getCourseUserTotal(BaseUserQueryReqDTO reqDTO) {
+
+
+        List<CourseUserTotalDTO>  dtoList =  baseMapper.selectCourseUserTotal(reqDTO);
+        List<CourseUserTotalDTO>  mindtos = courseFileLearnService.getCourseUserTotalMin(reqDTO);
+        Map<String,Integer> map = mindtos.stream().collect(Collectors.toMap(CourseUserTotalDTO::getUserName,CourseUserTotalDTO::getTotalMin));
+
+        dtoList.stream().forEach(d->{
+            d.setTotalMin(map.get(d.getUserName()));
+
+        });
+        return dtoList;
+
+    }
+
+    @Override
+    public List<CourseUserIdTotalDTO> getCourseUserIdTotal(BaseUserQueryReqDTO reqDTO) {
+
+        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()));
+        });
+        return dtoList;
+
+    }
+
 
 }

+ 36 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/controller/ExamController.java

@@ -9,6 +9,7 @@ import com.gyee.boot.base.api.api.controller.BaseController;
 import com.gyee.boot.base.api.api.dto.*;
 import com.gyee.boot.base.api.utils.BeanMapper;
 import com.gyee.boot.base.aspect.log.enums.LogType;
+import com.gyee.exam.modules.course.dto.response.courseDepartIdTotalDTO;
 import com.gyee.exam.modules.exam.dto.ExamDTO;
 import com.gyee.exam.modules.exam.dto.request.ExamReqDTO;
 import com.gyee.exam.modules.exam.dto.request.ExamSaveReqDTO;
@@ -17,6 +18,7 @@ import com.gyee.exam.modules.exam.entity.Exam;
 import com.gyee.exam.modules.exam.service.ExamService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.authz.annotation.Logical;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -222,5 +224,39 @@ public class ExamController extends BaseController {
 
 
 
+    /**
+     * 单部门考试统计
+     * @return
+     */
+    @ApiOperation(value = "单部门考试统计")
+    @GetMapping("/exam-departid-total")
+    public ApiRest examDepartidTotal(@RequestBody BaseQueryReqDTO reqDTO) {
+        if(null == reqDTO || StringUtils.isEmpty(reqDTO.getQ().trim())){
+            return super.failure("请求部门参数为空");
+        }
+        List<ExamDepartidTotalDTO> dtoList = baseService.examDepartidTotal(reqDTO);
+        return super.success(dtoList);
+
+    }
+
+
+
+
+
+    /**
+     * 职员考试统计
+     * @return
+     */
+    @ApiOperation(value = "职员考试统计")
+    @GetMapping("/exam-user-total")
+    public ApiRest examUserTotal(@RequestBody BaseUserQueryReqDTO reqDTO) {
+
+        List<examUserTotalDTO> dtoList = baseService.getExamUserTotal(reqDTO);
+        return super.success(dtoList);
+
+    }
+
+
+
 
 }

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

@@ -0,0 +1,55 @@
+package com.gyee.exam.modules.exam.dto.response;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value="单部门考试统计响应类", description="单部门考试统计响应类")
+public class ExamDepartidTotalDTO {
+
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "考试id")
+    private String id;
+
+    @ApiModelProperty(value = "考试题目")
+    private String title;
+
+    @ApiModelProperty(value = "开始考试时间")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束考试时间")
+    private String endTime;
+
+    @ApiModelProperty(value = "总分数")
+    private double totalScore;
+
+    @ApiModelProperty(value = "考试总时长")
+    private int totalTime;
+
+    @ApiModelProperty(value = "考试最高分")
+    private double maxScore;
+
+    @ApiModelProperty(value = "考试最低分")
+    private double minScore;
+
+    @ApiModelProperty(value = "参加考试人数")
+    private int actualUser;
+
+    @ApiModelProperty(value = "考试及格人数")
+    private int passed;
+
+
+
+
+
+
+
+
+
+
+
+}

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

@@ -0,0 +1,33 @@
+package com.gyee.exam.modules.exam.dto.response;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value="职员考试统计响应类", description="职员考试统计响应类")
+public class examUserTotalDTO {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "部门名称")
+    private String deptName;
+
+    @ApiModelProperty(value = "部门code")
+    private String deptCode;
+
+    @ApiModelProperty(value = "职员名称")
+    private String realName;
+
+    @ApiModelProperty(value = "职员code")
+    private String userName;
+
+    @ApiModelProperty(value = "考试次数")
+    private int tryCount;
+
+    @ApiModelProperty(value = "及格次数")
+    private int passed;
+
+
+}

+ 12 - 3
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/mapper/ExamMapper.java

@@ -4,10 +4,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gyee.boot.base.api.api.dto.BaseQueryReqDTO;
+import com.gyee.boot.base.api.api.dto.BaseUserQueryReqDTO;
 import com.gyee.exam.modules.exam.dto.ExamDTO;
-import com.gyee.exam.modules.exam.dto.response.ExamDepartTotalDTO;
-import com.gyee.exam.modules.exam.dto.response.ExamReviewRespDTO;
-import com.gyee.exam.modules.exam.dto.response.ExamOnlineRespDTO;
+import com.gyee.exam.modules.exam.dto.response.*;
 import com.gyee.exam.modules.exam.entity.Exam;
 import org.apache.ibatis.annotations.Param;
 
@@ -54,4 +53,14 @@ public interface ExamMapper extends BaseMapper<Exam> {
      * @return
      */
     List<ExamDepartTotalDTO> examDepartTotal(@Param("query") BaseQueryReqDTO reqDTO);
+
+
+    List<ExamDepartidTotalDTO> selectExamDepartidTotal(@Param("query") BaseQueryReqDTO reqDTO);
+
+    /**
+     * 职员考试统计
+     * @param reqDTO
+     * @return
+     */
+    List<examUserTotalDTO> selectExamUserTotal(@Param("query")  BaseUserQueryReqDTO reqDTO);
 }

+ 13 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/service/ExamService.java

@@ -3,6 +3,7 @@ package com.gyee.exam.modules.exam.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.gyee.boot.base.api.api.dto.BaseQueryReqDTO;
+import com.gyee.boot.base.api.api.dto.BaseUserQueryReqDTO;
 import com.gyee.boot.base.api.api.dto.PagingReqDTO;
 import com.gyee.exam.modules.exam.dto.ExamDTO;
 import com.gyee.exam.modules.exam.dto.request.ExamReqDTO;
@@ -107,4 +108,16 @@ public interface ExamService extends IService<Exam> {
     List<ExamDepartTotalDTO> examDepartTotal(BaseQueryReqDTO reqDTO);
 
 
+    List<ExamDepartidTotalDTO> examDepartidTotal(BaseQueryReqDTO reqDTO);
+
+
+    /**
+     * 职员考试统计
+     * @param reqDTO
+     * @return
+     */
+    List<examUserTotalDTO>  getExamUserTotal(BaseUserQueryReqDTO reqDTO);
+
+
+
 }

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gyee.boot.base.api.api.dto.BaseQueryReqDTO;
+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;
@@ -239,5 +240,21 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements Ex
         return dtos;
     }
 
+    @Override
+    public List<ExamDepartidTotalDTO> examDepartidTotal(BaseQueryReqDTO reqDTO) {
+
+        List<ExamDepartidTotalDTO> dtos = baseMapper.selectExamDepartidTotal(reqDTO);
+
+        return dtos;
+    }
+
+    @Override
+    public List<examUserTotalDTO> getExamUserTotal(BaseUserQueryReqDTO reqDTO) {
+
+        List<examUserTotalDTO> dtoList = baseMapper.selectExamUserTotal(reqDTO);
+        return dtoList;
+
+    }
+
 
 }

+ 4 - 4
exam-06173-api/src/main/resources/application-dev.yml

@@ -5,9 +5,9 @@ spring:
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: com.mysql.cj.jdbc.Driver
     #国电考培服务器
-    url: jdbc:mysql://10.155.32.18:3306/yf_exam?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
+    #url: jdbc:mysql://10.155.32.18:3306/yf_exam?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
     #华为云
-    #url: jdbc:mysql://123.60.213.70:3306/yf_exam?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
+    url: jdbc:mysql://123.60.213.70:3306/yf_exam?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
     username: root
     password: 123456
     filters: stat
@@ -28,9 +28,9 @@ spring:
   redis:
     database: 0
     #国电考培服务器
-    host: 10.155.32.18
+    #host: 10.155.32.18
     #华为云
-    #host: 123.60.213.70
+    host: 123.60.213.70
     port: 6379
     password: gdnxfd123
     timeout: 5000

+ 97 - 0
exam-06173-api/src/main/resources/application-uat.yml

@@ -0,0 +1,97 @@
+spring:
+#  123.60.213.70
+  # 数据库配置
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    #国电考培服务器
+    url: jdbc:mysql://10.155.32.18:3306/yf_exam?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
+    username: root
+    password: 123456
+    filters: stat
+    max-active: 5000
+    initial-size: 20
+    max-wait: 6000
+    min-idle: 1
+    time-between-eviction-runs-millis: 60000
+    min-evictable-idle-time-millis: 300000
+    test-while-idle: true
+    test-on-borrow: false
+    test-on-return: false
+    pool-prepared-statements: true
+    max-open-prepared-statements: 1000
+    async-init: true
+
+  # Redis配置
+  redis:
+    database: 0
+    #国电考培服务器
+    host: 10.155.32.18
+    port: 6379
+    password: gdnxfd123
+    timeout: 5000
+
+  # 定时任务配置
+  quartz:
+    #数据库方式
+    job-store-type: jdbc
+    # quartz 相关属性配置
+    properties:
+      org:
+        quartz:
+          scheduler:
+            instanceName: examScheduler
+            instanceId: AUTO
+          jobStore:
+            class: org.quartz.impl.jdbcjobstore.JobStoreTX
+            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
+            tablePrefix: qrtz_
+            isClustered: true
+            clusterCheckinInterval: 10000
+            useProperties: false
+          threadPool:
+            class: org.quartz.simpl.SimpleThreadPool
+            threadCount: 10
+            threadPriority: 5
+            threadsInheritContextClassLoaderOfInitializingThread: true
+
+
+# 文档转换
+jodconverter:
+  local:
+    enabled: true
+    office-home: C:\Program Files\LibreOffice
+    max-tasks-per-process: 10
+    port-numbers: 8100
+
+# 基础配置
+ycloud:
+  # 运行模式,ture为演示/false为正式
+  demo: false
+  # false允许用户多处登录,true为T下线
+  login-tick: false
+  # 微信登录成功以后,将token推送到这个链接同步登录
+  login-sync-pc: https://exam.yfhl.net/#/sync/{token}/{roleType}
+  # 微信登录成功以后,将token推送到这个链接同步登录
+  login-sync-h5: https://exam-m.yfhl.net/#/pages/login/sync?token={token}
+  # 微信获取code以后回调此URL
+  login-redirect: https://exam.yfhl.net/api/common/wx/redirect
+
+# 微信相关配置
+wechat:
+  login:
+    # 小程序登录appId
+    mp-app-id:
+    mp-app-secret:
+    # 网站登录appId
+    site-app-id:
+    site-app-secret:
+
+# 开启文档
+swagger:
+  enable: true
+
+logging:
+  level:
+    root: info
+  path: logs/${spring.application.name}/

+ 83 - 0
exam-06173-api/src/main/resources/mapper/course/CourseFileLearnMapper.xml

@@ -88,4 +88,87 @@
 
     </select>
 
+
+    <select id="selectCourseUserTotalMin"
+            resultType="com.gyee.exam.modules.course.dto.response.CourseUserTotalDTO">
+
+					SELECT
+					sd.dept_name deptName,
+					sd.dept_code deptCode,
+					su.user_name userName,
+					su.real_name realName,
+					IFNULL(SUM(fl.learn_min),0) totalMin
+					FROM el_course_learn cl
+					INNER JOIN el_course ec ON cl.course_id = ec.id
+					INNER JOIN sys_user su ON su.id = cl.user_id
+					INNER JOIN sys_depart sd on sd.dept_code = su.dept_code
+					LEFT JOIN el_course_file_learn fl on fl.user_id = su.id
+					<where>
+
+                        <if test="query!=null">
+
+                            <if test="query.statDateL!=null ">
+                                AND ec.create_time >= #{query.statDateL}
+                            </if>
+
+                            <if test="query.statDateR!=null ">
+                                AND ec.create_time &lt; #{query.statDateR}
+                            </if>
+
+                            <if test="query.deptName!=null and query.deptName!=''">
+                                AND sd.dept_name LIKE '%${query.deptName}%'
+                            </if>
+
+                            <if test="query.deptCode!=null and query.deptCode!=''">
+                                AND sd.dept_code = #{query.deptCode}
+                            </if>
+
+                            <if test="query.realName!=null and query.realName!=''">
+                                AND su.real_name LIKE '%${query.realName}%'
+                            </if>
+
+                            <if test="query.userName!=null and query.userName!=''">
+                                AND su.user_name, = #{query.userName}
+                            </if>
+
+                        </if>
+
+                    </where>
+					group by cl.user_id
+
+
+    </select>
+    <select id="selectCourseUserIdTotalMin"
+            resultType="com.gyee.exam.modules.course.dto.response.CourseUserIdTotalDTO">
+
+        		    select
+					ec.id,
+					ec.title,
+					SUM(fl.learn_min) learn_min
+					from  el_course ec
+					LEFT JOIN el_course_file_learn fl ON  fl.course_id = ec.id
+					LEFT JOIN sys_user su ON su.id = fl.user_id
+					<where>
+
+                        <if test="query!=null">
+
+                            <if test="query.statDateL!=null ">
+                                AND ec.create_time >= #{query.statDateL}
+                            </if>
+
+                            <if test="query.statDateR!=null ">
+                                AND ec.create_time &lt; #{query.statDateR}
+                            </if>
+
+                            <if test="query.userName!=null and query.userName!=''">
+                                AND su.user_name = #{query.userName}
+                            </if>
+
+                        </if>
+
+                    </where>
+					GROUP BY ec.id
+
+    </select>
+
 </mapper>

+ 90 - 0
exam-06173-api/src/main/resources/mapper/course/CourseMapper.xml

@@ -281,4 +281,94 @@
     </select>
 
 
+    <select id="selectCourseUserTotal"
+            resultType="com.gyee.exam.modules.course.dto.response.CourseUserTotalDTO">
+
+				SELECT
+					sd.dept_name deptName,
+					sd.dept_code deptCode,
+					su.user_name userName,
+					su.real_name realName,
+					COUNT(cl.id) courseNum,
+					SUM(IF( cl.state = 1 ,1, 0))  learnCourse
+					FROM el_course_learn cl
+					INNER JOIN el_course ec ON cl.course_id = ec.id
+					INNER JOIN sys_user su ON su.id = cl.user_id
+					INNER JOIN sys_depart sd on sd.dept_code = su.dept_code
+					<where>
+
+                        <if test="query!=null">
+
+                            <if test="query.statDateL!=null ">
+                                AND ec.create_time >= #{query.statDateL}
+                            </if>
+
+                            <if test="query.statDateR!=null ">
+                                AND ec.create_time &lt; #{query.statDateR}
+                            </if>
+
+                            <if test="query.deptName!=null and query.deptName!=''">
+                                AND sd.dept_name LIKE '%${query.deptName}%'
+                            </if>
+
+                            <if test="query.deptCode!=null and query.deptCode!=''">
+                                AND sd.dept_code = #{query.deptCode}
+                            </if>
+
+                            <if test="query.realName!=null and query.realName!=''">
+                                AND su.real_name LIKE '%${query.realName}%'
+                            </if>
+
+                            <if test="query.userName!=null and query.userName!=''">
+                                AND su.user_name, = #{query.userName}
+                            </if>
+
+                        </if>
+
+                    </where>
+
+					group by cl.user_id ORDER BY learnCourse desc
+
+    </select>
+
+
+    <select id="selectCourseUserIdTotal"
+            resultType="com.gyee.exam.modules.course.dto.response.CourseUserIdTotalDTO">
+
+					select
+					ec.id,
+					ec.title,
+					(CASE WHEN SUM(IF( cl.state = 1 ,1, 0))>=count(rf.id) THEN 1 ELSE 0 END) AS state,
+					SUM(ec.periods) periods,
+					SUM(rf.need_learn) needLearn
+
+					from  el_course ec
+					INNER JOIN el_course_ref_file rf ON rf.course_id = ec.id
+					LEFT JOIN el_course_learn  cl  ON cl.course_id = ec.id
+					LEFT JOIN sys_user su ON su.id = cl.user_id
+					<where>
+
+                        <if test="query!=null">
+
+                            <if test="query.statDateL!=null ">
+                                AND ec.create_time >= #{query.statDateL}
+                            </if>
+
+                            <if test="query.statDateR!=null ">
+                                AND ec.create_time &lt; #{query.statDateR}
+                            </if>
+
+                            <if test="query.userName!=null and query.userName!=''">
+                                AND su.user_name = #{query.userName}
+                            </if>
+
+                        </if>
+                    </where>
+
+					GROUP BY ec.id
+
+
+    </select>
+
+
 </mapper>

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

@@ -235,4 +235,97 @@
 
     </select>
 
+    <select id="selectExamDepartidTotal"
+            resultType="com.gyee.exam.modules.exam.dto.response.ExamDepartidTotalDTO">
+                SELECT
+                    ee.id id,
+                    ee.title title,
+                    ee.start_time startTime,
+                    ee.end_time endTime,
+                    ee.total_score totalScore,
+                    ee.total_Time totalTime,
+                    MAX(ue.max_score) maxScore,
+                    MIN(ue.max_score) minScore,
+                    COUNT(uc.id) actualUser,
+                    SUM(IF( ue.passed = 1 ,1, 0)) passed
+                FROM el_exam ee
+                    LEFT JOIN el_exam_depart dept on ee.id = dept.exam_id
+                    LEFT JOIN sys_user uc ON dept.dept_code=uc.dept_code
+                    LEFT JOIN el_user_exam ue ON ue.user_id=uc.id AND ue.exam_id=dept.exam_id
+                    <where>
+
+                        <if test="query!=null">
+
+                            <if test="query.statDateL!=null ">
+                                AND ee.start_time >= #{query.statDateL}
+                            </if>
+
+                            <if test="query.statDateR!=null ">
+                                AND ee.end_time &lt; #{query.statDateR}
+                            </if>
+
+                            <if test="query.q!=null and query.q!=''">
+                                AND dept.dept_code = #{query.q}
+                            </if>
+
+                        </if>
+                    </where>
+
+                    GROUP BY ee.id
+
+    </select>
+
+
+    <select id="selectExamUserTotal" resultType="com.gyee.exam.modules.exam.dto.response.examUserTotalDTO">
+				SELECT
+					sd.dept_name,
+					sd.dept_code,
+					su.user_name,
+					su.real_name,
+					COUNT(ue.id) try_count,
+					SUM(IF( ue.passed = 1 ,1, 0)) passed
+
+				FROM el_user_exam ue
+				INNER JOIN el_exam ee ON ue.exam_id = ee.id
+				INNER JOIN sys_user su on su.id = ue.user_id
+				INNER JOIN sys_depart sd on sd.dept_code = su.dept_code
+
+				<where>
+
+                    <if test="query!=null">
+
+                        <if test="query.statDateL!=null ">
+                            AND ee.start_time >= #{query.statDateL}
+                        </if>
+
+                        <if test="query.statDateR!=null ">
+                            AND ee.end_time &lt; #{query.statDateR}
+                        </if>
+
+                        <if test="query.deptName!=null and query.deptName!=''">
+                            AND sd.dept_name LIKE '%${query.deptName}%'
+                        </if>
+
+                        <if test="query.deptCode!=null and query.deptCode!=''">
+                            AND sd.dept_code = #{query.deptCode}
+                        </if>
+
+                        <if test="query.realName!=null and query.realName!=''">
+                            AND su.real_name LIKE '%${query.realName}%'
+                        </if>
+
+                        <if test="query.userName!=null and query.userName!=''">
+                            AND su.user_name, = #{query.userName}
+                        </if>
+
+                    </if>
+
+                </where>
+
+				group by ue.user_id ORDER BY  passed desc
+
+
+
+    </select>
+
 </mapper>