
# 1 业务场景
预警监控方案中默认的监控条件设置,无法满足需求,用户可以通过自定义条件表单设置自定义的监控条件。比如在低库存预警场景,需要根据不同的仓库配置对应的商品库存下限的监控条件。
# 2 系统路径
苍穹版本V5.0及以下:【系统服务云】→【配置工具】(苍穹版本V6.0:【基础服务云】→【公共设置】)→【预警平台】→【业务预警对象】→【新增/打开已保存的业务预警对象】→【自定义条件表单】

# 3 接口说明
自定义条件表单的表单插件需实现kd.bos.entity.earlywarn.warn.plugin.IEarlyWarnConditionForm接口,预警平台通过该接口从用户自定义的监控条件配置页面,获取所需的条件数据。
注:自定义条件表单需要与数据源插件配合使用,数据源插件可参考文章[预警平台进阶场景介绍](https://vip-admin.kingdee.com/article/256133771093708032)。
```java
public interface IEarlyWarnConditionForm {
/**
* 获取自定义表单参数
* @return 自定义表单参数
*/
Map<String,Object> getCustomParams();
/**
* 检查自定义表单参数是否有效
* @return 错误信息
*/
EarlyWarnConditionCheckResult checkCustomParams();
}
```
# 4 示例
下面以低库存预警,每个仓库的商品库存下限不同的场景为例,演示自定义预警条件如何使用:
1、在开发平台配置一个自定义条件动态表单。编写表单插件实现IEarlyWarnConditionForm接口,预警平台通过该接口,获取用户在监控方案配置的自定义预警条件。

插件代码如下:
```java
public class StockEarlyWarnConditionDemo extends AbstractFormPlugin implements IEarlyWarnConditionForm {
@Override
public Map<String, Object> getCustomParams() {
//仓库
String warehouse = (String) getModel().getValue("warehouse");
//最低库存数量
Object quantity = getModel().getValue("quantity");
//自定义条件参数
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("warehouse", warehouse);
dataMap.put("quantity", quantity);
return dataMap;
}
@Override
public EarlyWarnConditionCheckResult checkCustomParams() {
Object quantity = getModel().getValue("quantity");
//校验是否填写了最低库存数量
if (StringUtils.isBlank(quantity)){
return EarlyWarnConditionCheckResult.failure("请填写最低库存数量。");
}
return EarlyWarnConditionCheckResult.success("");
}
@Override
public void afterCreateNewData(EventObject e) {
super.afterCreateNewData(e);
Map<String, Object> customParams = getView().getFormShowParameter().getCustomParams();
for (Map.Entry<String, Object> entry : customParams.entrySet()) {
get