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.activiti.process.common.enums.StandardStateEnum;
|
||||||
import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider;
|
import com.jero.modules.laws.enterprise.service.ESSequenceNumberProvider;
|
||||||
import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
|
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.entity.LawsEnterpriseStandard;
|
||||||
import com.jero.modules.laws.standard.mapper.LawsEnterpriseStandardMapper;
|
import com.jero.modules.laws.standard.mapper.LawsEnterpriseStandardMapper;
|
||||||
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
|
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(LawsEnterpriseStandard::getNameCode, esNameCodeDictValue);
|
||||||
lambdaQueryWrapper.eq(StrUtil.isNotBlank(categoryCodeDictValue), LawsEnterpriseStandard::getCategoryCode, categoryCodeDictValue);
|
lambdaQueryWrapper.eq(StrUtil.isNotBlank(categoryCodeDictValue), LawsEnterpriseStandard::getCategoryCode, categoryCodeDictValue);
|
||||||
lambdaQueryWrapper.isNull(StrUtil.isBlank(categoryCodeDictValue) ,LawsEnterpriseStandard::getCategoryCode);
|
lambdaQueryWrapper.isNull(StrUtil.isBlank(categoryCodeDictValue) ,LawsEnterpriseStandard::getCategoryCode);
|
||||||
|
// 开启逻辑删除失效
|
||||||
|
LogicDeleteInterceptor.logicDelete.set(false);
|
||||||
List<LawsEnterpriseStandard> esList = this.list(lambdaQueryWrapper);
|
List<LawsEnterpriseStandard> esList = this.list(lambdaQueryWrapper);
|
||||||
|
// 关闭逻辑删除失效
|
||||||
|
LogicDeleteInterceptor.logicDelete.remove();
|
||||||
|
|
||||||
return esList.stream()
|
return esList.stream()
|
||||||
.filter(s -> StrUtil.isNotBlank(s.getStandardNumberTemp()))
|
.filter(s -> StrUtil.isNotBlank(s.getStandardNumberTemp()))
|
||||||
|
|||||||
Reference in New Issue
Block a user