获取我管理的模版调整 - 时间筛选
This commit is contained in:
parent
114be06ea2
commit
0249884e96
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user