fix: 88247 企业标准-顺序号自动生成,删除后再次新增应该+1
This commit is contained in:
+66
@@ -0,0 +1,66 @@
|
||||
package com.jero.modules.laws.intercepts;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.ibatis.executor.statement.StatementHandler;
|
||||
import org.apache.ibatis.mapping.BoundSql;
|
||||
import org.apache.ibatis.mapping.MappedStatement;
|
||||
import org.apache.ibatis.mapping.SqlCommandType;
|
||||
import org.apache.ibatis.plugin.*;
|
||||
import org.apache.ibatis.reflection.MetaObject;
|
||||
import org.apache.ibatis.reflection.SystemMetaObject;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.util.Properties;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@Intercepts({@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})})
|
||||
public class LogicDeleteInterceptor implements Interceptor {
|
||||
|
||||
@Value("${mybatis-plus.global-config.db-config.logic-delete-field}")
|
||||
private String logicDeleteField;
|
||||
|
||||
@Value("${mybatis-plus.global-config.db-config.logic-delete-value}")
|
||||
private String logicDeleteValue;
|
||||
|
||||
@Value("${mybatis-plus.global-config.db-config.logic-not-delete-value}")
|
||||
private String logicNotDelValue;
|
||||
|
||||
// 通过ThreadLocal给当前线程打上标识
|
||||
public static ThreadLocal<Boolean> logicDelete = new ThreadLocal<>();
|
||||
|
||||
@Override
|
||||
public Object intercept(Invocation invocation) throws Throwable {
|
||||
log.info("====SqlModifyInterceptor======(" + logicDelete.get() + ")=====");
|
||||
// 判断线程标识
|
||||
if (!Boolean.FALSE.equals(logicDelete.get())) {
|
||||
return invocation.proceed();
|
||||
}
|
||||
StatementHandler statementHandler = PluginUtils.realTarget(invocation.getTarget());
|
||||
MetaObject metaObject = SystemMetaObject.forObject(statementHandler);
|
||||
MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement");
|
||||
if (!SqlCommandType.SELECT.equals(mappedStatement.getSqlCommandType())) {
|
||||
return invocation.proceed();
|
||||
}
|
||||
BoundSql boundSql = (BoundSql) metaObject.getValue("delegate.boundSql");
|
||||
String sql = boundSql.getSql();
|
||||
log.info("origin sql:" + sql);
|
||||
// 在这里替换字段,改成不影响结果的条件即可
|
||||
sql = sql.replace(logicDeleteField + " = " + logicNotDelValue, "1=1");
|
||||
metaObject.setValue("delegate.boundSql.sql", sql);
|
||||
log.info("modify sql:" + sql);
|
||||
return invocation.proceed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object plugin(Object target) {
|
||||
return Plugin.wrap(target, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setProperties(Properties properties) {
|
||||
}
|
||||
}
|
||||
+5
-1
@@ -11,6 +11,7 @@ import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.modules.activiti.process.common.enums.StandardStateEnum;
|
||||
import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider;
|
||||
import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
|
||||
import com.jero.modules.laws.intercepts.LogicDeleteInterceptor;
|
||||
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
|
||||
import com.jero.modules.laws.standard.mapper.LawsEnterpriseStandardMapper;
|
||||
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
|
||||
@@ -84,8 +85,11 @@ public class LawsEnterpriseStandardServiceImpl extends ServiceImpl<LawsEnterpris
|
||||
lambdaQueryWrapper.eq(LawsEnterpriseStandard::getNameCode, esNameCodeDictValue);
|
||||
lambdaQueryWrapper.eq(StrUtil.isNotBlank(categoryCodeDictValue), LawsEnterpriseStandard::getCategoryCode, categoryCodeDictValue);
|
||||
lambdaQueryWrapper.isNull(StrUtil.isBlank(categoryCodeDictValue) ,LawsEnterpriseStandard::getCategoryCode);
|
||||
// 开启逻辑删除失效
|
||||
LogicDeleteInterceptor.logicDelete.set(false);
|
||||
List<LawsEnterpriseStandard> esList = this.list(lambdaQueryWrapper);
|
||||
|
||||
// 关闭逻辑删除失效
|
||||
LogicDeleteInterceptor.logicDelete.remove();
|
||||
|
||||
return esList.stream()
|
||||
.filter(s -> StrUtil.isNotBlank(s.getStandardNumberTemp()))
|
||||
|
||||
Reference in New Issue
Block a user