diff --git a/src/main/java/iet/ustb/sf/controller/TargetController.java b/src/main/java/iet/ustb/sf/controller/TargetController.java index eea9e4d..62e8328 100644 --- a/src/main/java/iet/ustb/sf/controller/TargetController.java +++ b/src/main/java/iet/ustb/sf/controller/TargetController.java @@ -82,4 +82,11 @@ public class TargetController { Page result = targetService.getDataByParam(params); return R.ok(result); } + + @Operation(summary = "删除指标") + @PostMapping("/deleteTargetById") + public R deleteTargetById(@RequestBody JSONObject params) { + targetService.deleteTargetById(params); + return R.ok(); + } } diff --git a/src/main/java/iet/ustb/sf/service/TargetService.java b/src/main/java/iet/ustb/sf/service/TargetService.java index 2c7da8b..56d0b20 100644 --- a/src/main/java/iet/ustb/sf/service/TargetService.java +++ b/src/main/java/iet/ustb/sf/service/TargetService.java @@ -26,4 +26,6 @@ public interface TargetService extends IService { JSONObject getDetailTarget(JSONObject params); Page getDataByParam(JSONObject params); + + void deleteTargetById(JSONObject params); } diff --git a/src/main/java/iet/ustb/sf/service/impl/TargetServiceImpl.java b/src/main/java/iet/ustb/sf/service/impl/TargetServiceImpl.java index a34c30c..c867593 100644 --- a/src/main/java/iet/ustb/sf/service/impl/TargetServiceImpl.java +++ b/src/main/java/iet/ustb/sf/service/impl/TargetServiceImpl.java @@ -19,6 +19,7 @@ import iet.ustb.sf.util.CheckUtils; import jakarta.annotation.Resource; import org.apache.commons.lang3.SerializationUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -59,6 +60,8 @@ public class TargetServiceImpl extends ServiceImpl @Resource private RuleMapper ruleMapper; + @Autowired + private MonitorMapper monitorMapper; @Override public IPage getTargetsByCategory(JSONObject params) { @@ -405,6 +408,46 @@ public class TargetServiceImpl extends ServiceImpl return SqlRunner.db().selectPage(page, String.valueOf(sql)); } + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteTargetById(JSONObject params) { + String id = params.getString("id").trim(); + CheckUtils.checkEmpty(id, "指标ID"); + Target target = new Target(); + target.setId(id); + + long count = targetMapper.selectCount(new QueryWrapper().eq("parent", id)); + ThrowUtils.throwIf(count > 0, ErrorCode.OPERATION_ERROR, "有衍生指标存在,无法删除!"); + ThrowUtils.throwIf( + hasTogeth(id), + ErrorCode.OPERATION_ERROR, + "有聚合指标使用了该指标,无法删除!" + ); + List analysisList = analysisMapper.selectList(new QueryWrapper().eq("target_id", id)); + ThrowUtils.throwIf( + analysisList != null && !analysisList.isEmpty(), + ErrorCode.OPERATION_ERROR, + "当前指标有图表存在,无法删除!" + ); + + Target oldTarget = targetMapper.selectById(id); + if (!StringUtils.isEmpty(oldTarget.getCategoryId())) { + categoryDeal(oldTarget, null); + } + targetMapper.deleteById(id); + targetOptionMapper.delete(new QueryWrapper().eq("target_id", id)); + ruleMapper.delete(new QueryWrapper().eq("target_id", id)); + targetDataMapper.delete(new QueryWrapper().eq("target_id", id)); + monitorMapper.delete(new QueryWrapper().eq("target_id", id)); + } + + /** + * 查看指标详情 + * + * @param optionList 字段列表 + * @param target 指标 + * @return 详情 + */ private JSONObject getDetailTarget(List optionList, Target target) { List show = new ArrayList<>(); List search = new ArrayList<>();