using DataRWDAL.Base;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XImagingXhandler.XDAL;
using DataRWDAL;
namespace XCore
{
///
/// 液体精度校准逻辑处理类
///
public class LiquidAccuracyBll
{
#region 从数据库获取液体参数校准的数据
///
/// 从数据库获取液体参数校准的数据
///
/// 液体范围Id
/// 臂Id
/// 液体校准数据实体集合
public ObservableCollection GetLiquidAccuracyFromdb(int liquidRangeId,int deviceArmId,string liquidTypeId)
{
return LiquidAccuracyDB.GetLiquidAccuracyFromdb(liquidRangeId,deviceArmId, liquidTypeId);
}
#endregion
#region 从数据库获取液体参数校准的数据根据当前请求的体积
///
/// 从数据库获取液体参数校准的数据根据当前请求的体积
///
/// 液体范围Id
/// 臂Id
/// 目标体积
/// 符合条件的液体校准参数数据,最多只有两条
public LiquidAccuracy GetLiquidAccuracyFromdb(int liquidRangeId,int deviceArmId, double targetVolume,string liquidTypeid)
{
List result = null;
LiquidAccuracy liquidAccuracy = new LiquidAccuracy();
result= LiquidAccuracyDB.GetLiquidAccuracyFromdb(liquidRangeId,deviceArmId, targetVolume, liquidTypeid);
//取出两个当前目标体积的区间数据
//计算K,b值
double b = 0.0d;
double k = 1.0d;
if (result.Count ==2)
{
k = (result[0].liquid_Real_volume - result[1].liquid_Real_volume) / (result[0].liquid_target_volume - result[1].liquid_target_volume);
b = result[0].liquid_Real_volume - k * result[0].liquid_target_volume;
}
liquidAccuracy.liquid_target_volume = targetVolume;
liquidAccuracy.liquid_accuracy_k = k;
liquidAccuracy.liquid_accuracy_b= b;
return liquidAccuracy;
}
#endregion
#region 计算枪头的吸液体积
public double CalculateAspirateParamVolume(double targetVolume,LiquidAccuracy liquidAccuracy)
{
double dResult = 0.0d;
dResult = (targetVolume - liquidAccuracy.liquid_accuracy_b) / liquidAccuracy.liquid_accuracy_k;
return dResult;
}
#endregion
#region 添加一条新的液体校准参数数据——通过液体校准参数数据
///
/// 添加一条新的液体校准参数数据——通过液体校准参数数据
///
/// 液体校准参数实体
/// 1:添加成功;其他:不成功
public int AddLiquidAccuracyIntodb(LiquidAccuracy liquidAccuracy,out string id)
{
return LiquidAccuracyDB.AddLiquidAccuracyIntodb(liquidAccuracy,out id);
}
#endregion
#region 修改一条新的液体校准参数数据——通过液体校准参数数据
///
/// 修改一条新的液体校准参数数据——通过液体校准参数数据
///
/// 液体校准参数实体
/// 1:添加成功;其他:不成功
public int UpdateLiquidAccuracyIntodb(LiquidAccuracy liquidAccuracy)
{
return LiquidAccuracyDB.UpdateLiquidAccuracyIntodb(liquidAccuracy);
}
#endregion
#region 删除一条新的液体校准参数数据——通过液体校准参数数据
///
/// 删除一条新的液体校准参数数据——通过液体校准参数数据
///
/// 液体校准参数实体对象
///
public int DeleteLiquidAccuracyIntodb(LiquidAccuracy liquidAccuracy)
{
return LiquidAccuracyDB.DeleteLiquidAccuracyIntodb(liquidAccuracy);
}
#endregion
}
}