天天看點

java、HttpClient,post請求、get請求,抓取網絡資料

源碼jar包下載下傳位址:

https://download.csdn.net/download/xubenxismile/11141011

package com.dw;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.classloader.IoUtil;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HTTP;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;

import com.dareway.apps.process.component.material.MaterialNames;
import com.dareway.framework.common.GlobalNames;
import com.dareway.framework.exception.AppException;
import com.dareway.framework.mail.MailInfo;
import com.dareway.framework.mail.MailUtil;
import com.dareway.framework.plugin.FormalRunDB;
import com.dareway.framework.util.DataObject;
import com.dareway.framework.util.DataStore;
import com.dareway.framework.util.SecUtil;
import com.dareway.framework.util.Sql;
import com.dareway.framework.util.database.Transaction;
import com.dareway.framework.util.database.TransactionManager;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.TimeUnit;

import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

/**
 * 資料抽取測試類
 * 
 * @author xbx
 *
 */
public class Main_xbx {
	private static HttpContext localContext = new BasicHttpContext();

	public static void main(String[] args) throws Exception {

		doPost();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long lt = new Long(Long.valueOf("1267545600000"));
        Date date = new Date(lt);
        String res = simpleDateFormat.format(date);
//    	  DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss+08:00");  //yyyy-MM-dd'T'HH:mm:ss.SSSZ;yyyy-MM-dd'T'HH:mm:ss.SSSXXX
//		  Date date = df.parse("2010-03-03T00:00:00+08:00");
//		  System.out.println(date);
//    	  System.out.println(1);
//    	  //Wed Mar 03 00:00:00 CST 2010
//        //getData();
		// sendMail();
		// sendMail2();
	}

	/**
	 * httpGet
	 * 
	 * @description
	 * @author 徐本錫
	 * @date 2019年4月16日
	 * @version V1.0
	 */
	public static void getData() throws AppException {
		HttpResponse httpResponse = null;
		HttpClient httpClient = new DefaultHttpClient();
		HttpGet get = new HttpGet(
				"http://openapi.tdata.cn/api/search?keyword=小米科技有限責任公司&province=BJ&pageSize=20&pageIndex=1&dtype=json&apikey=am5neGI6am5neGI=");
		try {
			httpResponse = httpClient.execute(get, localContext);
			HttpEntity httpEntity = httpResponse.getEntity();
			String httpResult = EntityUtils.toString(httpEntity);
			// DataObject vdo = DataObject.parseJSON(httpResult);
			JSONArray jsStr = JSONArray.fromObject(httpResult);
			System.out.println(httpResult);
			// "{"status":"200","message":"查詢成功","paging":{"totalRecords":"4","pageIndex":"1","pageSize":"20"},"result":[{"keyNo":"9cce0780ab7644008b73bc2120479d31","companyName":"小米科技有限責任公司","operName":"雷軍","startDate":"2010-03-03T00:00:00","status":"開業","regNo":"91110108551385082Q","logoUrl":"http://openapi.tdata.cn/logo/img/default.png"},{"keyNo":"7d2c3bc3681d467d78ebdbd988ee3e5b","companyName":"北京小米熊教育科技有限責任公司","operName":"周曉敏","startDate":"2009-02-13T00:00:00","status":"開業","regNo":"110108011627892","logoUrl":"http://openapi.tdata.cn/logo/img/default.png"},{"keyNo":"ee92647afee609db9b431e4234557374","companyName":"北京創派力量科技有限公司","operName":"丁鵬飛","startDate":"2013-05-24T00:00:00","status":"開業","regNo":"911101080696123204","logoUrl":"http://openapi.tdata.cn/logo/img/default.png"},{"keyNo":"add69f81b86b006897fa3d6d90e97fed","companyName":"英鵬互娛科技(北京)有限公司","operName":"林軍","startDate":"2013-11-05T00:00:00","status":"登出","regNo":"91110108082888022Q","logoUrl":"http://openapi.tdata.cn/logo/img/default.png"}]}"
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	// 發郵件
	static void sendMail() throws AppException {
		DataObject result = new DataObject();
		System.out.println("開始發郵件");

		// 發送郵箱設定
		String EmailSmtp = "smtp.163.com";// 郵箱協定
		String EmailUser = "dyetdz";// 使用者名
		String EmailPassword = "dareway2019";// 密碼 aaa123 授權碼 dareway2019
		String EmailFrom = "[email protected]";// 郵箱位址

		// 接受設定
		String mailTitle = "測試javamail";// 郵件标題
		String autoMsg = "測試内容物";// 郵件内容
		String email = "[email protected]";// 接收郵箱

		try {

			String[] toMail = { email };
			MailInfo mailinfo = new MailInfo();
			mailinfo.setSmtp(EmailSmtp);
			mailinfo.setSmtpUser(EmailUser);
			mailinfo.setSmtpPassword(EmailPassword);
			mailinfo.setFrom(EmailFrom);
			mailinfo.setSubject(mailTitle);// 設定郵件主題
			mailinfo.setContent(autoMsg);// 設定郵件内容
			mailinfo.setTo(toMail);// 設定收件人
			// 要用公共郵箱給上面那些人發郵件,這個是公共郵箱的密碼
			new MailUtil(mailinfo).send();
			result.put("result", true);
			System.out.println("完成發郵件");
		} catch (Exception e) {
			System.out.println("發送郵件失敗!異常資訊:" + e.getMessage());
		}
	}

	static void sendMail2() throws AppException {

		String host = "smtp.163.com";
		String user = "dyetdz";
		String pwd = "dareway2019";
		String from = "[email protected]";
		String to = "[email protected]";

		String subject = "javaMail方法測試";

		Properties props = new Properties();

		// 設定發送郵件的郵件伺服器的屬性(這裡使用網易的smtp伺服器)
		props.put("mail.smtp.host", host);
		// 需要經過授權,也就是有戶名和密碼的校驗,這樣才能通過驗證(一定要有這一條)
		props.put("mail.smtp.auth", "true");

		// 用剛剛設定好的props對象建構一個session
		Session session = Session.getDefaultInstance(props);

		// 有了這句便可以在發送郵件的過程中在console處顯示過程資訊,供調試使
		// 用(你可以在控制台(console)上看到發送郵件的過程)
		session.setDebug(true);

		// 用session為參數定義消息對象
		MimeMessage message = new MimeMessage(session);
		try {
			// 加載發件人位址
			message.setFrom(new InternetAddress(from));
			// 加載收件人位址
			message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
			// 加載标題
			message.setSubject(subject);

			// 向multipart對象中添加郵件的各個部分内容,包括文本内容和附件
			Multipart multipart = new MimeMultipart();

			// 設定郵件的文本内容
			BodyPart contentPart = new MimeBodyPart();
			contentPart.setText("郵件的具體内容在此");
			multipart.addBodyPart(contentPart);
			// 添加附件
//			BodyPart messageBodyPart = new MimeBodyPart();
//			DataSource source = new FileDataSource(affix);
			// 添加附件的内容
//			messageBodyPart.setDataHandler(new DataHandler(source));
			// 添加附件的标題
			// 這裡很重要,通過下面的Base64編碼的轉換可以保證你的中文附件标題名在發送時不會變成亂碼
//			sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
//			messageBodyPart.setFileName("=?GBK?B?" + enc.encode(affixName.getBytes()) + "?=");
//			multipart.addBodyPart(messageBodyPart);

			// 将multipart對象放到message中
			message.setContent(multipart);
			// 儲存郵件
			message.saveChanges();
			// 發送郵件
			Transport transport = session.getTransport("smtp");
			// 連接配接伺服器的郵箱
			transport.connect(host, user, pwd);
			// 把郵件發送出去
			transport.sendMessage(message, message.getAllRecipients());
			transport.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

/*	*//**
	 * 資訊化項目資料抽取
	 * @description 
	 * @author 徐本錫
	 * @date 2019年4月16日
	 * @version V1.0
	 *//*
	public static void getData() throws AppException {
		HttpResponse httpResponse = null;
		HttpClient httpClient = new DefaultHttpClient();
		HttpGet get = new HttpGet(
				"http://openapi.tdata.cn/api/search?keyword=小米科技有限責任公司&province=BJ&pageSize=20&pageIndex=1&dtype=json&apikey=am5neGI6am5neGI=");
		try {
			httpResponse = httpClient.execute(get, localContext);
			HttpEntity httpEntity = httpResponse.getEntity();
			String httpResult = EntityUtils.toString(httpEntity);
			// DataObject vdo = DataObject.parseJSON(httpResult);
			JSONArray jsStr = JSONArray.fromObject(httpResult);
			System.out.println(httpResult);
			// "{"status":"200","message":"查詢成功","paging":{"totalRecords":"4","pageIndex":"1","pageSize":"20"},"result":[{"keyNo":"9cce0780ab7644008b73bc2120479d31","companyName":"小米科技有限責任公司","operName":"雷軍","startDate":"2010-03-03T00:00:00","status":"開業","regNo":"91110108551385082Q","logoUrl":"http://openapi.tdata.cn/logo/img/default.png"},{"keyNo":"7d2c3bc3681d467d78ebdbd988ee3e5b","companyName":"北京小米熊教育科技有限責任公司","operName":"周曉敏","startDate":"2009-02-13T00:00:00","status":"開業","regNo":"110108011627892","logoUrl":"http://openapi.tdata.cn/logo/img/default.png"},{"keyNo":"ee92647afee609db9b431e4234557374","companyName":"北京創派力量科技有限公司","operName":"丁鵬飛","startDate":"2013-05-24T00:00:00","status":"開業","regNo":"911101080696123204","logoUrl":"http://openapi.tdata.cn/logo/img/default.png"},{"keyNo":"add69f81b86b006897fa3d6d90e97fed","companyName":"英鵬互娛科技(北京)有限公司","operName":"林軍","startDate":"2013-11-05T00:00:00","status":"登出","regNo":"91110108082888022Q","logoUrl":"http://openapi.tdata.cn/logo/img/default.png"}]}"
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
	*/

	/**
	 * 發送 POST 請求(HTTP),參數為 Key-Value 形式
	 *
	 * @param apiUrl API接口URL
	 * @param params 參數map
	 * @return
	 */
	public static String doPost() {
/*
		PoolingHttpClientConnectionManager connMgr;
		RequestConfig requestConfig;
		int MAX_TIMEOUT = 7000;
		
		// 設定連接配接池
        connMgr = new PoolingHttpClientConnectionManager();
 
        // 設定連接配接池大小
        connMgr.setMaxTotal(100);
        connMgr.setDefaultMaxPerRoute(connMgr.getMaxTotal());
 
        RequestConfig.Builder configBuilder = RequestConfig.custom();
 
        // 設定連接配接逾時
        configBuilder.setConnectTimeout(MAX_TIMEOUT);
 
        // 設定讀取逾時
        configBuilder.setSocketTimeout(MAX_TIMEOUT);
 
        // 設定從連接配接池擷取連接配接執行個體的逾時
        configBuilder.setConnectionRequestTimeout(MAX_TIMEOUT);
 
        // 在送出請求之前 測試連接配接是否可用
        connMgr.setValidateAfterInactivity(5000);
        // configBuilder.setStaleConnectionCheckEnabled(true);
 
        requestConfig = configBuilder.build();
		*/

/*		http://221.214.94.36:81/sxk/main
			
			123456*/
		String url = "http://221.214.94.36:81/sxk/mng/project/change/info/query";
		Map<String,Object> params=new HashMap<String,Object>();
		params.put("Accept", "application/json, text/javascript, */*; q=0.01");
		params.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		params.put("X-Requested-With", "XMLHttpRequest");
		params.put("Referer", "http://221.214.94.36:81/sxk/mng/project/change/info/index?v=1555459803922");
		params.put("Accept-Language", "zh-CN");
		params.put("Accept-Encoding", "gzip, deflate");
		params.put("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)");
		params.put("Host", "221.214.94.36:81");
		params.put("Content-Length", "65");
		params.put("DNT", "1");
		params.put("Connection", "Keep-Alive");
		params.put("Cache-Control", "no-cache");
		//params.put("Cookie", "td_cookie=18446744069731352277; JSESSIONID=2BA9A59C8E68D0633EC3678BDFFAC749; webfinal.session.errorCount=0; webfinal.session.id=51f435c7-5f0c-4e6c-a883-e2e0d9f43c2b");
	//	params.put("", "");
		params.put("_search", "false");
		params.put("nd", "1555402726472");
		params.put("rows", "300");
		params.put("page", "1");
		params.put("sidx", "CODE");
		params.put("sord", "desc");
		
		HttpResponse response = null;
		HttpClient httpClient = new DefaultHttpClient();
		String httpStr = null;
		HttpPost httpPost = new HttpPost(url);

		BasicCookieStore cookieStore = new BasicCookieStore();
        BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "58DEDE9E70972800E2DA909F3445661E");
        cookie.setVersion(0);
        cookie.setDomain("221.214.94.36");
        cookie.setPath("/sxk/mng/project/change/info/query");
        
        cookieStore.addCookie(cookie);
        //帶有cookie的httpclient
        httpClient = HttpClientBuilder.create().setDefaultCookieStore(cookieStore).build();
        
       // httpClient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();

        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(15000).setConnectTimeout(15000).setConnectionRequestTimeout(15000).build();
        
		try {
			httpPost.setConfig(requestConfig);
			List<NameValuePair> pairList = new ArrayList<>(params.size());
			for (Map.Entry<String, Object> entry : params.entrySet()) {
				NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry.getValue().toString());
				pairList.add(pair);
			}
/*			RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(30000).setConnectTimeout(30000)
					.setRedirectsEnabled(false) // 不自動重定向
					.build();
			httpPost.setConfig(requestConfig);
			httpPost.setHeader("Cookies","JSESSIONID=50889DEB8FDB5D48A82EBE6BB3CDE308;webfinal.session.errorCount=0;webfinal.session.id=fa82a6a5-8d8c-40c4-92ac-cb09df5350f9");
			*/
			httpPost.setEntity(new UrlEncodedFormEntity(pairList, Charset.forName("UTF-8")));
			
			response = httpClient.execute(httpPost);
			System.out.println(response.toString());
			HttpEntity entity = response.getEntity();
			

			int code = response.getStatusLine().getStatusCode();
			
			//重定向
			if(code==302){
/*				//釋放
				httpPost.abort();
				httpClient.getConnectionManager().closeIdleConnections(0, TimeUnit.MICROSECONDS);
				
				HttpGet locationUrl = new HttpGet(response.getLastHeader("location").getValue());
				response = httpClient.execute(locationUrl);
				System.out.println(response.toString());
				entity = response.getEntity();*/
				System.out.println("302");
			}
			httpStr = EntityUtils.toString(entity, "UTF-8");
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (response != null) {
				try {
					EntityUtils.consume(response.getEntity());
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		System.out.println(httpStr);
		return httpStr;
	}
	
}
           
package com.dw;

import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
import org.dom4j.DocumentException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import com.dareway.framework.common.GlobalNames;
import com.dareway.framework.exception.AppException;
import com.dareway.framework.plugin.FormalRunDB;
import com.dareway.framework.util.DataObject;
import com.dareway.framework.util.DataStore;
import com.dareway.framework.util.DateUtil;
import com.dareway.framework.util.Sql;
import com.dareway.framework.util.database.Transaction;
import com.dareway.framework.util.database.TransactionManager;

/**
 * 投資項目資訊抽取
 * 
 * @author xbx
 *
 */
public class Main_TZXMXX_xbx {
	private static HttpContext localContext = new BasicHttpContext();
	private static StringBuffer sqlBF = new StringBuffer();
	private static int index = 0;
	private static Sql sql = new Sql();

	public static void main(String[] args) throws Exception {
		 
		//getXmList();
		//doGet_jbys();
		//getXmSqclList();
		doGet_fdyj();
	}

	/**
	 * httpGet抽取基本要素
	 * 
	 * @description
	 * @author 徐本錫
	 * @date 2019年4月16日
	 * @version V1.0
	 * @throws DocumentException 
	 */
	public static void doGet_fdyj() throws AppException {
		HttpResponse httpResponse = null;
		@SuppressWarnings("resource")
		HttpClient httpClient = new DefaultHttpClient();


		GlobalNames.CONFIGINWAR = "true";
		FormalRunDB.setFormalRunDB(false);//正式庫
//		DebugModeConfig.setDebugMode(false);//非debug模式
		Transaction tr = TransactionManager.getTransaction();
		tr.begin();
		
		//删除版本号不同的材料
		index = 0;
		sqlBF.setLength(0);
		sqlBF.append(" delete from ga0001.tzxmsxqd_fdyj a ");
		sqlBF.append("  where not exists (select 1 from ga0001.tzxmsxqd x where a.id=x.id and a.code=x.code and a.version=x.version) ");
		sql .setSql(sqlBF.toString());
		sql.executeUpdate();
		
		//查詢需要爬取的項目
		index = 0;
		sqlBF.setLength(0);
		sqlBF.append(" select a.id, a.type, a.org_name, a.inner_code, a.name, a.code, a.version ");
		sqlBF.append("   from ga0001.tzxmsxqd a ");
		sqlBF.append("  where not exists (select 1 from ga0001.tzxmsxqd_fdyj x where a.id=x.id and a.version=x.version and a.code=x.code)  ");
		sql .setSql(sqlBF.toString());
		DataStore vdsSXQD = sql.executeQuery();
		tr.commitWithoutStart();
		
		//循環請求資料
		int i=0;
		String id="", type="", org_name="", code="", version="", name="", inner_code="";
		String url = "";
		for(DataObject obj : vdsSXQD) {
			id = obj.getString("id", "");
			type = obj.getString("type", "");
			org_name = obj.getString("org_name", "");
			inner_code = obj.getString("inner_code", "");
			code = obj.getString("code", "");
			version = obj.getString("version", "");
			name = obj.getString("name", "");
			System.out.println("正在處理第"+ String.valueOf(++i) +"條事項:"+name);
			url = "http://221.214.94.36:81/sxk/main/power/tab/basiclaw/"+code+"/"+version+"?itemType="+type+"&v=1555587689300";
			HttpGet get = new HttpGet(url);
			
			GlobalNames.CONFIGINWAR = "true";
			FormalRunDB.setFormalRunDB(false);//正式庫
//			DebugModeConfig.setDebugMode(false);//非debug模式
			tr = TransactionManager.getTransaction();
			tr.begin();
			
			try {
				httpResponse = httpClient.execute(get, localContext);
				HttpEntity httpEntity = httpResponse.getEntity();
				String httpResult = EntityUtils.toString(httpEntity);
				Document document = Jsoup.parse(httpResult);
				Elements elementsFDYJList = document.getElementsByAttributeValue("id","charge_fg");
				
				sqlBF.setLength(0);
				sqlBF.append(" INSERT INTO ga0001.tzxmsxqd_fdyj( ");
				sqlBF.append("             id, fgxh, type, org_name, inner_code, name, cqsj, code, version, ");
				sqlBF.append("             fdyj) ");
				sqlBF.append("     VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ");
				sqlBF.append("             ?) ");
				sql .setSql(sqlBF.toString());
				int fgxh=0;
				if(elementsFDYJList.size()==0) {
					System.out.println("無");
					continue;
				}
				for (Element element : elementsFDYJList) {
//					Elements elementsKEY = element.getElementsByClass("item-left");
//					Elements elementsVALUE = element.getElementsByClass("item-right");
					String value = element.text().trim();
					index = 0;
					sql.setString(++index, id);
					sql.setString(++index, String.valueOf(++fgxh));
					sql.setString(++index, type);
					sql.setString(++index, org_name);
					sql.setString(++index, inner_code);
					sql.setString(++index, name);
					sql.setDateTime(++index, DateUtil.getDBTime());
					sql.setString(++index, code);
					sql.setString(++index, version);
					sql.setString(++index, value);
					sql.addBatch();
				}
				sql.executeBatch();
				tr.commitWithoutStart();
			} catch (IOException e) {
				tr.rollback();
				e.printStackTrace();
			}
		}
		
	}
	
	/**
	 * 抽取标準文書
	 * @description 
	 * @author 徐本錫
	 * @date 2019年4月18日
	 * @version V1.0
	 * @throws AppException 
	 */
	public static String getXmBzwsList() throws AppException {
		/*		
		http://221.214.94.36:81/sxk/main
		
		123456
		*/

		GlobalNames.CONFIGINWAR = "true";
		FormalRunDB.setFormalRunDB(false);//正式庫
//		DebugModeConfig.setDebugMode(false);//非debug模式
		Transaction tr = TransactionManager.getTransaction();
		tr.begin();
		
		//删除版本号不同的材料
		index = 0;
		sqlBF.setLength(0);
		sqlBF.append(" delete from ga0001.tzxmsxqd_bzws a ");
		sqlBF.append("  where not exists (select 1 from ga0001.tzxmsxqd x where a.id=x.id and a.item_code=x.code and a.item_version=x.version) ");
		sql .setSql(sqlBF.toString());
		sql.executeUpdate();
		
		//查詢需要爬取的項目
		index = 0;
		sqlBF.setLength(0);
		sqlBF.append(" select a.id, a.type, a.org_name, a.inner_code, a.name, a.code item_code, a.version item_version ");
		sqlBF.append("   from ga0001.tzxmsxqd a ");
		sqlBF.append("  where not exists (select 1 from ga0001.tzxmsxqd_bzws x where a.id=x.id and a.version=x.item_version and a.code=x.item_code)  ");
		sql .setSql(sqlBF.toString());
		DataStore vdsSXQD = sql.executeQuery();
		tr.commitWithoutStart();
		
		//循環請求資料
		int i=0;
		String id="", type="", org_name="", inner_code="", name="", item_code="", item_version="";
		String urlPost = "";
		for(DataObject obj : vdsSXQD) {
			id = obj.getString("id", "");
			type = obj.getString("type", "");
			org_name = obj.getString("org_name", "");
			inner_code = obj.getString("inner_code", "");
			name = obj.getString("name", "");
			item_code = obj.getString("item_code", "");
			item_version = obj.getString("item_version", "");
			System.out.println("正在處理第"+ String.valueOf(++i) +"條事項:"+name);
			
			String httpStr = "";
			urlPost = "http://221.214.94.36:81/sxk/mng/project/factor/paper/query?"+"item_code="+item_code+"&item_version="+item_version;
			Map<String,Object> params=new HashMap<String,Object>();
			params.put("Accept", "application/json, text/javascript, */*; q=0.01");
			params.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
			params.put("X-Requested-With", "XMLHttpRequest");
			params.put("Referer", "http://221.214.94.36:81/sxk/mng/project/change/info/index?v=1555583490723#");
			params.put("Accept-Language", "zh-CN");
			params.put("Accept-Encoding", "gzip, deflate");
			params.put("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)");
			params.put("Host", "221.214.94.36:81");
			params.put("Content-Length", "62");
			params.put("DNT", "1");
			params.put("Connection", "Keep-Alive");
			params.put("Cache-Control", "no-cache");
			//params.put("Cookie", "JSESSIONID=20984A6BF386E030A32E93E1E43ACA3E; webfinal.session.errorCount=0");
		//	params.put("", "");
			params.put("_search", "false");
			params.put("nd", "1555585140585");
			params.put("rows", "1000");
			params.put("page", "1");
			params.put("sidx", "");
			params.put("sord", "asc");
	        BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "16932DBF68B73FE6C4980F92628F5D5C");
	        cookie.setVersion(0);
	        cookie.setDomain("221.214.94.36");
	        cookie.setPath("/sxk/mng/project/factor/paper/query");
	        httpStr = doPost(urlPost, params, cookie, true);
	        if("302".equals(httpStr)) {
	        	System.out.println("302重定向");
	        	continue;
	        }else if("error".equals(httpStr)){
	        	System.out.println("error");
	        	continue;
	        }else {
	        	DataObject vdo = DataObject.parseJSON(httpStr);
//	        	Gson gson = new Gson();
//	    		Map map = gson.fromJson(httpStr, Map.class);
	        	int page = vdo.getInt("page");
	        	int records = vdo.getInt("records");
	        	int total = vdo.getInt("total");
	        	DataStore dsRows = vdo.getDataStore("rows");
	        	DataObject cell_i = new DataObject();
	        	
	        	String name_i="", description="", filename="", remark="", sn="", 
	        		   ext="", auth_level="", validate_time="", rownum_="", validate_time_unit="", 
	        		   url="", flag="", type_i="", code="";
	        	 
	        	//事務
	        	System.out.println("getXmBzwsList()---->start");
	    		GlobalNames.CONFIGINWAR = "true";
	    		FormalRunDB.setFormalRunDB(false);//正式庫
//	    		DebugModeConfig.setDebugMode(false);//非debug模式
	    		tr = TransactionManager.getTransaction();
	    		tr.begin();
//	    		tr.rollback();
//	    		tr.commitWithoutStart();
	    		int clxh=0;
	    		if(dsRows==null || dsRows.rowCount()==0) {
	    			index = 0;
        			sqlBF.setLength(0);
        			sqlBF.append(" INSERT INTO ga0001.tzxmsxqd_bzws( ");
        			sqlBF.append("             id, type, org_name, inner_code, name, cqsj, wsxh, filename, item_code, item_version) ");
        			sqlBF.append("     VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) ");
        			sql .setSql(sqlBF.toString());
        			sql.setString(++index, id);
        			sql.setString(++index, type);
        			sql.setString(++index, org_name);
        			sql.setString(++index, inner_code);
        			sql.setString(++index, name);
        			
        			sql.setDateTime(++index, DateUtil.getDBTime());
        			sql.setString(++index, String.valueOf(0));
        			sql.setString(++index, "無");
        			sql.setString(++index, item_code);
        			sql.setString(++index, item_version);
        			
        			sql.executeUpdate();
	    		}
	        	for(DataObject obj_i : dsRows) {
	        		clxh+=1;
	        		cell_i =  DataObject.parseJSON(obj_i.getString("cell"));
	        		
	        		name_i = ("null".equals(String.valueOf(cell_i.getObject("name"))))?"":String.valueOf(cell_i.getObject("name"));
	        		description = ("null".equals(String.valueOf(cell_i.getObject("description"))))?"":String.valueOf(cell_i.getObject("description"));
	        		filename = ("null".equals(String.valueOf(cell_i.getObject("filename"))))?"":String.valueOf(cell_i.getObject("filename"));
	        		remark = ("null".equals(String.valueOf(cell_i.getObject("remark"))))?"":String.valueOf(cell_i.getObject("remark"));
	        		sn = ("null".equals(String.valueOf(cell_i.getObject("sn"))))?"":String.valueOf(cell_i.getObject("sn"));

	        		ext = ("null".equals(String.valueOf(cell_i.getObject("ext"))))?"":String.valueOf(cell_i.getObject("ext"));
	        		auth_level = ("null".equals(String.valueOf(cell_i.getObject("auth_level"))))?"":String.valueOf(cell_i.getObject("auth_level"));
	        		validate_time = ("null".equals(String.valueOf(cell_i.getObject("validate_time"))))?"":String.valueOf(cell_i.getObject("validate_time"));
	        		rownum_ = ("null".equals(String.valueOf(cell_i.getObject("rownum_"))))?"":String.valueOf(cell_i.getObject("rownum_"));
	        		validate_time_unit = ("null".equals(String.valueOf(cell_i.getObject("validate_time_unit"))))?"":String.valueOf(cell_i.getObject("validate_time_unit"));

	        		url = ("null".equals(String.valueOf(cell_i.getObject("url"))))?"":String.valueOf(cell_i.getObject("url"));
	        		flag = ("null".equals(String.valueOf(cell_i.getObject("flag"))))?"":String.valueOf(cell_i.getObject("flag"));
	        		type_i = ("null".equals(String.valueOf(cell_i.getObject("type"))))?"":String.valueOf(cell_i.getObject("type"));
	        		code = ("null".equals(String.valueOf(cell_i.getObject("code"))))?"":String.valueOf(cell_i.getObject("code"));

    				index = 0;
        			sqlBF.setLength(0);
        			sqlBF.append(" INSERT INTO ga0001.tzxmsxqd_bzws( ");
        			sqlBF.append("             id, type, org_name, inner_code, name, cqsj, wsxh, name_i, description, ");
        			sqlBF.append("             filename, remark, sn, ext, auth_level, validate_time, rownum_, ");
        			sqlBF.append("             validate_time_unit, url, flag, type_i, code, item_code, item_version) ");
        			sqlBF.append("     VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ");
        			sqlBF.append("             ?, ?, ?, ?, ?, ?, ?, ");
        			sqlBF.append("             ?, ?, ?, ?, ?, ?, ?) ");
        			sql .setSql(sqlBF.toString());
        			sql.setString(++index, id);
        			sql.setString(++index, type);
        			sql.setString(++index, org_name);
        			sql.setString(++index, inner_code);
        			sql.setString(++index, name);
        			
        			sql.setDateTime(++index, DateUtil.getDBTime());
        			sql.setString(++index, String.valueOf(clxh));
        			sql.setString(++index, name_i);
        			sql.setString(++index, description);
        			sql.setString(++index, filename);
        			
        			sql.setString(++index, remark);
        			sql.setString(++index, sn);
        			sql.setString(++index, ext);
        			sql.setString(++index, auth_level);
        			sql.setString(++index, validate_time);
        			
        			sql.setString(++index, rownum_);
        			sql.setString(++index, validate_time_unit);
        			sql.setString(++index, url);
        			sql.setString(++index, flag);
        			sql.setString(++index, type_i);
        			
        			sql.setString(++index, code);
        			sql.setString(++index, item_code);
        			sql.setString(++index, item_version);

        			sql.executeUpdate();
	    			

	        	}
	        	tr.commitWithoutStart();
	        	System.out.println("getXmBzwsList()---->end");
	        }
		}
		
		System.out.println("getXmBzwsList()---->overAll");
		return null;
	}
	
	/**
	 * 抽取申請材料
	 * @description 
	 * @author 徐本錫
	 * @date 2019年4月18日
	 * @version V1.0
	 * @throws AppException 
	 */
	public static String getXmSqclList() throws AppException {
		/*		
		http://221.214.94.36:81/sxk/main
		
		123456
		*/

		GlobalNames.CONFIGINWAR = "true";
		FormalRunDB.setFormalRunDB(false);//正式庫
//		DebugModeConfig.setDebugMode(false);//非debug模式
		Transaction tr = TransactionManager.getTransaction();
		tr.begin();
		
		//删除版本号不同的材料
		index = 0;
		sqlBF.setLength(0);
		sqlBF.append(" delete from ga0001.tzxmsxqd_sqcl a ");
		sqlBF.append("  where not exists (select 1 from ga0001.tzxmsxqd x where a.id=x.id and a.item_code=x.code and a.item_version=x.version) ");
		sql .setSql(sqlBF.toString());
		sql.executeUpdate();
		
		//查詢需要爬取的項目
		index = 0;
		sqlBF.setLength(0);
		sqlBF.append(" select a.id, a.type, a.org_name, a.inner_code, a.name, a.code item_code, a.version item_version ");
		sqlBF.append("   from ga0001.tzxmsxqd a ");
		sqlBF.append("  where not exists (select 1 from ga0001.tzxmsxqd_sqcl x where a.id=x.id and a.version=x.item_version and a.code=x.item_code)  ");
		sql .setSql(sqlBF.toString());
		DataStore vdsSXQD = sql.executeQuery();
		tr.commitWithoutStart();
		
		//循環請求資料
		int i=0;
		String id="", type="", org_name="", inner_code="", name="", item_code="", item_version="";
		String urlPost = "";
		for(DataObject obj : vdsSXQD) {
			id = obj.getString("id", "");
			type = obj.getString("type", "");
			org_name = obj.getString("org_name", "");
			inner_code = obj.getString("inner_code", "");
			name = obj.getString("name", "");
			item_code = obj.getString("item_code", "");
			item_version = obj.getString("item_version", "");
			System.out.println("正在處理第"+ String.valueOf(++i) +"條事項:"+name);
			
			String httpStr = "";
			urlPost = "http://221.214.94.36:81/sxk/mng/project/factor/material/query?"+"item_code="+item_code+"&item_version="+item_version;
			Map<String,Object> params=new HashMap<String,Object>();
			params.put("Accept", "application/json, text/javascript, */*; q=0.01");
			params.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
			params.put("X-Requested-With", "XMLHttpRequest");
			params.put("Referer", "http://221.214.94.36:81/sxk/mng/project/change/info/index?v=1555566134232#");
			params.put("Accept-Language", "zh-CN");
			params.put("Accept-Encoding", "gzip, deflate");
			params.put("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)");
			params.put("Host", "221.214.94.36:81");
			params.put("Content-Length", "62");
			params.put("DNT", "1");
			params.put("Connection", "Keep-Alive");
			params.put("Cache-Control", "no-cache");
			//params.put("Cookie", "JSESSIONID=20984A6BF386E030A32E93E1E43ACA3E; webfinal.session.errorCount=0");
		//	params.put("", "");
			params.put("_search", "false");
			params.put("nd", "1555571284464");
			params.put("rows", "1000");
			params.put("page", "1");
			params.put("sidx", "");
			params.put("sord", "asc");
	        BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "20984A6BF386E030A32E93E1E43ACA3E");
	        cookie.setVersion(0);
	        cookie.setDomain("221.214.94.36");
	        cookie.setPath("/sxk/mng/project/factor/material/query");
	        httpStr = doPost(urlPost, params, cookie, true);
	        if("302".equals(httpStr)) {
	        	System.out.println("302重定向");
	        	continue;
	        }else if("error".equals(httpStr)){
	        	System.out.println("error");
	        	continue;
	        }else {
	        	DataObject vdo = DataObject.parseJSON(httpStr);
//	        	Gson gson = new Gson();
//	    		Map map = gson.fromJson(httpStr, Map.class);
	        	int page = vdo.getInt("page");
	        	int records = vdo.getInt("records");
	        	int total = vdo.getInt("total");
	        	DataStore dsRows = vdo.getDataStore("rows");
	        	DataObject cell_i = new DataObject();
	        	String is_template="", what="", publisher="", remark="", how_transact="", 
	        			paper_material_format="", blank="", where_transact="", filling_explanation="", is_example="", 
	        			version="", template_name="", is_sample="", sort_order="", must="", 
	        			example="", url="", flag="", type_i="", explain="", 
	        			code="", accept_standard="", is_blank="", material_basis="", sample="",
	        			sample_name="", name_i="", original="", template="", filename="",
	        			example_name="", copy="", check_real="", origin="", folder_id="",
	        			rownum_="", blank_name="", constant_code="", item_code_i="", business_type="",
	        			sort_code="";
	        	 
	        	//事務
	        	System.out.println("getXmList()---->start");
	    		GlobalNames.CONFIGINWAR = "true";
	    		FormalRunDB.setFormalRunDB(false);//正式庫
//	    		DebugModeConfig.setDebugMode(false);//非debug模式
	    		tr = TransactionManager.getTransaction();
	    		tr.begin();
//	    		tr.rollback();
//	    		tr.commitWithoutStart();
	    		int clxh=0;
	    		if(dsRows==null || dsRows.rowCount()==0) {
	    			index = 0;
        			sqlBF.setLength(0);
        			sqlBF.append(" INSERT INTO ga0001.tzxmsxqd_sqcl( ");
        			sqlBF.append("             id, clxh, type, org_name, inner_code, name, item_code, item_version, name_i ) ");
        			sqlBF.append("     VALUES (?, ?, ?, ?, ?, ?, ?, ?, ? ) ");
        			sql .setSql(sqlBF.toString());
        			sql.setString(++index, id);
        			sql.setString(++index, String.valueOf(0));
        			sql.setString(++index, type);
        			sql.setString(++index, org_name);
        			sql.setString(++index, inner_code);
        			
        			sql.setString(++index, name);
        			sql.setString(++index, item_code);
        			sql.setString(++index, item_version);
        			sql.setString(++index, "無");
        			
        			sql.executeUpdate();
	    		}
	        	for(DataObject obj_i : dsRows) {
	        		clxh+=1;
	        		cell_i =  DataObject.parseJSON(obj_i.getString("cell"));
	        		is_template = ("null".equals(String.valueOf(cell_i.getObject("is_template"))))?"":String.valueOf(cell_i.getObject("is_template"));
	        		what = ("null".equals(String.valueOf(cell_i.getObject("what"))))?"":String.valueOf(cell_i.getObject("what"));
	        		publisher = ("null".equals(String.valueOf(cell_i.getObject("publisher"))))?"":String.valueOf(cell_i.getObject("publisher"));
	        		remark = ("null".equals(String.valueOf(cell_i.getObject("remark"))))?"":String.valueOf(cell_i.getObject("remark"));
	        		how_transact = ("null".equals(String.valueOf(cell_i.getObject("how_transact"))))?"":String.valueOf(cell_i.getObject("how_transact"));

	        		paper_material_format = ("null".equals(String.valueOf(cell_i.getObject("paper_material_format"))))?"":String.valueOf(cell_i.getObject("paper_material_format"));
	        		blank = ("null".equals(String.valueOf(cell_i.getObject("blank"))))?"":String.valueOf(cell_i.getObject("blank"));
	        		where_transact = ("null".equals(String.valueOf(cell_i.getObject("where_transact"))))?"":String.valueOf(cell_i.getObject("where_transact"));
	        		filling_explanation = ("null".equals(String.valueOf(cell_i.getObject("filling_explanation"))))?"":String.valueOf(cell_i.getObject("filling_explanation"));
	        		is_example = ("null".equals(String.valueOf(cell_i.getObject("is_example"))))?"":String.valueOf(cell_i.getObject("is_example"));

	        		version = ("null".equals(String.valueOf(cell_i.getObject("version"))))?"":String.valueOf(cell_i.getObject("version"));
	        		template_name = ("null".equals(String.valueOf(cell_i.getObject("template_name"))))?"":String.valueOf(cell_i.getObject("template_name"));
	        		is_sample = ("null".equals(String.valueOf(cell_i.getObject("is_sample"))))?"":String.valueOf(cell_i.getObject("is_sample"));
	        		sort_order = ("null".equals(String.valueOf(cell_i.getObject("sort_order"))))?"":String.valueOf(cell_i.getObject("sort_order"));
	        		must = ("null".equals(String.valueOf(cell_i.getObject("must"))))?"":String.valueOf(cell_i.getObject("must"));
	        		
	        		example = ("null".equals(String.valueOf(cell_i.getObject("example"))))?"":String.valueOf(cell_i.getObject("example"));
	        		url = ("null".equals(String.valueOf(cell_i.getObject("url"))))?"":String.valueOf(cell_i.getObject("url"));
	        		flag = ("null".equals(String.valueOf(cell_i.getObject("flag"))))?"":String.valueOf(cell_i.getObject("flag"));
	        		type_i = ("null".equals(String.valueOf(cell_i.getObject("type"))))?"":String.valueOf(cell_i.getObject("type"));
	        		explain = ("null".equals(String.valueOf(cell_i.getObject("explain"))))?"":String.valueOf(cell_i.getObject("explain"));
	        		
	        		code = ("null".equals(String.valueOf(cell_i.getObject("code"))))?"":String.valueOf(cell_i.getObject("code"));
	        		accept_standard = ("null".equals(String.valueOf(cell_i.getObject("accept_standard"))))?"":String.valueOf(cell_i.getObject("accept_standard"));
	        		is_blank = ("null".equals(String.valueOf(cell_i.getObject("is_blank"))))?"":String.valueOf(cell_i.getObject("is_blank"));
	        		material_basis = ("null".equals(String.valueOf(cell_i.getObject("material_basis"))))?"":String.valueOf(cell_i.getObject("material_basis"));
	        		sample = ("null".equals(String.valueOf(cell_i.getObject("sample"))))?"":String.valueOf(cell_i.getObject("sample"));

	        		sample_name = ("null".equals(String.valueOf(cell_i.getObject("sample_name"))))?"":String.valueOf(cell_i.getObject("sample_name"));
	        		name_i = ("null".equals(String.valueOf(cell_i.getObject("name"))))?"":String.valueOf(cell_i.getObject("name"));
	        		original = ("null".equals(String.valueOf(cell_i.getObject("original"))))?"":String.valueOf(cell_i.getObject("original"));
	        		template = ("null".equals(String.valueOf(cell_i.getObject("template"))))?"":String.valueOf(cell_i.getObject("template"));
	        		filename = ("null".equals(String.valueOf(cell_i.getObject("filename"))))?"":String.valueOf(cell_i.getObject("filename"));
	        		
	        		example_name = ("null".equals(String.valueOf(cell_i.getObject("example_name"))))?"":String.valueOf(cell_i.getObject("example_name"));
	        		copy = ("null".equals(String.valueOf(cell_i.getObject("copy"))))?"":String.valueOf(cell_i.getObject("copy"));
	        		check_real = ("null".equals(String.valueOf(cell_i.getObject("check_real"))))?"":String.valueOf(cell_i.getObject("check_real"));
	        		origin = ("null".equals(String.valueOf(cell_i.getObject("origin"))))?"":String.valueOf(cell_i.getObject("origin"));
	        		folder_id = ("null".equals(String.valueOf(cell_i.getObject("folder_id"))))?"":String.valueOf(cell_i.getObject("folder_id"));

	        		rownum_ = ("null".equals(String.valueOf(cell_i.getObject("rownum_"))))?"":String.valueOf(cell_i.getObject("rownum_"));
	        		blank_name = ("null".equals(String.valueOf(cell_i.getObject("blank_name"))))?"":String.valueOf(cell_i.getObject("blank_name"));
	        		constant_code = ("null".equals(String.valueOf(cell_i.getObject("constant_code"))))?"":String.valueOf(cell_i.getObject("constant_code"));
	        		item_code_i = ("null".equals(String.valueOf(cell_i.getObject("item_code"))))?"":String.valueOf(cell_i.getObject("item_code"));
	        		business_type = ("null".equals(String.valueOf(cell_i.getObject("business_type"))))?"":String.valueOf(cell_i.getObject("business_type"));
	        		
	        		sort_code = ("null".equals(String.valueOf(cell_i.getObject("sort_code"))))?"":String.valueOf(cell_i.getObject("sort_code"));

    				index = 0;
        			sqlBF.setLength(0);
        			sqlBF.append(" INSERT INTO ga0001.tzxmsxqd_sqcl( ");
        			sqlBF.append("             id, clxh, type, org_name, inner_code, name, item_code, item_version, ");
        			sqlBF.append("             is_template, what, publisher, remark, how_transact, paper_material_format, ");
        			sqlBF.append("             blank, where_transact, filling_explanation, is_example, template_name, ");
        			sqlBF.append("             is_sample, sort_order, must, example, url, flag, explain, code, ");
        			sqlBF.append("             accept_standard, is_blank, material_basis, sample, sample_name, ");
        			sqlBF.append("             original, template, filename, example_name, copy, check_real, ");
        			sqlBF.append("             origin, folder_id, rownum_, blank_name, constant_code, business_type, ");
        			sqlBF.append("             sort_code, type_i, name_i, item_code_i, version) ");
        			sqlBF.append("     VALUES (?, ?, ?, ?, ?, ?, ?, ?, ");
        			sqlBF.append("             ?, ?, ?, ?, ?, ?, ");
        			sqlBF.append("             ?, ?, ?, ?, ?, ");
        			sqlBF.append("             ?, ?, ?, ?, ?, ?, ?, ?, ");
        			sqlBF.append("             ?, ?, ?, ?, ?, ");
        			sqlBF.append("             ?, ?, ?, ?, ?, ?, ");
        			sqlBF.append("             ?, ?, ?, ?, ?, ?, ");
        			sqlBF.append("             ?, ?, ?, ?, ?) ");
        			sql .setSql(sqlBF.toString());
        			sql.setString(++index, id);
        			sql.setString(++index, String.valueOf(clxh));
        			sql.setString(++index, type);
        			sql.setString(++index, org_name);
        			sql.setString(++index, inner_code);
        			
        			sql.setString(++index, name);
        			sql.setString(++index, item_code);
        			sql.setString(++index, item_version);
        			sql.setString(++index, is_template);
        			sql.setString(++index, what);
        			
        			sql.setString(++index, publisher);
        			sql.setString(++index, remark);
        			sql.setString(++index, how_transact);
        			sql.setString(++index, paper_material_format);
        			sql.setString(++index, blank);
        			
        			sql.setString(++index, where_transact);
        			sql.setString(++index, filling_explanation);
        			sql.setString(++index, is_example);
        			sql.setString(++index, template_name);
        			sql.setString(++index, is_sample);
        			
        			sql.setString(++index, sort_order);
        			sql.setString(++index, must);
        			sql.setString(++index, example);
        			sql.setString(++index, url);
        			sql.setString(++index, flag);
        			
        			sql.setString(++index, explain);
        			sql.setString(++index, code);
        			sql.setString(++index, accept_standard);
        			sql.setString(++index, is_blank);
        			sql.setString(++index, material_basis);
        			
        			sql.setString(++index, sample);
        			sql.setString(++index, sample_name);
        			sql.setString(++index, original);
        			sql.setString(++index, template);
        			sql.setString(++index, filename);
        			
        			sql.setString(++index, example_name);
        			sql.setString(++index, copy);
        			sql.setString(++index, check_real);
        			sql.setString(++index, origin);
        			sql.setString(++index, folder_id);
        			
        			sql.setString(++index, rownum_);
        			sql.setString(++index, blank_name);
        			sql.setString(++index, constant_code);
        			sql.setString(++index, business_type);
        			sql.setString(++index, sort_code);
        			
        			sql.setString(++index, type_i);
        			sql.setString(++index, name_i);
        			sql.setString(++index, item_code_i);
        			sql.setString(++index, version);
        			sql.executeUpdate();
	    			

	        	}
	        	tr.commitWithoutStart();
	        	System.out.println("getXmSqclList()---->end");
	        }
		}
		
		System.out.println("getXmSqclList()---->overAll");
		return null;
	}
	/**
	 * httpGet抽取基本要素
	 * 
	 * @description
	 * @author 徐本錫
	 * @date 2019年4月16日
	 * @version V1.0
	 * @throws DocumentException 
	 */
	public static void doGet_jbys() throws AppException {
		HttpResponse httpResponse = null;
		HttpClient httpClient = new DefaultHttpClient();
		
		//查詢事項清單清單
		GlobalNames.CONFIGINWAR = "true";
		FormalRunDB.setFormalRunDB(false);//正式庫
//		DebugModeConfig.setDebugMode(false);//非debug模式
		Transaction tr = TransactionManager.getTransaction();
		tr.begin();
		index = 0;
		sqlBF.setLength(0);
		sqlBF.append(" select a.id, a.type, a.org_name, a.inner_code, a.name ");
		sqlBF.append("   from  ga0001.tzxmsxqd a ");
		sqlBF.append("  where not exists (select 1 from ga0001.tzxmsxqd_jbys x where a.id=x.id)  ");
		sql .setSql(sqlBF.toString());
		DataStore vdsSXQD = sql.executeQuery();
		tr.commitWithoutStart();
		
		//循環請求資料
		int i=0;
		String id="", type="", org_name="", inner_code="", name="";
		String url = "";
		for(DataObject obj : vdsSXQD) {
			id = obj.getString("id", "");
			type = obj.getString("type", "");
			org_name = obj.getString("org_name", "");
			inner_code = obj.getString("inner_code", "");
			name = obj.getString("name", "");
			System.out.println("正在處理第"+ String.valueOf(++i) +"條事項:"+name);
			url = "http://221.214.94.36:81/sxk/main/power/"+type+"/"+id+"?_=1555484662484";
			HttpGet get = new HttpGet(url);
			
			GlobalNames.CONFIGINWAR = "true";
			FormalRunDB.setFormalRunDB(false);//正式庫
//			DebugModeConfig.setDebugMode(false);//非debug模式
			tr = TransactionManager.getTransaction();
			tr.begin();
			
			index = 0;
			sqlBF.setLength(0);
			sqlBF.append("delete from ga0001.tzxmsxqd_jbys where id=? ");
			sql .setSql(sqlBF.toString());
			sql.setString(++index, id);
			sql.executeUpdate();
			
			StringBuffer keyBF = new StringBuffer();
			StringBuffer valueBF = new StringBuffer();
			keyBF.append(" insert into ga0001.tzxmsxqd_jbys (id, type, org_name, inner_code, name, cqsj ");
			valueBF.append("    VALUES (?, ?, ?, ?, ?, ? ");
			
			try {
				httpResponse = httpClient.execute(get, localContext);
				HttpEntity httpEntity = httpResponse.getEntity();
				String httpResult = EntityUtils.toString(httpEntity);
				Document document = Jsoup.parse(httpResult);
				//Elements elementsJBYS = document.getElementsByClass("pull-left");
				Elements elementsJBYSList = document.getElementsByClass("item-body");
				
				for (Element element : elementsJBYSList) {
					Elements elementsKEY = element.getElementsByClass("item-left");
					Elements elementsVALUE = element.getElementsByClass("item-right");
					String key = elementsKEY.text().trim();
					String value = elementsVALUE.text().trim();
					keyBF.append(",\""+key+"\"");
					valueBF.append(", '"+value+"'");
				}
				keyBF.append(") ");
				valueBF.append(") ");
				index = 0;
				sqlBF.setLength(0);
				sqlBF.append(keyBF).append(valueBF);
				sql .setSql(sqlBF.toString());
				sql.setString(++index, id);
				sql.setString(++index, type);
				sql.setString(++index, org_name);
				sql.setString(++index, inner_code);
				sql.setString(++index, name);
				sql.setDateTime(++index, DateUtil.getDBTime());
				sql.executeUpdate();
				tr.commitWithoutStart();
			} catch (IOException e) {
				tr.rollback();
				e.printStackTrace();
			}
		}
		
	}

	/**
	 * 抽取項目清單
	 * @description 
	 * @author 徐本錫
	 * @date 2019年4月17日
	 * @version V1.0
	 * @throws AppException 
	 */
	public static String getXmList() throws AppException {
		/*		
		http://221.214.94.36:81/sxk/main
		
		123456
		*/
		String httpStr = "";
		String url = "http://221.214.94.36:81/sxk/mng/project/change/info/query";
		Map<String,Object> params=new HashMap<String,Object>();
		params.put("Accept", "application/json, text/javascript, */*; q=0.01");
		params.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		params.put("X-Requested-With", "XMLHttpRequest");
		params.put("Referer", "http://221.214.94.36:81/sxk/mng/project/change/info/index?v=1555459803922");
		params.put("Accept-Language", "zh-CN");
		params.put("Accept-Encoding", "gzip, deflate");
		params.put("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)");
		params.put("Host", "221.214.94.36:81");
		params.put("Content-Length", "65");
		params.put("DNT", "1");
		params.put("Connection", "Keep-Alive");
		params.put("Cache-Control", "no-cache");
		//params.put("Cookie", "td_cookie=18446744069731352277; JSESSIONID=2BA9A59C8E68D0633EC3678BDFFAC749; webfinal.session.errorCount=0; webfinal.session.id=51f435c7-5f0c-4e6c-a883-e2e0d9f43c2b");
	//	params.put("", "");
		params.put("_search", "false");
		params.put("nd", "1555402726472");
		params.put("rows", "300");
		params.put("page", "1");
		params.put("sidx", "CODE");
		params.put("sord", "desc");
		
        BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "58DEDE9E70972800E2DA909F3445661E");
        cookie.setVersion(0);
        cookie.setDomain("221.214.94.36");
        cookie.setPath("/sxk/mng/project/change/info/query");
		
        httpStr = doPost(url, params, cookie, true);
        if("302".equals(httpStr)) {
        	
        }else if("error".equals(httpStr)){
        	
        }else {
        	DataObject vdo = DataObject.parseJSON(httpStr);
//        	Gson gson = new Gson();
//    		Map map = gson.fromJson(httpStr, Map.class);
        	int page = vdo.getInt("page");
        	int records = vdo.getInt("records");
        	int total = vdo.getInt("total");
        	DataStore dsRows = vdo.getDataStore("rows");
        	DataObject cell_i = new DataObject();
        	String hid="",hversion="",org_name="",region_code="",property="",state="",inner_code="",name="",rownum_="",status="",
        		   code="",region_name="",f_name="",org_code="",folder_code="",version="",handle_name="",id="",hstatus="",htype="",
        		   hstate="",type="";	
        	 
        	//事務
        	System.out.println("getXmList()---->start");
    		GlobalNames.CONFIGINWAR = "true";
    		FormalRunDB.setFormalRunDB(false);//正式庫
//    		DebugModeConfig.setDebugMode(false);//非debug模式
    		Transaction tr = TransactionManager.getTransaction();
    		tr.begin();
//    		tr.rollback();
//    		tr.commitWithoutStart();
        	for(DataObject obj : dsRows) {
        		cell_i =  DataObject.parseJSON(obj.getString("cell"));
        		hid = ("null".equals(String.valueOf(cell_i.getObject("hid"))))?"":String.valueOf(cell_i.getObject("hid"));
        		hversion = ("null".equals(String.valueOf(cell_i.getObject("hversion"))))?"":String.valueOf(cell_i.getObject("hversion"));
        		org_name = ("null".equals(String.valueOf(cell_i.getObject("org_name"))))?"":String.valueOf(cell_i.getObject("org_name"));
        		region_code = ("null".equals(String.valueOf(cell_i.getObject("region_code"))))?"":String.valueOf(cell_i.getObject("region_code"));
        		property = ("null".equals(String.valueOf(cell_i.getObject("property"))))?"":String.valueOf(cell_i.getObject("property"));

        		state = ("null".equals(String.valueOf(cell_i.getObject("state"))))?"":String.valueOf(cell_i.getObject("state"));
        		inner_code = ("null".equals(String.valueOf(cell_i.getObject("inner_code"))))?"":String.valueOf(cell_i.getObject("inner_code"));
        		name = ("null".equals(String.valueOf(cell_i.getObject("name"))))?"":String.valueOf(cell_i.getObject("name"));
        		rownum_ = ("null".equals(String.valueOf(cell_i.getObject("rownum_"))))?"":String.valueOf(cell_i.getObject("rownum_"));
        		status = ("null".equals(String.valueOf(cell_i.getObject("status"))))?"":String.valueOf(cell_i.getObject("status"));
        		
        		code = ("null".equals(String.valueOf(cell_i.getObject("code"))))?"":String.valueOf(cell_i.getObject("code"));
        		region_name = ("null".equals(String.valueOf(cell_i.getObject("region_name"))))?"":String.valueOf(cell_i.getObject("region_name"));
        		f_name = ("null".equals(String.valueOf(cell_i.getObject("f_name"))))?"":String.valueOf(cell_i.getObject("f_name"));
        		org_code = ("null".equals(String.valueOf(cell_i.getObject("org_code"))))?"":String.valueOf(cell_i.getObject("org_code"));
        		folder_code = ("null".equals(String.valueOf(cell_i.getObject("folder_code"))))?"":String.valueOf(cell_i.getObject("folder_code"));
        		
        		version = ("null".equals(String.valueOf(cell_i.getObject("version"))))?"":String.valueOf(cell_i.getObject("version"));
        		handle_name = ("null".equals(String.valueOf(cell_i.getObject("handle_name"))))?"":String.valueOf(cell_i.getObject("handle_name"));
        		id = ("null".equals(String.valueOf(cell_i.getObject("id"))))?"":String.valueOf(cell_i.getObject("id"));
        		hstatus = ("null".equals(String.valueOf(cell_i.getObject("hstatus"))))?"":String.valueOf(cell_i.getObject("hstatus"));
        		htype = ("null".equals(String.valueOf(cell_i.getObject("htype"))))?"":String.valueOf(cell_i.getObject("htype"));
        		
        		hstate = ("null".equals(String.valueOf(cell_i.getObject("hstate"))))?"":String.valueOf(cell_i.getObject("hstate"));
        		type = ("null".equals(String.valueOf(cell_i.getObject("type"))))?"":String.valueOf(cell_i.getObject("type"));
        		
        		index = 0;
    			sqlBF.setLength(0);
    			sqlBF.append(" UPDATE ga0001.tzxmsxqd ");
    			sqlBF.append("    SET hid=?, hversion=?, org_name=?, region_code=?, property=?, state=?, ");
    			sqlBF.append("        inner_code=?, name=?, rownum_=?, status=?, code=?, region_name=?, ");
    			sqlBF.append("        f_name=?, org_code=?, folder_code=?, version=?, handle_name=?, ");
    			sqlBF.append("        hstatus=?, htype=?, hstate=?, type=?");
    			sqlBF.append("  WHERE id=? ");
    			sql .setSql(sqlBF.toString());
    			sql.setString(++index, hid);
    			sql.setString(++index, hversion);
    			sql.setString(++index, org_name);
    			sql.setString(++index, region_code);
    			sql.setString(++index, property);
    			
    			sql.setString(++index, state);
    			sql.setString(++index, inner_code);
    			sql.setString(++index, name);
    			sql.setString(++index, rownum_);
    			sql.setString(++index, status);
    			
    			sql.setString(++index, code);
    			sql.setString(++index, region_name);
    			sql.setString(++index, f_name);
    			sql.setString(++index, org_code);
    			sql.setString(++index, folder_code);
    			
    			sql.setString(++index, version);
    			sql.setString(++index, handle_name);
    			sql.setString(++index, hstatus);
    			sql.setString(++index, htype);
    			sql.setString(++index, hstate);
    			
    			sql.setString(++index, type);
    			sql.setString(++index, id);
    			int row = sql.executeUpdate();
    			if(row==0) {
    				index = 0;
        			sqlBF.setLength(0);
        			sqlBF.append(" INSERT INTO ga0001.tzxmsxqd( ");
        			sqlBF.append("             hid, hversion, org_name, region_code, property, state, inner_code, ");
        			sqlBF.append("             name, rownum_, status, code, region_name, f_name, org_code, folder_code, ");
        			sqlBF.append("             version, handle_name, id, hstatus, htype, hstate, type) ");
        			sqlBF.append("     VALUES (?, ?, ?, ?, ?, ?, ?, ");
        			sqlBF.append("             ?, ?, ?, ?, ?, ?, ?, ?, ");
        			sqlBF.append("             ?, ?, ?, ?, ?, ?, ?) ");
        			sql .setSql(sqlBF.toString());
        			sql.setString(++index, hid);
        			sql.setString(++index, hversion);
        			sql.setString(++index, org_name);
        			sql.setString(++index, region_code);
        			sql.setString(++index, property);
        			
        			sql.setString(++index, state);
        			sql.setString(++index, inner_code);
        			sql.setString(++index, name);
        			sql.setString(++index, rownum_);
        			sql.setString(++index, status);
        			
        			sql.setString(++index, code);
        			sql.setString(++index, region_name);
        			sql.setString(++index, f_name);
        			sql.setString(++index, org_code);
        			sql.setString(++index, folder_code);
        			
        			sql.setString(++index, version);
        			sql.setString(++index, handle_name);
        			sql.setString(++index, id);
        			sql.setString(++index, hstatus);
        			sql.setString(++index, htype);
        			
        			sql.setString(++index, hstate);
        			sql.setString(++index, type);
        			sql.executeUpdate();
    			}

        	}
        	tr.commitWithoutStart();
        	System.out.println("getXmList()---->end");
        }
		return httpStr;
	}
	/**
	/**
	 * 發送 POST 請求(HTTP),參數為 Key-Value 形式
	 *
	 * @param apiUrl API接口URL
	 * @param params 參數map
	 * @return
	 */
	public static String doPost(String url, Map<String,Object> params,  BasicClientCookie cookie, boolean withCookie) {
		HttpResponse response = null;
		HttpClient httpClient = new DefaultHttpClient();
		String httpStr = null;
		HttpPost httpPost = new HttpPost(url);

		if(withCookie) {
			BasicCookieStore cookieStore = new BasicCookieStore();
	        cookieStore.addCookie(cookie);
	        //帶有cookie的httpclient
	        httpClient = HttpClientBuilder.create().setDefaultCookieStore(cookieStore).build();
	      //httpClient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
		}
        
        RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(60000).setConnectTimeout(60000).setConnectionRequestTimeout(60000).build();
        
		try {
			httpPost.setConfig(requestConfig);
			List<NameValuePair> pairList = new ArrayList<>(params.size());
			for (Map.Entry<String, Object> entry : params.entrySet()) {
				NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry.getValue().toString());
				pairList.add(pair);
			}

			httpPost.setEntity(new UrlEncodedFormEntity(pairList, Charset.forName("UTF-8")));
			
			response = httpClient.execute(httpPost);
			//System.out.println(response.toString());
			HttpEntity entity = response.getEntity();
			
			int code = response.getStatusLine().getStatusCode();
			
			//重定向
			if(code==302){
/*				//釋放
				httpPost.abort();
				httpClient.getConnectionManager().closeIdleConnections(0, TimeUnit.MICROSECONDS);
				
				HttpGet locationUrl = new HttpGet(response.getLastHeader("location").getValue());
				response = httpClient.execute(locationUrl);
				System.out.println(response.toString());
				entity = response.getEntity();*/
				//System.out.println("302");
				httpStr="302";
			}else {
				httpStr = EntityUtils.toString(entity, "UTF-8");
			}
			
		} catch (IOException e) {
			httpStr="error";
			e.printStackTrace();
		} finally {
			if (response != null) {
				try {
					EntityUtils.consume(response.getEntity());
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		//System.out.println(httpStr);
		return httpStr;
	}
	
}