Browse Source

三公签证费用
新增表 接口 数据库

leiy 1 year ago
parent
commit
0b80efa2a2

+ 3 - 2
OASystem/EntitySync/Program.cs

@@ -128,8 +128,9 @@ db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
     //typeof(Pm_TaskRelevanceUser), //任务分配关联人员(完成者) 
     //typeof(Pm_TaskRelevanceUser), //任务分配关联人员(完成者) 
     //typeof(Pm_TaskJobRelevancy), //任务分配关联人员(完成者) 
     //typeof(Pm_TaskJobRelevancy), //任务分配关联人员(完成者) 
     //typeof(Crm_TableOperationRecord), //表操作记录 
     //typeof(Crm_TableOperationRecord), //表操作记录 
-    typeof(Grp_InvertedList), //倒推表 
-    typeof(Grp_InvertedListVisaCountry), //倒推表签证国家 
+    //typeof(Grp_InvertedList), //倒推表 
+    //typeof(Grp_InvertedListVisaCountry), //倒推表签证国家 
+    typeof(Grp_VisaFeeInfo),  //签证费用info 
 
 
 
 
 });
 });

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

@@ -111,6 +111,7 @@ namespace OASystem.API.Controllers
         private readonly UsersRepository _usersRep;
         private readonly UsersRepository _usersRep;
         private readonly IJuHeApiService _juHeApi;
         private readonly IJuHeApiService _juHeApi;
         private readonly InvertedListRepository _invertedListRep;
         private readonly InvertedListRepository _invertedListRep;
+        private readonly VisaFeeInfoRepository _visaFeeInfoRep;
 
 
         public GroupsController(IMapper mapper, SqlSugarClient sqlSugar, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository,
         public GroupsController(IMapper mapper, SqlSugarClient sqlSugar, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository,
             TaskAssignmentRepository taskAssignmentRep, AirTicketResRepository airTicketResRep, DecreasePaymentsRepository decreasePaymentsRep,
             TaskAssignmentRepository taskAssignmentRep, AirTicketResRepository airTicketResRep, DecreasePaymentsRepository decreasePaymentsRep,
@@ -119,7 +120,7 @@ namespace OASystem.API.Controllers
             CheckBoxsRepository checkBoxs, GroupCostRepository GroupCostRepository, CostTypeHotelNumberRepository CostTypeHotelNumberRepository,
             CheckBoxsRepository checkBoxs, GroupCostRepository GroupCostRepository, CostTypeHotelNumberRepository CostTypeHotelNumberRepository,
             GroupCostParameterRepository GroupCostParameterRepository, HotelPriceRepository hotelPriceRep, CustomersRepository customersRep, SetDataRepository setDataRep,
             GroupCostParameterRepository GroupCostParameterRepository, HotelPriceRepository hotelPriceRep, CustomersRepository customersRep, SetDataRepository setDataRep,
             TourClientListRepository tourClientListRep, TeamRateRepository teamRateRep, IHubContext<ChatHub, IChatClient> hubContext, UsersRepository usersRep, IJuHeApiService juHeApi,
             TourClientListRepository tourClientListRep, TeamRateRepository teamRateRep, IHubContext<ChatHub, IChatClient> hubContext, UsersRepository usersRep, IJuHeApiService juHeApi,
-            InvertedListRepository invertedListRep)
+            InvertedListRepository invertedListRep, VisaFeeInfoRepository visaFeeInfoRep )
         {
         {
             _mapper = mapper;
             _mapper = mapper;
             _grpScheduleRep = grpScheduleRep;
             _grpScheduleRep = grpScheduleRep;
@@ -154,6 +155,7 @@ namespace OASystem.API.Controllers
             _usersRep = usersRep;
             _usersRep = usersRep;
             _juHeApi = juHeApi;
             _juHeApi = juHeApi;
             _invertedListRep = invertedListRep;
             _invertedListRep = invertedListRep;
+            _visaFeeInfoRep = visaFeeInfoRep;
         }
         }
 
 
         #region 流程管控
         #region 流程管控
@@ -4464,7 +4466,7 @@ namespace OASystem.API.Controllers
                         designer.SetDataSource("sumCityTranffic", @$"{_EnterExitCosts.CityTranffic.ToString("#0.00")} ");
                         designer.SetDataSource("sumCityTranffic", @$"{_EnterExitCosts.CityTranffic.ToString("#0.00")} ");
 
 
 
 
-                        string cell4Str = $"  4.国际旅费:经济舱:{_EnterExitCosts.AirJJ.ToString("#0.00")}元/人,公务舱:{_EnterExitCosts.AirGW.ToString("#0.00")}元/人";
+                        string cell4Str = $"  4.国际旅费:经济舱:{_EnterExitCosts.AirJJ.ToString("#0.00")} 元/人,公务舱:{_EnterExitCosts.AirGW.ToString("#0.00")} 元/人";
                         string cellStr = $"  5.其他费用(";
                         string cellStr = $"  5.其他费用(";
                         if (_EnterExitCosts.Visa > 0) cellStr += $"签证费:{_EnterExitCosts.Visa.ToString("#0.00")}元,";
                         if (_EnterExitCosts.Visa > 0) cellStr += $"签证费:{_EnterExitCosts.Visa.ToString("#0.00")}元,";
                         if (_EnterExitCosts.YiMiao > 0) cellStr += $"疫苗费:{_EnterExitCosts.YiMiao.ToString("#0.00")}元,";
                         if (_EnterExitCosts.YiMiao > 0) cellStr += $"疫苗费:{_EnterExitCosts.YiMiao.ToString("#0.00")}元,";
@@ -11125,6 +11127,47 @@ namespace OASystem.API.Controllers
 
 
         #endregion
         #endregion
 
 
+        #region 签证费用(签证费、代办费)
+
+        /// <summary>
+        /// 签证费用(签证费、代办费)
+        /// List
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostVisaFeeList(VisaFeeListDto _dto)
+        {
+            var _view = await _visaFeeInfoRep._List(_dto.PortType, _dto.DiId);
+            if (_view.Code != 0)
+            {
+                return Ok(JsonView(false, _view.Msg));
+            }
+
+            return Ok(JsonView(true,"操作成功!", _view.Data));
+        }
+
+        /// <summary>
+        /// 签证费用(签证费、代办费)
+        /// Add Or Update
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostVisaFeeAddAndUpdate(VisaFeeAddAndUpdateDto _dto)
+        {
+            var _view = await _visaFeeInfoRep._AddAndUpdate(_dto);
+            if (_view.Code != 0)
+            {
+                return Ok(JsonView(false, _view.Msg));
+            }
+
+            return Ok(JsonView(true, _view.Msg));
+        }
+
+        #endregion
+
+
         /// <summary>
         /// <summary>
         /// 
         /// 
         /// </summary>
         /// </summary>

+ 37 - 0
OASystem/OASystem.Domain/Dtos/Groups/VisaFeeDto.cs

@@ -0,0 +1,37 @@
+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 VisaFeeDto
+    {
+    }
+
+    public class VisaFeeListDto : PortDtoBase
+    {
+        public int DiId { get; set; }
+    }
+
+    public class VisaFeeAddAndUpdateDto : PortDtoBase
+    {
+        /// <summary>
+        /// 操作状态
+        /// 1 添加 
+        /// 2 修改
+        /// </summary>
+        public int Status { get; set; }
+
+        public int OpUserId { get; set; }
+
+        public int DiId { get; set; }
+
+        public List <VisaFeeInfosView>  VisaFeeInfos { get; set; }
+    }
+
+    
+
+}

+ 48 - 0
OASystem/OASystem.Domain/Entities/Groups/Grp_VisaFeeInfo.cs

@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.Groups
+{
+    /// <summary>
+    /// 团组签证
+    /// 费用详情
+    /// </summary>
+    [SugarTable("Grp_VisaFeeInfo")]
+    public class Grp_VisaFeeInfo:EntityBase
+    {
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        [SugarColumn(IsNullable = true ,ColumnDataType = "int")]
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 是否选中
+        /// 0 未选 1 选中
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int IsChecked { get; set; } = 0;
+
+        /// <summary>
+        /// 国家签证费用 Id
+        /// Res_CountryFeeCost Id
+        /// </summary>
+        [SugarColumn(IsNullable = true,ColumnDataType = "int")]
+        public int CountryVisaFeeId { get; set; }
+
+        /// <summary>
+        /// 代办费
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
+        public decimal AgencyFee { get; set; }
+
+        /// <summary>
+        /// 其他费用
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
+        public decimal OtherFee { get; set; }
+    }
+}

+ 46 - 0
OASystem/OASystem.Domain/ViewModels/Groups/VisaFeeInfoView.cs

@@ -0,0 +1,46 @@
+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>
+    /// 团组签证费用info
+    /// </summary>
+    public class VisaFeeInfoView: Grp_VisaFeeInfo
+    {
+    }
+
+    public class VisaFeeInfosView
+    {
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 是否选中
+        /// </summary>
+        public int IsChecked { get; set; }
+
+        /// <summary>
+        /// 国家
+        /// </summary>
+        public string Country { get; set; }
+
+        /// <summary>
+        /// 签证费用
+        /// </summary>
+        public decimal VisaFee { get; set; }
+
+        /// <summary>
+        /// 代办费
+        /// </summary>
+        public decimal AgencyFee { get; set; }
+
+        /// <summary>
+        /// 其他费用
+        /// </summary>
+        public decimal OtherFee { get; set; }
+    }
+}

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

@@ -553,7 +553,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 var endTime = new DateTime();
                 var endTime = new DateTime();
                 if (DateTime.TryParse(dto.VisitDate, out startTime))
                 if (DateTime.TryParse(dto.VisitDate, out startTime))
                 {
                 {
-                    endTime = startTime.AddDays(dto.VisitDays);
+                    endTime = startTime.AddDays(dto.VisitDays - 1);//含当天
                 }
                 }
                 #endregion
                 #endregion
 
 

+ 163 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/VisaFeeInfoRepository.cs

@@ -0,0 +1,163 @@
+using AutoMapper;
+using OASystem.Domain;
+using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Entities.Groups;
+using OASystem.Domain.Entities.Resource;
+using OASystem.Domain.ViewModels.Groups;
+using OASystem.Infrastructure.Repositories.Resource;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Infrastructure.Repositories.Groups
+{
+    /// <summary>
+    /// 团组签证费用详情 info
+    /// 仓储
+    /// </summary>
+    public class VisaFeeInfoRepository:BaseRepository<Grp_VisaFeeInfo,VisaInfoView>
+    {
+        private readonly IMapper _mapper;
+        private Result _result;
+        private readonly CountryFeeRepository _countryFeeRep;
+
+        public VisaFeeInfoRepository(SqlSugarClient sqlSugar, IMapper mapper, CountryFeeRepository countryFeeRep)
+            : base(sqlSugar)
+        {
+            _mapper = mapper;
+            _result = new Result() { Code = -2,Msg = "操作失败!"};
+            _countryFeeRep = countryFeeRep;
+        }
+
+
+        /// <summary>
+        /// Init
+        /// </summary>
+        /// <param name="portType"></param>
+        /// <param name="diId"></param>
+        /// <returns></returns>
+        public async Task<Result> _Init()
+        {
+            
+
+            var data = await _sqlSugar.Queryable<Res_CountryFeeCost>().Where(it => it.IsDel == 0).ToListAsync();
+            _result.Code = 0;
+            _result.Data = data;
+            _result.Msg = "操作成功!";
+            return _result;
+        }
+
+
+        /// <summary>
+        /// List
+        /// </summary>
+        /// <param name="portType"></param>
+        /// <param name="diId"></param>
+        /// <returns></returns>
+        public async Task<Result> _List(int portType, int diId)
+        {
+            if (diId < 0) return _result = new Result() { Code = -1, Msg = "请传入有效的DiId参数" };
+            if (portType < 1  || portType > 3) return _result = new Result() { Code = -1, Msg = "请传入有效的portType参数" };
+
+            string sql = string.Format($@"Select vfi.Id,vfi.IsChecked,cfc.VisaCountry AS Country,cfc.VisaPrice As VisaFee,
+                                            vfi.AgencyFee,vfi.OtherFee,vfi.Remark 
+                                            From Grp_VisaFeeInfo vfi
+                                            Left Join Res_CountryFeeCost cfc On vfi.CountryVisaFeeId = cfc.Id
+                                            Where vfi.Isdel = 0 And vfi.Diid = {diId}");
+            var data = await _sqlSugar.SqlQueryable<VisaFeeInfosView>(sql).ToListAsync();
+            _result.Code = 0;
+            _result.Data = data;
+            _result.Msg = "操作成功!";
+            return _result;
+        }
+
+        /// <summary>
+        /// List
+        /// </summary>
+        /// <param name="portType"></param>
+        /// <param name="diId"></param>
+        /// <returns></returns>
+        public async Task<Result> _AddAndUpdate(VisaFeeAddAndUpdateDto dto)
+        {
+            if (dto.Status < 1 || dto.Status > 2) return _result = new Result() { Code = -1, Msg = "请传入有效的Status参数" };
+            if (dto.VisaFeeInfos.Count  < 1) return _result = new Result() { Code = -1, Msg = "请传入有效的签证费用集合参数" };
+            if (dto.PortType < 1 || dto.PortType > 3) return _result = new Result() { Code = -1, Msg = "请传入有效的portType参数" };
+
+            List<Grp_VisaFeeInfo> visaInfos = new List<Grp_VisaFeeInfo>();
+
+            BeginTran();
+            bool visaFeeUpdate = false;
+            foreach (var item in dto.VisaFeeInfos)
+            {
+                int countryVisaFeeId = 0;
+                var info =await _countryFeeRep._InfoByCountryName(item.Country);
+                if (info == null) //添加
+                {
+                    int addId = _sqlSugar.Insertable(
+                        new Res_CountryFeeCost()
+                        {
+                            VisaCountry = item.Country,
+                            VisaPrice = item.VisaFee,
+                            LastUpdateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                            CreateUserId = dto.OpUserId,
+                        }).ExecuteReturnIdentity();
+                    if (addId > 0) countryVisaFeeId = addId;
+                }
+                else //修改
+                {
+                    countryVisaFeeId = info.Id;
+                    if (item.VisaFee != info.VisaPrice) //价格不同的时候执行修改
+                    {
+                        Res_CountryFeeCost _CountryFeeCost = new Res_CountryFeeCost()
+                        {
+                            Id = info.Id,
+                            VisaPrice = item.VisaFee,
+                            LastUpdateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                        };
+                        int update = _sqlSugar.Updateable(_CountryFeeCost).UpdateColumns(it => new { it.VisaPrice, it.LastUpdateTime }).WhereColumns(it => it.Id).ExecuteCommand();
+                        if (update > 0)
+                        {
+                            visaFeeUpdate = true;
+                        }
+                       
+                    }
+                }
+
+                visaInfos.Add(new Grp_VisaFeeInfo()
+                {
+                    Id = item.Id,
+                    DiId = dto.DiId,
+                    IsChecked = item.IsChecked,
+                    CountryVisaFeeId = countryVisaFeeId,
+                    AgencyFee = item.AgencyFee,
+                    OtherFee = item.OtherFee
+                });
+            }
+
+
+            if (dto.Status == 1) //添加
+            {
+                var add = _sqlSugar.Insertable(visaInfos).ExecuteCommand();
+                if (add > 0)
+                {
+                    CommitTran(); 
+                    return new Result() {Code = 0 ,Msg = "操作成功!" };
+                }
+            }
+            else if (dto.Status == 2) //修改
+            {
+                var  update = _sqlSugar.Updateable(visaInfos).IgnoreColumns(it => new { it.CreateUserId,it.CreateTime,it.IsDel }).WhereColumns(it => it.Id).ExecuteCommand();
+                if (update > 0 || visaFeeUpdate)
+                {
+                    CommitTran();
+                    return new Result() { Code = 0, Msg = "操作成功!" };
+                }
+            }
+
+            RollbackTran();
+            return _result;
+        }
+    }
+}

+ 13 - 0
OASystem/OASystem.Infrastructure/Repositories/Resource/CountryFeeRepository.cs

@@ -19,6 +19,19 @@ namespace OASystem.Infrastructure.Repositories.Resource
             _mapper = mapper;
             _mapper = mapper;
         }
         }
 
 
+        public async Task<Res_CountryFeeCost> _InfoByCountryName(string CountryName)
+        {
+            Res_CountryFeeCost _CountryFeeCost = new Res_CountryFeeCost();
+
+            if (string.IsNullOrEmpty(CountryName)) return _CountryFeeCost;
+
+            _CountryFeeCost = _sqlSugar.Queryable< Res_CountryFeeCost >().Where(it => it.VisaCountry.Equals(CountryName)).First();
+
+            return _CountryFeeCost;
+
+        }
+
+
         public async Task<Result> OperationCountryFeeCost(OperationCountryFeeCostDto dto)
         public async Task<Result> OperationCountryFeeCost(OperationCountryFeeCostDto dto)
         {
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
             Result result = new Result() { Code = -2, Msg = "未知错误" };