Procházet zdrojové kódy

建团 按照国家 添加默认团组汇率
接团客户名单 添加

leiy před 1 rokem
rodič
revize
276f407f8c

+ 5 - 1
OASystem/EntitySync/Program.cs

@@ -1,6 +1,7 @@
 using OASystem.Domain.Entities;
 using OASystem.Domain.Entities.Business;
 using OASystem.Domain.Entities.Customer;
+using OASystem.Domain.Entities.District;
 using OASystem.Domain.Entities.Financial;
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.Entities.PersonnelModule;
@@ -118,6 +119,9 @@ db.CodeFirst.SetStringDefaultLength(50).BackupTable().InitTables(new Type[]
     //typeof(Grp_CarTouristGuideGroundReservationsContent),//
     //typeof(Fin_PaymentRefundAndOtherMoney),
     //typeof(Grp_InsuranceCost),
-    typeof(Grp_TourClientList) //接团客户名单
+    //typeof(Grp_TourClientList), //接团客户名单
+    typeof(Dis_Intercontinental), //洲
+    typeof(Dis_Country), //国家
+    typeof(Dis_City), //城市
 });
 Console.WriteLine("数据库结构同步完成!");

+ 63 - 8
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -66,6 +66,7 @@ namespace OASystem.API.Controllers
         private readonly MessageRepository _message;
         private readonly SqlSugarClient _sqlSugar;
         private readonly TourClientListRepository _tourClientListRep;
+        private readonly TeamRateRepository _teamRateRep;
 
         #region 成本相关
         private readonly CheckBoxsRepository _checkBoxs;
@@ -86,7 +87,7 @@ namespace OASystem.API.Controllers
             , DelegationVisaRepository delegationVisaRep, MessageRepository message, VisaPriceRepository visaPriceRep, CarTouristGuideGroundRepository carTouristGuideGroundRep,
             CheckBoxsRepository checkBoxs, GroupCostRepository GroupCostRepository, CostTypeHotelNumberRepository CostTypeHotelNumberRepository,
             GroupCostParameterRepository GroupCostParameterRepository, HotelPriceRepository hotelPriceRep, CustomersRepository customersRep, SetDataRepository setDataRep,
-            TourClientListRepository tourClientListRep)
+            TourClientListRepository tourClientListRep, TeamRateRepository teamRateRep)
         {
             _mapper = mapper;
             _grpScheduleRep = grpScheduleRep;
@@ -116,6 +117,7 @@ namespace OASystem.API.Controllers
             _customersRep = customersRep;
             _setDataRep = setDataRep;
             _tourClientListRep = tourClientListRep;
+            _teamRateRep = teamRateRep;
         }
 
         #region 流程管控
@@ -397,6 +399,15 @@ namespace OASystem.API.Controllers
                     return Ok(JsonView(false, groupData.Msg));
                 }
 
+                //添加时 默认加入团组汇率
+                if (dto.Status == 1)
+                {
+                    int diId = groupData.Data;
+
+                    GeneralMethod.PostGroupRateAddInit(dto.UserId, diId);
+                }
+
+
                 return Ok(JsonView(true));
             }
             catch (Exception ex)
@@ -408,6 +419,53 @@ namespace OASystem.API.Controllers
             }
         }
 
+        /// <summary>
+        /// 建团添加默认工作人员团组权限测试
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostGroupAuthAddInit(int userId, int diId)
+        {
+            try
+            {
+                GeneralMethod.PostGroupAuthAddInit(userId, diId);
+
+                return Ok(JsonView(true));
+            }
+            catch (Exception ex)
+            {
+
+                Logs(ex.Message);
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+
+        /// <summary>
+        /// 建团添加默认币种测试
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> GroupOperation11(int userId,int diId)
+        {
+            try
+            {
+                 GeneralMethod.PostGroupRateAddInit(userId, diId);
+
+                return Ok(JsonView(true));
+            }
+            catch (Exception ex)
+            {
+
+                Logs(ex.Message);
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
         /// <summary>
         /// 接团信息 操作(删除)
         /// </summary>
@@ -5443,7 +5501,6 @@ namespace OASystem.API.Controllers
             return Ok(JsonView(viewData.Data));
         }
 
-
         /// <summary>
         /// 接团客户名单
         /// 基础数据 Init
@@ -5453,7 +5510,6 @@ namespace OASystem.API.Controllers
         [HttpPost]
         public async Task<IActionResult> PostTourClientListBasicDataInit(TourClientListBasicDataInitDto _dto)
         {
-
             #region  参数验证
             if (_dto.UserId < 1) return Ok(JsonView(false, "请传入有效的UserId参数"));
             if (_dto.PageId < 1) _dto.PageId = 104; //接团客户名单PageId
@@ -5481,7 +5537,7 @@ namespace OASystem.API.Controllers
         /// 接团客户名单
         /// 根据 Id查询 Details
         /// </summary>
-        /// <param name="dto"></param>
+        /// <param name="_dto"></param>
         /// <returns></returns>
         [HttpPost]
         public async Task<IActionResult> PostTourClientListDetails(TourClientListDetailsDto _dto)
@@ -5513,14 +5569,13 @@ namespace OASystem.API.Controllers
 
         /// <summary>
         /// 接团客户名单
-        /// 根据 Id查询 Details
+        /// Add Or Edit
         /// </summary>
-        /// <param name="dto"></param>
+        /// <param name="_dto"></param>
         /// <returns></returns>
         [HttpPost]
         public async Task<IActionResult> PostTourClientListAddOrEdit(TourClientListAddOrEditDto _dto)
         {
-
             #region  参数验证
             if (_dto.UserId < 1) return Ok(JsonView(false, "请传入有效的UserId参数"));
             if (_dto.PageId < 1) _dto.PageId = 104; //接团客户名单PageId
@@ -5543,7 +5598,7 @@ namespace OASystem.API.Controllers
 
             #endregion
 
-            var viewData = await _tourClientListRep._Details(_dto.PortType, _dto.Id);
+            var viewData = await _tourClientListRep._AddOrEdit(_dto);
             if (viewData.Code != 0)
             {
                 return Ok(JsonView(false, viewData.Msg));

+ 4 - 5
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -401,7 +401,7 @@ namespace OASystem.API.Controllers
                 #region 计算工资
 
                 //月工资
-                decimal salary = pm_WageSheet.Basic + pm_WageSheet.Floats + pm_WageSheet.PostAllowance + pm_WageSheet.InformationSecurityFee + pm_WageSheet.OtherSubsidies + pm_WageSheet.OtherHandle;
+                decimal salary = pm_WageSheet.Basic + pm_WageSheet.Floats + pm_WageSheet.PostAllowance + pm_WageSheet.InformationSecurityFee + pm_WageSheet.OtherSubsidies;
                 //扣款合计
                 decimal totalDeduction = pm_WageSheet.SickLeave + pm_WageSheet.SomethingFalse + pm_WageSheet.LateTo + pm_WageSheet.LeaveEarly + pm_WageSheet.Absenteeism + pm_WageSheet.NotPunch +
                                          pm_WageSheet.ReservedFunds + pm_WageSheet.WithholdingInsurance + pm_WageSheet.OtherDeductions + pm_WageSheet.OtherDeductions;
@@ -410,20 +410,19 @@ namespace OASystem.API.Controllers
                 if (pm_WageSheet.RegularDays >= pm_WageSheet.WorkDays )
                 {
                     pm_WageSheet.RegularDays = pm_WageSheet.WorkDays;
-                    salary = salary + pm_WageSheet.Mealsupplement;
+                    salary = salary + pm_WageSheet.Mealsupplement + pm_WageSheet.OtherHandle;
                 }
                 else
                 {
                     if (dto.UserId == 21) //21==张海麟
                     {
-                        salary = salary + pm_WageSheet.Mealsupplement;
+                        salary = salary + pm_WageSheet.Mealsupplement + pm_WageSheet.OtherHandle;
                     }
                     else
                     {
-                        salary = PayrollComputation.ConvertToDecimal(salary / pm_WageSheet.WorkDays * pm_WageSheet.RegularDays + pm_WageSheet.Mealsupplement);
+                        salary = PayrollComputation.ConvertToDecimal(salary / pm_WageSheet.WorkDays * pm_WageSheet.RegularDays + pm_WageSheet.Mealsupplement + pm_WageSheet.OtherHandle);
                     }    
                 }
-
                 
                 decimal actualTotal = salary - totalDeduction;
                 pm_WageSheet.Should = salary;

+ 181 - 4
OASystem/OASystem.Api/OAMethodLib/GeneralMethod.cs

@@ -1,17 +1,29 @@
-using OASystem.Domain;
+using Microsoft.AspNetCore.Mvc.TagHelpers;
+using OASystem.API.OAMethodLib.JuHeAPI;
+using OASystem.Domain;
+using OASystem.Domain.Entities.District;
+using OASystem.Domain.Entities.Financial;
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.Entities.PersonnelModule;
 using OASystem.Domain.Entities.System;
+using OASystem.Domain.ViewModels.JuHeExchangeRate;
 using OASystem.Domain.ViewModels.PersonnelModule;
 using OASystem.Infrastructure.Repositories.Groups;
+using System.Collections.Generic;
 using System.IdentityModel.Tokens.Jwt;
 using System.Security.Claims;
 
 namespace OASystem.API.OAMethodLib
 {
-  
+
+
     public static class GeneralMethod
     {
+        //团组信息
+        private readonly static DelegationInfoRepository _dirRep = AutofacIocManager.Instance.GetService<DelegationInfoRepository>();
+        private readonly static TeamRateRepository _teamRateRep = AutofacIocManager.Instance.GetService<TeamRateRepository>();
+        private readonly static IJuHeApiService _juHeApiService = AutofacIocManager.Instance.GetService<IJuHeApiService>();
+        private readonly static SetDataRepository _setDataRep = AutofacIocManager.Instance.GetService<SetDataRepository>();
 
         #region 消息
 
@@ -131,8 +143,6 @@ namespace OASystem.API.OAMethodLib
         #endregion
 
         #region 用户页面操作功能 权限
-        //团组信息
-        private readonly static DelegationInfoRepository _dirRep = AutofacIocManager.Instance.GetService<DelegationInfoRepository>();
 
         /// <summary>
         /// 用户页面操作功能(可使用)
@@ -232,5 +242,172 @@ namespace OASystem.API.OAMethodLib
 
 
         #endregion
+
+        #region 团组相关 
+
+        #region 建团按国家默认添加汇率 / 默认权限分配
+
+
+        /// <summary>
+        /// 团组汇率 
+        /// 建团时 添加基础汇率 CNY
+        /// 按国家 添加 默认币种
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="diId"></param>
+        /// <returns></returns>
+        public static async Task<Result> PostGroupRateAddInit(int userId, int diId)
+        {
+
+            Result result = new() { Code = -2 };
+
+            if (userId < 0)
+            {
+                result.Msg = string.Format(@"请传入正确的userId");
+                return result;
+            }
+
+            if (diId < 0)
+            {
+                result.Msg = string.Format(@"请传入正确的DiId");
+                return result;
+            }
+            //美元(USD):1.0000|欧元(EUR):1.0000|墨西哥比索(MXN):1.0000
+            string CNYInit = string.Format(@"人名币(CNY):1.0000");
+
+            var gropInfo = await _dirRep._sqlSugar.Queryable<Grp_DelegationInfo>().Where( it => it.IsDel == 0 && it.Id == diId).FirstAsync();
+            if (gropInfo != null)
+            {
+                if (!string.IsNullOrEmpty(gropInfo.VisitCountry))
+                {
+                    var countryCueencyCodes = await _setDataRep.GetSetDataBySTId(_setDataRep, 66);
+
+                    string countrys = gropInfo.VisitCountry;
+                    string[] countryItems = new string[] { };
+                    if (countrys.Contains("|"))
+                    {
+                        countryItems = countrys.Split('|');
+                    }
+                    else
+                    {
+                        countryItems = new string[] { countrys };
+                    }
+
+                    var countryInfos = await _dirRep._sqlSugar.Queryable<Dis_Country>().Where(it => it.IsDel == 0).ToListAsync();
+
+                    List<string> currencyCodes = new List<string>();
+                    if (countryItems.Length > 0)
+                    {
+                        foreach (var item in countryItems)
+                        {
+                            Dis_Country country = new Dis_Country();
+                            country = countryInfos.Where(it => it.CnShortName.Equals(item)).FirstOrDefault();
+                            if (country != null)
+                            {
+                                if (!item.Equals("中国"))
+                                {
+                                    currencyCodes.Add(country.CurrencyCode);
+                                }
+                            }
+                        }
+                    }
+
+                    if (currencyCodes.Count > 0)
+                    {
+                        List<ExchangeRateModel> exchangeRateModels = await _juHeApiService.PostItemRateAsync(currencyCodes.ToArray());
+                        if (exchangeRateModels.Count > 0)
+                        {
+                            var codes = await _dirRep._sqlSugar.Queryable<Sys_SetData>().Where(it => it.IsDel == 0 && it.IsDel == 0).ToListAsync();
+                            for (int i = 0; i < exchangeRateModels.Count; i++)
+                            {
+                                string currencyName = exchangeRateModels[i].Name;
+                                string code = "";
+                                var currencyData = codes.Where(it => it.IsDel == 0 && it.Remark == currencyName).FirstOrDefault();
+                                if (currencyData != null) { 
+                                    code = currencyData.Name;
+                                    CNYInit += string.Format(@"|{0}({1}):{2}", exchangeRateModels[i].Name, code, exchangeRateModels[i].MSellPri);
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+            List<Grp_TeamRate> grp_TeamRates = new List<Grp_TeamRate>()
+            {
+                new Grp_TeamRate(){ DiId = diId,CTable = 76,Remark = CNYInit,CreateUserId = userId, IsDel = 0 }, //76	酒店预订
+                new Grp_TeamRate(){ DiId = diId,CTable = 77,Remark = CNYInit,CreateUserId = userId, IsDel = 0 }, //77	行程
+                new Grp_TeamRate(){ DiId = diId,CTable = 79,Remark = CNYInit,CreateUserId = userId, IsDel = 0 }, //79	车/导游地接
+                new Grp_TeamRate(){ DiId = diId,CTable = 80,Remark = CNYInit,CreateUserId = userId, IsDel = 0 }, //80	签证
+                new Grp_TeamRate(){ DiId = diId,CTable = 82,Remark = CNYInit,CreateUserId = userId, IsDel = 0 }, //82	团组客户保险
+                new Grp_TeamRate(){ DiId = diId,CTable = 85,Remark = CNYInit,CreateUserId = userId, IsDel = 0 }, //85	机票预订
+                new Grp_TeamRate(){ DiId = diId,CTable = 98,Remark = CNYInit,CreateUserId = userId, IsDel = 0 }, //98	其他款项
+                new Grp_TeamRate(){ DiId = diId,CTable = 285,Remark = CNYInit,CreateUserId = userId, IsDel = 0 }, //285	收款退还
+                new Grp_TeamRate(){ DiId = diId,CTable = 751,Remark = CNYInit,CreateUserId = userId, IsDel = 0 }, //751    酒店早餐
+            };
+
+            var res = _teamRateRep._sqlSugar.Insertable(grp_TeamRates).ExecuteCommand();
+            if (res < 0)
+            {
+
+                result.Msg = string.Format(@"添加失败!");
+                return result;
+            }
+
+            result.Code = 0;
+            result.Msg = string.Format(@"操作成功!");
+
+            return result;
+
+        }
+
+        /// <summary>
+        /// 团组汇率 
+        /// 建团时 默认按照岗位分配权限
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="diId"></param>
+        /// <param name="companyId"></param>
+        /// <returns></returns>
+        public static async Task<Result> PostGroupAuthAddInit(int userId, int diId, int companyId = 2)
+        {
+
+            Result result = new() { Code = -2 };
+
+            if (userId < 0)
+            {
+                result.Msg = string.Format(@"请传入正确的userId");
+                return result;
+            }
+
+            if (companyId < 0)
+            {
+                result.Msg = string.Format(@"请传入正确的companyId");
+                return result;
+            }
+
+            if (diId < 0)
+            {
+                result.Msg = string.Format(@"请传入正确的DiId");
+                return result;
+            }
+
+            //var depData = await _teamRateRep._sqlSugar.Queryable<Sys_Department>().Where(it => it.IsDel == 0 && it.CompanyId == companyId && it.DepName.Equals("国交部")).FirstAsync();
+            //if (depData != null)
+            //{
+            //    var userData = await _teamRateRep._sqlSugar.Queryable<Sys_Users>().Where(it => it.IsDel == 0 && it.CompanyId == companyId && it.DepId == depData.Id).ToListAsync();
+
+            //}
+
+
+            result.Code = 0;
+            result.Msg = string.Format(@"操作成功!");
+
+            return result;
+
+        }
+
+        #endregion
+        #endregion
     }
 }

+ 1 - 1
OASystem/OASystem.Api/OAMethodLib/JuHeAPI/IJuHeApiService.cs

@@ -25,7 +25,7 @@ namespace OASystem.API.OAMethodLib.JuHeAPI
         /// 获取汇率 Item
         /// </summary>
         /// <returns></returns>
-        Task<Result> PostItemRateAsync(string[] currencyCodes);
+        Task<List<ExchangeRateModel>> PostItemRateAsync(string[] currencyCodes);
 
         /// <summary>
         /// 获取汇率转换结果

+ 16 - 12
OASystem/OASystem.Api/OAMethodLib/JuHeAPI/JuHeApiService.cs

@@ -161,33 +161,37 @@ namespace OASystem.API.OAMethodLib.JuHeAPI
         /// </summary>
         /// <param name="currencyCodes">币种codes</param>
         /// <returns></returns>
-        public async Task<Result> PostItemRateAsync(string[] currencyCodes)
+        public async Task<List<ExchangeRateModel>> PostItemRateAsync(string[] currencyCodes)
         {
 
-            var result = new Result();
-            if (currencyCodes.Length  <= 0  || currencyCodes.Contains("CNY"))
+            List<ExchangeRateModel> result = new List<ExchangeRateModel>();
+            if (currencyCodes.Length  <= 0 )
             {
-                result.Msg = "币种Code集合不能为空!";
                 return result;
             }
 
             var resultData = await GetExchangeRateAsync();
             var rateCurrencyData = AppSettingsHelper.Get<RateCurrencyModel>("RateCurrency");
-            var currencyModel = rateCurrencyData.Where(a => currencyCodes.Any(b => a.CurrencyCode == b)).FirstOrDefault();
-            if (currencyModel != null)
+            var currencyModel = rateCurrencyData.Where(a => currencyCodes.Any(b => a.CurrencyCode == b)).ToList();
+            if (currencyModel.Count > 0)
             {
                 if (resultData.Resultcode == "200")
                 {
                     if (resultData.Result != null)
                     {
-                        result.Code = 0;
-                        result.Data = ((List<ExchangeRateModel>)resultData.Result).Where(a => a.Name == currencyModel.CurrencyName).FirstOrDefault();
+                        var data = (List<ExchangeRateModel>)resultData.Result;
+
+                        foreach (var item in currencyModel)
+                        {
+                            ExchangeRateModel exchangeRateModel = data.Where(it => it.Name.Equals(item.CurrencyName)).FirstOrDefault();
+                            if (exchangeRateModel != null )
+                            {
+                                result.Add(exchangeRateModel);
+                            }
+                        }
+                        //result  = ((List<ExchangeRateModel>)resultData.Result).Where(a => a.Name == currencyModel.CurrencyName).ToList();
                     }
                 }
-                else
-                {
-                    result.Msg = resultData.Reason;
-                }
             }
             return result;
         }

+ 4 - 4
OASystem/OASystem.Api/OAMethodLib/PayrollComputation.cs

@@ -142,7 +142,7 @@ namespace OASystem.API.OAMethodLib
 
                     //月 - 应发工资
                     decimal amountPayable = pm_wsInfo.Basic + pm_wsInfo.Floats + pm_wsInfo.PostAllowance + pm_wsInfo.InformationSecurityFee + 
-                                            pm_wsInfo.OtherSubsidies + pm_wsInfo.OtherHandle;
+                                            pm_wsInfo.OtherSubsidies;
 
                     // 日薪 = *计算方式:日平均工资 = 月工资/当月应出勤天数。
                     decimal dailyWage = amountPayable / work_days;
@@ -1111,17 +1111,17 @@ namespace OASystem.API.OAMethodLib
                     if (dk_work_days >= work_days)
                     {
                         dk_work_days = work_days;
-                        salaryTotal = amountPayable + mealTotal;    //应发合计
+                        salaryTotal = amountPayable + mealTotal + pm_wsInfo.OtherHandle;    //应发合计
                     }
                     else
                     {
                         if (itemName.Equals("张海麟"))
                         {
-                            salaryTotal = amountPayable + mealTotal;    //应发合计
+                            salaryTotal = amountPayable + mealTotal + pm_wsInfo.OtherHandle;    //应发合计
                         }
                         else
                         {
-                            salaryTotal = (dk_work_days * dailyWage) + mealTotal;    //应发合计
+                            salaryTotal = (dk_work_days * dailyWage) + mealTotal + pm_wsInfo.OtherHandle;    //应发合计
                         }
                             
                     }

+ 18 - 1
OASystem/OASystem.Domain/Dtos/Groups/TourClientListDto.cs

@@ -46,10 +46,17 @@ namespace OASystem.Domain.Dtos.Groups
     {
         /// <summary>
         /// 数据Id
-        /// Id==0 Add Id>0 Update Id<0 无效
+        /// Id==0 Add 
+        /// Id>0 Update 
+        /// Id<0 无效
         /// </summary>
         public int Id { get; set; }
 
+        /// <summary>
+        /// 团组Id
+        /// </summary>
+        public int DiId { get; set; }
+
         /// <summary>
         /// 姓
         /// </summary>
@@ -72,6 +79,11 @@ namespace OASystem.Domain.Dtos.Groups
         /// </summary>
         public int Sex { get; set; }
 
+        /// <summary>
+        /// 手机号
+        /// </summary>
+        public string? Phone { get; set; }
+
         /// <summary>
         /// 公司名全称
         /// </summary>
@@ -87,6 +99,11 @@ namespace OASystem.Domain.Dtos.Groups
         /// </summary>
         public string? IDCardNo { get; set; }
 
+        /// <summary>
+        /// 手机号
+        /// </summary>
+        public string? Tel { get; set; }
+
         /// <summary>
         /// 生日
         /// </summary>

+ 57 - 0
OASystem/OASystem.Domain/Entities/District/Dis_City.cs

@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.District
+{
+    /// <summary>
+    /// 地区 城市
+    /// </summary>
+    [SugarTable("Dis_City")]
+    public class Dis_City : EntityBase
+    {
+        /// <summary>
+        /// 国家表Id
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int CountryId { get; set; }
+
+        /// <summary>
+        /// 城市名称 中文
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string? CnName { get; set; }
+
+        /// <summary>
+        /// 城市名称 英文
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string? EnName { get; set; }
+
+        /// <summary>
+        /// 城市三字码 机场三字码
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
+        public string? ThreeCharacterCode { get; set; }
+
+        /// <summary>
+        /// 城市四字码
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(20)")]
+        public string? FourCharacterCode { get; set; }
+
+        /// <summary>
+        /// 城市机场中文名称
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string? CnAirportName { get; set; }
+
+        /// <summary>
+        /// 城市机场英名称
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string? EnAirportName { get; set; }
+    }
+}

+ 46 - 0
OASystem/OASystem.Domain/Entities/District/Dis_Country.cs

@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.District
+{
+
+    /// <summary>
+    /// 地区 国家表
+    /// </summary>
+    [SugarTable("Dis_Country")]
+    public class Dis_Country : EntityBase
+    {
+        /// <summary>
+        /// 洲际表Id
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int IntercontinentalId { get; set; }
+
+        /// <summary>
+        /// 国家名称 全称
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string? FullName { get; set; }
+
+
+        /// <summary>
+        /// 国家名称 简称 中文
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string? CnShortName { get; set; }
+
+        /// <summary>
+        /// 国家名称 简称 英文
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string? EnShortName { get; set; }
+
+        /// <summary>
+        /// 国家币种三字码Code 
+        /// </summary>
+        public string? CurrencyCode { get; set; }
+    }
+}

+ 32 - 0
OASystem/OASystem.Domain/Entities/District/Dis_Intercontinental.cs

@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.Entities.District
+{
+    /// <summary>
+    /// 地区 洲际表
+    /// </summary>
+    [SugarTable("Dis_Intercontinental")]
+    public class Dis_Intercontinental :EntityBase
+    {
+        /// <summary>
+        /// 洲际名称 全称
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string? FullName { get; set; }
+        /// <summary>
+        /// 洲际名称 中文
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
+        public string? CnShortName { get; set; }
+
+        /// <summary>
+        /// 洲际名称 英文
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(100)")]
+        public string? EnShortName { get; set; }
+    }
+}

+ 1 - 2
OASystem/OASystem.Domain/ViewModels/Groups/HotelReservationsByDiIdView.cs

@@ -84,7 +84,6 @@ namespace OASystem.Domain.ViewModels.Groups
         /// </summary>
         public int IsAuditGM { get; set; }
 
-
         /// <summary>
         /// 总经理审核状态
         /// 0 未审核 1 已审核 2 未通过 4 自动审核
@@ -92,7 +91,7 @@ namespace OASystem.Domain.ViewModels.Groups
         public string IsAuditGMStr { get {
             
                 string? auditStatus = " - ";
-                if (IsAuditGM == 1) auditStatus = "未审核";
+                if (IsAuditGM == 0) auditStatus = "未审核";
                 else if (IsAuditGM == 1) auditStatus = "已审核";
                 else if(IsAuditGM == 2) auditStatus = "未通过";
                 else if (IsAuditGM == 4) auditStatus = "自动审核";

+ 5 - 0
OASystem/OASystem.Domain/ViewModels/Groups/TourClientListView.cs

@@ -120,6 +120,11 @@ namespace OASystem.Domain.ViewModels.Groups
             }
         }
 
+        /// <summary>
+        /// 手机号
+        /// </summary>
+        public string? Phone { get; set; }
+
         /// <summary>
         /// 公司名全称
         /// </summary>

+ 0 - 2
OASystem/OASystem.Domain/ViewModels/System/SetDataView.cs

@@ -71,8 +71,6 @@ namespace OASystem.Domain.ViewModels.System
         public string? Remark { get; set; }
     }
 
-
-
     public class SetDataAndPageInfoView
     {
         /// <summary>

+ 18 - 4
OASystem/OASystem.Infrastructure/Repositories/Groups/DelegationInfoRepository.cs

@@ -30,14 +30,17 @@ namespace OASystem.Infrastructure.Repositories.Groups
         private readonly SetDataRepository _setDataRepository;
         private readonly UsersRepository _usersRepository;
         private readonly TaskAssignmentRepository _taskAssignmentRep;
+        //private readonly TeamRateRepository _teamRateRep;
         //public readonly Logs _logs;
 
-        public DelegationInfoRepository(SqlSugarClient sqlSugar, SetDataRepository setDataRepository, UsersRepository usersRepository, TaskAssignmentRepository taskAssignmentRep)
+        public DelegationInfoRepository(SqlSugarClient sqlSugar, SetDataRepository setDataRepository, UsersRepository usersRepository, 
+            TaskAssignmentRepository taskAssignmentRep)
             : base(sqlSugar)
         {
             _setDataRepository = setDataRepository;
             _usersRepository = usersRepository;
             _taskAssignmentRep = taskAssignmentRep;
+            //_teamRateRep = teamRateRep;
         }
 
         #region 团组信息 团组详情共享Api
@@ -269,7 +272,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
             }
 
             return result;
-
         }
 
         /// <summary>
@@ -369,6 +371,18 @@ namespace OASystem.Infrastructure.Repositories.Groups
                     //    }
                     //}
 
+                    string countrys = string.Empty;
+                    string countryReq = dto.VisitCountry;
+                    if (!string.IsNullOrEmpty(countryReq)) 
+                    {
+                        if (countryReq.Contains(",")) countrys = countryReq.Replace(',','|');
+                        else if (countryReq.Contains(",")) countrys = countryReq.Replace(',', '|');
+                        else if (countryReq.Contains(" ")) countrys = countryReq.Replace(' ', '|');
+                        else if (countryReq.Contains("、")) countrys = countryReq.Replace('、', '|');
+                        else if (countryReq.Contains(".")) countrys = countryReq.Replace('.', '|');
+                        else countrys = countryReq;
+                    }
+
                     Grp_DelegationInfo delegationInfo = new Grp_DelegationInfo()
                     {
                         SalesQuoteNo = dto.SalesQuoteNo,
@@ -378,7 +392,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                         TeamName = dto.TeamName,
                         TeamDid = dto.TeamDid,
                         VisitDate = Convert.ToDateTime(dto.VisitDate),
-                        VisitCountry = dto.VisitCountry,
+                        VisitCountry = countrys,
                         VisitPurpose = dto.VisitPurpose,
                         VisitDays = dto.VisitDays,
                         VisitPNumber = dto.VisitPNumber,
@@ -413,12 +427,12 @@ namespace OASystem.Infrastructure.Repositories.Groups
                         OpRoyaltyRemark=dto.opRoyaltyRemark
                     };
 
-                    Log.Information("添加:"+ JsonConvert.SerializeObject(delegationInfo));
                     var addId = await _sqlSugar.Insertable(delegationInfo).ExecuteReturnIdentityAsync();
                     if (addId > 0)
                     {
                         result.Code = 0;
                         result.Msg = "添加成功!";
+                        result.Data = addId;
                     }
                     else
                     {

+ 15 - 1
OASystem/OASystem.Infrastructure/Repositories/Groups/HotelPriceRepository.cs

@@ -916,13 +916,25 @@ namespace OASystem.Infrastructure.Repositories.Groups
                 _CreditCardPayment = _mapper.Map<Grp_CreditCardPayment>(_dto);
 
                 _HotelReservations.DiId = _dto.DiId;
+                _HotelReservations.CardPriceCurrency = _dto.CTDId;
                 _HotelReservations.CreateUserId = _dto.UserId;
                 _HotelReservations.Remark = _dto.HotelRemark;
 
+                if (portType == 2 || portType == 3)
+                {
+                    string checkNo = string.Empty;
+                    Result checkNoRes = await _CreateCheckVolumeNo(_dto.DiId);
+                    if (checkNoRes.Code == 0) 
+                    {
+                        checkNo = checkNoRes.Data;
+                    }
+                }
+
                 #region CCP 表参数 
                 _CreditCardPayment.CreateUserId = _dto.UserId;
                 _CreditCardPayment.DIId = _dto.DiId;
                 _CreditCardPayment.CTable = 76;
+                _CreditCardPayment.CTDId = _dto.CTDId;
                 _CreditCardPayment.PayPercentage = 100.00M;
                 _CreditCardPayment.PayThenMoney = _CreditCardPayment.PayMoney;
 
@@ -1018,6 +1030,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                                                          it.CheckNumber,
                                                          it.ReservationsWebsite,
                                                          it.ReservationsNo,
+                                                         it.DetermineNo,
                                                          it.City,
                                                          it.HotelName,
                                                          it.HotelTel,
@@ -1071,6 +1084,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                         int creditCardStatus = await _sqlSugar.Updateable<Grp_CreditCardPayment>(_CreditCardPayment)
                                                     .UpdateColumns(it => new
                                                     {
+                                                       it.CTDId,
                                                        it.PayDId,
                                                        it.ConsumptionPatterns,
                                                        it.ConsumptionDate,
@@ -1081,6 +1095,7 @@ namespace OASystem.Infrastructure.Repositories.Groups
                                                        it.RMBPrice,
                                                        it.BankNo,
                                                        it.CardholderName,
+                                                       it.CompanyBankNo,
                                                        it.OtherBankName,
                                                        it.OtherSideNo,
                                                        it.OtherSideName,
@@ -1096,7 +1111,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
                             _sqlSugar.RollbackTran(); //回滚
                             return _result;
                         }
-
                     }
 
                     _result.Msg = "操作成功!";

+ 21 - 4
OASystem/OASystem.Infrastructure/Repositories/Groups/TeamRateRepository.cs

@@ -3,7 +3,9 @@ using OASystem.Domain;
 using OASystem.Domain.Dtos.Financial;
 using OASystem.Domain.Dtos.Groups;
 using OASystem.Domain.Entities.Financial;
+using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.ViewModels.Financial;
+using OASystem.Domain.ViewModels.Groups;
 using OASystem.Infrastructure.Repositories.System;
 using Serilog;
 using SqlSugar;
@@ -329,6 +331,22 @@ namespace OASystem.Infrastructure.Repositories.Groups
                             teamRateDescViews.Add(rateDescView);
                         }
                     }
+                    else
+                    {
+                        if (!string.IsNullOrEmpty(item.Remark))
+                        {
+                            string[] currency1 = item.Remark.Split(":");
+                            string[] currency2 = currency1[0].Split("(");
+
+                            TeamRateDescView rateDescView = new TeamRateDescView()
+                            {
+                                CurrencyCode = currency2[1].Replace(")", "").TrimEnd(),
+                                CurrencyName = currency2[0],
+                                Rate = decimal.Parse(currency1[1]),
+                            };
+                            teamRateDescViews.Add(rateDescView);
+                        }
+                    }
 
                     #endregion
 
@@ -357,7 +375,6 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
         }
 
-
         /// <summary>
         /// 团组汇率 更新 or 添加
         /// </summary>
@@ -365,15 +382,12 @@ namespace OASystem.Infrastructure.Repositories.Groups
         /// <returns></returns>
         public async Task<Result> PostGroupRateUpdate(TeamRateUpdateDto dto)
         {
-
             Result result = new() { Code = -2 };
-
             int addCount = 0, updateCount = 0;
             if (dto.PortType == 1)
             {
                 try
                 {
-
                     _sqlSugar.BeginTran();
                     int res = -1;
                     foreach (TeamRateUpdateInfo item in dto.teamRateUpdateInfos)
@@ -459,6 +473,9 @@ namespace OASystem.Infrastructure.Repositories.Groups
 
         }
 
+        
+
+
         /// <summary>
         /// 团组汇率 Rep
         /// 根据团组Id 查询汇率

+ 84 - 25
OASystem/OASystem.Infrastructure/Repositories/Groups/TourClientListRepository.cs

@@ -1,8 +1,11 @@
 using AutoMapper;
 using OASystem.Domain;
+using OASystem.Domain.Dtos.Groups;
+using OASystem.Domain.Entities.Customer;
 using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.ViewModels.Groups;
 using OASystem.Infrastructure.Tools;
+using Org.BouncyCastle.Utilities.Encoders;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -136,40 +139,96 @@ namespace OASystem.Infrastructure.Repositories.Groups
         /// <param name="portId"></param>
         /// <param name="id"></param>
         /// <returns></returns>
-        public async Task<Result> _AddOrEdit(int portId, int id)
+        public async Task<Result> _AddOrEdit(TourClientListAddOrEditDto dto)
         {
-            if (portId == 1 || portId == 2 || portId == 3) // 1 web 2 Android 3 ios
+            if (dto.Id < 0) // 1 web 2 Android 3 ios
             {
-                string sql = string.Format(@"Select tcl.Id,tcl.DiId,temp.*,tcl.ShippingSpaceTypeId,tcl.ShippingSpaceSpecialNeeds,
-                                             tcl.HotelSpecialNeeds,tcl.MealSpecialNeeds,tcl.Remark
-                                             From Grp_TourClientList tcl
-                                             Left Join 
-	                                             (Select dc.Id As DcId,dc.LastName,dc.FirstName,dc.Pinyin,dc.Sex,ccom.CompanyFullName,dc.Job,
-	                                                 cc1.CertNo As IDCardNo,dc.Phone,dc.BirthDay,cc2.PassportType,cc2.CertNo As PassportNo,cc2.Country,
-	                                                 cc2.Area,cc2.IssueDt,cc2.ExpiryDt
-	                                                 From Crm_DeleClient dc
-	                                                 Left Join Crm_CustomerCompany ccom On dc.CrmCompanyId = ccom.Id  And ccom.IsDel = 0
-	                                                 Left Join Crm_CustomerCert cc1 On dc.Id = cc1.DcId And cc1.SdId = 773 And cc1.IsDel = 0
-	                                                 Left Join Crm_CustomerCert cc2 On dc.Id = cc2.DcId And cc2.SdId = 774 And cc2.IsDel = 0
-	                                                 Where dc.IsDel = 0) temp 
-                                             On temp.DcId =tcl.ClientId  
-                                             Where tcl.IsDel = 0 And tcl.Id = {0}", id);
-                var data = await _sqlSugar.SqlQueryable<TourClientListDetailsView>(sql).FirstAsync();
-                if (data != null)
+                if (dto.Id == 0) // 添加
                 {
-                    data.BirthDay = data.BirthDay.DateFormat("yyyy-MM-dd");
-                    data.IssueDt = data.IssueDt.DateFormat("yyyy-MM-dd");
-                    data.ExpiryDt = data.ExpiryDt.DateFormat("yyyy-MM-dd");
-                    _result.Code = 0;
-                    _result.Data = data;
+                    #region 参数处理
+                    _sqlSugar.BeginTran();
+                    int clientId = -1;
+                    var clientInfo = await _sqlSugar.Queryable<Crm_DeleClient>().Where(it => it.IsDel == 0 &&
+                                                                                             it.LastName.Equals(dto.LastName) &&
+                                                                                             it.FirstName.Equals(dto.FirstName) &&
+                                                                                             it.Phone.Equals(dto.Phone)
+                                                                                       ).FirstAsync();
+                    if (clientInfo != null)  //该客户存在 修改信息 
+                    {
+                        Crm_DeleClient _DeleClient = new Crm_DeleClient()
+                        {
+                            LastName = dto.LastName,
+                            FirstName = dto.FirstName,
+                            Pinyin = dto.Pinyin,
+                            Sex = dto.Sex,
+                            Phone = dto.Phone,
+                            BirthDay = dto.BirthDay
+                        };
+
+
+                        clientId = clientInfo.Id;
+
+                        //1.修改基本信息
+                        var clientEdit = await _sqlSugar.Updateable(_DeleClient).UpdateColumns(it =>
+                                                                                     new
+                                                                                     {
+                                                                                         it.LastName,
+                                                                                         it.FirstName,
+                                                                                         it.Pinyin,
+                                                                                         it.Sex,
+                                                                                         it.Phone,
+                                                                                         it.BirthDay
+                                                                                     }
+                                                                                 )
+                                                                                .Where(it => it.Id == clientId)
+                                                                                .ExecuteCommandAsync();
+                        if (clientEdit < 0)
+                        {
+                            _sqlSugar.RollbackTran();
+                            _result.Msg = "客户基础信息修改失败!";
+                        }
+                        //2.修改卡类型信息
+                        //2.1 修改身份证信息
+
+
+                    }
+                    else //不存在添加 客户信息
+                    {
+                        //1.添加基本信息
+                        //2.添加卡类型信息
+                        //2.1 添加身份证信息
+                        //2.2 添加护照信息
+                    }
+
+
+                    Grp_TourClientList _TourClientList = new Grp_TourClientList() {
+                        DiId = dto.DiId,
+                        ClientId = clientId,
+                        ShippingSpaceTypeId = dto.ShippingSpaceTypeId,
+                        ShippingSpaceSpecialNeeds = dto.ShippingSpaceSpecialNeeds,
+                        HotelSpecialNeeds = dto.HotelSpecialNeeds,
+                        MealSpecialNeeds = dto.MealSpecialNeeds,
+                        CreateUserId = dto.UserId,
+                        IsDel = 0
+                    };
+
+
+                    _sqlSugar.CommitTran();
+                    #endregion
+
+
                 }
+                else if (dto.Id > 0) //修改
+                { 
+                
+                }
+
             }
             else
             {
-                _result.Msg = "请传入有效的PortType参数,1 Web 2 Android 3 IOS!";
+                _result.Msg = "请传入有效的id参数!";
             }
             return _result;
         }
-
     }
 }

+ 3 - 1
OASystem/OASystem.Infrastructure/Repositories/Login/LoginRepository.cs

@@ -163,6 +163,8 @@ namespace OASystem.Infrastructure.Repositories.Login
 
             var updateStatus = await _sqlSugar.Updateable(_userInfo).UpdateColumns(it => new { it.CreateUserId }).Where(it => it.Id == _AddId).ExecuteCommandAsync();
 
+            //添加员工 默认页面权限
+
 
             result.Code = 0;
             //result.Msg = string.Format("账号:{0}\r\n密码:{1}\r\n申请成功!\r\n人事主管审核后,即可登录OA!", number, registerDto.Password);
@@ -180,7 +182,7 @@ namespace OASystem.Infrastructure.Repositories.Login
 
             string userSql = string.Format("Select * From  Sys_Users Where DepId = {0} And Number != '' Order By Id Desc", depId);
             var userData = await _sqlSugar.SqlQueryable<Sys_Users>(userSql).ToListAsync();
-            if (userData.Count <= 0) return number;
+            //if (userData.Count <= 0) return number;
 
             string depSql = string.Format("Select * From  Sys_Department Where Id = {0} ", depId);
             var depData = await _sqlSugar.SqlQueryable<Sys_Department>(depSql).FirstAsync();