入门kpi的后台工具类
来源:互联网 发布:淘宝网新百伦运动鞋 编辑:程序博客网 时间:2024/06/05 08:38
1. 需求分析:
计算kpi 的过程中,会遇到很多 数量和比率的计算,而且很多的数值都是由固定的sql语句得来,所以就需要根据前端传入的kpi名字,拿出相应的 语句,计算方式,同时还要考虑相同的筛选条件,比如: 起始时间,时间范围,实际值,登录角色,对标值,显示模式品牌等等,
2. 根据前端传入的 kpi名字,拿出相应的sql语句,
先封装一个实体类,
public class KPIMetaData {
private String sql;
private int type; //1: 2: 决定是数值 还是比率,
private String numerator; 分子
private String denominator; 分母
public KPIMetaData(String sql, int type, String numerator, String denominator) {
this.sql = sql;
this.type = type;
this.numerator = numerator;
this.denominator = denominator;
}
public String getSql() {
return sql;
}
public int getType() {
return type;
}
public String getNumerator() {
return numerator;
}
public String getDenominator() {
return denominator;
}
}
取出相应的详细信息的工具类
public class KPIUtils {
private Map<String, KPIMetaData> cnToEn = Maps.newHashMap();
// 零售签署目标
private String signedRetailTA = "SELECT permit, sum(bmbs_ta) as bmbs_销售目标 " +
"FROM snp_setting a " +
"join LSH车型 b on a.carCode = b.车型编号 " +
"WHERE y_m >= concat(substr('2000-01-01', 1, 4), substr('2000-01-01', 6, 2)) " +
"AND y_m <= concat(substr('2020-01-01', 1, 4), substr('2020-01-01', 6, 2)) " +
"and (case when 'MB' = '' then true else b.品牌 = 'MB' end) " +
"and a.permit in (SELECT 许可_bmbs FROM LSH经销商表 WHERE `大区` = '东二区') " +
"group by a.permit ";
// 实际零售NBI
private String actualRetailNBI = "SELECT COUNT(1) AS 零售数, a.许可 " +
"FROM 顾客进店记录表 a " +
"JOIN LSH车型 b ON a.意向车型A = b.车型编号 " +
"WHERE a.是否零售 = '是' " +
"AND a.进店日期 >= '2000-01-01' " +
"AND a.进店日期 <= '2020-01-01' " +
"AND (case when 'MB' = '' then true else b.品牌 = 'MB' end) " +
"AND a.许可 IN (SELECT 许可_bmbs FROM LSH经销商表 WHERE `大区` = '东二区') " +
"GROUP BY a.许可 ";
{
cnToEn.put("BMBS销售目标完成率", new KPIMetaData(bmbs, 2, "新车销量", "bmbs_销售目标"));
}
{
cnToEn.put("LSH销售目标完成率", new KPIMetaData(lsh, 2, "新车销量", "lsh_销售目标"));
}
// 为了热部署方便调试,没有将变量写成static
public String getSignedRetailTA() {
return signedRetailTA;
}
public String getActualRetailNBI() {
return actualRetailNBI;
}
public KPIMetaData getCnToEn(String name) {
return cnToEn.get(name);
}
}
4. 使用时就是直接,
KPIUtils kpiUtils = new KPIUtils();//新建一个工具类
KPIMetaData meta = kpiUtils.getCnToEn(items.name);// 由名字获取实体类
5.由于很多的筛选条件是一样的,所以在sql语句中全部有一样的可以替代的语句体
- 入门kpi的后台工具类
- 该死的KPI
- KPI
- KPI
- KPI
- KPI体系的建立方法
- 基于KPI的IT管理
- 您的指南航空公司KPI
- toB产品经理的KPI
- KPI毁了谁的思考
- JS 表单数据封装到后台的工具类
- .net后台分页工具类
- jPush后台推送工具类
- JAVA工具类(15)----验证码工具类的创建、配置、使用及后台验证
- 选择KPI的方法(笔记)
- sqlserver2005的KPI展示控件开发详解
- 同比及环比的KPI使用
- 实现Reporting Services对KPI的支持
- String使用方法详解
- Log4net配置与使用简要说明
- 《C++Primer》读书笔记(四)表达式
- Python基础语法——函数(二)
- 判断时用比较(< or >) 替换 比对(==)防止递归越界
- 入门kpi的后台工具类
- 对CSS盒模型的一些理解
- Java的重新学习
- 344. Reverse String
- 文章标题
- VS 2010 MFC 制作的双色球模拟软件 之 dlg.cpp
- C#简单的函数调用
- HDU 5999 The Third Cup is Free
- Android网络请求发展简史和RxJava+Retrofit+OkHttp实践