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;
|
|
/**
|
* <p>
|
* 日志表 服务实现类
|
* </p>
|
*
|
* @author 芯导软件(江苏)有限公司
|
* @since 2026-05-08 01:51:13
|
*/
|
@Service
|
@RequiredArgsConstructor
|
@Transactional(rollbackFor = Exception.class)
|
public class LogReportServiceImpl extends ServiceImpl<LogReportMapper, LogReport> implements LogReportService {
|
|
private final LogReportMapper sysLogReportMapper;
|
private final ISysNoticeService sysNoticeService;
|
private final SysUserMapper sysUserMapper;
|
|
@Override
|
public IPage<LogReportDto> listPage(Page page, LogReportDto sysLogReport) {
|
Long userId = SecurityUtils.getUserId();
|
IPage<LogReportDto> logReportDtoIPage = sysLogReportMapper.listPage(page, sysLogReport, userId);
|
logReportDtoIPage.getRecords().forEach(sysLogReportDto -> {
|
String ccUsers = sysLogReportDto.getCcUsers();
|
if (StringUtils.isBlank(ccUsers)) {
|
return;
|
}
|
List<Long> 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<SysUser> 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");
|
|
}
|
}
|