Procházet zdrojové kódy

商务邀请
增加接口 基础数据源

leiy před 11 měsíci
rodič
revize
7b27e1d55e

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

@@ -2909,7 +2909,33 @@ namespace OASystem.API.Controllers
                 throw;
             }
         }
-        
+
+        //
+        /// <summary>
+        /// 商邀费用 Info Page 基础数据源
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> InvitationOfficialActivityInitBasicData()
+        {
+            try
+            {
+                Result groupData = await _InvitationOfficialActivitiesRep._InitBasicData();
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+                return Ok(JsonView(true, "操作成功", groupData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+                throw;
+            }
+        }
+
         /// <summary>
         /// 根据商邀费用ID查询C表和商邀费用数据
         /// </summary>

+ 37 - 2
OASystem/OASystem.Api/Controllers/StatisticsController.cs

@@ -16,6 +16,7 @@ using System.Collections.Generic;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.VisualBasic;
 using OASystem.Domain.Entities.Groups;
+using Microsoft.Extensions.DependencyInjection;
 
 namespace OASystem.API.Controllers
 {
@@ -26,7 +27,7 @@ namespace OASystem.API.Controllers
     [ApiController]
     public class StatisticsController : ControllerBase
     {
-
+        private readonly int _decimalPlaces;
         private readonly IMapper _mapper;
         private readonly SqlSugarClient _sqlSugar;
         private readonly DelegationInfoRepository _groupRep;
@@ -134,6 +135,7 @@ namespace OASystem.API.Controllers
         /// <param name="_dto">团组列表请求dto</param>
         /// <returns></returns>
         [HttpPost("PostGroupStatementDetails")]
+        //[JsonConverter(typeof(DecimalConverter), 2)]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> PostGroupStatementDetails(GroupStatementDetailsDto _dto)
         {
@@ -401,6 +403,9 @@ namespace OASystem.API.Controllers
                 {
                     HotelCNYTotalPrice += item.CNYPrice;
 
+                    item.PayMoney = item.PayMoney.ConvertToDecimal1();
+                    item.CNYPrice = item.CNYPrice.ConvertToDecimal1();
+
                     string currencyRateStr = "";
                     List<string> currencys = new List<string>();
                     if (!string.IsNullOrEmpty(item.BreakfastCurrency)) currencys.Add(item.BreakfastCurrency);
@@ -414,7 +419,7 @@ namespace OASystem.API.Controllers
                 }
 
                 _geView.GroupHotelFeeViews = groupHotelFeeViews;
-                _geView.GroupHotelFeeStr = string.Format(@"人名币总费用:{0} CNY", HotelCNYTotalPrice);
+                _geView.GroupHotelFeeStr = string.Format(@"人名币总费用:{0} CNY", HotelCNYTotalPrice.ToString("#0.00"));
 
                 #endregion
 
@@ -592,6 +597,36 @@ namespace OASystem.API.Controllers
 
                 foreach (var item in groupVisaFeeViews)
                 {
+                    string itemClientName = "";
+                    string visaClients = item.VisaClient;
+                    if (!string.IsNullOrEmpty(visaClients))
+                    {
+
+                        string[] clientIds = new string[] { };
+                        if (visaClients.Contains(','))
+                        {
+                            clientIds = visaClients.Split(',');
+                        }
+                        else
+                        {
+                            clientIds = new string[] { visaClients };
+                        }
+
+                        if (clientIds.Length > 0)
+                        {
+                            int[] output = Array.ConvertAll<string, int>(clientIds, delegate (string s) { return int.Parse(s); });
+                            var clients = _clientDatas.Where(it => output.Contains(it.Id)).ToList();
+                            foreach (var client in clients)
+                            {
+                                itemClientName += $"{client.LastName + client.FirstName},";
+                            }
+                        }
+                    }
+                    if (itemClientName.Length > 0 )
+                    {
+                        itemClientName = itemClientName.Substring(0, itemClientName.Length - 1);
+                    }
+                    item.VisaClient = itemClientName;
                     VisaCNYTotalPirce += item.PayMoney;
                     if (!string.IsNullOrEmpty(item.AuditGMDate))
                     {

+ 1 - 1
OASystem/OASystem.Api/OAMethodLib/GeneralMethod.cs

@@ -664,7 +664,7 @@ namespace OASystem.API.OAMethodLib
                         var hotelRateInfo = hotelRates.Where(it => it.CurrencyCode.Equals(item)).FirstOrDefault();
                         if (hotelRateInfo != null)
                         {
-                            string str1 = string.Format("{0} {1}\r\n", hotelRateInfo.CurrencyCode, hotelRateInfo.Rate);
+                            string str1 = string.Format("{0} {1}\r\n", hotelRateInfo.CurrencyCode, hotelRateInfo.Rate.ToString("#0.0000"));
                             currencyRates.Add(str1);
                         }
                     }

+ 25 - 5
OASystem/OASystem.Api/OAMethodLib/JsonConvertOverride.cs

@@ -4,7 +4,6 @@ using System.Text.Json.Serialization;
 
 namespace OASystem.API.OAMethodLib
 {
-
     #region 日期格式转换("yyyy-MM-dd HH;mm:ss")
 
     public class DateTimeJsonConverter : System.Text.Json.Serialization.JsonConverter<DateTime>
@@ -36,8 +35,6 @@ namespace OASystem.API.OAMethodLib
     }
     #endregion
 
-
-
     #region String null值转换(读/写)
 
 
@@ -62,8 +59,31 @@ namespace OASystem.API.OAMethodLib
     #endregion
 
 
-    #region decimal格式化
-   
+    #region decimal格式化 decimalPlaces=3 应用自定义的序列化器,并指定小数位数为 3
+    public class DecimalConverter : System.Text.Json.Serialization.JsonConverter<decimal>
+    {
+        private readonly int decimalPlaces;
+
+        public DecimalConverter(int decimalPlaces = 2)
+        {
+            this.decimalPlaces = decimalPlaces;
+        }
+
+        public override decimal Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+        {
+            if (reader.TokenType == JsonTokenType.Number)
+                return reader.GetDecimal();
+            else
+                throw new System.Text.Json.JsonException();
+        }
+
+        public override void Write(Utf8JsonWriter writer, decimal value, JsonSerializerOptions options)
+        {
+            string formatString = "0." + new string('0', decimalPlaces);
+            string formattedValue = value.ToString(formatString); // 格式化字符串,保留指定位数的小数
+            writer.WriteStringValue(formattedValue);
+        }
+    }
 
     #endregion
 

+ 2 - 2
OASystem/OASystem.Api/Program.cs

@@ -49,8 +49,8 @@ builder.Services.AddControllers()
         //时间格式化响应
         options.JsonSerializerOptions.Converters.Add(new DateTimeJsonConverter("yyyy-MM-dd HH:mm:ss"));
 
-        ////decimal 四位小数
-        //options.JsonSerializerOptions.Converters.Add(new JsonConverterDecimal(0.0000M));
+        //decimal 四位小数
+        //options.JsonSerializerOptions.Converters.Add(new DecimalConverter(_decimalPlaces)); // 将保留小数位数参数传递给自定义序列化器
     });
 
 builder.Services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();

+ 1 - 0
OASystem/OASystem.Domain/Dtos/Groups/InvitationOfficialActivitiesListDto.cs

@@ -19,6 +19,7 @@ namespace OASystem.Domain.Dtos.Groups
         public int PageIndex { get; set; } = 1;
         public int PageSize { get; set; } = 10;
     }
+
     /// <summary>
     /// 根据id查询C表数据和商邀费用数据
     /// </summary>

+ 1 - 1
OASystem/OASystem.Domain/ViewModels/Statistics/GroupStatementView.cs

@@ -658,7 +658,7 @@ namespace OASystem.Domain.ViewModels.Statistics
         /// <summary>
         /// 当天汇率
         /// </summary>
-        public decimal DayRate { get; set; } = 1.0000M;
+        public decimal DayRate { get; set; } = 0.0000M;
 
         /// <summary>
         /// 币种汇率

+ 44 - 5
OASystem/OASystem.Infrastructure/Repositories/Groups/InvitationOfficialActivitiesRepository.cs

@@ -209,6 +209,41 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 return result = new Result() { Code = -2, Msg = "未知错误" };
             }
         }
+
+        /// <summary>
+        /// Info Page Basic Data
+        /// </summary>
+        /// <returns></returns>
+        public async Task<Result> _InitBasicData()
+        {
+            Result result = new Result() { Code = -2, Msg = "程序错误!" };
+
+            var setDatas = _sqlSugar.Queryable<Sys_SetData>().Where(it => it.IsDel == 0).ToList();
+
+            //支付方式
+            var _payTypeDatas = setDatas.Where(it => it.STid == 14).Select(it => new  { Id = it.Id, Name = it.Name, Remark = it.Remark }).ToList();
+
+            ///转账标识
+            var _costIdentificationDatas = new List<dynamic>()
+            { 
+                new { Id = 0,Name = "公转" },
+                new { Id = 1,Name = "私转" }
+            };
+
+            //卡类型
+            var _cardTypeDatas = setDatas.Where(it => it.STid == 15).Select(it => new SetDataCurrencyInfoView { Id = it.Id, Name = it.Name, Remark = it.Remark }).ToList();
+
+            var data = new { 
+                PayTypeData = _payTypeDatas,
+                CostIdentificationData = _costIdentificationDatas,
+                CardTypeData = _cardTypeDatas
+            };
+
+            result.Code = 0;
+            result.Data = data;
+            return result;
+        }
+        
         /// <summary>
         /// 商邀费用操作(Status:1.新增,2.修改)
         /// </summary>
@@ -277,8 +312,8 @@ namespace OASystem.Infrastructure.Repositories.Groups
                             C.CTDId = 0;
                             C.BankNo = "";
                             C.CardholderName = "";
-                            //C.PayMoney = dto.InviteCost + dto.SendCost;
-                            //C.PaymentCurrency = dto.InviteCurrency;
+                            C.PayMoney = dto.PayMoney;
+                            C.PaymentCurrency = dto.PaymentCurrency;
                             C.CompanyBankNo = "";
                             C.OtherBankName = "";
                             C.OtherSideNo = "";
@@ -405,6 +440,10 @@ namespace OASystem.Infrastructure.Repositories.Groups
                         if (grp_CreditCardPayment != null)
                         {
                             grp_CreditCardPayment.PayMoney = dto.PayMoney;
+                            grp_CreditCardPayment.PaymentCurrency = dto.PaymentCurrency;
+                            grp_CreditCardPayment.Payee = dto.Payee;
+                            grp_CreditCardPayment.OrbitalPrivateTransfer = dto.OrbitalPrivateTransfer;
+
 
                             //获取新汇率  int diId,int CId, int currencyId
                             var rate = await fn(dto.DiId, 81, dto.InviteCurrency);
@@ -428,9 +467,9 @@ namespace OASystem.Infrastructure.Repositories.Groups
                                                         {
                                                             PayDId = dto.PayDId,
                                                             PayMoney = grp_CreditCardPayment.PayMoney,
-                                                            PaymentCurrency = dto.PaymentCurrency,
-                                                            Payee = dto.Payee,
-                                                            OrbitalPrivateTransfer = dto.OrbitalPrivateTransfer,
+                                                            PaymentCurrency = grp_CreditCardPayment.PaymentCurrency,
+                                                            Payee = grp_CreditCardPayment.Payee,
+                                                            OrbitalPrivateTransfer = grp_CreditCardPayment.OrbitalPrivateTransfer,
                                                             DayRate = grp_CreditCardPayment.DayRate,
                                                             RMBPrice = grp_CreditCardPayment.RMBPrice,
                                                         }).ExecuteCommandAsync();