Browse Source

优化成本检索,添加成本系数Api

yuanrf 1 week ago
parent
commit
b4a27ffbcf

+ 128 - 24
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -16302,6 +16302,11 @@ FROM
                     x.VisaCountry,
                     x.VisaPrice,
                     x.Id,
+                    IsVisaExemption = x.IsVisaExemption == 1 ? "否" : "是", //免签
+                    IsElectronicSignature = x.IsElectronicSignature == 1 ? "否" : "是", //电子签
+                    IsVisaOnArrival = x.IsVisaOnArrival == 1 ? "否" : "是", //落地签
+                    x.VisaTime, // 一般签证时间
+
                 }).ToList(),
                 baoPi = _GroupCostParameterRepository.GetBaoPi(diid),
                 blackCodeIsTrue = _sqlSugar.Queryable<Air_TicketBlackCode>().Where(x => x.IsDel == 0 && x.DiId == diid).Any(), //create.Code == 0 ? true : false,
@@ -18595,34 +18600,54 @@ ORDER by  gctggrc.id DESC
 
             List<DelegationInfoAndIsTrueView> matches = new List<DelegationInfoAndIsTrueView>();
 
-            if (string.IsNullOrWhiteSpace(dto.Keyword))
-            {
-                matches = _sqlSugar.SqlQueryable<DelegationInfoAndIsTrueView>($@"
-                     Select  a.Id,TeamName GroupName,b.isTrue From  Grp_DelegationInfo  a left join  (select top 100 percent Diid, CASE 
-                      WHEN COUNT(*) >= 0 THEN 'True' 
-                      ELSE 'False' END as isTrue  from Grp_GroupCost where Isdel = 0 and date != '' group by Diid) b on a.Id = b.Diid
-                       Where TeamName != '' And IsDel = 0 Order By a.VisitStartDate Desc
-                   ")
-               .ToList();
-            }
-            else
+            #region SQL语句
+            //if (string.IsNullOrWhiteSpace(dto.Keyword))
+            //{
+            //    matches = _sqlSugar.SqlQueryable<DelegationInfoAndIsTrueView>($@"
+            //         Select  a.Id,TeamName GroupName,b.isTrue From  Grp_DelegationInfo  a left join  (select top 100 percent Diid, CASE 
+            //          WHEN COUNT(*) >= 0 THEN 'True' 
+            //          ELSE 'False' END as isTrue  from Grp_GroupCost where Isdel = 0 and date != '' group by Diid) b on a.Id = b.Diid
+            //           Where TeamName != '' And IsDel = 0 Order By a.VisitStartDate Desc
+            //       ")
+            //   .ToList();
+            //}
+            //else
+            //{
+            //    string likeKey = string.Empty;
+
+            //    foreach (var item in dto.Keyword)
+            //    {
+            //        likeKey += "%" + item;
+            //    }
+
+            //    likeKey += "%";
+
+            //    matches = _sqlSugar.SqlQueryable<DelegationInfoAndIsTrueView>($@"
+            //         Select  a.Id,TeamName GroupName,b.isTrue From  Grp_DelegationInfo  a left join  (select top 100 percent Diid, CASE 
+            //          WHEN COUNT(*) >= 0 THEN 'True' 
+            //          ELSE 'False' END as isTrue  from Grp_GroupCost where Isdel = 0 and date != '' group by Diid) b on a.Id = b.Diid
+            //           Where TeamName != '' And IsDel = 0 And TeamName LIKE '{likeKey}'   Order By a.VisitStartDate Desc
+            //       ")
+            //   .ToList();
+            //}
+            #endregion
+
+            var table = _sqlSugar.Ado.UseStoredProcedure().GetDataTable("SearchGroupByKeyword", new
             {
-                string likeKey = string.Empty;
+                @KeyWord = dto.Keyword
+            });
 
-                foreach (var item in dto.Keyword)
+            if (table != null && table.Rows.Count > 0)
+            {
+                foreach (DataRow row in table.Rows)
                 {
-                    likeKey += "%" + item;
+                    matches.Add(new DelegationInfoAndIsTrueView
+                    {
+                        Id = row.Field<int>("Id"),
+                        GroupName = row.Field<string>("GroupName"),
+                        isTrue = row.Field<string>("isTrue")
+                    });
                 }
-
-                likeKey += "%";
-
-                matches = _sqlSugar.SqlQueryable<DelegationInfoAndIsTrueView>($@"
-                     Select  a.Id,TeamName GroupName,b.isTrue From  Grp_DelegationInfo  a left join  (select top 100 percent Diid, CASE 
-                      WHEN COUNT(*) >= 0 THEN 'True' 
-                      ELSE 'False' END as isTrue  from Grp_GroupCost where Isdel = 0 and date != '' group by Diid) b on a.Id = b.Diid
-                       Where TeamName != '' And IsDel = 0 And TeamName LIKE '{likeKey}'   Order By a.VisitStartDate Desc
-                   ")
-               .ToList();
             }
 
             if (matches.Any())
@@ -19270,6 +19295,85 @@ AirHotelPrice
             public int Count { get; set; }
         }
 
+
+        private class HotelSum
+        {
+            internal decimal SGR { get; set; }
+
+            internal decimal TBR { get; set; }
+
+            internal decimal JSES { get; set; }
+
+            internal decimal SUITE { get; set; }
+
+            internal decimal AllPrice {
+                get { return SGR + TBR + JSES + SUITE; }
+            }
+        }
+
+
+
+            [HttpPost]
+        public async Task<IActionResult> QueryGroupCostCoefficient(QueryGroupCostCoefficientDto dto)
+        {
+            var di = await _sqlSugar.Queryable<Grp_DelegationInfo>()
+                .FirstAsync(x => x.Id == dto.Diid && x.IsDel == 0);
+
+            if (di == null)
+            {
+                return Ok(JsonView(false, "团组不存在!"));
+            }
+
+            var groupCost = _sqlSugar.Queryable<Grp_GroupCost>()
+                                     .Where(x => x.Diid == dto.Diid && x.IsDel == 0)
+                                     .ToList();
+
+            var groupHotelNumber = _sqlSugar.Queryable<Grp_CostTypeHotelNumber>()
+                                     .Where(x => x.Diid == dto.Diid && x.IsDel == 0)
+                                     .ToList();
+
+            var groupHotelNumberDefault = groupHotelNumber.FirstOrDefault(x => x.Type == "Default");
+
+            HotelSum hotelSumP = new ();
+
+            if (groupCost.Any())
+            {
+                hotelSumP.SGR = groupHotelNumberDefault.SGR > 0 ?  groupCost.Sum(x => x.SGR) * groupHotelNumberDefault.SGR : 0 ;
+                hotelSumP.TBR = groupHotelNumberDefault.TBR > 0 ? groupCost.Sum(x => x.TBR) * groupHotelNumberDefault.TBR : 0;
+                hotelSumP.JSES = groupHotelNumberDefault.JSES > 0 ? groupCost.Sum(x => x.JS_ES) * groupHotelNumberDefault.JSES : 0;
+                hotelSumP.SUITE = groupHotelNumberDefault.SUITE > 0 ? groupCost.Sum(x => x.Suite) * groupHotelNumberDefault.SUITE : 0;
+            }
+
+            #region 地接系数
+            Func<int, decimal> coefficientByDJ = (number) =>
+            {
+                if (number < 1) return 0.00M;
+
+                return number switch
+                {
+                    < 6 => 2.5M,
+                    6 => 2.4M,
+                    7 => 1.8M,
+                    8 => 2.0M,
+                    9 => 3.0M,
+                    10 => 1.75M,
+                    > 10 => 1.9M,
+                };
+            };
+            #endregion
+
+            #region 酒店系数
+            
+            #endregion
+
+
+            return Ok(JsonView(true, "查询成功", new
+            {
+                HotelSum = hotelSumP,
+                CoefficientByDJ = coefficientByDJ(di.VisitPNumber) // 示例调用
+            }));
+        }
+
         #endregion
 
         #region 酒店预订 New 2023-12-28 17:45

+ 5 - 0
OASystem/OASystem.Domain/Dtos/Groups/GroupCostSavaDto.cs

@@ -1384,6 +1384,11 @@ namespace OASystem.Domain.Dtos.Groups
         public int Diid { get; set; }
     }
 
+    public class QueryGroupCostCoefficientDto
+    {
+        public int Diid { get; set; }
+    }
+
     public class HistoryCarDataView
     {
         public int id { get; set; }