Selaa lähdekoodia

合并服务器

yuanrf 1 vuosi sitten
vanhempi
commit
0dee3aa900
45 muutettua tiedostoa jossa 4157 lisäystä ja 205 poistoa
  1. 3 6
      OASystem/EntitySync/Program.cs
  2. 29 0
      OASystem/OASystem.Api/Controllers/BusinessController.cs
  3. 315 1
      OASystem/OASystem.Api/Controllers/FinancialController.cs
  4. 739 38
      OASystem/OASystem.Api/Controllers/GroupsController.cs
  5. 79 4
      OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs
  6. 4 3
      OASystem/OASystem.Api/OAMethodLib/PayrollComputation.cs
  7. 7 0
      OASystem/OASystem.Api/OAMethodLib/QiYeWeChatAPI/IQiYeWeChatApiService.cs
  8. 6 16
      OASystem/OASystem.Api/OAMethodLib/QiYeWeChatAPI/QiYeWeChatApiService.cs
  9. 3 1
      OASystem/OASystem.Api/appsettings.json
  10. 11 0
      OASystem/OASystem.Domain/AutoMappers/_baseMappingProfile.cs
  11. 134 0
      OASystem/OASystem.Domain/Dtos/Financial/PaymentRefundAndOtherMoneyDto.cs
  12. 108 0
      OASystem/OASystem.Domain/Dtos/Financial/ProceedsReceivedDto.cs
  13. 9 9
      OASystem/OASystem.Domain/Dtos/Groups/CarTouristGuideGroundDto.cs
  14. 6 0
      OASystem/OASystem.Domain/Dtos/Groups/GroupListDto.cs
  15. 33 0
      OASystem/OASystem.Domain/Dtos/Groups/GroupStatusDto.cs
  16. 292 0
      OASystem/OASystem.Domain/Dtos/Groups/HotelReservationsDto.cs
  17. 11 2
      OASystem/OASystem.Domain/Dtos/PersonnelModule/WageSheetDto.cs
  18. 54 0
      OASystem/OASystem.Domain/Entities/Financial/Fin_PaymentRefundAndOtherMoney.cs
  19. 1 1
      OASystem/OASystem.Domain/Entities/Financial/Fin_ProceedsReceived.cs
  20. 2 2
      OASystem/OASystem.Domain/Entities/Groups/Grp_CreditCardPayment.cs
  21. 51 0
      OASystem/OASystem.Domain/Entities/Groups/Grp_Customers.cs
  22. 88 43
      OASystem/OASystem.Domain/Entities/Groups/Grp_HotelReservations.cs
  23. 7 0
      OASystem/OASystem.Domain/Entities/PersonnelModule/Pm_WageSheet.cs
  24. 127 0
      OASystem/OASystem.Domain/ViewModels/Financial/Fin_PaymentRefundAndOtherMoneyView.cs
  25. 55 0
      OASystem/OASystem.Domain/ViewModels/Financial/Fin_ProceedsReceivedView.cs
  26. 71 0
      OASystem/OASystem.Domain/ViewModels/Groups/CarTouristCreditCardPaymentView.cs
  27. 48 0
      OASystem/OASystem.Domain/ViewModels/Groups/DelegationInfoView.cs
  28. 95 0
      OASystem/OASystem.Domain/ViewModels/Groups/GroupStatusView.cs
  29. 89 1
      OASystem/OASystem.Domain/ViewModels/Groups/Grp_CarTouristGuideGroundView.cs
  30. 348 0
      OASystem/OASystem.Domain/ViewModels/Groups/HotelReservationsByDiIdView.cs
  31. 23 1
      OASystem/OASystem.Domain/ViewModels/Groups/VisaInfoView.cs
  32. 14 0
      OASystem/OASystem.Domain/ViewModels/PersonnelModule/WageSheetView.cs
  33. 3 2
      OASystem/OASystem.Domain/ViewModels/QiYeWeChat/ApprovalDataView.cs
  34. 405 0
      OASystem/OASystem.Infrastructure/Repositories/Financial/PaymentRefundAndOtherMoneyRepository.cs
  35. 116 6
      OASystem/OASystem.Infrastructure/Repositories/Financial/ProceedsReceivedRepository.cs
  36. 58 22
      OASystem/OASystem.Infrastructure/Repositories/Groups/CarTouristGuideGroundRepository.cs
  37. 2 1
      OASystem/OASystem.Infrastructure/Repositories/Groups/DecreasePaymentsRepository.cs
  38. 1 37
      OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationInfoRepository.cs
  39. 572 0
      OASystem/OASystem.Infrastructure/Repositories/Groups/HotelPriceRepository.cs
  40. 1 1
      OASystem/OASystem.Infrastructure/Repositories/Groups/InvitationOfficialActivitiesRepository.cs
  41. 61 2
      OASystem/OASystem.Infrastructure/Repositories/Groups/TeamRateRepository.cs
  42. 17 4
      OASystem/OASystem.Infrastructure/Repositories/Groups/VisaPriceRepository.cs
  43. 1 1
      OASystem/OASystem.Infrastructure/Repositories/PersonnelModule/WageSheetRepository.cs
  44. 1 1
      OASystem/OASystem.Infrastructure/Repositories/Resource/HotelDataRepository.cs
  45. 57 0
      OASystem/OASystem.Infrastructure/Repositories/System/SetDataRepository.cs

+ 3 - 6
OASystem/EntitySync/Program.cs

@@ -115,10 +115,7 @@ db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
     //typeof(Grp_CostTypeHotelNumber)//分段房间数量
     //typeof(Grp_VisaInfo)
     //typeof(Grp_CarTouristGuideGroundReservations),
-    //typeof(Grp_CarTouristGuideGroundReservationsContent)
-    typeof(Grp_CarGuides),
-    typeof(Grp_GuidesInfo),
-    typeof(Grp_CarInfo),
-    typeof(Grp_ScenicSpotInfo),
-});;
+    //typeof(Grp_CarTouristGuideGroundReservationsContent),//
+    typeof(Fin_PaymentRefundAndOtherMoney)
+});
 Console.WriteLine("数据库结构同步完成!");

+ 29 - 0
OASystem/OASystem.Api/Controllers/BusinessController.cs

@@ -102,6 +102,35 @@ namespace OASystem.API.Controllers
                 throw;
             }
         }
+
+        /// <summary>
+        /// 根据团组Id币种Id及类型Id查询团组汇率
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet, HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostCurrencyByDiid(int DiId,int CId,int CurrencyId)
+        {
+            try
+            {
+                Result setData = await _setDataRep.PostCurrencyByDiid( DiId, CId, CurrencyId); //币种类型
+                if (setData.Code == 0)
+                {
+                    return Ok(JsonView(true, "查询成功", setData.Data));
+                }
+                else
+                {
+                    return Ok(JsonView(false, setData.Msg));
+                }
+            }
+            catch (Exception)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+
+        }
         #endregion
 
         #region 会务物料单

+ 315 - 1
OASystem/OASystem.Api/Controllers/FinancialController.cs

@@ -28,11 +28,14 @@ namespace OASystem.API.Controllers
         private readonly TeamRateRepository _teamRateRep;      //团组汇率仓库
         private readonly ForeignReceivablesRepository _ForForeignReceivablesRep;  //对外收款账单仓库
         private readonly ProceedsReceivedRepository _proceedsReceivedRep;  //已收款项仓库
+        private readonly PaymentRefundAndOtherMoneyRepository _paymentRefundAndOtherMoneyRep; //收款退还与其他款项 仓库
 
         /// <summary>
         /// 初始化
         /// </summary>
-        public FinancialController(IMapper mapper, IConfiguration configuration, DailyFeePaymentRepository daiRep, SqlSugarClient sqlSugar, SetDataTypeRepository setDataTypeRep, TeamRateRepository teamRateRep, ForeignReceivablesRepository ForForeignReceivablesRep, ProceedsReceivedRepository proceedsReceivedRep) 
+        public FinancialController(IMapper mapper, IConfiguration configuration, DailyFeePaymentRepository daiRep, SqlSugarClient sqlSugar, SetDataTypeRepository setDataTypeRep,
+            TeamRateRepository teamRateRep, ForeignReceivablesRepository ForForeignReceivablesRep, ProceedsReceivedRepository proceedsReceivedRep, 
+            PaymentRefundAndOtherMoneyRepository paymentRefundAndOtherMoneyRep) 
         {
             _mapper = mapper;
             _config = configuration;
@@ -42,6 +45,7 @@ namespace OASystem.API.Controllers
             _teamRateRep = teamRateRep;
             _ForForeignReceivablesRep = ForForeignReceivablesRep;
             _proceedsReceivedRep = proceedsReceivedRep;
+            _paymentRefundAndOtherMoneyRep = paymentRefundAndOtherMoneyRep;
         }
 
         #region 日付申请
@@ -730,5 +734,315 @@ namespace OASystem.API.Controllers
 
 
         #endregion
+
+        #region 已收款项
+
+        /// <summary>
+        /// 已收款项
+        /// 查询
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostAmountReceived(AmountReceivedDto dto)
+        {
+            try
+            {
+                if (dto == null)
+                {
+                    return Ok(JsonView(false, "参数不能为空!"));
+                }
+
+                Result ffrData = await _proceedsReceivedRep.PostAmountReceived(dto.DiId );
+                dynamic data = null;
+                if (dto.PortType == 1)
+                {
+                    if (ffrData.Code != 0)
+                    {
+                        return Ok(JsonView(false, ffrData.Msg));
+                    }
+                    data= ffrData.Data;
+                }
+                else if(dto.PortType == 2)
+                {
+                    if (ffrData.Code != 0)
+                    {
+                        return Ok(JsonView(false, ffrData.Msg));
+                    }
+                    data = ffrData.Data;
+                }
+                else if (dto.PortType == 2)
+                {
+                    if (ffrData.Code != 0)
+                    {
+                        return Ok(JsonView(false, ffrData.Msg));
+                    }
+                    data = ffrData.Data;
+
+                }
+                else
+                {
+                    return Ok(JsonView(false, "请选择正确的端口号!"));
+                }
+                return Ok(JsonView(true,"操作成功!", data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+        /// <summary>
+        /// 已收款项
+        /// Add Or Edit
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostAmountReceivedAddOrEdit(AmountReceivedAddOrEditDto dto)
+        {
+            try
+            {
+                if (dto == null)
+                {
+                    return Ok(JsonView(false, "参数不能为空!"));
+                }
+
+                Result ffrData = await _proceedsReceivedRep.PostAmountReceivedAddOrEditDto(dto);
+
+                if (dto.PortType == 1)
+                {
+                    if (ffrData.Code != 0)
+                    {
+                        return Ok(JsonView(false, ffrData.Msg));
+                    }
+
+                }
+                else if (dto.PortType == 2)
+                {
+                    if (ffrData.Code != 0)
+                    {
+                        return Ok(JsonView(false, ffrData.Msg));
+                    }
+
+                }
+                else if (dto.PortType == 2)
+                {
+                    if (ffrData.Code != 0)
+                    {
+                        return Ok(JsonView(false, ffrData.Msg));
+                    }
+                }
+                else
+                {
+                    return Ok(JsonView(false, "请选择正确的端口号!"));
+                }
+                return Ok(JsonView(true, "操作成功!"));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+        /// <summary>
+        /// 已收款项
+        /// Del
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostAmountReceived_Del(AmountReceivedDelDto dto)
+        {
+            try
+            {
+                if (dto == null)
+                {
+                    return Ok(JsonView(false, "参数不能为空!"));
+                }
+
+                Result ffrData = await _proceedsReceivedRep.PostAmountReceivedDel(dto);
+
+                if (ffrData.Code != 0)
+                {
+                    return Ok(JsonView(false, ffrData.Msg));
+                }
+
+                return Ok(JsonView(true, "操作成功!"));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+        #endregion
+
+        #region 收款退还与其他款项 
+
+        /// <summary>
+        /// 收款退还与其他款项
+        /// 查询 根据团组Id
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostPaymentRefundAndOtherMoneyItemByDiId(PaymentRefundAndOtherMoneyItemByDiIdDto dto)
+        {
+            try
+            {
+                if (dto == null)
+                {
+                    return Ok(JsonView(false, "参数不能为空!"));
+                }
+
+                Result _result = await _paymentRefundAndOtherMoneyRep.PostItemByDiId(dto.DiId);
+
+                if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3)  //1 Web 2 Android 3 Ios
+                {
+                    if (_result.Code != 0)
+                    {
+                        return Ok(JsonView(false, _result.Msg));
+                    }
+                }
+                else
+                {
+                    return Ok(JsonView(false, "请输入正确的端口号! 1 Web 2 Android 3 Ios;"));
+                }
+                return Ok(JsonView(true, "操作成功!", _result.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+        /// <summary>
+        /// 收款退还与其他款项
+        /// 删除 
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostPaymentRefundAndOtherMoneyDel(PaymentRefundAndOtherMoneyDelDto dto)
+        {
+            try
+            {
+                if (dto == null)
+                {
+                    return Ok(JsonView(false, "参数不能为空!"));
+                }
+
+                Result _result = await _paymentRefundAndOtherMoneyRep._Del(dto);
+
+                if (_result.Code != 0)
+                {
+                    return Ok(JsonView(false, _result.Msg));
+                }
+
+                return Ok(JsonView(true, "操作成功!"));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+        /// <summary>
+        /// 收款退还与其他款项
+        /// Info Data Source
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostPaymentRefundAndOtherMoneyInfoDataSource(PortDtoBase dto)
+        {
+            try
+            {
+                Result _result = await _paymentRefundAndOtherMoneyRep._InfoDataSource(dto);
+
+                if (_result.Code != 0)
+                {
+                    return Ok(JsonView(false, _result.Msg));
+                }
+
+                return Ok(JsonView(true, "查询成功!", _result.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+        /// <summary>
+        /// 收款退还与其他款项
+        /// Info
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostPaymentRefundAndOtherMoneyInfo(PaymentRefundAndOtherMoneyInfoDto dto)
+        {
+            try
+            {
+                if (dto == null)
+                {
+                    return Ok(JsonView(false, "参数不能为空!"));
+                }
+
+                Result _result = await _paymentRefundAndOtherMoneyRep._Info(dto);
+
+                if (_result.Code != 0)
+                {
+                    return Ok(JsonView(false, _result.Msg));
+                }
+
+                return Ok(JsonView(true, "查询成功!", _result.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+        /// <summary>
+        /// 收款退还与其他款项
+        /// 操作(Add Or Edit)
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostPaymentRefundAndOtherMoneyAddOrEdit(PaymentRefundAndOtherMoneyAddOrEditDto dto)
+        {
+            try
+            {
+                if (dto == null)
+                {
+                    return Ok(JsonView(false, "参数不能为空!"));
+                }
+
+                Result _result = await _paymentRefundAndOtherMoneyRep._AddOrEdit(dto);
+
+                if (_result.Code != 0)
+                {
+                    return Ok(JsonView(false, _result.Msg));
+                }
+
+                return Ok(JsonView(true, "操作成功!"));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+        #endregion
     }
 }

+ 739 - 38
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -30,6 +30,10 @@ using NPOI.HPSF;
 using SqlSugar;
 using System.Collections;
 using Org.BouncyCastle.Ocsp;
+using System.Globalization;
+using static QRCoder.PayloadGenerator;
+using Bookmark = Aspose.Words.Bookmark;
+using Aspose.Words.Fields;
 
 namespace OASystem.API.Controllers
 {
@@ -51,6 +55,7 @@ namespace OASystem.API.Controllers
         private readonly DelegationVisaRepository _delegationVisaRep;
         private readonly VisaPriceRepository _visaPriceRep;
         private readonly CarTouristGuideGroundRepository _carTouristGuideGroundRep;
+        private readonly HotelPriceRepository _hotelPriceRep;
         private readonly MessageRepository _message;
         private readonly SqlSugarClient _sqlSugar;
         #region 成本相关
@@ -67,8 +72,8 @@ namespace OASystem.API.Controllers
         public GroupsController(IMapper mapper, SqlSugarClient sqlSugar, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository,
             TaskAssignmentRepository taskAssignmentRep, AirTicketResRepository airTicketResRep, DecreasePaymentsRepository decreasePaymentsRep,
             InvitationOfficialActivitiesRepository InvitationOfficialActivitiesRep, DelegationEnDataRepository delegationEnDataRep, EnterExitCostRepository enterExitCostRep
-            , DelegationVisaRepository delegationVisaRep, MessageRepository message,VisaPriceRepository visaPriceRep,CarTouristGuideGroundRepository carTouristGuideGroundRep,CheckBoxsRepository checkBoxs, GroupCostRepository GroupCostRepository, CostTypeHotelNumberRepository CostTypeHotelNumberRepository,
-            GroupCostParameterRepository GroupCostParameterRepository)
+            , DelegationVisaRepository delegationVisaRep, MessageRepository message, VisaPriceRepository visaPriceRep, CarTouristGuideGroundRepository carTouristGuideGroundRep, CheckBoxsRepository checkBoxs, GroupCostRepository GroupCostRepository, CostTypeHotelNumberRepository CostTypeHotelNumberRepository,
+            GroupCostParameterRepository GroupCostParameterRepository, HotelPriceRepository hotelPriceRep)
         {
             _mapper = mapper;
             _grpScheduleRep = grpScheduleRep;
@@ -88,15 +93,16 @@ namespace OASystem.API.Controllers
             _enterExitCostRep = enterExitCostRep;
             _delegationVisaRep = delegationVisaRep;
             _message = message;
-            _visaPriceRep= visaPriceRep;
-            _carTouristGuideGroundRep= carTouristGuideGroundRep;
+            _visaPriceRep = visaPriceRep;
+            _carTouristGuideGroundRep = carTouristGuideGroundRep;
             _checkBoxs = checkBoxs;
             _GroupCostRepository = GroupCostRepository;
             _CostTypeHotelNumberRepository = CostTypeHotelNumberRepository;
             _GroupCostParameterRepository = GroupCostParameterRepository;
+            _hotelPriceRep = hotelPriceRep;
         }
 
-        
+
         #region 流程管控
 
         /// <summary>
@@ -259,13 +265,50 @@ namespace OASystem.API.Controllers
         {
             if (dto == null) return Ok(JsonView(false, "请输入搜索搜索条件!"));
 
-            var groupData = await _groupRepository.PostGroupPageList(dto);
-            if (groupData.Code != 0)
+            if (dto.PortType == 1 || dto.PortType == 2) // web/Android
             {
-                return Ok(JsonView(false, groupData.Msg));
-            }
+                string sqlWhere = string.Empty;
+                if (dto.IsSure == 0) //未完成
+                {
+                    sqlWhere += string.Format(@" And IsSure = 0");
+                }
+                else if (dto.IsSure == 1) //已完成
+                {
+                    sqlWhere += string.Format(@" And IsSure = 1");
+                }
 
-            return Ok(JsonView(groupData.Data));
+                if (!string.IsNullOrEmpty(dto.SearchCriteria))
+                {
+                    string tj = dto.SearchCriteria;
+                    sqlWhere += string.Format(@"And (ssd.Name Like '%{0}%' Or TeamName Like '%{1}%' Or ClientName Like '%{2}%' Or  ClientName Like '%{3}%' Or su.CnName  Like '%{4}%')",
+                       tj, tj, tj, tj, tj);
+                }
+
+                string sql = string.Format(@"Select Row_Number,SalesQuoteNo,TourCode,TeamTypeId, TeamType,
+					                              TeamLevId,TeamLev,TeamName,ClientName,ClientUnit,
+					                              VisitDate,VisitDays,VisitPNumber,JietuanOperator,IsSure,CreateTime
+					                              From (
+					                              Select row_number() over(order by gdi.CreateTime Desc) as Row_Number,
+					                              gdi.Id,SalesQuoteNo,TourCode,ssd.Id TeamTypeId, ssd.Name TeamType,
+					                              ssd1.Id TeamLevId,ssd1.Name TeamLev,TeamName,ClientName,ClientUnit,
+					                              VisitDate,VisitDays,VisitPNumber,su.CnName JietuanOperator,IsSure,gdi.CreateTime
+					                              From  Grp_DelegationInfo gdi
+					                              Inner Join Sys_SetData ssd On gdi.TeamDid = ssd.Id 
+					                              Inner Join Sys_SetData ssd1 On gdi.TeamLevSId = ssd1.Id
+					                              Left Join Sys_Users su On gdi.JietuanOperator = su.Id
+					                              Where gdi.IsDel = 0  {0}
+				                              ) temp  ", sqlWhere);
+
+                RefAsync<int> total = 0;//REF和OUT不支持异步,想要真的异步这是最优解
+                var _DelegationList = await _sqlSugar.SqlQueryable<DelegationListView>(sql).ToPageListAsync(dto.PageIndex, dto.PageSize, total);//ToPageAsync
+
+                return Ok(JsonView(true, "查询成功!", _DelegationList, total));
+
+            }
+            else
+            {
+                return Ok(JsonView(false, "查询失败"));
+            }
         }
 
         /// <summary>
@@ -296,7 +339,6 @@ namespace OASystem.API.Controllers
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> GroupEditBasicSource(GroupListDto dto)
         {
-
             var groupData = await _groupRepository.GroupEditBasicSource(dto);
             if (groupData.Code != 0)
             {
@@ -401,10 +443,10 @@ namespace OASystem.API.Controllers
 
             GroupStepForDelegation.CreateWorkStep(dto.GroupId); //创建管控流程
 
-            return Ok(JsonView(true,"操作成功!",groupData.Data));
+            return Ok(JsonView(true, "操作成功!", groupData.Data));
         }
 
-        
+
 
         /// <summary>
         /// 获取团组名称data  And 签证国别Data
@@ -659,10 +701,11 @@ namespace OASystem.API.Controllers
                         .SetColumns(it => it.WorkStatus == dto.visaStatus)
                         .Where(s => s.Id == dto.visaProgressCustomerId)
                         .ExecuteCommandAsync();
-                    if (updCount > 0 && dto.publishCode == 1) {
+                    if (updCount > 0 && dto.publishCode == 1)
+                    {
 
                         _delegationVisaRep.ChangeDataBase(DBEnum.OA2014DB); //切换到新OA后删除
-                        
+
                         string sqlDelegation = string.Format(@" Select * From DelegationInfo With(Nolock) Where Id = {0} ", dto.diId);
                         OA2021_DelegationInfo groupData = _sqlSugar.SqlQueryable<OA2021_DelegationInfo>(sqlDelegation).First();
                         //GroupInfoDto grpDto = new GroupInfoDto() { Id = dto.diId };
@@ -688,7 +731,8 @@ namespace OASystem.API.Controllers
                             }
                         });
 
-                        if (rst) {
+                        if (rst)
+                        {
                             return Ok(JsonView(true, "发送通知成功"));
                         }
                     }
@@ -2752,14 +2796,14 @@ namespace OASystem.API.Controllers
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> GetNationalTravelFeePageDataSource()
         {
-           
+
             string sql = string.Format(@"Select * From Grp_NationalTravelFee Where Isdel = 0  ");
 
             var nationalTravelFeeData = await _groupRepository._sqlSugar.SqlQueryable<Grp_NationalTravelFee>(sql).ToListAsync();
 
             List<string> countryData = new List<string>();
 
-            countryData.AddRange( nationalTravelFeeData.Select(it => it.Country ).ToList());
+            countryData.AddRange(nationalTravelFeeData.Select(it => it.Country).ToList());
             countryData = countryData.Distinct().ToList();
 
             List<dynamic> dataSource = new List<dynamic>();
@@ -2772,7 +2816,7 @@ namespace OASystem.API.Controllers
                     CountryName = item,
                     CityData = cityData1
                 };
-                
+
                 dataSource.Add(countryData2);
             }
 
@@ -2788,9 +2832,9 @@ namespace OASystem.API.Controllers
         public async Task<IActionResult> PostNationalTravelFeePage(NationalTravelFeePageDto dto)
         {
             int portId = dto.PortType;
-            if (portId != 1 && portId != 2 && portId != 3) return Ok(JsonView(false, "请输入正确的端口号!\r\n请求端口分类1 Web 2 Android 3 IOS")); 
+            if (portId != 1 && portId != 2 && portId != 3) return Ok(JsonView(false, "请输入正确的端口号!\r\n请求端口分类1 Web 2 Android 3 IOS"));
 
-            if (dto.PageIndex == 0)  return Ok(JsonView(false, "当前页码数不能为0!"));
+            if (dto.PageIndex == 0) return Ok(JsonView(false, "当前页码数不能为0!"));
             if (dto.PageSize == 0) return Ok(JsonView(false, "每页条数不能0!"));
 
             string whereSql = string.Empty;
@@ -2844,7 +2888,7 @@ namespace OASystem.API.Controllers
                 whereSql = string.Format(@"And City = '{0}' ", dto.City);
             }
 
-            
+
             string sql = string.Format(@"Select gntf.Country,gntf.City,gntf.Currency,ssd.Name as CurrencyCode, 
 	                                                ssd.Remark as CurrencyName,gntf.RoomCost,gntf.FoodCost,gntf.PublicCost,
 	                                                gntf.LastUpdateUserId,su.CnName as LastUpdateUserName,gntf.LastUpdateTime 
@@ -2896,7 +2940,8 @@ namespace OASystem.API.Controllers
         {
             try
             {
-                Grp_NationalTravelFee _nationalTravelFee = new Grp_NationalTravelFee() { 
+                Grp_NationalTravelFee _nationalTravelFee = new Grp_NationalTravelFee()
+                {
                     Id = dto.Id,
                     DeleteUserId = dto.DeleteUserId,
                     DeleteTime = DateTime.Now.ToString("yyyy-MM-dd"),
@@ -3034,7 +3079,7 @@ namespace OASystem.API.Controllers
                     PassengerType = _PassengerType,
                     BankCard = _BankCard
                 };
-                return Ok(JsonView(true, "查询成功!",data));
+                return Ok(JsonView(true, "查询成功!", data));
             }
             catch (Exception ex)
             {
@@ -3103,8 +3148,8 @@ namespace OASystem.API.Controllers
         {
             try
             {
-                Grp_CarTouristGuideGroundReservations _groupData = await _sqlSugar.Queryable<Grp_CarTouristGuideGroundReservations>().FirstAsync(a=>a.Id==dto.Id && a.IsDel==0);
-                Grp_CreditCardPayment _creditCardPayment = await _sqlSugar.Queryable<Grp_CreditCardPayment>().FirstAsync(a => a.CId == dto.Id && a.CTable==79 && a.IsDel == 0);
+                Grp_CarTouristGuideGroundReservations _groupData = await _sqlSugar.Queryable<Grp_CarTouristGuideGroundReservations>().FirstAsync(a => a.Id == dto.Id && a.IsDel == 0);
+                Grp_CreditCardPayment _creditCardPayment = await _sqlSugar.Queryable<Grp_CreditCardPayment>().FirstAsync(a => a.CId == dto.Id && a.CTable == 79 && a.IsDel == 0);
                 var data = new
                 {
                     CarTouristGuideGround = _groupData,
@@ -3185,11 +3230,11 @@ namespace OASystem.API.Controllers
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> CarTouristGuideGroundContenInitialize(CarTouristGuideGroundContenDto dto)
+        public async Task<IActionResult> CarTouristGuideGroundContentInitialize(CarTouristGuideGroundContentDto dto)
         {
             try
             {
-                Result groupData = await _carTouristGuideGroundRep.CarTouristGuideGroundConten(dto);
+                Result groupData = await _carTouristGuideGroundRep.CarTouristGuideGroundContent(dto);
                 if (groupData.Code != 0)
                 {
                     return Ok(JsonView(false, groupData.Msg));
@@ -3208,11 +3253,11 @@ namespace OASystem.API.Controllers
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> OpCarTouristGuideGroundContenById(CarTouristGuideGroundIdDto dto)
+        public async Task<IActionResult> OpCarTouristGuideGroundContentById(CarTouristGuideGroundIdDto dto)
         {
             try
             {
-                Result groupData = await _carTouristGuideGroundRep.OpCarTouristGuideGroundContenById(dto);
+                Result groupData = await _carTouristGuideGroundRep.OpCarTouristGuideGroundContentById(dto);
                 if (groupData.Code != 0)
                 {
                     return Ok(JsonView(false, groupData.Msg));
@@ -3231,11 +3276,11 @@ namespace OASystem.API.Controllers
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> OpCarTouristGuideGroundConten(OpCarTouristGuideGroundContenDto dto)
+        public async Task<IActionResult> OpCarTouristGuideGroundContent(OpCarTouristGuideGroundContentDto dto)
         {
             try
             {
-                Result groupData = await _carTouristGuideGroundRep.OpCarTouristGuideGroundConten(dto);
+                Result groupData = await _carTouristGuideGroundRep.OpCarTouristGuideGroundContent(dto);
                 if (groupData.Code != 0)
                 {
                     return Ok(JsonView(false, groupData.Msg));
@@ -3265,9 +3310,9 @@ namespace OASystem.API.Controllers
                 ELSE 'False' END as isTrue  from Grp_GroupCost where Isdel = 0 and date != '' group by Diid) b on a.Id = b.Diid
                  Where TeamName != '' And IsDel = 0  Order By a.Id Desc
             ").ToList(); //团组列表
-            int diid = dto.Diid == - 1 ? groupList.First().Id : dto.Diid;
-            var groupInfo = await _groupRepository.PostShareGroupInfo(new ShareGroupInfoDto { PortType =  1 , Id = diid }); //团组信息
-            var groupChecks =   _checkBoxs.GetCheckBoxsByDiid(diid);  //团组选中信息  可枚举
+            int diid = dto.Diid == -1 ? groupList.First().Id : dto.Diid;
+            var groupInfo = await _groupRepository.PostShareGroupInfo(new ShareGroupInfoDto { PortType = 1, Id = diid }); //团组信息
+            var groupChecks = _checkBoxs.GetCheckBoxsByDiid(diid);  //团组选中信息  可枚举
             var groupCost = _GroupCostRepository.GetAllByDiid(diid);  //团组列表信息  
             var groupCostMap = _mapper.Map<List<Grp_GroupCostDto>>(groupCost);
             var hotelNumber = _CostTypeHotelNumberRepository.GetCostTypeHotelNumberByDiid(diid); //酒店数量 可枚举
@@ -3277,7 +3322,8 @@ namespace OASystem.API.Controllers
             //     Grp_GroupCostParameter());
             var GroupCostParameterMap = _mapper.Map<List<Grp_GroupCostParameterDto>>(GroupCostParameter);
 
-            return Ok(JsonView(new {
+            return Ok(JsonView(new
+            {
                 groupList,
                 groupInfo,
                 groupChecks,
@@ -3298,7 +3344,7 @@ namespace OASystem.API.Controllers
             JsonView jw = null;
             bool isTrue = false;
             var Grp_groups = _mapper.Map<List<Grp_GroupCost>>(dto.GroupCosts);
-            Grp_groups.ForEach(x => { x.CreateUserId = dto.Userid; x.CreateTime = DateTime.Now;}); //.ToString("yyyy-MM-dd HH:mm:ss")
+            Grp_groups.ForEach(x => { x.CreateUserId = dto.Userid; x.CreateTime = DateTime.Now; }); //.ToString("yyyy-MM-dd HH:mm:ss")
             var Grp_CheckBoxs = _mapper.Map<List<Grp_CheckBoxs>>(dto.CheckBoxs);
             Grp_CheckBoxs.ForEach(x => { x.CreateUserId = dto.Userid; x.CreateTime = DateTime.Now; });
             var Grp_HotelNumber = _mapper.Map<List<Grp_CostTypeHotelNumber>>(dto.CostTypeHotelNumbers);
@@ -3314,7 +3360,7 @@ namespace OASystem.API.Controllers
                 isTrue = await _GroupCostParameterRepository.SaveAsync(Grp_CostParameters , dto.Userid ,dto.Diid); //系数
 
                 _sqlSugar.CommitTran();
-                jw = JsonView(true,"保存成功!",isTrue);
+                jw = JsonView(true, "保存成功!", isTrue);
             }
             catch (Exception)
             {
@@ -3389,8 +3435,663 @@ namespace OASystem.API.Controllers
 
         #endregion
 
+        #region 酒店预定
+        /// <summary>
+        /// 酒店预订页面初始化绑定
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> HotelReservationsInitialize(HotelReservationsDto dto)
+        {
+            try
+            {
+                Result groupData = await _hotelPriceRep.HotelReservationsInitialize(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+                return Ok(JsonView(true, groupData.Msg, groupData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+        /// <summary>
+        /// 根基团组Id查询酒店费用列表
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> HotelReservationsByDiId(HotelReservationsByDiIdDto dto)
+        {
+            try
+            {
+                Result groupData = await _hotelPriceRep.HotelReservationsByDiId(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+                return Ok(JsonView(true, groupData.Msg, groupData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+        /// <summary>
+        /// 根基酒店费用Id查询酒店费用详细
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> HotelReservationsById(HotelReservationsByIdDto dto)
+        {
+            try
+            {
+                Result groupData = await _hotelPriceRep.HotelReservationsById(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+                return Ok(JsonView(true, groupData.Msg, groupData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+        /// <summary>
+        /// 计算酒店付款总金额
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> HotelConversionAmounts(HotelReservationsCNYDto dto)
+        {
+            try
+            {
+                Result groupData = await _hotelPriceRep.HotelConversionAmounts(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+                return Ok(JsonView(true, groupData.Msg, groupData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+        /// <summary>
+        /// 根据酒店费用操作(Status:1.新增,2.修改)
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> OpHotelReservations(OpHotelReservationsData dto)
+        {
+            try
+            {
+                Result groupData = await _hotelPriceRep.OpHotelReservations(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+                return Ok(JsonView(true, groupData.Msg, groupData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+        /// <summary>
+        ///  文件上传
+        /// </summary>
+        /// <param name="file"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> UploadHotel(IFormFile file)
+        {
+            try
+            {
+                if (file != null)
+                {
+                    var fileDir = AppSettingsHelper.Get("GrpFileBasePath");
+                    //文件名称
+                    string projectFileName = file.FileName;
+
+                    //上传的文件的路径
+                    string filePath = "";
+
+
+                    if (!Directory.Exists(fileDir))
+                    {
+                        Directory.CreateDirectory(fileDir);
+                    }
+
+                    //上传的文件的路径
+                    filePath = fileDir + $@"\酒店费用录入相关文件\{projectFileName}";
+
+
+                    using (FileStream fs = System.IO.File.Create(filePath))
+                    {
+                        file.CopyTo(fs);
+                        fs.Flush();
+                    }
+                    return Ok(JsonView(true, "上传成功!", projectFileName));
+                }
+                else
+                {
+                    return Ok(JsonView(false, "上传失败!"));
+                }
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+
+        }
+        /// <summary>
+        /// 删除指定文件
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> DelFileHotel(DelFileDto dto)
+        {
+            try
+            {
+                string filePath = "";
+                var fileDir = AppSettingsHelper.Get("GrpFileBasePath");
+                // 返回与指定虚拟路径相对应的物理路径即绝对路径
+                //int id = 0;
+                filePath = fileDir + "/酒店费用录入相关文件/" + dto.fileName;
+                // 删除该文件
+                System.IO.File.Delete(filePath);
+                var result = await _sqlSugar.Updateable<Grp_HotelReservations>().Where(a => a.Id == dto.Id && a.IsDel==0).SetColumns(a => new Grp_HotelReservations()
+                {
+                    Attachment = "",
+                }).ExecuteCommandAsync();
+                if (result != 0)
+                {
+                    return Ok(JsonView(true, "成功!"));
+                }
+                else
+                {
+                    return Ok(JsonView(false, "失败!"));
+                }
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+
+        }
+        /// <summary>
+        /// 生成VOUCHER
+        /// </summary>
+        /// <param name=""></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> HotelGenerate(HotelReservationsByIdDto dto)
+        {
+
+            Grp_HotelReservations h = _sqlSugar.Queryable<Grp_HotelReservations>().First(a => a.Id == dto.Id && a.IsDel == 0);
+
+            //判断数据是否完整
+            if (h != null)
+            {
+                if (!string.IsNullOrEmpty(h.DetermineNo))
+                {
+                    string strFileName = "HotelStatement/";
+                    Grp_DelegationInfo dele= _sqlSugar.Queryable<Grp_DelegationInfo>().First(a => a.Id == h.DiId && a.IsDel == 0);
+                    if (dele != null)
+                        strFileName += dele.TourCode;
+
+                    
+                     //载入模板
+                    string sss = AppSettingsHelper.Get("WordBasePath") + "Template/酒店预订模板.doc";
+
+                    Document doc = new Document(sss);
+                    DocumentBuilder builder = new DocumentBuilder(doc);
+                    try
+                    {
+                        #region 替换Word模板书签内容
+
+                        //这里可以创建个DataTable循环添加书签的值,这里提示一下就不多做修改了
+                        //入住卷预定号码
+                       
+                        if (doc.Range.Bookmarks["VNO"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["VNO"];
+                            mark.Text = h.CheckNumber;
+                        }
+                        //酒店时间
+                        if (doc.Range.Bookmarks["Date"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["Date"];
+                            mark.Text = Convert.ToDateTime(h.CreateTime).ToString("yyyy-MM-dd");
+                        }
+                        //团号
+                        if (doc.Range.Bookmarks["TNo"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["TNo"];
+                            mark.Text = dele.TourCode;
+                        }
+                        //预定号码
+                        if (doc.Range.Bookmarks["BookingId"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["BookingId"];
+                            mark.Text = h.ReservationsNo;
+                        }
+
+                        if (doc.Range.Bookmarks["HotelConfirmNo"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["HotelConfirmNo"];
+                            mark.Text = h.DetermineNo;
+                        }
+
+                        //酒店城市
+                        if (doc.Range.Bookmarks["City"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["City"];
+                            mark.Text = h.City;
+                        }
+                        //酒店名称
+                        if (doc.Range.Bookmarks["HName"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["HName"];
+                            mark.Text = h.HotelName;
+                        }
+                        //酒店地址
+                        if (doc.Range.Bookmarks["Address"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["Address"];
+                            mark.Text = h.HotelAddress;
+                        }
+                        //酒店电话
+                        if (doc.Range.Bookmarks["Tel"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["Tel"];
+                            mark.Text = h.HotelTel;
+                        }
+                        //酒店传真
+                        if (doc.Range.Bookmarks["Fax"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["Fax"];
+                            if (!string.IsNullOrWhiteSpace(h.HotelFax))
+                            {
+                                mark.Text = h.HotelFax;
+                            }
+                            
+                        }
+                        //入住时间
+                        if (doc.Range.Bookmarks["CIn"] != null)
+                        {
+                            DateTime dtCheckIn = Convert.ToDateTime(h.CheckInDate);
+                            Bookmark mark = doc.Range.Bookmarks["CIn"];
+                            mark.Text = dtCheckIn.Day + " " + dtCheckIn.ToString("MMMM", CultureInfo.GetCultureInfo("en-US")) + " " + dtCheckIn.Year;
+                        }
+                        //退房时间
+                        if (doc.Range.Bookmarks["COut"] != null)
+                        {
+                            DateTime dtCheckOut = Convert.ToDateTime(h.CheckOutDate);
+                            Bookmark mark = doc.Range.Bookmarks["COut"];
+                            mark.Text = dtCheckOut.Day + " " + dtCheckOut.ToString("MMMM", CultureInfo.GetCultureInfo("en-US")) + " " + dtCheckOut.Year;
+                        }
+                        //客户名称
+                        if (doc.Range.Bookmarks["GName"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["GName"];
+                            mark.Text = h.GuestName;
+                        }
+
+                        //房间介绍
+                        if (doc.Range.Bookmarks["ROOM"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["ROOM"];
+                            mark.Text = h.RoomExplanation;
+                        }
+
+                        //报价描述
+                        if (doc.Range.Bookmarks["NOTE"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["NOTE"];
+                            Sys_SetData ss = _sqlSugar.Queryable<Sys_SetData>().First(a=>a.Id==h.ReservationsWebsite);
+                            if (ss != null)
+                                mark.Text = ss.Name;
+                        }
+                        //入住时间
+                        if (doc.Range.Bookmarks["CheckIn"] != null)
+                        {
+                            DateTime dtCheckIn = Convert.ToDateTime(h.CheckInDate);
+                            Bookmark mark = doc.Range.Bookmarks["CheckIn"];
+                            mark.Text = dtCheckIn.Day + " " + dtCheckIn.ToString("MMMM", CultureInfo.GetCultureInfo("en-US")) + " " + dtCheckIn.Year + " ";
+                        }
+                        //退房时间
+                        if (doc.Range.Bookmarks["CheckOut"] != null)
+                        {
+                            DateTime dtCheckOut = Convert.ToDateTime(h.CheckOutDate);
+                            Bookmark mark = doc.Range.Bookmarks["CheckOut"];
+                            mark.Text = " " + dtCheckOut.Day + " " + dtCheckOut.ToString("MMMM", CultureInfo.GetCultureInfo("en-US")) + " " + dtCheckOut.Year;
+                        }
+                        //日期
+                        if (doc.Range.Bookmarks["DT"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["DT"];
+                            mark.Text = Convert.ToDateTime(h.CreateTime).ToString("yyyy-MM-dd");
+                        }
+                        //名称
+                        if (doc.Range.Bookmarks["VName"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["VName"];
+                            mark.Text = h.HotelName;
+                        }
+                        //号码
+                        if (doc.Range.Bookmarks["VOUCHERNO"] != null)
+                        {
+                            Bookmark mark = doc.Range.Bookmarks["VOUCHERNO"];
+                            mark.Text = h.CheckNumber;
+                        }
+
+                        #endregion
+                        //string fileName = "HotelStatement/" + diName + "机票费用报表" + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
+
+                        strFileName += "VOUCHER.doc";
+
+                        var fileDir = AppSettingsHelper.Get("WordBasePath")+ strFileName;
+                        doc.Save(fileDir);
+                        string Url = AppSettingsHelper.Get("WordBaseUrl") + "Office/Word/" + strFileName;
+                        return Ok(JsonView(true, "成功!", Url));
+
+                        //保存为doc,并打开 
+                        
+                    }
+                    catch (Exception ex)
+                    {
+
+                        throw;
+                    }
+                    
+                }
+                else
+                {
+                    return Ok(JsonView(false, "酒店确定号码未填写,无法生成Voucher!"));
+                }
+            }
+            else
+            {
+                return Ok(JsonView(false, "酒店确定号码未填写,无法生成Voucher!"));
+            }
+            
+        }
+
+
+        /// <summary>
+        /// 导出确认单
+        /// </summary>
+        /// <param name=""></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> ConfirmWord(HotelReservationsByIdDto dto)
+        {
+            //团组信息
+
+            Grp_DelegationInfo di = _sqlSugar.Queryable<Grp_DelegationInfo>().First(a => a.Id == dto.Id);
+
+            //酒店数据
+            List<Grp_HotelReservations> listhoteldata = _sqlSugar.Queryable<Grp_HotelReservations>().Where(a => a.DiId == dto.Id && a.IsDel == 0).ToList();
+
+            //利datatable存储
+            DataTable dt = new DataTable();
+            dt.Columns.Add("CheckInDate", typeof(string));
+            dt.Columns.Add("City", typeof(string));
+            dt.Columns.Add("Hotel", typeof(string));
+            dt.Columns.Add("Room", typeof(string));
+
+            for (int i = 0; i < listhoteldata.Count; i++)
+            {
+                DateTime dayStart = Convert.ToDateTime(listhoteldata[i].CheckInDate);
+                DateTime dayEnd = Convert.ToDateTime(listhoteldata[i].CheckOutDate);
+                while (dayStart < dayEnd)
+                {
+                    string temp = "";
+                    DataRow row = dt.NewRow();
+                    row["CheckInDate"] = dayStart.ToString("yyyy-MM-dd");
+                    row["City"] = listhoteldata[i].City;
+                    row["Hotel"] = listhoteldata[i].HotelName;
+                    if (listhoteldata[i].SingleRoomCount > 0)
+                    {
+                        temp = listhoteldata[i].SingleRoomCount + "个单间" + "\r\n";
+                    }
+                    if (listhoteldata[i].DoubleRoomCount > 0)
+                    {
+                        temp = temp + listhoteldata[i].DoubleRoomCount + "个表间" + "\r\n";
+                    }
+                    if (listhoteldata[i].SuiteRoomCount > 0)
+                    {
+                        temp = temp + listhoteldata[i].SuiteRoomCount + "个套房" + "\r\n";
+                    }
+                    if (listhoteldata[i].OtherRoomCount > 0)
+                    {
+                        temp = temp + listhoteldata[i].OtherRoomCount + "个其他房型" + "\r\n";
+                    }
+                    row["Room"] = temp;
+                    dt.Rows.Add(row);
+                    dayStart = dayStart.AddDays(1);
+                }
+            }
+
+
+            Dictionary<string, string> dic = new Dictionary<string, string>();
+            dic.Add("Dele", di.TeamName);
+            dic.Add("City", di.VisitCountry);
+
+
+            //模板路径
+            //string sss = AppSettingsHelper.Get("WordBasePath") + "Template/酒店预订模板.doc";
+            string tempPath = AppSettingsHelper.Get("WordBasePath") + "Template/酒店用房确认单-模板.doc";
+            //载入模板
+            Aspose.Words.Document doc = new Aspose.Words.Document(tempPath);
+            DocumentBuilder builder = new DocumentBuilder(doc);
+
+            foreach (var key in dic.Keys)
+            {
+                builder.MoveToBookmark(key);
+                builder.Write(dic[key]);
+            }
+
+            //获取word里所有表格
+            NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true);
+            //获取所填表格的序数
+            Aspose.Words.Tables.Table tableOne = allTables[0] as Aspose.Words.Tables.Table;
+            var rowStart = tableOne.Rows[0]; //获取第1行
+            try
+            {
+                //循环赋值
+                for (int i = 0; i < dt.Rows.Count; i++)
+                {
+                    builder.MoveToCell(0, i + 1, 0, 0);
+                    builder.Write(dt.Rows[i]["CheckInDate"].ToString());
+
+                    builder.MoveToCell(0, i + 1, 1, 0);
+                    builder.Write(dt.Rows[i]["City"].ToString());
+
+                    builder.MoveToCell(0, i + 1, 2, 0);
+                    builder.Write(dt.Rows[i]["Hotel"].ToString());
+
+                    builder.MoveToCell(0, i + 1, 3, 0);
+                    builder.Write(dt.Rows[i]["Room"].ToString());
+                }
+            }
+            catch
+            {
+            }
+            //删除多余行
+
+            while (tableOne.Rows.Count > dt.Rows.Count + 1)
+            {
+                tableOne.Rows.RemoveAt(dt.Rows.Count + 1);
+            }
+            string strFileName = di.TeamName + "酒店确认单.doc";
+            try
+            {
+                doc.Save(AppSettingsHelper.Get("WordBasePath") + "HotelStatement/" + strFileName);
+                string Url = AppSettingsHelper.Get("WordBaseUrl") + "Office/Word/HotelStatement/" + strFileName;
+                return Ok(JsonView(true, "成功", Url));
+            }
+            catch (Exception)
+            {
+                return Ok(JsonView(false, "当前文档已打开,请先关闭!"));
+                throw;
+            }
+
+            //doc.Save(HttpUtility.UrlEncode(strFileName, Encoding.UTF8), Aspose.Words.SaveFormat.Doc, Aspose.Words.SaveType.OpenInWord, Response);
+
+        }
+
+        /// <summary>
+        /// 酒店费用删除
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> DelHotelPrice(DelBaseDto dto)
+        {
+            try
+            {
+                var res = await _hotelPriceRep.SoftDeleteByIdAsync<Grp_HotelReservations>(dto.Id.ToString(), dto.DeleteUserId);
+                if (!res)
+                {
+                    return Ok(JsonView(false, "删除失败"));
+                }
+                var resultC = await _sqlSugar.Updateable<Grp_CreditCardPayment>().Where(a => a.CId == dto.Id && a.IsDel == 0 && a.CTable == 76).SetColumns(a => new Grp_CreditCardPayment()
+                {
+                    IsDel = 1,
+                    DeleteUserId = dto.DeleteUserId,
+                    DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+                }).ExecuteCommandAsync();
+                return Ok(JsonView(true, "删除成功!"));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
+        #endregion
+
+        #region 团组状态
 
+        /// <summary>
+        ///  团组状态列表 Page
+        /// </summary>
+        /// <param name="dto">团组列表请求dto</param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostGroupStatusPageList(GroupStatusListDto dto)
+        {
+            if (dto == null) return Ok(JsonView(false, "请输入搜索条件!"));
 
+            if (dto.PortType == 1 || dto.PortType == 2) // web/Android
+            {
+                string sqlWhere = string.Empty;
+                if (dto.IsSure == 0) //未完成
+                {
+                    sqlWhere += string.Format(@" And IsSure = 0");
+                }
+                else if (dto.IsSure == 1) //已完成
+                {
+                    sqlWhere += string.Format(@" And IsSure = 1");
+                }
+
+                if (!string.IsNullOrEmpty(dto.SearchCriteria))
+                {
+                    string tj = dto.SearchCriteria;
+                    sqlWhere += string.Format(@"And (ssd.Name Like '%{0}%' Or TeamName Like '%{1}%' Or ClientName Like '%{2}%' Or  ClientName Like '%{3}%' Or su.CnName  Like '%{4}%')",
+                       tj, tj, tj, tj, tj);
+                }
+
+                string sql = string.Format(@"Select Row_Number,Id,SalesQuoteNo,TourCode,TeamTypeId, TeamType,
+					                              TeamLevId,TeamLev,TeamName,ClientName,ClientUnit,
+					                              VisitDate,VisitDays,VisitPNumber,JietuanOperator,IsSure,CreateTime
+					                              From (
+					                              Select row_number() over(order by gdi.CreateTime Desc) as Row_Number,
+					                              gdi.Id,SalesQuoteNo,TourCode,ssd.Id TeamTypeId, ssd.Name TeamType,
+					                              ssd1.Id TeamLevId,ssd1.Name TeamLev,TeamName,ClientName,ClientUnit,
+					                              VisitDate,VisitDays,VisitPNumber,su.CnName JietuanOperator,IsSure,gdi.CreateTime
+					                              From  Grp_DelegationInfo gdi
+					                              Inner Join Sys_SetData ssd On gdi.TeamDid = ssd.Id 
+					                              Inner Join Sys_SetData ssd1 On gdi.TeamLevSId = ssd1.Id
+					                              Left Join Sys_Users su On gdi.JietuanOperator = su.Id
+					                              Where gdi.IsDel = 0  {0}
+				                              ) temp  ", sqlWhere);
+
+                RefAsync<int> total = 0;//REF和OUT不支持异步,想要真的异步这是最优解
+                var _DelegationList = await _sqlSugar.SqlQueryable<GroupStatusView>(sql).ToPageListAsync(dto.PageIndex, dto.PageSize, total);//ToPageAsync
 
+                return Ok(JsonView(true, "查询成功!", _DelegationList, total));
+
+            }
+            else
+            {
+                return Ok(JsonView(false, "查询失败"));
+            }
+        }
+
+        /// <summary>
+        ///  团组状态
+        ///  设置操作完成
+        /// </summary>
+        /// <param name="dto">团组列表请求dto</param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostGroupStatusSetOperationComplete(GroupStatusSetOperationCompleteDto dto)
+        {
+            if (dto == null) return Ok(JsonView(false, "请输入搜索条件!"));
+
+
+            Grp_DelegationInfo _DelegationInfo = new Grp_DelegationInfo()
+            {
+                Id = dto.Id,
+                IsSure = 1
+            };
+
+
+            var result = await _sqlSugar.Updateable(_DelegationInfo)
+                .UpdateColumns(it => new { it.IsSure })
+                .WhereColumns(it => new { it.Id })
+                .ExecuteCommandAsync();
+
+            if (result > 0)
+            {
+                return Ok(JsonView(true, "操作完成!"));
+            }
+
+            return Ok(JsonView(false, "操作失败!"));
+
+
+        }
+
+        
+        #endregion
     }
 }

+ 79 - 4
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -27,6 +27,8 @@ namespace OASystem.API.Controllers
         private readonly WageSheetRepository _wageSheetRep;
         private readonly UsersRepository _usersRep;
 
+        private string url;
+        private string path;
 
         /// <summary>
         /// 初始化
@@ -42,6 +44,14 @@ namespace OASystem.API.Controllers
             _qiYeWeChatApiService = qiYeWeChatApiService;
             _wageSheetRep = wageSheetRep;
             _result = new Result();
+
+
+            url = AppSettingsHelper.Get("ExcelBaseUrl");
+            path = AppSettingsHelper.Get("ExcelBasePath");
+            if (!System.IO.Directory.Exists(path))
+            {
+                System.IO.Directory.CreateDirectory(path);//不存在就创建文件夹
+            }
         }
 
         #region 工资表单
@@ -360,7 +370,7 @@ namespace OASystem.API.Controllers
                 #region 计算工资
 
                 //月工资
-                decimal salary = pm_WageSheet.Basic + pm_WageSheet.Floats + pm_WageSheet.PostAllowance + pm_WageSheet.InformationSecurityFee + pm_WageSheet.OtherSubsidies;
+                decimal salary = pm_WageSheet.Basic + pm_WageSheet.Floats + pm_WageSheet.PostAllowance + pm_WageSheet.InformationSecurityFee + pm_WageSheet.OtherSubsidies + pm_WageSheet.OtherHandle;
                 //扣款合计
                 decimal totalDeduction = pm_WageSheet.SickLeave + pm_WageSheet.SomethingFalse + pm_WageSheet.LateTo + pm_WageSheet.LeaveEarly + pm_WageSheet.Absenteeism + pm_WageSheet.NotPunch +
                                          pm_WageSheet.ReservedFunds + pm_WageSheet.WithholdingInsurance + pm_WageSheet.OtherDeductions + pm_WageSheet.OtherDeductions;
@@ -397,7 +407,6 @@ namespace OASystem.API.Controllers
                 if (_result.Code != 0)
                 {
                     return Ok(JsonView(false, _result.Msg));
-
                 }
             }
             catch (Exception ex)
@@ -653,7 +662,59 @@ namespace OASystem.API.Controllers
         public async Task<IActionResult> WageSheetTaxTemplate()
         {
             string serverUrl = AppSettingsHelper.Get("WageSheetExcelBaseUrl");
-            return Ok(JsonView(true, "操作成功!",new { FileUrl = serverUrl + "Office/WageSheetFile/个税导入模板.xlsx" }));
+            var userData = await _usersRep.GetUserNameList(1);
+
+            if (userData.Code == 0)
+            {
+                var userNames = userData.Data;
+
+                List<string> names = new List<string>();
+
+                List<UserNameView> users = new List<UserNameView>();
+                names.Add("管理员");
+                names.Add("国交共享号");
+                names.Add("人事审核号");
+                names.Add("国交主管号");
+
+                List<TaxTemlateViuw> taxs = new List<TaxTemlateViuw>();
+                users = JsonConvert.DeserializeObject<List<UserNameView>>(JsonConvert.SerializeObject(userNames));
+
+                foreach (UserNameView item in users)
+                {
+                    string uName = item.CnName;
+                    if (!names.Contains(uName))
+                    {
+                        taxs.Add(new TaxTemlateViuw { UserName = item.CnName });
+                    }
+                }
+
+                if (taxs.Count > 0)
+                {
+                    WorkbookDesigner designer = new WorkbookDesigner();
+                    designer.Workbook = new Workbook(AppSettingsHelper.Get("ExcelBasePath") + "Template/个税导入模板.xlsx");
+                    designer.Workbook.Worksheets[0].Name = "个税模板";
+                    designer.SetDataSource("TaxTemp", taxs);
+                    designer.Process();
+
+                    string fileName = "WageSheetTaxFile/个税模板" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
+                    string path = AppSettingsHelper.Get("ExcelBasePath");
+                    designer.Workbook.Save(path + fileName);
+                    designer = null;
+
+                    string excelPath = AppSettingsHelper.Get("ExcelFtpPath") + fileName;
+                    string url = AppSettingsHelper.Get("ExcelBaseUrl");
+                    string fileUrl = url + excelPath;
+
+
+
+
+                    return Ok(JsonView(true, "操作成功!", new { FileUrl = fileUrl }));
+                }
+
+            }
+
+
+            return Ok(JsonView(false, "操作失败!"));
         }
 
         /// <summary>
@@ -832,7 +893,21 @@ namespace OASystem.API.Controllers
             return Ok(JsonView(true, "操作成功!", data.checkindata));
         }
 
-
+        /// <summary>
+        /// 审批详情
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostApprovalDetailAsync(string spNo)
+        {
+            if (string.IsNullOrEmpty(spNo))
+            {
+                return Ok(JsonView(false, "审批单号不能为空!!"));
+            }
+            var data = await _qiYeWeChatApiService.GetApprovalDetailAsync(spNo);
+            return Ok(JsonView(true, "操作成功!", data));
+        }
         #endregion
 
     }

+ 4 - 3
OASystem/OASystem.Api/OAMethodLib/PayrollComputation.cs

@@ -141,7 +141,8 @@ namespace OASystem.API.OAMethodLib
                     #region 计算日工资 正常日薪 事假日薪 病假日薪
 
                     //月 - 应发工资
-                    decimal amountPayable = pm_wsInfo.Basic + pm_wsInfo.Floats + pm_wsInfo.PostAllowance + pm_wsInfo.InformationSecurityFee + pm_wsInfo.OtherSubsidies;
+                    decimal amountPayable = pm_wsInfo.Basic + pm_wsInfo.Floats + pm_wsInfo.PostAllowance + pm_wsInfo.InformationSecurityFee + 
+                                            pm_wsInfo.OtherSubsidies + pm_wsInfo.OtherHandle;
 
                     // 日薪 = *计算方式:日平均工资 = 月工资/当月应出勤天数。
                     decimal dailyWage = amountPayable / work_days;
@@ -686,7 +687,7 @@ namespace OASystem.API.OAMethodLib
                                         DateTime bukaDt = punch_correction.time_dt;
                                         DateTime bukaDtJudge = Convert.ToDateTime(bukaDt.ToString("yyyy-MM-dd"));
                                         //筛选 不在工作日内的假勤申请
-                                        if (startDt >= bukaDtJudge || bukaDtJudge > endDt)
+                                        if (startDt > bukaDtJudge || bukaDtJudge > endDt)
                                         {
                                             continue;
                                         }
@@ -812,7 +813,7 @@ namespace OASystem.API.OAMethodLib
                         if (ex_reissuecard_Items.Count > 0)
                         {
                             ex_Items_dk.Ex_ItemInfo = ex_reissuecard_Items;
-                            //ex_Items_dk.Ex_ItemInfo = ex_reissuecard_Items.OrderBy(it => it.SubTypeId).ThenBy(it => it.StartTimeDt).ToList();
+                            ex_Items_dk.Ex_ItemInfo = ex_reissuecard_Items.OrderBy(it => it.SubTypeId).ThenBy(it => it.StartTimeDt).ToList();
                             ex_Items.Add(ex_Items_dk);
                         }
 

+ 7 - 0
OASystem/OASystem.Api/OAMethodLib/QiYeWeChatAPI/IQiYeWeChatApiService.cs

@@ -125,5 +125,12 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
         /// <param name="template_id">模板Id</param>
         /// <returns></returns>
         Task<TemplateDetailView> GetTemplateDetailAsync(string template_id);
+
+        /// <summary>
+        /// 获取审批详情
+        /// </summary>
+        /// <param name="spNo">审批No</param>
+        /// <returns></returns>
+        Task<ApprovalDetailView> GetApprovalDetailAsync(string spNo);
     }
 }

+ 6 - 16
OASystem/OASystem.Api/OAMethodLib/QiYeWeChatAPI/QiYeWeChatApiService.cs

@@ -1009,21 +1009,11 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
 
             ApprovalInfoView approvalInfoView = new ApprovalInfoView();
 
-            //获取所有打卡补卡,审批 数据 前后范围增加10天
-            DateTime sp_startDt = startDt.AddDays(-10);
-            DateTime sp_centerDt = sp_startDt.AddDays(31);
-            DateTime sp_endDt = endDt.AddDays(10);
-            DateTime thisDt = Convert.ToDateTime( DateTime.Now.ToString("yyyy-MM-dd"));
-            if (sp_endDt > thisDt)
-            {
-                sp_endDt = thisDt;
-            }
-            int days = (int)(sp_endDt - sp_startDt).TotalDays;
-            if (days > 31)
-            {
-                sp_centerDt = sp_startDt.AddDays(31);
-            }
-
+            //获取所有打卡补卡,审批 数据 后范围增加15天
+            DateTime sp_startDt = startDt;
+            DateTime sp_centerDt = endDt;
+            DateTime sp_endDt = endDt.AddDays(15);
+            
             //获取审批数据 token
             Access_TokenView access_Token = await GetTokenAsync(5);
             if (access_Token.errcode != 0)
@@ -1121,7 +1111,7 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
         /// </summary>
         /// <param name="sp_no"></param>
         /// <returns></returns>
-        private async Task<ApprovalDetailView> GetApprovalDetailAsync(string sp_no)
+        public async Task<ApprovalDetailView> GetApprovalDetailAsync(string sp_no)
         {
             ApprovalDetailView ApprovalDetailView = new ApprovalDetailView();
 

+ 3 - 1
OASystem/OASystem.Api/appsettings.json

@@ -126,6 +126,8 @@
   "VisaProgressImageFtpPath": "Image/Visa/",
 
   "WageSheetExcelBaseUrl": "http://132.232.92.186:24/",
-  "WageSheetExcelFptPath": "C:/Server/File/OA2023/Office/WageSheetFile/"
+  "WageSheetExcelFptPath": "C:/Server/File/OA2023/Office/WageSheetFile/",
 
+  "WageSheetTaxExcelBaseUrl": "http://132.232.92.186:24/",
+  "WageSheetTaxExcelFptPath": "C:/Server/File/OA2023/Office/Excel/WageSheetTaxFile/"
 }

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

@@ -84,6 +84,8 @@ namespace OASystem.Domain.AutoMappers
             CreateMap<Grp_ScheduleDetailInsertDto, Grp_ScheduleDetailInfo>();
             CreateMap<TaskAssignmenDto, Grp_GroupsTaskAssignment>();
 
+            CreateMap<Grp_DelegationInfo, ShareGroupInfoIIView>();
+
             #region 机票费用录入
             CreateMap<AirTicketResOp, Grp_AirTicketReservations>();
             CreateMap<CardPayment, Grp_CreditCardPayment>();
@@ -126,6 +128,8 @@ namespace OASystem.Domain.AutoMappers
 
             #region op费用
             CreateMap<OpCarTouristGuideGroundDto, Grp_CarTouristGuideGroundReservations>();
+            CreateMap<Grp_CreditCardPayment, CarTouristCreditCardPaymentView>();
+            CreateMap<Grp_CarTouristGuideGroundReservationsContent, CarTouristGuideGroundReservationsContentView>();
             #endregion
             #region 成本
             CreateMap<Grp_GroupCostDto, Grp_GroupCost>();
@@ -136,6 +140,13 @@ namespace OASystem.Domain.AutoMappers
             CreateMap<Grp_GroupCostParameter, Grp_GroupCostParameterDto>();
             #endregion
 
+            #region 酒店预订
+            CreateMap<Grp_HotelReservations, HotelReservationsByIdView>();
+            CreateMap<Grp_CreditCardPayment, Grp_CreditCardView>();
+            CreateMap<OpHotelReservationsData, Grp_HotelReservations>();
+            CreateMap<OpHotelReservationsData, Grp_CreditCardPayment>();
+            #endregion
+
             #endregion
             #region Resource
 

+ 134 - 0
OASystem/OASystem.Domain/Dtos/Financial/PaymentRefundAndOtherMoneyDto.cs

@@ -0,0 +1,134 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Financial
+{
+    /// <summary>
+    /// 收款退还与其他款项
+    /// Item Dto
+    /// </summary>
+    public class PaymentRefundAndOtherMoneyItemByDiIdDto : PortDtoBase
+    {
+        /// <summary>
+        /// 团组Id 
+        /// </summary>
+        public int DiId { get; set; }
+    }
+
+    /// <summary>
+    /// 收款退还与其他款项
+    /// Del Dto
+    /// </summary>
+    public class PaymentRefundAndOtherMoneyDelDto
+    {
+        /// <summary>
+        /// Id 
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 用户Id
+        /// </summary>
+        public int UserId { get; set; }
+    }
+
+    /// <summary>
+    /// 收款退还与其他款项
+    /// 详情 Dto
+    /// </summary>
+    public class PaymentRefundAndOtherMoneyInfoDto : PortDtoBase
+    {
+        /// <summary>
+        /// Id 
+        /// </summary>
+        public int Id { get; set; }
+    }
+
+    /// <summary>
+    /// 收款退还与其他款项
+    /// 操作(Add Or Update) Dto
+    /// </summary>
+    public class PaymentRefundAndOtherMoneyAddOrEditDto : PortDtoBase
+    {
+        /// <summary>
+        /// 操作状态
+        /// 1 添加 
+        /// 2 修改 
+        /// </summary>
+        public int Status { get; set; }
+
+        /// <summary>
+        /// 用户Id
+        /// </summary>
+        public int UserId { get; set; }
+
+        /// <summary>
+        /// Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// C表Id
+        /// </summary>
+        public int CcpId { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 费用名称
+        /// </summary>
+        public string? PriceName { get; set; }
+
+        /// <summary>
+        /// 费用
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 币种Id
+        /// </summary>
+        public int CurrencyId { get; set; }
+
+        /// <summary>
+        /// 币种Code
+        /// </summary>
+        public string? CurrencyCode { get; set; }
+
+        /// <summary>
+        /// 收款方
+        /// </summary>
+        public string? Payee { get; set; }
+
+        /// <summary>
+        /// 支付方式Id
+        /// </summary>
+        public int PayDId { get; set; }
+
+        /// <summary>
+        /// 费用标识
+        /// </summary>
+        public int OrbitalPrivateTransfer { get; set; }
+
+        /// <summary>
+        /// 消费方式
+        /// </summary>
+        public string? ConsumptionPatterns { get; set; }
+
+        /// <summary>
+        /// 费用类型
+        /// 0 其他 1 退多付款
+        /// </summary>
+        public int PayType { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string? Remark { get; set; }
+    }
+}

+ 108 - 0
OASystem/OASystem.Domain/Dtos/Financial/ProceedsReceivedDto.cs

@@ -7,6 +7,10 @@ using System.Threading.Tasks;
 namespace OASystem.Domain.Dtos.Financial
 {
 
+
+
+
+
     /// <summary>
     /// 已收款项 del Dto
     /// </summary>
@@ -124,6 +128,7 @@ namespace OASystem.Domain.Dtos.Financial
         /// </summary>
         public List<int>? SubIds { get; set; }
     }
+  
     #region word Download
 
     /// <summary>
@@ -145,4 +150,107 @@ namespace OASystem.Domain.Dtos.Financial
 
     #endregion
 
+    #region 已收款项
+    /// <summary>
+    /// 已收款项 Dto
+    /// </summary>
+    public class AmountReceivedDto:PortDtoBase
+    {
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+    }
+
+
+    /// <summary>
+    /// 已收款项 Dto
+    /// </summary>
+    public class AmountReceivedAddOrEditDto : PortDtoBase
+    {
+        /// <summary>
+        /// 用户Id
+        /// </summary>
+        public int UserId { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 已收款项infos
+        /// </summary>
+        public List<ProceedsReceived1Info>? _ProceedsReceivedInfos { get; set; }
+
+    }
+
+    /// <summary>
+    /// 已收款项info
+    /// </summary>
+    public class ProceedsReceived1Info
+    {
+        /// <summary>
+        /// 主键
+        /// id == 0 Add
+        /// 其他值时 Updata
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 到款时间
+        /// </summary>
+        public string? SectionTime { get; set; }
+
+        /// <summary>
+        /// 费用
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 币种
+        /// </summary>
+        public int Currency { get; set; }
+
+        /// <summary>
+        /// 收款类型
+        /// </summary>
+        public int ReceivablesType { get; set; }
+
+        /// <summary>
+        /// 收款单位
+        /// </summary>
+        public string? Client { get; set; }
+
+        /// <summary>
+        /// 收款单位 负责人 姓名
+        /// </summary>
+        public string? CustomerName { get; set; }
+
+        /// <summary>
+        /// 收款单位 负责人 姓名
+        /// </summary>
+        public string? CustomerTel { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string? Remark { get; set; }
+
+    }
+
+    /// <summary>
+    /// 已收款项 
+    /// 删除
+    /// </summary>
+    public class AmountReceivedDelDto
+    {
+        /// <summary>
+        /// 当前用户操作Id
+        /// </summary>
+        public int UserId { get; set; }
+
+        public int Id { get; set; }
+    }
+    #endregion
 }

+ 9 - 9
OASystem/OASystem.Domain/Dtos/Groups/CarTouristGuideGroundDto.cs

@@ -98,12 +98,12 @@ namespace OASystem.Domain.Dtos.Groups
         public string Remark { get; set; }
     }
 
-    public class CarTouristGuideGroundContenDto
+    public class CarTouristGuideGroundContentDto
     {
         public int UserId { get; set; }
     }
 
-    public class OpCarTouristGuideGroundContenDto
+    public class OpCarTouristGuideGroundContentDto
     {
         /// <summary>
         /// 团组Id
@@ -114,7 +114,7 @@ namespace OASystem.Domain.Dtos.Groups
         /// </summary>
         public int CTGGRId { get; set; }
         /// <summary>
-        /// 费用表示
+        /// 费用标识
         /// </summary>
         public int OrbitalPrivateTransfer { get; set; }
         /// <summary>
@@ -136,13 +136,13 @@ namespace OASystem.Domain.Dtos.Groups
         /// <summary>
         /// 详情数据
         /// </summary>
-        public List<OPContenList> OPContenList { get; set; }
+        public List<OPContentList> OPContentList { get; set; }
         /// <summary>
         /// 创建人Id
         /// </summary>
         public int CreateUserId { get; set; }
     }
-    public class OPContenList
+    public class OPContentList
     {
         
         /// <summary>
@@ -161,9 +161,9 @@ namespace OASystem.Domain.Dtos.Groups
         /// 费用描述
         /// </summary>
         public string priceContent { get; set; }
-        /// <summary>
-        /// 备注
-        /// </summary>
-        public string Remark { get; set; }
+        ///// <summary>
+        ///// 备注
+        ///// </summary>
+        //public string Remark { get; set; }
     }
 }

+ 6 - 0
OASystem/OASystem.Domain/Dtos/Groups/GroupListDto.cs

@@ -20,6 +20,12 @@ namespace OASystem.Domain.Dtos.Groups
     /// </summary>
     public class GroupPageListDto : DtoBase
     {
+        /// <summary>
+        /// 是否操作完成 
+        /// -1 全部 0否 1是
+        /// </summary>
+        public int IsSure { get; set; }
+
         /// <summary>
         /// 搜索条件
         /// 团组类型/团队名称/客户名称/客户单位/接团操作人

+ 33 - 0
OASystem/OASystem.Domain/Dtos/Groups/GroupStatusDto.cs

@@ -0,0 +1,33 @@
+    using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Groups
+{
+    /// <summary>
+    /// 团组状态
+    /// 查询Page List
+    /// Dto
+    /// </summary>
+    public class GroupStatusListDto : DtoBase
+    {
+        /// <summary>
+        /// 是否操作完成 
+        /// -1 全部 0否 1是
+        /// </summary>
+        public int IsSure { get; set; }
+
+        /// <summary>
+        /// 搜索条件
+        /// 团组类型/团队名称/客户名称/客户单位/接团操作人
+        /// </summary>
+        public string? SearchCriteria { get; set; }
+    }
+
+    public class GroupStatusSetOperationCompleteDto
+    {
+        public int Id { get; set; }
+    }
+}

+ 292 - 0
OASystem/OASystem.Domain/Dtos/Groups/HotelReservationsDto.cs

@@ -0,0 +1,292 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Groups
+{
+    public class HotelReservationsDto
+    {
+        /// <summary>
+        /// 请求端口分类
+        /// 1 Web 2 Android 3 IOS
+        /// </summary>
+        public int PortType { get; set; } = 1;
+        public int UserId { get; set; }
+    }
+    /// <summary>
+    /// 根据团组查询酒店预订列表数据
+    /// </summary>
+    public class HotelReservationsByDiIdDto: DtoBase
+    {
+        public int DiId { get; set; }
+    }
+    public class HotelReservationsByIdDto
+    {
+        public int Id { get; set; }
+    }
+
+    /// <summary>
+    /// 编辑,新增参数
+    /// </summary>
+    public class OpHotelReservationsData
+    {
+        /// <summary>
+        /// 操作状态
+        /// 1 添加 
+        /// 2 修改 
+        /// </summary>
+        public int Status { get; set; }
+        public int Id { get; set; }
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+        /// <summary>
+        /// 客人类型(设置数据外键编号)
+        /// </summary>
+        public int GTId { get; set; }
+        /// <summary>
+        /// 入住卷号码
+        /// </summary>
+        public string CheckNumber { get; set; }
+        /// <summary>
+        /// 预订网站(设置数据外键编号)
+        /// </summary>
+        public int ReservationsWebsite { get; set; }
+        /// <summary>
+        /// 预订号码
+        /// </summary>
+        public string ReservationsNo { get; set; }
+        /// <summary>
+        /// 酒店确定编号
+        /// </summary>
+        public string DetermineNo { get; set; }
+        /// <summary>
+        /// 所在城市
+        /// </summary>
+        public string City { get; set; }
+        /// <summary>
+        /// 酒店名称
+        /// </summary>
+        public string HotelName { get; set; }
+        /// <summary>
+        /// 酒店地址
+        /// </summary>
+        public string HotelAddress { get; set; }
+        /// <summary>
+        /// 酒店电话
+        /// </summary>
+        public string HotelTel { get; set; }
+        /// <summary>
+        /// 客人姓名
+        /// </summary>
+        public string GuestName { get; set; }
+        /// <summary>
+        /// 入住日期
+        /// </summary>
+        public string CheckInDate { get; set; }
+        /// <summary>
+        /// 退房日期
+        /// </summary>
+        public string CheckOutDate { get; set; }
+        /// <summary>
+        /// 预算币种(设置数据外键编号)
+        /// </summary>
+        public int BudgetCurrency { get; set; }
+        /// <summary>
+        /// 单间数量
+        /// </summary>
+        public int SingleRoomCount { get; set; }
+        /// <summary>
+        /// 单间单价
+        /// </summary>
+        public decimal SingleRoomPrice { get; set; }
+        /// <summary>
+        /// 双间数量
+        /// </summary>
+        public int DoubleRoomCount { get; set; }
+        /// <summary>
+        /// 双间单价
+        /// </summary>
+        public decimal DoubleRoomPrice { get; set; }
+        /// <summary>
+        /// 套房数量
+        /// </summary>
+        public int SuiteRoomCount { get; set; }
+        /// <summary>
+        /// 套房单价
+        /// </summary>
+        public decimal SuiteRoomPrice { get; set; }
+        /// <summary>
+        /// 其他房型数量
+        /// </summary>
+        public int OtherRoomCount { get; set; }
+        /// <summary>
+        /// 其他房型单价
+        /// </summary>
+        public decimal OtherRoomPrice { get; set; }
+        /// <summary>
+        /// 房间说明
+        /// </summary>
+        public string RoomExplanation { get; set; }
+        /// <summary>
+        /// 附件地址
+        /// </summary>
+        public string Attachment { get; set; }
+        /// <summary>
+        /// 信用卡金额
+        /// </summary>
+        public decimal CardPrice { get; set; }
+        /// <summary>
+        /// 确认标识   信用卡金额
+        /// 0:未刷(红色)  1:已刷(绿色)
+        /// </summary>
+        public int IsCardPrice { get; set; }
+        /// <summary>
+        /// 预计单间数量
+        /// </summary>
+        public int PredictSingleRoom { get; set; }
+        /// <summary>
+        /// 预计双人间数量
+        /// </summary>
+        public int PredictDoubleRoom { get; set; }
+        /// <summary>
+        /// 预计套房数量
+        /// </summary>
+        public int PredictSuiteRoom { get; set; }
+        /// <summary>
+        /// 预计其他间数量
+        /// </summary>
+        public int PredictOtherRoom { get; set; }
+        /// <summary>
+        /// 地税
+        /// </summary>
+        public decimal GovernmentRent { get; set; }
+        /// <summary>
+        /// 地税币种
+        /// </summary>
+        public int GovernmentRentCurrency { get; set; }
+        /// <summary>
+        /// 城市税
+        /// </summary>
+        public decimal CityTax { get; set; }
+        /// <summary>
+        /// 城市税币种
+        /// </summary>
+        public int CityTaxCurrency { get; set; }
+        /// <summary>
+        /// 房间入住人类型
+        /// </summary>
+        public string CheckType { get; set; }
+        /// <summary>
+        /// 创建者Id
+        /// </summary>
+        public int CreateUserId { get; set; }
+        /// <summary>
+        /// 表备注
+        /// </summary>
+        public string Remark { get; set; }
+        //C表参数
+        /// <summary>
+        /// 付款金额
+        /// </summary>
+        public decimal PayMoney { get; set; }
+        /// <summary>
+        /// 付款币种 数据类型Id
+        /// </summary>
+        public int PaymentCurrency { get; set; }
+        /// <summary>
+        /// 支付方式
+        /// </summary>
+        public int PayDId { get; set; }
+        /// <summary>
+        /// 消费方式
+        /// </summary>
+        public string ConsumptionPatterns { get; set; }
+        /// <summary>
+        /// 消费日期
+        /// </summary>
+        public String ConsumptionDate { get; set; }
+        /// <summary>
+        /// 卡类型
+        /// </summary>
+        public int CTDId { get; set; }
+
+        /// <summary>
+        /// 公司银行卡号
+        /// </summary>
+        public string CompanyBankNo { get; set; }
+        /// <summary>
+        /// 对方开户行
+        /// </summary>
+        public string OtherBankName { get; set; }
+        /// <summary>
+        /// 对方银行账号
+        /// </summary>
+        public string OtherSideNo { get; set; }
+        /// <summary>
+        /// 对方姓名
+        /// </summary>
+        public string OtherSideName { get; set; }
+
+        /// <summary>
+        /// 银行卡号
+        /// </summary>
+        public string BankNo { get; set; }
+        /// <summary>
+        /// 持卡人姓名
+        /// </summary>
+        public string CardholderName { get; set; }
+        /// <summary>
+        /// 收款方
+        /// </summary>
+        public string Payee { get; set; }
+        /// <summary>
+        /// 费用标识
+        /// </summary>
+        public int OrbitalPrivateTransfer { get; set; }
+
+        /// <summary>
+        /// C表备注
+        /// </summary>
+        public string CRemark { get; set; }
+    }
+
+    public class HotelReservationsCNYDto 
+    {
+        /// <summary>
+        /// 类型ID
+        /// </summary>
+        public int CTable { get; set; }
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+        /// <summary>
+        /// 信用卡金额
+        /// </summary>
+        public decimal CardPrice { get; set; }
+        /// <summary>
+        /// 信用卡金额币种
+        /// </summary>
+        public int CardPriceCurrency { get; set; }
+        /// <summary>
+        /// 地税
+        /// </summary>
+        public decimal GovernmentRent { get; set; }
+        /// <summary>
+        /// 地税币种
+        /// </summary>
+        public int GovernmentRentCurrency { get; set; }
+        /// <summary>
+        /// 城市税
+        /// </summary>
+        public decimal CityTax { get; set; }
+        /// <summary>
+        /// 城市税币种
+        /// </summary>
+        public int CityTaxCurrency { get; set; }
+    }
+}

+ 11 - 2
OASystem/OASystem.Domain/Dtos/PersonnelModule/WageSheetDto.cs

@@ -111,6 +111,11 @@ namespace OASystem.Domain.Dtos.PersonnelModule
         /// </summary>
         public decimal InformationSecurityFee { get; set; }
 
+        /// <summary>
+        /// 其他应发
+        /// </summary>
+        public decimal OtherHandle { get; set; }
+
         /// <summary>
         /// 月度补贴/其他补贴
         /// </summary>
@@ -268,6 +273,12 @@ namespace OASystem.Domain.Dtos.PersonnelModule
         /// </summary>
         public decimal InformationSecurityFee { get; set; }
 
+        /// <summary>
+        /// 其他应付
+        /// 主要用来填比如补发工资之类
+        /// </summary>
+        public decimal otherHandle { get; set; }
+
         /// <summary>
         /// 月度补贴/其他补贴
         /// </summary>
@@ -290,6 +301,4 @@ namespace OASystem.Domain.Dtos.PersonnelModule
         /// <summary>
        /// 其他扣款
        /// </summary>                                 
        public decimal OtherDeductions { get; set; }
 
     }
-
-   
 }

+ 54 - 0
OASystem/OASystem.Domain/Entities/Financial/Fin_PaymentRefundAndOtherMoney.cs

@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.Financial
+{
+    /// <summary>
+    /// 收款退还与其他款项
+    /// </summary>
+    [SugarTable("Fin_PaymentRefundAndOtherMoney")]
+    public class Fin_PaymentRefundAndOtherMoney : EntityBase
+    {
+        /// <summary>
+        /// 团组id
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 费用名称
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string? PriceName { get; set; }
+
+        /// <summary>
+        /// 费用金额
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 费用币种
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int CurrencyId { get; set; }
+
+        /// <summary>
+        /// 付款类型??? 
+        /// 0 其他  1 退多付款
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int PayType { get; set; }
+
+        /// <summary>
+        /// 退款表识 
+        /// 0 未退 1 已退
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int PriceType { get; set; }
+
+    }
+}

+ 1 - 1
OASystem/OASystem.Domain/Entities/Financial/Fin_ProceedsReceived.cs

@@ -64,6 +64,6 @@ namespace OASystem.Domain.Entities.Financial
         /// 应付项id
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public int FID { get; set; }
+        public int FID { get; set; } = 0;
     }
 }

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

@@ -26,7 +26,7 @@ namespace OASystem.Domain.Entities.Groups
         /// 消费日期
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
-        public String ConsumptionDate { get; set; }
+        public string ConsumptionDate { get; set; }
         /// <summary>
         /// 卡类型
         /// </summary>
@@ -81,7 +81,7 @@ namespace OASystem.Domain.Entities.Groups
         /// 财务操作人 用户Id
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public string MFOperator { get; set; }
+        public int MFOperator { get; set; }
         /// <summary>
         /// 财务操作时间
         /// </summary>

+ 51 - 0
OASystem/OASystem.Domain/Entities/Groups/Grp_Customers.cs

@@ -0,0 +1,51 @@
+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_Customers")]
+    public class Grp_Customers:EntityBase
+    {
+        /// <summary>
+        /// 团组外键编号
+        /// </summary>
+        [SugarColumn(IsNullable =true, ColumnDataType="int")]
+        public int DiId{get; set;}
+
+        /// <summary>
+        /// 客户名称
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")]
+        public string ClientName { get; set; }
+
+        /// <summary>
+        /// 保险费用
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
+        public decimal InsuranceCosts { get; set; }
+
+        /// <summary>
+        /// 币种
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int Currency { get; set; }
+
+        /// <summary>
+        /// 保险附件
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")]
+        public string Attachment { get; set; }
+        /// <summary>
+        /// 保险名称
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int Iid { get; set; }
+
+    }
+}

+ 88 - 43
OASystem/OASystem.Domain/Entities/Groups/Grp_HotelReservations.cs

@@ -15,10 +15,10 @@ namespace OASystem.Domain.Entities.Groups
         /// <summary>
         /// 团组Id
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public int DIId { get; set; }
+        [SugarColumn(IsNullable =true,ColumnDataType ="int")]
+        public int DiId { get; set; }
         /// <summary>
-        /// 客人类型 数据类型字表Id
+        /// 客人类型(设置数据外键编号)
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int GTId { get; set; }
@@ -28,7 +28,7 @@ namespace OASystem.Domain.Entities.Groups
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string CheckNumber { get; set; }
         /// <summary>
-        /// 预订网站数据类型字表Id
+        /// 预订网站(设置数据外键编号)
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int ReservationsWebsite { get; set; }
@@ -50,7 +50,7 @@ namespace OASystem.Domain.Entities.Groups
         /// <summary>
         /// 酒店名称
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(100)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")]
         public string HotelName { get; set; }
         /// <summary>
         /// 酒店地址
@@ -60,91 +60,90 @@ namespace OASystem.Domain.Entities.Groups
         /// <summary>
         /// 酒店电话
         /// </summary>
-
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string HotelTel { get; set; }
         /// <summary>
         /// 酒店传真
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(100)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string HotelFax { get; set; }
         /// <summary>
         /// 客人姓名
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")]
         public string GuestName { get; set; }
         /// <summary>
         /// 入住日期
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
-        public DateTime CheckInDate { get; set; }
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(80)")]
+        public string CheckInDate { get; set; }
         /// <summary>
         /// 退房日期
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
-        public DateTime CheckOutDate { get; set; }
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(80)")]
+        public string CheckOutDate { get; set; }
         /// <summary>
-        /// 实际金额
+        /// 预算金额
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10, 2)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
         public decimal Budget { get; set; }
         /// <summary>
-        /// 预算币种 数据类型字表Id
+        /// 预算币种(设置数据外键编号)
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int BudgetCurrency { get; set; }
         /// <summary>
         /// 单间数量
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
         public int SingleRoomCount { get; set; }
         /// <summary>
         /// 单间单价
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10, 2)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
         public decimal SingleRoomPrice { get; set; }
         /// <summary>
         /// 双间数量
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
         public int DoubleRoomCount { get; set; }
         /// <summary>
         /// 双间单价
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10, 2)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
         public decimal DoubleRoomPrice { get; set; }
         /// <summary>
         /// 套房数量
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
         public int SuiteRoomCount { get; set; }
         /// <summary>
         /// 套房单价
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10, 2)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
         public decimal SuiteRoomPrice { get; set; }
         /// <summary>
         /// 其他房型数量
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
         public int OtherRoomCount { get; set; }
         /// <summary>
         /// 其他房型单价
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10, 2)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
         public decimal OtherRoomPrice { get; set; }
         /// <summary>
         /// 佣金
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10, 2)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
         public decimal Commission { get; set; }
         /// <summary>
-        /// 佣金币种
+        /// 佣金币种(设置数据外键编号)
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "int")] 
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int CommissionCurrency { get; set; }
         /// <summary>
-        /// 佣金标识0否 1是
+        /// 佣金标识
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int CommissionMark { get; set; }
@@ -154,49 +153,95 @@ namespace OASystem.Domain.Entities.Groups
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
         public string RoomExplanation { get; set; }
         /// <summary>
-        /// 附件
+        /// 附件地址
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
         public string Attachment { get; set; }
         /// <summary>
         /// 信用卡金额
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10, 2)")]
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
         public decimal CardPrice { get; set; }
         /// <summary>
-        /// 确认标识信用卡金额 0:未刷(红色)  1:已刷(绿色)
+        /// 确认标识   信用卡金额
+        /// 0:未刷(红色)  1:已刷(绿色)
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int IsCardPrice { get; set; }
         /// <summary>
-        /// 早餐费
+        /// 早饭费
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
+        public decimal BreakfastPrice { get; set; }
+        /// <summary>
+        /// 由地接支付
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int Isoppay { get; set; }
+        /// <summary>
+        /// 是否有单间
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int CboOne { get; set; }
+        /// <summary>
+        /// 是否有双间
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int CboTwo { get; set; }
+        /// <summary>
+        /// 是否有酒店套房
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int CboThree { get; set; }
+        /// <summary>
+        /// 是否有其他房型
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int CboFour { get; set; }
+        /// <summary>
+        /// 预计单间数量
         /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10, 2)")]
-        public decimal breakfastPrice { get; set; }
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int PredictSingleRoom { get; set; }
         /// <summary>
-        /// 是否由地接支付0否1是
+        /// 预计双人间数量
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public int IsOppay { get; set; }
+        public int PredictDoubleRoom { get; set; }
         /// <summary>
-        /// 是否住了单间0否1是
+        /// 预计套房数量
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public int IsCboOne { get; set; }
+        public int PredictSuiteRoom { get; set; }
         /// <summary>
-        /// 是否住了双间0否1是
+        /// 预计其他间数量
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public int IsCboTwo { get; set; }
+        public int PredictOtherRoom { get; set; }
         /// <summary>
-        /// 是否住了酒店套房0否1是
+        /// 地税
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
+        public decimal GovernmentRent { get; set; }
+        /// <summary>
+        /// 地税币种
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public int IsCboThree { get; set; }
+        public int GovernmentRentCurrency { get; set; }
         /// <summary>
-        /// 是否住了其他房型0否1是
+        /// 城市税
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(18,2)")]
+        public decimal CityTax { get; set; }
+        /// <summary>
+        /// 城市税币种
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public int IsCboFour { get; set; }
+        public int CityTaxCurrency { get; set; }
+        /// <summary>
+        /// 房间入住人类型
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string CheckType { get; set; }
     }
 }

+ 7 - 0
OASystem/OASystem.Domain/Entities/PersonnelModule/Pm_WageSheet.cs

@@ -73,6 +73,13 @@ namespace OASystem.Domain.Entities.PersonnelModule
         [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
         public decimal InformationSecurityFee { get; set; }
 
+        /// <summary>
+        /// 其他应付
+        /// 主要用来填比如补发工资之类
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
+        public decimal OtherHandle { get; set; }
+
         /// <summary>
         /// 服装洗理补贴 弃用
         /// </summary>

+ 127 - 0
OASystem/OASystem.Domain/ViewModels/Financial/Fin_PaymentRefundAndOtherMoneyView.cs

@@ -0,0 +1,127 @@
+using OASystem.Domain.Entities.Financial;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Financial
+{
+    /// <summary>
+    /// 收款退还与其他款项
+    /// </summary>
+    public class Fin_PaymentRefundAndOtherMoneyView: Fin_PaymentRefundAndOtherMoney
+    {
+    }
+
+    /// <summary>
+    /// 收款退还与其他款项
+    /// ItemView
+    /// </summary>
+    public class Fin_PaymentRefundAndOtherMoneyItemView 
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 费用名称
+        /// </summary>
+        public string? PriceName { get; set; }
+
+        /// <summary>
+        /// 费用
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 币种Name
+        /// </summary>
+        public string? CurrencyName { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string? Remark { get; set; }
+
+        /// <summary>
+        /// 创建人
+        /// </summary>
+        public string? CreateUserName { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        public DateTime CreateTime { get; set; }
+    }
+
+    /// <summary>
+    /// 收款退还与其他款项
+    /// InfoView
+    /// </summary>
+    public class Fin_PaymentRefundAndOtherMoneyInfoView
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// C表Id
+        /// </summary>
+        public int CcpId { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 费用名称
+        /// </summary>
+        public string? PriceName { get; set; }
+
+        /// <summary>
+        /// 费用
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 币种Id
+        /// </summary>
+        public int CurrencyId { get; set; }
+
+        /// <summary>
+        /// 收款方
+        /// </summary>
+        public string? Payee { get; set; }
+
+        /// <summary>
+        /// 支付方式Id
+        /// </summary>
+        public int PayDId { get; set; }
+
+        /// <summary>
+        /// 费用标识
+        /// </summary>
+        public int OrbitalPrivateTransfer { get; set; }
+
+        /// <summary>
+        /// 消费方式
+        /// </summary>
+        public string? ConsumptionPatterns { get; set; }
+
+        /// <summary>
+        /// 费用类型
+        /// 0 其他 1 退多付款
+        /// </summary>
+        public int PayType { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string? Remark { get; set; }
+
+    }
+}

+ 55 - 0
OASystem/OASystem.Domain/ViewModels/Financial/Fin_ProceedsReceivedView.cs

@@ -71,4 +71,59 @@ namespace OASystem.Domain.ViewModels.Financial
         /// </summary>
         public string? Remark { get; set; }
     }
+
+
+
+    /// <summary>
+    /// 团组已收款项-1Info View
+    /// </summary>
+    public class ProceedsReceived1View
+    {
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int Diid { get; set; }
+
+        /// <summary>
+        /// 到款时间
+        /// </summary>
+        public string? SectionTime { get; set; }
+
+        /// <summary>
+        /// 费用
+        /// </summary>
+        public decimal Price { get; set; }
+
+        /// <summary>
+        /// 币种
+        /// </summary>
+        public int Currency { get; set; }
+
+        /// <summary>
+        /// 收款类型
+        /// </summary>
+        public int ReceivablesType { get; set; }
+
+        /// <summary>
+        /// 收款单位
+        /// </summary>
+        public string? Client { get; set; }
+
+        /// <summary>
+        /// 收款单位 负责人 姓名
+        /// </summary>
+        public string? CustomerName { get; set; }
+
+        /// <summary>
+        /// 收款单位 负责人 姓名
+        /// </summary>
+        public string? CustomerTel { get; set; }
+
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string? Remark { get; set; }
+    }
 }

+ 71 - 0
OASystem/OASystem.Domain/ViewModels/Groups/CarTouristCreditCardPaymentView.cs

@@ -0,0 +1,71 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Groups
+{
+    public class CarTouristCreditCardPaymentView
+    {
+        /// <summary>
+        /// 支付方式
+        /// </summary>
+        public int PayDId { get; set; }
+        /// <summary>
+        /// 支付方式
+        /// </summary>
+        public string PayName { get; set; }
+        /// <summary>
+        /// 付款金额
+        /// </summary>
+        public decimal PayMoney { get; set; }
+        /// <summary>
+        /// 付款币种 数据类型Id
+        /// </summary>
+        public int PaymentCurrency { get; set; }
+        /// <summary>
+        /// 付款币种 文本
+        /// </summary>
+        public string PaymentCurrencyName { get; set; }
+        /// <summary>
+        /// 此次付款百分比
+        /// </summary>
+        public decimal PayPercentage { get; set; }
+        /// <summary>
+        /// 收款方
+        /// </summary>
+        public string Payee { get; set; }
+
+        /// <summary>
+        /// 费用标识
+        /// </summary>
+        public int OrbitalPrivateTransfer { get; set; }
+
+        /// <summary>
+        /// 费用标识文本
+        /// </summary>
+        public string OrbitalPrivateTransferStr { get; set; }
+    }
+
+    public class CarTouristGuideGroundReservationsContentView
+    {
+        public int Id { get; set; }
+        /// <summary>
+        /// 费用项目明细Id
+        /// </summary>
+        public int SId { get; set; }
+        /// <summary>
+        /// 费用项目明细
+        /// </summary>
+        public string SidName { get; set; }
+        /// <summary>
+        /// 金额
+        /// </summary>
+        public decimal Price { get; set; }
+        /// <summary>
+        /// 费用明细
+        /// </summary>
+        public string PriceContent { get; set; }
+    }
+}

+ 48 - 0
OASystem/OASystem.Domain/ViewModels/Groups/DelegationInfoView.cs

@@ -64,6 +64,52 @@ namespace OASystem.Domain.ViewModels.Groups
 
     }
 
+    /// <summary>
+    /// 接团信息详情 共享
+    /// 返回视图
+    /// </summary>
+    public class ShareGroupInfoIIView
+    {
+        /// <summary>
+        /// 主键Id
+        /// </summary>
+        public int Id { get; set; }
+        /// <summary>
+        /// 团组名称
+        /// </summary>
+        public string? teamName { get; set; }
+        /// <summary>
+        /// 团号
+        /// </summary>
+        public string? TourCode { get; set; }
+
+        /// <summary>
+        /// 客户名称
+        /// </summary>
+        public string? ClientName { get; set; }
+
+        /// <summary>
+        /// 出访国家
+        /// </summary>
+        public string? VisitCountry { get; set; }
+
+        /// <summary>
+        /// 出团起止日期
+        /// </summary>
+        public string? VisitDate { get; set; }
+
+        /// <summary>
+        /// 出行天数
+        /// </summary>
+        public int VisitDays { get; set; }
+
+        /// <summary>
+        /// 出行人数
+        /// </summary>
+        public int VisitPNumber { get; set; }
+
+    }
+
     /// <summary>
     /// 接团信息详情
     /// 返回视图
@@ -286,6 +332,8 @@ namespace OASystem.Domain.ViewModels.Groups
         public int IsSure { get; set; }
     }
 
+    
+
     /// <summary>
     /// 团组信息 Page List
     /// </summary>

+ 95 - 0
OASystem/OASystem.Domain/ViewModels/Groups/GroupStatusView.cs

@@ -0,0 +1,95 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Groups
+{
+    /// <summary>
+    /// 团组状态
+    /// 查询 Page List
+    /// View
+    /// </summary>
+    public class GroupStatusView
+    {
+
+        /// <summary>
+        /// 主键Id
+        /// 团组Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 销售报价号
+        /// </summary>
+        public string? SalesQuoteNo { get; set; }
+
+        /// <summary>
+        /// 团号
+        /// </summary>
+        public string? TourCode { get; set; }
+
+        /// <summary>
+        /// 接团操作人
+        /// </summary>
+        public string? JietuanOperator { get; set; }
+
+        /// <summary>
+        /// 团组等级Id
+        /// </summary>
+        public int TeamLevId { get; set; }
+
+        /// <summary>
+        /// 团组等级 
+        /// </summary>
+        public string? TeamLev { get; set; }
+
+        /// <summary>
+        /// 团组类型Id
+        /// </summary>
+        public int TeamTypeId { get; set; }
+
+        /// <summary>
+        /// 团组类型
+        /// </summary>
+        public string? TeamType { get; set; }
+
+        /// <summary>
+        /// 团组名称
+        /// </summary>
+        public string? TeamName { get; set; }
+
+        /// <summary>
+        /// 客户名称
+        /// </summary>
+        public string? ClientName { get; set; }
+
+        /// <summary>
+        /// 客户所属公司
+        /// </summary>
+        public string? ClientUnit { get; set; }
+
+        /// <summary>
+        /// 出团日期
+        /// </summary>
+        public DateTime VisitDate { get; set; }
+
+        /// <summary>
+        /// 出行天数
+        /// </summary>
+        public int VisitDays { get; set; }
+
+        /// <summary>
+        /// 出行人数
+        /// </summary>
+        public int VisitPNumber { get; set; }
+
+
+        /// <summary>
+        /// 是否操作完成 
+        /// 0否1是
+        /// </summary>
+        public int IsSure { get; set; }
+    }
+}

+ 89 - 1
OASystem/OASystem.Domain/ViewModels/Groups/Grp_CarTouristGuideGroundView.cs

@@ -7,8 +7,83 @@ using System.Threading.Tasks;
 
 namespace OASystem.Domain.ViewModels.Groups
 {
-    public class Grp_CarTouristGuideGroundView:Grp_CarTouristGuideGroundReservations
+    public class Grp_CarTouristGuideGroundView
     {
+        public int Id { get; set; }
+        /// <summary>
+        /// 团组外键编号
+        /// </summary>
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 地接地区
+        /// </summary>
+        public string Area { get; set; }
+
+        /// <summary>
+        /// 服务公司
+        /// </summary>
+        public string ServiceCompany { get; set; }
+
+        /// <summary>
+        /// 服务导游
+        /// </summary>
+        public string ServiceGuide { get; set; }
+
+        /// <summary>
+        /// 导游地接联系电话
+        /// </summary>
+        public string ServiceTel { get; set; }
+
+        /// <summary>
+        /// Bus名称
+        /// </summary>
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// Bus描述
+        /// </summary>
+        public string BusDescription { get; set; }
+
+        /// <summary>
+        /// 车公司联系电话
+        /// </summary>
+        /// 
+        public string BusTel { get; set; }
+
+        /// <summary>
+        /// 服务时间起
+        /// </summary>
+        public string ServiceStartTime { get; set; }
+        /// <summary>
+        /// 服务时间止
+        /// </summary>
+        public string ServiceEndTime { get; set; }
+        /// <summary>
+        /// 服务报价
+        /// </summary>
+        public decimal ServiceQuotedPrice { get; set; }
+        /// <summary>
+        /// 公转私转标识
+        /// </summary>
+        public int OrbitalPrivateTransfer { get; set; }
+        /// <summary>
+        /// 服务描述
+        /// </summary>
+        public string ServiceDescription { get; set; }
+        /// <summary>
+        /// 公转私转标识
+        /// </summary>
+        public string OrbitalPrivateTransferStr { get; set; }
+        /// <summary>
+        /// 币种(设置数据外键编号)
+        /// </summary>
+        public int CId { get; set; }
+        
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
         /// <summary>
         /// 行号
         /// </summary>
@@ -32,8 +107,21 @@ namespace OASystem.Domain.ViewModels.Groups
         /// </summary>
         public int IsAuditGM { get; set; }
         /// <summary>
+        /// 总经理是否审核
+        /// </summary>
+        public string IsAuditGMStr { get; set; }
+        /// <summary>
         /// 币种
         /// </summary>
         public string CurrencyStr { get; set; }
+
+        /// <summary>
+        /// 支付方式
+        /// </summary>
+        public int PayDid { get; set; }
+        /// <summary>
+        /// 支付方式str
+        /// </summary>
+        public string PayStrd { get; set; }
     }
 }

+ 348 - 0
OASystem/OASystem.Domain/ViewModels/Groups/HotelReservationsByDiIdView.cs

@@ -0,0 +1,348 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Groups
+{
+    /// <summary>
+    /// 根据diid查询酒店费用列表
+    /// </summary>
+    public class HotelReservationsByDiIdView
+    {
+        /// <summary>
+        /// 酒店主键Id
+        /// </summary>
+        public int Id { get; set; }
+        /// <summary>
+        /// 客人类型
+        /// </summary>
+        public string GuestType {  get; set; }
+        /// <summary>
+        /// 预订编号
+        /// </summary>
+        public string ReservationsNo { get; set; }
+        /// <summary>
+        /// 酒店名称
+        /// </summary>
+        public string HotelName { get; set; }
+        /// <summary>
+        /// 入住日期
+        /// </summary>
+        public string CheckInDate { get; set; }
+        /// <summary>
+        /// 离店日期
+        /// </summary>
+        public string CheckOutDate { get; set; }
+        /// <summary>
+        /// 付款金额
+        /// </summary>
+        public decimal PayMoney { get; set; }
+        /// <summary>
+        /// 付款币种
+        /// </summary>
+        public string PaymentCurrency { get; set; }
+        /// <summary>
+        /// 创建人Id
+        /// </summary>
+        public string CreateUserName { get; set; }
+        /// <summary>
+        /// 操作时间
+        /// </summary>
+        public DateTime CreateTime { get; set; }
+        /// <summary>
+        /// 总经理是否审核
+        /// </summary>
+        public int IsAuditGM { get; set; }
+
+        /// <summary>
+        /// 总经理是否审核
+        /// </summary>
+        public string IsAuditGMStr { get; set; }
+        /// <summary>
+        /// 附件地址
+        /// </summary>
+        public string Attachment { get; set; }
+    }
+    /// <summary>
+    /// 根据id查询酒店费用详情返回view
+    /// </summary>
+    public class HotelReservationsByIdView
+    {
+        public int Id { get; set; }
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+        /// <summary>
+        /// 客人类型(设置数据外键编号)
+        /// </summary>
+        public int GTId { get; set; }
+
+        /// <summary>
+        /// 客人类型文本
+        /// </summary>
+        public string GtIdStr { get; set; }
+        /// <summary>
+        /// 入住卷号码
+        /// </summary>
+        public string CheckNumber { get; set; }
+        /// <summary>
+        /// 预订网站(设置数据外键编号)
+        /// </summary>
+        public int ReservationsWebsite { get; set; }
+        /// <summary>
+        /// 预订号码
+        /// </summary>
+        public string ReservationsNo { get; set; }
+        /// <summary>
+        /// 酒店确定编号
+        /// </summary>
+        public string DetermineNo { get; set; }
+        /// <summary>
+        /// 所在城市
+        /// </summary>
+        public string City { get; set; }
+        /// <summary>
+        /// 酒店名称
+        /// </summary>
+        public string HotelName { get; set; }
+        /// <summary>
+        /// 酒店地址
+        /// </summary>
+        public string HotelAddress { get; set; }
+        /// <summary>
+        /// 酒店电话
+        /// </summary>
+        public string HotelTel { get; set; }
+        /// <summary>
+        /// 客人姓名
+        /// </summary>
+        public string GuestName { get; set; }
+        /// <summary>
+        /// 预算币种(设置数据外键编号)
+        /// </summary>
+        public int BudgetCurrency { get; set; }
+        /// <summary>
+        /// 预算币种(设置数据外键编号)
+        /// </summary>
+        public string BudgetCurrencyStr { get; set; }
+        /// <summary>
+        /// 入住日期
+        /// </summary>
+        public string CheckInDate { get; set; }
+        /// <summary>
+        /// 退房日期
+        /// </summary>
+        public string CheckOutDate { get; set; }
+        /// <summary>
+        /// 单间数量
+        /// </summary>
+        public int SingleRoomCount { get; set; }
+        /// <summary>
+        /// 单间单价
+        /// </summary>
+        public decimal SingleRoomPrice { get; set; }
+        /// <summary>
+        /// 双间数量
+        /// </summary>
+        public int DoubleRoomCount { get; set; }
+        /// <summary>
+        /// 双间单价
+        /// </summary>
+        public decimal DoubleRoomPrice { get; set; }
+        /// <summary>
+        /// 套房数量
+        /// </summary>
+        public int SuiteRoomCount { get; set; }
+        /// <summary>
+        /// 套房单价
+        /// </summary>
+        public decimal SuiteRoomPrice { get; set; }
+        /// <summary>
+        /// 其他房型数量
+        /// </summary>
+        public int OtherRoomCount { get; set; }
+        /// <summary>
+        /// 其他房型单价
+        /// </summary>
+        public decimal OtherRoomPrice { get; set; }
+        /// <summary>
+        /// 房间说明
+        /// </summary>
+        public string RoomExplanation { get; set; }
+        /// <summary>
+        /// 附件地址
+        /// </summary>
+        public string Attachment { get; set; }
+        /// <summary>
+        /// 信用卡金额
+        /// </summary>
+        public decimal CardPrice { get; set; }
+        /// <summary>
+        /// 确认标识   信用卡金额
+        /// 0:未刷(红色)  1:已刷(绿色)
+        /// </summary>
+        public int IsCardPrice { get; set; }
+        /// <summary>
+        /// 预计单间数量
+        /// </summary>
+        public int PredictSingleRoom { get; set; }
+        /// <summary>
+        /// 预计双人间数量
+        /// </summary>
+        public int PredictDoubleRoom { get; set; }
+        /// <summary>
+        /// 预计套房数量
+        /// </summary>
+        public int PredictSuiteRoom { get; set; }
+        /// <summary>
+        /// 预计其他间数量
+        /// </summary>
+        public int PredictOtherRoom { get; set; }
+        /// <summary>
+        /// 地税
+        /// </summary>
+        public decimal GovernmentRent { get; set; }
+        /// <summary>
+        /// 地税币种
+        /// </summary>
+        public int GovernmentRentCurrency { get; set; }
+        /// <summary>
+        /// 地税币种文本
+        /// </summary>
+        public string GovernmentRentCurrencyStr { get; set; }
+        /// <summary>
+        /// 城市税
+        /// </summary>
+        public decimal CityTax { get; set; }
+        /// <summary>
+        /// 城市税币种
+        /// </summary>
+        public int CityTaxCurrency { get; set; }
+        /// <summary>
+        /// 城市税币种文本
+        /// </summary>
+        public string CityTaxCurrencyStr { get; set; }
+        /// <summary>
+        /// 房间入住人类型
+        /// </summary>
+        public string CheckType { get; set; }
+        /// <summary>
+        /// 房间入住人类型文本描述
+        /// </summary>
+        public string CheckTypeStr { get; set; }
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+    }
+    /// <summary>
+    /// 根据id查询酒店费用C表的数据
+    /// </summary>
+    public class Grp_CreditCardView
+    {
+        /// <summary>
+        /// 支付方式
+        /// </summary>
+        public int PayDId { get; set; }
+        /// <summary>
+        /// 支付方式文本
+        /// </summary>
+        public string PayDIdStr { get; set; }
+        /// <summary>
+        /// 消费方式
+        /// </summary>
+        public string ConsumptionPatterns { get; set; }
+        /// <summary>
+        /// 消费日期
+        /// </summary>
+        public string ConsumptionDate { get; set; }
+        /// <summary>
+        /// 卡类型
+        /// </summary>
+        public int CTDId { get; set; }
+        /// <summary>
+        /// 卡类型文本
+        /// </summary>
+        public string CTDIdStr { get; set; }
+
+        /// <summary>
+        /// 银行卡号
+        /// </summary>
+        public string BankNo { get; set; }
+        /// <summary>
+        /// 持卡人姓名
+        /// </summary>
+        public string CardholderName { get; set; }
+        /// <summary>
+        /// 付款金额
+        /// </summary>
+        public decimal PayMoney { get; set; }
+        /// <summary>
+        /// 付款币种 数据类型Id
+        /// </summary>
+        public int PaymentCurrency { get; set; }
+        /// <summary>
+        /// 付款币种 文本
+        /// </summary>
+        public string PaymentCurrencyStr { get; set; }
+        /// <summary>
+        /// 当天汇率
+        /// </summary>
+        public decimal DayRate { get; set; }
+        /// <summary>
+        /// 公司银行卡号
+        /// </summary>
+        public string CompanyBankNo { get; set; }
+        /// <summary>
+        /// 对方开户行
+        /// </summary>
+        public string OtherBankName { get; set; }
+        /// <summary>
+        /// 对方银行账号
+        /// </summary>
+        public string OtherSideNo { get; set; }
+        /// <summary>
+        /// 对方姓名
+        /// </summary>
+        public string OtherSideName { get; set; }
+        
+        /// <summary>
+        /// 总经理是否审核  0 未审核 1已通过 2未通过
+        /// </summary>
+        public int IsAuditGM { get; set; }
+        /// <summary>
+        /// 收款方
+        /// </summary>
+        public string Payee { get; set; }
+        /// <summary>
+        /// 人民币费用
+        /// </summary>
+        public decimal RMBPrice { get; set; }
+
+        /// <summary>
+        /// 费用标识
+        /// </summary>
+        public int OrbitalPrivateTransfer { get; set; }
+        /// <summary>
+        /// 费用标识文本
+        /// </summary>
+        public int OrbitalPrivateTransferStr { get; set; }
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
+
+    }
+    /// <summary>
+    /// 返回付款金额
+    /// </summary>
+    public class HotelReservationsView
+    {
+        public decimal Price { get; set; }
+        public int CurrencyId { get; set; }
+        public string CurrencyName { get; set; }
+    }
+}

+ 23 - 1
OASystem/OASystem.Domain/ViewModels/Groups/VisaInfoView.cs

@@ -7,20 +7,42 @@ using System.Threading.Tasks;
 
 namespace OASystem.Domain.ViewModels.Groups
 {
-    public class VisaInfoView:Grp_VisaInfo
+    public class VisaInfoView
     {
         /// <summary>
         /// 行号
         /// </summary>
         public int RowNumber { get; set; }
+
+        public int Id { get; set; }
+        /// <summary>
+        /// 团组外键编号
+        /// </summary>
+        public int DIId { get; set; }
+        /// <summary>
+        /// 签证客户
+        /// </summary>
+        public string VisaClient { get; set; }
+        /// <summary>
+        /// 签证费用
+        /// </summary>
+        public decimal VisaPrice { get; set; }
         /// <summary>
         /// 总经理是否审核
         /// </summary>
         public int IsAuditGM { get; set; }
         /// <summary>
+        /// 总经理是否审核
+        /// </summary>
+        public string IsAuditGMStr { get; set; }
+        /// <summary>
         /// 币种
         /// </summary>
         public string VisaCurrencyStr { get; set; }
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Remark { get; set; }
     }
 
 }

+ 14 - 0
OASystem/OASystem.Domain/ViewModels/PersonnelModule/WageSheetView.cs

@@ -90,6 +90,10 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
         /// </summary>
         public decimal InformationSecurityFee { get; set; }
 
+        /// <summary>
+        /// 其他应付
+        /// </summary>
+        public decimal OtherHandle { get; set; }
 
         /// <summary>
         /// 月度补贴/其他补贴
@@ -323,6 +327,16 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
         public DateTime? LastUpdateDt { get; set; }
     }
 
+    /// <summary>
+    /// 个税模板 View
+    /// </summary>
+    public class TaxTemlateViuw
+    {
+        public string? UserName { get; set; }
+
+        public decimal Tax { get; set; } = 0.00M;
+    }
+
 
     public class ExportWageSheetItemView:Pm_WageSheet
     {

+ 3 - 2
OASystem/OASystem.Domain/ViewModels/QiYeWeChat/ApprovalDataView.cs

@@ -614,9 +614,10 @@ namespace OASystem.Domain.ViewModels.QiYeWeChat
         /// <summary>
         /// 审批申请备注信息,可能有多个备注节点
         /// </summary>
-        public List<string> comments { get; set; }
+        public List<Comment> comments { get; set; }
     }
 
+
     /// <summary>
     /// 审批申请备注信息
     /// </summary>
@@ -638,7 +639,7 @@ namespace OASystem.Domain.ViewModels.QiYeWeChat
         public string commentcontent { get; set; }
 
         /// <summary>
-        /// commentid
+        /// 	备注id
         /// </summary>
         public string commentid { get; set; }
 

+ 405 - 0
OASystem/OASystem.Infrastructure/Repositories/Financial/PaymentRefundAndOtherMoneyRepository.cs

@@ -0,0 +1,405 @@
+using AutoMapper;
+using Newtonsoft.Json;
+using OASystem.Domain;
+using OASystem.Domain.Dtos;
+using OASystem.Domain.Dtos.Financial;
+using OASystem.Domain.Dtos.UserDto;
+using OASystem.Domain.Entities.Financial;
+using OASystem.Domain.Entities.Groups;
+using OASystem.Domain.ViewModels.Financial;
+using OASystem.Infrastructure.Repositories.Groups;
+using OASystem.Infrastructure.Repositories.System;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Infrastructure.Repositories.Financial
+{
+    /// <summary>
+    /// 财务 - 收款退还与其他款项
+    /// </summary>
+    public class PaymentRefundAndOtherMoneyRepository:BaseRepository<Fin_PaymentRefundAndOtherMoney, Fin_PaymentRefundAndOtherMoneyView>
+    {
+        private readonly IMapper _mapper;
+        private readonly Result _result;
+        private readonly SetDataRepository _setDataRep;
+        private readonly TeamRateRepository _teamRateRep;
+
+        /// <summary>
+        /// 初始化
+        /// </summary>
+        /// <param name="sqlSugar"></param>
+        /// <param name="mapper"></param>
+        public PaymentRefundAndOtherMoneyRepository(SqlSugarClient sqlSugar, IMapper mapper, SetDataRepository setDataRep, TeamRateRepository teamRateRep)
+            : base(sqlSugar)
+        {
+            _mapper = mapper;
+            _result = new Result() { Code = -2 };
+            _setDataRep = setDataRep;
+            _teamRateRep = teamRateRep;
+        }
+
+        /// <summary>
+        /// 根据团组ID 查询
+        /// </summary>
+        /// <param name="diId"></param>
+        /// <returns></returns>
+        public async Task<Result> PostItemByDiId(int diId)
+        {
+            string sql = string.Format(@"Select prom.Id,prom.PriceName,prom.Price,sd.Name As CurrencyName,prom.Remark,u.CnName As CreateUserName,prom.CreateTime 
+				                         From Fin_PaymentRefundAndOtherMoney prom
+				                         Left Join Sys_Users u On u.Id = prom.CreateUserId 
+				                         Left Join Sys_SetData sd On prom.CurrencyId = sd.Id
+				                         Where prom.IsDel = 0  And prom.DiId={0}", diId);
+
+            var data = await _sqlSugar.SqlQueryable<Fin_PaymentRefundAndOtherMoneyItemView>(sql).ToListAsync();
+
+            _result.Data = data;
+            _result.Code = 0;
+            _result.Msg = "查询成功!";
+
+            return _result;
+
+        }
+
+        /// <summary>
+        /// 删除
+        /// </summary>
+        /// <param name="diId"></param>
+        /// <returns></returns>
+        public async Task<Result> _Del(PaymentRefundAndOtherMoneyDelDto dto)
+        {
+            Fin_PaymentRefundAndOtherMoney _PaymentRefundAndOtherMoney = new Fin_PaymentRefundAndOtherMoney() { 
+                Id = dto.Id,
+                DeleteUserId = dto.UserId,
+                DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                IsDel = 1
+            };
+
+            _sqlSugar.BeginTran();
+            var prom_del = await _sqlSugar.Updateable( _PaymentRefundAndOtherMoney )
+                                     .UpdateColumns(it => new { it.DeleteUserId,it.DeleteTime,it.IsDel })
+                                     .WhereColumns(it => new { it.Id})
+                                     .ExecuteCommandAsync();
+
+
+            Fin_PaymentRefundAndOtherMoney _PaymentRefundAndOtherMoneyInfo = new Fin_PaymentRefundAndOtherMoney();
+            _PaymentRefundAndOtherMoneyInfo = await _sqlSugar.Queryable<Fin_PaymentRefundAndOtherMoney>().Where(it => it.Id == dto.Id).FirstAsync();
+
+            if (_PaymentRefundAndOtherMoneyInfo != null)
+            {
+                Grp_CreditCardPayment _CreditCardPayment = new Grp_CreditCardPayment() {
+                    Id = _PaymentRefundAndOtherMoneyInfo.Id,
+                    DeleteUserId = dto.UserId,
+                    DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
+                    IsDel = 1
+                };
+
+
+                var ccp_del = await _sqlSugar.Updateable(_CreditCardPayment)
+                                     .UpdateColumns(it => new { it.DeleteUserId, it.DeleteTime, it.IsDel })
+                                     .WhereColumns(it => new { it.Id })
+                                     .ExecuteCommandAsync();
+            }
+
+            if (prom_del > 0 )
+            {
+                _result.Code = 0;
+                _result.Msg = "操作成功!";
+            }
+            else
+            {
+                _result.Msg = "操作失败!";
+            }
+
+            _sqlSugar.CommitTran();
+            return _result;
+        }
+        
+        /// <summary>
+        /// 详情 数据源
+        /// </summary>
+        /// <param name="diId"></param>
+        /// <returns></returns>
+        public async Task<Result> _InfoDataSource(PortDtoBase dto)
+        {
+            if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3)  //1 Web 2 Android 3 Ios
+            {
+                dynamic _currencyData = null, _payTypeData = null;
+                Result currencyData = await _setDataRep.GetSetDataBySTId(_setDataRep, 66); //币种类型
+                if (currencyData != null)
+                {
+                    if (currencyData.Code == 0)
+                    {
+                        _currencyData = currencyData.Data;
+                    }
+                }
+
+                Result payTypeData = await _setDataRep.GetSetDataBySTId(_setDataRep, 14); //支付类型
+                if (payTypeData != null)
+                {
+                    if (payTypeData.Code == 0)
+                    {
+                        _payTypeData = payTypeData.Data;
+                    }
+                }
+
+                List<dynamic> _priceTypeDatas = new List<dynamic>();
+                _priceTypeDatas.Add(new { Id = 0, Name = "其他", Remark = "" });
+                _priceTypeDatas.Add(new { Id = 1, Name = "退多付款", Remark = "" });
+
+                dynamic _InfoDataSource = new
+                {
+                    CurrencyDatas = _currencyData,
+                    PayTypeDatas = _payTypeData,
+                    PriceTypeDatas = _priceTypeDatas
+                };
+
+                _result.Data = _InfoDataSource;
+                _result.Code = 0;
+                _result.Msg = "查询成功!";
+            }
+            else
+            {
+                _result.Msg = "请输入正确的端口号! 1 Web 2 Android 3 Ios;";
+            }
+
+            return _result;
+        }
+
+        /// <summary>
+        /// 详情
+        /// </summary>
+        /// <param name="diId"></param>
+        /// <returns></returns>
+        public async Task<Result> _Info(PaymentRefundAndOtherMoneyInfoDto dto)
+        {
+           
+
+            if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3)  //1 Web 2 Android 3 Ios
+            {
+                string sql = string.Format(@"Select prom.Id,ccp.Id CcpId,prom.DiId,prom.PriceName,prom.Price,prom.CurrencyId,ccp.Payee,ccp.PayDId,
+										 ccp.OrbitalPrivateTransfer,ccp.ConsumptionPatterns,prom.PayType,prom.Remark
+										 From Fin_PaymentRefundAndOtherMoney prom 
+										 Left Join Grp_CreditCardPayment ccp On ccp.CId = prom.id And ccp.CTable = 79 And ccp.IsDel = 0
+										 Where prom.IsDel = 0 And prom.Id = {0}", dto.Id);
+                var data = await _sqlSugar.SqlQueryable<Fin_PaymentRefundAndOtherMoneyInfoView>(sql).ToListAsync();
+
+                if (data != null)
+                {
+                    _result.Data = data;
+                    _result.Code = 0;
+                    _result.Msg = "查询成功!";
+                }
+                else
+                {
+                    _result.Msg = "查询失败!";
+                }
+
+            }
+            else
+            {
+                _result.Msg = "请输入正确的端口号! 1 Web 2 Android 3 Ios;";
+            }
+           
+            return _result;
+        }
+
+        /// <summary>
+        /// 操作(Add Or Edit)
+        /// </summary>
+        /// <param name="diId"></param>
+        /// <returns></returns>
+        public async Task<Result> _AddOrEdit(PaymentRefundAndOtherMoneyAddOrEditDto dto)
+        {
+
+
+            if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3)  //1 Web 2 Android 3 Ios
+            {
+                #region 参数处理
+                Fin_PaymentRefundAndOtherMoney _PaymentRefundAndOtherMoney = new Fin_PaymentRefundAndOtherMoney() { 
+                    //Id = dto.Id,
+                    DiId = dto.DiId,
+                    PriceName = dto.PriceName,
+                    Price = dto.Price,
+                    CurrencyId = dto.CurrencyId,
+                    PayType = dto.PayType,
+                    //PriceType = dto.PriceType,
+                    CreateUserId = dto.UserId,
+                    Remark = dto.Remark 
+                };
+
+                //处理团组汇率
+                decimal dayRate = 0.00M;
+                decimal CNY_Price = 0.00M;
+                decimal payThenMoney = 0.00M;
+                #region 其他款项 团组汇率 验证
+                if (dto.CurrencyId == 836) //人民币币种Id
+                {
+                    dayRate = 1.0000M;
+                    CNY_Price = dto.Price;
+                    payThenMoney = dto.Price;
+                }
+                else //其他币种Id
+                {
+                    List<TeamRateModelView> teamReteDatas = await _teamRateRep.PostGroupRateInfoByDiId(dto.DiId);
+                    if (teamReteDatas.Count <= 0)
+                    {
+                        _result.Msg = "该团未设置团组汇率,请先设置!";
+                        return _result;
+                    }
+
+                    var teamReteData1 = teamReteDatas.Where(it => it.CTableId == 285).FirstOrDefault();
+                    if (teamReteData1 == null)
+                    {
+                        _result.Msg = "该团下的“其他款项”未设置团组汇率,请先设置!";
+                        return _result;
+                    }
+
+                    var teamReteData2 = teamReteData1.TeamRates.Where(it => it.CurrencyCode == dto.CurrencyCode).FirstOrDefault();
+                    if (teamReteData2 == null)
+                    {
+                        _result.Msg = @"该团下的“其他款项”币种 “"+ dto.CurrencyCode + "”未设置团组汇率,请先设置!";
+                        return _result;
+                    }
+                    dayRate = teamReteData2.Rate;
+                    CNY_Price = dayRate * dayRate;
+                    payThenMoney = dayRate * dayRate;
+                }
+
+                #endregion
+
+                Grp_CreditCardPayment _CreditCardPayment = new Grp_CreditCardPayment() {
+                    //Id = dto.CcpId,
+                    //CId = dto.CcpId,
+                    DIId = dto.DiId,
+                    CTable = 285,
+                    PayDId = dto.PayDId,
+                    ConsumptionPatterns = dto.ConsumptionPatterns,
+                    ConsumptionDate = string.Empty,
+                    CTDId = 0,
+                    BankNo = string.Empty,
+                    CardholderName = string.Empty,
+                    PayMoney = dto.Price,
+                    PaymentCurrency = dto.CurrencyId,
+                    DayRate = dayRate,
+                    CompanyBankNo = string.Empty,
+                    OtherBankName = string.Empty,
+                    OtherSideNo = string.Empty,
+                    OtherSideName = string.Empty,
+                    MFOperator = 0,
+                    MFOperatorDate = string.Empty,
+                    IsAuditDM = 0,
+                    AuditDMOperate = 0,
+                    AuditDMDate = string.Empty,
+                    IsAuditMF = 0,
+                    AuditMFOperate = 0,
+                    AuditMFDate = string.Empty,
+                    IsAuditGM = 0,
+                    AuditGMOperate = 0,
+                    AuditGMDate = string.Empty,
+                    IsPay = 0,
+                    PayPercentage = 100.00M,
+                    PayThenMoney = payThenMoney,
+                    PayPercentageOld = 0.00M,
+                    PayThenMoneyOld = 0.00M,
+                    UpdateDate = string.Empty,
+                    Payee = dto.Payee,
+                    RMBPrice = CNY_Price,
+                    OrbitalPrivateTransfer = dto.OrbitalPrivateTransfer,
+                    ExceedBudget = 0.00M,
+                    CreateUserId = dto.UserId,
+                    DeleteUserId = null,
+                    DeleteTime = string.Empty,
+                    Remark = string.Empty,
+                    IsDel = 0
+                };
+
+                #endregion
+
+                if (dto.Status == 1) //添加
+                {
+                    _sqlSugar.BeginTran();
+
+                    var addReturnId = await _sqlSugar.Insertable(_PaymentRefundAndOtherMoney).ExecuteReturnIdentityAsync();
+
+                    if (addReturnId <= 0)
+                    {
+                        _result.Msg = "操作失败!收款退还与其他款项添加失败!";
+                        _sqlSugar.RollbackTran();
+                        return _result;
+                    }
+                    _CreditCardPayment.CId = addReturnId;
+                    var addStatus = await _sqlSugar.Insertable(_CreditCardPayment).ExecuteReturnIdentityAsync();
+                    if (addStatus <= 0)
+                    {
+                        _result.Msg = "操作失败!付款类型添加失败!";
+                        _sqlSugar.RollbackTran();
+                        return _result;
+                    }
+
+                    _sqlSugar.CommitTran();
+                    _result.Msg = "操作成功!";
+                    _result.Code = 0;
+                }
+                else if (dto.Status == 2) //修改
+                {
+                    _PaymentRefundAndOtherMoney.Id = dto.Id;
+                    _CreditCardPayment.Id = dto.CcpId;
+                    _CreditCardPayment.CId = dto.Id;
+
+                    _sqlSugar.BeginTran();
+
+                    var prom_update = await _sqlSugar.Updateable(_PaymentRefundAndOtherMoney)
+                                                     .IgnoreColumns(it => new { it.CreateUserId, it.CreateTime, it.DeleteUserId, it.DeleteTime, it.IsDel })
+                                                     .WhereColumns(it => new { it.Id })
+                                                     .ExecuteCommandAsync();
+
+                    if (prom_update <= 0)
+                    {
+                        _result.Msg = "操作失败!收款退还与其他款项修改失败!";
+                        _sqlSugar.RollbackTran();
+                        return _result;
+                    }
+
+                    var ccp_update = await _sqlSugar.Updateable(_CreditCardPayment)
+                                                   .UpdateColumns(it => new
+                                                   {
+                                                       it.ConsumptionPatterns,
+                                                       it.PayMoney,
+                                                       it.PaymentCurrency,
+                                                       it.DayRate,
+                                                       it.PayThenMoney,
+                                                       it.OrbitalPrivateTransfer
+                                                   })
+                                                   .WhereColumns(it => new { it.Id })
+                                                   .ExecuteCommandAsync();
+                    if (ccp_update <= 0)
+                    {
+                        _result.Msg = "操作失败!付款信息修改失败!";
+                        _sqlSugar.RollbackTran();
+                        return _result;
+                    }
+
+                    _sqlSugar.CommitTran();
+                    _result.Msg = "操作成功!";
+                    _result.Code = 0;
+                }
+                else
+                {
+                    _result.Msg = "请输入正确的状态! 1 添加 2 修改;";
+                }
+
+            }
+            else
+            {
+                _result.Msg = "请输入正确的端口号! 1 Web 2 Android 3 Ios;";
+            }
+
+            return _result;
+        }
+    }
+}

+ 116 - 6
OASystem/OASystem.Infrastructure/Repositories/Financial/ProceedsReceivedRepository.cs

@@ -31,7 +31,7 @@ namespace OASystem.Infrastructure.Repositories.Financial
         }
 
         /// <summary>
-        /// 根据diid查询团组已收款项
+        /// 根据diid查询团组已收款项 已关联应收款项
         /// </summary>
         /// <param name="diid"></param>
         /// <returns></returns>
@@ -39,7 +39,7 @@ namespace OASystem.Infrastructure.Repositories.Financial
         {
             Result result = new() { Code = -2 };
 
-            string sql = string.Format(@"Select * From ProceedsReceived Where IsDel=0 And Diid={0}", diid);
+            string sql = string.Format(@"Select * From Fin_ProceedsReceived Where IsDel=0 And Diid={0}", diid);
 
             var groupReceivablesList = await _sqlSugar.SqlQueryable<Fin_ProceedsReceivedView>(sql).ToListAsync();
 
@@ -52,7 +52,7 @@ namespace OASystem.Infrastructure.Repositories.Financial
         }
 
         /// <summary>
-        /// 根据diid 数组 查询团组已收款项
+        /// 根据diid 数组 查询团组已收款项 已关联应收款项
         /// </summary>
         /// <param name="diid"></param>
         /// <returns></returns>
@@ -73,7 +73,7 @@ namespace OASystem.Infrastructure.Repositories.Financial
         }
 
         /// <summary>
-        /// 应收款项 删除
+        /// 已收款项 已关联应收款项 删除 
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
@@ -106,7 +106,7 @@ namespace OASystem.Infrastructure.Repositories.Financial
         }
 
         /// <summary>
-        /// 已收款项
+        /// 已收款项 已关联应收款项
         /// Add And Update
         /// </summary>
         /// <param name="diid"></param>
@@ -160,7 +160,7 @@ namespace OASystem.Infrastructure.Repositories.Financial
 
 
         /// <summary>
-        /// 已收款项
+        /// 已收款项 已关联应收款项
         /// 分配已收款项至 应收项下
         /// </summary>
         /// <param name="diid"></param>
@@ -196,5 +196,115 @@ namespace OASystem.Infrastructure.Repositories.Financial
 
             return result;
         }
+
+
+
+
+        /// <summary>
+        /// 根据diid查询团组已收款项
+        /// </summary>
+        /// <param name="diid"></param>
+        /// <returns></returns>
+        public async Task<Result> PostAmountReceived(int diid)
+        {
+            Result result = new() { Code = -2 };
+
+            string sql = string.Format(@"Select Id,Diid,SectionTime,Price,Currency,ReceivablesType,Client,CustomerName,CustomerTel, Remark From Fin_ProceedsReceived 
+                                         Where IsDel=0 And Diid={0}", diid);
+
+            var groupReceivablesList = await _sqlSugar.SqlQueryable<ProceedsReceived1View>(sql).ToListAsync();
+
+            result.Code = 0;
+            result.Msg = "查询成功!";
+            result.Data = groupReceivablesList;
+
+            return result;
+        }
+
+        /// <summary>
+        /// 已收款项
+        /// Add And Update
+        /// </summary>
+        /// <param name="diid"></param>
+        /// <returns></returns>
+        public async Task<Result> PostAmountReceivedAddOrEditDto(AmountReceivedAddOrEditDto dto)
+        {
+            Result result = new() { Code = -2 };
+
+            if (dto._ProceedsReceivedInfos.Count <= 0)
+            {
+                result.Msg = "已收款项没有信息,不能进行,添加或修改操作!!!";
+                return result;
+            }
+
+
+            int addCount = 0, updateCount = 0;
+            if (dto.PortType == 1)
+            {
+                List<Fin_ProceedsReceived> _ProceedsReceived = new List<Fin_ProceedsReceived>();
+                foreach (var item in dto._ProceedsReceivedInfos)
+                {
+                    _ProceedsReceived.Add(new Fin_ProceedsReceived()
+                    {
+                        Diid = dto.DiId,
+                        Id = item.Id,
+                        SectionTime = item.SectionTime,
+                        Price = item.Price,
+                        Currency = item.Currency,
+                        ReceivablesType = item.ReceivablesType,
+                        Client = item.Client,
+                        CustomerName = item.CustomerName,
+                        CustomerTel = item.CustomerTel,
+                        FID = 0,
+                        CreateUserId = dto.UserId,
+                        CreateTime = DateTime.Now,
+                        Remark = item.Remark
+                    });
+                }
+                if (_ProceedsReceived.Count > 0)
+                {
+                    var x = _sqlSugar.Storageable(_ProceedsReceived).ToStorage();
+                    addCount = x.AsInsertable.ExecuteCommand();        //不存在插入
+                    updateCount = x.AsUpdateable.ExecuteCommand();    //存在更新
+                }
+                result.Code = 0;
+                result.Msg = string.Format(@"操作成功!添加:{0}条;更新:{1};", addCount, updateCount);
+            }
+
+            return result;
+        }
+
+        /// <summary>
+        /// 已收款项  删除 
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> PostAmountReceivedDel(AmountReceivedDelDto dto)
+        {
+            Result result = new Result() { Code = -1, Msg = "程序错误!" };
+
+
+            var res = await _sqlSugar.Updateable<Fin_ProceedsReceived>()
+                .Where(it => it.Id == dto.Id)
+                .SetColumns(it => new Fin_ProceedsReceived()
+                {
+                    IsDel = 1,
+                    DeleteUserId = dto.UserId,
+                    DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+                }
+                ).ExecuteCommandAsync();
+
+            if (res > 0)
+            {
+                result.Msg = "删除成功!";
+                result.Code = 0;
+            }
+            else
+            {
+                result.Msg = "删除失败!";
+            }
+
+            return result;
+        }
     }
 }

+ 58 - 22
OASystem/OASystem.Infrastructure/Repositories/Groups/CarTouristGuideGroundRepository.cs

@@ -1,5 +1,4 @@
 using AutoMapper;
-using NPOI.OpenXmlFormats.Shared;
 using OASystem.Domain;
 using OASystem.Domain.Dtos.Groups;
 using OASystem.Domain.Entities.Financial;
@@ -7,11 +6,7 @@ using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.Entities.Resource;
 using OASystem.Domain.ViewModels.Groups;
 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
 {
@@ -119,7 +114,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
             return result;
         }
 
-        public async Task<Result> CarTouristGuideGroundConten(CarTouristGuideGroundContenDto dto)
+        public async Task<Result> CarTouristGuideGroundContent(CarTouristGuideGroundContentDto dto)
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
             try
@@ -138,7 +133,8 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 string sql = string.Format(@"select * from Grp_DelegationInfo where Id in({0}) and IsDel={1}", DiId, 0);
 
                 //团组下拉框
-                List<Grp_DelegationInfo> grp_Delegations = _sqlSugar.SqlQueryable<Grp_DelegationInfo>(sql).ToList();
+                List<Grp_DelegationInfo> _Delegations = _sqlSugar.SqlQueryable<Grp_DelegationInfo>(sql).ToList();
+                List<ShareGroupInfoIIView> grp_Delegations = _mapper.Map<List<ShareGroupInfoIIView>>(_Delegations);
                 //支付方式
                 List<Sys_SetData> Payment = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 14 && a.IsDel == 0).ToList();
                 List<SetDataInfoView> _Payment = _mapper.Map<List<SetDataInfoView>>(Payment);
@@ -169,19 +165,30 @@ namespace OASystem.Infrastructure.Repositories.Groups
             }
         }
 
-        public async Task<Result> OpCarTouristGuideGroundContenById(CarTouristGuideGroundIdDto dto)
+        public async Task<Result> OpCarTouristGuideGroundContentById(CarTouristGuideGroundIdDto dto)
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
             try
             {
                
-                List<Grp_CarTouristGuideGroundReservationsContent> grp_CarTouristsConten = _sqlSugar.Queryable<Grp_CarTouristGuideGroundReservationsContent>().Where(a=>a.IsDel==0 && a.CTGGRId==dto.Id).ToList();
-                Grp_CreditCardPayment _CreditCardPayment = _sqlSugar.Queryable<Grp_CreditCardPayment>().First(a => a.CId == dto.Id && a.IsDel == 0 && a.CTable == 79);
-                Grp_CarTouristGuideGroundReservations grp_CarTouristGuideGround= _sqlSugar.Queryable<Grp_CarTouristGuideGroundReservations>().First(a => a.Id == dto.Id && a.IsDel == 0);
+                List<Grp_CarTouristGuideGroundReservationsContent> grp_CarTouristsContent = _sqlSugar.Queryable<Grp_CarTouristGuideGroundReservationsContent>().Where(a=>a.IsDel==0 && a.CTGGRId==dto.Id).ToList();
+                List<CarTouristGuideGroundReservationsContentView> carTouristGuides = _mapper.Map<List<CarTouristGuideGroundReservationsContentView>>(grp_CarTouristsContent);
+                foreach (var item in carTouristGuides)
+                {
+                    item.SidName= _sqlSugar.Queryable<Sys_SetData>().First(a => a.Id == item.SId).Name;
+                }
+                Grp_CreditCardPayment CreditCardPayment = _sqlSugar.Queryable<Grp_CreditCardPayment>().First(a => a.CId == dto.Id && a.IsDel == 0 && a.CTable == 79);
+                CarTouristCreditCardPaymentView _CreditCardPayment = _mapper.Map<CarTouristCreditCardPaymentView>(CreditCardPayment);
+                if (_CreditCardPayment!=null)
+                {
+                    _CreditCardPayment.PayName = _sqlSugar.Queryable<Sys_SetData>().First(a => a.Id == _CreditCardPayment.PayDId).Name;
+                    _CreditCardPayment.PaymentCurrencyName = _sqlSugar.Queryable<Sys_SetData>().First(a => a.Id == _CreditCardPayment.PaymentCurrency).Name;
+                    if (_CreditCardPayment.OrbitalPrivateTransfer==0) _CreditCardPayment.OrbitalPrivateTransferStr = "公转";
+                    else _CreditCardPayment.OrbitalPrivateTransferStr = "私转";
+                }
                 var data = new
                 {
-                    CarTouristsConten = grp_CarTouristsConten,
-                    CarTourists = grp_CarTouristGuideGround,
+                    CarTouristsContent = carTouristGuides,
                     CreditCardPayment = _CreditCardPayment,
                 };
                 return result = new Result() { Code = 0, Msg = "查询成功", Data = data };
@@ -237,40 +244,69 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 int endIndex = startIndex + dto.PageSize - 1;
                 if (dto.PortType == 1)
                 {
-                    string sql = string.Format(@"select t.*,s.Name as CurrencyStr,c.IsAuditGM,c.PayPercentage,c.PayMoney from 
+                    string sql = string.Format(@"select t.*,s.Name as CurrencyStr,c.IsAuditGM,c.PayPercentage,c.PayMoney,c.PayDid from 
                                                 Grp_CarTouristGuideGroundReservations t
-                                                left Join Grp_CreditCardPayment c on CTable=79 and c.CId=t.Id
+                                                left Join Grp_CreditCardPayment c on CTable=79 and c.CId=t.Id  and c.isdel=0
                                                 left Join Sys_SetData s on s.Id=c.PaymentCurrency {0}
-                                                order by CreateTime desc", sqlWhere);
+                                                order by c.IsAuditGM,c.PayPercentage desc", sqlWhere);
                     List<Grp_CarTouristGuideGroundView> infoViews = _sqlSugar.SqlQueryable<Grp_CarTouristGuideGroundView>(sql).ToList();
                     foreach (var item in infoViews)
                     {
+                        if (item.OrbitalPrivateTransfer == 0) item.OrbitalPrivateTransferStr = "公转";
+                        else if (item.OrbitalPrivateTransfer == 1) item.OrbitalPrivateTransferStr = "私转";
+                        
+                        item.ServiceStartTime = Convert.ToDateTime(item.ServiceStartTime).ToString("yyyy-MM-dd");
+                        item.ServiceEndTime = Convert.ToDateTime(item.ServiceEndTime).ToString("yyyy-MM-dd");
                         item.ServiceQuotedPrice = item.PayMoney;
                         item.PayThenMoney = Math.Round(item.PayPercentage/100 * item.ServiceQuotedPrice, 2);
                         item.RemainingBalance = Math.Round(item.ServiceQuotedPrice- item.PayPercentage / 100 * item.ServiceQuotedPrice);
+                        if (item.IsAuditGM == 0) item.IsAuditGMStr = "未审核";
+                        else if (item.IsAuditGM == 1) item.IsAuditGMStr = "已通过";
+                        else if (item.IsAuditGM == 2) item.IsAuditGMStr = "未通过";
+                        else if (item.IsAuditGM == 3) item.IsAuditGMStr = "自动审核";
+                        Sys_SetData s = _sqlSugar.Queryable<Sys_SetData>().First(a=>a.IsDel==0 && a.Id==item.PayDid);
+                        if (s!=null)
+                        {
+                            item.PayStrd = s.Name;
+                        }else item.PayStrd ="未选择";
                     }
                     return result = new Result() { Code = 0, Msg = "查询成功!", Data = infoViews };
                 }
                 else if (dto.PortType == 2 || dto.PortType == 3)
                 {
                     string sql = string.Format(@"Select * From (	
-                                            Select row_number() over (order by t.Id Desc) as RowNumber,t.*,s.Name as CurrencyStr,c.IsAuditGM,c.PayPercentage
+                                            Select row_number() over (order by c.IsAuditGM,c.PayPercentage desc) as RowNumber,t.*,s.Name as CurrencyStr,c.IsAuditGM,c.PayPercentage,c.PayDid
                                             from 
                                             Grp_CarTouristGuideGroundReservations t
-                                            left Join Grp_CreditCardPayment c on CTable=79 and c.CId=t.Id
+                                            left Join Grp_CreditCardPayment c on CTable=79 and c.CId=t.Id  and c.isdel=0
                                             left Join Sys_SetData s on s.Id=c.PaymentCurrency {0}
                                             ) temp Where RowNumber Between {1} and {2}", sqlWhere, startIndex, endIndex);
 
                     List<Grp_CarTouristGuideGroundView> grp_CarTourists = _sqlSugar.SqlQueryable<Grp_CarTouristGuideGroundView>(sql).ToList();
                     foreach (var item in grp_CarTourists)
                     {
+                        if (item.OrbitalPrivateTransfer == 0) item.OrbitalPrivateTransferStr = "公转";
+                        else if (item.OrbitalPrivateTransfer == 1) item.OrbitalPrivateTransferStr = "私转";
+                        item.ServiceStartTime = Convert.ToDateTime(item.ServiceStartTime).ToString("yyyy-MM-dd");
+                        item.ServiceEndTime = Convert.ToDateTime(item.ServiceEndTime).ToString("yyyy-MM-dd");
+                        if (item.IsAuditGM == 0) item.IsAuditGMStr = "未审核";
+                        else if (item.IsAuditGM == 1) item.IsAuditGMStr = "已通过";
+                        else if (item.IsAuditGM == 2) item.IsAuditGMStr = "未通过";
+                        else if (item.IsAuditGM == 3) item.IsAuditGMStr = "自动审核";
+                        item.ServiceQuotedPrice = item.PayMoney;
                         item.PayThenMoney = Math.Round(item.PayPercentage / 100 * item.ServiceQuotedPrice, 2);
                         item.RemainingBalance = Math.Round(item.ServiceQuotedPrice - item.PayPercentage / 100 * item.ServiceQuotedPrice);
+                        Sys_SetData s = _sqlSugar.Queryable<Sys_SetData>().First(a => a.IsDel == 0 && a.Id == item.PayDid);
+                        if (s != null)
+                        {
+                            item.PayStrd = s.Name;
+                        }
+                        else item.PayStrd = "未选择";
                     }
                     string CountSql = string.Format(@"Select COUNT(1) as Count From (	
                                                         select t.*,s.Name as CurrencyStr,c.IsAuditGM,c.PayPercentage from 
                                                         Grp_CarTouristGuideGroundReservations t
-                                                        left Join Grp_CreditCardPayment c on CTable=79 and c.CId=t.Id
+                                                        left Join Grp_CreditCardPayment c on CTable=79 and c.CId=t.Id  and c.isdel=0
                                                         left Join Sys_SetData s on s.Id=t.CId {0}
                                                         ) temp ", sqlWhere);
                     DataCount dataCount = _sqlSugar.SqlQueryable<DataCount>(CountSql).First();
@@ -303,14 +339,14 @@ namespace OASystem.Infrastructure.Repositories.Groups
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        public async  Task<Result> OpCarTouristGuideGroundConten(OpCarTouristGuideGroundContenDto dto)
+        public async  Task<Result> OpCarTouristGuideGroundContent(OpCarTouristGuideGroundContentDto dto)
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
             try
             {
                 BeginTran();
                 List<Grp_CarTouristGuideGroundReservationsContent> carTouristList = new List<Grp_CarTouristGuideGroundReservationsContent>();
-                foreach (var item in dto.OPContenList)
+                foreach (var item in dto.OPContentList)
                 {
                     Grp_CarTouristGuideGroundReservationsContent s = new Grp_CarTouristGuideGroundReservationsContent();
                     s.Id= item.Id;
@@ -320,7 +356,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     s.Price=item.Price;
                     s.PriceContent = item.priceContent;
                     s.Currency = dto.Currency;
-                    s.Remark=item.Remark;
+                    //s.Remark=item.Remark;
                     s.CreateUserId = dto.CreateUserId;
                     carTouristList.Add(s);
                 }

+ 2 - 1
OASystem/OASystem.Infrastructure/Repositories/Groups/DecreasePaymentsRepository.cs

@@ -88,6 +88,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 }
                 string sql = string.Format(@"select * from Grp_DelegationInfo where Id in({0}) and IsDel={1}", DiId, 0);
                 List<Grp_DelegationInfo> grp_Delegations = _sqlSugar.SqlQueryable<Grp_DelegationInfo>(sql).ToList();
+                
                 if (grp_Delegations.Count == 0)
                 {
                     return result = new Result() { Code = -1, Msg = "查询失败!" };
@@ -166,7 +167,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                             C.OtherSideName = "";
                             C.Remark = "";
                             C.CreateUserId = grp_Decrease.CreateUserId;
-                            C.MFOperator = "";
+                            C.MFOperator = 0;
                             C.MFOperatorDate = "";
                             C.IsAuditDM = 0;
                             C.AuditDMOperate = 0;

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

@@ -1,4 +1,5 @@
 using Newtonsoft.Json;
+using NPOI.OpenXmlFormats.Wordprocessing;
 using OASystem.Domain;
 using OASystem.Domain.Dtos;
 using OASystem.Domain.Dtos.Financial;
@@ -216,43 +217,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
         }
 
-        /// <summary>
-        /// 获取接团信息 Page List
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <returns></returns>
-        public async Task<Result> PostGroupPageList(GroupPageListDto dto)
-        {
-            Result result = new Result() { Code = -2, Msg = "未知错误" };
-
-            if (dto.PortType == 1 || dto.PortType == 2) // web/Android
-            {
-                string sql = string.Format(@"Select gdi.Id,SalesQuoteNo,TourCode,ssd.Id TeamTypeId, ssd.Name TeamType,ssd1.Id TeamLevId,ssd1.Name TeamLev,TeamName,ClientName,ClientUnit,VisitDate,VisitDays,VisitPNumber,su.CnName JietuanOperator,IsSure
-                  From  Grp_DelegationInfo gdi
-                  Inner Join Sys_SetData ssd On gdi.TeamDid = ssd.Id 
-                  Inner Join Sys_SetData ssd1 On gdi.TeamLevSId = ssd1.Id
-                  Left Join Sys_Users su On gdi.JietuanOperator = su.Id
-                  Where gdi.IsDel = 0 
-                  Order By gdi.CreateTime Desc");
-
-                var _DelegationList = await _sqlSugar.SqlQueryable<DelegationListView>(sql).ToListAsync();
-                if (_DelegationList.Count > 0)
-                {
-                    result.Code = 0;
-                    result.Msg = "成功!";
-                    result.Data = _DelegationList;
-                }
-                else
-                {
-                    result.Msg = "暂无该团组信息";
-                }
-            }
-
-
-            return result;
-
-        }
-
         /// <summary>
         /// 获取接团信息Info
         /// </summary>

+ 572 - 0
OASystem/OASystem.Infrastructure/Repositories/Groups/HotelPriceRepository.cs

@@ -0,0 +1,572 @@
+using AutoMapper;
+using OASystem.Domain;
+using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Entities.Financial;
+using OASystem.Domain.Entities.Groups;
+using OASystem.Domain.ViewModels.Groups;
+using OASystem.Infrastructure.Tools;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Infrastructure.Repositories.Groups
+{
+    public class HotelPriceRepository : BaseRepository<Grp_HotelReservations, Grp_HotelReservations>
+    {
+        private readonly IMapper _mapper;
+        public HotelPriceRepository(SqlSugarClient sqlSugar, IMapper mapper) :
+            base(sqlSugar)
+        {
+            this._mapper = mapper;
+        }
+        /// <summary>
+        /// 付款金额计算
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> HotelConversionAmounts(HotelReservationsCNYDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+            try
+            {
+                HotelReservationsView reservationsView=new HotelReservationsView();
+                if ((dto.CardPriceCurrency == dto.GovernmentRentCurrency || dto.GovernmentRent == 0)
+                 && (dto.CardPriceCurrency == dto.CityTaxCurrency || dto.CityTax== 0))
+                {
+                    reservationsView.CurrencyId = dto.CardPriceCurrency;
+                    reservationsView.Price=Convert.ToDecimal((dto.CardPrice+dto.GovernmentRent+dto.CityTax).ToString("F2"));
+                    reservationsView.CurrencyName = _sqlSugar.Queryable<Sys_SetData>().First(a => a.Id == dto.CardPriceCurrency).Name;
+                    return result = new Result() { Code = 0, Msg = "查询成功", Data = reservationsView };
+                }
+                else
+                {
+                    Grp_TeamRate _TeamRate = _sqlSugar.Queryable<Grp_TeamRate>().First(a => a.DiId == dto.DiId && a.IsDel == 0 && a.CTable == 76);
+                    List<CurrencyInfo> currencyInfos = new List<CurrencyInfo>();
+                    decimal CardPrice = 0.00M;
+                    decimal GovernmentRent = 0.00M;
+                    decimal CityTax = 0.00M;
+                    if (_TeamRate != null)
+                    {
+                        Sys_SetData _SetData = _sqlSugar.Queryable<Sys_SetData>().First(a => a.IsDel == 0 && a.Id == dto.CardPriceCurrency);
+                        if (_SetData != null)
+                        {
+                            if (_SetData.Name=="CNY")
+                            {
+                                CardPrice = dto.CardPrice;
+                            }
+                            else
+                            {
+                                currencyInfos = CommonFun.GetCurrencyChinaToList(_TeamRate.Remark);
+                                CurrencyInfo CurrencyRate = currencyInfos.FirstOrDefault(a => a.CurrencyCode == _SetData.Name);
+                                if (CurrencyRate != null) CardPrice = dto.CardPrice * Convert.ToDecimal(CurrencyRate.Rate);
+                                else return result = new Result() { Code = -1, Msg = "暂未设置团组汇率,请前往设置!", Data = reservationsView };
+                            }
+                        }
+                        else return result = new Result() { Code = -1, Msg = "暂未设置团组汇率,请前往设置!", Data = reservationsView };
+
+                        Sys_SetData _SetData1 = _sqlSugar.Queryable<Sys_SetData>().First(a => a.IsDel == 0 && a.Id == dto.GovernmentRentCurrency);
+                        if (_SetData1 != null)
+                        {
+                            if (_SetData1.Name == "CNY")
+                            {
+                                GovernmentRent = dto.GovernmentRent;
+                            }
+                            else {
+                                currencyInfos = CommonFun.GetCurrencyChinaToList(_TeamRate.Remark);
+                                CurrencyInfo CurrencyRate = currencyInfos.FirstOrDefault(a => a.CurrencyCode == _SetData1.Name);
+                                if (CurrencyRate != null) GovernmentRent = dto.GovernmentRent * Convert.ToDecimal(CurrencyRate.Rate);
+                                else return result = new Result() { Code = -1, Msg = "暂未设置团组汇率,请前往设置!", Data = reservationsView };
+                            }
+                                
+                        }
+                        else return result = new Result() { Code = -1, Msg = "暂未设置团组汇率,请前往设置!", Data = reservationsView };
+
+                        Sys_SetData _SetData2 = _sqlSugar.Queryable<Sys_SetData>().First(a => a.IsDel == 0 && a.Id == dto.CityTaxCurrency);
+                        if (_SetData2 != null)
+                        {
+                            if (_SetData2.Name == "CNY")
+                            {
+                                CityTax = dto.CityTax;
+                            }
+                            else
+                            {
+                                currencyInfos = CommonFun.GetCurrencyChinaToList(_TeamRate.Remark);
+                                CurrencyInfo CurrencyRate = currencyInfos.FirstOrDefault(a => a.CurrencyCode == _SetData2.Name);
+                                if (CurrencyRate != null) CityTax = dto.CityTax * Convert.ToDecimal(CurrencyRate.Rate);
+                                else return result = new Result() { Code = -1, Msg = "暂未设置团组汇率,请前往设置!", Data = reservationsView };
+                            }
+                        }
+                        else return result = new Result() { Code = -1, Msg = "暂未设置团组汇率,请前往设置!", Data = reservationsView };
+                       
+                        reservationsView.CurrencyId = 836;
+                        reservationsView.Price = Convert.ToDecimal((CardPrice + GovernmentRent + CityTax).ToString("F2"));
+                        reservationsView.CurrencyName ="CNY";
+
+                        return result = new Result() { Code = 0, Msg = "查询成功", Data = reservationsView };
+                    }
+                    else
+                    {
+                       return result = new Result() { Code = -1, Msg = "暂未设置团组汇率,请前往设置!", Data= reservationsView };
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                return result = new Result() { Code = -2, Msg = "未知错误" };
+                throw;
+            }
+        }
+
+       
+        /// <summary>
+        /// 根据团组id查询酒店数据
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> HotelReservationsByDiId(HotelReservationsByDiIdDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+            try
+            {
+                string UserId = "";
+                List<Grp_GroupsTaskAssignment> gtaUIdList = _sqlSugar.Queryable<Grp_GroupsTaskAssignment>().Where(a => a.DIId == dto.DiId && a.IsDel == 0 && a.CTId == 76).ToList();
+                foreach (Grp_GroupsTaskAssignment gta in gtaUIdList)
+                    UserId += gta.UId + ",";
+
+                if (!string.IsNullOrWhiteSpace(UserId))
+                {
+                    UserId = UserId.Substring(0, UserId.Length - 1);
+                }
+                else
+                {
+                    UserId = "0";
+                }
+                string sqlWhere = string.Format(@"Where h.DiId={0} and h.IsDel={1} And h.CreateUserId in ({2})", dto.DiId, 0,UserId);
+                
+                int startIndex = (dto.PageIndex - 1) * dto.PageSize + 1;
+                int endIndex = startIndex + dto.PageSize - 1;
+                if (dto.PortType == 1)
+                {
+                    string sql = string.Format(@"select h.Id,s1.Name as GuestType,h.ReservationsNo,h.HotelName,h.CheckInDate,
+                                                h.CheckOutDate,c.PayMoney,s.Name as PaymentCurrency,u.CnName as CreateUserName,c.IsAuditGM,h.CreateTime,h.Attachment
+                                                From Grp_HotelReservations h 
+                                                Join Grp_CreditCardPayment c on h.Id=c.CId and c.CTable=76 and c.isdel=0
+                                                left Join Sys_SetData s on  c.PaymentCurrency=s.Id  
+                                                left Join Sys_SetData s1 on h.GTId=s1.Id 
+                                                left Join Sys_Users u on u.Id=h.CreateUserId {0} order by c.IsAuditGM,c.PayPercentage desc", sqlWhere);
+                    List<HotelReservationsByDiIdView> hotelDataList = _sqlSugar.SqlQueryable<HotelReservationsByDiIdView>(sql).ToList();
+                    foreach (var item in hotelDataList)
+                    {
+                        if (item.IsAuditGM == 0) item.IsAuditGMStr = "未审核";
+                        else if (item.IsAuditGM == 1) item.IsAuditGMStr = "已通过";
+                        else if (item.IsAuditGM == 2) item.IsAuditGMStr = "未通过";
+                        else if (item.IsAuditGM == 3) item.IsAuditGMStr = "自动审核";
+                        if (!string.IsNullOrWhiteSpace(item.CheckInDate))
+                        {
+                            item.CheckInDate = DateTime.Parse(item.CheckInDate).ToString("yyyy-MM-dd");
+                        }
+                        if (!string.IsNullOrWhiteSpace(item.CheckOutDate))
+                        {
+                            item.CheckOutDate = DateTime.Parse(item.CheckOutDate).ToString("yyyy-MM-dd");
+                        }
+
+                        
+
+                    }
+                    return result = new Result() { Code = 0, Msg = "查询成功!", Data = hotelDataList };
+                }
+                else if (dto.PortType == 2 || dto.PortType == 3)
+                {
+                    string sql = string.Format(@"Select * From (	
+                                                Select row_number() over (order by c.IsAuditGM,c.PayPercentage desc) as RowNumber,h.Id,s1.Name as GuestType,h.ReservationsNo,h.HotelName,h.CheckInDate,
+                                                h.CheckOutDate,c.PayMoney,s.Name as PaymentCurrency,u.CnName as CreateUserName,c.IsAuditGM,h.CreateTime,h.Attachment
+                                                 From Grp_HotelReservations h 
+                                                Join Grp_CreditCardPayment c on h.Id=c.CId and c.CTable=76 and c.isdel=0
+                                                left Join Sys_SetData s on  c.PaymentCurrency=s.Id 
+                                                left Join Sys_SetData s1 on h.GTId=s1.Id 
+                                                left Join Sys_Users u on u.Id=h.CreateUserId   {0}
+                                                ) temp Where RowNumber Between {1} and {2}", sqlWhere, startIndex, endIndex);
+
+                    List<HotelReservationsByDiIdView> hotelDataList = _sqlSugar.SqlQueryable<HotelReservationsByDiIdView>(sql).ToList();
+                    foreach (var item in hotelDataList)
+                    {
+                        if (item.IsAuditGM == 0) item.IsAuditGMStr = "未审核";
+                        else if (item.IsAuditGM == 1) item.IsAuditGMStr = "已通过";
+                        else if (item.IsAuditGM == 2) item.IsAuditGMStr = "未通过";
+                        else if (item.IsAuditGM == 3) item.IsAuditGMStr = "自动审核";
+                        if (!string.IsNullOrWhiteSpace(item.CheckInDate))
+                        {
+                            item.CheckInDate = DateTime.Parse(item.CheckInDate).ToString("yyyy-MM-dd");
+                        }
+                        if (!string.IsNullOrWhiteSpace(item.CheckOutDate))
+                        {
+                            item.CheckOutDate = DateTime.Parse(item.CheckOutDate).ToString("yyyy-MM-dd");
+                        }
+                    }
+                    string CountSql = string.Format(@"Select COUNT(1) as Count From (	
+                                                        Select h.Id,s1.Name as GuestType,h.ReservationsNo,h.HotelName,h.CheckInDate,
+                                                        h.CheckOutDate,c.PayMoney,s.Name as PaymentCurrency,u.CnName as CreateUserName,c.IsAuditGM,h.CreateTime,h.Attachment
+                                                        From Grp_HotelReservations h 
+                                                        Join Grp_CreditCardPayment c on h.Id=c.CId and c.CTable=76 and c.isdel=0
+                                                        left Join Sys_SetData s on  c.PaymentCurrency=s.Id 
+                                                        left Join Sys_SetData s1 on h.GTId=s1.Id 
+                                                        left Join Sys_Users u on u.Id=h.CreateUserId  {0}
+                                                        ) temp", sqlWhere);
+                    DataCount dataCount = _sqlSugar.SqlQueryable<DataCount>(CountSql).First();
+                   
+                    int count = dataCount.Count;
+                    float totalPage = (float)count / dto.PageSize;//总页数
+                    if (totalPage == 0) totalPage = 1;
+                    else totalPage = (int)Math.Ceiling((double)totalPage);
+
+                    ListViewBase<HotelReservationsByDiIdView> rst = new ListViewBase<HotelReservationsByDiIdView>();
+                    rst.DataList = hotelDataList;
+                    rst.DataCount = count;
+                    rst.CurrPageIndex = dto.PageIndex;
+                    rst.CurrPageSize = dto.PageSize;
+                    return result = new Result() { Code = 0, Msg = "查询成功!", Data = rst };
+                   
+                }
+                else
+                {
+                    return result = new Result() { Code = -2, Msg = "请传入PortType参数,1 Web 2 Android 3 IOS" };
+                }
+            }
+            catch (Exception ex)
+            {
+                return result = new Result() { Code = -2, Msg = "未知错误" };
+                throw;
+            }
+        }
+        /// <summary>
+        /// 根据酒店费用Id查询详细数据
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> HotelReservationsById(HotelReservationsByIdDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+            try
+            {
+                Grp_HotelReservations hotelReservationsById = _sqlSugar.Queryable<Grp_HotelReservations>().First(a => a.IsDel == 0 && a.Id == dto.Id);
+                HotelReservationsByIdView _hotelReservations = _mapper.Map<HotelReservationsByIdView>(hotelReservationsById);
+                if (_hotelReservations!=null)
+                {
+                    Sys_SetData GTId = _sqlSugar.Queryable<Sys_SetData>().First(a => a.IsDel == 0 && a.Id == hotelReservationsById.GTId);
+                    if (GTId != null) _hotelReservations.GtIdStr = GTId.Name;
+                    if (!string.IsNullOrWhiteSpace(_hotelReservations.CheckInDate))
+                    {
+                        _hotelReservations.CheckInDate = Convert.ToDateTime(hotelReservationsById.CheckInDate).ToString("yyyy-MM-dd");
+                    }
+                    if (!string.IsNullOrWhiteSpace(_hotelReservations.CheckOutDate))
+                    {
+                        _hotelReservations.CheckOutDate = Convert.ToDateTime(hotelReservationsById.CheckOutDate).ToString("yyyy-MM-dd");
+                    }
+                    
+
+                    Sys_SetData GovernmentRentCurrencyStr = _sqlSugar.Queryable<Sys_SetData>().First(a => a.IsDel == 0 && a.Id == hotelReservationsById.GovernmentRentCurrency);
+                    if (GovernmentRentCurrencyStr != null) _hotelReservations.GovernmentRentCurrencyStr = GovernmentRentCurrencyStr.Name;
+
+                    Sys_SetData CityTaxCurrencyStr = _sqlSugar.Queryable<Sys_SetData>().First(a => a.IsDel == 0 && a.Id == hotelReservationsById.CityTaxCurrency);
+                    if (CityTaxCurrencyStr != null) _hotelReservations.CityTaxCurrencyStr = CityTaxCurrencyStr.Name;
+
+                    if (_hotelReservations.CheckType == "") _hotelReservations.CheckTypeStr = "客人房";
+                    else if (_hotelReservations.CheckType == "D") _hotelReservations.CheckTypeStr = "司机房";
+                    else if (_hotelReservations.CheckType == "G") _hotelReservations.CheckTypeStr = "导游房";
+                    else if (_hotelReservations.CheckType == "D&G") _hotelReservations.CheckTypeStr = "司机导游房";
+
+
+
+                }
+               
+                string Sql = string.Format(@"select c.PayDId, s.Name asPayDIdStr,c.ConsumptionPatterns,c.ConsumptionDate,c.CTDId,
+                                            s1.Name as CTDIdStr,c.BankNo,c.CardholderName,c.PayMoney,c.PaymentCurrency,s2.Name
+                                            as PaymentCurrencyStr,c.DayRate,c.CompanyBankNo,c.OtherBankName,c.OtherSideNo,c.OtherSideName,
+                                            c.IsAuditGM,c.Payee,c.RMBPrice,c.OrbitalPrivateTransfer,c.Remark from Grp_CreditCardPayment c
+                                            left join Sys_SetData s on c.PayDId=s.Id
+                                            left join Sys_SetData s1 on c.CTDId=s1.Id
+                                            left join Sys_SetData s2 on c.PaymentCurrency=s2.Id
+                                            where c.CId ={0} and c.IsDel = 0 and c.CTable = 76", dto.Id);
+                Grp_CreditCardView _CreditCardPayment = _sqlSugar.SqlQueryable<Grp_CreditCardView>(Sql).First();
+                if (_CreditCardPayment!=null)
+                {
+                    if(!string.IsNullOrWhiteSpace(_CreditCardPayment.ConsumptionDate)) _CreditCardPayment.ConsumptionDate=Convert.ToDateTime(_CreditCardPayment.ConsumptionDate).ToString("yyyy-MM-dd");
+                }
+                var data = new
+                {
+                    hotelReservations = _hotelReservations,
+                    creditCardPayment = _CreditCardPayment,
+                };
+                return result = new Result() { Code = 0, Msg = "查询成功",Data= data };
+            }
+            catch (Exception ex)
+            {
+                return result = new Result() { Code = -2, Msg = "未知错误" };
+                throw;
+            }
+        }
+        /// <summary>
+        /// 酒店页面下拉框等初始化
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> HotelReservationsInitialize(HotelReservationsDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+            try
+            {
+                List<Grp_GroupsTaskAssignment> grp_GroupsTaskAssignment = Query<Grp_GroupsTaskAssignment>(a => a.IsDel == 0 && a.UId == dto.UserId && a.CTId == 76).ToList();
+
+                string DiId = "0";
+                foreach (var item in grp_GroupsTaskAssignment)
+                {
+                    DiId += item.DIId + ",";
+                }
+                if (DiId != "0")
+                {
+                    DiId = DiId.Substring(0, DiId.Length - 1);
+                }
+                string sql = string.Format(@"select * from Grp_DelegationInfo where Id in({0}) and IsDel={1}", DiId, 0);
+                //团组下拉框
+                List<Grp_DelegationInfo> Delegations = _sqlSugar.SqlQueryable<Grp_DelegationInfo>(sql).ToList();
+                List<ShareGroupInfoIIView> grp_Delegations = _mapper.Map<List<ShareGroupInfoIIView>>(Delegations);
+                for (int i = 0;i< grp_Delegations.Count; i++)
+                {
+                    grp_Delegations[i].VisitDate = Delegations[i].VisitStartDate.ToString("yyyy-MM-dd")+"至"+ Delegations[i].VisitEndDate.ToString("yyyy-MM-dd");
+                }
+                //客人类型
+                List<Sys_SetData> GuestType = _sqlSugar.Queryable<Sys_SetData>().Where(a=>a.IsDel==0 && a.STid==11).ToList();
+                List<SetDataInfoView> _GuestType = _mapper.Map<List<SetDataInfoView>>(GuestType);
+
+                //支付方式
+                List<Sys_SetData> Payment = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 14 && a.IsDel == 0).ToList();
+                List<SetDataInfoView> _Payment = _mapper.Map<List<SetDataInfoView>>(Payment);
+
+                //币种
+                List<Sys_SetData> CurrencyList = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 66 && a.IsDel == 0).ToList();
+                List<SetDataInfoView> _CurrencyList = _mapper.Map<List<SetDataInfoView>>(CurrencyList);
+
+                //卡类型
+                List<Sys_SetData> BankCard = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 15 && a.IsDel == 0).ToList();
+                List<SetDataInfoView> _BankCard = _mapper.Map<List<SetDataInfoView>>(BankCard);
+
+                //预订网站
+                List<Sys_SetData> BookingWebsite = _sqlSugar.Queryable<Sys_SetData>().Where(a => a.STid == 12 && a.IsDel == 0).ToList();
+                List<SetDataInfoView> _BookingWebsite = _mapper.Map<List<SetDataInfoView>>(BookingWebsite);
+               
+                if (dto.PortType==2 || dto.PortType==3)
+                {
+                    var data = new
+                    {
+                        GuestType = _GuestType,
+                        Payment = _Payment,
+                        CurrencyList = _CurrencyList,
+                        BankCard = _BankCard,
+                        BookingWebsite = _BookingWebsite,
+                    };
+                    return result = new Result() { Code = 0, Msg = "查询成功", Data = data };
+                }
+                else
+                {
+                    var data = new
+                    {
+                        Delegations = grp_Delegations,
+                        GuestType = _GuestType,
+                        Payment = _Payment,
+                        CurrencyList = _CurrencyList,
+                        BankCard = _BankCard,
+                        BookingWebsite = _BookingWebsite,
+                    };
+                    return result = new Result() { Code = 0, Msg = "查询成功", Data = data };
+                }
+                
+                
+            }
+            catch (Exception ex)
+            {
+               return result = new Result() { Code = -2, Msg = "未知错误" };
+                throw;
+            }
+        }
+        /// <summary>
+        /// 酒店操作
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        public async Task<Result> OpHotelReservations(OpHotelReservationsData dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+            try
+            {
+                BeginTran();
+                int id = dto.Id;
+                Grp_HotelReservations hotelPrice = _mapper.Map<Grp_HotelReservations>(dto);
+                hotelPrice.IsCardPrice = hotelPrice.CardPrice!=0 ? 1:0;
+                hotelPrice.CboOne=hotelPrice.SingleRoomCount !=0 ? 1 : 0;
+                hotelPrice.CboTwo = hotelPrice.DoubleRoomCount != 0 ? 1 : 0;
+                hotelPrice.CboThree = hotelPrice.SuiteRoomCount != 0 ? 1 : 0;
+                hotelPrice.CboFour = hotelPrice.SuiteRoomCount != 0 ? 1 : 0;
+
+                Grp_CreditCardPayment c = _mapper.Map<Grp_CreditCardPayment>(dto);
+                c.Remark = dto.CRemark;
+                c.PayPercentage = 100;
+                c.CTable = 76;
+                c.CId = id;
+                c.IsAuditGM = 0;
+                if (c.PayDId == 72)
+                {
+                    c.IsPay = 1;
+                }
+                c.RMBPrice = c.PayMoney;
+                c.DayRate = 1;
+                Grp_TeamRate _TeamRate = _sqlSugar.Queryable<Grp_TeamRate>().First(a => a.DiId == dto.DiId && a.IsDel == 0 && a.CTable == 76);
+                List<CurrencyInfo> currencyInfos = new List<CurrencyInfo>();
+                if (_TeamRate != null)
+                {
+                    Sys_SetData _SetData = _sqlSugar.Queryable<Sys_SetData>().First(a => a.IsDel == 0 && a.Id == c.PaymentCurrency);
+                    if (_SetData != null)
+                    {
+                        currencyInfos = CommonFun.GetCurrencyChinaToList(_TeamRate.Remark);
+                        CurrencyInfo CurrencyRate = currencyInfos.FirstOrDefault(a => a.CurrencyCode == _SetData.Name);
+                        if (CurrencyRate != null)
+                        {
+                            c.RMBPrice = c.PayMoney * Convert.ToDecimal(CurrencyRate.Rate);
+                            c.DayRate = CurrencyRate.Rate;
+                        }
+                    }
+                }
+
+                if (dto.Status == 1)//添加
+                {
+                    Grp_HotelReservations grp_Hotel = _sqlSugar.Queryable<Grp_HotelReservations>().First(a => a.IsDel == 0 && a.HotelName == dto.HotelName && a.GuestName == dto.GuestName &&
+                    a.CheckInDate == dto.CheckInDate && a.CheckOutDate==dto.CheckOutDate && a.City==dto.City);
+                    if (grp_Hotel != null)
+                    {
+                        return result = new Result() { Code = -1, Msg = "该笔费用已存在,请勿重复添加!" };
+                    }
+                    else
+                    {
+                        id = await AddAsyncReturnId(hotelPrice);
+                        if (id != 0)
+                        {
+                            c.CId = id;
+                            int cId = await _sqlSugar.Insertable(c).ExecuteReturnIdentityAsync();
+                            if (cId != 0)
+                            {
+                                result = new Result() { Code = 0, Msg = "添加成功!" };
+
+                            }
+                            else
+                            {
+                                RollbackTran();
+                                result = new Result() { Code = -1, Msg = "添加失败!" };
+                            }
+                        }
+                        else
+                        {
+                            RollbackTran();
+                            result = new Result() { Code = -1, Msg = "添加失败,请稍后重试!" };
+                        }
+                    }
+
+                }
+                else if (dto.Status == 2)//修改
+                {
+                    bool res = await UpdateAsync(a => a.Id == dto.Id, a => new Grp_HotelReservations
+                    {
+                        GTId=hotelPrice.GTId,
+                        CheckNumber=hotelPrice.CheckNumber,
+                        ReservationsWebsite=hotelPrice.ReservationsWebsite,
+                        ReservationsNo=hotelPrice.ReservationsNo,
+                        DetermineNo=hotelPrice.DetermineNo,
+                        City=hotelPrice.City,
+                        HotelName=hotelPrice.HotelName,
+                        HotelAddress=hotelPrice.HotelAddress,
+                        HotelTel=hotelPrice.HotelTel,
+                        GuestName=hotelPrice.GuestName,
+                        CheckInDate=hotelPrice.CheckInDate,
+                        BudgetCurrency=hotelPrice.BudgetCurrency,
+                        CheckOutDate=hotelPrice.CheckOutDate,
+                        SingleRoomCount=hotelPrice.SingleRoomCount,
+                        SingleRoomPrice=hotelPrice.SingleRoomPrice,
+                        DoubleRoomCount=hotelPrice.DoubleRoomCount,
+                        DoubleRoomPrice=hotelPrice.DoubleRoomPrice,
+                        SuiteRoomCount=hotelPrice.SuiteRoomCount,
+                        SuiteRoomPrice=hotelPrice.SuiteRoomPrice,
+                        OtherRoomCount=hotelPrice.OtherRoomCount,
+                        OtherRoomPrice=hotelPrice.OtherRoomPrice,
+                        RoomExplanation=hotelPrice.RoomExplanation,
+                        Attachment=hotelPrice.Attachment,
+                        CardPrice=hotelPrice.CardPrice,
+                        IsCardPrice=hotelPrice.IsCardPrice,
+                        PredictSingleRoom=hotelPrice.PredictSingleRoom,
+                        PredictDoubleRoom=hotelPrice.PredictDoubleRoom,
+                        PredictSuiteRoom=hotelPrice.PredictSuiteRoom,
+                        PredictOtherRoom=hotelPrice.PredictOtherRoom,
+                        GovernmentRent=hotelPrice.GovernmentRent,
+                        GovernmentRentCurrency=hotelPrice.GovernmentRentCurrency,
+                        CityTax=hotelPrice.CityTax,
+                        CityTaxCurrency=hotelPrice.CityTaxCurrency,
+                        CheckType=hotelPrice.CheckType,
+                        CboOne=hotelPrice.SingleRoomCount,
+                        CboTwo=hotelPrice.DoubleRoomCount,
+                        CboThree=hotelPrice.SuiteRoomCount,
+                        CboFour=hotelPrice.SuiteRoomCount,
+                        CreateUserId=hotelPrice.CreateUserId,
+                        Remark=hotelPrice.Remark
+                    });
+                    if (res)
+                    {
+                        int CTable = await _sqlSugar.Updateable<Grp_CreditCardPayment>().Where(a => a.CId == hotelPrice.Id && a.CTable == 76).SetColumns(a => new Grp_CreditCardPayment
+                        {
+                            PayDId = dto.PayDId,
+                            PayMoney = c.PayMoney,
+                            PaymentCurrency = c.PaymentCurrency,
+                            Payee = c.Payee,
+                            OrbitalPrivateTransfer = c.OrbitalPrivateTransfer,
+                            DayRate = c.DayRate,
+                            RMBPrice = c.RMBPrice,
+                            ConsumptionPatterns = c.ConsumptionPatterns,
+                            ConsumptionDate = c.ConsumptionDate,
+                            CTDId = c.CTDId,
+                            CompanyBankNo = c.CompanyBankNo,
+                            OtherBankName = c.OtherBankName,
+                            OtherSideNo = c.OtherSideNo,
+                            OtherSideName = c.OtherSideName,
+                            BankNo = c.BankNo,
+                            CardholderName = c.CardholderName,
+                            Remark = c.Remark,
+
+                        }).ExecuteCommandAsync();
+                        if (CTable==0)
+                        {
+                            result = new Result() { Code = -1, Msg = "修改失败!" };
+                            RollbackTran();
+                        }
+                        else
+                        {
+                            result = new Result() { Code = 0, Msg = "修改成功!" };
+                        }
+                        
+                    }
+                    else
+                    {
+                        RollbackTran();
+                        result = new Result() { Code = -1, Msg = "修改失败,请稍后重试!" };
+                    }
+                }
+                CommitTran();
+            }
+            catch (Exception ex)
+            {
+                return result = new Result() { Code = -2, Msg = "未知错误" };
+                throw;
+            }
+            return result;
+        }
+    }
+}

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

@@ -279,7 +279,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                             C.OtherSideName = "";
                             C.Remark = "";
                             C.CreateUserId = dto.CreateUserId;
-                            C.MFOperator = "";
+                            C.MFOperator = 0;
                             C.MFOperatorDate = "";
                             C.IsAuditDM = 0;
                             C.AuditDMOperate = 0;

+ 61 - 2
OASystem/OASystem.Infrastructure/Repositories/Groups/TeamRateRepository.cs

@@ -351,8 +351,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
             }
 
-
-
             result.Code = 0;
             result.Msg = "查询成功!";
             result.Data = _data;
@@ -429,5 +427,66 @@ namespace OASystem.Infrastructure.Repositories.Groups
             return result;
 
         }
+
+        /// <summary>
+        /// 团组汇率 Rep
+        /// 根据团组Id 查询汇率
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<List<TeamRateModelView>> PostGroupRateInfoByDiId(int diId)
+        {
+
+            List<TeamRateModelView> teamRateModels = new List<TeamRateModelView>();
+            string teamRateInfoSql = string.Format(@"Select sd.Name,tr.* From Grp_TeamRate tr 
+                                                     Left Join Sys_SetData  sd On sd.IsDel=0 And sd.STid=16  And tr.CTable = sd.Id 
+                                                     Where tr.DiId = {0} And tr.IsDel = 0", diId);
+
+            var teamRateInfo = await _sqlSugar.SqlQueryable<TeamRateInfoView>(teamRateInfoSql).ToListAsync();
+
+            #region 团组汇率
+
+
+            foreach (TeamRateInfoView item in teamRateInfo)
+            {
+                TeamRateModelView teamRateModelInfo = new TeamRateModelView();
+
+                teamRateModelInfo.Id = item.Id;
+                teamRateModelInfo.CTableId = item.CTable;
+                teamRateModelInfo.CTableName = item.Name;
+                List<TeamRateDescView> teamRateDescViews = new List<TeamRateDescView>();
+
+                #region 拆分remark里的汇率
+
+                if (item.Remark.Contains("|"))
+                {
+                    string[] currencyArr = item.Remark.Split("|");
+                    foreach (string currency in currencyArr)
+                    {
+                        string[] currency1 = currency.Split(":");
+                        string[] currency2 = currency1[0].Split("(");
+
+                        TeamRateDescView rateDescView = new TeamRateDescView()
+                        {
+                            CurrencyCode = currency2[1].Replace(")", "").TrimEnd(),
+                            CurrencyName = currency2[0],
+                            Rate = decimal.Parse(currency1[1]),
+                        };
+                        teamRateDescViews.Add(rateDescView);
+                    }
+                }
+
+                #endregion
+
+                teamRateModelInfo.TeamRates = teamRateDescViews;
+                teamRateModels.Add(teamRateModelInfo);
+            }
+
+            #endregion
+
+
+            return teamRateModels;
+
+        }
     }
 }

+ 17 - 4
OASystem/OASystem.Infrastructure/Repositories/Groups/VisaPriceRepository.cs

@@ -79,10 +79,17 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 int endIndex = startIndex + dto.PageSize - 1;
                 if (dto.PortType==1)
                 {
-                    string sql = string.Format(@"select *,(select IsAuditGM from Grp_CreditCardPayment where CTable=80 and CId=v.Id) IsAuditGM,
+                    string sql = string.Format(@"select *,(select IsAuditGM from Grp_CreditCardPayment where CTable=80 and CId=v.Id and IsDel=0) IsAuditGM,
                                                 (select Name from Sys_SetData where isdel=0 and v.VisaCurrency=Id) VisaCurrencyStr from
                                                 Grp_VisaInfo v {0} order by CreateTime desc",sqlWhere);
                     List<VisaInfoView> infoViews = _sqlSugar.SqlQueryable<VisaInfoView>(sql).ToList();
+                    foreach (VisaInfoView view in infoViews)
+                    {
+                        if (view.IsAuditGM == 0) view.IsAuditGMStr = "未审核";
+                        else if (view.IsAuditGM == 1) view.IsAuditGMStr = "已通过";
+                        else if (view.IsAuditGM == 2) view.IsAuditGMStr = "未通过";
+                        else if (view.IsAuditGM == 3) view.IsAuditGMStr = "自动审核";
+                    }
                     return result = new Result() { Code = 0, Msg = "查询成功!", Data = infoViews };
                 }
                 else if(dto.PortType==2 || dto.PortType==3)
@@ -90,16 +97,22 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     string sql = string.Format(@"Select * From (	
                                             Select row_number() over (order by v.Id Desc) as RowNumber,v.*,c.IsAuditGM,s.Name as VisaCurrencyStr
                                             From Grp_VisaInfo v
-                                            left Join Grp_CreditCardPayment c On v.Id = c.CId and CTable=80
+                                            left Join Grp_CreditCardPayment c On v.Id = c.CId and CTable=80 and c.isdel=0
                                             Left Join Sys_SetData s On v.VisaCurrency = s.Id {0}
                                             ) temp Where RowNumber Between {1} and {2}", sqlWhere, startIndex, endIndex);
 
                     List<VisaInfoView> infoViews = _sqlSugar.SqlQueryable<VisaInfoView>(sql).ToList();
-
+                    foreach (VisaInfoView view in infoViews)
+                    {
+                        if (view.IsAuditGM == 0) view.IsAuditGMStr = "未审核";
+                        else if (view.IsAuditGM == 1) view.IsAuditGMStr = "已通过";
+                        else if (view.IsAuditGM == 2) view.IsAuditGMStr = "未通过";
+                        else if (view.IsAuditGM == 3) view.IsAuditGMStr = "自动审核";
+                    }
                     string CountSql = string.Format(@"Select COUNT(1) as Count From (	
                                             Select v.*,c.IsAuditGM,s.Name as VisaCurrencyStr
                                             From Grp_VisaInfo v
-                                            left Join Grp_CreditCardPayment c On v.Id = c.CId and CTable=80
+                                            left Join Grp_CreditCardPayment c On v.Id = c.CId and CTable=80  and c.isdel=0
                                             Left Join Sys_SetData s On v.VisaCurrency = s.Id {0}
                                             ) temp", sqlWhere);
                     DataCount dataCount = _sqlSugar.SqlQueryable<DataCount>(CountSql).First();

+ 1 - 1
OASystem/OASystem.Infrastructure/Repositories/PersonnelModule/WageSheetRepository.cs

@@ -50,7 +50,7 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
             //                              Where pm_ws.IsDel = 0 And pm_ws.YearMonth =  '{0}'", yearMonth);
 
             //公司部门
-            string sql = string.Format(@"Select row_number() over(order by pm_ws.Id) as Row_Number,
+            string sql = string.Format(@"Select row_number() over(order by pm_ws.UserId) as Row_Number,
                                          	sc.Id as CompanyId,sc.CompanyName,sd.Id as DepId,sd.DepName, 
                                          	sys_u1.CnName Name,sys_u2.CnName LastUpdateUserName,pm_ws.* 
                                          From Pm_WageSheet pm_ws

+ 1 - 1
OASystem/OASystem.Infrastructure/Repositories/Resource/HotelDataRepository.cs

@@ -1,5 +1,6 @@
 using AutoMapper;
 using OASystem.Domain;
+using OASystem.Domain.Dtos.Groups;
 using OASystem.Domain.Dtos.Resource;
 using OASystem.Domain.Entities.Resource;
 using OASystem.Domain.ViewModels.Resource;
@@ -18,7 +19,6 @@ namespace OASystem.Infrastructure.Repositories.Resource
         {
             _mapper= mapper;
         }
-
         public async Task<Result> OperationHotelData(OperationHotelDto dto)
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };

+ 57 - 0
OASystem/OASystem.Infrastructure/Repositories/System/SetDataRepository.cs

@@ -3,9 +3,12 @@ using AutoMapper;
 using OASystem.Domain;
 using OASystem.Domain.Dtos.System;
 using OASystem.Domain.Dtos.UserDto;
+using OASystem.Domain.Entities.Financial;
 using OASystem.Domain.Entities.Resource;
 using OASystem.Domain.Entities.System;
+using OASystem.Domain.ViewModels.Groups;
 using OASystem.Domain.ViewModels.System;
+using OASystem.Infrastructure.Tools;
 
 namespace OASystem.Infrastructure.Repositories.System
 {
@@ -275,5 +278,59 @@ namespace OASystem.Infrastructure.Repositories.System
             }
             return result;
         }
+
+        public async Task<Result> PostCurrencyByDiid(int diId,int CId, int currencyId)
+        {
+            if (diId==0)
+            {
+                return new Result() { Code = -1, Msg = "请传入团组Id!" };
+            }
+            if (CId == 0)
+            {
+                return new Result() { Code = -1, Msg = "请传入类型Id!" };
+            }
+            if (currencyId == 0)
+            {
+                return new Result() { Code = -1, Msg = "请传入币种Id!" };
+            }
+            Grp_TeamRate _TeamRate = _sqlSugar.Queryable<Grp_TeamRate>().First(a => a.DiId == diId && a.IsDel == 0 && a.CTable == CId);
+            List<CurrencyInfo> currencyInfos = new List<CurrencyInfo>();
+            CurrencyInfo CurrencyRate = new CurrencyInfo();
+            try
+            {
+                if (_TeamRate != null)
+                {
+                    Sys_SetData _SetData = _sqlSugar.Queryable<Sys_SetData>().First(a => a.IsDel == 0 && a.Id == currencyId);
+                    if (_SetData != null)
+                    {
+                        currencyInfos = CommonFun.GetCurrencyChinaToList(_TeamRate.Remark);
+                        CurrencyRate = currencyInfos.FirstOrDefault(a => a.CurrencyCode == _SetData.Name);
+                        if (CurrencyRate!=null)
+                        {
+                            return new Result() { Code = 0, Msg = "查询成功!", Data = CurrencyRate };
+                        }
+                        else
+                        {
+                            return new Result() { Code = -1, Msg = "暂无团组汇率,请前往设置!", Data = CurrencyRate };
+                        }
+                        
+                    }
+                    else
+                    {
+                        return new Result() { Code = -1, Msg = "暂无团组汇率,请前往设置!", Data = CurrencyRate };
+                    }
+                    
+                }
+                else
+                {
+                    return new Result() { Code = -1, Msg = "暂无团组汇率,请前往设置!", Data = CurrencyRate };
+                }
+            }
+            catch (Exception)
+            {
+                return new Result() { Code = -1, Msg = "查询异常!", Data = CurrencyRate };
+            }
+            
+        }
     }
 }