Browse Source

Merge branch 'develop' of http://132.232.92.186:3000/XinXiBu/OA2023 into develop

jiangjc 10 months ago
parent
commit
3f52c5cb07

+ 3 - 2
OASystem/EntitySync/Program.cs

@@ -128,8 +128,9 @@ db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
     //typeof(Pm_TaskRelevanceUser), //任务分配关联人员(完成者) 
     //typeof(Pm_TaskJobRelevancy), //任务分配关联人员(完成者) 
     //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 IJuHeApiService _juHeApi;
         private readonly InvertedListRepository _invertedListRep;
+        private readonly VisaFeeInfoRepository _visaFeeInfoRep;
 
         public GroupsController(IMapper mapper, SqlSugarClient sqlSugar, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository,
             TaskAssignmentRepository taskAssignmentRep, AirTicketResRepository airTicketResRep, DecreasePaymentsRepository decreasePaymentsRep,
@@ -119,7 +120,7 @@ namespace OASystem.API.Controllers
             CheckBoxsRepository checkBoxs, GroupCostRepository GroupCostRepository, CostTypeHotelNumberRepository CostTypeHotelNumberRepository,
             GroupCostParameterRepository GroupCostParameterRepository, HotelPriceRepository hotelPriceRep, CustomersRepository customersRep, SetDataRepository setDataRep,
             TourClientListRepository tourClientListRep, TeamRateRepository teamRateRep, IHubContext<ChatHub, IChatClient> hubContext, UsersRepository usersRep, IJuHeApiService juHeApi,
-            InvertedListRepository invertedListRep)
+            InvertedListRepository invertedListRep, VisaFeeInfoRepository visaFeeInfoRep )
         {
             _mapper = mapper;
             _grpScheduleRep = grpScheduleRep;
@@ -154,6 +155,7 @@ namespace OASystem.API.Controllers
             _usersRep = usersRep;
             _juHeApi = juHeApi;
             _invertedListRep = invertedListRep;
+            _visaFeeInfoRep = visaFeeInfoRep;
         }
 
         #region 流程管控
@@ -4464,7 +4466,7 @@ namespace OASystem.API.Controllers
                         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.其他费用(";
                         if (_EnterExitCosts.Visa > 0) cellStr += $"签证费:{_EnterExitCosts.Visa.ToString("#0.00")}元,";
                         if (_EnterExitCosts.YiMiao > 0) cellStr += $"疫苗费:{_EnterExitCosts.YiMiao.ToString("#0.00")}元,";
@@ -11125,6 +11127,47 @@ namespace OASystem.API.Controllers
 
         #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>

+ 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();
                 if (DateTime.TryParse(dto.VisitDate, out startTime))
                 {
-                    endTime = startTime.AddDays(dto.VisitDays);
+                    endTime = startTime.AddDays(dto.VisitDays - 1);//含当天
                 }
                 #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;
         }
 
+        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)
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };