package com.uas.eis; import com.uas.eis.dao.BaseDao; import com.uas.eis.entity.EquipConfig; import com.uas.eis.service.DataDealService; import com.uas.eis.service.EDCBakService; import com.uas.eis.task.FileParseTask; import com.uas.eis.utils.CollectionUtil; import com.uas.eis.utils.SmbUtil; import com.uas.eis.utils.SmbUtilSmb1; import jcifs.CIFSContext; import jcifs.CIFSException; import jcifs.config.PropertyConfiguration; import jcifs.context.BaseContext; import jcifs.smb.SmbException; import jcifs.smb.SmbFile; import org.junit.Test; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.test.context.junit4.SpringRunner; import java.io.IOException; import java.net.MalformedURLException; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.concurrent.CountDownLatch; @RunWith(SpringRunner.class) @SpringBootTest(classes = {UasEisApplication.class}) public class UasEisApplicationTests { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private DataDealService dataDealService; @Autowired private EDCBakService edcBakService; @Autowired private BaseDao baseDao; @Autowired private FileParseTask fileParseTask; @Test public void contextLoads() { fileParseTask.dataDeal(); } //@Test /* public void contextLoads() { Date date = new Date(); List dataChips = baseDao.getJdbcTemplate().query("select id_,chipcode_,counterpath_,datapath_,testdate_ from (select id_,chipcode_,counterpath_,datapath_,testdate_ from datacenter$chip where chipcode_='F20025075#04' and nvl(readstatus_,0)=0 and testdate_ is not null order by testdate_ desc) where rownum<=50", new BeanPropertyRowMapper(DataChip.class)); if(dataChips.size()>0){ List IDS = dataChips.stream().map(DataChip::getId_).collect(Collectors.toList()); final CountDownLatch countDownLatch = new CountDownLatch(IDS.size()); baseDao.execute("UPDATE DATACENTER$CHIP SET READSTATUS_=-90 WHERE ID_ IN ("+String.join(",", IDS.stream().map(String::valueOf).collect(Collectors.toList()))+")"); try { dataChips.stream().forEach(dataChip -> { dataDealService.EDCDataDeal(dataChip,countDownLatch); }); countDownLatch.await(); } catch (InterruptedException e) { e.printStackTrace(); } } logger.info("Data文件解析执行结束:用时"+((new Date().getTime()-date.getTime())/1000)); } //@Test public void EDCBak(){ logger.info("文件归档开始"); Date date = new Date(); baseDao.callProcedure("DATACENTER_SYNC",new Object[]{""}); //所有设备 List EquipConfigs = baseDao.getJdbcTemplate().query("select ec_ip,ec_counterpath,ec_datapath,ec_counterbak,ec_databak,ed_devcode,ed_teststep from EQUIPCONFIGDETAIL LEFT JOIN EQUIPCONFIG ON ED_ECID=EC_ID where ec_databak is not null and ec_ip='172.24.3.155' order by ec_ip", new BeanPropertyRowMapper(EquipConfig.class)); Map> ecMap = CollectionUtil.groupBy(EquipConfigs,EquipConfig::getEc_ip); final CountDownLatch countDownLatch = new CountDownLatch(EquipConfigs.size()); try { for(String key : ecMap.keySet()){ edcBakService.EDCBak(ecMap.get(key),countDownLatch); } countDownLatch.await(); }catch (Exception e){ e.printStackTrace(); } logger.info("文件归档结束:用时"+((new Date().getTime()-date.getTime())/1000)); } @Test public void test(){ String ip = "172.16.3.17"; SmbFile sb = SmbUtil.getRootFile(ip,"c$"); try { System.out.println(ip+"测试连接"); sb.exists(); System.out.println(ip+"测试ok连接"); } catch (SmbException e) { System.out.println(ip+"连接失败"); e.printStackTrace(); } }*/ /*@Test public void test2(){ NtlmPasswordAuthentication npa = new NtlmPasswordAuthentication(null,"administrator","0DlbAdmin0"); try { SmbFile sf = new SmbFile(SmbUtil.getSmbRootUrl("172.16.3.22","c$"),npa); sf.connect(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }*/ /* //@Test public void test3 (){ Properties ps = new Properties(); ps.setProperty("jcifs.smb.client.domain", "172.16.3.22"); ps.setProperty("jcifs.smb.client.username", "administrator"); ps.setProperty("jcifs.smb.client.password", "0DlbAdmin0"); // 这个 disable 属性默认为 false , 不设置为 true 的话读取共享文件会比较慢 ps.setProperty("jcifs.smb.client.dfs.disabled", "true"); CIFSContext cifs = null; try { cifs = new BaseContext(new PropertyConfiguration(ps)); } catch (CIFSException e) { e.printStackTrace(); } for (int i =0 ;i<100;i++){ //SmbFile sb = SmbUtil.getCurrentFile("172.16.3.22","c$/c"+i); SmbFile sb = null; try { //sb = SmbUtil.getCurrentFile("172.16.3.22","c$/c"+i); sb = new SmbFile(SmbUtil.getSmbRootUrl("172.16.3.22","c$/c"+i),cifs); } catch (Exception e) { e.printStackTrace(); } try { sb.exists(); System.out.println("-----"+i); } catch (SmbException e) { e.printStackTrace(); } }; } //@Test public void test4(){ List EquipConfigs = baseDao.getJdbcTemplate().query("select ec_ip,ec_counterpath,ec_datapath,ec_counterbak,ec_databak,ed_devcode,ed_teststep from EQUIPCONFIGDETAIL LEFT JOIN EQUIPCONFIG ON ED_ECID=EC_ID where ec_databak is not null order by ec_ip", new BeanPropertyRowMapper(EquipConfig.class)); for(EquipConfig ec : EquipConfigs ){ SmbFile dataFile = SmbUtil.getCurrentFile(ec.getEc_ip(),"c$"); try { dataFile.connect(); System.out.println(ec.getEc_ip()+"连接通过"); } catch (Exception e) { System.out.println(ec.getEc_ip()+"连接失败,"+e.getMessage()); e.printStackTrace(); } } }*/ @Test public void EDCBak(){ logger.info("文件归档开始"); Date date = new Date(); //baseDao.callProcedure("DATACENTER_SYNC",new Object[]{""}); //所有设备 List EquipConfigs = baseDao.getJdbcTemplate().query("select ec_ip,ec_counterpath,ec_datapath,ec_counterbak,ec_databak,ed_devcode,ed_teststep from EQUIPCONFIGDETAIL LEFT JOIN EQUIPCONFIG ON ED_ECID=EC_ID where ec_databak is not null and ec_ip='172.16.3.32' order by ec_ip", new BeanPropertyRowMapper(EquipConfig.class)); Map> ecMap = CollectionUtil.groupBy(EquipConfigs,EquipConfig::getEc_ip); final CountDownLatch countDownLatch = new CountDownLatch(EquipConfigs.size()); try { for(String key : ecMap.keySet()){ edcBakService.EDCBak(ecMap.get(key),countDownLatch); } countDownLatch.await(); }catch (Exception e){ e.printStackTrace(); } logger.info("文件归档结束:用时"+((new Date().getTime()-date.getTime())/1000)); } //@Test public void test123(){ } }