ProvinceController.cs 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872
  1. using DotNetCore.CAP;
  2. using Fw.Utility.UnifyResponse;
  3. using Hotline.DataSharing.Province.Extend;
  4. using Hotline.DataSharing.Province.Notifications;
  5. using Hotline.DataSharing.Province.XieTong.Receive;
  6. using Hotline.DataSharing.Province.XieTong.Send;
  7. using Hotline.Orders.Notifications;
  8. using Hotline.Share.Dtos.DataSharing;
  9. using Hotline.Share.Dtos.DataSharing.Province;
  10. using Hotline.Share.Dtos.DataSharing.Province.XieTong.Receive;
  11. using Hotline.Share.Dtos.Order;
  12. using Hotline.Share.Enums.Order;
  13. using MapsterMapper;
  14. using MediatR;
  15. using Microsoft.AspNetCore.Authorization;
  16. using Microsoft.AspNetCore.Mvc;
  17. using XF.Domain.Filters;
  18. using XF.Domain.Repository;
  19. namespace Hotline.Api.Controllers.DataSharing
  20. {
  21. /// <summary>
  22. /// 下行,省平台调用
  23. /// </summary>
  24. public class ProvinceController : BaseController
  25. {
  26. #region 注入
  27. private readonly IMapper _mapper;
  28. private readonly ICapPublisher _capPublisher;
  29. private readonly IMediator _mediator;
  30. private readonly IRepository<DsReceiveCaseInfo> _receiveCaseInfoRepository;
  31. private readonly IRepository<DsGetCaseBackResult> _getCaseBackResultRepository;
  32. private readonly IRepository<DsDelayCaseResult> _delayCaseResultRepository;
  33. private readonly IRepository<DsSupplyCaseInfo> _supplyCaseInfoRepository;
  34. private readonly IRepository<DsRevokeCaseInfo> _revokeCaseInfoRepository;
  35. private readonly IRepository<DsRemindCaseInfo> _remindCaseInfoRepository;
  36. private readonly IRepository<DsSendWarnInfo> _sendWarnInfoRepository;
  37. private readonly IRepository<DsSendSuperviseInfo> _sendSuperviseInfoRepository;
  38. private readonly IRepository<DsScreenCaseResultReceive> _screenCaseResultReceiveRepository;
  39. private readonly IRepository<DsSendCaseEvlResult> _sendCaseEvlResultRepository;
  40. private readonly IRepository<DsGetCaseReultSend> _getCaseReultSendRepository;
  41. private readonly IRepository<DsGetVisitInfoSend> _getVisitInfoSendRepository;
  42. private readonly IRepository<DsFormEnvironMent> _formEnvironMentRepository;
  43. private readonly IRepository<DsFormTraffic> _formTrafficRepository;
  44. private readonly IRepository<DsFormExpressWay> _formExpressWayRepository;
  45. private readonly IRepository<DsFormMedical> _formMedicalRepository;
  46. private readonly IRepository<DsFormNetWorktec> _formNetWorktecRepository;
  47. private readonly IRepository<DsFormPost> _formPostRepository;
  48. private readonly IRepository<DsFormReturnexChange> _formReturnexChangeRepository;
  49. private readonly IRepository<DsFormShamPub> _formShamPubRepository;
  50. private readonly IRepository<DsFormTaxationComplaint> _formTaxationComplaintRepository;
  51. private readonly IRepository<DsFormTaxationConsulting> _formTaxationConsultingRepository;
  52. private readonly IRepository<DsReceiveCaseExtends> _receiveCaseExtendsRepository;
  53. private readonly IRepository<DsGetCaseMaterialInfo> _getCaseMaterialInfoRepository;
  54. private readonly IRepository<DsSendCaseInfo> _sendCaseInfoRepository;
  55. private readonly IRepository<DsGetCaseBackApply> _getCaseBackApplyRepository;
  56. /// <summary>
  57. ///
  58. /// </summary>
  59. /// <param name="mapper"></param>
  60. /// <param name="capPublisher"></param>
  61. /// <param name="receiveCaseInfoRepository"></param>
  62. /// <param name="getCaseBackResultRepository"></param>
  63. /// <param name="delayCaseResultRepository"></param>
  64. /// <param name="supplyCaseInfoRepository"></param>
  65. /// <param name="revokeCaseInfoRepository"></param>
  66. /// <param name="remindCaseInfoRepository"></param>
  67. /// <param name="sendWarnInfoRepository"></param>
  68. /// <param name="sendSuperviseInfoRepository"></param>
  69. /// <param name="screenCaseResultReceiveRepository"></param>
  70. /// <param name="sendCaseEvlResultRepository"></param>
  71. /// <param name="getCaseReultSendRepository"></param>
  72. /// <param name="getVisitInfoSendRepository"></param>
  73. /// <param name="formEnvironMentRepository"></param>
  74. /// <param name="formTrafficRepository"></param>
  75. /// <param name="formExpressWayRepository"></param>
  76. /// <param name="formMedicalRepository"></param>
  77. /// <param name="formNetWorktecRepository"></param>
  78. /// <param name="formPostRepository"></param>
  79. /// <param name="formReturnexChangeRepository"></param>
  80. /// <param name="formShamPubRepository"></param>
  81. /// <param name="formTaxationComplaintRepository"></param>
  82. /// <param name="formTaxationConsultingRepository"></param>
  83. /// <param name="receiveCaseExtendsRepository"></param>
  84. /// <param name="getCaseMaterialInfoRepository"></param>
  85. /// <param name="sendCaseInfoRepository"></param>
  86. /// <param name="getCaseBackApplyRepository"></param>
  87. public ProvinceController(IMapper mapper,
  88. ICapPublisher capPublisher,
  89. IMediator mediator,
  90. IRepository<DsReceiveCaseInfo> receiveCaseInfoRepository,
  91. IRepository<DsGetCaseBackResult> getCaseBackResultRepository,
  92. IRepository<DsDelayCaseResult> delayCaseResultRepository,
  93. IRepository<DsSupplyCaseInfo> supplyCaseInfoRepository,
  94. IRepository<DsRevokeCaseInfo> revokeCaseInfoRepository,
  95. IRepository<DsRemindCaseInfo> remindCaseInfoRepository,
  96. IRepository<DsSendWarnInfo> sendWarnInfoRepository,
  97. IRepository<DsSendSuperviseInfo> sendSuperviseInfoRepository,
  98. IRepository<DsScreenCaseResultReceive> screenCaseResultReceiveRepository,
  99. IRepository<DsSendCaseEvlResult> sendCaseEvlResultRepository,
  100. IRepository<DsGetCaseReultSend> getCaseReultSendRepository,
  101. IRepository<DsGetVisitInfoSend> getVisitInfoSendRepository,
  102. IRepository<DsFormEnvironMent> formEnvironMentRepository,
  103. IRepository<DsFormTraffic> formTrafficRepository,
  104. IRepository<DsFormExpressWay> formExpressWayRepository,
  105. IRepository<DsFormMedical> formMedicalRepository,
  106. IRepository<DsFormNetWorktec> formNetWorktecRepository,
  107. IRepository<DsFormPost> formPostRepository,
  108. IRepository<DsFormReturnexChange> formReturnexChangeRepository,
  109. IRepository<DsFormShamPub> formShamPubRepository,
  110. IRepository<DsFormTaxationComplaint> formTaxationComplaintRepository,
  111. IRepository<DsFormTaxationConsulting> formTaxationConsultingRepository,
  112. IRepository<DsReceiveCaseExtends> receiveCaseExtendsRepository,
  113. IRepository<DsGetCaseMaterialInfo> getCaseMaterialInfoRepository,
  114. IRepository<DsSendCaseInfo> sendCaseInfoRepository,
  115. IRepository<DsGetCaseBackApply> getCaseBackApplyRepository)
  116. {
  117. _mapper = mapper;
  118. _capPublisher = capPublisher;
  119. _mediator = mediator;
  120. _receiveCaseInfoRepository = receiveCaseInfoRepository;
  121. _getCaseBackResultRepository = getCaseBackResultRepository;
  122. _delayCaseResultRepository = delayCaseResultRepository;
  123. _supplyCaseInfoRepository = supplyCaseInfoRepository;
  124. _revokeCaseInfoRepository = revokeCaseInfoRepository;
  125. _remindCaseInfoRepository = remindCaseInfoRepository;
  126. _sendWarnInfoRepository = sendWarnInfoRepository;
  127. _sendSuperviseInfoRepository = sendSuperviseInfoRepository;
  128. _screenCaseResultReceiveRepository = screenCaseResultReceiveRepository;
  129. _sendCaseEvlResultRepository = sendCaseEvlResultRepository;
  130. _getCaseReultSendRepository = getCaseReultSendRepository;
  131. _getVisitInfoSendRepository = getVisitInfoSendRepository;
  132. _formEnvironMentRepository = formEnvironMentRepository;
  133. _formTrafficRepository = formTrafficRepository;
  134. _formExpressWayRepository = formExpressWayRepository;
  135. _formMedicalRepository = formMedicalRepository;
  136. _formNetWorktecRepository = formNetWorktecRepository;
  137. _formPostRepository = formPostRepository;
  138. _formReturnexChangeRepository = formReturnexChangeRepository;
  139. _formShamPubRepository = formShamPubRepository;
  140. _formTaxationComplaintRepository = formTaxationComplaintRepository;
  141. _formTaxationConsultingRepository = formTaxationConsultingRepository;
  142. _receiveCaseExtendsRepository = receiveCaseExtendsRepository;
  143. _getCaseMaterialInfoRepository = getCaseMaterialInfoRepository;
  144. _sendCaseInfoRepository = sendCaseInfoRepository;
  145. _getCaseBackApplyRepository = getCaseBackApplyRepository;
  146. }
  147. #endregion
  148. /// <summary>
  149. /// 服务工单交办接口--已完成-----1
  150. /// </summary>
  151. /// <param name="receiveCaseInfo"></param>
  152. /// <returns></returns>
  153. [HttpPost("rest/receive_case_info")]
  154. [AllowAnonymous]
  155. public async Task<OpenResponse> ReceiveCaseInfo([FromBody] ReceiveCaseInfoRequest receiveCaseInfo)
  156. {
  157. // 验证
  158. if (receiveCaseInfo is null || receiveCaseInfo.paras is null)
  159. {
  160. return OpenResponse.Ok(Reponse.Failed("数据解析失败"));
  161. }
  162. //验证接收的数据是否正确
  163. string strResult = receiveCaseInfo.paras.Validate();
  164. if (!string.IsNullOrEmpty(strResult))
  165. return OpenResponse.Ok(Reponse.Failed(strResult));
  166. //转换数据
  167. var dto = _mapper.Map<DsReceiveCaseInfo>(receiveCaseInfo.paras);
  168. //添加数据
  169. var id = await _receiveCaseInfoRepository.AddAsync(dto, HttpContext.RequestAborted);
  170. //处理组装数据,推送数据
  171. var data = _mapper.Map<AddOrderDto>(dto);
  172. if (dto.TrowGuid != "【政民互动直派】")
  173. data.IsProvince = true;
  174. //处理性别
  175. switch (dto.AppLicantSex)
  176. {
  177. case "0":
  178. data.FromGender = EGender.Female;
  179. break;
  180. case "1":
  181. data.FromGender = EGender.Male;
  182. break;
  183. case "2":
  184. data.FromGender = EGender.Unknown;
  185. break;
  186. default:
  187. data.FromGender = EGender.Unknown;
  188. break;
  189. }
  190. //处理证件类型
  191. switch (dto.CertifiCateType)
  192. {
  193. case "10":
  194. data.LicenceTypeCode = "10";
  195. break;
  196. case "20":
  197. data.LicenceTypeCode = "40";
  198. break;
  199. case "30":
  200. data.LicenceTypeCode = "55";
  201. break;
  202. case "40":
  203. data.LicenceTypeCode = "57";
  204. break;
  205. }
  206. data.AcceptTypeCode = dto.CaseType;
  207. //处理紧急程度
  208. switch (dto.CaseIsUrgent)
  209. {
  210. case "10":
  211. data.EmergencyLevel = EEmergencyLevel.QuiteEmergency;
  212. break;
  213. case "20":
  214. data.EmergencyLevel = EEmergencyLevel.Emergency;
  215. break;
  216. case "30":
  217. data.EmergencyLevel = EEmergencyLevel.Normal;
  218. break;
  219. }
  220. //经纬度处理
  221. var lngLat = dto.CaseLngLat.Split(',');
  222. if (lngLat != null && lngLat.Length == 2)
  223. {
  224. data.Longitude = Convert.ToDouble(lngLat[0]);
  225. data.Latitude = Convert.ToDouble(lngLat[1]);
  226. }
  227. if (!string.IsNullOrEmpty(id))
  228. {
  229. //调用工单创建接口
  230. var result = await _mediator.Send(new ReceiveOrderNotify { AddOrderDto = data }, HttpContext.RequestAborted);
  231. if (result != null && !string.IsNullOrEmpty(result.Id))
  232. {
  233. dto.Id = id;
  234. dto.OrderId = result.Id;
  235. await _receiveCaseInfoRepository.UpdateAsync(dto, HttpContext.RequestAborted);
  236. return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
  237. }
  238. else
  239. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  240. }
  241. else
  242. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  243. }
  244. /// <summary>
  245. /// 服务工单退回反馈接口--已完成-----1
  246. /// </summary>
  247. /// <param name="receiveBackResult">退回反馈</param>
  248. /// <returns></returns>
  249. [HttpPost("get_case_back_result")]
  250. [AllowAnonymous]
  251. public async Task<OpenResponse> GetCaseBackResult([FromBody] GetCaseBackResultRequest receiveBackResult)
  252. {
  253. // 验证
  254. if (receiveBackResult is null || receiveBackResult.paras is null)
  255. return OpenResponse.Ok(Reponse.Failed("数据解析失败"));
  256. //验证接收的数据是否正确
  257. string strResult = receiveBackResult.paras.Validate();
  258. if (!string.IsNullOrEmpty(strResult))
  259. OpenResponse.Ok(Reponse.Failed(strResult));
  260. //转换数据
  261. var dto = _mapper.Map<DsGetCaseBackResult>(receiveBackResult.paras);
  262. var data = await _getCaseBackApplyRepository.GetAsync(p => p.CaseSerial == dto.CaseSerial);
  263. if (data == null)
  264. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  265. //添加数据
  266. var id = await _getCaseBackResultRepository.AddAsync(dto, HttpContext.RequestAborted);
  267. if (!string.IsNullOrEmpty(id))
  268. {
  269. await _mediator.Send(new OrderSendBackResultNotify
  270. {
  271. OrderSendBackResultDto = new OrderSendBackResultDto()
  272. {
  273. Id = data.OrderSendBackId,
  274. Reason = dto.BackReason,
  275. Result = dto.Result == true ? 1 : 0
  276. }
  277. });
  278. return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
  279. }
  280. else
  281. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  282. }
  283. /// <summary>
  284. /// 督办工单派发接口--已完成-----1
  285. /// </summary>
  286. /// <param name="receiveSendSuperviseInfo">督办工单对象</param>
  287. /// <returns></returns>
  288. [HttpPost("send_supervise_info")]
  289. [AllowAnonymous]
  290. public async Task<OpenResponse> SendSuperviseInfo([FromBody] SendSuperviseInfoRequest receiveSendSuperviseInfo)
  291. {
  292. // 验证
  293. if (receiveSendSuperviseInfo is null || receiveSendSuperviseInfo.paras is null)
  294. return OpenResponse.Ok(Reponse.Failed("数据解析失败"));
  295. string strResult = receiveSendSuperviseInfo.paras.Validate();
  296. if (!string.IsNullOrEmpty(strResult))
  297. return OpenResponse.Ok(Reponse.Failed(strResult));
  298. //转换数据
  299. var dto = _mapper.Map<DsSendSuperviseInfo>(receiveSendSuperviseInfo.paras);
  300. //添加数据
  301. var id = await _sendSuperviseInfoRepository.AddAsync(dto, HttpContext.RequestAborted);
  302. if (!string.IsNullOrEmpty(id))
  303. {
  304. //向业务系统推送消息
  305. await _mediator.Send(new ProvinceOrderSuperviseNotify { ProvinceOrderSuperviseDto = _mapper.Map<ProvinceOrderSuperviseDto>(dto) });
  306. return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
  307. }
  308. else
  309. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  310. }
  311. /// <summary>
  312. /// 服务工单催单接口--已完成-----1
  313. /// </summary>
  314. /// <param name="receiveRemindCaseInfo">催单对象</param>
  315. /// <returns></returns>
  316. [HttpPost("remind_case_info")]
  317. [AllowAnonymous]
  318. public async Task<OpenResponse> RemindCaseInfo([FromBody] RemindCaseInfoRequest receiveRemindCaseInfo)
  319. {
  320. // 验证
  321. if (receiveRemindCaseInfo is null || receiveRemindCaseInfo.paras is null)
  322. return OpenResponse.Ok(Reponse.Failed("数据解析失败"));
  323. string strResult = receiveRemindCaseInfo.paras.Validate();
  324. if (!string.IsNullOrEmpty(strResult))
  325. return OpenResponse.Ok(Reponse.Failed(strResult));
  326. //转换数据
  327. var dto = _mapper.Map<DsRemindCaseInfo>(receiveRemindCaseInfo.paras);
  328. dto.Direction = "2";
  329. //添加数据
  330. var id = await _remindCaseInfoRepository.AddAsync(dto, HttpContext.RequestAborted);
  331. if (!string.IsNullOrEmpty(id))
  332. {
  333. //向业务系统推送消息
  334. await _mediator.Send(new ProvinceOrderUrgeNotify { ProvinceOrderUrgeDto = _mapper.Map<ProvinceOrderUrgeDto>(dto) });
  335. return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
  336. }
  337. else
  338. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  339. }
  340. /// <summary>
  341. /// 服务工单甄别结果接口--已完成-----1
  342. /// </summary>
  343. /// <param name="receiveScreenCaseResultReceive">服务工单甄别结果对象</param>
  344. /// <returns></returns>
  345. [HttpPost("screen_case_result_receive")]
  346. [AllowAnonymous]
  347. public async Task<OpenResponse> ScreenCaseResultReceive([FromBody] ScreenCaseResultReceiveRequest receiveScreenCaseResultReceive)
  348. {
  349. // 验证
  350. if (receiveScreenCaseResultReceive is null || receiveScreenCaseResultReceive.paras is null)
  351. return OpenResponse.Ok(Reponse.Failed("数据解析失败"));
  352. string strResult = receiveScreenCaseResultReceive.paras.Validate();
  353. if (!string.IsNullOrEmpty(strResult))
  354. return OpenResponse.Ok(Reponse.Failed(strResult));
  355. //转换数据
  356. var dto = _mapper.Map<DsScreenCaseResultReceive>(receiveScreenCaseResultReceive.paras);
  357. //添加数据
  358. var id = await _screenCaseResultReceiveRepository.AddAsync(dto, HttpContext.RequestAborted);
  359. if (!string.IsNullOrEmpty(id))
  360. {
  361. await _mediator.Send(new ScreenProvinceResultNotify { ProvinceScreenResult = _mapper.Map<ProvinceScreenResult>(dto) });
  362. return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
  363. }
  364. else
  365. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  366. }
  367. /// <summary>
  368. /// 服务工单延时审核结果接口---已完成-----1
  369. /// </summary>
  370. /// <param name="receiveDelayCaseResult">延时审核结果对象</param>
  371. /// <returns></returns>
  372. [HttpPost("delay_case_result_receive")]
  373. [AllowAnonymous]
  374. public async Task<OpenResponse> DelayCaseResultReceive([FromBody] DelayCaseResultRequest receiveDelayCaseResult)
  375. {
  376. // 验证
  377. if (receiveDelayCaseResult is null || receiveDelayCaseResult.paras is null)
  378. return OpenResponse.Ok(Reponse.Failed("数据解析失败"));
  379. string strResult = receiveDelayCaseResult.paras.Validate();
  380. if (!string.IsNullOrEmpty(strResult))
  381. return OpenResponse.Ok(Reponse.Failed(strResult));
  382. //转换数据
  383. var dto = _mapper.Map<DsDelayCaseResult>(receiveDelayCaseResult.paras);
  384. //添加数据
  385. var id = await _delayCaseResultRepository.AddAsync(dto, HttpContext.RequestAborted);
  386. if (!string.IsNullOrEmpty(id))
  387. {
  388. //向业务系统推送消息
  389. await _mediator.Send(new DelayProvinceResultNotify { IsPass = dto.AuditResult == "1", Opinion = dto.AuditOpinion, No = dto.CaseSerial }, HttpContext.RequestAborted);
  390. return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
  391. }
  392. else
  393. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  394. }
  395. /// <summary>
  396. /// 服务工单交办补充诉求接口
  397. /// </summary>
  398. /// <param name="receiveSupplyCaseInfo">交办补充诉求对象</param>
  399. /// <returns></returns>
  400. [HttpPost("supply_case_info_receive")]
  401. [AllowAnonymous]
  402. public async Task<OpenResponse> SupplyCaseInfoReceive([FromBody] SupplyCaseInfoRequest receiveSupplyCaseInfo)
  403. {
  404. // 验证
  405. if (receiveSupplyCaseInfo is null || receiveSupplyCaseInfo.paras is null)
  406. return OpenResponse.Ok(Reponse.Failed("数据解析失败"));
  407. string strResult = receiveSupplyCaseInfo.paras.Validate();
  408. if (!string.IsNullOrEmpty(strResult))
  409. return OpenResponse.Ok(Reponse.Failed(strResult));
  410. //转换数据
  411. var dto = _mapper.Map<DsSupplyCaseInfo>(receiveSupplyCaseInfo.paras);
  412. //添加数据
  413. var id = await _supplyCaseInfoRepository.AddAsync(dto, HttpContext.RequestAborted);
  414. if (!string.IsNullOrEmpty(id))
  415. {
  416. //向业务系统推送消息
  417. //await _capPublisher.PublishAsync(Sharing.Share.Mq.EventNames.SharingOrderSupplements, _mapper.Map<SupplementsDto>(dto), cancellationToken: HttpContext.RequestAborted);
  418. return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
  419. }
  420. else
  421. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  422. }
  423. /// <summary>
  424. /// 服务工单撤单接口
  425. /// </summary>
  426. /// <param name="receiveRevokeCaseInfo">撤单对象</param>
  427. /// <returns></returns>
  428. [HttpPost("revoke_case_info")]
  429. [AllowAnonymous]
  430. public async Task<OpenResponse> RevokeCaseInfo([FromBody] RevokeCaseInfoRequest receiveRevokeCaseInfo)
  431. {
  432. // 验证
  433. if (receiveRevokeCaseInfo is null || receiveRevokeCaseInfo.paras is null)
  434. return OpenResponse.Ok(Reponse.Failed("数据解析失败"));
  435. string strResult = receiveRevokeCaseInfo.paras.Validate();
  436. if (!string.IsNullOrEmpty(strResult))
  437. return OpenResponse.Ok(Reponse.Failed(strResult));
  438. //转换数据
  439. var dto = _mapper.Map<DsRevokeCaseInfo>(receiveRevokeCaseInfo.paras);
  440. dto.Direction = "2";
  441. //添加数据
  442. var id = await _revokeCaseInfoRepository.AddAsync(dto, HttpContext.RequestAborted);
  443. if (!string.IsNullOrEmpty(id))
  444. {
  445. //向业务系统推送消息
  446. // await _capPublisher.PublishAsync(Sharing.Share.Mq.EventNames.SharingOrderRevoke, _mapper.Map<RevokeDto>(dto), cancellationToken: HttpContext.RequestAborted);
  447. return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
  448. }
  449. else
  450. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  451. }
  452. /// <summary>
  453. /// 服务工单预警接口
  454. /// </summary>
  455. /// <param name="receiveSendWarnInfo">预警对象</param>
  456. /// <returns></returns>
  457. [HttpPost("send_warn_info")]
  458. [AllowAnonymous]
  459. public async Task<OpenResponse> SendWarnInfo([FromBody] SendWarnInfoRequest receiveSendWarnInfo)
  460. {
  461. // 验证
  462. if (receiveSendWarnInfo is null || receiveSendWarnInfo.paras is null)
  463. return OpenResponse.Ok(Reponse.Failed("数据解析失败"));
  464. string strResult = receiveSendWarnInfo.paras.Validate();
  465. if (!string.IsNullOrEmpty(strResult))
  466. return OpenResponse.Ok(Reponse.Failed(strResult));
  467. //转换数据
  468. var dto = _mapper.Map<DsSendWarnInfo>(receiveSendWarnInfo.paras);
  469. //添加数据
  470. var id = await _sendWarnInfoRepository.AddAsync(dto, HttpContext.RequestAborted);
  471. if (!string.IsNullOrEmpty(id))
  472. {
  473. //向业务系统推送消息
  474. //await _capPublisher.PublishAsync(Sharing.Share.Mq.EventNames.SharingOrderWarning, _mapper.Map<WarningDto>(dto), cancellationToken: HttpContext.RequestAborted);
  475. return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
  476. }
  477. else
  478. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  479. }
  480. /// <summary>
  481. /// 交办工单满意度接收接口
  482. /// </summary>
  483. /// <param name="receiveSendCaseEvlResult">交办工单满意度对象</param>
  484. /// <returns></returns>
  485. [HttpPost("send_case_evl_result")]
  486. [AllowAnonymous]
  487. public async Task<OpenResponse> SendCaseEvlResult([FromBody] SendCaseEvlResultRequest receiveSendCaseEvlResult)
  488. {
  489. // 验证
  490. if (receiveSendCaseEvlResult is null || receiveSendCaseEvlResult.paras is null)
  491. return OpenResponse.Ok(Reponse.Failed("数据解析失败"));
  492. string strResult = receiveSendCaseEvlResult.paras.Validate();
  493. if (!string.IsNullOrEmpty(strResult))
  494. return OpenResponse.Ok(Reponse.Failed(strResult));
  495. //转换数据
  496. var dto = _mapper.Map<DsSendCaseEvlResult>(receiveSendCaseEvlResult.paras);
  497. //添加数据
  498. var id = await _sendCaseEvlResultRepository.AddAsync(dto, HttpContext.RequestAborted);
  499. if (!string.IsNullOrEmpty(id))
  500. {
  501. //向业务系统推送消息
  502. //await _capPublisher.PublishAsync(Sharing.Share.Mq.EventNames.SharingOrderEvlResult, _mapper.Map<EvlResultDto>(dto), cancellationToken: HttpContext.RequestAborted);
  503. return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
  504. }
  505. else
  506. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  507. }
  508. /// <summary>
  509. /// 上报工单处理结果/退回接口
  510. /// </summary>
  511. /// <param name="receiveGetCaseReultSend">上报工单处理结果/退回对象</param>
  512. /// <returns></returns>
  513. [HttpPost]
  514. [Route("get_case_result_send")]
  515. public async Task<OpenResponse> GetCaseReultSend([FromBody] GetCaseReultSendRequest receiveGetCaseReultSend)
  516. {
  517. // 验证
  518. if (receiveGetCaseReultSend is null || receiveGetCaseReultSend.paras is null)
  519. return OpenResponse.Ok(Reponse.Failed("数据解析失败"));
  520. string strResult = receiveGetCaseReultSend.paras.Validate();
  521. if (!string.IsNullOrEmpty(strResult))
  522. return OpenResponse.Ok(Reponse.Failed(strResult));
  523. //转换数据
  524. var dto = _mapper.Map<DsGetCaseReultSend>(receiveGetCaseReultSend.paras);
  525. //添加数据
  526. var id = await _getCaseReultSendRepository.AddAsync(dto, HttpContext.RequestAborted);
  527. if (!string.IsNullOrEmpty(id))
  528. {
  529. //查询此工单
  530. var tempData = await _sendCaseInfoRepository.GetAsync(p => p.CaseSerial == dto.CaseSerial, HttpContext.RequestAborted);
  531. if (tempData != null)
  532. {
  533. //将工单的办理状态改为办理完成,终止拉取办理信息
  534. tempData.IsEnd = true;
  535. await _sendCaseInfoRepository.UpdateAsync(tempData, HttpContext.RequestAborted);
  536. }
  537. //向业务系统推送消息
  538. //await _capPublisher.PublishAsync(Sharing.Share.Mq.EventNames.SharingOrderReultSend, _mapper.Map<ReultSendDto>(dto), cancellationToken: HttpContext.RequestAborted);
  539. return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
  540. }
  541. else
  542. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  543. }
  544. /// <summary>
  545. /// 上报工单评价接口
  546. /// </summary>
  547. /// <param name="receiveGetVisitInfoSend">上报工单评价对象</param>
  548. /// <returns></returns>
  549. [HttpPost]
  550. [Route("get_visit_info_send")]
  551. [AllowAnonymous]
  552. public async Task<OpenResponse> GetVisitInfoSend([FromBody] GetVisitInfoSendRequest receiveGetVisitInfoSend)
  553. {
  554. // 验证
  555. if (receiveGetVisitInfoSend is null || receiveGetVisitInfoSend.paras is null)
  556. return OpenResponse.Ok(Reponse.Failed("数据解析失败"));
  557. string strResult = receiveGetVisitInfoSend.paras.Validate();
  558. if (!string.IsNullOrEmpty(strResult))
  559. return OpenResponse.Ok(Reponse.Failed(strResult));
  560. //转换数据
  561. var dto = _mapper.Map<DsGetVisitInfoSend>(receiveGetVisitInfoSend.paras);
  562. //添加数据
  563. var id = await _getVisitInfoSendRepository.AddAsync(dto, HttpContext.RequestAborted);
  564. if (!string.IsNullOrEmpty(id))
  565. {
  566. //向业务系统推送消息
  567. // await _capPublisher.PublishAsync(Sharing.Share.Mq.EventNames.SharingOrderVisitInfo, _mapper.Map<VisitInfoDto>(dto), cancellationToken: HttpContext.RequestAborted);
  568. return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
  569. }
  570. else
  571. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  572. }
  573. /// <summary>
  574. /// 服务工单拓展信息交办---已完成-----1
  575. /// </summary>
  576. /// <param name="receiveCaseExtendsRequest">服务工单拓展信息交办</param>
  577. /// <returns></returns>
  578. [HttpPost]
  579. [Route("rest/receive_case_extends")]
  580. [AllowAnonymous]
  581. public async Task<OpenResponse> ReceiveCaseExtends([FromBody] ReceiveCaseExtendsRequest receiveCaseExtendsRequest)
  582. {
  583. // 验证
  584. if (receiveCaseExtendsRequest is null || receiveCaseExtendsRequest.paras is null)
  585. return OpenResponse.Ok(Reponse.Failed("数据解析失败"));
  586. string strResult = receiveCaseExtendsRequest.paras.Validate();
  587. if (!string.IsNullOrEmpty(strResult))
  588. return OpenResponse.Ok(Reponse.Failed(strResult));
  589. var data = receiveCaseExtendsRequest.paras;
  590. //扩展主表信息
  591. DsReceiveCaseExtends receiveCaseExtends = new()
  592. {
  593. CaseSerial = data.CaseSerial,
  594. FormType = data.FormType,
  595. SyncState = "1",
  596. Direction = "2"
  597. };
  598. var id = await _receiveCaseExtendsRepository.AddAsync(receiveCaseExtends, HttpContext.RequestAborted);
  599. if (!string.IsNullOrEmpty(id))
  600. return OpenResponse.Ok(Reponse.Failed("数据提交失败"));
  601. OrderExtensionDto orderExtension = new()
  602. {
  603. ProvinceNo = data.CaseSerial,
  604. OrderTypeCode = data.FormType.ToLower()
  605. };
  606. //扩展信息写入
  607. switch (data.FormType.ToLower())
  608. {
  609. case "yl"://医疗表单
  610. //转换数据
  611. var dtoyl = _mapper.Map<DsFormMedical>(data.FormMedical);
  612. dtoyl.RCEId = id;
  613. //添加数据
  614. await _formMedicalRepository.AddAsync(dtoyl, HttpContext.RequestAborted);
  615. orderExtension = _mapper.Map<OrderExtensionDto>(dtoyl);
  616. orderExtension.OrderType = "医疗服务中心受理单";
  617. break;
  618. case "zwfw"://四川政务服务网技术工单
  619. //转换数据
  620. var dtozwfw = _mapper.Map<DsFormNetWorktec>(data.FormNetWorktec);
  621. dtozwfw.RCEId = id;
  622. //添加数据
  623. await _formNetWorktecRepository.AddAsync(dtozwfw, HttpContext.RequestAborted);
  624. orderExtension = _mapper.Map<OrderExtensionDto>(dtozwfw);
  625. orderExtension.OrderType = "四川政务服务网技术中心受理单";
  626. break;
  627. case "th"://电视购物及商铺购买退换货工单
  628. //转换数据
  629. var dtoth = _mapper.Map<DsFormReturnexChange>(data.FormReturnexChange);
  630. dtoth.RCEId = id;
  631. //添加数据
  632. await _formReturnexChangeRepository.AddAsync(dtoth, HttpContext.RequestAborted);
  633. orderExtension = _mapper.Map<OrderExtensionDto>(dtoth);
  634. orderExtension.OrderType = "电视购物及商铺购买退换货中心受理单";
  635. break;
  636. case "gsgl"://高速公路工单
  637. //转换数据
  638. var dtogsgl = _mapper.Map<DsFormExpressWay>(data.FormExpressWay);
  639. dtogsgl.RCEId = id;
  640. //添加数据
  641. await _formExpressWayRepository.AddAsync(dtogsgl, HttpContext.RequestAborted);
  642. orderExtension = _mapper.Map<OrderExtensionDto>(dtogsgl);
  643. orderExtension.OrderType = "高速公路投诉中心受理单";
  644. break;
  645. case "xjgg"://电视台虚假广告工单
  646. //转换数据
  647. var dtoxjgg = _mapper.Map<DsFormShamPub>(data.FormShamPub);
  648. dtoxjgg.RCEId = id;
  649. //添加数据
  650. await _formShamPubRepository.AddAsync(dtoxjgg, HttpContext.RequestAborted);
  651. orderExtension = _mapper.Map<OrderExtensionDto>(dtoxjgg);
  652. orderExtension.OrderType = "电视台虚假广告中心受理单";
  653. break;
  654. case "swfwsq"://12366热线诉求交办
  655. //转换数据
  656. var dtoswfwsq = _mapper.Map<DsFormTaxationComplaint>(data.FormTaxationComplaint);
  657. dtoswfwsq.RCEId = id;
  658. //添加数据
  659. await _formTaxationComplaintRepository.AddAsync(dtoswfwsq, HttpContext.RequestAborted);
  660. orderExtension = _mapper.Map<OrderExtensionDto>(dtoswfwsq);
  661. orderExtension.OrderType = "四川省12366热线诉求交办单";
  662. break;
  663. case "swfwzx"://12366热线咨询交办
  664. //转换数据
  665. var dtoswfwzx = _mapper.Map<DsFormTaxationConsulting>(data.FormTaxationConsulting);
  666. dtoswfwzx.RCEId = id;
  667. //添加数据
  668. await _formTaxationConsultingRepository.AddAsync(dtoswfwzx, HttpContext.RequestAborted);
  669. orderExtension = _mapper.Map<OrderExtensionDto>(dtoswfwzx);
  670. orderExtension.OrderType = "四川省12366热线咨询交办单";
  671. break;
  672. case "jtfwjd"://12328服务监督
  673. //转换数据
  674. var dtojtfwjd = _mapper.Map<DsFormTraffic>(data.FormTraffic);
  675. dtojtfwjd.RCEId = id;
  676. //添加数据
  677. await _formTrafficRepository.AddAsync(dtojtfwjd, HttpContext.RequestAborted);
  678. orderExtension = _mapper.Map<OrderExtensionDto>(dtojtfwjd);
  679. orderExtension.OrderType = "12328服务监督中心受理单";
  680. break;
  681. case "yzxf"://邮政业消费者申诉
  682. //转换数据
  683. var dtoyzxf = _mapper.Map<DsFormPost>(data.FormPost);
  684. dtoyzxf.RCEId = id;
  685. //添加数据
  686. await _formPostRepository.AddAsync(dtoyzxf, HttpContext.RequestAborted);
  687. orderExtension = _mapper.Map<OrderExtensionDto>(dtoyzxf);
  688. orderExtension.OrderType = "邮政业消费者申诉受理单";
  689. break;
  690. case "hbjb"://环保举报业务
  691. //转换数据
  692. var dtohbjb = _mapper.Map<DsFormEnvironMent>(data.FormEnvironMent);
  693. dtohbjb.RCEId = id;
  694. //添加数据
  695. await _formEnvironMentRepository.AddAsync(dtohbjb, HttpContext.RequestAborted);
  696. orderExtension = _mapper.Map<OrderExtensionDto>(dtohbjb);
  697. orderExtension.OrderType = "环保举报业务受理单";
  698. break;
  699. case "scjgj"://12315个性化表单
  700. break;
  701. default:
  702. break;
  703. }
  704. if (!string.IsNullOrEmpty(id))
  705. {
  706. //向业务系统推送消息
  707. await _mediator.Send(new ReceiveOrderExtensionNotify { OrderExtensionDto = orderExtension });
  708. return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
  709. }
  710. else
  711. return OpenResponse.Ok(Reponse.Failed("接口调用失败!"));
  712. }
  713. /// <summary>
  714. /// 服务工单材料接口
  715. /// </summary>
  716. /// <param name="params">工单材料信息</param>
  717. /// <param name="files">材料文件</param>
  718. /// <returns></returns>
  719. [HttpPost]
  720. [Route("get_case_material_info")]
  721. [AllowAnonymous]
  722. public async Task<OpenResponse> GetCaseMaterialInfo(string @params, List<IFormFile> files)
  723. {
  724. // 上传文件为必须
  725. if (files is null || files.Count <= 0)
  726. {
  727. return OpenResponse.Ok(Reponse.Failed("上传文件为必须"));
  728. }
  729. // 解析附件信息
  730. var vmCaseMaterialInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<GetCaseMaterialInfoRequest>(@params);
  731. if (vmCaseMaterialInfo is null || vmCaseMaterialInfo.paras is null)
  732. {
  733. return OpenResponse.Ok(Reponse.Failed("数据解析失败"));
  734. }
  735. GetCaseMaterialInfoModel tmpCaseMaterialInfo = vmCaseMaterialInfo.paras;
  736. // 验证
  737. string strResult = tmpCaseMaterialInfo.Validate();
  738. if (false == string.IsNullOrEmpty(strResult))
  739. {
  740. return OpenResponse.Ok(Reponse.Failed(strResult));
  741. }
  742. // 文件列表
  743. foreach (var file in files)
  744. {
  745. // 文件内容字节数据
  746. using var memoryStream = new MemoryStream();
  747. await file.CopyToAsync(memoryStream);
  748. memoryStream.Seek(0, SeekOrigin.Begin);
  749. byte[] fileContentBytes = memoryStream.ToArray();
  750. //这里需要上文件服务器上传
  751. var Additions = await SendFileData(fileContentBytes);
  752. // 新增文件到列表
  753. var materialInfo = new DsGetCaseMaterialInfo()
  754. {
  755. CaseSerial = tmpCaseMaterialInfo.CaseSerial,
  756. MaterialType = tmpCaseMaterialInfo.MaterialType,
  757. CliengGuid = tmpCaseMaterialInfo.CliengGuid,
  758. AreaCode = tmpCaseMaterialInfo.AreaCode,
  759. FileName = file.FileName,
  760. FileSize = file.Length,
  761. Additions = Additions,
  762. Direction = "2",
  763. SyncState = "1"
  764. };
  765. await _getCaseMaterialInfoRepository.AddAsync(materialInfo, HttpContext.RequestAborted);
  766. //向业务系统推送消息
  767. // await _capPublisher.PublishAsync(Sharing.Share.Mq.EventNames.SharingFileData, _mapper.Map<FileDto>(materialInfo), cancellationToken: HttpContext.RequestAborted);
  768. }
  769. return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
  770. }
  771. //还需要将附件上传到业务服务器
  772. /// <summary>
  773. /// 将文件流上传到附件服务器
  774. /// </summary>
  775. /// <param name="fileContentBytes"></param>
  776. /// <returns></returns>
  777. private async Task<string> SendFileData(byte[] fileContentBytes)
  778. {
  779. return "";
  780. }
  781. }
  782. }