[manager,web-app] 监控参数支持单选options

This commit is contained in:
tomsun28
2021-12-04 11:52:19 +08:00
parent b052c053da
commit 587a397cb7
12 changed files with 115 additions and 45 deletions

View File

@@ -1,25 +0,0 @@
package com.usthe.manager.pojo.entity;
import com.usthe.common.util.GsonUtil;
import javax.persistence.AttributeConverter;
import java.util.Map;
/**
* json 互转map对象字段为数据String字段
* @author tom
* @date 2021/12/4 07:54
*/
public class JsonMapAttributeConverter implements AttributeConverter<Map<String,String>, String> {
@Override
public String convertToDatabaseColumn(Map<String,String> attribute) {
return GsonUtil.toJson(attribute);
}
@Override
public Map<String,String> convertToEntityAttribute(String dbData) {
return GsonUtil.fromJson(dbData, Map.class);
}
}

View File

@@ -0,0 +1,25 @@
package com.usthe.manager.pojo.entity;
import com.usthe.common.util.GsonUtil;
import javax.persistence.AttributeConverter;
import java.util.List;
/**
* json 互转map对象字段为数据String字段
* @author tom
* @date 2021/12/4 07:54
*/
public class JsonOptionListAttributeConverter implements AttributeConverter<List<ParamDefine.Option>, String> {
@Override
public String convertToDatabaseColumn(List<ParamDefine.Option> attribute) {
return GsonUtil.toJson(attribute);
}
@Override
public List<ParamDefine.Option> convertToEntityAttribute(String dbData) {
return GsonUtil.fromJson(dbData, List.class);
}
}

View File

@@ -15,7 +15,7 @@ import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import java.time.LocalDateTime;
import java.util.Map;
import java.util.List;
import static io.swagger.annotations.ApiModelProperty.AccessMode.READ_ONLY;
import static io.swagger.annotations.ApiModelProperty.AccessMode.READ_WRITE;
@@ -107,8 +107,8 @@ public class ParamDefine {
*/
@ApiModelProperty(value = "当type为radio单选框,checkbox复选框时,option表示可选项值列表", example = "{key1,value1}", accessMode = READ_WRITE, position = 8)
@Column(name = "param_options")
@Convert(converter = JsonMapAttributeConverter.class)
private Map<String,String> options;
@Convert(converter = JsonOptionListAttributeConverter.class)
private List<Option> options;
/**
* 此条记录创建者
@@ -133,4 +133,18 @@ public class ParamDefine {
*/
@ApiModelProperty(value = "记录最新修改时间(毫秒时间戳)", example = "1612198444000", accessMode = READ_ONLY, position = 12)
private LocalDateTime gmtUpdate;
@Data
@AllArgsConstructor
@NoArgsConstructor
public static final class Option {
/**
* 值显示标签
*/
private String label;
/**
* 可选值
*/
private String value;
}
}

View File

@@ -187,6 +187,12 @@ public class MonitorServiceImpl implements MonitorService {
+ booleanValue + " is invalid boolean value.");
}
break;
case "radio":
// todo radio校验
break;
case "checkbox":
// todo checkbox校验
break;
// todo 更多参数定义与实际值格式校验
default:
throw new IllegalArgumentException("ParamDefine type " + paramDefine.getType() + " is invalid.");