20250618-添加已读未读,增加去重2.1

This commit is contained in:
luoyu 2025-06-18 13:04:08 +08:00
parent 90277f4f30
commit a565c4c9d1
5 changed files with 65 additions and 15 deletions

View File

@ -40,15 +40,14 @@ public class RepairRemindController extends BaseController {
Long userId = getLoginStaffId(); Long userId = getLoginStaffId();
return result(repairRemindService.getRepairRemindList(userId, isRead)); return result(repairRemindService.getRepairRemindList(userId, isRead));
} }
/**
/** * 查询指定会议提醒根据会议repairId和用户userId
* 查询指定会议的所有通知
*/ */
@RequiresPermissions(value = {"repair:manage:operator", "member:center:view"}, logical = Logical.OR) @RequiresPermissions(value = {"repair:manage:operator", "member:center:view"}, logical = Logical.OR)
@RequestMapping("listByRepairId") @RequestMapping("listByRepairId")
public R listByRepairId(Long repairId) { public R listByRepairId(Long repairId, Long userId) {
startPage(); startPage();
return result(repairRemindService.getRepairRemindListByRepairId(repairId)); return result(repairRemindService.getRepairRemindListByRepairId(repairId,userId));
} }
/** /**
* 读取最新5条未读工单提醒 * 读取最新5条未读工单提醒

View File

@ -123,5 +123,12 @@ public interface RepairRemindMapper {
*/ */
int afterSMS(@Param("state") String state, @Param("ids") List<Long> ids); int afterSMS(@Param("state") String state, @Param("ids") List<Long> ids);
List<RepairRemind> selectRepairRemindListByRepairId(Long repairId); /**
* 根据会议ID和用户ID列表查询通知状态
*
* @param repairId 会议ID
* @param userId 用户ID (可选为null时查询所有)
* @return 通知列表
*/
List<RepairRemind> selectRepairRemindListByRepairId(@Param("repairId") Long repairId, @Param("userId") Long userId);
} }

View File

@ -3,6 +3,7 @@ package com.ics.admin.service;
import com.ics.admin.domain.RepairRemind; import com.ics.admin.domain.RepairRemind;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 工单提醒Service接口 * 工单提醒Service接口
@ -99,5 +100,6 @@ public interface IRepairRemindService {
*/ */
int afterSMS(List<Long> success, List<Long> failed); int afterSMS(List<Long> success, List<Long> failed);
List<?> getRepairRemindListByRepairId(Long repairId); // 根据repairId查询所有通知
List<RepairRemind> getRepairRemindListByRepairId(Long repairId, Long userId);
} }

View File

@ -9,8 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Date; import java.util.*;
import java.util.List; import java.util.stream.Collectors;
/** /**
* 工单提醒Service业务层处理 * 工单提醒Service业务层处理
@ -34,11 +34,8 @@ public class RepairRemindServiceImpl implements IRepairRemindService {
return repairRemindMapper.selectRepairRemindById(id); return repairRemindMapper.selectRepairRemindById(id);
} }
@Override
public List<RepairRemind> getRepairRemindListByRepairId(Long repairId) {
// 根据repairId查询所有相关通知
return repairRemindMapper.selectRepairRemindListByRepairId(repairId);
}
/** /**
* 查询用户工单提醒列表 * 查询用户工单提醒列表
* *
@ -153,4 +150,31 @@ public class RepairRemindServiceImpl implements IRepairRemindService {
} }
return a + b; return a + b;
} }
@Override
public List<RepairRemind> getRepairRemindListByRepairId(Long repairId, Long userId) {
// 根据repairId和userId查询相关通知
List<RepairRemind> originalList = repairRemindMapper.selectRepairRemindListByRepairId(repairId, userId);
// 如果结果为空或只有一条记录无需去重
if (originalList == null || originalList.size() <= 1) {
return originalList;
}
// 使用Map进行去重key为userIdvalue为最新的通知记录
Map<Long, RepairRemind> 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());
}
} }

View File

@ -140,7 +140,13 @@
where delete_flag=0 and ext1='1' where delete_flag=0 and ext1='1'
</select> </select>
<select id="selectRepairRemindListByRepairId" resultType="com.ics.admin.domain.RepairRemind"> <select id="selectRepairRemindListByRepairId" resultType="com.ics.admin.domain.RepairRemind">
select * from ics_repair_remind where repair_id=#{repairId} and delete_flag=0 select * from ics_repair_remind
where repair_id = #{repairId}
and delete_flag = 0
<if test="userId != null">
and user_id = #{userId}
</if>
order by create_time desc
</select> </select>
<update id="afterWxPush"> <update id="afterWxPush">
@ -157,4 +163,16 @@
</foreach> </foreach>
</update> </update>
<!-- 根据会议ID和用户ID列表查询通知 -->
<select id="selectRepairRemindByRepairIdAndUserIds" resultMap="RepairRemindResult">
select * from ics_repair_remind
where repair_id = #{repairId}
and delete_flag = 0
and user_id in
<foreach item="userId" collection="userIds" open="(" separator="," close=")">
#{userId}
</foreach>
order by create_time desc
</select>
</mapper> </mapper>