Prechádzať zdrojové kódy

代码优化+题库去重

wangchangsheng 2 rokov pred
rodič
commit
72229f978b

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

@@ -50,7 +50,7 @@ public class ExamAndCourseTotalService {
                 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.setEeActualUser(groupexams.get(0).getEeActualUser());
                     totalDTO.setEePassUser(groupexams.get(0).getEePassUser());
 
                 }

+ 8 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/qu/service/QuService.java

@@ -169,4 +169,12 @@ public interface QuService extends IService<Qu> {
      */
     int titleTotal();
 
+
+    /**
+     * 根据题干查找
+     * @param content
+     * @return
+     */
+    List<Qu> listByContent(String content,String type);
+
 }

+ 28 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/qu/service/impl/QuServiceImpl.java

@@ -143,6 +143,21 @@ public class QuServiceImpl extends ServiceImpl<QuMapper, Qu> implements QuServic
 
         Qu qu = new Qu();
         BeanMapper.copy(reqDTO, qu);
+        //剔除题目中的空格
+        String content = qu.getContent().replaceAll(" ","").replace("&nbsp;","");
+        qu.setContent(content);
+        //查找题库中相同题干的题目
+        List<Qu> quList =  this.listByContent(qu.getContent(),qu.getQuType());
+        //更新题目时;查找出来相同题干的题目 id
+        if(null !=qu && null != qu.getId() && null!=quList && quList.size()>0){
+            if(!qu.getId().equals(quList.get(0).getId())){
+                throw new ServiceException("此题目题库中已存在!");
+            }
+        }
+        if(null !=qu && null == qu.getId() && null!=quList && quList.size()>0){
+            throw new ServiceException("此题目题库中已存在!");
+        }
+
 
         // 更新
         this.saveOrUpdate(qu);
@@ -481,4 +496,17 @@ public class QuServiceImpl extends ServiceImpl<QuMapper, Qu> implements QuServic
         int count = baseMapper.titleTotal();
         return count;
     }
+
+    @Override
+    public List<Qu> listByContent(String content,String type) {
+        QueryWrapper<Qu> wrapper = new QueryWrapper<>();
+        wrapper.lambda()
+                .select(Qu::getId, Qu::getContent)
+                .eq(Qu::getContent, content)
+                .eq(Qu::getQuType,type);
+
+        return this.list(wrapper);
+    }
+
+
 }

+ 1 - 2
exam-06173-api/src/main/java/com/gyee/exam/modules/user/exam/service/impl/UserExamServiceImpl.java

@@ -76,7 +76,6 @@ public class UserExamServiceImpl extends ServiceImpl<UserExamMapper, UserExam> i
 
     @Override
     public void joinResult(boolean review, String userId, String examId, BigDecimal score, boolean passed) {
-
         //查询条件
         QueryWrapper<UserExam> wrapper = new QueryWrapper<>();
         wrapper.lambda().eq(UserExam::getUserId, userId)
@@ -99,8 +98,8 @@ public class UserExamServiceImpl extends ServiceImpl<UserExamMapper, UserExam> i
 
             if ( DecimalUtils.lt(record.getMaxScore(), score)) {
                 record.setMaxScore(score);
-                record.setPassed(passed);
             }
+            record.setPassed(passed);
             this.updateById(record);
         }
 

+ 3 - 2
exam-06173-api/src/main/resources/mapper/course/CourseDepartMapper.xml

@@ -22,11 +22,12 @@
         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
-        LEFT JOIN el_course ec on ec.id = dept.course_id
+        INNER JOIN el_course ec on ec.id = dept.course_id
+        LEFT JOIN sys_depart sd on sd.dept_code = dept.dept_code
 
         <where>
 
-            uc.id IS NOT NULL
+            uc.id IS NOT NULL  AND  sd.data_flag != '1'
             <if test="query!=null">
 
                 <if test="query.statDateL!=null ">

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

@@ -102,7 +102,7 @@
 					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
+					LEFT JOIN el_course_file_learn fl on fl.user_id = su.id and cl.course_id = fl.course_id
 					<where>
 
                         <if test="query!=null">

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

@@ -185,6 +185,8 @@
         LEFT JOIN el_course ec on ec.id = cd.course_id
 
         <where>
+            AND sd.data_flag != '1'
+
             <if test="query!=null">
 
                 <if test="query.statDateL!=null ">
@@ -220,7 +222,7 @@
         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>
-            AND uc.id IS NOT NULL
+            AND uc.id IS NOT NULL AND sd.data_flag != '1'
             <if test="query!=null">
 
                 <if test="query.statDateL!=null ">
@@ -297,6 +299,8 @@
 					INNER JOIN sys_depart sd on sd.dept_code = su.dept_code
 					<where>
 
+                        AND sd.data_flag != '1'
+
                         <if test="query!=null">
 
                             <if test="query.statDateL!=null ">

+ 17 - 16
exam-06173-api/src/main/resources/mapper/exam/ExamDepartMapper.xml

@@ -23,18 +23,19 @@
         LEFT JOIN sys_user uc ON dept.dept_code=uc.dept_code
         LEFT JOIN sys_depart sd on dept.dept_code = sd.dept_code
         LEFT JOIN el_exam ee on ee.id = dept.exam_id
+        LEFT JOIN el_paper ep on ep.exam_id = ee.id and ep.user_id = uc.id
         <where>
 
-            and uc.id IS NOT NULL
+            and uc.id IS NOT NULL AND sd.data_flag != '1'
 
             <if test="query!=null">
 
                 <if test="query.statDateL!=null ">
-                    AND ee.start_time >= #{query.statDateL}
+                    AND ep.create_time >= #{query.statDateL}
                 </if>
 
                 <if test="query.statDateR!=null ">
-                    AND ee.end_time &lt; #{query.statDateR}
+                    AND ep.limit_time &lt; #{query.statDateR}
                 </if>
 
                 <if test="query.q!=null and query.q!=''">
@@ -58,32 +59,32 @@
         LEFT JOIN sys_user uc ON dept.dept_code=uc.dept_code
         LEFT JOIN sys_depart sd on dept.dept_code = sd.dept_code
         LEFT JOIN el_exam ee on ee.id = dept.exam_id
+        LEFT JOIN el_paper ep on ep.exam_id = ee.id and ep.user_id = uc.id
         <where>
-            uc.id IS NOT NULL
+            AND uc.id IS NOT NULL AND sd.data_flag != '1'
 
-        </where>
+            <if test="query!=null">
 
-        <if test="query!=null">
+                <if test="query.statDateL!=null ">
+                    AND ep.create_time >= #{query.statDateL}
+                </if>
 
-            <if test="query.statDateL!=null ">
-                AND ee.start_time >=    #{query.statDateL}
-            </if>
+                <if test="query.statDateR!=null ">
+                    AND ep.limit_time &lt; #{query.statDateR}
+                </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 test="query.q!=null and query.q!=''">
-                AND dept.dept_code = #{query.q}
             </if>
 
-        </if>
+        </where>
 
         GROUP BY uc.user_name,uc.real_name
         order by passed desc
         LIMIT 20
 
-
     </select>
 
 </mapper>

+ 48 - 46
exam-06173-api/src/main/resources/mapper/exam/ExamMapper.xml

@@ -211,7 +211,7 @@
         LEFT JOIN el_user_exam ue ON ue.user_id=uc.id AND ue.exam_id=dept.exam_id
         <where>
 
-            uc.id IS NOT NULL
+            and uc.id IS NOT NULL AND sd.data_flag != '1'
             <if test="query!=null">
 
                 <if test="query.statDateL!=null ">
@@ -228,7 +228,6 @@
 
             </if>
 
-
         </where>
         GROUP BY dept.dept_code
         ORDER BY eeActualUser desc ,eePassUser desc
@@ -238,69 +237,71 @@
     <select id="selectExamDepartidTotal"
             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,
-                    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
+                ee.id id,
+                ee.tmpl_id tmplId,
+                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">
+                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
+                LEFT JOIN el_paper ep ON ep.exam_id = ee.id and ep.user_id = uc.id
+               <where>
 
-                            <if test="query.statDateL!=null ">
-                                AND ee.start_time >= #{query.statDateL}
-                            </if>
+                    <if test="query!=null">
 
-                            <if test="query.statDateR!=null ">
-                                AND ee.end_time &lt; #{query.statDateR}
-                            </if>
+                        <if test="query.statDateL!=null ">
+                            AND ep.create_time >=  #{query.statDateL}
+                        </if>
 
-                            <if test="query.q!=null and query.q!=''">
-                                AND dept.dept_code = #{query.q}
-                            </if>
+                        <if test="query.statDateR!=null ">
+                            AND ep.limit_time &lt; #{query.statDateR}
+                        </if>
 
+                        <if test="query.q!=null and query.q!=''">
+                            AND dept.dept_code = #{query.q}
                         </if>
-                    </where>
 
-                    GROUP BY ee.id
+                    </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
+        SELECT
+        sd.dept_name deptName,
+        sd.dept_code deptCode,
+        su.user_name userName,
+        su.real_name realName,
+        COUNT(ue.id) tryCount,
+        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
+        LEFT JOIN el_paper ep on ep.exam_id = ee.id and ep.user_id = su.id
+        <where>
 
-				<where>
+                    AND sd.data_flag != '1'
 
                     <if test="query!=null">
 
                         <if test="query.statDateL!=null ">
-                            AND ee.start_time >= #{query.statDateL}
+                            AND ep.create_time >= #{query.statDateL}
                         </if>
 
                         <if test="query.statDateR!=null ">
-                            AND ee.end_time &lt; #{query.statDateR}
+                            AND ep.limit_time &lt; #{query.statDateR}
                         </if>
 
                         <if test="query.deptName!=null and query.deptName!=''">
@@ -323,7 +324,8 @@
 
                 </where>
 
-				group by ue.user_id ORDER BY  passed desc
+				group by ue.user_id
+				ORDER BY  passed desc