Browse Source

团组模块 - 出入境费用明细
子表 Grp_DayAndCost 增加 Grp_NationalTravelFee的Id字段及数据修改

leiy 1 year ago
parent
commit
992aed8556

+ 1 - 0
OASystem/OASystem.Api/Controllers/AuthController.cs

@@ -110,6 +110,7 @@ namespace OASystem.API.Controllers
             //        219
             //    }
             //});
+
             #endregion
 
             return Ok(JsonView(view));

+ 138 - 8
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -22,6 +22,7 @@ using Microsoft.AspNetCore.Mvc.Filters;
 using OASystem.Domain.Entities.Customer;
 using NPOI.SS.Formula.Functions;
 using OASystem.Domain.Dtos.CRM;
+using System.Diagnostics;
 
 namespace OASystem.API.Controllers
 {
@@ -2194,9 +2195,61 @@ namespace OASystem.API.Controllers
         //    }
         //}
 
+        /// <summary>
+        /// 团组模块 - 出入境费用 - 子项 地区更改为 nationalTravelFee 的id
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> SetDayAndCostAreaChange()
+        {
+            try
+            {
+                var nationalTravelFee = await _sqlSugar.Queryable<Grp_NationalTravelFee>().ToListAsync();
+                var dayAndCost = await _sqlSugar.Queryable<Grp_DayAndCost>().Where(it => it.IsDel == 0).ToListAsync();
+
+                var unite = dayAndCost.Where(a => nationalTravelFee.Any(b => a.Place.Trim() == b.City)).ToList(); //交集
+
+                var merge = dayAndCost.Where(a =>! nationalTravelFee.Any(b => a.Place.Trim() == b.City)).ToList(); //差集
+
+                foreach (var item in unite) //处理交集数据
+                {
+                    dayAndCost.Where(it => it.Id == item.Id).FirstOrDefault().NationalTravelFeeId = nationalTravelFee.Where(it => it.City.Trim() == item.Place.Trim()).FirstOrDefault().Id;
+                }
+
+                foreach (var item in merge) //处理差集数据
+                {
+                    int nationalTravelFeeId = 0;
+
+                    var cityData = nationalTravelFee.Where(it => it.City.Trim() == item.Place.Trim()).FirstOrDefault();
+
+                    if (cityData != null) nationalTravelFeeId = cityData.Id;
+                    else
+                    {
+                        var countryData = nationalTravelFee.Where(it => it.Country.Trim() == item.Place.Trim()).FirstOrDefault();
+                        if (countryData != null) nationalTravelFeeId = countryData.Id;
+                    }
+
+                    dayAndCost.Where(it => it.Id == item.Id).FirstOrDefault().NationalTravelFeeId = nationalTravelFeeId;
+                }
+
+                //只更新dayAndCost 的 nationalTravelFeeId;
+                var result = _sqlSugar.Updateable(dayAndCost).UpdateColumns(it => new { it.NationalTravelFeeId }).ExecuteCommand();
+
+                if (result > 0) return Ok(JsonView(true, "nationalTravelFeeId列更新成功!"));
+                else return Ok(JsonView(false, "nationalTravelFeeId列更新失败!"));
+
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+                throw;
+            }
+        }
+
 
         /// <summary>
-        /// 团组模块 - 出入境费用 - 基础数据源(团组名称/币种类型/出入境国家费用标准)
+        /// 团组模块 - 出入境费用 - 基础数据源(团组名称/币种类型)
         /// </summary>
         /// <returns></returns>
         [HttpPost]
@@ -2211,17 +2264,17 @@ namespace OASystem.API.Controllers
                 var currencyData = await _sqlSugar.SqlQueryable<SetDataInfoView>(currencySql).ToListAsync();
 
 
-                string nationalTravelFeeSql = string.Format(@"Select ssd.Name as CurrencyCode, ssd.Remark as CurrencyName,su.CnName as LastUpdateUserName,gntf.* From Grp_NationalTravelFee gntf
-                                                                Left Join Sys_SetData ssd On ssd.STid = 66 And gntf.Currency = ssd.Id
-                                                                Left Join Sys_Users su On gntf.LastUpdateUserId = su.Id 
-                                                                Where gntf.Isdel = 0");
-                var nationalTravelFeeData = await _sqlSugar.SqlQueryable<NationalTravelFeeInfoView>(nationalTravelFeeSql).ToListAsync();
+                //string nationalTravelFeeSql = string.Format(@"Select ssd.Name as CurrencyCode, ssd.Remark as CurrencyName,su.CnName as LastUpdateUserName,gntf.* From Grp_NationalTravelFee gntf
+                //                                                Left Join Sys_SetData ssd On ssd.STid = 66 And gntf.Currency = ssd.Id
+                //                                                Left Join Sys_Users su On gntf.LastUpdateUserId = su.Id 
+                //                                                Where gntf.Isdel = 0");
+                //var nationalTravelFeeData = await _sqlSugar.SqlQueryable<NationalTravelFeeInfoView>(nationalTravelFeeSql).ToListAsync();
 
 
                 return Ok(JsonView(true, "查询成功!",new {
                     GroupNameData = groupNameData.Data,
                     CurrencyData = currencyData,
-                    NationalTravelFeeData = nationalTravelFeeData
+                    //NationalTravelFeeData = nationalTravelFeeData
                 }));
             }
             catch (Exception ex)
@@ -2280,7 +2333,7 @@ namespace OASystem.API.Controllers
                 return Ok(JsonView(false, ex.Message));
             }
         }
-        //
+        
 
         /// <summary>
         /// 团组模块 - 出入境费用 - 子项删除
@@ -2307,6 +2360,83 @@ namespace OASystem.API.Controllers
             }
         }
 
+        /// <summary>
+        /// 团组模块 - 出入境国家费用标准 List
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> GetNationalTravelFeeData(PortDtoBase dto)
+        {
+            try
+            {
+                Stopwatch sw = new Stopwatch();
+                sw.Start();
+                string nationalTravelFeeSql = string.Format(@"Select ssd.Name as CurrencyCode, ssd.Remark as CurrencyName,su.CnName as LastUpdateUserName,gntf.* From Grp_NationalTravelFee gntf
+                                                                Left Join Sys_SetData ssd On ssd.STid = 66 And gntf.Currency = ssd.Id
+                                                                Left Join Sys_Users su On gntf.LastUpdateUserId = su.Id 
+                                                                Where gntf.Isdel = 0");
+                var nationalTravelFeeData = await _sqlSugar.SqlQueryable<NationalTravelFeeInfoView>(nationalTravelFeeSql).ToListAsync();
+
+                var nationalTravel = nationalTravelFeeData.GroupBy(it => it.Country).Select(it1 => it1.FirstOrDefault());
+
+                List<dynamic> nationalTravelFeeData1 = new List<dynamic>();
+
+                foreach (var item in nationalTravel)
+                {
+                    var cityData = nationalTravelFeeData.Where(it => it.Country == item.Country).ToList();
+                    var otherData = cityData.Where(it => it.City.Contains("其他城市")).FirstOrDefault();
+                    if (otherData != null)
+                    {
+                        cityData.Remove(otherData);
+                        cityData.Add(otherData);
+                    }
+                    
+
+                    nationalTravelFeeData1.Add(new
+                    {
+                        Country = item.Country,
+                        CityData = cityData
+                    });
+                }
+
+                sw.Stop();
+                return Ok(JsonView(true, "查询成功!耗时:"+ sw.ElapsedMilliseconds+"ms", nationalTravelFeeData1));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+                throw;
+            }
+        }
+
+
+        /// <summary>
+        /// 团组模块 - 出入境国家费用标准 - Add Or Update
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostNationalTravelFeeOperate(NationalTravelFeeOperateDto dto)
+        {
+            try
+            {
+                var data = await _enterExitCostRep.PostNationalTravelFeeOperate(dto);
+
+                if (data.Code != 0)
+                {
+                    return Ok(JsonView(false, data.Msg));
+                }
+
+                return Ok(JsonView(true, "操作成功!", data.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+
         #endregion
     }
 }

+ 6 - 0
OASystem/OASystem.Api/OAMethodLib/JuHeAPI/IJuHeApiService.cs

@@ -21,6 +21,12 @@ namespace OASystem.API.OAMethodLib.JuHeAPI
         /// <returns></returns>
         Task<Result> GetSingleRateAsync(string currencyCode);
 
+        /// <summary>
+        /// 获取汇率 Item
+        /// </summary>
+        /// <returns></returns>
+        Task<Result> PostItemRateAsync(string[] currencyCodes);
+
         /// <summary>
         /// 获取汇率转换结果
         /// </summary>

+ 37 - 1
OASystem/OASystem.Api/OAMethodLib/JuHeAPI/JuHeApiService.cs

@@ -129,7 +129,7 @@ namespace OASystem.API.OAMethodLib.JuHeAPI
         public async Task<Result> GetSingleRateAsync(string currencyCode)
         {
 
-            var result = new Result() { Code = -2, Msg = "未知错误" };
+            var result = new Result();
             if (currencyCode.ToUpper() == "CNY" )
             {
                 return result;
@@ -156,6 +156,42 @@ namespace OASystem.API.OAMethodLib.JuHeAPI
             return result;
         }
 
+        /// <summary>
+        /// 获取汇率 Single
+        /// </summary>
+        /// <param name="currencyCodes">币种codes</param>
+        /// <returns></returns>
+        public async Task<Result> PostItemRateAsync(string[] currencyCodes)
+        {
+
+            var result = new Result();
+            if (currencyCodes.Length  <= 0  || currencyCodes.Contains("CNY"))
+            {
+                result.Msg = "币种Code集合不能为空!";
+                return result;
+            }
+
+            var resultData = await GetExchangeRateAsync();
+            var rateCurrencyData = AppSettingsHelper.Get<RateCurrencyModel>("RateCurrency");
+            var currencyModel = rateCurrencyData.Where(a => currencyCodes.Any(b => a.CurrencyCode == b)).FirstOrDefault();
+            if (currencyModel != null)
+            {
+                if (resultData.Resultcode == "200")
+                {
+                    if (resultData.Result != null)
+                    {
+                        result.Code = 0;
+                        result.Data = ((List<ExchangeRateModel>)resultData.Result).Where(a => a.Name == currencyModel.CurrencyName).FirstOrDefault();
+                    }
+                }
+                else
+                {
+                    result.Msg = resultData.Reason;
+                }
+            }
+            return result;
+        }
+
         /// <summary>
         /// 获取汇率转换结果
         /// </summary>

+ 0 - 1
OASystem/OASystem.Api/OAMethodLib/Quartz/Business/DeleReminderMessage.cs

@@ -79,7 +79,6 @@ namespace OASystem.API.OAMethodLib.Quartz.Business
 
                 }
             }
-
         }
     }
 }

+ 7 - 1
OASystem/OASystem.Domain/AutoMappers/_baseMappingProfile.cs

@@ -104,11 +104,17 @@ namespace OASystem.Domain.AutoMappers
             #region 出入境费用明细
 
             CreateMap<Grp_EnterExitCost, EnterExitCostInfoView>();
-
             CreateMap<EnterExitCostOperateDto, Grp_EnterExitCost>();
             CreateMap<DayAndCostInfoView, Grp_DayAndCost>();
+
+            #endregion
+
+            #region 出入境国家费用标准
+
+            CreateMap<NationalTravelFeeOperateDto, Grp_NationalTravelFee>();
             #endregion
 
+
             #endregion
             #region Resource
 

+ 3 - 0
OASystem/OASystem.Domain/Dtos/DtoBase.cs

@@ -57,14 +57,17 @@ namespace OASystem.Domain.Dtos
         /// 2 修改 
         /// </summary>
         public int Status { get; set; }
+
         /// <summary>
         /// 编号
         /// </summary>
         public int Id { get; set; }
+
         /// <summary>
         /// 创建者Id
         /// </summary>
         public int CreateUserId { get; set; }
+
         /// <summary>
         /// 备注
         /// </summary>

+ 58 - 0
OASystem/OASystem.Domain/Dtos/Groups/EnterExitCostDto.cs

@@ -224,4 +224,62 @@ namespace OASystem.Domain.Dtos.Groups
     /// </summary>
     public class EnterExitCostSubItemDelDto : DelBaseDto
     { }
+
+    /// <summary>
+    /// 团组模块 - 出入境国家费用标准 - Add Or Update Dto
+    /// </summary>
+    public class NationalTravelFeeOperateDto:PortDtoBase
+    {
+        /// <summary>
+        /// 编号
+        /// add Id = 0 Or Update Id=Id值
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 创建者Id
+        /// </summary>
+        public int UserId { get; set; }
+
+        /// <summary>
+        /// 洲别
+        /// </summary>
+        public string? Continent { get; set; }
+
+        /// <summary>
+        /// 国家
+        /// </summary>
+        public string? Country { get; set; }
+
+        /// <summary>
+        /// 城市
+        /// </summary>
+        public string? City { get; set; }
+
+        /// <summary>
+        /// 币种
+        /// Sys_SetData STid=66
+        /// </summary>
+        public int Currency { get; set; }
+
+        /// <summary>
+        /// 住宿费
+        /// </summary>
+        public decimal? RoomCost { get; set; } = 0;
+
+        /// <summary>
+        /// 伙食费
+        /// </summary>
+        public decimal? FoodCost { get; set; } = 0;
+
+        /// <summary>
+        /// 公杂费 
+        /// </summary>
+        public decimal? PublicCost { get; set; } = 0;
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string? Remark { get; set; }
+    }
 }

+ 6 - 0
OASystem/OASystem.Domain/Entities/Groups/Grp_DayAndCost.cs

@@ -30,6 +30,12 @@ namespace OASystem.Domain.Entities.Groups
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int Days { get; set; }
 
+        /// <summary>
+        /// 地名Id
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int NationalTravelFeeId { get; set; }
+
         /// <summary>
         /// 地名
         /// </summary>

+ 2 - 2
OASystem/OASystem.Domain/Entities/Groups/Grp_NationalTravelFee.cs

@@ -7,7 +7,7 @@ using System.Threading.Tasks;
 namespace OASystem.Domain.Entities.Groups
 {
     /// <summary>
-    /// 团组 - 国家出行费用
+    /// 团组 - 出入境国家费用标准
     /// 适用于出入境模块
     /// </summary>
     [SugarTable("Grp_NationalTravelFee")]
@@ -66,7 +66,7 @@ namespace OASystem.Domain.Entities.Groups
         /// 最后更新时间 
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
-        public DateTime? LastUpdateTime { get; set; }
+        public DateTime? LastUpdateTime { get; set; } = DateTime.Now;
 
     }
 }

+ 9 - 3
OASystem/OASystem.Domain/ViewModels/Groups/EnterExitCostView.cs

@@ -1,6 +1,7 @@
 using OASystem.Domain.Entities.Groups;
 using System;
 using System.Collections.Generic;
+using System.Data.SqlTypes;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -22,6 +23,11 @@ namespace OASystem.Domain.ViewModels.Groups
     /// </summary>
     public class NationalTravelFeeInfoView
     {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public int Id { get; set; }
+
         /// <summary>
         /// 洲别
         /// </summary>
@@ -56,17 +62,17 @@ namespace OASystem.Domain.ViewModels.Groups
         /// <summary>
         /// 住宿费
         /// </summary>
-        public string? RoomCost { get; set; }
+        public decimal RoomCost { get; set; } = 0;
 
         /// <summary>
         /// 伙食费
         /// </summary>
-        public string? FoodCost { get; set; }
+        public decimal FoodCost { get; set; } = 0;
 
         /// <summary>
         /// 公杂费 
         /// </summary>
-        public string? PublicCost { get; set; }
+        public decimal PublicCost { get; set; } = 0;
 
         /// <summary>
         /// 最后更新人 Id 

+ 37 - 3
OASystem/OASystem.Infrastructure/Repositories/Groups/EnterExitCostRepository.cs

@@ -180,9 +180,8 @@ namespace OASystem.Infrastructure.Repositories.Groups
             return result;
         }
 
-
         /// <summary>
-        /// Add Or Update
+        /// Del
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
@@ -204,9 +203,44 @@ namespace OASystem.Infrastructure.Repositories.Groups
             if (del > 0) result.Code = 0;
             else result.Msg = string.Format("删除失败!");
 
-
             return result;
         }
 
+        /// <summary>
+        /// 团组模块 - 出入境国家费用标准 - Add Or Update
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> PostNationalTravelFeeOperate(NationalTravelFeeOperateDto dto)
+        {
+            Result result = new Result();
+
+            Grp_NationalTravelFee nationalTravelFee = _mapper.Map<Grp_NationalTravelFee>(dto);
+            nationalTravelFee.LastUpdateUserId = dto.UserId;
+            nationalTravelFee.CreateUserId = dto.UserId;
+
+            if (dto.PortType == 1) //web
+            {
+                var _nationalTravelFee = _sqlSugar.Storageable<Grp_NationalTravelFee>(nationalTravelFee).ToStorage();
+                _nationalTravelFee.AsInsertable.ExecuteCommand();   //不存在插入
+                _nationalTravelFee.AsUpdateable.IgnoreColumns(it => new { it.CreateUserId, it.CreateTime, it.IsDel }).ExecuteCommand();   //存在更新
+                result.Code = 0;
+            }
+            else if (dto.PortType == 2) //Android
+            {
+
+            }
+            else if (dto.PortType == 3) //Ios
+            { 
+            
+            }else 
+                result.Msg=ErrorMsg.Error_Port_Msg;
+
+                
+
+
+
+            return result;
+        }
     }
 }