Browse Source

考培档案考试合格率统计bug修复
上传文件名问题

gfhd 2 years ago
parent
commit
cc7e7312f3

+ 1 - 1
exam-06173-api/src/main/java/com/gyee/exam/ability/upload/provides/local/utils/OssUtils.java

@@ -52,7 +52,7 @@ public class OssUtils {
         String fileName = file.getOriginalFilename();
 
         // 需要重命名
-        fileName = OssUtils.renameFile(fileName);
+        //fileName = OssUtils.renameFile(fileName);
 
         //获得上传的文件夹
         String dir = DateUtils.formatDate(new Date(), "yyyy/MM/dd/");

+ 2 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/mapper/ExamMapper.java

@@ -53,6 +53,8 @@ public interface ExamMapper extends BaseMapper<Exam> {
      * @return
      */
     List<ExamDepartTotalDTO> examDepartTotal(@Param("query") BaseQueryReqDTO reqDTO);
+    //不破毁逻辑的情况下,正确统计eePassUser
+    List<ExamDepartTotalDTO> examDepartTotal2(@Param("query") BaseQueryReqDTO reqDTO);
 
     /**
      * 部门考试统计

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

@@ -272,12 +272,14 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements Ex
 
         List<ExamDepartTotalDTO> allList = new ArrayList<>();
         List<ExamDepartTotalDTO> examList = baseMapper.examDepartTotal(reqDTO);
+        List<ExamDepartTotalDTO> examList2 = baseMapper.examDepartTotal2(reqDTO);
         List<ExamDepartTotalDTO> userList = baseMapper.selectUserTotal(reqDTO);
         List<String> exams = examList.stream().map(ExamDepartTotalDTO::getDeptCode).collect(Collectors.toList());
         List<String> users = userList.stream().map(ExamDepartTotalDTO::getDeptCode).collect(Collectors.toList());
         ExamDepartTotalDTO totalDTO = null;
         Map<String, List<ExamDepartTotalDTO>> groupexam = examList.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
         Map<String, List<ExamDepartTotalDTO>> groupuser = userList.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
+        Map<String, List<ExamDepartTotalDTO>> groupexam2 = examList2.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
 
         // 差集 (list1 - list2)
         List<String> reduce = exams.stream().filter(item -> !users.contains(item)).collect(Collectors.toList());
@@ -290,7 +292,7 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements Ex
             totalDTO.setDeptCode(groupexam.get(key).get(0).getDeptCode());
             totalDTO.setDeptName(groupexam.get(key).get(0).getDeptName());
             totalDTO.setEeActualUser(groupexam.get(key).get(0).getEeActualUser()+groupuser.get(key).get(0).getEeActualUser());
-            totalDTO.setEePassUser(groupexam.get(key).get(0).getEePassUser()+groupuser.get(key).get(0).getEePassUser());
+            totalDTO.setEePassUser(groupexam2.get(key).get(0).getEePassUser()+groupuser.get(key).get(0).getEePassUser());
             totalDTO.setEeTotalUser(groupexam.get(key).get(0).getEeTotalUser()+groupuser.get(key).get(0).getEeTotalUser());
             allList.add(totalDTO);
         }
@@ -299,13 +301,14 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements Ex
 
             List<ExamDepartTotalDTO> groupexams = groupexam.get(key)== null ? null : groupexam.get(key);
             List<ExamDepartTotalDTO> groupusers = groupuser.get(key) == null ? null : groupuser.get(key);
+            List<ExamDepartTotalDTO> groupexams2 = groupexam2.get(key)== null ? null : groupexam.get(key);
 
             totalDTO = new ExamDepartTotalDTO();
             totalDTO.setDeptCode(null != groupexams ? groupexams.get(0).getDeptCode() : groupusers.get(0).getDeptCode());
             totalDTO.setDeptName(null != groupexams ? groupexams.get(0).getDeptName() : groupusers.get(0).getDeptName());
             if (null != groupexams && groupexams.size() == 1){
                 totalDTO.setEeActualUser(groupexams.get(0).getEeActualUser());
-                totalDTO.setEePassUser(groupexams.get(0).getEePassUser());
+                totalDTO.setEePassUser(groupexams2.get(0).getEePassUser());
                 totalDTO.setEeTotalUser(groupexams.get(0).getEeTotalUser());
                 allList.add(totalDTO);
             }

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

@@ -232,6 +232,40 @@
 
     </select>
 
+    <select id="examDepartTotal2" resultType="com.gyee.exam.modules.exam.dto.response.ExamDepartTotalDTO">
+        SELECT
+        sd.dept_name deptName,
+        dept.dept_code deptCode,
+        COUNT(uc.id) AS eeTotalUser,
+        COUNT(DISTINCT ue.user_id) AS eeActualUser,
+        COUNT(DISTINCT ue.user_id) AS eePassUser
+        FROM el_exam ee
+        INNER JOIN el_exam_depart dept on ee.id = dept.exam_id
+        LEFT JOIN sys_depart sd on sd.dept_code = dept.dept_code
+        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>
+
+            and uc.id IS NOT NULL AND sd.data_flag != '1' AND ue.passed = 1
+            <if test="query!=null">
+
+                <if test="query.statDateL!=null and query.statDateR!=null">
+                    and ( ee.START_TIME >= #{query.statDateL} and  ee.START_TIME &lt;= #{query.statDateR})
+                    or  ( ee.START_TIME &lt;= #{query.statDateL} and  ee.end_time >= #{query.statDateR})
+                    or  ( ee.end_time >= #{query.statDateL} 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 dept.dept_code
+        ORDER BY eeActualUser desc ,eePassUser desc
+
+    </select>
 
     <select id="selectUserTotal" resultType="com.gyee.exam.modules.exam.dto.response.ExamDepartTotalDTO">