Browse Source

团组模块 出入境费用相关

leiy 1 year ago
parent
commit
a987a284a7

+ 121 - 3
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -43,9 +43,12 @@ namespace OASystem.API.Controllers
         private readonly SqlSugarClient _sqlSugar;
         private string url;
         private string path;
+
+        private readonly EnterExitCostRepository _enterExitCostRep;
+
         public GroupsController(IMapper mapper, SqlSugarClient sqlSugar, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository,
             TaskAssignmentRepository taskAssignmentRep, AirTicketResRepository airTicketResRep, DecreasePaymentsRepository decreasePaymentsRep,
-            InvitationOfficialActivitiesRepository InvitationOfficialActivitiesRep, DelegationEnDataRepository delegationEnDataRep)
+            InvitationOfficialActivitiesRepository InvitationOfficialActivitiesRep, DelegationEnDataRepository delegationEnDataRep, EnterExitCostRepository enterExitCostRep)
         {
             _mapper = mapper;
             _grpScheduleRep = grpScheduleRep;
@@ -62,6 +65,7 @@ namespace OASystem.API.Controllers
             _decreasePaymentsRep = decreasePaymentsRep;
             _InvitationOfficialActivitiesRep = InvitationOfficialActivitiesRep;
             _delegationEnDataRep = delegationEnDataRep;
+            _enterExitCostRep = enterExitCostRep;
         }
 
         #region 流程管控
@@ -469,8 +473,6 @@ namespace OASystem.API.Controllers
         }
         #endregion
 
-        
-
         #region 团组费用审核
 
         /// <summary>
@@ -2128,5 +2130,121 @@ namespace OASystem.API.Controllers
             }
         }
         #endregion
+
+        #region 团组经理模块 出入境费用
+        ///// <summary>
+        ///// 团组模块 - 出入境费用
+        ///// </summary>
+        ///// <returns></returns>
+        //[HttpPost]
+        //[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        //public async Task<IActionResult> SetEnterExitCostCurrencyChange()
+        //{
+        //    try
+        //    {
+        //        var data = await _enterExitCostRep.SetEnterExitCostCurrencyChange();
+
+        //        if (data.Code != 0)
+        //        {
+        //            return Ok(JsonView(false, data.Msg));
+        //        }
+
+        //        return Ok(JsonView(true, "查询成功!"));
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        return Ok(JsonView(false, ex.Message));
+        //        throw;
+        //    }
+        //}
+
+
+        /// <summary>
+        /// 团组模块 - 出入境费用 - 基础数据源(团组名称/币种类型/出入境国家费用标准)
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> GetEnterExitCostDataSource(PortDtoBase dto)
+        {
+            try
+            {
+                var groupNameData = await _groupRepository.GetGroupNameList(new GroupNameDto { PortType = dto.PortType });
+
+                string currencySql = string.Format("Select * From Sys_SetData Where STid = 66 And IsDel = 0");
+                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();
+
+
+                return Ok(JsonView(true, "查询成功!",new {
+                    GroupNameData = groupNameData.Data,
+                    CurrencyData = currencyData,
+                    NationalTravelFeeData = nationalTravelFeeData
+                }));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+                throw;
+            }
+        }
+
+        /// <summary>
+        /// 团组模块 - 出入境费用 - Info
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> GetEnterExitCostInfobyDiId(EnterExitCostInfobyDiIdDto dto)
+        {
+            try
+            {
+                var data = await _enterExitCostRep.GetEnterExitCostInfoByDiId(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));
+            }
+        }
+
+        /// <summary>
+        /// 团组模块 - 出入境费用 - Add And Update
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostEnterExitCostOperate(EnterExitCostOperateDto dto)
+        {
+            try
+            {
+                var data = await _enterExitCostRep.PostEnterExitCostOperate(dto);
+
+                if (data.Code != 0)
+                {
+                    return Ok(JsonView(false, data.Msg));
+                }
+
+                return Ok(JsonView(true, data.Msg, data.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+        #endregion
     }
 }

+ 13 - 0
OASystem/OASystem.Domain/AutoMappers/_baseMappingProfile.cs

@@ -36,11 +36,13 @@ namespace OASystem.Domain.AutoMappers
             CreateMap<Sys_Message, DepartmentIView>();
             CreateMap<Sys_MessageReadAuth, DepartmentIView>();
             #endregion
+
             #region 数据类型板块
             CreateMap<OperationSetDataTypeDto, Sys_SetDataType>();
             CreateMap<OperationSetDataDto, Sys_SetData>();
             CreateMap<Sys_SetData, SetDataInfoView>();
             #endregion
+
             #region 公司板块
             CreateMap<Sys_Company, CompanyView>();
             CreateMap<AddCompanyDto, Sys_Company>();
@@ -78,6 +80,7 @@ namespace OASystem.Domain.AutoMappers
             CreateMap<Grp_ScheduleDetailUpdDto, Grp_ScheduleDetailInfo>();
             CreateMap<Grp_ScheduleDetailInsertDto, Grp_ScheduleDetailInfo>();
             CreateMap<TaskAssignmenDto, Grp_GroupsTaskAssignment>();
+
             #region 机票费用录入
             CreateMap<AirTicketResOp, Grp_AirTicketReservations>();
             CreateMap<CardPayment, Grp_CreditCardPayment>();
@@ -88,15 +91,25 @@ namespace OASystem.Domain.AutoMappers
             #region 团组增减款项
             CreateMap<DecreasePaymentsOpDto, Grp_DecreasePayments>();
             #endregion
+
             #region 商邀费用
             CreateMap<OpInvitationOfficialActivitiesDto, Grp_InvitationOfficialActivities>();
             CreateMap<OpInvitationOfficialActivitiesDto,Res_InvitationOfficialActivityData>();
             #endregion
+
             #region 团组英文资料
             CreateMap<OpDelegationEnDataDto, Grp_DelegationEnData>();
             #endregion
+
+            #region 出入境费用明细
+
+            CreateMap<Grp_EnterExitCost, EnterExitCostInfoView>();
+
+            CreateMap<EnterExitCostOperateDto, Grp_EnterExitCost>();
+            CreateMap<DayAndCostInfoView, Grp_DayAndCost>();
             #endregion
 
+            #endregion
             #region Resource
 
             #region 车公司资料

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

@@ -0,0 +1,220 @@
+using OASystem.Domain.ViewModels.Groups;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Groups
+{
+    public class EnterExitCostDto
+    {
+    }
+
+    /// <summary>
+    /// 出入境费用详情 Dto
+    /// </summary>
+    public class EnterExitCostInfobyDiIdDto : PortDtoBase
+    {
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+    }
+
+    /// <summary>
+    /// 出入境费用 Add And Update  Dto
+    /// </summary>
+    public class EnterExitCostOperateDto : PortDtoBase 
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+
+        #region 境内费用(其他费用)
+
+        /// <summary>
+        ///  境内费用(其他费用)选择框
+        /// </summary>
+        public int ChoiceOne { get; set; }
+
+        /// <summary>
+        /// 境内费用(其他费用)
+        /// </summary>
+        public decimal InsidePay { get; set; }
+
+        #region 境内费用(其他费用)子项
+
+        /// <summary>
+        /// 签证费
+        /// </summary>
+        public decimal Visa { get; set; }
+
+        /// <summary>
+        /// 签证费描述
+        /// </summary>
+        public string? VisaRemark { get; set; }
+
+        /// <summary>
+        /// 疫苗费
+        /// </summary>
+        public decimal YiMiao { get; set; }
+
+        /// <summary>
+        /// 核酸检测费用
+        /// </summary>
+        public decimal HeSuan { get; set; }
+
+        /// <summary>
+        /// 服务费用
+        /// </summary>
+        public decimal Service { get; set; }
+
+        /// <summary>
+        /// 参展门票
+        /// </summary>
+        public decimal Ticket { get; set; }
+
+        /// <summary>
+        /// 保险费
+        /// </summary>
+        public decimal Safe { get; set; }
+
+        #endregion
+
+        #endregion
+
+        #region 国际旅费
+
+        /// <summary>
+        ///  国际旅费合计选择框
+        /// </summary>
+        public int ChoiceTwo { get; set; }
+
+        /// <summary>
+        ///  经济舱小计选择框
+        /// </summary>
+        public int SumJJC { get; set; }
+
+        /// <summary>
+        ///  公务舱小计选择框
+        /// </summary>
+        public int SumGWC { get; set; }
+
+
+        #region 国际旅费子项
+        /// <summary>
+        /// 国际旅费合计(经济舱)
+        /// </summary>
+        public decimal OutsideJJPay { get; set; }
+
+        /// <summary>
+        ///  国际旅费合计(公务舱)
+        /// </summary>
+        public decimal OutsaideGWPay { get; set; }
+
+        /// <summary>
+        ///  国际机票(经济舱)
+        /// </summary>
+        public decimal AirJJ { get; set; }
+
+        /// <summary>
+        ///  国际机票(公务舱)
+        /// </summary>
+        public decimal AirGW { get; set; }
+
+        /// <summary>
+        ///  国外城市间交通费
+        /// </summary>
+        public decimal CityTranffic { get; set; }
+
+        /// <summary>
+        ///  多个币种存储
+        ///  存储方式: 美元(USD):6.2350|.......|墨西哥比索(MXN):1.0000
+        /// </summary>
+        public List<CurrencyInfo>? Currencys { get; set; }
+
+        #endregion
+
+        #endregion
+
+        #region 住宿费
+
+        /// <summary>
+        ///  住宿费合计选择框
+        /// </summary>
+        public int ChoiceThree { get; set; }
+
+        /// <summary>
+        /// 住宿费子项Data
+        /// </summary>
+        public List<DayAndCostInfoView>? QuarterageData { get; set; }
+
+        #endregion
+
+        #region 伙食费
+
+        /// <summary>
+        ///  伙食费合计选择框
+        /// </summary>
+        public int ChoiceFour { get; set; }
+
+        /// <summary>
+        /// 伙食费子项Data
+        /// </summary>
+        public List<DayAndCostInfoView>? BoardWagesData { get; set; }
+
+        #endregion
+
+        #region 公杂费
+
+        /// <summary>
+        ///  公杂费合计选择框
+        /// </summary>
+        public int ChoiceFive { get; set; }
+
+        /// <summary>
+        /// 公杂费子项Data
+        /// </summary>
+        public List<DayAndCostInfoView>? MiscellaneousFeeData { get; set; }
+
+        #endregion
+
+        #region 培训费
+
+        /// <summary>
+        ///  培训费用选择框
+        /// </summary>
+        public int ChoiceSix { get; set; }
+
+        /// <summary>
+        /// 培训费子项Data
+        /// </summary>
+        public List<DayAndCostInfoView>? TrainingExpenseData { get; set; }
+
+        #endregion
+
+
+        #region 最下面 选择框状态
+
+        /// <summary>
+        /// 经济舱选择框
+        /// </summary>
+        public int AirJJC_Checked { get; set; }
+
+        /// <summary>
+        /// 公务舱选择框
+        /// </summary>
+        public int AirGWC_Checked { get; set; }
+
+        #endregion
+
+    }
+
+}

+ 1 - 1
OASystem/OASystem.Domain/Dtos/Groups/GroupListDto.cs

@@ -200,7 +200,7 @@ namespace OASystem.Domain.Dtos.Groups
     /// <summary>
     /// 团组名称
     /// </summary>
-    public class GroupNameDto : DtoBase
+    public class GroupNameDto : PortDtoBase
     {
 
     }

+ 4 - 3
OASystem/OASystem.Domain/Entities/Groups/Grp_EnterExitCost.cs

@@ -139,10 +139,11 @@ namespace OASystem.Domain.Entities.Groups
 
 
         /// <summary>
-        ///  币种描述 
+        ///  多个币种存储
+        ///  存储方式: 美元(USD):6.2350|.......|墨西哥比索(MXN):1.0000
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
-        public string? CurrencyRmark { get; set; }
+        public string? CurrencyRemark { get; set; }
 
         #endregion
 
@@ -166,7 +167,7 @@ namespace OASystem.Domain.Entities.Groups
         ///  经济舱小计选择框
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public int SumJJCC { get; set; }
+        public int SumJJC { get; set; }
 
         /// <summary>
         ///  公务舱小计选择框

+ 355 - 0
OASystem/OASystem.Domain/ViewModels/Groups/EnterExitCostView.cs

@@ -0,0 +1,355 @@
+using OASystem.Domain.Entities.Groups;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Groups
+{
+    /// <summary>
+    /// 出入境费用 View
+    /// </summary>
+    public class EnterExitCostView:Grp_EnterExitCost { }
+
+    /// <summary>
+    /// 出入境国家(城市)费用标准 View
+    /// </summary>
+    public class NationalTravelFeeView : Grp_NationalTravelFee { }
+
+    /// <summary>
+    /// 出入境国家(城市)费用标准Info  View
+    /// </summary>
+    public class NationalTravelFeeInfoView
+    {
+        /// <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>
+        /// 币种code
+        /// </summary>
+        public string? CurrencyCode { get; set; }
+
+        /// <summary>
+        /// 币种Name
+        /// </summary>
+        public string? CurrencyName { get; set; }
+
+        /// <summary>
+        /// 住宿费
+        /// </summary>
+        public string? RoomCost { get; set; }
+
+        /// <summary>
+        /// 伙食费
+        /// </summary>
+        public string? FoodCost { get; set; }
+
+        /// <summary>
+        /// 公杂费 
+        /// </summary>
+        public string? PublicCost { get; set; }
+
+        /// <summary>
+        /// 最后更新人 Id 
+        /// </summary>
+        public int LastUpdateUserId { get; set; }
+
+        /// <summary>
+        /// 最后更新人 name
+        /// </summary>
+        public string? LastUpdateUserName { get; set; }
+
+        /// <summary>
+        /// 最后更新时间 
+        /// </summary>
+        public DateTime? LastUpdateTime { get; set; }
+    }
+
+    /// <summary>
+    /// 出入境费用info
+    /// </summary>
+    public class EnterExitCostInfoView
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 境内费用(其他费用)
+        /// </summary>
+        public decimal InsidePay { get; set; }
+
+        #region 境内费用(其他费用)子项
+
+        /// <summary>
+        /// 签证费
+        /// </summary>
+        public decimal Visa { get; set; }
+
+        /// <summary>
+        /// 签证费描述
+        /// </summary>
+        public string? VisaRemark { get; set; }
+
+        /// <summary>
+        /// 疫苗费
+        /// </summary>
+        public decimal YiMiao { get; set; }
+
+        /// <summary>
+        /// 核酸检测费用
+        /// </summary>
+        public decimal HeSuan { get; set; }
+
+        /// <summary>
+        /// 服务费用
+        /// </summary>
+        public decimal Service { get; set; }
+
+        /// <summary>
+        /// 参展门票
+        /// </summary>
+        public decimal Ticket { get; set; }
+
+        /// <summary>
+        /// 保险费
+        /// </summary>
+        public decimal Safe { get; set; }
+
+        #endregion
+
+        /// <summary>
+        /// 国际旅费合计(经济舱)
+        /// </summary>
+        public decimal OutsideJJPay { get; set; }
+
+        /// <summary>
+        ///  国际旅费合计(公务舱)
+        /// </summary>
+        public decimal OutsaideGWPay { get; set; }
+
+        #region 国际旅费合计(经济舱\公务舱)
+
+        /// <summary>
+        ///  国际机票(经济舱)
+        /// </summary>
+        public decimal AirJJ { get; set; }
+
+        /// <summary>
+        ///  国际机票(公务舱)
+        /// </summary>
+        public decimal AirGW { get; set; }
+
+        /// <summary>
+        ///  国外城市间交通费
+        /// </summary>
+        public decimal CityTranffic { get; set; }
+
+
+        #region 汇率币种
+
+        /// <summary>
+        ///  多个币种存储
+        ///  存储方式: 美元(USD):6.2350|.......|墨西哥比索(MXN):1.0000
+        /// </summary>
+        public List<CurrencyInfo>? Currencys{ get; set; }
+
+        #endregion
+
+        #endregion
+
+        #region 选择框状态
+
+        /// <summary>
+        ///  境内费用(其他费用)选择框
+        /// </summary>
+        public int ChoiceOne { get; set; }
+
+        /// <summary>
+        ///  国际旅费合计选择框
+        /// </summary>
+        public int ChoiceTwo { get; set; }
+
+        /// <summary>
+        ///  经济舱小计选择框
+        /// </summary>
+        public int SumJJC { get; set; }
+
+        /// <summary>
+        ///  公务舱小计选择框
+        /// </summary>
+        public int SumGWC { get; set; }
+
+        /// <summary>
+        ///  住宿费合计选择框
+        /// </summary>
+        public int ChoiceThree { get; set; }
+
+        /// <summary>
+        /// 住宿费子项Data
+        /// </summary>
+        public List<DayAndCostInfoView>? QuarterageData { get; set; }
+
+        /// <summary>
+        ///  伙食费合计选择框
+        /// </summary>
+        public int ChoiceFour { get; set; }
+
+        /// <summary>
+        /// 伙食费子项Data
+        /// </summary>
+        public List<DayAndCostInfoView>? BoardWagesData { get; set; }
+
+        /// <summary>
+        ///  公杂费合计选择框
+        /// </summary>
+        public int ChoiceFive { get; set; }
+
+        /// <summary>
+        /// 公杂费子项Data
+        /// </summary>
+        public List<DayAndCostInfoView>? MiscellaneousFeeData { get; set; }
+
+        /// <summary>
+        ///  培训费用选择框
+        /// </summary>
+        public int ChoiceSix { get; set; }
+
+        /// <summary>
+        /// 培训费子项Data
+        /// </summary>
+        public List<DayAndCostInfoView>? TrainingExpenseData { get; set; }
+
+        /// <summary>
+        /// 经济舱选择框
+        /// </summary>
+        public int AirJJC_Checked { get; set; }
+
+        /// <summary>
+        /// 公务舱选择框
+        /// </summary>
+        public int AirGWC_Checked { get; set; }
+
+        #endregion
+    }
+
+    /// <summary>
+    /// 出入境国家(城市)费用标准子项Info  View
+    /// </summary>
+    public class DayAndCostInfoView
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 类型:1为住宿费;2为伙食费;3为公杂费;4培训费用
+        /// </summary>
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 类型名称
+        /// </summary>
+        public string? TypeName
+        {
+            get
+            {
+                string str = "";
+                if (Type == 1) str = string.Format("住宿费");
+                else if (Type == 2) str = string.Format("伙食费");
+                else if (Type == 3) str = string.Format("公杂费");
+                else if (Type == 4) str = string.Format("培训费");
+                return str;
+            }
+        }
+
+        /// <summary>
+        /// 天数
+        /// </summary>
+        public int Days { get; set; }
+
+        /// <summary>
+        /// 地名
+        /// </summary>
+        public string? Place { get; set; }
+
+        /// <summary>
+        /// 费用标准
+        /// </summary>
+        public decimal Cost { get; set; }
+
+        /// <summary>
+        /// 币种 Id
+        /// Sys_SetData STid = 66
+        /// </summary>
+        public int Currency { get; set; }
+
+        /// <summary>
+        /// 币种Code
+        /// </summary>
+        public string? CurremcyCode { get; set; }
+
+        /// <summary>
+        /// 币种名称
+        /// </summary>
+        public string? CurrencyName { get; set; }
+
+        /// <summary>
+        /// 小计
+        /// </summary>
+        public decimal SubTotal { get; set; }
+    }
+
+
+    /// <summary>
+    /// 币种详情
+    /// </summary>
+    public class CurrencyInfo
+    {
+        /// <summary>
+        /// 币种Code
+        /// </summary>
+        public string? CurrencyCode { get; set; }
+
+        /// <summary>
+        /// 币种名称
+        /// </summary>
+        public string? CurrencyName { get; set; }
+
+        /// <summary>
+        /// 币种当时汇率
+        /// </summary>
+        public decimal Rate { get; set; }
+    }
+}

+ 4 - 4
OASystem/OASystem.Domain/ViewModels/JsonView.cs

@@ -8,17 +8,17 @@ public class JsonView
     /// <summary>
     /// 状态码
     /// </summary>
-    public int Code { get; set; }
+    public int Code { get; set; } = 400;
     /// <summary>
     /// 消息
     /// </summary>
-    public string? Msg { get; set; }
+    public string? Msg { get; set; } = "";
     /// <summary>
     /// 条数
     /// </summary>
-    public int? Count { get; set; }
+    public int? Count { get; set; } = 0;
     /// <summary>
     /// 数据
     /// </summary>
-    public object? Data { get; set; }
+    public object? Data { get; set; } =  new { };
 }

+ 165 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/EnterExitCostRepository.cs

@@ -0,0 +1,165 @@
+
+using AutoMapper;
+using OASystem.Domain;
+using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Entities.Groups;
+using OASystem.Domain.ViewModels.Groups;
+using OASystem.Infrastructure.Repositories.System;
+using OASystem.Infrastructure.Tools;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Infrastructure.Repositories.Groups
+{
+    /// <summary>
+    /// 出入境费用 仓库
+    /// </summary>
+    public class EnterExitCostRepository:BaseRepository<Grp_EnterExitCost, EnterExitCostView>
+    {
+        private readonly IMapper _mapper;
+        private readonly SetDataRepository _setDataRep;
+
+
+        public EnterExitCostRepository(SqlSugarClient sqlSugar, IMapper mapper, SetDataRepository setDataRep)
+            :base(sqlSugar) 
+        {
+            _setDataRep = setDataRep;
+            _mapper = mapper;
+        }
+
+        /// <summary>
+        /// 更新出入境费用汇率信息
+        /// </summary>
+        /// <returns></returns>
+        public async Task<Result> SetEnterExitCostCurrencyChange()
+        {
+            Result result = new Result { Code = -1, Msg = "未知错误" };
+
+            var enterExitList = await _sqlSugar.Queryable<Grp_EnterExitCost>().ToListAsync();
+
+            foreach (var item in enterExitList)
+            {
+                string rateStr = string.Format(@"美元(USD):{0}|日元(JPY):{1}|欧元(EUR):{2}|英镑(GBP):{3}|港币(HKD):{4}", item.RateUSD,item.RateJPY,item.RateEUR,item.RateGBP,item.RateHKD);
+                item.CurrencyRemark = rateStr;
+            }
+
+            var res = await _sqlSugar.Updateable(enterExitList)
+                .WhereColumns(it => new { it.Id })
+                .UpdateColumns(it => new { it.CurrencyRemark })
+                .ExecuteCommandAsync();
+
+            if (res > 0) 
+            {
+                result.Code = 0;
+                result.Msg = res.ToString();
+                return result;
+            }
+
+            return result;
+        }
+
+        
+        /// <summary>
+        /// 查询 根据 Diid 查询
+        /// </summary>
+        /// <returns></returns>
+        public async Task<Result> GetEnterExitCostInfoByDiId(EnterExitCostInfobyDiIdDto dto)
+        {
+            Result result = new Result { Code = -1, Msg = "未知错误" };
+
+            var enterExitCostData = await _sqlSugar.Queryable<Grp_EnterExitCost>().FirstAsync(it => it.DiId == dto.DiId && it.IsDel == 0);
+
+            //Sys_PageFunctionPermission Function = _mapper.Map<Sys_PageFunctionPermission>(dto);
+
+            EnterExitCostInfoView enterExitCostInfoView = new EnterExitCostInfoView();
+
+            if (enterExitCostData != null)
+            {
+                enterExitCostInfoView = _mapper.Map<EnterExitCostInfoView>(enterExitCostData);
+
+                var dayAndCostSql = string.Format(@"Select ssd.Name CurremcyCode,ssd.Remark CurrencyName,gdac.* From Grp_DayAndCost gdac
+                                                Left Join Sys_SetData ssd On ssd.STid = 66 And gdac.Currency = ssd.Id
+                                                Where gdac.Isdel = 0 And gdac.DiId = {0}", dto.DiId);
+                var dayAndCostData = await _sqlSugar.SqlQueryable<DayAndCostInfoView>(dayAndCostSql).ToListAsync();
+
+
+                enterExitCostInfoView.QuarterageData = dayAndCostData.Where(it => it.Type == 1).ToList(); //住宿费 1
+                enterExitCostInfoView.BoardWagesData = dayAndCostData.Where(it => it.Type == 2).ToList(); //伙食费 2
+                enterExitCostInfoView.MiscellaneousFeeData =dayAndCostData.Where(it => it.Type == 3).ToList();  //公杂费 3
+                enterExitCostInfoView.TrainingExpenseData = dayAndCostData.Where(it => it.Type == 4).ToList();  //培训费 4
+
+                enterExitCostInfoView.Currencys = (List<CurrencyInfo>?)CommonFun.GetCurrencyChinaToList(enterExitCostData.CurrencyRemark);
+
+                result.Msg = "查询成功";
+                result.Code = 0;
+            }
+            else
+            {
+                result.Msg = "未查询出数据!!!";
+            }
+
+            result.Data = enterExitCostInfoView;
+
+            return result;
+        }
+
+        /// <summary>
+        /// Add Or Update
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> PostEnterExitCostOperate(EnterExitCostOperateDto dto)
+        { 
+            Result result = new Result() { Code =-1,Msg="操作失败!" };
+
+            var enterExitCost = _mapper.Map<Grp_EnterExitCost>(dto);
+            var quarterageData = _mapper.Map<List<Grp_DayAndCost>>(dto.QuarterageData);  //住宿费 1
+            var boardWagesData = _mapper.Map<List<Grp_DayAndCost>>(dto.BoardWagesData);  //伙食费 2
+            var miscellaneousFeeData = _mapper.Map<List<Grp_DayAndCost>>(dto.MiscellaneousFeeData);  //公杂费 3
+            var trainingExpenseData = _mapper.Map<List<Grp_DayAndCost>>(dto.TrainingExpenseData);    //培训费 4
+
+            //处理币种string
+            enterExitCost.CurrencyRemark = CommonFun.GetCurrencyChinaToString(dto.Currencys);
+            _sqlSugar.BeginTran();
+            try
+            {
+                var enterExit = _sqlSugar.Storageable<Grp_EnterExitCost>(enterExitCost).ToStorage();
+                enterExit.AsInsertable.ExecuteCommand();   //不存在插入
+                enterExit.AsUpdateable.ExecuteCommand();   //存在更新
+
+                var quarterage = _sqlSugar.Storageable<Grp_DayAndCost>(quarterageData).ToStorage();
+                quarterage.AsInsertable.ExecuteCommand();   //不存在插入
+                quarterage.AsUpdateable.ExecuteCommand();   //存在更新
+
+                var boardWages = _sqlSugar.Storageable<Grp_DayAndCost>(boardWagesData).ToStorage();
+                boardWages.AsInsertable.ExecuteCommand();   //不存在插入
+                boardWages.AsUpdateable.ExecuteCommand();   //存在更新
+
+                var miscellaneousFee = _sqlSugar.Storageable<Grp_DayAndCost>(miscellaneousFeeData).ToStorage();
+                miscellaneousFee.AsInsertable.ExecuteCommand();   //不存在插入
+                miscellaneousFee.AsUpdateable.ExecuteCommand();   //存在更新
+
+                var trainingExpense = _sqlSugar.Storageable<Grp_DayAndCost>(trainingExpenseData).ToStorage();
+                trainingExpense.AsInsertable.ExecuteCommand();   //不存在插入
+                trainingExpense.AsUpdateable.ExecuteCommand();   //存在更新
+
+                _sqlSugar.CommitTran();
+                result.Code = 0;
+                result.Msg = "操作成功!";
+            }
+            catch (Exception ex)
+            {
+                _sqlSugar.RollbackTran();
+                result.Msg = ex.Message;
+            }
+
+
+            return result;
+        }
+
+
+    }
+}

+ 1 - 1
OASystem/OASystem.Infrastructure/Repositories/Groups/TeamRateRepository.cs

@@ -40,7 +40,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
             Result result = new() { Code = -2 };
 
-            GroupNameDto groupNameDto = new GroupNameDto() { PortType = dto.PortType, PageIndex = dto.PageIndex, PageSize = dto.PageSize };
+            GroupNameDto groupNameDto = new GroupNameDto() { PortType = dto.PortType};
             var groups = await _deleInfoRep.GetGroupNameList(groupNameDto);
 
             var teamRateDatas = await _setDataRep.GetSetDataBySTId(_setDataRep, 66); // STid=66 全球币种

+ 62 - 1
OASystem/OASystem.Infrastructure/Tools/CommonFun.cs

@@ -1,4 +1,6 @@
-using System.Reflection.Metadata;
+using OASystem.Domain.ViewModels.Financial;
+using OASystem.Domain.ViewModels.Groups;
+using System.Reflection.Metadata;
 
 namespace OASystem.Infrastructure.Tools;
 
@@ -237,4 +239,63 @@ public static class CommonFun
 
     #endregion
 
+    #region 团组模块 - 汇率相关存储解析
+    /// <summary>
+    /// 团组模块 - 汇率相关 To List
+    /// </summary>
+    /// <param name="rateStr"></param>
+    /// <returns></returns>
+    public static List<CurrencyInfo> GetCurrencyChinaToList(string? rateStr)
+    {
+        List<CurrencyInfo> currencyInfos = new List<CurrencyInfo>();
+
+        if (string.IsNullOrEmpty(rateStr)) return currencyInfos;
+
+        if (rateStr.Contains("|"))
+        {
+            string[] currencyArr = rateStr.Split("|");
+            foreach (string currency in currencyArr)
+            {
+                string[] currency1 = currency.Split(":");
+                string[] currency2 = currency1[0].Split("(");
+
+                CurrencyInfo rateInfo = new CurrencyInfo()
+                {
+                    CurrencyCode = currency2[1].Replace(")", "").TrimEnd(),
+                    CurrencyName = currency2[0],
+                    Rate = decimal.Parse(currency1[1]),
+                };
+                currencyInfos.Add(rateInfo);
+            }
+        }
+        return currencyInfos;
+    }
+
+    /// <summary>
+    /// 团组模块 - 汇率相关存储解析 To String
+    /// </summary>
+    /// <param name="rates"></param>
+    /// <returns></returns>
+    public static string  GetCurrencyChinaToString(List<CurrencyInfo> rates)
+    {
+        
+        string rateStr = string.Empty;
+
+        if (rates.Count <= 0) return rateStr;
+
+        foreach (CurrencyInfo rate in rates)
+        {
+            //存储方式: 美元(USD):6.2350|.......|墨西哥比索(MXN):1.0000
+            rateStr += string.Format("{0}({1}):{2}|", rate.CurrencyName, rate.CurrencyCode, rate);
+        }
+
+        if (rateStr.Length > 0)
+        {
+            rateStr = rateStr.Substring(0, rateStr.Length - 1);
+        }
+
+        return rateStr;
+    }
+    #endregion
+
 }