From a565c4c9d1f52273fc6b7730e089f857308ac58d Mon Sep 17 00:00:00 2001 From: luoyu Date: Wed, 18 Jun 2025 13:04:08 +0800 Subject: [PATCH] =?UTF-8?q?20250618-=E6=B7=BB=E5=8A=A0=E5=B7=B2=E8=AF=BB?= =?UTF-8?q?=E6=9C=AA=E8=AF=BB=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=8E=BB=E9=87=8D?= =?UTF-8?q?2.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/RepairRemindController.java | 9 ++--- .../ics/admin/mapper/RepairRemindMapper.java | 9 ++++- .../admin/service/IRepairRemindService.java | 4 +- .../service/impl/RepairRemindServiceImpl.java | 38 +++++++++++++++---- .../mapper/admin/RepairRemindMapper.xml | 20 +++++++++- 5 files changed, 65 insertions(+), 15 deletions(-) diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairRemindController.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairRemindController.java index fd03326..08a2b51 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairRemindController.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/controller/RepairRemindController.java @@ -40,15 +40,14 @@ public class RepairRemindController extends BaseController { Long userId = getLoginStaffId(); return result(repairRemindService.getRepairRemindList(userId, isRead)); } - - /** - * 查询指定会议的所有通知 + /** + * 查询指定会议提醒(根据会议repairId和用户userId) */ @RequiresPermissions(value = {"repair:manage:operator", "member:center:view"}, logical = Logical.OR) @RequestMapping("listByRepairId") - public R listByRepairId(Long repairId) { + public R listByRepairId(Long repairId, Long userId) { startPage(); - return result(repairRemindService.getRepairRemindListByRepairId(repairId)); + return result(repairRemindService.getRepairRemindListByRepairId(repairId,userId)); } /** * 读取最新5条未读工单提醒 diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairRemindMapper.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairRemindMapper.java index 2413620..2fe9d16 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairRemindMapper.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/mapper/RepairRemindMapper.java @@ -123,5 +123,12 @@ public interface RepairRemindMapper { */ int afterSMS(@Param("state") String state, @Param("ids") List ids); - List selectRepairRemindListByRepairId(Long repairId); + /** + * 根据会议ID和用户ID列表查询通知状态 + * + * @param repairId 会议ID + * @param userId 用户ID (可选,为null时查询所有) + * @return 通知列表 + */ + List selectRepairRemindListByRepairId(@Param("repairId") Long repairId, @Param("userId") Long userId); } \ No newline at end of file diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairRemindService.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairRemindService.java index 9dc8e95..08ef51a 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairRemindService.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/IRepairRemindService.java @@ -3,6 +3,7 @@ package com.ics.admin.service; import com.ics.admin.domain.RepairRemind; import java.util.List; +import java.util.Map; /** * 工单提醒Service接口 @@ -99,5 +100,6 @@ public interface IRepairRemindService { */ int afterSMS(List success, List failed); - List getRepairRemindListByRepairId(Long repairId); + // 根据repairId查询所有通知 + List getRepairRemindListByRepairId(Long repairId, Long userId); } diff --git a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairRemindServiceImpl.java b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairRemindServiceImpl.java index 7ddcd93..f1d217f 100644 --- a/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairRemindServiceImpl.java +++ b/shoot-hand/ics-admin/src/main/java/com/ics/admin/service/impl/RepairRemindServiceImpl.java @@ -9,8 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * 工单提醒Service业务层处理 @@ -34,11 +34,8 @@ public class RepairRemindServiceImpl implements IRepairRemindService { return repairRemindMapper.selectRepairRemindById(id); } - @Override - public List getRepairRemindListByRepairId(Long repairId) { - // 根据repairId查询所有相关通知 - return repairRemindMapper.selectRepairRemindListByRepairId(repairId); - } + + /** * 查询用户工单提醒列表 * @@ -153,4 +150,31 @@ public class RepairRemindServiceImpl implements IRepairRemindService { } return a + b; } + + + @Override + public List getRepairRemindListByRepairId(Long repairId, Long userId) { + // 根据repairId和userId查询相关通知 + List originalList = repairRemindMapper.selectRepairRemindListByRepairId(repairId, userId); + + // 如果结果为空或只有一条记录,无需去重 + if (originalList == null || originalList.size() <= 1) { + return originalList; + } + + // 使用Map进行去重,key为userId,value为最新的通知记录 + Map latestRemindMap = new HashMap<>(); + + for (RepairRemind remind : originalList) { + Long currentUserId = remind.getUserId(); + // 如果Map中不存在该userId的记录,或当前记录的创建时间比Map中已有记录更新 + if (!latestRemindMap.containsKey(currentUserId) || + remind.getCreateTime().compareTo(latestRemindMap.get(currentUserId).getCreateTime()) > 0) { + latestRemindMap.put(currentUserId, remind); + } + } + + // 返回去重后的列表 + return new ArrayList<>(latestRemindMap.values()); + } } diff --git a/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairRemindMapper.xml b/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairRemindMapper.xml index 55c91fe..e681b26 100644 --- a/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairRemindMapper.xml +++ b/shoot-hand/ics-admin/src/main/resources/mapper/admin/RepairRemindMapper.xml @@ -140,7 +140,13 @@ where delete_flag=0 and ext1='1' @@ -157,4 +163,16 @@ + + + \ No newline at end of file