use of com.webank.wedatasphere.qualitis.entity.RuleMetric in project Qualitis by WeBankFinTech.
the class RuleMetricServiceImpl method getRulesByRuleMetric.
@Override
public DataInfo<HiveRuleDetail> getRulesByRuleMetric(long id, int page, int size) throws UnExpectedRequestException {
DataInfo<HiveRuleDetail> dataInfo = new DataInfo<>();
if (id <= 0) {
throw new UnExpectedRequestException("{&REQUEST_CAN_NOT_BE_NULL}");
}
// Check rule metric existence.
RuleMetric ruleMetricInDb = ruleMetricDao.findById(id);
if (ruleMetricInDb == null) {
throw new UnExpectedRequestException("Rule Metric ID [" + id + "] {&DOES_NOT_EXIST}");
}
List<Long> ruleIds = taskResultDao.findRuleByRuleMetric(ruleMetricInDb.getId(), page, size).stream().distinct().collect(Collectors.toList());
int total = taskResultDao.countRuleByRuleMetric(ruleMetricInDb.getId());
List<HiveRuleDetail> result = new ArrayList<>(ruleIds.size());
for (Long ruleId : ruleIds) {
Rule ruleInDb = ruleDao.findById(ruleId);
if (ruleInDb == null) {
total--;
continue;
}
List<Long> ruleMetricIds = ruleInDb.getAlarmConfigs().stream().map(AlarmConfig::getRuleMetric).filter(ruleMetric -> ruleMetric != null).map(RuleMetric::getId).collect(Collectors.toList());
if (ruleInDb != null && ruleMetricIds.contains(id)) {
HiveRuleDetail hiveRuleDetail = new HiveRuleDetail(ruleInDb);
result.add(hiveRuleDetail);
}
}
dataInfo.setContent(result);
dataInfo.setTotalCount(total);
return dataInfo;
}
use of com.webank.wedatasphere.qualitis.entity.RuleMetric in project Qualitis by WeBankFinTech.
the class RuleMetricServiceImpl method queryRuleMetric.
@Override
public GeneralResponse<GetAllResponse<RuleMetricResponse>> queryRuleMetric(RuleMetricQueryRequest request) throws UnExpectedRequestException {
CommonChecker.checkObject(request, "Rule Metric query request");
if (StringUtils.isBlank(request.getSubSystemName())) {
request.setSubSystemName("");
}
if (StringUtils.isBlank(request.getRuleMetricName())) {
request.setRuleMetricName("%");
} else {
request.setRuleMetricName("%" + request.getRuleMetricName() + "%");
}
String userName = HttpUtils.getUserName(httpServletRequest);
LOGGER.info("Start to get all rule metric, page request: [{}], user: [{}]", request.toString(), userName);
User loginUser = userDao.findByUsername(userName);
List<UserRole> userRoles = userRoleDao.findByUser(loginUser);
Integer roleType = roleService.getRoleType(userRoles);
List<RuleMetric> ruleMetrics = new ArrayList<>();
long total = 0;
if (roleType.equals(RoleDefaultTypeEnum.ADMIN.getCode())) {
LOGGER.info("SYS_ADMIN will get all rule metrics in query.");
ruleMetrics.addAll(ruleMetricDao.queryAllRuleMetrics(request.getSubSystemName(), request.getRuleMetricName(), request.getEnCode(), request.getType(), request.getAvailable(), request.getPage(), request.getSize()));
total = ruleMetricDao.countQueryAllRuleMetrics(request.getSubSystemName(), request.getRuleMetricName(), request.getEnCode(), request.getType(), request.getAvailable());
} else if (roleType.equals(RoleDefaultTypeEnum.DEPARTMENT_ADMIN.getCode())) {
LOGGER.info("DEPARTMENT_ADMIN will get rule metrics of all management departments and all projectors.");
List<Department> departments = new ArrayList<>();
for (UserRole temp : userRoles) {
Department department = temp.getRole().getDepartment();
if (department != null) {
departments.add(department);
}
}
ruleMetrics.addAll(ruleMetricDao.queryRuleMetrics(RuleMetricLevelEnum.DEFAULT_METRIC.getCode(), departments, null, request.getSubSystemName(), request.getRuleMetricName(), request.getEnCode(), request.getType(), request.getAvailable(), request.getPage(), request.getSize()));
total = ruleMetricDao.countQueryRuleMetrics(RuleMetricLevelEnum.DEFAULT_METRIC.getCode(), departments, null, request.getSubSystemName(), request.getRuleMetricName(), request.getEnCode(), request.getType(), request.getAvailable());
} else {
LOGGER.info("PROJECTOR will get rule metrics of department and own.");
List<Department> departments = new ArrayList<>();
departments.add(loginUser.getDepartment());
ruleMetrics.addAll(ruleMetricDao.queryRuleMetrics(RuleMetricLevelEnum.DEFAULT_METRIC.getCode(), departments, loginUser, request.getSubSystemName(), request.getRuleMetricName(), request.getEnCode(), request.getType(), request.getAvailable(), request.getPage(), request.getSize()));
total = ruleMetricDao.countQueryRuleMetrics(RuleMetricLevelEnum.DEFAULT_METRIC.getCode(), departments, loginUser, request.getSubSystemName(), request.getRuleMetricName(), request.getEnCode(), request.getType(), request.getAvailable());
}
GetAllResponse<RuleMetricResponse> response = new GetAllResponse<>();
List<RuleMetricResponse> ruleMetricResponses = new ArrayList<>();
for (RuleMetric ruleMetric : ruleMetrics) {
ruleMetricResponses.add(new RuleMetricResponse(ruleMetric));
}
response.setData(ruleMetricResponses);
response.setTotal(total);
return new GeneralResponse<>("200", "{&RULE_METRIC_QUERY_SUCCESS}", response);
}
use of com.webank.wedatasphere.qualitis.entity.RuleMetric in project Qualitis by WeBankFinTech.
the class ApplicationServiceImpl method joinAlarmConfig.
private void joinAlarmConfig(List<ExcelResult> results, TaskRuleSimple taskRuleSimple, ExcelResult excelResult, UploadResultRequest request, StringBuffer checkTemplateStr, StringBuffer resultStr) {
for (TaskRuleAlarmConfig taskRuleAlarmConfig : taskRuleSimple.getTaskRuleAlarmConfigList()) {
Integer checkTemplate = taskRuleAlarmConfig.getCheckTemplate();
String checkTemplateName = CheckTemplateEnum.getCheckTemplateName(checkTemplate);
String outputName = taskRuleAlarmConfig.getOutputName();
String compare = CompareTypeEnum.getCompareTypeName(taskRuleAlarmConfig.getCompareType());
Double threshold = taskRuleAlarmConfig.getThreshold();
Integer statusCode = taskRuleAlarmConfig.getStatus();
String status = AlarmConfigStatusEnum.getMessage(statusCode);
RuleMetric ruleMetric = taskRuleAlarmConfig.getRuleMetric();
TaskResult taskResult = taskResultDao.find(taskRuleSimple.getApplicationId(), taskRuleSimple.getRuleId(), ruleMetric != null ? ruleMetric.getId() : -1);
String resultValue = "";
Long runDate = null;
if (taskResult != null) {
resultValue = StringUtils.isNotBlank(taskResult.getValue()) ? taskResult.getValue() : "0";
runDate = taskResult.getRunDate();
}
if (request.getStatus().contains(statusCode)) {
checkTemplateStr.append(checkTemplateName).append(StringUtils.isNotBlank(compare) ? compare : "").append(" ").append(threshold).append(" ").append(status);
ExcelResult excelAlarmConfig = new ExcelResult();
BeanUtils.copyProperties(excelResult, excelAlarmConfig);
excelAlarmConfig.setRuleCheckTemplates(checkTemplateStr.toString());
resultStr.append(outputName).append(": ").append(resultValue);
excelAlarmConfig.setHistoryResult(resultStr.toString());
excelAlarmConfig.setCreateTime(runDate != null ? runDate.toString() : "");
excelAlarmConfig.setExecutionUser(taskRuleSimple.getExecuteUser());
results.add(excelAlarmConfig);
checkTemplateStr.delete(0, checkTemplateStr.length());
resultStr.delete(0, checkTemplateStr.length());
}
}
}
use of com.webank.wedatasphere.qualitis.entity.RuleMetric in project Qualitis by WeBankFinTech.
the class ProjectBatchServiceImpl method addRuleMetric.
private void addRuleMetric(ExcelRuleMetric excelRuleMetric, String userName) throws UnExpectedRequestException {
RuleMetric ruleMetricInDb = ruleMetricDao.findByEnCode(excelRuleMetric.getEnCode());
if (ruleMetricInDb != null) {
throw new UnExpectedRequestException("En code + [" + ruleMetricInDb.getEnCode() + "] + of metric {&ALREADY_EXIST}");
}
LOGGER.info("Start to add rule metric, user: [{}]", userName);
User loginUser = userDao.findByUsername(userName);
List<UserRole> userRoles = userRoleDao.findByUser(loginUser);
Integer roleType = roleService.getRoleType(userRoles);
RuleMetric newRuleMetric = new RuleMetric();
newRuleMetric.setCreateUser(userName);
newRuleMetric.setName(excelRuleMetric.getName());
newRuleMetric.setCnName(excelRuleMetric.getChName());
newRuleMetric.setEnCode(excelRuleMetric.getEnCode());
newRuleMetric.setMetricDesc(excelRuleMetric.getMetricDesc());
newRuleMetric.setCreateTime(ExecutionManagerImpl.PRINT_TIME_FORMAT.format(new Date()));
RuleMetric savedRuleMetric = ruleMetricDao.add(newRuleMetric);
if (roleType.equals(RoleDefaultTypeEnum.ADMIN.getCode())) {
LOGGER.info("First level(created by SYS_ADMIN) indicator will be created soon.");
savedRuleMetric.setLevel(RuleMetricLevelEnum.DEFAULT_METRIC.getCode());
} else if (roleType.equals(RoleDefaultTypeEnum.DEPARTMENT_ADMIN.getCode())) {
LOGGER.info("Second level(created by DEPARTMENT_ADMIN) indicator will be created soon.");
savedRuleMetric.setLevel(RuleMetricLevelEnum.DEPARTMENT_METRIC.getCode());
for (UserRole temp : userRoles) {
Department department = temp.getRole().getDepartment();
if (department != null) {
RuleMetricDepartmentUser ruleMetricDepartmentUser = new RuleMetricDepartmentUser();
ruleMetricDepartmentUser.setDepartment(department);
ruleMetricDepartmentUser.setRuleMetric(savedRuleMetric);
ruleMetricDepartmentUserDao.add(ruleMetricDepartmentUser);
LOGGER.info("Succeed to save rule metric department user.");
}
}
} else {
LOGGER.info("Third level(created by PROJECTOR) indicator will be created soon.");
savedRuleMetric.setLevel(RuleMetricLevelEnum.PERSONAL_METRIC.getCode());
RuleMetricDepartmentUser ruleMetricDepartmentUser = new RuleMetricDepartmentUser();
ruleMetricDepartmentUser.setDepartment(loginUser.getDepartment());
ruleMetricDepartmentUser.setRuleMetric(savedRuleMetric);
ruleMetricDepartmentUser.setUser(loginUser);
ruleMetricDepartmentUserDao.add(ruleMetricDepartmentUser);
LOGGER.info("Succeed to save rule metric department user.");
}
savedRuleMetric.setBussCode(Integer.parseInt(excelRuleMetric.getDimension()));
savedRuleMetric.setCreateUser(userName);
savedRuleMetric.setFrequency(Integer.parseInt(excelRuleMetric.getFrequency()));
savedRuleMetric.setDevDepartmentName(excelRuleMetric.getDevDepartmentName());
savedRuleMetric.setOpsDepartmentName(excelRuleMetric.getOpsDepartmentName());
savedRuleMetric.setDepartmentName(excelRuleMetric.getDepartmentName());
savedRuleMetric.setSubSystemName(excelRuleMetric.getSubSystemName());
savedRuleMetric.setProductName(excelRuleMetric.getProductName());
savedRuleMetric.setFullCnName(excelRuleMetric.getFullCnName());
savedRuleMetric.setBussCustom(excelRuleMetric.getBussCustom());
savedRuleMetric.setAvailable(excelRuleMetric.getAvailable());
savedRuleMetric.setType(excelRuleMetric.getType());
ruleMetricDao.add(savedRuleMetric);
}
use of com.webank.wedatasphere.qualitis.entity.RuleMetric in project Qualitis by WeBankFinTech.
the class AddCustomRuleRequestBuilder method addRuleMetricWithCheck.
@Override
public AddRequestBuilder addRuleMetricWithCheck(String ruleMetricName, boolean deleteFailCheckResult, boolean uploadRuleMetricValue, boolean uploadAbnormalValue) throws UnExpectedRequestException {
RuleMetric ruleMetricInDb = ruleMetricDao.findByName(ruleMetricName);
if (ruleMetricInDb != null) {
setRuleMetricEnCode(ruleMetricInDb.getEnCode());
setUploadAbnormalValue(uploadAbnormalValue);
setUploadRuleMetricValue(uploadRuleMetricValue);
setDeleteFailCheckResult(deleteFailCheckResult);
return this;
}
String[] infos = ruleMetricName.split(SpecCharEnum.BOTTOM_BAR.getValue());
if (infos.length != FOUR) {
throw new UnExpectedRequestException("The metric name does not meet specifications");
}
String en = infos[2];
List<String> existRuleMetricNames = addCustomRuleRequest.getRuleMetricNamesForBdpClient();
if (CollectionUtils.isNotEmpty(existRuleMetricNames)) {
existRuleMetricNames.add(ruleMetricName);
} else {
List<String> ruleMetricNames = new ArrayList<>(1);
ruleMetricNames.add(ruleMetricName);
addCustomRuleRequest.setRuleMetricNamesForBdpClient(ruleMetricNames);
}
setRuleMetricEnCode(en);
setUploadAbnormalValue(uploadAbnormalValue);
setUploadRuleMetricValue(uploadRuleMetricValue);
setDeleteFailCheckResult(deleteFailCheckResult);
return this;
}
Aggregations