import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
import com.google.gson.JsonObject;
public class QrReportOneKeyAutoManager {
/**
* 下载并调用保存方法
* @param urlStr
* @param tempCode
* @param user
* @param beginDate
* @param endDate
* @param todayDate
* @throws Exception
*/
public static JsonObject downLoadAndUpload(String urlStr,String tempCode,User user,String beginDate,String endDate,String todayDate) throws Exception{
long down=System.currentTimeMillis();
JsonObject result = new JsonObject();//最终结果
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置超时间为3秒
conn.setConnectTimeout(30*1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//得到输入流
InputStream inputStream = conn.getInputStream();
//获取下载url的数据
byte[] getData = OneKeyUploadUtil.readInputStream(inputStream);
System.out.println(getData);
String data = "";
String newdata = "";
try {
data = new String( getData ,"gb2312");
newdata = data.replaceAll("&", "&").replaceAll("<CLOB>", "null").toLowerCase();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
result.addProperty("success", false);
result.addProperty("message", "上传数据失败(转码)");
} finally{
conn.disconnect();
inputStream.close();
}
getData = newdata.getBytes("gb2312");
System.out.println(getData);
System.out.println("info:"+url+" download success");
System.out.println("downloadtime:"+(System.currentTimeMillis()-down)/1000+"s");
JsonObject uploadResult = new JsonObject();//上传结果
long up=System.currentTimeMillis();
if(tempCode.equals(OneKeyUploadData.TEMPCODE_USER)){
uploadResult = QrRptUserXmlUtil.parserAddXmlStr(newdata, todayDate);
}else if(tempCode.equals(OneKeyUploadData.TEMPCODE_SALE)||tempCode.equals(OneKeyUploadData.TEMPCODE_IMPSALE)){
uploadResult =QrRptParserXmlUtil.parserAddXmlStr(newdata, tempCode, user, todayDate);
}else if(tempCode.equals(OneKeyUploadData.TEMPCODE_EAT)){
uploadResult = QrRptParserXmlEatmonthUtil.parserAddXmlStr(newdata, tempCode, user, todayDate);
}else{
return null;
}
System.out.println("uploadtime:"+(System.currentTimeMillis()-up)/1000+"s");
return uploadResult;
}
/**
* 从输入流中获取字节数组
* @param inputStream
* @return
* @throws IOException
*/
public static byte[] readInputStream(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
int len = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.close();
return bos.toByteArray();
}
public static JsonObject parserAddXmlStr(String xmlStr,String todayDate) throws ParseException {
JsonObject result = new JsonObject();
int insertCount = 0;//导入数量
int updateCount=0;
try {
Document document = DocumentHelper.parseText(xmlStr);
Element root = document.getRootElement();//获取Root
Element data = root.element("data");//获取data
Element enterusers = data.element("enterusers");//获取节点
if(enterusers == null){
result.addProperty("success", false);
result.addProperty("message", "模版选择错误");
return result;
}
System.out.println("判断是否有数据:"+ enterusers.elementIterator().hasNext());
if(!enterusers.elementIterator().hasNext()){
System.out.println("没有XX数据");
result.addProperty("success", false);
result.addProperty("message", "没有XX数据");
return result;
}
//插入新的企业数据
for (Iterator i = enterusers.elementIterator(); i.hasNext();) {
Element enteruser = (Element) i.next();
long id = Long.parseLong(enteruser.element("enteruserid").getText());//企业id
...
}
}
...
}
}