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

加载本页面数据

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

//获取日任务信息,并且以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数组中,满足指定过滤的对应实体都会删除。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/780950.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python机器学习】模型评估与改进——多分类指标

多分类问题的所有指标基本是上都来自于二分类问题&#xff0c;但是要对所有类别进行平均。多分类的精度被定义为正确分类的样本所占的比例。同样&#xff0c;如果类别是不平衡的&#xff0c;精度并不是很好的评估度量。 想象一个三分类问题&#xff0c;其中85%的数据点属于类别…

Java(七)——多态

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

Go语言如何入门,有哪些书推荐?

Go 语言之所以如此受欢迎&#xff0c;其编译器功不可没。Go 语言的发展也得益于其编译速度够快。 对开发者来说&#xff0c;更快的编译速度意味着更短的反馈周期。大型的 Go 应用程序总是能在几秒钟之 内完成编译。而当使用 go run编译和执行小型的 Go 应用程序时&#xff0c;其…

VMware虚拟机搭建CentOS7环境

相关资料 安装VMware 双击VMware-workstation(16.1.1软件安装包.exe安装文件,点下一步 激活码文件复制激活码激活安装linux 1、点击创建虚拟机

Open3D 删除点云中重叠的点(方法一)

目录 一、概述 二、代码实现 三、实现效果 3.1原始点云 3.2处理后的点云 3.3计算结果 一、概述 在点云处理中&#xff0c;重叠点&#xff08;即重复点&#xff09;可能会对数据分析和处理的结果产生负面影响。因此&#xff0c;删除重叠点是点云预处理中常见且重要的步骤。…

【网络安全】实验一(网络拓扑环境的搭建)

一、本次实验的实验目的 学习利用 VMware 创建虚拟环境 学习利用 VMware 搭建各自网络拓扑环境 二、创建虚拟机 三、克隆虚拟机 选择克隆的系统必须处于关机状态。 方法一&#xff1a; 方法二&#xff1a; 需要修改克隆计算机的名字&#xff0c;避免产生冲突。 四、按照要求完…

机器学习原理之 -- 神经网络:由来及原理详解

神经网络&#xff08;Neural Networks&#xff09;是受生物神经系统启发而设计的一类计算模型&#xff0c;广泛应用于图像识别、语音识别、自然语言处理等领域。其基本思想是通过模拟人脑神经元的工作方式&#xff0c;实现对复杂数据的自动处理和分类。本文将详细介绍神经网络的…

Scrapy框架的基本使用教程

1、创建scrapy项目 首先在自己的跟目录文件下执行命令&#xff1a; PS D:\BCprogram\python_pro\bigdata> scrapy startproject theridion_grallatorscrapy startproject 项目名 具体执行操作如下&#xff1a;1、创建项目目录&#xff1a;Scrapy会在当前工作目录下创建一…

【python中级】图像从从笛卡尔坐标系转换为极坐标系

【python中级】图像从从笛卡尔坐标系转换为极坐标系 1.背景2.生成二维图3.极坐标转换1.背景 笛卡尔坐标系就是我们常说的直角坐标系。 笛卡尔坐标系,也称为直角坐标系,是由法国数学家和哲学家勒内笛卡尔(Ren Descartes)发明的一种二维或三维坐标系统。它使用两个或三个相互…

【Qt】Qt开发环境搭建

目录 一. Qt SDK的下载&安装 二. Qt相关工具介绍 Qt的常用开发工具有&#xff1a; Qt CreatorVisual StudioEclipse 一. Qt SDK的下载&安装 Qt 下载官网&#xff1a; http://download.qt.io/archive/qt/ 国内清华源: https://mirrors.tuna.tsinghua.edu.cn/qt/arc…

C# WinForm —— 37 TabControl 控件介绍

1. 简介 管理一个TabPages集合的控件&#xff0c;也是一个分组控件 如果一个模块有多个子页面&#xff0c;可以使用TabControl控件进行页面切换 2. 属性 属性解释(Name)控件ID&#xff0c;在代码里引用的时候会用到Enabled控件是否启用Alignment确定选项卡是否显示在控件的…

扩散模型笔记2

Ref:扩散模型的原理及实现&#xff08;Pytorch&#xff09; 在扩散模型中&#xff0c;每一步添加的噪声并不是完全一样的。具体来说&#xff0c;噪声的添加方式和量在每一步是根据特定的规则或公式变化的。这里我们详细解释每一步添加噪声的过程。 正向过程中的噪声添加&…

两种转5V的DCDC电路:

最大电流&#xff1a;5A 最大电流&#xff1a;3A 验证通过&#xff1a;RT8289GSP性能更佳&#xff0c;带载能力更强&#xff1a;

前端JS特效第22波:jQuery滑动手风琴内容切换特效

jQuery滑动手风琴内容切换特效&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xm…

Guitar Pro8.2让你的吉他弹奏如虎添翼!

亲爱的音乐爱好者们&#xff0c;今天我要跟大家安利一个让我彻底沉迷其中的神器——Guitar Pro8.2&#xff01;这可不是一般的软件&#xff0c;它简直是吉他手们的福音。不管你是初学者还是老鸟&#xff0c;这个打谱软件都能给你带来前所未有的便利和价值。 让我们来聊聊Guita…

昇思25天学习打卡营第9天|ResNet50图像分类

一、Resnet残差网络模型 构建残差网络结构;Building BlockBottleneck 残差结构由两个分支构成&#xff1a;一个主分支 &#x1d439;(&#x1d465;)&#xff0c;一个shortcuts&#xff08;图中弧线表示,&#x1d465;&#xff09;。 得到残差网络结构:&#x1d439;(&#x…

python根据父母身高预测儿子身高

题目 从键盘输入父母的升高&#xff0c;并使用eval()或float()转换输入的数据类型。计算公式&#xff1a;儿子身高&#xff08;父亲身高母亲身高&#xff09;*0.54. father_heighteval(input(请输入爸爸的身高&#xff1a;)) mother_heighteval(input(请输入妈妈的身高&#…

RAID 冗余磁盘阵列

RAID也是Linux操作系统中管理磁盘的一种方式。 只有Linux操作系统才支持LVM的磁盘管理方式。 而RAID是一种通用的管理磁盘的技术&#xff0c;使用于多种操作系统。 优势&#xff1a;提升数据的读写速度&#xff0c;提升数据的可靠性。具体实现哪什么功能&#xff0c;要看你所…

YOLOv8结合SAHI推理图像和视频

文章目录 前言视频效果必要环境一、完整代码二、运行方法1、 推理图像2、 推理视频 总结 前言 在上一篇文章中&#xff0c;我们深入探讨了如何通过结合YOLOv8和SAHI来增强小目标检测效果 &#xff0c;并计算了相关评估指标&#xff0c;虽然我们也展示了可视化功能&#xff0c;…

Open3D 点云的圆柱形邻域搜索

目录 一、概述 1.1原理 1.2应用 二、代码实现 2.1完整代码 2.2程序说明 三、实现效果 3.1原始点云 3.2搜索后点云 一、概述 1.1原理 圆柱邻域搜索的基本思想是确定点云中的哪些点位于给定圆柱的内部。一个圆柱可以由以下几个参数定义&#xff1a; 中心点&#xff1a;…