HotlineMessageReceiveController.cs 25 KB

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