From 34558bb1c27afa83e3e901bd44c2f8ed366e8e59 Mon Sep 17 00:00:00 2001 From: gaoxq <376340421@qq.com> Date: Fri, 27 Mar 2026 17:38:01 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeesite/modules/apps/Module/NoteInfo.java | 22 ++ .../apps/web/SysAnalysisController.java | 2 +- .../apps/web/SysWorkbenchController.java | 76 +++++ web-vue/packages/biz/api/biz/myAnalysis.ts | 3 +- .../desktop/workbench/components/NoteInfo.vue | 260 +++++++++--------- 5 files changed, 232 insertions(+), 131 deletions(-) create mode 100644 web-api/src/main/java/com/jeesite/modules/apps/Module/NoteInfo.java create mode 100644 web-api/src/main/java/com/jeesite/modules/apps/web/SysWorkbenchController.java diff --git a/web-api/src/main/java/com/jeesite/modules/apps/Module/NoteInfo.java b/web-api/src/main/java/com/jeesite/modules/apps/Module/NoteInfo.java new file mode 100644 index 0000000..f6559b4 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/apps/Module/NoteInfo.java @@ -0,0 +1,22 @@ +package com.jeesite.modules.apps.Module; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class NoteInfo implements Serializable { + private String key; + private String label; + private Long value01; + private Long value02; + + public NoteInfo(){} + + public NoteInfo(String key,String label,Long value01,Long value02){ + this.key = key; + this.label = label; + this.value01 = value01; + this.value02 = value02; + } +} diff --git a/web-api/src/main/java/com/jeesite/modules/apps/web/SysAnalysisController.java b/web-api/src/main/java/com/jeesite/modules/apps/web/SysAnalysisController.java index 7e1298d..52be82f 100644 --- a/web-api/src/main/java/com/jeesite/modules/apps/web/SysAnalysisController.java +++ b/web-api/src/main/java/com/jeesite/modules/apps/web/SysAnalysisController.java @@ -13,7 +13,7 @@ import java.util.ArrayList; import java.util.List; @Controller -@RequestMapping(value = "${adminPath}/sys/analysis") +@RequestMapping(value = "${adminPath}/desktop/analysis") public class SysAnalysisController { @RequestMapping(value = "getHostInfo") diff --git a/web-api/src/main/java/com/jeesite/modules/apps/web/SysWorkbenchController.java b/web-api/src/main/java/com/jeesite/modules/apps/web/SysWorkbenchController.java new file mode 100644 index 0000000..eceb857 --- /dev/null +++ b/web-api/src/main/java/com/jeesite/modules/apps/web/SysWorkbenchController.java @@ -0,0 +1,76 @@ +package com.jeesite.modules.apps.web; + +import com.jeesite.modules.apps.Module.ChartDataItem; +import com.jeesite.modules.apps.Module.NoteInfo; +import com.jeesite.modules.biz.entity.MyNotes; +import com.jeesite.modules.biz.service.MyNotesService; +import com.jeesite.modules.sys.entity.DictData; +import com.jeesite.modules.sys.utils.DictUtils; +import com.jeesite.modules.utils.DateUtils; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.*; +import java.util.stream.Collectors; + +@Controller +@RequestMapping(value = "${adminPath}/desktop/workbench") +public class SysWorkbenchController { + + @Resource + private MyNotesService myNotesService; + + @RequestMapping(value = "getNoteInfo") + @ResponseBody + public List getNoteInfo() { + List noteInfos = new ArrayList<>(); + List dictDataList = DictUtils.getDictList("note_type"); + List myNotesList = myNotesService.findList(new MyNotes()); + Map totalMap = myNotesList.stream() + .collect(Collectors.groupingBy(MyNotes::getType, Collectors.counting())); + Map ustatusMap = myNotesList.stream() + .filter(note -> note.getUstatus().equals("done")) + .collect(Collectors.groupingBy(MyNotes::getType, Collectors.counting())); + for (DictData dict : dictDataList) { + String type = dict.getDictValue(); + Long value01 = totalMap.getOrDefault(type, 0L); + Long value02 = ustatusMap.getOrDefault(type, 0L); + noteInfos.add(new NoteInfo(dict.getDictValue(), dict.getDictLabel(), value01, value02)); + } + return noteInfos; + } + + + @RequestMapping(value = "getNoteChart") + @ResponseBody + public List getNoteChart(MyNotes myNotes) { + List myNotesList = myNotesService.findList(myNotes); + Map chartDataMap = myNotesList.stream() + .collect(Collectors.groupingBy( + note -> Optional.of(DateUtils.getMonth(note.getCreateTime())).orElse(""), + Collectors.collectingAndThen(Collectors.toList(), list -> { + String month = list.stream() + .findFirst() + .map(MyNotes::getCreateTime) + .map(DateUtils::getMonth) + .orElse(""); + Long todoCount = list.stream().filter(n -> n.getUstatus().equals("todo")).count(); + Long doingCount = list.stream().filter(n -> n.getUstatus().equals("doing")).count(); + Long doneCount = list.stream().filter(n -> n.getUstatus().equals("done")).count(); + ChartDataItem item = new ChartDataItem(); + item.setAxisName(month); + item.setValue01(String.valueOf(todoCount)); + item.setValue02(String.valueOf(doingCount)); + item.setValue03(String.valueOf(doneCount)); + return item; + }) + )); + return chartDataMap.values().stream() + .sorted(Comparator.comparing(ChartDataItem::getAxisName)) + .collect(Collectors.toList()); + } + + +} diff --git a/web-vue/packages/biz/api/biz/myAnalysis.ts b/web-vue/packages/biz/api/biz/myAnalysis.ts index ab6193c..624643c 100644 --- a/web-vue/packages/biz/api/biz/myAnalysis.ts +++ b/web-vue/packages/biz/api/biz/myAnalysis.ts @@ -17,4 +17,5 @@ export interface ChartInfo extends BasicModel { remark?: string; // 运行时长 } -export const HostInfoData = () => defHttp.get({ url: adminPath + '/sys/analysis/getHostInfo' }); +export const HostInfoData = () => +defHttp.get({ url: adminPath + '/desktop/analysis/getHostInfo' }); diff --git a/web-vue/packages/core/layouts/views/desktop/workbench/components/NoteInfo.vue b/web-vue/packages/core/layouts/views/desktop/workbench/components/NoteInfo.vue index 37a62dd..d838a00 100644 --- a/web-vue/packages/core/layouts/views/desktop/workbench/components/NoteInfo.vue +++ b/web-vue/packages/core/layouts/views/desktop/workbench/components/NoteInfo.vue @@ -17,20 +17,24 @@
-
+
-
+
{{ item.total }}
总数
-
+
{{ item.finished }}
已完成
-
{{ item.label }}
+
{{ item.label }}
@@ -45,15 +49,12 @@