HotlineMessageReceiveController.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764
  1. using DotNetCore.CAP;
  2. using Hotline.Share.Dtos.Order;
  3. using Hotline.Share.Enums.Order;
  4. using MapsterMapper;
  5. using MediatR;
  6. using Microsoft.AspNetCore.Mvc;
  7. using Sharing.Application;
  8. using Sharing.Notifications.HuiJu;
  9. using Sharing.Notifications.Knowledge;
  10. using Sharing.Notifications.XieTong;
  11. using Sharing.Province.Dtos.HuiJu.Send;
  12. using Sharing.Province.Dtos.XieTong.Knowledge;
  13. using Sharing.Province.Dtos.XieTong.Send;
  14. using Sharing.Province.HuiJu.Send;
  15. using Sharing.Province.XieTong.Knowledge;
  16. using Sharing.Province.XieTong.Receive;
  17. using Sharing.Province.XieTong.Send;
  18. namespace Sharing.Api.Controllers
  19. {
  20. /// <summary>
  21. ///
  22. /// </summary>
  23. public class HotlineMessageReceiveController : Controller
  24. {
  25. #region 注入
  26. private readonly IMediator _mediator;
  27. private readonly ILogger<HotlineMsgReceiver> _logger;
  28. private readonly IMapper _mapper;
  29. private readonly IGetCaseResultReceiveRepository _getCaseResultReceiveRepository;
  30. private readonly IGetCaseProcessReceiveRepository _getCaseProcessReceiveRepository;
  31. private readonly IGetVisitInfoReceiveRepository _getVisitInfoReceiveRepository;
  32. private readonly IGetCaseBackApplyRepository _getCaseBackApplyRepository;
  33. private readonly IDelayCaseInfoSendRepository _delayCaseInfoSendRepository;
  34. private readonly ISendSuperviseProcessInfoRepository _sendSuperviseProcessInfoRepository;
  35. private readonly ISendSuperviseResultInfoRepository _sendSuperviseResultInfoRepository;
  36. private readonly ISubmitCaseInfoRepository _submitCaseInfoRepository;
  37. private readonly ISubmitCaseResultRepository _submitCaseResultRepository;
  38. private readonly ISubmitCaseProcessRepository _submitCaseProcessRepository;
  39. private readonly ISubmitVisitInfoRepository _submitVisitInfoRepository;
  40. private readonly ISubmitCaseRecordRepository _submitCaseRecordRepository;
  41. private readonly ISubmitCaseTotalRepository _submitCaseTotalRepository;
  42. private readonly ISendCaseInfoRepository _sendCaseInfoRepository;
  43. private readonly ISupplyCaseInfoSendRepository _supplyCaseInfoSendRepository;
  44. private readonly IRevokeCaseInfoRepository _revokeCaseInfoRepository;
  45. private readonly IRemindCaseInfoRepository _remindCaseInfoRepository;
  46. private readonly IGetKnowledgeInfoSendRepository _getKnowledgeInfoSendRepository;
  47. private readonly IGetKnowledgeInfoUpdateRepository _getKnowledgeInfoUpdateRepository;
  48. private readonly IGetKnowledgeInfoAbandonRepository _getKnowledgeInfoAbandonRepository;
  49. private readonly ISendRealTimeStatusRepository _sendRealTimeStatusRepository;
  50. /// <summary>
  51. ///
  52. /// </summary>
  53. /// <param name="mediator"></param>
  54. /// <param name="logger"></param>
  55. /// <param name="mapper"></param>
  56. /// <param name="getCaseResultReceiveRepository"></param>
  57. /// <param name="getCaseProcessReceiveRepository"></param>
  58. /// <param name="getVisitInfoReceiveRepository"></param>
  59. /// <param name="getCaseBackApplyRepository"></param>
  60. /// <param name="delayCaseInfoSendRepository"></param>
  61. /// <param name="sendSuperviseProcessInfoRepository"></param>
  62. /// <param name="sendSuperviseResultInfoRepository"></param>
  63. /// <param name="submitCaseInfoRepository"></param>
  64. /// <param name="submitCaseResultRepository"></param>
  65. /// <param name="submitCaseProcessRepository"></param>
  66. /// <param name="submitVisitInfoRepository"></param>
  67. /// <param name="submitCaseRecordRepository"></param>
  68. /// <param name="submitCaseTotalRepository"></param>
  69. /// <param name="sendCaseInfoRepository"></param>
  70. /// <param name="supplyCaseInfoSendRepository"></param>
  71. /// <param name="revokeCaseInfoRepository"></param>
  72. /// <param name="remindCaseInfoRepository"></param>
  73. /// <param name="getKnowledgeInfoSendRepository"></param>
  74. /// <param name="getKnowledgeInfoUpdateRepository"></param>
  75. /// <param name="getKnowledgeInfoAbandonRepository"></param>
  76. /// <param name="sendRealTimeStatusRepository"></param>
  77. public HotlineMessageReceiveController(IMediator mediator, ILogger<HotlineMsgReceiver> logger, IMapper mapper
  78. , IGetCaseResultReceiveRepository getCaseResultReceiveRepository, IGetCaseProcessReceiveRepository getCaseProcessReceiveRepository
  79. , IGetVisitInfoReceiveRepository getVisitInfoReceiveRepository, IGetCaseBackApplyRepository getCaseBackApplyRepository
  80. , IDelayCaseInfoSendRepository delayCaseInfoSendRepository, ISendSuperviseProcessInfoRepository sendSuperviseProcessInfoRepository
  81. , ISendSuperviseResultInfoRepository sendSuperviseResultInfoRepository, ISubmitCaseInfoRepository submitCaseInfoRepository
  82. , ISubmitCaseResultRepository submitCaseResultRepository, ISubmitCaseProcessRepository submitCaseProcessRepository
  83. , ISubmitVisitInfoRepository submitVisitInfoRepository, ISubmitCaseRecordRepository submitCaseRecordRepository
  84. , ISubmitCaseTotalRepository submitCaseTotalRepository, ISendCaseInfoRepository sendCaseInfoRepository
  85. , ISupplyCaseInfoSendRepository supplyCaseInfoSendRepository, IRevokeCaseInfoRepository revokeCaseInfoRepository
  86. , IRemindCaseInfoRepository remindCaseInfoRepository, IGetKnowledgeInfoSendRepository getKnowledgeInfoSendRepository
  87. , IGetKnowledgeInfoUpdateRepository getKnowledgeInfoUpdateRepository, IGetKnowledgeInfoAbandonRepository getKnowledgeInfoAbandonRepository
  88. , ISendRealTimeStatusRepository sendRealTimeStatusRepository)
  89. {
  90. _mediator = mediator;
  91. _logger = logger;
  92. _mapper = mapper;
  93. _getCaseResultReceiveRepository = getCaseResultReceiveRepository;
  94. _getCaseProcessReceiveRepository = getCaseProcessReceiveRepository;
  95. _getVisitInfoReceiveRepository = getVisitInfoReceiveRepository;
  96. _getCaseBackApplyRepository = getCaseBackApplyRepository;
  97. _delayCaseInfoSendRepository = delayCaseInfoSendRepository;
  98. _sendSuperviseProcessInfoRepository = sendSuperviseProcessInfoRepository;
  99. _sendSuperviseResultInfoRepository = sendSuperviseResultInfoRepository;
  100. _submitCaseInfoRepository = submitCaseInfoRepository;
  101. _submitCaseResultRepository = submitCaseResultRepository;
  102. _submitCaseProcessRepository = submitCaseProcessRepository;
  103. _submitVisitInfoRepository = submitVisitInfoRepository;
  104. _submitCaseRecordRepository = submitCaseRecordRepository;
  105. _submitCaseTotalRepository = submitCaseTotalRepository;
  106. _sendCaseInfoRepository = sendCaseInfoRepository;
  107. _supplyCaseInfoSendRepository = supplyCaseInfoSendRepository;
  108. _revokeCaseInfoRepository = revokeCaseInfoRepository;
  109. _remindCaseInfoRepository = remindCaseInfoRepository;
  110. _getKnowledgeInfoSendRepository = getKnowledgeInfoSendRepository;
  111. _getKnowledgeInfoUpdateRepository = getKnowledgeInfoUpdateRepository;
  112. _getKnowledgeInfoAbandonRepository = getKnowledgeInfoAbandonRepository;
  113. _sendRealTimeStatusRepository = sendRealTimeStatusRepository;
  114. }
  115. #endregion
  116. #region 协同-第一批次
  117. /// <summary>
  118. /// 服务工单交办处理
  119. /// </summary>
  120. /// <param name="dto"></param>
  121. /// <returns></returns>
  122. [NonAction]
  123. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderGetCaseResultReceive)]
  124. public async Task GetCaseResultReceive(GetCaseResultReceiveInfo dto)
  125. {
  126. var data = _mapper.Map<GetCaseResultReceive>(dto);
  127. //将上报信息写入本地库
  128. var id = await _getCaseResultReceiveRepository.AddAsync(data);
  129. data.Id = id;
  130. //信息上报
  131. await _mediator.Publish(new GetCaseResultReceiveNotification(data));
  132. }
  133. /// <summary>
  134. /// 服务工单交办处理过程
  135. /// </summary>
  136. /// <param name="dto"></param>
  137. /// <returns></returns>
  138. [NonAction]
  139. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderGetCaseProcessReceive)]
  140. public async Task GetCaseProcessReceive(GetCaseProcessReceiveInfo dto)
  141. {
  142. var data = _mapper.Map<GetCaseProcessReceive>(dto);
  143. //将上报信息写入本地库
  144. var id = await _getCaseProcessReceiveRepository.AddAsync(data);
  145. data.Id = id;
  146. //信息上报
  147. await _mediator.Publish(new GetCaseProcessReceiveNotification(data));
  148. }
  149. /// <summary>
  150. /// 服务工单交办评价
  151. /// </summary>
  152. /// <param name="dto"></param>
  153. /// <returns></returns>
  154. [NonAction]
  155. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderGetVisitInfoReceive)]
  156. public async Task GetVisitInfoReceive(GetVisitInfoReceiveInfo dto)
  157. {
  158. var data = _mapper.Map<GetVisitInfoReceive>(dto);
  159. //将上报信息写入本地库
  160. var id = await _getVisitInfoReceiveRepository.AddAsync(data);
  161. data.Id = id;
  162. //信息上报
  163. await _mediator.Publish(new GetVisitInfoReceiveNotification(data));
  164. }
  165. /// <summary>
  166. /// 退回申请
  167. /// </summary>
  168. /// <param name="dto"></param>
  169. /// <returns></returns>
  170. [NonAction]
  171. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderGetCaseBackApply)]
  172. public async Task GetCaseBackApply(GetCaseBackApplyInfo dto)
  173. {
  174. var data = _mapper.Map<GetCaseBackApply>(dto);
  175. //将上报信息写入本地库
  176. var id = await _getCaseBackApplyRepository.AddAsync(data);
  177. data.Id = id;
  178. //信息上报
  179. await _mediator.Publish(new GetCaseBackApplyNotification(data));
  180. }
  181. /// <summary>
  182. /// 服务工单申请延时
  183. /// </summary>
  184. /// <param name="dto"></param>
  185. /// <returns></returns>
  186. [NonAction]
  187. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderDelayCaseInfoSend)]
  188. public async Task DelayCaseInfoSend(DelayCaseInfoSendInfo dto)
  189. {
  190. var data = _mapper.Map<DelayCaseInfoSend>(dto);
  191. //将上报信息写入本地库
  192. var id = await _delayCaseInfoSendRepository.AddAsync(data);
  193. data.Id = id;
  194. //信息上报
  195. await _mediator.Publish(new DelayCaseInfoSendNotification(data));
  196. }
  197. /// <summary>
  198. /// 服务工单督办过程
  199. /// </summary>
  200. /// <param name="dto"></param>
  201. /// <returns></returns>
  202. [NonAction]
  203. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderSendSuperviseProcessInfo)]
  204. public async Task SendSuperviseProcessInfo(SendSuperviseProcessInfoInfo dto)
  205. {
  206. var data = _mapper.Map<SendSuperviseProcessInfo>(dto);
  207. //将上报信息写入本地库
  208. var id = await _sendSuperviseProcessInfoRepository.AddAsync(data);
  209. data.Id = id;
  210. //信息上报
  211. await _mediator.Publish(new SendSuperviseProcessInfoNotification(data));
  212. }
  213. /// <summary>
  214. /// 服务工单督办结果
  215. /// </summary>
  216. /// <param name="dto"></param>
  217. /// <returns></returns>
  218. [NonAction]
  219. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderSendSuperviseResultInfo)]
  220. public async Task SendSuperviseResultInfo(SendSuperviseResultInfoInfo dto)
  221. {
  222. var data = _mapper.Map<SendSuperviseResultInfo>(dto);
  223. //将上报信息写入本地库
  224. var id = await _sendSuperviseResultInfoRepository.AddAsync(data);
  225. data.Id = id;
  226. //信息上报
  227. await _mediator.Publish(new SendSuperviseResultInfoNotification(data));
  228. }
  229. #endregion
  230. #region 汇聚-第二批次
  231. /// <summary>
  232. /// 服务工单受理 --- 部分字段未赋值处理
  233. /// </summary>
  234. /// <param name="dto"></param>
  235. /// <returns></returns>
  236. [NonAction]
  237. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderCreated)]
  238. public async Task ReceiveOrderCreated(OrderDto dto)
  239. {
  240. //处理数据
  241. SubmitCaseInfo submitCaseInfo = new SubmitCaseInfo
  242. {
  243. OrderID = dto.Id,
  244. No = dto.No,
  245. CaseTitle = dto.Title,
  246. CaseRegister = dto.EmployeeName,
  247. CaseRegisterNo = dto.EmployeeStaffNo,
  248. CaseDate = Convert.ToDateTime(dto.CreationTime),
  249. PhoneNumber = dto.Contact,
  250. AppLicantName = dto.FromName,
  251. AppLicantAge = dto.AgeRangeCode,
  252. AppLicantId = dto.LicenceNo,
  253. CaseAccord = "",
  254. CaseContent = dto.Content,
  255. CaseProcessType = "",
  256. CaseIsPublic = "",
  257. CaseIsSecrect = "",
  258. CaseIsVisit = "",
  259. CaseValid = "",
  260. TSigntTmeBf = null,
  261. TfdBackTimeBf = null,
  262. TBackTimeBf = null,
  263. RelateSerial = "",
  264. CaseLngLat = "",
  265. CaseEmotion = "",
  266. CaseAddress = "",
  267. EventDate = null,
  268. CaseGoal = "",
  269. ThemeSerial = "",
  270. AdviseType = "",
  271. AdviseDept = "",
  272. ComplainType = "",
  273. ComplainDept = "",
  274. PushType = "",
  275. };
  276. submitCaseInfo.CaseSerial = "";
  277. //处理诉求渠道
  278. switch (dto.Channel)
  279. {
  280. case EChannel.Phone:
  281. submitCaseInfo.CaseSource = "RGDH";
  282. break;
  283. case EChannel.WxOfficial:
  284. submitCaseInfo.CaseSource = "WX";
  285. break;
  286. case EChannel.Web:
  287. submitCaseInfo.CaseSource = "WZ";
  288. break;
  289. case EChannel.App:
  290. submitCaseInfo.CaseSource = "Ap";
  291. break;
  292. case EChannel.WxMiniProgram:
  293. submitCaseInfo.CaseSource = "XCX";
  294. break;
  295. default:
  296. break;
  297. }
  298. //处理性别
  299. switch (dto.FromGender)
  300. {
  301. case EGender.Female:
  302. submitCaseInfo.AppLicantSex = "0";
  303. break;
  304. case EGender.Male:
  305. submitCaseInfo.AppLicantSex = "1";
  306. break;
  307. case EGender.Unknown:
  308. submitCaseInfo.AppLicantSex = "2";
  309. break;
  310. default:
  311. break;
  312. }
  313. //处理证件类型
  314. switch (dto.LicenceTypeCode)
  315. {
  316. case "10":
  317. submitCaseInfo.CertifiCateType = "10";
  318. break;
  319. case "40":
  320. submitCaseInfo.CertifiCateType = "20";
  321. break;
  322. case "55":
  323. submitCaseInfo.CertifiCateType = "30";
  324. break;
  325. case "57":
  326. submitCaseInfo.CertifiCateType = "40";
  327. break;
  328. default:
  329. submitCaseInfo.CertifiCateType = "50";
  330. break;
  331. }
  332. //处理受理类型
  333. switch (dto.AcceptType)
  334. {
  335. case EAcceptType.Consult:
  336. submitCaseInfo.CaseType = "10";
  337. break;
  338. case EAcceptType.Suggest:
  339. submitCaseInfo.CaseType = "15";
  340. break;
  341. case EAcceptType.SeekHelp:
  342. submitCaseInfo.CaseType = "20";
  343. break;
  344. case EAcceptType.Praise:
  345. submitCaseInfo.CaseType = "25";
  346. break;
  347. case EAcceptType.Report:
  348. submitCaseInfo.CaseType = "30";
  349. break;
  350. case EAcceptType.Complain:
  351. submitCaseInfo.CaseType = "35";
  352. break;
  353. case EAcceptType.Other:
  354. submitCaseInfo.CaseType = "40";
  355. break;
  356. default:
  357. break;
  358. }
  359. //处理紧急程度
  360. switch (dto.EmergencyLevel)
  361. {
  362. case EEmergencyLevel.QuiteEmergency:
  363. submitCaseInfo.CaseIsUrgent = "10";
  364. break;
  365. case EEmergencyLevel.Emergency:
  366. submitCaseInfo.CaseIsUrgent = "20";
  367. break;
  368. default:
  369. submitCaseInfo.CaseIsUrgent = "30";
  370. break;
  371. }
  372. // submitCaseInfo.Id = await _submitCaseInfoRepository.AddAsync(submitCaseInfo, HttpContext.RequestAborted);
  373. await _mediator.Publish(new OrderCreatedNotification(submitCaseInfo));
  374. }
  375. /// <summary>
  376. /// 服务工单处理结果
  377. /// </summary>
  378. /// <param name="dto"></param>
  379. /// <returns></returns>
  380. [NonAction]
  381. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderSubmitCaseResult)]
  382. public async Task SubmitCaseResult(CaseResult dto)
  383. {
  384. var data = _mapper.Map<SubmitCaseResult>(dto);
  385. //将上报信息写入本地库
  386. var id = await _submitCaseResultRepository.AddAsync(data);
  387. data.Id = id;
  388. //信息上报
  389. await _mediator.Publish(new SubmitCaseResultNotification(data));
  390. }
  391. /// <summary>
  392. /// 服务工单处理过程
  393. /// </summary>
  394. /// <param name="dto"></param>
  395. /// <returns></returns>
  396. [NonAction]
  397. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderSubmitCaseProcess)]
  398. public async Task SubmitCaseProcess(CaseProcess dto)
  399. {
  400. var data = _mapper.Map<SubmitCaseProcess>(dto);
  401. //将上报信息写入本地库
  402. var id = await _submitCaseProcessRepository.AddAsync(data);
  403. data.Id = id;
  404. //信息上报
  405. await _mediator.Publish(new SubmitCaseProcessNotification(data));
  406. }
  407. /// <summary>
  408. /// 服务工单回访评价
  409. /// </summary>
  410. /// <param name="dto"></param>
  411. /// <returns></returns>
  412. [NonAction]
  413. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderSubmitVisitInfo)]
  414. public async Task SubmitVisitInfo(VisitInfo dto)
  415. {
  416. var data = _mapper.Map<SubmitVisitInfo>(dto);
  417. //将上报信息写入本地库
  418. var id = await _submitVisitInfoRepository.AddAsync(data);
  419. data.Id = id;
  420. //信息上报
  421. await _mediator.Publish(new SubmitVisitInfoNotification(data));
  422. }
  423. /// <summary>
  424. /// 电话记录
  425. /// </summary>
  426. /// <param name="dto"></param>
  427. /// <returns></returns>
  428. [NonAction]
  429. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderSubmitCaseRecord)]
  430. public async Task SubmitCaseRecord(CaseRecord dto)
  431. {
  432. var data = _mapper.Map<SubmitCaseRecord>(dto);
  433. //将上报信息写入本地库
  434. var id = await _submitCaseRecordRepository.AddAsync(data);
  435. data.Id = id;
  436. //信息上报
  437. await _mediator.Publish(new SubmitCaseRecordNotification(data));
  438. }
  439. /// <summary>
  440. /// 统计数据
  441. /// </summary>
  442. /// <param name="dto"></param>
  443. /// <returns></returns>
  444. [NonAction]
  445. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderSubmitCaseTotal)]
  446. public async Task SubmitCaseTotal(CaseTotal dto)
  447. {
  448. var data = _mapper.Map<SubmitCaseTotal>(dto);
  449. //将上报信息写入本地库
  450. var id = await _submitCaseTotalRepository.AddAsync(data);
  451. data.Id = id;
  452. //信息上报
  453. await _mediator.Publish(new SubmitCaseTotalNotification(data));
  454. }
  455. #endregion
  456. #region 协同-第三批次
  457. /// <summary>
  458. /// 服务工单上报 --- 部分字段未赋值处理
  459. /// </summary>
  460. /// <param name="dto"></param>
  461. /// <returns></returns>
  462. [NonAction]
  463. [CapSubscribe(Hotline.Share.Mq.EventNames.SendCaseInfo)]
  464. public async Task SendCaseInfo(OrderDto dto)
  465. {
  466. //处理数据
  467. SendCaseInfo sendCaseInfo = new SendCaseInfo
  468. {
  469. OrderID = dto.Id,
  470. No = dto.No,
  471. CaseTitle = dto.Title,
  472. CaseRegister = dto.EmployeeName,
  473. CaseRegisterNo = dto.EmployeeStaffNo,
  474. CaseDate = Convert.ToDateTime(dto.CreationTime),
  475. PhoneNumber = dto.Contact,
  476. AppLicantName = dto.FromName,
  477. AppLicantAge = dto.AgeRangeCode,
  478. AppLicantId = dto.LicenceNo,
  479. CaseAccord = "",
  480. CaseContent = dto.Content,
  481. CaseProcessType = "",
  482. CaseIsPublic = "",
  483. CaseIsSecrect = "",
  484. CaseIsVisit = "",
  485. CaseLngLat = "",
  486. CaseEmotion = "",
  487. CaseAddress = "",
  488. EventDate = null,
  489. ThemeSerial = "",
  490. IsExtends = "",
  491. };
  492. //处理诉求渠道
  493. switch (dto.Channel)
  494. {
  495. case EChannel.Phone:
  496. sendCaseInfo.CaseSource = "RGDH";
  497. break;
  498. case EChannel.WxOfficial:
  499. sendCaseInfo.CaseSource = "WX";
  500. break;
  501. case EChannel.Web:
  502. sendCaseInfo.CaseSource = "WZ";
  503. break;
  504. case EChannel.App:
  505. sendCaseInfo.CaseSource = "Ap";
  506. break;
  507. case EChannel.WxMiniProgram:
  508. sendCaseInfo.CaseSource = "XCX";
  509. break;
  510. }
  511. //处理性别
  512. switch (dto.FromGender)
  513. {
  514. case EGender.Female:
  515. sendCaseInfo.AppLicantSex = "0";
  516. break;
  517. case EGender.Male:
  518. sendCaseInfo.AppLicantSex = "1";
  519. break;
  520. case EGender.Unknown:
  521. sendCaseInfo.AppLicantSex = "2";
  522. break;
  523. }
  524. //处理证件类型
  525. sendCaseInfo.CertifiCateType = dto.LicenceTypeCode switch
  526. {
  527. "10" => "10",
  528. "40" => "20",
  529. "55" => "30",
  530. "57" => "40",
  531. _ => "50",
  532. };
  533. //处理受理类型
  534. switch (dto.AcceptType)
  535. {
  536. case EAcceptType.Consult:
  537. sendCaseInfo.CaseType = "10";
  538. break;
  539. case EAcceptType.Suggest:
  540. sendCaseInfo.CaseType = "15";
  541. break;
  542. case EAcceptType.SeekHelp:
  543. sendCaseInfo.CaseType = "20";
  544. break;
  545. case EAcceptType.Praise:
  546. sendCaseInfo.CaseType = "25";
  547. break;
  548. case EAcceptType.Report:
  549. sendCaseInfo.CaseType = "30";
  550. break;
  551. case EAcceptType.Complain:
  552. sendCaseInfo.CaseType = "35";
  553. break;
  554. case EAcceptType.Other:
  555. sendCaseInfo.CaseType = "40";
  556. break;
  557. }
  558. //处理紧急程度
  559. sendCaseInfo.CaseIsUrgent = dto.EmergencyLevel switch
  560. {
  561. EEmergencyLevel.QuiteEmergency => "10",
  562. EEmergencyLevel.Emergency => "20",
  563. _ => "30",
  564. };
  565. sendCaseInfo.Id = await _sendCaseInfoRepository.AddAsync(sendCaseInfo, HttpContext.RequestAborted);
  566. await _mediator.Publish(new SendCaseInfoNotification(sendCaseInfo));
  567. }
  568. /// <summary>
  569. /// 上报补充诉求
  570. /// </summary>
  571. /// <param name="dto"></param>
  572. /// <returns></returns>
  573. [NonAction]
  574. [CapSubscribe(Hotline.Share.Mq.EventNames.SupplyCaseInfoSend)]
  575. public async Task SupplyCaseInfoSend(SupplyCaseInfoSendInfo dto)
  576. {
  577. var data = _mapper.Map<SupplyCaseInfoSend>(dto);
  578. //将上报信息写入本地库
  579. var id = await _supplyCaseInfoSendRepository.AddAsync(data);
  580. data.Id = id;
  581. //信息上报
  582. await _mediator.Publish(new SupplyCaseInfoSendNotification(data));
  583. }
  584. /// <summary>
  585. /// 服务工单撤单
  586. /// </summary>
  587. /// <param name="dto"></param>
  588. /// <returns></returns>
  589. [NonAction]
  590. [CapSubscribe(Hotline.Share.Mq.EventNames.SendRevokeCaseInfo)]
  591. public async Task SendRevokeCaseInfo(RevokeCaseInfoInfo dto)
  592. {
  593. var data = _mapper.Map<RevokeCaseInfo>(dto);
  594. data.Direction = "1";
  595. //将上报信息写入本地库
  596. var id = await _revokeCaseInfoRepository.AddAsync(data);
  597. data.Id = id;
  598. //信息上报
  599. await _mediator.Publish(new SendRevokeCaseInfoNotification(data));
  600. }
  601. /// <summary>
  602. /// 服务工单催单
  603. /// </summary>
  604. /// <param name="dto"></param>
  605. /// <returns></returns>
  606. [NonAction]
  607. [CapSubscribe(Hotline.Share.Mq.EventNames.SendRemindCaseInfo)]
  608. public async Task SendRemindCaseInfo(RemindCaseInfoInfo dto)
  609. {
  610. var data = _mapper.Map<RemindCaseInfo>(dto);
  611. data.Direction = "1";
  612. //将上报信息写入本地库
  613. var id = await _remindCaseInfoRepository.AddAsync(data);
  614. data.Id = id;
  615. //信息上报
  616. await _mediator.Publish(new SendRemindCaseInfoNotification(data));
  617. }
  618. #endregion
  619. #region 协同-第四批次
  620. #region 知识库
  621. /// <summary>
  622. /// 知识库上报
  623. /// </summary>
  624. /// <param name="dto"></param>
  625. /// <returns></returns>
  626. [NonAction]
  627. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineKnowledgeInfoSend)]
  628. public async Task GetKnowledgeInfoSend(KnowledgeInfoSendInfo dto)
  629. {
  630. var data = _mapper.Map<GetKnowledgeInfoSend>(dto);
  631. //将上报信息写入本地库
  632. var id = await _getKnowledgeInfoSendRepository.AddAsync(data);
  633. data.Id = id;
  634. //信息上报
  635. await _mediator.Publish(new GetKnowledgeInfoSendNotification(data));
  636. }
  637. /// <summary>
  638. /// 知识库变更
  639. /// </summary>
  640. /// <param name="dto"></param>
  641. /// <returns></returns>
  642. [NonAction]
  643. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineKnowledgeInfoUpdate)]
  644. public async Task GetKnowledgeInfoUpdate(GetKnowledgeInfoUpdateInfo dto)
  645. {
  646. var data = _mapper.Map<GetKnowledgeInfoUpdate>(dto);
  647. //将上报信息写入本地库
  648. var id = await _getKnowledgeInfoUpdateRepository.AddAsync(data);
  649. data.Id = id;
  650. //信息上报
  651. await _mediator.Publish(new GetKnowledgeInfoUpdateNotification(data));
  652. }
  653. /// <summary>
  654. /// 知识库下架
  655. /// </summary>
  656. /// <param name="dto"></param>
  657. /// <returns></returns>
  658. [NonAction]
  659. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineKnowledgeInfoAbandon)]
  660. public async Task GetKnowledgeInfoAbandon(GetKnowledgeInfoAbandonInfo dto)
  661. {
  662. var data = _mapper.Map<GetKnowledgeInfoAbandon>(dto);
  663. //将上报信息写入本地库
  664. var id = await _getKnowledgeInfoAbandonRepository.AddAsync(data);
  665. data.Id = id;
  666. //信息上报
  667. await _mediator.Publish(new GetKnowledgeInfoAbandonNotification(data));
  668. }
  669. #endregion
  670. /// <summary>
  671. /// 实时服务上报
  672. /// </summary>
  673. /// <param name="dto"></param>
  674. /// <returns></returns>
  675. [NonAction]
  676. [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineSendRealTimeStatus)]
  677. public async Task SendRealTimeStatus(SendRealTimeStatusInfo dto)
  678. {
  679. var data = _mapper.Map<SendRealTimeStatus>(dto);
  680. //将上报信息写入本地库
  681. var id = await _sendRealTimeStatusRepository.AddAsync(data);
  682. data.Id = id;
  683. //信息上报
  684. await _mediator.Publish(new SendRealTimeStatusNotification(data));
  685. }
  686. #endregion
  687. }
  688. }