ソースを参照

市场客户资料搜索逻辑调整

yuanrf 9 時間 前
コミット
a2c7b1e9d9

+ 11 - 2
OASystem/OASystem.Api/Controllers/MarketCustomerResourcesController.cs

@@ -80,7 +80,7 @@ namespace OASystem.API.Controllers
             #endregion
 
             JsonView jw = new JsonView();
-            var startTime = DateTime.UtcNow; 
+            var startTime = DateTime.UtcNow;
 
             try
             {
@@ -1212,7 +1212,16 @@ namespace OASystem.API.Controllers
         {
             var jw = JsonView(true);
             var expression = Expressionable.Create<Crm_NewClientData>()
-                                           .And(x => x.IsDel == 0);
+                                           .And(x => x.IsDel == 0)
+                                           .AndIF(dto.Lvlid != 0, x => x.Lvlid == dto.Lvlid)
+                                           .AndIF(dto.Category != 0, x => x.Category == dto.Category);
+
+            if (dto.Range != 0)
+            {
+                var rangeSetDataList = await _clientDataRepository.GetCachedRangeSetDataAsync(dto.Range);
+                expression = expression.And(x => rangeSetDataList.Contains(x.Lvlid));
+            }
+
             this.keyName += "_" + dto.UserId;
             //获取个人的客户
             if (dto.UserId != 21)

+ 17 - 1
OASystem/OASystem.Domain/Dtos/CRM/NewClientDataQueryDto.cs

@@ -317,11 +317,27 @@ namespace OASystem.Domain.Dtos.CRM
         public string Keyword { get; set; }
 
         public int UserId { get; set; }
+
+
+        /// <summary>
+        /// 客户级别(地市州)
+        /// </summary>
+        public int Lvlid { get; set; }
+
+        /// <summary>
+        /// 省域
+        /// </summary>
+        public int Range { get; set; }
+
+        /// <summary>
+        /// 客户类别
+        /// </summary>
+        public int Category { get; set; }
     }
 
     public class InsertDataExcelDto
     {
-        public List<string>  Client { get; set; }
+        public List<string> Client { get; set; }
 
         public int ToUser { get; set; }
     }

+ 71 - 57
OASystem/OASystem.Infrastructure/Repositories/CRM/NewClientDataRepository.cs

@@ -92,7 +92,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
         {
             var cacheKey = $"NewClientData_Dropdown_{operationUserId}";
             var cachedData = await _redisHelper.StringGetAsync<DropdownData>(cacheKey);
-            
+
             if (cachedData != null)
             {
                 return cachedData;
@@ -108,7 +108,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
             }
 
             var dropdownData = new DropdownData();
-            
+
             //负责人下拉框
             dropdownData.Users = GetNewExistClient(operationUserId)
                 .Select(x => new DropdownItem { Id = x.Id, Name = x.CnName })
@@ -153,7 +153,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
 
             // 缓存30分钟
             await _redisHelper.StringSetAsync(cacheKey, dropdownData, TimeSpan.FromMinutes(30));
-            
+
             return dropdownData;
         }
 
@@ -191,7 +191,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
 
             var cacheKey = $"NewClientData_Relations_{string.Join("_", clientIds.OrderBy(x => x))}";
             var cachedData = await _redisHelper.StringGetAsync<(List<SerializableAscribedUser>, List<SerializableAscribedDepartment>)>(cacheKey);
-            
+
             if (cachedData.Item1 != null && cachedData.Item2 != null)
             {
                 // 转换为原始类型
@@ -237,10 +237,10 @@ namespace OASystem.Infrastructure.Repositories.CRM
             }).ToList();
 
             var result = (serializableUsers, serializableDepartments);
-            
+
             // 缓存10分钟
             await _redisHelper.StringSetAsync(cacheKey, result, TimeSpan.FromMinutes(10));
-            
+
             return (queriedUsers, queriedDepartments);
         }
 
@@ -249,13 +249,13 @@ namespace OASystem.Infrastructure.Repositories.CRM
         /// </summary>
         /// <param name="range">省域范围</param>
         /// <returns></returns>
-        private async Task<List<int>> GetCachedRangeSetDataAsync(int range)
+        public async Task<List<int>> GetCachedRangeSetDataAsync(int range)
         {
             if (range == 0) return new List<int>();
 
             var cacheKey = $"NewClientData_Range_{range}";
             var cachedData = await _redisHelper.StringGetAsync<List<int>>(cacheKey);
-            
+
             if (cachedData != null)
             {
                 return cachedData;
@@ -302,11 +302,11 @@ namespace OASystem.Infrastructure.Repositories.CRM
             {
                 rangeSetDataList = sc.SqlQueryable<Sys_SetData>(setDataSql).Select(x => x.Id).ToList();
             }
-            
+
 
             // 缓存1小时
             await _redisHelper.StringSetAsync(cacheKey, rangeSetDataList, TimeSpan.FromHours(1));
-            
+
             return rangeSetDataList;
         }
 
@@ -337,10 +337,10 @@ namespace OASystem.Infrastructure.Repositories.CRM
 
                 var _Users = GetNewExistClient(Dto.UserId)
                 .Select(x => new
-                 {
-                     x.Id,
-                     Name = x.CnName
-                 }).ToList();
+                {
+                    x.Id,
+                    Name = x.CnName
+                }).ToList();
 
 
                 //List<Sys_Users> users = GetNewExistClient();
@@ -368,7 +368,8 @@ namespace OASystem.Infrastructure.Repositories.CRM
                         Name = item.Name
                     };
                     _level.Add(data);
-                };
+                }
+
                 //客户类别
                 ArrayList _CustomerClass = new ArrayList();
                 List<Sys_SetData> CustomerClass = initData.Where(u => u.STid == 37 && u.IsDel == 0).ToList();
@@ -381,7 +382,8 @@ namespace OASystem.Infrastructure.Repositories.CRM
                         item.Remark
                     };
                     _CustomerClass.Add(data);
-                };
+                }
+
                 // 创建比较器实例
                 IComparer remakeComparer = new RemakeComparer();
                 _CustomerClass.Sort(remakeComparer);
@@ -397,7 +399,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                         Name = item.Name
                     };
                     _ServiceClass.Add(data);
-                };
+                }
 
                 //身份分类
                 List<dynamic> _ProvinceClass = new List<dynamic>();
@@ -410,13 +412,15 @@ namespace OASystem.Infrastructure.Repositories.CRM
                         Name = item.Name
                     };
                     _ProvinceClass.Add(data);
-                };
+                }
+
                 #endregion
-                var data1 = new {
+                var data1 = new
+                {
                     Users = _Users,
                     Level = _level,
                     CustomerClass = _CustomerClass,
-                    ServiceClass= _ServiceClass,
+                    ServiceClass = _ServiceClass,
                     ProvinceClass = _ProvinceClass
                 };
                 return result = new Result()
@@ -440,7 +444,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        public async Task<Result> _Details(int portType,int id)
+        public async Task<Result> _Details(int portType, int id)
         {
             Result result = new Result() { Code = -2, Msg = "未知错误" };
 
@@ -542,7 +546,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                     intList = NewClientDataId2;
                 }
 
-                if (state == -1 && intList.Count < 1) 
+                if (state == -1 && intList.Count < 1)
                 {
                     intList.Add(-1);
                 }
@@ -560,11 +564,11 @@ namespace OASystem.Infrastructure.Repositories.CRM
                 if (!string.IsNullOrEmpty(contact) || !string.IsNullOrEmpty(location) || !string.IsNullOrEmpty(clientDto))
                 {
                     isSelectSearch = true;
-                    
+
                     // 使用缓存键进行搜索
                     var searchCacheKey = $"NewClientData_Search_{contact}_{location}_{clientDto}_{dto.PortType}";
                     var cachedSearchIds = await _redisHelper.StringGetAsync<List<int>>(searchCacheKey);
-                    
+
                     if (cachedSearchIds != null)
                     {
                         searchDataIds = cachedSearchIds;
@@ -577,7 +581,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                             .ToListAsync();
 
                         // 批量解密
-                        foreach (var item in searchClientDatas) 
+                        foreach (var item in searchClientDatas)
                         {
                             EncryptionProcessor.DecryptProperties(item);
                         }
@@ -602,7 +606,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                         }
 
                         if (searchDataIds.Count < 1) searchDataIds.Add(0);
-                        
+
                         // 缓存搜索结果5分钟
                         await _redisHelper.StringSetAsync(searchCacheKey, searchDataIds, TimeSpan.FromMinutes(5));
                     }
@@ -663,7 +667,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                             // 从批量查询结果中获取关联信息
                             item.AscribedUser = ascribedUsers.Where(x => x.NewClientDataId == item.Id).ToList();
                             item.AscribedDepartment = ascribedDepartments.Where(x => x.NewClientDataId == item.Id).ToList();
-                            
+
                             index++;
                         }
 
@@ -677,7 +681,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                             ServiceClass = dropdownData.ServiceClass,
                             groupNumber = groupNumber.Data,
                         };
-                        
+
                         return result = new Result()
                         {
                             Code = 0,
@@ -742,7 +746,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                 //记录详细错误信息
                 //Console.WriteLine($"QueryNewClientData 异常: {ex.Message}");
                 //Console.WriteLine($"异常堆栈: {ex.StackTrace}");
-                
+
                 result = new Result() { Code = -2, Msg = $"查询异常: {ex.Message}" };
             }
             finally
@@ -993,7 +997,8 @@ namespace OASystem.Infrastructure.Repositories.CRM
                         Name = user.CnName
                     };
                     _Users.Add(data);
-                };
+                }
+                ;
                 //省域数据
                 List<dynamic> _Province = new List<dynamic>();
                 List<Sys_SetData> province = _sqlSugar.Queryable<Sys_SetData>()
@@ -1006,7 +1011,8 @@ namespace OASystem.Infrastructure.Repositories.CRM
                         Name = item.Name
                     };
                     _Province.Add(data);
-                };
+                }
+                ;
                 //客户级别数据
                 List<dynamic> _level = new List<dynamic>();
                 List<Sys_SetData> level = _sqlSugar.Queryable<Sys_SetData>()
@@ -1019,7 +1025,8 @@ namespace OASystem.Infrastructure.Repositories.CRM
                         Name = item.Name
                     };
                     _level.Add(data);
-                };
+                }
+                ;
                 //客户类别
                 ArrayList _CustomerClass = new ArrayList();
                 List<Sys_SetData> CustomerClass = _sqlSugar.Queryable<Sys_SetData>()
@@ -1033,7 +1040,8 @@ namespace OASystem.Infrastructure.Repositories.CRM
                         item.Remark
                     };
                     _CustomerClass.Add(data);
-                };
+                }
+
                 // 创建比较器实例
                 IComparer remakeComparer = new RemakeComparer();
                 _CustomerClass.Sort(remakeComparer);
@@ -1050,7 +1058,8 @@ namespace OASystem.Infrastructure.Repositories.CRM
                         Name = item.Name
                     };
                     _ServiceClass.Add(data);
-                };
+                }
+                ;
                 #endregion
                 var groupNumber = await QueryNumberGroups();
 
@@ -1126,7 +1135,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                     {
                         var Data = new { pageCount = 0, totalPage = 0, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = NewClientDataView };
                         result = new Result() { Code = 0, Msg = "获取成功!", Data = Data };
-                    } 
+                    }
                     else
                     {
                         var Data = new
@@ -1142,7 +1151,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                         };
                         result = new Result() { Code = 0, Msg = "获取成功!", Data = Data };
                     }
-                    
+
                 }
 
             }
@@ -1161,7 +1170,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                 //负责人下拉框
                 List<dynamic> _Users = new List<dynamic>();
                 List<Sys_Users> users = _sqlSugar.Queryable<Sys_Users>()
-                .Where(u =>  u.IsDel == 0).ToList();
+                .Where(u => u.IsDel == 0).ToList();
                 foreach (Sys_Users user in users)
                 {
                     var data = new
@@ -1170,7 +1179,8 @@ namespace OASystem.Infrastructure.Repositories.CRM
                         Name = user.CnName
                     };
                     _Users.Add(data);
-                };
+                }
+                ;
                 if (_Users.Count == 0)
                 {
                     result = new Result() { Code = -1, Msg = "暂无数据" };
@@ -1189,7 +1199,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
             Result result = new Result() { Code = -2, Msg = "未知错误" };
             bool istrue = false;
             int AddReturnId = -1;
-            
+
             string BirthdayStr = string.Empty;
             if (!string.IsNullOrWhiteSpace(dto.Birthday))
             {
@@ -1209,7 +1219,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
             newClientDataUnEncrypted.LastUpdateTime = DateTime.Now;
             newClientDataUnEncrypted.LastUpdateUserId = dto.CreateUserId;
 
-            var newClientDataEncrypted = newClientDataUnEncrypted; 
+            var newClientDataEncrypted = newClientDataUnEncrypted;
             EncryptionProcessor.EncryptProperties(newClientDataEncrypted); //加密
 
             try
@@ -1260,7 +1270,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
                         AddReturnId = dto.Id == 0 ? -1 : dto.Id;
                         if (AddReturnId != -1)
                         {
-                            await _sqlSugar.Updateable<Crm_ClientDataAndUser>().Where(x=>x.NewClientDataId == AddReturnId).SetColumns(a => new Crm_ClientDataAndUser()
+                            await _sqlSugar.Updateable<Crm_ClientDataAndUser>().Where(x => x.NewClientDataId == AddReturnId).SetColumns(a => new Crm_ClientDataAndUser()
                             {
                                 IsDel = 1,
                                 DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
@@ -1376,7 +1386,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
             //负责人下拉框
             List<dynamic> _Users = new List<dynamic>();
             List<Sys_Users> users = _sqlSugar.Queryable<Sys_Users>()
-            .Where(u =>  u.IsDel == 0).ToList();
+            .Where(u => u.IsDel == 0).ToList();
             foreach (Sys_Users user in users)
             {
                 var data = new
@@ -1385,8 +1395,9 @@ namespace OASystem.Infrastructure.Repositories.CRM
                     Name = user.CnName
                 };
                 _Users.Add(data);
-            };
-            
+            }
+            ;
+
             //客户级别数据
             List<dynamic> _level = new List<dynamic>();
             List<Sys_SetData> level = _sqlSugar.Queryable<Sys_SetData>()
@@ -1399,7 +1410,8 @@ namespace OASystem.Infrastructure.Repositories.CRM
                     Name = item.Name
                 };
                 _level.Add(data);
-            };
+            }
+            ;
             //客户类别
             ArrayList _CustomerClass = new ArrayList();
             List<Sys_SetData> CustomerClass = _sqlSugar.Queryable<Sys_SetData>()
@@ -1413,7 +1425,8 @@ namespace OASystem.Infrastructure.Repositories.CRM
                     item.Remark
                 };
                 _CustomerClass.Add(data);
-            };
+            }
+            ;
             // 创建比较器实例
             IComparer remakeComparer = new RemakeComparer();
             _CustomerClass.Sort(remakeComparer);
@@ -1430,7 +1443,8 @@ namespace OASystem.Infrastructure.Repositories.CRM
                     Name = item.Name
                 };
                 _ServiceClass.Add(data);
-            };
+            }
+            ;
             #endregion
 
             rest.Code = 0;
@@ -1489,7 +1503,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
         /// <returns></returns>
         public async Task<Result> _BatchAssignment(BatchAssignmentDto dto)
         {
-            Result AcrionResult = new Result() { Code = -1,Msg="操作失败"};
+            Result AcrionResult = new Result() { Code = -1, Msg = "操作失败" };
             if (dto.UserIdItem == null || dto.UserIdItem.Count < 1)
             {
                 AcrionResult.Msg = "用户ID集合不能为空!";
@@ -1518,7 +1532,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
             {
                 foreach (var userId1 in dto.UserIdItem)
                 {
-                    Crm_ClientDataAndUser _ClientDataAndUsers2 = _ClientDataAndUsers1.Where(it => it.NewClientDataId == clientDataId && 
+                    Crm_ClientDataAndUser _ClientDataAndUsers2 = _ClientDataAndUsers1.Where(it => it.NewClientDataId == clientDataId &&
                                                                                                   it.usersId == userId1
                                                                                             ).FirstOrDefault();
                     if (_ClientDataAndUsers2 == null)
@@ -1572,7 +1586,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
             }
             else
             {
-                if(existsCount > 0)
+                if (existsCount > 0)
                     AcrionResult.Msg += $" {existsCount}条数据已被指派,无法重复指派!";
             }
 
@@ -1582,7 +1596,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
         public List<Sys_Users> GetNewExistClient(int userid)
         {
             string sql = "SELECT  * FROM  Sys_Users su  where su.id in (\r\n\t select distinct usersid from Crm_ClientDataAndUser WHERE  IsDel  = 0 \r\n) \r\n";
-            var userArr =  _sqlSugar.SqlQueryable<Sys_Users>(sql).ToList();
+            var userArr = _sqlSugar.SqlQueryable<Sys_Users>(sql).ToList();
             var dic = new Dictionary<int, int[]>()
             {
                 { 95, new int []{ 95 , 337 , 302, 350, 355, 357, 353 , 359 , 361, 368, 364, 366, 369} }
@@ -1611,14 +1625,14 @@ namespace OASystem.Infrastructure.Repositories.CRM
                 }
             }
             catch (Exception)
-            {}
+            { }
 
             if (dic.Keys.Contains(userid))
             {
-                return userArr.Where(x=> dic[userid].Contains(x.Id)).ToList();
+                return userArr.Where(x => dic[userid].Contains(x.Id)).ToList();
             }
 
-            return userArr.WhereIF(userid != 21 ,x=>x.Id == userid).ToList();
+            return userArr.WhereIF(userid != 21, x => x.Id == userid).ToList();
         }
 
         /// <summary>
@@ -1629,7 +1643,7 @@ namespace OASystem.Infrastructure.Repositories.CRM
         /// <returns></returns>
         public async Task<List<NewClientDataExcelDownloadView>> NewClientDataExcelDownload(NewClientDataExcelDownloadDto dto)
         {
-            var dt =  new List<NewClientDataExcelDownloadView>();
+            var dt = new List<NewClientDataExcelDownloadView>();
 
             try
             {
@@ -1899,8 +1913,8 @@ namespace OASystem.Infrastructure.Repositories.CRM
                 }
             }
 
-            bool beginDateBool = DateTime.TryParse(dto.BeginTime,out _),
-                 endDateBool = DateTime.TryParse(dto.EndTime,out _);
+            bool beginDateBool = DateTime.TryParse(dto.BeginTime, out _),
+                 endDateBool = DateTime.TryParse(dto.EndTime, out _);
             if (beginDateBool && endDateBool)
             {
                 string beginLable = $"{dto.BeginTime} 00:00:00",