我们在开发ERP单据的时候,一个有规则自定义的单据编号是需要的,所以今天我们来讲讲在jeecgboot中如何增加自定义有自己规则的单据编号。
下面就以销售出库单据的编号为例:
1、首先根据jeecgboot单据编号规则,我们建立一个继承自IFillRuleHandler的类
如下代码:
/** * 填值规则:生成销售出库单号 * */ public class SaleOutNumberRule implements IFillRuleHandler { @Override public Object execute(JSONObject params, JSONObject formData) { String prefix = "XSCK"; //订单前缀默认为XSCK 如果规则参数不为空,则取自定义前缀 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; } }
上面设置了前缀为XSCK
2、在在线开发里的系统编码规则里增加一条记录如下
对应的实现类就是上面的
3、在生成的销售出库单前端代码里ErpSaleOutForm.vue增加如下内容:
import { getAction, putAction } from '@/api/manage' const ruleBaseURL = '/sys/fillRule/executeRuleByCode/' url: { add: "/sale/erpSaleOut/add", edit: "/sale/erpSaleOut/edit", queryById: "/sale/erpSaleOut/queryById", erpSaleOutDetail: { list: '/sale/erpSaleOut/queryErpSaleOutDetailByMainId' }, rule: { orderCode: ruleBaseURL + 'sale_out_no' }, } getOrderCode() { putAction(this.url.rule.orderCode, this.model).then(res => { // 执行成功,获取返回的订单编号值,并赋到页面上 if (res.success) { this.model.code = res.result } }) }, addBefore(){ this.erpSaleOutDetailTable.dataSource=[] this.getOrderCode() },
4、效果图