From e37753ade7e1d1f1de5611d394ff66e3d78b769c Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Fri, 25 Apr 2025 17:46:06 +0800 Subject: [PATCH] commit --- .../controller/ActUserController.java | 41 ++++++ .../ActivitySignInQueryController.java | 133 ++++++++++++++++++ .../service/ActivitySignInQueryService.java | 9 ++ .../service/impl/ActUserServiceImpl.java | 1 + .../impl/ActivitySignInQueryServiceImpl.java | 18 +++ .../vo/page/ActSignInUserPageForm.java | 25 ++++ .../activity/signInUserQuery/index.html | 115 +++++++++++++++ .../views/platform/activity/user/index.html | 6 +- 8 files changed, 347 insertions(+), 1 deletion(-) create mode 100644 backend/src/main/java/com/budwk/app/module/activity/controller/ActivitySignInQueryController.java create mode 100644 backend/src/main/java/com/budwk/app/module/activity/service/ActivitySignInQueryService.java create mode 100644 backend/src/main/java/com/budwk/app/module/activity/service/impl/ActivitySignInQueryServiceImpl.java create mode 100644 backend/src/main/java/com/budwk/app/module/activity/vo/page/ActSignInUserPageForm.java create mode 100644 backend/src/main/resources/views/platform/activity/signInUserQuery/index.html diff --git a/backend/src/main/java/com/budwk/app/module/activity/controller/ActUserController.java b/backend/src/main/java/com/budwk/app/module/activity/controller/ActUserController.java index 34cfd77..fe5902d 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/controller/ActUserController.java +++ b/backend/src/main/java/com/budwk/app/module/activity/controller/ActUserController.java @@ -1,5 +1,9 @@ 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.date.DateUtil; import com.budwk.app.base.page.Pagination; @@ -9,9 +13,11 @@ import com.budwk.app.client.module.activity.vo.ClientActivitySignVO; import com.budwk.app.module.activity.models.ActUser; import com.budwk.app.module.activity.models.Activity; import com.budwk.app.module.activity.service.ActUserService; +import com.budwk.app.module.activity.vo.page.ActSignInUserPageForm; import com.budwk.app.module.activity.vo.page.ActUserPageForm; 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.Cnd; import org.nutz.dao.Dao; @@ -22,10 +28,14 @@ import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.Lang; +import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import javax.servlet.http.HttpServletResponse; +import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; @@ -190,4 +200,35 @@ public class ActUserController { Pagination pagination = actUserService.listPageMap(1, 10, sql); return Result.success(pagination); } + + @At + @Ok("void") + @SaCheckPermission("activity.user") + public void doExport(ActUserPageForm pageForm, HttpServletResponse response) { + try { + Activity activity = actUserService.dao().fetch(Activity.class, Cnd.NEW().and("id", "=", pageForm.getActivityId())); + + Sql sql = actUserService.getSignUpSql(pageForm); + List nutMaps = actUserService.listMap(sql); + List entityList = new ArrayList<>() {{ + add(new ExcelExportEntity("报名号", "actUserNo", 20)); + add(new ExcelExportEntity("姓名", "userName", 20)); + add(new ExcelExportEntity("性别", "sex", 20)); + add(new ExcelExportEntity("身份证号码", "idCard", 20)); + add(new ExcelExportEntity("联系方式", "mobile", 20)); + add(new ExcelExportEntity("职务", "position", 20)); + add(new ExcelExportEntity("所属单位", "unitName", 20)); + add(new ExcelExportEntity("报名时间", "signUpTime2", 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, nutMaps); + workbook.write(response.getOutputStream()); + }catch (Exception e){ + e.printStackTrace(); + } + + } } diff --git a/backend/src/main/java/com/budwk/app/module/activity/controller/ActivitySignInQueryController.java b/backend/src/main/java/com/budwk/app/module/activity/controller/ActivitySignInQueryController.java new file mode 100644 index 0000000..83d3f3c --- /dev/null +++ b/backend/src/main/java/com/budwk/app/module/activity/controller/ActivitySignInQueryController.java @@ -0,0 +1,133 @@ +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.Pagination; +import com.budwk.app.base.result.Result; +import com.budwk.app.module.activity.models.Activity; +import com.budwk.app.module.activity.service.ActivitySignInQueryService; +import com.budwk.app.module.activity.vo.page.ActSignInUserPageForm; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Workbook; +import org.nutz.dao.Cnd; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +import javax.servlet.http.HttpServletResponse; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +@IocBean +@At("/platform/activity/signInUserQuery") +@Slf4j +@Ok("json:full") +public class ActivitySignInQueryController { + + @Inject + private ActivitySignInQueryService activitySignInQueryService; + + @At("") + @SaCheckPermission("activity.signInUserQuery") + @Ok("beetl:/platform/activity/signInUserQuery/index.html") + public void index() { + } + + + @At() + @SaCheckPermission("activity.signInUserQuery") + public Result getActivityOptions(Integer year) { + return Result.success(activitySignInQueryService.dao().query(Activity.class, Cnd.NEW().andEX("YEAR(startTime)", "=", year))); + } + + + @At() + @SaCheckPermission("activity.signInUserQuery") + public Result pageData(ActSignInUserPageForm pageForm) { + Cnd cnd = Cnd.NEW(); + Sql sql = Sqls.create(""" + SELECT + au.*, + a.title + FROM + `act_user` au + LEFT JOIN activity a ON a.id = au.activityId + $condition + """); + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { + SqlExpressionGroup group = new SqlExpressionGroup(); + group.or("au.userName", "LIKE", "%" + pageForm.getSearchKeyword() + "%"); + group.or("au.unitName", "LIKE", "%" + pageForm.getSearchKeyword() + "%"); + cnd.and(group); + } + cnd.and("au.activityId", "=", pageForm.getActivityId()); + cnd.and("au.isSignIn", "=", 1); + cnd.asc("au.actUserNo"); + sql.setCondition(cnd); + Pagination pagination = activitySignInQueryService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + + @At + @Ok("void") + @SaCheckPermission("activity.signInUserQuery") + public void doExport(ActSignInUserPageForm pageForm, HttpServletResponse response) { + try { + Activity activity = activitySignInQueryService.dao().fetch(Activity.class, Cnd.NEW().and("id", "=", pageForm.getActivityId())); + Cnd cnd = Cnd.NEW(); + Sql sql = Sqls.create(""" + SELECT + au.*, + DATE_FORMAT(signInTime, '%Y-%m-%d %H:%i:%s') signInTime + FROM + `act_user` au + $condition + """); + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { + SqlExpressionGroup group = new SqlExpressionGroup(); + group.or("au.userName", "LIKE", "%" + pageForm.getSearchKeyword() + "%"); + group.or("au.unitName", "LIKE", "%" + pageForm.getSearchKeyword() + "%"); + cnd.and(group); + } + cnd.and("au.activityId", "=", pageForm.getActivityId()); + cnd.and("au.isSignIn", "=", 1); + cnd.asc("au.actUserNo"); + sql.setCondition(cnd); + List nutMaps = activitySignInQueryService.listMap(sql); + List entityList = new ArrayList<>() {{ + add(new ExcelExportEntity("报名号", "actUserNo", 20)); + add(new ExcelExportEntity("姓名", "userName", 20)); + add(new ExcelExportEntity("性别", "sex", 20)); + add(new ExcelExportEntity("职务", "position", 20)); + add(new ExcelExportEntity("身份证号码", "idCard", 20)); + add(new ExcelExportEntity("联系方式", "mobile", 20)); + add(new ExcelExportEntity("参加单位名称", "unitName", 20)); + add(new ExcelExportEntity("签到时间", "signUpTime2", 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, nutMaps); + workbook.write(response.getOutputStream()); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + +} diff --git a/backend/src/main/java/com/budwk/app/module/activity/service/ActivitySignInQueryService.java b/backend/src/main/java/com/budwk/app/module/activity/service/ActivitySignInQueryService.java new file mode 100644 index 0000000..9098bde --- /dev/null +++ b/backend/src/main/java/com/budwk/app/module/activity/service/ActivitySignInQueryService.java @@ -0,0 +1,9 @@ +package com.budwk.app.module.activity.service; + +import com.budwk.app.base.service.BaseService; +import com.budwk.app.module.activity.models.ActUser; + +public interface ActivitySignInQueryService extends BaseService { + + +} diff --git a/backend/src/main/java/com/budwk/app/module/activity/service/impl/ActUserServiceImpl.java b/backend/src/main/java/com/budwk/app/module/activity/service/impl/ActUserServiceImpl.java index be65f9b..f3e9e58 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/service/impl/ActUserServiceImpl.java +++ b/backend/src/main/java/com/budwk/app/module/activity/service/impl/ActUserServiceImpl.java @@ -37,6 +37,7 @@ public class ActUserServiceImpl extends BaseServiceImpl implements ActU Sql sql = Sqls.create(""" SELECT u.*, + DATE_FORMAT(signUpTime, '%Y-%m-%d %H:%i:%s') signUpTime2, act.`title` AS activityName FROM act_user u diff --git a/backend/src/main/java/com/budwk/app/module/activity/service/impl/ActivitySignInQueryServiceImpl.java b/backend/src/main/java/com/budwk/app/module/activity/service/impl/ActivitySignInQueryServiceImpl.java new file mode 100644 index 0000000..bb7642d --- /dev/null +++ b/backend/src/main/java/com/budwk/app/module/activity/service/impl/ActivitySignInQueryServiceImpl.java @@ -0,0 +1,18 @@ +package com.budwk.app.module.activity.service.impl; + +import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.module.activity.models.ActUser; +import com.budwk.app.module.activity.models.Activity; +import com.budwk.app.module.activity.service.ActivityManageService; +import com.budwk.app.module.activity.service.ActivitySignInQueryService; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.IocBean; + +@IocBean(args = {"refer:dao"}) +public class ActivitySignInQueryServiceImpl extends BaseServiceImpl implements ActivitySignInQueryService { + public ActivitySignInQueryServiceImpl(Dao dao) { + super(dao); + } + +} diff --git a/backend/src/main/java/com/budwk/app/module/activity/vo/page/ActSignInUserPageForm.java b/backend/src/main/java/com/budwk/app/module/activity/vo/page/ActSignInUserPageForm.java new file mode 100644 index 0000000..a87e75d --- /dev/null +++ b/backend/src/main/java/com/budwk/app/module/activity/vo/page/ActSignInUserPageForm.java @@ -0,0 +1,25 @@ +package com.budwk.app.module.activity.vo.page; + +import com.budwk.app.base.page.PageForm; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author zhf + * @date 2025/4/25 09:56 + * @description + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ActSignInUserPageForm extends PageForm { + + // 活动ID + private Long activityId; + + // 联系方式 + private String phone; + + // 所属单位 + private String unitName; + +} diff --git a/backend/src/main/resources/views/platform/activity/signInUserQuery/index.html b/backend/src/main/resources/views/platform/activity/signInUserQuery/index.html new file mode 100644 index 0000000..e7a1345 --- /dev/null +++ b/backend/src/main/resources/views/platform/activity/signInUserQuery/index.html @@ -0,0 +1,115 @@ + + +
+ + + + + + + 导出 + + + + + + + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/backend/src/main/resources/views/platform/activity/user/index.html b/backend/src/main/resources/views/platform/activity/user/index.html index e95e554..5d87f53 100644 --- a/backend/src/main/resources/views/platform/activity/user/index.html +++ b/backend/src/main/resources/views/platform/activity/user/index.html @@ -46,8 +46,9 @@ layout("/layouts/platform_1.html"){ - + 添加报名人员 + 导出