TourClientListRepository.cs 50 KB

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