Browse Source

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

yuanrf 1 year ago
parent
commit
61e0104335

+ 257 - 1
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -2,6 +2,7 @@
 using Newtonsoft.Json.Serialization;
 using OASystem.API.OAMethodLib;
 using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Entities.Business;
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.ViewModels.Groups;
 using OASystem.Infrastructure.Repositories.Groups;
@@ -396,7 +397,7 @@ namespace OASystem.API.Controllers
             {
                 return Ok(JsonView(false, groupData.Msg));
             }
-            return Ok(JsonView(true,groupData.Msg,groupData.Data));
+            return Ok(JsonView(true, groupData.Msg, groupData.Data));
         }
 
         /// <summary>
@@ -435,6 +436,261 @@ namespace OASystem.API.Controllers
         }
         #endregion
 
+        #region 团组费用审核
+
+        /// <summary>
+        /// 获取团组费用审核
+        /// </summary>
+        /// <param name="paras">参数Json字符串</param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostSearchGrpCreditCardPayment(Search_GrpCreditCardPaymentDto _dto)
+        {
+            if (_dto.DiId < 1)
+            {
+                return Ok(JsonView(false, "团组Id为空"));
+            }
+            Grp_CreditCardPaymentView _view = new Grp_CreditCardPaymentView();
+
+            #region 团组基本信息
+
+            Grp_DelegationInfo _delegation = _groupRepository.Query<Grp_DelegationInfo>(s => s.Id == _dto.DiId).First();
+            if (_delegation == null)
+            {
+                _view.ClientName = _delegation.ClientName;
+                _view.DiId = _dto.DiId;
+                _view.TeamName = _delegation.TeamName;
+                _view.VisitCountry = _delegation.VisitCountry;
+                _view.VisitDate = _delegation.VisitStartDate.ToString("yyyy-MM-dd") + " ~ " + _delegation.VisitEndDate.ToString("yyyy-MM-dd");
+                _view.VisitDays = _delegation.VisitDays;
+                _view.VisitPNumber = _delegation.VisitPNumber;
+            }
+            else
+            {
+                return Ok(JsonView(false, "团组Id为空"));
+            }
+
+            #endregion
+
+            #region 费用清单
+
+            //缺少IF的语法糖 CTable
+            List<Grp_CreditCardPayment> entityList = _groupRepository
+                .Query<Grp_CreditCardPayment>(s => s.DIId == _dto.DiId && s.CTable == _dto.Label && s.IsAuditGM == _dto.AuditStatus && s.IsDel == 0 && s.CreateUserId > 0)
+                .ToList();
+
+            List<Grp_CreditCardPaymentDetailView> detailList = new List<Grp_CreditCardPaymentDetailView>();
+            decimal CNY = 0;
+            decimal PayCNY = 0;
+            decimal BalanceCNY = 0;
+            decimal YSFYCNY = 0;
+
+            decimal USD = 0;
+            decimal PayUSD = 0;
+            decimal BalanceUSD = 0;
+            decimal YSFYUSD = 0;
+
+            decimal EUR = 0;
+            decimal PayEUR = 0;
+            decimal BalanceEUR = 0;
+            decimal YSFYEUR = 0;
+
+            foreach (var entity in entityList)
+            {
+                Grp_CreditCardPaymentDetailView _detail = new Grp_CreditCardPaymentDetailView();
+
+                if (entity.CTable != 85) continue;
+
+                /*
+                 * Bus名称
+                 */
+                _detail.BusName = "";
+
+                /*
+                 *费用所属
+                 */
+                switch (entity.CTable)
+                {
+                    case 85:
+                        Grp_AirTicketReservations jpRes = _groupRepository.Query<Grp_AirTicketReservations>(s => s.Id == entity.CId).First();
+                        if (jpRes != null)
+                        {
+                            string FlightsDescription = jpRes.FlightsDescription;
+                            string PriceDescription = jpRes.PriceDescription;
+                            _detail.PriceMsgContent = "航班号:" + jpRes.FlightsCode + "<br/>城市A-B:" + jpRes.FlightsCity + "<br/>航班描述:" + FlightsDescription.Replace("\r\n", "<br />") + "<br/>" + "价格描述:" + PriceDescription;
+                            _detail.PriceNameContent = "(" + jpRes.FlightsCode + ")";
+                        }
+                        break;
+                    case 79:
+                        _detail.BusName = "待增加";
+                        break;
+
+                    default:
+                        break;
+                }
+
+                /*
+                 * 费用模块
+                 */
+                Sys_SetData sdPriceName = _groupRepository.Query<Sys_SetData>(s => s.Id == entity.CTable).First();
+                if (sdPriceName != null)
+                {
+                    _detail.PriceName = sdPriceName.Name;
+                }
+
+                /*
+                 * 应付款金额	
+                 */
+                Sys_SetData sdPaymentCurrency_WaitPay = _groupRepository.Query<Sys_SetData>(s => s.Id == entity.PaymentCurrency).First();
+                string PaymentCurrency_WaitPay = "Unknown";
+                if (sdPaymentCurrency_WaitPay != null)
+                {
+                    PaymentCurrency_WaitPay = sdPaymentCurrency_WaitPay.Name;
+                }
+                _detail.WaitPay = entity.PayMoney.ToString("#0.00") + " " + PaymentCurrency_WaitPay;
+
+                /*
+                 * 此次付款金额
+                 */
+                decimal CurrPayStr = 0;
+                if (entity.PayPercentage == 0)
+                {
+                    if (entity.PayThenMoney != 0)
+                        CurrPayStr = entity.PayThenMoney * decimal.Parse(entity.DayRate);
+                }
+                else
+                {
+                    CurrPayStr = entity.PayMoney * (decimal.Parse(entity.PayPercentage.ToString("#0.00")) / 100 * decimal.Parse(entity.DayRate));
+                }
+                _detail.CurrPay = CurrPayStr.ToString("#0.00") + " CNY";
+
+                /*
+                 * 剩余尾款
+                 */
+                decimal BalanceStr = 0;
+                if (entity.PayMoney - (CurrPayStr / decimal.Parse(entity.DayRate)) < 0.01M)
+                    BalanceStr = 0;
+                else
+                    BalanceStr = (entity.PayMoney - CurrPayStr / decimal.Parse(entity.DayRate));
+
+                _detail.Balance = BalanceStr.ToString("#0.00") + " " + PaymentCurrency_WaitPay;
+
+                /*
+                 * 申请人
+                 */
+                string operatorName = "无";
+                Sys_Users _opUser = _groupRepository.Query<Sys_Users>(s => s.CreateUserId == entity.CreateUserId).First();
+                if (_opUser != null)
+                {
+                    operatorName = _opUser.CnName;
+                }
+                _detail.OperatorName = operatorName;
+
+                /*
+                * 审核人
+                */
+                string auditOperatorName = "Unknown";
+                if (entity.AuditGMOperate == 0)
+                    auditOperatorName = "无";
+                else if (entity.AuditGMOperate == 4)
+                    auditOperatorName = "自动审核";
+                else
+                {
+                    Sys_Users _adUser = _groupRepository.Query<Sys_Users>(s => s.CreateUserId == entity.AuditGMOperate).First();
+                    if (_adUser != null)
+                    {
+                        auditOperatorName = _adUser.CnName;
+                    }
+                }
+                _detail.AuditOperatorName = auditOperatorName;
+
+                /*
+                 * 
+                 * *超预算比例
+                 */
+                string overBudgetStr = "";
+
+                if (entity.ExceedBudget == -1)
+                    overBudgetStr = sdPriceName.Name + "尚无预算";
+                else if (entity.ExceedBudget == 0)
+                    overBudgetStr = "未超预算";
+                else
+                    overBudgetStr = entity.ExceedBudget.ToString("P");
+                _detail.OverBudget = overBudgetStr;
+
+
+                /*
+                 * 费用总计
+                 */
+
+
+                if (entity.PaymentCurrency == 48)
+                {
+                    CNY += entity.PayMoney;
+                    PayCNY += CurrPayStr;
+                    BalanceCNY += BalanceStr;
+                    YSFYCNY += CurrPayStr;
+                }
+                if (entity.PaymentCurrency == 49)
+                {
+                    USD += entity.PayMoney;
+                    PayUSD += CurrPayStr;
+                    BalanceUSD += BalanceStr;
+                    YSFYUSD += CurrPayStr;
+                }
+                if (entity.PaymentCurrency == 51)
+                {
+                    EUR += entity.PayMoney;
+                    PayEUR += CurrPayStr;
+                    BalanceEUR += BalanceStr;
+                    YSFYEUR += CurrPayStr;
+                }
+
+                _detail.TotalStr1 = string.Format(@"应付款总金额:{0}CNY&nbsp;|&nbsp;{1}USD&nbsp;|&nbsp;{2}EUR", CNY, USD, EUR);
+                _detail.TotalStr2 = string.Format(@"此次付款总金额:{0}CNY&nbsp;|&nbsp;{1}USD&nbsp;|&nbsp;{2}EUR", PayCNY, PayUSD, PayEUR);
+                _detail.TotalStr3 = string.Format(@"目前剩余尾款总金额:{0}CNY&nbsp;|&nbsp;{1}USD&nbsp;|&nbsp;{2}EUR", BalanceCNY, BalanceUSD, BalanceEUR);
+                _detail.TotalStr4 = string.Format(@"已审费用总额:{0}CNY&nbsp;|&nbsp;{1}USD&nbsp;|&nbsp;{2}EUR", YSFYCNY, YSFYUSD, YSFYEUR);
+
+
+                detailList.Add(_detail);
+
+            }
+
+            #endregion
+            _view.DetailList = new List<Grp_CreditCardPaymentDetailView>(detailList);
+
+            return Ok(JsonView(_view));
+        }
+
+
+        /// <summary>
+        /// 获取团组费用审核
+        /// </summary>
+        /// <param name="paras">参数Json字符串</param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostAuditGrpCreditCardPayment(Edit_GrpCreditCardPaymentDto _dto)
+        {
+            Grp_CreditCardPayment _detail = _mapper.Map<Grp_CreditCardPayment>(_dto);
+            DateTime dtNow = DateTime.Now;
+            var result = await _grpScheduleRep._sqlSugar.Updateable<Grp_CreditCardPayment>()
+                .SetColumns(it => it.IsAuditGM == _dto.AuditCode)
+                .SetColumns(it => it.AuditGMOperate == _dto.User)
+                .SetColumns(it => it.AuditGMDate == dtNow)
+                .Where(s => s.Id == _dto.CreditId)
+                .ExecuteCommandAsync();
+            if (result > 0)
+            {
+                return Ok(JsonView(true, "保存成功!"));
+            }
+
+            return Ok(JsonView(false, "保存失败!"));
+        }
+
+        #endregion
+
         #region 机票费用录入
         /// <summary>
         /// 机票录入当前登录人可操作团组

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

@@ -78,6 +78,7 @@ namespace OASystem.Domain.AutoMappers
             CreateMap<Grp_ScheduleDetailInsertDto, Grp_ScheduleDetailInfo>();
             CreateMap<TaskAssignmenDto, Grp_GroupsTaskAssignment>();
             CreateMap<Grp_GroupCostParameter,AirGroupCostParameterView>();
+            CreateMap<Edit_GrpCreditCardPaymentDto, Grp_CreditCardPayment>();
             #endregion
 
             #region Resource

+ 33 - 0
OASystem/OASystem.Domain/Dtos/Groups/GrpCreditCardPaymentDto.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
+{
+    public class Search_GrpCreditCardPaymentDto
+    {
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 费用类型 0-所有, 76-酒店预订,77-行程,79-车导地接,80-签证,81-邀请公务,82-团组客户保险,85-机票预订,98-团组增减款项,285-其他款项
+        /// </summary>
+        public int Label { get; set; } = 0;
+
+        /// <summary>
+        /// 审核状态 0/1/2,未审核/审核通过/审核不通过
+        /// </summary>
+        public int AuditStatus { get; set; }
+    }
+
+    public class Edit_GrpCreditCardPaymentDto
+    {
+        public int CreditId { get; set; }
+        public int AuditCode { get; set; }
+        public int User { get; set; }
+    }
+}

+ 115 - 0
OASystem/OASystem.Domain/ViewModels/Groups/Grp_CreditCardPaymentView.cs

@@ -0,0 +1,115 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.Groups
+{
+    public class Grp_CreditCardPaymentView
+    {
+        /// <summary>
+        /// 团组编号
+        /// </summary>
+        public int DiId { get; set; }
+
+        /// <summary>
+        /// 团组名称
+        /// </summary>
+        public string TeamName { 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>
+        /// 审核列表
+        /// </summary>
+        public List<Grp_CreditCardPaymentDetailView> DetailList { get; set; }
+    }
+
+    public class Grp_CreditCardPaymentDetailView
+    {
+        /// <summary>
+        /// 费用Id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 费用所属
+        /// </summary>
+        public string PriceNameContent { get; set; }
+
+        /// <summary>
+        /// 费用明细
+        /// </summary>
+        public string PriceMsgContent { get; set; }
+
+        /// <summary>
+        /// 费用模块
+        /// </summary>
+
+        public string PriceName { get; set; }
+
+        /// <summary>
+        /// Bus名称
+        /// </summary>
+        public string BusName { get; set; }
+
+        /// <summary>
+        /// 应付款金额	
+        /// </summary>
+        public string WaitPay { get; set; }
+
+        /// <summary>
+        /// 此次付款金额
+        /// </summary>
+        public string CurrPay { get; set; }
+
+        /// <summary>
+        /// 剩余尾款
+        /// </summary>
+        public string Balance { get; set; }
+
+        /// <summary>
+        /// 申请人
+        /// </summary>
+        public string OperatorName { get; set; }
+
+        /// <summary>
+        /// 审核人
+        /// </summary>
+        public string AuditOperatorName { get; set; }
+
+        /// <summary>
+        /// 超预算比例
+        /// </summary>
+        public string OverBudget { get; set; }
+
+        public string TotalStr1 { get; set; }
+        public string TotalStr2 { get; set; }
+        public string TotalStr3 { get; set; }
+        public string TotalStr4 { get; set; }
+    }
+}

+ 2 - 2
OASystem/OASystem.Infrastructure/Repositories/Business/CommonBusRepository.cs

@@ -149,9 +149,9 @@ Inner Join Sys_SetData as s With(Nolock) On t.SdId=s.Id ");
             BeginTran();
             try
             {
-                int result = await _sqlSugar.Updateable<Bus_ConfItemInfo>()
+                int result = await _sqlSugar.Updateable<Bus_ConfItemListInfo>()
+                            .SetColumns(it => it.TotalCost == _eidt.TotalCost)
                             .Where(s => s.Id == _dto.ConfItemListId)
-                            .UpdateColumns(s => new { TotalCost = _eidt.TotalCost })
                             .ExecuteCommandAsync();
                 _sqlSugar.Deleteable<Bus_ConfItemInfo>().Where(it => it.ConfListId == _dto.ConfItemListId).ExecuteCommand();
 

+ 24 - 4
OASystem/OASystem.Infrastructure/Repositories/Resource/ResItemInfoRepository.cs

@@ -168,8 +168,15 @@ Job,Mobile,Remark From Res_ItemVendor With(Nolock) {2}
         public async Task<bool> updVendorInfo(Res_ItemVendor _entity)
         {
             var result = await _sqlSugar.Updateable<Res_ItemVendor>()
+                .SetColumns(it => it.FullName == _entity.FullName)
+                .SetColumns(it => it.ShortName == _entity.ShortName)
+                .SetColumns(it => it.Address == _entity.Address)
+                .SetColumns(it => it.Linker == _entity.Linker)
+                .SetColumns(it => it.Mobile == _entity.Mobile)
+                .SetColumns(it => it.BusRange == _entity.BusRange)
+                .SetColumns(it => it.Job == _entity.Job)
+                .SetColumns(it => it.Remark == _entity.Remark)
                 .Where(s => s.Id == _entity.Id)
-                .UpdateColumns(s => new { s.FullName, s.ShortName, s.Address, s.Linker, s.Mobile, s.BusRange, s.Job, s.Remark })
                 .ExecuteCommandAsync();
 
             return result > 0;
@@ -186,8 +193,10 @@ Job,Mobile,Remark From Res_ItemVendor With(Nolock) {2}
             _entity.DeleteUserId = _entity.CreateUserId;
             _entity.DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
             var result = await _sqlSugar.Updateable<Res_ItemVendor>()
+                .SetColumns(it => it.IsDel == _entity.IsDel)
+                .SetColumns(it => it.DeleteTime == _entity.DeleteTime)
+                .SetColumns(it => it.DeleteUserId == _entity.DeleteUserId)
                .Where(s => s.Id == _entity.Id)
-               .UpdateColumns(s => new { s.IsDel, s.DeleteTime, s.DeleteUserId })
                .ExecuteCommandAsync();
 
             return result > 0;
@@ -331,8 +340,17 @@ Where d.Id={0} ", _dto.ItemId);
 
 
                 var result = await _sqlSugar.Updateable<Res_ItemDetailInfo>()
+                .SetColumns(it => it.CurrDt == _entity.CurrDt)
+                .SetColumns(it => it.CurrRate == _entity.CurrRate)
+                .SetColumns(it => it.ItemName == _entity.ItemName)
+                .SetColumns(it => it.MaxDt == _entity.MaxDt)
+                .SetColumns(it => it.MaxRate == _entity.MaxRate)
+                .SetColumns(it => it.MinDt == _entity.MinDt)
+                .SetColumns(it => it.MinRate == _entity.MinRate)
+                .SetColumns(it => it.Remark == _entity.Remark)
+                .SetColumns(it => it.ItemTypeId == _entity.ItemTypeId)
+                .SetColumns(it => it.VendorId == _entity.VendorId)
                    .Where(s => s.Id == _entity.Id)
-                   .UpdateColumns(s => new { s.CurrDt, s.CurrRate, s.ItemName, s.MaxDt, s.MaxRate, s.MinDt, s.MinRate, s.Remark, s.ItemTypeId, s.VendorId })
                    .ExecuteCommandAsync();
                 return result > 0;
             }
@@ -350,8 +368,10 @@ Where d.Id={0} ", _dto.ItemId);
             _entity.DeleteUserId = _entity.CreateUserId;
             _entity.DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
             var result = await _sqlSugar.Updateable<Res_ItemDetailInfo>()
+                .SetColumns(it => it.IsDel == _entity.IsDel)
+                .SetColumns(it => it.DeleteTime == _entity.DeleteTime)
+                .SetColumns(it => it.DeleteUserId == _entity.DeleteUserId)
                .Where(s => s.Id == _entity.Id)
-               .UpdateColumns(s => new { s.IsDel, s.DeleteTime, s.DeleteUserId })
                .ExecuteCommandAsync();
 
             return result > 0;