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
|
{
|
/// <summary>
|
/// 液体精度校准逻辑处理类
|
/// </summary>
|
public class LiquidAccuracyBll
|
{
|
|
#region 从数据库获取液体参数校准的数据
|
/// <summary>
|
/// 从数据库获取液体参数校准的数据
|
/// </summary>
|
/// <param name="liquidRangeId">液体范围Id</param>
|
/// <param name="deviceArmId">臂Id</param>
|
/// <returns>液体校准数据实体集合</returns>
|
public ObservableCollection<LiquidAccuracy> GetLiquidAccuracyFromdb(int liquidRangeId,int deviceArmId,string liquidTypeId)
|
{
|
return LiquidAccuracyDB.GetLiquidAccuracyFromdb(liquidRangeId,deviceArmId, liquidTypeId);
|
}
|
#endregion
|
|
#region 从数据库获取液体参数校准的数据根据当前请求的体积
|
/// <summary>
|
/// 从数据库获取液体参数校准的数据根据当前请求的体积
|
/// </summary>
|
/// <param name="liquidRangeId">液体范围Id</param>
|
/// <param name="deviceArmId">臂Id</param>
|
/// <param name="targetVolume">目标体积</param>
|
/// <returns>符合条件的液体校准参数数据,最多只有两条</returns>
|
public LiquidAccuracy GetLiquidAccuracyFromdb(int liquidRangeId,int deviceArmId, double targetVolume,string liquidTypeid)
|
{
|
List<LiquidAccuracy> 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 添加一条新的液体校准参数数据——通过液体校准参数数据
|
/// <summary>
|
/// 添加一条新的液体校准参数数据——通过液体校准参数数据
|
/// </summary>
|
/// <param name="liquidAccuracy">液体校准参数实体</param>
|
/// <returns>1:添加成功;其他:不成功</returns>
|
public int AddLiquidAccuracyIntodb(LiquidAccuracy liquidAccuracy,out string id)
|
{
|
return LiquidAccuracyDB.AddLiquidAccuracyIntodb(liquidAccuracy,out id);
|
}
|
#endregion
|
|
#region 修改一条新的液体校准参数数据——通过液体校准参数数据
|
/// <summary>
|
/// 修改一条新的液体校准参数数据——通过液体校准参数数据
|
/// </summary>
|
/// <param name="liquidAccuracy">液体校准参数实体</param>
|
/// <returns>1:添加成功;其他:不成功</returns>
|
public int UpdateLiquidAccuracyIntodb(LiquidAccuracy liquidAccuracy)
|
{
|
return LiquidAccuracyDB.UpdateLiquidAccuracyIntodb(liquidAccuracy);
|
}
|
#endregion
|
|
#region 删除一条新的液体校准参数数据——通过液体校准参数数据
|
/// <summary>
|
/// 删除一条新的液体校准参数数据——通过液体校准参数数据
|
/// </summary>
|
/// <param name="liquidAccuracy">液体校准参数实体对象</param>
|
/// <returns></returns>
|
public int DeleteLiquidAccuracyIntodb(LiquidAccuracy liquidAccuracy)
|
{
|
return LiquidAccuracyDB.DeleteLiquidAccuracyIntodb(liquidAccuracy);
|
}
|
#endregion
|
}
|
}
|