修改:动态表格,管理修改某个表数据,全量覆盖用户自定义的数据

This commit is contained in:
2026-04-15 18:12:05 +08:00
parent c7e4ec9557
commit 8a24c727fe
10 changed files with 142 additions and 101 deletions

View File

@@ -29,9 +29,9 @@
<!-- 单个文件 100MB --> <!-- 单个文件 100MB -->
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<!-- 保存 15 天 --> <!-- 保存 15 天 -->
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<!-- 总大小 3GB --> <!-- 总大小 3GB -->
<TotalSizeCap>3GB</TotalSizeCap> <totalSizeCap>3GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart> <cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
@@ -46,9 +46,10 @@
<!-- 自动压缩 --> <!-- 自动压缩 -->
<FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<!-- 总大小 2GB --> <!-- 总大小 2GB -->
<TotalSizeCap>2GB</TotalSizeCap> <totalSizeCap>2GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %X{callerInfo} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern> <pattern>[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %X{callerInfo} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern>

View File

@@ -26,8 +26,9 @@
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/running.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/running.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>3GB</TotalSizeCap> <totalSizeCap>3GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${FILE_LOG_PATTERN}</pattern> <pattern>${FILE_LOG_PATTERN}</pattern>
@@ -43,8 +44,9 @@
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/running_debug.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/running_debug.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>2GB</TotalSizeCap> <totalSizeCap>2GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${FILE_LOG_PATTERN}</pattern> <pattern>${FILE_LOG_PATTERN}</pattern>
@@ -62,8 +64,9 @@
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>1GB</TotalSizeCap> <totalSizeCap>1GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %X{callerInfo} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern> <pattern>[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %X{callerInfo} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern>

View File

@@ -26,8 +26,9 @@
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/running.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/running.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>3GB</TotalSizeCap> <totalSizeCap>3GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>${FILE_LOG_PATTERN}</pattern> <pattern>${FILE_LOG_PATTERN}</pattern>
@@ -43,8 +44,9 @@
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/running_debug.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/running_debug.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>2GB</TotalSizeCap> <totalSizeCap>2GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>${FILE_LOG_PATTERN}</pattern> <pattern>${FILE_LOG_PATTERN}</pattern>

View File

@@ -31,9 +31,10 @@
<!-- 单个文件最大 100MB --> <!-- 单个文件最大 100MB -->
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<!-- 保留 15 天 --> <!-- 保留 15 天 -->
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<!-- 总大小上限 3GB --> <!-- 总大小上限 3GB -->
<TotalSizeCap>3GB</TotalSizeCap> <totalSizeCap>3GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
@@ -49,8 +50,9 @@
<!-- 自动压缩 --> <!-- 自动压缩 -->
<FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>2GB</TotalSizeCap> <totalSizeCap>2GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

View File

@@ -25,8 +25,8 @@
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/running.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/running.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>3GB</TotalSizeCap> <totalSizeCap>3GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart> <cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
@@ -40,8 +40,9 @@
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>2GB</TotalSizeCap> <totalSizeCap>2GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %X{callerInfo} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern> <pattern>[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %X{callerInfo} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern>

View File

@@ -1,107 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<configuration> <configuration scan="true" scanPeriod="30 seconds">
<!-- 彩色日志 -->
<!-- ================= 基础属性与格式定义 ================= -->
<!-- Spring Boot 彩色日志支持 (兼容 logback.xml 加载) -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日志格式 --> <!-- 路径配置 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr([%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr([%15.15t]){faint} %clr(%logger){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
<property name="FILE_LOG_PATTERN" value="[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %logger : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" />
<!-- 日志文件存储地址 -->
<property name="LOG_HOME" value="/home/app/pbs/logs" /> <property name="LOG_HOME" value="/home/app/pbs/logs" />
<!-- 这里的 PID 变量如果未定义默认为空Spring Boot 启动时会自动注入 -->
<property name="PID" value="${PID:-}" />
<!-- 控制台输出 --> <!--
控制台格式:包含 TraceId
注意:使用 %X{traceId:-} 可以在 MDC 为空时不显示 null保持整洁
-->
<property name="CONSOLE_LOG_PATTERN" value="%clr([%d{yyyy-MM-dd HH:mm:ss.SSS}]){faint} %clr(%-5p){highlight} %clr(${PID:- }){magenta} %clr([%15.15t]){faint} %clr(%logger){cyan} %clr(:){faint} [%X{traceId:-}] %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 文件格式:去掉了颜色代码,增加换行符确保堆栈独立成行 -->
<property name="FILE_LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-5p ${PID:- } [%15.15t] %logger : [%X{traceId:-}] %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- ================= 控制台输出 ================= -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern> <pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder> </encoder>
</appender> </appender>
<!-- ===================== running.log 输出3GB上限 ===================== --> <!-- ================= 异步包装器 (高性能关键) ================= -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 将实际的写文件操作变为异步,防止阻塞业务线程 -->
<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
<queueSize>2048</queueSize>
<discardingThreshold>200</discardingThreshold>
<neverBlock>true</neverBlock>
<appender-ref ref="ROLLING_FILE"/>
</appender>
<!-- 具体的 running.log 滚动策略 -->
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/running.log</file> <file>${LOG_HOME}/running.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/running.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <!-- 修正为标准小驼峰 fileNamePattern -->
<fileNamePattern>${LOG_HOME}/running.log.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>3GB</TotalSizeCap> <totalSizeCap>3GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart> <cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder>
<pattern>${FILE_LOG_PATTERN}</pattern> <pattern>${FILE_LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder> </encoder>
</appender> </appender>
<!-- ===================== core.log 专用输出2GB上限 ===================== --> <!-- ================= core.log 专用输出 ================= -->
<!-- 同样建议给 core.log 加上异步包装,这里直接写在 Appender 内部 -->
<appender name="CORE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="CORE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/core.log</file> <file>${LOG_HOME}/core.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <!-- 过滤器:只记录 INFO 及以上 -->
<maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory>
<TotalSizeCap>2GB</TotalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %X{callerInfo} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level> <level>INFO</level>
</filter> </filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>15</maxHistory>
<totalSizeCap>2GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
<encoder>
<!-- 单独定义了 pattern加入了 callerInfo -->
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-5p [%15.15t] %X{callerInfo} : [%X{traceId:-}] %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender> </appender>
<!-- 日志输出级别 --> <!-- ================= 根日志配置 ================= -->
<root level="INFO"> <root level="INFO">
<appender-ref ref="STDOUT" /> <appender-ref ref="STDOUT" />
<appender-ref ref="FILE" /> <!-- 引用异步 Appender而不是直接引用 ROLLING_FILE -->
<appender-ref ref="ASYNC_FILE" />
</root> </root>
<!-- 绑定 FeignClient --> <!-- ================= 特定包/Logger 配置 ================= -->
<!-- FeignClient: 关闭继承(additivity=false),避免重复打印到 root 的 running.log 中 -->
<logger name="FeignClient" level="INFO" additivity="false"> <logger name="FeignClient" level="INFO" additivity="false">
<appender-ref ref="FILE" /> <appender-ref ref="FILE" /> <!-- 注意:这里引用的是原始的 FILE (即 ROLLING_FILE),不是 ASYNC_FILE -->
<appender-ref ref="STDOUT" /> <appender-ref ref="STDOUT" />
</logger> </logger>
<!-- 绑定 coreLogger --> <!-- coreLogger: 指向 core.log -->
<logger name="coreLogger" level="INFO" additivity="false"> <logger name="coreLogger" level="INFO" additivity="false">
<appender-ref ref="CORE_FILE" /> <appender-ref ref="CORE_FILE" />
<appender-ref ref="STDOUT" /> <appender-ref ref="STDOUT" />
</logger> </logger>
<!-- ===================== 你原来的所有 SQL/MyBatis/包日志 全部保留 ===================== --> <!-- 生产环境安全级别:屏蔽 MyBatis/MP 的调试信息 -->
<!-- MyBatis SQL语句输出配置 --> <logger name="org.apache.ibatis" level="WARN"/>
<logger name="org.apache.ibatis" level="DEBUG"/> <logger name="com.baomidou.mybatisplus" level="WARN"/>
<logger name="org.apache.ibatis.session.AutoMappingUnknownColumnBehavior" level="ERROR"/> <logger name="java.sql" level="WARN"/>
<logger name="org.apache.ibatis.logging" level="DEBUG"/>
<logger name="org.apache.ibatis.logging.jdbc" level="DEBUG"/>
<logger name="org.apache.ibatis.logging.jdbc.BaseJdbcLogger" level="DEBUG"/>
<logger name="org.apache.ibatis.datasource" level="DEBUG"/>
<logger name="org.apache.ibatis.transaction" level="DEBUG"/>
<logger name="org.apache.ibatis.cache" level="DEBUG"/>
<logger name="org.mybatis" level="DEBUG"/>
<logger name="org.mybatis.spring" level="DEBUG"/>
<logger name="org.mybatis.spring.SqlSessionUtils" level="DEBUG"/>
<logger name="org.mybatis.spring.transaction" level="DEBUG"/>
<!-- MyBatis-Plus 相关日志配置 -->
<logger name="com.baomidou.mybatisplus" level="DEBUG"/>
<logger name="com.baomidou.mybatisplus.core" level="DEBUG"/>
<logger name="com.baomidou.mybatisplus.core.MybatisConfiguration" level="DEBUG"/>
<logger name="com.baomidou.mybatisplus.core.MybatisMapperRegistry" level="DEBUG"/>
<logger name="com.baomidou.mybatisplus.core.override.MybatisMapperProxy" level="DEBUG"/>
<logger name="com.baomidou.mybatisplus.extension" level="DEBUG"/>
<logger name="com.baomidou.mybatisplus.extension.spring" level="DEBUG"/>
<logger name="com.baomidou.mybatisplus.extension.MybatisPlusProperties" level="DEBUG"/>
<logger name="java.sql" level="DEBUG"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<logger name="java.sql.ResultSet" level="DEBUG"/>
<!-- 业务包配置 -->
<logger name="com.sdm.pbs" level="INFO"/> <logger name="com.sdm.pbs" level="INFO"/>
<logger name="com.sdm.pbs.dao" level="DEBUG"/>
</configuration> </configuration>

View File

@@ -26,8 +26,9 @@
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/running.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/running.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>3GB</TotalSizeCap> <totalSizeCap>3GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${FILE_LOG_PATTERN}</pattern> <pattern>${FILE_LOG_PATTERN}</pattern>
@@ -43,8 +44,9 @@
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/running_debug.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/running_debug.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>2GB</TotalSizeCap> <totalSizeCap>2GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${FILE_LOG_PATTERN}</pattern> <pattern>${FILE_LOG_PATTERN}</pattern>
@@ -62,8 +64,9 @@
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>1GB</TotalSizeCap> <totalSizeCap>1GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %X{callerInfo} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern> <pattern>[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %X{callerInfo} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern>

View File

@@ -445,8 +445,8 @@ public class SimulationSystemConfigServiceImpl extends BaseService implements IS
updateWrapper.set(SysFormConfigure::getComment, configure.getComment()); updateWrapper.set(SysFormConfigure::getComment, configure.getComment());
} }
formConfigureService.update(updateWrapper); formConfigureService.update(updateWrapper);
// 调用抽取后的管理员批量更新用户配置方法 // 调用抽取后的管理员覆盖用户配置
batchUpdateUserConfigure(configure); batchUpdateUserConfigureNew(configure);
} else { } else {
response = SdmResponse.failed("该表单配置不存在"); response = SdmResponse.failed("该表单配置不存在");
} }
@@ -761,8 +761,27 @@ public class SimulationSystemConfigServiceImpl extends BaseService implements IS
return SdmResponse.success(); return SdmResponse.success();
} }
// 管理员操作某个表,直接删除用户的自定义配置的数据,这样相当于管理员覆盖了用户的自定义配置
private void batchUpdateUserConfigureNew(FormConfigure configure) {
// 查询当前租户下关联该主配置的所有用户自定义配置
List<SysFormUserConfigure> dbUserConfigs = formUserConfigureService.lambdaQuery()
.eq(SysFormUserConfigure::getFormConfigureId, configure.getId())
.eq(SysFormUserConfigure::getTenantId, ThreadLocalContext.getTenantId())
.list();
if (CollectionUtils.isNotEmpty(dbUserConfigs)) {
// 提取所有 id → 得到 List<Long>
List<Long> idList = dbUserConfigs.stream()
.map(SysFormUserConfigure::getId) // 取每个对象的 id
.collect(Collectors.toList());
boolean b = formUserConfigureService.removeBatchByIds(idList);
log.info("batchUpdateUserConfigureNew user config delete table name {},result:{}", configure.getFormName(),b);
}
}
/** /**
* 管理员批量更新关联的用户自定义表单配置 * 管理员批量更新关联的用户自定义表单配置 V1 版本管理员修改后管理员有权限覆盖规定的3个字段之外的字段用户自定义的三个字段还保留字段删除名称修改除外
* 2026-04-15 该方法暂时废弃
* @param configure 表单配置参数 * @param configure 表单配置参数
*/ */
private void batchUpdateUserConfigure(FormConfigure configure) { private void batchUpdateUserConfigure(FormConfigure configure) {

View File

@@ -26,8 +26,9 @@
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/running.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/running.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>3GB</TotalSizeCap> <totalSizeCap>3GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${FILE_LOG_PATTERN}</pattern> <pattern>${FILE_LOG_PATTERN}</pattern>
@@ -40,8 +41,9 @@
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>2GB</TotalSizeCap> <totalSizeCap>2GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %X{callerInfo} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern> <pattern>[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %X{callerInfo} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern>

View File

@@ -26,8 +26,9 @@
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/running.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/running.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>3GB</TotalSizeCap> <totalSizeCap>3GB</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${FILE_LOG_PATTERN}</pattern> <pattern>${FILE_LOG_PATTERN}</pattern>
@@ -40,8 +41,8 @@
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <FileNamePattern>${LOG_HOME}/core.log.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<maxFileSize>100MB</maxFileSize> <maxFileSize>100MB</maxFileSize>
<MaxHistory>15</MaxHistory> <maxHistory>15</maxHistory>
<TotalSizeCap>2GB</TotalSizeCap> <totalSizeCap>2GB</totalSizeCap>
</rollingPolicy> </rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %X{callerInfo} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern> <pattern>[%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%15.15t] %X{callerInfo} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}</pattern>