feat 员工调动记录

This commit is contained in:
wkc
2026-02-11 10:42:38 +08:00
parent 78a9300644
commit 6db63cd8b1
40 changed files with 5557 additions and 29 deletions

View File

@@ -1,5 +1,12 @@
package com.ruoyi.framework.web.exception;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.exception.DemoModeException;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.html.EscapeUtil;
import jakarta.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -11,13 +18,8 @@ import org.springframework.web.bind.MissingPathVariableException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.exception.DemoModeException;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.html.EscapeUtil;
import java.sql.SQLIntegrityConstraintViolationException;
/**
* 全局异常处理器
@@ -97,8 +99,16 @@ public class GlobalExceptionHandler
public AjaxResult handleRuntimeException(RuntimeException e, HttpServletRequest request)
{
String requestURI = request.getRequestURI();
String message = e.getMessage();
// 处理数据库唯一键冲突MyBatis将SQL异常包装在RuntimeException中
if (message != null && message.contains("uk_staff_transfer_date")) {
log.error("请求地址'{}',员工调动记录唯一键冲突", requestURI);
return AjaxResult.error("该调动记录已存在(同一员工在同一天不能有相同的调动前部门和调动后部门)");
}
log.error("请求地址'{}',发生未知异常.", requestURI, e);
return AjaxResult.error(e.getMessage());
return AjaxResult.error(message);
}
/**
@@ -142,4 +152,23 @@ public class GlobalExceptionHandler
{
return AjaxResult.error("演示模式,不允许操作");
}
/**
* 数据库唯一键冲突异常
*/
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
public AjaxResult handleSQLIntegrityConstraintViolationException(SQLIntegrityConstraintViolationException e, HttpServletRequest request)
{
String requestURI = request.getRequestURI();
String message = e.getMessage();
// 处理员工调动记录唯一键冲突
if (message != null && message.contains("uk_staff_transfer_date")) {
log.error("请求地址'{}',员工调动记录唯一键冲突", requestURI);
return AjaxResult.error("该调动记录已存在(同一员工在同一天不能有相同的调动前部门和调动后部门)");
}
log.error("请求地址'{}',数据库约束冲突: {}", requestURI, message);
return AjaxResult.error("数据冲突,请检查是否重复");
}
}