From bfef628ea6f6578dc9ba2e2c7f2a52ed029ea4a4 Mon Sep 17 00:00:00 2001 From: cst61 Date: Fri, 15 May 2026 14:18:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=9E=8B=E8=A7=A3=E6=9E=90=E5=8F=8C?= =?UTF-8?q?=E6=94=B6=E7=9B=8A=E5=9B=A2=E9=98=9F=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LbAssessmentApplyController.java | 3 +- .../java/com/rj/entity/LbAssessmentApply.java | 4 ++ .../rj/service/ILbAssessmentApplyService.java | 1 + .../impl/LbAssessmentApplyServiceImpl.java | 55 ++++++++++++++++--- 4 files changed, 55 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/rj/controller/LbAssessmentApplyController.java b/src/main/java/com/rj/controller/LbAssessmentApplyController.java index 19d8581..50bac54 100644 --- a/src/main/java/com/rj/controller/LbAssessmentApplyController.java +++ b/src/main/java/com/rj/controller/LbAssessmentApplyController.java @@ -94,12 +94,13 @@ public class LbAssessmentApplyController { @RequestParam(required = false) String applicantPhone, @RequestParam(required = false) String colleagueName, @RequestParam(required = false) String teamLeaderName, + @RequestParam(required = false) String teamBigLeaderName, @RequestParam(required = false) String assessmentTeacherName, @RequestParam(required = false) String moderatorName, @RequestParam(required = false) String meetingNumber) { Map result = lbAssessmentApplyService.pageQuery( current, size, tenantId, applicantName, applicantPhone, colleagueName, teamLeaderName, - assessmentTeacherName, moderatorName, meetingNumber + teamBigLeaderName, assessmentTeacherName, moderatorName, meetingNumber ); Boolean success = (Boolean) result.get("success"); if (success != null && success) { diff --git a/src/main/java/com/rj/entity/LbAssessmentApply.java b/src/main/java/com/rj/entity/LbAssessmentApply.java index aca196b..f16c54a 100644 --- a/src/main/java/com/rj/entity/LbAssessmentApply.java +++ b/src/main/java/com/rj/entity/LbAssessmentApply.java @@ -54,6 +54,10 @@ public class LbAssessmentApply implements Serializable { @Schema(description = "团队长姓名") private String teamLeaderName; + @TableField("team_big_leader_name") + @Schema(description = "全收益团队长姓名") + private String teamBigLeaderName; + @TableField("assessment_teacher_name") @Schema(description = "评估老师姓名") private String assessmentTeacherName; diff --git a/src/main/java/com/rj/service/ILbAssessmentApplyService.java b/src/main/java/com/rj/service/ILbAssessmentApplyService.java index 08cb594..fb9921e 100644 --- a/src/main/java/com/rj/service/ILbAssessmentApplyService.java +++ b/src/main/java/com/rj/service/ILbAssessmentApplyService.java @@ -21,6 +21,7 @@ public interface ILbAssessmentApplyService extends IService { String applicantPhone, String colleagueName, String teamLeaderName, + String teamBigLeaderName, String assessmentTeacherName, String moderatorName, String meetingNumber); diff --git a/src/main/java/com/rj/service/impl/LbAssessmentApplyServiceImpl.java b/src/main/java/com/rj/service/impl/LbAssessmentApplyServiceImpl.java index ab52b6d..b4fc38a 100644 --- a/src/main/java/com/rj/service/impl/LbAssessmentApplyServiceImpl.java +++ b/src/main/java/com/rj/service/impl/LbAssessmentApplyServiceImpl.java @@ -61,6 +61,7 @@ public class LbAssessmentApplyServiceImpl colleagueName 同事姓名; colleaguePhone 同事电话; teamLeaderName 团队长姓名; + teamBigLeaderName 全收益团队长姓名; assessmentTeacherName 评估老师姓名; moderatorName 主持人姓名; meetingNumber 会议号; @@ -250,6 +251,7 @@ public class LbAssessmentApplyServiceImpl String applicantPhone, String colleagueName, String teamLeaderName, + String teamBigLeaderName, String assessmentTeacherName, String moderatorName, String meetingNumber) { @@ -264,7 +266,7 @@ public class LbAssessmentApplyServiceImpl LambdaQueryWrapper queryWrapper = buildQueryWrapper( tenantId, applicantName, applicantPhone, colleagueName, teamLeaderName, - assessmentTeacherName, moderatorName, meetingNumber + teamBigLeaderName, assessmentTeacherName, moderatorName, meetingNumber ); Page page = this.page(new Page<>(current, size), queryWrapper); @@ -375,7 +377,7 @@ public class LbAssessmentApplyServiceImpl createCell(row, 3, nullToEmpty(item.getColleagueName()), dataStyle); createCell(row, 4, nullToEmpty(item.getColleaguePhone()), dataStyle); createCell(row, 5, nullToEmpty(item.getTeamLeaderName()), dataStyle); - createCell(row, 6, "", dataStyle); + createCell(row, 6, nullToEmpty(item.getTeamBigLeaderName()), dataStyle); createCell(row, 7, formatApplicationDatetime(item.getApplicationDatetime()), dataStyle); createCell(row, 8, nullToEmpty(item.getAssessmentTeacherName()), dataStyle); createCell(row, 9, nullToEmpty(item.getModeratorName()), dataStyle); @@ -383,11 +385,7 @@ public class LbAssessmentApplyServiceImpl rowIndex++; } - for (int i = 0; i < headers.length; i++) { - sheet.autoSizeColumn(i); - int width = sheet.getColumnWidth(i); - sheet.setColumnWidth(i, Math.min(255 * 256, (int) (width * 1.2))); - } + adjustColumnWidths(sheet, headers); String filename = "申请评估_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + ".xlsx"; String encoded = URLEncoder.encode(filename, StandardCharsets.UTF_8).replaceAll("\\+", "%20"); @@ -420,6 +418,7 @@ public class LbAssessmentApplyServiceImpl String applicantPhone, String colleagueName, String teamLeaderName, + String teamBigLeaderName, String assessmentTeacherName, String moderatorName, String meetingNumber) { @@ -439,6 +438,9 @@ public class LbAssessmentApplyServiceImpl if (teamLeaderName != null && !teamLeaderName.trim().isEmpty()) { queryWrapper.like(LbAssessmentApply::getTeamLeaderName, teamLeaderName.trim()); } + if (teamBigLeaderName != null && !teamBigLeaderName.trim().isEmpty()) { + queryWrapper.like(LbAssessmentApply::getTeamBigLeaderName, teamBigLeaderName.trim()); + } if (assessmentTeacherName != null && !assessmentTeacherName.trim().isEmpty()) { queryWrapper.like(LbAssessmentApply::getAssessmentTeacherName, assessmentTeacherName.trim()); } @@ -472,4 +474,43 @@ public class LbAssessmentApplyServiceImpl cell.setCellValue(text); cell.setCellStyle(style); } + + /** + * 按单元格内容计算列宽。POI 的 autoSizeColumn 对中文支持差,改为按字符宽度估算。 + */ + private static void adjustColumnWidths(Sheet sheet, String[] headers) { + int columnCount = headers.length; + int[] maxWidths = new int[columnCount]; + for (int i = 0; i < columnCount; i++) { + maxWidths[i] = calcDisplayWidth(headers[i]); + } + for (int r = 1; r <= sheet.getLastRowNum(); r++) { + Row row = sheet.getRow(r); + if (row == null) { + continue; + } + for (int c = 0; c < columnCount; c++) { + Cell cell = row.getCell(c); + if (cell != null && cell.getCellType() == CellType.STRING) { + maxWidths[c] = Math.max(maxWidths[c], calcDisplayWidth(cell.getStringCellValue())); + } + } + } + for (int i = 0; i < columnCount; i++) { + // 表头加粗,额外留 1 个字符边距 + int width = Math.min(255 * 256, (maxWidths[i] + 3) * 256); + sheet.setColumnWidth(i, width); + } + } + + private static int calcDisplayWidth(String text) { + if (text == null || text.isEmpty()) { + return 0; + } + int width = 0; + for (char ch : text.toCharArray()) { + width += ch > 127 ? 2 : 1; + } + return width; + } }