Bläddra i källkod

Merge branch '自动要货-按公司层级和C类产品2547' of http://git.dgtis.com/qxp/suishenbang-oneportal into prd

njs 6 månader sedan
förälder
incheckning
dd2db368e1

+ 12 - 1
suishenbang-quartz/src/main/java/com/dgtly/quartz/task/RyTask.java

@@ -13,7 +13,7 @@ import org.springframework.stereotype.Component;
 
 /**
  * 定时任务调度测试
- * 
+ *
  * @author dgtly
  */
 @Component("ryTask")
@@ -71,6 +71,17 @@ public class RyTask
         hanaOrderComponent.hanaSalesOrderSync();
     }
 
+    /**
+     * @description: C类产品订单标记
+     * @param: []
+     * @return: void
+     * @author: njs
+     * @date: 2025/5/7 13:22
+     */
+    public void hanaErpOrderSyncByC()throws Exception {
+        hanaOrderComponent.hanaErpOrderSyncByC();
+    }
+
     /*HANA交货单数据定时同步*/
     public void hanaDeliverOrderSync() throws Exception {
         hanaOrderComponent.hanaDeliverOrderSync();

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

@@ -109,6 +109,8 @@ public class HanaOrderComponent {
                 "               T.NTGEW_MARA,\n"+
                 "               T.PSTYV,\n"+
                 "               T.UEPOS, \n"+
+                "               T.MAABC, \n"+
+                "               T.ZCODE8, \n"+
                 "\t replace(replace(T.BSTKD_E,CHAR(10),''),CHAR(13),'') BSTKD_E \n" +
                 "FROM (\n" +
                 "\n" +
@@ -165,6 +167,8 @@ public class HanaOrderComponent {
                 "               A.NTGEW_MARA,"+
                 "               A.PSTYV,"+
                 "               A.UEPOS,"+
+                "               A.MAABC,"+
+                "               A.ZCODE8,"+
                 "                A.BSTKD_E "+
                 "FROM \"_SYS_BIC\".\"com.sd/CAL_SALES\"" +
                 "('PLACEHOLDER' = ('$$IP_ENDDATE$$',\n" +
@@ -191,6 +195,28 @@ public class HanaOrderComponent {
 
     }
 
+    /**
+     * @description: C类产品订单标记
+     * @param: []
+     * @return: void
+     * @author: njs
+     * @date: 2025/5/7 13:24
+     */
+    public void hanaErpOrderSyncByC() throws  Exception {
+        Connection con = this.getHanaConnection();
+        PreparedStatement pstmt = con.prepareStatement("SELECT MAABC,SPRAS,TMABC,MANDT FROM ERP.TMABCT");
+
+        Long startTime = System.currentTimeMillis();
+        ResultSet rs = pstmt.executeQuery();
+        Long endTime = System.currentTimeMillis();
+        log.info("TMABCT查询用时:" + (endTime - startTime)+"毫秒");
+        this.createTmabcTxt(rs);
+        this.runLoadTmabcTxt();
+        this.closeConnection(con, pstmt);
+
+    }
+
+
     /*批量插入*/
     private void insertSalesOrderResult(ResultSet rs) throws Exception {
         Connection conn = null;
@@ -284,6 +310,93 @@ public class HanaOrderComponent {
             }
         }
     }
+
+    //C类
+    private int  createTmabcTxt(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()+"erpOrderByC/"));
+            log.info("erpOrderByC数据缓存路径:" + Global.getTemdataPath()+"erpOrderByC/");
+            if(!file.exists()){
+                file.mkdir();
+            }
+
+            file = new File(Global.getTemdataPath()+"erpOrderByC/"+j+".txt");
+            if(!file.exists()){
+                file.createNewFile();
+            }else {
+                //取得这个目录下的所有子文件对象
+                File[] files = new File(Global.getTemdataPath()+"erpOrderByC/").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("MAABC")
+                                +"$$"+ result.getString("SPRAS")
+                                +"$$"+ result.getString("TMABC")
+                                +"$$"+ result.getString("MANDT")
+                                + "\r\n");
+
+                fw.flush();
+                i++;
+                if (i%50000==0){
+                    j++;
+                    //创建IO需求的条件,并声明输出路径
+                    file = new File(Global.getTemdataPath()+"erpOrderByC/"+j+".txt");
+                    if(!file.exists()){
+                        file.createNewFile();
+                    }else {
+                        file.delete();
+                        file.createNewFile();
+                    }
+                    fw = new FileWriter(file);
+
+                }
+            }
+            Long endTime = System.currentTimeMillis();
+            log.info("生成erpOrderByC-TXT用时:" + (endTime - startTime) + "毫秒");
+
+
+        }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 int createSalesOrderTxt(ResultSet result) throws Exception {
         File file = null;
@@ -375,6 +488,8 @@ public class HanaOrderComponent {
                                 +"$$"+ result.getString("NTGEW_MARA")
                                 +"$$"+ result.getString("PSTYV")
                                 +"$$"+ result.getString("UEPOS")
+                                +"$$"+ result.getString("MAABC")
+                                +"$$"+ result.getString("ZCODE8")
                                 +"$$"+ result.getString("BSTKD_E")
                                 + "\r\n");
 
@@ -1024,6 +1139,49 @@ public class HanaOrderComponent {
         }
         return result;
     }
+
+    //订单C类标识
+    private void runLoadTmabcTxt()throws Exception{
+        //生产表
+        Connection conn = null;
+        PreparedStatement pstm =null;
+        try{
+            conn = getMysqlConnection();
+            String sql = "TRUNCATE TABLE meta_hana_order_maabc";
+            pstm = conn.prepareStatement(sql);
+            pstm.execute();
+            String testSql = "LOAD DATA LOCAL INFILE 'testIO.txt' into table meta_hana_order_maabc fields terminated by '$$' lines terminated by '\\n'";
+            long beginTime=System.currentTimeMillis();
+            int rows=this.bulkLoadFromInputStream(testSql, mergeGetStream(new File((Global.getTemdataPath()+"erpOrderByC/"))));
+            long endTime=System.currentTimeMillis();
+            log.info("importing erpOrderByC := "+rows+" rows data into mysql and cost "+(endTime-beginTime)+" ms!");
+
+        }catch (Exception e){
+            String name ="meta_hana_order_maabc订单C类标识表同步异常";
+            userOrderAuthorService.sendMailHanaWarning(name);
+            e.printStackTrace();
+        }finally {
+            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 void runLoadSalesOrder() throws Exception{
         //生产表