|
|
@@ -30915,215 +30915,22 @@ ORDER by gctggrc.id DESC
|
|
|
airSouer.Add("公务舱SGR", "公务舱及酒店单人间");
|
|
|
airSouer.Add("公务舱JSES", "公务舱及酒店小套房");
|
|
|
airSouer.Add("公务舱SUITE", "公务舱及酒店套房");
|
|
|
+ airSouer.Add("公务舱TBR", "公务舱及酒店双人间");
|
|
|
airSouer.Add("经济舱SUITE", "经济舱及酒店套房");
|
|
|
airSouer.Add("头等舱JSES", "头等舱及酒店小套房");
|
|
|
airSouer.Add("头等舱SUITE", "头等舱及酒店套房");
|
|
|
airSouer.Add("经济舱JSES", "经济舱及酒店小套房");
|
|
|
|
|
|
- var priceDataList = new List<(string rsName, string cbName, string xsName, string prefix)>
|
|
|
- {
|
|
|
- ("VisaRS", "VisaCB", "VisaXS", "qz"),
|
|
|
- ("BXRS", "BXCB", "BXXS", "bx"),
|
|
|
- ("HCPRS", "HCPCB", "HCPXS", "hcp"),
|
|
|
- ("JJCRS", "JJCCB", "JJCXS", "jjc"),
|
|
|
- ("GWCRS", "GWCCB", "GWCXS", "gwc"),
|
|
|
- ("TDCRS", "TDCCB", "TDCXS", "tdc"),
|
|
|
- ("CPRS", "CPCB", "CPXS", "cp"),
|
|
|
- ("HSRS", "HSCB", "HSXS", "hsjc"),
|
|
|
- ("TBRNumber", "TBRCB", "TBRXS", "tbr"),
|
|
|
- ("SGRNumber", "SGRCB", "SGRXS", "sgr"),
|
|
|
- ("JSESNumber", "JSESCB", "JSESXS", "jses"),
|
|
|
- ("SUITENumber", "SUITECB", "SUITEXS", "suite"),
|
|
|
- ("DJRS", "DJCB", "DJXS", "dj"),
|
|
|
- ("GWRS", "GWCB", "GWXS", "gw"),
|
|
|
- ("LYJRS", "LYJCB", "LYJXS", "lyj"),
|
|
|
- };
|
|
|
- var OtherCostPropertyBJ = new string[] { "qz", "hcp", "cp", "bx", "hsjc", "dj", "gw", "lyj" };
|
|
|
- var rightSum = 0.00M;
|
|
|
-
|
|
|
- foreach (var (rsName, cbName, xsName, prefix) in priceDataList)
|
|
|
- {
|
|
|
- var rsValue = (int)mainPrice.GetType().GetProperty(rsName).GetValue(mainPrice);
|
|
|
- var cbValue = (decimal)mainPrice.GetType().GetProperty(cbName).GetValue(mainPrice);
|
|
|
- var xsValue = (decimal)mainPrice.GetType().GetProperty(xsName).GetValue(mainPrice);
|
|
|
-
|
|
|
- if (prefix == "tbr")
|
|
|
- {
|
|
|
- rsValue *= 2;
|
|
|
- cbValue /= 2;
|
|
|
- }
|
|
|
-
|
|
|
- if (OtherCostPropertyBJ.Contains(prefix))
|
|
|
- {
|
|
|
- rightSum += cbValue * xsValue;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- var hotelRooms = new Dictionary<string, int>
|
|
|
- {
|
|
|
- { "SGR", costTypeHotelNumbers.SGR },
|
|
|
- { "TBR", costTypeHotelNumbers.TBR },
|
|
|
- { "JSES", costTypeHotelNumbers.JSES },
|
|
|
- { "SUITE", costTypeHotelNumbers.SUITE }
|
|
|
- };
|
|
|
-
|
|
|
- var flights = new Dictionary<string, int>
|
|
|
- {
|
|
|
- { "经济舱", mainPrice.JJCRS },
|
|
|
- { "公务舱", mainPrice.GWCRS },
|
|
|
- { "头等舱", mainPrice.TDCRS }
|
|
|
- };
|
|
|
-
|
|
|
- var flightRoomMatchingRules = new Dictionary<string, string[]>
|
|
|
- {
|
|
|
- { "经济舱", new[] { "TBR", "SGR", "JSES", "SUITE" } },
|
|
|
- { "公务舱", new[] { "SUITE", "JSES", "SGR" } },
|
|
|
- { "头等舱", new[] { "SUITE", "JSES" } }
|
|
|
- };
|
|
|
-
|
|
|
- var result = new Dictionary<string, int>();
|
|
|
-
|
|
|
- List<AirHotelPrice> airHotelPriceList = new List<AirHotelPrice>();
|
|
|
-
|
|
|
- foreach (var flight in flights.Keys)
|
|
|
- {
|
|
|
- // 获取当前舱位的匹配规则
|
|
|
- if (flightRoomMatchingRules.TryGetValue(flight, out string[] roomTypes))
|
|
|
- {
|
|
|
- MatchRooms(ref hotelRooms, ref flights, roomTypes, flight, ref result);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- #region right计算
|
|
|
-
|
|
|
- if (result.Keys.Contains("经济舱TBR") && result["经济舱TBR"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.JJCCB * mainPrice.JJCXS;
|
|
|
- var hotel = (mainPrice.TBRCB * mainPrice.TBRXS) / 2;
|
|
|
- airHotelPriceList.Add(new
|
|
|
- AirHotelPrice
|
|
|
- {
|
|
|
- Name = "经济舱TBR",
|
|
|
- Price = rightSum + air + hotel,
|
|
|
- Count = result["经济舱TBR"] * 2
|
|
|
- });
|
|
|
- allPrice += (rightSum + air + hotel) * result["经济舱TBR"] * 2;
|
|
|
- }
|
|
|
-
|
|
|
- if (result.Keys.Contains("经济舱SGR") && result["经济舱SGR"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.JJCCB * mainPrice.JJCXS;
|
|
|
- var hotel = mainPrice.SGRCB * mainPrice.SGRXS;
|
|
|
- airHotelPriceList.Add(new
|
|
|
- AirHotelPrice
|
|
|
- {
|
|
|
- Name = "经济舱SGR",
|
|
|
- Price = rightSum + air + hotel,
|
|
|
- Count = result["经济舱SGR"]
|
|
|
- });
|
|
|
- allPrice += (rightSum + air + hotel) * result["经济舱SGR"];
|
|
|
- }
|
|
|
-
|
|
|
- if (result.Keys.Contains("公务舱SGR") && result["公务舱SGR"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.GWCCB * mainPrice.GWCXS;
|
|
|
- var hotel = mainPrice.SGRCB * mainPrice.SGRXS;
|
|
|
- airHotelPriceList.Add(new
|
|
|
- AirHotelPrice
|
|
|
- {
|
|
|
- Name = "公务舱SGR",
|
|
|
- Price = rightSum + air + hotel,
|
|
|
- Count = result["公务舱SGR"]
|
|
|
- });
|
|
|
- allPrice += (rightSum + air + hotel) * result["公务舱SGR"];
|
|
|
- }
|
|
|
-
|
|
|
- if (result.Keys.Contains("公务舱JSES") && result["公务舱JSES"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.GWCCB * mainPrice.GWCXS;
|
|
|
- var hotel = mainPrice.JSESCB * mainPrice.JSESXS;
|
|
|
- airHotelPriceList.Add(new
|
|
|
- AirHotelPrice
|
|
|
- {
|
|
|
- Name = "公务舱JSES",
|
|
|
- Price = rightSum + air + hotel,
|
|
|
- Count = result["公务舱JSES"]
|
|
|
- });
|
|
|
- allPrice += (rightSum + air + hotel) * result["公务舱JSES"];
|
|
|
- }
|
|
|
-
|
|
|
- if (result.Keys.Contains("公务舱SUITE") && result["公务舱SUITE"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.GWCCB * mainPrice.GWCXS;
|
|
|
- var hotel = mainPrice.SUITECB * mainPrice.SUITEXS;
|
|
|
- airHotelPriceList.Add(new
|
|
|
- AirHotelPrice
|
|
|
- {
|
|
|
- Name = "公务舱SUITE",
|
|
|
- Price = rightSum + air + hotel,
|
|
|
- Count = result["公务舱SUITE"]
|
|
|
- });
|
|
|
- allPrice += (rightSum + air + hotel) * result["公务舱SUITE"];
|
|
|
- }
|
|
|
-
|
|
|
- if (result.Keys.Contains("经济舱SUITE") && result["经济舱SUITE"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.JJCCB * mainPrice.JJCXS;
|
|
|
- var hotel = mainPrice.SUITECB * mainPrice.SUITEXS;
|
|
|
- airHotelPriceList.Add(new
|
|
|
- AirHotelPrice
|
|
|
- {
|
|
|
- Name = "经济舱SUITE",
|
|
|
- Price = rightSum + air + hotel,
|
|
|
- Count = result["经济舱SUITE"]
|
|
|
- });
|
|
|
- allPrice += (rightSum + air + hotel) * result["经济舱SUITE"];
|
|
|
- }
|
|
|
-
|
|
|
- if (result.Keys.Contains("头等舱JSES") && result["头等舱JSES"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.TDCCB * mainPrice.TDCXS;
|
|
|
- var hotel = mainPrice.JSESCB * mainPrice.JSESXS;
|
|
|
- airHotelPriceList.Add(new
|
|
|
- AirHotelPrice
|
|
|
- {
|
|
|
- Name = "头等舱JSES",
|
|
|
- Price = rightSum + air + hotel,
|
|
|
- Count = result["头等舱JSES"]
|
|
|
- });
|
|
|
- allPrice += (rightSum + air + hotel) * result["头等舱JSES"];
|
|
|
- }
|
|
|
-
|
|
|
- if (result.Keys.Contains("头等舱SUITE") && result["头等舱SUITE"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.TDCCB * mainPrice.TDCXS;
|
|
|
- var hotel = mainPrice.SUITECB * mainPrice.SUITEXS;
|
|
|
- airHotelPriceList.Add(new
|
|
|
-AirHotelPrice
|
|
|
- {
|
|
|
- Name = "头等舱SUITE",
|
|
|
- Price = rightSum + air + hotel,
|
|
|
- Count = result["头等舱SUITE"]
|
|
|
- });
|
|
|
- allPrice += (rightSum + air + hotel) * result["头等舱SUITE"];
|
|
|
- }
|
|
|
-
|
|
|
- if (result.Keys.Contains("经济舱JSES") && result["经济舱JSES"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.JJCCB * mainPrice.JJCXS;
|
|
|
- var hotel = mainPrice.JSESCB * mainPrice.JSESXS;
|
|
|
- airHotelPriceList.Add(new
|
|
|
-AirHotelPrice
|
|
|
+ var matchData = CalculateGroupCostAirHotelMatch(mainPrice, costTypeHotelNumbers);
|
|
|
+ var airHotelPriceList = matchData.Items
|
|
|
+ .Select(x => new AirHotelPrice
|
|
|
{
|
|
|
- Name = "经济舱JSES",
|
|
|
- Price = rightSum + air + hotel,
|
|
|
- Count = result["经济舱JSES"]
|
|
|
- });
|
|
|
- allPrice += (rightSum + air + hotel) * result["经济舱JSES"];
|
|
|
- }
|
|
|
-
|
|
|
- #endregion
|
|
|
+ Name = x.CabinType + x.RoomType,
|
|
|
+ Price = x.SinglePrice,
|
|
|
+ Count = x.PassengerCount
|
|
|
+ })
|
|
|
+ .ToList();
|
|
|
+ allPrice = matchData.TotalPrice;
|
|
|
|
|
|
foreach (var item in airSouer.Keys)
|
|
|
{
|
|
|
@@ -31230,9 +31037,6 @@ AirHotelPrice
|
|
|
("GWRS", "GWCB", "GWXS", "gw") ,
|
|
|
("LYJRS", "LYJCB", "LYJXS", "lyj") ,
|
|
|
};
|
|
|
- var OtherCostPropertyBJ = new string[] { "qz", "hcp", "cp", "bx", "hsjc", "dj", "gw", "lyj" };
|
|
|
- var rightSum = 0.00M;
|
|
|
-
|
|
|
foreach (var (rsName, cbName, xsName, prefix) in priceDataList)
|
|
|
{
|
|
|
var rsValue = (int)mainPrice.GetType().GetProperty(rsName).GetValue(mainPrice);
|
|
|
@@ -31245,11 +31049,6 @@ AirHotelPrice
|
|
|
cbValue /= 2;
|
|
|
}
|
|
|
|
|
|
- if (OtherCostPropertyBJ.Contains(prefix))
|
|
|
- {
|
|
|
- rightSum += cbValue * xsValue;
|
|
|
- }
|
|
|
-
|
|
|
if (rsValue == 0)
|
|
|
{
|
|
|
hideRowsList.Add(rowIndex);
|
|
|
@@ -31264,190 +31063,45 @@ AirHotelPrice
|
|
|
rowIndex += 2;
|
|
|
}
|
|
|
|
|
|
- var hotelRooms = new Dictionary<string, int>
|
|
|
- {
|
|
|
- { "SGR", costTypeHotelNumbers.SGR },
|
|
|
- { "TBR", costTypeHotelNumbers.TBR },
|
|
|
- { "JSES", costTypeHotelNumbers.JSES },
|
|
|
- { "SUITE", costTypeHotelNumbers.SUITE }
|
|
|
- };
|
|
|
-
|
|
|
- var flights = new Dictionary<string, int>
|
|
|
- {
|
|
|
- { "经济舱", mainPrice.JJCRS },
|
|
|
- { "公务舱", mainPrice.GWCRS },
|
|
|
- { "头等舱", mainPrice.TDCRS }
|
|
|
- };
|
|
|
-
|
|
|
- var flightRoomMatchingRules = new Dictionary<string, string[]>
|
|
|
- {
|
|
|
- { "经济舱", new[] { "TBR", "SGR", "JSES", "SUITE" } },
|
|
|
- { "公务舱", new[] { "SUITE", "JSES", "SGR" } },
|
|
|
- { "头等舱", new[] { "SUITE", "JSES" } }
|
|
|
- };
|
|
|
-
|
|
|
- var result = new Dictionary<string, int>();
|
|
|
-
|
|
|
- foreach (var flight in flights.Keys)
|
|
|
- {
|
|
|
- // 获取当前舱位的匹配规则
|
|
|
- if (flightRoomMatchingRules.TryGetValue(flight, out string[] roomTypes))
|
|
|
- {
|
|
|
- MatchRooms(ref hotelRooms, ref flights, roomTypes, flight, ref result);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- var allPrice = 0.00M;
|
|
|
+ var matchData = CalculateGroupCostAirHotelMatch(mainPrice, costTypeHotelNumbers);
|
|
|
|
|
|
#region right计算
|
|
|
|
|
|
int airRowIndex = 35;
|
|
|
|
|
|
- if (result.Keys.Contains("经济舱TBR") && result["经济舱TBR"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.JJCCB * mainPrice.JJCXS;
|
|
|
- var hotel = (mainPrice.TBRCB * mainPrice.TBRXS) / 2;
|
|
|
- designer.SetDataSource("jjctbrrs", result["经济舱TBR"] * 2);
|
|
|
- designer.SetDataSource("jjctbrbj", rightSum + air + hotel);
|
|
|
- designer.SetDataSource("jjctbrzbj", (rightSum + air + hotel) * result["经济舱TBR"] * 2);
|
|
|
- allPrice += (rightSum + air + hotel) * result["经济舱TBR"] * 2;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- hideRowsList.Add(airRowIndex);
|
|
|
- }
|
|
|
-
|
|
|
- airRowIndex += 2;
|
|
|
-
|
|
|
- if (result.Keys.Contains("经济舱SGR") && result["经济舱SGR"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.JJCCB * mainPrice.JJCXS;
|
|
|
- var hotel = mainPrice.SGRCB * mainPrice.SGRXS;
|
|
|
- designer.SetDataSource("jjcsgrrs", result["经济舱SGR"]);
|
|
|
- designer.SetDataSource("jjcsgrbj", rightSum + air + hotel);
|
|
|
- designer.SetDataSource("jjcsgrzbj", (rightSum + air + hotel) * result["经济舱SGR"]);
|
|
|
- allPrice += (rightSum + air + hotel) * result["经济舱SGR"];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- hideRowsList.Add(airRowIndex);
|
|
|
- }
|
|
|
-
|
|
|
- airRowIndex += 2;
|
|
|
-
|
|
|
- if (result.Keys.Contains("公务舱SGR") && result["公务舱SGR"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.GWCCB * mainPrice.GWCXS;
|
|
|
- var hotel = mainPrice.SGRCB * mainPrice.SGRXS;
|
|
|
- designer.SetDataSource("gwcsgrrs", result["公务舱SGR"]);
|
|
|
- designer.SetDataSource("gwcsgrbj", rightSum + air + hotel);
|
|
|
- designer.SetDataSource("gwcsgrzbj", (rightSum + air + hotel) * result["公务舱SGR"]);
|
|
|
- allPrice += (rightSum + air + hotel) * result["公务舱SGR"];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- hideRowsList.Add(airRowIndex);
|
|
|
- }
|
|
|
-
|
|
|
- airRowIndex += 2;
|
|
|
-
|
|
|
- if (result.Keys.Contains("公务舱JSES") && result["公务舱JSES"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.GWCCB * mainPrice.GWCXS;
|
|
|
- var hotel = mainPrice.JSESCB * mainPrice.JSESXS;
|
|
|
- designer.SetDataSource("gwcjsesrs", result["公务舱JSES"]);
|
|
|
- designer.SetDataSource("gwcjsesbj", rightSum + air + hotel);
|
|
|
- designer.SetDataSource("gwcjseszbj", (rightSum + air + hotel) * result["公务舱JSES"]);
|
|
|
- allPrice += (rightSum + air + hotel) * result["公务舱JSES"];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- hideRowsList.Add(airRowIndex);
|
|
|
- }
|
|
|
-
|
|
|
- airRowIndex += 2;
|
|
|
-
|
|
|
- if (result.Keys.Contains("公务舱SUITE") && result["公务舱SUITE"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.GWCCB * mainPrice.GWCXS;
|
|
|
- var hotel = mainPrice.SUITECB * mainPrice.SUITEXS;
|
|
|
- designer.SetDataSource("gwcsuiters", result["公务舱SUITE"]);
|
|
|
- designer.SetDataSource("gwcsuitebj", rightSum + air + hotel);
|
|
|
- designer.SetDataSource("gwcsuitezbj", (rightSum + air + hotel) * result["公务舱SUITE"]);
|
|
|
- allPrice += (rightSum + air + hotel) * result["公务舱SUITE"];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- hideRowsList.Add(airRowIndex);
|
|
|
- }
|
|
|
-
|
|
|
- airRowIndex += 2;
|
|
|
-
|
|
|
- if (result.Keys.Contains("经济舱SUITE") && result["经济舱SUITE"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.JJCCB * mainPrice.JJCXS;
|
|
|
- var hotel = mainPrice.SUITECB * mainPrice.SUITEXS;
|
|
|
- designer.SetDataSource("jjcsuiters", result["经济舱SUITE"]);
|
|
|
- designer.SetDataSource("jjcsuitebj", rightSum + air + hotel);
|
|
|
- designer.SetDataSource("jjcsuitezbj", (rightSum + air + hotel) * result["经济舱SUITE"]);
|
|
|
- allPrice += (rightSum + air + hotel) * result["经济舱SUITE"];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- hideRowsList.Add(airRowIndex);
|
|
|
- }
|
|
|
-
|
|
|
- airRowIndex += 2;
|
|
|
-
|
|
|
- if (result.Keys.Contains("头等舱JSES") && result["头等舱JSES"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.TDCCB * mainPrice.TDCXS;
|
|
|
- var hotel = mainPrice.JSESCB * mainPrice.JSESXS;
|
|
|
- designer.SetDataSource("tdcjsesrs", result["头等舱JSES"]);
|
|
|
- designer.SetDataSource("tdcjsesbj", rightSum + air + hotel);
|
|
|
- designer.SetDataSource("tdcjseszbj", (rightSum + air + hotel) * result["头等舱JSES"]);
|
|
|
- allPrice += (rightSum + air + hotel) * result["头等舱JSES"];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- hideRowsList.Add(airRowIndex);
|
|
|
- }
|
|
|
-
|
|
|
- airRowIndex += 2;
|
|
|
+ var quotationBindings = new[]
|
|
|
+ {
|
|
|
+ (CombinationName: "经济舱+TBR", DataSourcePrefix: "jjctbr"),
|
|
|
+ (CombinationName: "经济舱+SGR", DataSourcePrefix: "jjcsgr"),
|
|
|
+ (CombinationName: "公务舱+SGR", DataSourcePrefix: "gwcsgr"),
|
|
|
+ (CombinationName: "公务舱+JSES", DataSourcePrefix: "gwcjses"),
|
|
|
+ (CombinationName: "公务舱+SUITE", DataSourcePrefix: "gwcsuite"),
|
|
|
+ (CombinationName: "经济舱+SUITE", DataSourcePrefix: "jjcsuite"),
|
|
|
+ (CombinationName: "头等舱+JSES", DataSourcePrefix: "tdcjses"),
|
|
|
+ (CombinationName: "头等舱+SUITE", DataSourcePrefix: "tdcsuite"),
|
|
|
+ (CombinationName: "经济舱+JSES", DataSourcePrefix: "jjcjses")
|
|
|
+ };
|
|
|
|
|
|
- if (result.Keys.Contains("头等舱SUITE") && result["头等舱SUITE"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.TDCCB * mainPrice.TDCXS;
|
|
|
- var hotel = mainPrice.SUITECB * mainPrice.SUITEXS;
|
|
|
- designer.SetDataSource("tdcsuiters", result["头等舱SUITE"]);
|
|
|
- designer.SetDataSource("tdcsuitebj", rightSum + air + hotel);
|
|
|
- designer.SetDataSource("tdcsuitezbj", (rightSum + air + hotel) * result["头等舱SUITE"]);
|
|
|
- allPrice += (rightSum + air + hotel) * result["头等舱SUITE"];
|
|
|
- }
|
|
|
- else
|
|
|
+ foreach (var binding in quotationBindings)
|
|
|
{
|
|
|
- hideRowsList.Add(airRowIndex);
|
|
|
- }
|
|
|
-
|
|
|
- airRowIndex += 2;
|
|
|
+ var item = matchData.Items.FirstOrDefault(x => x.CombinationName == binding.CombinationName);
|
|
|
+ if (item == null || item.PassengerCount <= 0)
|
|
|
+ {
|
|
|
+ hideRowsList.Add(airRowIndex);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ designer.SetDataSource($"{binding.DataSourcePrefix}rs", item.PassengerCount);
|
|
|
+ designer.SetDataSource($"{binding.DataSourcePrefix}bj", item.SinglePrice);
|
|
|
+ designer.SetDataSource($"{binding.DataSourcePrefix}zbj", item.TotalPrice);
|
|
|
+ }
|
|
|
|
|
|
- if (result.Keys.Contains("经济舱JSES") && result["经济舱JSES"] > 0)
|
|
|
- {
|
|
|
- var air = mainPrice.JJCCB * mainPrice.JJCXS;
|
|
|
- var hotel = mainPrice.JSESCB * mainPrice.JSESXS;
|
|
|
- designer.SetDataSource("jjcjsesrs", result["经济舱JSES"]);
|
|
|
- designer.SetDataSource("jjcjsesbj", rightSum + air + hotel);
|
|
|
- designer.SetDataSource("jjcjseszbj", (rightSum + air + hotel) * result["经济舱JSES"]);
|
|
|
- allPrice += (rightSum + air + hotel) * result["经济舱JSES"];
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- hideRowsList.Add(airRowIndex);
|
|
|
+ airRowIndex += 2;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
- designer.SetDataSource("AllPrice", "总金额:" + allPrice.ToString("#0.00"));
|
|
|
+ designer.SetDataSource("AllPrice", "总金额:" + matchData.TotalPrice.ToString("#0.00"));
|
|
|
string savePaht = AppSettingsHelper.Get("ExcelBasePath") + "GroupCostQuotations/" + di.TeamName + "_详细报批费用.xls";
|
|
|
var ws = designer.Workbook.Worksheets[0];
|
|
|
foreach (var Rowindex in hideRowsList)
|
|
|
@@ -31534,6 +31188,21 @@ AirHotelPrice
|
|
|
return Ok(JsonView(false, "团组成本房型人数不存在!"));
|
|
|
}
|
|
|
|
|
|
+ var data = CalculateGroupCostAirHotelMatch(mainPrice, costTypeHotelNumbers);
|
|
|
+
|
|
|
+ return Ok(JsonView(true, data.Items.Count > 0 ? "操作成功!" : "暂无可匹配的机票舱位+房型组合!", data, data.Items.Count));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 按团组成本计算机票舱位与房型匹配结果。
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="mainPrice">团组成本主记录</param>
|
|
|
+ /// <param name="costTypeHotelNumbers">Default 房型人数</param>
|
|
|
+ /// <returns>匹配后的组合价格及人数</returns>
|
|
|
+ private GroupCostAirHotelMatchView CalculateGroupCostAirHotelMatch(
|
|
|
+ Grp_GroupCostParameter mainPrice,
|
|
|
+ Grp_CostTypeHotelNumber costTypeHotelNumbers)
|
|
|
+ {
|
|
|
var hotelRooms = new Dictionary<string, int>
|
|
|
{
|
|
|
{ "SGR", Math.Max(costTypeHotelNumbers.SGR, 0) },
|
|
|
@@ -31613,16 +31282,14 @@ AirHotelPrice
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- var data = new GroupCostAirHotelMatchView
|
|
|
+ return new GroupCostAirHotelMatchView
|
|
|
{
|
|
|
- Diid = dto.Diid,
|
|
|
+ Diid = mainPrice.DiId,
|
|
|
Currency = mainPrice.Currency,
|
|
|
Items = items,
|
|
|
TotalPassengerCount = items.Sum(x => x.PassengerCount),
|
|
|
TotalPrice = items.Sum(x => x.TotalPrice)
|
|
|
};
|
|
|
-
|
|
|
- return Ok(JsonView(true, items.Count > 0 ? "操作成功!" : "暂无可匹配的机票舱位+房型组合!", data, items.Count));
|
|
|
}
|
|
|
|
|
|
/// <summary>
|