TourClientListRepository.cs 49 KB

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