VisaDeleClientRepository.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499
  1. 
  2. using AutoMapper;
  3. using Newtonsoft.Json;
  4. using OASystem.Domain;
  5. using OASystem.Domain.Dtos;
  6. using OASystem.Domain.Dtos.CRM;
  7. using OASystem.Domain.Dtos.UserDto;
  8. using OASystem.Domain.Entities.Customer;
  9. using OASystem.Domain.Entities.Groups;
  10. using OASystem.Domain.Entities.Resource;
  11. using OASystem.Domain.ViewModels.CRM;
  12. using OASystem.Domain.ViewModels.Groups;
  13. using System;
  14. using System.Collections.Generic;
  15. using System.Linq;
  16. using System.Runtime.Intrinsics.X86;
  17. using System.Text;
  18. using System.Threading.Tasks;
  19. namespace OASystem.Infrastructure.Repositories.CRM
  20. {
  21. /// <summary>
  22. /// 签证客户 仓库
  23. /// </summary>
  24. public class VisaDeleClientRepository : BaseRepository<Crm_DeleClient, VisaDeleClientView>
  25. {
  26. private readonly IMapper _mapper;
  27. public VisaDeleClientRepository(SqlSugarClient sqlSugar,IMapper mapper) :
  28. base(sqlSugar)
  29. {
  30. this._mapper = mapper;
  31. }
  32. /// <summary>
  33. /// 签证客户list
  34. /// </summary>
  35. /// <param name="loginDto"></param>
  36. /// <returns></returns>
  37. public async Task<Result> GetCrmList(DtoBase dto)
  38. {
  39. Result result = new Result() { Code = -2 };
  40. if (dto.PortType == 1 || dto.PortType == 2)
  41. {
  42. string sql = string.Format(@"Select cdc.Id,LastName+FirstName ClientName,ccc.CompanyName,Sex,Marriage,
  43. Phone LandlinePhone,Tel,crmCard1.CertNo IDNo,crmCard2.CertNo PassportNo
  44. From Crm_DeleClient cdc
  45. Left Join Crm_CustomerCompany ccc On cdc.crmCompanyId = ccc.Id
  46. Left Join Crm_CustomerCert crmCard1 On crmCard1.SdId = 773 And cdc.Id = crmCard1.DcId And crmCard1.Isdel=0
  47. Left Join Crm_CustomerCert crmCard2 On crmCard2.SdId = 774 And cdc.Id = crmCard2.DcId And crmCard2.IsDel=0 where cdc.IsDel='0' order By cdc.CreateTime desc");
  48. var clientList = await _sqlSugar.SqlQueryable<VisaDeleClientListView>(sql).ToListAsync();
  49. if (clientList.Count > 0)
  50. {
  51. result.Code = 0;
  52. result.Msg = "成功!";
  53. result.Data = clientList;
  54. }
  55. else
  56. {
  57. result.Msg = "暂无数据!";
  58. }
  59. }
  60. return result;
  61. }
  62. /// <summary>
  63. /// 签证客户操作
  64. /// </summary>
  65. /// <param name="loginDto"></param>
  66. /// <returns></returns>
  67. public async Task<Result> CrmClinetoperation(LoginDto loginDto)
  68. {
  69. Result result = new Result() { Code = -2 };
  70. return result;
  71. }
  72. /// <summary>
  73. /// 签证客户 新增
  74. /// </summary>
  75. /// <param name="loginDto"></param>
  76. /// <returns></returns>
  77. public async Task<int> CrmClinetAdd(Crm_DeleClient client)
  78. {
  79. int addId = -1;
  80. return addId;
  81. }
  82. /// <summary>
  83. /// 根据身份证识别修改ocr添加
  84. /// </summary>
  85. /// <param name="client"></param>
  86. /// <returns></returns>
  87. public async Task<bool> SetCrmUpdPassIdCardOCR(SetCrmUpdPassIdCardOCRDto client)
  88. {
  89. string clientSql = string.Format(@"Select * From Crm_DeleClient Where LastName+FirstName='{0}' And Sex = {1}",
  90. client.ClientName, client.Sex);
  91. var clientInfo = await _sqlSugar.SqlQueryable<VisaDeleClientListView>(clientSql).FirstAsync();
  92. if(clientInfo == null) return false;
  93. string cardSql = string.Format(@"Select * From Crm_CustomerCert Where SdId=773 And DcId={0}", clientInfo.Id);
  94. var cardInfo = await _sqlSugar.SqlQueryable<CustomerCertView>(cardSql).FirstAsync();
  95. if (cardInfo == null) //添加
  96. {
  97. int cerdAdd = await _sqlSugar.Insertable<Crm_CustomerCert>(new Crm_CustomerCert
  98. {
  99. DcId = clientInfo.Id,
  100. SdId = 773,
  101. Country = "中国",
  102. CertNo = client.CerdNo,
  103. TargetCountry = "",
  104. IssueDt = new DateTime(1990, 1, 1),
  105. ExpiryDt = new DateTime(1990, 1, 1),
  106. CreateUserId = client.UserId,
  107. CreateTime = DateTime.Now,
  108. DeleteUserId = null,
  109. DeleteTime = "1990-01-01 00:00:00.000",
  110. Remark = "",
  111. IsDel = 0
  112. }).ExecuteReturnIdentityAsync();
  113. if (cerdAdd > 0) return true;
  114. }
  115. else //修改
  116. {
  117. var cerdStatus = await _sqlSugar.Updateable<Crm_CustomerCert>()
  118. .Where(c => c.Id == cardInfo.Id)
  119. .SetColumns(c => new Crm_CustomerCert
  120. {
  121. CertNo = cardInfo.CertNo,
  122. IDCardAddress = cardInfo.IDCardAddress
  123. }).ExecuteCommandAsync();
  124. if (cerdStatus > 0) return true;
  125. }
  126. return false;
  127. }
  128. public async Task<Result> OpCustomer(DeleClientOpDto dto)
  129. {
  130. Result result = new Result() { Code = -2, Msg = "未知错误" };
  131. try
  132. {
  133. BeginTran();
  134. int deleId = 0;
  135. if (dto.Status==1)//添加
  136. {
  137. string selectSql = string.Format(@"select * from Crm_DeleClient where LastName+FirstName='{0}' and Phone='{1}' and IsDel='{2}'"
  138. , dto.DeleClient.LastName+dto.DeleClient.FirstName, dto.DeleClient.Phone, 0);
  139. var DeleClient = await _sqlSugar.SqlQueryable<Crm_DeleClient>(selectSql).FirstAsync();//查询是否存在
  140. if (DeleClient != null)
  141. {
  142. result = new Result() { Code = -1, Msg = "该客户已存在,请勿重复添加!" };
  143. }
  144. else//不存在,可添加
  145. {
  146. Crm_DeleClient _CountryFeeCost = _mapper.Map<Crm_DeleClient>(dto.DeleClient);
  147. int id = await AddAsyncReturnId(_CountryFeeCost);
  148. if (id == 0)
  149. {
  150. result = new Result() { Code = -1, Msg = "添加失败!" };
  151. }
  152. result = new Result() { Code = 0, Msg = "添加成功!" };
  153. deleId = id;
  154. }
  155. }
  156. else if (dto.Status == 2)//修改
  157. {
  158. deleId=dto.DeleClient.Id;
  159. bool res = await UpdateAsync(a => a.Id == dto.DeleClient.Id, a => new Crm_DeleClient
  160. {
  161. LastName = dto.DeleClient.LastName,
  162. FirstName = dto.DeleClient.FirstName,
  163. OldName = dto.DeleClient.OldName,
  164. Pinyin = dto.DeleClient.Pinyin,
  165. Sex = dto.DeleClient.Sex,
  166. Marriage = dto.DeleClient.Marriage,
  167. Phone = dto.DeleClient.Phone,
  168. BirthProvince = dto.DeleClient.BirthProvince,
  169. BirthCity = dto.DeleClient.BirthCity,
  170. BirthDay = dto.DeleClient.BirthDay,
  171. AirType = dto.DeleClient.AirType,
  172. SeatPref = dto.DeleClient.SeatPref,
  173. AirRemark = dto.DeleClient.AirRemark,
  174. RoomType = dto.DeleClient.RoomType,
  175. RoomPref = dto.DeleClient.RoomPref,
  176. Tel = dto.DeleClient.Tel,
  177. Email = dto.DeleClient.Email,
  178. Address = dto.DeleClient.Address,
  179. HighestEducation = dto.DeleClient.HighestEducation,
  180. PostCodes = dto.DeleClient.PostCodes,
  181. CrmCompanyId = dto.DeleClient.CrmCompanyId,
  182. Job = dto.DeleClient.Job,
  183. WorkState = dto.DeleClient.WorkState,
  184. WorkDate = dto.DeleClient.WorkDate,
  185. Wage = dto.DeleClient.Wage,
  186. ClientPhone = dto.DeleClient.ClientPhone,
  187. ClientFax = dto.DeleClient.ClientFax,
  188. ClientEmail = dto.DeleClient.ClientEmail,
  189. ClientLeader = dto.DeleClient.ClientLeader,
  190. ClientLeaderJob = dto.DeleClient.ClientLeaderJob,
  191. IsGetSchengen = dto.DeleClient.IsGetSchengen,
  192. StartTime = dto.DeleClient.StartTime,
  193. EndTime = dto.DeleClient.EndTime,
  194. IsFinger = dto.DeleClient.IsFinger,
  195. FingerDate = dto.DeleClient.FingerDate,
  196. IsVisitUC = dto.DeleClient.IsVisitUC,
  197. USADate = dto.DeleClient.USADate,
  198. USADays = dto.DeleClient.USADays,
  199. CanDate = dto.DeleClient.CanDate,
  200. CanDays = dto.DeleClient.CanDays,
  201. IsUSAVia = dto.DeleClient.IsUSAVia,
  202. GetUSAVisaDate = dto.DeleClient.GetUSAVisaDate,
  203. GetUPPlace = dto.DeleClient.GetUPPlace,
  204. USAVisaCate = dto.DeleClient.USAVisaCate,
  205. USAVisaCode = dto.DeleClient.USAVisaCode,
  206. USAFinger = dto.DeleClient.USAFinger,
  207. IsRejected = dto.DeleClient.IsRejected,
  208. RejectedDate = dto.DeleClient.RejectedDate,
  209. RejectedPlace = dto.DeleClient.RejectedPlace,
  210. RejectedVisa = dto.DeleClient.RejectedVisa,
  211. IsRevoke = dto.DeleClient.IsRevoke,
  212. IsLose = dto.DeleClient.IsLose,
  213. LoseDate = dto.DeleClient.LoseDate,
  214. LoseCode = dto.DeleClient.LoseCode,
  215. IsUSAVisa = dto.DeleClient.IsUSAVisa,
  216. MateUSA = dto.DeleClient.MateUSA,
  217. MateIden = dto.DeleClient.MateIden,
  218. WHUSA = dto.DeleClient.WHUSA,
  219. WHIden = dto.DeleClient.WHIden,
  220. ParentUSA = dto.DeleClient.ParentUSA,
  221. ParentIden = dto.DeleClient.ParentIden,
  222. ChildUSA = dto.DeleClient.ChildUSA,
  223. ChildIden = dto.DeleClient.ChildIden,
  224. BroUSA = dto.DeleClient.BroUSA,
  225. BroIden = dto.DeleClient.BroIden,
  226. Social = dto.DeleClient.Social,
  227. IsArmy = dto.DeleClient.IsArmy,
  228. ArmyState = dto.DeleClient.ArmyState,
  229. CostBearers = dto.DeleClient.CostBearers,
  230. TableOpName = dto.DeleClient.TableOpName,
  231. TableOpTel = dto.DeleClient.TableOpTel,
  232. TableDate = dto.DeleClient.TableDate,
  233. Party = dto.DeleClient.Party,
  234. Nationality = dto.DeleClient.Nationality,
  235. WeddingDate = dto.DeleClient.WeddingDate,
  236. DivorceDate = dto.DeleClient.DivorceDate,
  237. MateName = dto.DeleClient.MateName,
  238. MateBirthDay = dto.DeleClient.MateBirthDay,
  239. MateBirthCity = dto.DeleClient.MateBirthCity,
  240. MateBirthCountry = dto.DeleClient.MateBirthCountry,
  241. MateAddress = dto.DeleClient.MateAddress,
  242. MateClient = dto.DeleClient.MateClient,
  243. MateClientAddress = dto.DeleClient.MateClientAddress,
  244. MateJob = dto.DeleClient.MateJob,
  245. VisitCountry = dto.DeleClient.VisitCountry,
  246. Paper = dto.DeleClient.Paper,
  247. Papent = dto.DeleClient.Papent,
  248. PhD = dto.DeleClient.PhD,
  249. CreateUserId = dto.DeleClient.CreateUserId,
  250. Remark = dto.DeleClient.Remark,
  251. });
  252. if (!res)
  253. {
  254. result = new Result() { Code = -1, Msg = "修改失败!" };
  255. }
  256. result = new Result() { Code = 0, Msg = "修改成功!" };
  257. }
  258. //进行其他表
  259. if (result.Code == 0)
  260. {//家庭成员信息
  261. foreach (CustomerFamily item in dto.CustomerFamily)
  262. {
  263. Crm_VisaCustomerFamily Crm_VisaCustomerFamily = _mapper.Map<Crm_VisaCustomerFamily>(item);
  264. Crm_VisaCustomerFamily.DcId = deleId;
  265. if (item.Id != 0)//修改
  266. {
  267. int res = await _sqlSugar.Updateable<Crm_VisaCustomerFamily>().Where(a => a.Id == Crm_VisaCustomerFamily.Id).SetColumns(a => new Crm_VisaCustomerFamily
  268. {
  269. Appellation = Crm_VisaCustomerFamily.Appellation,
  270. Name = Crm_VisaCustomerFamily.Name,
  271. BirthDay = Crm_VisaCustomerFamily.BirthDay,
  272. BirthPlace = Crm_VisaCustomerFamily.BirthPlace,
  273. Politics = Crm_VisaCustomerFamily.Politics,
  274. Client = Crm_VisaCustomerFamily.Client,
  275. Address = Crm_VisaCustomerFamily.Address,
  276. IsEu = Crm_VisaCustomerFamily.IsEu,
  277. NameSnd = Crm_VisaCustomerFamily.NameSnd,
  278. BirthDaySnd = Crm_VisaCustomerFamily.BirthDaySnd,
  279. Nationality = Crm_VisaCustomerFamily.Nationality,
  280. IDCard = Crm_VisaCustomerFamily.IDCard,
  281. Reletionship = Crm_VisaCustomerFamily.Reletionship,
  282. IsUSA = Crm_VisaCustomerFamily.IsUSA,
  283. Remark = Crm_VisaCustomerFamily.Remark,
  284. }).ExecuteCommandAsync();
  285. if (res==0)
  286. {
  287. result = new Result() { Code = -1, Msg = "家庭成员信息保存失败!" };
  288. RollbackTran();
  289. }
  290. }
  291. else if (item.Id == 0)//添加
  292. {
  293. int sss= await _sqlSugar.Insertable(Crm_VisaCustomerFamily).ExecuteReturnIdentityAsync();
  294. if (sss == 0)
  295. {
  296. result = new Result() { Code = -1, Msg = "家庭成员信息保存失败!" };
  297. RollbackTran();
  298. }
  299. }
  300. }
  301. //证件表信息
  302. foreach (CustomerCerts item in dto.CustomerCert)
  303. {
  304. Crm_CustomerCert CustomerCert = _mapper.Map<Crm_CustomerCert>(item);
  305. CustomerCert.DcId = deleId;
  306. if (item.Id != 0)//修改
  307. {
  308. int res = await _sqlSugar.Updateable<Crm_CustomerCert>().Where(a => a.Id == CustomerCert.Id).SetColumns(a => new Crm_CustomerCert
  309. {
  310. DcId=CustomerCert.DcId,
  311. SdId = CustomerCert.SdId,
  312. CertNo = CustomerCert.CertNo,
  313. Country = CustomerCert.Country,
  314. Area = CustomerCert.Area,
  315. TargetCountry = CustomerCert.TargetCountry,
  316. IssueDt = CustomerCert.IssueDt,
  317. ExpiryDt = CustomerCert.ExpiryDt,
  318. IDCardAddress = CustomerCert.IDCardAddress,
  319. CreateUserId = CustomerCert.CreateUserId,
  320. Remark = CustomerCert.Remark,
  321. }).ExecuteCommandAsync();
  322. if (res == 0)
  323. {
  324. result = new Result() { Code = -1, Msg = "证件信息保存失败!" };
  325. RollbackTran();
  326. }
  327. }
  328. else if (item.Id == 0)//添加
  329. {
  330. int sss = await _sqlSugar.Insertable(CustomerCert).ExecuteReturnIdentityAsync();
  331. if (sss == 0)
  332. {
  333. result = new Result() { Code = -1, Msg = "证件信息保存失败!" };
  334. RollbackTran();
  335. }
  336. }
  337. }
  338. //客户工作经历表
  339. foreach (VisaCustomerCompany item in dto.WorkExperience)
  340. {
  341. Crm_VisaCustomerCompany VisaCustomerCompany = _mapper.Map<Crm_VisaCustomerCompany>(item);
  342. VisaCustomerCompany.DcId = deleId;
  343. if (item.Id != 0)//修改
  344. {
  345. int res = await _sqlSugar.Updateable<Crm_VisaCustomerCompany>().Where(a => a.Id == VisaCustomerCompany.Id).SetColumns(a => new Crm_VisaCustomerCompany
  346. {
  347. DcId=VisaCustomerCompany.DcId,
  348. Company = VisaCustomerCompany.Company,
  349. CompanyAddress = VisaCustomerCompany.CompanyAddress,
  350. Phone = VisaCustomerCompany.Phone,
  351. Job = VisaCustomerCompany.Job,
  352. LeaderName = VisaCustomerCompany.LeaderName,
  353. WorkStart = VisaCustomerCompany.WorkStart,
  354. WorkEnd = VisaCustomerCompany.WorkEnd,
  355. WorkState = VisaCustomerCompany.WorkState,
  356. CreateUserId = VisaCustomerCompany.CreateUserId,
  357. Remark = VisaCustomerCompany.Remark,
  358. }).ExecuteCommandAsync();
  359. if (res == 0)
  360. {
  361. result = new Result() { Code = -1, Msg = "客户工作经历保存失败!" };
  362. RollbackTran();
  363. }
  364. }
  365. else if (item.Id == 0)//添加
  366. {
  367. int sss = await _sqlSugar.Insertable(VisaCustomerCompany).ExecuteReturnIdentityAsync();
  368. if (sss == 0)
  369. {
  370. result = new Result() { Code = -1, Msg = "客户工作经历保存失败!" };
  371. RollbackTran();
  372. }
  373. }
  374. }
  375. //客户学历表
  376. foreach (VisaCustomerSchool item in dto.CustomerSchool)
  377. {
  378. Crm_VisaCustomerSchool VisaCustomerSchool = _mapper.Map<Crm_VisaCustomerSchool>(item);
  379. VisaCustomerSchool.DcId = deleId;
  380. if (item.Id != 0)//修改
  381. {
  382. int res = await _sqlSugar.Updateable<Crm_VisaCustomerSchool>().Where(a => a.Id == VisaCustomerSchool.Id).SetColumns(a => new Crm_VisaCustomerSchool
  383. {
  384. DcId = VisaCustomerSchool.DcId,
  385. School = VisaCustomerSchool.School,
  386. Address = VisaCustomerSchool.Address,
  387. Teacher = VisaCustomerSchool.Teacher,
  388. Education = VisaCustomerSchool.Education,
  389. Subject = VisaCustomerSchool.Subject,
  390. StudyStart = VisaCustomerSchool.StudyStart,
  391. StudyEnd = VisaCustomerSchool.StudyEnd,
  392. CreateUserId = VisaCustomerSchool.CreateUserId,
  393. Remark = VisaCustomerSchool.Remark,
  394. }).ExecuteCommandAsync();
  395. if (res == 0)
  396. {
  397. result = new Result() { Code = -1, Msg = "客户学历信息保存失败!" };
  398. RollbackTran();
  399. }
  400. }
  401. else if (item.Id == 0)//添加
  402. {
  403. int sss = await _sqlSugar.Insertable(VisaCustomerSchool).ExecuteReturnIdentityAsync();
  404. if (sss == 0)
  405. {
  406. result = new Result() { Code = -1, Msg = "客户学历信息保存失败!" };
  407. RollbackTran();
  408. }
  409. }
  410. }
  411. CommitTran();
  412. }
  413. }
  414. catch (Exception ex)
  415. {
  416. return result = new Result() { Code = -2, Msg = "程序错误!" };
  417. throw;
  418. }
  419. return result;
  420. }
  421. public async Task<Result> DelCustomer(DeleClientDelDto dto)
  422. {
  423. Result result = new Result() { Code = -2, Msg = "未知错误" };
  424. try
  425. {
  426. bool isOk=await SoftDeleteByIdAsync<Crm_DeleClient>(dto.Id.ToString(),dto.DeleteUserId);
  427. if (isOk)//删除其他表数据
  428. {
  429. //客户工作经历
  430. await _sqlSugar.Updateable<Crm_VisaCustomerCompany>().Where(a => a.DcId==dto.Id).SetColumns(a => new Crm_VisaCustomerCompany()
  431. {
  432. IsDel = 1,
  433. DeleteUserId = dto.DeleteUserId,
  434. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  435. }).ExecuteCommandAsync();
  436. //客户学历
  437. await _sqlSugar.Updateable<Crm_VisaCustomerSchool>().Where(a => a.DcId == dto.Id).SetColumns(a => new Crm_VisaCustomerSchool()
  438. {
  439. IsDel = 1,
  440. DeleteUserId = dto.DeleteUserId,
  441. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  442. }).ExecuteCommandAsync();
  443. //客户家庭成员信息
  444. await _sqlSugar.Updateable<Crm_VisaCustomerFamily>().Where(a => a.DcId == dto.Id).SetColumns(a => new Crm_VisaCustomerFamily()
  445. {
  446. IsDel = 1,
  447. DeleteUserId = dto.DeleteUserId,
  448. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  449. }).ExecuteCommandAsync();
  450. //客户证件表
  451. await _sqlSugar.Updateable<Crm_CustomerCert>().Where(a => a.DcId == dto.Id).SetColumns(a => new Crm_CustomerCert()
  452. {
  453. IsDel = 1,
  454. DeleteUserId = dto.DeleteUserId,
  455. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  456. }).ExecuteCommandAsync();
  457. return result = new Result() { Code = 0, Msg = "删除成功!" };
  458. }
  459. }
  460. catch (Exception ex)
  461. {
  462. return result = new Result() { Code = -2, Msg = "程序错误!" };
  463. throw;
  464. }
  465. return result;
  466. }
  467. }
  468. }