NewClientDataRepository.cs 58 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373
  1. using AutoMapper;
  2. using AutoMapper.Execution;
  3. using EyeSoft.Extensions;
  4. using MySqlX.XDevAPI.Relational;
  5. using NPOI.OpenXmlFormats.Dml.Diagram;
  6. using NPOI.SS.Formula.Functions;
  7. using NPOI.SS.UserModel;
  8. using OASystem.Domain;
  9. using OASystem.Domain.AesEncryption;
  10. using OASystem.Domain.Dtos;
  11. using OASystem.Domain.Dtos.CRM;
  12. using OASystem.Domain.Entities.Customer;
  13. using OASystem.Domain.Entities.Resource;
  14. using OASystem.Domain.Enums;
  15. using OASystem.Domain.ViewModels.CRM;
  16. using OASystem.Domain.ViewModels.QiYeWeChat;
  17. using SqlSugar;
  18. using System;
  19. using System.Collections;
  20. using System.Collections.Generic;
  21. using System.ComponentModel.Design;
  22. using System.Linq;
  23. using System.Runtime.Intrinsics.Arm;
  24. using System.Text;
  25. using System.Threading.Tasks;
  26. using System.Xml.Linq;
  27. using static Google.Protobuf.Reflection.SourceCodeInfo.Types;
  28. using static OASystem.Domain.Dtos.CRM.NewClientDataQueryDto;
  29. namespace OASystem.Infrastructure.Repositories.CRM
  30. {
  31. public class NewClientDataRepository : BaseRepository<Crm_NewClientData, NewClientDataView>
  32. {
  33. private readonly IMapper _mapper;
  34. public NewClientDataRepository(SqlSugarClient sqlSugar, IMapper mapper) :
  35. base(sqlSugar)
  36. {
  37. _mapper = mapper;
  38. }
  39. /// <summary>
  40. /// 客户资料
  41. /// 基础数据源
  42. /// </summary>
  43. /// <param name="dto"></param>
  44. /// <returns></returns>
  45. public async Task<Result> _Init(MarketCustomerInitDto Dto)
  46. {
  47. Result result = new Result() { Code = -2, Msg = "未知错误" };
  48. var portType = Dto.PortType;
  49. if (portType == 1 || portType == 2 || portType == 3)
  50. {
  51. #region 下拉框初始化数据
  52. //负责人下拉框
  53. //List<dynamic> _Users = new List<dynamic>();
  54. //var _Users = _sqlSugar.Queryable<Sys_Users>().Where(x => x.IsDel == 0).Select(x => new
  55. //{
  56. // x.Id,
  57. // Name = x.CnName
  58. //}).ToList();
  59. var _Users = GetNewExistClient(Dto.UserId)
  60. .Select(x => new
  61. {
  62. x.Id,
  63. Name = x.CnName
  64. }).ToList();
  65. //List<Sys_Users> users = GetNewExistClient();
  66. //foreach (Sys_Users user in users)
  67. //{
  68. // var data = new
  69. // {
  70. // Id = user.Id,
  71. // Name = user.CnName
  72. // };
  73. // _Users.Add(data);
  74. //};
  75. List<Sys_SetData> initData = _sqlSugar.Queryable<Sys_SetData>().Where(it => it.IsDel == 0).ToList();
  76. //客户级别数据
  77. List<dynamic> _level = new List<dynamic>();
  78. List<Sys_SetData> level = initData.Where(u => u.STid == 33 && u.IsDel == 0).ToList();
  79. foreach (Sys_SetData item in level)
  80. {
  81. var data = new
  82. {
  83. Id = item.Id,
  84. Name = item.Name
  85. };
  86. _level.Add(data);
  87. };
  88. //客户类别
  89. List<dynamic> _CustomerClass = new List<dynamic>();
  90. List<Sys_SetData> CustomerClass = initData.Where(u => u.STid == 37 && u.IsDel == 0).ToList();
  91. foreach (Sys_SetData item in CustomerClass)
  92. {
  93. var data = new
  94. {
  95. Id = item.Id,
  96. Name = item.Name
  97. };
  98. _CustomerClass.Add(data);
  99. };
  100. //业务分类
  101. List<dynamic> _ServiceClass = new List<dynamic>();
  102. List<Sys_SetData> ServiceClass = initData.Where(u => u.STid == 36 && u.IsDel == 0).ToList();
  103. foreach (Sys_SetData item in ServiceClass)
  104. {
  105. var data = new
  106. {
  107. Id = item.Id,
  108. Name = item.Name
  109. };
  110. _ServiceClass.Add(data);
  111. };
  112. //身份分类
  113. List<dynamic> _ProvinceClass = new List<dynamic>();
  114. List<Sys_SetData> ProvinceClass = initData.Where(u => u.STid == 42 && u.IsDel == 0).ToList();
  115. foreach (Sys_SetData item in ProvinceClass)
  116. {
  117. var data = new
  118. {
  119. Id = item.Id,
  120. Name = item.Name
  121. };
  122. _ProvinceClass.Add(data);
  123. };
  124. #endregion
  125. var data1 = new {
  126. Users = _Users,
  127. Level = _level,
  128. CustomerClass = _CustomerClass,
  129. ServiceClass= _ServiceClass,
  130. ProvinceClass = _ProvinceClass
  131. };
  132. return result = new Result()
  133. {
  134. Code = 0,
  135. Msg = "查询成功",
  136. Data = data1
  137. };
  138. }
  139. else
  140. {
  141. result.Msg = string.Format("请传入有效的PortType参数!");
  142. }
  143. return result;
  144. }
  145. /// <summary>
  146. /// 市场客户资料数据
  147. /// 详情
  148. /// </summary>
  149. /// <param name="dto"></param>
  150. /// <returns></returns>
  151. public async Task<Result> _Details(int portType,int id)
  152. {
  153. Result result = new Result() { Code = -2, Msg = "未知错误" };
  154. if (portType == 1 || portType == 2 || portType == 3)
  155. {
  156. if (id < 0)
  157. {
  158. result.Msg = string.Format("请传入有效的Id参数!");
  159. return result;
  160. }
  161. string infoSql = string.Format(@" Select * From Crm_NewClientData Where Isdel = 0 And Id = {0}", id);
  162. var info = await _sqlSugar.SqlQueryable<DetailsView>(infoSql).FirstAsync();
  163. if (info != null )
  164. {
  165. List<AscribedUser> AscribedUser = await _sqlSugar.SqlQueryable<AscribedUser>
  166. ("select u1.UsersId as UserId ,u2.CnName,u1.NewClientDataId from Crm_ClientDataAndUser u1,Sys_Users u2 where u1.UsersId=u2.Id and NewClientDataId=" + info.Id + " AND u1.ISDEL = 0").ToListAsync();
  167. info.AscribedUser = AscribedUser.Select(it => it.UserId).ToList();
  168. List<AscribedDepartment> AscribedDepartment = await _sqlSugar.SqlQueryable<AscribedDepartment>
  169. ("select d2.Id,d2.Name,d1.NewClientDataId from Crm_ClientDataAndBusiness d1,Sys_SetData d2 where d1.SetDataId=d2.Id and NewClientDataId=" + info.Id + " AND d1.ISDEL = 0").ToListAsync();
  170. info.AscribedDepartment = AscribedDepartment.Select(it => it.Id).ToList();
  171. result.Code = 0;
  172. result.Data = info;
  173. }
  174. }
  175. else
  176. {
  177. result.Msg = string.Format("请传入有效的PortType参数!");
  178. }
  179. return result;
  180. }
  181. /// <summary>
  182. /// 客户资料初识初始化
  183. /// </summary>
  184. /// <param name="dto"></param>
  185. /// <returns></returns>
  186. public async Task<Result> QueryNewClientData(NewClientDataQueryDto dto)
  187. {
  188. Result result = new Result() { Code = -2, Msg = "未知错误" };
  189. try
  190. {
  191. #region 交集
  192. List<int> NewClientDataId1 = new List<int>();
  193. List<int> NewClientDataId2 = new List<int>();
  194. string NewClientDataId = "";
  195. int state = 0;
  196. #region 负责人
  197. if (dto.OperationUserId != 21)
  198. {
  199. if (string.IsNullOrWhiteSpace(dto.Userid))
  200. {
  201. dto.Userid = dto.OperationUserId.ToString();
  202. }
  203. }
  204. if (!string.IsNullOrWhiteSpace(dto.Userid))
  205. {
  206. string sql = string.Format(@"select u1.UsersId as UserId,u2.CnName,u1.NewClientDataId from Crm_ClientDataAndUser u1,Sys_Users u2 where u1.UsersId=u2.Id and u1.UsersId in ({0}) and u1.IsDel = 0", dto.Userid);
  207. List<AscribedUser> ascribedUsers = await _sqlSugar.SqlQueryable<AscribedUser>(sql).ToListAsync();
  208. if (ascribedUsers.Count != 0)
  209. {
  210. foreach (var ascribedUser in ascribedUsers)
  211. {
  212. if (ascribedUser.NewClientDataId != 0)
  213. {
  214. NewClientDataId1.Add(ascribedUser.NewClientDataId);
  215. }
  216. }
  217. }
  218. else
  219. {
  220. result = new Result() { Code = -1, Msg = "暂无数据" };
  221. }
  222. state = -1;
  223. }
  224. #endregion
  225. #region 业务归属
  226. if (!string.IsNullOrWhiteSpace(dto.Business))
  227. {
  228. string sql = string.Format(@"select d2.Id,d2.Name,d1.NewClientDataId from Crm_ClientDataAndBusiness d1,Sys_SetData d2 where d1.SetDataId=d2.Id and d1.SetDataId in ({0}) and d1.isdel = 0", dto.Business);
  229. List<AscribedDepartment> AscribedDepartment = await _sqlSugar.SqlQueryable<AscribedDepartment>(sql).ToListAsync();
  230. if (AscribedDepartment.Count != 0)
  231. {
  232. foreach (var item in AscribedDepartment)
  233. {
  234. if (item.NewClientDataId != 0)
  235. {
  236. NewClientDataId2.Add(item.NewClientDataId);
  237. }
  238. }
  239. }
  240. else
  241. {
  242. result = new Result() { Code = -1, Msg = "暂无数据" };
  243. }
  244. state = -1;
  245. }
  246. #endregion
  247. List<int> intList = new List<int>();
  248. if (NewClientDataId1.Count != 0 && NewClientDataId2.Count != 0)
  249. {
  250. intList = NewClientDataId1.Intersect(NewClientDataId2).ToList();
  251. }
  252. else if (NewClientDataId1.Count != 0)
  253. {
  254. intList = NewClientDataId1;
  255. }
  256. else if (NewClientDataId2.Count != 0)
  257. {
  258. intList = NewClientDataId2;
  259. }
  260. #endregion
  261. foreach (var item in intList)
  262. {
  263. NewClientDataId += item + ",";
  264. }
  265. if (!string.IsNullOrWhiteSpace(NewClientDataId))
  266. {
  267. NewClientDataId = NewClientDataId.Substring(0, NewClientDataId.Length - 1);
  268. }
  269. var clientDatas = await _sqlSugar.Queryable<Crm_NewClientData>().Where(x => x.IsDel == 0).ToListAsync();
  270. string contact = dto.Contact,location = dto.Location,clientDto = dto.Client;
  271. //aes 解密
  272. foreach (var client in clientDatas)
  273. {
  274. if (!string.IsNullOrEmpty(contact)) AesEncryptionHelper.Decrypt(client.Contact);
  275. if (!string.IsNullOrEmpty(location)) AesEncryptionHelper.Decrypt(client.Location);
  276. if (!string.IsNullOrEmpty(clientDto)) AesEncryptionHelper.Decrypt(client.Client);
  277. }
  278. string sqlWhere = string.Empty;
  279. if (dto.PortType == 1)
  280. {
  281. clientDatas = clientDatas
  282. .WhereIF(!string.IsNullOrEmpty(contact), x => x.Contact.Contains(contact)) //联系人条件
  283. .WhereIF(!string.IsNullOrEmpty(location), x => x.Location.Contains(location)) //地区条件
  284. .WhereIF(!string.IsNullOrEmpty(clientDto), x => x.Client.Contains(clientDto)) //单位条件
  285. .ToList();
  286. }
  287. else if (dto.PortType == 2 || dto.PortType == 3)
  288. {
  289. clientDatas = clientDatas.Where(x => x.Contact.Contains(clientDto) || x.Location.Contains(clientDto) || x.Client.Contains(clientDto)).ToList();
  290. }
  291. if (state == -1)
  292. {
  293. //intList
  294. clientDatas = clientDatas.WhereIF(intList.Count > 0, x => intList.Contains(x.Id)).ToList();
  295. }
  296. #region 地市州条件
  297. if (dto.Lvlid != 0)
  298. {
  299. clientDatas = clientDatas.Where(x => x.Lvlid == dto.Lvlid).ToList();
  300. }
  301. #endregion
  302. #region 省域条件
  303. if (dto.Range != 0)
  304. {
  305. string setDataSql = "select * from Sys_SetData where STid = 33 and isdel = 0 ";
  306. switch (dto.Range)
  307. {
  308. case 419:
  309. setDataSql += " and (Name like '%四%川%' or Name like '%成%都%')";
  310. break;
  311. case 421:
  312. setDataSql += " and (Name like '%贵%州%' or Name like '%贵%阳%')";
  313. break;
  314. case 420:
  315. setDataSql += " and (Name like '%云%南%' or Name like '%昆%明%')";
  316. break;
  317. case 423:
  318. setDataSql += " and (Name like '%重庆%')";
  319. break;
  320. case 422:
  321. setDataSql += " and (Name like '%西%藏%' or Name like '%拉%萨%')";
  322. break;
  323. case 578:
  324. setDataSql += " and (Name like '%青%海%' or Name like '%西%宁%')";
  325. break;
  326. case 605:
  327. setDataSql += " and (Name like '%陕%西%' or Name like '%西%安%')";
  328. break;
  329. case 606:
  330. setDataSql += " and (Name like '%宁%夏%' or Name like '%银%川%')";
  331. break;
  332. case 625:
  333. setDataSql += " and (Name like '%甘%肃%' or Name like '%兰%州%')";
  334. break;
  335. case 634:
  336. setDataSql += " and (Name like '%新%疆%' or Name like '%乌%鲁%木%齐%')";
  337. break;
  338. }
  339. var RangeSetDataList = _sqlSugar.SqlQueryable<Sys_SetData>(setDataSql).Select(x => x.Id).ToList();
  340. clientDatas = clientDatas.WhereIF(RangeSetDataList.Count > 0, x => RangeSetDataList.Contains(x.Lvlid)).ToList();
  341. }
  342. #endregion
  343. #region 客户类别
  344. clientDatas = clientDatas.WhereIF(dto.Category > 0, x => x.Category == dto.Category).ToList();
  345. #endregion
  346. int pIndex = dto.PageIndex * dto.PageSize - dto.PageSize + 1;
  347. int pSize = dto.PageIndex * dto.PageSize;
  348. int skip = (dto.PageIndex - 1) * dto.PageSize;
  349. var pageData = clientDatas.OrderByDescending(x => x.CreateTime).Skip(skip).Take(dto.PageSize).ToList();
  350. var NewClientDataView = _mapper.Map<List<NewClientDataView>>(pageData);
  351. var setDatas = _sqlSugar.Queryable<Sys_SetData>().Where(x => x.IsDel == 0).ToList();
  352. int index = 1;
  353. foreach (var item in NewClientDataView)
  354. {
  355. item.RowNumber = index;
  356. item.CategoryStr = setDatas.Find(x => x.Id == item.Category)?.Name ?? "-";
  357. item.LvlidStr = setDatas.Find(x => x.Id == item.Lvlid)?.Name ?? "-";
  358. item.Weight = AesEncryptionHelper.Decrypt(item.Weight);
  359. item.Client = AesEncryptionHelper.Decrypt(item.Client);
  360. item.Contact = AesEncryptionHelper.Decrypt(item.Contact);
  361. item.Job = AesEncryptionHelper.Decrypt(item.Job);
  362. item.Telephone = AesEncryptionHelper.Decrypt(item.Telephone);
  363. item.Phone = AesEncryptionHelper.Decrypt(item.Phone);
  364. item.Location = AesEncryptionHelper.Decrypt(item.Location);
  365. item.Remark = AesEncryptionHelper.Decrypt(item.Remark);
  366. index++;
  367. }
  368. #region 下拉框初始化数据
  369. //负责人下拉框
  370. var _Users = GetNewExistClient(dto.OperationUserId).Select(x => new { x.Id, Name = x.CnName }).ToList();
  371. //省域数据
  372. var _Province = setDatas.Where(u => u.STid == 42).Select(x => new { x.Id, x.Name }).ToList();
  373. //客户级别数据
  374. var _level = setDatas.Where(u => u.STid == 33).Select(x => new { x.Id, x.Name }).ToList();
  375. //客户类别
  376. var _CustomerClass = setDatas.Where(u => u.STid == 37).Select(x => new { x.Id, x.Name }).ToList();
  377. //业务分类
  378. var _ServiceClass = setDatas.Where(u => u.STid == 36).Select(x => new { x.Id, x.Name }).ToList();
  379. #endregion
  380. var groupNumber = await QueryNumberGroups();
  381. if (NewClientDataView.Count > 0)
  382. {
  383. int count = clientDatas.Count;
  384. float totalPage = (float)count / dto.PageSize;//总页数
  385. if (totalPage == 0) totalPage = 1;
  386. else totalPage = (int)Math.Ceiling((double)totalPage);
  387. if (dto.PortType == 1)
  388. {
  389. foreach (var item in NewClientDataView)
  390. {
  391. List<AscribedUser> AscribedUser = await _sqlSugar.SqlQueryable<AscribedUser>
  392. ("select u1.UsersId as UserId ,u2.CnName,u1.NewClientDataId from Crm_ClientDataAndUser u1,Sys_Users u2 where u1.UsersId=u2.Id and NewClientDataId=" + item.Id + " AND u1.ISDEL = 0").ToListAsync();
  393. item.AscribedUser = AscribedUser;
  394. List<AscribedDepartment> AscribedDepartment = await _sqlSugar.SqlQueryable<AscribedDepartment>
  395. ("select d2.Id,d2.Name,d1.NewClientDataId from Crm_ClientDataAndBusiness d1,Sys_SetData d2 where d1.SetDataId=d2.Id and NewClientDataId=" + item.Id + " AND d1.ISDEL = 0").ToListAsync();
  396. item.AscribedDepartment = AscribedDepartment;
  397. }
  398. var Data = new
  399. {
  400. ClientTableData = new { pageCount = count, totalPage = (int)totalPage, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = NewClientDataView },
  401. Users = _Users,
  402. Province = _Province,
  403. level = _level,
  404. CustomerClass = _CustomerClass,
  405. ServiceClass = _ServiceClass,
  406. groupNumber = groupNumber.Data,
  407. };
  408. return result = new Result()
  409. {
  410. Code = 0,
  411. Msg = "查询成功",
  412. Data = Data
  413. };
  414. }
  415. else if (dto.PortType == 2 || dto.PortType == 3)
  416. {
  417. List<NewClientDataAndroidIOSView> newClientDataIOSViews = new List<NewClientDataAndroidIOSView>();
  418. foreach (var item in NewClientDataView)
  419. {
  420. newClientDataIOSViews.Add(new NewClientDataAndroidIOSView()
  421. {
  422. RowNumber = item.RowNumber,
  423. Id = item.Id,
  424. Client = item.Client,
  425. Contact = item.Contact,
  426. Job = item.Job,
  427. Telephone = item.Telephone,
  428. Location = item.Location,
  429. });
  430. }
  431. result = new Result()
  432. {
  433. Code = 0,
  434. Msg = "查询成功",
  435. Data = new { pageCount = count, totalPage = (int)totalPage, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = newClientDataIOSViews },
  436. };
  437. }
  438. }
  439. else
  440. {
  441. if (dto.PortType == 2 || dto.PortType == 3)
  442. {
  443. var Data = new { pageCount = 0, totalPage = 0, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = NewClientDataView };
  444. result = new Result() { Code = 0, Msg = "获取成功!", Data = Data };
  445. }
  446. else
  447. {
  448. var Data = new
  449. {
  450. ClientTableData = new { pageCount = 0, totalPage = 0, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = NewClientDataView },
  451. Users = _Users,
  452. Province = _Province,
  453. level = _level,
  454. CustomerClass = _CustomerClass,
  455. ServiceClass = _ServiceClass,
  456. groupNumber = groupNumber.Data,
  457. };
  458. result = new Result() { Code = 0, Msg = "获取成功!", Data = Data };
  459. }
  460. }
  461. }
  462. catch (Exception ex)
  463. {
  464. result = new Result() { Code = -2, Msg = "未知错误" };
  465. }
  466. return result;
  467. }
  468. /// <summary>
  469. /// 客户资料初识初始化
  470. /// </summary>
  471. /// <param name="dto"></param>
  472. /// <returns></returns>
  473. public async Task<Result> QueryNewClientData1(NewClientDataQueryDto dto)
  474. {
  475. Result result = new Result() { Code = -2, Msg = "未知错误" };
  476. try
  477. {
  478. #region 交集
  479. List<int> NewClientDataId1 = new List<int>();
  480. List<int> NewClientDataId2 = new List<int>();
  481. string NewClientDataId = "";
  482. int state = 0;
  483. #region 负责人
  484. if (dto.OperationUserId != 21)
  485. {
  486. if (string.IsNullOrWhiteSpace(dto.Userid))
  487. {
  488. dto.Userid = dto.OperationUserId.ToString();
  489. }
  490. }
  491. if (!string.IsNullOrWhiteSpace(dto.Userid))
  492. {
  493. string sql = string.Format(@"select u1.UsersId as UserId,u2.CnName,u1.NewClientDataId from Crm_ClientDataAndUser u1,Sys_Users u2 where u1.UsersId=u2.Id and u1.UsersId in ({0}) and u1.IsDel = 0", dto.Userid);
  494. List<AscribedUser> ascribedUsers = await _sqlSugar.SqlQueryable<AscribedUser>(sql).ToListAsync();
  495. if (ascribedUsers.Count != 0)
  496. {
  497. foreach (var ascribedUser in ascribedUsers)
  498. {
  499. if (ascribedUser.NewClientDataId != 0)
  500. {
  501. NewClientDataId1.Add(ascribedUser.NewClientDataId);
  502. }
  503. }
  504. }
  505. else
  506. {
  507. result = new Result() { Code = -1, Msg = "暂无数据" };
  508. }
  509. state = -1;
  510. }
  511. #endregion
  512. #region 业务归属
  513. if (!string.IsNullOrWhiteSpace(dto.Business))
  514. {
  515. string sql = string.Format(@"select d2.Id,d2.Name,d1.NewClientDataId from Crm_ClientDataAndBusiness d1,Sys_SetData d2 where d1.SetDataId=d2.Id and d1.SetDataId in ({0}) and d1.isdel = 0", dto.Business);
  516. List<AscribedDepartment> AscribedDepartment = await _sqlSugar.SqlQueryable<AscribedDepartment>(sql).ToListAsync();
  517. if (AscribedDepartment.Count != 0)
  518. {
  519. foreach (var item in AscribedDepartment)
  520. {
  521. if (item.NewClientDataId != 0)
  522. {
  523. NewClientDataId2.Add(item.NewClientDataId);
  524. }
  525. }
  526. }
  527. else
  528. {
  529. result = new Result() { Code = -1, Msg = "暂无数据" };
  530. }
  531. state = -1;
  532. }
  533. #endregion
  534. List<int> intList = new List<int>();
  535. if (NewClientDataId1.Count != 0 && NewClientDataId2.Count != 0)
  536. {
  537. intList = NewClientDataId1.Intersect(NewClientDataId2).ToList();
  538. }
  539. else if (NewClientDataId1.Count != 0)
  540. {
  541. intList = NewClientDataId1;
  542. }
  543. else if (NewClientDataId2.Count != 0)
  544. {
  545. intList = NewClientDataId2;
  546. }
  547. #endregion
  548. foreach (var item in intList)
  549. {
  550. NewClientDataId += item + ",";
  551. }
  552. if (!string.IsNullOrWhiteSpace(NewClientDataId))
  553. {
  554. NewClientDataId = NewClientDataId.Substring(0, NewClientDataId.Length - 1);
  555. }
  556. string sqlWhere = string.Empty;
  557. if (dto.PortType == 1)
  558. {
  559. #region 联系人条件
  560. if (!string.IsNullOrWhiteSpace(dto.Contact))
  561. {
  562. sqlWhere += string.Format(@" And s.Contact like '%{0}%'", dto.Contact);
  563. }
  564. #endregion
  565. #region 地区条件
  566. if (!string.IsNullOrWhiteSpace(dto.Location))
  567. {
  568. sqlWhere += string.Format(@" And s.Location like '%{0}%'", dto.Location);
  569. }
  570. #endregion
  571. #region 单位条件
  572. if (!string.IsNullOrWhiteSpace(dto.Client))
  573. {
  574. sqlWhere += string.Format(@" And s.Client like '%{0}%'", dto.Client);
  575. }
  576. #endregion
  577. }
  578. else if (dto.PortType == 2 || dto.PortType == 3)
  579. {
  580. sqlWhere += string.Format("And (Contact like '%{0}%' or Location like '%{0}%' or Client like '%{0}%' )", dto.Client);
  581. }
  582. if (state == -1)
  583. {
  584. if (string.IsNullOrWhiteSpace(NewClientDataId))
  585. {
  586. NewClientDataId = "0";
  587. }
  588. sqlWhere += string.Format(@" And s.Id in({0})", NewClientDataId);
  589. }
  590. #region 地市州条件
  591. if (dto.Lvlid != 0)
  592. {
  593. sqlWhere += string.Format(@" And s.Lvlid={0}", dto.Lvlid);
  594. }
  595. #endregion
  596. #region 省域条件
  597. if (dto.Range != 0)
  598. {
  599. string setDataSql = "select * from Sys_SetData where STid = 33 and isdel = 0 ";
  600. switch (dto.Range)
  601. {
  602. case 419:
  603. setDataSql += " and (Name like '%四%川%' or Name like '%成%都%')";
  604. break;
  605. case 421:
  606. setDataSql += " and (Name like '%贵%州%' or Name like '%贵%阳%')";
  607. break;
  608. case 420:
  609. setDataSql += " and (Name like '%云%南%' or Name like '%昆%明%')";
  610. break;
  611. case 423:
  612. setDataSql += " and (Name like '%重庆%')";
  613. break;
  614. case 422:
  615. setDataSql += " and (Name like '%西%藏%' or Name like '%拉%萨%')";
  616. break;
  617. case 578:
  618. setDataSql += " and (Name like '%青%海%' or Name like '%西%宁%')";
  619. break;
  620. case 605:
  621. setDataSql += " and (Name like '%陕%西%' or Name like '%西%安%')";
  622. break;
  623. case 606:
  624. setDataSql += " and (Name like '%宁%夏%' or Name like '%银%川%')";
  625. break;
  626. case 625:
  627. setDataSql += " and (Name like '%甘%肃%' or Name like '%兰%州%')";
  628. break;
  629. case 634:
  630. setDataSql += " and (Name like '%新%疆%' or Name like '%乌%鲁%木%齐%')";
  631. break;
  632. }
  633. var RangeSetDataList = _sqlSugar.SqlQueryable<Sys_SetData>(setDataSql).Select(x => x.Id).ToList();
  634. string lvlds = string.Join(',', RangeSetDataList).TrimEnd(',');
  635. if (!string.IsNullOrEmpty(lvlds))
  636. {
  637. sqlWhere += string.Format(@" And s.Lvlid in ({0}) ", lvlds);
  638. }
  639. }
  640. #endregion
  641. #region 客户类别
  642. if (dto.Category != 0)
  643. {
  644. sqlWhere += string.Format(@" And s.Category = {0}", dto.Category);
  645. }
  646. #endregion
  647. sqlWhere += string.Format(@" And s.Lvlid=s1.Id And s.IsDel={0} ", 0);
  648. if (!string.IsNullOrEmpty(sqlWhere.Trim()))
  649. {
  650. Regex r = new Regex("And");
  651. sqlWhere = r.Replace(sqlWhere, "Where", 1);
  652. }
  653. int pIndex = dto.PageIndex * dto.PageSize - dto.PageSize + 1;
  654. int pSize = dto.PageIndex * dto.PageSize;
  655. 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()
  656. 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
  657. RowNumber between {1} and {2} ", sqlWhere, pIndex, pSize);
  658. List<NewClientDataView> NewClientDataView = await _sqlSugar.SqlQueryable<NewClientDataView>(sqlNew).ToListAsync();
  659. foreach (var item in NewClientDataView)
  660. {
  661. Sys_SetData CategoryStr = _sqlSugar.Queryable<Sys_SetData>().Single(it => it.Id == item.Category);
  662. if (CategoryStr != null)
  663. {
  664. item.CategoryStr = CategoryStr != null ? CategoryStr.Name : null;
  665. }
  666. Sys_SetData lvlStr = _sqlSugar.Queryable<Sys_SetData>().Single(it => it.Id == item.Lvlid);
  667. if (lvlStr != null)
  668. {
  669. item.LvlidStr = lvlStr != null ? lvlStr.Name : null;
  670. }
  671. }
  672. #region 下拉框初始化数据
  673. //负责人下拉框
  674. List<dynamic> _Users = new List<dynamic>();
  675. List<Sys_Users> users = GetNewExistClient(dto.OperationUserId);
  676. foreach (Sys_Users user in users)
  677. {
  678. var data = new
  679. {
  680. Id = user.Id,
  681. Name = user.CnName
  682. };
  683. _Users.Add(data);
  684. };
  685. //省域数据
  686. List<dynamic> _Province = new List<dynamic>();
  687. List<Sys_SetData> province = _sqlSugar.Queryable<Sys_SetData>()
  688. .Where(u => u.STid == 42 && u.IsDel == 0).ToList();
  689. foreach (Sys_SetData item in province)
  690. {
  691. var data = new
  692. {
  693. Id = item.Id,
  694. Name = item.Name
  695. };
  696. _Province.Add(data);
  697. };
  698. //客户级别数据
  699. List<dynamic> _level = new List<dynamic>();
  700. List<Sys_SetData> level = _sqlSugar.Queryable<Sys_SetData>()
  701. .Where(u => u.STid == 33 && u.IsDel == 0).ToList();
  702. foreach (Sys_SetData item in level)
  703. {
  704. var data = new
  705. {
  706. Id = item.Id,
  707. Name = item.Name
  708. };
  709. _level.Add(data);
  710. };
  711. //客户类别
  712. List<dynamic> _CustomerClass = new List<dynamic>();
  713. List<Sys_SetData> CustomerClass = _sqlSugar.Queryable<Sys_SetData>()
  714. .Where(u => u.STid == 37 && u.IsDel == 0).ToList();
  715. foreach (Sys_SetData item in CustomerClass)
  716. {
  717. var data = new
  718. {
  719. Id = item.Id,
  720. Name = item.Name
  721. };
  722. _CustomerClass.Add(data);
  723. };
  724. //业务分类
  725. List<dynamic> _ServiceClass = new List<dynamic>();
  726. List<Sys_SetData> ServiceClass = _sqlSugar.Queryable<Sys_SetData>()
  727. .Where(u => u.STid == 36 && u.IsDel == 0).ToList();
  728. foreach (Sys_SetData item in ServiceClass)
  729. {
  730. var data = new
  731. {
  732. Id = item.Id,
  733. Name = item.Name
  734. };
  735. _ServiceClass.Add(data);
  736. };
  737. #endregion
  738. var groupNumber = await QueryNumberGroups();
  739. if (NewClientDataView.Count > 0)
  740. {
  741. int count = NewClientDataView[0].countPage;
  742. float totalPage = (float)count / dto.PageSize;//总页数
  743. if (totalPage == 0) totalPage = 1;
  744. else totalPage = (int)Math.Ceiling((double)totalPage);
  745. if (dto.PortType == 1)
  746. {
  747. foreach (var item in NewClientDataView)
  748. {
  749. List<AscribedUser> AscribedUser = await _sqlSugar.SqlQueryable<AscribedUser>
  750. ("select u1.UsersId as UserId ,u2.CnName,u1.NewClientDataId from Crm_ClientDataAndUser u1,Sys_Users u2 where u1.UsersId=u2.Id and NewClientDataId=" + item.Id + " AND u1.ISDEL = 0").ToListAsync();
  751. item.AscribedUser = AscribedUser;
  752. List<AscribedDepartment> AscribedDepartment = await _sqlSugar.SqlQueryable<AscribedDepartment>
  753. ("select d2.Id,d2.Name,d1.NewClientDataId from Crm_ClientDataAndBusiness d1,Sys_SetData d2 where d1.SetDataId=d2.Id and NewClientDataId=" + item.Id + " AND d1.ISDEL = 0").ToListAsync();
  754. item.AscribedDepartment = AscribedDepartment;
  755. }
  756. var Data = new
  757. {
  758. ClientTableData = new { pageCount = count, totalPage = (int)totalPage, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = NewClientDataView },
  759. Users = _Users,
  760. Province = _Province,
  761. level = _level,
  762. CustomerClass = _CustomerClass,
  763. ServiceClass = _ServiceClass,
  764. groupNumber = groupNumber.Data,
  765. };
  766. return result = new Result()
  767. {
  768. Code = 0,
  769. Msg = "查询成功",
  770. Data = Data
  771. };
  772. }
  773. else if (dto.PortType == 2 || dto.PortType == 3)
  774. {
  775. List<NewClientDataAndroidIOSView> newClientDataIOSViews = new List<NewClientDataAndroidIOSView>();
  776. foreach (var item in NewClientDataView)
  777. {
  778. newClientDataIOSViews.Add(new NewClientDataAndroidIOSView()
  779. {
  780. RowNumber = item.RowNumber,
  781. Id = item.Id,
  782. Client = item.Client,
  783. Contact = item.Contact,
  784. Job = item.Job,
  785. Telephone = item.Telephone,
  786. Location = item.Location,
  787. });
  788. }
  789. result = new Result()
  790. {
  791. Code = 0,
  792. Msg = "查询成功",
  793. Data = new { pageCount = count, totalPage = (int)totalPage, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = newClientDataIOSViews },
  794. };
  795. }
  796. }
  797. else
  798. {
  799. if (dto.PortType == 2 || dto.PortType == 3)
  800. {
  801. var Data = new { pageCount = 0, totalPage = 0, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = NewClientDataView };
  802. result = new Result() { Code = 0, Msg = "获取成功!", Data = Data };
  803. }
  804. else
  805. {
  806. var Data = new
  807. {
  808. ClientTableData = new { pageCount = 0, totalPage = 0, pageIndex = dto.PageIndex, pageSize = dto.PageSize, pageSource = NewClientDataView },
  809. Users = _Users,
  810. Province = _Province,
  811. level = _level,
  812. CustomerClass = _CustomerClass,
  813. ServiceClass = _ServiceClass,
  814. groupNumber = groupNumber.Data,
  815. };
  816. result = new Result() { Code = 0, Msg = "获取成功!", Data = Data };
  817. }
  818. }
  819. }
  820. catch (Exception ex)
  821. {
  822. result = new Result() { Code = -2, Msg = "未知错误" };
  823. }
  824. return result;
  825. }
  826. public Result QueryUserSelect()
  827. {
  828. Result result = new Result() { Code = -2, Msg = "未知错误" };
  829. try
  830. {
  831. //负责人下拉框
  832. List<dynamic> _Users = new List<dynamic>();
  833. List<Sys_Users> users = _sqlSugar.Queryable<Sys_Users>()
  834. .Where(u => u.IsDel == 0).ToList();
  835. foreach (Sys_Users user in users)
  836. {
  837. var data = new
  838. {
  839. Id = user.Id,
  840. Name = user.CnName
  841. };
  842. _Users.Add(data);
  843. };
  844. if (_Users.Count == 0)
  845. {
  846. result = new Result() { Code = -1, Msg = "暂无数据" };
  847. }
  848. result = new Result() { Code = 0, Msg = "查询成功!", Data = _Users };
  849. }
  850. catch (Exception)
  851. {
  852. result = new Result() { Code = -2, Msg = "未知错误" };
  853. }
  854. return result;
  855. }
  856. public async Task<Result> NewClientOp(NewClientOpDto dto)
  857. {
  858. Result result = new Result() { Code = -2, Msg = "未知错误" };
  859. bool istrue = false;
  860. int AddReturnId = -1;
  861. string BirthdayStr = string.Empty;
  862. if (!string.IsNullOrWhiteSpace(dto.Birthday))
  863. {
  864. DateTime Birthday = new DateTime();
  865. var isParse = DateTime.TryParse(dto.Birthday, out Birthday);
  866. BirthdayStr = isParse ? Birthday.ToString("yyyy-MM-dd") : "";
  867. }
  868. try
  869. {
  870. BeginTran();
  871. if (dto.Status == 1)//添加
  872. {
  873. string selectSql = string.Format(@"select * from Crm_NewClientData where Client='{0}' And Contact='{1}' And IsDel={2}"
  874. , dto.Client, dto.Contact, 0);
  875. var NewClientData = await _sqlSugar.SqlQueryable<Crm_NewClientData>(selectSql).FirstAsync();//查询是否存在
  876. if (NewClientData == null)
  877. {
  878. if (string.IsNullOrWhiteSpace(dto.PassportDate))
  879. {
  880. dto.PassportDate = null;
  881. }
  882. Crm_NewClientData _NewClientData = _mapper.Map<Crm_NewClientData>(dto);
  883. _NewClientData.Birthday = BirthdayStr;
  884. int id = await AddAsyncReturnId(_NewClientData); //添加市场客户资料表数据
  885. if (id == 0)
  886. {
  887. result = new Result() { Code = -1, Msg = "添加失败!" };
  888. }
  889. else
  890. {
  891. result = new Result() { Code = 0, Msg = "添加成功!",Data = id };
  892. istrue = true;
  893. AddReturnId = id;
  894. CommitTran();
  895. }
  896. }
  897. else
  898. {
  899. result = new Result() { Code = -1, Msg = "该信息已存在,请勿重复添加!" };
  900. }
  901. }
  902. else if (dto.Status == 2)//修改
  903. {
  904. DateTime? PassportDate = null;
  905. try
  906. {
  907. PassportDate = DateTime.Parse(dto.PassportDate);
  908. }
  909. catch (Exception)
  910. {
  911. PassportDate = null;
  912. }
  913. bool res = await UpdateAsync(a => a.Id == dto.Id, a => new Crm_NewClientData
  914. {
  915. Number = dto.Number,
  916. Lvlid = dto.Lvlid,
  917. Client = dto.Client,
  918. Weight = dto.Weight,
  919. ClientShort = dto.Clientshort,
  920. Contact = dto.Contact,
  921. Gender = dto.Gender,
  922. Passport = dto.Passport,
  923. PassportDate = PassportDate,
  924. Job = dto.Job,
  925. Telephone = dto.Telephone,
  926. Phone = dto.Phone,
  927. Email = dto.Email,
  928. Location = dto.Location,
  929. Address = dto.Address,
  930. Birthday = BirthdayStr,
  931. OtherInfo = dto.Otherinfo,
  932. Wechat = dto.Wechat,
  933. Category = dto.Category,
  934. PreDele = dto.Predele,
  935. FinlishedDele = dto.FinlishedDele,
  936. Remark = dto.Remark,
  937. });
  938. if (res)
  939. {
  940. istrue = true;
  941. AddReturnId = dto.Id == 0 ? -1 : dto.Id;
  942. if (AddReturnId != -1)
  943. {
  944. await _sqlSugar.Updateable<Crm_ClientDataAndUser>().Where(x=>x.NewClientDataId == AddReturnId).SetColumns(a => new Crm_ClientDataAndUser()
  945. {
  946. IsDel = 1,
  947. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  948. }).ExecuteCommandAsync();
  949. await _sqlSugar.Updateable<Crm_ClientDataAndBusiness>().Where(x => x.NewClientDataId == AddReturnId).SetColumns(a => new Crm_ClientDataAndBusiness()
  950. {
  951. IsDel = 1,
  952. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  953. }).ExecuteCommandAsync();
  954. }
  955. result = new Result() { Code = 0, Msg = "修改成功!" };
  956. }
  957. else
  958. {
  959. result = new Result() { Code = -1, Msg = "修改失败!" };
  960. }
  961. }
  962. else
  963. {
  964. result = new Result() { Code = -1, Msg = "请传入Status参数,1添加 2修改!" };
  965. }
  966. if (istrue)
  967. {
  968. Adds<Crm_ClientDataAndUser>(dto.AscribedUser.Select(x => new Crm_ClientDataAndUser
  969. {
  970. CreateTime = DateTime.Now,
  971. CreateUserId = dto.CreateUserId,
  972. IsDel = 0,
  973. NewClientDataId = AddReturnId,
  974. usersId = x
  975. }).ToList());
  976. Adds<Crm_ClientDataAndBusiness>(dto.AscribedDepartment.Select(x => new Crm_ClientDataAndBusiness
  977. {
  978. CreateUserId = dto.CreateUserId,
  979. IsDel = 0,
  980. CreateTime = DateTime.Now,
  981. NewClientDataId = AddReturnId,
  982. SetDataId = x,
  983. }).ToList());
  984. CommitTran();
  985. result.Data = AddReturnId;
  986. }
  987. else
  988. {
  989. RollbackTran();
  990. }
  991. }
  992. catch (Exception)
  993. {
  994. RollbackTran();
  995. result = new Result() { Code = -2, Msg = "未知错误" };
  996. }
  997. return result;
  998. }
  999. public async Task<Result> QueryNumberGroups()
  1000. {
  1001. Result result = new Result();
  1002. //preDeleAll 预计总量
  1003. //finlishedDeleAll 已出总量
  1004. DataTable preDeleAndfinlishedDeleAll = await GetDataTableAsync("select SUM(PreDele) as PreDeleAll ,SUM(FinlishedDele) as FinlishedDeleAll from Crm_NewClientData");
  1005. var preDeleAll = preDeleAndfinlishedDeleAll.Rows[0]["PreDeleAll"].ToString();
  1006. var finlishedDeleAll = preDeleAndfinlishedDeleAll.Rows[0]["finlishedDeleAll"].ToString();
  1007. result.Code = 0;
  1008. result.Msg = "成功!";
  1009. result.Data = new
  1010. {
  1011. preDeleAll,
  1012. finlishedDeleAll
  1013. };
  1014. return result;
  1015. }
  1016. /// <summary>
  1017. /// 获取下拉列表数据和单条数据信息
  1018. /// </summary>
  1019. /// <param name="dto"></param>
  1020. public async Task<Result> QuerySelectAndSingleData(QuerySingleDto dto)
  1021. {
  1022. Result rest = new Result();
  1023. var QueryData = await GetAsync<Crm_NewClientData>(x => x.Id == dto.Id);
  1024. NewClientDataView MapQueryData = null;
  1025. if (QueryData != null)
  1026. {
  1027. EncryptionProcessor.DecryptProperties(QueryData);
  1028. MapQueryData = _mapper.Map<NewClientDataView>(QueryData);
  1029. MapQueryData.AscribedUser = await _sqlSugar.SqlQueryable<AscribedUser>
  1030. ("select u1.UsersId as UserId,u2.CnName,u1.NewClientDataId from Crm_ClientDataAndUser u1,Sys_Users u2 where u1.UsersId=u2.Id and NewClientDataId=" + dto.Id + " and u1.isdel = 0").ToListAsync();
  1031. MapQueryData.AscribedDepartment = await _sqlSugar.SqlQueryable<AscribedDepartment>
  1032. ("select d2.Id,d2.Name,d1.NewClientDataId from Crm_ClientDataAndBusiness d1,Sys_SetData d2 where d1.SetDataId=d2.Id and NewClientDataId=" + dto.Id + " and d1.isdel = 0").ToListAsync();
  1033. }
  1034. #region 下拉框初始化数据
  1035. //负责人下拉框
  1036. List<dynamic> _Users = new List<dynamic>();
  1037. List<Sys_Users> users = _sqlSugar.Queryable<Sys_Users>()
  1038. .Where(u => u.IsDel == 0).ToList();
  1039. foreach (Sys_Users user in users)
  1040. {
  1041. var data = new
  1042. {
  1043. Id = user.Id,
  1044. Name = user.CnName
  1045. };
  1046. _Users.Add(data);
  1047. };
  1048. //客户级别数据
  1049. List<dynamic> _level = new List<dynamic>();
  1050. List<Sys_SetData> level = _sqlSugar.Queryable<Sys_SetData>()
  1051. .Where(u => u.STid == 33 && u.IsDel == 0).ToList();
  1052. foreach (Sys_SetData item in level)
  1053. {
  1054. var data = new
  1055. {
  1056. Id = item.Id,
  1057. Name = item.Name
  1058. };
  1059. _level.Add(data);
  1060. };
  1061. //客户类别
  1062. List<dynamic> _CustomerClass = new List<dynamic>();
  1063. List<Sys_SetData> CustomerClass = _sqlSugar.Queryable<Sys_SetData>()
  1064. .Where(u => u.STid == 37 && u.IsDel == 0).ToList();
  1065. foreach (Sys_SetData item in CustomerClass)
  1066. {
  1067. var data = new
  1068. {
  1069. Id = item.Id,
  1070. Name = item.Name
  1071. };
  1072. _CustomerClass.Add(data);
  1073. };
  1074. //业务分类
  1075. List<dynamic> _ServiceClass = new List<dynamic>();
  1076. List<Sys_SetData> ServiceClass = _sqlSugar.Queryable<Sys_SetData>()
  1077. .Where(u => u.STid == 36 && u.IsDel == 0).ToList();
  1078. foreach (Sys_SetData item in ServiceClass)
  1079. {
  1080. var data = new
  1081. {
  1082. Id = item.Id,
  1083. Name = item.Name
  1084. };
  1085. _ServiceClass.Add(data);
  1086. };
  1087. #endregion
  1088. rest.Code = 0;
  1089. rest.Data = new
  1090. {
  1091. data = MapQueryData,
  1092. Users = _Users,
  1093. level = _level,
  1094. CustomerClass = _CustomerClass,
  1095. ServiceClass = _ServiceClass,
  1096. };
  1097. rest.Msg = "获取成功!";
  1098. return rest;
  1099. }
  1100. /// <summary>
  1101. /// 删除市场客户资料数据
  1102. /// </summary>
  1103. /// <param name="dto"></param>
  1104. /// <returns></returns>
  1105. public async Task<Result> DelNewClientData(DelBaseDto dto)
  1106. {
  1107. Result AcrionResult = new Result();
  1108. BeginTran();
  1109. var DBresult = await SoftDeleteByIdAsync<Crm_NewClientData>(dto.Id.ToString(), dto.DeleteUserId);
  1110. try
  1111. {
  1112. if (DBresult)
  1113. {
  1114. AcrionResult.Code = 0;
  1115. string sqlSet = $"isdel = 1, DeleteUserId = {dto.DeleteUserId} ,DeleteTime = '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}'";
  1116. string sql = $" update Crm_ClientDataAndUser set {sqlSet} where NewClientDataId = {dto.Id} ";
  1117. await ExecuteCommandAsync(sql);
  1118. sql = $" update Crm_ClientDataAndBusiness set {sqlSet} where NewClientDataId = {dto.Id} ";
  1119. await ExecuteCommandAsync(sql);
  1120. CommitTran();
  1121. AcrionResult.Code = 0;
  1122. }
  1123. }
  1124. catch (Exception ex)
  1125. {
  1126. RollbackTran();
  1127. AcrionResult.Msg = ex.Message;
  1128. AcrionResult.Code = -1;
  1129. }
  1130. return AcrionResult;
  1131. }
  1132. /// <summary>
  1133. /// 市场客户资料数据
  1134. /// 批量指派
  1135. /// </summary>
  1136. /// <param name="dto"></param>
  1137. /// <returns></returns>
  1138. public async Task<Result> _BatchAssignment(BatchAssignmentDto dto)
  1139. {
  1140. Result AcrionResult = new Result() { Code = -1,Msg="操作失败"};
  1141. if (dto.UserIdItem == null || dto.UserIdItem.Count < 1)
  1142. {
  1143. AcrionResult.Msg = "用户ID集合不能为空!";
  1144. return AcrionResult;
  1145. }
  1146. if (dto.ClientDataIdItem == null || dto.ClientDataIdItem.Count < 1)
  1147. {
  1148. AcrionResult.Msg = "客户资料ID集合不能为空!";
  1149. return AcrionResult;
  1150. }
  1151. List<Crm_ClientDataAndUser> _ClientDataAndUsers = new List<Crm_ClientDataAndUser>();
  1152. List<Crm_ClientDataAndUser> _ClientDataAndUsers1 = await _sqlSugar.Queryable<Crm_ClientDataAndUser>()
  1153. .Where(it =>
  1154. it.IsDel == 0 &&
  1155. dto.ClientDataIdItem.Contains(it.NewClientDataId) &&
  1156. dto.UserIdItem.Contains(it.usersId)
  1157. )
  1158. .ToListAsync();
  1159. var existsCount = 0;
  1160. foreach (var clientDataId in dto.ClientDataIdItem)
  1161. {
  1162. foreach (var userId1 in dto.UserIdItem)
  1163. {
  1164. Crm_ClientDataAndUser _ClientDataAndUsers2 = _ClientDataAndUsers1.Where(it => it.NewClientDataId == clientDataId &&
  1165. it.usersId == userId1
  1166. ).FirstOrDefault();
  1167. if (_ClientDataAndUsers2 == null)
  1168. {
  1169. _ClientDataAndUsers.Add(new Crm_ClientDataAndUser()
  1170. {
  1171. CreateUserId = dto.UserId,
  1172. NewClientDataId = clientDataId,
  1173. usersId = userId1
  1174. });
  1175. }
  1176. else
  1177. {
  1178. existsCount++;
  1179. }
  1180. }
  1181. }
  1182. if (_ClientDataAndUsers.Count > 0)
  1183. {
  1184. var adds = await _sqlSugar.Insertable(_ClientDataAndUsers).ExecuteCommandAsync();
  1185. if (adds > 0)
  1186. {
  1187. #region 客户资料表操作记录 批量添加
  1188. List<Crm_TableOperationRecord> _TableOperationRecords = new List<Crm_TableOperationRecord>();
  1189. foreach (var item in _ClientDataAndUsers)
  1190. {
  1191. _TableOperationRecords.Add(
  1192. new Crm_TableOperationRecord() {
  1193. TableName = "Crm_TableOperationRecord",
  1194. PortType = dto.PortType,
  1195. OperationItem = OperationEnum.BatchAssignment,
  1196. DataId = item.NewClientDataId,
  1197. CreateUserId = dto.UserId,
  1198. CreateTime = DateTime.Now,
  1199. Remark = "",
  1200. IsDel = 0
  1201. });
  1202. }
  1203. if (_TableOperationRecords.Count > 0)
  1204. {
  1205. await _sqlSugar.Insertable(_TableOperationRecords).ExecuteCommandAsync();
  1206. }
  1207. #endregion
  1208. AcrionResult.Code = 0;
  1209. return AcrionResult;
  1210. }
  1211. }
  1212. else
  1213. {
  1214. if(existsCount > 0)
  1215. AcrionResult.Msg += $" {existsCount}条数据已被指派,无法重复指派!";
  1216. }
  1217. return AcrionResult;
  1218. }
  1219. public List<Sys_Users> GetNewExistClient(int userid)
  1220. {
  1221. 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";
  1222. var userArr = _sqlSugar.SqlQueryable<Sys_Users>(sql).ToList();
  1223. var dic = new Dictionary<int, int[]>()
  1224. {
  1225. { 95, new int []{ 95 , 337 , 302} }
  1226. };
  1227. if (dic.Keys.Contains(userid))
  1228. {
  1229. return userArr.Where(x=> dic[userid].Contains(x.Id)).ToList();
  1230. }
  1231. return userArr;
  1232. }
  1233. }
  1234. }