From 4f45f29e6b53f4c01b414409c5000ff4e212b3d9 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 05 六月 2026 13:36:54 +0800
Subject: [PATCH] 增加eip
---
report-server/src/main/java/com/ruoyi/report/service/impl/WorkStatisticsServiceImpl.java | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 103 insertions(+), 0 deletions(-)
diff --git a/report-server/src/main/java/com/ruoyi/report/service/impl/WorkStatisticsServiceImpl.java b/report-server/src/main/java/com/ruoyi/report/service/impl/WorkStatisticsServiceImpl.java
new file mode 100644
index 0000000..578fed3
--- /dev/null
+++ b/report-server/src/main/java/com/ruoyi/report/service/impl/WorkStatisticsServiceImpl.java
@@ -0,0 +1,103 @@
+package com.ruoyi.report.service.impl;
+
+import cn.hutool.core.date.DateUtil;
+import com.ruoyi.report.dto.WorkStatisticsDto;
+import com.ruoyi.report.mapper.WorkStatisticsMapper;
+import com.ruoyi.report.service.WorkStatisticsService;
+import com.ruoyi.report.vo.WorkStatisticsVo;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+/**
+ * 宸ヤ綔缁熻鏈嶅姟瀹炵幇
+ */
+@Service
+@AllArgsConstructor
+public class WorkStatisticsServiceImpl implements WorkStatisticsService {
+
+ private WorkStatisticsMapper workStatisticsMapper;
+
+ @Override
+ public List<WorkStatisticsVo> getByUser(WorkStatisticsDto dto) {
+ // 澶勭悊鏃堕棿绫诲瀷
+ processDateType(dto);
+
+ List<WorkStatisticsVo> list = workStatisticsMapper.getByUser(dto);
+
+ // 璁$畻鍙婃椂鐜�
+ for (WorkStatisticsVo vo : list) {
+ int timely = vo.getTimelyCount() != null ? vo.getTimelyCount() : 0;
+ int overdue = vo.getOverdueCount() != null ? vo.getOverdueCount() : 0;
+ int total = timely + overdue;
+ if (total > 0) {
+ vo.setTimelyRate((timely * 100.0) / total);
+ } else {
+ vo.setTimelyRate(0.0);
+ }
+ }
+
+ return list;
+ }
+
+ @Override
+ public List<Map<String, Object>> getTimelyRate(WorkStatisticsDto dto) {
+ processDateType(dto);
+ return workStatisticsMapper.getTimelyRate(dto);
+ }
+
+ @Override
+ public Map<String, Object> getTrend(WorkStatisticsDto dto) {
+ processDateType(dto);
+
+ List<Map<String, Object>> trendData = workStatisticsMapper.getTrend(dto);
+
+ Map<String, Object> result = new HashMap<>();
+ List<String> dates = new ArrayList<>();
+ List<Integer> sampleCounts = new ArrayList<>();
+ List<Integer> itemCounts = new ArrayList<>();
+
+ for (Map<String, Object> item : trendData) {
+ dates.add((String) item.get("date"));
+ sampleCounts.add(((Number) item.get("sampleCount")).intValue());
+ itemCounts.add(((Number) item.get("itemCount")).intValue());
+ }
+
+ result.put("dates", dates);
+ result.put("sampleCounts", sampleCounts);
+ result.put("itemCounts", itemCounts);
+ return result;
+ }
+
+ /**
+ * 澶勭悊鏃堕棿绫诲瀷
+ */
+ private void processDateType(WorkStatisticsDto dto) {
+ if (dto.getStartTime() != null && dto.getEndTime() != null) {
+ return;
+ }
+
+ String dateType = dto.getDateType();
+ if (dateType == null || dateType.isEmpty()) {
+ dateType = "2"; // 榛樿鏈湀
+ }
+
+ Date now = new Date();
+ switch (dateType) {
+ case "1": // 鏈懆
+ dto.setStartTime(DateUtil.format(DateUtil.beginOfWeek(now), "yyyy-MM-dd HH:mm:ss"));
+ dto.setEndTime(DateUtil.format(DateUtil.endOfWeek(now), "yyyy-MM-dd HH:mm:ss"));
+ break;
+ case "2": // 鏈湀
+ dto.setStartTime(DateUtil.format(DateUtil.beginOfMonth(now), "yyyy-MM-dd HH:mm:ss"));
+ dto.setEndTime(DateUtil.format(DateUtil.endOfMonth(now), "yyyy-MM-dd HH:mm:ss"));
+ break;
+ case "3": // 鏈勾
+ dto.setStartTime(DateUtil.format(DateUtil.beginOfYear(now), "yyyy-MM-dd HH:mm:ss"));
+ dto.setEndTime(DateUtil.format(DateUtil.endOfYear(now), "yyyy-MM-dd HH:mm:ss"));
+ break;
+ }
+ }
+
+}
\ No newline at end of file
--
Gitblit v1.9.3