ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

致远OA实施中,使用groovy自定义函数实现客户需求-跨明细表校验 今天继续分享在致远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如果有不存在的数据则逗号拼接后返回。例如明细表一明细表二则结果为其中一定要注意参数的顺序参数顺序是明细表一拼接明细表二拼接则校验的是明细表二多于明细表一的数据反之交换参数顺序明细表二拼接明细表一拼接则校验明细表一多余明细表二的数据。这个功能一般是两个明细表相互校验 如果要反向校验明细表一数据是否存在明细表二只需要把代码复制一遍改一下参数顺序即可。注意一定要捋清楚是校验的哪个明细表存在于哪个明细表小编当时捋这个脑子都捋乱了。这期就分享这一个代码就我自己看来应该还算比较实用的功能。手上还有好几个函数等待分享觉得有帮助就多多点赞关注嗷。大家如果有解决不了的问题也可以联系我哦啰嗦一句作为一个没接触致远底层的实施小编现在也没搞明白致远自定义函数为什么不能重载每次做相同的脚本代码参数换了都得重新取名重新审核。有没有致远内部的研发老师或者了解的老师看到这里能给解答一下
返回列表