MES開(kāi)發(fā)與應(yīng)用 課件 3.6 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-附件功能的開(kāi)發(fā)實(shí)現(xiàn)_第1頁(yè)
MES開(kāi)發(fā)與應(yīng)用 課件 3.6 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-附件功能的開(kāi)發(fā)實(shí)現(xiàn)_第2頁(yè)
MES開(kāi)發(fā)與應(yīng)用 課件 3.6 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-附件功能的開(kāi)發(fā)實(shí)現(xiàn)_第3頁(yè)
MES開(kāi)發(fā)與應(yīng)用 課件 3.6 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-附件功能的開(kāi)發(fā)實(shí)現(xiàn)_第4頁(yè)
MES開(kāi)發(fā)與應(yīng)用 課件 3.6 工業(yè)管理軟件開(kāi)發(fā)基礎(chǔ)-附件功能的開(kāi)發(fā)實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

3.6附件功能的開(kāi)發(fā)實(shí)現(xiàn)深圳市信息職業(yè)技術(shù)學(xué)院目

錄附件開(kāi)發(fā)示例01附件開(kāi)發(fā)注意事項(xiàng)02上傳按鈕框架實(shí)現(xiàn)介紹03下載按鈕框架實(shí)現(xiàn)介紹04知識(shí)回顧平臺(tái)打印模板設(shè)置介紹;單據(jù)打印開(kāi)發(fā)示例;標(biāo)簽打印開(kāi)發(fā)示例;單據(jù)和標(biāo)簽打印開(kāi)發(fā)注意事項(xiàng)。學(xué)習(xí)目標(biāo)通過(guò)本節(jié)學(xué)習(xí)可以:掌握附件功能的開(kāi)發(fā)實(shí)現(xiàn);掌握附件功能的異常定位并能夠修復(fù)異常;了解框架上傳按鈕的實(shí)現(xiàn)邏輯;了解框架下載按鈕的實(shí)現(xiàn)邏輯。01附件開(kāi)發(fā)示例附件使用介紹附件使用介紹平臺(tái)附件功能的實(shí)現(xiàn)是作為子列表實(shí)現(xiàn)。平臺(tái)所有附件名稱(chēng)、大小、路徑等都是存在表BD_ATTACHMENT中,不同功能的附件數(shù)據(jù)通過(guò)所屬父IDOWNER_ID和鑒別器DISCRIMINATOR進(jìn)行過(guò)濾數(shù)據(jù)的。平臺(tái)附件文件是存放到對(duì)應(yīng)服務(wù)器中的,所以使用附件功能需要配置附件方式。附件功能的屬性和界面配置框架有做通用實(shí)現(xiàn),所以在做附件功能開(kāi)發(fā)時(shí),實(shí)體繼承框架的附件實(shí)體類(lèi)去實(shí)現(xiàn),如果未增加屬性,框架實(shí)現(xiàn)的操作按鈕也能滿(mǎn)足要求,重寫(xiě)的附件不需要做界面配置,使用框架通用的配置即可。思考題在讀者管理功能中添加一個(gè)附件子列表,附件子列表包含上傳、下載和刪除命令,能正常上傳、下載文件和刪除數(shù)據(jù),如何實(shí)現(xiàn)?附件開(kāi)發(fā)示例開(kāi)發(fā)步驟在服務(wù)端工程添加附件子實(shí)體,繼承Attachment,關(guān)聯(lián)讀者管理的實(shí)體類(lèi)。附件開(kāi)發(fā)示例開(kāi)發(fā)步驟添加附件倉(cāng)庫(kù),以附件實(shí)體類(lèi)名+Repository進(jìn)行命名,繼承AttachmentRepository,標(biāo)記倉(cāng)庫(kù)使用的數(shù)據(jù)提供者,因?yàn)橐P(guān)聯(lián)數(shù)據(jù)提供者類(lèi),所以使用附件的工程必須要添加數(shù)據(jù)提供者類(lèi)。附件開(kāi)發(fā)示例開(kāi)發(fā)步驟添加附件實(shí)體配置類(lèi),繼承AttachmentEntityConfig,重寫(xiě)配置元數(shù)據(jù)的方法ConfigMeta,在ConfigMeta方法中設(shè)置啟用鑒別器,通過(guò)Meta.EnableDiscriminator(“名稱(chēng)唯一”)設(shè)置。附件開(kāi)發(fā)示例開(kāi)發(fā)步驟在讀者管理實(shí)體中添加附件的列表屬性。附件開(kāi)發(fā)示例開(kāi)發(fā)步驟在配置文件中,配置上傳和下載信息,支持ftp和ntfs,如下是ntfs配置,上傳和下載路徑支持本地路徑配置。附件開(kāi)發(fā)示例開(kāi)發(fā)步驟效果,能夠正常上傳、下載和刪除文件。知識(shí)擴(kuò)展知識(shí)擴(kuò)展如果讀者的附件只有下載權(quán)限,如何實(shí)現(xiàn)?知識(shí)擴(kuò)展知識(shí)擴(kuò)展可以將子屬性的視圖配置的分組設(shè)置為readonly,如ViewGroup="Readonly"?思考題文件路徑為空,文件上傳失敗,無(wú)法下載,可能的原因是?附件倉(cāng)庫(kù)未按規(guī)范命名,附件倉(cāng)庫(kù)的命名規(guī)范:附件實(shí)體類(lèi)名+Repository。02附件開(kāi)發(fā)注意事項(xiàng)附件開(kāi)發(fā)注意事項(xiàng)注意事項(xiàng)開(kāi)發(fā)附件功能的服務(wù)端工程必須要有數(shù)據(jù)提供者。附件功能必須要有數(shù)據(jù)倉(cāng)庫(kù),且數(shù)據(jù)倉(cāng)庫(kù)必須是“附件的實(shí)體名+Repository”命名。附件的實(shí)體配置要啟用鑒別器,且鑒別器配置的字符串不能跟其他功能的附件的鑒別器沖突,否則數(shù)據(jù)有可能會(huì)沖突。平臺(tái)開(kāi)發(fā)的附件功能只能做為子列表來(lái)展示。使用附件必須配置附件方式。附件默認(rèn)有上傳、刪除、下載的權(quán)限,如果要設(shè)置只有下載的權(quán)限,可以給附件子列表設(shè)置分組為Readonly。 View.ChildrenProperty(p=>p.ReaderAttachment).ViewGroup="Readonly";03上傳按鈕框架實(shí)現(xiàn)介紹思考題框架上傳按鈕上傳的文件大小是否有限制?如果有,最大能上傳多大的文件?上傳按鈕框架前端實(shí)現(xiàn)前端實(shí)現(xiàn)canExecute和execute方法邏輯。

/***是否可以執(zhí)行*@param{*}view*@returns總是可以執(zhí)行,*子類(lèi)可以根據(jù)具體情況覆寫(xiě)*/canExecute:function(view){if(view.getParent().getCurrent()==null)returnfalse;returntrue;},/***執(zhí)行方法**@param{*}listView*@param{*}source*/execute:function(listView,source){varbtnFile=Ext.create('Ext.form.field.FileButton',{renderTo:Ext.getBody(),hidden:true});btnFile.on("change",this.buttonChange,this);btnFile.fileInputEl.dom.click();},父的當(dāng)前操作行為null,上傳按鈕不允許操作創(chuàng)建ext的文件按鈕監(jiān)聽(tīng)文件按鈕的變更事件,即用戶(hù)選擇文件時(shí),會(huì)執(zhí)行到buttonChange方法的邏輯文件按鈕的點(diǎn)擊事件上傳按鈕框架前端實(shí)現(xiàn)前端實(shí)現(xiàn)buttonChange方法邏輯。buttonChange:function(field,newValue){varme=this;varfile=field.fileInputEl.dom.files.item(0);varfileSize=file.size;varentity=me.view.getParent().getCurrent().data;varfileName=;varvalidateResult=me.validateFile(fileSize,fileName,file,entity);if(!validateResult){return;}varfileExt=fileName.substring(fileName.lastIndexOf(".")).toLowerCase();varfileReader=newFileReader('file://'+newValue);fileReader.readAsDataURL(file);獲取文件獲取文件大小獲取父當(dāng)前操作行數(shù)據(jù)獲取文件名稱(chēng)調(diào)用文件校驗(yàn),校驗(yàn)不通過(guò),直接返回將文件的擴(kuò)展名轉(zhuǎn)為小寫(xiě)讀取文件上傳按鈕框架前端實(shí)現(xiàn)前端實(shí)現(xiàn)buttonChange方法邏輯。fileReader.onload=function(e){if(me.view){if(entity){SIE.Msg.wait("提示框","正在上傳,請(qǐng)稍等.....".t());me.view.execute({data:{Attachment:{OwnerId:entity.Id,Content:e.target.result,FileSize:fileSize,FileExtesion:fileExt,FileName:fileName},Entity:entity},success:function(res){

me.view.reloadData();

me.afterSave(me.view);SIE.Msg.close();Ext.Msg.alert('提示'.t(),res.Result);}});}}}}上傳文件操作執(zhí)行后端邏輯傳到后端的參數(shù)重新加載數(shù)據(jù)調(diào)用保存后方法,該方法是空方法,用于擴(kuò)展邏輯關(guān)閉等待提示框上傳成功后的提示消息上傳按鈕框架前端實(shí)現(xiàn)前端實(shí)現(xiàn)validateFile方法邏輯。validateFile:function(fileSize,fileName,file,entity){if(Ext.isEmpty(fileName)){Ext.MessageBox.alert("提示","上傳的文件名不能為空。".t());returnfalse;}varsize=fileSize/1024;if(size>20000){Ext.MessageBox.alert("提示","附件不能大于20M。".t());returnfalse;}returntrue;},文件名稱(chēng)的校驗(yàn)文件大小的校驗(yàn)上傳按鈕框架后端實(shí)現(xiàn)后端實(shí)現(xiàn)全局變量的屬性定義。 ///<summary>///附件保存前驗(yàn)證事件,子類(lèi)可以根據(jù)需要擴(kuò)展,比如驗(yàn)證附件中的內(nèi)容

///</summary>publiceventFunc<Stream,string>ValidatingFileStream;///<summary>///附件保存前事件,子類(lèi)可以根據(jù)需要擴(kuò)展

///</summary>publiceventFunc<UploadAttachmentViewArgs,string>SavingAttachement;///<summary>///附件保存后事件,子類(lèi)可以根據(jù)需要擴(kuò)展,比如保存實(shí)體相關(guān)的內(nèi)容

///</summary>publiceventFunc<UploadAttachmentViewArgs,string>SavedAttachement;上傳按鈕框架后端實(shí)現(xiàn)后端實(shí)現(xiàn)執(zhí)行方法邏輯。protectedoverrideobjectExcute(ViewArgsargs,stringscope){varmeta=ClientEntities.Find(args.Type);if(scope!=meta.EntityType.GetQualifiedName())thrownewSystem.Security.SecurityException("參數(shù)type[{0}]與令牌不一致".FormatArgs(args.Type));varviewArgs=this.DeserializeData(args.Data);varentityType=meta.EntityType;viewArgs.Attachment.OwnerType=entityType;varsm=this.GetAttachement(viewArgs);

varvalidateMsg=this.OnValidateFileStream(sm);if(!string.IsNullOrEmpty(validateMsg)){returnvalidateMsg;}

this.OnSavingAttachement(viewArgs);

this.SaveAttachement(viewArgs,entityType);

this.OnSavedAttachement(viewArgs);return"上傳成功。".L10N();}從前端json數(shù)據(jù)反序列化獲取流對(duì)象驗(yàn)證事件,保存附件前的驗(yàn)證調(diào)用保存前事件執(zhí)行保存附件邏輯保存附件后的處理邏輯上傳按鈕框架后端實(shí)現(xiàn)后端實(shí)現(xiàn)上傳按鈕后端其他方法邏輯實(shí)現(xiàn)參考。04下載按鈕框架實(shí)現(xiàn)介紹思考題做導(dǎo)入功能時(shí),下載的模板是提前配置好的,點(diǎn)擊導(dǎo)入時(shí),也需要做數(shù)據(jù)的關(guān)聯(lián)校驗(yàn),該如何實(shí)現(xiàn)?下載按鈕的前端實(shí)現(xiàn)前端實(shí)現(xiàn)SIE.defineCommand('SIE.Web.Common.Attachments.Commands.FtpDownloadCommand',{extend:'SIE.cmd.ExportCommandBase',meta:{text:"下載",group:"edit",iconCls:"icon-Downloadicon-blue"},canExecute:function(view){varitem=view.getCurrent();if(item!=null){returntrue;}returnfalse;},execute:function(listView,source){varitem=listView.getCurrent();this.doSubmit({Name:listView.getSourceCmd().command,Token:listView.getToken(),Data:SIE.data.Utils.seriaizeRequest({Data:SIE.data.Utils.seriaizeRequest({FileName:item.data.FileName,FilePath:item.data.FilePath,})})});}});下載按鈕框架后端實(shí)現(xiàn)后端實(shí)現(xiàn)publicclassFtpDownloadCommand:ViewCommand{///附件配置地址,從web.config中的節(jié)點(diǎn)client.PathAttachment獲取 ///<returns>文件流</returns>protectedoverrideobjectExcute(ViewArgsargs,stringscope){try{vardata=args.Data.ToJsonObject<AttachmentArgs>();varfileBytes=RT.Service.Resolve<AttachmentController>().FileDownload(data.FilePath,data.FileName);//byte到內(nèi)存流輸出

varfileStreamResult=newFileStreamResult(newMemoryStream(fileBytes),"application/octet-stream");fileStreamResult.FileDownloadName=data.FileName;returnfileStreamResult;

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論