# KPIDemo
**Repository Path**: galacode/KPIDemo
## Basic Information
- **Project Name**: KPIDemo
- **Description**: KPIDemo
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2017-09-14
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# KPIDemo
评价指标执行样例
### 1. 构建公式
通过SD_EKPI_ID查找表SD_EKPI_FORMULA和SD_EKPI_PARAM中相关记录
```csharp
///
/// 根据kpi id组织脚本算法
///
///
///
public KPIFormulaViewModel AssembleFormula()
{
try
{
//根据SD_EKPI_ID获取方法体与参数
//组织方法体
SD_EKPI_FORMULA body = new SD_EKPI_FORMULA() { SD_EKPI_ID = 10154, NUM_FORMULA = "1", FRA_FORMULA = "1 if(P1-P2).TotalMinutes<=15 else 0" };
//组织参数
List list = new List() {
new SD_EKPI_PARAM() {SD_EKPI_ID=10154,SD_ITEM_ID=10200,SD_EKPI_PARAM_NAME="P1" },
new SD_EKPI_PARAM() {SD_EKPI_ID=10154,SD_ITEM_ID=10201,SD_EKPI_PARAM_NAME="P2" }};
return new KPIFormulaViewModel(body, list);
}
catch (System.Exception)
{
throw;
}
}
```
### 2. 初始化引擎
将步骤一中实例化KPIFormulaViewModel实例传入Python引擎
```csharp
//初始化python引擎
UsingPython up = new UsingPython(AssembleFormula());
```
### 3. 传参数
调用引擎的ExcuteScriptFile方法
```csharp
//按照配置EP_KPI_PARAM中KPI的配置组织参数
List listp = new List() {
new SimpleParamViewModel() {Code="P2",DataType="datetime",Value="2017/7/6 17:09:25" },
new SimpleParamViewModel() {Code="P1",DataType="datetime",Value="2017/7/1 17:19:25" },
};
return up.ExcuteScriptFile(listp);
```
### 4. 完整代码
```csharp
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using TestingCenter.Common.KPIFormula;
using TestingCenter.Models;
using TestingCenterSystem.Models.PDP;
namespace KPIDemo
{
///
/// 执行KPI方法类
/// 自行实现
/// 注意实现ICanAssembleFormula接口
///
class KPIDemo
{
int KpiId;
public KPIDemo(int kpiid) {
this.KpiId = kpiid;
}
///
/// 根据kpi id组织脚本算法
///
///
///
public KPIFormulaViewModel AssembleFormula()
{
try
{
//根据SD_EKPI_ID获取方法体与参数
//组织方法体
SD_EKPI_FORMULA body = new SD_EKPI_FORMULA() { SD_EKPI_ID = 10154, NUM_FORMULA = "1", FRA_FORMULA = "1 if(P1-P2).TotalMinutes<=15 else 0" };
//组织参数
List list = new List() {
new SD_EKPI_PARAM() {SD_EKPI_ID=10154,SD_ITEM_ID=10200,SD_EKPI_PARAM_NAME="P1" },
new SD_EKPI_PARAM() {SD_EKPI_ID=10154,SD_ITEM_ID=10201,SD_EKPI_PARAM_NAME="P2" }};
return new KPIFormulaViewModel(body, list);
}
catch (System.Exception)
{
throw;
}
}
public object ExeKPI()
{
try
{
//初始化python引擎
UsingPython up = new UsingPython(AssembleFormula());
//按照配置EP_KPI_PARAM中KPI的配置组织参数
List listp = new List() {
new SimpleParamViewModel() {Code="P2",DataType="datetime",Value="2017/7/6 17:09:25" },
new SimpleParamViewModel() {Code="P1",DataType="datetime",Value="2017/7/1 17:19:25" },
};
return up.ExcuteScriptFile(listp);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
throw;
}
}
}
}
```