From c1589e4792dc6529d3847c7c7ccad618f9457932 Mon Sep 17 00:00:00 2001 From: Paidax Date: Thu, 6 Nov 2025 20:41:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ActGroupController.java | 63 +++++++++++++++++-- .../views/platform/activity/group/index.html | 6 ++ 2 files changed, 65 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/com/budwk/app/module/activity/controller/ActGroupController.java b/backend/src/main/java/com/budwk/app/module/activity/controller/ActGroupController.java index f25d847..79e9b99 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/controller/ActGroupController.java +++ b/backend/src/main/java/com/budwk/app/module/activity/controller/ActGroupController.java @@ -1,13 +1,14 @@ package com.budwk.app.module.activity.controller; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.page.PageForm; import com.budwk.app.base.result.Result; -import com.budwk.app.module.activity.models.ActGroup; -import com.budwk.app.module.activity.models.ActGroupUser; -import com.budwk.app.module.activity.models.ActItemGroupScore; -import com.budwk.app.module.activity.models.ActivityItem; +import com.budwk.app.module.activity.models.*; import com.budwk.app.module.activity.service.ActGroupService; import com.budwk.app.module.activity.service.ActUserService; import com.budwk.app.module.activity.vo.ActGroupVo; @@ -15,6 +16,7 @@ import com.budwk.app.module.activity.vo.ActManualGroupVo; import com.budwk.app.module.activity.vo.ActUnGroupUserVo; import com.budwk.app.web.commons.slog.annotation.SLog; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Workbook; import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Chain; import org.nutz.dao.Cnd; @@ -30,8 +32,10 @@ import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.math.BigDecimal; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -299,4 +303,55 @@ public class ActGroupController { return Result.success(); } + + @At + @Ok("void") + @SaCheckPermission("activity.group") + public void doExportGroup(String activityId, HttpServletResponse response){ + + try { + Activity activity = dao.fetch(Activity.class, Cnd.NEW().and("id", "=", activityId)); + Sql sql = Sqls.create(""" + SELECT + u.userName, + u.sex, + u.position, + u.mobile, + u.unitName, + g.groupName + FROM + `act_group_user` agu + LEFT JOIN act_user u ON u.userId = agu.userId + LEFT JOIN act_group g ON g.id = agu.groupId + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("u.activityId", "=", activityId); + cnd.and("u.isSignIn", "=", true); + cnd.orderBy("g.id", "asc"); + sql.setCondition(cnd); + + List list = actUserService.listMap(sql); + + List entityList = new ArrayList<>() {{ + add(new ExcelExportEntity("姓名", "userName", 20)); + add(new ExcelExportEntity("性别", "sex", 20)); + add(new ExcelExportEntity("职务", "position", 20)); + add(new ExcelExportEntity("联系方式", "mobile", 20)); + add(new ExcelExportEntity("参加单位名称", "unitName", 20)); + add(new ExcelExportEntity("队伍名称", "groupName", 20)); + }}; + + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment;filename=" + new String((activity.getTitle() + "分组结果表.xlsx").getBytes(StandardCharsets.UTF_8), "ISO8859-1")); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, list); + workbook.write(response.getOutputStream()); + } catch (Exception e) { + e.printStackTrace(); + } + + } + } diff --git a/backend/src/main/resources/views/platform/activity/group/index.html b/backend/src/main/resources/views/platform/activity/group/index.html index db1a1b0..b3d4f01 100644 --- a/backend/src/main/resources/views/platform/activity/group/index.html +++ b/backend/src/main/resources/views/platform/activity/group/index.html @@ -76,6 +76,7 @@ layout("/layouts/platform_1.html"){ 发布分组结果 取消分组结果 + 导出分组结果 @@ -145,6 +146,11 @@ layout("/layouts/platform_1.html"){ openView(row){ this.$refs.viewInfoRef.onOpen(this.pageForm.activityId, row.id) }, + + doExportGroup() { + window.open("/platform/activity/group/doExportGroup?activityId=" + this.pageForm.activityId) + }, + // openAdjustGroup(row){ // // },