diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java index c69915ac..d2879650 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java @@ -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.LogInstanceSaveReqVO; 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.worklog.LogInstanceService; import cn.iocoder.yudao.module.system.service.worklog.LogReadService; @@ -84,7 +85,16 @@ public class LogInstanceController { //查看日志详情时,变更当前用户日志的阅读状态 logReadService.updateReadStatus(id, getLoginUserId()); + //获取日志详情 LogInstanceRespVO logInstance = logInstanceService.getLogInstance(id); + + //用户日志发起人详情 + AdminUserDO userDO = adminUserService.getUser(logInstance.getStartUserId()); + //设置日志发起人名称 + logInstance.setStartUserName(userDO.getNickname()); + //设置日志发起人头像 + logInstance.setAvatar(userDO.getAvatar()); + return success(logInstance); } @@ -145,9 +155,12 @@ public class LogInstanceController { List> readUserVO = new ArrayList<>(); + //获取可查看者用户列表 Map> usrMap = logReadService.getUserId(logId); + //获取未读用户详情 List unReadUserInfo = BeanUtils.toBean(adminUserService.getUserList(usrMap.get(0)), UserRespVO.class); + //获取已读用户详情 List readUserInfo = BeanUtils.toBean(adminUserService.getUserList(usrMap.get(1)), UserRespVO.class); Map unReadMap = new HashMap<>(); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogStatisticsController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogStatisticsController.java index 655d39e5..71aeabb9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogStatisticsController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogStatisticsController.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.LogStatisticsDetailsListDTO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.NeedWriteHistoryDTO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsDetailsListVO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsDetailsVO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsExcelVO; @@ -54,6 +55,13 @@ public class LogStatisticsController { return success(list); } + @GetMapping("/getNeedWriteHistory") + @Operation(summary = "获取需要填写的历史记录") + public CommonResult> getNeedWriteHistory(@ModelAttribute NeedWriteHistoryDTO dto) { + List list = logStatisticsService.getNeedWriteHistory(dto); + return success(list); + } + @GetMapping("/export-excel") @Operation(summary = "导出日志规则 Excel") @OperateLog(type = EXPORT) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/dto/statistics/NeedWriteHistoryDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/dto/statistics/NeedWriteHistoryDTO.java index 1301d21f..dfdae276 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/dto/statistics/NeedWriteHistoryDTO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/dto/statistics/NeedWriteHistoryDTO.java @@ -19,12 +19,15 @@ public class NeedWriteHistoryDTO { private Integer type; @Schema(description = "开始时间 格式yyyy-MM-dd") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) + @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT) private Date beginTime; @Schema(description = "结束时间 格式yyyy-MM-dd") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT) private Date endTime; + + @Schema(description = "当前用户id", hidden = true) + private Long userId; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstancePageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstancePageReqVO.java index 92e013e2..65878d4f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstancePageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstancePageReqVO.java @@ -23,12 +23,6 @@ public class LogInstancePageReqVO extends PageParam { @Schema(description = "日志发起人的部门编号", example = "24292") 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日报") private String name; @@ -45,6 +39,6 @@ public class LogInstancePageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; - @Schema(description = "未读", example = "0") - private Integer unRead; + @Schema(description = "已读、未读 | 0:未读、1:已读", example = "0") + private Integer readStatus; } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statistics/LogStatisticsModelVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statistics/LogStatisticsModelVO.java index 8d976760..f01a8b35 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statistics/LogStatisticsModelVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statistics/LogStatisticsModelVO.java @@ -24,5 +24,8 @@ public class LogStatisticsModelVO extends LogFormDO { @Schema(description = "模版类型 1日报 2周报 3月报") private Integer type; + + @Schema(description = "时间 格式yyyy-MM-dd") + private String time; } 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 0144d16c..133d9fb6 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,7 +6,6 @@ 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; @@ -41,15 +40,6 @@ public class LogInstanceDO extends BaseDO { */ private Long deptId; - /** - * 日志发起人的用户名称 - */ - private String startUserName; - - /** - * 用户头像 - */ - private String avatar; /** * 日志名称 */ diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogStatisticsDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogStatisticsDO.java index cf477fd6..358a0730 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogStatisticsDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogStatisticsDO.java @@ -60,4 +60,9 @@ public class LogStatisticsDO extends BaseDO { */ private String time; + /** + * 提交时间区间(避免后面修改了规则后历史数据造成歧义) + */ + private String commitTimeRange; + } \ No newline at end of file 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 313112c8..0227b550 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 @@ -40,13 +40,10 @@ public interface LogInstanceMapper extends BaseMapperX { } IPage selectPageResult(@Param("page") Page page, @Param("reqVO") LogInstancePageReqVO reqVO, - @Param("userId") Long userId, @Param("pagingType") Integer pagingType, @Param("logId") Long logId); - - LogInstanceRespVO selectPageResult(@Param("reqVO") LogInstancePageReqVO reqVO, @Param("userId") Long userId, - @Param("pagingType") Integer pagingType, @Param("logId") Long logId); + @Param("userId") Long userId, @Param("pagingType") Integer pagingType); @DataPermission(enable = false) - List selectRaedUser(Long deptId); + 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/dal/mysql/worklog/LogStatisticsMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogStatisticsMapper.java index 3e74c820..a6b5be45 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogStatisticsMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogStatisticsMapper.java @@ -3,7 +3,9 @@ package cn.iocoder.yudao.module.system.dal.mysql.worklog; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.NeedWriteHistoryDTO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsDetailsVO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsModelVO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsPageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogStatisticsDO; @@ -71,4 +73,13 @@ public interface LogStatisticsMapper extends BaseMapperX { * @return */ List getMyCurrentStatistics(@Param("userId") Long userId, @Param("formId") Long formId, @Param("dateList") List dateList); + + /** + * 获取我的日志历史记录 + * + * @param dto + * @param dateList + * @return + */ + List getNeedWriteHistory(@Param("dto") NeedWriteHistoryDTO dto, @Param("dateList") List dateList); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/worklog/LogStatisticsJob.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/worklog/LogStatisticsJob.java index f29e9e15..59a6fe09 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/worklog/LogStatisticsJob.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/worklog/LogStatisticsJob.java @@ -98,6 +98,7 @@ public class LogStatisticsJob { LogRuleDO logRuleDO) { // -- 统计时间到了 - 判断是否已经统计过了 - 只需要统计谁没有提交就行 - 把没提交的记录插入到统计表中 - 其他的在新增日志里面就插入到统计表即可 LogStatisticsRecordDO logStatisticsRecordDO = map.get(logFormDO.getId()); + String commitTimeRange = logStatisticsService.getCommitTimeRange(logRuleDO); if (logStatisticsRecordDO == null || logStatisticsRecordDO.getStatisticsFlag() == 0) { List users = logStatisticsService.getUnSubmittedUser(logFormDO.getId(), thisTime); for (AdminUserDO user : users) { @@ -109,6 +110,7 @@ public class LogStatisticsJob { logStatisticsDO.setType(logRuleDO.getType()); logStatisticsDO.setStatus(3); logStatisticsDO.setTime(thisTime); + logStatisticsDO.setCommitTimeRange(commitTimeRange); statisticsDOS.add(logStatisticsDO); } // -- 记录当前以统计 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 9c6b7904..2c56e923 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 @@ -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.LogInstanceRespVO; 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.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO; @@ -100,10 +101,6 @@ public class LogInstanceServiceImpl implements LogInstanceService { logInstance.setStartUserId(userId); //设置发起人部门编号 logInstance.setDeptId(adminUserDO.getDeptId()); - //设置发起人用户名称 - logInstance.setStartUserName(adminUserDO.getNickname()); - //设置发起人用户头像 - logInstance.setAvatar(adminUserDO.getAvatar()); //设置日志类型 logInstance.setType(logRuleDO.getType()); //设置日志名称 @@ -131,11 +128,22 @@ public class LogInstanceServiceImpl implements LogInstanceService { .setType(logRuleDO.getType()) .setTime(createReqVO.getTime()) .setStatus(logInstance.getStatus()) + .setCommitTimeRange(logStatisticsService.getCommitTimeRange(logRuleDO)) ); //创建日志时,查询可以查看发起人日志的用户组 用线程控制 new Thread(() -> { - List respDTOS = logInstanceMapper.selectRaedUser(adminUserDO.getDeptId()); + List 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()); }).start(); @@ -213,17 +221,18 @@ public class LogInstanceServiceImpl implements LogInstanceService { 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 public IPage getLogInstancePage(LogInstancePageReqVO pageReqVO, Integer pagingType) { Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); - IPage pageList = logInstanceMapper.selectPageResult(page, pageReqVO, getLoginUserId(), pagingType, null); + IPage pageList = logInstanceMapper.selectPageResult(page, pageReqVO, getLoginUserId(), pagingType); List records = pageList.getRecords(); if (!records.isEmpty()) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogReadServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogReadServiceImpl.java index eb908e5d..0628adfb 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogReadServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogReadServiceImpl.java @@ -35,10 +35,9 @@ public class LogReadServiceImpl implements LogReadService{ logReadDo.setLogInstanceId(logInstanceId); logReadDo.setStartUserId(startUserId); logReadDo.setReadUserDept(user.getDeptId()); - if (!user.getUserId().toString().equals(startUserId.toString())) { - logReadDo.setReadUserId(user.getUserId()); - } + logReadDo.setReadUserId(user.getUserId()); logReadDo.setReadStatus(0); + logReadDo.setCreator(String.valueOf(startUserId)); return logReadDo; }) .collect(Collectors.toList()); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsService.java index d0ccbe40..1ee00c89 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsService.java @@ -2,8 +2,10 @@ package cn.iocoder.yudao.module.system.service.worklog; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.LogStatisticsDetailsListDTO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.NeedWriteHistoryDTO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.*; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; +import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogRuleDO; import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogStatisticsDO; import javax.validation.Valid; @@ -93,4 +95,14 @@ public interface LogStatisticsService { * @param logStatisticsDO */ void saveOrUpdate(LogStatisticsDO logStatisticsDO); + + String getCommitTimeRange(LogRuleDO logRuleDO); + + /** + * 获取我填写的历史 + * + * @param dto + * @return + */ + List getNeedWriteHistory(NeedWriteHistoryDTO dto); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsServiceImpl.java index 308ca0ca..bfa6eab7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsServiceImpl.java @@ -8,8 +8,10 @@ import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.date.DateUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.LogStatisticsDetailsListDTO; +import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.NeedWriteHistoryDTO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.*; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.worklog.*; @@ -310,4 +312,35 @@ public class LogStatisticsServiceImpl implements LogStatisticsService { .eq(LogStatisticsDO::getTime, logStatisticsDO.getTime())); } } + + @Override + public String getCommitTimeRange(LogRuleDO logRuleDO) { + Date thisDate = new Date(); + if (logRuleDO.getType() == 1 && StrUtil.isNotEmpty(logRuleDO.getWeekDays())) { + // -- 判断今天是周几 和 需要提交的周做对比 + int weekNum = ((DateUtil.dayOfWeekEnum(thisDate).getValue() - 1) == 0 ? 7 : (DateUtil.dayOfWeekEnum(thisDate).getValue() - 1)); + List weekDays = Arrays.asList(logRuleDO.getWeekDays().split(",")); + if (weekDays.contains(Integer.toString(weekNum))) { + return "当天" + logRuleDO.getEndTime() + "截止提交"; + } else { + return "当天不需要提交"; + } + } else if (logRuleDO.getType() == 2) { + // -- 拼接获取到结束时间 + Date endTime = DateUtils.buildWeekHHmmTime(logRuleDO.getEndTime()); + return "每周" + DateUtil.dayOfWeekEnum(endTime).toChinese() + (logRuleDO.getEndTime().split(",")[1]) + "截止提交"; + } + return null; + } + + @Override + public List getNeedWriteHistory(NeedWriteHistoryDTO dto) { + List dateList = new ArrayList<>(); + if (dto.getBeginTime() != null && dto.getEndTime() != null) { + dateList = DateUtils.betweenDayList(dto.getBeginTime(), dto.getEndTime()); + } + dto.setUserId(SecurityFrameworkUtils.getLoginUserId()); + // 这里将区间转换为具体的日期 因为mysql BETWEEN 会导致索引失效 + return logStatisticsMapper.getNeedWriteHistory(dto, dateList); + } } \ No newline at end of file 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 254bb29c..f6548b3e 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 @@ -76,11 +76,12 @@ AND read_user.data_scope != 5 ) result WHERE - 1= 1 - and ( LOCATE(#{deptId},result.ids) and result.data_scope = 4 ) + result.user_id != #{userId} + and + ( ( LOCATE(#{deptId},result.ids) and result.data_scope = 4 ) or ( LOCATE(#{deptId},result.ids) and result.data_scope = 2 ) or ( result.dept_id = #{deptId} and result.data_scope = 3 ) - or result.data_scope = 1 + or result.data_scope = 1 ) + \ No newline at end of file