u8cloud v1.0-查詢引擎技術紅皮書_第1頁
u8cloud v1.0-查詢引擎技術紅皮書_第2頁
u8cloud v1.0-查詢引擎技術紅皮書_第3頁
u8cloud v1.0-查詢引擎技術紅皮書_第4頁
u8cloud v1.0-查詢引擎技術紅皮書_第5頁
已閱讀5頁,還剩150頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

一.前 背 入 小 二.對象管 對象 首選 三.查詢模 SQL設 SQL整 四.格式模 五.報表發(fā) 六.插件開 七.查詢引擎新特 新特 SQL代碼輔助 八.附 查詢引擎FAQ之參數(shù) 一.前查詢引擎(QueryEngine,簡稱QE)的功能定位是,一個面向高級實施人員和專業(yè)開發(fā)人員的查詢建模產背Design的思路,同時融入了DW的技術,并依賴于通用的U8CLOUD數(shù)據(jù)字典。自定義查詢:U8CLOUD2000年開始研發(fā)的一個面向中級實施人員和二次開發(fā)人員的查詢報表工具,由查詢、報表格式設計、報表瀏覽、報表權限控制和數(shù)據(jù)幾個模塊構成,此數(shù)據(jù)字典:一種管理數(shù)據(jù)庫邏輯結構的機制,存在于物理數(shù)據(jù)庫和用戶接口之間。U8CLOUD于2002年開始研發(fā)數(shù)據(jù)字典,最開始只用于自定義查詢,后來經過功能強化和逐步推廣,成為現(xiàn)在Control二次開發(fā)的需求:隨著U8CLOUD對行業(yè)用戶的拓展,由業(yè)務組程序員在通用軟件中針對每個查能。為了有效地實現(xiàn)資源共享,結合發(fā)揮各個工具的優(yōu)勢,U8CLOUD決策層一直在推動相關產品入企業(yè)建模平臺→自定義查詢→查詢引擎→- -碼參照,枚舉項中選擇這個編碼參照的類型,根據(jù)這個參數(shù)選取的值來確定待選公司,并且在-就可以了,無需親自手動去寫紛繁復雜的SQL語句,同時我們也支持手工SQL。-用戶可以通過增加表來增加數(shù)據(jù)字典中的數(shù)據(jù)表,也可以點擊臨時表前面做好的查詢定義對象,擇增加表來增加一個sm_user表,這張表里面的是U8CLOUD系統(tǒng)的用戶信息。--設置過的param1。關于查詢定義的設計后面的章節(jié)將有更詳細的論述,這里只介紹最基本的功能。-之后可點菜單中的界面模型→查詢,來綁定我們剛才做好的查詢設計對象“用戶查詢”。---們選取sunny_corp這個公司,點確定,則可以瀏覽這個公司下的所有用戶,如下圖。-小詢引擎的基本功能,在后面的章節(jié)中詳細介紹查詢引擎的各項功能,并通過一些樣例使得用戶能夠-12-1(ObjectTree錄管理,每個節(jié)點的信息主體在數(shù)據(jù)庫的一個BLOB字段中。對象樹上的節(jié)點通常分為 對象兩類,并支持快速定位(在樹獲得焦點時用ctrl-f快捷鍵可彈出查找框,支持按編碼或名稱來r對象編(1)增加/刪除/修改:在根節(jié)點或 (2)/剪切/粘貼:在查詢或格式下,可以將一個 (1)增加/刪除/修改:在根節(jié)點或節(jié)點之下可以增加查詢對象或者界面對象。前者的屬性為編碼、(2)/剪切/粘貼:在查詢或格式下,可以將一個對象從某位置拷貝或移動到另一個位置。請注意這里的粘貼都是在同一棵樹下的,如果格式設計對象到查詢對象樹下則會出錯。對象導入導錄,將該下所有的子和對象都導出到指定位置(保持原有的級次。導入:在選中某個之后,導入功能可用。導出的XML文件,可以導入到當前下。此功能可用于對象的跨數(shù)據(jù)庫。導入時,我們可以選擇單個文件,也可以選擇一組文件或,導入后會保留原的級次結構。需要注意的是:在導出查詢對象或界面對象時,需將其的查詢對象一并導出才有意義-2XML-3u8chome/ierp/bin下,由于本文下面的章節(jié)中還有需要涉及到環(huán)境變量設置的地方,所以這里只提 --HOME%\ierp\bin\queryengine.xml,是被全共享的-4查詢模型的定義包括參數(shù)定義、SQL設計(含交叉定義、SQL整理、數(shù)據(jù)加工、規(guī)則等幾部分,其中規(guī)則描述的是本查詢與外部查詢的通信關系,剩余部分都用于描述查詢內部的屬性。查詢引擎的-1

-2濾型參數(shù),這是最常用的參數(shù)功能(參數(shù)的FAQ可以參見附錄。則會拋出ClassNotFoundException參數(shù):參數(shù)可在SQL設計的篩選條件頁簽,也可在SQL整理或數(shù)據(jù)加工的嵌入代碼中利用編碼向導。這里當篩選條件是待定條件的時候,雙擊“值”,文本框,就可以彈出-3-4參數(shù)-5SQLSQL設計包括向導設計方式和手工設計方式,無論采用哪種,在完成設計時系統(tǒng)均會對SQL進行校數(shù)據(jù)字時,系統(tǒng)會根據(jù)執(zhí)行數(shù)據(jù)源是U8CLOUD、IUFO或其它數(shù)據(jù)庫三種情況分別加載不同的數(shù)據(jù)字典,而且邏輯屬性,并向外系統(tǒng)提供數(shù)據(jù)庫邏輯信息的接口。以查詢引擎為例,查詢對象的定義是基于數(shù)據(jù)字-6U8CLOUDU8CLOUD數(shù)據(jù)字典通常在安裝產品時候由系統(tǒng)生成,如果想自己為某些數(shù)據(jù)庫對象生成字典,可以采用:2、解析U8CLOUD標準建庫提供的逆向工程功能將的物理表生成PDM文件,修改其中表和字段的中文名稱,然后以xml文件格式,再使用上述第法導入。查詢引擎中用到的數(shù)據(jù)字典都以一棵對象樹的形式存在,樹節(jié)點包括、表、視圖、字段、外鍵等信息,通過雙擊對象節(jié)點可以協(xié)助錄入SQL語句的成分。向導設表定義:即SQL語句中的from部分,可以利用數(shù)據(jù)字典選擇的數(shù)據(jù)表,也可以選擇查詢-7-8增加表(物理表)實際就是關系數(shù)據(jù)庫中的單鍵連接,連接字段只有一個,并且操作符都是常見的,而高-9連接定義→-10連接定義→-11-12表達式在值編輯框獲得焦點時雙擊編輯框可彈出參數(shù)界面并作(或者在值編輯框獲得焦點時按F12鍵或者雙擊彈出參數(shù)框如果是固定條件,在值編輯框獲得焦點時按F11鍵或者雙擊可彈出環(huán)境變量框,按F12鍵可彈出所的基礎數(shù)據(jù)表的參照。頁簽默認是隱藏的,可以在查詢定義框的南部面板按Ctrl+Shift+鼠標左鍵彈出隱藏的Having-13篩選條件定義(3--14SQL語句,但是并不查出數(shù)據(jù)來,如果您的查詢設計最終生成的SQL語句有問題,那么就會有相應的出錯提示。-15SQL手工設SQL的方式,由于復雜SQL在解析、適配、執(zhí)行等方面的不穩(wěn)定性較大,因此不推(#pk_corp#;-16SQL翻譯器對各種SQL方言進行翻譯,在手工設計中可以選擇是否啟用翻譯器這個功能,通常建議啟用-17SQL

-18--SQLSQL語句查詢出來的列中不可能存在像,,這樣的列,這些數(shù)值是原始數(shù)據(jù)庫表中某列中的值。但是這個功能我們可以通過只有,,這些固定好的值,如果添加了一筆數(shù)據(jù),民族的值為苗族,我們最終的報表-投影交WhereYn在上述SQL上獲得的結果。-22selectbd_deptdoc.deptnameasameas fromleftouterjoinbd_a sndoconbd_psndoc.pk_psndoc=bd_a leftouterjoinbd_defdoconbd_a -23原始數(shù)據(jù)(無交叉--25-26旋轉交-27行列結構在查詢出數(shù)據(jù)之前不可預料,多用于完全對原始數(shù)據(jù)進行動態(tài)處理。-28-29-30-30 苗ERP-這樣,即使原始表中不存在部門名稱為ERP10的記錄,在交叉過后也會出現(xiàn)多余的形成了一個維度,如31

苗-31-32SQLRepair-34SQLSQLshowtype的取值等于“明細”時,取出所實際上這里不僅僅能夠修改查詢字段及其表達式,更可以增加或者刪除查詢所的表,連接條件,排序替換了查詢定義,則原先在向導中或者在手工SQL設計中的查詢定義就不再生效。-35-36-37數(shù)據(jù)加

-38(ResultSetProcess用的對象是SQL定義。mpsnnum-39ID和參數(shù)變量獲得查詢結果集,這里的參數(shù)變量是指需要傳給-40將該列的內容更新為公式返回值。一個公式也可以另一個公式列的計算結果。-41-42-43-44規(guī)到另一張報表R2的上的區(qū)域A2,而且A1和A2的內部數(shù)據(jù)存在著某種內在聯(lián)系,則稱可以從R1到R2。當這種行為傳遞下去,我們就可以了解某張報表的數(shù)據(jù)明細,甚至追溯到它的數(shù)據(jù)來源。通常我們會把上述的區(qū)域選為一個表格行或者一個表單元,而上述的內在聯(lián)系就稱為規(guī)則。查詢間參數(shù),用于接收區(qū)域的取值。3-32。我們希望在瀏覽公司部門的時候選中某個部門能到部門人員查詢查看這個部門下的所有員工。這首先需要我們在公司部門的查詢列和部門人員查詢定義里該參數(shù)作為過濾條件。下面來看一個簡單的用例,假定我們做好了一個查詢定義,是根據(jù)公司查詢該公司下的用戶,另外我知道公司下所有用戶的信息,也就是說根據(jù)選中的公司到用戶查詢去。可以這樣定義規(guī)則:-45-46-47參數(shù)-48圖三-49規(guī)則設圖三-50規(guī)則代碼向圖三-51規(guī)則定義向圖三-52規(guī)則代下圖顯示了一個由人員信息到薪資信息再到同姓員工工資信息,最后到每月明細的用例,其第三步是多列聯(lián)合(相當于“人員=’’and年份=’2003’。圖三-53效果示 到節(jié)QE報表HRU8CLOUD界面關聯(lián)操作方案為上述需求提供了平臺級的技術依據(jù)。通過把查詢引擎報表作為調用方節(jié)規(guī)則設置中增加一個規(guī)則:圖三-54到節(jié)點規(guī)則設在目標節(jié)點參照中,可以選擇的目的節(jié)點,目的節(jié)點是已到U8CLOUD系統(tǒng)的可執(zhí)行功能節(jié)點,對于一般節(jié)點,僅僅是打開該節(jié)點,與用戶雙擊打開一樣。錄數(shù)過大的情況允許用戶優(yōu)化或放棄查詢)-55selectcount(*)sql語句,如果行數(shù)過多這條語句可能會耗時非常多,用戶可以根據(jù)自己的需復合查通常復合查詢的參數(shù)會包含它所的所有子查詢的參數(shù)的并集。-56物化查冊到DDC的物化臨時表下)SQL設計就可以基于新創(chuàng)建的物化表進行,從而擴充了查詢集成的范圍。了物化表的查詢,用戶可以在首選項配置中選擇是否在執(zhí)行時提示同步刷新物化臨時-57圖三-58在定義查詢時創(chuàng)建的物化低,所以請慎重使用這種功能。只有在查詢數(shù)據(jù)并非經常變化,而且查詢關系比較復雜的情況下物化合并查-59數(shù)據(jù)權數(shù)據(jù)權限的行權限一般是通過參照型參數(shù)來控制的。當基本數(shù)據(jù)權限開關打開的時候,公司用戶在參數(shù)設置時點開的參照記錄是經過了BD權限控制的,因此他也就無法查詢該登錄用戶所具限之外的數(shù)據(jù)(比如他可的部門集合之外的部門相關數(shù)據(jù)。上述策略通常是結合SQL設計中待定篩選條件以及同登錄用戶能夠查詢不同數(shù)據(jù)列的邏輯寫在代碼里,后者則通過模板分配機制來實現(xiàn)不同用戶瀏覽不界面模型進行修改。模型的設計包括查詢,界面可視化設計,綁定數(shù)據(jù)集,數(shù)據(jù)預處理等部分??蚣?-4.1.查

-3查詢是指將界面模型所要展現(xiàn)的查詢結果集對應的查詢定義到模型中來。由于同一查詢定義根圖四-4查詢界

-5控件管

-6這個面板上定制我們的界面,這個過程和一般的Java可視化設計大同小異。-7FlowLayout查詢引擎里的BorderLayout將容器分成了北、中、南三個區(qū)域,每個區(qū)域放置一個子控件(Java分給中區(qū)域。如圖4-6,主面板的布局就是BorderLayout,其北區(qū)域放置了一個子面板,布局為-8BorderLayout-9GridLayout-10 -11ID屬性里;,-4-8所示。在這里我們可以設置圖表的類型,以及綁定的系列--14-15在這里我們選擇分組列為公司名稱,這樣就會把數(shù)值列的數(shù)據(jù)按照公司名稱來進行分組,同時須選-16-17屬性綁

-18-19列表--行列格式設

--22銷售額這樣的數(shù)據(jù)通過分段就很容易體現(xiàn)出高中低來,方便瀏覽數(shù)據(jù)。色顯示。條件中除支持用常量表達式進行比較之外,也支持用含變量的表達式進行比較,其中的變量A,B,C三列,要求某行中A列中的值大于BC列的值之和時該行A列按某種指定顏色顯示,我們可以給A列綁定列格式,在列格式的設置中設置條件圖四-23設置界-24一個表頭ID與之對應。通過表頭ID該列表頭格式可以被表綁定(綁定了列表頭的表效果參見圖4-義的列和行相對應的列頭和行頭。默認的列頭和行頭沒有任何附加的格式,如圖4-16所示。-25-26-27定義了行表頭格式的表(4-預定義數(shù)據(jù)-28-29-301233式,這里的公式如果到別的列,則進行計算的是所列當前行的值。例如下面的表格,占比列的合計應該設置為()/(+),公式就會計算4/(4+5),否則就變成了33.3%+50%,達不到用戶的1233合 5----33-34-35-36界面初始我們發(fā)出運行某界面令后,在界面呈現(xiàn)出來之前,系統(tǒng)會做一系列的初始化工作:根據(jù)界面模型-38如果界面的查詢定義里定義了查詢參數(shù),那么在初始化界面工作去查詢結果集之前,會要求我們輸入查詢參數(shù)。如當我們運行圖4-5中定義的界面模型(它的查詢如圖4-2所示)時,因為其的-39界面模型運行結果(4-數(shù)據(jù)處界面模型在運行態(tài)提供了幾種數(shù)據(jù)處理的功能:查找,排序,過濾,公式列,小計合計,交叉和。其中,查找,排序,過濾和公式列是基于數(shù)據(jù)集的,這些操作對于所有綁定到作數(shù)據(jù)集的控件都是起作用的,放在數(shù)據(jù)處理菜單下,而小計合計,交叉和是基于表控件的,放在表控件表頭右鍵菜單下,只-40條件的記錄,數(shù)據(jù)滾動到這一條記錄,同時在界面控件上體現(xiàn)出來。查找提供兩種選項,用戶自定義-41過濾設置分兩種類型,疊加過濾和重新過濾。疊加過濾是過濾結果的基礎上再按指定條件進行過濾得-42-43第一類交叉(投影交叉設置界面-44第二類交叉(旋轉交叉設置界面3節(jié)。這里的交叉是用于在界面運行態(tài)下,用戶瀏覽報表時想按照不圖四-45規(guī)則選取界則該表控件支持操作。狀態(tài)。表控件提供了回退功能可以撤銷交叉和等操作。小小計合計X綁-控件連-47表-報表打

--49接獨立報表節(jié)點之后的打印,首先須為節(jié)點生成打印模版,在格式界面設計態(tài)下選擇輸出→生成-50印模版設置,選擇剛才為之生成打印模版的功能節(jié)點,把剛才生成的系統(tǒng)模板一份進行修改。列中的數(shù)值,并且自下擴展。在這里熟悉打印模版機制的用戶(實施人員)可以自定義打印模版,

-手動掛圖五-1功能節(jié)點掛接(功能節(jié)點功能節(jié)點時需指定對應文件名為:nc.ui.pub.querymodel.QueryNodeUI,每個節(jié)點還需定義兩個參pkQryNodedsName:定義數(shù)據(jù)源(可不定義,如不定義則代表登錄賬套的數(shù)據(jù)源pkQryNode:格-向導發(fā)-2報表發(fā)布向導—功能節(jié)點的編碼,這里用戶如果選擇了節(jié)點,則會在該下新建一個功能節(jié)點,如果用戶選擇了葉錯,用戶的下一步操作,如果是列舉的類型之一,系統(tǒng)會修改當前選點的定義。新增功能節(jié)點名者報表管理節(jié)點,則會格式設計對象樹中的對象:-3報表發(fā)布向導編碼。而報表管理節(jié)點選取的是樹中的非葉子節(jié)點也就是格式,對應folderId參數(shù)的是格式的編如果我們選取的是報表模版節(jié)點,則樹就會是查詢設計對象樹,因為報表模版節(jié)點的生成是基于查詢設計思業(yè)務設提供業(yè)務設置界業(yè)務設提供業(yè)務設置界用指定待生成查詢的編碼插件程序根據(jù)業(yè)務設置生成查完成插件設格式設/**QueryModelDef[]generateQueries(StringdsNameForExe,StringdsNameForDef,GenQueryInfoVO[]infos,StringfolderId)throwsException;UIPanelgetBusiSetPanel(StringdsNameForExe);StringgetPluginName();}原型驗詢。插件提供了一個選擇輔助項的業(yè)務界面,并根據(jù)用戶的選擇生成N3個費用項查詢,以及將這N+3個查詢復合在一起的輔助核算主查詢。開發(fā)工作,等等,兩者的差別在于,生成插件是的(一次生成多個對象,而設計插件是可修改的,因為實現(xiàn)該接口一律要求繼承以下缺省實現(xiàn)類:nc.ui.pub.queryplugin.DefaultQueryEngineCtrl。這個實現(xiàn)類JAVADOC參見附8數(shù)名為qeCtrlClass,參數(shù)值為實現(xiàn)類類名。如下圖所示:

-1個性化實現(xiàn)類-2七.查詢引擎新特(Preference) 解決BigDecimal把8位小數(shù)顯示為科學的問題新增功能描參數(shù)重U8CLOUD公式系統(tǒng)支持的公式----3。-分頁技來對結果集進行控制,可往往即使是這些也為力,例如要查詢某公司下一年內的明細,雖然--利用常用的三種數(shù)據(jù)庫Oracle,DB2,SQLServer的特性,構造特殊SQL語句,使得原來不帶行號ScrollableDataSet中,該類使用LinkedList數(shù)據(jù)結構來把查出的小結果集串起來,并向外界調用接口nextDataSet,previousDataSet,當這些方法被調用時,從LinkedList中取出對應的結果集并返回。

-addtochange-三種數(shù)據(jù)庫拼接SQL的思路大同小異,都是在原表(或視圖)的基礎上自動加上一個行序號列,然后wherewhere條件,執(zhí)行這段拼接成的SQL語句查出相應的結果集。列列列列列列after列列列列12345SQL代碼輔助

---數(shù)據(jù)字典級別權限控如,在某企業(yè)中,業(yè)務場景規(guī)定普通的用戶不能系統(tǒng)用戶表,防止泄密的發(fā)生,查詢定義模型的制作UAPDDC權限的功能。當“QE數(shù)據(jù)字典”資源權限被啟用后,帳套管理員就可以在權限分配節(jié)點對公司角色(或角色)分配不同的數(shù)據(jù)字典權限。當某用戶登錄某公司(或)進行查詢引擎向導式查詢設計的時候,他必須通過數(shù)據(jù)字典選擇數(shù)據(jù)表,此時系統(tǒng)會根據(jù)權限插件提供的接口判斷他是否選擇某張表,并給出相應的提示,從而控假定uap公司下有一用戶uap,他屬于角色all和所屬公司的角色uaprole。驗證如下1uap公司的QE---4、以uap登錄uap公司,打開查詢引擎管理進行向導式查詢設計--查詢引擎FAQ之參數(shù)答:是的,復合查詢不會自動去遞歸提取所子查詢的參數(shù)并集。這個并集需要通過手工。復合查詢自身不一定使用其中的參數(shù),但它負責把參數(shù)分發(fā)給的子查詢。同參數(shù)名的參數(shù)將共享傳入的參數(shù)值,所以,通常復合查詢的參數(shù)會包含它所的所有子查詢的參數(shù)的并集。4、如何快速其它查詢對象的參數(shù)?義錄入界面的類名(參見問題10),否則枚舉項無實際意義,也無須填寫。 setClassWherePart我們可以在參照依賴里輸入兩個表達式,中間以分號(;)隔開。以主體賬簿參照為例,如果我ClassWherePart。數(shù)),參照錄入(對應參照型參數(shù)),自定義界面錄入(參見問題10)。1=1)。16、參數(shù)定義中,"是否控制數(shù)據(jù)權限"一列是什么意思答:如果勾選了該項,即便用戶未對參照型參數(shù)設置取值,系統(tǒng)也會自動增加相應BD據(jù)權限篩選條件。但此功能受限于目前已提供實現(xiàn)的少BD照類型。17、參數(shù)定義中“常用條件界面類”和“映射表字段”兩列是什么意思nc.ui.b.ueymel.UsrDfCndtinPnl接口,UIanel成后,將全類名直接寫到“常用條件界面類”中即可,不用加尖括號?!坝成浔碜侄巍庇糜跀?shù)據(jù)的相關控制,填寫一個查詢模板中的查詢條件字段編碼,在拼查詢條件SQL時根據(jù)所映射的字段編碼確定是否要--發(fā)貨日期發(fā)貨單號-發(fā)貨日期發(fā)貨單號","產品編碼-發(fā)貨日期&type","發(fā)貨單號-發(fā)貨日期發(fā)貨單號-&type","發(fā)貨日期發(fā)貨單號-發(fā)貨日期","發(fā)貨單號-"};交叉列={"&type"};-"};交叉列={"&type"};-"};交叉列={"&type"};--發(fā)貨單號","發(fā)貨日期-零件發(fā)貨單號","發(fā)貨日期零件金額","零件數(shù)量-零件零件金額","零件數(shù)量-零件零件金額","零件數(shù)量-"};交叉列={"產品編碼","&type"};-發(fā)貨日期零件金額","零件數(shù)量---發(fā)貨日期發(fā)貨單號產品編碼","零件將兩下的initBlob_qmd.sql和initBlob_fmd.sql剪切至安裝盤的初始化所在路徑下(\business\蓋掉別人的初始;(U8CLOUD內部安裝盤不需移動)在安裝盤\business\initblob文件夾下建一個自己的(xxxx,通常是模塊名c:\_initblob\下剩余的所有文件放到這個中最后的文件路徑形如: 的預置查詢互相覆蓋(如果都使用newId之類的話必然導致嚴重;U8CLOUD內部的安裝盤查詢與格式預置參見設計部相關配置文檔進行同一對象的升級必須保證該對象的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論