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.*; /** *

* 前端控制器 *

* * @author kimi * @since 2019-12-21 */ @RestController @RequestMapping("/ruleMapping") public class RuleMappingController { @Autowired IRuleMappingService ruleMappingService; @Autowired ITQualityRuleService tQualityRuleService; @Autowired ISysFieldService fieldService; @Autowired RuleClient ruleClient; @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); } @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 result; if (StringUtils.isEmpty(tableName)) { Page ruleMappingPage = new Page<>(pageno, 20); result = ruleMappingService.selectPage(ruleMappingPage); } else { EntityWrapper ruleMappingEntityWrapper = new EntityWrapper<>(); ruleMappingEntityWrapper.eq("table_name", tableName); Page ruleMappingPage = new Page<>(pageno, 20); result = ruleMappingService.selectPage(ruleMappingPage, ruleMappingEntityWrapper); } List 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() .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 ruleMappingEntityWrapper = new EntityWrapper<>(); ruleMappingEntityWrapper.eq("table_name", tableName); if (idArray != null && idArray.length != 0) { ruleMappingEntityWrapper.in("id", idArray); } List ruleMappings = ruleMappingService.selectList(ruleMappingEntityWrapper); ArrayList 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 resultMap = (HashMap) 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); } }