private static void PreExchangeForAdvance(ExchangeRecord score, List <Airline> firstairline, List <Airline> secondairline) { //时间测试(起飞关系不能乱,等于也不可以,防止前后航班关系错乱) var TakeoffAfterThisTime = secondairline[score.secondIndex - 1].ModifiedEndTime.AddMinutes(Utility.StayAtAirPortMinutes); var AddTime = TakeoffAfterThisTime.Subtract(firstairline[score.firstIndex].ModifiedStartTime); if (AddTime.TotalMinutes > 0) { //尝试是否能够将first整体后移 for (int i = score.firstIndex; i < firstairline.Count; i++) { firstairline[i].ModifiedStartTime += AddTime; } } TakeoffAfterThisTime = firstairline[score.firstIndex - 1].ModifiedEndTime.AddMinutes(Utility.StayAtAirPortMinutes); AddTime = TakeoffAfterThisTime.Subtract(secondairline[score.secondIndex].ModifiedStartTime); if (AddTime.TotalMinutes > 0) { //尝试是否能够将first整体后移 for (int i = score.secondIndex; i < secondairline.Count; i++) { secondairline[i].ModifiedStartTime += AddTime; } } }
//ищем подходящий нам банк в соответствии с настройками private static Bank findRequestedBank() { List <ExchangeRecord> requestedCurrencyRecords = (from rec in db.ExchangeRecords.Include("Bank") where rec.CurrencyType.Id == Settings.Currency.Id select rec).ToList(); ExchangeRecord requestedRecord = (from rec in requestedCurrencyRecords where Settings.Profitable ? ( Settings.Sell ? rec.Sell == requestedCurrencyRecords.Min(r => r.Sell) : rec.Buy == requestedCurrencyRecords.Max(r => r.Buy) ) : ( Settings.Sell ? rec.Sell == requestedCurrencyRecords.Max(r => r.Sell) : rec.Buy == requestedCurrencyRecords.Min(r => r.Buy) ) && rec.CurrencyType.Id == Settings.Currency.Id select rec).FirstOrDefault(); return(requestedRecord.Bank); }
//проверяем актуальность курсов валют, пытаемся найти любую запись с сегодяшней датой public static bool currenciesExchangeIsRelevant() { ExchangeRecord checkRecord = findExchangeRecord(db.Banks.FirstOrDefault(), db.Currencies.FirstOrDefault(), DateTime.Now); if (checkRecord == null) { return(false); } return(true); }
/// <inheritdoc /> public bool Upsert(ExchangeRecord record) { try { m_Records.InsertOne(record); return(true); } catch (Exception e) { Console.WriteLine(e); return(false); } }
public static List <BankMark> getBankDepartmentsMarks(PointLatLng userLocation, int radius) { List <BankMark> marks = new List <BankMark>(); List <BankDepartment> requestedDepartments; if (Settings.AllBanks) { requestedDepartments = db.Departments.Include("Bank").ToList(); } else { Bank requestedBank = findRequestedBank(); requestedDepartments = (from dep in db.Departments.Include("Bank") where dep.Bank.Id == requestedBank.Id select dep).ToList(); } foreach (BankDepartment department in requestedDepartments) { if (distance(department.getPointLatLng(), userLocation) > radius) { continue; } ExchangeRecord record = findExchangeRecord(department.Bank, Settings.Currency, DateTime.Now.Date); if (record == null) { continue; } marks.Add(new BankMark() { Title = department.Bank.Name + "\n" + (Settings.Sell ? "Продажа" : "Покупка") + "\n" + record.CurrencyType.Code.ToUpper() + " " + (Settings.Sell ? record.Buy : record.Sell) + "\n", Location = new PointLatLng(department.LocationLat, department.LocationLng) }); } return(marks); }
void Query() { try { GameServer server = ServerDropDownList.SelectedGameServer; if (server == null) { LabelOpMsg.Text = string.Format(StringDef.MsgCannotBeNone, StringDef.GameServer); return; } if (!server.IsConnected) { LabelOpMsg.Text = StringDef.NoConnectionAlert; return; } ArrayList paramList = new ArrayList(); StringBuilder searchCondition = new StringBuilder(); searchCondition.AppendFormat("WHERE {0}={1}", FS2TableString.LogFieldLogEvent, LogEvent.ExchangeItem); string itemName = TextBoxInputItemName.Text.Trim(); if (itemName.Length != 0) { searchCondition.AppendFormat(" AND {0} LIKE '?'", FS2TableString.LogFieldLogData); if (CheckBoxItemName.Checked) { paramList.Add(string.Format("%“{0}”%", itemName)); } else { paramList.Add(string.Format("%“%{0}%”%", itemName)); } } string giverName = TextBoxInputGiver.Text.Trim(); if (giverName.Length != 0) { if (CheckBoxGiver.Checked) { searchCondition.AppendFormat(" AND {0} IN ({1})", FS2TableString.LogFieldLogKey1, string.Format("SELECT {0} FROM {1} WHERE {2}='?'", FS2TableString.RolesfirstFieldGUID, FS2TableString.RolesfirstTableName, FS2TableString.RolesfirstFieldRoleName)); } else { searchCondition.AppendFormat(" AND {0} IN ({1})", FS2TableString.LogFieldLogKey1, string.Format("SELECT {0} FROM {1} WHERE {2} LIKE '%?%'", FS2TableString.RolesfirstFieldGUID, FS2TableString.RolesfirstTableName, FS2TableString.RolesfirstFieldRoleName)); } paramList.Add(giverName); } string receiverName = TextBoxInputReceiver.Text.Trim(); if (receiverName.Length != 0) { if (CheckBoxReceiver.Checked) { searchCondition.AppendFormat(" AND {0} IN ({1})", FS2TableString.LogFieldLogKey3, string.Format("SELECT {0} FROM {1} WHERE {2} = '?'", FS2TableString.RolesfirstFieldGUID, FS2TableString.RolesfirstTableName, FS2TableString.RolesfirstFieldRoleName)); } else { searchCondition.AppendFormat(" AND {0} IN ({1})", FS2TableString.LogFieldLogKey3, string.Format("SELECT {0} FROM {1} WHERE {2} LIKE '%?%'", FS2TableString.RolesfirstFieldGUID, FS2TableString.RolesfirstTableName, FS2TableString.RolesfirstFieldRoleName)); } paramList.Add(receiverName); } _start = StartDate.SelectedDate; if (_start == DateTime.MinValue) { LabelOpMsg.Text = StringDef.ParameterInputError; return; } _end = EndDate.SelectedDate; if (_end == DateTime.MinValue) { LabelOpMsg.Text = StringDef.ParameterInputError; return; } searchCondition.Append(string.Format(" AND {0}>='{1}' AND {0}<'{2}'", FS2TableString.LogFieldLogTime, _start.ToString("yyyy-MM-dd HH:mm:ss"), _end.ToString("yyyy-MM-dd HH:mm:ss"))); string baseCmdString = string.Format("SELECT LogKey1,LogKey3,LogData,LogTime FROM {0} {1}", "{0}", searchCondition.ToString()); string addTableCmdString; WebUtil.AddTableNameToCmd(CurrentUser.Id, server, baseCmdString, paramList, _start, _end, out addTableCmdString, out paramList); if (addTableCmdString.Length == 0) { // return; } string cmdString = "SELECT LogKey1,LogKey3,LogData,LogTime FROM ({0}) AS A ORDER BY LogTime"; SqlCommand cmd = new SqlCommand(string.Format(cmdString, addTableCmdString), paramList.ToArray()); SqlResult result = WebUtil.QueryGameServerDb(CurrentUser.Id, server, cmd); if (result != null && result.Success) { result.SetFieldType(new SqlDataType[] { SqlDataType.String, SqlDataType.String, SqlDataType.Blob, SqlDataType.DateTime }); object[] record = null; ArrayList infos = new ArrayList(); ArrayList roleGuidList = new ArrayList(); while ((record = result.ReadRecord()) != null) { ExchangeRecord info = new ExchangeRecord(); info.giverGuid = record[0] as string; if (info.giverGuid != null && !roleGuidList.Contains(info.giverGuid)) { roleGuidList.Add(info.giverGuid); } info.receiverGuid = record[1] as string; if (info.receiverGuid != null && !roleGuidList.Contains(info.receiverGuid)) { roleGuidList.Add(info.receiverGuid); } info.time = (DateTime)record[3]; string blobData = Encoding.Default.GetString((byte[])record[2]); blobData = blobData.Replace("“", "\""); blobData = blobData.Replace("”", "\""); string[] blobDataSplit = blobData.Split('\"'); info.itemName = blobDataSplit[3]; infos.Add(info); } if (infos.Count == 0) { //没有查询到信息 LabelOpMsg.Text = StringDef.NoMatchingRecord; PanelResult.Visible = false; } else { PanelResult.Visible = true; DataGridResult.DataSource = CreateDataSource(infos, GetRoleGuid(roleGuidList)); DataGridResult.DataBind(); } } else { if (result == null) { LabelOpMsg.Text = StringDef.QueryTimeOut; } else { LabelOpMsg.Text = StringDef.OperationFail; } PanelResult.Visible = false; } } catch (Exception ex) { PanelResult.Visible = false; LabelOpMsg.Text = ex.Message; } }
/// <inheritdoc /> public ExchangeRecord SelectExchangeRecord(ExchangeRecord record) => m_Records.FindSync( Builders <ExchangeRecord> .Filter.Eq("_id.date", record.Date) & Builders <ExchangeRecord> .Filter.Eq("_id.from", record.From) & Builders <ExchangeRecord> .Filter.Eq("_id.to", record.To) ).SingleOrDefault();
void Query() { try { GameServer server = ServerDropDownList.SelectedGameServer; if (server == null) { LabelOpMsg.Text = string.Format(StringDef.MsgCannotBeNone, StringDef.GameServer); return; } if (!server.IsConnected) { LabelOpMsg.Text = StringDef.NoConnectionAlert; return; } ArrayList paramList = new ArrayList(); StringBuilder searchCondition = new StringBuilder(); searchCondition.AppendFormat("WHERE {0}={1}",FS2TableString.LogFieldLogEvent,LogEvent.ExchangeItem); string itemName = TextBoxInputItemName.Text.Trim(); if (itemName.Length != 0) { searchCondition.AppendFormat(" AND {0} LIKE '?'", FS2TableString.LogFieldLogData); if (CheckBoxItemName.Checked) paramList.Add(string.Format("%“{0}”%",itemName)); else paramList.Add(string.Format("%“%{0}%”%",itemName)); } string giverName = TextBoxInputGiver.Text.Trim(); if (giverName.Length != 0) { if (CheckBoxGiver.Checked) { searchCondition.AppendFormat(" AND {0} IN ({1})", FS2TableString.LogFieldLogKey1, string.Format("SELECT {0} FROM {1} WHERE {2}='?'", FS2TableString.RolesfirstFieldGUID, FS2TableString.RolesfirstTableName, FS2TableString.RolesfirstFieldRoleName)); } else { searchCondition.AppendFormat(" AND {0} IN ({1})", FS2TableString.LogFieldLogKey1, string.Format("SELECT {0} FROM {1} WHERE {2} LIKE '%?%'", FS2TableString.RolesfirstFieldGUID, FS2TableString.RolesfirstTableName, FS2TableString.RolesfirstFieldRoleName)); } paramList.Add(giverName); } string receiverName = TextBoxInputReceiver.Text.Trim(); if (receiverName.Length != 0) { if (CheckBoxReceiver.Checked) { searchCondition.AppendFormat(" AND {0} IN ({1})", FS2TableString.LogFieldLogKey3, string.Format("SELECT {0} FROM {1} WHERE {2} = '?'", FS2TableString.RolesfirstFieldGUID, FS2TableString.RolesfirstTableName, FS2TableString.RolesfirstFieldRoleName)); } else { searchCondition.AppendFormat(" AND {0} IN ({1})", FS2TableString.LogFieldLogKey3, string.Format("SELECT {0} FROM {1} WHERE {2} LIKE '%?%'", FS2TableString.RolesfirstFieldGUID, FS2TableString.RolesfirstTableName, FS2TableString.RolesfirstFieldRoleName)); } paramList.Add(receiverName); } _start = StartDate.SelectedDate; if (_start == DateTime.MinValue) { LabelOpMsg.Text = StringDef.ParameterInputError; return; } _end = EndDate.SelectedDate; if (_end == DateTime.MinValue) { LabelOpMsg.Text = StringDef.ParameterInputError; return; } searchCondition.Append(string.Format(" AND {0}>='{1}' AND {0}<'{2}'", FS2TableString.LogFieldLogTime, _start.ToString("yyyy-MM-dd HH:mm:ss"), _end.ToString("yyyy-MM-dd HH:mm:ss"))); string baseCmdString = string.Format("SELECT LogKey1,LogKey3,LogData,LogTime FROM {0} {1}", "{0}", searchCondition.ToString()); string addTableCmdString; WebUtil.AddTableNameToCmd(CurrentUser.Id, server, baseCmdString, paramList, _start, _end, out addTableCmdString, out paramList); if (addTableCmdString.Length == 0) { // return; } string cmdString = "SELECT LogKey1,LogKey3,LogData,LogTime FROM ({0}) AS A ORDER BY LogTime"; SqlCommand cmd = new SqlCommand(string.Format(cmdString, addTableCmdString), paramList.ToArray()); SqlResult result = WebUtil.QueryGameServerDb(CurrentUser.Id, server, cmd); if (result != null && result.Success) { result.SetFieldType(new SqlDataType[]{ SqlDataType.String, SqlDataType.String, SqlDataType.Blob, SqlDataType.DateTime }); object[] record = null; ArrayList infos = new ArrayList(); ArrayList roleGuidList = new ArrayList(); while ((record = result.ReadRecord()) != null) { ExchangeRecord info = new ExchangeRecord(); info.giverGuid = record[0] as string; if (info.giverGuid != null && !roleGuidList.Contains(info.giverGuid)) roleGuidList.Add(info.giverGuid); info.receiverGuid = record[1] as string; if (info.receiverGuid != null && !roleGuidList.Contains(info.receiverGuid)) roleGuidList.Add(info.receiverGuid); info.time = (DateTime)record[3]; string blobData = Encoding.Default.GetString((byte[])record[2]); blobData = blobData.Replace("“", "\""); blobData = blobData.Replace("”", "\""); string[] blobDataSplit = blobData.Split('\"'); info.itemName = blobDataSplit[3]; infos.Add(info); } if (infos.Count == 0) { //没有查询到信息 LabelOpMsg.Text = StringDef.NoMatchingRecord; PanelResult.Visible = false; } else { PanelResult.Visible = true; DataGridResult.DataSource = CreateDataSource(infos, GetRoleGuid(roleGuidList)); DataGridResult.DataBind(); } } else { if (result == null) LabelOpMsg.Text = StringDef.QueryTimeOut; else LabelOpMsg.Text = StringDef.OperationFail; PanelResult.Visible = false; } } catch (Exception ex) { PanelResult.Visible = false; LabelOpMsg.Text = ex.Message; } }
static ExchangeRecord ExchangeEvaluateAdvance(string firstPlaneId, string secondPlandId) { ExchangeRecord Rtn = new ExchangeRecord(); Rtn.DiffScore = 0; List <Airline> first = Solution.PlaneIdAirlineDic[firstPlaneId]; List <Airline> second = Solution.PlaneIdAirlineDic[secondPlandId]; //测试一下当前分数: double FirstScore = scoreDic[firstPlaneId]; double SecondScore = scoreDic[secondPlandId]; var TotalScore = FirstScore + SecondScore; var FirstTyphoonRange = CoreAlgorithm.GetTyphoonRange(first); var SecondTyphonnRange = CoreAlgorithm.GetTyphoonRange(second); for (int firstIdx = Math.Max(FirstTyphoonRange.StartIndex - 2, 2); firstIdx < FirstTyphoonRange.EndIndex; firstIdx++) { //首航班不调整 if (firstIdx == 0) { continue; } //是否存在无法降落的航班 var firstAirline = first[firstIdx]; //相同起飞机场的检查 var FocusAirport = firstAirline.StartAirPort; for (int secondIdx = Math.Max(SecondTyphonnRange.StartIndex - 2, 2); secondIdx < SecondTyphonnRange.EndIndex; secondIdx++) { //首航班不调整 if (secondIdx == 0) { continue; } var secondAirline = second[secondIdx]; if (secondAirline.StartAirPort != FocusAirport) { continue; } //联程不能换飞机(但是可以同时换两个) if ((first[firstIdx].ComboAirline != null && !first[firstIdx].IsFirstCombinedVoyage) || second[secondIdx].ComboAirline != null && !second[secondIdx].IsFirstCombinedVoyage) { continue; } var FirstAirlineListClone = Utility.DeepCopy(first); var SecondAirlineListClone = Utility.DeepCopy(second); //时间测试(起飞关系不能乱,等于也不可以,防止前后航班关系错乱) var TakeoffAfterThisTime = SecondAirlineListClone[secondIdx - 1].ModifiedEndTime.AddMinutes(Utility.StayAtAirPortMinutes); var AddTime = TakeoffAfterThisTime.Subtract(FirstAirlineListClone[firstIdx].ModifiedStartTime); if (AddTime.TotalMinutes > 0) { //尝试是否能够将first整体后移 for (int i = firstIdx; i < first.Count; i++) { FirstAirlineListClone[i].ModifiedStartTime += AddTime; } } TakeoffAfterThisTime = FirstAirlineListClone[firstIdx - 1].ModifiedEndTime.AddMinutes(Utility.StayAtAirPortMinutes); AddTime = TakeoffAfterThisTime.Subtract(SecondAirlineListClone[secondIdx].ModifiedStartTime); if (AddTime.TotalMinutes > 0) { //尝试是否能够将first整体后移 for (int i = secondIdx; i < second.Count; i++) { SecondAirlineListClone[i].ModifiedStartTime += AddTime; } } if (!Exchange(FirstAirlineListClone, firstIdx, SecondAirlineListClone, secondIdx)) { continue; } var FirstForTest = new List <Airline>(); var SecondForTest = new List <Airline>(); foreach (var air in FirstAirlineListClone) { if (air.ModifiedPlaneID == firstPlaneId) { FirstForTest.Add(air); } else { SecondForTest.Add(air); } } foreach (var air in SecondAirlineListClone) { if (air.ModifiedPlaneID == firstPlaneId) { FirstForTest.Add(air); } else { SecondForTest.Add(air); } } //测试一下交换后分数 FirstForTest.Sort((x, y) => { return(x.ModifiedStartTime.CompareTo(y.ModifiedStartTime)); }); SecondForTest.Sort((x, y) => { return(x.ModifiedStartTime.CompareTo(y.ModifiedStartTime)); }); var FirstScoreAfter = Solution.FixAirline(FirstForTest, true).Score; if (FirstScoreAfter == double.MaxValue) { continue; } var SecondScoreAfter = Solution.FixAirline(SecondForTest, true).Score; if (SecondScoreAfter == double.MaxValue) { continue; } var TotalScoreAfter = FirstScoreAfter + SecondScoreAfter; var Minius = Math.Round(TotalScoreAfter, 0) - Math.Round(TotalScore, 0); Rtn = new ExchangeRecord() { firstIndex = firstIdx, secondIndex = secondIdx, firstPlaneId = firstPlaneId, secondPlaneId = secondPlandId, firstScore = FirstScoreAfter, secondScore = SecondScoreAfter, DiffScore = Minius, }; return(Rtn); } } return(Rtn); }