编码规则
百度已收录

编码规则包括编码生成规则和编码校验规则,编码生成规则用于生成固定规则的编码,比如发文号、订单号等,编码校验规则用于对控件值进行规则校验。

一、 编码生成规则

1、生成编码规则

生成编码规则首选需要实现接口,然后在自动编码模块配置实现类和编码。

1)、实现接口

编码规则接口:com.yuncheng.system.api.CodeRuleAPI

接口代码如下:

import com.alibaba.fastjson.JSONObject;

/**
 * 填值规则接口
 * 如需使用填值规则功能,规则实现类必须实现此接口
 */
public interface CodeRuleAPI {

    /**
     * @param params 页面配置固定参数
     * @param formData  动态表单参数
     * @return
     */
    public Object execute(JSONObject params, JSONObject formData);

}

参数说明:

【params】:编码规则配置模块维护的规则参数

【formData】:表单参数

返回值:编码值

示例代码如下:

import com.alibaba.fastjson.JSONObject;
import com.yuncheng.system.api.CodeRuleAPI;
import org.springframework.util.StringUtils;

/**
 * 发文号编码生成类
 */
public class PostNumRule implements CodeRuleAPI {
    @Override
    public Object execute(JSONObject params, JSONObject formData) {
        String year = params.getString("year");
        String fwh = formData.getString("fwh");
        if(StringUtils.isEmpty(fwh)){
            //查询历史发文号
            //省略查询代码....
            String oldFwh = "001";
            fwh = oldFwh;
        }
        return "XXX单位〔 "+year+"〕"+fwh+"号";
    }
}

2)、编码规则配置

位置:配置管理>编码管理>编码生成规则

规则配置如下图所示:

配置说明:

【规则Code】:规则编码,唯一,使用规则时传入该编码

【规则实现类】:规则编码生成逻辑实现类

【规则参数】:非必填项,格式为json串,可以传入规则实现类

2、使用编码规则

规则编码前后端都可以使用。

1)、前端调用

单个编码规则生成接口:

接口地址:/api/system/fillRule/executeRuleByCode/{ruleCode}

参数:

       【ruleCode】:规则编码

       【formData】:表单数据JSON

批量编码规则生成接口:

接口地址:/api/system/fillRule/ executeRuleByCodeBatch

参数:

       【ruleData】:规则数据JSON

         ruleData示例:

{
	"commonFormData": {
		"data1": "1"
	},
	"rules": [{
			"ruleCode": "code1",
			"formData": {
				"code1Data1": "1"
			}
		},
		{
			"ruleCode": "code2",
			"formData": {
				"code2Data1": "1"
			}
		}
	]
}

2) 、后端调用

后端代码调用FillRuleUtil.executeRule方法生成规则编码。

示例如下:

String ruleCode=”code1”;
JSONObject formData = new JSONObject(); 
Object result = FillRuleUtil.executeRule(ruleCode, formData);

executeRule方法参数:

【ruleCode】:规则编码

【formData】:表单JSON对象

二、编码校验规则

1、编码校验规则配置

位置:配置管理>编码管理>编码校验规则

局部规则配置如下图所示:

全局规则配置如下图所示:

规则code必须唯一

局部规则:针对编码每一位单独校验

【位数】:对编码哪一位进行校验,从1开始

【规则】:校验的正则表达式

【提示文本】:验证不通过的提示信息

全局规则:针对整个编码校验,全局规则优先级比局部规则高。

【优先级】:规则的优先级

【规则】:校验的正则表达式

【提示文本】:校验不通过的提示信息

2、功能测试

对编码校验规则进行验证,在编码校验规则列表操作列中单击“功能测试”超链接,在弹出的功能测试界面录入要测试的编码,单击“确定”按钮显示校验结果。

3、使用编码校验规则

第一步、引入工具类

import { validateCheckRule } from '@/utils/util'

第二步、使用工具类实现校验规则

validatorRules: {
  code: {
    rules: [
      {required: true, message: '请输入编码'},
      {validator: (ruleCode, value, callback) => validateCheckRule(‘common’, value, callback)}
    ]
  }
},

validateCheckRule方法参数:

【ruleCode】:校验规则编码

【value】:表单控件值

【callback】:回调函数

第三步、在页面上调用

<a-form-item label=”编码”>
<a-input v-decorator=”[‘code’,validatorRules.code]”/>
</a-form-item>

第四步、查看效果

未通过效果:

验证通过效果: