润乾报表流水号生成随机id

业务背景:

用户通过行式填报表往数据库中录入数据,做数据库插入操作时要根据主键字段进行操作,主键字段的值可以通过润乾的流水号生成,例如做自增长等操作,但这种情况可能会出现一个问题,当多个客户同时对一张表做插入操作时,有可能在页面上通过流水号生成主键和其他人生成的流水号重复,导致在插入数据时报错。

解决办法:

润乾流水号除了自增长以外,支持通过引用javascript函数进行动态返回流水号,这样就可以通过js函数返回一个随机数,该随机数长度可设置较长,这样就能避免主键重复错误的发生。

(1)首先在显示报表的jsp页面中定义js函数:

function randomChar(length)  {  

length = length || 32;  

var source = "abcdefghzklmnopqrstuvwxyz1234567890";  

//生成的随机数从该字符串中进行动态截取字符

var random = "";  

for(var i = 0;i < length; i++)  {  

random += source.charAt(Math.ceil(Math.random()*100000000)%source.length);  

}  

return random;  

}

 

此函数传入一个参数,该参数为整数,用于设置生成的随机数的长度。

(2)接下来制作报表时在流水号处引用该函数即可。

表达式:randomChar(32)

该表达式表示该单元格动态返回32位随机数 

这样就能避免多个用户同时通过一张填报表填写数据时主键重复问题。

 

 

下面是成功通过测试的JS函数

<html>
<head>
<script type="text/javascript">

   function test(){
  alert("你好!");
  return false;
 };


 function randomChar(length)  { 
    length = length || 64; 
    var source = "abcdefghzklmnopqrstuvwxyz1234567890"; 
    var random = ""; 
  for(var i = 0;i < length; i++)  { 
   random += source.charAt(Math.ceil(Math.random()*100000000)%source.length); 
  } 
  alert(random);
  return random; 
  };

</script>

</head>

<body>

<input type="button" value="button" onclick="test()"><br />
<input type="button" value="button2" onclick="randomChar(64)">

</body>
</html>

 

 

 

 

原文地址:https://www.cnblogs.com/avivaye/p/2851328.html