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

需求

有业务需求,想实现明细表的数据重复提示以及显示是哪些数据重复;

实现

1、明细表数据重复提示

明细表的数据重复提示,致远表单自带有明细表公式,可以直接进行校验以及提示;如下图:
明细表校验公式
点击表单的校验规则,在弹出窗口中点击公式框,打开公式选择配置界面;
选择右侧的更多公式,然后选择要校验的明细表字段,再点击公式名称【明细表列不重】,依次点击确认即可。
返回到校验规则窗口,在提示框中输入要提示的信息,再次点击确定。
明细表的数据重复提示校验就OK了。

2、重复数据显示

操作实现步骤如下:

2.1、设计表单

表单设计样式如下:
表单样式设计图
其中重复数据即为显示明细表中重复的数据内容;

2.2、设置自定义函数

使用自定义函数,编写重复数据判断规则,公式代码如下:

def haveRepetArray=param[0];
def findRepetition=[:];   //找到重复的,重复的map值大于1,不重复的值等于1
def repetitionRes=[];     //重复的结果
def noRepetitionRes=[];   //不重复的结果
def arrElemIndex=[];      //得到重复元素的下标
def mapElemIndex=[:];     //通过键值的方式存储重复元素
haveRepetArray.each{a->
  if(findRepetition[a] == null){      //如果这个map里没有这个键的时候就给值1
    findRepetition[a]=1
  } else{
    findRepetition[a]=findRepetition[a]+1
 }
}
findRepetition.each{m->
  if (m.value>1) {      //遍历如果这个map键的值大于1说明就是重复的把它放在一个数组里
    repetitionRes += m.key
  }else{                //如果不是重复的把它放在另一个数组里
    noRepetitionRes += m.key
  }
}

repetitionRes.each{entry ->   //遍历重复的数组
  def tempArr=[];
  haveRepetArray.eachWithIndex {r,j ->    //遍历原始数组
    if (entry==r) {       //如果重复数组里的值等于原始数组里的值,就把这个元素的索引放到一个新数组里
      j++
      tempArr += j        //只取原始数组的索引
    }
  }

  mapElemIndex[entry]=tempArr     //以键值对的方式存储数组
  arrElemIndex<<tempArr           //添加到一个新数组
}
def endRes=mapElemIndex.toString();
endRes=endRes.substring(1,endRes.length()-1).replace("], ","]\n");
return endRes.equals(":")?"":endRes;

通过应用设计师打开表单,并进入表单编辑状态,选中【重复数据】字段,并点击右侧的计算公式,注意,【重复数据】字段类型为文本域,字段长度建议根据情况设置高一点,毕竟可能是要整合明细表的多行内容。 在打开的计算公式设置窗口中,找到自定义函数,打开并新建;如下图:
自定义函数设置
如上图步骤设置好自定义函数后,依次点击保存、确定等操作。最后再保存表单编辑状态,关闭表单编辑。

2.3、后台审核

由于系统的安全机制,在定义好自定义函数后,需要使用system账号审核一下,菜单位置在:【安全管理】-【安全审计】-【CAP自定义函数审核】,找到刚刚新建的自定义函数,选中后,点击审核并通过确定即可。

3、效果确认

完成以上操作后,打开刚做的流程表单,然后输入相关内容,进行数据测试。
如果表单设计的有业务关系,这里不影响计算结果,如下图:
重复数据显示效果
表单校验规则效果

总结

1、自定义函数脚本使用groovy语言,与java类似,而且可以直接引用软件环境中的类(包名.类名);
2、基于表单定义的自定义函数,只能用此于表单,在别的表单也要引用时,需要重新定义自定义函数,同时也需要后台重新审核;
3、V8.0版本开始,表单中引入了公式组件,可以通过公式组件定义通用函数,再直接引用。公式组件通过单位管理员(默认为admin1)进行后台定义,同样也是使用groovy脚本语言。

如果各位有兴趣或者其他问题,可以深入交流,共同学习。
【记录于2021年9月27日】

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值