VisaDeleClientRepository.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489
  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
  47. Left Join Crm_CustomerCert crmCard2 On crmCard2.SdId = 774 And cdc.Id = crmCard2.DcId 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. int deleId = 0;
  134. if (dto.Status==1)//添加
  135. {
  136. string selectSql = string.Format(@"select * from Crm_DeleClient where LastName+FirstName='{0}' and Phone='{1}' and IsDel='{2}'"
  137. , dto.DeleClient.LastName+dto.DeleClient.FirstName, dto.DeleClient.Phone, 0);
  138. var DeleClient = await _sqlSugar.SqlQueryable<Crm_DeleClient>(selectSql).FirstAsync();//查询是否存在
  139. if (DeleClient != null)
  140. {
  141. result = new Result() { Code = -1, Msg = "该客户已存在,请勿重复添加!" };
  142. }
  143. else//不存在,可添加
  144. {
  145. Crm_DeleClient _CountryFeeCost = _mapper.Map<Crm_DeleClient>(dto.DeleClient);
  146. int id = await AddAsyncReturnId(_CountryFeeCost);
  147. if (id == 0)
  148. {
  149. result = new Result() { Code = -1, Msg = "添加失败!" };
  150. }
  151. result = new Result() { Code = 0, Msg = "添加成功!" };
  152. deleId = id;
  153. }
  154. }
  155. else if (dto.Status == 2)//修改
  156. {
  157. deleId=dto.DeleClient.Id;
  158. bool res = await UpdateAsync(a => a.Id == dto.DeleClient.Id, a => new Crm_DeleClient
  159. {
  160. LastName = dto.DeleClient.LastName,
  161. FirstName = dto.DeleClient.FirstName,
  162. OldName = dto.DeleClient.OldName,
  163. Pinyin = dto.DeleClient.Pinyin,
  164. Sex = dto.DeleClient.Sex,
  165. Marriage = dto.DeleClient.Marriage,
  166. Phone = dto.DeleClient.Phone,
  167. BirthProvince = dto.DeleClient.BirthProvince,
  168. BirthCity = dto.DeleClient.BirthCity,
  169. BirthDay = dto.DeleClient.BirthDay,
  170. AirType = dto.DeleClient.AirType,
  171. SeatPref = dto.DeleClient.SeatPref,
  172. AirRemark = dto.DeleClient.AirRemark,
  173. RoomType = dto.DeleClient.RoomType,
  174. RoomPref = dto.DeleClient.RoomPref,
  175. Tel = dto.DeleClient.Tel,
  176. Email = dto.DeleClient.Email,
  177. Address = dto.DeleClient.Address,
  178. HighestEducation = dto.DeleClient.HighestEducation,
  179. PostCodes = dto.DeleClient.PostCodes,
  180. CrmCompanyId = dto.DeleClient.CrmCompanyId,
  181. Job = dto.DeleClient.Job,
  182. WorkState = dto.DeleClient.WorkState,
  183. WorkDate = dto.DeleClient.WorkDate,
  184. Wage = dto.DeleClient.Wage,
  185. ClientPhone = dto.DeleClient.ClientPhone,
  186. ClientFax = dto.DeleClient.ClientFax,
  187. ClientEmail = dto.DeleClient.ClientEmail,
  188. ClientLeader = dto.DeleClient.ClientLeader,
  189. ClientLeaderJob = dto.DeleClient.ClientLeaderJob,
  190. IsGetSchengen = dto.DeleClient.IsGetSchengen,
  191. StartTime = dto.DeleClient.StartTime,
  192. EndTime = dto.DeleClient.EndTime,
  193. IsFinger = dto.DeleClient.IsFinger,
  194. FingerDate = dto.DeleClient.FingerDate,
  195. IsVisitUC = dto.DeleClient.IsVisitUC,
  196. USADate = dto.DeleClient.USADate,
  197. USADays = dto.DeleClient.USADays,
  198. CanDate = dto.DeleClient.CanDate,
  199. CanDays = dto.DeleClient.CanDays,
  200. IsUSAVia = dto.DeleClient.IsUSAVia,
  201. GetUSAVisaDate = dto.DeleClient.GetUSAVisaDate,
  202. GetUPPlace = dto.DeleClient.GetUPPlace,
  203. USAVisaCate = dto.DeleClient.USAVisaCate,
  204. USAVisaCode = dto.DeleClient.USAVisaCode,
  205. USAFinger = dto.DeleClient.USAFinger,
  206. IsRejected = dto.DeleClient.IsRejected,
  207. RejectedDate = dto.DeleClient.RejectedDate,
  208. RejectedPlace = dto.DeleClient.RejectedPlace,
  209. RejectedVisa = dto.DeleClient.RejectedVisa,
  210. IsRevoke = dto.DeleClient.IsRevoke,
  211. IsLose = dto.DeleClient.IsLose,
  212. LoseDate = dto.DeleClient.LoseDate,
  213. LoseCode = dto.DeleClient.LoseCode,
  214. IsUSAVisa = dto.DeleClient.IsUSAVisa,
  215. MateUSA = dto.DeleClient.MateUSA,
  216. MateIden = dto.DeleClient.MateIden,
  217. WHUSA = dto.DeleClient.WHUSA,
  218. WHIden = dto.DeleClient.WHIden,
  219. ParentUSA = dto.DeleClient.ParentUSA,
  220. ParentIden = dto.DeleClient.ParentIden,
  221. ChildUSA = dto.DeleClient.ChildUSA,
  222. ChildIden = dto.DeleClient.ChildIden,
  223. BroUSA = dto.DeleClient.BroUSA,
  224. BroIden = dto.DeleClient.BroIden,
  225. Social = dto.DeleClient.Social,
  226. IsArmy = dto.DeleClient.IsArmy,
  227. ArmyState = dto.DeleClient.ArmyState,
  228. CostBearers = dto.DeleClient.CostBearers,
  229. TableOpName = dto.DeleClient.TableOpName,
  230. TableOpTel = dto.DeleClient.TableOpTel,
  231. TableDate = dto.DeleClient.TableDate,
  232. Party = dto.DeleClient.Party,
  233. Nationality = dto.DeleClient.Nationality,
  234. WeddingDate = dto.DeleClient.WeddingDate,
  235. DivorceDate = dto.DeleClient.DivorceDate,
  236. MateName = dto.DeleClient.MateName,
  237. MateBirthDay = dto.DeleClient.MateBirthDay,
  238. MateBirthCity = dto.DeleClient.MateBirthCity,
  239. MateBirthCountry = dto.DeleClient.MateBirthCountry,
  240. MateAddress = dto.DeleClient.MateAddress,
  241. MateClient = dto.DeleClient.MateClient,
  242. MateClientAddress = dto.DeleClient.MateClientAddress,
  243. MateJob = dto.DeleClient.MateJob,
  244. VisitCountry = dto.DeleClient.VisitCountry,
  245. Paper = dto.DeleClient.Paper,
  246. Papent = dto.DeleClient.Papent,
  247. PhD = dto.DeleClient.PhD,
  248. CreateUserId = dto.DeleClient.CreateUserId,
  249. Remark = dto.DeleClient.Remark,
  250. });
  251. if (!res)
  252. {
  253. result = new Result() { Code = -1, Msg = "修改失败!" };
  254. }
  255. result = new Result() { Code = 0, Msg = "修改成功!" };
  256. }
  257. //进行其他表
  258. if (result.Code == 0)
  259. {//家庭成员信息
  260. foreach (CustomerFamily item in dto.CustomerFamily)
  261. {
  262. Crm_VisaCustomerFamily Crm_VisaCustomerFamily = _mapper.Map<Crm_VisaCustomerFamily>(item);
  263. Crm_VisaCustomerFamily.DcId = deleId;
  264. if (item.Id != 0)//修改
  265. {
  266. int res = await _sqlSugar.Updateable<Crm_VisaCustomerFamily>().Where(a => a.Id == Crm_VisaCustomerFamily.Id).SetColumns(a => new Crm_VisaCustomerFamily
  267. {
  268. Appellation = Crm_VisaCustomerFamily.Appellation,
  269. Name = Crm_VisaCustomerFamily.Name,
  270. BirthDay = Crm_VisaCustomerFamily.BirthDay,
  271. BirthPlace = Crm_VisaCustomerFamily.BirthPlace,
  272. Politics = Crm_VisaCustomerFamily.Politics,
  273. Client = Crm_VisaCustomerFamily.Client,
  274. Address = Crm_VisaCustomerFamily.Address,
  275. IsEu = Crm_VisaCustomerFamily.IsEu,
  276. NameSnd = Crm_VisaCustomerFamily.NameSnd,
  277. BirthDaySnd = Crm_VisaCustomerFamily.BirthDaySnd,
  278. Nationality = Crm_VisaCustomerFamily.Nationality,
  279. IDCard = Crm_VisaCustomerFamily.IDCard,
  280. Reletionship = Crm_VisaCustomerFamily.Reletionship,
  281. IsUSA = Crm_VisaCustomerFamily.IsUSA,
  282. Remark = Crm_VisaCustomerFamily.Remark,
  283. }).ExecuteCommandAsync();
  284. if (res==0)
  285. {
  286. result = new Result() { Code = -1, Msg = "家庭成员信息保存失败!" };
  287. }
  288. }
  289. else if (item.Id == 0)//添加
  290. {
  291. int sss= await _sqlSugar.Insertable(Crm_VisaCustomerFamily).ExecuteReturnIdentityAsync();
  292. if (sss == 0)
  293. {
  294. result = new Result() { Code = -1, Msg = "家庭成员信息保存失败!" };
  295. }
  296. }
  297. }
  298. //证件表信息
  299. foreach (CustomerCerts item in dto.CustomerCert)
  300. {
  301. Crm_CustomerCert CustomerCert = _mapper.Map<Crm_CustomerCert>(item);
  302. CustomerCert.DcId = deleId;
  303. if (item.Id != 0)//修改
  304. {
  305. int res = await _sqlSugar.Updateable<Crm_CustomerCert>().Where(a => a.Id == CustomerCert.Id).SetColumns(a => new Crm_CustomerCert
  306. {
  307. DcId=CustomerCert.DcId,
  308. SdId = CustomerCert.SdId,
  309. CertNo = CustomerCert.CertNo,
  310. Country = CustomerCert.Country,
  311. Area = CustomerCert.Area,
  312. TargetCountry = CustomerCert.TargetCountry,
  313. IssueDt = CustomerCert.IssueDt,
  314. ExpiryDt = CustomerCert.ExpiryDt,
  315. IDCardAddress = CustomerCert.IDCardAddress,
  316. CreateUserId = CustomerCert.CreateUserId,
  317. Remark = CustomerCert.Remark,
  318. }).ExecuteCommandAsync();
  319. if (res == 0)
  320. {
  321. result = new Result() { Code = -1, Msg = "证件信息保存失败!" };
  322. }
  323. }
  324. else if (item.Id == 0)//添加
  325. {
  326. int sss = await _sqlSugar.Insertable(CustomerCert).ExecuteReturnIdentityAsync();
  327. if (sss == 0)
  328. {
  329. result = new Result() { Code = -1, Msg = "证件信息保存失败!" };
  330. }
  331. }
  332. }
  333. //客户工作经历表
  334. foreach (VisaCustomerCompany item in dto.WorkExperience)
  335. {
  336. Crm_VisaCustomerCompany VisaCustomerCompany = _mapper.Map<Crm_VisaCustomerCompany>(item);
  337. VisaCustomerCompany.DcId = deleId;
  338. if (item.Id != 0)//修改
  339. {
  340. int res = await _sqlSugar.Updateable<Crm_VisaCustomerCompany>().Where(a => a.Id == VisaCustomerCompany.Id).SetColumns(a => new Crm_VisaCustomerCompany
  341. {
  342. DcId=VisaCustomerCompany.DcId,
  343. Company = VisaCustomerCompany.Company,
  344. CompanyAddress = VisaCustomerCompany.CompanyAddress,
  345. Phone = VisaCustomerCompany.Phone,
  346. Job = VisaCustomerCompany.Job,
  347. LeaderName = VisaCustomerCompany.LeaderName,
  348. WorkStart = VisaCustomerCompany.WorkStart,
  349. WorkEnd = VisaCustomerCompany.WorkEnd,
  350. WorkState = VisaCustomerCompany.WorkState,
  351. CreateUserId = VisaCustomerCompany.CreateUserId,
  352. Remark = VisaCustomerCompany.Remark,
  353. }).ExecuteCommandAsync();
  354. if (res == 0)
  355. {
  356. result = new Result() { Code = -1, Msg = "客户工作经历保存失败!" };
  357. }
  358. }
  359. else if (item.Id == 0)//添加
  360. {
  361. int sss = await _sqlSugar.Insertable(VisaCustomerCompany).ExecuteReturnIdentityAsync();
  362. if (sss == 0)
  363. {
  364. result = new Result() { Code = -1, Msg = "客户工作经历保存失败!" };
  365. }
  366. }
  367. }
  368. //客户学历表
  369. foreach (VisaCustomerSchool item in dto.CustomerSchool)
  370. {
  371. Crm_VisaCustomerSchool VisaCustomerSchool = _mapper.Map<Crm_VisaCustomerSchool>(item);
  372. VisaCustomerSchool.DcId = deleId;
  373. if (item.Id != 0)//修改
  374. {
  375. int res = await _sqlSugar.Updateable<Crm_VisaCustomerSchool>().Where(a => a.Id == VisaCustomerSchool.Id).SetColumns(a => new Crm_VisaCustomerSchool
  376. {
  377. DcId = VisaCustomerSchool.DcId,
  378. School = VisaCustomerSchool.School,
  379. Address = VisaCustomerSchool.Address,
  380. Teacher = VisaCustomerSchool.Teacher,
  381. Education = VisaCustomerSchool.Education,
  382. Subject = VisaCustomerSchool.Subject,
  383. StudyStart = VisaCustomerSchool.StudyStart,
  384. StudyEnd = VisaCustomerSchool.StudyEnd,
  385. CreateUserId = VisaCustomerSchool.CreateUserId,
  386. Remark = VisaCustomerSchool.Remark,
  387. }).ExecuteCommandAsync();
  388. if (res == 0)
  389. {
  390. result = new Result() { Code = -1, Msg = "客户学历信息保存失败!" };
  391. }
  392. }
  393. else if (item.Id == 0)//添加
  394. {
  395. int sss = await _sqlSugar.Insertable(VisaCustomerSchool).ExecuteReturnIdentityAsync();
  396. if (sss == 0)
  397. {
  398. result = new Result() { Code = -1, Msg = "客户学历信息保存失败!" };
  399. }
  400. }
  401. }
  402. }
  403. }
  404. catch (Exception ex)
  405. {
  406. return result = new Result() { Code = -2, Msg = "程序错误!" };
  407. throw;
  408. }
  409. return result;
  410. }
  411. public async Task<Result> DelCustomer(DeleClientDelDto dto)
  412. {
  413. Result result = new Result() { Code = -2, Msg = "未知错误" };
  414. try
  415. {
  416. bool isOk=await SoftDeleteByIdAsync<Crm_DeleClient>(dto.Id.ToString(),dto.DeleteUserId);
  417. if (isOk)//删除其他表数据
  418. {
  419. //客户工作经历
  420. await _sqlSugar.Updateable<Crm_VisaCustomerCompany>().Where(a => a.DcId==dto.Id).SetColumns(a => new Crm_VisaCustomerCompany()
  421. {
  422. IsDel = 1,
  423. DeleteUserId = dto.DeleteUserId,
  424. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  425. }).ExecuteCommandAsync();
  426. //客户学历
  427. await _sqlSugar.Updateable<Crm_VisaCustomerSchool>().Where(a => a.DcId == dto.Id).SetColumns(a => new Crm_VisaCustomerSchool()
  428. {
  429. IsDel = 1,
  430. DeleteUserId = dto.DeleteUserId,
  431. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  432. }).ExecuteCommandAsync();
  433. //客户家庭成员信息
  434. await _sqlSugar.Updateable<Crm_VisaCustomerFamily>().Where(a => a.DcId == dto.Id).SetColumns(a => new Crm_VisaCustomerFamily()
  435. {
  436. IsDel = 1,
  437. DeleteUserId = dto.DeleteUserId,
  438. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  439. }).ExecuteCommandAsync();
  440. //客户证件表
  441. await _sqlSugar.Updateable<Crm_CustomerCert>().Where(a => a.DcId == dto.Id).SetColumns(a => new Crm_CustomerCert()
  442. {
  443. IsDel = 1,
  444. DeleteUserId = dto.DeleteUserId,
  445. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  446. }).ExecuteCommandAsync();
  447. return result = new Result() { Code = 0, Msg = "删除成功!" };
  448. }
  449. }
  450. catch (Exception ex)
  451. {
  452. return result = new Result() { Code = -2, Msg = "程序错误!" };
  453. throw;
  454. }
  455. return result;
  456. }
  457. }
  458. }