提交 4439987b 作者: yanxin

导入逻辑修改,增加mybatis拦截器

上级 8a4e7209
package com.zzsn.leaderbase.config;
import com.zzsn.leaderbase.util.AuthUtil;
import com.zzsn.leaderbase.util.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.binding.MapperMethod.ParamMap;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlCommandType;
import org.apache.ibatis.plugin.*;
import org.springframework.stereotype.Component;
import java.lang.reflect.Field;
import java.util.*;
/**
* mybatis拦截器,自动注入创建人、创建时间、修改人、修改时间
*
* @Author scott
* @Date 2019-01-19
*/
@Slf4j
@Component
@Intercepts({@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class})})
public class MybatisInterceptor implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
String sqlId = mappedStatement.getId();
log.debug("------sqlId------" + sqlId);
SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType();
Object parameter = invocation.getArgs()[1];
log.debug("------sqlCommandType------" + sqlCommandType);
if (parameter == null) {
return invocation.proceed();
}
if (SqlCommandType.INSERT == sqlCommandType) {
LoginUser sysUser = this.getLoginUser();
Field[] fields = getAllFields(parameter);
for (Field field : fields) {
log.debug("------field.name------" + field.getName());
try {
if ("createBy".equals(field.getName())) {
field.setAccessible(true);
Object localCreateBy = field.get(parameter);
if (localCreateBy == null || localCreateBy.equals("") && (sysUser != null)) {
// 登录人账号
field.set(parameter, sysUser.getUsername());
}
field.setAccessible(false);
}
// 注入创建时间
if ("createTime".equals(field.getName())) {
field.setAccessible(true);
Object localCreateDate = field.get(parameter);
if (localCreateDate == null || localCreateDate.equals("")) {
field.set(parameter, new Date());
}
field.setAccessible(false);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
if (SqlCommandType.UPDATE == sqlCommandType) {
LoginUser sysUser = this.getLoginUser();
Field[] fields;
if (parameter instanceof ParamMap) {
ParamMap<?> p = (ParamMap<?>) parameter;
if (p.containsKey("et")) {
parameter = p.get("et");
} else {
parameter = p.get("param1");
}
if (parameter == null) {
return invocation.proceed();
}
fields = getAllFields(parameter);
} else {
fields = getAllFields(parameter);
}
for (Field field : fields) {
log.debug("------field.name------" + field.getName());
try {
if ("updateBy".equals(field.getName()) && (sysUser != null)) {
field.setAccessible(true);
field.set(parameter, sysUser.getUsername());
field.setAccessible(false);
}
if ("updateTime".equals(field.getName())) {
field.setAccessible(true);
field.set(parameter, new Date());
field.setAccessible(false);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
return invocation.proceed();
}
@Override
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}
@Override
public void setProperties(Properties properties) {
}
private LoginUser getLoginUser() {
return AuthUtil.getLoginUser();
}
private Field[] getAllFields(Object object) {
Class<?> clazz = object.getClass();
List<Field> fieldList = new ArrayList<>();
while (clazz != null) {
fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
clazz = clazz.getSuperclass();
}
Field[] fields = new Field[fieldList.size()];
fieldList.toArray(fields);
return fields;
}
}
...@@ -197,7 +197,7 @@ public class CharacterBasicInfoController { ...@@ -197,7 +197,7 @@ public class CharacterBasicInfoController {
@GetMapping("/importExcel") @GetMapping("/importExcel")
public void importExcel(String[] args) { public void importExcel(String[] args) {
//本地文件路径 //本地文件路径
String filePath = "E:\\数能软件\\克虏宝\\人物服务\\专家导入数据2025-01-08.xlsx"; String filePath = "E:\\数能软件\\克虏宝\\人物服务\\专家导入数据20250115.xlsx";
addSummaryLocalExcel(filePath,"2"); addSummaryLocalExcel(filePath,"2");
} }
...@@ -253,7 +253,7 @@ public class CharacterBasicInfoController { ...@@ -253,7 +253,7 @@ public class CharacterBasicInfoController {
//需要更新的数据列表 //需要更新的数据列表
List<CharacterBasicInfo> updateList = new ArrayList<>(); List<CharacterBasicInfo> updateList = new ArrayList<>();
for (CharacterBasicInfo basicInfo : list) { for (CharacterBasicInfo basicInfo : list) {
if(basicInfo == null || StringUtils.isEmpty(basicInfo.getName()) || StringUtils.isEmpty(basicInfo.getDepartment())){ if(basicInfo == null || StringUtils.isEmpty(basicInfo.getName()) || StringUtils.isEmpty(basicInfo.getDepartment()) || StringUtils.isEmpty(basicInfo.getTypeId())){
log.info("数据为空,跳过"); log.info("数据为空,跳过");
continue; continue;
} }
...@@ -272,7 +272,7 @@ public class CharacterBasicInfoController { ...@@ -272,7 +272,7 @@ public class CharacterBasicInfoController {
if(StringUtils.isNotEmpty(basicInfo.getUid())){ if(StringUtils.isNotEmpty(basicInfo.getUid())){
oldBasicInfo = characterBasicInfoService.getBasicInfoByUid(basicInfo.getUid()); oldBasicInfo = characterBasicInfoService.getBasicInfoByUid(basicInfo.getUid());
}else{ }else{
oldBasicInfo = characterBasicInfoService.getByNameAndByDepartment(category, basicInfo.getName(), basicInfo.getDepartment()); oldBasicInfo = characterBasicInfoService.getByNameAndByDepartment(category, basicInfo.getTagId(), basicInfo.getName(), basicInfo.getDepartment());
} }
if(oldBasicInfo != null){ if(oldBasicInfo != null){
//合并两个对象 //合并两个对象
...@@ -355,6 +355,7 @@ public class CharacterBasicInfoController { ...@@ -355,6 +355,7 @@ public class CharacterBasicInfoController {
importFieldMap.put("专业技术职称", "technicalTitles"); importFieldMap.put("专业技术职称", "technicalTitles");
importFieldMap.put("专业技术职称取得时间", "technicalDate"); importFieldMap.put("专业技术职称取得时间", "technicalDate");
importFieldMap.put("参加工作时间", "workDate"); importFieldMap.put("参加工作时间", "workDate");
importFieldMap.put("分类", "typeId");
} }
} }
...@@ -58,5 +58,5 @@ public interface CharacterBasicInfoService extends IService<CharacterBasicInfo> ...@@ -58,5 +58,5 @@ public interface CharacterBasicInfoService extends IService<CharacterBasicInfo>
CharacterBasicInfo getBasicInfoByUid(String uid); CharacterBasicInfo getBasicInfoByUid(String uid);
CharacterBasicInfo getByNameAndByDepartment(String category, String name, String department); CharacterBasicInfo getByNameAndByDepartment(String category, String typeId, String name, String department);
} }
...@@ -258,8 +258,9 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf ...@@ -258,8 +258,9 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
} }
@Override @Override
public CharacterBasicInfo getByNameAndByDepartment(String category, String name, String department) { public CharacterBasicInfo getByNameAndByDepartment(String category, String typeId, String name, String department) {
LambdaQueryWrapper<CharacterBasicInfo> queryWrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<CharacterBasicInfo> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(CharacterBasicInfo::getTypeId,typeId);
queryWrapper.eq(CharacterBasicInfo::getCategory,category); queryWrapper.eq(CharacterBasicInfo::getCategory,category);
queryWrapper.eq(CharacterBasicInfo::getName,name); queryWrapper.eq(CharacterBasicInfo::getName,name);
queryWrapper.eq(CharacterBasicInfo::getDepartment,department); queryWrapper.eq(CharacterBasicInfo::getDepartment,department);
......
package com.zzsn.leaderbase.util; package com.zzsn.leaderbase.util;
import cn.hutool.core.net.URLDecoder; import cn.hutool.core.net.URLDecoder;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson2.JSON;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
/** /**
* @Description: 并发调用限制工具 * @Description: 获取用户登录信息
* @Author: jeecg-boot * @Author: jeecg-boot
* @Date: 2024-01-04 * @Date: 2024-01-04
* @Version: V1.0 * @Version: V1.0
*/ */
@Slf4j
@Data @Data
public class AuthUtil { public class AuthUtil {
public final static String LOGIN_USER_HEADER = "loginUser"; public final static String LOGIN_USER_HEADER = "loginUser";
static SimpleDateFormat format;
public static LoginUser getLoginUser() { public static LoginUser getLoginUser() {
LoginUser userVo = null;
try { try {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String userInfo = URLDecoder.decode(request.getHeader(LOGIN_USER_HEADER), StandardCharsets.UTF_8); String userInfo = URLDecoder.decode(request.getHeader(LOGIN_USER_HEADER), StandardCharsets.UTF_8);
return JSON.parseObject(userInfo, LoginUser.class); userVo = JSON.parseObject(userInfo, LoginUser.class);
}catch (Exception e){ }catch (Exception e){
return null; log.debug("用户未登录");
}
if(userVo == null){
userVo = new LoginUser();
} }
return userVo;
} }
/** /**
* 检查是否可以访问 * 检查是否可以访问
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论