Merge branch 'dev' into test
This commit is contained in:
@@ -72,6 +72,8 @@ knife4j:
|
||||
|
||||
# MyBatis Plus 的配置项
|
||||
mybatis-plus:
|
||||
mapper-locations:
|
||||
- classpath*:mapper/**/*.xml
|
||||
configuration:
|
||||
map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
|
||||
global-config:
|
||||
|
||||
76
base-server/src/main/resources/logback-spring.xml
Normal file
76
base-server/src/main/resources/logback-spring.xml
Normal file
@@ -0,0 +1,76 @@
|
||||
<configuration>
|
||||
<!-- 引用 Spring Boot 的 logback 基础配置 -->
|
||||
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
|
||||
<!-- 变量 zt.info.base-package,基础业务包 -->
|
||||
<springProperty scope="context" name="zt.info.base-package" source="zt.info.base-package"/>
|
||||
<!-- 格式化输出:%d 表示日期,%X{tid} SkWalking 链路追踪编号,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度,%msg:日志消息,%n是换行符 -->
|
||||
<property name="PATTERN_DEFAULT" value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} | %highlight(${LOG_LEVEL_PATTERN:-%5p} ${PID:- }) | %boldYellow(%thread [%tid]) %boldGreen(%-40.40logger{39}) | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
|
||||
|
||||
<!-- 控制台 Appender -->
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
|
||||
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
|
||||
<pattern>${PATTERN_DEFAULT}</pattern>
|
||||
</layout>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- 文件 Appender -->
|
||||
<!-- 参考 Spring Boot 的 file-appender.xml 编写 -->
|
||||
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
|
||||
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
|
||||
<pattern>${PATTERN_DEFAULT}</pattern>
|
||||
</layout>
|
||||
</encoder>
|
||||
<!-- 日志文件名 -->
|
||||
<file>${LOG_FILE}</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<!-- 滚动后的日志文件名 -->
|
||||
<fileNamePattern>${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}</fileNamePattern>
|
||||
<!-- 启动服务时,是否清理历史日志,一般不建议清理 -->
|
||||
<cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart>
|
||||
<!-- 日志文件,到达多少容量,进行滚动 -->
|
||||
<maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize>
|
||||
<!-- 日志文件的总大小,0 表示不限制 -->
|
||||
<totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap>
|
||||
<!-- 日志文件的保留天数 -->
|
||||
<maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-30}</maxHistory>
|
||||
</rollingPolicy>
|
||||
</appender>
|
||||
<!-- 异步写入日志,提升性能 -->
|
||||
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
|
||||
<!-- 不丢失日志。默认的,如果队列的 80% 已满,则会丢弃 TRACT、DEBUG、INFO 级别的日志 -->
|
||||
<discardingThreshold>0</discardingThreshold>
|
||||
<!-- 更改默认的队列的深度,该值会影响性能。默认值为 256 -->
|
||||
<queueSize>256</queueSize>
|
||||
<appender-ref ref="FILE"/>
|
||||
</appender>
|
||||
|
||||
<!-- SkyWalking GRPC 日志收集,实现日志中心。注意:SkyWalking 8.4.0 版本开始支持 -->
|
||||
<appender name="GRPC" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
|
||||
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
|
||||
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
|
||||
<pattern>${PATTERN_DEFAULT}</pattern>
|
||||
</layout>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- 本地环境 -->
|
||||
<springProfile name="local,dev">
|
||||
<root level="DEBUG">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
<appender-ref ref="GRPC"/> <!-- 本地环境下,如果不想接入 SkyWalking 日志服务,可以注释掉本行 -->
|
||||
<appender-ref ref="ASYNC"/> <!-- 本地环境下,如果不想打印日志,可以注释掉本行 -->
|
||||
</root>
|
||||
</springProfile>
|
||||
<!-- 其它环境 -->
|
||||
<springProfile name="test,stage,prod,default">
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
<appender-ref ref="ASYNC"/>
|
||||
<appender-ref ref="GRPC"/>
|
||||
</root>
|
||||
</springProfile>
|
||||
|
||||
</configuration>
|
||||
2
pom.xml
2
pom.xml
@@ -19,7 +19,7 @@
|
||||
<url>https://github.com/YunaiV/ruoyi-vue-pro</url>
|
||||
|
||||
<properties>
|
||||
<revision>3.0.44</revision>
|
||||
<revision>3.0.45</revision>
|
||||
<!-- Maven 相关 -->
|
||||
<java.version>17</java.version>
|
||||
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.zt.plat.module.base.controller.admin.base;
|
||||
|
||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.module.base.controller.admin.base.vo.MasterDataSyncReqVO;
|
||||
import com.zt.plat.module.base.service.masterdatasync.MasterDataCategorySyncService;
|
||||
import com.zt.plat.module.base.service.masterdatasync.MasterDataSyncService;
|
||||
import com.zt.plat.module.base.service.masterdatasync.dto.MasterDataSyncCommand;
|
||||
import com.zt.plat.module.base.service.masterdatasync.dto.MasterDataSyncReport;
|
||||
import com.zt.plat.module.base.service.masterdatasync.dto.MasterDataCategorySyncReport;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
||||
|
||||
@Tag(name = "管理后台 - 主数据同步")
|
||||
@RestController
|
||||
@RequestMapping("/base/master-data-sync")
|
||||
@Validated
|
||||
public class MasterDataSyncController {
|
||||
|
||||
@Resource
|
||||
private MasterDataSyncService masterDataSyncService;
|
||||
@Resource
|
||||
private MasterDataCategorySyncService masterDataCategorySyncService;
|
||||
|
||||
@PostMapping("/execute")
|
||||
@Operation(summary = "执行主数据同步")
|
||||
@PreAuthorize("@ss.hasPermission('base:master-data-sync:execute')")
|
||||
public CommonResult<MasterDataSyncReport> execute(@Valid @RequestBody MasterDataSyncReqVO reqVO) {
|
||||
MasterDataSyncCommand command = BeanUtils.toBean(reqVO, MasterDataSyncCommand.class);
|
||||
MasterDataSyncReport report = masterDataSyncService.sync(command);
|
||||
return success(report);
|
||||
}
|
||||
|
||||
@PostMapping("/categories")
|
||||
@Operation(summary = "同步物料分类")
|
||||
@PreAuthorize("@ss.hasPermission('base:master-data-sync:categories')")
|
||||
public CommonResult<MasterDataCategorySyncReport> syncCategories() {
|
||||
MasterDataCategorySyncReport report = masterDataCategorySyncService.syncAll();
|
||||
return success(report);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.zt.plat.module.base.controller.admin.base.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.Positive;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Schema(description = "主数据同步请求参数")
|
||||
public class MasterDataSyncReqVO {
|
||||
|
||||
@Schema(description = "增量同步的起始记录时间,留空执行全量")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime since;
|
||||
|
||||
@Schema(description = "拉取批大小,不填写则使用配置默认值")
|
||||
@Positive(message = "batchSize 必须为正数")
|
||||
private Integer batchSize;
|
||||
|
||||
@Schema(description = "指定要刷新同步的物料编码列表")
|
||||
private List<String> materialCodes;
|
||||
|
||||
@Schema(description = "可选的本次同步记录数上限,未填写表示不限制")
|
||||
@Positive(message = "recordLimit 必须为正数")
|
||||
private Long recordLimit;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.zt.plat.module.base.dal.dataobject.masterdata;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 外部 MDM 分类视图的数据对象。
|
||||
*/
|
||||
@Data
|
||||
public class MdmMaterialCategoryDO {
|
||||
|
||||
/**
|
||||
* 分类主键 ID(CODEID)。
|
||||
*/
|
||||
private Long codeId;
|
||||
|
||||
/**
|
||||
* 分类编码,例如 01 / 0101 / 010101。
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 分类名称(DESC1)。
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 备注信息(DESC2)。
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 父级分类主键 ID(PARENTID)。
|
||||
*/
|
||||
private Long parentCodeId;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.zt.plat.module.base.dal.dataobject.masterdata;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 外部 MDM MySQL 物料视图的投影,用于承接同步字段。
|
||||
*/
|
||||
@Data
|
||||
public class MdmMaterialViewDO {
|
||||
|
||||
private Long codeId;
|
||||
private String materialCode;
|
||||
private String categoryCode;
|
||||
private String categoryName;
|
||||
private String materialName;
|
||||
private String baseUnitCode;
|
||||
private String baseUnitName;
|
||||
private String shortDescription;
|
||||
private String longDescription;
|
||||
private String chalcoCode;
|
||||
private String majorClassCode;
|
||||
private String majorClassName;
|
||||
private String specification;
|
||||
private String model;
|
||||
private String texture;
|
||||
private String drawingNumber;
|
||||
private String orderNumber;
|
||||
private String otherParameters;
|
||||
private String equipmentCategory;
|
||||
private String manufacturer;
|
||||
private String source;
|
||||
private LocalDateTime recordTime;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.zt.plat.module.base.dal.mysql.masterdata;
|
||||
|
||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
import com.zt.plat.module.base.dal.dataobject.masterdata.MdmMaterialCategoryDO;
|
||||
import com.zt.plat.module.base.framework.sync.constant.MasterDataSyncConstants;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 读取外部 MDM 分类视图的 Mapper。
|
||||
*/
|
||||
@Mapper
|
||||
@DS(MasterDataSyncConstants.DEFAULT_SOURCE_DATASOURCE)
|
||||
public interface MdmMaterialCategoryMapper {
|
||||
|
||||
/**
|
||||
* 拉取全部分类档案。
|
||||
*/
|
||||
List<MdmMaterialCategoryDO> selectAll();
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.zt.plat.module.base.dal.mysql.masterdata;
|
||||
|
||||
import com.baomidou.dynamic.datasource.annotation.DS;
|
||||
import com.zt.plat.module.base.dal.dataobject.masterdata.MdmMaterialViewDO;
|
||||
import com.zt.plat.module.base.framework.sync.constant.MasterDataSyncConstants;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Mapper that exposes read-only access to the external MDM material view.
|
||||
*/
|
||||
@Mapper
|
||||
@DS(MasterDataSyncConstants.DEFAULT_SOURCE_DATASOURCE)
|
||||
public interface MdmMaterialViewMapper {
|
||||
|
||||
List<MdmMaterialViewDO> selectSlice(@Param("offset") long offset,
|
||||
@Param("limit") int limit,
|
||||
@Param("since") LocalDateTime since,
|
||||
@Param("codes") Collection<String> codes);
|
||||
|
||||
Long countEligible(@Param("since") LocalDateTime since,
|
||||
@Param("codes") Collection<String> codes);
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.zt.plat.module.base.framework.sync.config;
|
||||
|
||||
import okhttp3.OkHttpClient;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* 主数据同步用到的基础配置。
|
||||
*/
|
||||
@Configuration
|
||||
@EnableConfigurationProperties(MasterDataSyncProperties.class)
|
||||
public class MasterDataSyncConfiguration {
|
||||
|
||||
@Bean
|
||||
public OkHttpClient masterDataSyncOkHttpClient(MasterDataSyncProperties properties) {
|
||||
MasterDataSyncProperties.HttpProperties http = properties.getHttp();
|
||||
return new OkHttpClient.Builder()
|
||||
.connectTimeout(http.getConnectTimeout())
|
||||
.readTimeout(http.getReadTimeout())
|
||||
.writeTimeout(http.getWriteTimeout())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user