Browse Source

付款申请
列表 新增

leiy 11 months ago
parent
commit
62bd725171

+ 152 - 5
OASystem/OASystem.Api/Controllers/FinancialController.cs

@@ -24,6 +24,9 @@ using OASystem.Domain.Entities.Customer;
 using System.IO.Compression;
 using NPOI.SS.UserModel;
 using System.Net.Http;
+using Google.Protobuf;
+using NPOI.SS.Formula.Functions;
+using System.Globalization;
 
 namespace OASystem.API.Controllers
 {
@@ -1734,7 +1737,7 @@ Where c.CTable = 1015 And c.IsPay = 1 And f.IsDel = 0 And c.IsDel = 0 And f.DiId
         #region 付款申请
 
         /// <summary>
-        /// 应收报表
+        /// 付款申请
         /// 查询 根据日期范围
         /// </summary>
         /// <param name="dto"></param>
@@ -1743,16 +1746,160 @@ Where c.CTable = 1015 And c.IsPay = 1 And f.IsDel = 0 And c.IsDel = 0 And f.DiId
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> PostPayRequest_Center(PostPayRequestByDateRangeDto dto)
         {
-            tree_Fin_DailyFeePaymentResult dailyResult = PayRequest_DailyByDateRange(dto.beginDt, dto.endDt);
+            #region 验证
+            DateTime beginDt, endDt;
+            string format = "yyyy-MM-dd";
+            if (!DateTime.TryParseExact(dto.beginDt, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out beginDt))
+            {
+                return Ok(JsonView(false, "开始日期格式不正确!正确格式:yyyy-MM-dd"));
+            }
+            if (!DateTime.TryParseExact(dto.endDt, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out endDt))
+            {
+                return Ok(JsonView(false, "结束日期格式不正确!正确格式:yyyy-MM-dd"));
+            }
 
+            #endregion
+            try
+            {
+                tree_Fin_DailyFeePaymentResult dailyResult = PayRequest_DailyByDateRange(dto.beginDt, dto.endDt);
+                tree_Group_DailyFeePaymentResult groupResult = PayRequest_PaymentByDateRange(dto.beginDt, dto.endDt);
 
-            return Ok(JsonView(true, "获取成功", new { daily = dailyResult }));
+                return Ok(JsonView(true, "获取成功", new { daily = dailyResult, group = groupResult }));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
 
-            return Ok(JsonView(false, "获取失败"));
         }
 
         /// <summary>
-        /// 付款申请
+        /// 付款申请(日付申请相关)
+        /// 查询 根据日期范围
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        private tree_Group_DailyFeePaymentResult PayRequest_PaymentByDateRange(string beginDt, string endDt)
+        {
+            tree_Group_DailyFeePaymentResult _DailyFeePaymentResult = new tree_Group_DailyFeePaymentResult();
+            List<tree_Group_DailyFeePaymentPageListView> dataList = new List<tree_Group_DailyFeePaymentPageListView>();
+            #region sql条件处理
+            string sqlWhere = string.Format(@"And (AuditGMDate Between '{0} 00:00:00' And '{1} 23:59:59') ", beginDt, endDt);
+            string sql_1 = string.Format(@"Select * From Grp_CreditCardPayment Where IsDel = 0 And IsPay = 0 And IsAuditGM = 1 {0}", sqlWhere);
+            #endregion
+
+            var _paymentDatas = _sqlSugar.SqlQueryable<Grp_CreditCardPayment>(sql_1).ToList();//付款信息
+            _DailyFeePaymentResult.gz = _paymentDatas.Where(it => it.OrbitalPrivateTransfer == 0).Sum(it => ((it.PayMoney * it.DayRate) / 100) * it.PayPercentage); //公转
+            _DailyFeePaymentResult.sz = _paymentDatas.Where(it => it.OrbitalPrivateTransfer == 1).Sum(it => ((it.PayMoney * it.DayRate) / 100) * it.PayPercentage); ; //私转
+            List<int> groupIds = _paymentDatas.Select(it => it.DIId).Distinct().ToList();
+            List<int> teamDids = new List<int> { 300, 302, 248 }; //团组类型 不含
+            var _groupDatas = _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0 && groupIds.Contains(it.Id) && !teamDids.Contains(it.TeamDid)).ToList();
+
+            #region 相关基础数据源
+            var userDatas = _sqlSugar.Queryable<Sys_Users>().ToList();
+            var setDatas = _sqlSugar.Queryable<Sys_SetData>().ToList();
+
+            var hotelDatas = _sqlSugar.Queryable<Grp_HotelReservations>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DiId)).ToList();
+            var opDatas = _sqlSugar.Queryable<Grp_CarTouristGuideGroundReservations>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DiId)).ToList();
+            var visaDatas = _sqlSugar.Queryable<Grp_VisaInfo>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DIId)).ToList();
+            var ioaDatas = _sqlSugar.Queryable<Grp_InvitationOfficialActivities>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DiId)).ToList();
+            var insureDatas = _sqlSugar.Queryable<Grp_Customers>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DiId)).ToList();
+            var airDatas = _sqlSugar.Queryable<Grp_AirTicketReservations>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DIId)).ToList();
+            var otherMoneyDatas = _sqlSugar.Queryable<Fin_OtherPrice>().Where(it => it.IsDel == 0 && groupIds.Contains(it.Diid)).ToList();
+            var refundPaymentDatas = _sqlSugar.Queryable<Fin_PaymentRefundAndOtherMoney>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DiId)).ToList();
+            var ExtraCostDatas = _sqlSugar.Queryable<Fin_GroupExtraCost>().Where(it => it.IsDel == 0 && groupIds.Contains(it.DiId)).ToList();
+            #endregion
+
+            foreach ( var groupInfo in _groupDatas) 
+            {
+                List<Group_DailyFeePaymentContentInfolView> childList = new List<Group_DailyFeePaymentContentInfolView>();
+
+                var groupPaymentDatas = _paymentDatas.Where(it => groupInfo.Id == it.DIId).ToList();
+                int rouNumber = 1;
+                foreach (var payInfo in groupPaymentDatas)
+                {
+                    string priName = "";
+
+                    switch (payInfo.CTable)
+                    {
+                        case 76:  //76	酒店预订
+                            priName = hotelDatas.Find(it => payInfo.DIId == it.DiId && payInfo.CId == it.Id)?.HotelName ?? "";
+                            break;
+                        case 79:  //79	车/导游地接
+                            var opData = opDatas.Find(it => payInfo.DIId == it.DiId && payInfo.CId == it.Id);
+                            if (opData != null)
+                            {
+                                if (payInfo.OrbitalPrivateTransfer == 0) //公转
+                                {
+                                    priName = "【四川泛美交流有限公司】" + "【公转】" + "【导游:" + opData.ServiceGuide + "】" + opData.Area;
+                                }
+                                else if (payInfo.OrbitalPrivateTransfer == 1) //私转
+                                {
+                                    priName = "【四川泛美交流有限公司】" + "【私转】" + "【导游:" + opData.ServiceGuide + "】" + opData.Area;
+                                }
+                            }
+                            break;
+                        case 80:  // 80   签证
+                            priName = visaDatas.Find(it => payInfo.DIId == it.DIId && payInfo.CId == it.Id)?.VisaClient ?? "";
+                            break;
+                        case 81:  // 81	邀请/公务活动
+                            priName = ioaDatas.Find(it => payInfo.DIId == it.DiId && payInfo.CId == it.Id)?.Inviter ?? "";
+                            break;
+                        case 82:  // 82	团组客户保险
+                            priName = insureDatas.Find(it => payInfo.DIId == it.DiId && payInfo.CId == it.Id)?.ClientName ?? "";
+                            break;
+                        case 85:  // 85	机票预订
+                            string flightsCode = airDatas.Find(it => payInfo.DIId == it.DIId && payInfo.CId == it.Id)?.FlightsCode ?? "";
+                            string airPayType = setDatas.Find(it => it.Id == payInfo.PayDId)?.Name ?? "";
+                            priName = $"{flightsCode}【{airPayType}】";
+                            break;
+                        case 98:  //  98	其他款项
+                            priName = otherMoneyDatas.Find(it => payInfo.DIId == it.Diid && payInfo.CId == it.Id)?.PriceName ?? "";
+                            break;
+                        case 285:  //  285 收款退还
+                            priName = refundPaymentDatas.Find(it => payInfo.DIId == it.DiId && payInfo.CId == it.Id)?.PriceName ?? "";
+                            break;
+                        case 1015:  //  1015	超支费用
+                            priName = ExtraCostDatas.Find(it => payInfo.DIId == it.DiId && payInfo.CId == it.Id)?.PriceName ?? "";
+                            break;
+                        default:
+                            priName = "";
+                            break;
+                    }
+
+
+                    childList.Add(new Group_DailyFeePaymentContentInfolView()
+                    {
+                        Id = payInfo.Id,
+                        Payee = payInfo.Payee,
+                        RowNumber = rouNumber,
+                        Applicant = userDatas.Find(it => it.Id == payInfo.CreateUserId)?.CnName ??  "",
+                        PayType = setDatas.Find(it => it.Id == payInfo.PayDId)?.Name ?? "",
+                        PriceName = priName,
+                        ModuleName = setDatas.Find(it => it.Id == payInfo.CTable)?.Name ?? "",
+                        PayCurrCode = setDatas.Find(it => it.Id == payInfo.PaymentCurrency)?.Name ?? "",
+                        PaymentAmount = payInfo.PayMoney,
+                        PayRate = payInfo.DayRate,
+                        CNYSubTotalAmount = ((payInfo.DayRate * payInfo.PayMoney) / 100) * payInfo.PayPercentage //此次付款金额
+                    }) ;
+                    rouNumber++;
+                }
+
+                dataList.Add(new tree_Group_DailyFeePaymentPageListView()
+                {
+                    GroupName = groupInfo.TeamName,
+                    CNYTotalAmount = childList.Sum(it => it.CNYSubTotalAmount),
+                    ChildList = childList,
+                });
+            }
+
+            _DailyFeePaymentResult.dataList = dataList;
+            return _DailyFeePaymentResult;
+        }
+
+
+        /// <summary>
+        /// 付款申请(日付申请相关)
         /// 查询 根据日期范围
         /// </summary>
         /// <param name="dto"></param>

+ 1 - 1
OASystem/OASystem.Api/Controllers/SystemController.cs

@@ -114,7 +114,7 @@ namespace OASystem.API.Controllers
                 return Ok(JsonView(false, msgData.Msg));
             }
 
-            return Ok(JsonView(msgData.Data));
+            return Ok(JsonView(true, msgData.Msg, msgData.Data));
         }
         
         /// <summary>

+ 6 - 0
OASystem/OASystem.Api/appsettings.json

@@ -185,6 +185,12 @@
       "CTableId": 751, //CtableId 酒店早餐
       "PageIdDatas": [ //页面Id
       ]
+    },
+    {
+      "CTableId": 1015, //CtableId 超支费用
+      "PageIdDatas": [ //页面Id
+        174 
+      ]
     }
   ],
 

+ 0 - 1
OASystem/OASystem.Domain/Entities/Financial/Fin_GroupExtraCost.cs

@@ -10,7 +10,6 @@ namespace OASystem.Domain.Entities.Financial
     /// 雷怡 2024-01-17 17:56
     /// 财务 - 团组 超支费用
     /// </summary>
-    /// </summary>
     [SugarTable("Fin_GroupExtraCost")]
     public class Fin_GroupExtraCost : EntityBase
     {

+ 1 - 0
OASystem/OASystem.Domain/Entities/Groups/Grp_CreditCardPayment.cs

@@ -192,6 +192,7 @@ namespace OASystem.Domain.Entities.Groups
 
         /// <summary>
         /// 费用标识
+        /// 0 公转 1 私转
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
         public int OrbitalPrivateTransfer { get; set; }

+ 3 - 1
OASystem/OASystem.Domain/Entities/Groups/Grp_VisaInfo.cs

@@ -6,10 +6,12 @@ using System.Threading.Tasks;
 
 namespace OASystem.Domain.Entities.Groups
 {
+    /// <summary>
+    /// 签证费用录入
+    /// </summary>
     [SugarTable("Grp_VisaInfo")]
     public class Grp_VisaInfo:EntityBase
     {
-
         /// <summary>
         /// 团组外键编号
         /// </summary>

+ 81 - 0
OASystem/OASystem.Domain/ViewModels/Financial/Fin_DailyFeePaymentView.cs

@@ -352,4 +352,85 @@ namespace OASystem.Domain.ViewModels.Financial
         public List<tree_Fin_DailyFeePaymentPageListView> dataList { get; set; }
     }
 
+
+    /// <summary>
+    /// 团组相关费用
+    /// </summary>
+    public class tree_Group_DailyFeePaymentResult 
+    {
+        public decimal gz { get; set; } = 0M;
+        public decimal sz { get; set; } = 0M;
+
+        public List<tree_Group_DailyFeePaymentPageListView> dataList { get; set; }
+    }
+
+    /// <summary>
+    /// 团组相关费用 List
+    /// </summary>
+    public class tree_Group_DailyFeePaymentPageListView
+    {
+        public string GroupName { get; set; }
+
+        /// <summary>
+        /// 团组总计金额
+        /// </summary>
+        public decimal CNYTotalAmount { get; set; }
+
+        public List<Group_DailyFeePaymentContentInfolView> ChildList { get; set; }
+    }
+
+    public class Group_DailyFeePaymentContentInfolView
+    {
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 支付方式
+        /// </summary>
+        public string PayType { get; set; }
+
+        /// <summary>
+        /// 序号
+        /// </summary>
+        public int RowNumber { get; set; }
+
+        /// <summary>
+        /// 申请人
+        /// </summary>
+        public string Applicant { get; set; }
+
+        /// <summary>
+        /// 收款方
+        /// </summary>
+        public string Payee { get; set; }
+
+        /// <summary>
+        /// 费用名称
+        /// </summary>
+        public string PriceName { get; set; }
+
+        /// <summary>
+        /// 费用所属模块
+        /// </summary>
+        public string ModuleName { get; set; }
+
+        /// <summary>
+        /// 付款币种
+        /// </summary>
+        public string PayCurrCode { get; set; }
+
+        /// <summary>
+        /// 付款金额
+        /// </summary>
+        public decimal PaymentAmount { get; set; }
+
+        /// <summary>
+        /// 付款汇率
+        /// </summary>
+        public decimal PayRate { get; set; }
+
+        /// <summary>
+        /// 小计人名币金额
+        /// </summary>
+        public decimal CNYSubTotalAmount { get; set; }
+    }
 }

+ 8 - 2
OASystem/OASystem.Infrastructure/Repositories/System/MessageRepository.cs

@@ -209,7 +209,7 @@ namespace OASystem.Infrastructure.Repositories.System
                                             ) Temp", msgSqlWhere);
 
             var data = await _sqlSugar.SqlQueryable<MessageListView>(msgSql).ToListAsync();
-            
+
             if (data.Count > 0)
             {
                 var msgTypeResult = await _setData.GetSetDataBySTId(_setData, 77);
@@ -251,13 +251,19 @@ namespace OASystem.Infrastructure.Repositories.System
                 else if (dto.PortType == 3)
                 {
                     result.Code = 0;
-                    result.Data = new {
+                    result.Data = new
+                    {
                         MsgTypeData = msgTypeData,
                         FirstUnreadData = data[0],
                         UnreadTotalCount = data.Where(it => it.IsRead == 0).ToList().Count,
                     };
                 }
             }
+            else
+            {
+                result.Code = 0;
+                result.Msg = "暂无消息";
+            }
 
             return result;
         }