Browse Source

费用审核 List 增加 支付类型、卡类型 显示字段

leiy 8 months ago
parent
commit
ab4ce64495

+ 4 - 1
OASystem/EntitySync/Program.cs

@@ -133,7 +133,10 @@ db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
     //typeof(Grp_VisaFeeInfo),  //签证费用info 
     //typeof(Grp_HotelInquiry),  //酒店询价 
     //typeof(Grp_HotelReservationsContent),  //酒店费用子表
-     typeof(Grp_VisitingClients),  //拜访团组客户
+     //typeof(Grp_VisitingClients),  //拜访团组客户
+     //typeof(Sys_Countries),  //洲
+     //typeof(Sys_Continent),  //国家
+     typeof(Sys_Cities),  //城市
 
 });
 Console.WriteLine("数据库结构同步完成!");

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

@@ -1419,6 +1419,9 @@ namespace OASystem.API.Controllers
                  */
                 var carFeeItems = await _groupRepository.Query<Sys_SetData>(s => s.STid == 83 && s.IsDel == 0).ToListAsync();
 
+
+                var initDatas = await _groupRepository.Query<Sys_SetData>(s => s.IsDel == 0).ToListAsync();
+
                 var cityData = await _groupRepository.Query<Grp_NationalTravelFee>(s => s.IsDel == 0).ToListAsync();
 
                 /*
@@ -1448,6 +1451,10 @@ namespace OASystem.API.Controllers
 
                     _detail.PriceName = priceModule;
 
+                    _detail.PayType = initDatas.Find(it => it.Id == entity.PayDId)?.Name ?? "-";
+                    _detail.CardType = initDatas.Find(it => it.Id == entity.CTDId)?.Name ?? "-";
+
+
                     /*
                      * 应付款金额	
                      */
@@ -1574,6 +1581,9 @@ namespace OASystem.API.Controllers
                                 var roomData = _HotelReservationsContents1.Find(it => it.PriceType == 1);
                                 if (roomData != null)
                                 {
+                                    _detail.PayType = initDatas.Find(it => it.Id == roomData.PayDId)?.Name ?? "-";
+                                    _detail.CardType = initDatas.Find(it => it.Id == roomData.CTDId)?.Name ?? "-";
+
                                     roomBool = roomData.IsOppay == 1 ? "是" : "否";
                                     roomFee = roomData.Price;
                                     var roomCurrData = currencyItems.Find(s => s.Id == roomData.Currency);
@@ -12016,7 +12026,6 @@ ORDER by  gctggrc.id DESC
 
         #endregion
 
-
         #region 酒店询价
         /// <summary>
         /// 酒店询价
@@ -12099,6 +12108,199 @@ ORDER by  gctggrc.id DESC
 
         #endregion
 
+
+        #region 下载匹配op行程单
+        /// <summary>
+        /// 匹配op行程单
+        /// Init
+        /// </summary>
+        /// <param name="dto">团组列表请求dto</param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostMateOpGroupInit(MateOpGroupInitDto dto)
+        {
+            if (dto.CurrUserId < 1) return Ok(JsonView(false, MsgTips.UserId));
+
+            bool isDepStatus = await GeneralMethod.IsMarketingStaff(dto.CurrUserId);
+            List<Grp_DelegationInfo> groupInfos = new List<Grp_DelegationInfo>();
+            if (isDepStatus)
+            {
+                groupInfos = await _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0 && it.JietuanOperator == dto.CurrUserId).OrderByDescending(it => it.CreateUserId).ToListAsync();
+            }
+            else
+            {
+                groupInfos = await _sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0).OrderByDescending(it => it.CreateUserId).ToListAsync();
+            }
+
+
+            var country = groupInfos.Select(it => it.VisitCountry).ToList();
+            List<string> countrys = new List<string>();
+            foreach (var item in country)
+            {
+                var data = _groupRepository.FormartTeamName(item);
+                var dataArray = _groupRepository.GroupSplitCountry(data);
+                if (dataArray.Count > 0) countrys.AddRange(dataArray);
+            }
+            countrys = countrys.Distinct().ToList();
+
+            for (int i = 0; i < countrys.Count; i++)
+            {
+                string item = countrys[i];
+                if (string.IsNullOrEmpty(item) || item.Contains("-"))
+                {
+                    countrys.Remove(item);
+                    i--;
+                }
+            }
+
+            var teamNames = groupInfos.Select(it => it.TeamName).ToList();
+
+            for (int i = 0; i < teamNames.Count; i++)
+            {
+                string item = teamNames[i];
+                if (string.IsNullOrEmpty(item) || item.Contains("-"))
+                {
+                    teamNames.Remove(item);
+                    i--;
+                }
+            }
+            return Ok(JsonView(true, "操作成功", new { countryDatas = countrys, teamNameDatas = teamNames }));
+               
+        }
+
+        /// <summary>
+        /// 匹配op行程单
+        /// 接团信息列表 Page
+        /// </summary>
+        /// <param name="dto">团组列表请求dto</param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostMateOpGroupPageList(MateOpGroupPageListDto dto)
+        {
+            #region  参数验证
+            if (dto.UserId < 1) return Ok(JsonView(false, "员工Id为空"));
+            if (dto.PageId < 1) return Ok(JsonView(false, "页面Id为空"));
+
+            PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
+            #region 页面操作权限验证
+            pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(dto.UserId, dto.PageId);
+
+
+            if (pageFunAuthView.CheckAuth == 0) return Ok(JsonView(false, "您没有查看权限"));
+            #endregion
+
+            #endregion
+            if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3) // web/Android
+            {
+                string sqlWhere = "";
+
+                if (!string.IsNullOrEmpty(dto.Country))
+                {
+                    sqlWhere += string.Format(@$" And di.VisitCountry Like '%{dto.Country}%'");
+                }
+
+                //TODO: Area 数据源不确定
+
+                if (!string.IsNullOrEmpty(dto.TeamName))
+                {
+                    sqlWhere += string.Format(@$" And di.TeamName Like '%{dto.Country}%'");
+                }
+
+
+                string sql = string.Format(@$"Select Row_Number,Id,SalesQuoteNo,TourCode,TeamTypeId, TeamType,
+                                             	TeamLevId,TeamLev,TeamName,ClientName,ClientUnit,
+                                             	VisitDate,VisitDays,VisitPNumber,JietuanOperatorId,
+                                             	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,JietuanOperator JietuanOperatorId,
+                                             	su.CnName JietuanOperator,IsSure,gdi.CreateTime
+                                             	From  Grp_DelegationInfo gdi
+                                             	Left Join Sys_SetData ssd On gdi.TeamDid = ssd.Id 
+                                             	Left Join Sys_SetData ssd1 On gdi.TeamLevSId = ssd1.Id
+                                             	Left Join Sys_Users su On gdi.JietuanOperator = su.Id
+                                             	Where gdi.IsDel = 0 {sqlWhere}
+                                             ) temp");
+
+                RefAsync<int> total = 0;//REF和OUT不支持异步,想要真的异步这是最优解
+                var _DelegationList = await _sqlSugar.SqlQueryable<DelegationListView>(sql).ToPageListAsync(dto.PageIndex, dto.PageSize, total);//ToPageAsync
+
+                #region 处理所属部门
+                /*
+                 * 1.sq 和 gyy 等显示 市场部
+                 * 2.王鸽和主管及张总还有管理员号统一国交部
+                 * 2-1.  4	管理员 ,21	张海麟
+                 */
+                List<int> userIds = _DelegationList.Select(it => it.JietuanOperatorId).ToList();
+                List<int> userIds1 = new List<int>() { 4, 21 };
+                var UserDepDatas = _sqlSugar.Queryable<Sys_Users>()
+                                            .LeftJoin<Sys_Department>((u, d) => u.DepId == d.Id)
+                                            .Where(u => u.IsDel == 0 && userIds.Contains(u.Id))
+                                            .Select((u, d) => new { UserId = u.Id, DepName = userIds1.Contains(u.Id) ? "国交部" : d.DepName })
+                                            .ToList();
+
+                foreach (var item in _DelegationList)
+                {
+                    item.Department = UserDepDatas.Find(it => item.JietuanOperatorId == it.UserId)?.DepName ?? "Unknown";
+                }
+                #endregion
+
+                //var _view = new
+                //{
+                //    PageFuncAuth = pageFunAuthView,
+                //    Data = _DelegationList
+                //};
+                return Ok(JsonView(true, "查询成功!", _DelegationList, total));
+            }
+            else
+            {
+                return Ok(JsonView(false, "查询失败"));
+            }
+        }
+
+
+        /// <summary>
+        /// 匹配op行程单
+        /// 行程单下载
+        /// </summary>
+        /// <param name="dto">团组列表请求dto</param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostMateOpGroupDownload(MateOpGroupDownloadDto dto)
+        {
+            #region  参数验证
+            if (dto.UserId < 1) return Ok(JsonView(false, "员工Id为空"));
+            if (dto.PageId < 1) return Ok(JsonView(false, "页面Id为空"));
+
+            PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
+            #region 页面操作权限验证
+            pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(dto.UserId, dto.PageId);
+
+
+            if (pageFunAuthView.FilesDownloadAuth == 0) return Ok(JsonView(false, "您没有文件下载权限"));
+            #endregion
+
+            #endregion
+            if (dto.PortType == 1 || dto.PortType == 2 || dto.PortType == 3) // web/Android
+            {
+                var res = ExportTravel(new InitOpTravelDto() { Diid = dto.diId });
+                return Ok(res.GetType().GetProperty("Value").GetValue(res, null));
+            }
+            else
+            {
+                return Ok(JsonView(false, "下载失败!"));
+            }
+        }
+
+
+        #endregion
+
+
         /// <summary>
         /// 报批行程初始化
         /// </summary>

+ 23 - 0
OASystem/OASystem.Api/OAMethodLib/GeneralMethod.cs

@@ -773,6 +773,29 @@ namespace OASystem.API.OAMethodLib
         }
 
         #endregion
+
+
+        #region 员工是否是市场部人员
+
+        /// <summary>
+        /// 验证市场部客户人员
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        public static async Task<bool> IsMarketingStaff(int userId)
+        {
+            var  userInfos = await _dirRep._sqlSugar
+                                          .Queryable<Sys_Users>()
+                                          .InnerJoin<Sys_Department>((u,d) => u.DepId == d.Id)
+                                          .Where((u,d) => u.IsDel == 0 && u.Id == userId && d.DepName.Contains("市场部"))
+                                          .ToListAsync();
+            if (userInfos.Count > 0) return true;
+
+            return false;
+        }
+
+        #endregion
+
         #endregion
 
         #region 团组汇率

+ 35 - 0
OASystem/OASystem.Domain/Dtos/Groups/MateOpTravelDto.cs

@@ -0,0 +1,35 @@
+using OASystem.Domain.ViewModels.System;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Dtos.Groups
+{
+    public class MateOpTravelDto
+    {
+    }
+
+    public class MateOpGroupInitDto
+    {
+        public int CurrUserId { get; set; }
+    }
+
+    public class MateOpGroupPageListDto: UserPageFuncDtoBase
+    {
+        public int PageIndex { get; set; } = 1;
+        public int PageSize { get; set; } = 10;
+
+        public string Country { get; set; }
+
+        public string Area { get; set; }
+
+        public string? TeamName { get; set; }
+    }
+
+    public class MateOpGroupDownloadDto : UserPageFuncDtoBase
+    {
+        public int diId { get; set; }
+    }
+}

+ 58 - 0
OASystem/OASystem.Domain/Entities/System/Sys_Cities.cs

@@ -0,0 +1,58 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.System
+{
+    /// <summary>
+    /// 城市
+    /// </summary>
+    public class Sys_Cities:EntityBase
+    {
+        /// <summary>
+        /// 国家Id
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int CountriesId { get; set; }
+
+        /// <summary>
+        /// 城市名称 CN
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string Name_CN { get; set; }
+
+        /// <summary>
+        /// 城市名称 EN
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "nvarchar(100)")]
+        public string Name_EN { get; set; }
+
+        /// <summary>
+        /// 父级Id
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int ParentId { get; set; }
+
+        /// <summary>
+        /// 城市等级
+        /// 1 省份 2 城市 3 区县
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public  int  Level { get; set; }
+
+        /// <summary>
+        /// 城市三字码
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(10)")]
+        public string ThreeCode { get; set; }
+
+        /// <summary>
+        /// 是否为省会城市/首都
+        /// 0 是 1 否
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int IsCapital { get; set; }
+    }
+}

+ 27 - 0
OASystem/OASystem.Domain/Entities/System/Sys_Continent.cs

@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.System
+{
+    /// <summary>
+    /// 洲
+    /// </summary>
+    [SugarTable("Sys_Continent")]
+    public class Sys_Continent:EntityBase
+    {
+        /// <summary>
+        /// 洲名称 中文
+        /// </summary>
+        [SugarColumn(IsNullable = true , ColumnDataType = "varchar(50)")]
+        public string Name_CN { get; set; }
+
+        /// <summary>
+        /// 洲名称 英文
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "nvarchar(50)")]
+        public string Name_EN { get; set; }
+    }
+}

+ 52 - 0
OASystem/OASystem.Domain/Entities/System/Sys_Countries.cs

@@ -0,0 +1,52 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.System
+{
+    /// <summary>
+    /// 国家
+    /// </summary>
+    [SugarTable("Sys_Countries")]
+    public class Sys_Countries: EntityBase
+    {
+        /// <summary>
+        /// 洲 Id
+        /// </summary>
+        [SugarColumn(IsNullable = true,ColumnDataType = "int")]
+        public int ContinentId { get; set; }
+
+        /// <summary>
+        /// 三字码
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(10)")]
+        public string ThreeCode { get; set; }
+
+        /// <summary>
+        /// 国家名称 CN 简称
+        /// </summary>
+        [SugarColumn(IsNullable = true,ColumnDataType = "varchar(50)")]
+        public string Name_CN { get; set; }
+
+        /// <summary>
+        /// 国家名称 CN 全称
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string Name_CN_Full { get; set; }
+
+        /// <summary>
+        /// 国家名称 EN 简称
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "nvarchar(50)")]
+        public string Name_EN { get; set; }
+
+        /// <summary>
+        /// 国家名称 EN 全称
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "nvarchar(100)")]
+        public string Name_EN_Full { get; set; }
+
+    }
+}

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

@@ -146,6 +146,16 @@ namespace OASystem.Domain.ViewModels.Groups
         /// </summary>
         public string Balance { get; set; }
 
+        /// <summary>
+        /// 支付类型
+        /// </summary>
+        public string PayType { get; set; }
+
+        /// <summary>
+        /// 卡类型
+        /// </summary>
+        public string CardType { get; set; }
+
         /// <summary>
         /// 申请人
         /// </summary>

+ 0 - 1
OASystem/OASystem.Infrastructure/Repositories/Financial/ForeignReceivablesRepository.cs

@@ -238,7 +238,6 @@ namespace OASystem.Infrastructure.Repositories.Financial
             return result;
         }
 
-
         /// <summary>
         /// 根据diid查询团组应收款项
         /// </summary>