erp管理系統(tǒng)軟件

erp項目實施方案-第30章 外掛程序

作者: admin 來源: erp系統(tǒng) 日期: 2021-07-21 14:19:55 人氣: - 評論: 0

30.1 外掛程序介紹

外掛程序作用:擴充ERP功能。滿足企業(yè)的行業(yè)化、個性化需求。

外掛程序接口特點:

? 無需系統(tǒng)程序源碼。外掛程序集成到ERP中,并且會把登錄的用戶ID傳遞給外掛程序;

? 多種編程語言支持。可用.NET平臺任一編程語言,只需指定文件名、類名、方法名即可;

? 外掛程序分門別類。所有外掛程序放置目錄固定,都在ERP根目錄下的“外掛程序”子目錄下,并且子目錄與子系統(tǒng)一一對應(yīng),比如:“W1.采購系統(tǒng)”外掛程序的目錄如下:

ERP根目錄\外掛程序\W1\

外掛程序集成在幣加德ERP的菜單欄中,如圖30-1。

 

30-1 外掛程序接口及系統(tǒng)集成位置

30.2 外掛程序?qū)崙?zhàn)

本節(jié)使用Visual Studio 2013(速成版、社區(qū)版、專業(yè)版、高級版、旗艦版都可以,前面2個版本是免費的)來開發(fā)外掛程序,如果你使用的是其他版本的Visual Studio,也可以參照學習,大同小異。本節(jié)先用完整詳細的步驟介紹一個最簡單的外掛程序的開發(fā),通過此外掛的學習,可以完全掌握外掛的開發(fā)方法。然后用較簡潔的步驟介紹如何開發(fā)報表外掛,這個案例很實用,企業(yè)的程序開發(fā)人員或ERP代理服務(wù)商經(jīng)常需要從企業(yè)ERP中取數(shù),開發(fā)分析報表或開發(fā)定制格式的打印單據(jù)。

30.2.1 一個簡單的外掛程序

1)編寫外掛程序

①打開Visual Studio 2013,點【文件】/【新建】/【項目】,如圖30-2。

 

30-2 新建項目

“新建項目”窗口,選擇【Visual C#】/【W(wǎng)indows 窗體應(yīng)用程序】,名稱為“W1”,如圖30-3。

 

30-3 選擇Windows 窗體應(yīng)用程序

“工具箱”中拖一個Label到窗體設(shè)計界面,如圖30-4。

 

30-4 拖一個標簽到設(shè)計面板

雙擊設(shè)計面板,打開代碼編輯窗口,輸入以下代碼,如圖30-5。

public string _userID = "";     //登錄用戶ID

public void ShowMe(string userID, string serverIP, string dbName, string saPassword, string curDir)//鉤子方法

{

    _userID = userID;           //傳遞用戶登錄ID

    label1.Text = "登錄用戶ID:" + _userID;//標簽顯示

    base.Show();//顯示窗體

}

 

30-5 寫程序代碼

提醒:不管寫什么類型的外掛程序,都需要上面的代碼,相當于ERP與外掛程序之間約定的一種協(xié)議,目的在于把ERP系統(tǒng)當前的登錄用戶ID傳遞給外掛程序,并打開外掛程序的主窗體。除此之外,外掛程序與普通的Windows窗體程序沒有任何區(qū)別。

外掛程序可以查詢ERP的后臺數(shù)據(jù)表,但千萬別修改(刪除)數(shù)據(jù),這是一個基本的原則。否則出錯后無法核查是ERP的問題,還是外掛程序的問題。

鼠標右鍵項目名稱,在上下文菜單中選【屬性】,在打開的窗口中,“目標框架”選擇“.NET Framework 2.0”(為了兼容老電腦),“輸出類型”選“類庫”(如果選“Windows應(yīng)用程序”,用戶可以越過權(quán)限設(shè)置,直接運行外掛程序),如圖30-6

 

30-6 設(shè)置項目屬性

再次點【啟動】,系統(tǒng)會報錯(因上一步中改變了目標框架),修正錯誤,如圖30-7。

 

30-7 修改錯誤

再次點【啟動】,系統(tǒng)會彈出無法直接啟動類庫項目的錯誤,這正是所要的,如圖30-8

 

30-8 彈出無法直接啟動類庫項目的錯誤

打開外掛程序的輸出目錄(參見“圖30-3 選擇Windows 窗體應(yīng)用程序”選定的位置),并把外掛程序復制到ERP的外掛程序目錄,如圖30-9

 

 

30-9 拷貝外掛程序至ERP外掛目錄

2)接口定義

打開【系統(tǒng)設(shè)置】/【外掛程序接口】,選擇子系統(tǒng),配置外掛程序接口參數(shù),測試是否可以正常打開外掛程序,最后點【保存并應(yīng)用】,如圖30-10。

外掛程序接口參數(shù):

? 模塊代碼:外掛子系統(tǒng)代碼 + 3位流水碼。

? 模塊名稱:最簡潔的文字介紹外掛程序。“模塊代碼、模板名稱”會顯示在ERP系統(tǒng)的外掛菜單中,參見“30-1 外掛程序接口及系統(tǒng)集成位置”。

? 文件名稱:不含路徑,含擴展名。

? 類名稱:類名稱必須是“命名空間.類名”。

? 方法名稱:方法名稱必須是公有的,否則無法正常調(diào)用。

? 備注:較詳盡的文字介紹外掛程序。

 

30-10 外掛程序接口

提醒:外掛程序 + ERP數(shù)據(jù)字典 = 無限擴展 ERP 功能!

(無需“幣加德ERP”源代碼)

 

30.2.2 開發(fā)復雜的報表外掛(使用VS自帶的.rdlc報表)

建議使用Visual Studio 2013專業(yè)版、高級版或旗艦版,不要使用速成版或社區(qū)版(沒有集成報表開發(fā)功能)。最終效果如圖30-11。

 

30-11 復雜報表外掛最終效果

此復雜報表外掛具有如下特點:

? 幣加德ERP自動把當前登錄的用戶ID、數(shù)據(jù)庫服務(wù)器IP、賬套對應(yīng)的后臺數(shù)據(jù)庫名稱、登錄賬號、登錄密碼傳遞給外掛程序,所以不僅僅可以開發(fā)報表外掛,充滿想象;

? 無需幣加德ERP的源代碼;

? 外掛可以使用不同的開發(fā)語言和平臺(幣加德ERP使用C#語言,.NET 2.0),外掛使用C#語言,.NET 3.5(不可以使用.NET 2.0,因為沒有報表功能;也不可以使用.NET 4.0及以上,因為架構(gòu)與.NET 2.0不兼容??梢允褂肰B.NET語言);

? 外掛程序需要引用幣加德ERP的任何.dll文件,外掛程序可以獨立運行,為了防止用戶直接運行,可以編譯成.dll動態(tài)鏈接庫文件,由ERP調(diào)用;

? 外掛程序的代碼量非常小,基礎(chǔ)框架已經(jīng)搭好,只需要依葫蘆畫瓢,重點在于取數(shù)SQL語句和報表格式調(diào)整(這是個細致且費時間的活兒);

? 此報表外掛案例,包含了報表設(shè)計中常用的功能:頁面大小的設(shè)置、頁頭、頁尾、分組匯總、每頁重復顯示列頭、公司LOGO、簽章透明、分頁等,報表加入圖片的功能很容易擴展到加入條碼、二維碼。報表可以導出到Excel/PDF/Word。

1準備SQL查詢語句。按前面“第29章 自定義報表/29.1 SQL命令行工具”介紹的方法,準備查詢SQL語句,如圖30-12。

 

30-12 使用SQL命令行工具準備SQL查詢語句

2寫外掛程序。

按上一節(jié)介紹的方法建立項目W2,在W2上右鍵鼠標,在彈出菜單中選【添加】/【新建項】,如圖30-13。

 

30-13 添加數(shù)據(jù)集(默認名稱不要更改)

在打開的DataSet1.xsd面板中,右鍵鼠標,如30-14。

 

30-14 添加TableAdapter

在彈出的“添加連接”窗口,錄入數(shù)據(jù)庫服務(wù)器相關(guān)信息,如30-15。

? 服務(wù)器名。精簡數(shù)據(jù)庫如圖進行填寫,如果是企業(yè)版數(shù)據(jù)庫,請?zhí)顚?/span>“.”(點表示本地,如果不是遠程連接到ERP服務(wù)器寫外掛程序,則需要把點改為ERP服務(wù)器的IP地址);

? 登錄到服務(wù)器。精簡數(shù)據(jù)庫的密碼是“17312319729@bijiade.cn”,企業(yè)版數(shù)據(jù)庫的密碼是在系統(tǒng)安裝配置的時候自己設(shè)置的。

? 連接到數(shù)據(jù)庫。選bdERP開頭的任意一個就行,外掛程序運行時會根據(jù)賬套自動切換。

 

30-15 連接數(shù)據(jù)庫

根據(jù)TableAdapter配置向?qū)нM行配置,如30-16~圖30-18。

 

30-16 不要在連接字符串中包含敏感數(shù)據(jù)

 

30-17 默認下一步

 

30-18 默認下一步

粘貼準備好的查詢SQL語句,點【完成】,如圖30-19。

 

30-19 粘貼準備好的查詢SQL語句

執(zhí)行查詢SQL語句所得的數(shù)據(jù)表字段,如圖30-20。

 

30-20 查詢所得的數(shù)據(jù)表字段

W2上右鍵鼠標,在彈出菜單中選【添加】/【新建項】,如圖30-21。

 

30-21 添加報表文件(默認名稱不要更改)

在打開的報表文件界面,右鍵“數(shù)據(jù)集”,選擇剛剛配置的數(shù)據(jù)集,如圖30-22。

 

30-22 選擇數(shù)據(jù)集

在報表設(shè)計界面,右鍵鼠標,可以插入文本框等等,也可以把左側(cè)的數(shù)據(jù)集下面的字段拖放到報表設(shè)計界面,如圖30-23。

 

30-23 報表設(shè)計

報表設(shè)計是最繁瑣最費時間的事情,最終設(shè)計結(jié)果,如圖30-24。

 

30-24 報表設(shè)計結(jié)果

打開Form1窗體,從工具箱拖放一個ReportViewer報表查看器到窗體,如圖30-25

 

30-25 把報表查看器添加到窗體

雙擊Form1窗體,如圖30-26,清空窗體中所有的代碼,并把下面的代碼復制粘貼進去。

 

30-26 Form1代碼窗口

using Microsoft.Reporting.WinForms;

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace W2

{

    public partial class Form1 : Form

    {

        public string _userID = "";              //登錄用戶ID

        public string _serverIP = @".\_MSSQL2005"; //服務(wù)器IP(如果是SQL企業(yè)版,則為“.”)

        public string _dbName = "bdERP";                      //數(shù)據(jù)庫名稱

        public string _saPassword = "17312319729@bijiade.cn"; //sa密碼

public string _curDir = @"..\..\";                    //當前目錄

 

        public Form1(){ InitializeComponent(); }

 

        public void ShowMe(string userID, string serverIP, string dbName, string saPassword, string curDir)//鉤子方法

        {

            _userID = userID;           //傳遞用戶登錄ID

            _serverIP = serverIP;       //服務(wù)器IP

            _dbName = dbName;           //數(shù)據(jù)庫名稱

            _saPassword = saPassword;   //sa密碼

_curDir = curDir;           //當前目錄

MessageBox.Show("用戶ID:" + _userID + "\n數(shù)據(jù)庫服務(wù)器IP:" + _serverIP + "\n數(shù)據(jù)庫名稱:" + _dbName + "\nsa密碼:" + _saPassword + "\n當前目錄:" + _curDir, "提示");

            base.Show();//顯示窗體

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

            //1.SQL查詢語句

            string sql = @"

SELECT

a.c010 單號, a.c020 日期, a.c200 銷售類型, a.c210 客戶單號,

a.c030 客戶代碼, c.c020 客戶名稱,

a.c090 聯(lián)系人, a.c091 聯(lián)系電話,

a.c070 交貨方式, a.c080 交貨地點,  a.c100 備注, a.c110 業(yè)務(wù)員,

b.c020 項次, b.c029 客戶料號, b.c030 貨品代碼,

b.c050 品名規(guī)格, b.c060 單位, b.c069 含稅, b.c070 單價, b.c071 含稅單價,

b.c080 數(shù)量, b.c090 金額, b.c100 稅率, b.c101 稅額, b.c110 價稅合計,

b.c150 摘要

FROM SAL020 a

LEFT JOIN SAL021 b ON b.c010=a.c010

LEFT JOIN BAS010 c ON c.c010=a.c030

WHERE 1=1 AND a.c061<>'Y'

AND a.c010='XCK-21060001'

";

            //2.報表文件名如果報表文件與外掛程序在同一目錄,直接寫報表名稱即可

            string reportName = _curDir + @"Report1.rdlc";

 

            //3.綁定

            Bind(sql, reportName);

        }

        /// <summary>

        /// 工具方法,執(zhí)行SQL查詢獲取數(shù)據(jù),并綁定到指定報表。

        /// </summary>

        /// <param name="sql">SQL查詢語句</param>

        /// <param name="reportName">報表文件名</param>

        private void Bind(string sql, string reportName)

        {

            DataTable data = new DataTable();                           //數(shù)據(jù)

            try

            {

                //執(zhí)行SQL查詢獲取數(shù)據(jù)

                string connStr = "Data Source=" + _serverIP + @";Initial Catalog=" + _dbName + ";Persist Security Info=True;" +

                        "User ID=sa;Password=" + _saPassword;

                using (SqlConnection conn = new SqlConnection())

                {

                    conn.ConnectionString = connStr;

                    conn.Open();                      //打開數(shù)據(jù)庫連接

                    SqlDataAdapter adapt = new SqlDataAdapter(sql, conn);//實例化適配器                

                    adapt.Fill(data);                                    //獲取數(shù)據(jù)

                    conn.Close();                                       //關(guān)閉數(shù)據(jù)庫連接

                }

                //綁定到指定報表

                ReportDataSource rds = new ReportDataSource();

                rds.Name = "DataSet1";                  //要與數(shù)據(jù)集屬性數(shù)據(jù)集名稱要一致

                rds.Value = data;

                this.reportViewer1.LocalReport.DataSources.Clear();

                this.reportViewer1.LocalReport.DataSources.Add(rds);

                this.reportViewer1.LocalReport.ReportPath = reportName;  //報表文件名  

                this.reportViewer1.RefreshReport();

            }

            catch (Exception ex) { MessageBox.Show("出錯了:\n" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); }

        }

    }

}

以上代碼已經(jīng)在注釋中進行了講解,看不懂也沒有關(guān)系,只要依葫蘆畫瓢,要改2個地方(上面代碼已說明):其一是SQL查詢語句;其二是報表文件名稱(注意路徑)。如圖30-27

 

30-27 代碼關(guān)鍵點(SQL查詢語句、報表文件名)

3配置外掛程序。

鼠標右鍵W2,在彈出菜單中選【屬性】,目標框架選.NET 3.5,如圖30-28。

 

30-28 .NET Framework 3.5

提醒:這里輸出類型保持默認,為了便于測試。測試正常后,可以改為“類庫”。

拷貝外掛程序到ERP的外掛目錄下,并確認運行正常,如圖30-29

 

30-29 拷貝外掛程序到ERP的外掛目錄下

打開【系統(tǒng)設(shè)置】/【外掛程序接口】,選擇子系統(tǒng),配置外掛程序接口參數(shù),測試是否可以正常打開外掛程序,最后點【保存并應(yīng)用】,如圖30-30。

 

30-30 外掛程序接口

4最后總結(jié)。

報表外掛的意義。幣加德ERP系統(tǒng)的單據(jù)打印都是基于Excel的(參見“第23章 單據(jù)打印格式設(shè)計”),一般情況下無需開發(fā).rdlc報表,除非現(xiàn)有報表滿足不了業(yè)務(wù)需求。這里以開發(fā).rdlc報表為例,不僅僅為了說明報表開發(fā)本身,而且可以學習到如何集成ERP中的用戶ID、賬套數(shù)據(jù)庫等,無需另外配置數(shù)據(jù)庫連接和建立賬戶體系。

幣加德ERP外掛接口規(guī)范。會傳遞如下這些參數(shù)給外掛程序,外掛程序可以不使用,或者部分使用,但是不能缺少這些參數(shù),順序也不能改變。

/// <summary>

/// 鉤子方法。

/// </summary>

/// <param name="userID">用戶登錄ID</param>

/// <param name="serverIP">服務(wù)器IP</param>

/// <param name="dbName">數(shù)據(jù)庫名稱</param>

/// <param name="saPassword">sa密碼</param>

/// <param name="curDir">當前目錄</param>

public void ShowMe(string userID, string serverIP, string dbName, string saPassword, string curDir)//鉤子方法

{

    _userID = userID;           //傳遞用戶登錄ID

    label1.Text = "登錄用戶ID:" + _userID;//標簽顯示

    base.Show();//顯示窗體

}

使用Visual Studio 2013開發(fā).rdlc報表的關(guān)鍵是準備SQL查詢語句、報表設(shè)計(最費時間)。報表設(shè)計有如下特點(注意點),如30-31。

1)拖放設(shè)計。數(shù)據(jù)字段按照SQL查詢語句的順序列示,直接拖放進行報表設(shè)計,簡單直觀。

2)設(shè)計時可以調(diào)整紙張大小。報表默認大小是A4縱向(可以更改),寬度不能超過“紙張寬度+邊距”,否則打印預覽時多出了很多空白頁(如果拉窄了寬度后,打印預覽時還是有空白頁,則需要把“報表”的“ConsumeContainerWhitesapce”屬性值改為True,此屬性意思“指使在容器中的內(nèi)容增長時,是占用還是保留容器中的最小空白。只要內(nèi)容右側(cè)和下方的空白受到影響。”)??v向不用留空間,在打印時根據(jù)數(shù)據(jù)行數(shù)自動拉高。

3)數(shù)據(jù)表是一個整體。當在設(shè)計時插入表格,表格是一個整體,但是列頭在多頁時重復顯示功能時不時卡殼(tablixTablix2”具有無效的 TablixMember。TablixColumnHierarchy 中所有 TablixMember 元素的 RepeatOnNewPage 屬性必須設(shè)置為 false。),所以建議把標題欄刪除,手工增加文本框代替,放在頁眉處,這樣每頁都會顯示。

4)數(shù)據(jù)區(qū)可多級分組。報表的核心在于數(shù)據(jù)區(qū),可以分組匯總等。

5)頁眉/頁腳。頁腳可以插入頁碼,加上印章(透明處理參見第23章)等。

提醒:如果報表外掛程序在集成到ERP前運行得好好的,集成后出錯,最大的可能性有2種:其一如果提示“此程序集的運行時比當前加載的運行時新,無法加載此程序集”,則是因為選錯了.NET版本(參見“30-28 .NET Framework 3.5”);其二如果報表無法顯示,則是因為報表路徑錯了,或者報表文件Report1.rdlc沒有和外掛程序一起復制到ERP的外掛程序目錄中。

 

30-31 報表設(shè)計特點(注意點)

 

30-32 “報表”的“ConsumeContainerWhitesapce”屬性值改為True


分享到:


發(fā)表評論
更多 網(wǎng)友評論0 條評論)
暫無評論

© 2021-2035 蘇州幣加德軟件研發(fā)有限公司
聯(lián)系電話/微信號:173 1231 9729 陳生

蘇ICP備2022028458號-2    回到頂部
常熟ERP,常熟ERP軟件,常熟ERP軟件開發(fā),常熟ERP量身定制

av毛片小说-蜜臀av999无码精品国产专区-毛片入口-在线视频爽爽-久久狼人大香伊蕉国产-高清av免费-日本护士毛茸茸xx-中文字幕在线一二三区-亚洲操-亚洲女人天堂-最新视频 - x88av-亚洲一区免费-成人永久免费视频-日韩精品一区二区三区-双性浪荡性瘾高h-97久久超碰成人精品网页
  • <li id="sgaye"><tbody id="sgaye"></tbody></li>
    <code id="sgaye"></code>
    <rt id="sgaye"></rt>
  • 一二三在线视频| 91网站在线观看免费| 国产精品jizz在线观看老狼| 玖玖爱视频在线| 免费成人在线视频网站| 久久亚洲精品无码va白人极品| 久久国产精品国产精品| 各处沟厕大尺度偷拍女厕嘘嘘| 久久av综合网| 99久热在线精品视频| 一本色道久久88亚洲精品综合| www.午夜av| 在线观看中文av| 国产成人精品免费看在线播放 | 免费在线观看的av网站| 久操网在线观看| 波多野结衣乳巨码无在线| 国产精品国产亚洲精品看不卡| 成人免费在线网| 香港三级韩国三级日本三级| 国产深夜男女无套内射| 99精品视频播放| 日韩av片专区| 国产91porn| 国产精品无码一区二区在线| 国产xxxxx在线观看| 一级黄色香蕉视频| 青青草久久伊人| 特级西西444| 日本少妇高潮喷水视频| 制服丝袜综合网| 男人的天堂视频在线| 内射国产内射夫妻免费频道| 中文字幕第80页| 国产人妻互换一区二区| 欧美成人三级在线视频| xxxx在线免费观看| 乱熟女高潮一区二区在线| 久久久久久久久久久久久国产精品| 天堂一区在线观看| 国产主播自拍av| 中文字幕永久有效| 青青草视频在线免费播放| 麻豆三级在线观看| 97超碰国产精品| 手机在线看福利| 久久国产精品网| 精品久久免费观看| 可以免费观看av毛片| www国产无套内射com| 久久久久久香蕉| av在线观看地址| 三年中文在线观看免费大全中国| 缅甸午夜性猛交xxxx| 一道本在线观看视频| 91极品视频在线观看| 免费一级特黄毛片| 国产欧美精品aaaaaa片| 中文字幕网av| 黄色片久久久久| 青青草精品视频在线| 青青在线免费视频| 三年中文在线观看免费大全中国| 日本成人在线免费视频| 男人日女人视频网站| 欧美做暖暖视频| 大桥未久一区二区三区| 制服丝袜中文字幕第一页| 三上悠亚av一区二区三区| 久久久久久三级| 在线观看av日韩| 国产又黄又猛又粗| 9久久婷婷国产综合精品性色 | 爱情岛论坛vip永久入口| 日韩欧美xxxx| 99久久国产宗和精品1上映| 香港三级韩国三级日本三级| 日韩精品一区二区免费| cao在线观看| 久久久久久久久久久视频| 免费看国产一级片| 国产日产欧美视频| 三级在线免费看| 亚洲黄色av网址| 欧美xxxxxbbbbb| 天天干天天色天天爽| 亚洲精品国产suv一区88| 法国空姐在线观看免费| 久久精品无码中文字幕| av女优在线播放| 十八禁视频网站在线观看| 男女视频一区二区三区| 拔插拔插华人永久免费| 狠狠精品干练久久久无码中文字幕| 精品视频在线观看一区二区| 免费看欧美黑人毛片| 日韩av播放器| 国产日产欧美一区二区| 国产91在线免费| 欧洲美女亚洲激情| 欧美视频免费看欧美视频| 最近免费中文字幕中文高清百度| 日日噜噜噜噜久久久精品毛片| 亚洲第一精品区| 日韩av资源在线| 国产精品久久久久久9999| 欧美 日韩 亚洲 一区| 国产福利在线免费| 激情成人开心网| 尤蜜粉嫩av国产一区二区三区| 8x8x华人在线| 成人性生交免费看| 免费拍拍拍网站| 色婷婷激情视频| 欧美黄色一级片视频| 精品免费久久久久久久| 精品日韩久久久| 337p亚洲精品色噜噜狠狠p| 日日干夜夜操s8| 精品一卡二卡三卡| 400部精品国偷自产在线观看| 无码人妻精品一区二区三区66| 欧美日韩dvd| 免费不卡av网站| 天天操天天摸天天爽| 精品久久一二三| 乱熟女高潮一区二区在线| 日韩一级免费片| 午夜免费高清视频| 日本精品一区二区三区四区| 午夜久久久久久久久久久| 国产色视频在线播放| 欧美精品成人网| 亚洲爆乳无码专区| 成年人免费在线播放| 国产男女无遮挡| 成年人网站大全| 亚洲成人av免费看| 国产v亚洲v天堂无码久久久| 国产aaa一级片| 91淫黄看大片| 深夜黄色小视频| 一区二区三区入口| 午夜视频在线瓜伦| 国产熟人av一二三区| 大肉大捧一进一出好爽视频| 日本中文字幕网址| 久久久久人妻精品一区三寸| 国产男女在线观看| 一本久道中文无码字幕av| 欧美精品aaaa| 国产又粗又猛大又黄又爽| 熟妇熟女乱妇乱女网站| 男同互操gay射视频在线看| 久操手机在线视频| 男人添女人下部高潮视频在观看| 欧美深夜福利视频| 各处沟厕大尺度偷拍女厕嘘嘘| 日韩精品免费播放| 午夜啪啪小视频| 肉大捧一出免费观看网站在线播放 | 中国一级黄色录像| 日韩日韩日韩日韩日韩| 国产精品欧美激情在线观看| 国产野外作爱视频播放| 艳母动漫在线免费观看| 波多野结衣之无限发射| 色片在线免费观看| 国产又粗又硬又长| 欧美日韩中文在线视频| 国内精品国产三级国产aⅴ久| 婷婷无套内射影院| 中文字幕成人免费视频| 日韩a级在线观看| 日韩欧美xxxx| 色哟哟免费网站| 538在线视频观看| 精品国产av无码一区二区三区| 天堂在线资源视频| 国产伦精品一区二区三区四区视频_| 日本爱爱免费视频| bt天堂新版中文在线地址| www.com黄色片| 国产精品va无码一区二区| 精品国产乱码久久久久久1区二区| 伊人久久在线观看| 日韩av在线中文| 亚洲乱码中文字幕久久孕妇黑人| av电影一区二区三区| xxxx一级片| 日本黄色三级大片| r级无码视频在线观看| 久久观看最新视频| 亚洲一级片免费观看| 中文字幕 欧美日韩| 免费一级特黄录像| 日韩毛片在线免费看| 两根大肉大捧一进一出好爽视频| 大片在线观看网站免费收看| 日本成人性视频|