根据代码“@Data public class DesignDictDataOnlineVO { @ApiModelProperty(value = "元素分类编码") private String code; @ApiModelProperty(value = "元素分类名称") private String name; @ApiModelProperty(value = "元素分类定义") private String definition; @ApiModelProperty(value = "父级分类ID") private String parentId; @ApiModelProperty(value = "同级/下级元素分类") private String level; @ApiModelProperty(value = "是否抽象(Y:是;N:不是)") private String virtually; }”,补全下面代码,根据已有的元素分类列表新增同级或子级的一条元素分类编码:“@Autowired public List<StandardElementClassTreeVO> addOnlineElement(DesignDictDataOnlineVO vo) { }” 要求:1.填写元素分类编码(code) 元素分类名称(name) 父级分类ID(parentId,新增同级取选择分类的parentId,新增子级取选择分类的ID作为parentId) 是否抽象(virtually)2.对填写的code和name进行重名校验。3.校验code长度≤50、name长度≤50、definition≤200。4.填写的code校验不能有中文,填写virtually只能用Y或者N。
时间: 2024-03-27 07:40:28 浏览: 102
代码实现如下:
```
@Autowired
public List<StandardElementClassTreeVO> addOnlineElement(DesignDictDataOnlineVO vo) {
String code = vo.getCode();
String name = vo.getName();
String parentId = vo.getParentId();
String virtually = vo.getVirtually();
// 重名校验
boolean isCodeExists = checkCodeExists(code);
boolean isNameExists = checkNameExists(name);
if (isCodeExists || isNameExists) {
throw new RuntimeException("编码或名称已存在");
}
// 校验长度
if (code.length() > 50 || name.length() > 50 || vo.getDefinition().length() > 200) {
throw new RuntimeException("编码长度、名称长度或定义长度超过限制");
}
// 校验code不能有中文,virtually只能为Y或N
if (!checkCodeFormat(code) || (!"Y".equals(virtually) && !"N".equals(virtually))) {
throw new RuntimeException("编码格式不正确或是否抽象填写错误");
}
// 新增元素分类
List<StandardElementClassTreeVO> elementList = getElementList();
StandardElementClassTreeVO element = new StandardElementClassTreeVO();
element.setCode(code);
element.setName(name);
element.setDefinition(vo.getDefinition());
element.setVirtually(virtually);
element.setLevel(vo.getLevel());
if (parentId == null || "".equals(parentId)) {
// 新增根节点
element.setId(UUID.randomUUID().toString());
elementList.add(element);
} else {
// 根据parentId新增同级或子级的元素分类
boolean isAdded = false;
for (StandardElementClassTreeVO e : elementList) {
if (parentId.equals(e.getId())) {
// 新增子级
element.setId(UUID.randomUUID().toString());
element.setParentId(parentId);
e.getChildren().add(element);
isAdded = true;
break;
} else if (e.getChildren() != null) {
// 新增同级
for (StandardElementClassTreeVO child : e.getChildren()) {
if (parentId.equals(child.getId())) {
element.setId(UUID.randomUUID().toString());
element.setParentId(child.getParentId());
child.getParent().add(element);
isAdded = true;
break;
}
}
}
if (isAdded) {
break;
}
}
if (!isAdded) {
throw new RuntimeException("未找到指定的父级元素分类");
}
}
return elementList;
}
// 获取元素分类列表
private List<StandardElementClassTreeVO> getElementList() {
// TODO: 根据业务需求获取元素分类列表
return new ArrayList<>();
}
// 检查编码是否重名
private boolean checkCodeExists(String code) {
// TODO: 根据编码查询元素分类列表,判断是否已存在相同编码的元素分类
return false;
}
// 检查名称是否重名
private boolean checkNameExists(String name) {
// TODO: 根据名称查询元素分类列表,判断是否已存在相同名称的元素分类
return false;
}
// 检查编码是否符合格式要求
private boolean checkCodeFormat(String code) {
// TODO: 校验编码是否符合要求,不能有中文
return true;
}
```
阅读全文