NewClientDataRepository.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. using OASystem.Domain;
  2. using OASystem.Domain.Dtos.CRM;
  3. using OASystem.Domain.Entities.Customer;
  4. using OASystem.Domain.Entities.Resource;
  5. using OASystem.Domain.ViewModels.CRM;
  6. using System;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using System.Xml.Linq;
  13. namespace OASystem.Infrastructure.Repositories.CRM
  14. {
  15. public class NewClientDataRepository : BaseRepository<Crm_NewClientData, Crm_NewClientData>
  16. {
  17. public NewClientDataRepository(SqlSugarClient sqlSugar) :
  18. base(sqlSugar)
  19. { }
  20. /// <summary>
  21. /// 客户资料初识初始化
  22. /// </summary>
  23. /// <param name="dto"></param>
  24. /// <returns></returns>
  25. public async Task<Result> QueryNewClientData(NewClientDataQueryDto dto)
  26. {
  27. Result result = new Result() { Code = -2, Msg = "未知错误" };
  28. try
  29. {
  30. List<int> NewClientDataId1= new List<int>();
  31. List<int> NewClientDataId2 = new List<int>();
  32. string NewClientDataId = "";
  33. if (dto.Userid != 0)
  34. {
  35. string sql = string.Format(@"select u1.UsersId,u2.CnName,u1.NewClientDataId from Crm_ClientDataAndUser u1,Sys_Users u2 where u1.UsersId=u2.Id and u1.UsersId={0}", dto.Userid);
  36. List<AscribedUser> ascribedUsers = await _sqlSugar.SqlQueryable<AscribedUser>(sql).ToListAsync();
  37. if (ascribedUsers.Count!=0)
  38. {
  39. foreach (var ascribedUser in ascribedUsers)
  40. {
  41. if (ascribedUser.NewClientDataId != 0)
  42. {
  43. NewClientDataId1.Add(ascribedUser.NewClientDataId);
  44. }
  45. }
  46. }
  47. else
  48. {
  49. result = new Result() { Code = -1, Msg = "暂无数据" };
  50. }
  51. }
  52. if (dto.Business != 0)
  53. {
  54. string sql = string.Format(@"select d1.*,d2.Name from Crm_ClientDataAndBusiness d1,Sys_SetData d2 where d1.SetDataId=d2.Id and d1.SetDataId={0}", dto.Business);
  55. List<AscribedDepartment> AscribedDepartment = await _sqlSugar.SqlQueryable<AscribedDepartment>(sql).ToListAsync();
  56. if (AscribedDepartment.Count != 0)
  57. {
  58. foreach (var item in AscribedDepartment)
  59. {
  60. if (item.NewClientDataId!= 0)
  61. {
  62. NewClientDataId2.Add(item.NewClientDataId);
  63. }
  64. }
  65. }
  66. else
  67. {
  68. result = new Result() { Code = -1, Msg = "暂无数据" };
  69. }
  70. }
  71. List<int> intStr=new List<int>();
  72. if (NewClientDataId1.Count!=0 && NewClientDataId2.Count != 0)
  73. {
  74. intStr = NewClientDataId1.Intersect(NewClientDataId2).ToList();
  75. }else if (NewClientDataId1.Count != 0)
  76. {
  77. intStr = NewClientDataId1;
  78. }else if (NewClientDataId2.Count != 0)
  79. {
  80. intStr = NewClientDataId2;
  81. }
  82. foreach (var item in intStr)
  83. {
  84. NewClientDataId += item + ",";
  85. }
  86. if (!string.IsNullOrWhiteSpace(NewClientDataId))
  87. {
  88. NewClientDataId = NewClientDataId.Substring(0, NewClientDataId.Length - 1);
  89. }
  90. string sqlWhere = string.Empty;
  91. if (!string.IsNullOrWhiteSpace(dto.Contact))
  92. {
  93. sqlWhere += string.Format(@" And s.Contact like '%{0}%'", dto.Contact);
  94. }
  95. if (!string.IsNullOrWhiteSpace(dto.Location))
  96. {
  97. sqlWhere += string.Format(@" And s.Location like '%{0}%'", dto.Location);
  98. }
  99. if (!string.IsNullOrWhiteSpace(dto.Client))
  100. {
  101. sqlWhere += string.Format(@" And s.Client like '%{0}%'", dto.Client);
  102. }
  103. if (!string.IsNullOrWhiteSpace(NewClientDataId))
  104. {
  105. sqlWhere += string.Format(@" And s.Id in({0})", NewClientDataId);
  106. }
  107. //if (!string.IsNullOrWhiteSpace(dto.Weight.ToString()))
  108. //{
  109. // sqlWhere += string.Format(@" And Weight )", dto.Weight);
  110. //}
  111. if (dto.Lvlid!=0)
  112. {
  113. sqlWhere += string.Format(@" And s.Lvlid={0}",dto.Lvlid);
  114. }
  115. sqlWhere += string.Format(@" And s.Lvlid=s1.Id And s.IsDel={0} ", 0);
  116. if (!string.IsNullOrEmpty(sqlWhere.Trim()))
  117. {
  118. Regex r = new Regex("And");
  119. sqlWhere = r.Replace(sqlWhere, "Where", 1);
  120. }
  121. dto.PageIndex = dto.PageIndex * dto.PageSize - dto.PageSize + 1;
  122. dto.PageSize = dto.PageIndex * dto.PageSize;
  123. string sqlNew = string.Format(@"select (SELECT COUNT(1) FROM Crm_NewClientData s left Join Sys_SetData s1 On s.Lvlid=s1.Id {0}) AS countPage,* from (select ROW_NUMBER()
  124. over(order by s.CreateTime desc) RowNumber,s.*,s1.Name as 'LvlName' from Crm_NewClientData s left Join Sys_SetData s1 On s.Lvlid=s1.Id {0}) as co where
  125. RowNumber between {1} and {2} ", sqlWhere,dto.PageIndex,dto.PageSize);
  126. List<NewClientDataView> NewClientDataView = await _sqlSugar.SqlQueryable<NewClientDataView>(sqlNew).ToListAsync();
  127. #region 下拉框初始化数据
  128. //负责人下拉框
  129. List<dynamic> _Users = new List<dynamic>();
  130. List<Sys_Users> users = _sqlSugar.Queryable<Sys_Users>()
  131. .Where(u => u.CnName == "张海麟" || u.CnName == "安宁" || u.CnName == "李彩娟" || u.CnName == "舒庆" || u.CnName == "李媛媛" && u.IsDel == 0).ToList();
  132. foreach (Sys_Users user in users)
  133. {
  134. var data = new
  135. {
  136. Id = user.Id,
  137. Name = user.CnName
  138. };
  139. _Users.Add(data);
  140. };
  141. //省域数据
  142. List<dynamic> _Province = new List<dynamic>();
  143. List<Sys_SetData> province = _sqlSugar.Queryable<Sys_SetData>()
  144. .Where(u => u.STid == 42 && u.IsDel == 0).ToList();
  145. foreach (Sys_SetData item in province)
  146. {
  147. var data = new
  148. {
  149. Id = item.Id,
  150. Name = item.Name
  151. };
  152. _Province.Add(data);
  153. };
  154. //客户级别数据
  155. List<dynamic> _level = new List<dynamic>();
  156. List<Sys_SetData> level = _sqlSugar.Queryable<Sys_SetData>()
  157. .Where(u => u.STid == 33 && u.IsDel == 0).ToList();
  158. foreach (Sys_SetData item in level)
  159. {
  160. var data = new
  161. {
  162. Id = item.Id,
  163. Name = item.Name
  164. };
  165. _level.Add(data);
  166. };
  167. //客户类别
  168. List<dynamic> _CustomerClass = new List<dynamic>();
  169. List<Sys_SetData> CustomerClass = _sqlSugar.Queryable<Sys_SetData>()
  170. .Where(u => u.STid == 37 && u.IsDel == 0).ToList();
  171. foreach (Sys_SetData item in CustomerClass)
  172. {
  173. var data = new
  174. {
  175. Id = item.Id,
  176. Name = item.Name
  177. };
  178. _CustomerClass.Add(data);
  179. };
  180. //业务分类
  181. List<dynamic> _ServiceClass = new List<dynamic>();
  182. List<Sys_SetData> ServiceClass = _sqlSugar.Queryable<Sys_SetData>()
  183. .Where(u => u.STid == 36 && u.IsDel == 0).ToList();
  184. foreach (Sys_SetData item in province)
  185. {
  186. var data = new
  187. {
  188. Id = item.Id,
  189. Name = item.Name
  190. };
  191. _ServiceClass.Add(data);
  192. };
  193. #endregion
  194. if (NewClientDataView.Count!=0)
  195. {
  196. foreach (var item in NewClientDataView)
  197. {
  198. List<AscribedUser> AscribedUser = await _sqlSugar.SqlQueryable<AscribedUser>
  199. ("select u1.UsersId,u2.CnName,u1.NewClientDataId from Crm_ClientDataAndUser u1,Sys_Users u2 where u1.UsersId=u2.Id and NewClientDataId="+ item .Id+ "").ToListAsync();
  200. item.AscribedUser = AscribedUser;
  201. List<AscribedDepartment> AscribedDepartment = await _sqlSugar.SqlQueryable<AscribedDepartment>
  202. ("select d1.*,d2.Name from Crm_ClientDataAndBusiness d1,Sys_SetData d2 where d1.SetDataId=d2.Id and NewClientDataId="+item.Id+"").ToListAsync();
  203. item.AscribedDepartment = AscribedDepartment;
  204. }
  205. if (dto.PageSize == 0 && dto.PageIndex == 0)
  206. {
  207. var Data = new
  208. {
  209. ClientTableData= NewClientDataView,
  210. Users = _Users,
  211. Province = _Province,
  212. level = _level,
  213. CustomerClass = _CustomerClass,
  214. ServiceClass = _ServiceClass
  215. };
  216. return result = new Result()
  217. {
  218. Code = 0,
  219. Msg = "查询成功",
  220. Data = Data,
  221. };
  222. }
  223. else
  224. {
  225. int count = NewClientDataView[0].countPage;
  226. float totalPage = (float)count / dto.PageSize;//总页数
  227. if (totalPage == 0) totalPage = 1;
  228. else totalPage = (int)Math.Ceiling((double)totalPage);
  229. List<NewClientDataView> NewClientView = new List<NewClientDataView>();
  230. for (int i = 0; i < dto.PageSize; i++)
  231. {
  232. var RowIndex = i + (dto.PageIndex - 1) * dto.PageSize;
  233. if (RowIndex < NewClientDataView.Count)
  234. {
  235. NewClientView.Add(NewClientDataView[RowIndex]);
  236. }
  237. else
  238. {
  239. break;
  240. }
  241. }
  242. var Data = new
  243. {
  244. ClientTableData = new { pageCount = count, totalPage = (int)totalPage, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = NewClientView },
  245. Users = _Users,
  246. Province = _Province,
  247. level = _level,
  248. CustomerClass = _CustomerClass,
  249. ServiceClass = _ServiceClass
  250. };
  251. return result = new Result()
  252. {
  253. Code = 0,
  254. Msg = "查询成功",
  255. Data = Data
  256. };
  257. }
  258. }
  259. else
  260. {
  261. result = new Result() { Code = -1, Msg = "暂无数据!" };
  262. }
  263. }
  264. catch (Exception)
  265. {
  266. result = new Result() { Code = -2, Msg = "未知错误" };
  267. throw;
  268. }
  269. return result;
  270. }
  271. }
  272. }