Przeglądaj źródła

超时时间处理,data文件 njdf格式解析处理

zhouy 5 lat temu
rodzic
commit
ede57e5ecd

+ 22 - 14
src/main/java/com/uas/eis/entity/DataChip.java

@@ -1,23 +1,23 @@
 package com.uas.eis.entity;
 package com.uas.eis.entity;
 
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
-
 import java.io.Serializable;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Date;
 
 
-/**
- * @Author: zhouy
- * @Date: 2020/5/26 13:53
- */
-public class DataChip implements Serializable {
+public class DataChip implements Serializable
+{
     private Integer id_;
     private Integer id_;
     private String chipcode_;
     private String chipcode_;
     private String counterpath_;
     private String counterpath_;
     private String datapath_;
     private String datapath_;
-    @JsonFormat(pattern = "yyyy-MM-dd")
+    private String jdfpath_;
+
+    @JsonFormat(pattern="yyyy-MM-dd")
     private Date testdate_;
     private Date testdate_;
-    public Integer getId_() {
-        return id_;
+
+    public Integer getId_()
+    {
+        return this.id_;
     }
     }
 
 
     public void setId_(Integer id_) {
     public void setId_(Integer id_) {
@@ -25,7 +25,7 @@ public class DataChip implements Serializable {
     }
     }
 
 
     public String getChipcode_() {
     public String getChipcode_() {
-        return chipcode_;
+        return this.chipcode_;
     }
     }
 
 
     public void setChipcode_(String chipcode_) {
     public void setChipcode_(String chipcode_) {
@@ -33,7 +33,7 @@ public class DataChip implements Serializable {
     }
     }
 
 
     public String getCounterpath_() {
     public String getCounterpath_() {
-        return counterpath_;
+        return this.counterpath_;
     }
     }
 
 
     public void setCounterpath_(String counterpath_) {
     public void setCounterpath_(String counterpath_) {
@@ -41,18 +41,26 @@ public class DataChip implements Serializable {
     }
     }
 
 
     public String getDatapath_() {
     public String getDatapath_() {
-        return datapath_;
+        return this.datapath_;
     }
     }
 
 
     public void setDatapath_(String datapath_) {
     public void setDatapath_(String datapath_) {
         this.datapath_ = datapath_;
         this.datapath_ = datapath_;
     }
     }
 
 
+    public String getJdfpath_() {
+        return this.jdfpath_;
+    }
+
+    public void setJdfpath_(String jdfpath_) {
+        this.jdfpath_ = jdfpath_;
+    }
+
     public Date getTestdate_() {
     public Date getTestdate_() {
-        return testdate_;
+        return this.testdate_;
     }
     }
 
 
     public void setTestdate_(Date testdate_) {
     public void setTestdate_(Date testdate_) {
         this.testdate_ = testdate_;
         this.testdate_ = testdate_;
     }
     }
-}
+}

+ 108 - 96
src/main/java/com/uas/eis/serviceImpl/DataDealServiceImpl.java

@@ -4,6 +4,14 @@ import com.uas.eis.dao.BaseDao;
 import com.uas.eis.entity.DataChip;
 import com.uas.eis.entity.DataChip;
 import com.uas.eis.service.DataDealService;
 import com.uas.eis.service.DataDealService;
 import com.uas.eis.utils.SmbUtil;
 import com.uas.eis.utils.SmbUtil;
+import com.uas.eis.utils.StringUtil;
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
 import jcifs.smb.SmbFile;
 import jcifs.smb.SmbFile;
 import jcifs.smb.SmbFileInputStream;
 import jcifs.smb.SmbFileInputStream;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -16,141 +24,145 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
-import java.io.BufferedInputStream;
-import java.io.InputStream;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-
-/**
- * @Author: zhouy
- * @Date: 2020/5/22 13:55
- */
 @Service
 @Service
-public class DataDealServiceImpl  implements DataDealService {
-
-    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+public class DataDealServiceImpl implements DataDealService
+{
+    private final Logger logger = LoggerFactory.getLogger(getClass());
 
 
     @Autowired
     @Autowired
     BaseDao baseDao;
     BaseDao baseDao;
 
 
-    @Override
     @Async("taskExecutor")
     @Async("taskExecutor")
+    @Override
     public void EDCDataDeal(DataChip dataChip, CountDownLatch countDownLatch) {
     public void EDCDataDeal(DataChip dataChip, CountDownLatch countDownLatch) {
         try {
         try {
-            logger.info(dataChip.getChipcode_()+"Data文件解析开始");
-            //读取文件EXCEL解析
-            String FilePath=dataChip.getDatapath_();
+            this.logger.info(new StringBuilder().append(dataChip.getChipcode_()).append("Data文件解析开始").toString());
+
+            String FilePath = dataChip.getDatapath_();
             Date testdate = dataChip.getTestdate_();
             Date testdate = dataChip.getTestdate_();
-            String TableName = "RECORD$"+new SimpleDateFormat("yyMMdd").format(testdate);
-            //打开文件流
+            String TableName = new StringBuilder().append("RECORD$").append(new SimpleDateFormat("yyMMdd").format(testdate)).toString();
+
             SmbFile smbFile = SmbUtil.getCurrentFile(FilePath);
             SmbFile smbFile = SmbUtil.getCurrentFile(FilePath);
-            if(smbFile.exists()){
+            if (smbFile.exists()) {
                 InputStream is = new BufferedInputStream(new SmbFileInputStream(smbFile));
                 InputStream is = new BufferedInputStream(new SmbFileInputStream(smbFile));
                 Workbook book = new HSSFWorkbook(is);
                 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());
+                Sheet st = book.getSheetAt(0);
+                int labelIndex = 13;
+                int mainBeginRow = 14;
+                int dataStart = 24;
+                if ((StringUtil.hasText(dataChip.getJdfpath_())) && (dataChip.getJdfpath_().endsWith(".njdf"))) {
+                    labelIndex = 18;
+                    mainBeginRow = 19;
+                    dataStart = 30;
+                }
+                Row labelRow = st.getRow(labelIndex);
+                List items = new ArrayList();
+                for (int i = 2; i <= labelRow.getPhysicalNumberOfCells(); i++) {
+                    items.add(labelRow.getCell(i).getStringCellValue().replace(new StringBuilder().append(i - 1).append(" ").toString(), "").trim());
                 }
                 }
-                //关键信息解析
+
                 StringBuffer mainBuffer = new StringBuffer();
                 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 itemCols = new ArrayList();
+                for (int j = 0; j < items.size(); j++) {
+                    itemCols.add(new StringBuilder().append("ITEM").append(j + 1).toString());
+                    if ((!"SOT-SOT".equals(items.get(j))) || (st.getRow(mainBeginRow).getCell(j + 2) != null))
+                    {
+                        mainBuffer.append("INSERT INTO DATACENTER$CHIP_DATAMAIN(CHIPCODE_,DATE_,ITEM_NAME,DETNO,BIAS1,BIAS2,BIAS3,MINLIMIT,MAXLIMIT,AVG_,STDEV,MIN_,MAX_) VALUES (");
+                        mainBuffer.append(new StringBuilder().append("'").append(dataChip.getChipcode_()).append("',SYSDATE,'").append((String)items.get(j)).append("',").append(j + 1).append(",").toString());
+                        mainBuffer.append(new StringBuilder().append("'").append(st.getRow(mainBeginRow).getCell(j + 2).getStringCellValue().trim()).append("',").toString());
+                        mainBuffer.append(new StringBuilder().append("'").append(st.getRow(mainBeginRow + 1).getCell(j + 2).getStringCellValue().trim()).append("',").toString());
+                        mainBuffer.append(new StringBuilder().append("'").append(st.getRow(mainBeginRow + 2).getCell(j + 2).getStringCellValue().trim()).append("',").toString());
+                        mainBuffer.append(new StringBuilder().append("'").append(st.getRow(mainBeginRow + 3).getCell(j + 2).getStringCellValue().trim()).append("',").toString());
+                        mainBuffer.append(new StringBuilder().append("'").append(st.getRow(mainBeginRow + 4).getCell(j + 2).getStringCellValue().trim()).append("',").toString());
+                        mainBuffer.append(new StringBuilder().append("'").append(st.getRow(mainBeginRow + 5).getCell(j + 2).getStringCellValue().trim()).append("',").toString());
+                        switch (st.getRow(mainBeginRow + 6).getCell(j + 2).getCellType()) {
+                            case 0:
+                                mainBuffer.append(new StringBuilder().append("'").append(st.getRow(mainBeginRow + 6).getCell(j + 2).getNumericCellValue()).append("',").toString());
+                                break;
+                            case 1:
+                                mainBuffer.append(new StringBuilder().append("'").append(st.getRow(mainBeginRow + 6).getCell(j + 2).getStringCellValue().trim()).append("',").toString());
+                        }
+
+                        mainBuffer.append(new StringBuilder().append("'").append(st.getRow(mainBeginRow + 7).getCell(j + 2).getStringCellValue().trim()).append("',").toString());
+                        mainBuffer.append(new StringBuilder().append("'").append(st.getRow(mainBeginRow + 8).getCell(j + 2).getStringCellValue().trim()).append("'); ").toString());
+                    }
                 }
                 }
-                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_()+"'");
+                List sqls = new ArrayList();
+                sqls.add(new StringBuilder().append("DELETE FROM DATACENTER$CHIP_DATAMAIN WHERE CHIPCODE_='").append(dataChip.getChipcode_()).append("'").toString());
+                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 CHIPCODE='").append(dataChip.getChipcode_()).append("'").toString());
+
+                int allRow = st.getLastRowNum() - (dataStart - 1);
 
 
-                int allRow = st.getLastRowNum()-23;//总行数
-                //分批3000行处理
                 int a = allRow / 3000;
                 int a = allRow / 3000;
                 int b = allRow % 3000;
                 int b = allRow % 3000;
-                StringBuffer detailBuffer=new StringBuffer();
-                String dynamicCols = String.join(",",itemCols);
+                StringBuffer detailBuffer = new StringBuffer();
+                String dynamicCols = String.join(",", itemCols);
                 String ValueSql = "";
                 String ValueSql = "";
-                String cellValue= "";
+                String cellValue = "";
                 Row dataRow = null;
                 Row dataRow = null;
-                if(a > 0) {
-                    for ( int i = 0 ; i < a ; i++){
+                if (a > 0) {
+                    for (int i = 0; i < a; i++) {
                         detailBuffer.setLength(0);
                         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));
+                        for (int k = i * 3000; k < (i + 1) * 3000; k++) {
+                            detailBuffer.append(new StringBuilder().append("INSERT INTO ").append(TableName).append("@SHENAI_EDCDATA (CHIPCODE,DETNO,").append(String.join(",", new CharSequence[] { dynamicCols })).append(") VALUES ").append("('")
+                                    .append(dataChip
+                                            .getChipcode_()).append("',").append(k + 1).toString());
                             ValueSql = "";
                             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 += ",";
+                            dataRow = st.getRow(k + dataStart);
+                            for (int m = 0; m < items.size(); m++) {
+                                cellValue = dataRow.getCell(m + 2).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();
                                 }
                                 }
                             }
                             }
-                            detailBuffer.append(","+ValueSql+");");
+                            detailBuffer.append(new StringBuilder().append(",").append(ValueSql).append(");").toString());
                         }
                         }
-                        sqls.add(" BEGIN "+detailBuffer.toString()+"  END;");
+                        sqls.add(new StringBuilder().append(" BEGIN ").append(detailBuffer.toString()).append("  END;").toString());
                     }
                     }
                 }
                 }
-                if(b >0 ){
+                if (b > 0) {
                     detailBuffer.setLength(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));
+                    for (int k = 0; k < b; k++) {
+                        detailBuffer.append(new StringBuilder().append("INSERT INTO ").append(TableName).append("@SHENAI_EDCDATA (CHIPCODE,DETNO,").append(String.join(",", new CharSequence[] { dynamicCols })).append(") VALUES ").append("('")
+                                .append(dataChip
+                                        .getChipcode_()).append("',").append(a * 3000 + k + 1).toString());
                         ValueSql = "";
                         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 += ",";
+                        dataRow = st.getRow(a * 3000 + k + dataStart);
+                        for (int m = 0; m < items.size(); m++) {
+                            cellValue = dataRow.getCell(m + 2).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();
                             }
                             }
                         }
                         }
-                        detailBuffer.append(","+ValueSql+");");
+                        detailBuffer.append(new StringBuilder().append(",").append(ValueSql).append(");").toString());
                     }
                     }
-                    sqls.add("BEGIN "+detailBuffer.toString()+"  END;");
+                    sqls.add(new StringBuilder().append("BEGIN ").append(detailBuffer.toString()).append("  END;").toString());
                 }
                 }
-                //插入归档
 
 
-                //更新为失效状态
-                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_());
-            }
-            logger.info(dataChip.getChipcode_()+"Data文件解析结束");
+                sqls.add(new StringBuilder().append("UPDATE CHIPTABLE@SHENAI_EDCDATA SET STATUS_=0  WHERE CHIP_CODE='").append(dataChip.getChipcode_()).append("'").toString());
+
+                sqls.add(new StringBuilder().append("INSERT INTO CHIPTABLE@SHENAI_EDCDATA (CHIP_CODE,TABLE_NAME,STATUS_) VALUES ('").append(dataChip.getChipcode_()).append("','").append(TableName).append("',-1)").toString());
 
 
-        }catch (Exception e) {
-            baseDao.execute("UPDATE DATACENTER$CHIP SET READSTATUS_=-99 WHERE ID_="+dataChip.getId_());
+                sqls.add(new StringBuilder().append("UPDATE DATACENTER$CHIP SET READSTATUS_=-1 WHERE ID_=").append(dataChip.getId_()).toString());
+                this.baseDao.getJdbcTemplate().batchUpdate((String[])sqls.toArray(new String[sqls.size()]));
+            }
+            else {
+                this.baseDao.execute(new StringBuilder().append("UPDATE DATACENTER$CHIP SET READSTATUS_=-100 WHERE ID_=").append(dataChip.getId_()).toString());
+            }
+            this.logger.info(new StringBuilder().append(dataChip.getChipcode_()).append("Data文件解析结束").toString());
+        } catch (Exception e) {
+            this.logger.error(new StringBuilder().append("Exception:芯片号:").append(dataChip.getChipcode_()).toString(), e);
             e.printStackTrace();
             e.printStackTrace();
+            this.baseDao.execute(new StringBuilder().append("UPDATE DATACENTER$CHIP SET READSTATUS_=-99 WHERE ID_=").append(dataChip.getId_()).toString());
         } finally {
         } finally {
             countDownLatch.countDown();
             countDownLatch.countDown();
         }
         }
     }
     }
-
     @Override
     @Override
-    public void EDCCounterDeal(List<String> codes) {
-
+    public void EDCCounterDeal(List<String> codes)
+    {
     }
     }
-}
+}

+ 1 - 1
src/main/java/com/uas/eis/serviceImpl/EDCBakServiceImpl.java

@@ -301,7 +301,7 @@ public class EDCBakServiceImpl implements EDCBakService {
             match=true;
             match=true;
         }else
         }else
         {
         {
-            long time1=10*1000;
+            long time1=30*1000;
             //如果时间不在同一分钟则直接加10秒再匹配
             //如果时间不在同一分钟则直接加10秒再匹配
             if(fileName.substring(2).startsWith(DateUtil.format(new Date(time+time1), Constant.YMDHM))) {
             if(fileName.substring(2).startsWith(DateUtil.format(new Date(time+time1), Constant.YMDHM))) {
                 match=true;
                 match=true;