.net 评分计算--使用配置公式进行计算

最近公司要计算活动公式,于是找了几种方式计算

第一种:使用原生.net控件 NCalc

Expression exp = new Expression(richTextBox1.Text.Trim());
            exp.Parameters["需求计划安全库存满足率"] = 0.1;
            exp.Parameters["需求计划缺货次数"] = 10;
            textBox1.Text = exp.Evaluate().ToString();


 

if([需求计划安全库存满足率] > 0.9, 30 , if([需求计划缺货次数] < 15 && [需求计划安全库存满足率] > 0.01,15,0))

+

if([需求计划安全库存满足率] < 0.9, 30 , if([需求计划缺货次数] < 15 && [需求计划安全库存满足率] > 0.01,15,0))

+

if([需求计划安全库存满足率] >0.5, 30 , if([需求计划缺货次数]  != 1 && [需求计划安全库存满足率] > 0.01,15,0))


第二种: 调用com js控件

参考 http://blog.csdn.net/return_false/article/details/7750862

注意:需要把生成平台设置为x86,否则x64无法运行...

 string expression = string.Empty;
                    SYS_PARAMETER_TABDao parameterDao = new SYS_PARAMETER_TABDao();
                    SYS_PARAMETER_TAB parameter = parameterDao.Retrieve("Expression");
                    if (!string.IsNullOrEmpty(parameter.VC_VALUE))
                    {
                        expression = parameter.VC_VALUE;
                    }
                    expression = expression.Replace("[安全库存满足率]", (item.N_ANQUAN_QTY ?? 0).ToString());
                    expression = expression.Replace("[缺货次数]", (item.N_XUQIU_QTY ?? 0).ToString());
                    expression = expression.Replace("[4A9缺货次数]", (item.N_4A9_QTY ?? 0).ToString());
                    expression = expression.Replace("[4G6缺货次数]", (item.N_4G6_QTY ?? 0).ToString());
                    expression = expression.Replace("[调整次数]", (item.N_TIAOZHENG_QTY ?? 0).ToString());
                    expression = expression.Replace("[普通订单完成率]", (item.N_PUTONG_QTY ?? 0).ToString());
                    expression = expression.Replace("[紧急订单完成率]", (item.N_JIAJI_QTY ?? 0).ToString());
                    expression = expression.Replace("[订单确认情况]", (item.N_QUEREN_QTY ?? 0).ToString());
                    expression = expression.Replace("[公共查看情况]", (item.N_CHAKAN_QTY ?? 0).ToString());
                    expression = expression.Replace("[发票开据情况]", (item.N_FAPIAO_QTY ?? 0).ToString());
                    expression = expression.Replace("[单项否决情况]", (item.N_FOUJUE_QTY ?? 0).ToString());

                    ScriptControl sc = new ScriptControl();
                    sc.Language = "javascript";
                    item.N_SCORE = Math.Round(Convert.ToDecimal(sc.Eval(expression).ToString()), 2); Convert.ToInt32(sc.Eval(expression).ToString());


 

var result = 0;
/*var [安全库存满足率] = 0;
var [缺货次数] = 0;
var [4A9缺货次数] = 0;
var [4G6缺货次数] = 0;
var [调整次数] = 0;
var [普通订单完成率] = 0;
var [紧急订单完成率] = 0;
var [订单确认情况] = 0;
var [公共查看情况] = 0;
var [发票开据情况] = 0;
var [单项否决情况] = 0;*/

if([安全库存满足率] >= 1)
{
	result += 30;
}
else
{
	if([安全库存满足率] > 0.8 && [缺货次数] <= 6)
	{
		result += 20;
	}
	else
	{
		if([安全库存满足率] > 0.5 && [缺货次数] <= 10)
		{
			result += 10;
		}
		else
		{
			result += 0;
		}
	}
}
if([调整次数] == 0)
{
	result += 15;
}
else
{
	if([调整次数] <= 2)
	{
		result += 10;
	}
	else
	{
		result += 0;
	}
}
if([紧急订单完成率] >= 1)
{
	result += 15;
}
else
{
	if([紧急订单完成率] >= 0.8)
	{
		result += 10;
	}
	else
	{
		
		if([紧急订单完成率] >= 0.5)
		{
			result += 5;
		}
		else
		{
			
			result += 0;
		}
	}
}

result;


比较:第一种相对简单,但是功能也简单,写完的代码不容易阅读

第二种功能齐全,容易阅读,但是不支持anycpu,且不是原始C#代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开发软件店

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值