TourClientListRepository.cs 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028
  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.Id == clientInfo.CrmCompanyId
  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 companyInfo1 = await _sqlSugar.Queryable<Crm_CustomerCompany>().Where(it => it.IsDel == 0 &&
  275. it.CompanyFullName.Equals(dto.CompanyFullName)
  276. ).FirstAsync();
  277. if (companyInfo1 != null)
  278. {
  279. crmCompanyId = companyInfo1.Id;
  280. }
  281. else
  282. {
  283. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  284. if (companyAdd < 0)
  285. {
  286. _result.Msg = "客户公司信息添加失败!";
  287. _sqlSugar.RollbackTran();
  288. return _result;
  289. }
  290. crmCompanyId = companyAdd;
  291. }
  292. }
  293. }
  294. _DeleClient.CrmCompanyId = crmCompanyId;
  295. //客户人员 操作
  296. //2.添加 or 修改 客户基本信息
  297. if (clientInfo != null) //该客户存在 修改信息
  298. {
  299. clientId = clientInfo.Id;
  300. var clientEdit = await _sqlSugar.Updateable(_DeleClient).UpdateColumns(it =>
  301. new
  302. {
  303. it.LastName,
  304. it.FirstName,
  305. it.Pinyin,
  306. it.Job,
  307. it.Sex,
  308. it.Phone,
  309. it.BirthDay
  310. }
  311. )
  312. .Where(it => it.Id == clientId)
  313. .ExecuteCommandAsync();
  314. if (clientEdit < 0)
  315. {
  316. _result.Msg = "客户基础信息修改失败!";
  317. _sqlSugar.RollbackTran();
  318. return _result;
  319. }
  320. }
  321. else //不存在添加 客户信息
  322. {
  323. _DeleClient.CrmCompanyId = crmCompanyId;
  324. var clientAdd = await _sqlSugar.Insertable(_DeleClient).ExecuteReturnIdentityAsync();
  325. if (clientAdd < 0)
  326. {
  327. _result.Msg = "客户基本信息添加失败!";
  328. _sqlSugar.RollbackTran();
  329. return _result;
  330. }
  331. clientId = clientAdd;
  332. }
  333. //客户身份证操作
  334. //3.添加 or 修改 身份证信息
  335. _CustomerCert.DcId = clientId;
  336. if (clientInfo == null)
  337. {
  338. var certInfo = await _sqlSugar.Queryable<Crm_CustomerCert>().Where(it => it.IsDel == 0 &&
  339. it.SdId == 773 && //卡类型 身份证
  340. it.CertNo == dto.IDCardNo //人员Id
  341. ).FirstAsync();
  342. if (certInfo == null)
  343. {
  344. var certAdd = await _sqlSugar.Insertable(_CustomerCert).ExecuteReturnIdentityAsync();
  345. if (certAdd < 0)
  346. {
  347. _result.Msg = "客户身份证添加失败!";
  348. _sqlSugar.RollbackTran();
  349. return _result;
  350. }
  351. }
  352. }
  353. else
  354. {
  355. var certInfo = await _sqlSugar.Queryable<Crm_CustomerCert>().Where(it => it.IsDel == 0 &&
  356. it.SdId == 773 && //卡类型 身份证
  357. it.DcId == clientInfo.Id //人员Id
  358. ).FirstAsync();
  359. if (certInfo == null)
  360. {
  361. var certAdd = await _sqlSugar.Insertable(_CustomerCert).ExecuteReturnIdentityAsync();
  362. if (certAdd < 0)
  363. {
  364. _result.Msg = "客户身份证添加失败!";
  365. _sqlSugar.RollbackTran();
  366. return _result;
  367. }
  368. }
  369. else
  370. {
  371. var certEdit = await _sqlSugar.Updateable(_CustomerCert).UpdateColumns(it =>
  372. new
  373. {
  374. it.CertNo,
  375. }
  376. )
  377. .Where(it => it.Id == certInfo.Id)
  378. .ExecuteCommandAsync();
  379. if (certEdit < 0)
  380. {
  381. _result.Msg = "客户身份证修改失败!";
  382. _sqlSugar.RollbackTran();
  383. return _result;
  384. }
  385. }
  386. }
  387. //团组客户信息名单操作
  388. Grp_TourClientList _TourClientList = new Grp_TourClientList()
  389. {
  390. DiId = dto.DiId,
  391. ClientId = clientId,
  392. ShippingSpaceTypeId = dto.ShippingSpaceTypeId,
  393. ShippingSpaceSpecialNeeds = dto.ShippingSpaceSpecialNeeds,
  394. HotelSpecialNeeds = dto.HotelSpecialNeeds,
  395. MealSpecialNeeds = dto.MealSpecialNeeds,
  396. Remark = dto.Remark,
  397. CreateUserId = dto.UserId
  398. };
  399. #endregion
  400. if (dto.Id == 0) // 添加
  401. {
  402. var tourClientAdd = await _sqlSugar.Insertable(_TourClientList).ExecuteReturnIdentityAsync();
  403. if (tourClientAdd < 0)
  404. {
  405. _result.Msg = "接团客户名单添加失败!";
  406. _sqlSugar.RollbackTran();
  407. return _result;
  408. }
  409. }
  410. else if (dto.Id > 0) //修改
  411. {
  412. var certEdit = await _sqlSugar.Updateable(_TourClientList).UpdateColumns(it =>
  413. new
  414. {
  415. it.ClientId,
  416. it.ShippingSpaceTypeId,
  417. it.ShippingSpaceSpecialNeeds,
  418. it.HotelSpecialNeeds,
  419. it.MealSpecialNeeds,
  420. it.Remark,
  421. }
  422. )
  423. .Where(it => it.Id == dto.Id)
  424. .ExecuteCommandAsync();
  425. if (certEdit < 0)
  426. {
  427. _result.Msg = "接团客户名单失败修改!";
  428. _sqlSugar.RollbackTran();
  429. return _result;
  430. }
  431. }
  432. _result.Code = 0;
  433. _sqlSugar.CommitTran();
  434. }
  435. else
  436. {
  437. _result.Msg = "请传入有效的id参数!";
  438. }
  439. return _result;
  440. }
  441. /// <summary>
  442. /// AddMultiple
  443. /// 添加多个
  444. /// </summary>
  445. /// <param name="portId"></param>
  446. /// <param name="id"></param>
  447. /// <returns></returns>
  448. public async Task<Result> _AddMultiple(TourClientListAddMultipleDto dto)
  449. {
  450. if (dto.DiId < 0)
  451. {
  452. _result.Msg = string.Format(@"请传入有效的团组Id参数!");
  453. return _result;
  454. }
  455. List<TourClientListInfo> _TourClientListInfos = dto.TourClientListInfos;
  456. if (_TourClientListInfos == null || _TourClientListInfos.Count < 0)
  457. {
  458. _result.Msg = string.Format(@"接团客户名单信息集合为空,不执行批量添加!");
  459. return _result;
  460. }
  461. List<Crm_DeleClient> _DeleClients = await _sqlSugar.Queryable<Crm_DeleClient>().Where(it => it.IsDel == 0).ToListAsync();
  462. List<Crm_CustomerCompany> _CustomerCompanies = await _sqlSugar.Queryable<Crm_CustomerCompany>().Where(it => it.IsDel == 0).ToListAsync();
  463. List<Crm_CustomerCert> _CustomerCerts = await _sqlSugar.Queryable<Crm_CustomerCert>().Where(it => it.IsDel == 0 && it.SdId == 773).ToListAsync(); // 身份证类型证件信息
  464. string _Msg = "";
  465. int _DiId = dto.DiId;
  466. int _UserId = dto.UserId;
  467. foreach (var item in _TourClientListInfos)
  468. {
  469. _sqlSugar.BeginTran();
  470. int companyId = -1;
  471. int clientId = -1;
  472. string clientName = string.Format(@"{0}{1}", item.LastName, item.FirstName);
  473. Crm_DeleClient _DeleClientInfo = _DeleClients.Where(it => it.LastName.Equals(item.LastName) &&
  474. it.FirstName.Equals(item.FirstName) &&
  475. it.Phone.Equals(item.Phone)).FirstOrDefault();
  476. if (_DeleClientInfo == null) //添加
  477. {
  478. if (!string.IsNullOrEmpty(item.CompanyFullName))
  479. {
  480. var companyInfo = _CustomerCompanies.Where(it => it.CompanyFullName.Equals(item.CompanyFullName)).FirstOrDefault();
  481. if (companyInfo != null) companyId = companyInfo.Id;
  482. else
  483. {
  484. Crm_CustomerCompany _CustomerCompany = new Crm_CustomerCompany()
  485. {
  486. CompanyFullName = item.CompanyFullName,
  487. LastedOpUserId = _UserId,
  488. CreateUserId = _UserId
  489. };
  490. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  491. if (companyAdd < 0)
  492. {
  493. _Msg += string.Format("{0} 公司信息添加失败!请前往客户信息确认!\r\n", clientName);
  494. }
  495. companyId = companyAdd;
  496. }
  497. }
  498. _DeleClientInfo = new Crm_DeleClient()
  499. {
  500. LastName = item.LastName,
  501. FirstName = item.FirstName,
  502. Pinyin = item.Pinyin,
  503. CrmCompanyId = companyId,
  504. Job = item.Job,
  505. Sex = item.Sex,
  506. Phone = item.Phone,
  507. BirthDay = item.BirthDay,
  508. };
  509. var clientAdd = await _sqlSugar.Insertable(_DeleClientInfo).ExecuteReturnIdentityAsync();
  510. if (clientAdd < 0)
  511. {
  512. _Msg += string.Format("{0} 基本信息添加失败,本条客户名单不添加!请重新添加!\r\n", clientName);
  513. _sqlSugar.RollbackTran();
  514. continue;
  515. }
  516. clientId = clientAdd;
  517. if (!string.IsNullOrEmpty(item.IDCardNo))
  518. {
  519. Crm_CustomerCert _CustomerCert = _CustomerCerts.Where(it => it.DcId == clientId && it.CertNo.Equals(item.IDCardNo)).FirstOrDefault();
  520. if (_CustomerCert == null)
  521. {
  522. _CustomerCert = new Crm_CustomerCert()
  523. {
  524. DcId = clientId,
  525. SdId = 773,
  526. CertNo = item.IDCardNo,
  527. CreateUserId = _UserId,
  528. };
  529. var customerCertAdd = await _sqlSugar.Insertable(_CustomerCert).ExecuteCommandAsync();
  530. if (customerCertAdd < 0)
  531. {
  532. _Msg += string.Format("{0} 身份证信息添加失败!请前往客户信息确认!\r\n", clientName);
  533. }
  534. }
  535. }
  536. }
  537. else //修改客户基本信息
  538. {
  539. clientId = _DeleClientInfo.Id;
  540. if (!string.IsNullOrEmpty(item.CompanyFullName))
  541. {
  542. var companyInfo = _CustomerCompanies.Where(it => it.CompanyFullName.Equals(item.CompanyFullName)).FirstOrDefault();
  543. if (companyInfo != null) companyId = companyInfo.Id;
  544. else
  545. {
  546. Crm_CustomerCompany _CustomerCompany = new Crm_CustomerCompany()
  547. {
  548. CompanyFullName = item.CompanyFullName,
  549. LastedOpUserId = _UserId,
  550. CreateUserId = _UserId
  551. };
  552. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  553. if (companyAdd < 0)
  554. {
  555. _Msg += string.Format("{0} 公司信息添加失败!请前往客户信息确认!\r\n", clientName);
  556. }
  557. companyId = companyAdd;
  558. }
  559. }
  560. Crm_DeleClient _DeleClient = new Crm_DeleClient() {
  561. LastName = item.LastName,
  562. FirstName = item.FirstName,
  563. Pinyin = item.Pinyin,
  564. Sex = item.Sex,
  565. Phone = item.Phone,
  566. BirthDay = item.BirthDay
  567. };
  568. var clientEdit = await _sqlSugar.Updateable(_DeleClient).UpdateColumns(it =>
  569. new
  570. {
  571. it.LastName,
  572. it.FirstName,
  573. it.Sex,
  574. it.Phone,
  575. it.BirthDay
  576. }
  577. )
  578. .Where(it => it.Id == clientId)
  579. .ExecuteCommandAsync();
  580. if (clientEdit < 0)
  581. {
  582. _Msg += string.Format("{0} 基本信息修改失败,!请前往客户信息修改!\r\n", clientName);
  583. }
  584. }
  585. //团组客户信息名单操作
  586. Grp_TourClientList _TourClientList = new Grp_TourClientList()
  587. {
  588. DiId = _DiId,
  589. ClientId = clientId,
  590. ShippingSpaceTypeId = item.ShippingSpaceTypeId,
  591. CreateUserId = _UserId,
  592. ShippingSpaceSpecialNeeds = item.ShippingSpaceSpecialNeeds,
  593. HotelSpecialNeeds = item.HotelSpecialNeeds,
  594. MealSpecialNeeds = item.MealSpecialNeeds,
  595. Remark = item.Remark
  596. };
  597. //判断现有团组客户名单是否存在该客户
  598. var QuerFirstClient = _sqlSugar.Queryable<Grp_TourClientList>().First(x => x.ClientId == _TourClientList.ClientId && x.DiId == _TourClientList.DiId && x.IsDel == 0);
  599. if (QuerFirstClient != null)
  600. {
  601. QuerFirstClient.IsDel = 1;
  602. QuerFirstClient.DeleteUserId = dto.UserId;
  603. QuerFirstClient.DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  604. var UpdateTrue = _sqlSugar.Updateable(QuerFirstClient).UpdateColumns(x => new { x.IsDel,x.DeleteUserId,x.DeleteTime}).ExecuteCommand() > 0;
  605. }
  606. var tourClientAdd = await _sqlSugar.Insertable(_TourClientList).ExecuteReturnIdentityAsync();
  607. if (tourClientAdd < 0)
  608. {
  609. _Msg += string.Format("{0} 接团客户名单添加失败!请检查数据完整性后重新添加!\r\n", clientName);
  610. _sqlSugar.RollbackTran();
  611. continue;
  612. }
  613. _sqlSugar.CommitTran();
  614. }
  615. if (!string.IsNullOrEmpty(_Msg)) _result.Msg = _Msg;
  616. else _result.Msg = string.Format("操作成功!");
  617. _result.Code = 0;
  618. return _result;
  619. }
  620. public async Task<Result> OperMultiple(List<TourClientListProcessInfo> _TourClientListInfos , int diid,int userId)
  621. {
  622. if (diid < 0)
  623. {
  624. _result.Msg = string.Format(@"请传入有效的团组Id参数!");
  625. return _result;
  626. }
  627. if (_TourClientListInfos == null || _TourClientListInfos.Count < 0)
  628. {
  629. _result.Msg = string.Format(@"接团客户名单信息集合为空,不执行批量添加!");
  630. return _result;
  631. }
  632. _sqlSugar.BeginTran();
  633. try
  634. {
  635. _sqlSugar.Updateable<Grp_TourClientList>().SetColumns(x=> new Grp_TourClientList { IsDel = 1 } ).Where(x=>x.DiId == diid).ExecuteCommand();
  636. foreach (var item in _TourClientListInfos)
  637. {
  638. //客户信息
  639. var clientInfo = await _sqlSugar.Queryable<Crm_DeleClient>().Where(it => it.IsDel == 0 &&
  640. it.LastName.Equals(item.LastName) &&
  641. it.FirstName.Equals(item.FirstName) &&
  642. it.Phone.Equals(item.Phone)
  643. ).FirstAsync();
  644. Crm_CustomerCompany _CustomerCompany = new Crm_CustomerCompany()
  645. {
  646. CompanyFullName = item.CompanyFullName,
  647. LastedOpUserId = userId,
  648. CreateUserId = userId
  649. };
  650. Crm_CustomerCert _CustomerCert = new Crm_CustomerCert()
  651. {
  652. SdId = 773,
  653. CertNo = item.IDCardNo,
  654. CreateUserId = userId
  655. };
  656. Crm_DeleClient _DeleClient = new Crm_DeleClient()
  657. {
  658. LastName = item.LastName,
  659. FirstName = item.FirstName,
  660. Pinyin = item.Pinyin,
  661. Phone = item.Phone,
  662. Sex = item.Sex,
  663. BirthDay = item.BirthDay,
  664. Job = item.Job,
  665. CreateUserId = userId
  666. };
  667. int clientId = -1;
  668. int crmCompanyId = -1;
  669. //客户单位/公司 操作
  670. //1.添加 or 修改 公司基本信息
  671. if (clientInfo == null)
  672. {
  673. var companyInfo = await _sqlSugar.Queryable<Crm_CustomerCompany>().Where(it => it.IsDel == 0 &&
  674. it.CompanyFullName.Equals(item.CompanyFullName)
  675. ).FirstAsync();
  676. if (companyInfo != null) crmCompanyId = companyInfo.Id;
  677. else
  678. {
  679. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  680. if (companyAdd < 0)
  681. {
  682. _result.Msg = "客户公司信息添加失败!";
  683. _sqlSugar.RollbackTran();
  684. return _result;
  685. }
  686. crmCompanyId = companyAdd;
  687. }
  688. }
  689. else
  690. {
  691. var companyInfo = await _sqlSugar.Queryable<Crm_CustomerCompany>().Where(it => it.IsDel == 0 &&
  692. it.Id == clientInfo.CrmCompanyId
  693. ).FirstAsync();
  694. if (companyInfo != null)
  695. {
  696. crmCompanyId = companyInfo.Id;
  697. if (!companyInfo.CompanyFullName.Equals(item.CompanyFullName))
  698. {
  699. companyInfo.CompanyFullName = item.CompanyFullName;
  700. var companyEdit = await _sqlSugar.Updateable(companyInfo).UpdateColumns(it =>
  701. new
  702. {
  703. it.CompanyFullName,
  704. }
  705. )
  706. .Where(it => it.Id == companyInfo.Id)
  707. .ExecuteCommandAsync();
  708. if (companyEdit < 0)
  709. {
  710. _result.Msg = "客户公司信息修改失败!";
  711. _sqlSugar.RollbackTran();
  712. return _result;
  713. }
  714. }
  715. }
  716. else
  717. {
  718. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  719. if (companyAdd < 0)
  720. {
  721. _result.Msg = "客户公司信息添加失败!";
  722. _sqlSugar.RollbackTran();
  723. return _result;
  724. }
  725. crmCompanyId = companyAdd;
  726. }
  727. }
  728. //客户人员 操作
  729. //2.添加 or 修改 客户基本信息
  730. if (clientInfo != null) //该客户存在 修改信息
  731. {
  732. clientId = clientInfo.Id;
  733. var clientEdit = await _sqlSugar.Updateable(_DeleClient).UpdateColumns(it =>
  734. new
  735. {
  736. it.LastName,
  737. it.FirstName,
  738. it.Pinyin,
  739. it.Sex,
  740. it.Phone,
  741. it.BirthDay
  742. }
  743. )
  744. .Where(it => it.Id == clientId)
  745. .ExecuteCommandAsync();
  746. if (clientEdit < 0)
  747. {
  748. _result.Msg = "客户基础信息修改失败!";
  749. _sqlSugar.RollbackTran();
  750. return _result;
  751. }
  752. }
  753. else //不存在添加 客户信息
  754. {
  755. _DeleClient.CrmCompanyId = crmCompanyId;
  756. var clientAdd = await _sqlSugar.Insertable(_DeleClient).ExecuteReturnIdentityAsync();
  757. if (clientAdd < 0)
  758. {
  759. _result.Msg = "客户基本信息添加失败!";
  760. _sqlSugar.RollbackTran();
  761. return _result;
  762. }
  763. clientId = clientAdd;
  764. }
  765. //客户身份证操作
  766. //3.添加 or 修改 身份证信息
  767. _CustomerCert.DcId = clientId;
  768. if (clientInfo == null)
  769. {
  770. var certInfo = await _sqlSugar.Queryable<Crm_CustomerCert>().Where(it => it.IsDel == 0 &&
  771. it.SdId == 773 && //卡类型 身份证
  772. it.CertNo == item.IDCardNo //人员Id
  773. ).FirstAsync();
  774. if (certInfo == null)
  775. {
  776. var certAdd = await _sqlSugar.Insertable(_CustomerCert).ExecuteReturnIdentityAsync();
  777. if (certAdd < 0)
  778. {
  779. _result.Msg = "客户身份证添加失败!";
  780. _sqlSugar.RollbackTran();
  781. return _result;
  782. }
  783. }
  784. }
  785. else
  786. {
  787. var certInfo = await _sqlSugar.Queryable<Crm_CustomerCert>().Where(it => it.IsDel == 0 &&
  788. it.SdId == 773 && //卡类型 身份证
  789. it.DcId == clientInfo.Id //人员Id
  790. ).FirstAsync();
  791. if (certInfo == null)
  792. {
  793. var certAdd = await _sqlSugar.Insertable(_CustomerCert).ExecuteReturnIdentityAsync();
  794. if (certAdd < 0)
  795. {
  796. _result.Msg = "客户身份证添加失败!";
  797. _sqlSugar.RollbackTran();
  798. return _result;
  799. }
  800. }
  801. else
  802. {
  803. var certEdit = await _sqlSugar.Updateable(_CustomerCert).UpdateColumns(it =>
  804. new
  805. {
  806. it.CertNo,
  807. }
  808. )
  809. .Where(it => it.Id == certInfo.Id)
  810. .ExecuteCommandAsync();
  811. if (certEdit < 0)
  812. {
  813. _result.Msg = "客户身份证修改失败!";
  814. _sqlSugar.RollbackTran();
  815. return _result;
  816. }
  817. }
  818. }
  819. //团组客户信息名单操作
  820. Grp_TourClientList _TourClientList = new Grp_TourClientList()
  821. {
  822. DiId = diid,
  823. ClientId = clientId,
  824. ShippingSpaceTypeId = item.ShippingSpaceTypeId,
  825. ShippingSpaceSpecialNeeds = item.ShippingSpaceSpecialNeeds,
  826. HotelSpecialNeeds = item.HotelSpecialNeeds,
  827. MealSpecialNeeds = item.MealSpecialNeeds,
  828. Remark = item.Remark,
  829. CreateUserId = userId,
  830. };
  831. var tourClientAdd = await _sqlSugar.Insertable(_TourClientList).ExecuteReturnIdentityAsync();
  832. if (tourClientAdd < 0)
  833. {
  834. _result.Msg = "接团客户名单添加失败!";
  835. _sqlSugar.RollbackTran();
  836. return _result;
  837. }
  838. }
  839. _result.Code = 0;
  840. _sqlSugar.CommitTran();
  841. }
  842. catch (Exception ex)
  843. {
  844. _sqlSugar.RollbackTran();
  845. _result.Msg = "程序异常 -- " + ex.Message;
  846. }
  847. return _result;
  848. }
  849. /// <summary>
  850. /// Del
  851. /// </summary>
  852. /// <param name="portId"></param>
  853. /// <param name="id"></param>
  854. /// <returns></returns>
  855. public async Task<Result> _Del(int id, int userId)
  856. {
  857. if (id > 0)
  858. {
  859. Grp_TourClientList _TourClientList = new Grp_TourClientList()
  860. {
  861. Id = id,
  862. IsDel = 1,
  863. DeleteUserId = userId,
  864. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  865. };
  866. var certEdit = await _sqlSugar.Updateable(_TourClientList).UpdateColumns(it =>
  867. new
  868. {
  869. it.IsDel,
  870. it.DeleteUserId,
  871. it.DeleteTime,
  872. }
  873. )
  874. .Where(it => it.Id == id)
  875. .ExecuteCommandAsync();
  876. if (certEdit < 0)
  877. {
  878. _result.Msg = string.Format(@"接团客户名单删除修改!");
  879. return _result;
  880. }
  881. _result.Code = 0;
  882. }
  883. else
  884. {
  885. _result.Msg = string.Format(@"请传入有效的Id参数");
  886. }
  887. return _result;
  888. }
  889. /// <summary>
  890. /// 分割客户名称
  891. /// </summary>
  892. /// <param name="ids"></param>
  893. /// <returns></returns>
  894. public string _ResolveCustomerName(string ids)
  895. {
  896. string clientStr = "";
  897. if (string.IsNullOrEmpty(ids)) return clientStr;
  898. List<int> intList = new List<int>();
  899. //if (ids.Contains(","))
  900. //{
  901. // string[] numbers = ids.Split(',');
  902. // foreach (string numberStr in numbers)
  903. // {
  904. // if (int.TryParse(numberStr.Trim(), out int number))
  905. // {
  906. // intList.Add(number);
  907. // }
  908. // }
  909. //}
  910. //else
  911. //{
  912. // if (int.TryParse(ids.Trim(), out int number))
  913. // {
  914. // intList.Add(number);
  915. // }
  916. //}
  917. string sql = string.Format(@$"Select * From Crm_GroupCustomer Where IsDel = 0 And Id In ({ids})");
  918. var infos = _sqlSugar.SqlQueryable<Crm_GroupCustomer>(sql).ToList();
  919. if (infos.Count > 0)
  920. {
  921. var infos1 = infos.Select(it => it.LastName + it.FirstName).ToList();
  922. clientStr = string.Join(",", infos1);
  923. }
  924. return clientStr;
  925. }
  926. private class CustomerNameInfo
  927. {
  928. public int Id { get; set; }
  929. public string Name { get; set; }
  930. }
  931. }
  932. }