TourClientListRepository.cs 49 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019
  1. using AutoMapper;
  2. using MathNet.Numerics.Distributions;
  3. using NPOI.SS.Formula.PTG;
  4. using NPOI.Util;
  5. using OASystem.Domain;
  6. using OASystem.Domain.Dtos.CRM;
  7. using OASystem.Domain.Dtos.Groups;
  8. using OASystem.Domain.Entities.Customer;
  9. using OASystem.Domain.Entities.Groups;
  10. using OASystem.Domain.ViewModels.Groups;
  11. using OASystem.Infrastructure.Tools;
  12. using Org.BouncyCastle.Utilities.Encoders;
  13. using StackExchange.Redis;
  14. using System;
  15. using System.Collections;
  16. using System.Collections.Generic;
  17. using System.Globalization;
  18. using System.Linq;
  19. using System.Text;
  20. using System.Threading.Tasks;
  21. namespace OASystem.Infrastructure.Repositories.Groups
  22. {
  23. /// <summary>
  24. /// 接团客户名单
  25. /// 仓库
  26. /// </summary>
  27. public class TourClientListRepository :BaseRepository<Grp_TourClientList,TourClientListView>
  28. {
  29. private readonly Result _result;
  30. private readonly IMapper _mapper;
  31. public TourClientListRepository(SqlSugarClient sqlSugar, IMapper mapper)
  32. : base(sqlSugar)
  33. {
  34. _result = new Result() { Code = -1, Msg = "操作失败!" };
  35. _mapper = mapper;
  36. }
  37. /// <summary>
  38. /// 根据团组Id客人名单List
  39. /// </summary>
  40. /// <param name="portId"></param>
  41. /// <param name="diId"></param>
  42. /// <returns></returns>
  43. public async Task<List<SimplClientInfo>> _GuestNameItemByDiId(int portId, int diId)
  44. {
  45. List<SimplClientInfo> simplClients = new List<SimplClientInfo>();
  46. if (portId == 1 || portId == 2 || portId == 3) // 1 web 2 Android 3 ios
  47. {
  48. string sql = $@"Select b.Id,b.Pinyin,b.lastName,b.firstName,b.phone From Grp_TourClientList a, Crm_DeleClient b
  49. Where a.clientid = b.id and a.isdel = 0 and a.diId = {diId}";
  50. simplClients = await _sqlSugar.SqlQueryable<SimplClientInfo>(sql).ToListAsync();
  51. }
  52. else
  53. {
  54. _result.Msg = "请传入有效的PortType参数,1 Web 2 Android 3 IOS!";
  55. }
  56. return simplClients;
  57. }
  58. /// <summary>
  59. /// 根据团组Id查询List
  60. /// </summary>
  61. /// <param name="portId"></param>
  62. /// <param name="diId"></param>
  63. /// <returns></returns>
  64. public async Task<Result> _ItemByDiId(int portId, int diId)
  65. {
  66. if (portId == 1 || portId == 2 || portId == 3 ) // 1 web 2 Android 3 ios
  67. {
  68. string sql = string.Format(@"Select tcl.Id,tcl.DiId,temp.* From Grp_TourClientList tcl
  69. Left Join
  70. (Select dc.Id As DcId,dc.LastName,dc.FirstName,ccom.CompanyFullName,dc.Job,cc.CertNo As IDCardNo,dc.Sex
  71. From Crm_DeleClient dc
  72. Left Join Crm_CustomerCompany ccom On dc.CrmCompanyId = ccom.Id And ccom.IsDel = 0
  73. Left Join Crm_CustomerCert cc On dc.Id = cc.DcId And cc.SdId = 773 And cc.IsDel = 0
  74. Where dc.IsDel = 0) temp
  75. On temp.DcId =tcl.ClientId
  76. Where tcl.IsDel = 0 And tcl.DiId = {0}", diId);
  77. var data = await _sqlSugar.SqlQueryable<TourClientListByDiIdView>(sql).ToListAsync();
  78. _result.Code = 0;
  79. _result.Data = data;
  80. }
  81. else
  82. {
  83. _result.Msg = "请传入有效的PortType参数,1 Web 2 Android 3 IOS!";
  84. }
  85. return _result;
  86. }
  87. /// <summary>
  88. /// 基础数据 Init
  89. /// </summary>
  90. /// <param name="portId"></param>
  91. /// <returns></returns>
  92. public async Task<Result> _BasicDataInit(int portId)
  93. {
  94. if (portId == 1 || portId == 2 || portId == 3) // 1 web 2 Android 3 ios
  95. {
  96. var setData = await _sqlSugar.Queryable<Sys_SetData>().Where(it => it.IsDel == 0) .ToListAsync();
  97. var shippingSpaceTypeData = setData.Where(it => it.STid == 44).ToList(); //舱位类型
  98. List<SetDataInfoView> _ShippingSpaceTypeData = _mapper.Map<List<SetDataInfoView>>(shippingSpaceTypeData);
  99. //var passportTypeData = setData.Where(it => it.STid == 74).ToList(); //护照类型
  100. //List<SetDataInfoView> _PassportTypeData = _mapper.Map<List<SetDataInfoView>>(passportTypeData);
  101. //客户信息资料
  102. var clientInfoSql = string.Format(@"Select dc.Id As DcId,dc.LastName,dc.FirstName,dc.Pinyin,dc.Sex,ccom.CompanyFullName,dc.Job,
  103. cc1.CertNo As IDCardNo,dc.Phone,dc.BirthDay
  104. From Crm_DeleClient dc
  105. Left Join Crm_CustomerCompany ccom On dc.CrmCompanyId = ccom.Id And ccom.IsDel = 0
  106. Left Join Crm_CustomerCert cc1 On dc.Id = cc1.DcId And cc1.SdId = 773 And cc1.IsDel = 0
  107. Where dc.IsDel = 0");
  108. var clientData = await _sqlSugar.SqlQueryable<TourClientListDetailsView>(clientInfoSql).ToListAsync();
  109. //公司信息
  110. var clientCompanySql = string.Format(@"Select Id,CompanyFullName From Crm_CustomerCompany Where IsDel = 0");
  111. var clientCompanyData = await _sqlSugar.SqlQueryable<CustomerCompanyCiew>(clientCompanySql).ToListAsync();
  112. clientCompanyData = clientCompanyData.DistinctBy(it => it.CompanyFullName).ToList();
  113. var _view = new {
  114. ShippingSpaceTypeData = _ShippingSpaceTypeData,
  115. ClientData = clientData,
  116. ClientCompanyData = clientCompanyData
  117. //PassportTypeData = _PassportTypeData
  118. };
  119. _result.Code = 0;
  120. _result.Data = _view;
  121. }
  122. else
  123. {
  124. _result.Msg = "请传入有效的PortType参数,1 Web 2 Android 3 IOS!";
  125. }
  126. return _result;
  127. }
  128. /// <summary>
  129. /// 根据Id查询Details
  130. /// </summary>
  131. /// <param name="portId"></param>
  132. /// <param name="id"></param>
  133. /// <returns></returns>
  134. public async Task<Result> _Details(int portId, int id)
  135. {
  136. if (portId == 1 || portId == 2 || portId == 3) // 1 web 2 Android 3 ios
  137. {
  138. string sql = string.Format(@"Select tcl.Id,tcl.DiId,temp.*,tcl.ShippingSpaceTypeId,tcl.ShippingSpaceSpecialNeeds,
  139. tcl.HotelSpecialNeeds,tcl.MealSpecialNeeds,tcl.Remark
  140. From Grp_TourClientList tcl
  141. Left Join
  142. (Select dc.Id As DcId,dc.LastName,dc.FirstName,dc.Pinyin,dc.Sex,ccom.CompanyFullName,dc.Job,
  143. cc1.CertNo As IDCardNo,dc.Phone,dc.BirthDay,cc2.PassportType,cc2.CertNo As PassportNo,cc2.Country,
  144. cc2.Area,cc2.IssueDt,cc2.ExpiryDt
  145. From Crm_DeleClient dc
  146. Left Join Crm_CustomerCompany ccom On dc.CrmCompanyId = ccom.Id And ccom.IsDel = 0
  147. Left Join Crm_CustomerCert cc1 On dc.Id = cc1.DcId And cc1.SdId = 773 And cc1.IsDel = 0
  148. Left Join Crm_CustomerCert cc2 On dc.Id = cc2.DcId And cc2.SdId = 774 And cc2.IsDel = 0
  149. Where dc.IsDel = 0) temp
  150. On temp.DcId =tcl.ClientId
  151. Where tcl.IsDel = 0 And tcl.Id = {0}", id);
  152. var data = await _sqlSugar.SqlQueryable<TourClientListDetailsView>(sql).FirstAsync();
  153. if (data != null)
  154. {
  155. data.BirthDay = data.BirthDay.DateFormat("yyyy-MM-dd");
  156. //data.IssueDt = data.IssueDt.DateFormat("yyyy-MM-dd");
  157. //data.ExpiryDt = data.ExpiryDt.DateFormat("yyyy-MM-dd");
  158. _result.Code = 0;
  159. _result.Data = data;
  160. }
  161. }
  162. else
  163. {
  164. _result.Msg = "请传入有效的PortType参数,1 Web 2 Android 3 IOS!";
  165. }
  166. return _result;
  167. }
  168. /// <summary>
  169. /// Add Or Edit
  170. /// </summary>
  171. /// <param name="portId"></param>
  172. /// <param name="id"></param>
  173. /// <returns></returns>
  174. public async Task<Result> _AddOrEdit(TourClientListAddOrEditDto dto)
  175. {
  176. if (string.IsNullOrEmpty(dto.CompanyFullName))
  177. {
  178. _result.Msg = "客户单位名称为空!";
  179. return _result;
  180. }
  181. //if (string.IsNullOrEmpty(dto.IDCardNo))
  182. //{
  183. // _result.Msg = "客户身份证No为空!";
  184. // return _result;
  185. //}
  186. if (dto.ShippingSpaceTypeId < 0)
  187. {
  188. _result.Msg = "舱位类型为空!";
  189. return _result;
  190. }
  191. if (dto.Id >= 0)
  192. {
  193. #region 参数处理
  194. _sqlSugar.BeginTran();
  195. int clientId = -1;
  196. int crmCompanyId = -1;
  197. var clientInfo = await _sqlSugar.Queryable<Crm_DeleClient>().Where(it => it.IsDel == 0
  198. && it.LastName.Equals(dto.LastName)
  199. && it.FirstName.Equals(dto.FirstName)
  200. //&& it.Phone.Equals(dto.Phone)
  201. ).FirstAsync();
  202. Crm_CustomerCompany _CustomerCompany = new Crm_CustomerCompany()
  203. {
  204. CompanyFullName = dto.CompanyFullName,
  205. LastedOpUserId = dto.UserId,
  206. CreateUserId = dto.UserId
  207. };
  208. Crm_CustomerCert _CustomerCert = new Crm_CustomerCert()
  209. {
  210. SdId = 773,
  211. CertNo = dto.IDCardNo,
  212. CreateUserId = dto.UserId
  213. };
  214. Crm_DeleClient _DeleClient = new Crm_DeleClient()
  215. {
  216. LastName = dto.LastName,
  217. FirstName = dto.FirstName,
  218. Pinyin = dto.Pinyin,
  219. Phone = dto.Phone,
  220. Sex = dto.Sex,
  221. BirthDay = dto.BirthDay,
  222. Job = dto.Job,
  223. CreateUserId = dto.UserId
  224. };
  225. //客户单位/公司 操作
  226. //1.添加 or 修改 公司基本信息
  227. if (clientInfo == null)
  228. {
  229. var companyInfo = await _sqlSugar.Queryable<Crm_CustomerCompany>().Where(it => it.IsDel == 0 &&
  230. it.CompanyFullName.Equals(dto.CompanyFullName)
  231. ).FirstAsync();
  232. if (companyInfo != null) crmCompanyId = companyInfo.Id;
  233. else
  234. {
  235. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  236. if (companyAdd < 0)
  237. {
  238. _result.Msg = "客户公司信息添加失败!";
  239. _sqlSugar.RollbackTran();
  240. return _result;
  241. }
  242. crmCompanyId = companyAdd;
  243. }
  244. }
  245. else
  246. {
  247. var companyInfo = await _sqlSugar.Queryable<Crm_CustomerCompany>().Where(it => it.IsDel == 0 &&
  248. it.CompanyFullName.Equals(dto.CompanyFullName)
  249. ).FirstAsync();
  250. if (companyInfo != null)
  251. {
  252. crmCompanyId = companyInfo.Id;
  253. if (companyInfo.CompanyFullName.Equals(dto.CompanyFullName))
  254. {
  255. companyInfo.CompanyFullName = dto.CompanyFullName;
  256. var companyEdit = await _sqlSugar.Updateable(companyInfo).UpdateColumns(it =>
  257. new
  258. {
  259. it.CompanyFullName,
  260. }
  261. )
  262. .Where(it => it.Id == companyInfo.Id)
  263. .ExecuteCommandAsync();
  264. if (companyEdit < 0)
  265. {
  266. _result.Msg = "客户公司信息修改失败!";
  267. _sqlSugar.RollbackTran();
  268. return _result;
  269. }
  270. }
  271. }
  272. else
  273. {
  274. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  275. if (companyAdd < 0)
  276. {
  277. _result.Msg = "客户公司信息添加失败!";
  278. _sqlSugar.RollbackTran();
  279. return _result;
  280. }
  281. crmCompanyId = companyAdd;
  282. }
  283. }
  284. _DeleClient.CrmCompanyId = crmCompanyId;
  285. //客户人员 操作
  286. //2.添加 or 修改 客户基本信息
  287. if (clientInfo != null) //该客户存在 修改信息
  288. {
  289. clientId = clientInfo.Id;
  290. var clientEdit = await _sqlSugar.Updateable(_DeleClient).UpdateColumns(it =>
  291. new
  292. {
  293. it.CrmCompanyId,
  294. it.LastName,
  295. it.FirstName,
  296. it.Pinyin,
  297. it.Job,
  298. it.Sex,
  299. it.Phone,
  300. it.BirthDay
  301. }
  302. )
  303. .Where(it => it.Id == clientId)
  304. .ExecuteCommandAsync();
  305. if (clientEdit < 0)
  306. {
  307. _result.Msg = "客户基础信息修改失败!";
  308. _sqlSugar.RollbackTran();
  309. return _result;
  310. }
  311. }
  312. else //不存在添加 客户信息
  313. {
  314. _DeleClient.CrmCompanyId = crmCompanyId;
  315. var clientAdd = await _sqlSugar.Insertable(_DeleClient).ExecuteReturnIdentityAsync();
  316. if (clientAdd < 0)
  317. {
  318. _result.Msg = "客户基本信息添加失败!";
  319. _sqlSugar.RollbackTran();
  320. return _result;
  321. }
  322. clientId = clientAdd;
  323. }
  324. //客户身份证操作
  325. //3.添加 or 修改 身份证信息
  326. _CustomerCert.DcId = clientId;
  327. if (clientInfo == null)
  328. {
  329. var certInfo = await _sqlSugar.Queryable<Crm_CustomerCert>().Where(it => it.IsDel == 0 &&
  330. it.SdId == 773 && //卡类型 身份证
  331. it.CertNo == dto.IDCardNo //人员Id
  332. ).FirstAsync();
  333. if (certInfo == null)
  334. {
  335. var certAdd = await _sqlSugar.Insertable(_CustomerCert).ExecuteReturnIdentityAsync();
  336. if (certAdd < 0)
  337. {
  338. _result.Msg = "客户身份证添加失败!";
  339. _sqlSugar.RollbackTran();
  340. return _result;
  341. }
  342. }
  343. }
  344. else
  345. {
  346. var certInfo = await _sqlSugar.Queryable<Crm_CustomerCert>().Where(it => it.IsDel == 0 &&
  347. it.SdId == 773 && //卡类型 身份证
  348. it.DcId == clientInfo.Id //人员Id
  349. ).FirstAsync();
  350. if (certInfo == null)
  351. {
  352. var certAdd = await _sqlSugar.Insertable(_CustomerCert).ExecuteReturnIdentityAsync();
  353. if (certAdd < 0)
  354. {
  355. _result.Msg = "客户身份证添加失败!";
  356. _sqlSugar.RollbackTran();
  357. return _result;
  358. }
  359. }
  360. else
  361. {
  362. var certEdit = await _sqlSugar.Updateable(_CustomerCert).UpdateColumns(it =>
  363. new
  364. {
  365. it.CertNo,
  366. }
  367. )
  368. .Where(it => it.Id == certInfo.Id)
  369. .ExecuteCommandAsync();
  370. if (certEdit < 0)
  371. {
  372. _result.Msg = "客户身份证修改失败!";
  373. _sqlSugar.RollbackTran();
  374. return _result;
  375. }
  376. }
  377. }
  378. //团组客户信息名单操作
  379. Grp_TourClientList _TourClientList = new Grp_TourClientList()
  380. {
  381. DiId = dto.DiId,
  382. ClientId = clientId,
  383. ShippingSpaceTypeId = dto.ShippingSpaceTypeId,
  384. ShippingSpaceSpecialNeeds = dto.ShippingSpaceSpecialNeeds,
  385. HotelSpecialNeeds = dto.HotelSpecialNeeds,
  386. MealSpecialNeeds = dto.MealSpecialNeeds,
  387. Remark = dto.Remark,
  388. CreateUserId = dto.UserId
  389. };
  390. #endregion
  391. if (dto.Id == 0) // 添加
  392. {
  393. var tourClientAdd = await _sqlSugar.Insertable(_TourClientList).ExecuteReturnIdentityAsync();
  394. if (tourClientAdd < 0)
  395. {
  396. _result.Msg = "接团客户名单添加失败!";
  397. _sqlSugar.RollbackTran();
  398. return _result;
  399. }
  400. }
  401. else if (dto.Id > 0) //修改
  402. {
  403. var certEdit = await _sqlSugar.Updateable(_TourClientList).UpdateColumns(it =>
  404. new
  405. {
  406. it.ClientId,
  407. it.ShippingSpaceTypeId,
  408. it.ShippingSpaceSpecialNeeds,
  409. it.HotelSpecialNeeds,
  410. it.MealSpecialNeeds,
  411. it.Remark,
  412. }
  413. )
  414. .Where(it => it.Id == dto.Id)
  415. .ExecuteCommandAsync();
  416. if (certEdit < 0)
  417. {
  418. _result.Msg = "接团客户名单失败修改!";
  419. _sqlSugar.RollbackTran();
  420. return _result;
  421. }
  422. }
  423. _result.Code = 0;
  424. _sqlSugar.CommitTran();
  425. }
  426. else
  427. {
  428. _result.Msg = "请传入有效的id参数!";
  429. }
  430. return _result;
  431. }
  432. /// <summary>
  433. /// AddMultiple
  434. /// 添加多个
  435. /// </summary>
  436. /// <param name="portId"></param>
  437. /// <param name="id"></param>
  438. /// <returns></returns>
  439. public async Task<Result> _AddMultiple(TourClientListAddMultipleDto dto)
  440. {
  441. if (dto.DiId < 0)
  442. {
  443. _result.Msg = string.Format(@"请传入有效的团组Id参数!");
  444. return _result;
  445. }
  446. List<TourClientListInfo> _TourClientListInfos = dto.TourClientListInfos;
  447. if (_TourClientListInfos == null || _TourClientListInfos.Count < 0)
  448. {
  449. _result.Msg = string.Format(@"接团客户名单信息集合为空,不执行批量添加!");
  450. return _result;
  451. }
  452. List<Crm_DeleClient> _DeleClients = await _sqlSugar.Queryable<Crm_DeleClient>().Where(it => it.IsDel == 0).ToListAsync();
  453. List<Crm_CustomerCompany> _CustomerCompanies = await _sqlSugar.Queryable<Crm_CustomerCompany>().Where(it => it.IsDel == 0).ToListAsync();
  454. List<Crm_CustomerCert> _CustomerCerts = await _sqlSugar.Queryable<Crm_CustomerCert>().Where(it => it.IsDel == 0 && it.SdId == 773).ToListAsync(); // 身份证类型证件信息
  455. string _Msg = "";
  456. int _DiId = dto.DiId;
  457. int _UserId = dto.UserId;
  458. foreach (var item in _TourClientListInfos)
  459. {
  460. _sqlSugar.BeginTran();
  461. int companyId = -1;
  462. int clientId = -1;
  463. string clientName = string.Format(@"{0}{1}", item.LastName, item.FirstName);
  464. Crm_DeleClient _DeleClientInfo = _DeleClients.Where(it => it.LastName.Equals(item.LastName) &&
  465. it.FirstName.Equals(item.FirstName) &&
  466. it.Phone.Equals(item.Phone)).FirstOrDefault();
  467. if (_DeleClientInfo == null) //添加
  468. {
  469. if (!string.IsNullOrEmpty(item.CompanyFullName))
  470. {
  471. var companyInfo = _CustomerCompanies.Where(it => it.CompanyFullName.Equals(item.CompanyFullName)).FirstOrDefault();
  472. if (companyInfo != null) companyId = companyInfo.Id;
  473. else
  474. {
  475. Crm_CustomerCompany _CustomerCompany = new Crm_CustomerCompany()
  476. {
  477. CompanyFullName = item.CompanyFullName,
  478. LastedOpUserId = _UserId,
  479. CreateUserId = _UserId
  480. };
  481. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  482. if (companyAdd < 0)
  483. {
  484. _Msg += string.Format("{0} 公司信息添加失败!请前往客户信息确认!\r\n", clientName);
  485. }
  486. companyId = companyAdd;
  487. }
  488. }
  489. _DeleClientInfo = new Crm_DeleClient()
  490. {
  491. LastName = item.LastName,
  492. FirstName = item.FirstName,
  493. Pinyin = item.Pinyin,
  494. CrmCompanyId = companyId,
  495. Job = item.Job,
  496. Sex = item.Sex,
  497. Phone = item.Phone,
  498. BirthDay = item.BirthDay,
  499. };
  500. var clientAdd = await _sqlSugar.Insertable(_DeleClientInfo).ExecuteReturnIdentityAsync();
  501. if (clientAdd < 0)
  502. {
  503. _Msg += string.Format("{0} 基本信息添加失败,本条客户名单不添加!请重新添加!\r\n", clientName);
  504. _sqlSugar.RollbackTran();
  505. continue;
  506. }
  507. clientId = clientAdd;
  508. if (!string.IsNullOrEmpty(item.IDCardNo))
  509. {
  510. Crm_CustomerCert _CustomerCert = _CustomerCerts.Where(it => it.DcId == clientId && it.CertNo.Equals(item.IDCardNo)).FirstOrDefault();
  511. if (_CustomerCert == null)
  512. {
  513. _CustomerCert = new Crm_CustomerCert()
  514. {
  515. DcId = clientId,
  516. SdId = 773,
  517. CertNo = item.IDCardNo,
  518. CreateUserId = _UserId,
  519. };
  520. var customerCertAdd = await _sqlSugar.Insertable(_CustomerCert).ExecuteCommandAsync();
  521. if (customerCertAdd < 0)
  522. {
  523. _Msg += string.Format("{0} 身份证信息添加失败!请前往客户信息确认!\r\n", clientName);
  524. }
  525. }
  526. }
  527. }
  528. else //修改客户基本信息
  529. {
  530. clientId = _DeleClientInfo.Id;
  531. if (!string.IsNullOrEmpty(item.CompanyFullName))
  532. {
  533. var companyInfo = _CustomerCompanies.Where(it => it.CompanyFullName.Equals(item.CompanyFullName)).FirstOrDefault();
  534. if (companyInfo != null) companyId = companyInfo.Id;
  535. else
  536. {
  537. Crm_CustomerCompany _CustomerCompany = new Crm_CustomerCompany()
  538. {
  539. CompanyFullName = item.CompanyFullName,
  540. LastedOpUserId = _UserId,
  541. CreateUserId = _UserId
  542. };
  543. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  544. if (companyAdd < 0)
  545. {
  546. _Msg += string.Format("{0} 公司信息添加失败!请前往客户信息确认!\r\n", clientName);
  547. }
  548. companyId = companyAdd;
  549. }
  550. }
  551. Crm_DeleClient _DeleClient = new Crm_DeleClient() {
  552. LastName = item.LastName,
  553. FirstName = item.FirstName,
  554. Pinyin = item.Pinyin,
  555. Sex = item.Sex,
  556. Phone = item.Phone,
  557. BirthDay = item.BirthDay
  558. };
  559. var clientEdit = await _sqlSugar.Updateable(_DeleClient).UpdateColumns(it =>
  560. new
  561. {
  562. it.LastName,
  563. it.FirstName,
  564. it.Sex,
  565. it.Phone,
  566. it.BirthDay
  567. }
  568. )
  569. .Where(it => it.Id == clientId)
  570. .ExecuteCommandAsync();
  571. if (clientEdit < 0)
  572. {
  573. _Msg += string.Format("{0} 基本信息修改失败,!请前往客户信息修改!\r\n", clientName);
  574. }
  575. }
  576. //团组客户信息名单操作
  577. Grp_TourClientList _TourClientList = new Grp_TourClientList()
  578. {
  579. DiId = _DiId,
  580. ClientId = clientId,
  581. ShippingSpaceTypeId = item.ShippingSpaceTypeId,
  582. CreateUserId = _UserId,
  583. ShippingSpaceSpecialNeeds = item.ShippingSpaceSpecialNeeds,
  584. HotelSpecialNeeds = item.HotelSpecialNeeds,
  585. MealSpecialNeeds = item.MealSpecialNeeds,
  586. Remark = item.Remark
  587. };
  588. //判断现有团组客户名单是否存在该客户
  589. var QuerFirstClient = _sqlSugar.Queryable<Grp_TourClientList>().First(x => x.ClientId == _TourClientList.ClientId && x.DiId == _TourClientList.DiId && x.IsDel == 0);
  590. if (QuerFirstClient != null)
  591. {
  592. QuerFirstClient.IsDel = 1;
  593. QuerFirstClient.DeleteUserId = dto.UserId;
  594. QuerFirstClient.DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  595. var UpdateTrue = _sqlSugar.Updateable(QuerFirstClient).UpdateColumns(x => new { x.IsDel,x.DeleteUserId,x.DeleteTime}).ExecuteCommand() > 0;
  596. }
  597. var tourClientAdd = await _sqlSugar.Insertable(_TourClientList).ExecuteReturnIdentityAsync();
  598. if (tourClientAdd < 0)
  599. {
  600. _Msg += string.Format("{0} 接团客户名单添加失败!请检查数据完整性后重新添加!\r\n", clientName);
  601. _sqlSugar.RollbackTran();
  602. continue;
  603. }
  604. _sqlSugar.CommitTran();
  605. }
  606. if (!string.IsNullOrEmpty(_Msg)) _result.Msg = _Msg;
  607. else _result.Msg = string.Format("操作成功!");
  608. _result.Code = 0;
  609. return _result;
  610. }
  611. public async Task<Result> OperMultiple(List<TourClientListProcessInfo> _TourClientListInfos , int diid,int userId)
  612. {
  613. if (diid < 0)
  614. {
  615. _result.Msg = string.Format(@"请传入有效的团组Id参数!");
  616. return _result;
  617. }
  618. if (_TourClientListInfos == null || _TourClientListInfos.Count < 0)
  619. {
  620. _result.Msg = string.Format(@"接团客户名单信息集合为空,不执行批量添加!");
  621. return _result;
  622. }
  623. _sqlSugar.BeginTran();
  624. try
  625. {
  626. _sqlSugar.Updateable<Grp_TourClientList>().SetColumns(x=> new Grp_TourClientList { IsDel = 1 } ).Where(x=>x.DiId == diid).ExecuteCommand();
  627. foreach (var item in _TourClientListInfos)
  628. {
  629. //客户信息
  630. var clientInfo = await _sqlSugar.Queryable<Crm_DeleClient>().Where(it => it.IsDel == 0 &&
  631. it.LastName.Equals(item.LastName) &&
  632. it.FirstName.Equals(item.FirstName) &&
  633. it.Phone.Equals(item.Phone)
  634. ).FirstAsync();
  635. Crm_CustomerCompany _CustomerCompany = new Crm_CustomerCompany()
  636. {
  637. CompanyFullName = item.CompanyFullName,
  638. LastedOpUserId = userId,
  639. CreateUserId = userId
  640. };
  641. Crm_CustomerCert _CustomerCert = new Crm_CustomerCert()
  642. {
  643. SdId = 773,
  644. CertNo = item.IDCardNo,
  645. CreateUserId = userId
  646. };
  647. Crm_DeleClient _DeleClient = new Crm_DeleClient()
  648. {
  649. LastName = item.LastName,
  650. FirstName = item.FirstName,
  651. Pinyin = item.Pinyin,
  652. Phone = item.Phone,
  653. Sex = item.Sex,
  654. BirthDay = item.BirthDay,
  655. Job = item.Job,
  656. CreateUserId = userId
  657. };
  658. int clientId = -1;
  659. int crmCompanyId = -1;
  660. //客户单位/公司 操作
  661. //1.添加 or 修改 公司基本信息
  662. if (clientInfo == null)
  663. {
  664. var companyInfo = await _sqlSugar.Queryable<Crm_CustomerCompany>().Where(it => it.IsDel == 0 &&
  665. it.CompanyFullName.Equals(item.CompanyFullName)
  666. ).FirstAsync();
  667. if (companyInfo != null) crmCompanyId = companyInfo.Id;
  668. else
  669. {
  670. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  671. if (companyAdd < 0)
  672. {
  673. _result.Msg = "客户公司信息添加失败!";
  674. _sqlSugar.RollbackTran();
  675. return _result;
  676. }
  677. crmCompanyId = companyAdd;
  678. }
  679. }
  680. else
  681. {
  682. var companyInfo = await _sqlSugar.Queryable<Crm_CustomerCompany>().Where(it => it.IsDel == 0 &&
  683. it.Id == clientInfo.CrmCompanyId
  684. ).FirstAsync();
  685. if (companyInfo != null)
  686. {
  687. crmCompanyId = companyInfo.Id;
  688. if (!companyInfo.CompanyFullName.Equals(item.CompanyFullName))
  689. {
  690. companyInfo.CompanyFullName = item.CompanyFullName;
  691. var companyEdit = await _sqlSugar.Updateable(companyInfo).UpdateColumns(it =>
  692. new
  693. {
  694. it.CompanyFullName,
  695. }
  696. )
  697. .Where(it => it.Id == companyInfo.Id)
  698. .ExecuteCommandAsync();
  699. if (companyEdit < 0)
  700. {
  701. _result.Msg = "客户公司信息修改失败!";
  702. _sqlSugar.RollbackTran();
  703. return _result;
  704. }
  705. }
  706. }
  707. else
  708. {
  709. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  710. if (companyAdd < 0)
  711. {
  712. _result.Msg = "客户公司信息添加失败!";
  713. _sqlSugar.RollbackTran();
  714. return _result;
  715. }
  716. crmCompanyId = companyAdd;
  717. }
  718. }
  719. //客户人员 操作
  720. //2.添加 or 修改 客户基本信息
  721. if (clientInfo != null) //该客户存在 修改信息
  722. {
  723. clientId = clientInfo.Id;
  724. var clientEdit = await _sqlSugar.Updateable(_DeleClient).UpdateColumns(it =>
  725. new
  726. {
  727. it.LastName,
  728. it.FirstName,
  729. it.Pinyin,
  730. it.Sex,
  731. it.Phone,
  732. it.BirthDay
  733. }
  734. )
  735. .Where(it => it.Id == clientId)
  736. .ExecuteCommandAsync();
  737. if (clientEdit < 0)
  738. {
  739. _result.Msg = "客户基础信息修改失败!";
  740. _sqlSugar.RollbackTran();
  741. return _result;
  742. }
  743. }
  744. else //不存在添加 客户信息
  745. {
  746. _DeleClient.CrmCompanyId = crmCompanyId;
  747. var clientAdd = await _sqlSugar.Insertable(_DeleClient).ExecuteReturnIdentityAsync();
  748. if (clientAdd < 0)
  749. {
  750. _result.Msg = "客户基本信息添加失败!";
  751. _sqlSugar.RollbackTran();
  752. return _result;
  753. }
  754. clientId = clientAdd;
  755. }
  756. //客户身份证操作
  757. //3.添加 or 修改 身份证信息
  758. _CustomerCert.DcId = clientId;
  759. if (clientInfo == null)
  760. {
  761. var certInfo = await _sqlSugar.Queryable<Crm_CustomerCert>().Where(it => it.IsDel == 0 &&
  762. it.SdId == 773 && //卡类型 身份证
  763. it.CertNo == item.IDCardNo //人员Id
  764. ).FirstAsync();
  765. if (certInfo == null)
  766. {
  767. var certAdd = await _sqlSugar.Insertable(_CustomerCert).ExecuteReturnIdentityAsync();
  768. if (certAdd < 0)
  769. {
  770. _result.Msg = "客户身份证添加失败!";
  771. _sqlSugar.RollbackTran();
  772. return _result;
  773. }
  774. }
  775. }
  776. else
  777. {
  778. var certInfo = await _sqlSugar.Queryable<Crm_CustomerCert>().Where(it => it.IsDel == 0 &&
  779. it.SdId == 773 && //卡类型 身份证
  780. it.DcId == clientInfo.Id //人员Id
  781. ).FirstAsync();
  782. if (certInfo == null)
  783. {
  784. var certAdd = await _sqlSugar.Insertable(_CustomerCert).ExecuteReturnIdentityAsync();
  785. if (certAdd < 0)
  786. {
  787. _result.Msg = "客户身份证添加失败!";
  788. _sqlSugar.RollbackTran();
  789. return _result;
  790. }
  791. }
  792. else
  793. {
  794. var certEdit = await _sqlSugar.Updateable(_CustomerCert).UpdateColumns(it =>
  795. new
  796. {
  797. it.CertNo,
  798. }
  799. )
  800. .Where(it => it.Id == certInfo.Id)
  801. .ExecuteCommandAsync();
  802. if (certEdit < 0)
  803. {
  804. _result.Msg = "客户身份证修改失败!";
  805. _sqlSugar.RollbackTran();
  806. return _result;
  807. }
  808. }
  809. }
  810. //团组客户信息名单操作
  811. Grp_TourClientList _TourClientList = new Grp_TourClientList()
  812. {
  813. DiId = diid,
  814. ClientId = clientId,
  815. ShippingSpaceTypeId = item.ShippingSpaceTypeId,
  816. ShippingSpaceSpecialNeeds = item.ShippingSpaceSpecialNeeds,
  817. HotelSpecialNeeds = item.HotelSpecialNeeds,
  818. MealSpecialNeeds = item.MealSpecialNeeds,
  819. Remark = item.Remark,
  820. CreateUserId = userId,
  821. };
  822. var tourClientAdd = await _sqlSugar.Insertable(_TourClientList).ExecuteReturnIdentityAsync();
  823. if (tourClientAdd < 0)
  824. {
  825. _result.Msg = "接团客户名单添加失败!";
  826. _sqlSugar.RollbackTran();
  827. return _result;
  828. }
  829. }
  830. _result.Code = 0;
  831. _sqlSugar.CommitTran();
  832. }
  833. catch (Exception ex)
  834. {
  835. _sqlSugar.RollbackTran();
  836. _result.Msg = "程序异常 -- " + ex.Message;
  837. }
  838. return _result;
  839. }
  840. /// <summary>
  841. /// Del
  842. /// </summary>
  843. /// <param name="portId"></param>
  844. /// <param name="id"></param>
  845. /// <returns></returns>
  846. public async Task<Result> _Del(int id, int userId)
  847. {
  848. if (id > 0)
  849. {
  850. Grp_TourClientList _TourClientList = new Grp_TourClientList()
  851. {
  852. Id = id,
  853. IsDel = 1,
  854. DeleteUserId = userId,
  855. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  856. };
  857. var certEdit = await _sqlSugar.Updateable(_TourClientList).UpdateColumns(it =>
  858. new
  859. {
  860. it.IsDel,
  861. it.DeleteUserId,
  862. it.DeleteTime,
  863. }
  864. )
  865. .Where(it => it.Id == id)
  866. .ExecuteCommandAsync();
  867. if (certEdit < 0)
  868. {
  869. _result.Msg = string.Format(@"接团客户名单删除修改!");
  870. return _result;
  871. }
  872. _result.Code = 0;
  873. }
  874. else
  875. {
  876. _result.Msg = string.Format(@"请传入有效的Id参数");
  877. }
  878. return _result;
  879. }
  880. /// <summary>
  881. /// 分割客户名称
  882. /// </summary>
  883. /// <param name="ids"></param>
  884. /// <returns></returns>
  885. public string _ResolveCustomerName(string ids)
  886. {
  887. string clientStr = "";
  888. if (string.IsNullOrEmpty(ids)) return clientStr;
  889. List<int> intList = new List<int>();
  890. //if (ids.Contains(","))
  891. //{
  892. // string[] numbers = ids.Split(',');
  893. // foreach (string numberStr in numbers)
  894. // {
  895. // if (int.TryParse(numberStr.Trim(), out int number))
  896. // {
  897. // intList.Add(number);
  898. // }
  899. // }
  900. //}
  901. //else
  902. //{
  903. // if (int.TryParse(ids.Trim(), out int number))
  904. // {
  905. // intList.Add(number);
  906. // }
  907. //}
  908. string sql = string.Format(@$"Select * From Crm_GroupCustomer Where IsDel = 0 And Id In ({ids})");
  909. var infos = _sqlSugar.SqlQueryable<Crm_GroupCustomer>(sql).ToList();
  910. if (infos.Count > 0)
  911. {
  912. var infos1 = infos.Select(it => it.LastName + it.FirstName).ToList();
  913. clientStr = string.Join(",", infos1);
  914. }
  915. return clientStr;
  916. }
  917. private class CustomerNameInfo
  918. {
  919. public int Id { get; set; }
  920. public string Name { get; set; }
  921. }
  922. }
  923. }