Browse Source

qxm-HANA数据库切换(salseorder和deliveorder)

qxm 3 years ago
parent
commit
f0dd0cfcc5
24 changed files with 926 additions and 19 deletions
  1. 5 1
      suishenbang-admin/pom.xml
  2. 6 5
      suishenbang-admin/src/main/resources/application-dev-druid.yml
  3. 14 1
      suishenbang-admin/src/main/resources/application-dev.yml
  4. 1 1
      suishenbang-admin/src/main/resources/application-prod-druid.yml
  5. 3 0
      suishenbang-admin/src/main/resources/application-prod.yml
  6. 2 2
      suishenbang-admin/src/main/resources/application-test-druid.yml
  7. 4 0
      suishenbang-admin/src/main/resources/application-test.yml
  8. 1 1
      suishenbang-admin/src/main/resources/application-uat-druid.yml
  9. 13 0
      suishenbang-admin/src/main/resources/application-uat.yml
  10. 5 1
      suishenbang-api/pom.xml
  11. 2 2
      suishenbang-api/src/main/resources/application-dev-druid.yml
  12. 3 0
      suishenbang-api/src/main/resources/application-dev.yml
  13. 1 1
      suishenbang-api/src/main/resources/application-prod-druid.yml
  14. 2 0
      suishenbang-api/src/main/resources/application-prod.yml
  15. 1 1
      suishenbang-api/src/main/resources/application-test-druid.yml
  16. 2 0
      suishenbang-api/src/main/resources/application-test.yml
  17. 1 1
      suishenbang-api/src/main/resources/application-uat-druid.yml
  18. 2 0
      suishenbang-api/src/main/resources/application-uat.yml
  19. 9 1
      suishenbang-common/src/main/java/com/dgtly/common/config/Global.java
  20. 13 0
      suishenbang-common/src/main/java/com/dgtly/common/utils/DateUtils.java
  21. 14 0
      suishenbang-quartz/src/main/java/com/dgtly/quartz/task/RyTask.java
  22. 10 0
      suishenbang-sync/suishenbang-sync-common/pom.xml
  23. 801 0
      suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/HanaOrderComponent.java
  24. 11 1
      suishenbang-system/pom.xml

+ 5 - 1
suishenbang-admin/pom.xml

@@ -96,7 +96,11 @@
             <artifactId>suishenbang-sync-manager</artifactId>
             <version>4.0.0</version>
         </dependency>
-
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.47</version>
+        </dependency>
 
 
     </dependencies>

+ 6 - 5
suishenbang-admin/src/main/resources/application-dev-druid.yml

@@ -2,20 +2,21 @@
 spring:
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
+        driverClassName: com.mysql.jdbc.Driver
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://10.32.2.212:3306/suishenbang_order?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://10.32.2.212:3306/suishenbang_order?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
                 username: root
                 password: libang
             # 从库数据源
             slave:
                 # 从数据源开关/默认关闭
                 enabled: false
-                url: 
-                username: 
-                password: 
+                driverClassName: com.sap.db.jdbc.Driver
+                url: jdbc:sap://hanaentsltp.nipponpaint.com.cn:30015?reconnect=true
+                username: SSB_HANA
+                password: Erty567*
             # 初始连接数
             initialSize: 10
             # 最小连接池数量

+ 14 - 1
suishenbang-admin/src/main/resources/application-dev.yml

@@ -13,7 +13,10 @@ ruoyi:
   # 获取ip地址开关
   addressEnabled: true
   cloudPath: http://10.32.2.212:8000/
-  clearCachePath: http://suishenbangtest.nipponpaint.com.cn/order/meta-hana-sales-order/clearCache
+  #清空订单缓存
+  clearCachePath: http://ss.libang.dgtis.com/order/meta-hana-sales-order/clearCache
+  orderGetDataHook: http://ss.libang.dgtis.com/order/meta-hana-sales-order/orderGetDataHook
+  deliverGetDataHook: http://ss.libang.dgtis.com/order/meta-hana-sales-order/deliverGetDataHook
 #经销商微信接口相关配置
 customer:
   appid: ap4f8e6a38b6142187
@@ -21,6 +24,16 @@ customer:
   #正式域名 https://ac.nipponpaint.com.cn
   domain: https://ac.nipponpaint.com.cn
 
+#hana数据库数据同步配置
+hana:
+  hana-driver: com.sap.db.jdbc.Driver
+  hana-url: jdbc:sap://hanaentsltp.nipponpaint.com.cn:30015?reconnect=true
+  hana-user: SSB_HANA
+  hana-pwd: Erty567*
+  mysql-driver: com.mysql.jdbc.Driver
+  mysql-url: jdbc:mysql://localhost:3306/ceshidba?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&rewriteBatchedStatements=true&useServerPrepStmts=true
+  mysql-user: root
+  mysql-pwd: root
 
 # 开发环境配置
 server:

+ 1 - 1
suishenbang-admin/src/main/resources/application-prod-druid.yml

@@ -2,7 +2,7 @@
 spring:
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
+        driverClassName: com.mysql.jdbc.Driver
         druid:
             # 主库数据源
             master:

+ 3 - 0
suishenbang-admin/src/main/resources/application-prod.yml

@@ -13,7 +13,10 @@ ruoyi:
   # 获取ip地址开关
   addressEnabled: false
   cloudPath: http://127.0.0.1:8000
+  #清空订单缓存
   clearCachePath: http://suishenbang.nipponpaint.com.cn/order/meta-hana-sales-order/clearCache
+  orderGetDataHook: http://suishenbang.nipponpaint.com.cn/order/meta-hana-sales-order/orderGetDataHook
+  deliverGetDataHook: http://suishenbang.nipponpaint.com.cn/order/meta-hana-sales-order/deliverGetDataHook
 #经销商微信接口相关配置
 customer:
   appid: ap4f8e6a38b6142187

+ 2 - 2
suishenbang-admin/src/main/resources/application-test-druid.yml

@@ -2,11 +2,11 @@
 spring:
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
+        driverClassName: com.mysql.jdbc.Driver
         druid:
             # 主库数据源
             master:
-                  url: jdbc:mysql://10.32.2.212:3306/suishenbang_order?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                  url: jdbc:mysql://10.32.2.212:3306/suishenbang_order?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
                   username: root
                   password: libang
             # 从库数据源

+ 4 - 0
suishenbang-admin/src/main/resources/application-test.yml

@@ -13,6 +13,10 @@ ruoyi:
   # 获取ip地址开关
   addressEnabled: true
   cloudPath: http://10.32.2.212:8000/
+  #清空订单缓存
+  clearCachePath: http://ss.libang.dgtis.com/order/meta-hana-sales-order/clearCache
+  orderGetDataHook: http://ss.libang.dgtis.com/order/meta-hana-sales-order/orderGetDataHook
+  deliverGetDataHook: http://ss.libang.dgtis.com/order/meta-hana-sales-order/deliverGetDataHook
 #经销商微信接口相关配置
 customer:
   appid: ap4f8e6a38b6142187

+ 1 - 1
suishenbang-admin/src/main/resources/application-uat-druid.yml

@@ -2,7 +2,7 @@
 spring:
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
+        driverClassName: com.mysql.jdbc.Driver
         druid:
             # 主库数据源
             master:

+ 13 - 0
suishenbang-admin/src/main/resources/application-uat.yml

@@ -13,7 +13,10 @@ ruoyi:
   # 获取ip地址开关
   addressEnabled: false
   cloudPath: http://127.0.0.1:8000/
+  #清空订单缓存
   clearCachePath: http://suishenbangtest.nipponpaint.com.cn/order/meta-hana-sales-order/clearCache
+  orderGetDataHook: http://suishenbangtest.nipponpaint.com.cn/order/meta-hana-sales-order/orderGetDataHook
+  deliverGetDataHook: http://suishenbangtest.nipponpaint.com.cn/order/meta-hana-sales-order/deliverGetDataHook
 #经销商微信接口相关配置
 customer:
   appid: ap4f8e6a38b6142187
@@ -21,6 +24,16 @@ customer:
   #正式域名 https://ac.nipponpaint.com.cn
   domain: https://ac.nipponpaint.com.cn
 
+#hana数据库数据同步配置
+hana:
+  hana-driver: com.sap.db.jdbc.Driver
+  hana-url: jdbc:sap://hanaentsltp.nipponpaint.com.cn:30015?reconnect=true
+  hana-user: SSB_HANA
+  hana-pwd: Erty567*
+  mysql-driver: com.mysql.jdbc.Driver
+  mysql-url: jdbc:mysql://pc-uf637rafh16b6nl16.rwlb.rds.aliyuncs.com:3306/ssbtest?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+  mysql-user: ssbtest
+  mysql-pwd: Ssbtest#0812
 
 # 开发环境配置
 server:

+ 5 - 1
suishenbang-api/pom.xml

@@ -40,7 +40,11 @@
             <version>4.0.0</version>
         </dependency>
 
-
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.47</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 2 - 2
suishenbang-api/src/main/resources/application-dev-druid.yml

@@ -2,11 +2,11 @@
 spring:
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
+        driverClassName: com.mysql.jdbc.Driver
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://10.32.2.212:3306/suishenbang_order?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://10.32.2.212:3306/suishenbang_order?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
                 username: root
                 password: libang
             # 从库数据源

+ 3 - 0
suishenbang-api/src/main/resources/application-dev.yml

@@ -14,6 +14,9 @@ ruoyi:
   openSwagger: true
   cloudPath: http://10.32.2.212:8000/
   clearCachePath: http://suishenbangtest.nipponpaint.com.cn/order/meta-hana-sales-order/clearCache
+  orderGetDataHook: http://ss.libang.dgtis.com/order/meta-hana-sales-order/orderGetDataHook
+  deliverGetDataHook: http://ss.libang.dgtis.com/order/meta-hana-sales-order/deliverGetDataHook
+
 #接口安全验证
 security:
   #接口过期时间

+ 1 - 1
suishenbang-api/src/main/resources/application-prod-druid.yml

@@ -2,7 +2,7 @@
 spring:
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
+        driverClassName: com.mysql.jdbc.Driver
         druid:
             # 主库数据源
             master:

+ 2 - 0
suishenbang-api/src/main/resources/application-prod.yml

@@ -14,6 +14,8 @@ ruoyi:
   openSwagger: true
   cloudPath: http://127.0.0.1:8000/
   clearCachePath: http://suishenbang.nipponpaint.com.cn/order/meta-hana-sales-order/clearCache
+  orderGetDataHook: http://suishenbang.nipponpaint.com.cn/order/meta-hana-sales-order/orderGetDataHook
+  deliverGetDataHook: http://suishenbang.nipponpaint.com.cn/order/meta-hana-sales-order/deliverGetDataHook
 #接口安全验证
 security:
   #接口过期时间

+ 1 - 1
suishenbang-api/src/main/resources/application-test-druid.yml

@@ -2,7 +2,7 @@
 spring:
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
+        driverClassName: com.mysql.jdbc.Driver
         druid:
             # 主库数据源
             master:

+ 2 - 0
suishenbang-api/src/main/resources/application-test.yml

@@ -13,6 +13,8 @@ ruoyi:
   #是否开启swagger
   openSwagger: true
   cloudPath: http://10.32.2.212:8000/
+  orderGetDataHook: http://ss.libang.dgtis.com/order/meta-hana-sales-order/orderGetDataHook
+  deliverGetDataHook: http://ss.libang.dgtis.com/order/meta-hana-sales-order/deliverGetDataHook
 #接口安全验证
 security:
   #接口过期时间

+ 1 - 1
suishenbang-api/src/main/resources/application-uat-druid.yml

@@ -2,7 +2,7 @@
 spring:
     datasource:
         type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
+        driverClassName: com.mysql.jdbc.Driver
         druid:
             # 主库数据源
             master:

+ 2 - 0
suishenbang-api/src/main/resources/application-uat.yml

@@ -14,6 +14,8 @@ ruoyi:
   openSwagger: true
   cloudPath: http://127.0.0.1:8000/
   clearCachePath: http://suishenbangtest.nipponpaint.com.cn/order/meta-hana-sales-order/clearCache
+  orderGetDataHook: http://suishenbangtest.nipponpaint.com.cn/order/meta-hana-sales-order/orderGetDataHook
+  deliverGetDataHook: http://suishenbangtest.nipponpaint.com.cn/order/meta-hana-sales-order/deliverGetDataHook
 #接口安全验证
 security:
   #接口过期时间

+ 9 - 1
suishenbang-common/src/main/java/com/dgtly/common/config/Global.java

@@ -135,13 +135,21 @@ public class Global
     }
 
     /**
-     * 获取头像上传路径
+     * 获取pdf上传路径
      */
     public static String getPdfPath()
     {
         return getProfile() + "/pdf";
     }
 
+    /**
+     * 获取pdf上传路径
+     */
+    public static String getTemdataPath()
+    {
+        return getProfile() + "/temdata/";
+    }
+
     /**
      * 获取下载路径
      */

+ 13 - 0
suishenbang-common/src/main/java/com/dgtly/common/utils/DateUtils.java

@@ -3,6 +3,7 @@ package com.dgtly.common.utils;
 import java.lang.management.ManagementFactory;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.Date;
 import org.apache.commons.lang3.time.DateFormatUtils;
 
@@ -110,6 +111,18 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         return DateFormatUtils.format(now, "yyyyMMdd");
     }
 
+    /*三个月前日期*/
+    public static final String getThreeMonthDate()
+    {
+        Date now = new Date();
+        Date dBefore = new Date();
+        Calendar calendar = Calendar.getInstance(); //得到日历
+        calendar.setTime(now);//把当前时间赋给日历
+        calendar.add(Calendar.MONTH, -3);  //设置为前3月
+        dBefore = calendar.getTime();   //得到前3月的时间
+        return DateFormatUtils.format(dBefore, "yyyyMMdd");
+    }
+
     /**
      * 日期型字符串转化为日期 格式
      */

+ 14 - 0
suishenbang-quartz/src/main/java/com/dgtly/quartz/task/RyTask.java

@@ -2,6 +2,8 @@ package com.dgtly.quartz.task;
 
 import com.dgtly.common.utils.StringUtils;
 import com.dgtly.sync.service.AnalysisDiyCustomerComponent;
+import com.dgtly.sync.service.HanaOrderComponent;
+import com.dgtly.system.service.HanaSaleOrdersSyncComponent;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -18,6 +20,10 @@ public class RyTask
 
     @Autowired
     private AnalysisDiyCustomerComponent analysisDiyCustomerComponent;
+    @Autowired
+    private HanaSaleOrdersSyncComponent hanaSaleOrdersSyncComponent;
+    @Autowired
+    private HanaOrderComponent hanaOrderComponent;
 //    private static RyTask ryTask;
 //    @PostConstruct
 //    public void init() {
@@ -43,4 +49,12 @@ public class RyTask
     public void analyDiyCustomer(){
         analysisDiyCustomerComponent.analyDiyCustomer();
     }
+
+    public void hanaSalesOrderSync() throws Exception {
+        hanaOrderComponent.hanaSalesOrderSync();
+    }
+    public void hanaDeliverOrderSync() throws Exception {
+        hanaOrderComponent.hanaDeliverOrderSync();
+    }
+
 }

+ 10 - 0
suishenbang-sync/suishenbang-sync-common/pom.xml

@@ -25,6 +25,16 @@
             <version>4.0.0</version>
         </dependency>
 
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.47</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-csv</artifactId>
+            <version>1.6</version>
+        </dependency>
     </dependencies>
 
 

+ 801 - 0
suishenbang-sync/suishenbang-sync-common/src/main/java/com/dgtly/sync/service/HanaOrderComponent.java

@@ -0,0 +1,801 @@
+package com.dgtly.sync.service;
+
+import com.dgtly.common.config.Global;
+import com.dgtly.common.utils.DateUtils;
+import com.dgtly.common.utils.http.HttpUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.io.*;
+import java.math.BigDecimal;
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.List;
+
+@Component
+public class HanaOrderComponent {
+
+    private static final Logger log = LoggerFactory.getLogger(HanaOrderComponent.class);
+
+    @Value(value = "${hana.hana-driver:none}")
+    private String hanaDriver;
+    @Value(value = "${hana.hana-url:none}")
+    private String hanaUrl;
+    @Value(value = "${hana.hana-user:none}")
+    private String hanaUser;
+    @Value(value = "${hana.hana-pwd:none}")
+    private String hanaPwd;
+
+    @Value(value = "${hana.mysql-driver:none}")
+    private String mysqlDriver;
+    @Value(value = "${hana.mysql-url:none}")
+    private String mysqlUrl;
+    @Value(value = "${hana.mysql-user:none}")
+    private String mysqlUser;
+    @Value(value = "${hana.mysql-pwd:none}")
+    private String mysqlPwd;
+
+    /*清空SalesOrder缓存*/
+    @Value(value = "${ruoyi.orderGetDataHook}")
+    private String orderGetDataHook;
+    /*清空deliverOrder缓存*/
+    @Value(value = "${ruoyi.deliverGetDataHook}")
+    private String deliverGetDataHook;
+
+    public HanaOrderComponent() {
+    }
+
+    public void hanaSalesOrderSync() throws Exception {
+        Connection con = this.getHanaConnection();
+        PreparedStatement pstmt = con.prepareStatement("SELECT\t\n" +
+                "A.VBELN,\t\n" +
+                "A.POSNR,\t\n" +
+                "A.VKORG,\t\n" +
+                "A.VKORG_TXT,\t\n" +
+                "A.VTWEG,\t\n" +
+                "A.KUNNR,\t\n" +
+                "A.NAME1,\t\n" +
+                "A.ROUTE,\t\n" +
+                "A.SPART,\t\n" +
+                "A.VKGRP,\t\n" +
+                "A.WERKS,\t\n" +
+                "A.AUART,\t\n" +
+                "A.ERDAT,\t\n" +
+                "A.ERDAT_P,\t\n" +
+                "A.LFSTA,\t\n" +
+                "A.MATNR,\t\n" +
+                "A.ZMAKTXX,\t\n" +
+                "A.GROES,\t\n" +
+                "A.ZCMFRE,\t\n" +
+                "A.ZCMGST,\t\n" +
+                "A.ABGRU,\t\n" +
+                "A.ZZMENG,\t\n" +
+                "A.ZZMENG2,\t\n" +
+                "A.ZNETWR,\t\n" +
+                "A.ZRFMNG,\t\n" +
+                "A.ZRFMNG2,\t\n" +
+                "A.ZNETWR1,\t\n" +
+                "A.VSBED,\t\n" +
+                "A.VSBED_TXT,\t\n" +
+                "A.MEINS,\t\n" +
+                "B.TRAGR\n" +
+                "FROM \"_SYS_BIC\".\"com.sd/CAL_SALES\"" +
+                "('PLACEHOLDER' = ('$$IP_ENDDATE$$',\n" +
+                "\t '"+DateUtils.dateTime()+"'),\n" +
+                "\t 'PLACEHOLDER' = ('$$IP_STATDATE$$',\n" +
+                "\t '"+DateUtils.getThreeMonthDate()+"')) A  LEFT JOIN ERP.MARA B ON B.MATNR = A.MATNR \n" +
+//                "\t where A.VTWEG IN ('D9','Y9') AND A.VKORG != '4000'\n" +
+                "\t WHERE  A.VTWEG = 'D9' AND A.SPART != '16' AND A.AUART NOT IN ('31','32','33','35','36','39') and A.ZCMGST !='信用通过' or (A.ZCMGST ='信用通过' and A.ABGRU='')\n" +
+                " order by A.VBELN,A.POSNR ");
+//                " order by A.VBELN,A.POSNR limit 10000");
+
+        Long startTime = System.currentTimeMillis();
+        ResultSet rs = pstmt.executeQuery();
+        Long endTime = System.currentTimeMillis();
+        log.info("SalesOrder查询用时:" + (endTime - startTime)+"毫秒");
+//        this.insertSalesOrderResult(rs);
+        this.createSalesOrderTxt(rs);
+        this.runLoadSalesOrder();
+        this.closeConnection(con, pstmt);
+
+    }
+
+    /*批量插入*/
+    private void insertSalesOrderResult(ResultSet rs) throws Exception {
+        Connection conn = null;
+        PreparedStatement pstm =null;
+        PreparedStatement pstm1 =null;
+        try {
+            conn = getMysqlConnection();
+            String sql1 = "TRUNCATE TABLE sap_hana_sales_order";
+            String sql = "INSERT INTO sap_hana_sales_order values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
+            pstm1 = conn.prepareStatement(sql1);
+            pstm1.execute();
+            pstm = conn.prepareStatement(sql);
+            Long startTime = System.currentTimeMillis();
+            conn.setAutoCommit(false);
+
+            if (rs.next()) {
+                long i=0;
+                ResultSetMetaData rsmd = rs.getMetaData();
+                /*循环遍历数据,创建执行批量插入的sql语句*/
+                do {
+                    i++;
+                    pstm.setString(1, rs.getString("VBELN"));
+                    pstm.setString(2, rs.getString("POSNR"));
+                    pstm.setString(3, rs.getString("VKORG"));
+                    pstm.setString(4, rs.getString("VKORG_TXT"));
+                    pstm.setString(5, rs.getString("VTWEG"));
+                    pstm.setString(6, rs.getString("KUNNR"));
+                    pstm.setString(7, rs.getString("NAME1"));
+                    pstm.setString(8, rs.getString("ROUTE"));
+                    pstm.setString(9, rs.getString("SPART"));
+                    pstm.setString(10, rs.getString("VKGRP"));
+                    pstm.setString(11, rs.getString("WERKS"));
+                    pstm.setString(12, rs.getString("AUART"));
+                    pstm.setString(13, rs.getString("ERDAT"));
+                    pstm.setString(14, rs.getString("ERDAT_P"));
+                    pstm.setString(15, rs.getString("LFSTA"));
+                    pstm.setString(16, rs.getString("MATNR"));
+                    pstm.setString(17, rs.getString("ZMAKTXX"));
+                    pstm.setString(18, rs.getString("GROES"));
+                    pstm.setString(19, "");
+                    pstm.setString(20, rs.getString("ZCMFRE"));
+                    pstm.setString(21, rs.getString("ZCMGST"));
+                    pstm.setString(22, rs.getString("ABGRU"));
+                    pstm.setBigDecimal(23, rs.getBigDecimal("ZZMENG"));
+                    pstm.setBigDecimal(24, rs.getBigDecimal("ZZMENG2"));
+                    pstm.setBigDecimal(25, rs.getBigDecimal("ZNETWR"));
+                    pstm.setBigDecimal(26, rs.getBigDecimal("ZRFMNG"));
+                    pstm.setBigDecimal(27, rs.getBigDecimal("ZRFMNG2"));
+                    pstm.setBigDecimal(28, rs.getBigDecimal("ZNETWR1"));
+                    pstm.setString(29, rs.getString("VSBED"));
+                    pstm.setString(30, rs.getString("VSBED_TXT"));
+                    pstm.addBatch();
+                    if (i%10000==0){
+                        pstm.executeBatch();
+                    }
+                } while (rs.next());
+            } else {
+                log.info("SalesOrder查询数据为空");
+            }
+            pstm.executeBatch();
+            conn.commit();
+            Long endTime = System.currentTimeMillis();
+            log.info("SalesOrder插入用时:" + (endTime - startTime)+"毫秒");
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException(e);
+        }finally{
+            if(pstm1!=null){
+                try {
+                    pstm1.close();
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e);
+                }
+            }
+            if(pstm!=null){
+                try {
+                    pstm.close();
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e);
+                }
+            }
+            if(conn!=null){
+                try {
+                    conn.close();
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e);
+                }
+            }
+        }
+    }
+
+    private int createSalesOrderTxt(ResultSet result) throws Exception {
+        File file = null;
+        FileWriter fw = null;
+        Connection conn = null;
+        PreparedStatement pstm =null;
+        int j =0;
+        try {
+            long i =0;
+
+            //创建IO需求的条件,并声明输出路径
+            file = new File((Global.getTemdataPath()+"salesOrder/"));
+            log.info("SalesOrder数据缓存路径:" + Global.getTemdataPath()+"salesOrder/");
+            if(!file.exists()){
+                file.mkdir();
+            }
+
+            file = new File(Global.getTemdataPath()+"salesOrder/"+j+".txt");
+//            file = new File("C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\testIO"+j+".txt");
+            if(!file.exists()){
+                file.createNewFile();
+            }else {
+                //取得这个目录下的所有子文件对象
+                File[] files = new File(Global.getTemdataPath()+"salesOrder/").listFiles();
+                //遍历该目录下的文件对象
+                /*for (int y = 0; y < files.length; y++) {
+                    if (files[y].isFile()){//删除子文件
+                        files[y].delete();
+                    }
+                }*/
+                for (File f: files){
+                    f.delete();
+                }
+                file.delete();
+                file.createNewFile();
+            }
+            fw = new FileWriter(file);
+            Long startTime = System.currentTimeMillis();
+            while (result.next()){
+
+                fw.write(
+                        result.getString("VBELN")
+                                +"?"+ result.getString("POSNR")
+                                +"?"+ result.getString("VKORG")
+                                +"?"+ result.getString("VKORG_TXT")
+                                +"?"+ result.getString("VTWEG")
+                                +"?"+ result.getString("KUNNR")
+                                +"?"+ result.getString("NAME1")
+                                +"?"+ result.getString("ROUTE")
+                                +"?"+ result.getString("SPART")
+                                +"?"+ result.getString("VKGRP")
+                                +"?"+ result.getString("WERKS")
+                                +"?"+ result.getString("AUART")
+                                +"?"+ result.getString("ERDAT")
+                                +"?"+ result.getString("ERDAT_P")
+                                +"?"+ result.getString("LFSTA")
+                                +"?"+ result.getString("MATNR")
+                                +"?"+ result.getString("ZMAKTXX")
+                                +"?"+ result.getString("GROES")
+                                +"?"+ result.getString("TRAGR")
+                                +"?"+ result.getString("ZCMFRE")
+                                +"?"+ result.getString("ZCMGST")
+                                +"?"+ result.getString("ABGRU")
+                                +"?"+ checkgetBigDecimal(result.getBigDecimal("ZZMENG"))
+                                +"?"+ checkgetBigDecimal(result.getBigDecimal("ZZMENG2"))
+                                +"?"+ checkgetBigDecimal(result.getBigDecimal("ZNETWR"))
+                                +"?"+ checkgetBigDecimal(result.getBigDecimal("ZRFMNG"))
+                                +"?"+ checkgetBigDecimal(result.getBigDecimal("ZRFMNG2"))
+                                +"?"+ checkgetBigDecimal(result.getBigDecimal("ZNETWR1"))
+                                +"?"+ result.getString("VSBED")
+                                +"?"+ result.getString("VSBED_TXT")
+                                + "\r\n");
+
+
+                fw.flush();
+                i++;
+                if (i%50000==0){
+                    j++;
+                    //创建IO需求的条件,并声明输出路径
+                    file = new File(Global.getTemdataPath()+"salesOrder/"+j+".txt");
+                    if(!file.exists()){
+                        file.createNewFile();
+                    }else {
+                        file.delete();
+                        file.createNewFile();
+                    }
+                    fw = new FileWriter(file);
+
+                }
+            }
+            Long endTime = System.currentTimeMillis();
+            log.info("生成salesOrder-TXT用时:" + (endTime - startTime) + "毫秒");
+
+            conn = getMysqlConnection();
+            //测试表
+//            String sql = "TRUNCATE TABLE sap_hana_sales_order";
+            //生产表
+            String sql = "TRUNCATE TABLE meta_hana_sales_order";
+            pstm = conn.prepareStatement(sql);
+            pstm.execute();
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            fw.close();
+            if(pstm!=null){
+                try {
+                    pstm.close();
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e);
+                }
+            }
+            if(conn!=null){
+                try {
+                    conn.close();
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e);
+                }
+            }
+        }
+        return j;
+    }
+
+    public void hanaDeliverOrderSync() throws Exception {
+        Connection con = this.getHanaConnection();
+        PreparedStatement pstmt = con.prepareStatement("SELECT\n" +
+                "\tA.VBELN,\n" +
+                "\tA.POSNR,\n" +
+                "\tB.VGBEL,\n" +
+                "\tB.VGPOS,\n" +
+                "\tB.VKORG,\n" +
+                "\tB.VKORG_TXT,\n" +
+                "\tB.VTWEG,\n" +
+                "\tB.KUNAG,\n" +
+                "\tB.KUNAG_TXT,\n" +
+                "\tB.SPART,\n" +
+                "\tB.VKGRP,\n" +
+                "\tB.WERKS,\n" +
+                "\tB.AUART_S,\n" +
+                "\tB.LFART,\n" +
+                "\tB.MATNR,\n" +
+                "\tB.ZMAKTXX,\n" +
+                "\tB.GROES,\n" +
+                "\treplace(replace(ltrim(rtrim(B.ZSTREET)),' ',''),'\"','') ZSTREET,\n" +
+                "\tB.ERDAT_S,\n" +
+                "\tB.ZERDAT2,\n" +
+                "\tB.ERDAT,\n" +
+                "\tB.WADAT_IST,\n" +
+                "\tB. STATUS,\n" +
+                "\tA.ZKWMENG,\n" +
+                "\tA.NTGEW_VBAP,\n" +
+                "\tA.LFIMG,\n" +
+                "\tA.NTGEW,\n" +
+                "\tA.KZWI4,\n" +
+                "\tB.WADAT_IST,\n" +
+                "\tB.BOLNR,\n" +
+                "\tB.ERZET\n" +
+                "FROM\n" +
+                "\t(\n" +
+                "\t\tSELECT\n" +
+                "\t\t\tVBELN,\n" +
+                "\t\t\tMIN(POSNR) AS POSNR,\n" +
+                "\t\t\tSUM(ZKWMENG) AS ZKWMENG,\n" +
+                "\t\t\tSUM(NTGEW_VBAP) AS NTGEW_VBAP,\n" +
+                "\t\t\tSUM(LFIMG) AS LFIMG,\n" +
+                "\t\t\tSUM(NTGEW) AS NTGEW,\n" +
+                "\t\t\tSUM(KZWI4) AS KZWI4\n" +
+                "\t\tFROM\n" +
+                "\t\t\t\"_SYS_BIC\".\"com.delivery/CAL_DELIVERY\" ('PLACEHOLDER' = ('$$IP_ENDDATE$$',\n" +
+                "\t\t\t\t\t'"+DateUtils.dateTime()+"'\n" +
+                "\t\t\t\t),'PLACEHOLDER' = ('$$IP_STATDATE$$',\n" +
+                "\t\t\t\t\t'"+DateUtils.getThreeMonthDate()+"'\n" +
+                "\t\t\t\t)\n" +
+                "\t\t\t)\n" +
+                "\t\tWHERE\n" +
+                "\t\t\tVTWEG = 'D9'\n" +
+                "\t\tAND SPART != '16'\n" +
+                "\t\tAND AUART_S NOT IN (\n" +
+                "\t\t\t'31',\n" +
+                "\t\t\t'32',\n" +
+                "\t\t\t'33',\n" +
+                "\t\t\t'35',\n" +
+                "\t\t\t'36',\n" +
+                "\t\t\t'39'\n" +
+                "\t\t)\n" +
+                "\t\tGROUP BY\n" +
+                "\t\t\tVBELN,\n" +
+                "\t\t\tVGBEL,\n" +
+                "\t\t\tVGPOS\n" +
+                "\t\tORDER BY\n" +
+                "\t\t\tVBELN,\n" +
+                "\t\t\tPOSNR\n" +
+                "\t  ) A\n" +
+                "LEFT JOIN \"_SYS_BIC\".\"com.delivery/CAL_DELIVERY\" ('PLACEHOLDER' = ('$$IP_ENDDATE$$',\n" +
+                "\t\t'"+DateUtils.dateTime()+"'\n" +
+                "\t),'PLACEHOLDER' = ('$$IP_STATDATE$$',\n" +
+                "\t\t'"+DateUtils.getThreeMonthDate()+"'\n" +
+                "\t)\n" +
+                ") B ON A.VBELN = B.VBELN\n" +
+                "AND A.POSNR = B.POSNR\n"+
+                "\t\tORDER BY\n" +
+                "\t\t\tA.VBELN,\n" +
+                "\t\t\tA.POSNR\n" +
+                " ");
+//                " limit 10000");
+
+        Long startTime = System.currentTimeMillis();
+        ResultSet rs = pstmt.executeQuery();
+        Long endTime = System.currentTimeMillis();
+        log.info("DeliverOrder查询用时:" + (endTime - startTime)+"毫秒");
+//        this.insertDeliverOrderResult(rs);
+        this.createDeliverOrderTxt(rs);
+        this.runLoadDeliverOrder();
+        this.closeConnection(con, pstmt);
+
+    }
+
+    /*public void hanaDeliverOrderSync() throws Exception {
+        Connection con = this.getHanaConnection();
+        PreparedStatement pstmt = con.prepareStatement("SELECT\t\n" +
+                "\tVBELN,\t\n" +
+                "\tPOSNR,\t\n" +
+                "\tVGBEL,\t\n" +
+                "\tVGPOS,\t\n" +
+                "\tVKORG,\t\n" +
+                "\tVKORG_TXT,\t\n" +
+                "\tVTWEG,\t\n" +
+                "\tKUNAG,\t\n" +
+                "\tKUNAG_TXT,\t\n" +
+                "\tSPART,\t\n" +
+                "\tVKGRP,\t\n" +
+                "\tWERKS,\t\n" +
+                "\tAUART_S,\t\n" +
+                "\tLFART,\t\n" +
+                "\tMATNR,\t\n" +
+                "\tZMAKTXX,\t\n" +
+                "\tGROES,\t\n" +
+                "\tZSTREET,\t\n" +
+                "\tERDAT_S,\t\n" +
+                "\tZERDAT2,\t\n" +
+                "\tERDAT,\t\n" +
+                "\tWADAT_IST,\t\n" +
+                "\tSTATUS,\t\n" +
+                "\tZKWMENG,\t\n" +
+                "\tNTGEW_VBAP,\t\n" +
+                "\tLFIMG,\t\n" +
+                "\tVRKME,\t\n" +
+                "\tNTGEW,\t\n" +
+                "\tKZWI4,\t\n" +
+                "\tBOLNR\t\n" +
+                "\tERZET\t\n" +
+                "FROM \"_SYS_BIC\".\"com.delivery/CAL_DELIVERY\"('PLACEHOLDER' = ('$$IP_ENDDATE$$',\t\n" +
+                "\t '"+DateUtils.dateTime()+"'),\n" +
+                "\t 'PLACEHOLDER' = ('$$IP_STATDATE$$',\n" +
+                "\t '"+DateUtils.getThreeMonthDate()+"')) \n" +
+                "\t where VTWEG IN ('D9','Y9') AND VKORG != '4000'" +
+                " ");
+
+        Long startTime = System.currentTimeMillis();
+        ResultSet rs = pstmt.executeQuery();
+        Long endTime = System.currentTimeMillis();
+        log.info("DeliverOrder查询用时:" + (endTime - startTime)+"毫秒");
+//        this.insertDeliverOrderResult(rs);
+        this.createDeliverOrderTxt(rs);
+        this.runLoadDeliverOrder();
+        this.closeConnection(con, pstmt);
+
+    }*/
+
+    private int createDeliverOrderTxt(ResultSet result) throws Exception {
+        File file = null;
+        FileWriter fw = null;
+        Connection conn = null;
+        PreparedStatement pstm =null;
+        int j =0;
+        try {
+            long i =0;
+
+            //创建IO需求的条件,并声明输出路径
+            file = new File((Global.getTemdataPath()+"deliverOrder/"));
+            log.info("deliverOrder数据缓存路径:" + Global.getTemdataPath()+"deliverOrder/");
+            if(!file.exists()){
+                file.mkdir();
+            }
+
+            file = new File(Global.getTemdataPath()+"deliverOrder/"+j+".txt");
+//            file = new File("C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\testIO"+j+".txt");
+            if(!file.exists()){
+                file.createNewFile();
+            }else {
+                //取得这个目录下的所有子文件对象
+                File[] files = new File(Global.getTemdataPath()+"deliverOrder/").listFiles();
+                //遍历该目录下的文件对象
+                for (File f: files){
+                    f.delete();
+                }
+                file.delete();
+                file.createNewFile();
+            }
+            fw = new FileWriter(file);
+            Long startTime = System.currentTimeMillis();
+            while (result.next()){
+
+                fw.write(
+                result.getString("VBELN")
+                +"?"+result.getString("POSNR")
+                +"?"+result.getString("VGBEL")
+                +"?"+result.getString("VGPOS")
+                +"?"+result.getString("VKORG")
+                +"?"+result.getString("VKORG_TXT")
+                +"?"+result.getString("VTWEG")
+                +"?"+result.getString("KUNAG")
+                +"?"+result.getString("KUNAG_TXT")
+                +"?"+result.getString("SPART")
+                +"?"+result.getString("VKGRP")
+                +"?"+result.getString("WERKS")
+                +"?"+result.getString("AUART_S")
+                +"?"+result.getString("LFART")
+                +"?"+result.getString("MATNR")
+                +"?"+result.getString("ZMAKTXX")
+                +"?"+result.getString("GROES")
+                +"?"+""
+                +"?"+""
+                +"?"+result.getString("ZSTREET")
+                +"?"+result.getString("ERDAT_S")
+                +"?"+result.getString("ZERDAT2")
+                +"?"+result.getString("ERDAT")
+                +"?"+result.getString("WADAT_IST")
+                +"?"+""
+                +"?"+""
+                +"?"+""
+                +"?"+result.getString("STATUS")
+                +"?"+result.getBigDecimal("ZKWMENG")
+                +"?"+result.getBigDecimal("NTGEW_VBAP")
+                +"?"+result.getBigDecimal("LFIMG")
+                +"?"+result.getBigDecimal("NTGEW")
+                +"?"+result.getBigDecimal("KZWI4")
+                +"?"+result.getString("WADAT_IST")
+                +"?"+result.getString("BOLNR")
+                +"?"+result.getString("ERZET")
+                + "\r\n");
+
+                fw.flush();
+                i++;
+                if (i%50000==0){
+                    j++;
+                    //创建IO需求的条件,并声明输出路径
+                    file = new File(Global.getTemdataPath()+"deliverOrder/"+j+".txt");
+                    if(!file.exists()){
+                        file.createNewFile();
+                    }else {
+                        file.delete();
+                        file.createNewFile();
+                    }
+                    fw = new FileWriter(file);
+
+                }
+            }
+            Long endTime = System.currentTimeMillis();
+            log.info("生成deliverOrder-TXT用时:" + (endTime - startTime) + "毫秒");
+
+            conn = getMysqlConnection();
+            //测试表
+//            String sql = "TRUNCATE TABLE sap_hana_deliver_order";
+            //生产表
+            String sql = "TRUNCATE TABLE meta_hana_deliver_order";
+            pstm = conn.prepareStatement(sql);
+            pstm.execute();
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            fw.close();
+            if(pstm!=null){
+                try {
+                    pstm.close();
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e);
+                }
+            }
+            if(conn!=null){
+                try {
+                    conn.close();
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e);
+                }
+            }
+        }
+        return j;
+    }
+
+    /*批量插入*/
+    private void insertDeliverOrderResult(ResultSet rs) throws Exception {
+        Connection conn = null;
+        PreparedStatement pstm =null;
+        PreparedStatement pstm1 =null;
+        try {
+            conn = getMysqlConnection();
+            String sql1 = "TRUNCATE TABLE sap_hana_deliver_order";
+            String sql = "INSERT INTO sap_hana_deliver_order values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
+            pstm1 = conn.prepareStatement(sql1);
+            pstm1.execute();
+            pstm = conn.prepareStatement(sql);
+            Long startTime = System.currentTimeMillis();
+            conn.setAutoCommit(false);
+
+            if (rs.next()) {
+                long i =0;
+                ResultSetMetaData rsmd = rs.getMetaData();
+                int colNum = rsmd.getColumnCount();
+                /*循环遍历数据,创建执行批量插入的sql语句*/
+                do {
+                    pstm.setString(1, rs.getString("VBELN"));
+                    pstm.setString(2, rs.getString("POSNR"));
+                    pstm.setString(3, rs.getString("VGBEL"));
+                    pstm.setString(4, rs.getString("VGPOS"));
+                    pstm.setString(5, rs.getString("VKORG"));
+                    pstm.setString(6, rs.getString("VKORG_TXT"));
+                    pstm.setString(7, rs.getString("VTWEG"));
+                    pstm.setString(8, rs.getString("KUNAG"));
+                    pstm.setString(9, rs.getString("KUNAG_TXT"));
+                    pstm.setString(10, rs.getString("SPART"));
+                    pstm.setString(11, rs.getString("VKGRP"));
+                    pstm.setString(12, rs.getString("WERKS"));
+                    pstm.setString(13, rs.getString("AUART_S"));
+                    pstm.setString(14, rs.getString("LFART"));
+                    pstm.setString(15, rs.getString("MATNR"));
+                    pstm.setString(16, rs.getString("ZMAKTXX"));
+                    pstm.setString(17, rs.getString("GROES"));
+                    pstm.setString(18, "");
+                    pstm.setString(19, "");
+                    pstm.setString(20, rs.getString("ZSTREET"));
+                    pstm.setString(21, rs.getString("ERDAT_S"));
+                    pstm.setString(22, rs.getString("ZERDAT2"));
+                    pstm.setString(23, rs.getString("ERDAT"));
+                    pstm.setString(24, rs.getString("WADAT_IST"));
+                    pstm.setString(25, "");
+                    pstm.setString(26, "");
+                    pstm.setString(27, "");
+                    pstm.setString(28, rs.getString("STATUS"));
+                    pstm.setBigDecimal(29, rs.getBigDecimal("ZKWMENG"));
+                    pstm.setBigDecimal(30, rs.getBigDecimal("NTGEW_VBAP"));
+                    pstm.setBigDecimal(31, rs.getBigDecimal("LFIMG"));
+                    pstm.setBigDecimal(32, rs.getBigDecimal("NTGEW"));
+                    pstm.setBigDecimal(33, rs.getBigDecimal("KZWI4"));
+                    pstm.setString(34, "");
+                    pstm.addBatch();
+                    if (i%10000==0){
+                        pstm.executeBatch();
+                    }
+                } while (rs.next());
+            } else {
+                log.info("DeliverOrder查询数据为空");
+            }
+            pstm.executeBatch();
+            conn.commit();
+            Long endTime = System.currentTimeMillis();
+            log.info("DeliverOrder插入用时:" + (endTime - startTime)+"毫秒");
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException(e);
+        }finally{
+            if(pstm1!=null){
+                try {
+                    pstm1.close();
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e);
+                }
+            }
+            if(pstm!=null){
+                try {
+                    pstm.close();
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e);
+                }
+            }
+            if(conn!=null){
+                try {
+                    conn.close();
+                } catch (SQLException e) {
+                    e.printStackTrace();
+                    throw new RuntimeException(e);
+                }
+            }
+        }
+    }
+
+
+
+    public int bulkLoadFromInputStream(String loadDataSql,
+                                       InputStream dataStream) throws Exception {
+        if(dataStream==null){
+            log.info("InputStream is null ,No data is imported");
+            return 0;
+        }
+        Connection conn = null;
+        conn = this.getMysqlConnection();
+        PreparedStatement statement = conn.prepareStatement(loadDataSql);
+
+        int result = 0;
+
+        if (statement.isWrapperFor(com.mysql.jdbc.Statement.class)) {
+
+            com.mysql.jdbc.PreparedStatement mysqlStatement = statement
+                    .unwrap(com.mysql.jdbc.PreparedStatement.class);
+
+            mysqlStatement.setLocalInfileInputStream(dataStream);
+            result = mysqlStatement.executeUpdate();
+        }
+        return result;
+    }
+
+    public void runLoadSalesOrder() throws Exception{
+        //测试表
+//        String testSql = "LOAD DATA LOCAL INFILE 'testIO.txt' into table sap_hana_sales_order fields terminated by '?' lines terminated by '\\n'";
+        //生产表
+        String testSql = "LOAD DATA LOCAL INFILE 'testIO.txt' into table meta_hana_sales_order fields terminated by '?' lines terminated by '\\n'";
+        try {
+            long beginTime=System.currentTimeMillis();
+            int rows=this.bulkLoadFromInputStream(testSql, mergeGetStream(new File((Global.getTemdataPath()+"salesOrder/"))));
+            long endTime=System.currentTimeMillis();
+            log.info("importing salesOrder := "+rows+" rows data into mysql and cost "+(endTime-beginTime)+" ms!");
+            String result = HttpUtils.sendGet(orderGetDataHook);
+            log.info("清空salesOrder缓存:"+result);
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void runLoadDeliverOrder() throws Exception{
+        //测试表
+//        String testSql = "LOAD DATA LOCAL INFILE 'testIO.txt' into table sap_hana_deliver_order fields terminated by '?' lines terminated by '\\n'";
+        //生产表
+        String testSql = "LOAD DATA LOCAL INFILE 'testIO.txt' into table meta_hana_deliver_order fields terminated by '?' lines terminated by '\\n'";
+        try {
+            long beginTime=System.currentTimeMillis();
+            int rows=this.bulkLoadFromInputStream(testSql, mergeGetStream(new File((Global.getTemdataPath()+"deliverOrder/"))));
+            long endTime=System.currentTimeMillis();
+            log.info("importing deliverOrder := "+rows+" rows data into mysql and cost "+(endTime-beginTime)+" ms!");
+            String result = HttpUtils.sendGet(deliverGetDataHook);
+            log.info("清空deliverOrder缓存:"+result);
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static InputStream mergeGetStream(File sourceFile) throws FileNotFoundException {
+        String[] fileList = sourceFile.list();
+        List<FileInputStream> fileInputStreams = new ArrayList<>();
+        if (fileList != null) {
+            for (String fileName : fileList) {
+                File file = new File(sourceFile.getPath() + "/" + fileName);
+                fileInputStreams.add(new FileInputStream(file));
+            }
+        }
+        // 通过流工具类,获取一个枚举对象
+        Enumeration<FileInputStream> en = Collections.enumeration(fileInputStreams);
+        // 源
+        SequenceInputStream sis = new SequenceInputStream(en);
+        return sis;
+    }
+
+    private Connection getHanaConnection() throws Exception {
+        return getConnection(hanaDriver,hanaUrl,hanaUser,hanaPwd);
+    }
+    private Connection getMysqlConnection() throws Exception {
+        return getConnection(mysqlDriver,mysqlUrl,mysqlUser,mysqlPwd);
+    }
+    private Connection getConnection(String driver, String url, String user, String password) throws Exception {
+        Class.forName(driver);
+
+        return DriverManager.getConnection(url, user, password);
+
+    }
+
+    private BigDecimal checkgetBigDecimal(BigDecimal bg){
+        if (bg==null){
+            return new BigDecimal("0");
+        }else{
+            return bg;
+        }
+    }
+
+    private void closeConnection(Connection con, Statement stmt)
+
+            throws Exception {
+        if (stmt != null) {
+            stmt.close();
+
+        }
+
+        if (con != null) {
+            con.close();
+
+        }
+
+    }
+}

+ 11 - 1
suishenbang-system/pom.xml

@@ -18,11 +18,21 @@
     <dependencies>
     
     	 <!-- Mysql驱动包 -->
+        <!--<dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>-->
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.47</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.sap.cloud.db.jdbc</groupId>
+            <artifactId>ngdbc</artifactId>
+            <version>2.4.64</version>
         </dependency>
-    
         <!-- 通用工具-->
         <dependency>
             <groupId>com.dgtly</groupId>