TourClientListRepository.cs 51 KB

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