TaskProvinceOtherJob.cs 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750
  1. using DataSharing.Province.SendTask.ProvinceOther;
  2. using DataSharing.RawData;
  3. using DataSharing.SendTask;
  4. using DataSharing.Share.Dtos.Province;
  5. using DataSharing.Share.Enums;
  6. using Microsoft.Extensions.Logging;
  7. using Newtonsoft.Json;
  8. using Quartz;
  9. using System.Net;
  10. using XF.Domain.Repository;
  11. namespace DataSharing.Province.SendTask
  12. {
  13. /// <summary>
  14. ///
  15. /// </summary>
  16. public class TaskProvinceOtherJob : IJob, IDisposable
  17. {
  18. private readonly ILogger<TaskProvinceOtherJob> _logger;
  19. private readonly IRepository<DsSendTaskProvinceOther> _sendTaskProvinceOtherRepository;
  20. private readonly IRepository<DsWaitSendTaskProvinceOther> _waitSendTaskProvinceOtherRepository;
  21. private readonly IChannelConfigurationManager _channelConfigurationManager;
  22. private readonly HuiJuClient _huiJuClient;
  23. private readonly XieTongClient _xieTongClient;
  24. private readonly IRepository<DsSendTaskDetailInfo> _sendTaskDetailInfoRepository;
  25. private readonly IHttpClientFactory _httpClientFactory;
  26. private readonly IRepository<DsOrderVisitSend> _dsOrderVisitSendRepository;
  27. /// <summary>
  28. ///
  29. /// </summary>
  30. /// <param name="logger"></param>
  31. /// <param name="sendTaskProvinceOtherRepository"></param>
  32. /// <param name="waitSendTaskProvinceOtherRepository"></param>
  33. /// <param name="channelConfigurationManager"></param>
  34. /// <param name="huiJuClient"></param>
  35. /// <param name="xieTongClient"></param>
  36. /// <param name="sendTaskDetailInfoRepository"></param>
  37. /// <param name="httpClientFactory"></param>
  38. /// <param name="dsOrderVisitSendRepository"></param>
  39. public TaskProvinceOtherJob(ILogger<TaskProvinceOtherJob> logger,
  40. IRepository<DsSendTaskProvinceOther> sendTaskProvinceOtherRepository,
  41. IRepository<DsWaitSendTaskProvinceOther> waitSendTaskProvinceOtherRepository,
  42. IChannelConfigurationManager channelConfigurationManager,
  43. HuiJuClient huiJuClient,
  44. XieTongClient xieTongClient,
  45. IRepository<DsSendTaskDetailInfo> sendTaskDetailInfoRepository,
  46. IHttpClientFactory httpClientFactory,
  47. IRepository<DsOrderVisitSend> dsOrderVisitSendRepository)
  48. {
  49. _logger = logger;
  50. _sendTaskProvinceOtherRepository = sendTaskProvinceOtherRepository;
  51. _waitSendTaskProvinceOtherRepository = waitSendTaskProvinceOtherRepository;
  52. _channelConfigurationManager = channelConfigurationManager;
  53. _huiJuClient = huiJuClient;
  54. _xieTongClient = xieTongClient;
  55. _sendTaskDetailInfoRepository = sendTaskDetailInfoRepository;
  56. _httpClientFactory = httpClientFactory;
  57. _dsOrderVisitSendRepository = dsOrderVisitSendRepository;
  58. }
  59. /// <summary>
  60. ///
  61. /// </summary>
  62. /// <param name="context"></param>
  63. /// <returns></returns>
  64. public async Task Execute(IJobExecutionContext context)
  65. {
  66. List<string> listOldData = new()
  67. {
  68. "RGDH9951150024050100003",
  69. "RGDH9951150024050100002",
  70. "RGDH9951150024050400002",
  71. "RGDH9951150024050400004",
  72. "RGDH9951150024050400005",
  73. "RGDH9951150024050400009",
  74. "RGDH9951150024050400010",
  75. "RGDH9951150024050400011",
  76. "RGDH9951150024050400008",
  77. "RGDH9951150024050500001",
  78. "RGDH9951150024050500005",
  79. "RGDH9951150024050500009",
  80. "RGDH9951150024050500004",
  81. "RGDH9951150024050600001",
  82. "RGDH9951150024050600002",
  83. "RGDH9951150024050600006",
  84. "RGDH9951150024050600005",
  85. "RGDH9951150024050600008",
  86. "RGDH9951150024050600004",
  87. "RGDH9951150024050600010",
  88. "RGDH9951150024050600010",
  89. "RGDH9951150024050600011",
  90. "RGDH9951150024050700001",
  91. "RGDH9951150024050800001",
  92. "RGDH9951150024050800005",
  93. "RGDH9951150024050800009",
  94. "RGDH9951150024050800008",
  95. "RGDH9951150024050800012",
  96. "RGDH9951150024050800013",
  97. "RGDH9951150024050800007",
  98. "RGDH9951150024050900002",
  99. "RGDH9951150024050900001",
  100. "RGDH9951150024050900006",
  101. "RGDH9951150024050900009",
  102. "RGDH9951150024050900007",
  103. "RGDH9951150024051000001",
  104. "RGDH9951150024051100001",
  105. "RGDH9951150024050100001",
  106. "RGDH9951150024051100004",
  107. "RGDH9951150024051100006",
  108. "RGDH9951150024051200002",
  109. "RGDH9951150024051200004",
  110. "RGDH9951150024051300002",
  111. "RGDH9951150024051300001",
  112. "RGDH9951150024051400001",
  113. "RGDH9951150024051500001",
  114. "RGDH9951150024051500002",
  115. "RGDH9951150024051500006",
  116. "RGDH9951150024051500003",
  117. "RGDH9951150024041200003",
  118. "RGDH9951150024041200004",
  119. "RGDH9951150024041200005",
  120. "RGDH9951150024041300001",
  121. "RGDH9951150024041300005",
  122. "RGDH9951150024041300006",
  123. "RGDH9951150024041300014",
  124. "RGDH9951150024041300019",
  125. "RGDH9951150024041300011",
  126. "RGDH9951150024041300018",
  127. "RGDH9951150024041300021",
  128. "RGDH9951150024041300022",
  129. "RGDH9951150024041300024",
  130. "RGDH9951150024041400001",
  131. "RGDH9951150024041400002",
  132. "RGDH9951150024041400003",
  133. "RGDH9951150024041400006",
  134. "RGDH9951150024041500004",
  135. "RGDH9951150024041500001",
  136. "RGDH9951150024041500007",
  137. "RGDH9951150024041500009",
  138. "RGDH9951150024041500008",
  139. "RGDH9951150024041500010",
  140. "RGDH9951150024041500006",
  141. "RGDH9951150024041600001",
  142. "RGDH9951150024041700002",
  143. "RGDH9951150024041700006",
  144. "RGDH9951150024041700003",
  145. "RGDH9951150024041700001",
  146. "RGDH9951150024041700005",
  147. "RGDH9951150024041800003",
  148. "RGDH9951150024041800005",
  149. "RGDH9951150024041800002",
  150. "RGDH9951150024041800001",
  151. "RGDH9951150024041800015",
  152. "RGDH9951150024041800008",
  153. "RGDH9951150024041800018",
  154. "RGDH9951150024041800022",
  155. "RGDH9951150024041800031",
  156. "RGDH9951150024041800030",
  157. "RGDH9951150024032900004",
  158. "RGDH9951150024032900001",
  159. "RGDH9951150024032900002",
  160. "RGDH9951150024032900003",
  161. "RGDH9951150024032900008",
  162. "RGDH9951150024032900010",
  163. "RGDH9951150024032900012",
  164. "RGDH9951150024032900015",
  165. "RGDH9951150024032900014",
  166. "RGDH9951150024032900019",
  167. "RGDH9951150024032900018",
  168. "RGDH9951150024032900017",
  169. "RGDH9951150024032900013",
  170. "RGDH9951150024032900022",
  171. "RGDH9951150024032900023",
  172. "RGDH9951150024032900025",
  173. "RGDH9951150024033000002",
  174. "RGDH9951150024033000004",
  175. "RGDH9951150024033000003",
  176. "RGDH9951150024033000005",
  177. "RGDH9951150024033100006",
  178. "RGDH9951150024033100005",
  179. "RGDH9951150024033100003",
  180. "RGDH9951150024033100004",
  181. "RGDH9951150024033100009",
  182. "RGDH9951150024033100002",
  183. "RGDH9951150024033100013",
  184. "RGDH9951150024033100011",
  185. "RGDH9951150024033100014",
  186. "RGDH9951150024033100015",
  187. "RGDH9951150024033100017",
  188. "QT9951150024040100006",
  189. "RGDH9951150024040100007",
  190. "RGDH9951150024040100003",
  191. "RGDH9951150024040100009",
  192. "RGDH9951150024040100002",
  193. "RGDH9951150024040100010",
  194. "RGDH9951150024040100014",
  195. "RGDH9951150024040100012",
  196. "RGDH9951150024040100017",
  197. "RGDH9951150024040100015",
  198. "RGDH9951150024040200001",
  199. "RGDH9951150024040200006",
  200. "RGDH9951150024040200004",
  201. "RGDH9951150024040200007",
  202. "RGDH9951150024040200009",
  203. "RGDH9951150024040200012",
  204. "RGDH9951150024040200015",
  205. "RGDH9951150024040200014",
  206. "RGDH9951150024040200019",
  207. "RGDH9951150024041900001",
  208. "RGDH9951150024041900003",
  209. "RGDH9951150024041900009",
  210. "RGDH9951150024042000001",
  211. "RGDH9951150024042100002",
  212. "RGDH9951150024042100003",
  213. "RGDH9951150024042100004",
  214. "RGDH9951150024042200002",
  215. "RGDH9951150024042200005",
  216. "RGDH9951150024042200003",
  217. "RGDH9951150024042200008",
  218. "RGDH9951150024042200006",
  219. "RGDH9951150024042200011",
  220. "RGDH9951150024042200012",
  221. "RGDH9951150024042200015",
  222. "RGDH9951150024042200016",
  223. "RGDH9951150024042200014",
  224. "RGDH9951150024042200021",
  225. "RGDH9951150024042200023",
  226. "RGDH9951150024042200025",
  227. "RGDH9951150024040200018",
  228. "RGDH9951150024040200022",
  229. "RGDH9951150024040200023",
  230. "RGDH9951150024040300001",
  231. "RGDH9951150024040300003",
  232. "RGDH9951150024042200027",
  233. "RGDH9951150024042300002",
  234. "RGDH9951150024042300001",
  235. "RGDH9951150024042300004",
  236. "RGDH9951150024042300006",
  237. "RGDH9951150024040300007",
  238. "RGDH9951150024040300009",
  239. "RGDH9951150024040300010",
  240. "RGDH9951150024040300012",
  241. "RGDH9951150024040400001",
  242. "RGDH9951150024042300007",
  243. "RGDH9951150024042400001",
  244. "RGDH9951150024042400005",
  245. "RGDH9951150024042400011",
  246. "RGDH9951150024042400013",
  247. "RGDH9951150024040500002",
  248. "RGDH9951150024040500001",
  249. "RGDH9951150024040600001",
  250. "RGDH9951150024040600002",
  251. "RGDH9951150024040600005",
  252. "RGDH9951150024040600004",
  253. "RGDH9951150024040700001",
  254. "RGDH9951150024040700002",
  255. "RGDH9951150024040700006",
  256. "RGDH9951150024040700005",
  257. "RGDH9951150024040700007",
  258. "RGDH9951150024040700009",
  259. "RGDH9951150024040700008",
  260. "RGDH9951150024040700011",
  261. "RGDH9951150024040700012",
  262. "RGDH9951150024040700014",
  263. "RGDH9951150024040700015",
  264. "RGDH9951150024040700019",
  265. "RGDH9951150024040700017",
  266. "RGDH9951150024040700020",
  267. "RGDH9951150024040700025",
  268. "RGDH9951150024042400015",
  269. "RGDH9951150024042400014",
  270. "RGDH9951150024042500002",
  271. "RGDH9951150024042500003",
  272. "RGDH9951150024042600002",
  273. "RGDH9951150024040700026",
  274. "RGDH9951150024040700023",
  275. "RGDH9951150024040800001",
  276. "RGDH9951150024040800003",
  277. "RGDH9951150024040800005",
  278. "RGDH9951150024040800008",
  279. "RGDH9951150024040800010",
  280. "RGDH9951150024040800011",
  281. "RGDH9951150024040800012",
  282. "RGDH9951150024040800014",
  283. "RGDH9951150024040900001",
  284. "RGDH9951150024040900002",
  285. "QT9951150024040900006",
  286. "RGDH9951150024040900009",
  287. "RGDH9951150024040900008",
  288. "RGDH9951150024042600003",
  289. "RGDH9951150024042600006",
  290. "RGDH9951150024042800001",
  291. "RGDH9951150024042800003",
  292. "RGDH9951150024042800005",
  293. "RGDH9951150024041000005",
  294. "RGDH9951150024041000007",
  295. "RGDH9951150024041000006",
  296. "RGDH9951150024041000010",
  297. "RGDH9951150024041000004",
  298. "RGDH9951150024042800009",
  299. "RGDH9951150024042800006",
  300. "RGDH9951150024042800008",
  301. "RGDH9951150024042800012",
  302. "RGDH9951150024042900002",
  303. "RGDH9951150024042900001",
  304. "RGDH9951150024042900005",
  305. "RGDH9951150024043000005",
  306. "RGDH9951150024043000007",
  307. "RGDH9951150024043000008",
  308. "RGDH9951150024041100001",
  309. "RGDH9951150024041100006",
  310. "RGDH9951150024041100004",
  311. "RGDH9951150024062450001",
  312. "RGDH9951150024062450002",
  313. "RGDH9951150024062450007",
  314. "RGDH9951150024062450008",
  315. "RGDH9951150024062450009",
  316. "RGDH9951150024062450011",
  317. "RGDH9951150024062450012",
  318. "RGDH9951150024062450013",
  319. "RGDH9951150024062450014",
  320. "RGDH9951150024062450016",
  321. "RGDH9951150024062450017",
  322. "RGDH9951150024062450018",
  323. "RGDH9951150024062450019",
  324. "RGDH9951150024062450020",
  325. "RGDH9951150024062450022",
  326. "RGDH9951150024062450023",
  327. "RGDH9951150024062450024",
  328. "RGDH9951150024062450025",
  329. "RGDH9951150024062450026",
  330. "RGDH9951150024062450027",
  331. "RGDH9951150024062450028",
  332. "RGDH9951150024062450029",
  333. "RGDH9951150024062450030",
  334. "RGDH9951150024062450031",
  335. "RGDH9951150024062450033",
  336. "RGDH9951150024062450034",
  337. "RGDH9951150024062450035",
  338. "RGDH9951150024062450036",
  339. "RGDH9951150024062450037",
  340. "RGDH9951150024062450038",
  341. "RGDH9951150024062450039",
  342. "RGDH9951150024062450040",
  343. "RGDH9951150024062450041",
  344. "RGDH9951150024062450042",
  345. "RGDH9951150024062450043",
  346. "RGDH9951150024062450044",
  347. "RGDH9951150024062450045",
  348. "RGDH9951150024062450046",
  349. "RGDH9951150024062450047",
  350. "RGDH9951150024062450048",
  351. "RGDH9951150024062450049",
  352. "RGDH9951150024062450050",
  353. "RGDH9951150024062450051",
  354. "RGDH9951150024062450052",
  355. "RGDH9951150024062450021",
  356. "RGDH9951150024062450053",
  357. "RGDH9951150024062450054",
  358. "RGDH9951150024062450055",
  359. "RGDH9951150024062450056",
  360. "RGDH9951150024062450060",
  361. "RGDH9951150024062450062",
  362. "RGDH9951150024062450064",
  363. "RGDH9951150024062450065",
  364. "RGDH9951150024062450066",
  365. "RGDH9951150024062450067",
  366. "RGDH9951150024062450068",
  367. "RGDH9951150024062450069",
  368. "RGDH9951150024062450070",
  369. "RGDH9951150024062450071",
  370. "RGDH9951150024062450072",
  371. "RGDH9951150024062450073",
  372. "RGDH9951150024062450074",
  373. "RGDH9951150024062450076",
  374. "RGDH9951150024062450077",
  375. "RGDH9951150024062450078",
  376. "RGDH9951150024062450079",
  377. "RGDH9951150024062450080",
  378. "RGDH9951150024062450081",
  379. "RGDH9951150024062450058",
  380. "RGDH9951150024062450082",
  381. "RGDH9951150024062450084",
  382. "RGDH9951150024062450085",
  383. "RGDH9951150024062450086",
  384. "RGDH9951150024062450087",
  385. "RGDH9951150024062450057",
  386. "RGDH9951150024062450088",
  387. "RGDH9951150024062450089",
  388. "RGDH9951150024062450090",
  389. "RGDH9951150024062450091",
  390. "RGDH9951150024062450093",
  391. "RGDH9951150024062450094",
  392. "RGDH9951150024062450095",
  393. "RGDH9951150024062450096",
  394. "RGDH9951150024062450097",
  395. "RGDH9951150024062450098",
  396. "RGDH9951150024062450099",
  397. "RGDH9951150024062450100",
  398. "RGDH9951150024062450101",
  399. "RGDH9951150024062450102",
  400. "RGDH9951150024062450103",
  401. "RGDH9951150024062450104",
  402. "RGDH9951150024062450105",
  403. "RGDH9951150024062450106",
  404. "RGDH9951150024062450107",
  405. "RGDH9951150024062450108",
  406. "RGDH9951150024062450109",
  407. "RGDH9951150024062450110",
  408. "RGDH9951150024062450111",
  409. "RGDH9951150024062450112",
  410. "RGDH9951150024062450113",
  411. "RGDH9951150024062450114",
  412. "RGDH9951150024062450118",
  413. "RGDH9951150024062450116",
  414. "RGDH9951150024062450119",
  415. "RGDH9951150024062450120",
  416. "RGDH9951150024062450121",
  417. "RGDH9951150024062450122",
  418. "RGDH9951150024062450123",
  419. "RGDH9951150024062550160"
  420. };
  421. var configProvince = _channelConfigurationManager.GetConfigurationProvince();
  422. //加载数据
  423. var tasks = await _waitSendTaskProvinceOtherRepository.Queryable()
  424. .Where(d => d.State == EWaitSendTaskState.WaitPush && d.SendTimes <= 6 && d.TaskType != "SubmitVisitInfo")
  425. .OrderBy(d => d.CreationTime)
  426. .Take(10)
  427. .ToListAsync(context.CancellationToken);
  428. if (tasks.Count != 0)
  429. {
  430. //处理推送数据
  431. foreach (var sendTask in tasks)
  432. {
  433. //状态更改为推送中
  434. sendTask.State = EWaitSendTaskState.Pushing;
  435. //使用乐观锁,控制数据
  436. if (await _waitSendTaskProvinceOtherRepository.Updateable(sendTask).ExecuteCommandWithOptLockAsync() > 0)
  437. {
  438. if (listOldData.Contains(sendTask.ProvinceNo))
  439. {
  440. //移除待同步表数据
  441. await _waitSendTaskProvinceOtherRepository.RemoveAsync(sendTask, cancellationToken: context.CancellationToken);
  442. #region 处理推送任务表
  443. var sendTaskData = await _sendTaskProvinceOtherRepository.GetAsync(p => p.Id == sendTask.Id, context.CancellationToken);
  444. if (sendTaskData != null)
  445. {
  446. //处理推送时间
  447. sendTaskData.LastTime = DateTime.Now;
  448. sendTaskData.SendTimes = sendTaskData.SendTimes + 1;
  449. if (sendTaskData.FirstTime is null)
  450. sendTaskData.FirstTime = DateTime.Now;
  451. sendTaskData.IsSuccess = ESendTaskState.PushSuccess;
  452. await _sendTaskProvinceOtherRepository.UpdateAsync(sendTaskData, context.CancellationToken);
  453. }
  454. #endregion
  455. }
  456. else
  457. {
  458. var name = GetName(sendTask.Path);
  459. _logger.LogWarning("省请求参数:" + "--------------" + sendTask.Request);
  460. ProvinceResponse result = new();
  461. string error = "";
  462. if (sendTask.PathType == EPathType.HuiJu) //汇聚推送
  463. {
  464. try
  465. {
  466. result = await _huiJuClient.RequestAsync<ProvinceResponse>(configProvince.HuiJu + sendTask.Path, sendTask.HttpMethod, sendTask.Request, context.CancellationToken);
  467. }
  468. catch (Exception ex)
  469. {
  470. error = ex.Message;
  471. }
  472. }
  473. else if (sendTask.PathType == EPathType.XieTong)//协同推送
  474. {
  475. try
  476. {
  477. result = await _xieTongClient.RequestAsync<ProvinceResponse>(configProvince.XieTong + sendTask.Path, sendTask.HttpMethod, sendTask.Request, context.CancellationToken);
  478. }
  479. catch (Exception ex)
  480. {
  481. error = ex.Message;
  482. }
  483. }
  484. else if (sendTask.PathType == EPathType.File) //附件
  485. {
  486. try
  487. {
  488. if (sendTask != null && sendTask.FileJson != null && sendTask.FileJson.Count > 0)
  489. {
  490. var itemFile = sendTask.FileJson[0];
  491. result = await SendFileData(sendTask.Request, itemFile.FileId, itemFile.FileId, context.CancellationToken);
  492. }
  493. }
  494. catch (Exception ex)
  495. {
  496. error = ex.Message;
  497. }
  498. }
  499. _logger.LogWarning("省接口返回:" + name + "--------------" + System.Text.RegularExpressions.Regex.Unescape(System.Text.Json.JsonSerializer.Serialize(result)));
  500. //写入明细表
  501. DsSendTaskDetailInfo dsSendTaskInfo = new()
  502. {
  503. TaskId = sendTask.Id,
  504. Result = System.Text.RegularExpressions.Regex.Unescape(System.Text.Json.JsonSerializer.Serialize(result)),
  505. ResultErrorData = error,
  506. ProcessingServices = _channelConfigurationManager.GetConfigurationProcessingServices()
  507. };
  508. if (result is not null)
  509. {
  510. #region 处理待同步表数据
  511. //移除待同步表数据
  512. if (result.ReturnInfo is not null && result.ReturnInfo.Code == "1")
  513. await _waitSendTaskProvinceOtherRepository.RemoveAsync(sendTask, cancellationToken: context.CancellationToken);
  514. else
  515. {
  516. //修改待同步表数据状态
  517. sendTask.LastTime = DateTime.Now;
  518. sendTask.SendTimes = sendTask.SendTimes + 1;
  519. if (sendTask.FirstTime is null)
  520. sendTask.FirstTime = DateTime.Now;
  521. if (sendTask.SendTimes >= 7)
  522. sendTask.State = EWaitSendTaskState.PushFail;
  523. else
  524. sendTask.State = EWaitSendTaskState.WaitPush;
  525. await _waitSendTaskProvinceOtherRepository.UpdateAsync(sendTask, context.CancellationToken);
  526. }
  527. #endregion
  528. #region 处理推送任务表
  529. var sendTaskData = await _sendTaskProvinceOtherRepository.GetAsync(p => p.Id == sendTask.Id, context.CancellationToken);
  530. if (sendTaskData != null)
  531. {
  532. //处理推送时间
  533. sendTaskData.LastTime = DateTime.Now;
  534. sendTaskData.SendTimes = sendTaskData.SendTimes + 1;
  535. if (sendTaskData.FirstTime is null)
  536. sendTaskData.FirstTime = DateTime.Now;
  537. if (result.ReturnInfo is not null && result.ReturnInfo.Code == "1")
  538. {
  539. sendTaskData.IsSuccess = ESendTaskState.PushSuccess;
  540. dsSendTaskInfo.IsSuccess = true;
  541. }
  542. else
  543. sendTaskData.IsSuccess = ESendTaskState.PushFail;
  544. await _sendTaskProvinceOtherRepository.UpdateAsync(sendTaskData, context.CancellationToken);
  545. }
  546. #endregion
  547. #region 处理回访数据推送时间
  548. if (result.ReturnInfo is not null && result.ReturnInfo.Code == "1")
  549. {
  550. if (sendTask.TaskType == "SubmitVisitInfo" || sendTask.TaskType == "GetVisitInfoReceive")
  551. {
  552. var visitData = await _dsOrderVisitSendRepository.GetAsync(p => p.ProvinceNo == sendTaskData.ProvinceNo, context.CancellationToken);
  553. if (visitData != null)
  554. {
  555. if (visitData.FirstSendProvinceTime is null)
  556. visitData.FirstSendProvinceTime = DateTime.Now;
  557. visitData.LastSendProvinceTime = DateTime.Now;
  558. await _dsOrderVisitSendRepository.UpdateAsync(visitData, context.CancellationToken);
  559. }
  560. }
  561. }
  562. #endregion
  563. }
  564. await _sendTaskDetailInfoRepository.AddAsync(dsSendTaskInfo, context.CancellationToken);
  565. }
  566. }
  567. }
  568. }
  569. }
  570. /// <summary>
  571. /// 附件读取以及附件上传
  572. /// </summary>
  573. /// <param name="request"></param>
  574. /// <param name="fileName"></param>
  575. /// <param name="fileId"></param>
  576. /// <param name="cancellationToken"></param>
  577. /// <returns></returns>
  578. private async Task<ProvinceResponse> SendFileData(string request, string fileName, string fileId, CancellationToken cancellationToken)
  579. {
  580. //获取配置信息
  581. var configProvince = _channelConfigurationManager.GetConfigurationProvince();
  582. var businessFile = _channelConfigurationManager.GetConfigurationBusinessFile();
  583. byte[] fileContentBytes = null;
  584. var baseAddress = businessFile.BaseUrl;
  585. if (!baseAddress.EndsWith('/'))
  586. baseAddress += "/";
  587. string url = string.Format("{0}{1}?Source={2}&Id={3}", baseAddress, businessFile.DownloadUrlAddress, "hotline", fileId);
  588. using (var client = _httpClientFactory.CreateClient())
  589. using (var response = await client.GetAsync(url))
  590. {
  591. if (response.StatusCode == HttpStatusCode.OK)
  592. {
  593. fileName = response.Content.Headers.ContentDisposition.FileNameStar;
  594. using var memoryStream = new MemoryStream();
  595. await response.Content.CopyToAsync(memoryStream);
  596. memoryStream.Seek(0, SeekOrigin.Begin);
  597. fileContentBytes = memoryStream.ToArray();
  598. }
  599. }
  600. if (fileContentBytes != null)
  601. {
  602. //获取附件上传Token
  603. string strToken = await _xieTongClient.GetTokenAsync(cancellationToken);
  604. Dictionary<string, object> dicParam = new()
  605. {
  606. { "params", request } // 第一个接口参数,json格式字符串
  607. };
  608. // 构造字典文件数据
  609. // 接口参数名称为files
  610. CFormUpload.FileParameter fileParameter = new CFormUpload.FileParameter("files", fileContentBytes, fileName, null);
  611. dicParam.Add(fileName, fileParameter);
  612. var baseAddressHuiJu = configProvince.HuiJu;
  613. if (!baseAddressHuiJu.EndsWith('/'))
  614. baseAddressHuiJu += "/";
  615. string strUrl = baseAddressHuiJu + "get_case_material_info";
  616. // 上传附件
  617. string strResult = CFormUpload.MultipartFormDataPost(strUrl, null, dicParam, strToken);
  618. _logger.LogWarning("省接口上传附件返回:--------------" + strResult);
  619. if (!string.IsNullOrEmpty(strResult))
  620. return JsonConvert.DeserializeObject<ProvinceResponse>(strResult);
  621. }
  622. return new ProvinceResponse();
  623. }
  624. /// <summary>
  625. /// 获取接口名称
  626. /// </summary>
  627. /// <param name="path"></param>
  628. /// <returns></returns>
  629. private string GetName(string path)
  630. {
  631. string name = "";
  632. switch (path)
  633. {
  634. case "get_case_back_apply":
  635. name = "业务协同-退回申请接口";
  636. break;
  637. case "send_supervise_process_info":
  638. name = "业务协同-服务工单督办过程接口";
  639. break;
  640. case "send_supervise_result_info":
  641. name = "业务协同-服务工单督办结果接口";
  642. break;
  643. case "screen_case_info_send":
  644. name = "业务协同-工单发起甄别接口";
  645. break;
  646. case "delay_case_info_send":
  647. name = "业务协同-服务工单申请延时接口";
  648. break;
  649. case "submit_case_info":
  650. name = "业务汇聚-服务工单受理接口";
  651. break;
  652. case "submit_case_record":
  653. name = "业务汇聚-电话记录";
  654. break;
  655. case "get_case_process_receive":
  656. name = "业务协同-服务工单交办处理过程接口";
  657. break;
  658. case "submit_case_process":
  659. name = "业务汇聚-服务工单处理过程接口";
  660. break;
  661. case "submit_case_total":
  662. name = "业务汇聚-统计数据接口";
  663. break;
  664. case "supply_case_info_send":
  665. name = "业务协同-上报补充诉求接口";
  666. break;
  667. case "revoke_case_info":
  668. name = "业务协同-服务工单撤单接口";
  669. break;
  670. case "remind_case_info":
  671. name = "业务协同-服务工单催单接口";
  672. break;
  673. case "get_case_result_receive":
  674. name = "业务协同-服务工单交办处理结果接口";
  675. break;
  676. case "zmhd_case_info_public":
  677. name = "业务协同-政民互动提交公开";
  678. break;
  679. case "get_knowledge_info_send":
  680. name = "业务协同-知识库上报接口";
  681. break;
  682. case "get_knowledge_info_update":
  683. name = "业务协同-知识库变更接口";
  684. break;
  685. case "get_knowledge_info_abandon":
  686. name = "业务协同-知识库下架接口";
  687. break;
  688. case "sendrealtimestatus":
  689. name = "实时服务上报接口";
  690. break;
  691. case "get_visit_info_receive":
  692. name = "业务协同-服务工单交办评价接口";
  693. break;
  694. case "submit_visit_info":
  695. name = "业务汇聚-服务工单回访评价接口";
  696. break;
  697. case "submit_case_result":
  698. name = "业务汇聚-服务工单处理结果接口";
  699. break;
  700. case "submit_case_extends":
  701. name = "业务汇聚-服务工单拓展信息接口";
  702. break;
  703. case "send_case_info":
  704. name = "业务协同-服务工单上报";
  705. break;
  706. case "get_case_material_info":
  707. name = "业务汇聚-材料接口";
  708. break;
  709. default:
  710. break;
  711. }
  712. return name;
  713. }
  714. public void Dispose()
  715. {
  716. }
  717. }
  718. }