TourClientListRepository.cs 48 KB

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