FileParseTask.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package com.uas.eis.task;
  2. import com.uas.eis.core.TableCreator;
  3. import com.uas.eis.core.config.SpObserver;
  4. import com.uas.eis.dao.BaseDao;
  5. import com.uas.eis.dao.SqlRowList;
  6. import com.uas.eis.entity.DataChip;
  7. import com.uas.eis.entity.DataChipTestLog;
  8. import com.uas.eis.service.FileParseService;
  9. import org.slf4j.Logger;
  10. import org.slf4j.LoggerFactory;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  13. import org.springframework.stereotype.Component;
  14. import java.util.Date;
  15. import java.util.List;
  16. import java.util.concurrent.CountDownLatch;
  17. import java.util.stream.Collectors;
  18. /**
  19. * 赛美特文件对接解析
  20. * */
  21. @Component
  22. public class FileParseTask {
  23. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  24. @Autowired
  25. private BaseDao baseDao;
  26. @Autowired
  27. private FileParseService fileParseService;
  28. @Autowired
  29. private TableCreator tableCreator;
  30. public void dataDeal(){
  31. //wafer_id='BF241002603#01' AND
  32. 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 " +
  33. " DATACENTER$MESFILE WHERE DEALSTATE_=0 ORDER BY DBID_ ASC ) where " +
  34. " rownum<=10", new BeanPropertyRowMapper<>(DataChipTestLog.class));
  35. List<String> distinctLotIds = dataChipTestLogs.stream().map(DataChipTestLog::getLot_id).distinct()
  36. .collect(Collectors.toList());
  37. SpObserver.putSp("datacenter");
  38. for (String lotId : distinctLotIds){
  39. tableCreator.createTable("DATA$"+lotId);
  40. }
  41. SpObserver.back();
  42. logger.info("Data文件解析执行开始:文件数"+dataChipTestLogs.size());
  43. Date date = new Date();
  44. if(!dataChipTestLogs.isEmpty()){
  45. final CountDownLatch countDownLatch = new CountDownLatch(dataChipTestLogs.size());
  46. try {
  47. dataChipTestLogs.stream().forEach(dataChipTestLog -> {
  48. fileParseService.EDCDataDeal(dataChipTestLog,countDownLatch);
  49. });
  50. countDownLatch.await();
  51. } catch (InterruptedException e) {
  52. e.printStackTrace();
  53. }
  54. }
  55. // baseDao.execute("INSERT INTO DATACENTER$TASKLOG(NAME_,DURATION_) VALUES ('Data文件解析',"+(new Date().getTime()-date.getTime())/1000+")");
  56. logger.info("Data文件解析执行结束:用时"+((new Date().getTime()-date.getTime())/1000));
  57. }
  58. }