Browse Source

数据中心文件归档处理;文件未转化完成处理

zhouy 5 years ago
parent
commit
8fca789c90
1 changed files with 77 additions and 71 deletions
  1. 77 71
      src/main/java/com/uas/eis/serviceImpl/DataDealServiceImpl.java

+ 77 - 71
src/main/java/com/uas/eis/serviceImpl/DataDealServiceImpl.java

@@ -46,54 +46,74 @@ public class DataDealServiceImpl  implements DataDealService {
             String TableName = "RECORD$"+new SimpleDateFormat("yyMMdd").format(testdate);
             String TableName = "RECORD$"+new SimpleDateFormat("yyMMdd").format(testdate);
             //打开文件流
             //打开文件流
             SmbFile smbFile = SmbUtil.getCurrentFile(FilePath);
             SmbFile smbFile = SmbUtil.getCurrentFile(FilePath);
-            InputStream is = new BufferedInputStream(new SmbFileInputStream(smbFile));
-            Workbook book = new HSSFWorkbook(is);
-            Sheet st=book.getSheet("Data");
-            Row labelRow = st.getRow(13);
-            List<String> items = new ArrayList<>();
-            for(int i=2 ; i <=labelRow.getPhysicalNumberOfCells(); i++){
-                items.add(labelRow.getCell(i).getStringCellValue().replace((i-1)+" ","").trim());
-            }
-            //关键信息解析
-            StringBuffer mainBuffer = new StringBuffer();
-            int mainBeginRow = 14;
-            List<String> itemCols = new ArrayList<>();
-            for(int j = 0 ; j < items.size(); j++ ){
-                mainBuffer.append("INSERT INTO DATACENTER$CHIP_DATAMAIN(CHIPCODE_,DATE_,ITEM_NAME,DETNO,BIAS1,BIAS2,BIAS3,MINLIMIT,MAXLIMIT,AVG_,STDEV,MIN_,MAX_) VALUES (");
-                mainBuffer.append("'"+dataChip.getChipcode_()+"',SYSDATE,'"+items.get(j)+"',"+(j+1)+",");
-                mainBuffer.append("'"+st.getRow(mainBeginRow).getCell(j+2).getStringCellValue().trim()+"',");
-                mainBuffer.append("'"+st.getRow(mainBeginRow+1).getCell(j+2).getStringCellValue().trim()+"',");
-                mainBuffer.append("'"+st.getRow(mainBeginRow+2).getCell(j+2).getStringCellValue().trim()+"',");
-                mainBuffer.append("'"+st.getRow(mainBeginRow+3).getCell(j+2).getStringCellValue().trim()+"',");
-                mainBuffer.append("'"+st.getRow(mainBeginRow+4).getCell(j+2).getStringCellValue().trim()+"',");
-                mainBuffer.append("'"+st.getRow(mainBeginRow+5).getCell(j+2).getStringCellValue().trim()+"',");
-                mainBuffer.append("'"+st.getRow(mainBeginRow+6).getCell(j+2).getStringCellValue().trim()+"',");
-                mainBuffer.append("'"+st.getRow(mainBeginRow+7).getCell(j+2).getStringCellValue().trim()+"',");
-                mainBuffer.append("'"+st.getRow(mainBeginRow+8).getCell(j+2).getStringCellValue().trim()+"'); ");
-                itemCols.add("ITEM"+(j+1));
-            }
-            List<String> sqls =new ArrayList<String>();
-            sqls.add("DELETE FROM DATACENTER$CHIP_DATAMAIN WHERE CHIPCODE_='"+dataChip.getChipcode_()+"'");
-            sqls.add("BEGIN "+mainBuffer.toString()+"  END;");
-            sqls.add("DELETE FROM "+TableName+"@SHENAI_EDCDATA  WHERE CHIPCODE='"+dataChip.getChipcode_()+"'");
+            if(smbFile.exists()){
+                InputStream is = new BufferedInputStream(new SmbFileInputStream(smbFile));
+                Workbook book = new HSSFWorkbook(is);
+                Sheet st=book.getSheet("Data");
+                Row labelRow = st.getRow(13);
+                List<String> items = new ArrayList<>();
+                for(int i=2 ; i <=labelRow.getPhysicalNumberOfCells(); i++){
+                    items.add(labelRow.getCell(i).getStringCellValue().replace((i-1)+" ","").trim());
+                }
+                //关键信息解析
+                StringBuffer mainBuffer = new StringBuffer();
+                int mainBeginRow = 14;
+                List<String> itemCols = new ArrayList<>();
+                for(int j = 0 ; j < items.size(); j++ ){
+                    mainBuffer.append("INSERT INTO DATACENTER$CHIP_DATAMAIN(CHIPCODE_,DATE_,ITEM_NAME,DETNO,BIAS1,BIAS2,BIAS3,MINLIMIT,MAXLIMIT,AVG_,STDEV,MIN_,MAX_) VALUES (");
+                    mainBuffer.append("'"+dataChip.getChipcode_()+"',SYSDATE,'"+items.get(j)+"',"+(j+1)+",");
+                    mainBuffer.append("'"+st.getRow(mainBeginRow).getCell(j+2).getStringCellValue().trim()+"',");
+                    mainBuffer.append("'"+st.getRow(mainBeginRow+1).getCell(j+2).getStringCellValue().trim()+"',");
+                    mainBuffer.append("'"+st.getRow(mainBeginRow+2).getCell(j+2).getStringCellValue().trim()+"',");
+                    mainBuffer.append("'"+st.getRow(mainBeginRow+3).getCell(j+2).getStringCellValue().trim()+"',");
+                    mainBuffer.append("'"+st.getRow(mainBeginRow+4).getCell(j+2).getStringCellValue().trim()+"',");
+                    mainBuffer.append("'"+st.getRow(mainBeginRow+5).getCell(j+2).getStringCellValue().trim()+"',");
+                    mainBuffer.append("'"+st.getRow(mainBeginRow+6).getCell(j+2).getStringCellValue().trim()+"',");
+                    mainBuffer.append("'"+st.getRow(mainBeginRow+7).getCell(j+2).getStringCellValue().trim()+"',");
+                    mainBuffer.append("'"+st.getRow(mainBeginRow+8).getCell(j+2).getStringCellValue().trim()+"'); ");
+                    itemCols.add("ITEM"+(j+1));
+                }
+                List<String> sqls =new ArrayList<String>();
+                sqls.add("DELETE FROM DATACENTER$CHIP_DATAMAIN WHERE CHIPCODE_='"+dataChip.getChipcode_()+"'");
+                sqls.add("BEGIN "+mainBuffer.toString()+"  END;");
+                sqls.add("DELETE FROM "+TableName+"@SHENAI_EDCDATA  WHERE CHIPCODE='"+dataChip.getChipcode_()+"'");
 
 
-            int allRow = st.getLastRowNum()-23;//总行数
-            //分批3000行处理
-            int a = allRow / 3000;
-            int b = allRow % 3000;
-            StringBuffer detailBuffer=new StringBuffer();
-            String dynamicCols = String.join(",",itemCols);
-            String ValueSql = "";
-            String cellValue= "";
-            Row dataRow = null;
-            if(a > 0) {
-                for ( int i = 0 ; i < a ; i++){
+                int allRow = st.getLastRowNum()-23;//总行数
+                //分批3000行处理
+                int a = allRow / 3000;
+                int b = allRow % 3000;
+                StringBuffer detailBuffer=new StringBuffer();
+                String dynamicCols = String.join(",",itemCols);
+                String ValueSql = "";
+                String cellValue= "";
+                Row dataRow = null;
+                if(a > 0) {
+                    for ( int i = 0 ; i < a ; i++){
+                        detailBuffer.setLength(0);
+                        for(int k = i*3000 ; k < (i+1)*3000 ; k++){
+                            detailBuffer.append("INSERT INTO "+TableName+"@SHENAI_EDCDATA (CHIPCODE,DETNO,"+String.join(",",dynamicCols)+") VALUES " +
+                                    "('"+dataChip.getChipcode_()+"',"+(k+1));
+                            ValueSql = "";
+                            dataRow = st.getRow(k+24);
+                            for ( int m = 0 ; m < items.size() ; m++) {
+                                cellValue = dataRow.getCell(m+2).getStringCellValue();
+                                ValueSql += cellValue !=null? "'"+cellValue.trim()+"'" : "''";
+                                if(m < items.size()-1 ) {
+                                    ValueSql += ",";
+                                }
+                            }
+                            detailBuffer.append(","+ValueSql+");");
+                        }
+                        sqls.add(" BEGIN "+detailBuffer.toString()+"  END;");
+                    }
+                }
+                if(b >0 ){
                     detailBuffer.setLength(0);
                     detailBuffer.setLength(0);
-                    for(int k = i*3000 ; k < (i+1)*3000 ; k++){
+                    for(int k = 0 ; k < b ; k++){
                         detailBuffer.append("INSERT INTO "+TableName+"@SHENAI_EDCDATA (CHIPCODE,DETNO,"+String.join(",",dynamicCols)+") VALUES " +
                         detailBuffer.append("INSERT INTO "+TableName+"@SHENAI_EDCDATA (CHIPCODE,DETNO,"+String.join(",",dynamicCols)+") VALUES " +
-                                "('"+dataChip.getChipcode_()+"',"+(k+1));
+                                "('"+dataChip.getChipcode_()+"',"+(a*3000+k+1));
                         ValueSql = "";
                         ValueSql = "";
-                        dataRow = st.getRow(k+24);
+                        dataRow = st.getRow(a*3000+k+24);
                         for ( int m = 0 ; m < items.size() ; m++) {
                         for ( int m = 0 ; m < items.size() ; m++) {
                             cellValue = dataRow.getCell(m+2).getStringCellValue();
                             cellValue = dataRow.getCell(m+2).getStringCellValue();
                             ValueSql += cellValue !=null? "'"+cellValue.trim()+"'" : "''";
                             ValueSql += cellValue !=null? "'"+cellValue.trim()+"'" : "''";
@@ -103,36 +123,22 @@ public class DataDealServiceImpl  implements DataDealService {
                         }
                         }
                         detailBuffer.append(","+ValueSql+");");
                         detailBuffer.append(","+ValueSql+");");
                     }
                     }
-                    sqls.add(" BEGIN "+detailBuffer.toString()+"  END;");
-                }
-            }
-            if(b >0 ){
-                detailBuffer.setLength(0);
-                for(int k = 0 ; k < b ; k++){
-                    detailBuffer.append("INSERT INTO "+TableName+"@SHENAI_EDCDATA (CHIPCODE,DETNO,"+String.join(",",dynamicCols)+") VALUES " +
-                            "('"+dataChip.getChipcode_()+"',"+(a*3000+k+1));
-                    ValueSql = "";
-                    dataRow = st.getRow(a*3000+k+24);
-                    for ( int m = 0 ; m < items.size() ; m++) {
-                        cellValue = dataRow.getCell(m+2).getStringCellValue();
-                        ValueSql += cellValue !=null? "'"+cellValue.trim()+"'" : "''";
-                        if(m < items.size()-1 ) {
-                            ValueSql += ",";
-                        }
-                    }
-                    detailBuffer.append(","+ValueSql+");");
+                    sqls.add("BEGIN "+detailBuffer.toString()+"  END;");
                 }
                 }
-               sqls.add("BEGIN "+detailBuffer.toString()+"  END;");
+                //插入归档
+
+                //更新为失效状态
+                sqls.add("UPDATE CHIPTABLE@SHENAI_EDCDATA SET STATUS_=0  WHERE CHIP_CODE='"+dataChip.getChipcode_()+"'");
+                //插入有效
+                sqls.add("INSERT INTO CHIPTABLE@SHENAI_EDCDATA (CHIP_CODE,TABLE_NAME,STATUS_) VALUES ('"+dataChip.getChipcode_()+"','"+TableName+"',-1)");
+                //更新读写状态
+                sqls.add("UPDATE DATACENTER$CHIP SET READSTATUS_=-1 WHERE ID_="+dataChip.getId_());//更新成功执行
+                baseDao.getJdbcTemplate().batchUpdate(sqls.toArray(new String[sqls.size()]));
+            }else {
+                //文件不存在
+                baseDao.execute("UPDATE DATACENTER$CHIP SET READSTATUS_=-100 WHERE ID_="+dataChip.getId_());
             }
             }
-            //插入归档
 
 
-            //更新为失效状态
-            sqls.add("UPDATE CHIPTABLE@SHENAI_EDCDATA SET STATUS_=0  WHERE CHIP_CODE='"+dataChip.getChipcode_()+"'");
-            //插入有效
-            sqls.add("INSERT INTO CHIPTABLE@SHENAI_EDCDATA (CHIP_CODE,TABLE_NAME,STATUS_) VALUES ('"+dataChip.getChipcode_()+"','"+TableName+"',-1)");
-            //更新读写状态
-            sqls.add("UPDATE DATACENTER$CHIP SET READSTATUS_=-1 WHERE ID_="+dataChip.getId_());//更新成功执行
-            baseDao.getJdbcTemplate().batchUpdate(sqls.toArray(new String[sqls.size()]));
         }catch (Exception e) {
         }catch (Exception e) {
             baseDao.execute("UPDATE DATACENTER$CHIP SET READSTATUS_=-99 WHERE ID_="+dataChip.getId_());
             baseDao.execute("UPDATE DATACENTER$CHIP SET READSTATUS_=-99 WHERE ID_="+dataChip.getId_());
             e.printStackTrace();
             e.printStackTrace();