Forráskód Böngészése

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

yuanrf 1 éve%!(EXTRA string=óta)
szülő
commit
1436995b68

+ 120 - 60
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -339,23 +339,45 @@ namespace OASystem.API.Controllers
                 }
 
                 string sql = string.Format(@"Select Row_Number,Id,SalesQuoteNo,TourCode,TeamTypeId, TeamType,
-					                              TeamLevId,TeamLev,TeamName,ClientName,ClientUnit,
-					                              VisitDate,VisitDays,VisitPNumber,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,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 {0}
-				                              ) temp", sqlWhere);
+                                             	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 {0}
+                                             ) temp", sqlWhere);
 
                 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,
@@ -439,24 +461,46 @@ namespace OASystem.API.Controllers
             }
 
             string sql = string.Format(@"Select Row_Number,Id,SalesQuoteNo,TourCode,TeamTypeId, TeamType,
-					                              TeamLevId,TeamLev,TeamName,ClientName,ClientUnit,
-					                              VisitDate,VisitDays,VisitPNumber,JietuanOperator,IsSure,CreateTime
-					                              From (
-					                              Select row_number() over({0}) 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,su.CnName JietuanOperator,IsSure,gdi.CreateTime
-					                              From  Grp_DelegationInfo gdi
-					                              Inner Join Sys_SetData ssd On gdi.TeamDid = ssd.Id 
-					                              Inner Join Sys_SetData ssd1 On gdi.TeamLevSId = ssd1.Id
-					                              Left Join Sys_Users su On gdi.JietuanOperator = su.Id
-					                              Where gdi.IsDel = 0  {1}
-				                              ) temp  ", orderbyStr, sqlWhere);
+                                             	TeamLevId,TeamLev,TeamName,ClientName,ClientUnit,
+                                             	VisitDate,VisitDays,VisitPNumber,JietuanOperatorId,
+                                             	JietuanOperator,IsSure,CreateTime
+                                             	From (
+                                             	Select row_number() over({0}) 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 {1}
+                                             ) temp  ", orderbyStr, sqlWhere);
 
 
             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,
@@ -3206,7 +3250,7 @@ namespace OASystem.API.Controllers
         {
             try
             {
-                List<Grp_DelegationInfo> grp_Delegations = await _sqlSugar.Queryable<Grp_DelegationInfo>().Where(a => a.IsDel == 0).OrderBy(a => a.Id, OrderByType.Desc).ToListAsync();
+                List<Grp_DelegationInfo> grp_Delegations = _sqlSugar.Queryable<Grp_DelegationInfo>().Where(a => a.IsDel == 0).OrderBy(a => a.Id, OrderByType.Desc).ToList();
                 List<Crm_DeleClient> crm_Deles = new List<Crm_DeleClient>();
                 if (dto.DiId == 0)
                 {
@@ -3238,17 +3282,37 @@ namespace OASystem.API.Controllers
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> invitationLetter(DecreasePaymentsListDto dto)
         {
+            #region 参数验证
+
+            //if (dto.UserId < 1) return Ok(JsonView(false, "请传入有效的UserId参数!"));
+            if (dto.DiId < 1) return Ok(JsonView(false, "请传入有效的DiId参数!"));
+            #endregion
+
             try
             {
                 Dictionary<string, string> transDic = new Dictionary<string, string>();
-                List<Crm_DeleClient> crm_DeleClients = await _sqlSugar.Queryable<Crm_DeleClient>().Where(a => a.DiId == dto.DiId && a.IsDel == 0).ToListAsync();
+
+                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.DiId = {0}", dto.DiId);
+                var datas = _sqlSugar.SqlQueryable<TourClientListDetailsView>(sql).ToList();
+
                 List<string> texts = new List<string>();
-                if (crm_DeleClients.Count != 0)
+                if (datas.Count != 0)
                 {
-
-                    foreach (Crm_DeleClient item in crm_DeleClients)
+                    foreach (TourClientListDetailsView item in datas)
                     {
-
                         if (!string.IsNullOrWhiteSpace(item.Pinyin))
                         {
                             transDic.Add(item.LastName + item.FirstName, item.Pinyin);
@@ -3266,13 +3330,9 @@ namespace OASystem.API.Controllers
                                 texts.Add(item.Job);
                             }
                         }
-                        if (item.CrmCompanyId != 0)
+                        if (!string.IsNullOrEmpty(item.CompanyFullName))
                         {
-                            Crm_CustomerCompany crm_Customer = await _sqlSugar.Queryable<Crm_CustomerCompany>().FirstAsync(a => a.Id == item.CrmCompanyId && a.IsDel == 0);
-                            if (!transDic.ContainsKey(crm_Customer.CompanyFullName))
-                            {
-                                texts.Add(crm_Customer.CompanyFullName);
-                            }
+                            texts.Add(item.CompanyFullName);
                         }
                     }
                     List<TranslateResult> transData = _airTicketResRep.ReTransBatch(texts, "en");
@@ -3287,10 +3347,10 @@ namespace OASystem.API.Controllers
                             }
                         }
                     }
-                    List<guestList> list = new List<guestList>();
-                    foreach (Crm_DeleClient dele in crm_DeleClients)
+                    List<GuestList> list = new List<GuestList>();
+                    foreach (TourClientListDetailsView dele in datas)
                     {
-                        guestList guestList = new guestList();
+                        GuestList guestList = new GuestList();
 
                         if (!string.IsNullOrWhiteSpace(dele.Pinyin))
                         {
@@ -3310,10 +3370,11 @@ namespace OASystem.API.Controllers
                             guestList.Sex = "Female";
                         }
                         guestList.DOB = dele.BirthDay.Replace('-', '.');
-                        Crm_CustomerCompany crm_Customer = await _sqlSugar.Queryable<Crm_CustomerCompany>().FirstAsync(a => a.Id == dele.CrmCompanyId && a.IsDel == 0);
-                        string jobName = transDic.Where(s => s.Key == crm_Customer.CompanyFullName).FirstOrDefault().Value + " " + transDic.Where(s => s.Key == dele.Job).FirstOrDefault().Value;
+                        if (!string.IsNullOrEmpty(dele.Job))
+                        {
+                            guestList.Job = dele.Job;
+                        }
 
-                        guestList.Job = jobName;
                         list.Add(guestList);
                     }
 
@@ -3345,7 +3406,6 @@ namespace OASystem.API.Controllers
                         builder.Write(list[i].Job.ToString());
                     }
 
-
                     //删除多余行
                     while (tableOne.Rows.Count > list.Count + 1)
                     {
@@ -3355,18 +3415,18 @@ namespace OASystem.API.Controllers
                     string fileName = "邀请函" + DateTime.Now.ToString("yyyy-MM-dd") + ".docx";
                     string filePath = fileDir + $@"商邀相关文件/{fileName}";
                     doc.Save(filePath);
-                    string Url = AppSettingsHelper.Get("WordBaseUrl") + "Office/GrpFile/商邀相关文件" + fileName;
-                    return Ok(JsonView(true, "成功!", Url));
+                    string Url = AppSettingsHelper.Get("WordBaseUrl") + "Office/GrpFile/商邀相关文件/" + fileName;
+                    return Ok(JsonView(true, "操作成功!", Url));
 
                 }
                 else
                 {
-                    return Ok(JsonView(false, "失败,该团组没有客户名单!"));
+                    return Ok(JsonView(false, "该团组客户名单暂未录入!"));
                 }
             }
             catch (Exception ex)
             {
-                return Ok(JsonView(false, "程序错误!"));
+                return Ok(JsonView(false, ex.Message));
                 throw;
             }
         }
@@ -6881,19 +6941,19 @@ namespace OASystem.API.Controllers
                             _ModuleSubPromptInfo.AddRange(
                                 _GroupCostsTypeData.Select(it => new
                                 {
-                                    Date = it.Date,
-                                    CarFee = (it.CarCost + it.CFM + it.CFOF) * _rate * _scale,
-                                    GuideFee = (it.TGS + it.TGOF + it.TGM+ it.TGA + it.TGTF + it.TGEF) * _rate * _scale,
-                                    MealFee = (it.B + it.L + it.D) * _rate * _scale,
-                                    TicketFee = it.EF * _rate * _scale,
-                                    TipFee = (it.TGTips + it.DRVTips) * _rate * _scale,
+                                    Date = it.Date,  //日期
+                                    CarFee = (it.CarCost + it.CFM + it.CFOF) * _rate * _scale, //车费用
+                                    GuideFee = (it.TGS + it.TGOF + it.TGM+ it.TGA + it.TGTF + it.TGEF) * _rate * _scale, //导游费用
+                                    MealFee = (it.B + it.L + it.D) * _rate * _scale,  //餐食费
+                                    TicketFee = it.EF * _rate * _scale,  //门票费 
+                                    TipFee = (it.TGTips + it.DRVTips) * _rate * _scale, //小费
                                     AirportTransferFee = 0.00M,
-                                    DrinksSnacksFruitFee = it.B_R_F * _rate * _scale,
-                                    TravelSupplies = it.TE * _rate * _scale,
-                                    LeadersFee = it.TLF * _rate * _scale,
+                                    DrinksSnacksFruitFee = it.B_R_F * _rate * _scale,  //饮料零食水果
+                                    TravelSupplies = it.TE * _rate * _scale,  //出行物资
+                                    LeadersFee = it.TLF * _rate * _scale,  //领队费
                                     CarFee1 = it.CarCost * _rate * _scale,
-                                    CarType = it.CarType,
-                                    SpentCash = it.PC * _rate * _scale,
+                                    CarType = it.CarType,  //车型
+                                    SpentCash = it.PC * _rate * _scale, //零用金
                                 })
                             );
 

+ 1 - 1
OASystem/OASystem.Domain/Dtos/CRM/DeleClientAddDto.cs

@@ -788,7 +788,7 @@ namespace OASystem.Domain.Dtos.CRM
         public int Id { get; set; }
         public int DeleteUserId { get; set; }
     }
-    public class guestList
+    public class GuestList
     {
         /// <summary>
         /// 姓名

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

@@ -384,11 +384,21 @@ namespace OASystem.Domain.ViewModels.Groups
         /// </summary>
         public string? SalesQuoteNo { get; set; }
 
+        /// <summary>
+        /// 客户所属部门
+        /// </summary>
+        public string Department { get; set; }
+
         /// <summary>
         /// 团号
         /// </summary>
         public string? TourCode { get; set; }
 
+        /// <summary>
+        /// 接团操作人Id
+        /// </summary>
+        public int JietuanOperatorId { get; set; }
+
         /// <summary>
         /// 接团操作人
         /// </summary>