EAS開發問題解決方案彙總

2021-06-17 22:21:52 字數 4432 閱讀 1075

做了快5年的eas開發,遇到過的問題數不勝數,最近在幫新同事處理問題時發現好多問題是似曾相識的 ,現將這些問題及解決方法彙總下來,並不斷維護吧。

1.開發過程中往往會遇到某些欄位或表不存在的提示,而這些屬性確不是我們開發的,故不知道是那個表少屬性。

解決方案:

第一步:通過在com.kingdee.bos.sql.shell.kdpreparedstatement類裡的建構函式方法設定斷點,來抓出ksql、dialect_sql變數裡的sql語句。

第二步:將得到的語句在查詢分析器裡執行 看下 是否存在缺少的字段,並看是哪個表少的字段

2.新增乙個物業管理的模組,在建立ui基類的時候發現乙個問題,需要將序時簿中的引數通過上下文傳遞到editui中(例如:左樹右表的樹節點),實現方案如下:

重構listui的prepareuicontext()方法,給上下文傳參即可

例如:protected void prepareuicontext(uicontext uicontext, actionevent e)

注:在editui中需要在介面載入後才可獲得引數。

4.儲存過程的執行參考案例:

connection conn = this.getconnection(ctx);

//呼叫xx儲存過程

string sql=""; 

callablestatement cs = conn.preparecall(sql);

cs.setstring(1, projectid);

//改為根據單頭採購組織取數(問題清單2要求修改--需求人員餘潺)

cs.setstring(2, purorgunitid);

cs.registeroutparameter(3, oracle.jdbc.oracletypes.cursor);

cs.execute();

object rowset=(object) cs.getobject(3);

if(rowset instanceof oracleresultset) }

5.彈框控制邏輯:

uicontext uicontext = new uicontext();

uicontext.put("id", id);

uicontext.put("purorgunitid", purorgunitid);

string uiclass = "com.kingdee.eas.industry.emm.scm.sm.client.filepartbilldetaillistui";

iuiwindow popui = uifactory.createuifactory(uifactoryname.model).create(uiclass, uicontext, null, oprtstate.view);

popui.show();

其中,如果彈出的ui介面不需要工具欄及最大化等按鈕,用uifactoryname.model引數

目標介面中通過getuicontext().get("id") 獲取引數值

6.新增單據分錄按鈕新增框架方法,在開發乙個單據中分錄的新增行刪除行按鈕簡便處理方式:

第一步,定義變數:

protected com.kingdee.eas.framework.client.multidetail.detailpanel kdtentry_detailpanel = null;

第二部,新增detailpanel到panel容器中,並重構inituicontentlayout()方法實現具體邏輯:

public void inituicontentlayout()

7.設定大文字控制項(kdtextarea)滾動條的簡易方法,避免使用多語言的大文字控制項:

第一步:定義kdscrollpane變數

protected com.kingdee.bos.ctrl.swing.kdscrollpane scrollpanetype;

第二步:重構  inituicontentlayout() 方法並實現給大文字新增滾動pane的**

public void inituicontentlayout()

8.序時簿中獲取選中行中某單元格的值方法,例如獲取啟用狀態字段來判斷是否可修改:

//string strid =getselectedkeyvalue();

int selectrows = kdtableutil.getselectedrows(tblmain);

string strstatus =listuihelper.getselectedkeyvalue(selectrows, tblmain, "deletedstatus");

9.序時簿 單據單頭行合併,重構 getmergecolumnkeys方法

public string getmergecolumnkeys();}

11.eas中editui設定出滾動條的方法:

第一步:在editui**類中重構一下三個方法

public boolean usescrollpane()

public int getverticalscrollpolicy()

public int gethorizontalscrollpolicy()

第二部:在editui元資料中設定介面屬性:

設定coreui(panel)的preferredsize屬性的高寬等同於介面高寬

12.// 初始化預設過濾條件,true為開啟過濾框,false為預設不開啟過濾框

protected boolean initdefaultfilter() else

return true;

}13.**kdtable新增滑鼠右鍵顯示的excel匯出功能(元資料發布的預設有,但是**建立的**需要呼叫下面方法):

coreui類裡的addcommonmenustotable(table)方法

14.服務端新增單據進工作流,(介面同步場景用)

案例**如下:

wfeventlistenerstatemanager.getinstance().enableeventlistener();  

projectdocbillfactory.getlocalinstance(ctx)

.submit(projectdocbillinfo);

wfeventlistenerstatemanager.getinstance().disableeventlistener();

15.根據單據id找到單據的相關資訊(實體,表,ui等)

bosuuid id = bosuuid.read(billid);

bosobjecttype type = id.gettype();

imetadataloader loader = metadataloade***ctory.getremotemetadataloader();

entityobjectinfo vo = loader.getentity(type);

string editui = vo.getextendedproperty("editui");

16.checkbox控制項值改變時,如需要改為選擇前的值方法:

if(e.getstatechange()==2)

獲取上下文中的資訊(當前登入人、當前公司等)

客戶端:syscontext.getsyscontext().getcurrentuserinfo();

服務端:contextutil.getcurrentuserinfo(ctx);

17.**中根據編碼規則獲取編碼的簡單實現

protected void recyclenumberbyorg(iobjectvalue editdata,string orgtype,string number)

else if (com.kingdee.eas.common.client.syscontext.getsyscontext().getcurrentorgunit() != null)

if (!stringutils.isempty(companyid) && icodingrulemanager.i***ist(editdata, companyid) && icodingrulemanager.isuseintermitnumber(editdata, companyid))

}catch (exception e)}}

呼叫:recyclenumberbyorg(editdata,"none",editdata.getstring("number"));

18.服務端獲取上下文:contextutil.getcurrentuserinfo(ctx);

客戶端獲取上下文:syscontext.getsyscontext().getcurrentuserinfo();

web端獲取上下文:

context ctx =wafcontext.getinstance().getcontext();

userinfo user = contextutil.getcurrentuserinfo(ctx);

專案高併發問題解決方案合集

這道題是比較典型的題吧,也是我第乙個公司入職的時候,面試官問我的,當時我回答只能說是星星之火,還不能燎原那種,差點被面試官給澆滅。1 採用快取技術 這是最簡單的乙個回答,使用者快取 頁面快取等一切快取。使用特定的機制來進行重新整理,利用消耗記憶體空間來換取使用者的效率,同時減少資料庫的訪問次數。2 ...

幾個開發小問題解決方案

需要將練嗎資料解碼之後轉化為char後在轉化為string string s urldecoder.decode platformid,utf 8 private static string revert string s 如系統非使用utf 8編碼,請替換為帶有編碼格式的建構函式 return n...

Jar Hell 問題解決方案

最近看到溫紹錦的jvm基礎,裡面看到這個jar hell問題的解決方法,之前遇到過一次,是乙個資源檔案,當時覺得挺麻煩,不知道還有這個方法,很棒,特地整理了下,記錄到這裡來,這個部落格開了好長時間了,一直以來也懶得寫東西,以後會堅持更新些。classloader classloader thread...