diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogInstanceDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogInstanceDO.java index 133d9fb6..6c991f20 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogInstanceDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogInstanceDO.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.List; @@ -75,4 +76,28 @@ public class LogInstanceDO extends BaseDO { */ @TableField(typeHandler = JacksonTypeHandler.class) private List fileItems ; + + /** + * 阅读状态, 0:未读、1:已读 + */ + @TableField(exist = false) + private String readStatus; + + /** + * 评论数 + */ + @TableField(exist = false) + private Integer comment; + + /** + * 已读人数 + */ + @TableField(exist = false) + private Integer readCount; + + /** + * 未读人数 + */ + @TableField(exist = false) + private Integer unreadCount; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java index 5d3d51fc..a8a67d93 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java @@ -5,10 +5,12 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; 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.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; 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.dal.dataobject.worklog.LogInstanceDO; import cn.iocoder.yudao.module.system.service.worklog.dto.LogReadUserRespDTO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; @@ -41,11 +43,32 @@ public interface LogInstanceMapper extends BaseMapperX { .in(LogInstanceDO::getTime, dateList)); } - IPage selectPageResult(@Param("page") Page page, - @Param("reqVO") LogInstancePageReqVO reqVO, + List selectPageResult( @Param("reqVO") LogInstancePageReqVO reqVO, @Param("userId") Long userId, - @Param("pagingType") Integer pagingType, - @Param("userIds") List userIds); + @Param("ids") List ids); + + default PageResult selectPage(LogInstancePageReqVO reqVO, Long userId, + Integer pagingType, List userIds) { + + LambdaQueryWrapperX queryWrapper = new LambdaQueryWrapperX() + .eqIfPresent(LogInstanceDO::getFormId, reqVO.getFormId()) + .eqIfPresent(LogInstanceDO::getDeptId, reqVO.getDeptId()) + .eqIfPresent(LogInstanceDO::getStartUserId, reqVO.getStartUserId()) + .betweenIfPresent(LogInstanceDO::getTime, reqVO.getCreateTime()); + + if (pagingType == 0) { + queryWrapper.ne(LogInstanceDO::getStartUserId, userId); + } else if (pagingType == 1) { + queryWrapper.eq(LogInstanceDO::getStartUserId, userId); + } + + if (reqVO.getIsBoss() != null && reqVO.getIsProduce() == null) { + queryWrapper.inIfPresent(LogInstanceDO::getStartUserId, userIds); + } + + return selectPage(reqVO, queryWrapper); + + } @DataPermission(enable = false) List selectRaedUser(@Param("userId")Long userId, @Param("deptId")Long deptId); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java index 29512d09..f125e959 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java @@ -244,10 +244,8 @@ public class LogInstanceServiceImpl implements LogInstanceService { leaderUserIds = adminUserService.getUserByBoss(); } - Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); - IPage pageList = logInstanceMapper.selectPageResult(page, pageReqVO, getLoginUserId(), pagingType, leaderUserIds); - - List records = pageList.getRecords(); + PageResult pageList = logInstanceMapper.selectPage(pageReqVO, getLoginUserId(), pagingType, leaderUserIds); + List records = logInstanceMapper.selectPageResult(pageReqVO, getLoginUserId(), convertList(pageList.getList(), LogInstanceDO::getId)); if (!records.isEmpty()) { //模版ids过滤 @@ -307,7 +305,10 @@ public class LogInstanceServiceImpl implements LogInstanceService { }); } - return pageList; + IPage pageListVO = new Page<>(); + pageListVO.setRecords(records); + pageListVO.setTotal(pageList.getTotal()); + return pageListVO; } @Override diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogInstanceMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogInstanceMapper.xml index 469451ab..0c9dea17 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogInstanceMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogInstanceMapper.xml @@ -112,6 +112,15 @@ LEFT JOIN (SELECT work_log_id, COUNT(work_log_id) AS comment FROM work_log_comment where deleted = 0 GROUP BY work_log_id) AS b ON a.id = b.work_log_id a.deleted = 0 + + and a.id in + + #{ids} + + + + and a.id = null + AND a.start_user_id = userPost.user_id AND userPost.post_id = post.id AND a.dept_id = dept.id @@ -121,38 +130,9 @@ AND dept.flag NOT LIKE '%166%' - - and a.form_id = #{reqVO.formId} - - - and a.dept_id = #{reqVO.deptId} - - - and a.start_user_id = #{reqVO.startUserId} - - - - and a.time >= #{reqVO.createTime[0]} - - - and a.time <= #{reqVO.createTime[1]} - - and e.read_status = #{reqVO.readStatus} - - and a.start_user_id != #{userId} - - - and a.start_user_id = #{userId} - - - and a.start_user_id in - - #{userId} - - GROUP BY a.id ORDER BY