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