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

加载本页面数据

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 函数高级——函数的占位参数

C中函数的形参列表里可以有占位参数&#xff0c;用来做占位&#xff0c;调用函数时必须填补改位置 语法&#xff1a; 返回值类型 函数名&#xff08;数据类型&#xff09;{ } 在现阶段函数的占位参数存在意义不大&#xff0c;但是后面的课程中会用到该技术 示例&#xff1a;…

STM32快速复习(八)SPI通信

文章目录 前言一、SPI是什么&#xff1f;SPI的硬件电路&#xff1f;SPI发送的时序&#xff1f;二、库函数二、库函数示例代码总结 前言 SPI和IIC通信算是我在大学和面试中用的最多&#xff0c;问的最多的通信协议 IIC问到了&#xff0c;一般SPI也一定会问到。 SPI相对于IIC多了…

heml之样式布局技巧博客

在编写关于 HEML&#xff08;HTML CSS JavaScript&#xff09;的样式布局技巧博客时&#xff0c;可以涵盖很多不同的方面 1. 响应式设计 介绍媒体查询&#xff08;Media Queries&#xff09;以及如何根据设备尺寸调整样式。使用百分比宽度、视口单位&#xff08;vw、vh&…

含并行连结的网络

一、Inception块 1、白色部分通过降低通道数来控制模型复杂度&#xff0c;蓝色做特征提取工作&#xff0c;每条路上的通道数可能不同&#xff0c;大概我们会把更重要的那部分特征分配更多的通道数 2、Inception只改变高宽&#xff0c;不改变通道数 3、在不同的情况下需要选择…

pin是什么?管脚

1.平面分割 1)启动Allegro PCB design &#xff0c;打开.brd。深色部分属于一个net&#xff0c;要做一下修改&#xff0c;将上面的pin包含进shape中&#xff0c;i进行a&#xff0c;b两步操作&#xff0c;删除以前存在的Anti Etch下的line&#xff0c;再将其进行补齐 使它保住上…

【帧中继实验-ensp】

实验要求 在R1上开启一个点对点子接口&#xff0c;用于连接 R1–R2&#xff0c;两端IP地址为12.1.1.x 。开启一个多点子接口 &#xff0c;用于连接R1–R3&#xff0c;R4&#xff0c;两段IP地址为134.1.1.x。 具体DLCI分配和映射关系如下&#xff1a; R1 102 R2 201—动态映射…

python获取海康威视所有摄像头的OSD通道名称

读取IP地址的txt文档 根据IP地址获取监控摄像头的OSD通道名称 # codingutf-8 import os import time import requests from requests.auth import HTTPBasicAuth, HTTPDigestAuth import xml.etree.ElementTree as ET #注意&#xff1a;和ip.txt放在一个文件夹&#xff0c;会生…

论文略读:Can Long-Context Language Models Subsume Retrieval, RAG, SQL, and More?

202406 arxiv 1 intro 传统上&#xff0c;复杂的AI任务需要多个专门系统协作完成。 这类系统通常需要独立的模块来进行信息检索、问答和数据库查询等任务大模型时代&#xff0c;尤其是上下文语言模型&#xff08;LCLM&#xff09;时代&#xff0c;上述问题可以“一体化”完成…

【程序大侠传】大表分库分表切换数据库类型导致pagehelper生成sql语法报错

前序 代码剑宗等级分明&#xff0c;其门下弟子等级划分如下&#xff1a; 入门弟子 刚刚拜入代码剑宗&#xff0c;学习基础编程语言和基本剑法&#xff08;语法和基础概念&#xff09;。他们的代码还显得生涩&#xff0c;但已经开始展现出对优雅代码的追求。 江湖小虾 初步掌握…

《python程序语言设计》2018版第5章第53题利用turtle绘制sin和cos函数 sin蓝色,cos红色和52题类似

直接上题和代码 5.53 &#xff08;Turtle&#xff1a;绘制sin和cos函数&#xff09;编写程序绘制蓝色的sin函数和红色的cos函数。 代码和结果 turtle.speed(10) turtle.penup() # sin 用蓝色 turtle.color("blue") #这道题和上道题一样&#xff0c;先把turtle放到起始…

架构面试-数据库优化问题

文章目录 如何定位慢查询1. 开启慢查询日志MySQL示例&#xff1a;PostgreSQL示例&#xff1a; 2. 分析慢查询日志MySQL&#xff1a;PostgreSQL&#xff1a; 3. 使用数据库性能工具MySQL&#xff1a;PostgreSQL&#xff1a; 4. 优化慢查询5. 监控与持续优化 sql语句执行的很慢&a…

从0到1制作单只鳌虾运动轨迹追踪软件

前言 需要准备windows10操作系统&#xff0c;python3.11.9&#xff0c;cuDNN8.9.2.26&#xff0c;CUDA11.8&#xff0c;paddleDetection2.7 流程&#xff1a; 准备数据集-澳洲鳌虾VOC数据集 基于RT-DETR目标检测模型训练导出onnx模型进行python部署平滑滤波处理视频帧保留的…

简介时间复杂度

好了&#xff0c;今天我们来了解一下&#xff0c;我们在做练习题中常出现的一个名词。时间复杂度。我相信大家如果有在练习过题目的话。对这个名词应该都不陌生吧。但是可能很少的去思考它是干什么的代表的什么意思。反正我以前练习的时候就是这样。我只知道有这么一个名词在题…

【全面讲解下iPhone新机官网验机流程】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

MybatisPlus实现插入/修改数据自动设置时间

引言 插入数据时自动设置当前时间&#xff0c;更新数据时自动修改日期为修改时的日期。 使用MybatisPlus的扩展接口MetaObjectHandler 步骤 实现接口 实体类加注解 实现接口 package com.example.vueelementson.common;import com.baomidou.mybatisplus.core.handlers.M…

C++ 模版进阶

目录 前言 1. 非类型模版参数 1.1 概念与讲解 1.2 array容器 2. 模版的特化 2.1 概念 2.2 函数模版特化 2.3 类模版特化 2.3.1 全特化 2.3.2 偏特化 3.模版的编译分离 3.1 什么是分离编译 3.2 模版的分离编译 3.3 解决方法 4. 模版总结 总结 前言 本篇文章主要…

包/final/权限修饰符/代码块

包package 1、包的作用 包用来管理不同的类。 2、包名 包名要全部小写&#xff0c;一般是域名反写&#xff0c;如com.liu。在Java中&#xff0c;java解释器会将package中的.解释为目录分隔符/&#xff0c;也就是说该文件的目录结构为&#xff1a;...com/liu/... 3、全类名…

1.pwn的汇编基础(提及第一个溢出:整数溢出)

汇编掌握程度 能看懂就行&#xff0c;绝大多数情况不需要真正的编程(shellcode题除外) 其实有时候也不需要读汇编&#xff0c;ida F5 通常都是分析gadget&#xff0c;知道怎么用&#xff0c; 调试程序也不需要分析每一条汇编指令&#xff0c;单步执行然后查看寄存器状态即可 但…

Text2SQL提问中包括时间的实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

实现多数相加,但是传的参不固定

一、情景 一般实现的加法和减法等简单的相加减函数的话。一般都是写好固定传的参数。比如&#xff1a; function add(a,b) {return a b;} 这是固定的传入俩个&#xff0c;如果是三个呢&#xff0c;有人说当然好办&#xff01; 这样写不就行了&#xff01; function add(a…