自动化立体仓库 - WMS系统
ZY
17 小时以前 ffb382ba34aca2dce08ab9e4ef09adc946cf23c8
双数据源
8个文件已添加
12个文件已修改
609 ■■■■■ 已修改文件
pom.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/BareBoardScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/ErrorStockScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/NotifyLogScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/OverYearLogScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/PlcLogScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/WorkLogScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/WorkMastScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/config/ds/AbstractRoutingDataSource.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/config/ds/DataSourceAop.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/config/ds/DataSourceConfig.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/config/ds/DataSourceType.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/config/ds/DynamicDataSource.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/config/ds/PrimaryDataSourceConfig.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/config/ds/SecondaryDataSourceConfig.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/vo/SaleOutBodyVO.java 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/nc/vo/SaleOutHeadVO.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/config.properties 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper2/test 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -16,7 +16,7 @@
    <properties>
        <java.version>1.8</java.version>
        <cool.version>3.4.0</cool.version>
        <mysql-driver.version>5.1.47</mysql-driver.version>
        <mysql-driver.version>8.0.28</mysql-driver.version>
        <mybatis-plus.version>2.3.2</mybatis-plus.version>
        <fastjson.version>1.2.58</fastjson.version>
        <springfox.version>2.7.0</springfox.version>
@@ -50,6 +50,7 @@
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-driver.version}</version>
        </dependency>
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
src/main/java/com/zy/asrs/task/BareBoardScheduler.java
@@ -29,7 +29,7 @@
    * 自动调空板出库
    * */
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
    public void execute(){
        if (slaveWmsParameterProperties.isAutomaticFillingBoardStaNosBoolean()){
            Config config = configService.selectConfigByCode("AutomaticFillingBoard");
            if (!Cools.isEmpty(config) && !Cools.isEmpty(config.getValue()) && config.getValue().equals("true")){
src/main/java/com/zy/asrs/task/ErrorStockScheduler.java
@@ -20,7 +20,7 @@
    private ErrorStockHandler errorStockHandler;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
    public void execute(){
        ReturnT<String> returnT = errorStockHandler.start();
        if (!returnT.isSuccess()) {
            log.error(returnT.getMsg());
src/main/java/com/zy/asrs/task/NotifyLogScheduler.java
@@ -20,7 +20,7 @@
    private NotifyLogHandler notifyLogHandler;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
    public void execute(){
        ReturnT<String> returnT = notifyLogHandler.start();
        if (!returnT.isSuccess()) {
            log.error(returnT.getMsg());
src/main/java/com/zy/asrs/task/OverYearLogScheduler.java
@@ -20,7 +20,7 @@
    private OverYearLogHandler overYearLogHandler;
    @Scheduled(cron = "0 0 1 * * ? ")
    private void execute(){
    public void execute(){
        ReturnT<String> returnT = overYearLogHandler.start();
        if (!returnT.isSuccess()) {
            log.error(returnT.getMsg());
src/main/java/com/zy/asrs/task/PlcLogScheduler.java
@@ -20,7 +20,7 @@
    private PlcLogHandler plcLogHandler;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
    public void execute(){
        ReturnT<String> returnT = plcLogHandler.start();
        if (!returnT.isSuccess()) {
            log.error(returnT.getMsg());
src/main/java/com/zy/asrs/task/WorkLogScheduler.java
@@ -24,7 +24,7 @@
    private WrkMastService wrkMastService;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
    public void execute(){
        List<WrkMast> wrkMasts = wrkMastService.selectToBeHistoryData();
        if (wrkMasts.isEmpty()) {
            return;
src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -27,7 +27,7 @@
    private WorkMastHandler workMastHandler;
    @Scheduled(cron = "0/3 * * * * ? ")
    private void execute(){
    public void execute(){
        List<WrkMast> wrkMasts = wrkMastService.selectToBeCompleteData();
        if (wrkMasts.isEmpty()) {
            return;
src/main/java/com/zy/common/config/ds/AbstractRoutingDataSource.java
New file
@@ -0,0 +1,38 @@
package com.zy.common.config.ds;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.jdbc.datasource.AbstractDataSource;
import org.springframework.util.Assert;
import javax.sql.DataSource;
import java.util.Map;
public abstract class AbstractRoutingDataSource extends AbstractDataSource implements InitializingBean {
    //多数据源map集合
    private Map<Object, Object> targetDataSources;
    //默认数据源
    private Object defaultTargetDataSource;
    //其实就是targetDataSources,后面的afterPropertiesSet()方法会将targetDataSources赋值给resolvedDataSources
    private Map<Object, DataSource> resolvedDataSources;
    private DataSource resolvedDefaultDataSource;
    public void setTargetDataSources(Map<Object, Object> targetDataSources) {
        this.targetDataSources = targetDataSources;
    }
    protected DataSource determineTargetDataSource() {
        Assert.notNull(this.resolvedDataSources, "DataSource router not initialized");
        Object lookupKey = this.determineCurrentLookupKey();
        DataSource dataSource = (DataSource) this.resolvedDataSources.get(lookupKey);
        if (dataSource == null && ( lookupKey == null)) {
            dataSource = this.resolvedDefaultDataSource;
        }
        if (dataSource == null) {
            throw new IllegalStateException("Cannot determine target DataSource for lookup key [" + lookupKey + "]");
        } else {
            return dataSource;
        }
    }
    protected abstract Object determineCurrentLookupKey();
}
src/main/java/com/zy/common/config/ds/DataSourceAop.java
New file
@@ -0,0 +1,27 @@
package com.zy.common.config.ds;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class DataSourceAop {
    @Before("execution(* com.zy.asrs..*(..))")
    public void setDataSource2test01() {
        System.err.println("test01业务");
        DataSourceType.setDataBaseType(DataSourceType.DataBaseType.TEST01);
    }
    @Before("execution(* com.zy.system..*(..))")
    public void setDataSource2test012() {
        System.err.println("test01业务");
        DataSourceType.setDataBaseType(DataSourceType.DataBaseType.TEST01);
    }
    @Before("execution(* com.zy.nc..*(..))")
    public void setDataSource2test02() {
        System.err.println("test02业务");
        DataSourceType.setDataBaseType(DataSourceType.DataBaseType.TEST02);
    }
}
src/main/java/com/zy/common/config/ds/DataSourceConfig.java
New file
@@ -0,0 +1,49 @@
package com.zy.common.config.ds;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
import static com.sun.xml.internal.ws.spi.db.BindingContextFactory.LOGGER;
@Configuration
public class DataSourceConfig {
    @Value("${other.datasource.jdbc-url}")
    private String url;
    @Value("${other.datasource.username}")
    private String username;
    @Value("${other.datasource.password}")
    private String password;
    @Value("${other.datasource.driver-class-name}")
    private String driverClassName;
    // 主数据源
    @Bean(name = "dataSource")
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }
    // 次数据源
    @Bean(name = "slaveDataSource")
    public DataSource secondaryDataSource() {
        System.out.println(driverClassName);
        return DataSourceBuilder.create()
                .driverClassName(driverClassName)
                .url(url)
                .username(username)
                .password(password)
                .build();
    }
}
src/main/java/com/zy/common/config/ds/DataSourceType.java
New file
@@ -0,0 +1,32 @@
package com.zy.common.config.ds;
public class DataSourceType {
    public enum DataBaseType {
        TEST01, TEST02
    }
    // 使用ThreadLocal保证线程安全
    private static final ThreadLocal<DataBaseType> TYPE = new ThreadLocal<DataBaseType>();
    // 往当前线程里设置数据源类型
    public static void setDataBaseType(DataBaseType dataBaseType) {
        if (dataBaseType == null) {
            throw new NullPointerException();
        }
        System.err.println("[将当前数据源改为]:" + dataBaseType);
        TYPE.set(dataBaseType);
    }
    // 获取数据源类型
    public static DataBaseType getDataBaseType() {
        DataBaseType dataBaseType = TYPE.get() == null ? DataBaseType.TEST01 : TYPE.get();
        System.err.println("[获取当前数据源的类型为]:" + dataBaseType);
        return dataBaseType;
    }
    // 清空数据类型
    public static void clearDataBaseType() {
        TYPE.remove();
    }
}
src/main/java/com/zy/common/config/ds/DynamicDataSource.java
New file
@@ -0,0 +1,11 @@
package com.zy.common.config.ds;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
public class DynamicDataSource  extends AbstractRoutingDataSource {
    @Override
    protected Object determineCurrentLookupKey() {
        DataSourceType.DataBaseType dataBaseType = DataSourceType.getDataBaseType();
        return dataBaseType;
    }
}
src/main/java/com/zy/common/config/ds/PrimaryDataSourceConfig.java
New file
@@ -0,0 +1,35 @@
package com.zy.common.config.ds;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = {"com.zy.asrs.*.*", "com.zy.system.*.*"}, sqlSessionFactoryRef = "primarySqlSessionFactory")
public class PrimaryDataSourceConfig {
    @Bean(name = "primarySqlSessionFactory")
    @Primary
    public SqlSessionFactory primarySqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        // 设置MyBatis的Mapper XML文件路径
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mapper/*.xml"));
        return sessionFactory.getObject();
    }
    @Bean(name = "transactionManager")
    @Primary
    public DataSourceTransactionManager primaryTransactionManager(@Qualifier("dataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
}
src/main/java/com/zy/common/config/ds/SecondaryDataSourceConfig.java
New file
@@ -0,0 +1,32 @@
package com.zy.common.config.ds;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = "com.zy.nc", sqlSessionFactoryRef = "secondarySqlSessionFactory")
public class SecondaryDataSourceConfig {
    @Bean(name = "secondarySqlSessionFactory")
    public SqlSessionFactory secondarySqlSessionFactory(@Qualifier("slaveDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        // 设置MyBatis的Mapper XML文件路径
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mapper2/*.xml"));
        return sessionFactory.getObject();
    }
    @Bean(name = "secondaryTransactionManager")
    public DataSourceTransactionManager secondaryTransactionManager(@Qualifier("slaveDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
}
src/main/java/com/zy/nc/vo/SaleOutBodyVO.java
@@ -1,4 +1,257 @@
package com.zy.nc.vo;
import lombok.Data;
@Data
public class SaleOutBodyVO {
    // 必填字段
    private String csourcebillbid; // 来源单据表体主键
    private String csourcebillhid; // 来源单据表头主键
    private String csourcetype; // 来源单据类型
    private Double nnum; // 实发主数量
    // 可选字段
    private Boolean badvfeeflag; // 代垫运费
    private Boolean bbarcodeclose; // 单据行是否条码关闭
    private Boolean bcloseordflag; // 出库关闭
    private Boolean binvoiceflag; // 开票
    private Boolean blendoutflag; // 借出转销售
    private Boolean bonroadflag; // 在途
    private Boolean breturnprofit; // 返利
    private Boolean bsafeprice; // 价保
    private Boolean bsample; // 样品
    private Boolean bsourcelargess; // 上游赠品行
    private Boolean btou8rm; // 已下发零售
    private Boolean btranendflag; // 运输关闭
    private Boolean bwastageflag; // 签收
    private String casscustid; // 客户
    private String castunitid; // 单位
    private String cbodytranstypecode; // 出入库类型
    private String cbodywarehouseid; // 库存仓库
    private String ccorrespondbid; // 对应入库单据表体主键
    private String ccorrespondcode; // 对应入库单单据号
    private String ccorrespondhid; // 对应入库单主键
    private String ccorrespondrowno; // 对应入库单行号
    private String ccorrespondtranstype; // 对应入库单交易类型
    private String ccorrespondtype; // 对应入库单类型
    private String ccostobject; // 成本对象
    private String ccurrencyid; // 本位币
    private String ccustmaterialid; // 客户物料码
    private String cdelivery_bbid; // 发货单报检单据主键
    private String cffileid; // 特征码
    private String cfirstbillbid; // 源头单据表体主键
    private String cfirstbilldate; // 源头单据日期
    private String cfirstbillhid; // 源头单据表头主键
    private String cfirsttranstype; // 源头交易类型
    private String cfirsttype; // 源头单据类型
    private String cgeneralbid; // 出库单表体主键
    private String cglobalcurrencyid; // 全局本位币
    private String cgroupcurrencyid; // 集团本位币
    private String cinvoicecustid; // 开票客户
    private String cioliabilityoid; // 发货利润中心
    private String cioliabilityvid; // 发货利润中心
    private String cliabilityoid; // 结算利润中心
    private String cliabilityvid; // 结算利润中心
    private String clocationid; // 货位
    private String cmaterialoid; // 物料
    private String cmaterialvid; // 物料编码
    private String corigareaid; // 原产地区
    private String corigcountryid; // 原产国
    private String corigcurrencyid; // 币种
    private String cprodlineid; // 产品线
    private String cproductorid; // 生产厂商
    private String cprojectid; // 项目
    private String cqtunitid; // 报价单位
    private String cqualitylevelid; // 质量等级
    private String creceieveid; // 收货客户
    private String creceiveareaid; // 收货地区
    private String creceivepointid; // 收货地点
    private String crowno; // 行号
    private String cselastunitid; // 选择拆解单位
    private String csignwastbid; // 出入库单其它来源单据行主键
    private String csignwasthid; // 出入库单其它来源单据主键
    private String csignwasttype; // 出入库单其它来源类型
    private String csnqualitylevelid; // 序列号质量等级
    private String csnunitid; // 序列号单位
    private String csourcebilldate; // 来源单据日期
    private String csourcematerialoid; // 来源单据物料
    private String csourcetranstype; // 来源交易类型
    private String csourcewastbid; // 来源途损单据表体主键
    private String csourcewasthid; // 来源途损单据主键
    private String csourcewasttranstype; // 来源途损交易类型
    private String csourcewasttype; // 来源途损单据类型
    private String csrc2billbid; // 其他来源单行主键
    private String csrc2billhid; // 其他来源单主键
    private String csrc2billtype; // 其他来源单据类型编码
    private String csrc2transtype; // 其他来源交易类型编码
    private String csrcmaterialoid; // 来源物料
    private String csrcmaterialvid; // 来源物料编码
    private String cstateid; // 库存状态
    private String csumid; // VMI汇总
    private String ctaxcodeid; // 税码
    private String ctplcustomerid; // 货主客户
    private String cunitid; // 主单位
    private String cvendorid; // 供应商
    private String cvmivenderid; // 寄存供应商
    private String dbizdate; // 出库日期
    private String ddeliverdate; // 要求收货日期
    private String dinbounddate; // 首次入库日期
    private String dproducedate; // 生产日期
    private String dvalidate; // 失效日期
    private Integer fbillrowflag; // 配套标志
    private Boolean flargess; // 赠品
    private Integer ftaxtypeflag; // 扣税类别
    private Integer ibcversion; // 批次版本
    private Integer idesatype; // 拆解类型
    private Double naccumoutbacknum; // 累计出库退回主数量
    private Double naccumoutsignnum; // 累计签收主数量
    private Double naccumvminum; // 累计汇总匹配主数量
    private Double naccumwastnum; // 累计途损主数量
    private Double nassistnum; // 实发数量
    private Double nbarcodenum; // 条码主数量
    private Double nbdiscountrate; // 整单折扣
    private Double ncaltaxmny; // 计税金额
    private Double nchangestdrate; // 折本汇率
    private Double ncorrespondastnum; // 累计出库数量
    private Double ncorrespondgrsnum; // 累计出库毛重主数量
    private Double ncorrespondnum; // 累计出库主数量
    private Double ncostmny; // 金额
    private Double ncostprice; // 单价
    private Double ncountnum; // 箱数
    private Double nglobalexchgrate; // 全局本位币汇率
    private Double nglobalmny; // 全局本币无税金额
    private Double nglobaltaxmny; // 全局本币价税合计
    private Double ngrossnum; // 毛重主数量
    private Double ngroupexchgrate; // 集团本位币汇率
    private Double ngroupmny; // 集团本币无税金额
    private Double ngrouptaxmny; // 集团本币价税合计
    private Double ninvoicemny; // 可开票金额
    private Double ninvoicenum; // 可开票数量
    private Double nitemdiscountrate; // 单品折扣
    private Double nmny; // 本币无税金额
    private Double nnetprice; // 主本币无税净价
    private Double norigmny; // 无税金额
    private Double norignetprice; // 主无税净价
    private Double norigprice; // 主无税单价
    private Double norigtaxmny; // 价税合计
    private Double norigtaxnetprice; // 主含税净价
    private Double norigtaxprice; // 主含税单价
    private Double npiece; // 件数
    private Double nplannedmny; // 计划金额
    private Double nplannedprice; // 计划单价
    private Double nprice; // 主本币无税单价
    private Double nqtnetprice; // 本币无税净价
    private Double nqtorignetprice; // 无税净价
    private Double nqtorigprice; // 无税单价
    private Double nqtorigtaxnetprc; // 报价单位含税净价
    private Double nqtorigtaxnetprice; // 含税净价
    private Double nqtorigtaxprice; // 含税单价
    private Double nqtprice; // 本币无税单价
    private Double nqttaxnetprice; // 本币含税净价
    private Double nqttaxprice; // 本币含税单价
    private Double nqtunitnum; // 报价数量
    private Double nreplenishednum; // 累计退货主数量
    private Double nrushnum; // 累计对冲主数量
    private Double nshouldassistnum; // 应发数量
    private Double nshouldnum; // 应发主数量
    private Double nsignnum; // 累计开票主数量
    private Double ntarenum; // 皮重主数量
    private Double ntax; // 税额
    private Double ntaxmny; // 本币价税合计
    private Double ntaxnetprice; // 主本币含税净价
    private Double ntaxprice; // 主本币含税单价
    private Double ntaxrate; // 税率
    private Double ntotaltrannum; // 累计运输主数量
    private Double nvolume; // 体积
    private Double nweight; // 重量
    private String pk_batchcode; // 批次主键
    private String pk_group; // 集团
    private String pk_measware; // 计量器具
    private String pk_org; // 库存组织最新版本
    private String pk_org_v; // 库存组织
    private String pk_packsort; // 包装类型
    private String pk_returnreason; // 退货原因
    private String pk_serialcode; // 序列号主键
    private String tchecktime; // 检验时间
    private String tsourcebbts; // 来源发货单报检单时间戳
    private String tsourcebodyts; // 来源表体时间戳
    private String tsourceheadts; // 来源表头时间戳
    private String vbatchcode; // 批次号
    private String vbatchcodenote; // 批次备注
    private String vbcdef1; // 批次自定义项1
    private String vbcdef10; // 批次自定义项10
    private String vbcdef11; // 批次自定义项11
    private String vbcdef12; // 批次自定义项12
    private String vbcdef13; // 批次自定义项13
    private String vbcdef14; // 批次自定义项14
    private String vbcdef15; // 批次自定义项15
    private String vbcdef16; // 批次自定义项16
    private String vbcdef17; // 批次自定义项17
    private String vbcdef18; // 批次自定义项18
    private String vbcdef19; // 批次自定义项19
    private String vbcdef2; // 批次自定义项2
    private String vbcdef20; // 批次自定义项20
    private String vbcdef3; // 批次自定义项3
    private String vbcdef4; // 批次自定义项4
    private String vbcdef5; // 批次自定义项5
    private String vbcdef6; // 批次自定义项6
    private String vbcdef7; // 批次自定义项7
    private String vbcdef8; // 批次自定义项8
    private String vbcdef9; // 批次自定义项9
    private String vbdef1; // 表体自定义项1
    private String vbdef10; // 表体自定义项10
    private String vbdef11; // 表体自定义项11
    private String vbdef12; // 表体自定义项12
    private String vbdef13; // 表体自定义项13
    private String vbdef14; // 表体自定义项14
    private String vbdef15; // 表体自定义项15
    private String vbdef16; // 表体自定义项16
    private String vbdef17; // 表体自定义项17
    private String vbdef18; // 表体自定义项18
    private String vbdef19; // 表体自定义项19
    private String vbdef2; // 表体自定义项2
    private String vbdef20; // 表体自定义项20
    private String vbdef3; // 表体自定义项3
    private String vbdef4; // 表体自定义项4
    private String vbdef5; // 表体自定义项5
    private String vbdef6; // 表体自定义项6
    private String vbdef7; // 表体自定义项7
    private String vbdef8; // 表体自定义项8
    private String vbdef9; // 表体自定义项9
    private String vbillbarcode; // 单据条码
    private String vbilltypeu8rm; // 来自于零售之单据类型
    private String vchangerate; // 换算率
    private String vexigencybid; // 紧急放行申请单行主键
    private String vexigencycode; // 紧急放行申请单号
    private String vexigencyhid; // 紧急放行申请单主键
    private String vexigencyrowno; // 紧急放行申请单行号
    private String vexigencytype; // 紧急放行单据类型
    private String vfirstbillcode; // 源头单据号
    private String vfirstrowno; // 源头单据行号
    private String vfree1; // 自由辅助属性1
    private String vfree10; // 自由辅助属性10
    private String vfree2; // 自由辅助属性2
    private String vfree3; // 自由辅助属性3
    private String vfree4; // 自由辅助属性4
    private String vfree5; // 自由辅助属性5
    private String vfree6; // 自由辅助属性6
    private String vfree7; // 自由辅助属性7
    private String vfree8; // 自由辅助属性8
    private String vfree9; // 自由辅助属性9
    private String vnotebody; // 行备注
    private String vpickdetailbid; // 拣配明细行
    private String vpickdetailrowno; // 拣配明细行号
    private String vqtunitrate; // 报价换算率
    private String vreceiveaddress; // 收货地址
    private String vserialcode; // 序列号
    private String vsignwastcode; // 出入库单其它来源单据号
    private String vsignwastrowno; // 出入库单其它来源单据行标识
    private String vsndef1; // 序列号自定义项1
    private String vsndef10; // 序列号自定义项10
    private String vsndef11; // 序列号自定义项11
    private String vsndef12; // 序列号自定义项12
    private String vsndef13; // 序列号自定义项13
    private String vsndef14; // 序列号自定义项14
    private String vsndef15; // 序列号自定义项15
    private String vsndef16; // 序列号自定义项16
}
src/main/java/com/zy/nc/vo/SaleOutHeadVO.java
@@ -1,4 +1,89 @@
package com.zy.nc.vo;
import lombok.Data;
@Data
public class SaleOutHeadVO {
    // 必填字段
    private String pkOrg; // 库存组织最新版本
    private String cwarehouseid; // 仓库
    // 可选字段
    private String approver; // 签字人
    private String billmaker; // 制单人
    private Boolean boutretflag; // 销售退回
    private Boolean bsalecooppur; // 已协同生成采购入库单
    private Boolean btriatradeflag; // 三角贸易
    private String cbizid; // 业务员
    private String cbiztype; // 业务流程
    private String ccostdomainid; // 结算成本域
    private String ccustomerid; // 订单客户
    private String cdilivertypeid; // 运输方式
    private String cdptid; // 部门最新版本
    private String cdptvid; // 部门
    private String cfanaceorgoid; // 结算财务组织最新版本
    private String cfanaceorgvid; // 结算财务组织
    private String cgeneralhid; // 出库单表头主键
    private String corpoid; // 公司最新版本
    private String corpvid; // 公司
    private String cothercalbodyoid; // 入库库存组织最新版本
    private String cothercalbodyvid; // 入库库存组织
    private String cotherwhid; // 入库仓库
    private String creationtime; // 创建时间
    private String creator; // 创建人
    private String crececountryid; // 收货国
    private String creceivfinorgoid; // 应收财务组织最新版本
    private String creceivfinorgvid; // 应收财务组织
    private String csaleorgoid; // 销售组织最新版本
    private String csaleorgvid; // 销售组织
    private String csendcountryid; // 发货国
    private String ctaxcountryid; // 报税国
    private String ctradewordid; // 贸易术语
    private String ctrancustid; // 承运商
    private String ctrantypeid; // 出入库类型
    private String cwhsmanagerid; // 库管员
    private String dbilldate; // 单据日期
    private String dmakedate; // 制单日期
    private Integer fbillflag; // 单据状态
    private Integer fbuysellflag; // 购销类型
    private Boolean freplenishflag; // 销售退货
    private Integer iprintcount; // 打印次数
    private String modifiedtime; // 最后修改时间
    private String modifier; // 最后修改人
    private Double ntotalnum; // 总数量
    private Double ntotalpiece; // 总件数
    private Double ntotalvolume; // 总体积
    private Double ntotalweight; // 总重量
    private String pkGroup; // 集团
    private String pkMeasware; // 计量器具
    private String pkOrgV; // 库存组织
    private String taudittime; // 签字日期
    private String trafficorgoid; // 物流组织最新版本
    private String trafficorgvid; // 物流组织
    private String vbillcode; // 单据号
    private String vdef1; // 表头自定义项1
    private String vdef10; // 表头自定义项10
    private String vdef11; // 表头自定义项11
    private String vdef12; // 表头自定义项12
    private String vdef13; // 表头自定义项13
    private String vdef14; // 表头自定义项14
    private String vdef15; // 表头自定义项15
    private String vdef16; // 表头自定义项16
    private String vdef17; // 表头自定义项17
    private String vdef18; // 表头自定义项18
    private String vdef19; // 表头自定义项19
    private String vdef2; // 表头自定义项2
    private String vdef20; // 表头自定义项20
    private String vdef3; // 表头自定义项3
    private String vdef4; // 表头自定义项4
    private String vdef5; // 表头自定义项5
    private String vdef6; // 表头自定义项6
    private String vdef7; // 表头自定义项7
    private String vdef8; // 表头自定义项8
    private String vdef9; // 表头自定义项9
    private String vdiliveraddress; // 运输地址
    private String vnote; // 备注
    private String vtrantypecode; // 出入库类型编码
}
src/main/resources/application.yml
@@ -10,26 +10,28 @@
    enabled: false
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
#    url: jdbc:sqlserver://192.168.4.191:1433;databasename=integrationasrs
#    username: sa
#    password: sa@123
    url: jdbc:sqlserver://192.168.4.191:50948;databasename=source
    jdbc-url: jdbc:sqlserver://127.0.0.1:1433;databasename=ytflasrs
    username: sa
    password: sa@123
#    url: jdbc:sqlserver://127.0.0.1:51433;databasename=source
#    username: sa
#    password: Zoneyung@zy56$
  mvc:
    static-path-pattern: /**
  redis:
    host: localhost
    port: 6379
    database: 0
#    password: xltys1995
  #    password: xltys1995
  servlet:
    multipart:
      maxFileSize: 100MB
      maxRequestSize: 100MB
other:
  datasource:
    jdbc-url: jdbc:mysql://192.168.5.61:3306/datareports
    username: liku
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  mapper-locations: classpath:mapper/*.xml
@@ -159,7 +161,7 @@
    #结果上报(审核)单地址
    outaddressAudit: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc
  #  登录账号管理
  login :
  login:
    acctID: "647e849ab6fa0f"
    username: "llw"
    password: "666666"
src/main/resources/config.properties
@@ -1,6 +1,6 @@
#####不变参数
client_id=tchzt2
client_secret=aad2433934c141b58937
client_id=WMS
client_secret=b5ee040e00584e518c06
pubKey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhxRFEtPfreu+ROWtC5IQZVy1Vkkqi0Fk7A4tGvyfLIw2qPNLWrTmCJeJwXLmgiB+EU0RW9U8jFYRAhSKaQY1HTjHMZcXdfH6m7WitT+sIyDVfTO3wVWtvjFBF1o6qi+T7pNsmCjstArnm/OS55kn0zJcRiTTwP1UU1LrkQbytf9ZHOcbKfqjIL8amsinjdxd6ioUM3JT3PpOXCIRDHsQgvAnFx2q7Y902S0PFzc40FwtuwsuKqesvEbIImUcq1wbIDtMegixy+TfJMWcByNLp2iv8/+Zos+hePhfWRPlD2x0vk30xDXMiUVgq0dhxC5C3yeD2QEbLxIlDqK2WebzZQIDAQAB
secret_level=L0
#autotest=ture
@@ -32,9 +32,9 @@
#pwd=123456a!
#busi_center=1001
username=WMS
pwd=b5ee040e00584e518c06
busi_center=fulai??0731
username=wmsliku
pwd=liku@135
busi_center=F
#username=01
#pwd=123456a!
src/main/resources/mapper2/test