# 个性化控制器

## 插件模版

- 使用插件基类模版： `kd.bos.base.AbstractBasedataController`  

## 场景和示例

场景：加载基础资料数据时，需要对数据进行过滤，比如模糊查询、f7、列表、树等，这些地方关联此基础资料时，都需要加载基础资料本身的过滤条件。

> 特别注意：
控制器最初目的是为了解决模糊查询过滤无法使用列表插件设置的过滤条件，导致跟f7显示的数据不一致问题，后来演变成基础资料全局过滤条件，因此控制器添加的过滤条件会作用到列表、f7、模糊查询、树、常用条件等地方，如果需要精细化区分，可以根据BasedataControllerSourceEnum来区别对待。

## 配置方式

- 在页面设计中选中主实体，在属性栏点击个性化控制器属性进入个性化控制器插件注册界面

    ![package](image\kz_controller_01.png)


- 注册自己的控制器插件

```java
public class OrgController extends AbstractBasedataController {

	private static final long serialVersionUID = -9212291623202409642L;

	@Override
	public void buildBaseDataCoreFilter(BaseDataCustomControllerEvent event) {
		if(BasedataControllerSourceEnum.Fuzzy == event.getSourceEnum()){
			QFilter idFilter = new QFilter("number", QCP.not_equals, "1");
			QFilter longnumberFilter = new QFilter("longnumber", QCP.not_like, "1.%");
			
			event.addQFilter(idFilter);
			event.addQFilter(longnumberFilter);
		}
	}

}
```