diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogReadDo.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogReadDo.java index 5b6321cf..61a916ea 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogReadDo.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogReadDo.java @@ -51,4 +51,9 @@ public class LogReadDo extends BaseDO { * 1:已读 */ private Integer readStatus; + + /** + * 是否删除 + */ + private Boolean deleted; } 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 46d5ff8d..d659d7c4 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,14 +5,18 @@ 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.MPJLambdaWrapperX; 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.dept.DeptDO; +import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO; +import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO; import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogInstanceDO; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogReadDo; import cn.iocoder.yudao.module.system.service.worklog.dto.LogReadUserRespDTO; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; import java.util.List; @@ -41,15 +45,56 @@ public interface LogInstanceMapper extends BaseMapperX { .in(LogInstanceDO::getTime, dateList)); } -// List selectPageResult( @Param("reqVO") LogInstancePageReqVO reqVO, -// @Param("userId") Long userId, -// @Param("ids") List ids); + default IPage selectPageResult(@Param("page") IPage page, + @Param("reqVO") LogInstancePageReqVO reqVO, + @Param("userId") Long userId, + @Param("pagingType") Integer pagingType, + @Param("userIds") List userIds) { - IPage selectPageResult(@Param("page") IPage page, - @Param("reqVO") LogInstancePageReqVO reqVO, - @Param("userId") Long userId, - @Param("pagingType") Integer pagingType, - @Param("userIds") List userIds); + MPJLambdaWrapperX queryWrapper = new MPJLambdaWrapperX<>(); + queryWrapper.selectAll(LogInstanceDO.class); + queryWrapper.selectAs("e.read_status", LogInstanceRespVO::getReadStatus); + queryWrapper.selectAs("COALESCE(c.readCount, 0)", LogInstanceRespVO::getReadCount); + queryWrapper.selectAs("COALESCE(d.unreadCount, 0)", LogInstanceRespVO::getUnreadCount); + queryWrapper.selectAs("COALESCE(b.comment, 0)", LogInstanceRespVO::getComment); + queryWrapper.innerJoin(UserPostDO.class, "userPost", UserPostDO::getUserId, LogInstanceDO::getStartUserId); + queryWrapper.innerJoin(DeptDO.class, "dept", DeptDO::getId, LogInstanceDO::getDeptId); + queryWrapper.innerJoin(PostDO.class, "post", PostDO::getId, UserPostDO::getPostId); + queryWrapper.leftJoin(LogReadDo.class, "e", on -> on + .eq(LogReadDo::getLogInstanceId, LogInstanceDO::getId) + .eq(LogReadDo::getReadUserId, userId) + .eq(LogReadDo::getDeleted, 0)); + queryWrapper.leftJoin("(SELECT log_instance_id, COUNT(log_instance_id) AS readCount FROM work_log_read where read_status = 1 GROUP BY log_instance_id) c on t.id = c.log_instance_id"); + queryWrapper.leftJoin("(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 t.id = d.log_instance_id"); + queryWrapper.leftJoin("(SELECT work_log_id, COUNT(work_log_id) AS comment FROM work_log_comment GROUP BY work_log_id) AS b ON t.id = b.work_log_id"); + queryWrapper.eqIfPresent(LogInstanceDO::getDeptId, reqVO.getDeptId()); + queryWrapper.eqIfPresent(LogInstanceDO::getFormId, reqVO.getFormId()); + queryWrapper.eqIfPresent(LogInstanceDO::getStartUserId, reqVO.getStartUserId()); + queryWrapper.betweenIfPresent(LogInstanceDO::getTime, reqVO.getCreateTime()); + queryWrapper.inIfPresent(LogInstanceDO::getStartUserId, userIds); + + if (reqVO.getReadStatus() != null) { + queryWrapper.eq("e.read_status", reqVO.getReadStatus()); + } + if (reqVO.getIsProduce() != null && reqVO.getIsProduce() == 1) { + queryWrapper.like(DeptDO::getFlag, "166"); + } + if (reqVO.getIsProduce() != null && reqVO.getIsProduce() == 2) { + queryWrapper.notLike(DeptDO::getFlag, "166"); + } + if (pagingType == 0) { + queryWrapper.ne(LogInstanceDO::getStartUserId, userId); + } + if (pagingType == 1) { + queryWrapper.eq(LogInstanceDO::getStartUserId, userId); + } + queryWrapper.groupBy(LogInstanceDO::getId); + queryWrapper.orderByDesc(LogInstanceDO::getTime); + queryWrapper.orderByAsc(PostDO::getSort); + queryWrapper.orderByDesc(LogInstanceDO::getCreateTime); + + return selectJoinPage(page, LogInstanceRespVO.class, queryWrapper); + } default PageResult selectPage(LogInstancePageReqVO reqVO, Long userId, Integer pagingType, List userIds) { 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 92ffd7d3..ce3cf11a 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,9 +244,6 @@ public class LogInstanceServiceImpl implements LogInstanceService { leaderUserIds = adminUserService.getUserByBoss(); } -// PageResult pageList = logInstanceMapper.selectPage(pageReqVO, getLoginUserId(), pagingType, leaderUserIds); -// List records = logInstanceMapper.selectPageResult(pageReqVO, getLoginUserId(), convertList(pageList.getList(), LogInstanceDO::getId)); - Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); IPage pageList = logInstanceMapper.selectPageResult(page, pageReqVO, getLoginUserId(), pagingType, leaderUserIds); List records = pageList.getRecords(); 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 ea9e0788..b3491b5b 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 @@ -94,54 +94,6 @@ or result.data_scope = 1 ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file