实现新增、删除数据关联
This commit is contained in:
parent
be2ae25b5c
commit
addbef8cb2
|
@ -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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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.*;
|
||||||
|
@ -38,6 +45,10 @@ public class CetInvigilateDataController extends JeecgController<CetInvigilateDa
|
||||||
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,11 +112,47 @@ 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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量删除
|
* 批量删除
|
||||||
*
|
*
|
||||||
|
@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
|
@ -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
|
||||||
|
@Slf4j
|
||||||
public class CetGraduatesServiceImpl extends ServiceImpl<CetGraduatesMapper, CetGraduates> implements ICetGraduatesService {
|
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("系统异常,请联系管理员");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
|
||||||
|
boolean masterSaved = this.save(cetInvigilateData); // MyBatis-Plus 的 save()
|
||||||
|
if (!masterSaved) {
|
||||||
|
throw new RuntimeException("总表数据保存失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取自动生成的 ID
|
||||||
|
String masterId = cetInvigilateData.getId();
|
||||||
|
|
||||||
switch (cetInvigilateData.getType()) {
|
switch (cetInvigilateData.getType()) {
|
||||||
case 1:
|
case "教师":
|
||||||
CetTeachers cetTeachers = BeanUtil.copyProperties(cetInvigilateData, CetTeachers.class);
|
CetTeachers cetTeachers = BeanUtil.copyProperties(cetInvigilateData, CetTeachers.class);
|
||||||
|
cetTeachers.setId(masterId);
|
||||||
cetTeachers.setTeacherName(cetInvigilateData.getName());
|
cetTeachers.setTeacherName(cetInvigilateData.getName());
|
||||||
Db.save(cetTeachers);
|
cetTeachers.setJobNumber(cetInvigilateData.getCode());
|
||||||
case 2:
|
if (cetTeachersMapper.insert(cetTeachers) <= 0) {
|
||||||
|
throw new RuntimeException("教师信息保存失败");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "研究生":
|
||||||
CetGraduates cetGraduates = BeanUtil.copyProperties(cetInvigilateData, CetGraduates.class);
|
CetGraduates cetGraduates = BeanUtil.copyProperties(cetInvigilateData, CetGraduates.class);
|
||||||
|
cetGraduates.setId(masterId);
|
||||||
cetGraduates.setGraduatesName(cetInvigilateData.getName());
|
cetGraduates.setGraduatesName(cetInvigilateData.getName());
|
||||||
Db.save(cetGraduates);
|
cetGraduates.setStudentNumber(cetInvigilateData.getCode());
|
||||||
case 3:
|
if (cetGraduatesMapper.insert(cetGraduates) <= 0) {
|
||||||
Db.save(BeanUtil.copyProperties(cetInvigilateData, CetNoTeachers.class));
|
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:
|
default:
|
||||||
// TODO 测试使用
|
throw new RuntimeException("数据类型不存在!!");
|
||||||
Db.save(BeanUtil.copyProperties(cetInvigilateData, CetNoTeachers.class));
|
}
|
||||||
// new Exception("请不要传递非法参数");
|
|
||||||
|
return Result.ok("添加成功!!");
|
||||||
|
} catch (Exception e) {
|
||||||
|
return Result.error("添加失败: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 设置
|
||||||
|
|
Loading…
Reference in New Issue