java按规则生成编码_填值规则(编码生成)

本文介绍了如何在Java中按规则生成编码,如订单号。首先,通过实现IFillRuleHandler接口创建自定义规则,例如生成包含时间戳和随机数的订单号。接着,在规则管理系统配置该规则。然后,通过指定的接口执行规则生成编码,支持单个和批量生成。此外,提供了JAVA、前端JS以及表单设计器中调用生成编码的方法示例。
摘要由CSDN通过智能技术生成

> 自动生成规则编码,比如: 订单号的生成,前缀+年月日时分秒 时间戳

如果创建一个规则实现?

* 第一步:实现接口 IFillRuleHandler

参考实例:

```

/**

* 填值规则Demo:生成订单号

* 【测试示例】

*/

public class OrderNumberRule implements IFillRuleHandler {

@Override

public Object execute(JSONObject params, JSONObject formData) {

String prefix = "CN";

//订单前缀默认为CN 如果规则参数不为空,则取自定义前缀

if (params != null) {

Object obj = params.get("prefix");

if (obj != null) prefix = obj.toString();

}

SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");

int random = RandomUtils.nextInt(90) + 10;

String value = prefix + format.format(new Date()) + random;

// 根据formData的值的不同,生成不同的订单号

String name = formData.getString("name");

if (!StringUtils.isEmpty(name)) {

value += name;

}

return value;

}

}

```

* 第二步:在规则管理里面配置

![](https://img.kancloud.cn/d6/ae/d6ae25b38d3e1bf51ae44f1b87fd23c8_978x513.png)

* 第三步:通过接口执行规则生成

参数:

ruleCode | 规则编码

formData | 表单数据JSON

接口URL: /sys/fillRule/executeRuleByCode/{ruleCode}

![](https://img.kancloud.cn/0c/5d/0c5d450c886376746b3b3d31c3c3c40f_801x256.png)

* 第四步:批量编码规则生成接口

/sys/fillRule/executeRuleByCode/executeRuleByCodeBatch

具体用法参考:

org.jeecg.modules.system.controller.SysFillRuleController#executeByRuleCodeBatch

![](https://img.kancloud.cn/07/50/0750994f53462800e816d79eb9277a39_757x461.png)

## 其他技巧

### JAVA代码里,如何直接调用生成编码?

~~~

* @param ruleCode 填值规则Code

* @param formData 表单参数

FillRuleUtil.executeRule(String ruleCode, JSONObject formData)

~~~

### 前端JS里如何调用生成编码?

可通过`put`请求调用后台填值规则接口来实现生成编码。

#### 示例

``` js

import { putAction } from '@api/manage'

const ruleBaseURL = '/sys/fillRule/executeRuleByCode/'

export default {

name: 'App',

data() {

return {

// 页面的数据

model: { orderNum: '' },

// 请求的url

url: {

rule: {

orderNum: ruleBaseURL + 'order_num_rule'

},

}

}

},

methods: {

getOrderNum() {

putAction(this.url.rule.orderNum, this.model).then(res => {

// 执行成功,获取返回的值,并赋到页面上

if (res.success) {

this.model.orderNum = res.result

}

})

}

}

}

```

### Online表单的JS增强里如何调用生成编码?

和前端JS里一样,可通过`putAction`方法来调用接口生成编码

### 表单设计器 JS 增强里如何调用生成编码?

可以通过`api.put()`方法实现获取填值规则的值,获取到之后再通过`api.setFormData()`方法赋到页面上。

api的使用方法可见 `表单设计器-->高级操作手册-->JS增强`文档

#### 示例

``` js

// 获取所有 form data

var formData = api.getFormData() || {}

// 请求后台的填值规则接口地址

var url = '/sys/fillRule/executeRuleByCode/'

var ruleCode = 'order_num_rule'

api.put(url + ruleCode, formData).then(res => {

// 执行成功,获取返回的值,并赋到页面上

if (res.success) {

var value = res.result

api.setFormData('orderNum', value)

}

})

```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值