HotlineMessageReceiveController.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769
  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. //处理诉求渠道
  277. switch (dto.Channel)
  278. {
  279. case EChannel.Phone:
  280. submitCaseInfo.CaseSource = "RGDH";
  281. break;
  282. case EChannel.WxOfficial:
  283. submitCaseInfo.CaseSource = "WX";
  284. break;
  285. case EChannel.Web:
  286. submitCaseInfo.CaseSource = "WZ";
  287. break;
  288. case EChannel.App:
  289. submitCaseInfo.CaseSource = "Ap";
  290. break;
  291. case EChannel.WxMiniProgram:
  292. submitCaseInfo.CaseSource = "XCX";
  293. break;
  294. default:
  295. break;
  296. }
  297. //处理性别
  298. switch (dto.FromGender)
  299. {
  300. case EGender.Female:
  301. submitCaseInfo.AppLicantSex = "0";
  302. break;
  303. case EGender.Male:
  304. submitCaseInfo.AppLicantSex = "1";
  305. break;
  306. case EGender.Unknown:
  307. submitCaseInfo.AppLicantSex = "2";
  308. break;
  309. default:
  310. break;
  311. }
  312. //处理证件类型
  313. switch (dto.LicenceTypeCode)
  314. {
  315. case "10":
  316. submitCaseInfo.CertifiCateType = "10";
  317. break;
  318. case "40":
  319. submitCaseInfo.CertifiCateType = "20";
  320. break;
  321. case "55":
  322. submitCaseInfo.CertifiCateType = "30";
  323. break;
  324. case "57":
  325. submitCaseInfo.CertifiCateType = "40";
  326. break;
  327. default:
  328. submitCaseInfo.CertifiCateType = "50";
  329. break;
  330. }
  331. //处理受理类型
  332. switch (dto.AcceptType)
  333. {
  334. case EAcceptType.Consult:
  335. submitCaseInfo.CaseType = "10";
  336. break;
  337. case EAcceptType.Suggest:
  338. submitCaseInfo.CaseType = "15";
  339. break;
  340. case EAcceptType.SeekHelp:
  341. submitCaseInfo.CaseType = "20";
  342. break;
  343. case EAcceptType.Praise:
  344. submitCaseInfo.CaseType = "25";
  345. break;
  346. case EAcceptType.Report:
  347. submitCaseInfo.CaseType = "30";
  348. break;
  349. case EAcceptType.Complain:
  350. submitCaseInfo.CaseType = "35";
  351. break;
  352. case EAcceptType.Other:
  353. submitCaseInfo.CaseType = "40";
  354. break;
  355. default:
  356. break;
  357. }
  358. //处理紧急程度
  359. switch (dto.EmergencyLevel)
  360. {
  361. case EEmergencyLevel.QuiteEmergency:
  362. submitCaseInfo.CaseIsUrgent = "10";
  363. break;
  364. case EEmergencyLevel.Emergency:
  365. submitCaseInfo.CaseIsUrgent = "20";
  366. break;
  367. default:
  368. submitCaseInfo.CaseIsUrgent = "30";
  369. break;
  370. }
  371. submitCaseInfo.Id = await _submitCaseInfoRepository.AddAsync(submitCaseInfo, HttpContext.RequestAborted);
  372. await _mediator.Publish(new OrderCreatedNotification(submitCaseInfo));
  373. }
  374. /// <summary>
  375. /// 服务工单处理结果
  376. /// </summary>
  377. /// <param name="dto"></param>
  378. /// <returns></returns>
  379. [NonAction]
  380. //[CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderSubmitCaseResult)]
  381. public async Task SubmitCaseResult(CaseResult dto)
  382. {
  383. var data = _mapper.Map<SubmitCaseResult>(dto);
  384. //将上报信息写入本地库
  385. var id = await _submitCaseResultRepository.AddAsync(data);
  386. data.Id = id;
  387. //信息上报
  388. await _mediator.Publish(new SubmitCaseResultNotification(data));
  389. }
  390. /// <summary>
  391. /// 服务工单处理过程
  392. /// </summary>
  393. /// <param name="dto"></param>
  394. /// <returns></returns>
  395. [NonAction]
  396. //[CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderSubmitCaseProcess)]
  397. public async Task SubmitCaseProcess(CaseProcess dto)
  398. {
  399. var data = _mapper.Map<SubmitCaseProcess>(dto);
  400. //将上报信息写入本地库
  401. var id = await _submitCaseProcessRepository.AddAsync(data);
  402. data.Id = id;
  403. //信息上报
  404. await _mediator.Publish(new SubmitCaseProcessNotification(data));
  405. }
  406. /// <summary>
  407. /// 服务工单回访评价
  408. /// </summary>
  409. /// <param name="dto"></param>
  410. /// <returns></returns>
  411. [NonAction]
  412. //[CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderSubmitVisitInfo)]
  413. public async Task SubmitVisitInfo(VisitInfo dto)
  414. {
  415. var data = _mapper.Map<SubmitVisitInfo>(dto);
  416. //将上报信息写入本地库
  417. var id = await _submitVisitInfoRepository.AddAsync(data);
  418. data.Id = id;
  419. //信息上报
  420. await _mediator.Publish(new SubmitVisitInfoNotification(data));
  421. }
  422. /// <summary>
  423. /// 电话记录
  424. /// </summary>
  425. /// <param name="dto"></param>
  426. /// <returns></returns>
  427. [NonAction]
  428. //[CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderSubmitCaseRecord)]
  429. public async Task SubmitCaseRecord(CaseRecord dto)
  430. {
  431. var data = _mapper.Map<SubmitCaseRecord>(dto);
  432. //将上报信息写入本地库
  433. var id = await _submitCaseRecordRepository.AddAsync(data);
  434. data.Id = id;
  435. //信息上报
  436. await _mediator.Publish(new SubmitCaseRecordNotification(data));
  437. }
  438. /// <summary>
  439. /// 统计数据
  440. /// </summary>
  441. /// <param name="dto"></param>
  442. /// <returns></returns>
  443. [NonAction]
  444. //[CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderSubmitCaseTotal)]
  445. public async Task SubmitCaseTotal(CaseTotal dto)
  446. {
  447. var data = _mapper.Map<SubmitCaseTotal>(dto);
  448. //将上报信息写入本地库
  449. var id = await _submitCaseTotalRepository.AddAsync(data);
  450. data.Id = id;
  451. //信息上报
  452. await _mediator.Publish(new SubmitCaseTotalNotification(data));
  453. }
  454. #endregion
  455. #region 协同-第三批次
  456. /// <summary>
  457. /// 服务工单上报 --- 部分字段未赋值处理
  458. /// </summary>
  459. /// <param name="dto"></param>
  460. /// <returns></returns>
  461. [NonAction]
  462. // [CapSubscribe(Hotline.Share.Mq.EventNames.SendCaseInfo)]
  463. public async Task SendCaseInfo(OrderDto dto)
  464. {
  465. //处理数据
  466. SendCaseInfo sendCaseInfo = new SendCaseInfo
  467. {
  468. OrderID = dto.Id,
  469. No = dto.No,
  470. CaseTitle = dto.Title,
  471. CaseRegister = dto.EmployeeName,
  472. CaseRegisterNo = dto.EmployeeStaffNo,
  473. CaseDate = Convert.ToDateTime(dto.CreationTime),
  474. PhoneNumber = dto.Contact,
  475. AppLicantName = dto.FromName,
  476. AppLicantAge = dto.AgeRangeCode,
  477. AppLicantId = dto.LicenceNo,
  478. CaseAccord = "",
  479. CaseContent = dto.Content,
  480. CaseProcessType = "",
  481. CaseIsPublic = "",
  482. CaseIsSecrect = "",
  483. CaseIsVisit = "",
  484. CaseLngLat = "",
  485. CaseEmotion = "",
  486. CaseAddress = "",
  487. EventDate = null,
  488. ThemeSerial = "",
  489. IsExtends = "",
  490. };
  491. //处理诉求渠道
  492. switch (dto.Channel)
  493. {
  494. case EChannel.Phone:
  495. sendCaseInfo.CaseSource = "RGDH";
  496. break;
  497. case EChannel.WxOfficial:
  498. sendCaseInfo.CaseSource = "WX";
  499. break;
  500. case EChannel.Web:
  501. sendCaseInfo.CaseSource = "WZ";
  502. break;
  503. case EChannel.App:
  504. sendCaseInfo.CaseSource = "Ap";
  505. break;
  506. case EChannel.WxMiniProgram:
  507. sendCaseInfo.CaseSource = "XCX";
  508. break;
  509. }
  510. //处理性别
  511. switch (dto.FromGender)
  512. {
  513. case EGender.Female:
  514. sendCaseInfo.AppLicantSex = "0";
  515. break;
  516. case EGender.Male:
  517. sendCaseInfo.AppLicantSex = "1";
  518. break;
  519. case EGender.Unknown:
  520. sendCaseInfo.AppLicantSex = "2";
  521. break;
  522. }
  523. //处理证件类型
  524. sendCaseInfo.CertifiCateType = dto.LicenceTypeCode switch
  525. {
  526. "10" => "10",
  527. "40" => "20",
  528. "55" => "30",
  529. "57" => "40",
  530. _ => "50",
  531. };
  532. //处理受理类型
  533. switch (dto.AcceptType)
  534. {
  535. case EAcceptType.Consult:
  536. sendCaseInfo.CaseType = "10";
  537. break;
  538. case EAcceptType.Suggest:
  539. sendCaseInfo.CaseType = "15";
  540. break;
  541. case EAcceptType.SeekHelp:
  542. sendCaseInfo.CaseType = "20";
  543. break;
  544. case EAcceptType.Praise:
  545. sendCaseInfo.CaseType = "25";
  546. break;
  547. case EAcceptType.Report:
  548. sendCaseInfo.CaseType = "30";
  549. break;
  550. case EAcceptType.Complain:
  551. sendCaseInfo.CaseType = "35";
  552. break;
  553. case EAcceptType.Other:
  554. sendCaseInfo.CaseType = "40";
  555. break;
  556. }
  557. //处理紧急程度
  558. sendCaseInfo.CaseIsUrgent = dto.EmergencyLevel switch
  559. {
  560. EEmergencyLevel.QuiteEmergency => "10",
  561. EEmergencyLevel.Emergency => "20",
  562. _ => "30",
  563. };
  564. sendCaseInfo.Id = await _sendCaseInfoRepository.AddAsync(sendCaseInfo, HttpContext.RequestAborted);
  565. await _mediator.Publish(new SendCaseInfoNotification(sendCaseInfo));
  566. }
  567. /// <summary>
  568. /// 上报补充诉求
  569. /// </summary>
  570. /// <param name="dto"></param>
  571. /// <returns></returns>
  572. [NonAction]
  573. //[CapSubscribe(Hotline.Share.Mq.EventNames.SupplyCaseInfoSend)]
  574. public async Task SupplyCaseInfoSend(SupplyCaseInfoSendInfo dto)
  575. {
  576. var data = _mapper.Map<SupplyCaseInfoSend>(dto);
  577. //将上报信息写入本地库
  578. var id = await _supplyCaseInfoSendRepository.AddAsync(data);
  579. data.Id = id;
  580. //信息上报
  581. await _mediator.Publish(new SupplyCaseInfoSendNotification(data));
  582. }
  583. /// <summary>
  584. /// 服务工单撤单
  585. /// </summary>
  586. /// <param name="dto"></param>
  587. /// <returns></returns>
  588. [NonAction]
  589. //[CapSubscribe(Hotline.Share.Mq.EventNames.SendRevokeCaseInfo)]
  590. public async Task SendRevokeCaseInfo(RevokeCaseInfoInfo dto)
  591. {
  592. var data = _mapper.Map<RevokeCaseInfo>(dto);
  593. data.Direction = "1";
  594. //将上报信息写入本地库
  595. var id = await _revokeCaseInfoRepository.AddAsync(data);
  596. data.Id = id;
  597. //信息上报
  598. await _mediator.Publish(new SendRevokeCaseInfoNotification(data));
  599. }
  600. /// <summary>
  601. /// 服务工单催单
  602. /// </summary>
  603. /// <param name="dto"></param>
  604. /// <returns></returns>
  605. [NonAction]
  606. //[CapSubscribe(Hotline.Share.Mq.EventNames.SendRemindCaseInfo)]
  607. public async Task SendRemindCaseInfo(RemindCaseInfoInfo dto)
  608. {
  609. var data = _mapper.Map<RemindCaseInfo>(dto);
  610. data.Direction = "1";
  611. //将上报信息写入本地库
  612. var id = await _remindCaseInfoRepository.AddAsync(data);
  613. data.Id = id;
  614. //信息上报
  615. await _mediator.Publish(new SendRemindCaseInfoNotification(data));
  616. }
  617. #endregion
  618. #region 协同-第四批次
  619. #region 知识库
  620. /// <summary>
  621. /// 知识库上报
  622. /// </summary>
  623. /// <param name="dto"></param>
  624. /// <returns></returns>
  625. [NonAction]
  626. //[CapSubscribe(Hotline.Share.Mq.EventNames.HotlineKnowledgeInfoSend)]
  627. public async Task GetKnowledgeInfoSend(KnowledgeInfoSendInfo dto)
  628. {
  629. var data = _mapper.Map<GetKnowledgeInfoSend>(dto);
  630. //将上报信息写入本地库
  631. var id = await _getKnowledgeInfoSendRepository.AddAsync(data);
  632. data.Id = id;
  633. //信息上报
  634. await _mediator.Publish(new GetKnowledgeInfoSendNotification(data));
  635. }
  636. /// <summary>
  637. /// 知识库变更
  638. /// </summary>
  639. /// <param name="dto"></param>
  640. /// <returns></returns>
  641. [NonAction]
  642. //[CapSubscribe(Hotline.Share.Mq.EventNames.HotlineKnowledgeInfoUpdate)]
  643. public async Task GetKnowledgeInfoUpdate(GetKnowledgeInfoUpdateInfo dto)
  644. {
  645. var data = _mapper.Map<GetKnowledgeInfoUpdate>(dto);
  646. //将上报信息写入本地库
  647. var id = await _getKnowledgeInfoUpdateRepository.AddAsync(data);
  648. data.Id = id;
  649. //信息上报
  650. await _mediator.Publish(new GetKnowledgeInfoUpdateNotification(data));
  651. }
  652. /// <summary>
  653. /// 知识库下架
  654. /// </summary>
  655. /// <param name="dto"></param>
  656. /// <returns></returns>
  657. [NonAction]
  658. //[CapSubscribe(Hotline.Share.Mq.EventNames.HotlineKnowledgeInfoAbandon)]
  659. public async Task GetKnowledgeInfoAbandon(GetKnowledgeInfoAbandonInfo dto)
  660. {
  661. var data = _mapper.Map<GetKnowledgeInfoAbandon>(dto);
  662. //将上报信息写入本地库
  663. var id = await _getKnowledgeInfoAbandonRepository.AddAsync(data);
  664. data.Id = id;
  665. //信息上报
  666. await _mediator.Publish(new GetKnowledgeInfoAbandonNotification(data));
  667. }
  668. #endregion
  669. /// <summary>
  670. /// 实时服务上报
  671. /// </summary>
  672. /// <param name="dto"></param>
  673. /// <returns></returns>
  674. [NonAction]
  675. //[CapSubscribe(Hotline.Share.Mq.EventNames.HotlineSendRealTimeStatus)]
  676. public async Task SendRealTimeStatus(SendRealTimeStatusInfo dto)
  677. {
  678. var data = _mapper.Map<SendRealTimeStatus>(dto);
  679. //将上报信息写入本地库
  680. var id = await _sendRealTimeStatusRepository.AddAsync(data);
  681. data.Id = id;
  682. //信息上报
  683. await _mediator.Publish(new SendRealTimeStatusNotification(data));
  684. }
  685. #endregion
  686. }
  687. }