TourClientListRepository.cs 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921
  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. _sqlSugar.Updateable<Grp_TourClientList>().SetColumns(x=> new Grp_TourClientList { IsDel = 1 } ).Where(x=>x.DiId == diid).ExecuteCommand();
  591. foreach (var item in _TourClientListInfos)
  592. {
  593. //客户信息
  594. var clientInfo = await _sqlSugar.Queryable<Crm_DeleClient>().Where(it => it.IsDel == 0 &&
  595. it.LastName.Equals(item.LastName) &&
  596. it.FirstName.Equals(item.FirstName) &&
  597. it.Phone.Equals(item.Phone)
  598. ).FirstAsync();
  599. Crm_CustomerCompany _CustomerCompany = new Crm_CustomerCompany()
  600. {
  601. CompanyFullName = item.CompanyFullName,
  602. LastedOpUserId = userId,
  603. CreateUserId = userId
  604. };
  605. Crm_CustomerCert _CustomerCert = new Crm_CustomerCert()
  606. {
  607. SdId = 773,
  608. CertNo = item.IDCardNo,
  609. CreateUserId = userId
  610. };
  611. Crm_DeleClient _DeleClient = new Crm_DeleClient()
  612. {
  613. LastName = item.LastName,
  614. FirstName = item.FirstName,
  615. Pinyin = item.Pinyin,
  616. Phone = item.Phone,
  617. Sex = item.Sex,
  618. BirthDay = item.BirthDay,
  619. Job = item.Job,
  620. CreateUserId = userId
  621. };
  622. int clientId = -1;
  623. int crmCompanyId = -1;
  624. //客户单位/公司 操作
  625. //1.添加 or 修改 公司基本信息
  626. if (clientInfo == null)
  627. {
  628. var companyInfo = await _sqlSugar.Queryable<Crm_CustomerCompany>().Where(it => it.IsDel == 0 &&
  629. it.CompanyFullName.Equals(item.CompanyFullName)
  630. ).FirstAsync();
  631. if (companyInfo != null) crmCompanyId = companyInfo.Id;
  632. else
  633. {
  634. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  635. if (companyAdd < 0)
  636. {
  637. _result.Msg = "客户公司信息添加失败!";
  638. _sqlSugar.RollbackTran();
  639. return _result;
  640. }
  641. crmCompanyId = companyAdd;
  642. }
  643. }
  644. else
  645. {
  646. var companyInfo = await _sqlSugar.Queryable<Crm_CustomerCompany>().Where(it => it.IsDel == 0 &&
  647. it.Id == clientInfo.CrmCompanyId
  648. ).FirstAsync();
  649. if (companyInfo != null)
  650. {
  651. crmCompanyId = companyInfo.Id;
  652. if (!companyInfo.CompanyFullName.Equals(item.CompanyFullName))
  653. {
  654. companyInfo.CompanyFullName = item.CompanyFullName;
  655. var companyEdit = await _sqlSugar.Updateable(companyInfo).UpdateColumns(it =>
  656. new
  657. {
  658. it.CompanyFullName,
  659. }
  660. )
  661. .Where(it => it.Id == companyInfo.Id)
  662. .ExecuteCommandAsync();
  663. if (companyEdit < 0)
  664. {
  665. _result.Msg = "客户公司信息修改失败!";
  666. _sqlSugar.RollbackTran();
  667. return _result;
  668. }
  669. }
  670. }
  671. else
  672. {
  673. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  674. if (companyAdd < 0)
  675. {
  676. _result.Msg = "客户公司信息添加失败!";
  677. _sqlSugar.RollbackTran();
  678. return _result;
  679. }
  680. crmCompanyId = companyAdd;
  681. }
  682. }
  683. //客户人员 操作
  684. //2.添加 or 修改 客户基本信息
  685. if (clientInfo != null) //该客户存在 修改信息
  686. {
  687. clientId = clientInfo.Id;
  688. var clientEdit = await _sqlSugar.Updateable(_DeleClient).UpdateColumns(it =>
  689. new
  690. {
  691. it.LastName,
  692. it.FirstName,
  693. it.Pinyin,
  694. it.Sex,
  695. it.Phone,
  696. it.BirthDay
  697. }
  698. )
  699. .Where(it => it.Id == clientId)
  700. .ExecuteCommandAsync();
  701. if (clientEdit < 0)
  702. {
  703. _result.Msg = "客户基础信息修改失败!";
  704. _sqlSugar.RollbackTran();
  705. return _result;
  706. }
  707. }
  708. else //不存在添加 客户信息
  709. {
  710. _DeleClient.CrmCompanyId = crmCompanyId;
  711. var clientAdd = await _sqlSugar.Insertable(_DeleClient).ExecuteReturnIdentityAsync();
  712. if (clientAdd < 0)
  713. {
  714. _result.Msg = "客户基本信息添加失败!";
  715. _sqlSugar.RollbackTran();
  716. return _result;
  717. }
  718. clientId = clientAdd;
  719. }
  720. //客户身份证操作
  721. //3.添加 or 修改 身份证信息
  722. _CustomerCert.DcId = clientId;
  723. if (clientInfo == null)
  724. {
  725. var certInfo = await _sqlSugar.Queryable<Crm_CustomerCert>().Where(it => it.IsDel == 0 &&
  726. it.SdId == 773 && //卡类型 身份证
  727. it.CertNo == item.IDCardNo //人员Id
  728. ).FirstAsync();
  729. if (certInfo == null)
  730. {
  731. var certAdd = await _sqlSugar.Insertable(_CustomerCert).ExecuteReturnIdentityAsync();
  732. if (certAdd < 0)
  733. {
  734. _result.Msg = "客户身份证添加失败!";
  735. _sqlSugar.RollbackTran();
  736. return _result;
  737. }
  738. }
  739. }
  740. else
  741. {
  742. var certInfo = await _sqlSugar.Queryable<Crm_CustomerCert>().Where(it => it.IsDel == 0 &&
  743. it.SdId == 773 && //卡类型 身份证
  744. it.DcId == clientInfo.Id //人员Id
  745. ).FirstAsync();
  746. if (certInfo == null)
  747. {
  748. var certAdd = await _sqlSugar.Insertable(_CustomerCert).ExecuteReturnIdentityAsync();
  749. if (certAdd < 0)
  750. {
  751. _result.Msg = "客户身份证添加失败!";
  752. _sqlSugar.RollbackTran();
  753. return _result;
  754. }
  755. }
  756. else
  757. {
  758. var certEdit = await _sqlSugar.Updateable(_CustomerCert).UpdateColumns(it =>
  759. new
  760. {
  761. it.CertNo,
  762. }
  763. )
  764. .Where(it => it.Id == certInfo.Id)
  765. .ExecuteCommandAsync();
  766. if (certEdit < 0)
  767. {
  768. _result.Msg = "客户身份证修改失败!";
  769. _sqlSugar.RollbackTran();
  770. return _result;
  771. }
  772. }
  773. }
  774. //团组客户信息名单操作
  775. Grp_TourClientList _TourClientList = new Grp_TourClientList()
  776. {
  777. DiId = diid,
  778. ClientId = clientId,
  779. ShippingSpaceTypeId = item.ShippingSpaceTypeId,
  780. ShippingSpaceSpecialNeeds = item.ShippingSpaceSpecialNeeds,
  781. HotelSpecialNeeds = item.HotelSpecialNeeds,
  782. MealSpecialNeeds = item.MealSpecialNeeds,
  783. Remark = item.Remark,
  784. CreateUserId = userId,
  785. };
  786. var tourClientAdd = await _sqlSugar.Insertable(_TourClientList).ExecuteReturnIdentityAsync();
  787. if (tourClientAdd < 0)
  788. {
  789. _result.Msg = "接团客户名单添加失败!";
  790. _sqlSugar.RollbackTran();
  791. return _result;
  792. }
  793. }
  794. _result.Code = 0;
  795. _sqlSugar.CommitTran();
  796. }
  797. catch (Exception ex)
  798. {
  799. _sqlSugar.RollbackTran();
  800. _result.Msg = "程序异常 -- " + ex.Message;
  801. }
  802. return _result;
  803. }
  804. /// <summary>
  805. /// Del
  806. /// </summary>
  807. /// <param name="portId"></param>
  808. /// <param name="id"></param>
  809. /// <returns></returns>
  810. public async Task<Result> _Del(int id, int userId)
  811. {
  812. if (id > 0)
  813. {
  814. Grp_TourClientList _TourClientList = new Grp_TourClientList()
  815. {
  816. Id = id,
  817. IsDel = 1,
  818. DeleteUserId = userId,
  819. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  820. };
  821. var certEdit = await _sqlSugar.Updateable(_TourClientList).UpdateColumns(it =>
  822. new
  823. {
  824. it.IsDel,
  825. it.DeleteUserId,
  826. it.DeleteTime,
  827. }
  828. )
  829. .Where(it => it.Id == id)
  830. .ExecuteCommandAsync();
  831. if (certEdit < 0)
  832. {
  833. _result.Msg = string.Format(@"接团客户名单删除修改!");
  834. return _result;
  835. }
  836. _result.Code = 0;
  837. }
  838. else
  839. {
  840. _result.Msg = string.Format(@"请传入有效的Id参数");
  841. }
  842. return _result;
  843. }
  844. }
  845. }