package com.ruoyi.approve.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.approve.bean.dto.LogReportDto; import com.ruoyi.approve.mapper.LogReportMapper; import com.ruoyi.approve.pojo.LogReport; import com.ruoyi.approve.service.LogReportService; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.project.system.service.ISysNoticeService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** *

* 日志表 服务实现类 *

* * @author 芯导软件(江苏)有限公司 * @since 2026-05-08 01:51:13 */ @Service @RequiredArgsConstructor @Transactional(rollbackFor = Exception.class) public class LogReportServiceImpl extends ServiceImpl implements LogReportService { private final LogReportMapper sysLogReportMapper; private final ISysNoticeService sysNoticeService; private final SysUserMapper sysUserMapper; @Override public IPage listPage(Page page, LogReportDto sysLogReport) { Long userId = SecurityUtils.getUserId(); IPage logReportDtoIPage = sysLogReportMapper.listPage(page, sysLogReport, userId); logReportDtoIPage.getRecords().forEach(sysLogReportDto -> { String ccUsers = sysLogReportDto.getCcUsers(); if (StringUtils.isBlank(ccUsers)) { return; } List userIdList = Arrays.stream(ccUsers.split(",")) .filter(StringUtils::isNotBlank) // 过滤空字符串 .map(String::trim) // 去除空格 .map(Long::parseLong) // 转换为 Long .collect(Collectors.toList()); // 收集为 List sysLogReportDto.setCcUserIds(userIdList); if (!userIdList.isEmpty()) { List users = sysUserMapper.selectUsersByIds(userIdList); String userNames = users.stream() .filter(Objects::nonNull) .map(SysUser::getNickName) .filter(StringUtils::isNotBlank) .collect(Collectors.joining(",")); // 如果所有用户都没有昵称,设置为空字符串 sysLogReportDto.setCcUserName(StringUtils.isNotBlank(userNames) ? userNames : ""); } else { sysLogReportDto.setCcUserName(""); } }); return logReportDtoIPage; } @Override public Boolean add(LogReportDto sysLogReport) { if (ObjectUtils.isEmpty(sysLogReport.getCcUserIds())) { throw new RuntimeException("请选择抄送人"); } String collect = sysLogReport.getCcUserIds().stream() .map(String::valueOf) // Long → String .collect(Collectors.joining(","));// 拼接为 "1,2,3" sysLogReport.setCcUsers(collect); sysLogReport.setPushStatus(1); this.save(sysLogReport); if (ObjectUtils.isNotEmpty(sysLogReport.getCcUserIds())) { pushLogReport(sysLogReport); } return true; } @Override public Boolean updateSysLogReportDto(LogReportDto sysLogReport) { if (ObjectUtils.isEmpty(sysLogReport.getCcUserIds())) { throw new RuntimeException("请选择抄送人"); } String collect = sysLogReport.getCcUserIds().stream() .map(String::valueOf) // Long → String .collect(Collectors.joining(","));// 拼接为 "1,2,3" sysLogReport.setCcUsers(collect); sysLogReport.setPushStatus(1); if (ObjectUtils.isNotEmpty(sysLogReport.getCcUserIds())) { pushLogReport(sysLogReport); } return this.updateById(sysLogReport); } @Override public void pushLogReport(LogReportDto sysLogReportDto) { LogReport byId = this.getById(sysLogReportDto.getId()); sysNoticeService.simpleNoticeByUser(byId.getTitle(), byId.getContent(), sysLogReportDto.getCcUserIds(), "/collaborativeApproval/journal"); } }