From 5d34bdd3c426bb2ca5f6627424ae67984f745603 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期三, 21 十月 2026 18:28:59 +0800
Subject: [PATCH] feat: 新增资产/用车/采购模块,完善课题、会员、财务与企微功能

---
 yudao-module-research/src/main/java/cn/iocoder/yudao/module/research/controller/admin/application/ResearchApplicationController.java |   33 ++++++++++++++++++++++++++++++++-
 1 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/yudao-module-research/src/main/java/cn/iocoder/yudao/module/research/controller/admin/application/ResearchApplicationController.java b/yudao-module-research/src/main/java/cn/iocoder/yudao/module/research/controller/admin/application/ResearchApplicationController.java
index 63f150d..5145027 100644
--- a/yudao-module-research/src/main/java/cn/iocoder/yudao/module/research/controller/admin/application/ResearchApplicationController.java
+++ b/yudao-module-research/src/main/java/cn/iocoder/yudao/module/research/controller/admin/application/ResearchApplicationController.java
@@ -1,13 +1,18 @@
 package cn.iocoder.yudao.module.research.controller.admin.application;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.module.research.controller.admin.application.vo.ResearchApplicationPageReqVO;
 import cn.iocoder.yudao.module.research.controller.admin.application.vo.ResearchApplicationRespVO;
 import cn.iocoder.yudao.module.research.controller.admin.application.vo.ResearchApplicationSaveReqVO;
+import cn.iocoder.yudao.module.research.controller.admin.application.vo.member.ResearchApplicationMemberRespVO;
+import cn.iocoder.yudao.module.research.controller.admin.application.vo.member.ResearchApplicationMemberStatisticsReqVO;
+import cn.iocoder.yudao.module.research.controller.admin.application.vo.member.ResearchApplicationMemberStatisticsRespVO;
 import cn.iocoder.yudao.module.research.dal.dataobject.application.ResearchApplicationDO;
 import cn.iocoder.yudao.module.research.dal.dataobject.guideline.ResearchGuidelineDO;
 import cn.iocoder.yudao.module.research.service.application.ResearchApplicationService;
@@ -21,14 +26,17 @@
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
 import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
@@ -83,7 +91,30 @@
     @Parameter(name = "id", description = "缂栧彿", required = true, example = "1024")
     @PreAuthorize("@ss.hasPermission('research:application:query')")
     public CommonResult<ResearchApplicationRespVO> getApplication(@RequestParam("id") Long id) {
-        return success(buildApplicationDetail(applicationService.getApplication(id)));
+        ResearchApplicationRespVO vo = buildApplicationDetail(applicationService.getApplication(id));
+        if (vo != null) {
+            vo.setMembers(BeanUtils.toBean(applicationService.getMemberListByApplicationId(id),
+                    ResearchApplicationMemberRespVO.class));
+        }
+        return success(vo);
+    }
+
+    @GetMapping("/member-statistics")
+    @Operation(summary = "鎸夋垚鍛樼淮搴︾粺璁¤棰樺弬涓庢儏鍐�")
+    @PreAuthorize("@ss.hasPermission('research:application:query')")
+    public CommonResult<List<ResearchApplicationMemberStatisticsRespVO>> getMemberStatistics(
+            @Valid ResearchApplicationMemberStatisticsReqVO reqVO) {
+        return success(applicationService.getMemberStatistics(reqVO));
+    }
+
+    @GetMapping("/member-statistics/export-excel")
+    @Operation(summary = "瀵煎嚭璇鹃鎴愬憳缁村害缁熻 Excel")
+    @PreAuthorize("@ss.hasPermission('research:application:query')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportMemberStatisticsExcel(@Valid ResearchApplicationMemberStatisticsReqVO reqVO,
+                                            HttpServletResponse response) throws IOException {
+        List<ResearchApplicationMemberStatisticsRespVO> list = applicationService.getMemberStatistics(reqVO);
+        ExcelUtils.write(response, "璇鹃鎴愬憳缁熻.xls", "鏁版嵁", ResearchApplicationMemberStatisticsRespVO.class, list);
     }
 
     @GetMapping("/page")

--
Gitblit v1.9.3