3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

动态数据采集业务逻辑

發布時間:2023/12/8 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态数据采集业务逻辑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據采集之后臺管理模塊


1.Control:MemoryReportControl
2.進入報表采集頁面并查詢列表/分頁:/index ?repIndex.jsp ??
后臺:
action:
PageDTO dto = memoryReportService.querAdmReportList(map);
model.addAttribute("dto", dto);
return "/admreport/repIndex;
service: MemoryReportServiceImpl.java ? queryPaginatedList
DAO : ? ?MemoryReportDao.java ?querAdmReport/queryAdmReportCount
XML : ?sqlmap-mapping-admin-queryreport.xml ? ?queryreport.query.admreportlist/queryreport.query.admreporCount

前臺:
<script type="text/javascript">
$(document).ready(function(){
$(".setup").hide();
$.PaginPan({
currentPage:${dto.currentPage},
totalPage:${dto.totalPage},
pageViewno:9,
wayUrl:'/parp/api/admin/memoryreport/index?pafaRetViewType=jsp&name=${name}&currentPage='
});
});
</script>
? ? 問題:1.pafaRetViewType=jsp ?這個參數 什么意思呢???


3.查看詳情/修改 /repuppage ?uppage.jsp
后臺:
action:?
String uniquedetid = manageDeptService.uniquedetidlist(id); //查詢組織機構ID。一個報表可能有多個組織機構看?
AdmReportDTO repDto = memoryReportService.getAdmReportDTO(id);//查詢報表詳細信息.
List<BIReportDTO> biList = manageBIReprotService.queryAllBiInfoList();根據BI所有bi數據
service:
ManageDeptServiceImpl.java ? String uniquedetidlist(String reportid);
MemoryReportServiceImpl.java ? ?AdmReportDTO getAdmReportDTO(String id)
ManageBIReprotServiceImpl.java List<BIReportDTO> queryAllBiInfoList()?
dao:
AdmReportDTO getAdmReportDTO(String id)
manageBIReprotDAO.queryAllBiInfoList();

查詢組織機構:
select t1.paic_unique_deptid
?from parp_dept_report t, parp_paic_dept_info t1
where t.id_parp_paic_dept_info = t1.id_parp_paic_dept_info
and id_parp_report_info = #reportid#

查詢BI源
<select id="bireport.query.bireportinfolist" resultClass="com.paic.reportportal.admin.dto.BIReportDTO">
select t.id_bi_info as biId,t.name as biName,t1.bi_report_extend_attrs_tab as reportTab, t.dispatch_url as dispatchUrl?
from parp_bi_info ?t ,parp_bi_source_type t1 where t.id_bi_source_type=t1.id_bi_source_type order by t.created_date
</select>

前臺:1.<a href="<c:url value='/api/admin/memoryreport/repuppage?pafaRetViewType=jsp&'/>id=${item.id}">查看詳情</a> 跳轉到查看詳情
2.EL 表達式加載后臺查詢的值
3.根據BI源的變化 選擇報表擴展屬性Tap頁。/gotoAttrsPage
forReportAttrTab({attrTab:extendTab,tabName:tabName,reportid:$("#reportid").val()},"<c:url value='/api/admin/memoryreport/gotoAttrsPage?pafaRetViewType=jsp'/>",extendTab);


?
4.失效
5.刪除
<c:if test="${item.isValid=='Y'}">
<a href="javascript:void(0);" οnclick="if(confirm('確認是否失效!')){handleReport('<c:url value='/api/admin/memoryreport/handleReport?pafaRetViewType=jsp'/>','${item.id}','${item.isValid}','invalidation','<c:url value='/api/admin/memoryreport/index?pafaRetViewType=jsp'/>');}">失效</a>
</c:if>
<c:if test="${item.isValid=='N'}">
<a href="javascript:void(0);" οnclick="if(confirm('確認是否啟用!')){handleReport('<c:url value='/api/admin/memoryreport/handleReport?pafaRetViewType=jsp'/>','${item.id}','${item.isValid}','startUp','<c:url value='/api/admin/memoryreport/index?pafaRetViewType=jsp'/>');}">啟用</a>
</c:if>
<a href="javascript:void(0);" οnclick="if(confirm('確認是否刪除!')){handleReport('<c:url value='/api/admin/memoryreport/handleReport?pafaRetViewType=jsp'/>','${item.id}','${item.isValid}','delete','<c:url value='/api/admin/memoryreport/index?pafaRetViewType=jsp'/>');}">刪除</a> </td>




6.新增頁面:/torepinpage ? inpage.jsp






新增保存插入報表基本信息/存儲路徑過程:


1.前臺 inpage.jsp?
<%@ include file="/pages/admreport/userclass.jsp"%>
點擊確定 觸發驗證方法
<td align="center" colspan="2"><input type="button" value="確認" οnclick="validateVal();"/></td>

2.validateVal() ?驗證是否重復 是否有效 是否超長。 webEvent.js
if(sta&&validateValForMonitor()){
document.mainform.submit();
}
?
3.驗證成功 提交表單 到后臺 memoryreport/insertOrUpdate
<form id="mainform" name="mainform" action="<c:url value='/api/admin/memoryreport/insertOrUpdate?pafaRetViewType=jsp'/>" enctype="multipart/form-data" method="post">


4.后臺 ?MemoryReportController.java ?/insertOrUpdate
// 判斷是進行新增還是修改操作
if (StringUtils.isEmpty(reportid)) {
newReportId = memoryReportService.insertAdmReport(mapVal);
mapVal.put("reportid", newReportId);
memoryReportService.insertReportMonitor(mapVal);

} else {
memoryReportService.updateAdmReport(mapVal);
// 更新監控SQL配置信息
memoryReportService.updateReportMonitor(mapVal);

}
5.后臺Service 新增業務邏輯 ?MemoryReportServiceImpl。java ? insertAdmReport()
//新增業務邏輯
public String insertAdmReport(Map<String, String> map) {
String result = null;
if (StringUtils.isBlank(map.get("reportid"))) {
result = commonDAO.queryGUID();
map.put("reportid", result);
}
setReportTypeID(map);
insertDept(map);
insertOrUpdateEventChannel(map);
memoryReportDAO.insertAdmReport(map);
memoryReportDAO.insertReportAttrs(insertAttrsTableSQL(map));
return result;
}

6.DAO
public void insertReportAttrs(Map map) {
log.debug("query insertReportAttrs ?dao start");
this._insert("queryreport.insert.admreportattrs", map);
log.debug("query insertReportAttrs ?dao end");
}

map={fieldList=[{value=Y, key=taday_isornot_send}, {value=N, key=eoa_finish_send}, {value=444/925/2/6CCDDE3E001946388FB0509F64F3F8CF/, key=sqlmapper}, {value=CSV, key=download_type}
? ? ? ? ? ? ? ], id_report_info=4D80D3B29AE95A24E0531580140AA64B, attrsTbl=PARP_MB_REPORT_EXTEND_ATTRS
}
<insert id="queryreport.insert.admreportattrs" parameterClass="java.util.HashMap" >
? ? ? ? ?insert into $attrsTbl$
? ? ? ? ?(
? ? ? ? ? ?<iterate property="fieldList" conjunction=",">
? ? ? $fieldList[].key$
? ? ?</iterate>
? ? ? ? ?,id_report_info)
? ? ? ? ?values
? ? ? ? ?(
? ? ? ? ? <iterate property="fieldList" conjunction=",">
? ? ? #fieldList[].value#
? ? ?</iterate>
? ? ? ? ?,#id_report_info#)
? ? ?</insert>





報表編譯新 ?
SQL編譯提交過程: ? ??
1.inpage.jsp ?Ajax加載執行 ?forReportAttrTab({attrTab:extendTab},"<c:url value='/api/admin/memoryreport/gotoAttrsPage?pafaRetViewType=jsp'/>",extendTab);
2.進入后臺 MemoryReportControl.java ?gotoAttrsPage()方法 ??
返回 return "/admreport/" + attrTab; ? 根據實際情況異步加載 ?報表擴展屬性Tab頁
3.MB_REPORT_EXTEND_ATTRS.jsp ? 點擊<span><a id="updateModule" οnclick="editorViewHtml('editorSql')" style="cursor:pointer">報表編輯(新)</a></span>
4.editorSql() ?/editorSql ? ?進入編譯SQL頁面 editorSql.jsp
5.提交保存并生成新sqlid
function submitForSaveSql() {
if ( !checkDataForCurSql() ) {
return false;
}
EidtorSQLTool.saveSql();
setSqlId();
}
6. Editorsql.js ? ?savesql方法: ? ? ?EidtorSQLTool._submit(EidtorSQLTool.allArray);
7. Editorsql.js ? ?submit方法 ? ? ? ? url:"/commonreport/api/saveSql?pafaRetViewType=jsp",
8.進入后臺 ?ReportConfigsController.java ? saveSql() ? ?/saveSql ?方法 保存
9.最后本地磁盤保存地址 ?.sql ?.data 文件
D:\parp\report\792\135\234\8D40A7974DBF6B9B56E4E7D513C867DD




報表編譯窗口模塊:
1.editor.jsp ? 點擊下一步
<a href="javascript:void(0);" οnclick="EidtorSQLTool._nextButton()">
<span class="b_btn">
<span title="下一步" class="gp_btn_img gp_btn_ti0 gp_btn_wd" >下一步</span>
</span>
</a>
2.editorsql.js _nextButton()
_nextButton:function() {
location.href = "/commonreport/api/toparpReportEditor?pafaRetViewType=jsp&path="+EidtorSQLTool.path;
}


3.進入后臺 ?ReportConfigsController.java ? toparpReportEditor() /toparpReportEditor ? 進入可視化窗口頁面 ?parpReportEditor.jsp
return "/customBIReport/parpReportEditor";
4.parpReportEditor.jsp 頁面 ?工具編輯報表 ? ?最后點擊保存生成 module.html,temp.html ? ?
D:\parp\report\792\135\234\8D40A7974DBF6B9B56E4E7D513C867DD
1)前臺頁面 <form style="width: 100%;height: 100%;" action="javascript:void(0)" οnsubmit="save_file_local(getFckText());">
2) save_file_local() ?AJAX 異步進入后臺?
url : "/commonreport/api/saveHtmlContent?pafaRetViewType=jsp",


3)進入后臺 ?ReportConfigsController.java ?/saveHtmlContent ?saveHtmlContent() ?生成 module.html,temp.html


前段保存過程:
1)點擊保存觸發 FCKeditorAPI工具 表單里面的submit事件
<form style="width: 100%;height: 100%;" action="javascript:void(0)" οnsubmit="save_file_local(getFckText());">
2)獲取編輯器內容getFckText()。
var getFckText = function() {
var oEditor = FCKeditorAPI.GetInstance('MyTextarea');//獲取頁面中的FCK對象
return oEditor.GetXHTML(true);//獲取編輯器中的內容..
};
3)將編輯器中的內容轉換成需要保存的HTML內容 ? content = transEditorStrToHtmlFileStr(content);
var colStrArr = [];
var tempContent = "";// 編輯保存頁面內容
function transEditorStrToHtmlFileStr( editorStr ) {
var resultStr = editorStr;// 可不作空判斷,保存為空html文件
//特殊處理input標簽中的屬性cnname
if (resultStr.indexOf("cnname") != -1) {
resultStr = resultStr.replace(" cnname=", " cnName=");
}
resultStr = EditorContent( resultStr );// 翻譯各個控件元素
var headStr = setHead4Selects( resultStr );// 處理獲取文件HEAD內容
if ( !resultStr.startWith('<html>') ) {
resultStr = '<html><head>\r\n' + headStr + '\r\n</head><body>\r\n' + resultStr + '\r\n</body></html>';
// tempContent = '<html><head></head><body>\r\n' + editorStr + '\r\n</body></html>';
tempContent = dealMyAreaTag(editorStr);
}
return resultStr;
}
4)AJAX 異步保存進入后臺方法 保存報表展示及編輯兩個HTML文件
function save_file_local( content ) {
content = transEditorStrToHtmlFileStr(content);
$.ajax({
type : "POST",
data : { "htmlcontent":content, "temphtml":tempContent, "path":"${path}" },
url : "/commonreport/api/saveHtmlContent?pafaRetViewType=jsp",
dataType : "text",
async : false,
contentType : "application/x-www-form-urlencoded; charset=utf-8",
success : function (data) {
alert("編輯成功!");
}
});
}

前端頁面插入節點執行過程:
1)頁面開始加載的時候 ?組裝建模樹并加載
/**
* 加載建模結果樹
*/
$(document).ready(function() {
treeArray();
$.fn.zTree.init($("#treeDemo"), setting, tmpzNodes);
});
2)樹的結構 setting 里面綁定 點擊事件 onclick
3)onclik()方法 判斷表格區/非表格區 插入所點擊節點
4)insNewNodeHtml(columnName, columnCnName, nodeType) 插入到頁面
A.獲取頁面中的FCK對象 ?var oEditor = FCKeditorAPI.GetInstance('MyTextarea');
B.判斷編輯要插入的內容
newNodeStr = "<input id=\"" + columnName + "\" title=\"" + columnName + "\" value=\"" + columnCnName + "\" _tabdatainput=\"true\" type=\"text\" readonly=\"readonly\" contenteditable=\"false\" style=\"background-color: #66cccc; width: 80px; height: 18px\" />";?
C.利用 FCKeditorAPI工具插入到頁面 ? oEditor.InsertHtml(newNodeStr);
?


?
三.前臺數據采集查詢 ? 報表采集數據過程


1.進入當前報表主頁過程
CustomBIController.java ?/reportMainJsp ? 進入 ?reportMainJsp.jsp 頁面
/reportMainJsp
{REPORT_TYPE_NAME=report, ID_MB_REPORT_EXTEND_ATTRS=4CEEF5A9FF8E30DEE0531580140A0B2C, REPORT_NAME=wangdingxinTest2, PWD_SOURCE=cyberark, TADAY_ISORNOT_SEND=Y, BI_IS_VALID=Y, BI_NAME=自定義BI, BI_VERSION=3.2.3, BI_EXTEND_ATTRS_TBL=PARP_MB_BI_EXTEND_ATTRS, CYBERARK_CRED_APPID=appID, MODULE_HTML_PATH=null, UPDATED_DATE=2017-04-12 09:16:36.0, IS_VALID=N, IS_USER_VALIDATION=null, REFRESHURL=null, CYBERARK_AUTHNAME=parpopr, CREATED_DATE=2017-04-12 09:16:36.0, CREATED_BY=WANGYUPENG002, REPORT_EXTEND_ATTRS_TBL=PARP_MB_REPORT_EXTEND_ATTRS, imgPath=http://localhost:8080/commonreport//transFile/518/409/960/D2F5ECEBF8AEE182FFAD7FEBB2C362E4/, ID_MB_BI_EXTEND_ATTRS=0717D4EE19C7FCB4E0531480140A5FF0, MONITORSQL=null, PASSWORD=parp1234, BI_TYPE_NAME=MyBatis, BI_DESC=自定義BI, CYBERARK_CRED_FILEPATH=null, REPORT_IS_VALID=Y, CYBERARK_PWD_FOLDER=folder, ID_BI_INFO=0717D4EE19C7FCB4E0531480140A5FF0, LINES_PER_PAGE=20, DOWNLOAD_TYPE=CSV, EOA_FINISH_SEND=N, CYBERARK_PWD_KEY=key, DRIVER_CLASS=oracle.jdbc.driver.OracleDriver, REPORT_DESC=wangdingxinTest2基礎報表測試, DISPATCH_URL=http://localhost:8080/commonreport/, IS_REGULAR=N, UPDATED_BY=WANGYUPENG002, CYBERARK_PWD_SAFE=safe, REPORT_ACC_TYPE=API, SQLMAPPER=518/409/960/D2F5ECEBF8AEE182FFAD7FEBB2C362E4/, HEAD_EXCEL_PATH=null, USERNAME=parpdata, JDBC_URL=jdbc:oracle:thin:@d0parp.dbdev.paic.com.cn:1526:d0parp, ID_REPORT_INFO=4CEEF5A9FF8C30DEE0531580140A0B2C, STATEMENT_ID=null, HEAD_HTML_PATH=null}
1)獲取reportid?
TokenDTO token = new TokenDTO(tokenString);
paramMap.put("reportid", token.getReportId());
2)根據reportid 查找報表配置基本信息
Map<String, String> contentAndView = reportInfoService.queryReportExtendAttributes(paramMap);
3)根據查詢結果初始化 報表配置信息,并判斷是否準備好數據
if ("Y".equals(MONITOR_IS_VALLID)) {
resultMonitorInfo = (Map<String, String>) customQueryService
.getResultMonitorInfo(contentAndView);
}


4)返回 進入 報表頁面 ? reportMain.jsp ? 問題://是reportMain.jsp 嗎? ?那后面的/reportHead ?是 怎么進去的?
return "reportMain";
5)reportMain.jsp ?加載Iframe src ?進入裝在報表頭的 方法 ? CustomBiController.java ?/reportHead
frame.src="<c:url value='/api/reportHead?reportid=${reportid}&remoteFlag=${remoteFlag}&isEoa=${isEoa}&eoasessionid=${eoasessionid}&pafaRetViewType=jsp'/>"; ?


6)reportHead 方法查找報表的基礎 配置信息及 寫入的路勁 ? ? ? ? ? ? ? ? ? ? ?518/409/960/D2F5ECEBF8AEE182FFAD7FEBB2C362E4/
Map<String, String> contentAndView = customQueryService.getReportViewAndContent(reportId);
查詢modelname List<ReportModuleDTO> mdList = reportModuleService.queryModname(map);
IS_REGULAR=null ?Map resultData = customQueryService.initReportData(contentAndView,storageRootPath + contentAndView.get("content"));
查詢報表名字 配置源基本信息 ? Map reportMap = reportInfoService.queryExtendAttr(reportId);
?
contentAndView={uid=WANGYUPENG002, REPORT_TYPE_NAME=report, BI_IS_VALID=Y, IS_USER_VALIDATION=null, REFRESHURL=null, imgPath=http://localhost:8080/commonreport//transFile/518/409/960/D2F5ECEBF8AEE182FFAD7FEBB2C362E4/, BI_TYPE_NAME=MyBatis, BI_DESC=自定義BI, CYBERARK_PWD_FOLDER=folder, REPORT_IS_VALID=Y, LINES_PER_PAGE=20, EOA_FINISH_SEND=N, DOWNLOAD_TYPE=CSV, content=518/409/960/D2F5ECEBF8AEE182FFAD7FEBB2C362E4/, DRIVER_CLASS=oracle.jdbc.driver.OracleDriver, CYBERARK_PWD_KEY=key, CYBERARK_PWD_SAFE=safe, UPDATED_BY=WANGYUPENG002, USERNAME=parpdata, view=customBIReport/commonReport, JDBC_URL=jdbc:oracle:thin:@d0parp.dbdev.paic.com.cn:1526:d0parp, ID_MB_REPORT_EXTEND_ATTRS=4CEEF5A9FF8E30DEE0531580140A0B2C, operateid=237EB31270724C02B857DE5D70BEB55D, TADAY_ISORNOT_SEND=Y, PWD_SOURCE=cyberark, REPORT_NAME=wangdingxinTest2, BI_VERSION=3.2.3, BI_NAME=自定義BI, BI_EXTEND_ATTRS_TBL=PARP_MB_BI_EXTEND_ATTRS, MODULE_HTML_PATH=null, CYBERARK_CRED_APPID=appID, UPDATED_DATE=2017-04-12 09:16:36.0, IS_VALID=N, CYBERARK_AUTHNAME=parpopr, CREATED_DATE=2017-04-12 09:16:36.0, CREATED_BY=WANGYUPENG002, REPORT_EXTEND_ATTRS_TBL=PARP_MB_REPORT_EXTEND_ATTRS, ID_MB_BI_EXTEND_ATTRS=0717D4EE19C7FCB4E0531480140A5FF0, MONITORSQL=null, PASSWORD=parp1234, CYBERARK_CRED_FILEPATH=null, ID_BI_INFO=0717D4EE19C7FCB4E0531480140A5FF0, REPORT_DESC=wangdingxinTest2基礎報表測試, IS_REGULAR=N, DISPATCH_URL=http://localhost:8080/commonreport/, REPORT_ACC_TYPE=API, SQLMAPPER=518/409/960/D2F5ECEBF8AEE182FFAD7FEBB2C362E4/, HEAD_EXCEL_PATH=null, ID_REPORT_INFO=4CEEF5A9FF8C30DEE0531580140A0B2C, STATEMENT_ID=null, HEAD_HTML_PATH=null}
reportMap={REPORT_TYPE_NAME=report, ID_MB_REPORT_EXTEND_ATTRS=4CEEF5A9FF8E30DEE0531580140A0B2C, REPORT_NAME=wangdingxinTest2, PWD_SOURCE=cyberark, TADAY_ISORNOT_SEND=Y, BI_IS_VALID=Y, BI_NAME=自定義BI, BI_VERSION=3.2.3, BI_EXTEND_ATTRS_TBL=PARP_MB_BI_EXTEND_ATTRS, CYBERARK_CRED_APPID=appID, MODULE_HTML_PATH=null, UPDATED_DATE=2017-04-12 09:16:36.0, IS_USER_VALIDATION=null, REFRESHURL=null, CYBERARK_AUTHNAME=parpopr, CREATED_DATE=2017-04-12 09:16:36.0, CREATED_BY=WANGYUPENG002, REPORT_EXTEND_ATTRS_TBL=PARP_MB_REPORT_EXTEND_ATTRS, ID_MB_BI_EXTEND_ATTRS=0717D4EE19C7FCB4E0531480140A5FF0, PASSWORD=parp1234, BI_TYPE_NAME=MyBatis, BI_DESC=自定義BI, CYBERARK_CRED_FILEPATH=null, REPORT_IS_VALID=Y, CYBERARK_PWD_FOLDER=folder, ID_BI_INFO=0717D4EE19C7FCB4E0531480140A5FF0, LINES_PER_PAGE=20, DOWNLOAD_TYPE=CSV, EOA_FINISH_SEND=N, CYBERARK_PWD_KEY=key, DRIVER_CLASS=oracle.jdbc.driver.OracleDriver, REPORT_DESC=wangdingxinTest2基礎報表測試, DISPATCH_URL=http://localhost:8080/commonreport/, IS_REGULAR=N, UPDATED_BY=WANGYUPENG002, CYBERARK_PWD_SAFE=safe, REPORT_ACC_TYPE=API, SQLMAPPER=518/409/960/D2F5ECEBF8AEE182FFAD7FEBB2C362E4/, HEAD_EXCEL_PATH=null, USERNAME=parpdata, JDBC_URL=jdbc:oracle:thin:@d0parp.dbdev.paic.com.cn:1526:d0parp, ID_REPORT_INFO=4CEEF5A9FF8C30DEE0531580140A0B2C, STATEMENT_ID=null, HEAD_HTML_PATH=null}
7)返回到 contentAndView.get("view") ? customBIReport/commonReport ?進入 commonReport.jsp 頁面
8)commonReport.jsp ?加載JS
A.temp.html ?加載tableLoadComponentData()方法 ? ?parp-table.js?
<div id="table_jB06XSUFFp"><script type='text/javascript'>tableLoadComponentData("{\"cols\":[{\"headName\":\"報表名\",\"colname\":\"NAME\"},{\"headName\":\"用戶名\",\"colname\":\"OPR_USERNAME\"},{\"headName\":\"是否有效\",\"colname\":\"IS_VALID\"},{\"headName\":\"訪問量\",\"colname\":\"ACC_TYPE\"}],\"sqlid\":\"SQL_KZsxPqMkvG\",\"type\":\"table\",\"isPage\":true,\"componentID\":\"table_jB06XSUFFp\",\"title\":\"\"}",'table_jB06XSUFFp','N')</script></div>
&nbsp;<script type='text/javascript'>$(function(){if(null!=reportTitle||""!=reportTitle){$('#table_title').html(reportTitle);$('#parpdownload').show();}});</script>
B.tableLoadComponentData 執行加載 parpLoadComponentData()
function tableLoadComponentData(paramJson, divId, columnType, url, recordFlag) {
// 進行必要參數判斷
if (null == paramJson || "" == paramJson || null == divId || "" == divId) {
return;
}
if (null != columnType && "" != columnType && "Y" == columnType) {
jxmColumnJsontoStr(paramJson, divId);
}
parpLoadComponentData(paramJson, divId, url, recordFlag);
}
C. editor-tool.js
加載 parpLoadComponentData ? 異步請求后臺數據,將組裝好的html內容顯示到頁面上。
function parpLoadComponentData(paramJson, divId, url, recordFlag) {
// 進行必要參數判斷 ??
if (null == paramJson || "" == paramJson || null == divId || "" == divId) {
return;
}
var submitUrl = url;
if (url == null || url == "") {
submitUrl = "/commonreport/api/doQueryParpReportData?pafaRetViewType=jsp&reportId=" + reportid;
}
// 創建并記錄執行對象
var dataLoader = new ParpDataLoader(divId, submitUrl, paramJson);
dataLoader.queryData();
var ifRecord = typeof(arguments[3]) != "undefined" ? arguments[3] : true;
if (ifRecord) {
dataLoader.setShadowFlag(true);
parpQueryReportDataAreaMap.put(divId, dataLoader);
}
}
D. ?parp-DataLoader.js ?queryData(); ?查詢進入后臺 /doQueryParpReportData


9)CustomBiController.java ? /doQueryParpReportData
// 將頁面請求中的參數組裝到json中
executeParamJsonObj.put("requestParam", putAllParameters(request,operateId,parpReportId));
executeParamJsonObj.put("operateid", operateId);

// 獲取附加條件參數
JSONObject additionParamJsonObj = jObj.getJSONObject("additionParam");


return new String(componentHandleChain(umid, parpReportId,
executeParamJsonObj, additionParamJsonObj).getBytes("UTF-8"),
"ISO-8859-1");
}



10)ParpReportController.java ? componentHandleChain()
加載表頭
componentHandleResult = beginHandler.handleParpComponent(umid,
componentType, parpReportId, executeParamJsonObj,
additionParamJsonObj);


componentHandleResult="<table class="gridtable" width="100%">
<caption class="table_caption"></caption>
<tr>
<th>報表名</th>
<th>用戶名</th>
<th>是否有效</th>
<th>訪問量</th>
</tr>
</table>
<div style="clear:both"></div>"





<div id="'+shadowID+'" ><img src="/commonreport/images/page/loading-small.gif"/></div>






2.點擊查詢 ?報表查找數據過程 :
commonReport.jsp ?reportMain.jsp ?查詢綁定事件
<input name="查詢" type="button" value="查詢" οnclick="parpRefreshComponentData()"><br>


1.觸發事件 進入 parpRefreshComponentData(); ? ?parp-report-tools.js?
A.判斷是否是定期采集,若果是定期采集 要驗證采集日期是否填寫,驗證完畢轉移到 審批頁
if(null!=is_myzdcj){
isreportdownload=true;
if(null!=is_regular&&"Y"==is_regular.value){
effective_date=document.getElementById("effective_date");
expiry_date=document.getElementById("expiry_date");
period=document.getElementById("period");
term=document.getElementById("term");
effective_time=document.getElementById("effective_time");
if(!checkDataForMydqcj()){
return false;
}
}
submitToEoanew();
}else{
// 自定義序列化表單內容
$.each(parpQueryReportDataAreaMap.keysRemoveDuplicate(), function(i, field) {
parpQueryReportDataAreaMap.get(this).queryData();
});
}

定期采集:
B1.是定期采集 ?驗證完畢進入 submitToEoanew();查詢審批的URL ?。parp-report-tools.js ??
function submitToEoanew() {
var eoaUrl = "";
$.ajax({
type: "GET",
url: "/commonreport/api/queryForEoaUrl?reportId=" + reportid,
async:false,
success: function (data) {
eoaUrl = data + '&callbackFun=getEoaTemplateTmpnew(paramStr)';
}
});
//document.domain = 'paic.com.cn';
document.domain = eoaDomain;
window.open (eoaTemplateUrl + eoaUrl, "_blank",'width=800,height=700,top=100');
}

拼接URL和回調函數
回調函數:
1.getEoaTemplateTmpnew();
function getEoaTemplateTmpnew(paramStr){
window.opener.getnewEoaTemplateResultNew('<%=sessionId%>');
window.close();
}
2.getnewEoaTemplateResultNew(); ?parp-report-tools.js?
$.ajax({
type: "POST",
data:datas,
url: "/commonreport/api/queryForEoaAppUrl",
async: false,
success: function (data) {
if (data == "success") {
alert("已生成EOA,EOA審批完成后parp@pingan.com.cn會將數據發送到您的郵箱,請注意查收,謝謝!");
} else {
alert("提交到EOA失敗!");
}
}
});
window.parent.opener = null;
window.parent.open('','_self','');
window.parent.close();
3.后臺 queryForEoaAppUrl(),把定時任務簽報 查詢條件信息插入到表parp_report_eoa_session_detail。 ? SubmitToEoaController.java



? ? B2.進入后臺審批頁面 URL:eoaTemplateUrl + eoaUrl
eoaTemplateUrl="/commonreport/pages/customBIReport/eoaTemplet.jsp?url="
eoaUrl = "http://oas-eoa10-stg1.paic.com.cn/eoa/selectOutSysTemplate.do?requestSysName=PARP_CORE981837949&outSysSessionId=PARP_CORE1375633262&callbackFun=getEoaTemplateTmpnew(paramStr)";


B3.審批頁面 eoaTemplet.jsp,Ifram src= eoaUrl 跳轉 進入審批頁面 并綁定了回調函數callbackFun=getEoaTemplateTmpnew(paramStr)。
<body>
<table ?align="left" width="100%" cellpadding="0" cellspacing="0">
<tr class="fieldName1">
<td>
<iframe width="100%" name='eoaTemplateIframe' id='eoaTemplateIframe' border="0" cellspacing="0" cellpadding="0" FRAMEBORDER=0
SCROLLING=no Height='650px' src='<%= eoaUrl %>'></iframe>
</td>
</tr>
</table>
</body> ? ?
B4. 點擊確定生產審批流。并執行回調函數 (把定時任務簽報 查詢條件信息插入到表 parp_report_eoa_session_detail )。見回調函數
<input type="button" style="" name="selectTemp" id="selectTemp" value="確 定" οnclick="selectTmpltFlow();" disabled="">
B5.登陸 審批同意通過 ?http://oas-eoa10-stg1.paic.com.cn/eoa/ 。問題:審批同意與外面接口webLogic 回調 執行 是怎么觸發的???同意以此觸發以此嗎? 這個找誰?
? ? ?審批完執行 webLogic 執行回調函數 EoaFeedbackServiceImpl.java 主方法 ? receiveEoaMessage()
?1).修改parp_report_eoa_session_detail 定時任務 簽報信息狀態為Y。updateReportEoaSession(sessionid)
?2).插入定時采集 具體配置任務執行時間到 parp_regular_download_conf
?3)線程發送郵件
B6. receiveEoaMessage()
?定時采集 審批完插入定時采集 具體配置任務執行時間到 parp_regular_download_conf,并發送。executeDownloadTask(reportInfoMap, eoaDTO, mapVal);
?定時采集 ?沒選定時的 ? 直接發送。executeDownloadTask(reportInfoMap, eoaDTO, mapVal);
?if (updateReportEoaSession(sessionid) > 0) {
EoaSessionDetailDTO eoaDTO = querySessionDetail(sessionid);
Map mapVal = new HashMap();
ManipulateEoaUtil.assembleQueryMap(eoaDTO.getQuery_condition(),
mapVal);
// 獲取根據報表ID獲取關聯信息
Map<String, String> reportInfoMap = supportService
.queryReportInfo(eoaDTO.getId_report_info());
if (null != mapVal.get("is_regular")
&& "Y".equals(mapVal.get("is_regular"))) {
insertDownloadConf(eoaDTO, mapVal);
//設置為如果審批完就發送

if(reportInfoMap.get("EOA_FINISH_SEND").equals("Y")){
executeDownloadTask(reportInfoMap, eoaDTO, mapVal);
}
} else {
executeDownloadTask(reportInfoMap, eoaDTO, mapVal);
}


} else {
log.error("update sessionid id error or sessionid not found, sesssid="
+ sessionid + " !!!!!!!!!!!!!!!!!!");
}
?
?
?
B7.executeDownloadTask(reportInfoMap, eoaDTO, mapVal);
private void executeDownloadTask(Map<String, String> reportInfoMap,
EoaSessionDetailDTO eoaDTO, Map eoaVal) throws Exception {
Map mapVal = new HashMap();
String dispatchUrl = reportInfoMap.get("DISPATCH_URL");


// 通過dispatchUrl判斷是否調用report服務
if (dispatchUrl.contains("commonreport")) {
// 調用report接口進行下載
mapVal.put("umid", eoaDTO.getUmid());
mapVal.put("eoasessionid", eoaDTO.getEoa_session_id());
TransmitUtil.requestRemoteHttpServiceWithoutReponse(dispatchUrl
+ "/api/submitEoaExportTask", mapVal);
} else {
executeLocalEoaDownloadTask(eoaDTO, eoaVal);
}
}


private void executeLocalEoaDownloadTask(EoaSessionDetailDTO eoaDTO,
Map mapVal) throws Exception {


ReflectUtil.setTitleThreadLocal(new HashMap());
FileTaskDTO dto = new FileTaskDTO(reportInfoService, mapVal,
eoaDTO.getUmid(), mailSAO);
dto.setEoaModule("EOAMODULE");
downloadThreadPool.submitTask(new AsyncDownloadExcelFileTask(dto,
customQueryService));
}

B8.線程執行數據采集,測試郵箱生成載鏈接發送郵件




實時采集
C1.不是定期采集 普通的查詢,自定義序列化表單內容
$.each(parpQueryReportDataAreaMap.keysRemoveDuplicate(), function(i, field) {
parpQueryReportDataAreaMap.get(this).queryData();
});

c2.parpDataLoader.queryData(); ? parp-dataLoader.js?
$.ajax({
type:"POST",
data: "parpQueryDataJson=" + queryCondition,
url: ?this.submitUrl,
beforeSend:function(){
if(shadowFlag){
var _height=$("#"+divId).height(),_width =$("#"+divId).width(),_top=$("#"+divId).offset().top,_left=$("#"+divId).offset().left;
$('body').append('<div id="'+shadowID+'" ><img src="/commonreport/images/page/loading-small.gif"/></div>');
$("#"+shadowID+" img").css({'margin-left':(_width/2-22)+'px','margin-top':(_height/2-10)+'px'});
$("#"+shadowID).css({'width':_width+'px','height':_height+'px','top':_top+'px','left':_left+'px'});
$("#"+shadowID).addClass("report_shadow");
}
},


this.submitUrl="/commonreport/api/doQueryParpReportData?pafaRetViewType=jsp&reportId=4CEEF5A9FF8C30DEE0531580140A0B2C"


ParpReportController.java
? ? C3.doQueryParpReportData(){
return new String(componentHandleChain(umid, parpReportId,
executeParamJsonObj, additionParamJsonObj).getBytes("UTF-8"),
"ISO-8859-1");
}
?
C4.componentHandleChain(){
// 構造責任鏈
ParpComponentHandlerService beginHandler = parpComponentHandlerChainService.getParpComponentHandlerChain();
String componentHandleResult = beginHandler.handleParpComponent(umid,componentType, parpReportId, executeParamJsonObj,additionParamJsonObj);
return componentHandleResult == null ? "" : componentHandleResult;
}
c5.ParpComponentHander.java ?
任務鏈主方法
public String handleParpComponent(String umid, String componentType,
String parpReportId, JSONObject executeParamJsonObj,
JSONObject additionParamJsonObj) {


if (componentType.equals(this.getComponentType())) {
return this.handle(umid, componentType, parpReportId,
executeParamJsonObj, additionParamJsonObj);
} else {
if (this.parpComponentHandler == null) {
return "";
} else {
return this.parpComponentHandler.handleParpComponent(umid,
componentType, parpReportId, executeParamJsonObj,
additionParamJsonObj);
}
}
}

executeParamJsonObj={"requestParam":{"pafaRetViewType":"jsp","reportId":"4CEEF5A9FF8C30DEE0531580140A0B2C"},"queryParam":{"username":"","umId":"WANGYUPENG002","starttime":"","reportname":""},"operateid":"73DE5721EF4D4A6D834FFD83B9B22084","cnNameParam":{"username":"用戶名","starttime":"開始時間","reportname":"報表名"}}
additionParamJsonObj={"componentParam":{"title":"","cols":[{"colname":"NAME","headName":"報表名"},{"colname":"OPR_USERNAME","headName":"用戶名"},{"colname":"IS_VALID","headName":"是否有效"},{"colname":"ACC_TYPE","headName":"訪問量"}],"type":"table","isPage":true,"componentID":"table_jB06XSUFFp","sqlid":"SQL_KZsxPqMkvG"},"userCheckTableColumn":{}}

c6.進入到查詢的handler(). ?ParpTableHandler.java?
封裝SQL。寫日志,配置數據源,執行查詢,根據模板把查詢數據填進去,設置HTML 再反回到頁面
handler(){
Map resultMap = customQueryService.createSqlIdMapTab(tableDTO,paramMap, extendAttrMap);
tableDTO.setQueryData((List) ((Map) resultMap.get("dataMap")).get(tableDTO.getSqlID()));

BeetTemplateUtil.render(tableDTO);
return tableDTO.getHtml();
}

createSqlIdMapTab(){
PARPDatasource.updateDataSource(extendAttrMap);
bindUserInfoToMap(extendAttrMap.get("uid"), mapVal,extendAttrMap);
bindUserUserclassNameToMap(extendAttrMap.get("uid"), "個險-新客服", mapVal,extendAttrMap);
String sql = BeetlKit.render(tableDTO.getSql(), mapVal);
dataMap.put(tableDTO.getSqlID(),
doWithPluginQuery(mapVal, tableDTO.isPage(), extendAttrMap));
Map titleMap = ReflectUtil.getTitleThreadLocal();
resultMap.put("titleMap", titleMap);
resultMap.put("dataMap", dataMap);
return resultMap;
}

查數據
doWithPluginQuery(){
writeToLog(extendAttrMap,"[##doWithPluginQuery begin end--]");
session = MybatisUtil.getSessionFactory().openSession();
if ("org.apache.hive.jdbc.HiveDriver".equals(extendAttrMap
.get("DRIVER_CLASS"))
&& null != extendAttrMap.get("HADOOP_QUEUE_CONF")
&& "" != extendAttrMap.get("HADOOP_QUEUE_CONF")) {
Map hadoopSetMap = new HashMap();
hadoopSetMap.put("sql", "set mapred.job.queue.name="
+ extendAttrMap.get("HADOOP_QUEUE_CONF"));
queryResult(hadoopSetMap, session);
}
mapVal.put("isPage", isPage);
return queryResult(mapVal, session);

}

模板封裝類
BeetTemplateUtil.java?
public static void render(TableDTO tableDTO) throws Exception {
Map mapVal = new HashMap();
if (TABLETYPE.equals(tableDTO.getType())) {
mapVal.put("queryData", tableDTO.getQueryData());
mapVal.put("head", tableDTO.getHead());
mapVal.put("pageDTO", tableDTO.getPageDTO());
mapVal.put("tablename", tableDTO.getTableName());
mapVal.put("divID", tableDTO.getDivID());
mapVal.put("tableTitle", tableDTO.getTableTitle());
tableDTO.setHtml(tempLate(tableDTO.getTableTempName(), mapVal));
} else if (HIVETYPE.equals(tableDTO.getType())) {
mapVal.put("queryData", tableDTO.getQueryData());
mapVal.put("head", tableDTO.getHead());
mapVal.put("limit", tableDTO.getLimit());
int totalPage = calcTotalPage(tableDTO.getQueryData().size(),
tableDTO.getLimit());
Map pagintionData = getPagintionDataInHive(tableDTO, totalPage);
mapVal.put("pagintionData", JSON.toJSON(pagintionData));
mapVal.put("totalPage", totalPage);
tableDTO.setHtml(tempLate(HIVENAME, mapVal));
} else if (ECHARTTYPE.equals(tableDTO.getType())) {
renderEChart(tableDTO);
} else if (CONTENTTYPE.equals(tableDTO.getType())) {
String content = readTxtFile(new FileInputStream(
tableDTO.getStorageRootPath() + "content.html"));
List list = tableDTO.getQueryData();
if (list != null && list.size() > 0) {
Map map = tableDTO.getQueryData().get(0);
tableDTO.setHtml(BeetlKit.render(content, map));
}


}
}

根據模板填數,把查詢結果的數據填寫到模板中生產str
模板代碼:table_new_default.txt ??
D:\Users\WANGDINGXIN732\Desktop\PARP_TOMCAT\tomcat-7.0.52\webapps\commonreport\WEB-INF\classes
BeetTemplateUtil。java
public static String tempLate(String txtName, Map mapVal)
throws IOException {
String classRoot = StringUtils.substringBeforeLast(
BeetTemplateUtil.class.getClassLoader().getResource(txtName)
.getPath(), "/");
GroupTemplate gt = new GroupTemplate(new FileResourceLoader(classRoot),
Configuration.defaultConfiguration());
Template t = gt.getTemplate("/" + txtName);
t.binding(mapVal);
return t.render();
}

問題:createSqlIdMapTab ?怎么調用的?
bindUserInfoToMap(extendAttrMap.get("uid"), mapVal,extendAttrMap);
bindUserUserclassNameToMap(extendAttrMap.get("uid"), "個險-新客服", mapVal,extendAttrMap);
dataMap.put(tableDTO.getSqlID(),doWithPluginQuery(mapVal, tableDTO.isPage(), extendAttrMap));

bindUserUserclassNameToMap?
mapVal.put("PARP_USER_USERCLASS_NAME", userRightQueryService.queryUserUserclassNameByRootName(umid, rootName));
PARP_USER_USERCLASS_NAME={username=, starttime=, umId=WANGYUPENG002, reportid=4CEEF5A9FF8C30DEE0531580140A0B2C, pageDTO=com.paic.reportportal.adapter.mybatisadapter.util.PageDTO@13755b5, PARP_USER_USERCLASS_NAME=[個險-新客服], currentPage=null, PARP_USER_INFO=com.paic.reportportal.exhibition.dto.UserDTO@1eeb142, reportname=}
doWithPluginQuery?
queryResult(mapVal, session);








/reportHead

{REPORT_TYPE_NAME=eoa_report, ID_MB_REPORT_EXTEND_ATTRS=4C9240E05E897E90E0531580140A835E, REPORT_NAME=wangdingxinTest, PWD_SOURCE=cyberark, TADAY_ISORNOT_SEND=Y, BI_IS_VALID=Y,?
BI_NAME=自定義BI, BI_VERSION=3.2.3, BI_EXTEND_ATTRS_TBL=PARP_MB_BI_EXTEND_ATTRS, CYBERARK_CRED_APPID=appID, MODULE_HTML_PATH=null, UPDATED_DATE=2017-04-11 15:00:12.0, IS_USER_VALIDATION=null,?
REFRESHURL=null, CYBERARK_AUTHNAME=parpopr, CREATED_DATE=2017-04-07 18:40:26.0, CREATED_BY=WANGYUPENG002, REPORT_EXTEND_ATTRS_TBL=PARP_MB_REPORT_EXTEND_ATTRS,?
ID_MB_BI_EXTEND_ATTRS=0717D4EE19C7FCB4E0531480140A5FF0, PASSWORD=parp1234, BI_TYPE_NAME=MyBatis, BI_DESC=自定義BI, CYBERARK_CRED_FILEPATH=null, REPORT_IS_VALID=Y,?
CYBERARK_PWD_FOLDER=folder, ID_BI_INFO=0717D4EE19C7FCB4E0531480140A5FF0, LINES_PER_PAGE=20, DOWNLOAD_TYPE=CSV, EOA_FINISH_SEND=Y, CYBERARK_PWD_KEY=key,
DRIVER_CLASS=oracle.jdbc.driver.OracleDriver, REPORT_DESC=wangdingxinTest當日發送批量修改測試01,?
DISPATCH_URL=http://localhost:8080/commonreport/, IS_REGULAR=N, UPDATED_BY=WANGYUPENG002, CYBERARK_PWD_SAFE=safe, REPORT_ACC_TYPE=API,?
SQLMAPPER=792/135/234/8D40A7974DBF6B9B56E4E7D513C867DD/, HEAD_EXCEL_PATH=null,?
USERNAME=parpdata, JDBC_URL=jdbc:oracle:thin:@d0parp.dbdev.paic.com.cn:1526:d0parp, ID_REPORT_INFO=4C9240E05E877E90E0531580140A835E, STATEMENT_ID=null, HEAD_HTML_PATH=null}





MB_REPORT_EXTEND_ATTRS




[{"nameArray":"[{'name':'NAME','asname':'NAME'},{'name':'OPR_USERNAME','asname':'OPR_USERNAME'},{'name':'IS_VALID','asname':'IS_VALID'},{'name':'COUNT','asname':'COUNT'}]","sql":"SELECT R.NAME AS NAME,L.OPR_USERNAME AS OPR_USERNAME,R.IS_VALID AS IS_VALID,R.ACC_TYPE AS COUNT FROM PARP_REPORT_OPR_LOG L, PARP_REPORT_OPR_INFO I, PARP_REPORT_INFO R WHERE L.QUERY_ID = I.QUERY_ID AND I.ID_REPORT_INFO = R.ID_REPORT_INFO <%if(reportname!=null&&reportname!=''){%> AND R.NAME LIKE '%'||#{reportname}||'%'<%}%> <%if(username!=null && username!=''){%> AND L.OPR_USERNAME LIKE '%'||#{username}||'%' <%}%><%if(starttime!=null && starttime!=''){%> AND to_char(L.CREATED_DATE,'YYYY-MM-DD')>=#{starttime}<%}%> ",
"sqlname":"SQL_wdxTest"},{"nameArray":"[{'name':'NAME','asname':'報表名稱'},{'name':'OPR_USERNAME','asname':'用戶名'},{'name':'IS_VALID','asname':'是否有效'},{'name':'COUNT(L.ID_REPORT_OPR_LOG)','asname':'訪問量'}]","sql":"SELECT R.NAME AS 報表名稱, ? ? ? L.OPR_USERNAME AS 用戶名, ? ?r.IS_VALID as 是否有效, ? COUNT(L.ID_REPORT_OPR_LOG) AS 訪問量 FROM PARP_REPORT_OPR_LOG L, PARP_REPORT_OPR_INFO I, PARP_REPORT_INFO R WHERE L.QUERY_ID = I.QUERY_ID ? AND I.ID_REPORT_INFO = R.ID_REPORT_INFO ? <%if(reportname!=null&&reportname!='')%> ? ?AND r.name LIKE '%'||#{reportname} ||'%' ?<%if(username!=null&&username!='')%> ? AND l.opr_username = #{username} ?<%if(starttime!=null&& starttime!='')%> ? AND to_char(L.created_date,'yyyy-mm-dd') >= #{starttime} ?<%if(valid!=null&&valid!=''){%>AND r.is_valid in ('${valid}')<%}%> ?GROUP BY R.ID_REPORT_INFO, R.NAME, L.OPR_USERNAME, ?r.IS_VALID",
"sqlname":"SQL_wdx_test0411"},{"nameArray":"[{'name':'dd','asname':'dd'}]","sql":"sss","sqlname":"SQL_vnURF7CGuj"}]


{attrDto={
ID_MB_REPORT_EXTEND_ATTRS=4C9240E05E897E90E0531580140A835E, ID_REPORT_EXTEND_ATTRS=4C9240E05E897E90E0531580140A835E, TADAY_ISORNOT_SEND=Y, MODULE_HTML_PATH=null,?
UPDATED_DATE=2017-04-11 15:00:12.0, EOA_FINISH_SEND=Y, DOWNLOAD_TYPE=CSV, CREATED_BY=WANGYUPENG002, CREATED_DATE=2017-04-07 18:40:26.0, UPDATED_BY=WANGYUPENG002,?
IS_REGULAR=N, SQLMAPPER=792/135/234/8D40A7974DBF6B9B56E4E7D513C867DD/, HEAD_EXCEL_PATH=null, ID_REPORT_INFO=4C9240E05E877E90E0531580140A835E, STATEMENT_ID=null,?
HEAD_HTML_PATH=null}, monitorData={MONITORSQL=null, ID_REPORT_INFO=4C9240E05E877E90E0531580140A835E, IS_VALID=N},
?mctDto=com.paic.reportportal.admin.dto.MailContentTemplateDTO@e9fd6c, eoaReportTypeId=0CC3C92BEFF847C0E0531480140A2241,
?typeList=[com.paic.reportportal.admin.dto.ReportType@111537a, com.paic.reportportal.admin.dto.ReportType@11153b5, com.paic.reportportal.admin.dto.ReportType@11153ef, com.paic.reportportal.admin.dto.ReportType@1115429, com.paic.reportportal.admin.dto.ReportType@1115465, com.paic.reportportal.admin.dto.ReportType@111549f, com.paic.reportportal.admin.dto.ReportType@11154db, com.paic.reportportal.admin.dto.ReportType@1115517, com.paic.reportportal.admin.dto.ReportType@1115554, com.paic.reportportal.admin.dto.ReportType@1115591, com.paic.reportportal.admin.dto.ReportType@11155d9, com.paic.reportportal.admin.dto.ReportType@111561e, com.paic.reportportal.admin.dto.ReportType@111565a, com.paic.reportportal.admin.dto.ReportType@1115696, com.paic.reportportal.admin.dto.ReportType@11156d0, com.paic.reportportal.admin.dto.ReportType@111570b, com.paic.reportportal.admin.dto.ReportType@1115745, com.paic.reportportal.admin.dto.ReportType@111578e, com.paic.reportportal.admin.dto.ReportType@11157ca, com.paic.reportportal.admin.dto.ReportType@1115804, com.paic.reportportal.admin.dto.ReportType@111585f, com.paic.reportportal.admin.dto.ReportType@111589b, com.paic.reportportal.admin.dto.ReportType@11158d6, com.paic.reportportal.admin.dto.ReportType@1115911]}










報表 數據查找的時候 最終生成的HTML代碼。
模板代碼:table_new_default.txt ??
D:\Users\WANGDINGXIN732\Desktop\PARP_TOMCAT\tomcat-7.0.52\webapps\commonreport\WEB-INF\classes
<table class="gridtable" width="100%">
<caption class="table_caption"></caption>
<tr>
<th>報表名</th>
<th>用戶名</th>
<th>是否有效</th>
<th>訪問量</th>
</tr>
<tr><td>受益人-PER及時完成率</td><td>XINLIU786</td><td>Y</td><td>SSO</td></tr><tr><td>受益人-PER及時完成率</td><td>XINLIU786</td><td>Y</td><td>SSO</td></tr><tr><td>受益人-PER及時完成率</td><td>XINLIU786</td><td>Y</td><td>SSO</td></tr><tr><td>受益人-PER及時完成率</td><td>XINLIU786</td><td>Y</td><td>SSO</td></tr><tr><td>受益人-PER及時完成率</td><td>XINLIU786</td><td>Y</td><td>SSO</td></tr><tr><td>受益人-PER及時完成率</td><td>XINLIU786</td><td>Y</td><td>SSO</td></tr><tr><td>子系統清單-PER及時完成率</td><td>LIUBAO677</td><td>Y</td><td>API</td></tr><tr><td>管理報表_成本分類、成本屬性多維分析表</td><td>LIUBAO677</td><td>Y</td><td>SSO</td></tr><tr><td>2.月查詢-PER及時完成率</td><td>XINLIU786</td><td>Y</td><td>SSO</td></tr><tr><td>受益人-PER及時完成率</td><td>XINLIU786</td><td>Y</td><td>SSO</td></tr><tr><td>5.中心KPI單項指標_PER需求實現率</td><td>LIUBAO677</td><td>Y</td><td>SSO</td></tr><tr><td>6.中心KPI單項指標_非項目規范性</td><td>LIUBAO677</td><td>Y</td><td>API</td></tr><tr><td>月查詢-PER及時完成率(部門)</td><td>XINLIU786</td><td>Y</td><td>API</td></tr><tr><td>月查詢-PER及時完成率(部門)</td><td>XINLIU786</td><td>Y</td><td>API</td></tr><tr><td>月查詢-PIR及時解決率(部門)</td><td>XINLIU786</td><td>Y</td><td>SSO</td></tr><tr><td>月查詢-PIR及時解決率(部門)</td><td>XINLIU786</td><td>Y</td><td>SSO</td></tr><tr><td>月查詢-PER及時完成率(部門)</td><td>XINLIU786</td><td>Y</td><td>API</td></tr><tr><td>月查詢-人均實現PER數量(部門)</td><td>XINLIU786</td><td>Y</td><td>API</td></tr><tr><td>月查詢-人均實現PER數量(部門)</td><td>LIUBAO677</td><td>Y</td><td>API</td></tr><tr><td>月查詢-PER及時完成率(部門)</td><td>LIUBAO677</td><td>Y</td><td>API</td></tr>
</table>
<div class="search_page" style="width: 95%;">
<div class="pagination">
<ul>
<li class="disablepage">上一頁</li>
<li class="currentpage">1</li>
<li><a href="javascript:void(0)" οnclick="topageno('table_jB06XSUFFp',2)">2 </a></li>
<li><a href="javascript:void(0)" οnclick="topageno('table_jB06XSUFFp',3)">3 </a></li>
<li><a href="javascript:void(0)" οnclick="topageno('table_jB06XSUFFp',4)">4 </a></li>
<li><a href="javascript:void(0)" οnclick="topageno('table_jB06XSUFFp',5)">5 </a></li>
<li><a href="javascript:void(0)" οnclick="topageno('table_jB06XSUFFp',6)">6 </a></li>
<li><a href="javascript:void(0)" οnclick="topageno('table_jB06XSUFFp',7)">7 </a></li>
<li><a href="javascript:void(0)" οnclick="topageno('table_jB06XSUFFp',8)">8 </a></li>
<li><a href="javascript:void(0)"οnclick="topageno('table_jB06XSUFFp',2)">下一頁</a> </li>
<li><a href="javascript:void(0)"οnclick="topageno('table_jB06XSUFFp',5357)">尾頁</a> </li>
<li class="currentpage">共 5357 頁</li>
<li class="currentpage">共 ?107123 條數據</li>
</ul>
</div>
</div>
<!--搜索結果頁碼/翻頁結束-->
<div style="clear:both"></div>












定時器工作步驟:
1.bi-context-quarz.xml ?配置定時采集job作業類、配置作業調度方式、配置調度工廠
A。配置定時采集job作業類
<bean id="quartzTaskDownLoad3" class="com.paic.reportportal.admin.biz.quartz.QuartzTaskDownLoad">
<property name="period">
<bean id="com.paic.reportportal.admin.biz.quartz.QuartzDownLoadPeriod.Day" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"> </bean>
</property>
</bean>
<bean id="dayDownLoadRunJobDetail" class="com.paic.pafa.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>com.paic.pafa.scheduling.quartz.ContextPojoJobInvoker</value>
</property>
<property name="jobDataAsMap"> ?
<map>
<entry key="beanID">
<value>quartzTaskDownLoad3</value>
</entry> ? ? ? ? ? ? ?
<entry key="methodName">
<value>run</value>
</entry>
</map> ?
</property>
<property name="group">
<value>${org.quartz.group.name}</value>
</property>
</bean>
B.配置作業調度觸發方式?
<bean id="dayDownLoadQuartzTaskRunTrigger" class="com.paic.pafa.scheduling.quartz.CronTriggerBean">
<property name="cronExpression">
<value>${download.QuartzTask.day.time}</value>
</property>
<property name="jobDetail">
<ref local="dayDownLoadRunJobDetail" />
</property>
<property name="group">
<value>${org.quartz.group.name}</value>
</property>
</bean>
C.配置調度工廠<!--定義scheduler -->
<bean id="schedulerFactory" class="com.paic.pafa.scheduling.quartz.SchedulerFactoryBean"
lazy-init="false">
<!--?
<property name="calendars">
<map>
<entry key="weekendCalendar">
<ref local="weekendCalendar" />
</entry>
</map>
</property>
-->
<property name="triggers">
<list>
<ref local="lifeQuartzTaskComputeCronTrigger" />
<ref local="lifeQuartzTaskSendMailRunTrigger" />
<ref local="adminQuartzTaskDeleteFileRunTrigger" />
<ref local="adminQuartzTaskComputeCronExpRunTrigger" />
<ref local="statisticsRunTrigger" />
<ref local="nasMonitorRunTrigger" />
<ref local="cognosMonitorRunTrigger" />
<ref local="dayDownLoadQuartzTaskRunTrigger" />
<ref local="noticeLockedUserRunTrigger" />
<ref local="batchReportMailRunTrigger" />
</list>
</property>
。。。。
</bean>

2.到時間 進入作業類,觸發作業方法 執行run()
QuartzTaskDownLoad.java ,run()
public void run() throws Exception {
log.info("============QuartzTaskDownLoad run=====period=" + period);
Map map = new HashMap();
queryDownLoadConf(map);
}
3.執行queryDownLoadConf(map);查詢數據庫中的數據采集定時任務列表
List<Map> list = downloadConfService.queryDownLoad(map);
for (Map maps : list) {
if(maps.get("TADAY_ISORNOT_SEND")==null||maps.get("TADAY_ISORNOT_SEND").equals("Y")){
appForward(maps);
}
}
4.appForward(maps)。配置URL ?postMethod, HttpClient 發送請求
public int appForward(Map map) throws Exception {
String url = getDispatchURL(String.valueOf(map.get("ID_REPORT_INFO")))
+ "api/downloadCollectionTask.do";
log.info("============QuartzTaskDownLoad run=====url=" + url);
PostMethod postMethod = new PostMethod(url);
Part[] parts = {
new StringPart("eoasessionid", URLEncoder.encode(
String.valueOf(map.get("EOA_SESSION_ID")), "utf-8")),
new StringPart("period", URLEncoder.encode(
String.valueOf(map.get("PERIOD")), "utf-8")) };
postMethod.setRequestEntity(new MultipartRequestEntity(parts,
postMethod.getParams()));
log.info("---EOA_SESSION_ID-------"
+ String.valueOf(map.get("EOA_SESSION_ID")));
log.info("============QuartzTaskDownLoad postMethod======");
log.info(postMethod);
HttpClient httpClient = new HttpClient();
// 執行請求發送
return httpClient.executeMethod(postMethod);
}


5.進入 /downloadCollectionTask 任務方法 組合封裝數據。ExportController.java
submitExportTask(mapVal, (String) mapVal.get("umid"), true);
6.submitExportTask()方法。ExportController.java
private void submitExportTask(Map mapVal, String umid, boolean isEoa) {
log.info("============submitExportTask========");
fileLogService.log((String)mapVal.get("operateid"), "============submitExportTask========", (String)mapVal.get("reportid"));
log.info(mapVal);
fileLogService.log((String)mapVal.get("operateid"), mapVal.toString(),(String)mapVal.get("reportid") );
FileTaskDTO dto = new FileTaskDTO(exportService, mapVal, umid, mailSAO,
reportInfoService, umSearchService, userRightQueryService,fileLogService);
if (isEoa) {
dto.setMailModule("EOAMODULE");
}


recordExportInfoAndSubmitTask(mapVal, umid, dto);
}
7.recordExportInfoAndSubmitTask()。ExportController.java
downloadThreadPool.submitTask(new ExportTask(fileTaskDto, idExport),idExport);

8.submitTask() 提交任務 DownloadThreadPool.java?
public void submitTask(Runnable task, String idExport) {
log.info("==Before submit task[" + idExport + "]\n Queue size is:"
+ getQueueTaskSize());
executor.submit(task);
log.info("==After submit task[" + idExport + "]\n Queue size is:"
+ getQueueTaskSize());
}



9.ExportTask.Java。線程執行run()方法。 任務的主題方法 發送郵件/下載








查詢數據庫數據采集定時任務列表SQL
<select id="downloadn.select.download" parameterClass="java.util.HashMap" resultClass="java.util.HashMap">
select ?t.effective_date,t.expiry_date,t.period,t1.eoa_session_id, t1.query_condition, t1.umid, t1.id_report_info,t2.taday_isornot_send ?
from?
? ?(select t.id_parp_eoa_session,t.period,t.effective_date,t.expiry_date,effective_time from PARP_REGULAR_DOWNLOAD_CONF t where upper(period)='DAY'
? ? ? union?
? ?select t.id_parp_eoa_session,t.period,t.effective_date,t.expiry_date,effective_time from PARP_REGULAR_DOWNLOAD_CONF t where upper(period)='MONTH' and instr(term,#month#)>0
? ? ? union?
? ?select t.id_parp_eoa_session,t.period,t.effective_date,t.expiry_date,effective_time from PARP_REGULAR_DOWNLOAD_CONF t where upper(period)='WEEK' and instr(term,#week#)>0) t?
? ?,parp_report_eoa_session_detail t1,PARP_MB_REPORT_EXTEND_ATTRS t2,parp_report_info t3
where t1.eoa_session_id=t.id_parp_eoa_session?
?and t1.id_report_info=t2.id_report_info
?and t2.id_report_info=t3.id_report_info
? ? ? and t3.is_valid='Y'

<![CDATA[
?and to_date(t.effective_date,'yyyy-mm-dd')<=to_date(to_char(sysdate, 'yyyy-mm-dd'), 'yyyy-mm-dd')
]]>
<![CDATA[
and ?to_date(t.expiry_date,'yyyy-mm-dd')>=to_date(to_char(sysdate, 'yyyy-mm-dd'), 'yyyy-mm-dd')
]]>
<![CDATA[
and to_date(t.effective_time,'HH24:mi')<=to_date(#end#,'HH24:mi') and to_date(t.effective_time,'HH24:mi')>=to_date(#start#,'HH24:mi')
?]]>
</select>















報表編譯舊方法(上傳寫好的壓縮包)


1)前臺頁面鏈接 ?MB_REPORT_EXTEND_ATTRS.jsp?
<input type="text" style="display:none" name="extend_attrs_sqlmapper" id="extend_attrs_sqlmapper" size="50" value="${attrDto.SQLMAPPER}" isval="false"/>
<span id="filename"></span>
<span style="display:none;" id="showloading"><img src="/parp/images/page/loading-small.gif"/></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span οnclick="$(this).uploadFile(
{'i_name':'extend_attrs_sqlmapper',
'i_url':'<c:url value='/api/getTokenInfo?pafaRetViewType=js'/>',
'_ajax':true,
'callbackurl':'<c:url value='/api/admin/memoryreport/rebackFilePath?pafaRetViewType=jsp&filepath='/>'
}
)"?
id="uploadspanextend_attrs_sqlmapper" style="cursor:pointer">報表配置上傳</span>;


2)進入后臺 ?MemoryReportController.java ? ? /rebackFilePath
return "/admreport/rebackFilePath";
3) 在MB_REPORT_EXTEND_ATTRS.jsp ? ?加載 rebackFilePath.jsp 頁面?
<script language="javaScript">
window.parent.parent.reback(window.parent.parent.uploadArray.i_name,decodeURI('${filepath}'));
</script>
4)加載jquery-upload.js js方法 ? ?uploadArray.showUpload ? 加載上傳文件的文件筐 綁定提交方法
showUpload:function(target){
uploadArray.popUpShowing=true;
if($(target).val()==""||$(target).val()==null){
var y=$(target).offset().top;
var x=$(target).offset().left;
var i_h=$(target).width();
var input_file="<div class='up_ipt'><input type='file' name='file_name' id='file_name' size='"+$(target).attr('size')+"'/></div><div class='up_btn'>upload..</div>";
$("#upload_div").css({'position':'absolute','top':y-1+'px','left':x+'px','z-index':'999'}).empty().append(input_file);
$('.up_btn').click(uploadArray._ajaxEvent);
}
}
5)點擊提交 執行提交方法 uploadArray._ajaxEvent?
_ajaxEvent:function(e){
if(uploadArray._ajax){
uploadArray._ajaxjson();
}else{
uploadArray._ajaxfile();
}
}
6)進入 _ajaxfile js 方法?
_ajaxfile:function(e){
uploadArray.popUpShowing=true;
var id=uploadArray.i_name;
$.ajaxFileUpload({
?data:{'token':uploadArray.token,'callbackurl':''},
?url:uploadArray.i_url!=""?uploadArray.i_url:'/parp/api/upLoadFile?pafaRetViewType=jsp',
?secureuri:false, ? ? ? ? ? ? ? ? ? ? ??
?fileElementId: 'file_name', ? ? ? ? ??
?dataType:'text', ? ? ? ? ? ? ? ? ? ? ?
?success:function(data, status){
$('#'+id).val($.trim(data));
$('#'+id).css('color','red');
uploadArray.hideupload();
?},
?error:function(data, status, e){
?alert("上傳失敗,請重試!");
?}
?});
},

7)進入上傳文件的后臺Action ?UpLoadFileController.java ? /upLoadFile
把上傳的文件寫到 新模板編譯的地址里面去,相當于轉換成老方法
點擊上傳 寫文件


8)點擊確認把 上傳文件保存路徑 寫到DB中去
見 新增保存插入報表基本信息/存儲路徑過程:





<html><body>
<iframe name="callbackiframe" src="http://localhost:7001/parp/api/admin/memoryreport/rebackFilePath?pafaRetViewType=jsp&filepath=534/393/976/B76E0CF3CDC947498E65E0689CCCA2DC/">
</iframe>
</body></html>


























報表下載
1)報表查詢主頁面CommonReport.jsp ?執行下載方法
<div class="icon_down"><a href="javascript:void(0);" οnclick="showdowanload(this);"></a>
2)parp-table.js ?showdowanload() function
添加下載div ?鏈接 ?<div><a href=\"javascript:void(0)\" οnclick=\"parpDownloadComponentData('" + divId + "')\">" + name + "</a></div>";
3)點擊 進入方法 parpDownloadComponentData(),執行下載方法 ? ; ?parp-report-tools.js
dataLoaderCopy.addOrModifyQueryDataJsonByKey("downloadType", dataLoaderCopy.getQueryDataJsonByKey("type"));
// 修改提交數據類型為download
dataLoaderCopy.addOrModifyQueryDataJsonByKey("type", "download");
dataLoaderCopy.downloadData();
4)進入 parpDataLoader.js ?downloadData();
$.ajax({
type:"POST",
data: "parpQueryDataJson=" + queryCondition + "&isMoreReceive=" + isMoreReceive.value + "&isMoreReceiveFlag=" + isMoreReceiveFlag,
url: ?this.submitUrl,
contentType:"application/x-www-form-urlencoded; charset=utf-8",
dataType: "text",
success: function (data) {
},?
error: function (XMLHttpRequest,textStatus,errorThrown) {
}
});
5)進入后臺 ? /doQueryParpReportData ?方法
return new String(componentHandleChain(umid, parpReportId,
executeParamJsonObj, additionParamJsonObj).getBytes("UTF-8"),"ISO-8859-1");


6)進入componentHandleChain 方法。構造任務鏈,并循環判斷進入相應的任務方法
// 構造責任鏈
ParpComponentHandlerService beginHandler = parpComponentHandlerChainService.getParpComponentHandlerChain();
String componentHandleResult = beginHandler.handleParpComponent(umid,componentType, parpReportId, executeParamJsonObj,additionParamJsonObj);

任務方法: ParpChartHandler.java
ParpComponentHandlerChainServiceImpl.java
ParpDownloadHandler.java
ParpEoaHandler.java
ParpSelectHandler.java
ParpTableHandler.java
ParpTextHandler.java

7)進入任務方法。例如下載 ?ParpDownloadHandler
A. handle() 主方法
submitExportTask(
convertDownloadParamStr(executeParamJsonObj,additionParamJsonObj, reportId), umid);
B.convertDownloadParamStr() Map convertDownloadParamStr(JSONObject executeParamJsonObj,JSONObject additionParamJsonObj, String reportId) throws Exception { }
設置文件下載的 請求參數、sql模板、sql,文件數據名 ?等參數封裝到 map里。

// 構造TableDTO
TableDTO tableDTO = new TableDTO();
FileUtil.readTableFile(tableDtoParamMap, tableDTO, colMap);
// 將頁面請求中的參數設置到下載參數中
JSONObject requestParamJsonObj = executeParamJsonObj
.getJSONObject("requestParam");
if (null != requestParamJsonObj) {
for (String key : requestParamJsonObj.keySet()) {
paramMap.put(key, requestParamJsonObj.getString(key));
}
}
String reportFilePath = reportInfoService.queryReportFilePath(reportId);
// 查詢并設置SQL文件所在路徑
String file = reportFilePath.substring(0,reportFilePath.lastIndexOf("/") + 1);
tableDTO.setStorageRootPath(storageRootPath + file);
// 設置SQL模板內容
tableDTO.setSql(FileUtil.readTxtFile(new FileInputStream(tableDTO.getStorageRootPath() + tableDTO.getSqlID() + ".sql")));
// 設置所使用的table模板文件
tableDTO.setTableTempName("table_new_default.txt");
paramMap.put("tableDTO", tableDTO);
paramMap.put("reportid", reportId);
paramMap.put("operateid", operateid);
// 設置數據文件名稱
paramMap.put("tablename",additionParamJsonObj.getJSONObject("componentParam").getString("componentID"));


C.submitExportTask()
private void submitExportTask(Map mapVal, String umid) {
log.info("============submitExportTask========");
fileLogService.log((String)mapVal.get("operateid"), "============submitExportTask========", (String)mapVal.get("reportid"));
log.info(mapVal);
fileLogService.log((String)mapVal.get("operateid"), mapVal.toString(), (String)mapVal.get("reportid"));
recordExportInfoAndSubmitTask(mapVal, umid, new FileTaskDTO(
exportService, mapVal, umid, mailSAO, reportInfoService,
umSearchService, userRightQueryService,fileLogService));
}




D。 FileTaskDTO() 封裝下載時所需要的業務邏輯
public FileTaskDTO(ExportService exportService, Map mapVal, String userID,
MailSAO mailSAO, ReportInfoService reportInfoService,
UmSearchService umSearchService,
UserRightQueryService userRightQueryService,FileLogService fileLogService) {
super();
this.exportService = exportService;
this.mapVal = mapVal;
this.userID = userID;
this.mailSAO = mailSAO;
this.reportInfoService = reportInfoService;
this.umSearchService = umSearchService;
this.userRightQueryService = userRightQueryService;
this.fileLogService = fileLogService;
}


E.recordExportInfoAndSubmitTask() ?插入下載文件路勁,ID;更新日志到數據庫;提交下載任務
downloadThreadPool.submitTask(new ExportTask(fileTaskDto, idExport),idExport);

F:submitTask() ?DownloadThreadPool.java 提交任務?
public void submitTask(Runnable task, String idExport) {
log.info("==Before submit task[" + idExport + "]\n Queue size is:"
+ getQueueTaskSize());
executor.submit(task);
log.info("==After submit task[" + idExport + "]\n Queue size is:"
+ getQueueTaskSize());
}

G:ExportTask(); ExportTask.java ?構造初始化任務,
public void run() {} 線程執行,

H:run() ?下載導出,發送郵件
fileLogService.log(operateid, "========exportToNas1========", reportid);
String naspath = exportService.exportToNas(mapVal);
修改下載路徑狀態
reportInfoService.updateExcelFilePath(dto);


發送郵件:mailSAO.sendMailNoFile(ExportExcelUtil.assembleMail(
dto,
StringUtils.substringAfterLast(naspath, "/"),
(String) mapVal.get("DISPATCH_URL"),
reportInfoService,
(String) mapVal.get("reportid")));










--報表下載保存的路徑
?insert into parp_export_data_detail(id_parp_export, id_report_info, naspath, query_condition, state, umid)
? ? ? ? values (?, ?, ?, ?, ?, ?)
? ? ? ??


insert into PARP_REPORT_LOGINFO(ID_PARP_LOGINFO,id_report_info,report_operate_id,naslogpath,ID_PARP_EXPORT)
values(sys_guid(),#reportid#,#operateid#,#naslogpath#,#exportid#)








JSON字符串:
{"executeParam":{"queryParam":{"reportname":"","username":"","starttime":"","umId":"WANGYUPENG002"},"cnNameParam":{"reportname":"報表名","username":"用戶名","starttime":"開始時間"}},"additionParam":{"componentParam":{"cols":[{"headName":"報表名","colname":"NAME"},{"headName":"用戶名","colname":"OPR_USERNAME"},{"headName":"是否有效","colname":"IS_VALID"},{"headName":"訪問量","colname":"ACC_TYPE"}],"sqlid":"SQL_KZsxPqMkvG","type":"download","isPage":true,"componentID":"table_jB06XSUFFp","title":"","downloadType":"table"},"userCheckTableColumn":{}}}
JSON 對象:
{"executeParam":{"queryParam":{"username":"","umId":"WANGYUPENG002","starttime":"","reportname":""},"cnNameParam":{"username":"用戶名","starttime":"開始時間","reportname":"報表名"}},"additionParam":{"componentParam":{"title":"","cols":[{"colname":"NAME","headName":"報表名"},{"colname":"OPR_USERNAME","headName":"用戶名"},{"colname":"IS_VALID","headName":"是否有效"},{"colname":"ACC_TYPE","headName":"訪問量"}],"downloadType":"table","type":"download","isPage":true,"componentID":"table_jB06XSUFFp","sqlid":"SQL_KZsxPqMkvG"},"userCheckTableColumn":{}}}


查詢條件參數:
{"queryParam":{"username":"","umId":"WANGYUPENG002","starttime":"","reportname":""},"cnNameParam":{"username":"用戶名","starttime":"開始時間","reportname":"報表名"}}




組裝后的JSON對象
{"requestParam":{"pafaRetViewType":"jsp","reportId":"4CEEF5A9FF8C30DEE0531580140A0B2C","isMoreReceiveFlag":"false","isMoreReceive":"undefined"},"queryParam":{"username":"","umId":"WANGYUPENG002","starttime":"","reportname":""},"operateid":"9913079B76A04EA8BC42B335741929E6","cnNameParam":{"username":"用戶名","starttime":"開始時間","reportname":"報表名"}}




{"componentParam":{"title":"","cols":[{"colname":"NAME","headName":"報表名"},{"colname":"OPR_USERNAME","headName":"用戶名"},{"colname":"IS_VALID","headName":"是否有效"},{"colname":"ACC_TYPE","headName":"訪問量"}],"downloadType":"table","type":"download","isPage":true,"componentID":"table_jB06XSUFFp","sqlid":"SQL_KZsxPqMkvG"},"userCheckTableColumn":{}}












多線程線程池 隊列
DownloadThreadPool.java?
有界隊列:
workQueue = new ArrayBlockingQueue<Runnable>(this.blockingQueueSize);
無界隊列:
workQueue = new LinkedBlockingQueue<Runnable>(this.blockingQueueSize);
重寫異常處理機制
DefaultRejectedExecutionHandler.java
executor.getQueue().put(r);//改成阻塞式的提交 ?add bu Wangdingxin


















































































總體架構
1.首先進入后臺管理 所有攔截器 UserWebInterceptor.java ? preHandle 代理方法




http://parp-core-stg1.paic.com.cn/parp/pages/eoa/setEoaTemplet.jsp?url=http://oas-eoa10-stg1.paic.com.cn/eoa/setOutsysTemplate.do?validateId=2962d86dedc269809728f3926e4060cc&requestSysname=PARP_CORE&sysId=PARP_CORE1968173659
http://localhost:7001/parp/pages/eoa/setEoaTemplet.jsp?url=http://eoadev.paic.com.cn:7001/eoa/setOutsysTemplate.do?validateId=979e36299ae1167e01e1d48c8cbc4837&requestSysname=PARP_CORE&sysId=PARP_CORE1492922801
http://localhost:7001/parp/pages/eoa/setEoaTemplet.jsp?url=http://oas-eoa10-stg1.paic.com.cn/eoa/setOutsysTemplate.do?validateId=2b0583552aad30c8e2b3c75554f51f5d&requestSysname=PARP_CORE&sysId=PARP_CORE1280936807


http://oas-eoa10-stg1.paic.com.cn/eoa/setOutsysTemplate.do?validateId=2962d86dedc269809728f3926e4060cc&requestSysname=PARP_CORE&sysId=PARP_CORE1968173659
http://oas-eoa10-stg1.paic.com.cn/eoa/setOutsysTemplate.do?validateId=2b0583552aad30c8e2b3c75554f51f5d&requestSysname=PARP_CORE&sysId=PARP_CORE1280936807
http://eoadev.paic.com.cn:7001/ ? eoa/setOutsysTemplate.do?validateId=979e36299ae1167e01e1d48c8cbc4837&requestSysname=PARP_CORE&sysId=PARP_CORE1492922801


http://eoadev.paic.com.cn:7001/eoa/setOutsysTemplate.do?validateId=d0d530f89e3e7a8d34e7a5501cb20363&requestSysname=PARP_CORE&sysId=PARP_CORE138281584
http://eoadev.paic.com.cn:7001/eoa/setOutsysTemplate.do?

總結

以上是生活随笔為你收集整理的动态数据采集业务逻辑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲精品国产精品乱码不卡 | 亚洲精品国产第一综合99久久 | 久久精品无码一区二区三区 | 少妇激情av一区二区 | 亚洲日本一区二区三区在线 | 久久精品国产大片免费观看 | 欧美老妇与禽交 | 亚洲成a人片在线观看无码3d | 国产亚洲人成a在线v网站 | 国产另类ts人妖一区二区 | 无码人妻丰满熟妇区五十路百度 | 又大又硬又黄的免费视频 | 国产精品毛多多水多 | 国产熟妇高潮叫床视频播放 | 国产9 9在线 | 中文 | 欧美精品一区二区精品久久 | 国产亲子乱弄免费视频 | 丰满少妇女裸体bbw | 亚洲一区二区三区偷拍女厕 | 人人澡人人妻人人爽人人蜜桃 | 国产精品无码mv在线观看 | 日韩 欧美 动漫 国产 制服 | 色综合久久久久综合一本到桃花网 | 正在播放老肥熟妇露脸 | 免费视频欧美无人区码 | 2020久久香蕉国产线看观看 | 中文字幕色婷婷在线视频 | 少妇性俱乐部纵欲狂欢电影 | 精品aⅴ一区二区三区 | 国产又爽又黄又刺激的视频 | 亚洲欧美中文字幕5发布 | 日韩欧美成人免费观看 | 1000部啪啪未满十八勿入下载 | 亚欧洲精品在线视频免费观看 | 国产精品a成v人在线播放 | 在线看片无码永久免费视频 | 久久久久se色偷偷亚洲精品av | 丝袜 中出 制服 人妻 美腿 | 成人免费无码大片a毛片 | 久久久精品人妻久久影视 | 日韩少妇白浆无码系列 | 国产亚洲美女精品久久久2020 | 55夜色66夜色国产精品视频 | 国产激情综合五月久久 | 欧美丰满熟妇xxxx性ppx人交 | 国产精品第一国产精品 | 精品人妻中文字幕有码在线 | 在线观看国产一区二区三区 | 我要看www免费看插插视频 | 中文字幕人妻丝袜二区 | 少妇邻居内射在线 | 国产av一区二区三区最新精品 | 在线亚洲高清揄拍自拍一品区 | 成人亚洲精品久久久久 | 精品国产成人一区二区三区 | 国产人妻人伦精品1国产丝袜 | 精品国产麻豆免费人成网站 | 亚洲一区二区三区 | 伊人久久大香线蕉av一区二区 | 国产精品久久久av久久久 | 久久国语露脸国产精品电影 | 97夜夜澡人人爽人人喊中国片 | 国产人妻人伦精品1国产丝袜 | 国产精品va在线观看无码 | 成年美女黄网站色大免费视频 | 国产成人精品一区二区在线小狼 | 久久精品国产一区二区三区肥胖 | 中文字幕av日韩精品一区二区 | 少妇被粗大的猛进出69影院 | 波多野结衣高清一区二区三区 | 久久综合狠狠综合久久综合88 | 色婷婷久久一区二区三区麻豆 | 7777奇米四色成人眼影 | 国产午夜福利100集发布 | 精品国精品国产自在久国产87 | 欧美性黑人极品hd | 日韩欧美群交p片內射中文 | 妺妺窝人体色www婷婷 | 精品夜夜澡人妻无码av蜜桃 | 婷婷五月综合激情中文字幕 | 成年美女黄网站色大免费视频 | 激情爆乳一区二区三区 | 久久人人爽人人爽人人片ⅴ | 久热国产vs视频在线观看 | 欧美激情内射喷水高潮 | 国产高清不卡无码视频 | 国产激情无码一区二区 | 精品国产成人一区二区三区 | 亚洲成av人综合在线观看 | 老熟妇乱子伦牲交视频 | 国产免费久久精品国产传媒 | 精品国产aⅴ无码一区二区 | 亚洲高清偷拍一区二区三区 | 爱做久久久久久 | 久久亚洲a片com人成 | 国精产品一区二区三区 | 久久zyz资源站无码中文动漫 | 亚洲国产精品一区二区第一页 | 1000部啪啪未满十八勿入下载 | 老熟女乱子伦 | 亚洲国产av美女网站 | 福利一区二区三区视频在线观看 | 亚洲一区二区三区在线观看网站 | 欧洲精品码一区二区三区免费看 | 中文字幕av日韩精品一区二区 | 乱人伦人妻中文字幕无码久久网 | 亚洲gv猛男gv无码男同 | 天天爽夜夜爽夜夜爽 | 亚洲成色www久久网站 | 99久久99久久免费精品蜜桃 | 久久久久人妻一区精品色欧美 | 欧美午夜特黄aaaaaa片 | 色偷偷人人澡人人爽人人模 | 欧美丰满熟妇xxxx性ppx人交 | 熟妇人妻中文av无码 | 伊在人天堂亚洲香蕉精品区 | 人人妻人人澡人人爽欧美一区九九 | 一本一道久久综合久久 | 国产亚洲精品久久久久久久 | 四虎影视成人永久免费观看视频 | 最近免费中文字幕中文高清百度 | 强奷人妻日本中文字幕 | 人人妻人人澡人人爽欧美精品 | 男女下面进入的视频免费午夜 | 少妇的肉体aa片免费 | 最新国产乱人伦偷精品免费网站 | 成人动漫在线观看 | 国产69精品久久久久app下载 | 天天av天天av天天透 | 在教室伦流澡到高潮hnp视频 | www成人国产高清内射 | 中文久久乱码一区二区 | 亚洲国产综合无码一区 | 日本精品人妻无码77777 天堂一区人妻无码 | 99久久久无码国产精品免费 | 久久伊人色av天堂九九小黄鸭 | 精品国产一区二区三区四区在线看 | 丰满少妇弄高潮了www | 日本精品少妇一区二区三区 | 无码人妻精品一区二区三区下载 | 国产亚洲日韩欧美另类第八页 | 亚洲狠狠婷婷综合久久 | 老子影院午夜伦不卡 | 国产 浪潮av性色四虎 | 日本一区二区三区免费播放 | 少妇高潮喷潮久久久影院 | 一个人免费观看的www视频 | 亚洲欧洲日本无在线码 | 国产香蕉尹人视频在线 | 亚洲一区二区三区在线观看网站 | 午夜时刻免费入口 | 18无码粉嫩小泬无套在线观看 | 奇米影视7777久久精品人人爽 | 荫蒂被男人添的好舒服爽免费视频 | 天海翼激烈高潮到腰振不止 | 国产激情艳情在线看视频 | 久久国产精品萌白酱免费 | 中文无码伦av中文字幕 | 老头边吃奶边弄进去呻吟 | 亚洲国产精华液网站w | 亚洲人亚洲人成电影网站色 | 蜜桃无码一区二区三区 | 成年美女黄网站色大免费全看 | 5858s亚洲色大成网站www | 亚洲日本一区二区三区在线 | 久久婷婷五月综合色国产香蕉 | 国产在线精品一区二区高清不卡 | 欧美一区二区三区 | 亚洲综合无码久久精品综合 | 极品尤物被啪到呻吟喷水 | 精品人妻中文字幕有码在线 | 亚拍精品一区二区三区探花 | 精品偷拍一区二区三区在线看 | 熟妇人妻无乱码中文字幕 | 丝袜 中出 制服 人妻 美腿 | 国产精品二区一区二区aⅴ污介绍 | 日本精品人妻无码77777 天堂一区人妻无码 | 精品国产一区二区三区四区 | 国产精品成人av在线观看 | 久在线观看福利视频 | 18禁止看的免费污网站 | 中文毛片无遮挡高清免费 | 欧美日韩人成综合在线播放 | 国产亚洲精品久久久久久久久动漫 | 丰满少妇高潮惨叫视频 | 久久久www成人免费毛片 | 天堂久久天堂av色综合 | 大地资源网第二页免费观看 | 丰满人妻被黑人猛烈进入 | 人人妻人人澡人人爽精品欧美 | 成人无码精品一区二区三区 | 伊在人天堂亚洲香蕉精品区 | 97夜夜澡人人爽人人喊中国片 | 国产人妻精品一区二区三区不卡 | 清纯唯美经典一区二区 | 最近中文2019字幕第二页 | 国产精品丝袜黑色高跟鞋 | 高清国产亚洲精品自在久久 | 国产又爽又黄又刺激的视频 | 亚洲精品午夜国产va久久成人 | 亚洲熟熟妇xxxx | 日本大乳高潮视频在线观看 | 四虎国产精品免费久久 | 国产精品无码mv在线观看 | 秋霞成人午夜鲁丝一区二区三区 | 领导边摸边吃奶边做爽在线观看 | 久久久久亚洲精品男人的天堂 | 亚洲综合无码一区二区三区 | 国产亚洲欧美日韩亚洲中文色 | 久久99精品久久久久婷婷 | 精品无码国产一区二区三区av | 中文字幕久久久久人妻 | 欧美日韩综合一区二区三区 | 国产成人人人97超碰超爽8 | a国产一区二区免费入口 | 亚洲午夜无码久久 | 少妇被粗大的猛进出69影院 | 亚洲国产精品一区二区美利坚 | a片在线免费观看 | aa片在线观看视频在线播放 | 一本加勒比波多野结衣 | 亚洲国产欧美国产综合一区 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲啪av永久无码精品放毛片 | 少妇人妻av毛片在线看 | 亚洲 欧美 激情 小说 另类 | a片免费视频在线观看 | 亚洲男人av天堂午夜在 | 国产精品人妻一区二区三区四 | 成年女人永久免费看片 | 青春草在线视频免费观看 | 亚洲国产精品一区二区第一页 | 无码一区二区三区在线 | 日韩成人一区二区三区在线观看 | 99久久精品日本一区二区免费 | 国产精品怡红院永久免费 | 欧美激情一区二区三区成人 | 97资源共享在线视频 | 国产精品久久福利网站 | 东京一本一道一二三区 | 天海翼激烈高潮到腰振不止 | 国产成人人人97超碰超爽8 | 成人毛片一区二区 | 欧美亚洲国产一区二区三区 | 大乳丰满人妻中文字幕日本 | 久久久www成人免费毛片 | 中文字幕人妻无码一夲道 | 国产女主播喷水视频在线观看 | 福利一区二区三区视频在线观看 | 午夜精品一区二区三区在线观看 | 亚洲人成无码网www | 国产熟妇另类久久久久 | 久青草影院在线观看国产 | 国产麻豆精品精东影业av网站 | 国产精品无码永久免费888 | 丰满人妻被黑人猛烈进入 | 欧美 日韩 亚洲 在线 | 亚洲日本在线电影 | 精品日本一区二区三区在线观看 | 免费网站看v片在线18禁无码 | 色婷婷综合中文久久一本 | 无码免费一区二区三区 | 日本精品高清一区二区 | 欧美人妻一区二区三区 | 野狼第一精品社区 | 精品无码国产一区二区三区av | 精品国产成人一区二区三区 | 欧美人与禽猛交狂配 | 中文字幕久久久久人妻 | 少妇久久久久久人妻无码 | 真人与拘做受免费视频一 | 色婷婷av一区二区三区之红樱桃 | 成人无码精品1区2区3区免费看 | 亚洲狠狠婷婷综合久久 | 任你躁国产自任一区二区三区 | 日本免费一区二区三区最新 | 国产精品久久久久久久影院 | 亚洲成av人影院在线观看 | 精品一区二区不卡无码av | 日本一区二区三区免费播放 | 无遮挡国产高潮视频免费观看 | 久久综合九色综合欧美狠狠 | 18无码粉嫩小泬无套在线观看 | 国产av人人夜夜澡人人爽麻豆 | 老司机亚洲精品影院无码 | 7777奇米四色成人眼影 | 狠狠色丁香久久婷婷综合五月 | 日本一区二区三区免费播放 | 久久熟妇人妻午夜寂寞影院 | 狠狠色色综合网站 | 日韩人妻无码一区二区三区久久99 | 国产av人人夜夜澡人人爽麻豆 | 国产成人无码av在线影院 | 精品亚洲成av人在线观看 | 亚洲成av人在线观看网址 | 最新版天堂资源中文官网 | 成人免费视频视频在线观看 免费 | 少妇人妻大乳在线视频 | 国产亚洲tv在线观看 | 久久久久99精品国产片 | 久久精品国产99久久6动漫 | 国产疯狂伦交大片 | 一本久久a久久精品vr综合 | 天天躁夜夜躁狠狠是什么心态 | 帮老师解开蕾丝奶罩吸乳网站 | 国产人妻精品一区二区三区 | 最新国产乱人伦偷精品免费网站 | 国产无遮挡又黄又爽免费视频 | 欧美日韩人成综合在线播放 | 中文字幕乱码中文乱码51精品 | 麻豆果冻传媒2021精品传媒一区下载 | 无码人妻精品一区二区三区下载 | 亚洲熟女一区二区三区 | 国产精品无码一区二区桃花视频 | 正在播放东北夫妻内射 | 人人妻人人澡人人爽欧美一区九九 | 少妇人妻av毛片在线看 | 久久99精品国产.久久久久 | 国产精品久久久久久亚洲毛片 | 国产精品无码一区二区桃花视频 | 十八禁真人啪啪免费网站 | 国产sm调教视频在线观看 | 免费国产成人高清在线观看网站 | 99麻豆久久久国产精品免费 | 久久久久免费看成人影片 | 国产精品丝袜黑色高跟鞋 | 国产色xx群视频射精 | 国产精品亚洲а∨无码播放麻豆 | 51国偷自产一区二区三区 | 一本大道伊人av久久综合 | 一本大道伊人av久久综合 | 免费中文字幕日韩欧美 | 国产精品自产拍在线观看 | 在线精品亚洲一区二区 | 中文毛片无遮挡高清免费 | 桃花色综合影院 | 学生妹亚洲一区二区 | 99国产精品白浆在线观看免费 | 国产一区二区三区四区五区加勒比 | 内射欧美老妇wbb | 久久久久99精品成人片 | 欧美阿v高清资源不卡在线播放 | 亚洲国产精品美女久久久久 | 国产后入清纯学生妹 | 任你躁在线精品免费 | 日本肉体xxxx裸交 | 丝袜人妻一区二区三区 | 熟女体下毛毛黑森林 | 日日碰狠狠躁久久躁蜜桃 | 国产精品久久国产精品99 | 熟妇人妻无乱码中文字幕 | 亚洲春色在线视频 | 久久久久久久久蜜桃 | 午夜福利试看120秒体验区 | 国产午夜福利100集发布 | 国精产品一品二品国精品69xx | 97精品人妻一区二区三区香蕉 | 免费无码肉片在线观看 | 国产精品欧美成人 | 少妇被粗大的猛进出69影院 | 激情人妻另类人妻伦 | 色诱久久久久综合网ywww | 精品日本一区二区三区在线观看 | 丰满岳乱妇在线观看中字无码 | 国产精品-区区久久久狼 | 国产超碰人人爽人人做人人添 | 精品夜夜澡人妻无码av蜜桃 | 欧美阿v高清资源不卡在线播放 | 久久久无码中文字幕久... | 欧美黑人巨大xxxxx | 300部国产真实乱 | 人人妻人人澡人人爽欧美精品 | 天堂在线观看www | 亚洲小说春色综合另类 | 成人影院yy111111在线观看 | 亚洲伊人久久精品影院 | 清纯唯美经典一区二区 | 亚洲综合另类小说色区 | 天天爽夜夜爽夜夜爽 | 亚洲中文字幕av在天堂 | 久久精品无码一区二区三区 | 国产精品鲁鲁鲁 | 青青青手机频在线观看 | 亚洲の无码国产の无码影院 | 亚洲毛片av日韩av无码 | 纯爱无遮挡h肉动漫在线播放 | 欧美性猛交内射兽交老熟妇 | 亚洲爆乳大丰满无码专区 | 亚洲人成无码网www | 色窝窝无码一区二区三区色欲 | 一本久道高清无码视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产午夜无码视频在线观看 | 成人无码影片精品久久久 | 国产精品多人p群无码 | 亚洲一区二区三区在线观看网站 | 熟女俱乐部五十路六十路av | 中文字幕色婷婷在线视频 | 久久久久成人片免费观看蜜芽 | 国语自产偷拍精品视频偷 | 精品国产乱码久久久久乱码 | 红桃av一区二区三区在线无码av | 精品国产精品久久一区免费式 | 无码免费一区二区三区 | 少妇性l交大片 | 又紧又大又爽精品一区二区 | 伊人久久婷婷五月综合97色 | 欧美成人午夜精品久久久 | 在线 国产 欧美 亚洲 天堂 | 久久午夜夜伦鲁鲁片无码免费 | 国产xxx69麻豆国语对白 | 国产精品.xx视频.xxtv | 精品国产麻豆免费人成网站 | av无码久久久久不卡免费网站 | 午夜丰满少妇性开放视频 | 中文字幕人妻无码一区二区三区 | 成人性做爰aaa片免费看 | 一区二区传媒有限公司 | 国产精品久久久一区二区三区 | 中文字幕日韩精品一区二区三区 | 初尝人妻少妇中文字幕 | 亚洲色大成网站www | 天天躁夜夜躁狠狠是什么心态 | 久久久久久九九精品久 | 性史性农村dvd毛片 | 国产人妻人伦精品1国产丝袜 | 熟妇人妻中文av无码 | 成人无码视频在线观看网站 | 女人被爽到呻吟gif动态图视看 | 一本一道久久综合久久 | 欧美日韩综合一区二区三区 | v一区无码内射国产 | 国产亚洲精品久久久久久久 | 捆绑白丝粉色jk震动捧喷白浆 | 中国女人内谢69xxxxxa片 | 中文字幕乱码亚洲无线三区 | 夫妻免费无码v看片 | 亚洲自偷精品视频自拍 | 亚洲中文字幕无码中文字在线 | 狠狠色丁香久久婷婷综合五月 | 免费男性肉肉影院 | 久久精品人妻少妇一区二区三区 | 国产无av码在线观看 | 未满成年国产在线观看 | 精品成在人线av无码免费看 | 一二三四社区在线中文视频 | 国产午夜无码视频在线观看 | 黑人巨大精品欧美一区二区 | 亚洲精品一区二区三区婷婷月 | 欧美精品一区二区精品久久 | 乌克兰少妇xxxx做受 | 精品水蜜桃久久久久久久 | 久久zyz资源站无码中文动漫 | 未满成年国产在线观看 | 天堂亚洲免费视频 | 欧美三级不卡在线观看 | 性开放的女人aaa片 | 特大黑人娇小亚洲女 | 少妇无套内谢久久久久 | 精品久久综合1区2区3区激情 | 精品国产一区av天美传媒 | 国产亚洲精品久久久闺蜜 | 国产成人无码av一区二区 | 夜夜影院未满十八勿进 | 我要看www免费看插插视频 | 无码人妻丰满熟妇区五十路百度 | 国产免费无码一区二区视频 | 97夜夜澡人人爽人人喊中国片 | 亚洲s色大片在线观看 | 久久久无码中文字幕久... | 日本大香伊一区二区三区 | 国产手机在线αⅴ片无码观看 | 精品久久久无码人妻字幂 | 99久久久国产精品无码免费 | 色欲av亚洲一区无码少妇 | 天堂亚洲免费视频 | 少妇性俱乐部纵欲狂欢电影 | 国产麻豆精品精东影业av网站 | 亚洲人成网站在线播放942 | 熟妇女人妻丰满少妇中文字幕 | 国产精品va在线观看无码 | 国产在线精品一区二区高清不卡 | 精品一二三区久久aaa片 | 中文精品久久久久人妻不卡 | 国产亚av手机在线观看 | 香蕉久久久久久av成人 | 毛片内射-百度 | 成人片黄网站色大片免费观看 | 欧美丰满熟妇xxxx性ppx人交 | 久久久精品成人免费观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 男人的天堂av网站 | 麻豆蜜桃av蜜臀av色欲av | 少妇性俱乐部纵欲狂欢电影 | 国产内射老熟女aaaa | 乱人伦人妻中文字幕无码久久网 | 国产 精品 自在自线 | 欧美精品国产综合久久 | 98国产精品综合一区二区三区 | 少妇高潮一区二区三区99 | 久久久久成人精品免费播放动漫 | 国产亚洲精品久久久久久久久动漫 | 日韩人妻少妇一区二区三区 | 久青草影院在线观看国产 | 日日摸天天摸爽爽狠狠97 | 一本久久伊人热热精品中文字幕 | 成人av无码一区二区三区 | 成熟女人特级毛片www免费 | 成人性做爰aaa片免费看不忠 | 中文久久乱码一区二区 | 扒开双腿疯狂进出爽爽爽视频 | 特黄特色大片免费播放器图片 | 18黄暴禁片在线观看 | 欧美亚洲国产一区二区三区 | 国产香蕉尹人综合在线观看 | 国产两女互慰高潮视频在线观看 | 国产97在线 | 亚洲 | 欧洲美熟女乱又伦 | 亚洲精品鲁一鲁一区二区三区 | 又紧又大又爽精品一区二区 | 人人妻人人澡人人爽人人精品浪潮 | 天堂久久天堂av色综合 | 国产人妻精品午夜福利免费 | 久久久精品人妻久久影视 | 国产激情综合五月久久 | 蜜桃无码一区二区三区 | 四虎国产精品免费久久 | 国产在线一区二区三区四区五区 | 精品欧洲av无码一区二区三区 | 日韩精品无码一本二本三本色 | 亚洲国产精品一区二区美利坚 | 中文字幕乱码亚洲无线三区 | 97夜夜澡人人双人人人喊 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 欧美性猛交内射兽交老熟妇 | 日日躁夜夜躁狠狠躁 | 久激情内射婷内射蜜桃人妖 | 久久午夜无码鲁丝片 | 大肉大捧一进一出视频出来呀 | 蜜桃臀无码内射一区二区三区 | 成熟妇人a片免费看网站 | 国产日产欧产精品精品app | 大肉大捧一进一出好爽视频 | 国内综合精品午夜久久资源 | 亚洲午夜无码久久 | 人人爽人人澡人人人妻 | 水蜜桃亚洲一二三四在线 | 女人被男人爽到呻吟的视频 | 国产精品久久久午夜夜伦鲁鲁 | 给我免费的视频在线观看 | 国产特级毛片aaaaaa高潮流水 | 岛国片人妻三上悠亚 | 久久国产精品二国产精品 | 成人片黄网站色大片免费观看 | 影音先锋中文字幕无码 | 宝宝好涨水快流出来免费视频 | 又大又紧又粉嫩18p少妇 | 国产成人一区二区三区别 | 午夜精品一区二区三区在线观看 | 精品无码一区二区三区的天堂 | 熟妇人妻激情偷爽文 | 天堂无码人妻精品一区二区三区 | 永久黄网站色视频免费直播 | 漂亮人妻洗澡被公强 日日躁 | 成人欧美一区二区三区黑人免费 | 欧美性猛交xxxx富婆 | 亚洲区小说区激情区图片区 | 黑人大群体交免费视频 | 久久国产劲爆∧v内射 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 亚洲热妇无码av在线播放 | aⅴ亚洲 日韩 色 图网站 播放 | а天堂中文在线官网 | 亚洲熟妇色xxxxx欧美老妇 | 成人无码精品1区2区3区免费看 | 日本熟妇乱子伦xxxx | 久久午夜无码鲁丝片秋霞 | 88国产精品欧美一区二区三区 | 丰满妇女强制高潮18xxxx | 精品国产青草久久久久福利 | 蜜桃av抽搐高潮一区二区 | 亚洲无人区午夜福利码高清完整版 | 国产性生交xxxxx无码 | 最近中文2019字幕第二页 | 在线观看免费人成视频 | 少妇无码av无码专区在线观看 | 久久综合香蕉国产蜜臀av | 国产精品手机免费 | 国产av一区二区三区最新精品 | 天天拍夜夜添久久精品大 | 久久天天躁夜夜躁狠狠 | 色综合视频一区二区三区 | 国产在热线精品视频 | 久久精品女人天堂av免费观看 | 国产精品亚洲五月天高清 | 蜜桃臀无码内射一区二区三区 | 精品aⅴ一区二区三区 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲一区二区三区在线观看网站 | 亚洲欧美国产精品专区久久 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲精品国产a久久久久久 | 欧美老熟妇乱xxxxx | 沈阳熟女露脸对白视频 | 久久综合给久久狠狠97色 | 国产精品无套呻吟在线 | 图片小说视频一区二区 | 久久99精品国产麻豆 | 免费网站看v片在线18禁无码 | 久久国产精品_国产精品 | 亚洲国产精品一区二区第一页 | 久久久精品成人免费观看 | 性欧美大战久久久久久久 | 中文字幕av伊人av无码av | 久久精品国产一区二区三区 | 99久久久无码国产精品免费 | 亚洲精品国产第一综合99久久 | 丝袜美腿亚洲一区二区 | 欧洲vodafone精品性 | 欧美国产日韩亚洲中文 | 一本色道婷婷久久欧美 | 午夜理论片yy44880影院 | 窝窝午夜理论片影院 | 午夜精品久久久内射近拍高清 | 国产成人无码av片在线观看不卡 | 精品无码一区二区三区的天堂 | 天天爽夜夜爽夜夜爽 | 国产成人综合色在线观看网站 | 久久精品国产一区二区三区 | 无遮无挡爽爽免费视频 | 欧美真人作爱免费视频 | 亚洲一区av无码专区在线观看 | 国产精品久久久 | 国产情侣作爱视频免费观看 | 国产人成高清在线视频99最全资源 | 精品国产aⅴ无码一区二区 | 国产另类ts人妖一区二区 | 我要看www免费看插插视频 | 国产成人无码av片在线观看不卡 | 国产精品99久久精品爆乳 | 日韩亚洲欧美中文高清在线 | 国产真人无遮挡作爱免费视频 | 色婷婷综合中文久久一本 | 男女性色大片免费网站 | 成人aaa片一区国产精品 | 亚洲精品一区二区三区在线观看 | 免费网站看v片在线18禁无码 | 特黄特色大片免费播放器图片 | 中文字幕日产无线码一区 | 黑人玩弄人妻中文在线 | 日本一本二本三区免费 | 亚洲狠狠色丁香婷婷综合 | 在线精品国产一区二区三区 | 18禁黄网站男男禁片免费观看 | 亚洲一区二区三区无码久久 | 人妻体内射精一区二区三四 | 欧美国产日韩亚洲中文 | 日韩欧美群交p片內射中文 | 精品国产国产综合精品 | 小泽玛莉亚一区二区视频在线 | 成人精品一区二区三区中文字幕 | 18禁黄网站男男禁片免费观看 | 久久人人爽人人爽人人片ⅴ | 亚洲第一无码av无码专区 | 野狼第一精品社区 | 日本精品少妇一区二区三区 | 爽爽影院免费观看 | 国产内射爽爽大片视频社区在线 | 国产后入清纯学生妹 | 精品无码一区二区三区爱欲 | 少妇高潮喷潮久久久影院 | 伊人久久大香线蕉午夜 | 国产成人综合在线女婷五月99播放 | 欧美熟妇另类久久久久久多毛 | 国内少妇偷人精品视频免费 | 18精品久久久无码午夜福利 | 扒开双腿疯狂进出爽爽爽视频 | 日本肉体xxxx裸交 | 久久人人爽人人人人片 | 夜精品a片一区二区三区无码白浆 | 久久99久久99精品中文字幕 | 免费无码的av片在线观看 | 国产 精品 自在自线 | 伊人久久大香线蕉亚洲 | 97精品人妻一区二区三区香蕉 | 国产精品国产三级国产专播 | 午夜嘿嘿嘿影院 | 成熟女人特级毛片www免费 | 女人被男人躁得好爽免费视频 | 天堂无码人妻精品一区二区三区 | 国产亚洲美女精品久久久2020 | 大胆欧美熟妇xx | 日日橹狠狠爱欧美视频 | 成人试看120秒体验区 | 亚洲欧美综合区丁香五月小说 | 日本饥渴人妻欲求不满 | 成在人线av无码免费 | 高清不卡一区二区三区 | 熟妇人妻无乱码中文字幕 | 中文字幕无线码免费人妻 | 午夜不卡av免费 一本久久a久久精品vr综合 | 红桃av一区二区三区在线无码av | 最新版天堂资源中文官网 | 欧美老妇交乱视频在线观看 | 国产无遮挡又黄又爽又色 | 在教室伦流澡到高潮hnp视频 | 老熟妇乱子伦牲交视频 | 97夜夜澡人人双人人人喊 | 日韩欧美群交p片內射中文 | 精品国精品国产自在久国产87 | 99riav国产精品视频 | 久久午夜无码鲁丝片秋霞 | 东京无码熟妇人妻av在线网址 | 成人片黄网站色大片免费观看 | 欧美人与善在线com | 无码人妻精品一区二区三区不卡 | 少妇高潮一区二区三区99 | 精品久久久无码人妻字幂 | 亚洲高清偷拍一区二区三区 | 帮老师解开蕾丝奶罩吸乳网站 | 成人av无码一区二区三区 | 少妇被粗大的猛进出69影院 | 亚洲综合精品香蕉久久网 | 国产人成高清在线视频99最全资源 | 成人性做爰aaa片免费看 | 国产极品视觉盛宴 | 无码免费一区二区三区 | 国产av无码专区亚洲awww | 国产精品亚洲综合色区韩国 | 国产色xx群视频射精 | 久久精品国产精品国产精品污 | 永久黄网站色视频免费直播 | 又大又硬又爽免费视频 | 性史性农村dvd毛片 | 青草青草久热国产精品 | 日本熟妇浓毛 | 欧美熟妇另类久久久久久不卡 | 亚洲高清偷拍一区二区三区 | 日日天日日夜日日摸 | 久久久久亚洲精品男人的天堂 | 无码人妻精品一区二区三区不卡 | 一个人看的www免费视频在线观看 | 好屌草这里只有精品 | 国产人妻人伦精品 | 国产成人综合色在线观看网站 | 亚洲狠狠色丁香婷婷综合 | 天干天干啦夜天干天2017 | 亚洲日本va中文字幕 | 大乳丰满人妻中文字幕日本 | 国精品人妻无码一区二区三区蜜柚 | 男女超爽视频免费播放 | 人妻少妇被猛烈进入中文字幕 | 欧美 日韩 亚洲 在线 | aⅴ亚洲 日韩 色 图网站 播放 | 亚洲成a人片在线观看日本 | 人人妻人人藻人人爽欧美一区 | 国产人妖乱国产精品人妖 | 300部国产真实乱 | 国产真实夫妇视频 | 2019nv天堂香蕉在线观看 | 亚洲一区二区观看播放 | 亚洲日本一区二区三区在线 | 理论片87福利理论电影 | 一本色道婷婷久久欧美 | yw尤物av无码国产在线观看 | 无套内谢老熟女 | 18禁黄网站男男禁片免费观看 | 精品人妻人人做人人爽夜夜爽 | 88国产精品欧美一区二区三区 | 亚洲中文字幕在线观看 | 国产精品香蕉在线观看 | 亚洲人成无码网www | 国产精品久久久久影院嫩草 | 日本免费一区二区三区最新 | 人人妻人人澡人人爽人人精品 | 成人精品视频一区二区 | 中文字幕无码av波多野吉衣 | 人人妻人人澡人人爽精品欧美 | 精品人妻中文字幕有码在线 | 国产精品人妻一区二区三区四 | 亚洲自偷精品视频自拍 | 97久久精品无码一区二区 | 性色欲网站人妻丰满中文久久不卡 | 中文字幕+乱码+中文字幕一区 | 强辱丰满人妻hd中文字幕 | 国产成人精品一区二区在线小狼 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲男人av天堂午夜在 | 扒开双腿吃奶呻吟做受视频 | 亚洲欧美日韩综合久久久 | 国产亚洲精品久久久ai换 | 国产国产精品人在线视 | 欧美freesex黑人又粗又大 | 婷婷色婷婷开心五月四房播播 | 嫩b人妻精品一区二区三区 | 97久久超碰中文字幕 | 国产凸凹视频一区二区 | 国产欧美精品一区二区三区 | 99国产欧美久久久精品 | 精品久久综合1区2区3区激情 | 无码国内精品人妻少妇 | 熟妇人妻激情偷爽文 | 天天拍夜夜添久久精品 | 夜夜高潮次次欢爽av女 | 四虎国产精品免费久久 | 欧美 亚洲 国产 另类 | 国产亚洲欧美日韩亚洲中文色 | 天天综合网天天综合色 | 亚洲成a人一区二区三区 | 国产成人无码a区在线观看视频app | 中文字幕无码热在线视频 | 国产亚洲tv在线观看 | 日本xxxx色视频在线观看免费 | 免费看少妇作爱视频 | 国产成人精品一区二区在线小狼 | 亚洲 激情 小说 另类 欧美 | 成人欧美一区二区三区 | 暴力强奷在线播放无码 | 纯爱无遮挡h肉动漫在线播放 | 国产人妻大战黑人第1集 | 丰腴饱满的极品熟妇 | 男女超爽视频免费播放 | 日本精品高清一区二区 | 国产区女主播在线观看 | 免费播放一区二区三区 | 香蕉久久久久久av成人 | 久久天天躁狠狠躁夜夜免费观看 | 图片小说视频一区二区 | 国产精品成人av在线观看 | 久久aⅴ免费观看 | av人摸人人人澡人人超碰下载 | 日韩视频 中文字幕 视频一区 | 国产成人一区二区三区别 | 蜜桃视频插满18在线观看 | 四虎影视成人永久免费观看视频 | 国产一区二区三区精品视频 | 无码精品人妻一区二区三区av | 国产成人精品一区二区在线小狼 | 在线播放亚洲第一字幕 | 国产熟女一区二区三区四区五区 | 欧美黑人巨大xxxxx | 成人欧美一区二区三区黑人 | 亚洲精品鲁一鲁一区二区三区 | 欧美真人作爱免费视频 | 国产乱人无码伦av在线a | 国产成人av免费观看 | 人人妻人人澡人人爽欧美精品 | 久久亚洲国产成人精品性色 | а√资源新版在线天堂 | 强开小婷嫩苞又嫩又紧视频 | 国产精品第一国产精品 | 亚洲а∨天堂久久精品2021 | 中文字幕色婷婷在线视频 | 国产熟女一区二区三区四区五区 | 激情内射亚州一区二区三区爱妻 | 97无码免费人妻超级碰碰夜夜 | 亚洲成av人片天堂网无码】 | 大乳丰满人妻中文字幕日本 | 国产乱人伦av在线无码 | www国产精品内射老师 | 强伦人妻一区二区三区视频18 | 乱人伦中文视频在线观看 | 国产亚洲人成a在线v网站 | 亚洲国产精品无码一区二区三区 | 爆乳一区二区三区无码 | 少妇的肉体aa片免费 | 小sao货水好多真紧h无码视频 | 久久亚洲a片com人成 | 欧美野外疯狂做受xxxx高潮 | 国产精品亚洲а∨无码播放麻豆 | 色综合久久久无码中文字幕 | 精品乱子伦一区二区三区 | 亚洲国产欧美日韩精品一区二区三区 | 激情五月综合色婷婷一区二区 | 欧美老人巨大xxxx做受 | 精品久久久久久亚洲精品 | 少妇一晚三次一区二区三区 | 婷婷五月综合激情中文字幕 | 欧美第一黄网免费网站 | 女人被爽到呻吟gif动态图视看 | 久久国语露脸国产精品电影 | 一本大道久久东京热无码av | 久久亚洲中文字幕精品一区 | 俺去俺来也在线www色官网 | 波多野结衣高清一区二区三区 | 免费中文字幕日韩欧美 | 麻豆人妻少妇精品无码专区 | 亚洲男人av天堂午夜在 | 人妻天天爽夜夜爽一区二区 | 四虎永久在线精品免费网址 | 黑人大群体交免费视频 | 亚洲精品一区二区三区婷婷月 | 免费观看又污又黄的网站 | 国产亚洲欧美在线专区 | 国产激情精品一区二区三区 | 丰满妇女强制高潮18xxxx | 中文字幕av无码一区二区三区电影 | 99视频精品全部免费免费观看 | 131美女爱做视频 | 亚洲中文字幕无码中字 | 国产人妻人伦精品 | 国产av一区二区三区最新精品 | 色婷婷久久一区二区三区麻豆 | 人人妻人人澡人人爽人人精品浪潮 | 国产极品美女高潮无套在线观看 | 久久精品国产精品国产精品污 | 色欲综合久久中文字幕网 | 亚洲一区二区三区播放 | 日日橹狠狠爱欧美视频 | 一个人看的www免费视频在线观看 | 亚洲自偷自偷在线制服 | 国产精品无码永久免费888 | 99久久精品日本一区二区免费 | 欧美猛少妇色xxxxx | 国产精品毛多多水多 | 澳门永久av免费网站 | 国产精品18久久久久久麻辣 | 欧美日韩综合一区二区三区 | 300部国产真实乱 | 18精品久久久无码午夜福利 | 中文字幕无码人妻少妇免费 | 午夜男女很黄的视频 | 日韩欧美中文字幕在线三区 | 无码免费一区二区三区 | 成人无码影片精品久久久 | 亚洲欧洲日本无在线码 | 99久久99久久免费精品蜜桃 | 国产又粗又硬又大爽黄老大爷视 | 三级4级全黄60分钟 | 国产一区二区三区影院 | 国产手机在线αⅴ片无码观看 | 国产又粗又硬又大爽黄老大爷视 | 国模大胆一区二区三区 | 国产精品久久久久无码av色戒 | 国产乡下妇女做爰 | 乱码午夜-极国产极内射 | 77777熟女视频在线观看 а天堂中文在线官网 | av在线亚洲欧洲日产一区二区 | 领导边摸边吃奶边做爽在线观看 | 精品亚洲韩国一区二区三区 | 久久99国产综合精品 | 国产av人人夜夜澡人人爽麻豆 | 亚洲精品国偷拍自产在线麻豆 | 激情综合激情五月俺也去 | 国产猛烈高潮尖叫视频免费 | 一本久久a久久精品vr综合 | 日本va欧美va欧美va精品 | 图片小说视频一区二区 | 国内精品人妻无码久久久影院 | 人人爽人人澡人人人妻 | 成 人 网 站国产免费观看 | 精品aⅴ一区二区三区 | 成人性做爰aaa片免费看 | 高清无码午夜福利视频 | 亚洲男人av香蕉爽爽爽爽 | 国产精品久久久一区二区三区 | 55夜色66夜色国产精品视频 | 男女爱爱好爽视频免费看 | 伊人久久大香线蕉av一区二区 | 精品成人av一区二区三区 | 无遮挡国产高潮视频免费观看 | 玩弄人妻少妇500系列视频 | 亚洲色无码一区二区三区 | 亚洲国产精品成人久久蜜臀 | 台湾无码一区二区 | 久久国产精品偷任你爽任你 | 亚洲日韩中文字幕在线播放 | 国产欧美精品一区二区三区 | 日韩精品一区二区av在线 | 国产明星裸体无码xxxx视频 | 亚洲午夜无码久久 | 久久午夜夜伦鲁鲁片无码免费 | 久9re热视频这里只有精品 | 精品人妻人人做人人爽夜夜爽 | 国产精品人人爽人人做我的可爱 | 久青草影院在线观看国产 | 两性色午夜免费视频 | 精品人妻av区 | 日韩视频 中文字幕 视频一区 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲人交乣女bbw | yw尤物av无码国产在线观看 | 日本又色又爽又黄的a片18禁 | 国产精华av午夜在线观看 | 乌克兰少妇性做爰 | 成 人 网 站国产免费观看 | 国产乱人偷精品人妻a片 | 国产人妻精品一区二区三区 | 免费人成网站视频在线观看 | 丝袜美腿亚洲一区二区 | aⅴ亚洲 日韩 色 图网站 播放 | 丰腴饱满的极品熟妇 | 国产亚洲视频中文字幕97精品 | 久久婷婷五月综合色国产香蕉 | 成人女人看片免费视频放人 | 精品无码一区二区三区爱欲 | 色偷偷人人澡人人爽人人模 | 亚洲毛片av日韩av无码 | 亚洲精品久久久久avwww潮水 | 亚洲色大成网站www | 丰满妇女强制高潮18xxxx | 乱人伦中文视频在线观看 | 国产高清不卡无码视频 | 久久久av男人的天堂 | 蜜桃av抽搐高潮一区二区 | 少妇性l交大片 | 熟女少妇在线视频播放 | 女人被爽到呻吟gif动态图视看 | 无码中文字幕色专区 | 国产综合在线观看 | 成人av无码一区二区三区 | 日日摸夜夜摸狠狠摸婷婷 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 又大又硬又爽免费视频 | 女人被男人躁得好爽免费视频 | 国产精品久久久午夜夜伦鲁鲁 | 在线播放亚洲第一字幕 | 精品成在人线av无码免费看 | 动漫av一区二区在线观看 | 日本精品少妇一区二区三区 | 国产亚洲欧美在线专区 | 小鲜肉自慰网站xnxx | 无码国模国产在线观看 | 国产精品va在线播放 | 欧美放荡的少妇 | 中文字幕日产无线码一区 | 在线视频网站www色 | 亚洲日本va中文字幕 | 中国女人内谢69xxxx | a国产一区二区免费入口 | 成人aaa片一区国产精品 | 永久免费观看国产裸体美女 | 小鲜肉自慰网站xnxx | 欧美日本精品一区二区三区 | а√天堂www在线天堂小说 | 久9re热视频这里只有精品 | 正在播放老肥熟妇露脸 | 水蜜桃亚洲一二三四在线 | 夜夜影院未满十八勿进 | 国产黄在线观看免费观看不卡 | 色偷偷人人澡人人爽人人模 | 亚洲综合久久一区二区 | 日日摸夜夜摸狠狠摸婷婷 | 131美女爱做视频 | 国产激情艳情在线看视频 | 久久久久99精品国产片 | 麻豆精品国产精华精华液好用吗 | 中文字幕精品av一区二区五区 | 狠狠噜狠狠狠狠丁香五月 | 中文字幕人妻丝袜二区 | 东北女人啪啪对白 | 国产精品亚洲五月天高清 | 青青久在线视频免费观看 | 亚洲а∨天堂久久精品2021 | 国产成人无码一二三区视频 | 欧美亚洲国产一区二区三区 | 国产成人精品视频ⅴa片软件竹菊 | 乱码av麻豆丝袜熟女系列 | 99久久精品日本一区二区免费 | 国产亚洲精品久久久ai换 | 国产色精品久久人妻 | 无码精品人妻一区二区三区av | 四虎国产精品一区二区 | 激情内射亚州一区二区三区爱妻 | 国产成人无码专区 | 国产精品内射视频免费 | 99久久久无码国产精品免费 | 国精品人妻无码一区二区三区蜜柚 | 人人妻人人澡人人爽欧美一区 | 永久免费精品精品永久-夜色 | 亚洲成av人片在线观看无码不卡 | 又大又硬又黄的免费视频 | 香港三级日本三级妇三级 | 激情内射亚州一区二区三区爱妻 | 亚洲综合伊人久久大杳蕉 | 天天躁夜夜躁狠狠是什么心态 | 无码乱肉视频免费大全合集 | 亚洲精品无码人妻无码 | 久久久久久久女国产乱让韩 | 三级4级全黄60分钟 | 无码人妻出轨黑人中文字幕 | 桃花色综合影院 | 国产精品沙发午睡系列 | 76少妇精品导航 | 亚洲一区二区三区无码久久 | 噜噜噜亚洲色成人网站 | 久久久www成人免费毛片 | 亚洲精品www久久久 | 我要看www免费看插插视频 | 日日躁夜夜躁狠狠躁 | 亚洲中文字幕在线观看 | 黑人巨大精品欧美一区二区 | 漂亮人妻洗澡被公强 日日躁 | 九月婷婷人人澡人人添人人爽 | 久久综合给合久久狠狠狠97色 | 狠狠综合久久久久综合网 | 免费无码av一区二区 | 亚洲欧美精品伊人久久 | aa片在线观看视频在线播放 | 国产亚洲精品久久久久久国模美 | 国产人妻精品午夜福利免费 | www一区二区www免费 | 久久人妻内射无码一区三区 | 久久熟妇人妻午夜寂寞影院 | 成年女人永久免费看片 | 97久久超碰中文字幕 | 骚片av蜜桃精品一区 | 精品国产成人一区二区三区 | 少妇无码吹潮 | 亚洲精品成a人在线观看 | 高潮毛片无遮挡高清免费视频 | 色综合久久久无码中文字幕 | 一本色道久久综合亚洲精品不卡 | 国产精品自产拍在线观看 | 熟妇人妻激情偷爽文 | 中文字幕+乱码+中文字幕一区 | 日本护士xxxxhd少妇 | 国产av无码专区亚洲a∨毛片 | 国产成人亚洲综合无码 | 久久久精品欧美一区二区免费 | 无码成人精品区在线观看 | 国产精品99爱免费视频 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲欧美日韩综合久久久 | а√天堂www在线天堂小说 | 国产99久久精品一区二区 | 精品人妻人人做人人爽夜夜爽 | 男女作爱免费网站 | 福利一区二区三区视频在线观看 | 国产午夜亚洲精品不卡下载 | 无码人妻精品一区二区三区下载 | 99视频精品全部免费免费观看 | 精品人妻av区 | 日韩人妻无码一区二区三区久久99 | 在线播放无码字幕亚洲 | 国产av剧情md精品麻豆 | 国产精品办公室沙发 | 国内精品久久久久久中文字幕 | 久久精品国产日本波多野结衣 | 秋霞成人午夜鲁丝一区二区三区 | 成熟女人特级毛片www免费 | 久久久婷婷五月亚洲97号色 | 东京热无码av男人的天堂 | 人人妻人人藻人人爽欧美一区 | 一区二区三区高清视频一 | 亚洲精品一区二区三区在线观看 | 国产成人精品三级麻豆 | 大色综合色综合网站 | 国产无av码在线观看 | 欧美 日韩 亚洲 在线 | 5858s亚洲色大成网站www | 激情综合激情五月俺也去 | 久久久www成人免费毛片 | 日本精品少妇一区二区三区 | 精品国产一区二区三区四区 | 成人无码视频免费播放 | 亚洲色偷偷男人的天堂 | 国产情侣作爱视频免费观看 | 亚洲热妇无码av在线播放 | 久久综合香蕉国产蜜臀av | 女人被男人躁得好爽免费视频 | 亚洲成av人在线观看网址 | 亚洲熟妇色xxxxx欧美老妇y | 无码国模国产在线观看 | 久久午夜无码鲁丝片秋霞 | 精品国产一区二区三区av 性色 | 亚洲精品一区二区三区在线 | 学生妹亚洲一区二区 | 国产精品亚洲综合色区韩国 | 亚洲の无码国产の无码影院 | 欧洲欧美人成视频在线 | 精品亚洲韩国一区二区三区 | 黑人巨大精品欧美一区二区 | 久久久久久久女国产乱让韩 | 国产亚洲精品久久久久久久久动漫 | 色五月丁香五月综合五月 | 日韩av激情在线观看 | 国产精品鲁鲁鲁 | 色婷婷av一区二区三区之红樱桃 | 精品成在人线av无码免费看 | 中文字幕中文有码在线 | 久久综合给合久久狠狠狠97色 | 久久国产精品精品国产色婷婷 | 曰本女人与公拘交酡免费视频 | 亚洲爆乳大丰满无码专区 | 亚洲日韩av片在线观看 | 亚洲欧美精品aaaaaa片 | 久久久久久久人妻无码中文字幕爆 | 精品国产成人一区二区三区 | 日韩av无码一区二区三区不卡 | 一个人看的www免费视频在线观看 | 国产肉丝袜在线观看 | 亚洲精品一区二区三区婷婷月 | 最新国产乱人伦偷精品免费网站 | 亚洲日韩av一区二区三区中文 | 久久久久亚洲精品中文字幕 | 丰满肥臀大屁股熟妇激情视频 | 国产在热线精品视频 | 国产 精品 自在自线 | 欧美日韩亚洲国产精品 | 波多野结衣av在线观看 | 国产亚洲精品久久久久久国模美 | 欧美熟妇另类久久久久久多毛 | 精品厕所偷拍各类美女tp嘘嘘 | 日本丰满熟妇videos | 亚洲爆乳精品无码一区二区三区 | 国色天香社区在线视频 | 国产人妻精品一区二区三区不卡 | 国产成人无码一二三区视频 | 国内综合精品午夜久久资源 | 成人无码精品1区2区3区免费看 | 无码免费一区二区三区 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 纯爱无遮挡h肉动漫在线播放 | 人人妻人人澡人人爽欧美精品 | 国产乱子伦视频在线播放 | 亚洲色偷偷男人的天堂 | 国产成人无码区免费内射一片色欲 | 欧美高清在线精品一区 | 成人一区二区免费视频 | 亚洲区欧美区综合区自拍区 | 久久久久久国产精品无码下载 | 综合网日日天干夜夜久久 | 国产精品内射视频免费 | 免费无码一区二区三区蜜桃大 | 国产成人精品久久亚洲高清不卡 | 乱人伦人妻中文字幕无码 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 精品亚洲成av人在线观看 | 国产精华av午夜在线观看 | 中文字幕av日韩精品一区二区 | 欧美亚洲国产一区二区三区 | 97精品国产97久久久久久免费 | 精品人人妻人人澡人人爽人人 | 欧美日韩色另类综合 | 未满成年国产在线观看 | 欧美 丝袜 自拍 制服 另类 | 国产福利视频一区二区 | 国产精品99久久精品爆乳 | 搡女人真爽免费视频大全 | a在线观看免费网站大全 | 日韩人妻无码中文字幕视频 | 国产又粗又硬又大爽黄老大爷视 | 欧美乱妇无乱码大黄a片 | 色综合天天综合狠狠爱 | 2019午夜福利不卡片在线 | 无码纯肉视频在线观看 | 午夜时刻免费入口 | 中文字幕乱码中文乱码51精品 | 99久久精品日本一区二区免费 | 2020久久超碰国产精品最新 | √天堂资源地址中文在线 | 久久97精品久久久久久久不卡 | 日日碰狠狠躁久久躁蜜桃 | 国产婷婷色一区二区三区在线 | 夫妻免费无码v看片 | 久久久久av无码免费网 | 97精品人妻一区二区三区香蕉 | 学生妹亚洲一区二区 | 一本色道婷婷久久欧美 | 中文字幕色婷婷在线视频 | 久久精品中文字幕大胸 | 中文字幕av无码一区二区三区电影 | 麻豆国产97在线 | 欧洲 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产色精品久久人妻 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产三级精品三级男人的天堂 | 人妻插b视频一区二区三区 | 99久久精品午夜一区二区 | 日日摸天天摸爽爽狠狠97 | 日韩欧美中文字幕公布 | 熟妇人妻中文av无码 | 国产香蕉尹人综合在线观看 | 中文字幕 亚洲精品 第1页 | 嫩b人妻精品一区二区三区 | 久久精品一区二区三区四区 | 国产精品人人妻人人爽 | 亚洲中文字幕无码中文字在线 | 国产一区二区三区日韩精品 | 日本一区二区三区免费播放 | 亚洲国产精品久久久久久 | 国产国产精品人在线视 | 国产亚洲人成在线播放 | 又湿又紧又大又爽a视频国产 | 午夜熟女插插xx免费视频 | 麻豆国产97在线 | 欧洲 | 丝袜人妻一区二区三区 | 国内少妇偷人精品视频免费 | 在线观看免费人成视频 | 亚洲欧美日韩国产精品一区二区 | 真人与拘做受免费视频一 | 一本无码人妻在中文字幕免费 | 国产激情无码一区二区app | 内射巨臀欧美在线视频 | 精品国产av色一区二区深夜久久 | 亚洲aⅴ无码成人网站国产app | 久久精品女人天堂av免费观看 | 激情五月综合色婷婷一区二区 | 国产真实乱对白精彩久久 | 国产成人无码av一区二区 | 国产69精品久久久久app下载 | 人人澡人摸人人添 | 丝袜 中出 制服 人妻 美腿 | 色婷婷久久一区二区三区麻豆 | 99久久精品无码一区二区毛片 | 高清国产亚洲精品自在久久 | 天堂在线观看www | 亚洲天堂2017无码 | 亚洲日本va午夜在线电影 | 午夜成人1000部免费视频 | 亚洲无人区午夜福利码高清完整版 | 无码成人精品区在线观看 | 亚洲熟妇色xxxxx欧美老妇 | 国产精品美女久久久 | 一二三四在线观看免费视频 | 婷婷五月综合缴情在线视频 | 午夜精品一区二区三区在线观看 | 亚洲精品一区二区三区婷婷月 | 丰满少妇高潮惨叫视频 | 欧美精品无码一区二区三区 | 牲欲强的熟妇农村老妇女视频 | 国产av无码专区亚洲awww | 伊在人天堂亚洲香蕉精品区 | 无码吃奶揉捏奶头高潮视频 | 红桃av一区二区三区在线无码av | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 成人影院yy111111在线观看 | 亚洲aⅴ无码成人网站国产app | 亚洲精品久久久久中文第一幕 | 久久亚洲精品中文字幕无男同 | 久久精品中文闷骚内射 | 国产suv精品一区二区五 | 丰满人妻一区二区三区免费视频 | 日本大香伊一区二区三区 | 无套内谢的新婚少妇国语播放 | 高中生自慰www网站 | 日韩无套无码精品 | 亚洲欧洲日本无在线码 | 亚洲伊人久久精品影院 | 麻豆av传媒蜜桃天美传媒 | 呦交小u女精品视频 | 国产真实夫妇视频 | 黑人大群体交免费视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 婷婷五月综合缴情在线视频 | 亚洲欧美精品aaaaaa片 | 亚拍精品一区二区三区探花 | 国内精品人妻无码久久久影院 | 伊人久久婷婷五月综合97色 | 日韩精品无码一区二区中文字幕 | 东京热无码av男人的天堂 | 欧美xxxx黑人又粗又长 | 亚无码乱人伦一区二区 | 日韩欧美中文字幕公布 | 日本丰满熟妇videos | 狠狠躁日日躁夜夜躁2020 | 国产99久久精品一区二区 | 中文字幕无码免费久久99 | 国产极品视觉盛宴 | 日韩无套无码精品 | 99久久精品国产一区二区蜜芽 | 国产亚洲tv在线观看 | 国产在线精品一区二区三区直播 | 久久综合给合久久狠狠狠97色 | 日产精品高潮呻吟av久久 | 久久久精品456亚洲影院 | 美女极度色诱视频国产 | 天天综合网天天综合色 | 亚洲国产精品无码久久久久高潮 | 内射爽无广熟女亚洲 | 精品欧洲av无码一区二区三区 | 久久久久久av无码免费看大片 | 欧美国产亚洲日韩在线二区 | 国产成人无码区免费内射一片色欲 | 午夜熟女插插xx免费视频 | 在线播放免费人成毛片乱码 | 欧美真人作爱免费视频 | 人人妻人人澡人人爽精品欧美 | 亚洲人成影院在线无码按摩店 | 日韩精品无码一区二区中文字幕 | 国内老熟妇对白xxxxhd | 无码人妻黑人中文字幕 | 性啪啪chinese东北女人 | 亚洲 日韩 欧美 成人 在线观看 | 国产精品久久国产三级国 | 日韩精品成人一区二区三区 | 中文字幕乱妇无码av在线 | 性做久久久久久久久 | 国产麻豆精品精东影业av网站 | 久久精品国产亚洲精品 | √天堂中文官网8在线 | 一个人看的视频www在线 | 高清不卡一区二区三区 | 国产精品亚洲lv粉色 | 色婷婷香蕉在线一区二区 | 亚洲国产午夜精品理论片 | 日本又色又爽又黄的a片18禁 | 日韩精品成人一区二区三区 | 国产97人人超碰caoprom | 国产亚洲欧美在线专区 | 国产午夜无码精品免费看 | 日欧一片内射va在线影院 | 国产性生交xxxxx无码 | 国产av无码专区亚洲a∨毛片 | 97精品人妻一区二区三区香蕉 | 日本乱人伦片中文三区 | 一区二区传媒有限公司 | 荫蒂添的好舒服视频囗交 | 亚洲中文无码av永久不收费 | 亚洲成色www久久网站 | 亚洲色大成网站www国产 | 2019nv天堂香蕉在线观看 | 蜜桃视频插满18在线观看 | 精品国精品国产自在久国产87 | 日本爽爽爽爽爽爽在线观看免 | 领导边摸边吃奶边做爽在线观看 | 亚洲综合无码久久精品综合 | 精品国产一区av天美传媒 | 熟妇人妻中文av无码 | 国产精品国产三级国产专播 | 最新版天堂资源中文官网 | 日韩精品一区二区av在线 | 国内少妇偷人精品视频 | 欧洲精品码一区二区三区免费看 | 成人亚洲精品久久久久 | 亚洲熟妇色xxxxx欧美老妇y | 成人精品视频一区二区 | 久久久久亚洲精品中文字幕 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲日本va午夜在线电影 | 亚洲乱码中文字幕在线 | 国产成人无码午夜视频在线观看 | 久久午夜无码鲁丝片秋霞 | 欧美国产日产一区二区 | 精品 日韩 国产 欧美 视频 | 白嫩日本少妇做爰 | 亚洲中文字幕乱码av波多ji | 欧美阿v高清资源不卡在线播放 | 性开放的女人aaa片 | 日韩精品a片一区二区三区妖精 | 久久午夜夜伦鲁鲁片无码免费 | 亚洲国产精品无码一区二区三区 | 色综合久久88色综合天天 | 中文字幕乱码人妻二区三区 | 国产人妻精品一区二区三区不卡 | 给我免费的视频在线观看 | 国产一精品一av一免费 | 亚洲综合无码久久精品综合 | 欧美日韩视频无码一区二区三 | 久久久久久久女国产乱让韩 | 999久久久国产精品消防器材 | 又粗又大又硬又长又爽 | 无码精品人妻一区二区三区av | 嫩b人妻精品一区二区三区 | 暴力强奷在线播放无码 | 呦交小u女精品视频 | 精品无码一区二区三区爱欲 | 国产精品久久国产精品99 | 99久久精品国产一区二区蜜芽 | 最近中文2019字幕第二页 | 欧洲美熟女乱又伦 | 亚洲精品美女久久久久久久 | 任你躁在线精品免费 | 麻豆国产丝袜白领秘书在线观看 | 国产麻豆精品精东影业av网站 | 中文无码精品a∨在线观看不卡 | 九九综合va免费看 | 国产乱码精品一品二品 | 少妇激情av一区二区 | 在教室伦流澡到高潮hnp视频 | 久久99精品久久久久久动态图 | 欧美激情综合亚洲一二区 | 日本爽爽爽爽爽爽在线观看免 | 免费国产黄网站在线观看 | 国产又爽又黄又刺激的视频 | 中文久久乱码一区二区 | 澳门永久av免费网站 | 亚洲色成人中文字幕网站 | 亚洲国产av美女网站 | 波多野结衣乳巨码无在线观看 | 丰满人妻被黑人猛烈进入 | 中文字幕乱码亚洲无线三区 | 纯爱无遮挡h肉动漫在线播放 | 无码av免费一区二区三区试看 | 欧美阿v高清资源不卡在线播放 | 极品尤物被啪到呻吟喷水 | 伊人久久大香线蕉av一区二区 | 精品国产福利一区二区 | 亚洲成在人网站无码天堂 | 男女超爽视频免费播放 | 国精产品一品二品国精品69xx | 无套内射视频囯产 | 无码一区二区三区在线观看 | 亚洲欧洲中文日韩av乱码 | 国产午夜福利100集发布 | 人人澡人人透人人爽 | 久久精品人人做人人综合 | 午夜福利电影 | 图片区 小说区 区 亚洲五月 | 亚洲精品美女久久久久久久 | 中文字幕无线码免费人妻 | 高潮喷水的毛片 | 99精品无人区乱码1区2区3区 | 美女毛片一区二区三区四区 | 亚洲 欧美 激情 小说 另类 | 图片小说视频一区二区 | 欧美zoozzooz性欧美 | 国产免费久久精品国产传媒 | 中文字幕日韩精品一区二区三区 | 成人性做爰aaa片免费看不忠 | 性欧美大战久久久久久久 | 亚洲精品无码人妻无码 | 午夜无码区在线观看 | 日日天干夜夜狠狠爱 | 国产精品二区一区二区aⅴ污介绍 | 中文字幕久久久久人妻 | 性做久久久久久久免费看 | 欧美性生交活xxxxxdddd | 日本乱偷人妻中文字幕 | 国产suv精品一区二区五 | 国产人妻精品午夜福利免费 | 丁香花在线影院观看在线播放 | 国产香蕉尹人视频在线 | 扒开双腿吃奶呻吟做受视频 | 精品 日韩 国产 欧美 视频 | 午夜免费福利小电影 | 亚洲一区二区三区播放 | 久久人人爽人人爽人人片av高清 | 欧美日韩一区二区综合 | 欧美精品一区二区精品久久 | av人摸人人人澡人人超碰下载 | 国产午夜无码精品免费看 | 国产免费久久久久久无码 | 丰满少妇人妻久久久久久 | 国产办公室秘书无码精品99 | 在线精品国产一区二区三区 | 中文字幕人妻无码一夲道 | 欧美人与动性行为视频 | 国产激情精品一区二区三区 | 国产精品手机免费 | 亚洲aⅴ无码成人网站国产app | 国产av一区二区精品久久凹凸 | 国产情侣作爱视频免费观看 | 精品人妻人人做人人爽 | 桃花色综合影院 | 免费人成在线视频无码 | 精品aⅴ一区二区三区 | 精品国产麻豆免费人成网站 | 日韩亚洲欧美精品综合 | 奇米影视888欧美在线观看 | 福利一区二区三区视频在线观看 | 国产成人亚洲综合无码 | 牲欲强的熟妇农村老妇女 | 妺妺窝人体色www在线小说 | 性生交大片免费看女人按摩摩 | 亚洲精品国产a久久久久久 | 久久精品中文字幕一区 | 麻豆精品国产精华精华液好用吗 | 人妻少妇精品无码专区二区 | 我要看www免费看插插视频 | 免费网站看v片在线18禁无码 | 国产精品美女久久久网av | 免费看男女做好爽好硬视频 | 久久国语露脸国产精品电影 | 国产乱子伦视频在线播放 | 色婷婷久久一区二区三区麻豆 | 欧美国产日产一区二区 | 婷婷五月综合激情中文字幕 | 久久综合网欧美色妞网 | 亚洲日韩中文字幕在线播放 | 国产精品99久久精品爆乳 | 亚洲欧美日韩国产精品一区二区 | 久久99精品国产麻豆 | 免费无码午夜福利片69 | 婷婷六月久久综合丁香 | 午夜无码区在线观看 | 国产精品久久久久无码av色戒 | www国产亚洲精品久久久日本 | 国产成人精品视频ⅴa片软件竹菊 | 久久无码中文字幕免费影院蜜桃 | yw尤物av无码国产在线观看 | 久久精品国产日本波多野结衣 | 欧美黑人性暴力猛交喷水 | 久久精品人妻少妇一区二区三区 | 永久免费精品精品永久-夜色 | 久久久国产精品无码免费专区 | 日本一卡2卡3卡四卡精品网站 | 国产午夜亚洲精品不卡下载 | 国产成人无码a区在线观看视频app | 人人妻人人澡人人爽欧美一区 | 在教室伦流澡到高潮hnp视频 | 国产三级精品三级男人的天堂 | 性欧美熟妇videofreesex | 久久久久久久女国产乱让韩 | 少妇性荡欲午夜性开放视频剧场 | 亚洲综合伊人久久大杳蕉 | 牲交欧美兽交欧美 | 精品成人av一区二区三区 | 麻豆果冻传媒2021精品传媒一区下载 | 女人色极品影院 | 亚洲国产av精品一区二区蜜芽 | 天天躁日日躁狠狠躁免费麻豆 | 强伦人妻一区二区三区视频18 | 国产做国产爱免费视频 | 荡女精品导航 | 亚洲 欧美 激情 小说 另类 | 麻豆国产人妻欲求不满 | 久9re热视频这里只有精品 | 欧美日韩久久久精品a片 | 亚洲自偷精品视频自拍 | 国产亲子乱弄免费视频 | 永久免费观看国产裸体美女 | 亚洲国产精品无码久久久久高潮 | 国产成人综合色在线观看网站 | 久久国内精品自在自线 | 性欧美疯狂xxxxbbbb | 亚洲爆乳精品无码一区二区三区 | 野狼第一精品社区 | 在线 国产 欧美 亚洲 天堂 | 色综合久久88色综合天天 | 国产激情综合五月久久 | 亚洲男女内射在线播放 | 十八禁真人啪啪免费网站 | 国产精品-区区久久久狼 | 丁香啪啪综合成人亚洲 | 欧美一区二区三区视频在线观看 | 少妇高潮一区二区三区99 | 丰满少妇高潮惨叫视频 | 2020久久香蕉国产线看观看 | 亚洲精品综合五月久久小说 | 牲欲强的熟妇农村老妇女视频 | 亚洲男人av天堂午夜在 | 国产麻豆精品精东影业av网站 | 国产麻豆精品一区二区三区v视界 | 国内揄拍国内精品少妇国语 | 人妻人人添人妻人人爱 | 国产黑色丝袜在线播放 | 日韩欧美中文字幕在线三区 | 午夜成人1000部免费视频 | 亚洲色www成人永久网址 | 久久精品国产日本波多野结衣 | 欧美自拍另类欧美综合图片区 | 99er热精品视频 | 成人亚洲精品久久久久软件 | 国内精品人妻无码久久久影院蜜桃 | 老司机亚洲精品影院 | 亚洲小说图区综合在线 | 捆绑白丝粉色jk震动捧喷白浆 | 色偷偷人人澡人人爽人人模 | 色综合久久久无码中文字幕 | 亚洲国产精华液网站w | 久久无码中文字幕免费影院蜜桃 | 成人三级无码视频在线观看 | 野外少妇愉情中文字幕 | 美女黄网站人色视频免费国产 | 人妻体内射精一区二区三四 | 国产精品美女久久久 | 夜夜躁日日躁狠狠久久av | 老熟女乱子伦 | 亚洲码国产精品高潮在线 | 国产高清不卡无码视频 | 亚洲精品中文字幕 | 日产国产精品亚洲系列 | 在线观看国产一区二区三区 | 色综合久久中文娱乐网 | av无码电影一区二区三区 | 国产精品人人爽人人做我的可爱 | 亚洲毛片av日韩av无码 | 国产精品-区区久久久狼 | 亚洲大尺度无码无码专区 | 国产亚洲欧美在线专区 | 欧美三级不卡在线观看 | 亚洲成a人片在线观看无码3d | 免费观看激色视频网站 | 精品午夜福利在线观看 |