金蝶云苍穹-插件开发(二)新建、更新、删除数据

加载本页面数据

关于加载数据,还要多补充一个点,如果要加载一个基础资料/单据界面中正在操作的界面,比如要获取刚填写好的字段值,就要获取当前界面的模型层,再获取具体数据。具体操作如下:

//获取日任务信息,并且以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;
                //新建的基础资料的单据体是没有任何分录的,要增加新的分录使用addNew
                DynamicObject 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数组中,满足指定过滤的对应实体都会删除。

最基本的单据/基础资料的操作就是这些,当然插件的知识点还有非常非常多,还有很多好玩的插件,等我这个专栏的更新会慢慢带给大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会敲代码的熊mao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值