TourClientListRepository.cs 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475
  1. using AutoMapper;
  2. using OASystem.Domain;
  3. using OASystem.Domain.Dtos.Groups;
  4. using OASystem.Domain.Entities.Customer;
  5. using OASystem.Domain.Entities.Groups;
  6. using OASystem.Domain.ViewModels.Groups;
  7. using OASystem.Infrastructure.Tools;
  8. using Org.BouncyCastle.Utilities.Encoders;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Globalization;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. namespace OASystem.Infrastructure.Repositories.Groups
  16. {
  17. /// <summary>
  18. /// 接团客户名单
  19. /// 仓库
  20. /// </summary>
  21. public class TourClientListRepository :BaseRepository<Grp_TourClientList,TourClientListView>
  22. {
  23. private readonly Result _result;
  24. private readonly IMapper _mapper;
  25. public TourClientListRepository(SqlSugarClient sqlSugar, IMapper mapper)
  26. : base(sqlSugar)
  27. {
  28. _result = new Result() { Code = -1, Msg = "操作失败!" };
  29. _mapper = mapper;
  30. }
  31. /// <summary>
  32. /// 根据团组Id查询List
  33. /// </summary>
  34. /// <param name="portId"></param>
  35. /// <param name="diId"></param>
  36. /// <returns></returns>
  37. public async Task<Result> _ItemByDiId(int portId, int diId)
  38. {
  39. if (portId == 1 || portId == 2 || portId == 3 ) // 1 web 2 Android 3 ios
  40. {
  41. string sql = string.Format(@"Select tcl.Id,tcl.DiId,temp.* From Grp_TourClientList tcl
  42. Left Join
  43. (Select dc.Id As DcId,dc.LastName,dc.FirstName,ccom.CompanyFullName,dc.Job,cc.CertNo As IDCardNo,dc.Sex
  44. From Crm_DeleClient dc
  45. Left Join Crm_CustomerCompany ccom On dc.CrmCompanyId = ccom.Id And ccom.IsDel = 0
  46. Left Join Crm_CustomerCert cc On dc.Id = cc.DcId And cc.SdId = 773 And cc.IsDel = 0
  47. Where dc.IsDel = 0) temp
  48. On temp.DcId =tcl.ClientId
  49. Where tcl.IsDel = 0 And tcl.DiId = {0}", diId);
  50. var data = await _sqlSugar.SqlQueryable<TourClientListByDiIdView>(sql).ToListAsync();
  51. _result.Code = 0;
  52. _result.Data = data;
  53. }
  54. else
  55. {
  56. _result.Msg = "请传入有效的PortType参数,1 Web 2 Android 3 IOS!";
  57. }
  58. return _result;
  59. }
  60. /// <summary>
  61. /// 基础数据 Init
  62. /// </summary>
  63. /// <param name="portId"></param>
  64. /// <returns></returns>
  65. public async Task<Result> _BasicDataInit(int portId)
  66. {
  67. if (portId == 1 || portId == 2 || portId == 3) // 1 web 2 Android 3 ios
  68. {
  69. var setData = await _sqlSugar.Queryable<Sys_SetData>().Where(it => it.IsDel == 0) .ToListAsync();
  70. var shippingSpaceTypeData = setData.Where(it => it.STid == 44).ToList(); //舱位类型
  71. List<SetDataInfoView> _ShippingSpaceTypeData = _mapper.Map<List<SetDataInfoView>>(shippingSpaceTypeData);
  72. //var passportTypeData = setData.Where(it => it.STid == 74).ToList(); //护照类型
  73. //List<SetDataInfoView> _PassportTypeData = _mapper.Map<List<SetDataInfoView>>(passportTypeData);
  74. //客户信息资料
  75. var clientInfoSql = string.Format(@"Select dc.Id As DcId,dc.LastName,dc.FirstName,dc.Pinyin,dc.Sex,ccom.CompanyFullName,dc.Job,
  76. cc1.CertNo As IDCardNo,dc.Phone,dc.BirthDay
  77. From Crm_DeleClient dc
  78. Left Join Crm_CustomerCompany ccom On dc.CrmCompanyId = ccom.Id And ccom.IsDel = 0
  79. Left Join Crm_CustomerCert cc1 On dc.Id = cc1.DcId And cc1.SdId = 773 And cc1.IsDel = 0
  80. Where dc.IsDel = 0");
  81. var clientData = await _sqlSugar.SqlQueryable<TourClientListDetailsView>(clientInfoSql).ToListAsync();
  82. //公司信息
  83. var clientCompanySql = string.Format(@"Select Id,CompanyFullName From Crm_CustomerCompany Where IsDel = 0");
  84. var clientCompanyData = await _sqlSugar.SqlQueryable<CustomerCompanyCiew>(clientCompanySql).ToListAsync();
  85. var _view = new {
  86. ShippingSpaceTypeData = _ShippingSpaceTypeData,
  87. ClientData = clientData,
  88. ClientCompanyData = clientCompanyData
  89. //PassportTypeData = _PassportTypeData
  90. };
  91. _result.Code = 0;
  92. _result.Data = _view;
  93. }
  94. else
  95. {
  96. _result.Msg = "请传入有效的PortType参数,1 Web 2 Android 3 IOS!";
  97. }
  98. return _result;
  99. }
  100. /// <summary>
  101. /// 根据Id查询Details
  102. /// </summary>
  103. /// <param name="portId"></param>
  104. /// <param name="id"></param>
  105. /// <returns></returns>
  106. public async Task<Result> _Details(int portId, int id)
  107. {
  108. if (portId == 1 || portId == 2 || portId == 3) // 1 web 2 Android 3 ios
  109. {
  110. string sql = string.Format(@"Select tcl.Id,tcl.DiId,temp.*,tcl.ShippingSpaceTypeId,tcl.ShippingSpaceSpecialNeeds,
  111. tcl.HotelSpecialNeeds,tcl.MealSpecialNeeds,tcl.Remark
  112. From Grp_TourClientList tcl
  113. Left Join
  114. (Select dc.Id As DcId,dc.LastName,dc.FirstName,dc.Pinyin,dc.Sex,ccom.CompanyFullName,dc.Job,
  115. cc1.CertNo As IDCardNo,dc.Phone,dc.BirthDay,cc2.PassportType,cc2.CertNo As PassportNo,cc2.Country,
  116. cc2.Area,cc2.IssueDt,cc2.ExpiryDt
  117. From Crm_DeleClient dc
  118. Left Join Crm_CustomerCompany ccom On dc.CrmCompanyId = ccom.Id And ccom.IsDel = 0
  119. Left Join Crm_CustomerCert cc1 On dc.Id = cc1.DcId And cc1.SdId = 773 And cc1.IsDel = 0
  120. Left Join Crm_CustomerCert cc2 On dc.Id = cc2.DcId And cc2.SdId = 774 And cc2.IsDel = 0
  121. Where dc.IsDel = 0) temp
  122. On temp.DcId =tcl.ClientId
  123. Where tcl.IsDel = 0 And tcl.Id = {0}", id);
  124. var data = await _sqlSugar.SqlQueryable<TourClientListDetailsView>(sql).FirstAsync();
  125. if (data != null)
  126. {
  127. data.BirthDay = data.BirthDay.DateFormat("yyyy-MM-dd");
  128. //data.IssueDt = data.IssueDt.DateFormat("yyyy-MM-dd");
  129. //data.ExpiryDt = data.ExpiryDt.DateFormat("yyyy-MM-dd");
  130. _result.Code = 0;
  131. _result.Data = data;
  132. }
  133. }
  134. else
  135. {
  136. _result.Msg = "请传入有效的PortType参数,1 Web 2 Android 3 IOS!";
  137. }
  138. return _result;
  139. }
  140. /// <summary>
  141. /// Add Or Edit
  142. /// </summary>
  143. /// <param name="portId"></param>
  144. /// <param name="id"></param>
  145. /// <returns></returns>
  146. public async Task<Result> _AddOrEdit(TourClientListAddOrEditDto dto)
  147. {
  148. if (string.IsNullOrEmpty(dto.CompanyFullName))
  149. {
  150. _result.Msg = "客户单位名称为空!";
  151. return _result;
  152. }
  153. if (string.IsNullOrEmpty(dto.IDCardNo))
  154. {
  155. _result.Msg = "客户身份证No为空!";
  156. return _result;
  157. }
  158. if (dto.ShippingSpaceTypeId < 0)
  159. {
  160. _result.Msg = "舱位类型为空!";
  161. return _result;
  162. }
  163. if (dto.Id < 0)
  164. {
  165. #region 参数处理
  166. _sqlSugar.BeginTran();
  167. int clientId = -1;
  168. int crmCompanyId = -1;
  169. var clientInfo = await _sqlSugar.Queryable<Crm_DeleClient>().Where(it => it.IsDel == 0 &&
  170. it.LastName.Equals(dto.LastName) &&
  171. it.FirstName.Equals(dto.FirstName) &&
  172. it.Phone.Equals(dto.Phone)
  173. ).FirstAsync();
  174. Crm_CustomerCompany _CustomerCompany = new Crm_CustomerCompany()
  175. {
  176. CompanyFullName = dto.CompanyFullName,
  177. CreateUserId = dto.UserId
  178. };
  179. Crm_CustomerCert _CustomerCert = new Crm_CustomerCert()
  180. {
  181. SdId = 733,
  182. CertNo = dto.IDCardNo,
  183. CreateUserId = dto.UserId
  184. };
  185. Crm_DeleClient _DeleClient = new Crm_DeleClient()
  186. {
  187. LastName = dto.LastName,
  188. FirstName = dto.FirstName,
  189. Pinyin = dto.Pinyin,
  190. Phone = dto.Phone,
  191. Sex = dto.Sex,
  192. BirthDay = dto.BirthDay,
  193. Job = dto.Job,
  194. CreateUserId = dto.UserId
  195. };
  196. //客户单位/公司 操作
  197. //1.添加 or 修改 公司基本信息
  198. if (clientInfo == null)
  199. {
  200. var companyInfo = await _sqlSugar.Queryable<Crm_CustomerCompany>().Where(it => it.IsDel == 0 &&
  201. it.CompanyFullName.Equals(dto.CompanyFullName)
  202. ).FirstAsync();
  203. if (companyInfo != null) crmCompanyId = companyInfo.Id;
  204. else
  205. {
  206. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  207. if (companyAdd < 0)
  208. {
  209. _result.Msg = "客户公司信息添加失败!";
  210. _sqlSugar.RollbackTran();
  211. return _result;
  212. }
  213. crmCompanyId = companyAdd;
  214. }
  215. }
  216. else
  217. {
  218. var companyInfo = await _sqlSugar.Queryable<Crm_CustomerCompany>().Where(it => it.IsDel == 0 &&
  219. it.Id == clientInfo.CrmCompanyId
  220. ).FirstAsync();
  221. if (companyInfo != null)
  222. {
  223. crmCompanyId = companyInfo.Id;
  224. if (!companyInfo.CompanyFullName.Equals(dto.CompanyFullName))
  225. {
  226. companyInfo.CompanyFullName = dto.CompanyFullName;
  227. var companyEdit = await _sqlSugar.Updateable(companyInfo).UpdateColumns(it =>
  228. new
  229. {
  230. it.CompanyFullName,
  231. }
  232. )
  233. .Where(it => it.Id == companyInfo.Id)
  234. .ExecuteCommandAsync();
  235. if (companyEdit < 0)
  236. {
  237. _result.Msg = "客户公司信息修改失败!";
  238. _sqlSugar.RollbackTran();
  239. return _result;
  240. }
  241. }
  242. }
  243. else
  244. {
  245. var companyAdd = await _sqlSugar.Insertable(_CustomerCompany).ExecuteReturnIdentityAsync();
  246. if (companyAdd < 0)
  247. {
  248. _result.Msg = "客户公司信息添加失败!";
  249. _sqlSugar.RollbackTran();
  250. return _result;
  251. }
  252. crmCompanyId = companyAdd;
  253. }
  254. }
  255. //客户人员 操作
  256. //2.添加 or 修改 客户基本信息
  257. if (clientInfo != null) //该客户存在 修改信息
  258. {
  259. clientId = clientInfo.Id;
  260. var clientEdit = await _sqlSugar.Updateable(_DeleClient).UpdateColumns(it =>
  261. new
  262. {
  263. it.LastName,
  264. it.FirstName,
  265. it.Pinyin,
  266. it.Sex,
  267. it.Phone,
  268. it.BirthDay
  269. }
  270. )
  271. .Where(it => it.Id == clientId)
  272. .ExecuteCommandAsync();
  273. if (clientEdit < 0)
  274. {
  275. _result.Msg = "客户基础信息修改失败!";
  276. _sqlSugar.RollbackTran();
  277. return _result;
  278. }
  279. }
  280. else //不存在添加 客户信息
  281. {
  282. _DeleClient.CrmCompanyId = crmCompanyId;
  283. var clientAdd = await _sqlSugar.Insertable(_DeleClient).ExecuteReturnIdentityAsync();
  284. if (clientAdd < 0)
  285. {
  286. _result.Msg = "客户基本信息添加失败!";
  287. _sqlSugar.RollbackTran();
  288. return _result;
  289. }
  290. clientId = clientAdd;
  291. }
  292. //客户身份证操作
  293. //3.添加 or 修改 身份证信息
  294. if (clientInfo == null)
  295. {
  296. var certInfo = await _sqlSugar.Queryable<Crm_CustomerCert>().Where(it => it.IsDel == 0 &&
  297. it.SdId == 773 && //卡类型 身份证
  298. it.CertNo == dto.IDCardNo //人员Id
  299. ).FirstAsync();
  300. if (certInfo == null)
  301. {
  302. var certAdd = await _sqlSugar.Insertable(_CustomerCert).ExecuteReturnIdentityAsync();
  303. if (certAdd < 0)
  304. {
  305. _result.Msg = "客户身份证添加失败!";
  306. _sqlSugar.RollbackTran();
  307. return _result;
  308. }
  309. }
  310. }
  311. else
  312. {
  313. var certInfo = await _sqlSugar.Queryable<Crm_CustomerCert>().Where(it => it.IsDel == 0 &&
  314. it.SdId == 773 && //卡类型 身份证
  315. it.DcId == clientInfo.Id //人员Id
  316. ).FirstAsync();
  317. if (certInfo == null)
  318. {
  319. var certAdd = await _sqlSugar.Insertable(_CustomerCert).ExecuteReturnIdentityAsync();
  320. if (certAdd < 0)
  321. {
  322. _result.Msg = "客户身份证添加失败!";
  323. _sqlSugar.RollbackTran();
  324. return _result;
  325. }
  326. }
  327. else
  328. {
  329. var certEdit = await _sqlSugar.Updateable(_CustomerCert).UpdateColumns(it =>
  330. new
  331. {
  332. it.CertNo,
  333. }
  334. )
  335. .Where(it => it.Id == certInfo.Id)
  336. .ExecuteCommandAsync();
  337. if (certEdit < 0)
  338. {
  339. _result.Msg = "客户身份证修改失败!";
  340. _sqlSugar.RollbackTran();
  341. return _result;
  342. }
  343. }
  344. }
  345. //团组客户信息名单操作
  346. Grp_TourClientList _TourClientList = new Grp_TourClientList()
  347. {
  348. DiId = dto.DiId,
  349. ClientId = clientId,
  350. ShippingSpaceTypeId = dto.ShippingSpaceTypeId,
  351. ShippingSpaceSpecialNeeds = dto.ShippingSpaceSpecialNeeds,
  352. HotelSpecialNeeds = dto.HotelSpecialNeeds,
  353. MealSpecialNeeds = dto.MealSpecialNeeds,
  354. Remark = dto.Remark,
  355. CreateUserId = dto.UserId
  356. };
  357. #endregion
  358. if (dto.Id == 0) // 添加
  359. {
  360. var tourClientAdd = await _sqlSugar.Insertable(_TourClientList).ExecuteReturnIdentityAsync();
  361. if (tourClientAdd < 0)
  362. {
  363. _result.Msg = "接团客户名单添加失败!";
  364. _sqlSugar.RollbackTran();
  365. return _result;
  366. }
  367. }
  368. else if (dto.Id > 0) //修改
  369. {
  370. var certEdit = await _sqlSugar.Updateable(_TourClientList).UpdateColumns(it =>
  371. new
  372. {
  373. it.ClientId,
  374. it.ShippingSpaceTypeId,
  375. it.ShippingSpaceSpecialNeeds,
  376. it.HotelSpecialNeeds,
  377. it.MealSpecialNeeds,
  378. it.Remark,
  379. }
  380. )
  381. .Where(it => it.Id == dto.Id)
  382. .ExecuteCommandAsync();
  383. if (certEdit < 0)
  384. {
  385. _result.Msg = "接团客户名单失败修改!";
  386. _sqlSugar.RollbackTran();
  387. return _result;
  388. }
  389. }
  390. _result.Code = 0;
  391. _sqlSugar.CommitTran();
  392. }
  393. else
  394. {
  395. _result.Msg = "请传入有效的id参数!";
  396. }
  397. return _result;
  398. }
  399. /// <summary>
  400. /// Del
  401. /// </summary>
  402. /// <param name="portId"></param>
  403. /// <param name="id"></param>
  404. /// <returns></returns>
  405. public async Task<Result> _Del(int id, int userId)
  406. {
  407. if (id < 0) // 1 web 2 Android 3 ios
  408. {
  409. Grp_TourClientList _TourClientList = new Grp_TourClientList()
  410. {
  411. Id = id,
  412. IsDel = 1,
  413. DeleteUserId = userId,
  414. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  415. };
  416. var certEdit = await _sqlSugar.Updateable(_TourClientList).UpdateColumns(it =>
  417. new
  418. {
  419. it.IsDel,
  420. it.DeleteUserId,
  421. it.DeleteTime,
  422. }
  423. )
  424. .Where(it => it.Id == id)
  425. .ExecuteCommandAsync();
  426. if (certEdit < 0)
  427. {
  428. _result.Msg = string.Format(@"接团客户名单删除修改!");
  429. return _result;
  430. }
  431. _result.Code = 0;
  432. }
  433. else
  434. {
  435. _result.Msg = string.Format(@"请传入有效的Id参数");
  436. }
  437. return _result;
  438. }
  439. }
  440. }