指标分析:保存分析图表
This commit is contained in:
parent
2c2eef6aee
commit
a1289dbbee
@ -57,4 +57,11 @@ public class AnalysisController {
|
||||
return R.ok(showVals);
|
||||
}
|
||||
|
||||
@Operation(summary = "保存分析图表")
|
||||
@PostMapping("/saveAnalysis")
|
||||
public R<?> saveAnalysis(@RequestBody JSONObject params) {
|
||||
analysisService.saveAnalysis(params);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -22,4 +22,6 @@ public interface AnalysisService extends IService<Analysis> {
|
||||
List<ColumnVo> getColumns(JSONObject params);
|
||||
|
||||
List<String> getShowVals(JSONObject params);
|
||||
|
||||
void saveAnalysis(JSONObject params);
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.toolkit.SqlRunner;
|
||||
import iet.ustb.sf.domain.Analysis;
|
||||
import iet.ustb.sf.domain.Target;
|
||||
import iet.ustb.sf.exception.ErrorCode;
|
||||
import iet.ustb.sf.exception.MyException;
|
||||
import iet.ustb.sf.exception.ThrowUtils;
|
||||
import iet.ustb.sf.mapper.TableColumnMapper;
|
||||
import iet.ustb.sf.mapper.TargetMapper;
|
||||
@ -151,6 +152,91 @@ public class AnalysisServiceImpl extends ServiceImpl<AnalysisMapper, Analysis>
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveAnalysis(JSONObject params) {
|
||||
Analysis analysis = JSONObject.toJavaObject(params, Analysis.class);
|
||||
CheckUtils.checkEmpty(analysis.getName(), "图表名称");
|
||||
CheckUtils.checkEmpty(analysis.getTargetId(), "指标ID");
|
||||
Target target = targetMapper.selectById(analysis.getTargetId());
|
||||
checkSearchAnalysis(analysis);
|
||||
if (target.getType() == 2) {
|
||||
ThrowUtils.throwIf(
|
||||
analysis.getType() != 1 || analysis.getIsTime() != 0,
|
||||
ErrorCode.OPERATION_ERROR,
|
||||
"聚合指标只能添加时间折线图!"
|
||||
);
|
||||
} else {
|
||||
String sql = getSql(analysis, target.getType(), target.getResultSql()).get("sql");
|
||||
|
||||
try {
|
||||
SqlRunner.db().selectList(sql, "2025-06-12", "2025-06-13");
|
||||
} catch (Exception e) {
|
||||
throw new MyException(ErrorCode.PARAMS_ERROR, "拼接SQL异常!");
|
||||
}
|
||||
analysis.setSql(sql);
|
||||
}
|
||||
QueryWrapper<Analysis> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("target_id", analysis.getTargetId());
|
||||
queryWrapper.eq("name", analysis.getName());
|
||||
Analysis nameAnalysis = analysisMapper.selectOne(queryWrapper);
|
||||
ThrowUtils.throwIf(
|
||||
nameAnalysis != null && !nameAnalysis.getId().equals(analysis.getId()),
|
||||
ErrorCode.OPERATION_ERROR,
|
||||
"同一指标图表分析名称不能重复!"
|
||||
);
|
||||
Date now = new Date();
|
||||
if (analysis.getCreateTime() == null) {
|
||||
analysis.setCreateTime(now);
|
||||
}
|
||||
analysis.setUpdateTime(now);
|
||||
analysisMapper.insertOrUpdate(analysis);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查查询图表的参数是否异常
|
||||
*
|
||||
* @param analysis 图表分析信息
|
||||
*/
|
||||
private void checkSearchAnalysis(Analysis analysis) {
|
||||
CheckUtils.checkEmpty(String.valueOf(analysis.getType()), "图表类型");
|
||||
ThrowUtils.throwIf(
|
||||
!Arrays.asList(1, 2, 3).contains(analysis.getType()),
|
||||
ErrorCode.PARAMS_ERROR,
|
||||
"图表类型不存在!"
|
||||
);
|
||||
CheckUtils.checkEmpty(String.valueOf(analysis.getIsTime()), "展示维度");
|
||||
ThrowUtils.throwIf(
|
||||
!Arrays.asList(0, 1).contains(analysis.getIsTime()),
|
||||
ErrorCode.PARAMS_ERROR,
|
||||
"展示维度不存在!"
|
||||
);
|
||||
String showVal;
|
||||
if (analysis.getIsTime() == 0) {
|
||||
showVal = "时间范围";
|
||||
ThrowUtils.throwIf(analysis.getType() != 1, ErrorCode.PARAMS_ERROR, "只有折线图才能是时间维度!");
|
||||
} else {
|
||||
CheckUtils.checkEmpty(String.valueOf(analysis.getColumnEn()), "维度选择-英文");
|
||||
CheckUtils.checkEmpty(String.valueOf(analysis.getColumnCn()), "维度选择-中文");
|
||||
if (analysis.getType() == 2) {
|
||||
showVal = "展示数量";
|
||||
} else {
|
||||
showVal = "展示值";
|
||||
}
|
||||
}
|
||||
CheckUtils.checkEmpty(analysis.getShowVal(), showVal);
|
||||
if (analysis.getType() != 3) {
|
||||
int num;
|
||||
try {
|
||||
num = Integer.parseInt(analysis.getShowVal());
|
||||
if (analysis.getIsTime() == 1 && num <= 0) {
|
||||
throw new MyException(ErrorCode.PARAMS_ERROR, showVal + "需要是正整数!");
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
throw new MyException(ErrorCode.PARAMS_ERROR, showVal + "需要是整数!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过分析图表数据获取SQL
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user