package com.pz.system.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.pz.common.core.domain.BaseEntity; import com.pz.common.core.domain.PageQuery; import com.pz.common.core.page.TableDataInfo; import com.pz.system.domain.Department; import com.pz.system.domain.Hospital; import com.pz.system.domain.Information; import com.pz.system.domain.Message; import com.pz.system.domain.bo.DepartmentBo; import com.pz.system.domain.bo.MessageBo; import com.pz.system.domain.vo.DepartmentVo; import com.pz.system.domain.vo.InformationVo; import com.pz.system.domain.vo.MessageVo; import com.pz.system.mapper.DepartmentMapper; import com.pz.system.mapper.HospitalMapper; import com.pz.system.mapper.MessageMapper; import com.pz.system.mapper.SessionListMapper; import com.pz.system.service.IDepartmentService; import com.pz.system.service.IMessageService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; /** * 科室Service业务层处理 * * @author ruoyi * @date 2023-09-07 */ @RequiredArgsConstructor @Service public class MessageServiceImpl implements IMessageService { private final MessageMapper baseMapper; @Override public List<MessageVo> queryPageList(MessageBo bo) { String strTime = bo.getStrTime() + " 00:00:00"; bo.setStrTime(bo.getStrTime() + " 23:59:59"); List<MessageVo> result = new ArrayList<>(); result = baseMapper.selectVoList(new LambdaQueryWrapper<Message>().eq(Message::getSender, bo.getSender()) .eq(Message::getReceiver, bo.getReceiver()).ge(BaseEntity::getCreateTime, strTime).le(BaseEntity::getCreateTime, bo.getStrTime()).or().eq(Message::getSender, bo.getReceiver()).eq(Message::getReceiver, bo.getSender()) .ge(BaseEntity::getCreateTime, strTime).le(BaseEntity::getCreateTime, bo.getStrTime())); List<Message> messageList = new ArrayList<>(); if (CollectionUtils.isNotEmpty(result)) { result.forEach(res -> { if (res.getIsRead().equals("0") && res.getReceiver().equals(bo.getSender())) { res.setIsRead("1"); messageList.add(BeanUtil.toBean(res, Message.class)); } }); } //批量更新已读 if (CollectionUtils.isNotEmpty(messageList)) { baseMapper.updateBatchById(messageList); } return result; } @Override public List<String> queryMessageTimeList(Long userId, Long toUserId) { List<MessageVo> messageVos = baseMapper.selectVoList(new LambdaQueryWrapper<Message>().eq(Message::getSender, userId) .eq(Message::getReceiver, toUserId).or().eq(Message::getSender, toUserId).eq(Message::getReceiver, userId) .orderByDesc(BaseEntity::getCreateTime)); if (CollectionUtils.isNotEmpty(messageVos)) { List<Date> times = messageVos.stream().map(MessageVo::getCreateTime).collect(Collectors.toList()); List<String> formattedDateList = new ArrayList<>(); SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd"); for (Date date : times) { // 格式化为目标格式 String formattedDate = outputFormat.format(date); // 添加到新的列表 formattedDateList.add(formattedDate); } List<String> newList = formattedDateList.stream() .distinct() .sorted(Comparator.reverseOrder()) .collect(Collectors.toList()); return newList; } return null; } }