From 28f9605441cdda5bd9cfabd2241ff8509a4a8888 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期一, 20 十月 2025 18:48:26 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                  |    5 ++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java |   85 +++++++++++++++++++++++++++++++++++++++---
 2 files changed, 82 insertions(+), 8 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index 454d29b..2a46efb 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -29,6 +29,17 @@
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.VerticalAlignment;
+import org.apache.poi.ss.usermodel.BorderStyle;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.util.RegionUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Propagation;
@@ -360,13 +371,73 @@
     @ApiOperation(value = "员工导入模板下载")
     @GetMapping("/importDownload")
     public void importDownload() {
-        List<EmployeeImportExcel> employeeImportExcels = new ArrayList<>();
-        EmployeeImportExcel employeeImportExcel = new EmployeeImportExcel();
-        employeeImportExcels.add(employeeImportExcel);
-        ExportParams exportParams = new ExportParams();
-        exportParams.setTitle("员工信息导入模板");
-        exportParams.setSheetName("员工信息");
-        Workbook workbook = ExcelExportUtil.exportExcel(exportParams, EmployeeImportExcel.class, employeeImportExcels);
+        // 自定义表头,构建两行表头并合并"学历"大标题
+        Workbook workbook = new HSSFWorkbook();
+        Sheet sheet = workbook.createSheet("员工信息");
+
+        // 列宽适配
+        int col = 0;
+        String[] firstRowHeads = new String[]{
+                "序号","姓名","性别","身份证号码","年龄","政治面貌","参工时间","进入公司时间",
+                "学历","所在股室","职务","任职时间","电话号码","编制"
+        };
+        String[] secondRowHeads = new String[]{
+                "","","","","","","","",
+                "第一","学院","专业","最高","学院","专业",
+                "","","","","",""
+        };
+
+        // 创建样式
+        CellStyle headStyle = workbook.createCellStyle();
+        headStyle.setAlignment(HorizontalAlignment.CENTER);
+        headStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+        headStyle.setBorderBottom(BorderStyle.THIN);
+        headStyle.setBorderTop(BorderStyle.THIN);
+        headStyle.setBorderLeft(BorderStyle.THIN);
+        headStyle.setBorderRight(BorderStyle.THIN);
+        Font font = workbook.createFont();
+        font.setBold(true);
+        headStyle.setFont(font);
+
+        Row row1 = sheet.createRow(0);
+        Row row2 = sheet.createRow(1);
+
+        // 先填充第一行
+        for (int i = 0; i < firstRowHeads.length; i++) {
+            Cell cell = row1.createCell(i);
+            cell.setCellValue(firstRowHeads[i]);
+            cell.setCellStyle(headStyle);
+            sheet.setColumnWidth(i, 16 * 256);
+        }
+        // 第二行
+        for (int i = 0; i < secondRowHeads.length; i++) {
+            Cell cell = row2.createCell(i);
+            cell.setCellValue(secondRowHeads[i]);
+            cell.setCellStyle(headStyle);
+        }
+
+        // 合并除"学历"外的单列表头(两行合并): 0-7 列,以及 9-13 列
+        int[][] singleMerge = new int[][]{
+                {0,0},{1,1},{2,2},{3,3},{4,4},{5,5},{6,6},{7,7},
+                {9,9},{10,10},{11,11},{12,12},{13,13}
+        };
+        for (int[] m : singleMerge) {
+            CellRangeAddress region = new CellRangeAddress(0,1,m[0],m[1]);
+            sheet.addMergedRegion(region);
+            RegionUtil.setBorderBottom(BorderStyle.THIN, region, sheet);
+            RegionUtil.setBorderTop(BorderStyle.THIN, region, sheet);
+            RegionUtil.setBorderLeft(BorderStyle.THIN, region, sheet);
+            RegionUtil.setBorderRight(BorderStyle.THIN, region, sheet);
+        }
+
+        // 合并"学历"大标题区域:第8列到第13列(共6列)第一行
+        CellRangeAddress xlMerge = new CellRangeAddress(0,0,8,13);
+        sheet.addMergedRegion(xlMerge);
+        RegionUtil.setBorderBottom(BorderStyle.THIN, xlMerge, sheet);
+        RegionUtil.setBorderTop(BorderStyle.THIN, xlMerge, sheet);
+        RegionUtil.setBorderLeft(BorderStyle.THIN, xlMerge, sheet);
+        RegionUtil.setBorderRight(BorderStyle.THIN, xlMerge, sheet);
+
         HttpServletResponse response = WebUtils.response();
         ServletOutputStream outputStream = null;
         try {
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index cf5b704..9926cc8 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -246,6 +246,9 @@
 		<if test="query.nickName != null and query.nickName != ''">
 			AND u.nick_name LIKE concat('%',#{query.nickName},'%')
 		</if>
+		<if test="query.roleName != null and query.roleName != ''">
+			AND r.role_name LIKE concat('%',#{query.roleName},'%')
+		</if>
 		<if test="query.phonenumber != null and query.phonenumber != ''">
 			AND u.phonenumber LIKE concat('%',#{query.phonenumber},'%')
 		</if>
@@ -255,7 +258,7 @@
 		<if test="query.roleName != null and query.roleName != ''">
 			AND t1.dept_name LIKE concat('%',#{query.roleName},'%')
 		</if>
-
+		and u.user_id!=1
 		ORDER BY u.create_time DESC
 	</select>
 	<select id="selectIdByPhone" resultType="java.lang.Long">

--
Gitblit v1.7.1