diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetGraduatesController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetGraduatesController.java index 91e9b114..ab68e0b4 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetGraduatesController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetGraduatesController.java @@ -14,6 +14,7 @@ import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.entity.CetGraduates; import org.jeecg.modules.service.ICetGraduatesService; +import org.jeecg.modules.service.ICetInvigilateDataService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @@ -21,6 +22,7 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; +import java.util.List; /** * @Description: 研究生数据表 @@ -35,7 +37,8 @@ import java.util.Arrays; public class CetGraduatesController extends JeecgController { @Autowired private ICetGraduatesService cetGraduatesService; - + @Autowired + private ICetInvigilateDataService cetInvigilateDataService; /** * 分页列表查询 * @@ -69,8 +72,7 @@ public class CetGraduatesController extends JeecgController add(@RequestBody CetGraduates cetGraduates) { - cetGraduatesService.add(cetGraduates); - return Result.OK("添加成功!"); + return cetGraduatesService.add(cetGraduates); } /** @@ -99,8 +101,29 @@ public class CetGraduatesController extends JeecgController delete(@RequestParam(name="id",required=true) String id) { - cetGraduatesService.removeById(id); - return Result.OK("删除成功!"); + // 1. 查询研究生分表 + CetGraduates graduate = cetGraduatesService.lambdaQuery() + .eq(CetGraduates::getId, id) + .one(); + + if (graduate == null) { + return Result.error("研究生数据不存在,无法删除!"); + } + + try { + // 2. 删除研究生分表记录 + cetGraduatesService.lambdaUpdate() + .eq(CetGraduates::getId, id) + .remove(); + + // 3. 删除总表记录 + cetInvigilateDataService.removeById(id); + + return Result.OK("删除成功!"); + } catch (Exception e) { + log.error("删除研究生及其总表数据异常,ID[{}]: {}", id, e.getMessage(), e); + return Result.error("删除失败:" + e.getMessage()); + } } /** @@ -114,8 +137,23 @@ public class CetGraduatesController extends JeecgController deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.cetGraduatesService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("批量删除成功!"); + String[] idArray = ids.split(","); + List idList = Arrays.asList(idArray); + + try { + // 1. 删除研究生分表记录(graduate_id in ...) + cetGraduatesService.lambdaUpdate() + .in(CetGraduates::getId, idList) + .remove(); + + // 2. 删除总表记录(主键id in ...) + cetInvigilateDataService.removeByIds(idList); + + return Result.OK("批量删除成功!"); + } catch (Exception e) { + log.error("批量删除研究生及总表记录失败: {}", e.getMessage(), e); + return Result.error("批量删除失败:" + e.getMessage()); + } } /** diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetInvigilateDataController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetInvigilateDataController.java index ebaacce2..d213a2b0 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetInvigilateDataController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetInvigilateDataController.java @@ -1,6 +1,8 @@ package org.jeecg.modules.controller; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -9,11 +11,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.entity.CetGraduates; +import org.jeecg.modules.entity.CetTeachers; +import org.jeecg.modules.entity.CetNoTeachers; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.modules.entity.CetInvigilateData; +import org.jeecg.modules.service.ICetGraduatesService; import org.jeecg.modules.service.ICetInvigilateDataService; +import org.jeecg.modules.service.ICetNoTeachersService; import org.jeecg.modules.service.ICetTeachersService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -36,8 +43,12 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; public class CetInvigilateDataController extends JeecgController { @Autowired private ICetInvigilateDataService cetInvigilateDataService; - @Autowired - private ICetTeachersService cetTeachersService; + @Autowired + private ICetTeachersService cetTeachersService; + @Autowired + private ICetGraduatesService cetGraduatesService; + @Autowired + private ICetNoTeachersService cetNoTeachersService; /** * 分页列表查询 @@ -72,8 +83,8 @@ public class CetInvigilateDataController extends JeecgController add(@RequestBody CetInvigilateData cetInvigilateData) { - cetInvigilateDataService.add(cetInvigilateData); - return Result.OK("添加成功!"); + + return cetInvigilateDataService.add(cetInvigilateData); } /** @@ -101,12 +112,48 @@ public class CetInvigilateDataController extends JeecgController delete(@RequestParam(name="id",required=true) String id) { - cetInvigilateDataService.removeById(id); - return Result.OK("删除成功!"); + public Result delete(@RequestParam(name = "id", required = true) String id) { + // 1. 查询总表记录,获取类型 + CetInvigilateData data = cetInvigilateDataService.getById(id); + if (data == null) { + return Result.error("数据不存在,无法删除!"); + } + + String type = data.getType(); + try { + // 2. 根据类型删除对应的分表记录 + switch (type) { + case "教师": + cetTeachersService.lambdaUpdate() + .eq(CetTeachers::getId, id) + .remove(); + break; + case "研究生": + cetGraduatesService.lambdaUpdate() + .eq(CetGraduates::getId, id) + .remove(); + break; + case "非教师": + cetNoTeachersService.lambdaUpdate() + .eq(CetNoTeachers::getId, id) + .remove(); + break; + default: + return Result.error("未知类型,无法删除关联数据!"); + } + + // 3. 删除总表记录 + cetInvigilateDataService.removeById(id); + + return Result.OK("删除成功!"); + } catch (Exception e) { + log.error("删除人员数据异常 ID[{}] 类型[{}]: {}", id, type, e.getMessage(), e); + return Result.error("删除失败: " + e.getMessage()); + } } - - /** + + + /** * 批量删除 * * @param ids @@ -117,8 +164,57 @@ public class CetInvigilateDataController extends JeecgController deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.cetInvigilateDataService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("批量删除成功!"); + String[] idArray = ids.split(","); + List successIds = new ArrayList<>(); + List failedIds = new ArrayList<>(); + + for (String id : idArray) { + // 1. 查询总表记录 + CetInvigilateData data = cetInvigilateDataService.getById(id); + if (data == null) { + failedIds.add(id + "(数据不存在)"); + continue; + } + + String type = data.getType(); + try { + // 2. 删除对应分表记录 + switch (type) { + case "教师": + cetTeachersService.lambdaUpdate() + .eq(CetTeachers::getId, id) + .remove(); + break; + case "研究生": + cetGraduatesService.lambdaUpdate() + .eq(CetGraduates::getId, id) + .remove(); + break; + case "非教师": + cetNoTeachersService.lambdaUpdate() + .eq(CetNoTeachers::getId, id) + .remove(); + break; + default: + failedIds.add(id + "(未知类型:" + type + ")"); + continue; + } + + // 3. 删除总表记录 + cetInvigilateDataService.removeById(id); + successIds.add(id); + } catch (Exception e) { + log.error("删除异常,ID[{}] 类型[{}]: {}", id, type, e.getMessage(), e); + failedIds.add(id + "(异常: " + e.getMessage() + ")"); + } + } + + if (failedIds.isEmpty()) { + return Result.OK("批量删除成功,共删除 " + successIds.size() + " 条数据!"); + } else { + return Result.error("部分删除失败!成功 " + successIds.size() + " 条,失败 " + failedIds.size() + + " 条:\n" + String.join(", ", failedIds)); + } } /** diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetNoTeachersController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetNoTeachersController.java index cfb5062a..d96832ad 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetNoTeachersController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetNoTeachersController.java @@ -1,6 +1,7 @@ package org.jeecg.modules.controller; import java.util.Arrays; +import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -12,7 +13,9 @@ import org.jeecg.common.system.query.QueryGenerator; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.modules.entity.CetGraduates; import org.jeecg.modules.entity.CetNoTeachers; +import org.jeecg.modules.service.ICetInvigilateDataService; import org.jeecg.modules.service.ICetNoTeachersService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -35,7 +38,8 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; public class CetNoTeachersController extends JeecgController { @Autowired private ICetNoTeachersService cetNoTeachersService; - + @Autowired + private ICetInvigilateDataService cetInvigilateDataService; /** * 分页列表查询 * @@ -69,8 +73,8 @@ public class CetNoTeachersController extends JeecgController add(@RequestBody CetNoTeachers cetNoTeachers) { - cetNoTeachersService.add(cetNoTeachers); - return Result.OK("添加成功!"); + + return cetNoTeachersService.add(cetNoTeachers); } /** @@ -99,8 +103,29 @@ public class CetNoTeachersController extends JeecgController delete(@RequestParam(name="id",required=true) String id) { - cetNoTeachersService.removeById(id); - return Result.OK("删除成功!"); + // 1. 查询研究生分表 + CetNoTeachers nonTeachers = cetNoTeachersService.lambdaQuery() + .eq(CetNoTeachers::getId, id) + .one(); + + if (nonTeachers == null) { + return Result.error("研究生数据不存在,无法删除!"); + } + + try { + // 2. 删除研究生分表记录 + cetNoTeachersService.lambdaUpdate() + .eq(CetNoTeachers::getId, id) + .remove(); + + // 3. 删除总表记录 + cetInvigilateDataService.removeById(id); + + return Result.OK("删除成功!"); + } catch (Exception e) { + log.error("删除研究生及其总表数据异常,ID[{}]: {}", id, e.getMessage(), e); + return Result.error("删除失败:" + e.getMessage()); + } } /** @@ -114,8 +139,23 @@ public class CetNoTeachersController extends JeecgController deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.cetNoTeachersService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("批量删除成功!"); + String[] idArray = ids.split(","); + List idList = Arrays.asList(idArray); + + try { + // 1. 删除研究生分表记录(graduate_id in ...) + cetNoTeachersService.lambdaUpdate() + .in(CetNoTeachers::getId, idList) + .remove(); + + // 2. 删除总表记录(主键id in ...) + cetInvigilateDataService.removeByIds(idList); + + return Result.OK("批量删除成功!"); + } catch (Exception e) { + log.error("批量删除研究生及总表记录失败: {}", e.getMessage(), e); + return Result.error("批量删除失败:" + e.getMessage()); + } } /** diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetTeachersController.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetTeachersController.java index d2b98bec..da22e214 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetTeachersController.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/controller/CetTeachersController.java @@ -1,6 +1,7 @@ package org.jeecg.modules.controller; import java.util.Arrays; +import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -13,7 +14,9 @@ import org.jeecg.common.system.query.QueryGenerator; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.modules.entity.CetGraduates; import org.jeecg.modules.entity.CetTeachers; +import org.jeecg.modules.service.ICetInvigilateDataService; import org.jeecg.modules.service.ICetTeachersService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -36,6 +39,8 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; public class CetTeachersController extends JeecgController { @Autowired private ICetTeachersService cetTeachersService; + @Autowired + private ICetInvigilateDataService cetInvigilateDataService; /** * 分页列表查询 @@ -70,8 +75,8 @@ public class CetTeachersController extends JeecgController add(@RequestBody CetTeachers cetTeachers) { - cetTeachersService.add(cetTeachers); - return Result.OK("添加成功!"); + + return cetTeachersService.add(cetTeachers); } /** @@ -100,8 +105,30 @@ public class CetTeachersController extends JeecgController delete(@RequestParam(name="id",required=true) String id) { - cetTeachersService.removeById(id); - return Result.OK("删除成功!"); + + // 1. 查询研究生分表 + CetTeachers teachers = cetTeachersService.lambdaQuery() + .eq(CetTeachers::getId, id) + .one(); + + if (teachers == null) { + return Result.error("研究生数据不存在,无法删除!"); + } + + try { + // 2. 删除研究生分表记录 + cetTeachersService.lambdaUpdate() + .eq(CetTeachers::getId, id) + .remove(); + + // 3. 删除总表记录 + cetInvigilateDataService.removeById(id); + + return Result.OK("删除成功!"); + } catch (Exception e) { + log.error("删除研究生及其总表数据异常,ID[{}]: {}", id, e.getMessage(), e); + return Result.error("删除失败:" + e.getMessage()); + } } /** @@ -115,8 +142,23 @@ public class CetTeachersController extends JeecgController deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.cetTeachersService.removeByIds(Arrays.asList(ids.split(","))); - return Result.OK("批量删除成功!"); + String[] idArray = ids.split(","); + List idList = Arrays.asList(idArray); + + try { + // 1. 删除研究生分表记录(graduate_id in ...) + cetTeachersService.lambdaUpdate() + .in(CetTeachers::getId, idList) + .remove(); + + // 2. 删除总表记录(主键id in ...) + cetInvigilateDataService.removeByIds(idList); + + return Result.OK("批量删除成功!"); + } catch (Exception e) { + log.error("批量删除研究生及总表记录失败: {}", e.getMessage(), e); + return Result.error("批量删除失败:" + e.getMessage()); + } } /** diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetGraduates.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetGraduates.java index 3ba8990a..f06be214 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetGraduates.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetGraduates.java @@ -33,7 +33,7 @@ public class CetGraduates implements Serializable { /**主键*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主键") - private String id; + private String Id ; /**学号*/ @Excel(name = "学号", width = 15) @ApiModelProperty(value = "学号") @@ -83,5 +83,5 @@ public class CetGraduates implements Serializable { private String sysOrgCode; /**类型*/ @TableField(exist = false) - private Integer type; + private String type; } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetInvigilateData.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetInvigilateData.java index b2868d7f..ae09ee1f 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetInvigilateData.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetInvigilateData.java @@ -32,15 +32,11 @@ public class CetInvigilateData implements Serializable { /**主键*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主键") - private String id; - /**学号*/ - @Excel(name = "学号", width = 15) - @ApiModelProperty(value = "学号") - private String studentNumber; - /**工号*/ - @Excel(name = "工号", width = 15) - @ApiModelProperty(value = "工号") - private Integer jobNumber; + private String Id; + /**学号/工号*/ + @Excel(name = "学号/工号", width = 15) + @ApiModelProperty(value = "学号/工号") + private String code; /**教师姓名*/ @Excel(name = "教师姓名", width = 15) @ApiModelProperty(value = "教师姓名") @@ -85,5 +81,7 @@ public class CetInvigilateData implements Serializable { @ApiModelProperty(value = "所属部门") private String sysOrgCode; /**类型*/ - private Integer type; + @Excel(name = "类型", width = 15) + @ApiModelProperty(value = "类型") + private String type; } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetNoTeachers.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetNoTeachers.java index 354ec82a..2cd85171 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetNoTeachers.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetNoTeachers.java @@ -33,7 +33,7 @@ public class CetNoTeachers implements Serializable { /**主键*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主键") - private String id; + private String Id ; /**教师姓名*/ @Excel(name = "教师姓名", width = 15) @ApiModelProperty(value = "教师姓名") @@ -75,5 +75,5 @@ public class CetNoTeachers implements Serializable { private String sysOrgCode; /**类型*/ @TableField(exist = false) - private Integer type; + private String type; } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetTeachers.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetTeachers.java index 4ac81b91..aad0637e 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetTeachers.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/CetTeachers.java @@ -33,11 +33,11 @@ public class CetTeachers implements Serializable { /**主键*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主键") - private String id; + private String Id ; /**工号*/ @Excel(name = "工号", width = 15) @ApiModelProperty(value = "工号") - private Integer jobNumber; + private String jobNumber; /**教师姓名*/ @Excel(name = "教师姓名", width = 15) @ApiModelProperty(value = "教师姓名") @@ -83,6 +83,6 @@ public class CetTeachers implements Serializable { private String sysOrgCode; /**类型*/ @TableField(exist = false) - private Integer type; + private String type; } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/ClassRoom.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/ClassRoom.java index 57c91c37..a343905e 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/ClassRoom.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/entity/ClassRoom.java @@ -31,34 +31,38 @@ public class ClassRoom implements Serializable { /**主键*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主键") - private java.lang.String id; + private String id; /**教学楼名,如“理工一”、“崇师楼”*/ @Excel(name = "教学楼名", width = 15) @ApiModelProperty(value = "教学楼名,如“理工一”、“崇师楼”") - private java.lang.String building; + private String building; /**区域,如“A区”、“B区”,无则为空*/ @Excel(name = "区域", width = 15) @ApiModelProperty(value = "区域,如“A区”、“B区”,无则为空") - private java.lang.String area; + private String area; /**楼层号,如 5楼、2楼 等*/ @Excel(name = "楼层号", width = 15) @ApiModelProperty(value = "楼层号,如 5楼、2楼 等") - private java.lang.String floor; + private String floor; /**房间编号,如“511教室”*/ @Excel(name = "教室”", width = 15) @ApiModelProperty(value = "房间编号,如“511教室”") - private java.lang.String roomNumber; + private String roomNumber; /**完整名称,如“崇师楼B区511教室”*/ @Excel(name = "完整名称,如“崇师楼B区511教室”", width = 15) @ApiModelProperty(value = "完整名称,如“崇师楼B区511教室”") - private java.lang.String fullName; + private String fullName; + /**校区*/ + @Excel(name = "校区", width = 15) + @ApiModelProperty(value = "校区") + private String campus; /** 备注*/ @Excel(name = " 备注", width = 15) @ApiModelProperty(value = " 备注") - private java.lang.String remarks; + private String remarks; /**创建人*/ @ApiModelProperty(value = "创建人") - private java.lang.String createBy; + private String createBy; /**创建日期*/ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @@ -66,7 +70,7 @@ public class ClassRoom implements Serializable { private java.util.Date createTime; /**更新人*/ @ApiModelProperty(value = "更新人") - private java.lang.String updateBy; + private String updateBy; /**更新日期*/ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @@ -74,5 +78,5 @@ public class ClassRoom implements Serializable { private java.util.Date updateTime; /**所属部门*/ @ApiModelProperty(value = "所属部门") - private java.lang.String sysOrgCode; + private String sysOrgCode; } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/mapper/CetGraduatesMapper.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/mapper/CetGraduatesMapper.java index a6965975..42b358b7 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/mapper/CetGraduatesMapper.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/mapper/CetGraduatesMapper.java @@ -2,6 +2,7 @@ package org.jeecg.modules.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.common.system.base.entity.CetGraduatesCore; import org.jeecg.modules.entity.CetGraduates; /** diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetGraduatesService.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetGraduatesService.java index c519c84b..a963acd5 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetGraduatesService.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetGraduatesService.java @@ -2,6 +2,7 @@ package org.jeecg.modules.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.common.api.vo.Result; import org.jeecg.modules.entity.CetGraduates; /** @@ -12,5 +13,5 @@ import org.jeecg.modules.entity.CetGraduates; */ public interface ICetGraduatesService extends IService { - void add(CetGraduates cetGraduates); + Result add(CetGraduates cetGraduates); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetInvigilateDataService.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetInvigilateDataService.java index 0104c299..9d1d8001 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetInvigilateDataService.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetInvigilateDataService.java @@ -2,6 +2,7 @@ package org.jeecg.modules.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.common.api.vo.Result; import org.jeecg.modules.entity.CetInvigilateData; /** @@ -12,5 +13,6 @@ import org.jeecg.modules.entity.CetInvigilateData; */ public interface ICetInvigilateDataService extends IService { - void add(CetInvigilateData cetInvigilateData); + Result add(CetInvigilateData cetInvigilateData); + } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetNoTeachersService.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetNoTeachersService.java index 922d7640..b7b13eca 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetNoTeachersService.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetNoTeachersService.java @@ -2,6 +2,7 @@ package org.jeecg.modules.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.common.api.vo.Result; import org.jeecg.modules.entity.CetNoTeachers; /** @@ -12,5 +13,5 @@ import org.jeecg.modules.entity.CetNoTeachers; */ public interface ICetNoTeachersService extends IService { - void add(CetNoTeachers cetNoTeachers); + Result add(CetNoTeachers cetNoTeachers); } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetTeachersService.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetTeachersService.java index 58470bef..13136b2e 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetTeachersService.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/ICetTeachersService.java @@ -2,6 +2,7 @@ package org.jeecg.modules.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.common.api.vo.Result; import org.jeecg.modules.entity.CetTeachers; /** @@ -12,5 +13,6 @@ import org.jeecg.modules.entity.CetTeachers; */ public interface ICetTeachersService extends IService { - void add(CetTeachers cetTeachers); + Result add(CetTeachers cetTeachers); + } \ No newline at end of file diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetGraduatesServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetGraduatesServiceImpl.java index 58a942ff..ca912088 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetGraduatesServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetGraduatesServiceImpl.java @@ -2,15 +2,23 @@ package org.jeecg.modules.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.base.service.CoreICetGraduatesService; import org.jeecg.modules.entity.CetGraduates; import org.jeecg.modules.entity.CetInvigilateData; import org.jeecg.modules.mapper.CetGraduatesMapper; +import org.jeecg.modules.mapper.CetInvigilateDataMapper; import org.jeecg.modules.service.ICetGraduatesService; import org.jeecg.modules.service.ICetInvigilateDataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.yaml.snakeyaml.constructor.DuplicateKeyException; /** * @Description: 研究生数据表 @@ -20,16 +28,55 @@ import org.springframework.transaction.annotation.Transactional; */ @Service @RequiredArgsConstructor -public class CetGraduatesServiceImpl extends ServiceImpl implements ICetGraduatesService { - - private final ICetInvigilateDataService cetInvigilateDataService; +@Slf4j +public class CetGraduatesServiceImpl extends ServiceImpl implements ICetGraduatesService { + private final ICetInvigilateDataService cetInvigilateDataService; // 只注入 Service,不注入 Mapper @Override @Transactional(rollbackFor = Exception.class) - public void add(CetGraduates cetGraduates) { - save(cetGraduates); - CetInvigilateData cetInvigilateData = BeanUtil.copyProperties(cetGraduates, CetInvigilateData.class); - cetInvigilateData.setName(cetGraduates.getGraduatesName()); - cetInvigilateDataService.save(cetInvigilateData); + public Result add(CetGraduates cetGraduates) { + try { + // 1. 参数校验(也可放到 @Validated + @Controller 处理) + if (StringUtils.isBlank(cetGraduates.getGraduatesName())) { + return Result.error("研究生姓名不能为空"); + } + if (StringUtils.isBlank(cetGraduates.getStudentNumber())) { + return Result.error("学号不能为空"); + } + + // 2. 检查学号是否已存在(使用 lambdaQuery 是 MyBatis-Plus 的推荐做法) + boolean exists = lambdaQuery() + .eq(CetGraduates::getStudentNumber, cetGraduates.getStudentNumber()) + .exists(); + if (exists) { + return Result.error("该学号已存在"); + } + + // 3. 保存总表数据(调用 service 层,防止绕过事务控制) + CetInvigilateData masterData = new CetInvigilateData(); + masterData.setName(cetGraduates.getGraduatesName()); + masterData.setType("研究生"); + + if (!cetInvigilateDataService.save(masterData)) { + throw new RuntimeException("总表数据保存失败"); + } + + // 4. 设置主表 ID 并保存研究生信息 + cetGraduates.setId(masterData.getId()); + + if (!this.save(cetGraduates)) { + throw new RuntimeException("研究生数据保存失败"); + } + + return Result.ok("添加成功"); + + } catch (DuplicateKeyException e) { + return Result.error("数据已存在,请勿重复添加"); + } catch (DataIntegrityViolationException e) { + return Result.error("数据不完整: " + e.getMostSpecificCause().getMessage()); + } catch (Exception e) { + log.error("添加研究生 [{}] 异常:{}", cetGraduates.getGraduatesName(), e.getMessage(), e); + return Result.error("系统异常,请联系管理员"); + } } } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetInvigilateDataServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetInvigilateDataServiceImpl.java index 08728056..3c51fdcc 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetInvigilateDataServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetInvigilateDataServiceImpl.java @@ -3,12 +3,21 @@ package org.jeecg.modules.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.extension.toolkit.Db; +import lombok.RequiredArgsConstructor; +import org.jeecg.common.api.vo.Result; import org.jeecg.modules.entity.CetGraduates; import org.jeecg.modules.entity.CetInvigilateData; import org.jeecg.modules.entity.CetNoTeachers; import org.jeecg.modules.entity.CetTeachers; +import org.jeecg.modules.mapper.CetGraduatesMapper; import org.jeecg.modules.mapper.CetInvigilateDataMapper; +import org.jeecg.modules.mapper.CetNoTeachersMapper; +import org.jeecg.modules.mapper.CetTeachersMapper; +import org.jeecg.modules.service.ICetGraduatesService; import org.jeecg.modules.service.ICetInvigilateDataService; +import org.jeecg.modules.service.ICetNoTeachersService; +import org.jeecg.modules.service.ICetTeachersService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -21,27 +30,67 @@ import org.springframework.transaction.annotation.Transactional; * @Version: V1.0 */ @Service +@RequiredArgsConstructor +@Transactional public class CetInvigilateDataServiceImpl extends ServiceImpl implements ICetInvigilateDataService { + @Autowired + private CetTeachersMapper cetTeachersMapper; + @Autowired + private CetGraduatesMapper cetGraduatesMapper; + @Autowired + private CetNoTeachersMapper cetNoTeachersMapper; + + @Override - @Transactional(rollbackFor = Exception.class) - public void add(CetInvigilateData cetInvigilateData) { - save(cetInvigilateData); - switch (cetInvigilateData.getType()) { - case 1: - CetTeachers cetTeachers = BeanUtil.copyProperties(cetInvigilateData, CetTeachers.class); - cetTeachers.setTeacherName(cetInvigilateData.getName()); - Db.save(cetTeachers); - case 2: - CetGraduates cetGraduates = BeanUtil.copyProperties(cetInvigilateData, CetGraduates.class); - cetGraduates.setGraduatesName(cetInvigilateData.getName()); - Db.save(cetGraduates); - case 3: - Db.save(BeanUtil.copyProperties(cetInvigilateData, CetNoTeachers.class)); - default: - // TODO 测试使用 - Db.save(BeanUtil.copyProperties(cetInvigilateData, CetNoTeachers.class)); -// new Exception("请不要传递非法参数"); + public Result add(CetInvigilateData cetInvigilateData) { + try { + + boolean masterSaved = this.save(cetInvigilateData); // MyBatis-Plus 的 save() + if (!masterSaved) { + throw new RuntimeException("总表数据保存失败"); + } + + // 获取自动生成的 ID + String masterId = cetInvigilateData.getId(); + + switch (cetInvigilateData.getType()) { + case "教师": + CetTeachers cetTeachers = BeanUtil.copyProperties(cetInvigilateData, CetTeachers.class); + cetTeachers.setId(masterId); + cetTeachers.setTeacherName(cetInvigilateData.getName()); + cetTeachers.setJobNumber(cetInvigilateData.getCode()); + if (cetTeachersMapper.insert(cetTeachers) <= 0) { + throw new RuntimeException("教师信息保存失败"); + } + break; + + case "研究生": + CetGraduates cetGraduates = BeanUtil.copyProperties(cetInvigilateData, CetGraduates.class); + cetGraduates.setId(masterId); + cetGraduates.setGraduatesName(cetInvigilateData.getName()); + cetGraduates.setStudentNumber(cetInvigilateData.getCode()); + if (cetGraduatesMapper.insert(cetGraduates) <= 0) { + throw new RuntimeException("研究生信息保存失败"); + } + break; + + case "非教师": + CetNoTeachers cetNoTeachers = BeanUtil.copyProperties(cetInvigilateData, CetNoTeachers.class); + cetNoTeachers.setId(masterId); + if (cetNoTeachersMapper.insert(cetNoTeachers) <= 0) { + throw new RuntimeException("非教师信息保存失败"); + } + break; + + default: + throw new RuntimeException("数据类型不存在!!"); + } + + return Result.ok("添加成功!!"); + } catch (Exception e) { + return Result.error("添加失败: " + e.getMessage()); } } + } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetNoTeachersServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetNoTeachersServiceImpl.java index 8e27a055..ed6b9803 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetNoTeachersServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetNoTeachersServiceImpl.java @@ -3,15 +3,21 @@ package org.jeecg.modules.service.impl; import cn.hutool.core.bean.BeanUtil; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; import org.jeecg.modules.entity.CetInvigilateData; import org.jeecg.modules.entity.CetNoTeachers; import org.jeecg.modules.mapper.CetNoTeachersMapper; import org.jeecg.modules.service.ICetInvigilateDataService; import org.jeecg.modules.service.ICetNoTeachersService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.transaction.annotation.Transactional; +import org.yaml.snakeyaml.constructor.DuplicateKeyException; /** * @Description: 非教师数据表 @@ -21,15 +27,42 @@ import org.springframework.transaction.annotation.Transactional; */ @Service @RequiredArgsConstructor +@Slf4j public class CetNoTeachersServiceImpl extends ServiceImpl implements ICetNoTeachersService { - - private final ICetInvigilateDataService cetInvigateDataService; + private final ICetInvigilateDataService cetInvigilateDataService; @Override @Transactional(rollbackFor = Exception.class) - public void add(CetNoTeachers cetNoTeachers) { - save(cetNoTeachers); - CetInvigilateData cetInvigilateData = BeanUtil.copyProperties(cetNoTeachers, CetInvigilateData.class); - cetInvigateDataService.save(cetInvigilateData); + public Result add(CetNoTeachers cetNoTeachers) { + try { + // 1. 构造总表对象 + CetInvigilateData masterData = new CetInvigilateData(); + BeanUtils.copyProperties(cetNoTeachers, masterData); + masterData.setType("非教师"); // 设置类型标识 + masterData.setName(cetNoTeachers.getName()); + + // 2. 保存总表数据 + if (!cetInvigilateDataService.save(masterData)) { + throw new RuntimeException("总表数据保存失败"); + } + + // 3. 设置主表生成的 ID 到分表中 + cetNoTeachers.setId(masterData.getId()); + + // 4. 保存非教师分表数据 + if (!this.save(cetNoTeachers)) { + throw new RuntimeException("非教师数据保存失败"); + } + + return Result.ok("添加成功!"); + + } catch (DuplicateKeyException e) { + return Result.error("该非教师信息已存在"); + } catch (DataIntegrityViolationException e) { + return Result.error("数据完整性错误: " + e.getMostSpecificCause().getMessage()); + } catch (Exception e) { + log.error("添加非教师数据异常: {}", e.getMessage(), e); + return Result.error("系统错误: " + e.getMessage()); + } } } diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetTeachersServiceImpl.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetTeachersServiceImpl.java index 84e86384..80af5d03 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetTeachersServiceImpl.java +++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/modules/service/impl/CetTeachersServiceImpl.java @@ -2,15 +2,23 @@ package org.jeecg.modules.service.impl; import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.beanutils.BeanUtils; +import org.apache.ibatis.type.TypeAliasRegistry; +import org.jeecg.common.api.vo.Result; import org.jeecg.modules.entity.CetInvigilateData; import org.jeecg.modules.entity.CetTeachers; import org.jeecg.modules.mapper.CetTeachersMapper; import org.jeecg.modules.service.ICetInvigilateDataService; import org.jeecg.modules.service.ICetTeachersService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.yaml.snakeyaml.constructor.DuplicateKeyException; /** * @Description: 教师数据表 @@ -20,15 +28,51 @@ import org.springframework.transaction.annotation.Transactional; */ @Service @RequiredArgsConstructor +@Slf4j public class CetTeachersServiceImpl extends ServiceImpl implements ICetTeachersService { + private final ICetInvigilateDataService cetInvigilateDataService; - private final ICetInvigilateDataService cetInvigilateDataServiceImpl; - + @Override @Transactional(rollbackFor = Exception.class) - public void add(CetTeachers cetTeachers) { - save(cetTeachers); - CetInvigilateData cetInvigilateData= BeanUtil.copyProperties(cetTeachers, CetInvigilateData.class); - cetInvigilateData.setName(cetTeachers.getTeacherName()); - cetInvigilateDataServiceImpl.save(cetInvigilateData); + public Result add(CetTeachers teacher) { + try { + // 1. 参数校验 + if (StringUtils.isBlank(teacher.getTeacherName())) { + return Result.error("教师姓名不能为空"); + } + + // 2. 检查教师工号是否已存在 + boolean exists = lambdaQuery() + .eq(CetTeachers::getJobNumber, teacher.getJobNumber()) + .exists(); + if (exists) { + return Result.error("该教师工号已存在"); + } + + // 3. 保存总表数据 + CetInvigilateData master = new CetInvigilateData(); + master.setName(teacher.getTeacherName()); + master.setType("教师"); // 中文类型标识,用于区分不同身份 + + if (!cetInvigilateDataService.save(master)) { + throw new RuntimeException("总表数据保存失败"); + } + + // 4. 设置总表ID为教师ID,保存教师信息 + teacher.setId(master.getId()); + if (!this.save(teacher)) { + throw new RuntimeException("教师数据保存失败"); + } + + return Result.ok("添加成功"); + + } catch (DuplicateKeyException e) { + return Result.error("数据已存在,请勿重复添加"); + } catch (DataIntegrityViolationException e) { + return Result.error("数据不完整: " + e.getMostSpecificCause().getMessage()); + } catch (Exception e) { + log.error("添加教师 [{}] 异常: {}", teacher.getTeacherName(), e.getMessage(), e); + return Result.error("系统错误: " + e.getMessage()); + } } } diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml index c8e02586..9b5a4e57 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml @@ -156,6 +156,9 @@ spring: slow-sql-millis: 5000 datasource: master: +# url: jdbc:mysql://62.234.217.137:3306/jeecg-boot2?characterEncoding=UTF-8&rewriteBatchedStatements=true&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +# username: root +# password: nWZpHMb8mNxWE5Xk url: jdbc:mysql://43.138.83.20:3306/jeecg-boot2?characterEncoding=UTF-8&rewriteBatchedStatements=true&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root password: dbb4acbf6b676522 diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml index 49fb5486..79657a4d 100644 --- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml +++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml @@ -156,9 +156,9 @@ spring: slow-sql-millis: 5000 datasource: master: - url: jdbc:mysql://62.234.217.137:3306/jeecg-boot2?characterEncoding=UTF-8&rewriteBatchedStatements=true&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://43.138.83.20:3306/jeecg-boot2?characterEncoding=UTF-8&rewriteBatchedStatements=true&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root - password: nWZpHMb8mNxWE5Xk + password: dbb4acbf6b676522 driver-class-name: com.mysql.cj.jdbc.Driver # 多数据源配置 #multi-datasource1: @@ -169,7 +169,7 @@ spring: #redis 配置 redis: database: 2 - host: 62.234.217.137 + host: 43.138.83.20 port: 6379 password: LSHCwjr6ZN4hzCxS #mybatis plus 设置