浏览代码

考试记录新增预警记录未读数

wangliang 1 年之前
父节点
当前提交
b195b3246d

+ 8 - 0
themis-business/src/main/java/com/qmth/themis/business/dao/TOeExamRecordMapper.java

@@ -593,4 +593,12 @@ public interface TOeExamRecordMapper extends BaseMapper<TOeExamRecord> {
      * @param id
      */
     void updateWarningCount(@Param("id") Long id);
+
+    /**
+     * 更新预警未读数
+     *
+     * @param id
+     * @param number
+     */
+    void updateWarningUnread(@Param("id") Long id, @Param("number") Integer number);
 }

+ 7 - 7
themis-business/src/main/java/com/qmth/themis/business/service/impl/TOeExamRecordServiceImpl.java

@@ -4,7 +4,6 @@ import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.reflect.TypeToken;
@@ -528,15 +527,13 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
                 try {
                     Integer warningCount = ExamRecordCacheUtil.getWarningCount(id);
                     if (Objects.nonNull(warningCount)) {
-                        warningCount++;
-                        ExamRecordCacheUtil.setWarningCount(id, warningCount);
+                        ExamRecordCacheUtil.setWarningCount(id, warningCount + 1);
                     } else {
                         ExamRecordCacheUtil.setWarningCount(id, 1);
                     }
                     Integer warningUnread = ExamRecordCacheUtil.getWarningUnread(id);
                     if (Objects.nonNull(warningUnread)) {
-                        warningUnread++;
-                        ExamRecordCacheUtil.setWarningUnread(id, warningUnread);
+                        ExamRecordCacheUtil.setWarningUnread(id, warningUnread + 1);
                     } else {
                         ExamRecordCacheUtil.setWarningUnread(id, 1);
                     }
@@ -581,10 +578,13 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
             if (lock) {
                 try {
                     Integer warningUnread = ExamRecordCacheUtil.getWarningUnread(id);
-                    if (Objects.nonNull(warningUnread)) {
+                    if (Objects.nonNull(warningUnread) && warningUnread.intValue() == 0) {
                         ExamRecordCacheUtil.setWarningUnread(id, number);
+                    } else if (Objects.nonNull(warningUnread) && warningUnread.intValue() > 0) {
+                        Integer warningCount = warningUnread - number;
+                        ExamRecordCacheUtil.setWarningUnread(id, warningCount.intValue() < 0 ? 0 : warningCount);
                     }
-                    tOeExamRecordService.update(new UpdateWrapper<TOeExamRecord>().lambda().eq(TOeExamRecord::getId, id).set(TOeExamRecord::getWarningUnread, 0));
+                    this.baseMapper.updateWarningUnread(id, number);
                 } catch (Exception e) {
                     log.error(SystemConstant.LOG_ERROR, e);
                     if (e instanceof BusinessException) {

+ 13 - 0
themis-business/src/main/resources/mapper/TOeExamRecordMapper.xml

@@ -1770,4 +1770,17 @@
     <update id="updateWarningCount">
         update t_oe_exam_record set warning_count = warning_count + 1, warning_unread = warning_unread + 1 where id = #{id}
     </update>
+
+    <update id="updateWarningUnread">
+        update t_oe_exam_record set
+        <choose>
+            <when test="number != null and number != '' and number == 0">
+                warning_unread = #{number}
+            </when>
+            <otherwise>
+                warning_unread = warning_unread - #{number}
+            </otherwise>
+        </choose>
+            where id = #{id}
+    </update>
 </mapper>