@Override public SdFact checkCodeByLevel2Id(SdFact et) { if(et.getClassifyId() == null || et.getClassifyId().length() == 0) { throw Exp.instance(BizCode.biz_error, "事实表所属类别不能为空!"); } if(et.getTableCode() == null || et.getTableCode().length() == 0) { throw Exp.instance(BizCode.biz_error, "事实表编码不能为空!"); } SdClassify classify = classifyService.getById(et.getClassifyId()); if(classify.getLevel2Id() == null || classify.getLevel2Id().length() == 0) { throw Exp.instance(BizCode.biz_error, "事实表所属类别不能是一级或者二级!"); } QueryWrapper<SdClassify> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("level2_id",classify.getLevel2Id()); List<SdClassify> classifies = classifyService.getMapper().selectList(queryWrapper); if(CollectionUtils.isEmpty(classifies)) { throw Exp.instance(BizCode.biz_error, "事实表所属类别不能是一级或者二级!"); } List<String> classifyIds = classifies.stream().map(o -> o.getId()).collect(Collectors.toList()); QueryWrapper<SdFact> factQueryWrapper = new QueryWrapper<>(); factQueryWrapper.in("classify_id",classifyIds); factQueryWrapper.eq("table_code",et.getTableCode()); if(et.getId() != null) { factQueryWrapper.ne("id",et.getId()); } List<SdFact> facts = this.getMapper().selectList(factQueryWrapper); if(!CollectionUtils.isEmpty(facts)) { throw Exp.instance(BizCode.biz_error, "事实表编码在同一二级分类下不能重复!"); } return et; },多加一个功能,根据表格编码和子分类ID列表查询数据库中是否存在相同分类下的表格编码,若存在,则抛出异常;
时间: 2024-02-20 22:02:31 浏览: 54
根据你提供的代码,我假设你使用的是Java语言和MyBatis-Plus框架来操作数据库。下面是一个示例代码,其中包括了根据表格编码和子分类ID列表查询数据库中是否存在相同分类下的表格编码的功能:
```java
@Override
public SdFact checkCodeByLevel2Id(SdFact et) {
// 首先检查事实表所属类别是否为空
if (et.getClassifyId() == null || et.getClassifyId().length() == 0) {
throw Exp.instance(BizCode.biz_error, "事实表所属类别不能为空!");
}
// 检查事实表编码是否为空
if (et.getTableCode() == null || et.getTableCode().length() == 0) {
throw Exp.instance(BizCode.biz_error, "事实表编码不能为空!");
}
// 获取事实表所属类别信息
SdClassify classify = classifyService.getById(et.getClassifyId());
// 检查事实表所属类别是否是一级或二级分类
if (classify.getLevel2Id() == null || classify.getLevel2Id().length() == 0) {
throw Exp.instance(BizCode.biz_error, "事实表所属类别不能是一级或者二级!");
}
// 查询同一二级分类下的所有子分类信息
QueryWrapper<SdClassify> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("level2_id", classify.getLevel2Id());
List<SdClassify> classifies = classifyService.getMapper().selectList(queryWrapper);
if (CollectionUtils.isEmpty(classifies)) {
throw Exp.instance(BizCode.biz_error, "事实表所属类别不能是一级或者二级!");
}
// 获取同一二级分类下的所有子分类ID
List<String> classifyIds = classifies.stream().map(SdClassify::getId).collect(Collectors.toList());
// 查询是否存在相同分类下的表格编码
QueryWrapper<SdFact> factQueryWrapper = new QueryWrapper<>();
factQueryWrapper.in("classify_id", classifyIds);
factQueryWrapper.eq("table_code", et.getTableCode());
if (et.getId() != null) {
factQueryWrapper.ne("id", et.getId());
}
List<SdFact> facts = this.getMapper().selectList(factQueryWrapper);
if (!CollectionUtils.isEmpty(facts)) {
throw Exp.instance(BizCode.biz_error, "事实表编码在同一二级分类下不能重复!");
}
return et;
}
```
在这个示例代码中,我们首先检查事实表所属类别和编码是否为空,然后获取事实表所属类别信息,并检查其是否为一级或二级分类。接着,我们查询同一二级分类下的所有子分类信息,并获取它们的ID。最后,我们根据分类ID和表格编码查询数据库,如果存在相同分类下的表格编码则抛出异常,否则返回事实表对象。
阅读全文