| | |
| | | /// </summary> |
| | | /// <param name="pumps">泵列表</param> |
| | | /// <returns></returns> |
| | | public bool AnaCombine(List<Pump> pumps) |
| | | public void AnaCombine(List<Pump> pumps) |
| | | { |
| | | |
| | | InsertAnaLog("开始分析泵组合"); |
| | | if (pumps == null || pumps.Count < 1) |
| | | { |
| | | InsertAnaLog("分析失败:pumps == null || pumps.Count < 1"); |
| | | return false; |
| | | return; |
| | | } |
| | | var fre_def = _frequency_def; |
| | | var anaPumpItems = new List<AnaPumpItem>(); |
| | |
| | | if (anaPumpItems.Count < 1) |
| | | { |
| | | InsertAnaLog("分析失败:anaPumpItems.Count < 1"); |
| | | return false; |
| | | return; |
| | | } |
| | | |
| | | |
| | | string runFlag; |
| | | List<AnaPumpFreItem> pump1, pump2, pump3; |
| | | var maxPumpCount = 2; |
| | | var maxPumpCount = 1; |
| | | var anaPumpItemsArray = anaPumpItems.ToArray(); |
| | | var parallelHelper = new ParallelConnectionHelper(); |
| | | for (int pumpCount = 1; pumpCount <= maxPumpCount; pumpCount++) |
| | |
| | | { |
| | | case 1: |
| | | { |
| | | |
| | | for (int i = 0; i < pumpCombineCount; i++) |
| | | { |
| | | |
| | |
| | | scheduleCombine.Pump1 = freItem.Frequency; |
| | | scheduleCombine.CurveQH = freItem.CurveQH.ToJson(); |
| | | scheduleCombine.CurveQP = freItem.CurveQP.ToJson(); |
| | | |
| | | freItem.CurveQH.GetMinMaxPointY(out double maxHead, out double minHead); |
| | | scheduleCombine.MinFlow = freItem.CurveQH.Min; |
| | | scheduleCombine.MaxFlow = freItem.CurveQH.Max; |
| | | scheduleCombine.MaxHead = maxHead; |
| | | scheduleCombine.MinHead = minHead; |
| | | scheduleCombine.AnaStatus = false; |
| | | list.Add(scheduleCombine); |
| | | } |
| | | var bol = BulkInsertScheduleCombineList(runFlag, list); |
| | | if (bol) |
| | | { |
| | | InsertAnaLog($"分析进度:{pumpCount}台泵,{runFlag}-{list.Count},插入成功!"); |
| | | } |
| | | else |
| | | { |
| | | InsertAnaLog($"分析进度:{pumpCount}台泵,{runFlag}-{list.Count},插入失败!"); |
| | | } |
| | | |
| | | InsertCombine(i + 1, runFlag, list); |
| | | } |
| | | InsertAnaLog($"分析进度:{pumpCount}台泵,分析完毕!"); |
| | | } |
| | |
| | | scheduleCombine.RunCount = pumpCount; |
| | | scheduleCombine.Pump1 = freItem1.Frequency; |
| | | scheduleCombine.Pump2 = freItem2.Frequency; |
| | | scheduleCombine.CurveQH = FitHelper.BuildCurveExpress(pointQH).ToJson(); |
| | | scheduleCombine.CurveQP = FitHelper.BuildCurveExpress(pointQP).ToJson(); |
| | | |
| | | var curveQH = FitHelper.BuildCurveExpress(pointQH); |
| | | var curveQP = FitHelper.BuildCurveExpress(pointQP); |
| | | |
| | | scheduleCombine.CurveQH = curveQH.ToJson(); |
| | | scheduleCombine.CurveQP = curveQP.ToJson(); |
| | | |
| | | curveQH.GetMinMaxPointY(out double maxHead, out double minHead); |
| | | scheduleCombine.MinFlow = curveQH.Min; |
| | | scheduleCombine.MaxFlow = curveQH.Max; |
| | | scheduleCombine.MaxHead = maxHead; |
| | | scheduleCombine.MinHead = minHead; |
| | | scheduleCombine.AnaStatus = false; |
| | | list.Add(scheduleCombine); |
| | | } |
| | | } |
| | | var bol = BulkInsertScheduleCombineList(runFlag, list); |
| | | if (bol) |
| | | { |
| | | InsertAnaLog($"分析进度:{pumpCount}台泵,{runFlag}-{list.Count},插入成功!"); |
| | | } |
| | | else |
| | | { |
| | | InsertAnaLog($"分析进度:{pumpCount}台泵,{runFlag}-{list.Count},插入失败!"); |
| | | } |
| | | InsertCombine(i + 1, runFlag, list); |
| | | } |
| | | InsertAnaLog($"分析进度:{pumpCount}台泵,分析完毕!"); |
| | | } |
| | |
| | | scheduleCombine.Pump1 = freItem1.Frequency; |
| | | scheduleCombine.Pump2 = freItem2.Frequency; |
| | | scheduleCombine.Pump3 = freItem3.Frequency; |
| | | scheduleCombine.CurveQH = FitHelper.BuildCurveExpress(pointQH).ToJson(); |
| | | scheduleCombine.CurveQP = FitHelper.BuildCurveExpress(pointQP).ToJson(); |
| | | |
| | | var curveQH = FitHelper.BuildCurveExpress(pointQH); |
| | | var curveQP = FitHelper.BuildCurveExpress(pointQP); |
| | | |
| | | scheduleCombine.CurveQH = curveQH.ToJson(); |
| | | scheduleCombine.CurveQP = curveQP.ToJson(); |
| | | |
| | | curveQH.GetMinMaxPointY(out double maxHead, out double minHead); |
| | | scheduleCombine.MinFlow = curveQH.Min; |
| | | scheduleCombine.MaxFlow = curveQH.Max; |
| | | scheduleCombine.MaxHead = maxHead; |
| | | scheduleCombine.MinHead = minHead; |
| | | scheduleCombine.AnaStatus = false; |
| | | list.Add(scheduleCombine); |
| | | } |
| | | } |
| | | } |
| | | var bol = BulkInsertScheduleCombineList(runFlag, list); |
| | | if (bol) |
| | | { |
| | | InsertAnaLog($"分析进度:{pumpCount}台泵,{runFlag}-{list.Count},插入成功!"); |
| | | } |
| | | else |
| | | { |
| | | InsertAnaLog($"分析进度:{pumpCount}台泵,{runFlag}-{list.Count},插入失败!"); |
| | | } |
| | | InsertCombine(i + 1, runFlag, list); |
| | | } |
| | | InsertAnaLog($"分析进度:{pumpCount}台泵,分析完毕!"); |
| | | } |
| | |
| | | default: break; |
| | | } |
| | | } |
| | | InsertAnaLog("分析泵组合完成"); |
| | | return true; |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 分析结论 |
| | | /// </summary> |
| | | public void AnaConclusion() |
| | | { |
| | | //_dalScheduleConclusion.DeleteAllTable(); |
| | | //return; |
| | | InsertAnaLog("开始分析泵组合结论"); |
| | | InsertAnaLog($"开始分析泵组合结论!"); |
| | | _dalScheduleConclusion.DeleteAllTable(); |
| | | var scheduleCombineTableNames = _dal.GetAllTableName(); |
| | | if (scheduleCombineTableNames == null || !scheduleCombineTableNames.Any()) |
| | | { |
| | | InsertAnaLog("分析失败:scheduleCombineTableNames == null || !scheduleCombineTableNames.Any()"); |
| | | InsertAnaLog($"无泵组合表!"); |
| | | return; |
| | | } |
| | | var tableCount = scheduleCombineTableNames.Count(); |
| | | InsertAnaLog($"分析进度:{tableCount}个组合"); |
| | | InsertAnaLog($"分析{tableCount}个组合!"); |
| | | for (int tableIndex = 0; tableIndex < tableCount; tableIndex++) |
| | | { |
| | | var tableName = scheduleCombineTableNames[tableIndex]; |
| | | var runFlag = tableName.Split('_').Last(); |
| | | InsertAnaLog($"分析进度:{tableName},第{tableIndex + 1}个"); |
| | | var scheduleCombineList = _dal.GetAllUnanalyzedAnaByTableName(tableName); |
| | | if (scheduleCombineList == null || !scheduleCombineList.Any()) |
| | | { |
| | | InsertAnaLog($"分析进度:{tableName},分析完毕"); |
| | | InsertAnaLog($"分析进度:{tableName},第{tableIndex + 1}个,分析完毕"); |
| | | continue; |
| | | } |
| | | var scheduleCombineListCount = scheduleCombineList.Count(); |
| | | InsertAnaLog($"分析进度:{tableName},{scheduleCombineListCount}条未分析数据"); |
| | | |
| | | var scheduleConclusionList = new List<List<Entity.ScheduleConclusion>>(scheduleCombineListCount); |
| | | var scheduleCombineIds = new List<long>(scheduleCombineListCount); |
| | | |
| | | for (int combineIndex = 0; combineIndex < scheduleCombineListCount; combineIndex++) |
| | | { |
| | | var scheduleCombine = scheduleCombineList[combineIndex]; |
| | |
| | | var curveQP = JsonHelper.Json2Object<Curve.CurveExpress>(scheduleCombine.CurveQP); |
| | | var bol = curveQH.GetMinMaxPointY(out double maxY, out double minY); |
| | | if (!bol) |
| | | { |
| | | continue; |
| | | } |
| | | return; |
| | | var maxHead = Math.Ceiling(maxY); |
| | | var minHead = Math.Floor(minY); |
| | | |
| | |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | var scheduleConclusion = new Entity.ScheduleConclusion(); |
| | | scheduleConclusion.ScheduleCombineID = scheduleCombineID; |
| | | scheduleConclusion.RunFlag = scheduleCombine.RunFlag; |
| | |
| | | } |
| | | SetAnaStatus(tableName, scheduleCombineIds); |
| | | var list = scheduleConclusionList.SelectMany(x => x.ToList()).ToList(); |
| | | BulkInsertScheduleConclusionList(runFlag, list); |
| | | InsertAnaLog($"分析进度:{tableName},{scheduleCombineIds.Count}条,分析完毕"); |
| | | var runFlag = list[0].RunFlag; |
| | | InsertConclusion(tableIndex + 1, runFlag, list); |
| | | } |
| | | InsertAnaLog("泵组合分析完毕"); |
| | | } |
| | | |
| | | |
| | |
| | | return _dal.ExistTable(runFlag); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 脏插入调度组合列表 |
| | | /// </summary> |
| | | private bool BulkInsertScheduleCombineList(List<Entity.ScheduleCombine> list) |
| | | { |
| | | if (list == null || !list.Any()) |
| | | return false; |
| | | var bol = _dal.BulkInserts_SplitTable(list); |
| | | return bol; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 脏插入调度组合列表 |
| | | /// </summary> |
| | | private bool BulkInsertScheduleCombineList(string runFlag, List<Entity.ScheduleCombine> list) |
| | | public void InsertCombine(int index, string runFlag, List<Entity.ScheduleCombine> list) |
| | | { |
| | | if (list == null || !list.Any()) |
| | | return false; |
| | | var bol = _dal.BulkInserts_SplitTable_Create(runFlag, list); |
| | | return bol; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 脏插入调度组合列表 |
| | | /// </summary> |
| | | private bool BulkInsert_NativeSql_ScheduleCombineList(string runFlag, List<Entity.ScheduleCombine> list) |
| | | { |
| | | if (list == null || !list.Any()) |
| | | return false; |
| | | var bol = _dal.BulkInserts_NativeSql(runFlag, list); |
| | | return bol; |
| | | { |
| | | var log = $"{runFlag}:下标:{index},无数据"; |
| | | InsertAnaLog(log); |
| | | return; |
| | | } |
| | | Task.Run(() => |
| | | { |
| | | var sw = Stopwatch.StartNew(); |
| | | var db = new DAL.ScheduleCombine(); |
| | | db.BulkInserts_Create(runFlag, list); |
| | | var log = $"{runFlag}:下标:{index},数量:{list.Count},插入耗时:{sw.ElapsedMilliseconds / 1000}m"; |
| | | InsertAnaLog(log); |
| | | }); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 脏插入调度结论列表 |
| | | /// </summary> |
| | | private bool BulkInsertScheduleConclusionList(List<Entity.ScheduleConclusion> list) |
| | | public void InsertConclusion(int index, string runFlag, List<Entity.ScheduleConclusion> list) |
| | | { |
| | | if (list == null || !list.Any()) |
| | | return false; |
| | | var bol = _dalScheduleConclusion.BulkInserts_SplitTable(list); |
| | | return bol; |
| | | { |
| | | var log = $"{runFlag}:下标:{index},无数据"; |
| | | InsertAnaLog(log); |
| | | return; |
| | | } |
| | | Task.Run(() => |
| | | { |
| | | var sw = Stopwatch.StartNew(); |
| | | var db = new DAL.ScheduleConclusion(); |
| | | db.BulkInserts_Create(runFlag, list); |
| | | var log = $"分析进度:{runFlag},下标:{index},数量:{list.Count},插入耗时:{sw.ElapsedMilliseconds / 1000}m"; |
| | | InsertAnaLog(log); |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 脏插入调度结论列表 |
| | | /// </summary> |
| | | private bool BulkInsertScheduleConclusionList(string runFlag, List<Entity.ScheduleConclusion> list) |
| | | { |
| | | if (list == null || !list.Any()) |
| | | return false; |
| | | var bol = _dalScheduleConclusion.BulkInserts_SplitTable_Create(runFlag, list); |
| | | return bol; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 脏插入调度结论列表 |
| | | /// </summary> |
| | | private bool BulkInsert_NativeSql_ScheduleConclusionList(string runFalg, List<Entity.ScheduleConclusion> list) |
| | | { |
| | | if (list == null || !list.Any()) |
| | | return false; |
| | | var bol = _dalScheduleConclusion.BulkInserts_NativeSql(runFalg, list); |
| | | return bol; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | //public void Run(Action action, string description) |
| | | //{ |
| | | // Stopwatch sw = Stopwatch.StartNew(); |
| | | // action(); |
| | | // var log = $"--> {description}:{sw.ElapsedMilliseconds / 1000}m"; |
| | | // InsertAnaLog(log); |
| | | //} |
| | | |
| | | //public T Run<T>(Func<T> func, string description) |
| | | //{ |
| | | // var sw = Stopwatch.StartNew(); |
| | | // T result = func(); |
| | | // var log = $"--> {description}:{sw.ElapsedMilliseconds / 1000}m"; |
| | | // InsertAnaLog(log); |
| | | // return result; |
| | | //} |