Pārlūkot izejas kodu

编写机票费用录入导出方法

wangh 1 gadu atpakaļ
vecāks
revīzija
24105e021c

+ 96 - 5
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -1,4 +1,6 @@
-using Microsoft.AspNetCore.Mvc;
+using Aspose.Cells;
+using Microsoft.AspNetCore.Mvc;
+using NetTaste;
 using Newtonsoft.Json.Serialization;
 using OASystem.API.OAMethodLib;
 using OASystem.Domain.Dtos.Groups;
@@ -6,6 +8,8 @@ using OASystem.Domain.Entities.Business;
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.ViewModels.Groups;
 using OASystem.Infrastructure.Repositories.Groups;
+using OASystem.Infrastructure.Tools;
+using System.Web;
 using static OpenAI.GPT3.ObjectModels.SharedModels.IOpenAiModels;
 
 namespace OASystem.API.Controllers
@@ -22,7 +26,8 @@ namespace OASystem.API.Controllers
         private readonly DelegationInfoRepository _groupRepository;
         private readonly TaskAssignmentRepository _taskAssignmentRep;
         private readonly AirTicketResRepository _airTicketResRep;
-
+        private string url;
+        private string path;
         public GroupsController(IMapper mapper, GrpScheduleRepository grpScheduleRep, DelegationInfoRepository groupRepository, TaskAssignmentRepository taskAssignmentRep, AirTicketResRepository airTicketResRep)
         {
             _mapper = mapper;
@@ -30,6 +35,12 @@ namespace OASystem.API.Controllers
             _groupRepository = groupRepository;
             _taskAssignmentRep = taskAssignmentRep;
             _airTicketResRep = airTicketResRep;
+            url = AppSettingsHelper.Get("ExcelBaseUrl");
+            path = AppSettingsHelper.Get("ExcelBasePath");
+            if (!System.IO.Directory.Exists(path))
+            {
+                System.IO.Directory.CreateDirectory(path);//不存在就创建文件夹
+            }
         }
 
         #region 流程管控
@@ -505,7 +516,7 @@ namespace OASystem.API.Controllers
             {
                 Grp_CreditCardPaymentDetailView _detail = new Grp_CreditCardPaymentDetailView();
 
-                _detail.Id=entity.Id;
+                _detail.Id = entity.Id;
 
                 /*
                  * Bus名称
@@ -696,7 +707,8 @@ namespace OASystem.API.Controllers
                 {
                     rst = -1;
                 }
-                else {
+                else
+                {
                     _groupRepository.RollbackTran();
                     return Ok(JsonView(false, "保存失败并回滚!"));
                 }
@@ -744,7 +756,7 @@ namespace OASystem.API.Controllers
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> AirTicketResList(AirTicketResListDto dto)
+        public async Task<IActionResult> AirTicketResList(AirTicketResDto dto)
         {
             try
             {
@@ -800,6 +812,85 @@ namespace OASystem.API.Controllers
                 throw;
             }
         }
+
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> DelAirTicketRes(DelBaseDto dto)
+        {
+            try
+            {
+                var res = await _airTicketResRep.SoftDeleteByIdAsync<Grp_AirTicketReservations>(dto.Id.ToString(), dto.DeleteUserId);
+                if (!res)
+                {
+                    return Ok(JsonView(false, "删除失败"));
+                }
+                return Ok(JsonView(true, "删除成功!"));
+            }
+            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> DeriveAirTicketRes(AirTicketResDto dto)
+        {
+            try
+            {
+                Result groupData = await _airTicketResRep.DeriveAirTicketRes(dto);
+                if (groupData.Code != 0)
+                {
+                    return Ok(JsonView(false, groupData.Msg));
+                }
+                else
+                {
+                    List<AirTicketReservationsPayView> AirTicketReservations = groupData.Data.GetType().GetProperty("AirTicketRes").GetValue(groupData.Data);
+                    if (AirTicketReservations.Count != 0)
+                    {
+                        Grp_DelegationInfo DelegationInfo = groupData.Data.GetType().GetProperty("Delegation").GetValue(groupData.Data);
+                        Sys_Users _Users = groupData.Data.GetType().GetProperty("Users").GetValue(groupData.Data);
+                        string diCode = DelegationInfo != null ? DelegationInfo.TourCode : "XXX";
+                        string diName = DelegationInfo != null ? DelegationInfo.TeamName : "XXX";
+                        WorkbookDesigner designer = new WorkbookDesigner();
+                        designer.Workbook = new Workbook(AppSettingsHelper.Get("ExcelBasePath") + "Template/机票预订费用报表模板.xlsx");
+                        decimal countCost = 0;
+                        foreach (var item in AirTicketReservations)
+                        {
+                            item.PrePrice = System.Decimal.Round(item.PrePrice, 2);
+                            item.Price = System.Decimal.Round(item.Price, 2);
+                            countCost += Convert.ToDecimal(item.Price);
+                        }
+                        designer.SetDataSource("Export", AirTicketReservations);
+                        designer.SetDataSource("ExportDiCode", diCode);
+                        designer.SetDataSource("ExportDiName", diName);
+                        designer.SetDataSource("ExportOpUserName", _Users.CnName);
+                       
+                        designer.SetDataSource("ExportCountCost", countCost + "(" + AirTicketReservations[0].CurrencyStr);
+                        designer.Process();
+                        string fileName = "AirfareStatement/" + diName + "机票费用报表" + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
+                        designer.Workbook.Save(AppSettingsHelper.Get("ExcelBasePath") + fileName);
+                        string rst = AppSettingsHelper.Get("ExcelBaseUrl") + AppSettingsHelper.Get("ExcelFtpPath") + fileName;
+                        return Ok(JsonView(true, "成功",url=rst));
+                    }
+                    else
+                    {
+                        return Ok(JsonView(false, "暂无数据!"));
+                    }
+                }
+
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, "程序错误!"));
+                throw;
+            }
+        }
         #endregion
     }
 }

+ 4 - 4
OASystem/OASystem.Api/OAMethodLib/ExcelOutput/Excel_BusConfItemList.cs

@@ -75,17 +75,17 @@ Where bcil.Id={0}
             designer.SetDataSource("ExportListRemark", _entity.Remark);
 
             designer.Process();
-            string fileName = HttpUtility.UrlEncode("") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
-            designer.Workbook.Save(fileName);
+            string fileName = "ConfItemList/" + HttpUtility.UrlEncode("会务物料清单") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
+            designer.Workbook.Save(path + fileName);
             designer = null;
 
-            _entity.ExcelPath = path + fileName;
+            _entity.ExcelPath = AppSettingsHelper.Get("ExcelFtpPath") + fileName;
             _busRep._sqlSugar.Updateable<Bus_ConfItemListInfo>()
                 .Where(s => s.Id == _entity.Id)
                 .UpdateColumns(s => s.ExcelPath)
                 .ExecuteCommand();
 
-            string fileUrl = url + path + _entity.ExcelPath;
+            string fileUrl = url + _entity.ExcelPath;
             return fileUrl;
         }
     }

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

@@ -105,6 +105,7 @@
   ],
   "ExcelBaseUrl": "http://132.232.92.186:24/",
   "ExcelBasePath": "C:/Server/File/OA2023/Office/Excel/",
+  "ExcelFtpPath": "Office/Excel/",
   "OfficeBaseUrl": "http://132.232.92.186:24/",
   "OfficeTempBasePath": "C:/Server/File/OA2023/Office/"
 

+ 12 - 4
OASystem/OASystem.Domain/Dtos/Groups/AirTicketResDto.cs

@@ -6,14 +6,22 @@ using System.Threading.Tasks;
 
 namespace OASystem.Domain.Dtos.Groups
 {
+    /// <summary>
+    /// 根据登录用户查询
+    /// </summary>
     public class AirTicketResDto
     {
-        public int UserId { get; set; }
+        public int DiId { get; set; } = 0;
+        public int UserId { get; set; } = 0;
     }
-
-    public class AirTicketResListDto
+   
+    /// <summary>
+    /// 根据团组Id及
+    /// </summary>
+    public class AirTicketResDeriveDto
     {
-        public int DiId { get; set; }
+       
+        public int CreateUserId { get; set; } = 0;
     }
     public class AirTicketResByIdDto
     {

+ 72 - 0
OASystem/OASystem.Domain/ViewModels/Groups/AirTicketReservationsView.cs

@@ -50,4 +50,76 @@ namespace OASystem.Domain.ViewModels.Groups
         /// </summary>
         public int GWCRS { get; set; }
     }
+
+    public class AirTicketReservationsPayView
+    {
+        /// <summary>
+        /// 团组号
+        /// </summary>
+        public string TourCode { get; set; }
+        /// <summary>
+        /// 团组名称
+        /// </summary>
+        public string TeamName { get; set; }
+        /// <summary>
+        /// 城市A-B
+        /// </summary>
+        public string FlightsCity { get; set; }
+        /// <summary>
+        /// 航班说明
+        /// </summary>
+        public string FlightsDescription { get; set; }
+        /// <summary>
+        /// 航班号
+        /// </summary>
+        public string FlightsCode { get; set; }
+        /// <summary>
+        /// 舱位
+        /// </summary>
+        public string CTypeName { get; set; }
+        /// <summary>
+        /// 客人姓名
+        /// </summary>
+        public string ClientName { get; set; }
+        /// <summary>
+        /// 舱位人数
+        /// </summary>
+        public int ClientNum { get; set; }
+        /// <summary>
+        /// 单价
+        /// </summary>
+        public decimal PrePrice { get; set; }
+        /// <summary>
+        /// 总价
+        /// </summary>
+        public decimal Price { get; set; }
+        /// <summary>
+        /// 支付方式
+        /// </summary>
+        public string PayType { get; set; }
+        /// <summary>
+        /// 费用表示
+        /// </summary>
+        public string OrbitalPrivateTransfer { get; set; }
+        /// <summary>
+        /// 卡号
+        /// </summary>
+        public string BankNo { get; set; }
+        /// <summary>
+        /// 支付时间
+        /// </summary>
+        public DateTime CreateTime { get; set; }
+        /// <summary>
+        /// 收款方
+        /// </summary>
+        public string Payee { get; set; }
+        /// <summary>
+        /// 费用说明
+        /// </summary>
+        public string PriceDescription { get; set; }
+        /// <summary>
+        /// 币种
+        /// </summary>
+        public string CurrencyStr { get; set; }
+    }
 }

+ 41 - 3
OASystem/OASystem.Infrastructure/Repositories/Resource/AirTicketResRepository.cs

@@ -3,17 +3,22 @@ using MySqlX.XDevAPI.Relational;
 using OASystem.Domain;
 using OASystem.Domain.Dtos.Groups;
 using OASystem.Domain.Dtos.UserDto;
+using OASystem.Domain.Entities.Business;
 using OASystem.Domain.Entities.Customer;
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.Entities.Resource;
 using OASystem.Domain.ViewModels.Groups;
+using OASystem.Infrastructure.Tools;
 using Org.BouncyCastle.Asn1.Ocsp;
 using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using System.Security.Cryptography;
+using System.Security.Policy;
 using System.Text;
 using System.Threading.Tasks;
+using System.Web;
 using System.Xml.Linq;
 
 namespace OASystem.Infrastructure.Repositories.Resource
@@ -55,7 +60,7 @@ namespace OASystem.Infrastructure.Repositories.Resource
             }
         }
 
-        public async Task<Result> AirTicketResList(AirTicketResListDto dto)
+        public async Task<Result> AirTicketResList(AirTicketResDto dto)
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
 
@@ -278,8 +283,6 @@ namespace OASystem.Infrastructure.Repositories.Resource
             }
         }
 
-
-
         public async Task<Result> OpAirTicketRes(AirTicketResOpDto dto)
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
@@ -609,5 +612,40 @@ namespace OASystem.Infrastructure.Repositories.Resource
             }
             return result;
         }
+
+        /// <summary>
+        /// 导出机票费用报表
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        public async Task<Result> DeriveAirTicketRes(AirTicketResDto dto)
+        {
+            Result result = new Result() { Code = -2, Msg = "未知错误" };
+            try
+            {
+                string sql = string.Format(@"select d.TourCode,d.TeamName,a.FlightsCity,a.FlightsCode,a.FlightsDescription,(select Name from Sys_SetData where Id=a.cType) as 'CTypeName',a.ClientName,a.ClientNum,
+                                a.PrePrice,a.Price,(select Name from Sys_SetData where Id=c.PayDId) as 'PayType', case when 
+                                c.OrbitalPrivateTransfer=0 then '公转' when c.OrbitalPrivateTransfer=1 then '私转' end as OrbitalPrivateTransfer,c.BankNo,c.CreateTime,
+                                c.Payee,a.PriceDescription,(select Name from Sys_SetData where Id=a.Currency) as 'CurrencyStr'
+                                from Grp_AirTicketReservations a,Grp_CreditCardPayment c ,Grp_DelegationInfo d where  a.id=c.CId and d.Id=a.DIId  and a.isdel=0
+                                and a.DIId={0} Order By a.CreateTime desc", dto.DiId, 0);
+                List<AirTicketReservationsPayView>  _AirTicketReservations = _sqlSugar.SqlQueryable<AirTicketReservationsPayView>(sql).ToList();
+                if (_AirTicketReservations.Count != 0)
+                {
+                    Grp_DelegationInfo grp_Delegation =_sqlSugar.Queryable<Grp_DelegationInfo>().First(a => a.Id ==dto.DiId && a.IsDel==0);
+                    Sys_Users _Users= _sqlSugar.Queryable<Sys_Users>().First(a => a.Id ==dto.UserId && a.IsDel == 0);
+                    return result = new Result() { Code = 0, Msg = "成功", Data = new { Delegation = grp_Delegation, AirTicketRes = _AirTicketReservations, Users=_Users } };
+                }
+                else
+                {
+                    return result = new Result() { Code = -1, Msg = "暂无数据", Data = null };
+                }
+            }
+            catch (Exception)
+            {
+                return result = new Result() { Code = -2, Msg = "未知错误" };
+            }
+        }
     }
 }