Browse Source

提交修改

19266 1 year ago
parent
commit
f58b77bab0

+ 67 - 54
src/main/java/com/data/datarepo/controller/DataController.java

@@ -18,96 +18,109 @@ import java.util.List;
 @RequestMapping("/data")
 public class DataController {
 
-    DataService dataService=new DataService();
-    DataAllService dataAllService=new DataAllService();
+    DataService dataService = new DataService();
+    DataAllService dataAllService = new DataAllService();
 
-    DataListService dataListService=new DataListService();
-    DataMySQL2OracleService dataMySQL2OracleService=new DataMySQL2OracleService();
+    DataListService dataListService = new DataListService();
+    DataMySQL2OracleService dataMySQL2OracleService = new DataMySQL2OracleService();
+    DataRollBackService dataRollBackService=new DataRollBackService();
 
     @RequestMapping("/list")
     public String dataList(HttpServletRequest request, HttpServletResponse response) throws SQLException {
-        List<DataRepoTable> DataRepoTableList=new ArrayList<DataRepoTable>();
-        String num=request.getParameter("num");
-        if(StringUtils.isNullOrEmpty(num)){
-            DataRepoTableList=dataListService.getDataList();
-            request.setAttribute("DataRepoTableList",DataRepoTableList);
+        List<DataRepoTable> DataRepoTableList = new ArrayList<DataRepoTable>();
+        String num = request.getParameter("num");
+        if (StringUtils.isNullOrEmpty(num)) {
+            DataRepoTableList = dataListService.getDataList();
+            request.setAttribute("DataRepoTableList", DataRepoTableList);
             return "dataList";
-        }else {
-            DataRepoTableList=dataListService.getDataNumList(num);
-            request.setAttribute("DataRepoTableList",DataRepoTableList);
+        } else {
+            DataRepoTableList = dataListService.getDataNumList(num);
+            request.setAttribute("DataRepoTableList", DataRepoTableList);
             return "dataResult";
         }
     }
 
     @RequestMapping("/repoResult")
-    public String datarepoResult(String[] repo_name,HttpServletRequest request, HttpServletResponse response) throws SQLException {
-        DataRepoTable dataRepoTable=new DataRepoTable();
-        List<DataRepoTable> tableList=new ArrayList<DataRepoTable>();
-        String[]  value1 = new String[repo_name.length];
+    public String datarepoResult(String[] repo_name, HttpServletRequest request, HttpServletResponse response) throws SQLException {
+        DataRepoTable dataRepoTable = new DataRepoTable();
+        List<DataRepoTable> tableList = new ArrayList<DataRepoTable>();
+        String[] value1 = new String[repo_name.length];
         String[] value2 = new String[repo_name.length];
-        if(repo_name!=null){
-            for(int i=0;i<repo_name.length;i++){
+        if (repo_name != null) {
+            for (int i = 0; i < repo_name.length; i++) {
                 String temp = repo_name[i];
                 String[] itempsplit = temp.split("-");
-                value1[i]=itempsplit[0];
-                value2[i]=itempsplit[1];
-                dataRepoTable=dataService.testSelectResult(value1[i],value2[i]);
+                value1[i] = itempsplit[0];
+                value2[i] = itempsplit[1];
+                dataRepoTable = dataService.testSelectResult(value1[i], value2[i]);
                 tableList.add(dataRepoTable);
-                System.out.println("表:"+repo_name[i]+"加载完成:100%");
+                System.out.println("表:" + repo_name[i] + "加载完成:100%");
             }
         }
-        request.setAttribute("DataRepoTableList",tableList);
+        request.setAttribute("DataRepoTableList", tableList);
         return "dataRepo";
     }
 
     @RequestMapping("/repo")
-    public String datarepo(String[] repo_name,HttpServletRequest request, HttpServletResponse response) throws Exception {
-        DataRepoTable dataRepoTable=new DataRepoTable();
-        List<DataRepoTable> tableList=new ArrayList<DataRepoTable>();
-        String[]  value1 = new String[repo_name.length];
+    public String datarepo(String[] repo_name, HttpServletRequest request, HttpServletResponse response) {
+
+        DataRepoTable dataRepoTable = new DataRepoTable();
+        List<DataRepoTable> tableList = new ArrayList<DataRepoTable>();
+        String[] value1 = new String[repo_name.length];
         String[] value2 = new String[repo_name.length];
-        String[]  value3 = new String[repo_name.length];
+        String[] value3 = new String[repo_name.length];
         String[] value4 = new String[repo_name.length];
-        if(repo_name!=null){
-            for(int i=0;i<repo_name.length;i++){
-                String temp = repo_name[i];
-                String[] itempsplit = temp.split("-");
-                value1[i]=itempsplit[0];
-                value2[i]=itempsplit[1];
-                value3[i]=itempsplit[2];
-                value4[i]=itempsplit[3];
-                dataRepoTable=dataMySQL2OracleService.startProcess(value1[i],value2[i],value3[i],value4[i]);
+
+        try{
+            if (repo_name != null) {
+                for (int i = 0; i < repo_name.length; i++) {
+                    String temp = repo_name[i];
+                    String[] itempsplit = temp.split("-");
+                    value1[i] = itempsplit[0];
+                    value2[i] = itempsplit[1];
+                    value3[i] = itempsplit[2];
+                    value4[i] = itempsplit[3];
+                    dataRepoTable = dataMySQL2OracleService.startProcess(value1[i], value2[i], value3[i], value4[i]);
 //                dataRepoTable=dataService.testSelect(value1[i],value2[i],value3[i],value4[i]);
-                tableList.add(dataRepoTable);
-                System.out.println("表:"+repo_name[i]+"加载完成:100%");
+                    tableList.add(dataRepoTable);
+                    System.out.println("表:" + repo_name[i] + "加载完成:100%");
+                }
+            }
+            request.setAttribute("DataRepoTableList", tableList);
+        }catch (Exception e){
+            if(tableList != null && !tableList.isEmpty()){
+                for(int i=0;i<tableList.size();i++){
+                    dataRepoTable=tableList.get(i);
+                    dataRollBackService.DataDelete(dataRepoTable.getRepo_name(),dataRepoTable.getUp_num());
+                }
             }
+            e.printStackTrace();
         }
-        request.setAttribute("DataRepoTableList",tableList);
         return "dataRepo";
     }
 
     @RequestMapping("/repoBJ")
-    public String datarepoBJ(String[] repo_name,HttpServletRequest request, HttpServletResponse response) throws SQLException {
-        DataRepoTable dataRepoTable=new DataRepoTable();
-        List<DataRepoTable> tableList=new ArrayList<DataRepoTable>();
-        if(repo_name!=null){
-            for(int i=0;i<repo_name.length;i++){
-                String[]  value1 = new String[repo_name.length];
+    public String datarepoBJ(String[] repo_name, HttpServletRequest request, HttpServletResponse response) throws SQLException {
+        DataRepoTable dataRepoTable = new DataRepoTable();
+        List<DataRepoTable> tableList = new ArrayList<DataRepoTable>();
+        if (repo_name != null) {
+            for (int i = 0; i < repo_name.length; i++) {
+                String[] value1 = new String[repo_name.length];
                 String[] value2 = new String[repo_name.length];
-                String[]  value3 = new String[repo_name.length];
+                String[] value3 = new String[repo_name.length];
                 String[] value4 = new String[repo_name.length];
                 String temp = repo_name[i];
                 String[] itempsplit = temp.split("-");
-                value1[i]=itempsplit[0];
-                value2[i]=itempsplit[1];
-                value3[i]=itempsplit[2];
-                value4[i]=itempsplit[3];
-                dataRepoTable=dataService.testSelectBJ(value1[i],value2[i],value3[i],value4[i]);
+                value1[i] = itempsplit[0];
+                value2[i] = itempsplit[1];
+                value3[i] = itempsplit[2];
+                value4[i] = itempsplit[3];
+                dataRepoTable = dataService.testSelectBJ(value1[i], value2[i], value3[i], value4[i]);
                 tableList.add(dataRepoTable);
-                System.out.println("表:"+value1[i]+"加载完成:100%");
+                System.out.println("表:" + value1[i] + "加载完成:100%");
             }
         }
-        request.setAttribute("DataRepoTableList",tableList);
+        request.setAttribute("DataRepoTableList", tableList);
         return "dataList";
     }
 

+ 92 - 58
src/main/java/com/data/datarepo/services/DataMySQL2OracleService.java

@@ -6,7 +6,9 @@ import com.data.datarepo.utils.DataSourceOra;
 import com.data.datarepo.utils.EquipmentNo;
 import com.data.datarepo.utils.SM4Utils;
 import com.mysql.cj.jdbc.MysqlDataSource;
+import org.apache.commons.lang3.StringUtils;
 
+import javax.sql.rowset.JdbcRowSet;
 import java.sql.*;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
@@ -21,14 +23,15 @@ public class DataMySQL2OracleService extends DataSourceOra {
 //    String jdbc_url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
 //    String jdbc_user = "DATAREP";
 //    String jdbc_password = "sckjadmin";
-    EquipmentNo equipmentNo =new EquipmentNo();
-    DataCenterService dataCenterService=new DataCenterService();
-    DataTypeService dataTypeService=new DataTypeService();
-    DataDeleteService dataDeleteService=new DataDeleteService();
+    EquipmentNo equipmentNo = new EquipmentNo();
+    DataCenterService dataCenterService = new DataCenterService();
+    DataTypeService dataTypeService = new DataTypeService();
+    DataDeleteService dataDeleteService = new DataDeleteService();
 
     public DataRepoTable startProcess(String repo_name, String table_name, String up_num, String table_comment) throws Exception {
         // 创建到两个数据库的连接
 //        Class.forName("com.mysql.cj.jdbc.Driver");
+        DataRepoTable dataRepoTable = new DataRepoTable();
         MysqlDataSource basicDS = DataSource.getInstance().getMySqlDS();
         Connection connSource = basicDS.getConnection();
 //        Connection connSource = DriverManager.getConnection(mysql_jdbc_url);
@@ -36,102 +39,132 @@ public class DataMySQL2OracleService extends DataSourceOra {
 //        Class.forName("oracle.jdbc.driver.OracleDriver");
         Connection connDest = this.getConn();
 
-        // 打开源数据库中相关表
-        StringBuilder sb = new StringBuilder();
-        sb.append("insert into " + repo_name + "_OLD (");
-        Statement stmt= connSource.createStatement();
-        ResultSet rs = stmt.executeQuery("select * from " + table_name);
+
+        Statement stmt = connSource.createStatement();
+        ResultSet rs = null;
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        String state = "";
+
+        rs = stmt.executeQuery("select * from " + table_name);
 
         // 显示共计有多少条记录
         rs.last();
-        System.out.println(table_name + "表共计有:"+ rs.getRow() + "条记录,正在处理......");
+        System.out.println(table_name + "表共计有:" + rs.getRow() + "条记录,正在处理......");
         rs.beforeFirst();
 
         DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         java.util.Date beginTime = new Date();
         String start = df.format(beginTime);
         Long begin = beginTime.getTime();
-        System.out.println("任务开始,开始时间为:"+ start);
+        System.out.println("任务开始,开始时间为:" + start);
 
         // 先计算目标数据库的PreparedStatement的SQL语句
 //        String num="";
-        String num=equipmentNo.getNewEquipmentNo(repo_name,up_num);
-        String state="";
-        String type="";
-        List smList=new ArrayList<>();
-        DataRepoTable dataRepoTable=new DataRepoTable();
+        String num = equipmentNo.getNewEquipmentNo(repo_name, up_num);
+
+        String type = "";
+        List smList = new ArrayList<>();
+
+
         ResultSetMetaData rsmd = rs.getMetaData();
         int numberOfColumns = rsmd.getColumnCount();
-        for(int i=1; i<=numberOfColumns;i++) {
+        StringBuilder sb = new StringBuilder();
+        sb.append("insert into " + repo_name + "_OLD (");
+        for (int i = 1; i <= numberOfColumns - 2; i++) {
             sb.append(rsmd.getColumnName(i) + ",");
-//            type= dataTypeService.selectType(repo_name,rsmd.getColumnName(i));
-//            if("0".equals(type)){
-//                smList.add(i);
-//            }
         }
-        sb.append("UP_NUM,"+"DATA_STATE");
+        sb.append("UP_NUM," + "DATA_STATE");
 //        sb.deleteCharAt(sb.length()-1);
         sb.append(")values(");
-        for(int i=1; i<=numberOfColumns;i++) {
+        for (int i = 1; i <= numberOfColumns - 2; i++) {
             sb.append("?,");
         }
-        sb.append("?,"+"?");
+        sb.append("?," + "?");
 //        sb.deleteCharAt(sb.length()-1);
         sb.append(")");
         System.out.println(sb.toString());
 
-        // 给PreparedStatement赋值,然后更新;如果是大数量的情况,可以考虑Batch处理。因为这里的数据量小,直接单条更新了。
         PreparedStatement pstmt = connDest.prepareStatement(sb.toString());
-        while(rs.next()) {
-            for(int i=1; i<=numberOfColumns;i++) {
+//            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+//            Date date = sdf.parse(str);
+        int k = 0;
+
+        while (rs.next()) {
+            for (int i = 1; i <= numberOfColumns - 2; i++) {
 //                type= dataTypeService.selectType(repo_name,rsmd.getColumnName(i));
-                String value=rs.getString(i);
-                String columnName=rsmd.getColumnName(i);
-                if(columnName.equals("AXCP0005")||columnName.equals("AHDX6129")
-                            ||columnName.equals("AXCP0002")||columnName.equals("AHAP0026")||columnName.equals("AHAP1026")
-                            ||columnName.equals("AXZX0001")||columnName.equals("AHAP0028")||columnName.equals("AHAP0029")
-                            ||columnName.equals("AXZX0010")||columnName.equals("AXZX0011")||columnName.equals("AHAX1326")
-                            ||columnName.equals("AHAX1328")||columnName.equals("AHAX1324")||columnName.equals("AHBX3102")
-                            ||columnName.equals("AHBX3116")||columnName.equals("AHBX3115")||columnName.equals("AXZX0002")
-                            ||columnName.equals("AHDP5010")||columnName.equals("AHDP5011")||columnName.equals("AHDP5020")
-                            ||columnName.equals("AHDP5021")||columnName.equals("AHDP5052")||columnName.equals("AHDP5055")
-                            ||columnName.equals("AHDP5057")||columnName.equals("AHDP5058")||columnName.equals("AHDP5063")
-                            ||columnName.equals("AHDP5330")||columnName.equals("AHDP5098")||columnName.equals("AHDP5099")
-                            ||columnName.equals("AHDP5110")||columnName.equals("AHAX1325") ||columnName.equals("AHAE2327")
-                            ||columnName.equals("AXBE0013")||columnName.equals("AXBE0021")||columnName.equals("AHAE0012")
-                            ||columnName.equals("AXBE0018")||columnName.equals("AHAE5004")||columnName.equals("AHAE5026")
-                            ||columnName.equals("AHAE5027")||columnName.equals("AHAE5029")){
+                String value = rs.getString(i);
+                String columnName = rsmd.getColumnName(i);
+                if (columnName.equals("AXCP0005") || columnName.equals("AHDX6129")
+                        || columnName.equals("AXCP0002") || columnName.equals("AHAP0026") || columnName.equals("AHAP1026")
+                        || columnName.equals("AXZX0001") || columnName.equals("AHAP0028") || columnName.equals("AHAP0029")
+                        || columnName.equals("AXZX0010") || columnName.equals("AXZX0011") || columnName.equals("AHAX1326")
+                        || columnName.equals("AHAX1328") || columnName.equals("AHAX1324") || columnName.equals("AHBX3102")
+                        || columnName.equals("AHBX3116") || columnName.equals("AHBX3115") || columnName.equals("AXZX0002")
+                        || columnName.equals("AHDP5010") || columnName.equals("AHDP5011") || columnName.equals("AHDP5020")
+                        || columnName.equals("AHDP5021") || columnName.equals("AHDP5052") || columnName.equals("AHDP5055")
+                        || columnName.equals("AHDP5057") || columnName.equals("AHDP5058") || columnName.equals("AHDP5063")
+                        || columnName.equals("AHDP5330") || columnName.equals("AHDP5098") || columnName.equals("AHDP5099")
+                        || columnName.equals("AHDP5110") || columnName.equals("AHAX1325") || columnName.equals("AHAE2327")
+                        || columnName.equals("AXBE0013") || columnName.equals("AXBE0021") || columnName.equals("AHAE0012")
+                        || columnName.equals("AXBE0018") || columnName.equals("AHAE5004") || columnName.equals("AHAE5026")
+                        || columnName.equals("AHAE5027") || columnName.equals("AHAE5029")) {
                     SM4Utils sm4 = new SM4Utils();
                     sm4.secretKey = "1234567887654321";
-                    value=sm4.decryptData_ECB(value);
+                    value = sm4.decryptData_ECB(value);
                 }
-                pstmt.setString(i, value);
+
+                if (StringUtils.isEmpty(up_num)) {
+                    k = 1;
+                    state = "I";
+                    pstmt.setString(i, value);
+                } else {
+
+                    Date cdate = sdf.parse(rs.getString("create_date"));
+                    Date udate = sdf.parse(rs.getString("update_date"));
+                    String up_date = up_num.split("_")[2];
+                    Date up_time = sdf.parse(up_date);
+                    long long1 = cdate.getTime();
+                    long long2 = up_time.getTime();
+                    long long3 = udate.getTime();
+                    if (long1 > long2) {
+                        k = 2;
+                        state = "I";
+                        pstmt.setString(i, value);
+                    } else if (long1 < long2 && long3 > long2) {
+                        k = 3;
+                        state = "U";
+                        pstmt.setString(i, value);
+                    }
+                }
+
 //                pstmt.setString(i, rs.getString(i));
             }
-            state= dataCenterService.selectState(rsmd.getColumnName(1),rs.getString(1),repo_name,up_num);
-            pstmt.setObject(numberOfColumns+1,num);
-            pstmt.setObject(numberOfColumns+2,state);
-            System.out.print("-");
-            pstmt.addBatch();
-
+//                state= dataCenterService.selectState(rsmd.getColumnName(1),rs.getString(1),repo_name,up_num);
+            if (k == 1 || k == 2 || k == 3) {
+                pstmt.setObject(numberOfColumns - 1, num);
+                pstmt.setObject(numberOfColumns, state);
+                System.out.print("-");
+                pstmt.addBatch();
+            }
         }
         Date finishTime = new Date();
         Long end = finishTime.getTime();
         long timeLag = end - begin;
-        long day=timeLag/(24*60*60*1000);
-        long hour=(timeLag/(60*60*1000)-day*24);
-        long minute=((timeLag/(60*1000))-day*24*60-hour*60);
-        long s=(timeLag/1000-day*24*60*60-hour*60*60-minute*60);
-        System.out.println("用了 "+day+"天 "+hour+"时 "+minute+"分 "+s+"秒");
-        System.out.println("任务结束,结束时间为:"+ df.format(finishTime));
+        long day = timeLag / (24 * 60 * 60 * 1000);
+        long hour = (timeLag / (60 * 60 * 1000) - day * 24);
+        long minute = ((timeLag / (60 * 1000)) - day * 24 * 60 - hour * 60);
+        long s = (timeLag / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60);
+        System.out.println("用了 " + day + "天 " + hour + "时 " + minute + "分 " + s + "秒");
+        System.out.println("任务结束,结束时间为:" + df.format(finishTime));
 
         pstmt.executeBatch();
-        dataCenterService.updateData(num,repo_name);
+        dataCenterService.updateData(num, repo_name);
         dataDeleteService.DataDelete(repo_name);//清除oracle中数据
         dataRepoTable.setTable_name(table_name);
         dataRepoTable.setTable_comment(table_comment);
         dataRepoTable.setRepo_name(repo_name);
         dataRepoTable.setUp_num(num);
+
         // 关闭各资源
         rs.close();
         stmt.close();
@@ -140,6 +173,7 @@ public class DataMySQL2OracleService extends DataSourceOra {
         connSource.close();
         connDest.close();
 
+
         return dataRepoTable;
     }
 

+ 23 - 0
src/main/java/com/data/datarepo/services/DataRollBackService.java

@@ -0,0 +1,23 @@
+package com.data.datarepo.services;
+
+import com.data.datarepo.utils.DataSourceOra;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+
+public class DataRollBackService extends DataSourceOra {
+
+    public void DataDelete(String repo_name,String up_num) {
+        try {
+
+            Connection conn = this.getConn();
+            String sesql = "delete from " + repo_name+"_OLD where UP_NUM="+up_num;
+            PreparedStatement ps2 = conn.prepareStatement(sesql);
+            ps2.executeUpdate();
+            ps2.close();
+            conn.close();
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        }
+    }
+}