From 0249884e9600ac2cec4e7de5d121975b381a9a25 Mon Sep 17 00:00:00 2001 From: aikai Date: Mon, 15 Apr 2024 20:54:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=88=91=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9A=84=E6=A8=A1=E7=89=88=E8=B0=83=E6=95=B4=20-=20=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../comment/WorkLogCommentServiceImpl.java | 6 ++- .../service/worklog/LogInstanceService.java | 16 ------- .../worklog/LogInstanceServiceImpl.java | 16 +------ .../worklog/LogStatisticsServiceImpl.java | 42 ++++++++----------- 4 files changed, 23 insertions(+), 57 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/comment/WorkLogCommentServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/comment/WorkLogCommentServiceImpl.java index 9edc4631..7f7d5086 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/comment/WorkLogCommentServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/comment/WorkLogCommentServiceImpl.java @@ -122,9 +122,11 @@ public class WorkLogCommentServiceImpl implements WorkLogCommentService { Long userId = WebFrameworkUtils.getLoginUserId(); CommentTypeCountVO vo = new CommentTypeCountVO(); Integer commentNum = Math.toIntExact(workLogCommentMapper.selectCount(new LambdaQueryWrapper() - .eq(WorkLogCommentDO::getUserId, userId))); + .eq(WorkLogCommentDO::getUserId, userId) + .eq(WorkLogCommentDO::getType, 0))); Integer replyNum = Math.toIntExact(workLogCommentMapper.selectCount(new LambdaQueryWrapper() - .eq(WorkLogCommentDO::getCommentUserId, userId))); + .eq(WorkLogCommentDO::getUserId, userId) + .eq(WorkLogCommentDO::getType, 1))); vo.setCommentNum(commentNum); vo.setReplyNum(replyNum); vo.setAllNum(commentNum + replyNum); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceService.java index 5074e9f9..ca15f451 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceService.java @@ -61,22 +61,6 @@ public interface LogInstanceService { */ List getDeptInfo(); - /** - * 获取我管理的日志列表(时间区间) - * - * @return - */ - List myManageLogInstanceByTimeRange(Long formId, Integer type, Date thisDate); - - /** - * 获取我管理的日志列表(时间区间) - * - * @param fromId - * @param beginTime - * @param endTime - * @return - */ - List myManageLogInstanceByTimeRange(Long fromId, Date beginTime, Date endTime); List getNeedWriteLogInstanceByTimeRange(Long fromId, List time, Long userId); 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 884576d2..06aba662 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 @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.system.service.worklog; -import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONObject; import cn.iocoder.yudao.framework.common.util.date.DateUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; @@ -150,7 +149,7 @@ public class LogInstanceServiceImpl implements LogInstanceService { if (createReqVO.getType() == 1) { dateList.add(createReqVO.getTime()); - }else { + } else { String[] times = createReqVO.getTime().split(","); dateList = DateUtils.betweenDayStrList(times[0], times[1]); @@ -335,23 +334,12 @@ public class LogInstanceServiceImpl implements LogInstanceService { return logInstanceRespVO; } - @Override - public List myManageLogInstanceByTimeRange(Long fromId, Integer type, Date thisDate) { - Date beginTime = type == 1 ? DateUtil.beginOfDay(thisDate) : DateUtil.beginOfWeek(thisDate); - Date endTime = type == 1 ? DateUtil.endOfDay(thisDate) : DateUtil.endOfWeek(thisDate); - return logInstanceMapper.myManageLogInstanceByTimeRange(fromId, beginTime, endTime); - } - - @Override - public List myManageLogInstanceByTimeRange(Long fromId, Date beginTime, Date endTime) { - return logInstanceMapper.myManageLogInstanceByTimeRange(fromId, beginTime, endTime); - } @Override public List getNeedWriteLogInstanceByTimeRange(Long fromId, List time, Long userId) { return logInstanceMapper.selectList(new LambdaQueryWrapper() .eq(LogInstanceDO::getFormId, fromId) .in(LogInstanceDO::getTime, time) - .eq(LogInstanceDO::getStartUserId, userId)); + .eq(userId != null, LogInstanceDO::getStartUserId, userId)); } } \ No newline at end of file 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 50c7991d..308ca0ca 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 @@ -23,7 +23,6 @@ import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.time.ZoneId; import java.util.*; import java.util.stream.Collectors; @@ -108,57 +107,50 @@ public class LogStatisticsServiceImpl implements LogStatisticsService { Date thisDate = new Date(); - Date beginDate = DateUtil.beginOfDay(thisDate); - Date beginWeek = DateUtil.beginOfWeek(thisDate); + Date beginTime = null; + Date endTime = null; for (LogFormDO logFormDO : formList) { //拿到模版规则 LogRuleDO logRuleDO = ruleMap.get(logFormDO.getRuleId()); - //判断当前模版是什么类型 - 然后再做统计 - //查询日志实例表 关联日志模版使用者作为数据权限过滤 - List instanceDOS = logInstanceService.myManageLogInstanceByTimeRange(logFormDO.getId(), logRuleDO.getType(), thisDate); LogStatisticsModelVO vo = new LogStatisticsModelVO(); BeanUtil.copyProperties(logFormDO, vo); vo.setType(logRuleDO.getType()); //查询下应该提交多少日志实例 - 直接通过模版id查询使用表 Integer num = Math.toIntExact(logUseMapper.selectCount(new LambdaQueryWrapper() .eq(LogUseDO::getFormId, logFormDO.getId()))); + boolean flag = false; 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))) { - // -- 拼接获取到结束时间 - Date endTime = DateUtils.buildHHmmTime(logRuleDO.getEndTime()); - Date statisticalTime = DateUtils.buildHHmmTime(logRuleDO.getStatisticalTime()); - //按时提交数量 - Integer onTimeNum = Math.toIntExact(instanceDOS.stream().filter(a -> DateUtil.isIn(Date.from(a.getCreateTime().atZone(ZoneId.systemDefault()).toInstant()), beginDate, endTime)).count()); - //迟交数量 - Integer lateNum = Math.toIntExact(instanceDOS.stream().filter(a -> DateUtil.isIn(Date.from(a.getCreateTime().atZone(ZoneId.systemDefault()).toInstant()), endTime, statisticalTime)).count()); - //未提交数量 - Integer unSubmittedNum = Math.max((num - onTimeNum - lateNum), 0); - //按天统计 - vo.setOnTimeNum(onTimeNum); - vo.setUnSubmittedNum(unSubmittedNum); - vo.setLateNum(lateNum); + // -- 判断今天是周几 和 需要提交的周做对比 + beginTime = DateUtil.beginOfDay(thisDate); + endTime = DateUtil.endOfDay(thisDate); + flag = true; vo.setCommitTimeRange("当天" + logRuleDO.getEndTime() + "截止提交"); } else { vo.setCommitTimeRange("当天不需要提交"); } } else if (logRuleDO.getType() == 2) { - // -- 拼接获取到结束时间 - Date endTime = DateUtils.buildWeekHHmmTime(logRuleDO.getEndTime()); - Date statisticalTime = DateUtils.buildWeekHHmmTime(logRuleDO.getStatisticalTime()); + beginTime = DateUtil.beginOfWeek(thisDate); + endTime = DateUtil.endOfWeek(thisDate); + flag = true; + vo.setCommitTimeRange("每周" + DateUtil.dayOfWeekEnum(endTime).toChinese() + (logRuleDO.getEndTime().split(",")[1]) + "截止提交"); + } + if (flag) { + List dateList = DateUtils.betweenDayList(beginTime, endTime); + List instanceDOS = logInstanceService.getNeedWriteLogInstanceByTimeRange(logFormDO.getId(), dateList, null); //按时提交数量 - Integer onTimeNum = Math.toIntExact(instanceDOS.stream().filter(a -> DateUtil.isIn(Date.from(a.getCreateTime().atZone(ZoneId.systemDefault()).toInstant()), beginWeek, endTime)).count()); + Integer onTimeNum = Math.toIntExact(instanceDOS.stream().filter(a -> a.getStatus() == 1).count()); //迟交数量 - Integer lateNum = Math.toIntExact(instanceDOS.stream().filter(a -> DateUtil.isIn(Date.from(a.getCreateTime().atZone(ZoneId.systemDefault()).toInstant()), endTime, statisticalTime)).count()); + Integer lateNum = Math.toIntExact(instanceDOS.stream().filter(a -> a.getStatus() == 2).count()); //未提交数量 Integer unSubmittedNum = Math.max((num - onTimeNum - lateNum), 0); //按天统计 vo.setOnTimeNum(onTimeNum); vo.setUnSubmittedNum(unSubmittedNum); vo.setLateNum(lateNum); - vo.setCommitTimeRange("每周" + DateUtil.dayOfWeekEnum(endTime).toChinese() + (logRuleDO.getEndTime().split(",")[1]) + "截止提交"); } list.add(vo); }