例子:
生成訂單編號為 公司代碼+日期+序列號
下面開始操作:
1.系統管理-編碼規則

2.新建一個
段類型說明
- 序列:利用redis實現的自增序列,需要設置序列位數與開始值,可以設置重置頻率(每年,每季度,每月),在指定周期內會重置序列。
索引更新步長
為數據庫更新周期,默認為100,即序列每自增100會將序列同步到數據庫;
當前值
為序列在當前數據庫更新周期的最大值,可以反應當前序列范圍:比如當前值是1200、序列更細步長為100,那么此時序列范圍是1100-1200
-
常數:一個固定的字符串
-
變量:動態參數,使用freemaker替換變量,${xxx}形式
-
日期: 根據日期掩碼拼接指定格式的日期
-
UUID: 生成一段32位長度的UUID

3.前台寫的gird里面增加一個公司的lov

js代碼:
{ field: "companyCode", title: '<@spring.message "order.companycode"/>', width: 120, template: function(dataItem) { return dataItem['LOV_COMPANY'] || '' }, editor: function(container, options) { $('<input required name="' + options.field + '"/>') .appendTo(container) .kendoLov({ //三個必須參數:code、contextPath、locale,其他參數 根據實際情況自行設置 code:"LOV_COMPANY", contextPath:'${base.contextPath}', locale:'${base.locale}', textField: 'LOV_COMPANY', select: function(e) { options.model.set('description', e.item.roleDescription); }, model: options.model }); }
4.后台改寫 insert方法,在原有的增加基礎上生成訂單編碼
調用說明:
在service中注入ICodeRuleProcessService:
@Service @Transactional(rollbackFor = Exception.class) public class OrderServiceImpl extends BaseServiceImpl<Order> implements IOrderService{ @Autowired ISysCodeRuleProcessService codeRuleProcessService; @Autowired private IOrderService orderService; @Override public List<Order> myBatchUpdate(IRequest iRequest, List<Order> orders) { if (orders != null && !orders.isEmpty()){ for (Order order: orders) { Map<String,String> map = new HashMap<>(); String companyCode = order.getCompanyCode(); map.put("var",companyCode); try { String demo = codeRuleProcessService.getRuleCode("demo", map); System.out.print(demo); order.setOrderCode(codeRuleProcessService.getRuleCode("demo",map)); } catch (CodeRuleException e) { e.printStackTrace(); } orderService.insertSelective(iRequest,order); } } return orders; } }
5.結果

6.萬年神坑!無力吐槽!
編碼規則上,報錯,請求參數中ToKen不存在!

發生原因,HAP框架BUG,解決方案,升級框架!

在上圖所示的地方,更改里面的值,就會更新框架。
更新框架一定要重新初始化數據庫!