From adc530b2f18e763a547104acf9aa2f82304599c7 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Tue, 13 May 2025 21:01:11 +0800 Subject: [PATCH] commit --- .../controller/ActScoreEnterController.java | 72 +++++++++++++++++- .../main/resources/templates/scoreEnter.xlsx | Bin 0 -> 11322 bytes .../platform/activity/scoreEnter/index.html | 51 +++++++++---- 3 files changed, 104 insertions(+), 19 deletions(-) create mode 100644 backend/src/main/resources/templates/scoreEnter.xlsx diff --git a/backend/src/main/java/com/budwk/app/module/activity/controller/ActScoreEnterController.java b/backend/src/main/java/com/budwk/app/module/activity/controller/ActScoreEnterController.java index 0e68f3c..838ad36 100644 --- a/backend/src/main/java/com/budwk/app/module/activity/controller/ActScoreEnterController.java +++ b/backend/src/main/java/com/budwk/app/module/activity/controller/ActScoreEnterController.java @@ -1,5 +1,10 @@ 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.TemplateExportParams; +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.result.Result; @@ -10,6 +15,9 @@ import com.budwk.app.module.activity.vo.page.ActScoreEnterPageForm; import com.budwk.app.module.activity.vo.page.ActSignInUserPageForm; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; @@ -23,10 +31,11 @@ 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.math.BigDecimal; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -139,4 +148,61 @@ public class ActScoreEnterController { } + @At + @Ok("void") + @SaCheckPermission("activity.scoreEnter") + public void doExport(Long activityId, HttpServletResponse response) { + try { + Activity activity = activityService.fetch(activityId); + + Sql sql = Sqls.create(""" + SELECT + groupName, + id + FROM + `act_group` + WHERE + activityId = @activityId + """).setParam("activityId", activityId); + List listMap = activityService.listMap(sql); + List itemList = activityService.dao().query(ActivityItem.class, Cnd.where(ActivityItem::getActivityId, "=", activityId).asc(ActivityItem::getSort)); + ActivityItem activityItem = new ActivityItem(); + activityItem.setName("总分"); + activityItem.setId(0L); + itemList.add(activityItem); + List scoreList = dao.query(ActItemGroupScore.class, Cnd.where(ActItemGroupScore::getActivityId, "=", activityId)); + + listMap.stream().forEach(group -> { + itemList.forEach(item -> { + if (item.getId() == 0) { + BigDecimal totalScore = scoreList.stream().filter(score -> score.getGroupId().equals(group.getLong("id")) && score.getScore() != null).map(ActItemGroupScore::getScore).reduce(BigDecimal::add).orElse(new BigDecimal(0)); + group.put("totalScore", totalScore); + } else { + ActItemGroupScore itemGroupScore = scoreList.stream().filter(score -> + score.getGroupId().equals(group.getLong("id")) + && score.getItemId().equals(item.getId())).findFirst().orElse(null); + group.put(item.getName() + "score", itemGroupScore.getScore()); + group.put(item.getName() + "ranking", itemGroupScore.getRanking()); + } + }); + }); + Map map = new HashMap(); + map.put("mapList", listMap); + map.put("title", activity.getTitle()); + map.put("itemList", itemList); + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment;filename=" + new String((activity.getTitle() + "评分表.xlsx").getBytes(StandardCharsets.UTF_8), "ISO8859-1")); + TemplateExportParams params = new TemplateExportParams("templates/scoreEnter.xlsx"); + params.setColForEach(true); + Workbook workbook = ExcelExportUtil.exportExcel(params, map); + workbook.write(response.getOutputStream()); + workbook.close(); + } catch (Exception e) { + e.printStackTrace(); + } + + + } + + } diff --git a/backend/src/main/resources/templates/scoreEnter.xlsx b/backend/src/main/resources/templates/scoreEnter.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..7d16646557b503a3ca40d9c92e241c4a89905c73 GIT binary patch literal 11322 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 搜索 - + + 导出 + @@ -49,19 +51,20 @@ layout("/layouts/platform_1.html"){ - + + - - 保存 - + @@ -86,6 +89,9 @@ layout("/layouts/platform_1.html"){ } }, methods: { + doExport() { + window.open("/platform/activity/scoreEnter/doExport?activityId=" + this.pageForm.activityId ) + }, // 格式化名称 formatName(name) { if (!name) return "" @@ -127,6 +133,7 @@ layout("/layouts/platform_1.html"){ } = await $.get("/platform/activity/scoreEnter/list-item/" + this.pageForm.activityId) if (code === 0) { this.itemOptions = data + this.itemOptions.push({id: "all", "name": "总积分"}) } else { this.$message.error(msg) } @@ -160,20 +167,32 @@ layout("/layouts/platform_1.html"){ groupName: group.groupName } this.itemOptions.forEach((item) => { - let data = this.itemScoreList.find(s => s.groupId === group.id && s.itemId === item.id); - if (data) { + if (item.id === "all") { + let data = this.itemScoreList.filter(s => s.groupId === group.id); + const sum = data.map(d => d.score).reduce((total, value) => { + return total + (value || 0); + }, 0); row[item.id] = { id: data.id, - totalScore: data.score ? data.score : null, - totalRank: data.ranking ? data.ranking : null + totalScore: sum, } } else { - row[item.id] = { - totalScore: null, - totalRank: null + let data = this.itemScoreList.find(s => s.groupId === group.id && s.itemId === item.id); + if (data) { + row[item.id] = { + id: data.id, + totalScore: data.score ? data.score : null, + totalRank: data.ranking ? data.ranking : null + } + } else { + row[item.id] = { + totalScore: null, + totalRank: null + } } } + }) return row }) @@ -187,12 +206,12 @@ layout("/layouts/platform_1.html"){ activityId: this.pageForm.activityId, data: JSON.stringify(this.tableData) } - const {code,data,msg} = await $.post("/platform/activity/scoreEnter/save-score", formData) + const {code, data, msg} = await $.post("/platform/activity/scoreEnter/save-score", formData) if (code === 0) { await this.listItemScore() this.buildTableData() this.$message.success("保存成功") - }else{ + } else { this.$message.error(msg) } console.log(this.tableData)