소스 검색

成绩查询

Administrator 1 년 전
부모
커밋
e325f60f91

+ 7 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/score/ScoreDataMapper.java

@@ -21,6 +21,13 @@ public interface ScoreDataMapper
      */
      */
     public ScoreData selectScoreDataByScoreId(Long scoreId);
     public ScoreData selectScoreDataByScoreId(Long scoreId);
 
 
+    /**
+     * 家长查看详情只返回自己孩子成绩
+     * @param scoreData
+     * @return
+     */
+    public ScoreData selectScoreDataForParents(ScoreData scoreData);
+
     /**
     /**
      * 查询成绩排名
      * 查询成绩排名
      * @param scoreClassId
      * @param scoreClassId

+ 42 - 18
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/score/ScoreDataServiceImpl.java

@@ -7,6 +7,7 @@ import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.core.domain.entity.FormalParentsStudent;
 import com.ruoyi.common.core.domain.entity.FormalParentsStudent;
 import com.ruoyi.common.core.domain.entity.FormalTeacherClass;
 import com.ruoyi.common.core.domain.entity.FormalTeacherClass;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.SecurityUtils;
@@ -60,17 +61,38 @@ public class ScoreDataServiceImpl implements IScoreDataService {
         if (params != null && params.size() > 0) {
         if (params != null && params.size() > 0) {
             role = (String) params.get("role");
             role = (String) params.get("role");
         }
         }
+        StringBuilder stdId = new StringBuilder("0,");
         if ("parents".equals(role)) {
         if ("parents".equals(role)) {
             Long userId = SecurityUtils.getLoginUser().getUserId();
             Long userId = SecurityUtils.getLoginUser().getUserId();
-            //如果是家长要记录到redis中
-            redisCache.setCacheObject(SCORE_PEOPLE_CHAKAN + scoreId+":"+userId, userId);
+            //获取该家长的孩子id
+            LoginUser user = SecurityUtils.getLoginUser();
+            FormalParentsStudent formalParentsStudent = new FormalParentsStudent();
+            formalParentsStudent.setParentsId(user.getUserId());
+            List<FormalParentsStudent> formalParentsStudents = formalParentsStudentMapper.selectFormalParentsStudentList(formalParentsStudent);
+            for (FormalParentsStudent parentsStudent : formalParentsStudents) {
+                stdId.append(parentsStudent.getId()).append(",");
+            }
+            if (StringUtils.isNotBlank(stdId.toString())) {
+                stdId = new StringBuilder(stdId.substring(0, stdId.length() - 1));
+            }
+
+            Map<String,Object> map = new HashMap<>();
+            map.put("stdId",stdId.toString());
+            scoreData.setParams(map);
             //获取查看人数
             //获取查看人数
-            String chaKanCount = redisCache.getCacheObject(SCORE_PEOPLE_CHAKAN_COUNT + scoreId);
-            if (ObjectUtils.isEmpty(chaKanCount)){
-                redisCache.setCacheObject(SCORE_PEOPLE_CHAKAN_COUNT + scoreId,1);
-            }else {
-                redisCache.setCacheObject(SCORE_PEOPLE_CHAKAN_COUNT + scoreId,Integer.parseInt(chaKanCount)+1);
+            Object chaKanCount = redisCache.getCacheObject(SCORE_PEOPLE_CHAKAN_COUNT + scoreId);
+            if (ObjectUtils.isEmpty(chaKanCount)) {
+                redisCache.setCacheObject(SCORE_PEOPLE_CHAKAN_COUNT + scoreId, 1);
+            } else {
+                //判断该家长是否查看过
+                Object cacheObject = redisCache.getCacheObject(SCORE_PEOPLE_CHAKAN + scoreId + ":" + userId);
+                if (ObjectUtils.isEmpty(cacheObject)) {
+                    redisCache.setCacheObject(SCORE_PEOPLE_CHAKAN_COUNT + scoreId, Integer.parseInt(String.valueOf(chaKanCount)) + 1);
+                }
             }
             }
+            //如果是家长要记录到redis中
+            redisCache.setCacheObject(SCORE_PEOPLE_CHAKAN + scoreId + ":" + userId, userId);
+            return scoreDataMapper.selectScoreDataForParents(scoreData);
         }
         }
         return scoreDataMapper.selectScoreDataByScoreId(scoreId);
         return scoreDataMapper.selectScoreDataByScoreId(scoreId);
     }
     }
@@ -131,19 +153,21 @@ public class ScoreDataServiceImpl implements IScoreDataService {
                 //全部人数
                 //全部人数
                 double chaKanAll = 0D;
                 double chaKanAll = 0D;
                 double chaKanCount = 0D;
                 double chaKanCount = 0D;
-                if (ObjectUtils.isNotEmpty(redisCache.getCacheObject(SCORE_PEOPLE_ALL + data.getScoreId()))&&ObjectUtils.isNotEmpty(redisCache.getCacheObject(SCORE_PEOPLE_ALL + data.getScoreId()))){
-                     chaKanAll = redisCache.getCacheObject(SCORE_PEOPLE_ALL + data.getScoreId());
-                    //已查看
-                     chaKanCount = redisCache.getCacheObject(SCORE_PEOPLE_CHAKAN_COUNT + data.getScoreId());
+                if (ObjectUtils.isNotEmpty(redisCache.getCacheObject(SCORE_PEOPLE_ALL + data.getScoreId()))) {
+                    chaKanAll = (int) redisCache.getCacheObject(SCORE_PEOPLE_ALL + data.getScoreId());
+                    if (ObjectUtils.isNotEmpty(redisCache.getCacheObject(SCORE_PEOPLE_CHAKAN_COUNT + data.getScoreId()))) {
+                        //已查看
+                        chaKanCount = (int) redisCache.getCacheObject(SCORE_PEOPLE_CHAKAN_COUNT + data.getScoreId());
+                    }
                 }
                 }
                 double weiChaKan = chaKanAll;
                 double weiChaKan = chaKanAll;
-                if (chaKanAll > 0 && chaKanCount >= 0){
+                if (chaKanAll > 0 && chaKanCount >= 0) {
                     weiChaKan = chaKanAll - chaKanCount;
                     weiChaKan = chaKanAll - chaKanCount;
-                }
-                double z = chaKanCount / chaKanAll;
-                //计算百分比
-                if(Math.abs(z)>=0.1){
-                    percent = df.format(z);
+                    double z = chaKanCount / chaKanAll;
+                    if (Math.abs(z) >= 0.1) {
+                        //计算百分比
+                        percent = df.format(z);
+                    }
                 }
                 }
                 data.setChaKan(chaKanCount);
                 data.setChaKan(chaKanCount);
                 data.setWeiChaKan(weiChaKan);
                 data.setWeiChaKan(weiChaKan);
@@ -176,7 +200,7 @@ public class ScoreDataServiceImpl implements IScoreDataService {
         //新增成绩的时候,往redis中放入该次考试总人数
         //新增成绩的时候,往redis中放入该次考试总人数
         int count = scoreDataMapper.selectDetailsCountByScoreId(scoreId);
         int count = scoreDataMapper.selectDetailsCountByScoreId(scoreId);
         redisCache.setCacheObject(SCORE_PEOPLE_ALL + scoreId, count);
         redisCache.setCacheObject(SCORE_PEOPLE_ALL + scoreId, count);
-        redisCache.setCacheObject(SCORE_PEOPLE_CHAKAN_COUNT + scoreId,0);
+        redisCache.setCacheObject(SCORE_PEOPLE_CHAKAN_COUNT + scoreId, 0);
         return rows;
         return rows;
     }
     }
 
 

+ 11 - 2
ruoyi-system/src/main/resources/mapper/score/ScoreDataMapper.xml

@@ -66,6 +66,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="privacyType != null  and privacyType != ''"> and a.privacy_type = #{privacyType}</if>
             <if test="privacyType != null  and privacyType != ''"> and a.privacy_type = #{privacyType}</if>
             <if test="scoreClassId != null  and scoreClassId != ''"> and find_in_set(a.score_class_id,#{scoreClassId})</if>
             <if test="scoreClassId != null  and scoreClassId != ''"> and find_in_set(a.score_class_id,#{scoreClassId})</if>
         </where>
         </where>
+        order by score_title DESC
     </select>
     </select>
     
     
     <select id="selectScoreDataByScoreId" parameterType="Long" resultMap="ScoreDataScoreDataDetailsResult">
     <select id="selectScoreDataByScoreId" parameterType="Long" resultMap="ScoreDataScoreDataDetailsResult">
@@ -76,6 +77,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where a.score_id = #{scoreId}
         where a.score_id = #{scoreId}
     </select>
     </select>
 
 
+    <select id="selectScoreDataForParents" parameterType="ScoreData" resultMap="ScoreDataScoreDataDetailsResult">
+        select a.score_id, a.score_title, a.score_time, a.score_class_id, a.score_class_name, a.privacy_type, a.create_by, a.create_time, a.update_by, a.update_time, a.remark,
+ b.score_details_id as sub_score_details_id, b.score_id as sub_score_id,b.zongfen as sub_zongfen, b.score_sort as sub_score_sort, b.details_type as sub_details_type, b.score_data_name as sub_score_data_name, b.yuwen as sub_yuwen, b.shuxue as sub_shuxue, b.yingyu as sub_yingyu, b.wuli as sub_wuli, b.huaxue as sub_huaxue, b.shengwu as sub_shengwu, b.zhengzhi as sub_zhengzhi, b.lishi as sub_lishi, b.dili as sub_dili, b.tiyu as sub_tiyu, b.wenzong as sub_wenzong, b.lizong as sub_lizong, b.zhengcefen as sub_zhengcefen, b.create_by as sub_create_by, b.create_time as sub_create_time, b.update_by as sub_update_by, b.update_time as sub_update_time, b.remark as sub_remark
+        from score_data a
+        left join score_data_details b on b.score_id = a.score_id
+        where a.score_id = #{scoreId} and  find_in_set(b.score_data_name_id,#{params.stdId})
+    </select>
+
     <select id="selectScoreIdByScoreClassId" parameterType="string" resultMap="ScoreDataResult">
     <select id="selectScoreIdByScoreClassId" parameterType="string" resultMap="ScoreDataResult">
 SELECT
 SELECT
 		score_id
 		score_id
@@ -173,9 +182,9 @@ WHERE
     </delete>
     </delete>
 
 
     <insert id="batchScoreDataDetails">
     <insert id="batchScoreDataDetails">
-        insert into score_data_details( score_details_id, score_id, score_sort, score_data_name, yuwen, shuxue, yingyu, wuli, huaxue, shengwu, zhengzhi, lishi, dili, tiyu, wenzong, lizong, zhengcefen,zongfen, create_by, create_time, update_by, update_time, remark) values
+        insert into score_data_details( score_details_id, score_id, score_sort, score_data_name,score_data_name_id, yuwen, shuxue, yingyu, wuli, huaxue, shengwu, zhengzhi, lishi, dili, tiyu, wenzong, lizong, zhengcefen,zongfen, details_type,create_by, create_time, update_by, update_time, remark) values
 		<foreach item="item" index="index" collection="list" separator=",">
 		<foreach item="item" index="index" collection="list" separator=",">
-            ( #{item.scoreDetailsId}, #{item.scoreId}, #{item.scoreSort}, #{item.scoreDataName}, #{item.yuwen}, #{item.shuxue}, #{item.yingyu}, #{item.wuli}, #{item.huaxue}, #{item.shengwu}, #{item.zhengzhi}, #{item.lishi}, #{item.dili}, #{item.tiyu}, #{item.wenzong}, #{item.lizong}, #{item.zhengcefen},#{item.zongfen}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark})
+            ( #{item.scoreDetailsId}, #{item.scoreId}, #{item.scoreSort}, #{item.scoreDataName},#{item.scoreDataNameId}, #{item.yuwen}, #{item.shuxue}, #{item.yingyu}, #{item.wuli}, #{item.huaxue}, #{item.shengwu}, #{item.zhengzhi}, #{item.lishi}, #{item.dili}, #{item.tiyu}, #{item.wenzong}, #{item.lizong}, #{item.zhengcefen},#{item.zongfen},#{item.detailsType}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark})
         </foreach>
         </foreach>
     </insert>
     </insert>
 </mapper>
 </mapper>