加載本頁面數據
關于加載數據,還要多補充一個點,如果要加載一個基礎資料/單據界面中正在操作的界面,比如要獲取剛填寫好的字段值,就要獲取當前界面的模型層,再獲取具體數據。具體操作如下:
//獲取日任務信息,并且以JSON字符串的形式展現JSONObject jsonResultObject = new JSONObject();jsonResultObject.put("taskName", this.getModel().getValue("name").toString());jsonResultObject.put("createTime", this.getModel().getValue("abq2_task_create_time").toString());//獲取當前頁面的單據體的數據DynamicObjectCollection dynamicObjectCollection = this.getModel().getEntryEntity("abq2_task_entryentity");JSONArray jsonTaskArray = new JSONArray();for (DynamicObject dynamicObjectSingle : dynamicObjectCollection) {JSONObject jsonObjectSingle = new JSONObject();jsonObjectSingle.put("taskContent", dynamicObjectSingle.getString("abq2_task_context"));jsonObjectSingle.put("expectTime", dynamicObjectSingle.getString("abq2_expect_minute"));jsonObjectSingle.put("diff", dynamicObjectSingle.getString("abq2_diff"));jsonObjectSingle.put("finishTime", dynamicObjectSingle.getString("abq2_true_minute"));jsonObjectSingle.put("finishSituation", dynamicObjectSingle.getString("abq2_finish"));jsonTaskArray.add(jsonObjectSingle);}
this就是指的當前頁面的實體,getModel就是獲取當前頁面實體的模型層數據。
新建基礎資料/單據實體
新建的操作用到的也是BusinessDataServiceHelper,例:
DynamicObject my_activity = BusinessDataServiceHelper.newDynamicObject("abq2_my_activity");
剛創建出來的這個實體各個字段值中,如果是數值型的默認為0,其他的默認為null。要對字段進行設置值的話,做相應的set操作即可,例如:
//new一個DynamicObject表單對象DynamicObject dynamicObject = BusinessDataServiceHelper.newDynamicObject("abq2_apply");StringBuilder sb1 = new StringBuilder(); //生成一個單據編號sb1.append("AskForLeave-");for (int i = 1; i <= 10; i++) {int ascii = 48 + (int) (Math.random() * 9);char c = (char) ascii;sb1.append(c);}//設置對應屬性//將獲取到的json信息保存到單據中去dynamicObject.set("billno", sb1.toString()); //單據編號dynamicObject.set("abq2_creator", RequestContext.get().getCurrUserId()); //創建人dynamicObject.set("enable", 1);dynamicObject.set("billstatus", "A");dynamicObject.set("abq2_largetextfield",resultJsonObject.getString("reasonForLeave")); //請假理由………………
注:建議創建新的實體時,要給實體的創建人、編號、數據狀態、使用狀態都先賦值好。方便該實體的業務功能的使用。
增加單據體分錄
對于要新增單據體的分錄,即增加單據體的行,操作如下:
DynamicObjectCollection dynamicObjectCollection = dynamicObject.getDynamicObjectCollection("abq2_task_entryentity");for (Object object : resultJsonObject.getJSONArray("dayTaskList")) {JSONObject jsonObjectSingle = (JSONObject) object;//新建的基礎資料的單據體是沒有任何分錄的,要增加新的分錄使用addNewDynamicObject dynamicObjectEntry = dynamicObjectCollection.addNew();//設置單據體中的數據值dynamicObjectEntry.set("abq2_task_context", ……);dynamicObjectEntry.set("abq2_expect_minute", ……);dynamicObjectEntry.set("abq2_diff", ……);}
保存新建數據
新建的數據并不是newDynamicObject之后就已經保存了,要將其保存為一個實體,要進行一下操作:
SaveServiceHelper.saveOperate("abq2_schedule_form", new DynamicObject[] {dynamicObject}, null);
?第一個參數是基礎資料/單據的標識,第二個參數是要保存的新實體的數組
修改數據
有時候,由于一些業務,我們經常要改動數據,比如一門課程的已選人數,在有人選課時,會多加一。便要對實體進行修改操作:
//load的操作省略,activity是實體的對象
activity.set("abq2_integerfield1",activity.getInt("abq2_integerfield1") + 1);
SaveServiceHelper.update(activity);
參數就是實體的對象。
刪除數據
刪除操作如下:
DeleteServiceHelper.delete("abq2_my_course",new QFilter[]{new QFilter("abq2_my_course_stu", QCP.equals,Long.valueOf(primaryKeyValue2))});
建議使用這個方式刪除數據,第一個參數是基礎資料/單據的標識,在QFilter數組中,滿足指定過濾的對應實體都會刪除。
最基本的單據/基礎資料的操作就是這些,當然插件的知識點還有非常非常多,還有很多好玩的插件,等我這個專欄的更新會慢慢帶給大家。