Przeglądaj źródła

【data文件解析】功能修复

zhouy 2 tygodni temu
rodzic
commit
9e448907a8

+ 14 - 11
src/main/java/com/uas/eis/serviceImpl/FileParseServiceImpl.java

@@ -29,7 +29,6 @@ public class FileParseServiceImpl implements FileParseService {
     @Override
     @Async("taskExecutor")
     public void EDCDataDeal(DataChipTestLog dataChipTestLog, CountDownLatch countDownLatch) {
-        //可以
         String TableName = "DATA$" + dataChipTestLog.getLot_id();
         try {
             this.logger.info(new StringBuilder().append(dataChipTestLog.getWafer_id()).append("Data文件解析开始").toString());
@@ -41,23 +40,17 @@ public class FileParseServiceImpl implements FileParseService {
                 Workbook book = WorkbookFactory.create(is);
                 Sheet st = book.getSheetAt(0);
                 int labelIndex = 13;
-                int mainBeginRow = 14;
-                int dataStart = 24;
+                int dataStart = 23;
                 Row labelRow = st.getRow(labelIndex);
                 List items = new ArrayList();
-                System.out.println(labelRow.getPhysicalNumberOfCells());
                 for (int i = 0; i < labelRow.getPhysicalNumberOfCells(); i++) {
                     items.add(labelRow.getCell(i)!=null?labelRow.getCell(i).getStringCellValue(): "");
                 }
-                System.out.println(items.size());
-                System.out.println(labelRow.getCell(3));
-                StringBuffer mainBuffer = new StringBuffer();
                 List itemCols = new ArrayList();
                 for (int j = 0; j < items.size(); j++) {
                     itemCols.add(new StringBuilder().append("ITEM").append(j + 1).toString());
                 }
                 List sqls = new ArrayList();
-                //sqls.add(new StringBuilder().append("BEGIN ").append(mainBuffer.toString()).append("  END;").toString());
                 sqls.add(new StringBuilder().append("DELETE FROM ").append(TableName).append("@SHENAI_EDCDATA  WHERE WAFER_ID='").append(dataChipTestLog.getWafer_id()).append("'").toString());
                 int allRow = st.getLastRowNum() - (dataStart - 1);
                 int a = allRow / 3000;
@@ -72,9 +65,14 @@ public class FileParseServiceImpl implements FileParseService {
                         detailBuffer.setLength(0);
                         for (int k = i * 3000; k < (i + 1) * 3000; k++) {
                             detailBuffer.append(new StringBuilder().append("INSERT INTO ").append(TableName).append("@SHENAI_EDCDATA (WAFER_ID,DETNO_,DATATYPE_,FLAG_,").append(String.join(",", new CharSequence[]{dynamicCols})).append(") VALUES ").append("('")
-                                    .append(dataChipTestLog.getWafer_id()).append("',").append(k + 1).append(",").append(1).append(",").append(1).toString());
+                                    .append(dataChipTestLog.getWafer_id()).append("',").append(k).append(",").append((k==0?0:1)).append(",").toString());
                             ValueSql = "";
                             dataRow = st.getRow(k + dataStart);
+                            if(dataRow.getCell(0).toString().startsWith("F")){
+                                detailBuffer.append("1").toString();
+                            }else {
+                                detailBuffer.append("0").toString();
+                            }
                             for (int m = 0; m < items.size(); m++) {
                                 cellValue = dataRow.getCell(m).getStringCellValue();
                                 ValueSql = new StringBuilder().append(ValueSql).append(cellValue != null ? new StringBuilder().append("'").append(cellValue.trim()).append("'").toString() : "''").toString();
@@ -91,11 +89,16 @@ public class FileParseServiceImpl implements FileParseService {
                     detailBuffer.setLength(0);
                     for (int k = 0; k < b; k++) {
                         detailBuffer.append(new StringBuilder().append("INSERT INTO ").append(TableName).append("@SHENAI_EDCDATA (WAFER_ID,DETNO_,DATATYPE_,FLAG_,").append(String.join(",", new CharSequence[]{dynamicCols})).append(") VALUES ").append("('")
-                               .append(dataChipTestLog.getWafer_id()).append("',").append(a * 3000 + k + 1).append(",").append(1).append(",").append(1).toString());
+                               .append(dataChipTestLog.getWafer_id()).append("',").append(a * 3000 + k).append(",").append((k==0?0:1)).append(","));
                         ValueSql = "";
                         dataRow = st.getRow(a * 3000 + k + dataStart);
+                        if(dataRow.getCell(0).toString().startsWith("F")){
+                            detailBuffer.append("1").toString();
+                        }else {
+                            detailBuffer.append("0").toString();
+                        }
                         for (int m = 0; m < items.size(); m++) {
-                            cellValue = dataRow.getCell(m ).getStringCellValue();
+                            cellValue = dataRow.getCell(m).getStringCellValue();
                             ValueSql = new StringBuilder().append(ValueSql).append(cellValue != null ? new StringBuilder().append("'").append(cellValue.trim()).append("'").toString() : "''").toString();
                             if (m < items.size() - 1) {
                                 ValueSql = new StringBuilder().append(ValueSql).append(",").toString();

+ 1 - 1
src/main/java/com/uas/eis/task/FileParseTask.java

@@ -34,7 +34,7 @@ public class FileParseTask {
         //wafer_id='BF241002603#01' AND
         List<DataChipTestLog> dataChipTestLogs = baseDao.getJdbcTemplate().query("select wafer_id,lot_id,status,data_path,counter_path from (select wafer_id,lot_id,status,data_path,counter_path from " +
                         " DATACENTER$MESFILE WHERE DEALSTATE_=0 ORDER BY DBID_ ASC ) where " +
-                " rownum<=100", new BeanPropertyRowMapper<>(DataChipTestLog.class));
+                " rownum<=10", new BeanPropertyRowMapper<>(DataChipTestLog.class));
         List<String> distinctLotIds = dataChipTestLogs.stream().map(DataChipTestLog::getLot_id).distinct()
                 .collect(Collectors.toList());
         SpObserver.putSp("datacenter");

+ 0 - 3
src/main/java/com/uas/eis/utils/FTPUtil.java

@@ -10,14 +10,12 @@ import org.slf4j.LoggerFactory;
 import java.io.*;
 import java.util.ArrayList;
 import java.util.List;
-
 /**
  * FTP工具类 - 实现文件流的读取
  */
 public class FTPUtil {
 
     private static final Logger logger = LoggerFactory.getLogger(FTPUtil.class);
-
     private static final String DEFAULT_CHARSET = "UTF-8";
     private static final int DEFAULT_TIMEOUT = 30000;
     private static final int DEFAULT_BUFFER_SIZE = 1024 * 1024; // 1MB
@@ -30,7 +28,6 @@ public class FTPUtil {
         try {
             ftpClient.setConnectTimeout(DEFAULT_TIMEOUT);
             ftpClient.connect(IP, 21);
-
             int reply = ftpClient.getReplyCode();
             if (!FTPReply.isPositiveCompletion(reply)) {
                 logger.error("FTP服务器拒绝连接,响应码: {}", reply);