致远OA实施中,使用groovy自定义函数实现客户需求-跨明细表校验

致远OA表单开发:用Groovy脚本实现明细表跨行取值与金额累计 在企业管理软件和OA系统的表单开发中,处理明细表格数据是常见需求,尤其是涉及费用报销、预算编制等场景时,经常需要实现行间数据引用与动态计算,例如计算累计金额。这本质上是一个数据处理与业务逻辑自动化的问题。其技术原理在于,通过脚本语言(如Groovy)访问和操作表单的底层数据模型,实现跨行数据的精准定位与获取。这项技术的核心价值在于,能够突破标准表单公式只能进行单元格内或固定范围计算的限制,实现类似Excel中相对引用的动态计算能力,从而极大提升复杂业务表单的自动化水平和用户体验。在致远OA等平台中,通过编写 阅读详情

今天继续分享在致远oa中,使用自定义函数实现客户的需求,这期着重于分享明细表之间的对应关系校验。

上期说过,很多明细表校验都会用到明细表去重拼接自定义函数来统计明细数据,作为参数做校验使用,大家可以打开上期文章回顾一下。具体代码就不放这了。

直接上案例:

明细表一:

根据名称汇总后得到明细表二:

两个明细表分别在主表上做去重拼接:

明细表二中的数据是否存在于明细表一

很多小伙伴在实施过程中可能会遇到这种场景:“ 我可以填写第一个明细表内容,你帮我汇总到明细表二中,产生对应关系。但是,如果我发现某行数据有误或者领导打回了,你得让我能去删除某条数据而不是重做表单。”

那如果我两个明细表都让你可以删除数据,万一只在明细一里删了,明细二里忘记删了咋整!那数据就对应不上了啊!

于是有了这个函数。我们先来分析两个明细表汇总后的结果

物料明细拼接(明细表一):A、B、C

汇总明细拼接(明细表二):A、B、C

这俩都是文本字段,如果要校验两个明细数据是否一一对应,就必须得轮询遍历明细表二中的每一项是否在明细表一中存在。

(为什么不能直接明细表一拼接 == 明细表二拼接呢?在这个例子中当然可以这么做,但如果你的用户业务比较发散,用户手动调整明细行顺序,比如明细表二调整了二三行顺序,拼接后数据就成了A、C、B,那这直接算就会出现不相等的问题。)

def baojianpinjie = param[0];   //参数一
def baoJian = param[1];         //参数二
if (baoJian == '、' &&  baojianpinjie=='') {
    return 1;
}
def baojianpinjieArray = baojianpinjie.split("、");
def baoJianArray = baoJian.split("、");

boolean allExist = true;
def notFoundList = [];

for (def baojianpinjieItem : baojianpinjieArray) {
    boolean found = false;
    for (def baoJianItem : baoJianArray) {
        if (baoJianItem.trim().equals(baojianpinjieItem.trim())) {
            found = true;
            break;
        }
    }
    if (!found) {
        notFoundList.add(baojianpinjieItem.trim());
        allExist = false;
    }
}

if (allExist) {
    return 1; 
} else {
    return notFoundList.join("、");
}

原理是将两个字符串按顿号拆分成两个列表,再用双重for循环遍历两个列表中的数据。如果匹配不到,将这个匹配不到的元素加到一个新定义的字符串上。如果都匹配上则返回1,否则返回这个新字符串。然后就能做校验了:如果结果不为1,则将结果输出提示。

输出结果:

校验的是参数一都存在于参数 二 ,如果都存在,则返回1,如果有不存在的数据,则逗号拼接后返回。例如:

明细表一:

明细表二

则结果为:

其中一定要注意参数的顺序,参数顺序是(明细表一拼接,明细表二拼接)则校验的是明细表二多于明细表一的数据,反之交换参数顺序(明细表二拼接,明细表一拼接)则校验明细表一多余明细表二的数据。

   这个功能一般是两个明细表相互校验, 如果要反向校验明细表一数据是否存在明细表二,只需要把代码复制一遍,改一下参数顺序即可。注意一定要捋清楚是校验的哪个明细表存在于哪个明细表,小编当时捋这个脑子都捋乱了。

这期就分享这一个代码,就我自己看来应该还算比较实用的功能。手上还有好几个函数等待分享,觉得有帮助就多多点赞关注嗷。大家如果有解决不了的问题也可以联系我哦!!

啰嗦一句,作为一个没接触致远底层的实施,小编现在也没搞明白致远自定义函数为什么不能重载,每次做相同的脚本代码,参数换了都得重新取名重新审核。有没有致远内部的研发老师或者了解的老师,看到这里能给解答一下😀😀😀

避开致远OA表单设计大坑:跨明细表数据校验的两种高效方案对比 本文深入探讨致远OA系统中跨明细表数据校验的两种高效方案:Groovy脚本与混合校验架构。通过对比分析其实现逻辑、性能表现及适用场景,帮助管理员解决表单设计中的重复判断难题,提升业务数据处理效率与准确性。 阅读详情

相关推荐

别再手动查重了!用Groovy脚本搞定致远OA表单明细表间人员重复判断

本文介绍了如何使用Groovy脚本在致远OA系统中实现表单明细表间人员重复判断的自动化查重。通过详细的脚本实现和逐行解析,帮助管理员和业务顾问高效解决手动查重耗时耗力的问题,提升工作效率。适用于培训管理、招聘管理等多种场景。

weixin_30435261的博客 625

致远个性化之--表单中不同明细表的数据比对需求

基于致远表单的不同明细表,相关字段的数据匹配校验,实现业务规则控件与要求。

一本正经学技术 2076

致远OA表单开发实战:用Groovy脚本搞定明细表间人员查重(附完整代码)

本文详细介绍了在致远OA表单开发中,如何利用Groovy脚本实现跨明细表人员查重功能。通过实战案例和完整代码,帮助开发者高效解决培训管理系统中的重复录入问题,提升数据准确性。文章涵盖业务场景分析、核心算法设计、多场景适配及性能优化等关键内容,特别适合需要处理复杂表单校验的企业开发者。

weixin_30520015的博客 626

致远OA表单自定义函数(明细表字符串拼接)

需求背景 在部门人员表中,明细表包含了当前部门所有的人员,需要将明细表“姓名”一列的值进行拼接,并用顿号分隔后显示在主表“部门人员”文本域控件中。 代码分享 String tmp0 = param[0];return tmp0.replace('[', '').replace(']', '').replace(', ', '、').trim(); 操作设置 效果展示 说明:将明细表的姓名拼接到部门人员这里了 以上就是致远OA表单的分享,脚本用的语言是gro...

致远OA的博客 2488

致远OA-Groovy脚本-自定义函数编写-增删改查示例

致远OA-Groovy脚本-自定义函数编写-增删改查示例

889

别再手动查重了!用Groovy脚本搞定致远OA表单明细表间人员查重(附完整代码)

本文介绍了如何利用Groovy脚本在致远OA系统中实现表单明细表间人员查重的自动化处理,大幅提升工作效率。通过详细的代码示例和应用场景分析,帮助用户快速掌握跨表校验、复合字段比对等核心技术,解决手工查重耗时耗力的问题。特别适合HR、行政等需要频繁处理人员名单的岗位。

weixin_30216561的博客 480

致远个性化之--明细表数据重复判断,并显示重复数据

需求 有业务需求,想实现明细表的数据重复提示以及显示是哪些数据重复; 实现 1、明细表数据重复提示 明细表的数据重复提示,致远表单自带有明细表公式,可以直接进行校验以及提示;如下图: 点击表单的校验规则,在弹出窗口中点击公式框,打开公式选择配置界面; 选择右侧的更多公式,然后选择要校验的明细表字段,再点击公式名称【明细表列不重】,依次点击确认即可。 返回到校验规则窗口,在提示框中输入要提示的信息,再次点击确定。 明细表的数据重复提示校验就OK了。 2、重复数据显示 使用自定义函数,编写重复数据判断规则

一本正经学技术 2118

致远OA表单开发:用Groovy脚本实现明细行累计金额计算

在协同办公(OA)系统的表单开发中,处理明细行数据的动态计算是常见的业务需求,例如费用报销、预算编制等场景下的梯级累计。其核心原理在于通过脚本语言操作表单数据模型,实现对特定行数据的访问与计算。这项技术的价值在于,它能够将复杂的业务逻辑在前端实时、直观地呈现,极大提升了数据处理的效率和用户体验,避免了依赖后端二次开发或繁琐的手工核算。具体到致远OA平台,其表单引擎支持通过Groovy脚本语言,利用内置的form对象获取明细表数据列表,并通过遍历、排序和条件判断,实现如“当前行累计金额等于本行金额加上一行累计

weixin_34121282的博客 433

致远OA表单自定义函数(明细表去重拼接)

需求背景 昨天,接到一个十万火急的电话,工程师在电话中痛诉最近被明细表计算给逼疯了,刚解决取指定明细行值的需求,现在又有明细表计算需求:有一张月加班费用申报表,明细表中记录了员工每天的加班情况,需要在主表中显示本月所有加班人员的名称,且人员名称不能重复。 反应快的小伙伴马上就想到了本表汇总,通过新增汇总表就可以实现人名的去重。 对的,这个办法确实可用,和小编当时想到的方案一样。可是工程师兄弟不买账,希望能给一个操作简单的方案。有什么办法可以一步到位呢? ...

致远OA的博客 4031

致远OA表单开发小技巧:一个Groovy函数搞定明细表数据的‘分组统计’与‘字符串拼接’

本文详细介绍了在致远OA表单开发中,如何利用Groovy脚本实现明细表数据的智能聚合,包括分组统计和字符串拼接功能。通过实战案例和代码解析,展示了如何高效处理大量数据,提升表单开发的自动化和灵活性,特别适用于人力资源排班等复杂业务场景。

weixin_30437847的博客 863

致远OA表单自定义函数实战:跨明细表人员查重与数据校验

本文详细介绍了在致远OA系统中使用自定义函数实现跨明细表人员查重与数据校验的实战方法。通过Groovy脚本编写,解决多个明细表间数据重复问题,确保业务数据逻辑一致性,适用于培训管理、物资管理等多种场景。

weixin_26985923的博客 396

致远OA表单自定义函数(明细表字符串拼接换行显示 )

需求背景 有时客户的需求比较难,有时客户的需求比较特殊,为了实现需求我们通常绞尽脑汁,服务好客户就是我们的宗旨。(例如:字符串如何换行显示?) 要实现这个需求不难,grovy中有转义符\n可实现换行。下面就直接拿上上期的案例来演示这个换行效果了。 代码分享 String tmp1 = param[0]; return tmp1.replace('[', '').replace(']', '').replace(', ', "\n").tr...

致远OA的博客 2355

致远OA表单动态权限控制:基于自定义函数的智能日期校验

本文详细介绍了致远OA系统中基于自定义函数的智能日期校验方法,解决表单动态权限控制中的当月天数计算问题。通过Groovy脚本实现闰年判断和日期适配,提升考勤表等场景的数据准确性,避免手动维护的繁琐。方案具有强复用性和易维护性,适用于合同管理、项目计划等多个业务场景。

weixin_42528780的博客 414

致远OA实施中,使用groovy自定义函数实现客户需求(一)

文分享了在致远OA系统中使用自定义函数解决表单开发中的5个典型需求:1)提取文本中的数字到数字控件;2)去除网页复制的零宽非连接符;3)判断文本语言类型(中/英文);4)明细表字段去重拼接;5)校验明细表字段非空(含防空格处理)。

ho_t_potato的博客 477

致远OA表单开发实战:用Groovy脚本搞定跨明细表的重复人员校验

本文详细介绍了在致远OA系统中使用Groovy脚本实现跨明细表人员重复校验的实战方法。通过数据预处理、核心校验算法和性能优化策略,解决了表单开发中常见的重复人员判断问题,适用于培训管理、会议系统等多种业务场景,显著提升数据准确性和系统响应速度。

weixin_28700411的博客 337

别再手动汇总了!用Groovy脚本实现致远OA表单明细表的智能分类拼接

本文介绍了如何利用Groovy脚本在致远OA表单中实现明细表的智能分类拼接,提升办公效率。通过5个实战技巧,包括字符串处理、智能分类实现、高级健壮性处理和多场景应用,帮助用户告别手工统计,自动完成数据分类与汇总。特别适合需要频繁处理表单数据的行政和财务人员。

weixin_30887919的博客 390

致远OA实施中,使用groovy自定义函数实现客户需求-时间校验

本文针对致远表单绘制工具中时间计算功能的不足,通过自定义函数提供了两种实用解决方案:一是校验明细表中同一员工的日期时间段是否重叠,避免重复上报;二是精确计算两个日期时间之间的小时差,满足特殊业务规则。文章详细说明了参数类型识别、Groovy代码实现、函数调用方法及实际效果验证,为开发者提供了可直接复用的代码示例。在表单绘制工具中,对于时间的计算公式致远只提供了日期差和日期时间差,可以算出两个时间中间的差额。但对于时间,需要校验的场景和计算的情况很多,会存在系统校验无法满足的情况。

ho_t_potato的博客 482

Claude Code长期记忆:优雅的上下文管理

ClaudeCode的上下文管理系统采用三层架构设计,通过智能压缩和优化策略在记忆容量与性能间取得平衡。系统包含短期记忆(高速工作区)、中期记忆(智能蒸馏器)和长期记忆(持久化知识库)。当Token使用率达到92%阈值时启动wU2压缩器,采用8段式结构化摘要保留关键信息,并配合智能文件恢复和渐进式预警机制。该系统通过分层处理、优雅降级和透明化交互,为AI应用提供了高效可靠的上下文管理方案,展现了在有限资源下实现智能记忆的艺术。

m0_53117338的博客 3815

致远OA表单自定义函数(明细表间重复判断 )

需求背景 一个伙伴顾问的需求:客户有一个培训记录表,需要避免参训人员和未参训人员这两个明细表中出现重复。 分析了这个需求后,小编发现目前标准的计算公式无法实现跨表计算,那么只能通过自定义函数来解决。 实现思路:将参与人员编号拼接后的值转换为数组,每一个值分别判断是否包含在未参训人员明细表中,若包含则返回“重复”,所有不包含则返回“不重复”。 代码分享 def data = param[0]; String res = ""; res=...

致远OA的博客 3832

两轮差速移动机器人运动分析、建模和控制

两轮差速运动分析及建模运动学分析三种运动状态分析函数模型仿真验证直线验证曲线验证旋转验证运动控制 运动学分析 运动特性为两轮差速驱动,其底部后方两个同构驱动轮的转动为其提供动力,前方的随动轮起支撑作用并不推动其运动,如图1两轮差速驱动示意图所示。 定义其左右驱动轮的中心分别为Wl和Wr,且对应线速度为Vl和Vr,该值可以通过电机驱动接口输出的角转速ωl,ωr2和驱动轮半径r求得,即: Vl=r⋅...

启小新的博客 8万+

新能源知识库(68)复叠压缩式热泵蒸汽系统介绍

复叠压缩式热泵蒸汽系统通过多级压缩技术将低品位热能转化为高品位蒸汽,在汽车电镀场景中实现了高效、精准的能源利用。随着超高温工质与智能联供系统的发展,该技术将深度赋能电镀行业的高质量可持续发展。​:±1℃控温保障镀层均匀性,提升产品良率;多台复叠热泵+储热装置(如纺织厂6台热泵)复叠热泵+余热回收+智能控制(化工厂案例)​:无燃烧设计契合汽车行业ESG目标。单台高温热泵机组(如92P型号)复叠压缩式热泵蒸汽系统以。67.4万元(↓22%)600万–1200万元。事故率 ↓90%​​。150万–600万元。

竹君子之家 1420
上一篇: 致远OA实施中,使用groovy自定义函数实现客户需求(一)
下一篇: 致远OA实施中,使用groovy自定义函数实现客户需求-时间校验
安详。
博客等级 码龄5年 29粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值