|
|
@@ -46,54 +46,74 @@ public class DataDealServiceImpl implements DataDealService {
|
|
|
String TableName = "RECORD$"+new SimpleDateFormat("yyMMdd").format(testdate);
|
|
|
//打开文件流
|
|
|
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);
|
|
|
- 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 " +
|
|
|
- "('"+dataChip.getChipcode_()+"',"+(k+1));
|
|
|
+ "('"+dataChip.getChipcode_()+"',"+(a*3000+k+1));
|
|
|
ValueSql = "";
|
|
|
- dataRow = st.getRow(k+24);
|
|
|
+ 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()+"'" : "''";
|
|
|
@@ -103,36 +123,22 @@ public class DataDealServiceImpl implements DataDealService {
|
|
|
}
|
|
|
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) {
|
|
|
baseDao.execute("UPDATE DATACENTER$CHIP SET READSTATUS_=-99 WHERE ID_="+dataChip.getId_());
|
|
|
e.printStackTrace();
|