| src/main/java/com/ruoyi/approve/bean/dto/LogReportDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/approve/controller/LogReportController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/approve/mapper/LogReportMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/approve/pojo/LogReport.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/approve/service/LogReportService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/approve/service/impl/LogReportServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/approve/LogReportMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/approve/bean/dto/LogReportDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.ruoyi.approve.bean.dto; import com.ruoyi.approve.pojo.LogReport; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; @Data public class LogReportDto extends LogReport { @Schema(description = "æé人åç§°") private String ccUserName; @Schema(description = "æé人ids") private List<Long> ccUserIds; private String createUserName; private String startTime; private String endTime; } src/main/java/com/ruoyi/approve/controller/LogReportController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,63 @@ package com.ruoyi.approve.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.approve.bean.dto.LogReportDto; import com.ruoyi.approve.service.LogReportService; import com.ruoyi.framework.web.domain.R; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.List; /** * <p> * æ¥å¿è¡¨ å端æ§å¶å¨ * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-05-08 01:51:13 */ @RestController @RequestMapping("/sysLogReport") @Tag(name = "æ¥å¿ç®¡ç") @AllArgsConstructor public class LogReportController { private final LogReportService logReportService; @GetMapping("/listPage") @Operation(summary = "å页æ¥è¯¢æ¥å¿å表") public R listPage(Page page, LogReportDto sysLogReport) { IPage<LogReportDto> logReportDtoIPage =logReportService.listPage(page, sysLogReport); return R.ok(logReportDtoIPage); } @PostMapping("/add") @Operation(summary = "æ·»å æ¥å¿") public R add(@RequestBody LogReportDto sysLogReport) { return logReportService.add(sysLogReport) ? R.ok() : R.fail(); } @PutMapping("/update") @Operation(summary = "æ´æ°æ¥å¿") public R update( @RequestBody LogReportDto sysLogReport) { return logReportService.updateSysLogReportDto(sysLogReport) ? R.ok() : R.fail(); } @DeleteMapping("/delete") @Operation(summary = "å 餿¥å¿") public R delete(@RequestBody List<Long> ids) { return logReportService.removeBatchByIds(ids) ? R.ok() : R.fail(); } @Operation(summary = "æ¨éæ¥å¿ä¿¡æ¯å°ç¨æ·") @PostMapping("/pushLogReport") public void pushLogReport(@RequestBody LogReportDto sysLogReportDto) { logReportService.pushLogReport(sysLogReportDto) ; } } src/main/java/com/ruoyi/approve/mapper/LogReportMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ package com.ruoyi.approve.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.approve.bean.dto.LogReportDto; import com.ruoyi.approve.pojo.LogReport; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** * <p> * æ¥å¿è¡¨ Mapper æ¥å£ * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-05-08 01:51:13 */ @Mapper public interface LogReportMapper extends BaseMapper<LogReport> { IPage<LogReportDto> listPage(Page page, @Param("ew") LogReportDto sysLogReport, @Param("userId") Long userId); } src/main/java/com/ruoyi/approve/pojo/LogReport.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,84 @@ package com.ruoyi.approve.pojo; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> * æ¥å¿è¡¨ * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-05-08 01:51:13 */ @Getter @Setter @ToString @TableName("log_report") @ApiModel(value = "SysLogReport对象", description = "æ¥å¿è¡¨") public class LogReport implements Serializable { private static final long serialVersionUID = 1L; /** * 主é®ID */ @Schema(description = "主é®ID") @TableId(value = "id", type = IdType.AUTO) private Long id; /** * æ¥å¿æ é¢ */ @Schema(description = "æ¥å¿æ é¢") private String title; /** * æ¥åç±»åï¼æ¥æ¥ï¼å¨æ¥ï¼ææ¥ */ @Schema(description = "æ¥åç±»åï¼æ¥æ¥ï¼å¨æ¥ï¼ææ¥") private String reportType; /** * æ¥å¿ç±»åï¼work/project/problem/other */ @Schema(description = "æ¥å¿ç±»åï¼work/project/problem/other") private String logType; /** * æ¥å¿å 容 */ @Schema(description = "æ¥å¿å 容") private String content; /** * æ¨éç¶æï¼0æªæ¨é 1å·²æ¨é 2æ¨é失败 */ @Schema(description = "æ¨éç¶æï¼0æªæ¨é 1å·²æ¨é 2æ¨é失败") private Integer pushStatus; /** * å建人 */ @Schema(description = "å建人") @TableField(fill = FieldFill.INSERT) private Integer createUser; /** * å建æ¶é´ */ @Schema(description = "å建æ¶é´") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @TableField(fill = FieldFill.INSERT) private Integer deptId; @Schema(description = "æé人") private String ccUsers; } src/main/java/com/ruoyi/approve/service/LogReportService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ package com.ruoyi.approve.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.approve.bean.dto.LogReportDto; import com.ruoyi.approve.pojo.LogReport; /** * <p> * æ¥å¿è¡¨ æå¡ç±» * </p> * * @author è¯å¯¼è½¯ä»¶ï¼æ±èï¼æéå ¬å¸ * @since 2026-05-08 01:51:13 */ public interface LogReportService extends IService<LogReport> { IPage<LogReportDto> listPage(Page page, LogReportDto sysLogReport); Boolean add(LogReportDto sysLogReport); Boolean updateSysLogReportDto(LogReportDto sysLogReport); void pushLogReport(LogReportDto sysLogReportDto); } src/main/java/com/ruoyi/approve/service/impl/LogReportServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,107 @@ 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) { 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) { 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"); } } src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java
@@ -1,15 +1,11 @@ package com.ruoyi.project.system.mapper; import java.util.ArrayList; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.collaborativeApproval.pojo.MeetingMinutes; import com.ruoyi.project.system.domain.SysUser; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import com.ruoyi.project.system.domain.SysUser; import org.springframework.beans.PropertyValues; import java.util.List; /** * ç¨æ·è¡¨ æ°æ®å± src/main/resources/mapper/approve/LogReportMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,58 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.approve.mapper.LogReportMapper"> <!-- éç¨æ¥è¯¢æ å°ç»æ --> <resultMap id="BaseResultMap" type="com.ruoyi.approve.pojo.LogReport"> <id column="id" property="id" /> <result column="title" property="title" /> <result column="report_type" property="reportType" /> <result column="log_type" property="logType" /> <result column="content" property="content" /> <result column="push_status" property="pushStatus" /> <result column="create_user" property="createUser" /> <result column="create_time" property="createTime" /> <result column="dept_id" property="deptId" /> </resultMap> <select id="listPage" resultType="com.ruoyi.approve.bean.dto.LogReportDto"> select slr.*, su.nick_name as create_user_name from log_report slr left join sys_user su on slr.create_user = su.user_id <where> <if test="ew.title != null and ew.title != ''"> and slr.title like concat('%', #{ew.title}, '%') </if> <if test="ew.logType != null and ew.logType != ''"> and slr.log_type = #{ew.logType} </if> <if test="ew.reportType != null and ew.reportType != ''"> and slr.report_type = #{ew.reportType} </if> <if test="ew.pushStatus != null and ew.pushStatus != ''"> and slr.push_status = #{ew.pushStatus} </if> <if test="ew.createUser != null and ew.createUser != ''"> and slr.create_user = #{ew.createUser} </if> <if test="ew.startTime != null and ew.endTime !=''"> and slr.create_time between #{ew.startTime} and #{ew.endTime} </if> <if test="ew.ccUserIds != null"> and ( slr.create_user = #{userId} or ( slr.cc_users is not null and slr.cc_users != '' and find_in_set(#{userId}, slr.cc_users) ) ) </if> </where> order by slr.create_time desc </select> </mapper>