Browse Source

1、出入境费用明细-->汇率变更时更改币种相关费用

LEIYI 5 months ago
parent
commit
3f1f4eec15
1 changed files with 75 additions and 2 deletions
  1. 75 2
      OASystem/OASystem.Api/Controllers/GroupsController.cs

+ 75 - 2
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -7425,9 +7425,82 @@ FROM
 
             //todo:
             #region 汇率变更时更改币种相关费用
-            var dayCosts = new List<Grp_DayAndCost>();
-            var dayOtherCosts = new List<Grp_DayOtherPrice>();
+            var opDayCosts = new List<Grp_DayAndCost>();
+            var opDayOtherCosts = new List<Grp_DayOtherPrice>();
+            var eecCurrencys = dto.Currencys.Select(x => x.CurrencyCode.ToUpper()).ToList();
+
+            var dayCosts = _sqlSugar.Queryable<Grp_DayAndCost>()
+                .LeftJoin<Sys_SetData>((dac,sd) => dac.Currency == sd.Id)
+                .Where((dac, sd) => dac.IsDel == 0 && dac.DiId == dto.DiId)
+                .Select((dac, sd) => new { 
+                    dac.Id,
+                    dac.DiId,
+                    CurrencyCode = sd.Name,
+                    dac.Cost
+                })
+               .ToList();
+            var dayOtherCosts = _sqlSugar.Queryable<Grp_DayOtherPrice>()
+                .LeftJoin<Sys_SetData>((dop, sd) => dop.Currency == sd.Id)
+                .Where((dop, sd) => dop.IsDel == 0 && dop.Diid == dto.DiId)
+                .Select((dop, sd) => new {
+                    dop.Id,
+                    dop.Diid,
+                    CurrencyCode = sd.Name,
+                    dop.Cost
+                })
+               .ToList();
+            if (dayCosts.Count > 0)
+            {
+                var new_dayCosts = dayCosts.Where(x => eecCurrencys.Contains(x.CurrencyCode.ToUpper())).GroupBy(x => x.CurrencyCode);
+                foreach (var dc in new_dayCosts)
+                {
+                    var thisCurrency = dc.Key.ToUpper();
+                    var thisRate = dto.Currencys.Where(x => x.CurrencyCode.ToUpper().Equals(thisCurrency)).First()?.Rate ?? 0.00M;
+                    if (thisRate == 0.00M) continue;
 
+                    foreach (var dcSub in dc)
+                    {
+                        opDayCosts.Add(new Grp_DayAndCost() { 
+                            Id = dcSub.Id,
+                            DiId = dcSub.DiId,
+                            Cost = dcSub.Cost,
+                            SubTotal = dcSub.Cost * thisRate,
+                            Remark = $"[移动端->汇率变更时费用变更][变更信息:currency:{thisCurrency}、opDatetime:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}、opUserId:{dto.CurrUserId}]"
+                        });
+                    }
+                }
+                if (opDayCosts.Count > 0)
+                {
+                    await _sqlSugar.Updateable(opDayCosts).UpdateColumns(x => new { x.SubTotal, x.Remark }).WhereColumns(x => new { x.Id }).ExecuteCommandAsync();
+                }
+            }
+
+            if (dayOtherCosts.Count > 0)
+            {
+                var new_dayOtherCosts = dayOtherCosts.Where(x => eecCurrencys.Contains(x.CurrencyCode.ToUpper())).GroupBy(x => x.CurrencyCode);
+                foreach (var dc in new_dayOtherCosts)
+                {
+                    var thisCurrency = dc.Key.ToUpper();
+                    var thisRate = dto.Currencys.Where(x => x.CurrencyCode.ToUpper().Equals(thisCurrency)).First()?.Rate ?? 0.00M;
+                    if (thisRate == 0.00M) continue;
+
+                    foreach (var dcSub in dc)
+                    {
+                        opDayOtherCosts.Add(new Grp_DayOtherPrice()
+                        {
+                            Id = dcSub.Id,
+                            Diid = dcSub.Diid,
+                            Cost = dcSub.Cost,
+                            SubTotal = dcSub.Cost * thisRate,
+                           // Remark = $"[移动端->汇率变更时费用变更][变更信息:currency:{thisCurrency}、opDatetime:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}、opUserId:{dto.CurrUserId}]"
+                        });
+                    }
+                }
+                if (opDayOtherCosts.Count > 0)
+                {
+                    await _sqlSugar.Updateable(opDayOtherCosts).UpdateColumns(x => new { x.SubTotal }).WhereColumns(x => new { x.Id }).ExecuteCommandAsync();
+                }
+            }
 
             #endregion