package com.highdatas.mdm.controller;
|
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.plugins.Page;
|
import com.highdatas.mdm.entity.RuleMapping;
|
import com.highdatas.mdm.entity.SysField;
|
import com.highdatas.mdm.entity.TQualityRule;
|
import com.highdatas.mdm.pojo.CodeMsg;
|
import com.highdatas.mdm.pojo.Result;
|
import com.highdatas.mdm.service.IRuleMappingService;
|
import com.highdatas.mdm.service.ISysFieldService;
|
import com.highdatas.mdm.service.ITQualityRuleService;
|
import com.highdatas.mdm.util.Constant;
|
import com.highdatas.mdm.util.DbUtils;
|
import com.highdatas.mdm.util.RuleClient;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.text.MessageFormat;
|
import java.text.NumberFormat;
|
import java.util.*;
|
|
/**
|
* <p>
|
* 前端控制器
|
* </p>
|
* @descrpition 规则接口
|
* @author kimi
|
* @since 2019-12-21
|
*/
|
@RestController
|
@RequestMapping("/ruleMapping")
|
public class RuleMappingController {
|
|
@Autowired
|
IRuleMappingService ruleMappingService;
|
|
@Autowired
|
ITQualityRuleService tQualityRuleService;
|
|
@Autowired
|
ISysFieldService fieldService;
|
@Autowired
|
RuleClient ruleClient;
|
|
@Deprecated
|
@RequestMapping(value = "delete/{id}", method = RequestMethod.GET)
|
public Result delete(@PathVariable String id, HttpServletRequest request) {
|
boolean delete = ruleMappingService.deleteById(id);
|
if (delete) {
|
return Result.success(null);
|
} else {
|
return Result.error(CodeMsg.DELETE_ERROR);
|
}
|
}
|
|
@RequestMapping(value = "/list", method = RequestMethod.GET)
|
public Result list(@RequestParam String tableName, @RequestParam String isTemp, HttpServletRequest request) {
|
String maintainId = request.getParameter("maintainId");
|
if (StringUtils.isEmpty(maintainId)) {
|
return ruleClient.getRuleByTable(tableName,isTemp,null);
|
}
|
return ruleClient.getRuleByTable(tableName,isTemp,maintainId);
|
}
|
|
@Deprecated
|
@RequestMapping(value = "/add", method = RequestMethod.GET)
|
public Result add(HttpServletRequest request) {
|
String tableName = request.getParameter("tableName");
|
String fieldName = request.getParameter("field");
|
String ruleId = request.getParameter("ruleId");
|
RuleMapping ruleMapping = new RuleMapping();
|
ruleMapping.setCreateTime(new Date());
|
ruleMapping.setFieldName(fieldName);
|
ruleMapping.setId(DbUtils.getUUID());
|
ruleMapping.setRuleId(ruleId);
|
ruleMapping.setTableName(tableName);
|
ruleMapping.insert();
|
return Result.success(CodeMsg.SUCCESS);
|
}
|
|
|
@RequestMapping(value = "/all/{pageno}", method = RequestMethod.GET)
|
public Result status(@PathVariable Integer pageno, HttpServletRequest request) {
|
String tableName = request.getParameter("tableName");
|
Page<RuleMapping> result;
|
if (StringUtils.isEmpty(tableName)) {
|
Page<RuleMapping> ruleMappingPage = new Page<>(pageno, 20);
|
result = ruleMappingService.selectPage(ruleMappingPage);
|
|
} else {
|
EntityWrapper<RuleMapping> ruleMappingEntityWrapper = new EntityWrapper<>();
|
ruleMappingEntityWrapper.eq("table_name", tableName);
|
Page<RuleMapping> ruleMappingPage = new Page<>(pageno, 20);
|
result = ruleMappingService.selectPage(ruleMappingPage, ruleMappingEntityWrapper);
|
}
|
List<RuleMapping> records = result.getRecords();
|
for (RuleMapping record : records) {
|
String fieldName = record.getFieldName();
|
String ruleId = record.getRuleId();
|
TQualityRule tQualityRule = tQualityRuleService.selectById(ruleId);
|
if (tQualityRule == null) {
|
continue;
|
}
|
record.setRuleId(tQualityRule.getRuleName());
|
SysField sysField = fieldService.selectOne(new EntityWrapper<SysField>()
|
.eq("table_name", tableName)
|
.eq("field", fieldName));
|
if (sysField == null) {
|
continue;
|
} else {
|
record.setFieldName(sysField.getAlias());
|
}
|
}
|
return Result.success(result);
|
}
|
|
@RequestMapping(value = "/check/{tableName}", method = RequestMethod.GET)
|
public Result check(@PathVariable String tableName, HttpServletRequest request) {
|
String ids = request.getParameter("ids");
|
String[] idArray = ids.split(Constant.COMMA_TRIM);
|
|
EntityWrapper<RuleMapping> ruleMappingEntityWrapper = new EntityWrapper<>();
|
ruleMappingEntityWrapper.eq("table_name", tableName);
|
if (idArray != null && idArray.length != 0) {
|
ruleMappingEntityWrapper.in("id", idArray);
|
}
|
List<RuleMapping> ruleMappings = ruleMappingService.selectList(ruleMappingEntityWrapper);
|
ArrayList<String> contentList = new ArrayList<>();
|
|
for (int i = 0; i < ruleMappings.size(); i++) {
|
RuleMapping ruleMapping = ruleMappings.get(i);
|
Result rule = tQualityRuleService.rule(ruleMapping.getTableName(), ruleMapping.getFieldName(), ruleMapping.getRuleId());
|
HashMap<String, Integer> resultMap = (HashMap<String, Integer>) rule.getData();
|
Integer total = resultMap.get("total");
|
Integer matched = resultMap.get("matched");
|
NumberFormat numberFormat = NumberFormat.getInstance();
|
numberFormat.setMaximumFractionDigits(2);
|
String rate = numberFormat.format((float)matched/(float)total*100);
|
String content = MessageFormat.format("总条数:{0}--验证通过:{1}--通过率:{2}%", total, matched,rate);
|
contentList.add(content);
|
ruleMapping.setContent(content);
|
ruleMapping.setCreateTime(new Date());
|
ruleMapping.updateById();
|
}
|
return Result.success(contentList);
|
}
|
}
|