This commit is contained in:
aikai 2024-04-17 14:49:05 +08:00
commit 3d2d5df62c
7 changed files with 39 additions and 38 deletions

View File

@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.Lo
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO;
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceSaveReqVO;
import cn.iocoder.yudao.module.system.convert.worklog.LogInstanceConvert; import cn.iocoder.yudao.module.system.convert.worklog.LogInstanceConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.service.user.AdminUserService; import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import cn.iocoder.yudao.module.system.service.worklog.LogInstanceService; import cn.iocoder.yudao.module.system.service.worklog.LogInstanceService;
import cn.iocoder.yudao.module.system.service.worklog.LogReadService; import cn.iocoder.yudao.module.system.service.worklog.LogReadService;
@ -84,7 +85,16 @@ public class LogInstanceController {
//查看日志详情时变更当前用户日志的阅读状态 //查看日志详情时变更当前用户日志的阅读状态
logReadService.updateReadStatus(id, getLoginUserId()); logReadService.updateReadStatus(id, getLoginUserId());
//获取日志详情
LogInstanceRespVO logInstance = logInstanceService.getLogInstance(id); LogInstanceRespVO logInstance = logInstanceService.getLogInstance(id);
//用户日志发起人详情
AdminUserDO userDO = adminUserService.getUser(logInstance.getStartUserId());
//设置日志发起人名称
logInstance.setStartUserName(userDO.getNickname());
//设置日志发起人头像
logInstance.setAvatar(userDO.getAvatar());
return success(logInstance); return success(logInstance);
} }
@ -145,9 +155,12 @@ public class LogInstanceController {
List<Map<String, Object>> readUserVO = new ArrayList<>(); List<Map<String, Object>> readUserVO = new ArrayList<>();
//获取可查看者用户列表
Map<Integer, List<Long>> usrMap = logReadService.getUserId(logId); Map<Integer, List<Long>> usrMap = logReadService.getUserId(logId);
//获取未读用户详情
List<UserRespVO> unReadUserInfo = BeanUtils.toBean(adminUserService.getUserList(usrMap.get(0)), UserRespVO.class); List<UserRespVO> unReadUserInfo = BeanUtils.toBean(adminUserService.getUserList(usrMap.get(0)), UserRespVO.class);
//获取已读用户详情
List<UserRespVO> readUserInfo = BeanUtils.toBean(adminUserService.getUserList(usrMap.get(1)), UserRespVO.class); List<UserRespVO> readUserInfo = BeanUtils.toBean(adminUserService.getUserList(usrMap.get(1)), UserRespVO.class);
Map<String, Object> unReadMap = new HashMap<>(); Map<String, Object> unReadMap = new HashMap<>();

View File

@ -23,12 +23,6 @@ public class LogInstancePageReqVO extends PageParam {
@Schema(description = "日志发起人的部门编号", example = "24292") @Schema(description = "日志发起人的部门编号", example = "24292")
private Long deptId; private Long deptId;
@Schema(description = "日志发起人的用户名称", example = "张三")
private String startUserName;
@Schema(description = "日志发起人的用户头像", example = "https://www.iocoder.cn/xxx.png")
private String avatar;
@Schema(description = "日志实例的名字", example = "张三的XX日报") @Schema(description = "日志实例的名字", example = "张三的XX日报")
private String name; private String name;

View File

@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.util.List; import java.util.List;
@ -41,15 +40,6 @@ public class LogInstanceDO extends BaseDO {
*/ */
private Long deptId; private Long deptId;
/**
* 日志发起人的用户名称
*/
private String startUserName;
/**
* 用户头像
*/
private String avatar;
/** /**
* 日志名称 * 日志名称
*/ */

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.system.dal.mysql.worklog; package cn.iocoder.yudao.module.system.dal.mysql.worklog;
import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstancePageReqVO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstancePageReqVO;
@ -39,12 +40,10 @@ public interface LogInstanceMapper extends BaseMapperX<LogInstanceDO> {
} }
IPage<LogInstanceRespVO> selectPageResult(@Param("page") Page<LogInstanceRespVO> page, @Param("reqVO") LogInstancePageReqVO reqVO, IPage<LogInstanceRespVO> selectPageResult(@Param("page") Page<LogInstanceRespVO> page, @Param("reqVO") LogInstancePageReqVO reqVO,
@Param("userId") Long userId, @Param("pagingType") Integer pagingType, @Param("logId") Long logId); @Param("userId") Long userId, @Param("pagingType") Integer pagingType);
LogInstanceRespVO selectPageResult(@Param("reqVO") LogInstancePageReqVO reqVO, @Param("userId") Long userId, @DataPermission(enable = false)
@Param("pagingType") Integer pagingType, @Param("logId") Long logId); List<LogReadUserRespDTO> selectRaedUser(@Param("userId")Long userId, @Param("deptId")Long deptId);
List<LogReadUserRespDTO> selectRaedUser(Long deptId);
/** /**
* 获取上一篇下一篇 * 获取上一篇下一篇

View File

@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.Lo
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstancePageReqVO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstancePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO;
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceSaveReqVO;
import cn.iocoder.yudao.module.system.convert.worklog.LogInstanceConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO; import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO;
@ -100,10 +101,6 @@ public class LogInstanceServiceImpl implements LogInstanceService {
logInstance.setStartUserId(userId); logInstance.setStartUserId(userId);
//设置发起人部门编号 //设置发起人部门编号
logInstance.setDeptId(adminUserDO.getDeptId()); logInstance.setDeptId(adminUserDO.getDeptId());
//设置发起人用户名称
logInstance.setStartUserName(adminUserDO.getNickname());
//设置发起人用户头像
logInstance.setAvatar(adminUserDO.getAvatar());
//设置日志类型 //设置日志类型
logInstance.setType(logRuleDO.getType()); logInstance.setType(logRuleDO.getType());
//设置日志名称 //设置日志名称
@ -136,7 +133,17 @@ public class LogInstanceServiceImpl implements LogInstanceService {
//创建日志时查询可以查看发起人日志的用户组 用线程控制 //创建日志时查询可以查看发起人日志的用户组 用线程控制
new Thread(() -> { new Thread(() -> {
List<LogReadUserRespDTO> respDTOS = logInstanceMapper.selectRaedUser(adminUserDO.getDeptId()); List<LogReadUserRespDTO> respDTOS = logInstanceMapper.selectRaedUser(userId, adminUserDO.getDeptId());
//特殊情况 日志发起人为研发部时 手动添加查看者
if (adminUserDO.getDeptId() == 128L && adminUserDO.getId() != 126L) {
LogReadUserRespDTO dto = new LogReadUserRespDTO();
dto.setUserId(126L);
dto.setDeptId(128L);
respDTOS.add(dto);
}
logReadService.createLogRule(respDTOS, logInstance.getId(), logInstance.getStartUserId()); logReadService.createLogRule(respDTOS, logInstance.getId(), logInstance.getStartUserId());
}).start(); }).start();
@ -214,17 +221,18 @@ public class LogInstanceServiceImpl implements LogInstanceService {
public LogInstanceRespVO getLogInstance(Long id) { public LogInstanceRespVO getLogInstance(Long id) {
//获取日志详情 //获取日志详情
LogInstanceRespVO logInstanceRespVO = logInstanceMapper.selectPageResult(new LogInstancePageReqVO(), getLoginUserId(), null, id); LogInstanceDO logInstanceDO = logInstanceMapper.selectById(id);
// LogInstanceRespVO logInstanceRespVO = logInstanceMapper.selectPageResult(new LogInstancePageReqVO(), getLoginUserId(), null, id);
//设置日志详情 模板内容和时间 //设置日志详情 模板内容和时间
return setContentFun(logInstanceRespVO); return setContentFun(LogInstanceConvert.INSTANCE.convert(logInstanceDO));
} }
@Override @Override
public IPage<LogInstanceRespVO> getLogInstancePage(LogInstancePageReqVO pageReqVO, Integer pagingType) { public IPage<LogInstanceRespVO> getLogInstancePage(LogInstancePageReqVO pageReqVO, Integer pagingType) {
Page<LogInstanceRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); Page<LogInstanceRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
IPage<LogInstanceRespVO> pageList = logInstanceMapper.selectPageResult(page, pageReqVO, getLoginUserId(), pagingType, null); IPage<LogInstanceRespVO> pageList = logInstanceMapper.selectPageResult(page, pageReqVO, getLoginUserId(), pagingType);
List<LogInstanceRespVO> records = pageList.getRecords(); List<LogInstanceRespVO> records = pageList.getRecords();
if (!records.isEmpty()) { if (!records.isEmpty()) {

View File

@ -35,10 +35,9 @@ public class LogReadServiceImpl implements LogReadService{
logReadDo.setLogInstanceId(logInstanceId); logReadDo.setLogInstanceId(logInstanceId);
logReadDo.setStartUserId(startUserId); logReadDo.setStartUserId(startUserId);
logReadDo.setReadUserDept(user.getDeptId()); logReadDo.setReadUserDept(user.getDeptId());
if (!user.getUserId().toString().equals(startUserId.toString())) { logReadDo.setReadUserId(user.getUserId());
logReadDo.setReadUserId(user.getUserId());
}
logReadDo.setReadStatus(0); logReadDo.setReadStatus(0);
logReadDo.setCreator(String.valueOf(startUserId));
return logReadDo; return logReadDo;
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());

View File

@ -76,11 +76,12 @@
AND read_user.data_scope != 5 AND read_user.data_scope != 5
) result ) result
WHERE WHERE
1= 1 result.user_id != #{userId}
and ( LOCATE(#{deptId},result.ids) and result.data_scope = 4 ) and
( ( LOCATE(#{deptId},result.ids) and result.data_scope = 4 )
or ( LOCATE(#{deptId},result.ids) and result.data_scope = 2 ) or ( LOCATE(#{deptId},result.ids) and result.data_scope = 2 )
or ( result.dept_id = #{deptId} and result.data_scope = 3 ) or ( result.dept_id = #{deptId} and result.data_scope = 3 )
or result.data_scope = 1 or result.data_scope = 1 )
</select> </select>
<select id="selectPageResult" resultType="cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO"> <select id="selectPageResult" resultType="cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO">
@ -97,9 +98,6 @@
LEFT JOIN (SELECT log_instance_id, COUNT(log_instance_id) AS unReadCount FROM work_log_read where read_status = 0 GROUP BY log_instance_id ) AS d ON a.id = d.log_instance_id LEFT JOIN (SELECT log_instance_id, COUNT(log_instance_id) AS unReadCount FROM work_log_read where read_status = 0 GROUP BY log_instance_id ) AS d ON a.id = d.log_instance_id
LEFT JOIN (SELECT work_log_id, COUNT(work_log_id) AS comment FROM work_log_comment GROUP BY work_log_id) AS b ON a.id = b.work_log_id LEFT JOIN (SELECT work_log_id, COUNT(work_log_id) AS comment FROM work_log_comment GROUP BY work_log_id) AS b ON a.id = b.work_log_id
<where> <where>
<if test="logId != null">
and a.id = #{logId}
</if>
<if test="reqVO.type != null"> <if test="reqVO.type != null">
and a.type = #{reqVO.type} and a.type = #{reqVO.type}
</if> </if>