Spring-Boot-BestProject

百世仓储信息同步接口

作者:Sevattal
博客地址:sevattal.github.io
源码:源码下载

该文章的案例介绍

Chenk Erp系统 与 百世仓储,完成ERP系统中的出入库单、产品的信息同步给百世。而百世会同步出入库状态给Chenk Erp系统的案例。

该篇文章不介绍百世接口具体的使用案例,请根据百世官方接口文档的案例学习。百世仓储的官方文档地址为:https://open.800best.com/login

该篇文章主要是为了学习SpringBoot+MyBatis框架在数据同步接口上的运用,需要有一定的Spring 和MyBatis的基础。当然拿去照班修改服务和mybatis配置文件部分,也可以完成你所需的百世的仓储接口同步。

下面主要介绍代码的结构与包分类的介绍,具体实现请参考压缩包内源代码(源代码中有大量注释,可以参考)。本代码没有使用数据库的存储过程,所以在配置mybatis的xml配置文件会有大量的配置。大多数配置参数,都为以后升级做了基础,所以有很多参数不需要配置。

该代码实现了百世如下接口(客户即本地数据库,百世即远端百世数据库)
百世产品信息的同步(客户-百世),百世入库单的同步(客户-百世),百世入库单状态推送的同步(百世-客户),百世出库单的同步(客户-百世),百世出库单状态推送的同步(百世-客户),百世出入库单取消(客户-百世)

数据的交互,都是以传送Json报文为主。我们传送给百世的Json报文为百世SDK中Client传入的参数,百世SDK中Client会自动将传入的参数转换成json报文并传给百世。而与chenk本地系统的数据交互也是传输Json报文,该Json报文参数,我为了图方便直接写死了,在util包中的ChenkJson中,只有两个Json对象返回True或者False。

在log日志配置方面使用了SpringBoot的默认日志org.slf4j.Logger

下面只介绍源代码的包,resource文件等的路径分配,以及环境的部署。对于代码的理解请详情查看源码包。

简单的环境的配置

开发环境的配置
开源框架为 SpringBoot + Mybatis
IDE工具为 IntelliJ IDEA
百世仓储的SDK地址(也有如何使用该SDK文档)
https://open.800best.com/login

1、开发环境配置


需要将Spring Web这个启动依赖添加上


以上SpringBoot的环境就配置好了

2、将百世的SDK包放到java代码目录下,(百世的SDK代码,是可以直接调用的),包名如下

com.best.javaSdk

3、实现个人的代码包入经为 com.chenk 包

在com.chenk包下面,我按照实现的功能分为如下几个包,除了util包以外,每个包都有一套MVC包(service,mapper,domain,controller…)
包名 接口 controller开放地址

名称 作用 地址
wmssku 仓储产品信息同步(SKU) chenk/wmssku
twasn 仓储入库单同步接口 chenk/twasn
wmsasn 仓储入库单状态推送接口 chenk/wmsasn
twso 仓储出库单同步接口 chenk/twso
wmsso 仓储出库单状态推送接口 chenk/wmsso
twcancel 仓储出入库取消接口 chenk/twcancel
test 本地测试包
util 自制工具包

4、resources目录配置

mapper 为各个接口对应的mapper.xml配置文件(由于mapper.xml配置的数据量非常的大,所以在介绍mapper.class的时候代入)
application.properties 为项目的全局配置
best.properties 为百世接口一些配置参数

5、application.properties的配置

# 服务器的端口号
server.port=8082
# 当前web应用的名称
server.servlet.context-path=/chenk
# 项目启动时,默认不会初始化DispatcherServlet
# spring.mvc.servlet.load-on-startup=1
# loggin配置
# 以下配置的是项目根目录为日志的目录,日志名称为wms-jcerp.log
logging.file.path=/
logging.file.name=wms-jcerp.log
#数据库配置
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3308/chenkuserdb21?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC 
spring.datasource.username=chenk
spring.datasource.password=123456
#最小链接数
spring.datasource.druid.initial-size=5
#最大链接数
spring.datasource.druid.max-active=20
#最小空闲数
spring.datasource.druid.min-idle=10
#最大等待时长
spring.datasource.druid.max-wait=10
#是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。
#在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。
#spring.datasource.druid.pool-prepared-statements=true
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.druid.time-between-eviction-runs-millis=60000
#配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.druid.min-evictable-idle-time-millis=300000
#配置mybaits信息
#spring集成Mybatis环境 #pojo别名扫描包
mybatis.type-aliases-package=com.chenk.domain
#全局解决无效的列类型1111
mybatis.configuration.jdbc-type-for-null=NULL
#手动设置缓存
mybatis.configuration.cache-enabled=false
# 加载Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/**/*Mapper.xml
# mybatis.mapper-locations=classpath:/mapper/wmsSkuNotify/*Mapper.xml,classpath*:/mapper/wmsAsnStatusPush/*Mapper.xml

6、best.properties 百世的参数配置

注:以下的百世的一些参数,需要注册百世账号并获取测试接口才能获得这些参数

# 该配置文件参数均有best提供
# 对应的地址
url=http://openapi.800best.com/api-server/ec/api/process
# 根据实际partnerId
partnerId=3875
# 根据实际partnerKey
partnerKey=OTKPJROQ
# 如果是JSON的数据格式,填JSON
format=JSON
# ProviderCode
providerCode=WT2010143054
# customerCode 客户编码
customerCode=WT2010143054
# wareHouseCode 仓库编码
wareHouseCode=BEST_WH
# projectCode 项目编码
projectCode=P2010143054
# actionType SKU同步接口需要传的参数,但是这个参数暂时没有用到,写在了mapper中
skuactionType=ADD-OW
# skuSize Sku同步产品信息,每次同步的大小,最大为100
skuSize=10
# actionType TwASn同步所填参数
twasnactionType=ADD
# operationFlag 业务标识配送(W-仓,T-配,WT-仓+配,)
twasnoperationFlag=W
# operationTypeCode 业务表示入库
twasnoperationTypeCode=ASN
# actionType TwASn同步所填参数
twsoactionType=ADD
# operationFlag 业务标识配送(W-仓,T-配,WT-仓+配,)
twasooperationFlag=W
# operationTypeCode 订单类型:NORMAL -普通订单/交易订单(B2C) WDO -出库单/非交易订单(B2B),仓储必填
twsooperationTypeCode=WDO

7、pom.xml 依赖的配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.chenk</groupId>
    <artifactId>wms-jcerp</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--所有springboot工程都必须继承-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
    <!--SpringBoot的WEB启动依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--mybatis起步依赖-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.3</version>
    </dependency>
    <!--mysql驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!--@ConfiguaritionProperties的执行器配置-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    <!--SpringBoot继承Junit测试的起步依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
    <!--fashjson依赖包-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.45</version>
    </dependency>
    </dependencies>
    <!--配置发布成jar前提-->
    <!--配置springboot打包jar所需配置-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
Contents
  1. 1. 百世仓储信息同步接口
    1. 1.1. 该文章的案例介绍
    2. 1.2. 简单的环境的配置
      1. 1.2.1. 1、开发环境配置
      2. 1.2.2. 2、将百世的SDK包放到java代码目录下,(百世的SDK代码,是可以直接调用的),包名如下
      3. 1.2.3. 3、实现个人的代码包入经为 com.chenk 包
      4. 1.2.4. 4、resources目录配置
      5. 1.2.5. 5、application.properties的配置
      6. 1.2.6. 6、best.properties 百世的参数配置
      7. 1.2.7. 7、pom.xml 依赖的配置
|