获取我管理的模版调整 - 时间筛选

This commit is contained in:
aikai 2024-04-15 20:54:38 +08:00
parent 114be06ea2
commit 0249884e96
4 changed files with 23 additions and 57 deletions

View File

@ -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<WorkLogCommentDO>()
.eq(WorkLogCommentDO::getUserId, userId)));
.eq(WorkLogCommentDO::getUserId, userId)
.eq(WorkLogCommentDO::getType, 0)));
Integer replyNum = Math.toIntExact(workLogCommentMapper.selectCount(new LambdaQueryWrapper<WorkLogCommentDO>()
.eq(WorkLogCommentDO::getCommentUserId, userId)));
.eq(WorkLogCommentDO::getUserId, userId)
.eq(WorkLogCommentDO::getType, 1)));
vo.setCommentNum(commentNum);
vo.setReplyNum(replyNum);
vo.setAllNum(commentNum + replyNum);

View File

@ -61,22 +61,6 @@ public interface LogInstanceService {
*/
List<DeptRespVO> getDeptInfo();
/**
* 获取我管理的日志列表(时间区间)
*
* @return
*/
List<LogInstanceDO> myManageLogInstanceByTimeRange(Long formId, Integer type, Date thisDate);
/**
* 获取我管理的日志列表(时间区间)
*
* @param fromId
* @param beginTime
* @param endTime
* @return
*/
List<LogInstanceDO> myManageLogInstanceByTimeRange(Long fromId, Date beginTime, Date endTime);
List<LogInstanceDO> getNeedWriteLogInstanceByTimeRange(Long fromId, List<String> time, Long userId);

View File

@ -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<LogInstanceDO> 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<LogInstanceDO> myManageLogInstanceByTimeRange(Long fromId, Date beginTime, Date endTime) {
return logInstanceMapper.myManageLogInstanceByTimeRange(fromId, beginTime, endTime);
}
@Override
public List<LogInstanceDO> getNeedWriteLogInstanceByTimeRange(Long fromId, List<String> time, Long userId) {
return logInstanceMapper.selectList(new LambdaQueryWrapper<LogInstanceDO>()
.eq(LogInstanceDO::getFormId, fromId)
.in(LogInstanceDO::getTime, time)
.eq(LogInstanceDO::getStartUserId, userId));
.eq(userId != null, LogInstanceDO::getStartUserId, userId));
}
}

View File

@ -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<LogInstanceDO> 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<LogUseDO>()
.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<String> 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<String> dateList = DateUtils.betweenDayList(beginTime, endTime);
List<LogInstanceDO> 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);
}