package cn.com.excute;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.apache.catalina.Service;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.ie.InternetExplorerOptions;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.os.WindowsUtils;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.jcraft.jsch.SftpException;
import cn.com.service.WebDriverPool;
import cn.com.utils.ChaoJiYing;
import cn.com.utils.FTPUtil;
import cn.com.utils.ScreenShot;
import cn.com.utils.TarUtil;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.processor.PageProcessor;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@Component
public class UploadSGPTdata implements PageProcessor {
@Autowired
private WebDriverPool webDriverPool;
protected static final Logger logger = LoggerFactory.getLogger(UploadSGPTdata.class);
private static Map<String, String[]> data0=new HashMap<String, String[]>();
private static Map<String, String[]> data2=new HashMap<String, String[]>();
public void process(Page page) {
SimpleDateFormat date1=new SimpleDateFormat("yyyyMMdd");
Date date111=new Date(System.currentTimeMillis() - 1000*60*60*24);
// 前一天
String filedate = date1.format(date111);
// 今天
String today = date1.format(new Date());
logger.info("文件日期属性..."+filedate);
SimpleDateFormat sdf3=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String folder="C:\\oradata\\rpa\\";
String tarfile1="bspt_wgbs_"+today+".tar.gz";
String file1="safe_exdbt_change.txt";
if ((new File(folder+file1)).exists()) {
logger.info("文件已经存在。。。 "+folder+file1);
}else {
try {
while(!(new File(folder+tarfile1)).exists()) {
Date date=new Date();
logger.info(sdf3.format(date));
logger.info("未检测到tar文件"+folder+tarfile1);
Thread.sleep(30000);
FTPUtil.download(folder, tarfile1);
}
logger.info("tar文件已经接收"+folder+tarfile1);
File sourceFile = new File(folder+tarfile1);
TarUtil.unTarGz(sourceFile, folder);
}catch(Exception e) {
logger.info("解压tar文件出错");
return;
}
}
if (!(new File(folder+file1)).exists()) {
logger.info("未检测到文件: "+folder+file1);
return;
}else {
file1=folder+file1;
}
SimpleDateFormat sdf11 = new SimpleDateFormat("yyyyMMdd");
String outPATH = "C:\\oradata\\rpa\\" + sdf11.format(new Date());
if (!(new File(outPATH)).exists()) {
(new File(outPATH)).mkdir();
}
String outf1=outPATH+"\\8100_01_RpaSgpt_"+filedate+".txt";//输出文件
File fileout = new File(outf1);
if(fileout.exists()) {
logger.info("输出文件已经存在"+fileout.getPath());
}else {
boolean cre1=false;//输出文件是否创建成功
try {
cre1=fileout.createNewFile();
} catch (IOException e2) {
// TODO Auto-generated catch block
logger.info("创建文档出现异常 :" + e2);
e2.printStackTrace();
}
logger.info("文本文档" + fileout.getPath() + "是否被创建 : " + cre1);
}
// 读取safe_exdbt.txt文档数据
data0=readtxt("C:\\oradata\\rpa\\safe_exdbt.txt");
logger.info("签约信息文档读数据:"+data0.size());
// 读取safe_exdbt_change.txt文档数据
data2=readtxt2("C:\\oradata\\rpa\\safe_exdbt_change.txt");
logger.info("变动信息文档读取数据:"+data2.size());
if(data0.size()==0&&data2.size()==0) {
logger.info("读取0条数据");
// writetxt(null,outf1);
}else {
int flag = 0;
do {
try {
WindowsUtils.killByName("chrome.exe");
WindowsUtils.killByName("chromedriver.exe");
// 指定IE driver的存放路径
//System.setProperty("webdriver.ie.driver", "C:\\Program Files (x86)\\Internet Explorer\\IEDriverServer.exe");
System.setProperty("webdriver.chrome.driver", "C:\\Google\\Chrome\\Application\\chromedriver.exe");
//InternetExplorerOptions ieoptions=new InternetExplorerOptions();
// 实例化webdriver对象,启动IE浏览器
//WebDriver driver = new InternetExplorerDriver();
//driver.manage().window().maximize();//窗口最大化
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(chromeOptions);
// driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.get("http://88.2.81.8:9101/asone/");
//获取页面信息
// System.out.println(driver.getPageSource());
logger.info("谷歌 启动中...");
Robot robot=new Robot();
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2=new SimpleDateFormat("yyyyMMdd");
Thread.sleep(1000);
driver.findElement(By.id("inputOrgCode")).sendKeys("320000013600");
driver.findElement(By.id("inputUserCode")).sendKeys("SWL");
driver.findElement(By.id("pwdw")).sendKeys("Bofaus3n");
try{
//获取验证码
String checkcode = null;
checkcode = ScreenShot.getCode();
driver.findElement(By.id("check")).sendKeys(checkcode);
// 点击登录按钮
driver.findElement(By.id("loginc")).click();
}
catch(Exception e1) {
logger.info("验证码获取失败");
logger.error("error",e1);
}
Thread.sleep(2000);
//数据申报
driver.findElement(By.id("688")).click();
//资本项目银行自身业务
driver.findElement(By.id("4b97f128-16706ad18bb-81d76f67e9fa75bc16134518e029baa9")).click();
Thread.sleep(1000);
// A类数据查询
for(int i=0;i<data0.size();i++) {
try {
// String selector = "*[@id=\"sub-frame-error\"]/div[1]";
//外债签约信息查询
driver.findElement(By.id("menu1_10_7")).click();
WebDriverWait w = new WebDriverWait(driver,60);
w.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.name("mainFrame")));
driver.switchTo().frame("mainFrame");
if(data0!=null) {
String[] data1=data0.get(String.valueOf(i));
logger.info("外债单条信息:"+data1[0]+"|+|"+data1[1]+"|+|"+data1[2]+"|+|"+data1[3]+"|+|"+data1[4]+"|+|"+data1[5]+"|+|"+data1[6]+"|+|"+data1[7]+"|+|"+data1[8]+"|+|"+data1[9]+"|+|"+data1[10]+"|+|"+data1[11]+"|+|"+data1[12]+"|+|"+data1[13]+"|+|"+data1[14]+"|+|"+data1[15]+"|+|"+data1[16]+"|+|"+data1[17]+"|+|"+data1[18]+"|+|"+data1[19]+"|+|"+data1[20]+"|+|"+data1[21]+"|+|"+data1[22]+"|+|"+data1[23]+"|+|"+data1[24]+"|+|"+data1[25]+"|+|"+data1[26]+"|+|"+data1[27]+"|+|"+data1[28]+"|+|"+data1[29]+"|+|"+data1[30]+"|+|"+data1[31]+"|+|"+data1[32]+"|+|"+data1[33]+"|+|"+data1[34]+"|+|"+data1[35]+"|+|"+data1[36]+"|+|"+data1[37]+"|+|"+data1[38]+"|+|"+data1[39]+"|+|"+data1[40]+"|+|"+