TourClientListRepository.cs 47 KB

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