实现新增、删除数据关联

This commit is contained in:
Qi 2025-06-15 16:40:41 +08:00
parent be2ae25b5c
commit addbef8cb2
20 changed files with 505 additions and 104 deletions

View File

@ -14,6 +14,7 @@ import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.modules.entity.CetGraduates; import org.jeecg.modules.entity.CetGraduates;
import org.jeecg.modules.service.ICetGraduatesService; import org.jeecg.modules.service.ICetGraduatesService;
import org.jeecg.modules.service.ICetInvigilateDataService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView; 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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
/** /**
* @Description: 研究生数据表 * @Description: 研究生数据表
@ -35,7 +37,8 @@ import java.util.Arrays;
public class CetGraduatesController extends JeecgController<CetGraduates, ICetGraduatesService> { public class CetGraduatesController extends JeecgController<CetGraduates, ICetGraduatesService> {
@Autowired @Autowired
private ICetGraduatesService cetGraduatesService; private ICetGraduatesService cetGraduatesService;
@Autowired
private ICetInvigilateDataService cetInvigilateDataService;
/** /**
* 分页列表查询 * 分页列表查询
* *
@ -69,8 +72,7 @@ public class CetGraduatesController extends JeecgController<CetGraduates, ICetGr
// @RequiresPermissions("cet:cet_graduates:add") // @RequiresPermissions("cet:cet_graduates:add")
@PostMapping(value = "/add") @PostMapping(value = "/add")
public Result<String> add(@RequestBody CetGraduates cetGraduates) { public Result<String> add(@RequestBody CetGraduates cetGraduates) {
cetGraduatesService.add(cetGraduates); return cetGraduatesService.add(cetGraduates);
return Result.OK("添加成功!");
} }
/** /**
@ -99,8 +101,29 @@ public class CetGraduatesController extends JeecgController<CetGraduates, ICetGr
@RequiresPermissions("cet:cet_graduates:delete") @RequiresPermissions("cet:cet_graduates:delete")
@DeleteMapping(value = "/delete") @DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) { public Result<String> delete(@RequestParam(name="id",required=true) String id) {
cetGraduatesService.removeById(id); // 1. 查询研究生分表
return Result.OK("删除成功!"); 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<CetGraduates, ICetGr
@RequiresPermissions("cet:cet_graduates:deleteBatch") @RequiresPermissions("cet:cet_graduates:deleteBatch")
@DeleteMapping(value = "/deleteBatch") @DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.cetGraduatesService.removeByIds(Arrays.asList(ids.split(","))); String[] idArray = ids.split(",");
return Result.OK("批量删除成功!"); List<String> 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());
}
} }
/** /**

View File

@ -1,6 +1,8 @@
package org.jeecg.modules.controller; package org.jeecg.modules.controller;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; 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 com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator; 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 lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.modules.entity.CetInvigilateData; import org.jeecg.modules.entity.CetInvigilateData;
import org.jeecg.modules.service.ICetGraduatesService;
import org.jeecg.modules.service.ICetInvigilateDataService; import org.jeecg.modules.service.ICetInvigilateDataService;
import org.jeecg.modules.service.ICetNoTeachersService;
import org.jeecg.modules.service.ICetTeachersService; import org.jeecg.modules.service.ICetTeachersService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -36,8 +43,12 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
public class CetInvigilateDataController extends JeecgController<CetInvigilateData, ICetInvigilateDataService> { public class CetInvigilateDataController extends JeecgController<CetInvigilateData, ICetInvigilateDataService> {
@Autowired @Autowired
private ICetInvigilateDataService cetInvigilateDataService; private ICetInvigilateDataService cetInvigilateDataService;
@Autowired @Autowired
private ICetTeachersService cetTeachersService; private ICetTeachersService cetTeachersService;
@Autowired
private ICetGraduatesService cetGraduatesService;
@Autowired
private ICetNoTeachersService cetNoTeachersService;
/** /**
* 分页列表查询 * 分页列表查询
@ -72,8 +83,8 @@ public class CetInvigilateDataController extends JeecgController<CetInvigilateDa
@RequiresPermissions("cet:cet_invigilate_data:add") @RequiresPermissions("cet:cet_invigilate_data:add")
@PostMapping(value = "/add") @PostMapping(value = "/add")
public Result<String> add(@RequestBody CetInvigilateData cetInvigilateData) { public Result<String> add(@RequestBody CetInvigilateData cetInvigilateData) {
cetInvigilateDataService.add(cetInvigilateData);
return Result.OK("添加成功!"); return cetInvigilateDataService.add(cetInvigilateData);
} }
/** /**
@ -101,12 +112,48 @@ public class CetInvigilateDataController extends JeecgController<CetInvigilateDa
@ApiOperation(value="数据总表-通过id删除", notes="数据总表-通过id删除") @ApiOperation(value="数据总表-通过id删除", notes="数据总表-通过id删除")
@RequiresPermissions("cet:cet_invigilate_data:delete") @RequiresPermissions("cet:cet_invigilate_data:delete")
@DeleteMapping(value = "/delete") @DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) { public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
cetInvigilateDataService.removeById(id); // 1. 查询总表记录获取类型
return Result.OK("删除成功!"); 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 * @param ids
@ -117,8 +164,57 @@ public class CetInvigilateDataController extends JeecgController<CetInvigilateDa
@RequiresPermissions("cet:cet_invigilate_data:deleteBatch") @RequiresPermissions("cet:cet_invigilate_data:deleteBatch")
@DeleteMapping(value = "/deleteBatch") @DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.cetInvigilateDataService.removeByIds(Arrays.asList(ids.split(","))); String[] idArray = ids.split(",");
return Result.OK("批量删除成功!"); List<String> successIds = new ArrayList<>();
List<String> 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));
}
} }
/** /**

View File

@ -1,6 +1,7 @@
package org.jeecg.modules.controller; package org.jeecg.modules.controller;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -12,7 +13,9 @@ import org.jeecg.common.system.query.QueryGenerator;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.modules.entity.CetGraduates;
import org.jeecg.modules.entity.CetNoTeachers; import org.jeecg.modules.entity.CetNoTeachers;
import org.jeecg.modules.service.ICetInvigilateDataService;
import org.jeecg.modules.service.ICetNoTeachersService; import org.jeecg.modules.service.ICetNoTeachersService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -35,7 +38,8 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
public class CetNoTeachersController extends JeecgController<CetNoTeachers, ICetNoTeachersService> { public class CetNoTeachersController extends JeecgController<CetNoTeachers, ICetNoTeachersService> {
@Autowired @Autowired
private ICetNoTeachersService cetNoTeachersService; private ICetNoTeachersService cetNoTeachersService;
@Autowired
private ICetInvigilateDataService cetInvigilateDataService;
/** /**
* 分页列表查询 * 分页列表查询
* *
@ -69,8 +73,8 @@ public class CetNoTeachersController extends JeecgController<CetNoTeachers, ICet
// @RequiresPermissions("cet:cet_no_teachers:add") // @RequiresPermissions("cet:cet_no_teachers:add")
@PostMapping(value = "/add") @PostMapping(value = "/add")
public Result<String> add(@RequestBody CetNoTeachers cetNoTeachers) { public Result<String> add(@RequestBody CetNoTeachers cetNoTeachers) {
cetNoTeachersService.add(cetNoTeachers);
return Result.OK("添加成功!"); return cetNoTeachersService.add(cetNoTeachers);
} }
/** /**
@ -99,8 +103,29 @@ public class CetNoTeachersController extends JeecgController<CetNoTeachers, ICet
@RequiresPermissions("cet:cet_no_teachers:delete") @RequiresPermissions("cet:cet_no_teachers:delete")
@DeleteMapping(value = "/delete") @DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) { public Result<String> delete(@RequestParam(name="id",required=true) String id) {
cetNoTeachersService.removeById(id); // 1. 查询研究生分表
return Result.OK("删除成功!"); 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<CetNoTeachers, ICet
@RequiresPermissions("cet:cet_no_teachers:deleteBatch") @RequiresPermissions("cet:cet_no_teachers:deleteBatch")
@DeleteMapping(value = "/deleteBatch") @DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.cetNoTeachersService.removeByIds(Arrays.asList(ids.split(","))); String[] idArray = ids.split(",");
return Result.OK("批量删除成功!"); List<String> 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());
}
} }
/** /**

View File

@ -1,6 +1,7 @@
package org.jeecg.modules.controller; package org.jeecg.modules.controller;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -13,7 +14,9 @@ import org.jeecg.common.system.query.QueryGenerator;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.modules.entity.CetGraduates;
import org.jeecg.modules.entity.CetTeachers; import org.jeecg.modules.entity.CetTeachers;
import org.jeecg.modules.service.ICetInvigilateDataService;
import org.jeecg.modules.service.ICetTeachersService; import org.jeecg.modules.service.ICetTeachersService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -36,6 +39,8 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
public class CetTeachersController extends JeecgController<CetTeachers, ICetTeachersService> { public class CetTeachersController extends JeecgController<CetTeachers, ICetTeachersService> {
@Autowired @Autowired
private ICetTeachersService cetTeachersService; private ICetTeachersService cetTeachersService;
@Autowired
private ICetInvigilateDataService cetInvigilateDataService;
/** /**
* 分页列表查询 * 分页列表查询
@ -70,8 +75,8 @@ public class CetTeachersController extends JeecgController<CetTeachers, ICetTeac
@RequiresPermissions("data:cet_teachers:add") @RequiresPermissions("data:cet_teachers:add")
@PostMapping(value = "/add") @PostMapping(value = "/add")
public Result<String> add(@RequestBody CetTeachers cetTeachers) { public Result<String> add(@RequestBody CetTeachers cetTeachers) {
cetTeachersService.add(cetTeachers);
return Result.OK("添加成功!"); return cetTeachersService.add(cetTeachers);
} }
/** /**
@ -100,8 +105,30 @@ public class CetTeachersController extends JeecgController<CetTeachers, ICetTeac
@RequiresPermissions("data:cet_teachers:delete") @RequiresPermissions("data:cet_teachers:delete")
@DeleteMapping(value = "/delete") @DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) { public Result<String> 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<CetTeachers, ICetTeac
@RequiresPermissions("data:cet_teachers:deleteBatch") @RequiresPermissions("data:cet_teachers:deleteBatch")
@DeleteMapping(value = "/deleteBatch") @DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) { public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.cetTeachersService.removeByIds(Arrays.asList(ids.split(","))); String[] idArray = ids.split(",");
return Result.OK("批量删除成功!"); List<String> 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());
}
} }
/** /**

View File

@ -33,7 +33,7 @@ public class CetGraduates implements Serializable {
/**主键*/ /**主键*/
@TableId(type = IdType.ASSIGN_ID) @TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键") @ApiModelProperty(value = "主键")
private String id; private String Id ;
/**学号*/ /**学号*/
@Excel(name = "学号", width = 15) @Excel(name = "学号", width = 15)
@ApiModelProperty(value = "学号") @ApiModelProperty(value = "学号")
@ -83,5 +83,5 @@ public class CetGraduates implements Serializable {
private String sysOrgCode; private String sysOrgCode;
/**类型*/ /**类型*/
@TableField(exist = false) @TableField(exist = false)
private Integer type; private String type;
} }

View File

@ -32,15 +32,11 @@ public class CetInvigilateData implements Serializable {
/**主键*/ /**主键*/
@TableId(type = IdType.ASSIGN_ID) @TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键") @ApiModelProperty(value = "主键")
private String id; private String Id;
/**学号*/ /**学号/工号*/
@Excel(name = "学号", width = 15) @Excel(name = "学号/工号", width = 15)
@ApiModelProperty(value = "学号") @ApiModelProperty(value = "学号/工号")
private String studentNumber; private String code;
/**工号*/
@Excel(name = "工号", width = 15)
@ApiModelProperty(value = "工号")
private Integer jobNumber;
/**教师姓名*/ /**教师姓名*/
@Excel(name = "教师姓名", width = 15) @Excel(name = "教师姓名", width = 15)
@ApiModelProperty(value = "教师姓名") @ApiModelProperty(value = "教师姓名")
@ -85,5 +81,7 @@ public class CetInvigilateData implements Serializable {
@ApiModelProperty(value = "所属部门") @ApiModelProperty(value = "所属部门")
private String sysOrgCode; private String sysOrgCode;
/**类型*/ /**类型*/
private Integer type; @Excel(name = "类型", width = 15)
@ApiModelProperty(value = "类型")
private String type;
} }

View File

@ -33,7 +33,7 @@ public class CetNoTeachers implements Serializable {
/**主键*/ /**主键*/
@TableId(type = IdType.ASSIGN_ID) @TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键") @ApiModelProperty(value = "主键")
private String id; private String Id ;
/**教师姓名*/ /**教师姓名*/
@Excel(name = "教师姓名", width = 15) @Excel(name = "教师姓名", width = 15)
@ApiModelProperty(value = "教师姓名") @ApiModelProperty(value = "教师姓名")
@ -75,5 +75,5 @@ public class CetNoTeachers implements Serializable {
private String sysOrgCode; private String sysOrgCode;
/**类型*/ /**类型*/
@TableField(exist = false) @TableField(exist = false)
private Integer type; private String type;
} }

View File

@ -33,11 +33,11 @@ public class CetTeachers implements Serializable {
/**主键*/ /**主键*/
@TableId(type = IdType.ASSIGN_ID) @TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键") @ApiModelProperty(value = "主键")
private String id; private String Id ;
/**工号*/ /**工号*/
@Excel(name = "工号", width = 15) @Excel(name = "工号", width = 15)
@ApiModelProperty(value = "工号") @ApiModelProperty(value = "工号")
private Integer jobNumber; private String jobNumber;
/**教师姓名*/ /**教师姓名*/
@Excel(name = "教师姓名", width = 15) @Excel(name = "教师姓名", width = 15)
@ApiModelProperty(value = "教师姓名") @ApiModelProperty(value = "教师姓名")
@ -83,6 +83,6 @@ public class CetTeachers implements Serializable {
private String sysOrgCode; private String sysOrgCode;
/**类型*/ /**类型*/
@TableField(exist = false) @TableField(exist = false)
private Integer type; private String type;
} }

View File

@ -31,34 +31,38 @@ public class ClassRoom implements Serializable {
/**主键*/ /**主键*/
@TableId(type = IdType.ASSIGN_ID) @TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键") @ApiModelProperty(value = "主键")
private java.lang.String id; private String id;
/**教学楼名,如“理工一”、“崇师楼”*/ /**教学楼名,如“理工一”、“崇师楼”*/
@Excel(name = "教学楼名", width = 15) @Excel(name = "教学楼名", width = 15)
@ApiModelProperty(value = "教学楼名,如“理工一”、“崇师楼”") @ApiModelProperty(value = "教学楼名,如“理工一”、“崇师楼”")
private java.lang.String building; private String building;
/**区域如“A区”、“B区”无则为空*/ /**区域如“A区”、“B区”无则为空*/
@Excel(name = "区域", width = 15) @Excel(name = "区域", width = 15)
@ApiModelProperty(value = "区域如“A区”、“B区”无则为空") @ApiModelProperty(value = "区域如“A区”、“B区”无则为空")
private java.lang.String area; private String area;
/**楼层号,如 5楼、2楼 等*/ /**楼层号,如 5楼、2楼 等*/
@Excel(name = "楼层号", width = 15) @Excel(name = "楼层号", width = 15)
@ApiModelProperty(value = "楼层号,如 5楼、2楼 等") @ApiModelProperty(value = "楼层号,如 5楼、2楼 等")
private java.lang.String floor; private String floor;
/**房间编号如“511教室”*/ /**房间编号如“511教室”*/
@Excel(name = "教室”", width = 15) @Excel(name = "教室”", width = 15)
@ApiModelProperty(value = "房间编号如“511教室”") @ApiModelProperty(value = "房间编号如“511教室”")
private java.lang.String roomNumber; private String roomNumber;
/**完整名称如“崇师楼B区511教室”*/ /**完整名称如“崇师楼B区511教室”*/
@Excel(name = "完整名称如“崇师楼B区511教室”", width = 15) @Excel(name = "完整名称如“崇师楼B区511教室”", width = 15)
@ApiModelProperty(value = "完整名称如“崇师楼B区511教室”") @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) @Excel(name = " 备注", width = 15)
@ApiModelProperty(value = " 备注") @ApiModelProperty(value = " 备注")
private java.lang.String remarks; private String remarks;
/**创建人*/ /**创建人*/
@ApiModelProperty(value = "创建人") @ApiModelProperty(value = "创建人")
private java.lang.String createBy; private String createBy;
/**创建日期*/ /**创建日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(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; private java.util.Date createTime;
/**更新人*/ /**更新人*/
@ApiModelProperty(value = "更新人") @ApiModelProperty(value = "更新人")
private java.lang.String updateBy; private String updateBy;
/**更新日期*/ /**更新日期*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(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; private java.util.Date updateTime;
/**所属部门*/ /**所属部门*/
@ApiModelProperty(value = "所属部门") @ApiModelProperty(value = "所属部门")
private java.lang.String sysOrgCode; private String sysOrgCode;
} }

View File

@ -2,6 +2,7 @@ package org.jeecg.modules.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.common.system.base.entity.CetGraduatesCore;
import org.jeecg.modules.entity.CetGraduates; import org.jeecg.modules.entity.CetGraduates;
/** /**

View File

@ -2,6 +2,7 @@ package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.CetGraduates; import org.jeecg.modules.entity.CetGraduates;
/** /**
@ -12,5 +13,5 @@ import org.jeecg.modules.entity.CetGraduates;
*/ */
public interface ICetGraduatesService extends IService<CetGraduates> { public interface ICetGraduatesService extends IService<CetGraduates> {
void add(CetGraduates cetGraduates); Result<String> add(CetGraduates cetGraduates);
} }

View File

@ -2,6 +2,7 @@ package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.CetInvigilateData; import org.jeecg.modules.entity.CetInvigilateData;
/** /**
@ -12,5 +13,6 @@ import org.jeecg.modules.entity.CetInvigilateData;
*/ */
public interface ICetInvigilateDataService extends IService<CetInvigilateData> { public interface ICetInvigilateDataService extends IService<CetInvigilateData> {
void add(CetInvigilateData cetInvigilateData); Result<String> add(CetInvigilateData cetInvigilateData);
} }

View File

@ -2,6 +2,7 @@ package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.CetNoTeachers; import org.jeecg.modules.entity.CetNoTeachers;
/** /**
@ -12,5 +13,5 @@ import org.jeecg.modules.entity.CetNoTeachers;
*/ */
public interface ICetNoTeachersService extends IService<CetNoTeachers> { public interface ICetNoTeachersService extends IService<CetNoTeachers> {
void add(CetNoTeachers cetNoTeachers); Result<String> add(CetNoTeachers cetNoTeachers);
} }

View File

@ -2,6 +2,7 @@ package org.jeecg.modules.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.entity.CetTeachers; import org.jeecg.modules.entity.CetTeachers;
/** /**
@ -12,5 +13,6 @@ import org.jeecg.modules.entity.CetTeachers;
*/ */
public interface ICetTeachersService extends IService<CetTeachers> { public interface ICetTeachersService extends IService<CetTeachers> {
void add(CetTeachers cetTeachers); Result<String> add(CetTeachers cetTeachers);
} }

View File

@ -2,15 +2,23 @@ package org.jeecg.modules.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor; 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.CetGraduates;
import org.jeecg.modules.entity.CetInvigilateData; import org.jeecg.modules.entity.CetInvigilateData;
import org.jeecg.modules.mapper.CetGraduatesMapper; import org.jeecg.modules.mapper.CetGraduatesMapper;
import org.jeecg.modules.mapper.CetInvigilateDataMapper;
import org.jeecg.modules.service.ICetGraduatesService; import org.jeecg.modules.service.ICetGraduatesService;
import org.jeecg.modules.service.ICetInvigilateDataService; 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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.yaml.snakeyaml.constructor.DuplicateKeyException;
/** /**
* @Description: 研究生数据表 * @Description: 研究生数据表
@ -20,16 +28,55 @@ import org.springframework.transaction.annotation.Transactional;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class CetGraduatesServiceImpl extends ServiceImpl<CetGraduatesMapper, CetGraduates> implements ICetGraduatesService { @Slf4j
public class CetGraduatesServiceImpl extends ServiceImpl<CetGraduatesMapper, CetGraduates> implements ICetGraduatesService {
private final ICetInvigilateDataService cetInvigilateDataService;
private final ICetInvigilateDataService cetInvigilateDataService; // 只注入 Service不注入 Mapper
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void add(CetGraduates cetGraduates) { public Result<String> add(CetGraduates cetGraduates) {
save(cetGraduates); try {
CetInvigilateData cetInvigilateData = BeanUtil.copyProperties(cetGraduates, CetInvigilateData.class); // 1. 参数校验也可放到 @Validated + @Controller 处理
cetInvigilateData.setName(cetGraduates.getGraduatesName()); if (StringUtils.isBlank(cetGraduates.getGraduatesName())) {
cetInvigilateDataService.save(cetInvigilateData); 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("系统异常,请联系管理员");
}
} }
} }

View File

@ -3,12 +3,21 @@ package org.jeecg.modules.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.extension.toolkit.Db; 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.CetGraduates;
import org.jeecg.modules.entity.CetInvigilateData; import org.jeecg.modules.entity.CetInvigilateData;
import org.jeecg.modules.entity.CetNoTeachers; import org.jeecg.modules.entity.CetNoTeachers;
import org.jeecg.modules.entity.CetTeachers; import org.jeecg.modules.entity.CetTeachers;
import org.jeecg.modules.mapper.CetGraduatesMapper;
import org.jeecg.modules.mapper.CetInvigilateDataMapper; 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.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 org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -21,27 +30,67 @@ import org.springframework.transaction.annotation.Transactional;
* @Version: V1.0 * @Version: V1.0
*/ */
@Service @Service
@RequiredArgsConstructor
@Transactional
public class CetInvigilateDataServiceImpl extends ServiceImpl<CetInvigilateDataMapper, CetInvigilateData> implements ICetInvigilateDataService { public class CetInvigilateDataServiceImpl extends ServiceImpl<CetInvigilateDataMapper, CetInvigilateData> implements ICetInvigilateDataService {
@Autowired
private CetTeachersMapper cetTeachersMapper;
@Autowired
private CetGraduatesMapper cetGraduatesMapper;
@Autowired
private CetNoTeachersMapper cetNoTeachersMapper;
@Override @Override
@Transactional(rollbackFor = Exception.class) public Result<String> add(CetInvigilateData cetInvigilateData) {
public void add(CetInvigilateData cetInvigilateData) { try {
save(cetInvigilateData);
switch (cetInvigilateData.getType()) { boolean masterSaved = this.save(cetInvigilateData); // MyBatis-Plus save()
case 1: if (!masterSaved) {
CetTeachers cetTeachers = BeanUtil.copyProperties(cetInvigilateData, CetTeachers.class); throw new RuntimeException("总表数据保存失败");
cetTeachers.setTeacherName(cetInvigilateData.getName()); }
Db.save(cetTeachers);
case 2: // 获取自动生成的 ID
CetGraduates cetGraduates = BeanUtil.copyProperties(cetInvigilateData, CetGraduates.class); String masterId = cetInvigilateData.getId();
cetGraduates.setGraduatesName(cetInvigilateData.getName());
Db.save(cetGraduates); switch (cetInvigilateData.getType()) {
case 3: case "教师":
Db.save(BeanUtil.copyProperties(cetInvigilateData, CetNoTeachers.class)); CetTeachers cetTeachers = BeanUtil.copyProperties(cetInvigilateData, CetTeachers.class);
default: cetTeachers.setId(masterId);
// TODO 测试使用 cetTeachers.setTeacherName(cetInvigilateData.getName());
Db.save(BeanUtil.copyProperties(cetInvigilateData, CetNoTeachers.class)); cetTeachers.setJobNumber(cetInvigilateData.getCode());
// new Exception("请不要传递非法参数"); 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());
} }
} }
} }

View File

@ -3,15 +3,21 @@ package org.jeecg.modules.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import lombok.RequiredArgsConstructor; 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.CetInvigilateData;
import org.jeecg.modules.entity.CetNoTeachers; import org.jeecg.modules.entity.CetNoTeachers;
import org.jeecg.modules.mapper.CetNoTeachersMapper; import org.jeecg.modules.mapper.CetNoTeachersMapper;
import org.jeecg.modules.service.ICetInvigilateDataService; import org.jeecg.modules.service.ICetInvigilateDataService;
import org.jeecg.modules.service.ICetNoTeachersService; 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 org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.yaml.snakeyaml.constructor.DuplicateKeyException;
/** /**
* @Description: 非教师数据表 * @Description: 非教师数据表
@ -21,15 +27,42 @@ import org.springframework.transaction.annotation.Transactional;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j
public class CetNoTeachersServiceImpl extends ServiceImpl<CetNoTeachersMapper, CetNoTeachers> implements ICetNoTeachersService { public class CetNoTeachersServiceImpl extends ServiceImpl<CetNoTeachersMapper, CetNoTeachers> implements ICetNoTeachersService {
private final ICetInvigilateDataService cetInvigilateDataService;
private final ICetInvigilateDataService cetInvigateDataService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void add(CetNoTeachers cetNoTeachers) { public Result<String> add(CetNoTeachers cetNoTeachers) {
save(cetNoTeachers); try {
CetInvigilateData cetInvigilateData = BeanUtil.copyProperties(cetNoTeachers, CetInvigilateData.class); // 1. 构造总表对象
cetInvigateDataService.save(cetInvigilateData); 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());
}
} }
} }

View File

@ -2,15 +2,23 @@ package org.jeecg.modules.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor; 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.CetInvigilateData;
import org.jeecg.modules.entity.CetTeachers; import org.jeecg.modules.entity.CetTeachers;
import org.jeecg.modules.mapper.CetTeachersMapper; import org.jeecg.modules.mapper.CetTeachersMapper;
import org.jeecg.modules.service.ICetInvigilateDataService; import org.jeecg.modules.service.ICetInvigilateDataService;
import org.jeecg.modules.service.ICetTeachersService; 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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.yaml.snakeyaml.constructor.DuplicateKeyException;
/** /**
* @Description: 教师数据表 * @Description: 教师数据表
@ -20,15 +28,51 @@ import org.springframework.transaction.annotation.Transactional;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j
public class CetTeachersServiceImpl extends ServiceImpl<CetTeachersMapper, CetTeachers> implements ICetTeachersService { public class CetTeachersServiceImpl extends ServiceImpl<CetTeachersMapper, CetTeachers> implements ICetTeachersService {
private final ICetInvigilateDataService cetInvigilateDataService;
private final ICetInvigilateDataService cetInvigilateDataServiceImpl; @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void add(CetTeachers cetTeachers) { public Result<String> add(CetTeachers teacher) {
save(cetTeachers); try {
CetInvigilateData cetInvigilateData= BeanUtil.copyProperties(cetTeachers, CetInvigilateData.class); // 1. 参数校验
cetInvigilateData.setName(cetTeachers.getTeacherName()); if (StringUtils.isBlank(teacher.getTeacherName())) {
cetInvigilateDataServiceImpl.save(cetInvigilateData); 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());
}
} }
} }

View File

@ -156,6 +156,9 @@ spring:
slow-sql-millis: 5000 slow-sql-millis: 5000
datasource: datasource:
master: 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 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 username: root
password: dbb4acbf6b676522 password: dbb4acbf6b676522

View File

@ -156,9 +156,9 @@ spring:
slow-sql-millis: 5000 slow-sql-millis: 5000
datasource: datasource:
master: 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 username: root
password: nWZpHMb8mNxWE5Xk password: dbb4acbf6b676522
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
# 多数据源配置 # 多数据源配置
#multi-datasource1: #multi-datasource1:
@ -169,7 +169,7 @@ spring:
#redis 配置 #redis 配置
redis: redis:
database: 2 database: 2
host: 62.234.217.137 host: 43.138.83.20
port: 6379 port: 6379
password: LSHCwjr6ZN4hzCxS password: LSHCwjr6ZN4hzCxS
#mybatis plus 设置 #mybatis plus 设置