Browse Source

职员考试统计

wangchangsheng 2 years ago
parent
commit
fb6f6b169f

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

@@ -197,10 +197,10 @@ public class CourseController extends BaseController {
 
 
     /**
-     * 统计职员学习总时长(分钟)
+     * 职工培训课时排行榜(分钟)
      * @return
      */
-    @ApiOperation(value = "统计职员学习总时长(分钟)")
+    @ApiOperation(value = "职工培训课时排行榜(分钟)")
     @GetMapping("/course-user-rank")
     public ApiRest courseUserRank(@RequestBody BaseQueryReqDTO reqDTO) {
 

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

@@ -0,0 +1,51 @@
+package com.gyee.exam.modules.ectotal.controller;
+
+
+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.exam.modules.ectotal.dto.response.ExamAndCourseTotalDTO;
+import com.gyee.exam.modules.ectotal.service.ExamAndCourseTotalService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 考试培训统计控制类
+ * </p>
+ *
+ * @author 聪明笨狗
+ * @since 2020-12-17 11:28
+ */
+@Api(tags={"考试培训统计"})
+@RestController
+@RequestMapping("/api/total/ec")
+public class ExamAndCourseTotalController extends BaseController {
+
+
+
+    @Autowired
+    private ExamAndCourseTotalService baseService;
+
+    /**
+     * 全部门培训考试统计
+     * @return
+     */
+    @ApiOperation(value = "全部门培训考试统计")
+    @GetMapping("/ec-depart-total")
+    public ApiRest examAndCourseTotal(@RequestBody BaseQueryReqDTO reqDTO) {
+        List<ExamAndCourseTotalDTO> dtoList = baseService.examAndCourseTotal(reqDTO);
+        return super.success(dtoList);
+    }
+
+
+
+
+}

+ 47 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/ectotal/dto/response/ExamAndCourseTotalDTO.java

@@ -0,0 +1,47 @@
+package com.gyee.exam.modules.ectotal.dto.response;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value="部门考试培训统计", description="部门考试培训统计")
+public class ExamAndCourseTotalDTO {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "部门编码")
+    private String deptCode;
+
+    @ApiModelProperty(value = "部门名称")
+    private String deptName;
+
+    @ApiModelProperty(value = "培训总人次")
+    private Integer ecTotalUser;
+
+    @ApiModelProperty(value = "培训人数")
+    private Integer ecActualUser;
+
+    @ApiModelProperty(value = "已培训结束人数")
+    private Integer ecPassUser;
+
+    @ApiModelProperty(value = "培训时长")
+    private Integer ecTotalMin;
+
+    @ApiModelProperty(value = "考试总人次")
+    private Integer eeTotalUser;
+
+    @ApiModelProperty(value = "考试人次")
+    private Integer eeActualUser;
+
+    @ApiModelProperty(value = "已考试结束人数")
+    private Integer eePassUser;
+
+    public Integer getEcTotalMin() {
+        if (null == ecTotalMin)
+        {
+            ecTotalMin = 0;
+        }
+        return ecTotalMin;
+    }
+}

+ 80 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/ectotal/service/ExamAndCourseTotalService.java

@@ -0,0 +1,80 @@
+package com.gyee.exam.modules.ectotal.service;
+
+
+import com.gyee.boot.base.api.api.dto.BaseQueryReqDTO;
+import com.gyee.exam.modules.course.dto.response.CourseDepartTotalDTO;
+import com.gyee.exam.modules.course.service.CourseService;
+import com.gyee.exam.modules.ectotal.dto.response.ExamAndCourseTotalDTO;
+import com.gyee.exam.modules.exam.dto.response.ExamDepartTotalDTO;
+import com.gyee.exam.modules.exam.service.ExamService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class ExamAndCourseTotalService {
+
+
+    @Autowired
+    private CourseService courseService;
+
+    @Autowired
+    private ExamService examService;
+
+    public List<ExamAndCourseTotalDTO> examAndCourseTotal(BaseQueryReqDTO reqDTO) {
+
+        List<ExamAndCourseTotalDTO> totalDTOS = new ArrayList<>();
+        List<CourseDepartTotalDTO> coursedtos = courseService.courseDepartTotal(reqDTO);
+        List<ExamDepartTotalDTO> examdtos = examService.examDepartTotal(reqDTO);
+
+        ExamAndCourseTotalDTO totalDTO = null;
+        if (coursedtos.size() >= examdtos.size()) {
+            Map<String, List<ExamDepartTotalDTO>> groupexamdtos = examdtos.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
+            for (int i = 0; i < coursedtos.size(); i++) {
+                totalDTO = new ExamAndCourseTotalDTO();
+                totalDTO.setDeptCode(coursedtos.get(i).getDeptCode());
+                totalDTO.setDeptName(coursedtos.get(i).getDeptName());
+                totalDTO.setEcTotalUser(coursedtos.get(i).getEcTotalUser());
+                totalDTO.setEcActualUser(coursedtos.get(i).getEcActualUser());
+                totalDTO.setEcPassUser(coursedtos.get(i).getEcPassUser());
+                totalDTO.setEcTotalMin(coursedtos.get(i).getEcTotalMin());
+                List<ExamDepartTotalDTO> groupexams = groupexamdtos.get(coursedtos.get(i).getDeptCode()) == null ? null : groupexamdtos.get(coursedtos.get(i).getDeptCode());
+                if (null != groupexams && groupexams.size() == 1) {
+                    totalDTO.setEeTotalUser(groupexams.get(0).getEeTotalUser());
+                    totalDTO.setEeActualUser(groupexams.get(0).getEePassUser());
+                    totalDTO.setEePassUser(groupexams.get(0).getEePassUser());
+
+                }
+                totalDTOS.add(totalDTO);
+            }
+
+        } else {
+            Map<String, List<CourseDepartTotalDTO>> groupcoursedtos = coursedtos.stream().collect(Collectors.groupingBy(CourseDepartTotalDTO::getDeptCode));
+            for (int i = 0; i < examdtos.size(); i++) {
+                totalDTO = new ExamAndCourseTotalDTO();
+                totalDTO.setDeptCode(examdtos.get(i).getDeptCode());
+                totalDTO.setDeptName(examdtos.get(i).getDeptName());
+                totalDTO.setEeTotalUser(examdtos.get(i).getEeTotalUser());
+                totalDTO.setEeActualUser(examdtos.get(i).getEePassUser());
+                totalDTO.setEePassUser(examdtos.get(i).getEePassUser());
+                List<CourseDepartTotalDTO> groupcourses = groupcoursedtos.get(examdtos.get(i).getDeptCode()) == null ? null : groupcoursedtos.get(examdtos.get(i).getDeptCode());
+
+                if (null != groupcourses && groupcourses.size() == 1) {
+                    totalDTO.setEcTotalUser(groupcourses.get(0).getEcTotalUser());
+                    totalDTO.setEcActualUser(groupcourses.get(0).getEcActualUser());
+                    totalDTO.setEcPassUser(groupcourses.get(0).getEcPassUser());
+                    totalDTO.setEcTotalMin(groupcourses.get(0).getEcTotalMin());
+                }
+                totalDTOS.add(totalDTO);
+            }
+
+        }
+        return totalDTOS;
+    }
+
+
+}

+ 21 - 6
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/controller/ExamController.java

@@ -9,7 +9,6 @@ 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;
@@ -181,10 +180,10 @@ public class ExamController extends BaseController {
     }
 
     /**
-     * 部门考试及格率
+     * 部门考试及格率排行
      * @return
      */
-    @ApiOperation(value = "部门考试及格率")
+    @ApiOperation(value = "部门考试及格率排行")
     @GetMapping("/depart-passed-rate")
     public ApiRest departPassedRate(@RequestBody BaseQueryReqDTO reqDTO) {
 
@@ -194,10 +193,10 @@ public class ExamController extends BaseController {
 
 
     /**
-     * 各职员考试及格率
+     * 职工考试及格率排行榜
      * @return
      */
-    @ApiOperation(value = "用户考试及格率")
+    @ApiOperation(value = "职工考试及格率排行榜")
     @GetMapping("/user-passed-rate")
     public ApiRest userPassedRate(@RequestBody BaseQueryReqDTO reqDTO) {
 
@@ -251,12 +250,28 @@ public class ExamController extends BaseController {
     @GetMapping("/exam-user-total")
     public ApiRest examUserTotal(@RequestBody BaseUserQueryReqDTO reqDTO) {
 
-        List<examUserTotalDTO> dtoList = baseService.getExamUserTotal(reqDTO);
+        List<ExamUserTotalDTO> dtoList = baseService.getExamUserTotal(reqDTO);
         return super.success(dtoList);
 
     }
 
 
 
+    /**
+     * 单个职员考试统计
+     * @return
+     */
+    @ApiOperation(value = "单个职员考试统计")
+    @GetMapping("/exam-userid-total")
+    public ApiRest examUseridTotal(@RequestBody BaseUserQueryReqDTO reqDTO) {
+        if(null == reqDTO || StringUtils.isEmpty(reqDTO.getUserName().trim())){
+            return super.failure("请求职员名称参数为空");
+        }
+        List<ExamUseridTotalDTO> dtoList = baseService.getExamUseridTotal(reqDTO);
+        return super.success(dtoList);
+
+    }
+
+
 
 }

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

@@ -17,9 +17,9 @@ public class ExamUserPassedRateDTO {
     @ApiModelProperty(value = "真实名称")
     private String realName;
 
-    @ApiModelProperty(value = "参加考试总次")
+    @ApiModelProperty(value = "参加考试总次")
     private Integer total;
 
-    @ApiModelProperty(value = "参加考试通过人数")
+    @ApiModelProperty(value = "参加考试通数")
     private double passed;
 }

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

@@ -7,7 +7,7 @@ import lombok.Data;
 
 @Data
 @ApiModel(value="职员考试统计响应类", description="职员考试统计响应类")
-public class examUserTotalDTO {
+public class ExamUserTotalDTO {
 
     private static final long serialVersionUID = 1L;
 

+ 33 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/dto/response/ExamUseridTotalDTO.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 ExamUseridTotalDTO {
+
+
+    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 score;
+
+    @ApiModelProperty(value = "是否关联课程")
+    private String associate;
+
+}

+ 9 - 1
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/mapper/ExamMapper.java

@@ -62,5 +62,13 @@ public interface ExamMapper extends BaseMapper<Exam> {
      * @param reqDTO
      * @return
      */
-    List<examUserTotalDTO> selectExamUserTotal(@Param("query")  BaseUserQueryReqDTO reqDTO);
+    List<ExamUserTotalDTO> selectExamUserTotal(@Param("query") BaseUserQueryReqDTO reqDTO);
+
+
+    /**
+     * 单个职员考试统计
+     * @param baseUserQueryReqDTO
+     * @return
+     */
+    List<ExamUseridTotalDTO> selectExamUseridTotal(@Param("query") BaseUserQueryReqDTO baseUserQueryReqDTO);
 }

+ 9 - 1
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/service/ExamService.java

@@ -116,7 +116,15 @@ public interface ExamService extends IService<Exam> {
      * @param reqDTO
      * @return
      */
-    List<examUserTotalDTO>  getExamUserTotal(BaseUserQueryReqDTO reqDTO);
+    List<ExamUserTotalDTO>  getExamUserTotal(BaseUserQueryReqDTO reqDTO);
+
+
+    /**
+     * 单个职员考试统计
+     * @param baseUserQueryReqDTO
+     * @return
+     */
+    List<ExamUseridTotalDTO>   getExamUseridTotal(BaseUserQueryReqDTO baseUserQueryReqDTO);
 
 
 

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

@@ -249,9 +249,17 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements Ex
     }
 
     @Override
-    public List<examUserTotalDTO> getExamUserTotal(BaseUserQueryReqDTO reqDTO) {
+    public List<ExamUserTotalDTO> getExamUserTotal(BaseUserQueryReqDTO reqDTO) {
 
-        List<examUserTotalDTO> dtoList = baseMapper.selectExamUserTotal(reqDTO);
+        List<ExamUserTotalDTO> dtoList = baseMapper.selectExamUserTotal(reqDTO);
+        return dtoList;
+
+    }
+
+    @Override
+    public List<ExamUseridTotalDTO> getExamUseridTotal(BaseUserQueryReqDTO reqDTO) {
+
+        List<ExamUseridTotalDTO>  dtoList =  baseMapper.selectExamUseridTotal(reqDTO);
         return dtoList;
 
     }

+ 4 - 1
exam-06173-api/src/main/resources/mapper/course/CourseMapper.xml

@@ -340,7 +340,10 @@
 					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
+					SUM(rf.need_learn) needLearn,
+                    ec.create_time createTime
+
+
 
 					from  el_course ec
 					INNER JOIN el_course_ref_file rf ON rf.course_id = ec.id

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

@@ -276,7 +276,7 @@
     </select>
 
 
-    <select id="selectExamUserTotal" resultType="com.gyee.exam.modules.exam.dto.response.examUserTotalDTO">
+    <select id="selectExamUserTotal" resultType="com.gyee.exam.modules.exam.dto.response.ExamUserTotalDTO">
 				SELECT
 					sd.dept_name,
 					sd.dept_code,
@@ -315,7 +315,7 @@
                         </if>
 
                         <if test="query.userName!=null and query.userName!=''">
-                            AND su.user_name, = #{query.userName}
+                            AND su.user_name = #{query.userName}
                         </if>
 
                     </if>
@@ -328,4 +328,44 @@
 
     </select>
 
+
+    <select id="selectExamUseridTotal" resultType="com.gyee.exam.modules.exam.dto.response.ExamUseridTotalDTO">
+				SELECT
+					ec.id id,
+				    ec.title title,
+					ep.create_time startTime,
+					ep.limit_time endTime,
+					ep.user_score score
+				FROM
+					el_exam ec
+					INNER JOIN el_user_exam ue ON ec.id = ue.exam_id
+					LEFT JOIN el_paper ep ON ep.user_id = ue.user_id  AND ec.id = ep.exam_id
+					INNER JOIN sys_user su ON su.id = ue.user_id
+                <where>
+
+                    <if test="query!=null">
+
+                        <if test="query.statDateL!=null ">
+                            AND ep.create_time >= #{query.statDateL}
+                        </if>
+
+                        <if test="query.statDateR!=null ">
+                            AND ep.limit_time &lt; #{query.statDateR}
+                        </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>
+
+
+    </select>
+
 </mapper>