diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java index b9942cd7..a3766bdf 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java @@ -189,7 +189,40 @@ public class JeecgController> { String groupName = nameResolverService.getGroupName(groupId); groupNameField.set(item, groupName); } - + // --- 学科描述映射 --- (新增部分) + Field majorIdField = null; + Field majorIdDescriptionField = null; + try { + majorIdField = item.getClass().getDeclaredField("majorId"); + majorIdDescriptionField = item.getClass().getDeclaredField("majorIdDescription"); + } catch (NoSuchFieldException e) { + // 字段不存在 + } + if (majorIdField != null && majorIdDescriptionField != null) { + majorIdField.setAccessible(true); + majorIdDescriptionField.setAccessible(true); + Integer majorId = (Integer) majorIdField.get(item); + // 调用映射方法 + String majorDescription = mapMajorIdToDescription(majorId); + majorIdDescriptionField.set(item, majorDescription); + } + // --- 是否第一次阅卷 --- (新增部分) + Field checkedField = null; + Field checkedDescriptionField = null; + try { + checkedField = item.getClass().getDeclaredField("checked"); + checkedDescriptionField = item.getClass().getDeclaredField("checkedDescription"); + } catch (NoSuchFieldException e) { + // 字段不存在 + } + if (checkedField != null && checkedDescriptionField != null) { + checkedField.setAccessible(true); + checkedDescriptionField.setAccessible(true); + Integer checked = (Integer) checkedField.get(item); + // 调用映射方法 + String checkedDescription = StatusMappingUtil.mapChecked(checked); + checkedDescriptionField.set(item, checkedDescription); + } } catch (IllegalAccessException e) { throw new RuntimeException(e); } @@ -380,18 +413,24 @@ public class JeecgController> { // ===== 状态描述反向映射 ===== - // 性别反向映射 - applyReverseMapping(item, "sexDescription", "sex", StatusMappingUtil::reverseMapSex); +// // 性别反向映射 +// applyReverseMapping(item, "sexDescription", "sex", StatusMappingUtil::reverseMapSex); +// +// // 车辆状态反向映射 +// applyReverseMapping(item, "carStatusDescription", "carStatus", StatusMappingUtil::reverseMapCarStatus); +// +// // 住宿状态反向映射 +// applyReverseMapping(item, "dormitoryStatusDescription", "dormitoryStatus", StatusMappingUtil::reverseMapDormitoryStatus); +// +// // 一般状态反向映射 +// applyReverseMapping(item, "statusDescription", "status", StatusMappingUtil::reverseMapStatus); - // 车辆状态反向映射 - applyReverseMapping(item, "carStatusDescription", "carStatus", StatusMappingUtil::reverseMapCarStatus); - - // 住宿状态反向映射 - applyReverseMapping(item, "dormitoryStatusDescription", "dormitoryStatus", StatusMappingUtil::reverseMapDormitoryStatus); - - // 一般状态反向映射 - applyReverseMapping(item, "statusDescription", "status", StatusMappingUtil::reverseMapStatus); + // ===== 状态描述反向映射(带存在性判断) ===== + applyReverseMappingIfExists(item, "sexDescription", "sex", s -> String.valueOf(StatusMappingUtil.reverseMapSex(s))); + applyReverseMappingIfExists(item, "carStatusDescription", "carStatus", s -> String.valueOf(StatusMappingUtil.reverseMapCarStatus(s))); + applyReverseMappingIfExists(item, "dormitoryStatusDescription", "dormitoryStatus", s -> String.valueOf(StatusMappingUtil.reverseMapDormitoryStatus(s))); + applyReverseMappingIfExists(item, "statusDescription", "status", s -> String.valueOf(StatusMappingUtil.reverseMapStatus(s))); // 宿舍名称反查 ID // Field dormNameField = getField(item, "dormitoryName"); // Field dormIdField = getField(item, "dormitoryId"); @@ -450,17 +489,46 @@ public class JeecgController> { } } - private void applyReverseMapping(Object item, String descFieldName, String codeFieldName, Function mapper) throws IllegalAccessException { - Field descField = getField(item, descFieldName); - Field codeField = getField(item, codeFieldName); - if (descField != null && codeField != null) { - String desc = (String) descField.get(item); - if (desc != null && !desc.isEmpty()) { - Integer code = mapper.apply(desc); - codeField.set(item, code); +// private void applyReverseMapping(Object item, String descFieldName, String codeFieldName, Function mapper) throws IllegalAccessException { +// Field descField = getField(item, descFieldName); +// Field codeField = getField(item, codeFieldName); +// if (descField != null && codeField != null) { +// String desc = (String) descField.get(item); +// if (desc != null && !desc.isEmpty()) { +// Integer code = mapper.apply(desc); +// codeField.set(item, code); +// } +// } +// } +private void applyReverseMappingIfExists(T item, String fromField, String toField, Function mappingFunc) { + try { + Field descField = getField(item, fromField); + Field targetField = getField(item, toField); + if (descField != null && targetField != null) { + descField.setAccessible(true); + targetField.setAccessible(true); + Object rawValue = descField.get(item); + if (rawValue instanceof String && rawValue != null) { + String mapped = mappingFunc.apply((String) rawValue); + targetField.set(item, mapped); } } + } catch (Exception e) { + log.warn("映射字段失败: " + fromField + " → " + toField, e); + } +} + + // 新增的映射方法(可放在工具类中) + private static String mapMajorIdToDescription(Integer majorId) { + if (majorId == null) return ""; + + switch (majorId) { + case 1: return "语文"; + case 4: return "地理"; + case 7: return "历史"; + case 8: return "政治"; + // 添加其他学科的映射关系 + default: return ""; + } } - - } diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/StatusMappingUtil.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/StatusMappingUtil.java index 912fd9d7..a0d762d0 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/StatusMappingUtil.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/StatusMappingUtil.java @@ -20,6 +20,11 @@ public class StatusMappingUtil { return dormitoryStatus == 1 ? "是" : "否"; } // 住宿状态映射 + public static String mapChecked(Integer checked) { + if (checked == null) return "未知"; + return checked == 1 ? "是" : "否"; + } + // 住宿状态映射 public static String mapStatus(Integer status) { if (status == null) return ""; return status == 0 ? "已报到" : "未报到"; diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesDormitoryInfoController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesDormitoryInfoController.java index b27ea0a6..a29f3673 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesDormitoryInfoController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/contoller/CeesDormitoryInfoController.java @@ -78,6 +78,18 @@ public class CeesDormitoryInfoController extends JeecgController add(@RequestBody CeesDormitoryInfo ceesDormitoryInfo) { + String dormitory = ceesDormitoryInfo.getDormitory(); + + if (dormitory != null && dormitory.contains("公寓")) { + int index = dormitory.indexOf("公寓"); + // 截取“公寓”前面的楼名 + “公寓” + String apartment = dormitory.substring(0, index + 2); + // 截取“公寓”后面的房间号 + String dormitoryRoom = dormitory.substring(index + 2); + + ceesDormitoryInfo.setApartment(apartment); + ceesDormitoryInfo.setDormitoryRoom(dormitoryRoom); + } ceesDormitoryInfoService.save(ceesDormitoryInfo); return Result.OK("添加成功!"); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesDormitoryInfo.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesDormitoryInfo.java index 24180b4e..1563a3d1 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesDormitoryInfo.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesDormitoryInfo.java @@ -1,9 +1,6 @@ package org.jeecg.modules.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -57,6 +54,12 @@ public class CeesDormitoryInfo implements Serializable { @Excel(name = "宿舍信息", width = 15) @ApiModelProperty(value = "宿舍信息") private String dormitory; + + @ApiModelProperty(value = "公寓信息") + private String apartment; + + @ApiModelProperty(value = "宿舍信息") + private String dormitoryRoom; /**男/女*/ @Excel(name = "男/女", width = 15) @ApiModelProperty(value = "男/女") @@ -72,6 +75,7 @@ public class CeesDormitoryInfo implements Serializable { /** *该宿舍所属学科 */ + @TableField(updateStrategy = FieldStrategy.IGNORED) @ApiModelProperty(value = "学科id") private Integer majorId; /**专业id*/ diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesLocalTeacher.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesLocalTeacher.java index 3d42322e..cb0c1a14 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesLocalTeacher.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CeesLocalTeacher.java @@ -107,8 +107,12 @@ public class CeesLocalTeacher implements Serializable { @ApiModelProperty(value = "状态:0正常 1禁用") private Integer status; /**是否第一次阅卷*/ - @Excel(name = "是否第一次阅卷", width = 15) +// @Excel(name = "是否第一次阅卷", width = 15) @ApiModelProperty(value = "是否第一次阅卷") private Integer checked; + @Excel(name = "是否第一次阅卷", width = 15) + @ApiModelProperty(value = "是否第一次阅卷") + @TableField(exist = false) + private String checkedDescription; } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Student.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Student.java index f7996376..74023918 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Student.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/Student.java @@ -91,9 +91,13 @@ public class Student implements Serializable { @ApiModelProperty(value = "手机号") private String phone; /**是否第一次阅卷*/ - @Excel(name = "是否第一次阅卷", width = 15) +// @Excel(name = "是否第一次阅卷", width = 15) @ApiModelProperty(value = "是否第一次阅卷") private Integer checked; + @Excel(name = "是否第一次阅卷", width = 15) + @ApiModelProperty(value = "是否第一次阅卷") + @TableField(exist = false) + private String checkedDescription; /**组id*/ // @Excel(name = "组id", width = 15) @ApiModelProperty(value = "组id") diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesDormitoryInfoServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesDormitoryInfoServiceImpl.java index 9b5decea..1ec02f3b 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesDormitoryInfoServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CeesDormitoryInfoServiceImpl.java @@ -109,14 +109,13 @@ public class CeesDormitoryInfoServiceImpl extends ServiceImpl updateWrapper = new UpdateWrapper<>(); @@ -150,4 +149,44 @@ public class CeesDormitoryInfoServiceImpl extends ServiceImpl queryWrapper = QueryGenerator.initQueryWrapper(ceesWaiTeacher, req.getParameterMap()); + // 3. 处理 dormitoryName 模糊查询逻辑 if (StringUtils.isNotBlank(dormitoryName)) { // 3.1 先查询匹配的宿舍ID列表 @@ -140,7 +141,8 @@ public class CeesWaiTeacherServiceImpl extends ServiceImpl