|
@@ -0,0 +1,75 @@
|
|
|
|
|
+package cn.iocoder.yudao.module.iscs.service.home;
|
|
|
|
|
+
|
|
|
|
|
+import cn.hutool.core.date.LocalDateTimeUtil;
|
|
|
|
|
+import cn.iocoder.yudao.module.iscs.controller.admin.home.vo.manager.WorkCompletedVO;
|
|
|
|
|
+import cn.iocoder.yudao.module.iscs.controller.admin.home.vo.manager.WorkCountVO;
|
|
|
|
|
+import cn.iocoder.yudao.module.iscs.dal.dataobject.workdesign.WorkflowWorkNodeDO;
|
|
|
|
|
+import cn.iocoder.yudao.module.iscs.service.workdesign.WorkflowWorkNodeService;
|
|
|
|
|
+import cn.iocoder.yudao.module.iscs.utils.DateUtils;
|
|
|
|
|
+import cn.iocoder.yudao.module.iscs.utils.RecentDateUtils;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
|
|
+
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 管理员首页
|
|
|
|
|
+ *
|
|
|
|
|
+ * @author 博士安全
|
|
|
|
|
+ */
|
|
|
|
|
+@Service
|
|
|
|
|
+@Validated
|
|
|
|
|
+public class ManagerHomeServiceImpl implements ManagerHomeService {
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private WorkflowWorkNodeService workflowWorkNodeService;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public WorkCountVO getManagerWorkCount() {
|
|
|
|
|
+ // 进行中
|
|
|
|
|
+ int inProgressCount = (int)workflowWorkNodeService.count(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
|
|
+ .eq(WorkflowWorkNodeDO::getApprovalStatus, "running"));
|
|
|
|
|
+ // 完成计数
|
|
|
|
|
+ int completedCount = (int)workflowWorkNodeService.count(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
|
|
+ .eq(WorkflowWorkNodeDO::getApprovalStatus, "approved"));
|
|
|
|
|
+ // 逾期计数(超过24小时未审核完成)
|
|
|
|
|
+ int overdueCount = (int)workflowWorkNodeService.count(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
|
|
+ .lt(WorkflowWorkNodeDO::getStartTime, LocalDateTime.now().minusHours(48)));
|
|
|
|
|
+ // 组装数据
|
|
|
|
|
+ WorkCountVO workCountVO = new WorkCountVO();
|
|
|
|
|
+ workCountVO.setInProgressCount(inProgressCount);
|
|
|
|
|
+ workCountVO.setCompletedCount(completedCount);
|
|
|
|
|
+ workCountVO.setOverdueCount(overdueCount);
|
|
|
|
|
+ return workCountVO;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<WorkCompletedVO> getManagerDayWorkCount() {
|
|
|
|
|
+ // 获取最近30天
|
|
|
|
|
+ List<LocalDate> last30Days = RecentDateUtils.getLast30Days();
|
|
|
|
|
+ // 开始时间
|
|
|
|
|
+ String startTime = last30Days.get(0) + " 00:00:00";
|
|
|
|
|
+ String endTime = last30Days.get(29) + " 23:59:59";
|
|
|
|
|
+ // 查询时间内完成的作业
|
|
|
|
|
+ List<WorkflowWorkNodeDO> list = workflowWorkNodeService.list(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
|
|
+ .ge(WorkflowWorkNodeDO::getEndTime, startTime)
|
|
|
|
|
+ .le(WorkflowWorkNodeDO::getCreateTime, endTime));
|
|
|
|
|
+ List<WorkCompletedVO> workCompletedVOS = new ArrayList<>();
|
|
|
|
|
+ for (LocalDate last30Day : last30Days) {
|
|
|
|
|
+ int count = (int)list.stream().filter(o -> LocalDateTimeUtil.format(o.getEndTime(), DateUtils.YYYY_MM_DD).equals(last30Day.toString())).count();
|
|
|
|
|
+ WorkCompletedVO workCompletedVO = new WorkCompletedVO();
|
|
|
|
|
+ workCompletedVO.setDay(last30Day.toString());
|
|
|
|
|
+ workCompletedVO.setCompletedCount(count);
|
|
|
|
|
+ workCompletedVOS.add(workCompletedVO);
|
|
|
|
|
+ }
|
|
|
|
|
+ return workCompletedVOS;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+}
|