namespace Yw.Application
|
{
|
/// <summary>
|
/// CurveTool
|
/// </summary>
|
[Route("Curve/Tool")]
|
[ApiDescriptionSettings("Curve", Name = "曲线工具", Order = 1000)]
|
public partial class CurveTool_Controller : IDynamicApiController
|
{
|
/// <summary>
|
/// 生成拟合点列表
|
/// </summary>
|
[Route("GeneralFitPointList@V1.0")]
|
[HttpPost]
|
public List<CurvePoint> GeneralFitPointList([Required] CurveExpressToolInput input)
|
{
|
var fitHelper = new FitHelper(input.DefinePoints, input.FitType);
|
var pointNumber = ConfigHelper.PointNumber;
|
if (input.PointNumber.HasValue)
|
{
|
pointNumber = input.PointNumber.Value;
|
}
|
var list = fitHelper.GetFitPoints(pointNumber);
|
return list;
|
}
|
|
/// <summary>
|
/// 生成泵拟合点列表
|
/// </summary>
|
[Route("GeneralPumpFitPointList@V1.0")]
|
[HttpPost]
|
public PumpCurveExpressToolOutput GeneralPumpFitPointList([Required] PumpCurveExpressToolInput input)
|
{
|
var vm = new PumpCurveExpressToolOutput();
|
|
//扬程
|
var pointNumberQH = ConfigHelper.PointNumber;
|
if (input.PointNumberQH.HasValue)
|
{
|
pointNumberQH = input.PointNumberQH.Value;
|
}
|
var pointListQH = input.DefinePoints.Select(x => new CurvePoint(x.Q, x.H)).ToList();
|
var fitHelperQH = new FitHelper(pointListQH, input.FitTypeQH);
|
vm.PointListQH = fitHelperQH.GetFitPoints(pointNumberQH);
|
|
//功率
|
var hasQP = false;
|
var pointNumberQP = ConfigHelper.PointNumber;
|
if (input.PointNumberQP.HasValue)
|
{
|
pointNumberQP = input.PointNumberQP.Value;
|
}
|
var pointListQP = input.DefinePoints.Where(x => x.P.HasValue).Select(x => new CurvePoint(x.Q, x.P.Value)).ToList();
|
if (pointListQP != null && pointListQP.Count > 3)
|
{
|
var fitPowQP = FitHelper.GetFitPow(input.FitTypeQP);
|
if (pointListQP.Count > fitPowQP)
|
{
|
var fitHelperQP = new FitHelper(pointListQP, input.FitTypeQP);
|
vm.PointListQP = fitHelperQP.GetFitPoints(pointNumberQP);
|
hasQP = true;
|
}
|
}
|
|
|
//效率
|
var hasQE = false;
|
var pointNumberQE = ConfigHelper.PointNumber;
|
if (input.PointNumberQE.HasValue)
|
{
|
pointNumberQE = input.PointNumberQE.Value;
|
}
|
var pointListQE = input.DefinePoints.Where(x => x.E.HasValue).Select(x => new CurvePoint(x.Q, x.E.Value)).ToList();
|
if (pointListQE != null && pointListQE.Count > 3)
|
{
|
var fitPowQE = FitHelper.GetFitPow(input.FitTypeQE);
|
if (pointListQE.Count > fitPowQE)
|
{
|
var fitHelperQE = new FitHelper(pointListQE, input.FitTypeQE);
|
vm.PointListQE = fitHelperQE.GetFitPoints(pointNumberQE);
|
hasQE = true;
|
}
|
}
|
|
if (!hasQP && hasQE)
|
{
|
pointListQP = new List<CurvePoint>();
|
foreach (var item in pointListQE)
|
{
|
var pointQH = pointListQH.Find(x => x.X == item.X);
|
var p = Yw.Calculation.PumpCalcuHelper.CalculateP(pointQH.X, pointQH.Y, item.Y);
|
pointListQP.Add(new CurvePoint(item.X, p));
|
}
|
var fitHelperQP = new FitHelper(pointListQP, input.FitTypeQE);
|
vm.PointListQP = fitHelperQP.GetFitPoints(pointNumberQP);
|
}
|
else if (hasQP && !hasQE)
|
{
|
pointListQE = new List<CurvePoint>();
|
foreach (var item in pointListQP)
|
{
|
var pointQH = pointListQH.Find(x => x.X == item.X);
|
var e = Yw.Calculation.PumpCalcuHelper.CalculateE(pointQH.X, pointQH.Y, item.Y);
|
pointListQE.Add(new CurvePoint(item.X, e));
|
}
|
var fitHelperQE = new FitHelper(pointListQE, input.FitTypeQP);
|
vm.PointListQE = fitHelperQE.GetFitPoints(pointNumberQE);
|
}
|
|
return vm;
|
|
}
|
|
}
|
}
|