起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2004|回复: 5

[结贴] baas层生成不占位流水号

[复制链接]

54

主题

257

帖子

827

积分

高级会员

Rank: 4

积分
827
发表于 2017-12-25 13:10:50 | 显示全部楼层 |阅读模式
我想给一个字段,设置流水号默认值,格式为QQQ-yyyyMM-0001,后面四位自增,如何实现?
目前不用这个平台啦~~
发表于 2017-12-25 14:25:10 | 显示全部楼层
需要自己实现这个逻辑 , 一个字段存储 QQQ-yyyyMM-0001
在保存前,查找字段字符串 包含  like   QQQ-yyyyMM- 的  最大值,然后字符串截取后四位,转成数字递增,
字符串再拼接完整赋值保存即可!

可以在数据库中,设置这个字段不可重复,这样就可以保证连续 不重复 ,不间断了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

54

主题

257

帖子

827

积分

高级会员

Rank: 4

积分
827
 楼主| 发表于 2017-12-26 10:08:23 | 显示全部楼层
本帖最后由 BooleanChar 于 2017-12-26 10:15 编辑
liangyongfei 发表于 2017-12-25 14:25
需要自己实现这个逻辑 , 一个字段存储 QQQ-yyyyMM-0001
在保存前,查找字段字符串 包含  like   QQQ-yyyy ...

已解决解决方式如下
目前不用这个平台啦~~
回复 支持 反对

使用道具 举报

54

主题

257

帖子

827

积分

高级会员

Rank: 4

积分
827
 楼主| 发表于 2017-12-26 10:15:07 | 显示全部楼层
在js中,首先规定一个格式字符串:
  1. //取当前日期,并转换为规定格式的字符串
  2.                 var date = justep.Date.toString(new Date(), "yyyyMMdd");
  3.                 //将当前日期字符串和PAY拼接成一个新的字符串
  4.                 var key = "PAY" + date;
复制代码

向服务器端发送请求:
  1. //向服务端发送数据
  2. justep.Baas.sendRequest({
  3. //填写Java文件所在路径
  4. "url" : "/psd/proCC",
  5. //填写action名称
  6. "action" : "mNextSeqFormat",
  7. //异步
  8. "async" : false,
  9. //参数:json格式
  10. "params" : {key : key},
  11. //成功
  12. "success" : function(jobj) {
  13. debugger;
  14. paycode = jobj.seq
  15. alert(paycode);
  16. }
  17. });
复制代码


将参数传到baas层,
在baas层,自定义一个action,用于实现一个生成流水号的java方法:
  1. //生成規定格式的流水號
  2.         public static JSONObject mNextSeqFormat(JSONObject params, ActionContext context) throws java.sql.SQLException, NamingException {
  3.                 String key = params.getString("key");
  4.                 Connection conn = context.getConnection("PSDPT");
  5.                 String sql = "";
  6.                 //根據頁面傳過來的key值,查詢數據庫中是否有符合條件的V值
  7.                 sql = "select v from PSDX5USER.SA_KVSEQUENCE where k = '" + key + "' ";
  8.                 //執行sql
  9.                 Object obj = DataUtils.getValueBySQL(conn, sql, null);
  10.                 //判斷obj是否等於空,如果不等於空,那value=v,否則value=0
  11.                 String value = obj != null ? obj.toString() : "0";
  12.                 //判斷,如果value不等於0
  13.                 if (!value.equals("0")) {
  14.                         //說明數據庫中有值,則對數據庫中V進行V+1的修改
  15.                         sql = "update PSDX5USER.SA_KVSEQUENCE set v = v+1 where k = '" + key + "'";
  16.                 } else {
  17.                         //否則,將插入一條新的記錄,k=key,v=1
  18.                         sql = "insert into PSDX5USER.SA_KVSEQUENCE (k,v) values('" + key + "', 1)";
  19.                 }
  20.                 //執行sql語句
  21.                 Statement st = conn.createStatement();
  22.                 st.executeUpdate(sql);

  23.                 conn.commit();
  24.                 //字符串格式化
  25.                 String str = String.format("%7d", Integer.parseInt(value)).replace(" ", "0");
  26.                
  27.                 JSONObject jobj = new JSONObject();
  28.                 jobj.put("seq", key + str);
  29.                 System.out.println(key + str);
  30.                 return jobj;
  31.         }
复制代码

在回调函数中,取到baas服务return回来的值,赋给对应关系

目前不用这个平台啦~~
回复 支持 反对

使用道具 举报

17

主题

64

帖子

164

积分

初级会员

Rank: 2

积分
164
QQ
发表于 2018-2-6 08:52:00 | 显示全部楼层
BooleanChar 发表于 2017-12-26 10:15
在js中,首先规定一个格式字符串:

向服务器端发送请求:

不错,我最近也碰到了这个问题,我的思路跟你的一模一样。只是查数据库和修改数据的操作不会,,气死了。
感谢楼主分享
回复 支持 反对

使用道具 举报

54

主题

257

帖子

827

积分

高级会员

Rank: 4

积分
827
 楼主| 发表于 2018-2-8 11:01:19 | 显示全部楼层
曹刚 发表于 2018-2-6 08:52
不错,我最近也碰到了这个问题,我的思路跟你的一模一样。只是查数据库和修改数据的操作不会,,气死了。 ...

一起学习 一起进步
目前不用这个平台啦~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-9-28 19:26 , Processed in 0.068314 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表