PoliceDCJTController.cs 48 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004
  1. using DataSharing.FwDataExchange;
  2. using DataSharing.Police110.DaoShu110;
  3. using DataSharing.Police110.DCJT110;
  4. using DataSharing.Police110.Encryption;
  5. using DataSharing.RawData;
  6. using DataSharing.Share.Dtos;
  7. using DataSharing.Share.Dtos.HotlineSetting;
  8. using DataSharing.Share.Dtos.Police110;
  9. using DataSharing.Share.Dtos.Police110.DaoShu110;
  10. using DataSharing.Share.Dtos.Police110.DCJT110;
  11. using DataSharing.Share.Enums;
  12. using DotNetCore.CAP;
  13. using Hotline.Share.Dtos.DataSharing.PusherHotlineDto;
  14. using Hotline.Share.Enums.Order;
  15. using MapsterMapper;
  16. using MediatR;
  17. using Microsoft.AspNetCore.Authorization;
  18. using Microsoft.AspNetCore.Mvc;
  19. using Newtonsoft.Json;
  20. using Newtonsoft.Json.Converters;
  21. using System.Text;
  22. using XF.Domain.Filters;
  23. using XF.Domain.Repository;
  24. namespace DataSharing.Host.Controllers.Police110
  25. {
  26. /// <summary>
  27. /// 110工单交互
  28. /// 公司:大成均图
  29. /// 市州:自贡、雅安
  30. /// </summary>
  31. public class PoliceDCJTController : BaseOkController
  32. {
  33. #region 注入
  34. private readonly IMapper _mapper;
  35. private readonly ICapPublisher _capPublisher;
  36. private readonly IMediator _mediator;
  37. private readonly IRepository<DsPoliceSendChainAlarmDcjt> _dsPoliceSendChainAlarmDcjtRepository;
  38. private readonly IRepository<DsPoliceSendChainDealDcjt> _dsPoliceSendChainDealDcjtRepository;
  39. private readonly IRepository<DsKnowledgeRawData> _dsKnowledgeRawDataRepository;
  40. private readonly IRepository<DsReceivePoliceData> _dsReceivePoliceDataRepository;
  41. private readonly FwClient _fwClient;
  42. private readonly ISharingConfigurationManager _sharingConfigurationManager;
  43. private readonly IRepository<SendHotlineErrorData> _sendHotlineErrorDataRepository;
  44. private readonly IRepository<DsReceiveHandleData> _dsReceiveHandleDataRepository;
  45. private readonly ILogger<PoliceDCJTController> _logger;
  46. /// <summary>
  47. ///
  48. /// </summary>
  49. /// <param name="mapper"></param>
  50. /// <param name="capPublisher"></param>
  51. /// <param name="mediator"></param>
  52. /// <param name="dsPoliceSendChainAlarmDcjtRepository"></param>
  53. /// <param name="dsPoliceSendChainDealDcjtRepository"></param>
  54. /// <param name="dsKnowledgeRawDataRepository"></param>
  55. /// <param name="dsReceivePoliceDataRepository"></param>
  56. /// <param name="fwClient"></param>
  57. /// <param name="sharingConfigurationManager"></param>
  58. /// <param name="sendHotlineErrorDataRepository"></param>
  59. /// <param name="dsReceiveHandleDataRepository"></param>
  60. /// <param name="logger"></param>
  61. public PoliceDCJTController(IMapper mapper,
  62. ICapPublisher capPublisher,
  63. IMediator mediator,
  64. IRepository<DsPoliceSendChainAlarmDcjt> dsPoliceSendChainAlarmDcjtRepository,
  65. IRepository<DsPoliceSendChainDealDcjt> dsPoliceSendChainDealDcjtRepository,
  66. IRepository<DsKnowledgeRawData> dsKnowledgeRawDataRepository,
  67. IRepository<DsReceivePoliceData> dsReceivePoliceDataRepository,
  68. FwClient fwClient,
  69. ISharingConfigurationManager sharingConfigurationManager,
  70. IRepository<SendHotlineErrorData> sendHotlineErrorDataRepository,
  71. IRepository<DsReceiveHandleData> dsReceiveHandleDataRepository,
  72. ILogger<PoliceDCJTController> logger)
  73. {
  74. _mapper = mapper;
  75. _capPublisher = capPublisher;
  76. _mediator = mediator;
  77. _dsPoliceSendChainAlarmDcjtRepository = dsPoliceSendChainAlarmDcjtRepository;
  78. _dsPoliceSendChainDealDcjtRepository = dsPoliceSendChainDealDcjtRepository;
  79. _dsKnowledgeRawDataRepository = dsKnowledgeRawDataRepository;
  80. _dsReceivePoliceDataRepository = dsReceivePoliceDataRepository;
  81. _fwClient = fwClient;
  82. _sharingConfigurationManager = sharingConfigurationManager;
  83. _sendHotlineErrorDataRepository = sendHotlineErrorDataRepository;
  84. _dsReceiveHandleDataRepository = dsReceiveHandleDataRepository;
  85. _logger = logger;
  86. }
  87. #endregion
  88. #region receive-工单受理-已完成---110推送受理工单给12345
  89. /// <summary>
  90. /// 工单受理
  91. /// </summary>
  92. /// <returns></returns>
  93. [HttpPost("service/api/dcjt/110To12345/chainAlarm")]
  94. [AllowAnonymous]
  95. public async Task<OpenResponse> ChainAlarm_Receive()
  96. {
  97. // 测试JSON
  98. // {"LSH":"510300202304070001202304070001","JJYBH":"1001","JJDBH":"510300202304070001202304070001","BJDH":"13555555555","BJDHYHM":"李四","LXDH":"13555555555","BJDZ":"报警地址","JQLBDM":"","JQLBMC":"","BJNR":"报警内容","GXDWDM":"","GXDWMC":"","GXDWDH":"","BJSJ":"2023-04-07 10:43:17","TSSJ":"2023-04-07 10:43:21","JJDWDM":"12345","JJDWMC":"12345","JJLX":"1","XZQHDM":"510300"}
  99. // 测试Base64
  100. // kKeUhfS8zca5WTA9D2Z7z/GthYLHroPi8jLN2HduG2vK1PCjb56BZ3wLNCiA8V91ARHpOkE50xFdwBJhW+QKB7J2FRjJ6WUrzkKal75G3DCWzl+Fzto+XbkS5U5wUYnII2zSpdo4U6ILrrK2t2u8mFTd1i03+D1Ytv4TlUH5Jwg/xq00AeF/CVhes4+H5PPcxdU/h3KCDMq9Qaoxf6pALQCMBfatQdsDMw4MG0RK5DUbuaCuElOxfCjlDadZTLuVjHWHDw6wWG9sucqN3mrRllxytIDqIsLSdBi1KuCPaW+FhXf5/+v6Eipby8QEXXTPZxOW4m/Kp8cF87+rxBxRE7nIGAjdO2mKDyfiDeipENxKkQs6taTS52U2OG99Prfp+UAU1Uaj69gQ0IShMVqLgnESWhL5b/vIgO2mtYgIIZ7RpwlTuVqVZKxaFfPpjnQtGRFZPDPHVQcqQ7MMT3rjg6/AWVI/Jh7q+pdu18Y6cojl/EGd/XsNVip+uvAeXdCk
  101. ConfigurationPoliceDCJT configurationPoliceDCJT = new();
  102. //根据不同地市州获取不同的配置信息
  103. if (_sharingConfigurationManager.IsCity(ConfigurationConsts.ZiGong))
  104. configurationPoliceDCJT = _sharingConfigurationManager.GetZiGongConfig().PoliceDCJT;
  105. _logger.LogInformation("收到数据---------");
  106. var sm4 = configurationPoliceDCJT.token1_sm4_mw;
  107. var apiR = new DCJTDeResponse<string>();
  108. try
  109. {
  110. string id = "";
  111. _logger.LogInformation("dcsm---------" + Request.Headers["dcsm"].ToString());
  112. // 验证dcsm
  113. string dcsmMsg = CheckDcsm(Request.Headers["dcsm"].ToString(), configurationPoliceDCJT.token1_dcsm);
  114. _logger.LogInformation("验证dcsm---------" + dcsmMsg);
  115. if (!string.IsNullOrEmpty(dcsmMsg))
  116. {
  117. apiR = DCJTDeResponse<string>.Failed(null, dcsmMsg);
  118. }
  119. else
  120. {
  121. string base64String = await GetStreamBase64(HttpContext.Request);
  122. _logger.LogInformation("base64String---------" + base64String);
  123. ChainAlarm_DCJT chainAlarm = new();
  124. if (!string.IsNullOrEmpty(base64String))
  125. {
  126. // 解密:base64通过sm4解密转json
  127. string jsonRes = Sm4Crypto.Decrypt_ECB_Base64(sm4, base64String);
  128. _logger.LogInformation("jsonRes---------" + jsonRes);
  129. // json 转 实体类
  130. if (!string.IsNullOrEmpty(jsonRes))
  131. chainAlarm = System.Text.Json.JsonSerializer.Deserialize<ChainAlarm_DCJT>(jsonRes);
  132. id = await InitRawData("/service/api/dcjt/110To12345/chainAlarm", base64String, jsonRes, chainAlarm?.AlarmReceiptNumber);
  133. _logger.LogInformation("添加数据---------" + id);
  134. }
  135. #region 数据验证
  136. //数据验证
  137. string strResult = chainAlarm.Validate();
  138. if (!IsDate(chainAlarm.CallPoliceTime.ToString()))
  139. strResult = "【报警时间】不是日期格式 yyyy-MM-dd HH:mm:ss";
  140. if (!IsDate(chainAlarm.PushTime.ToString()))
  141. strResult = "【推送时间】不是日期格式 yyyy-MM-dd HH:mm:ss";
  142. #endregion
  143. if (string.IsNullOrEmpty(strResult))
  144. {
  145. //组装业务系统工单数据
  146. Hotline.Share.Dtos.Order.AddOrderDto orderDto = new()
  147. {
  148. ExternalId = chainAlarm.AlarmReceiptNumber,
  149. // AcceptorStaffNo = policeReceive.RegisterNo,
  150. FromPhone = chainAlarm.CallPoliceNumber,
  151. FromName = chainAlarm.CallPoliceName,
  152. Contact = chainAlarm.PhoneNumber,
  153. Content = chainAlarm.CallPoliceContent,
  154. IncidentTime = Convert.ToDateTime(chainAlarm.CallPoliceTime),
  155. AreaCode = chainAlarm.AreaCode,
  156. FullAddress = chainAlarm.CallPoliceAddress,
  157. SourceChannel = "110接警平台",
  158. SourceChannelCode = "110",
  159. Source = ESource.Police110,
  160. IdentityType = EIdentityType.Citizen,
  161. Transpond = false,
  162. IsEnforcementOrder = false,
  163. Title = string.Empty,
  164. AcceptType = "咨询",
  165. AcceptTypeCode = "10"
  166. };
  167. if (!string.IsNullOrEmpty(orderDto.AreaCode))
  168. {
  169. if (orderDto.AreaCode == "510399")
  170. orderDto.AreaCode = "519800";
  171. if(orderDto.AreaCode.Length>6)
  172. orderDto.AreaCode=orderDto.AreaCode.Substring(0,6);
  173. }
  174. orderDto.FromGender = chainAlarm.FromGender switch
  175. {
  176. "0" => EGender.Female,
  177. "1" => EGender.Male,
  178. _ => EGender.Unknown,
  179. };
  180. bool isSuccess = true;
  181. string error = "";
  182. //调用工单创建接口
  183. try
  184. {
  185. var result = await _fwClient.RequestNoTokenAsync<HotlineClientResponse>("api/v1/Order/add-anonymous", "Post", System.Text.Json.JsonSerializer.Serialize(orderDto));
  186. if (result == null || result.code != 0)
  187. {
  188. isSuccess = false;
  189. error = result?.message;
  190. }
  191. }
  192. catch (Exception ex)
  193. {
  194. isSuccess = false;
  195. error = ex.Message;
  196. }
  197. //推送失败添加
  198. if (!isSuccess)
  199. {
  200. SendHotlineErrorData errorData = new SendHotlineErrorData()
  201. {
  202. DataId = id,
  203. PlatformSource = EPlatformSource.Police110,
  204. ReceiveServiceInterface = "/service/api/dcjt/110To12345/chainAlarm",
  205. RawData = base64String,
  206. RequestData = System.Text.Json.JsonSerializer.Serialize(orderDto),
  207. Path = "api/v1/Order/add-anonymous",
  208. SendTimes = 0,
  209. HttpMethod = "Post",
  210. ErrorMessage = error
  211. };
  212. await _sendHotlineErrorDataRepository.AddAsync(errorData, HttpContext.RequestAborted);
  213. }
  214. apiR = DCJTDeResponse<string>.Succeed(null, "调用成功");
  215. }
  216. else
  217. apiR = DCJTDeResponse<string>.Failed(null, strResult);
  218. }
  219. }
  220. catch (Exception)
  221. {
  222. apiR = DCJTDeResponse<string>.Failed(null, "接口异常");
  223. }
  224. #region 处理返回数据
  225. // 返回数据转Json
  226. string jsonResult = ModelToJson(apiR);
  227. // 加密:json通过sm4加密转base64
  228. string base64 = Sm4Crypto.Encrypt_ECB_Base64(sm4, jsonResult);
  229. _logger.LogInformation($"输出:" + $"\r\n\r\nbase64:{base64}\r\nJson:{jsonResult}");
  230. #endregion
  231. return OpenResponse.Ok(base64);
  232. }
  233. #endregion
  234. #region receive-工单办结---110推送办理结果给12345
  235. /// <summary>
  236. /// 工单办结
  237. /// </summary>
  238. /// <returns></returns>
  239. [HttpPost("service/api/dcjt/110To12345/chainDeal")]
  240. [AllowAnonymous]
  241. public async Task<OpenResponse> ChainDeal_Receive()
  242. {
  243. // 测试 办结 {"JJDBH":"510300202304070001202304070001","CZLX":"1","FKSJ":"2023-04-07 10:52:44","CJCZQK":"办理结果","JQCLJGSM":"办理结果","FKYBH":"1001","FKYXM":"1001","FKDWDM":"","FKDWMC":"","HFSJ":"","DHHFHSQK":"","CLJGDM":"","CLJGMC":"","HANDLEUSERNAME":"","HANDLEBMNAME":"","HANDLEOPINION":"","HANDLETIME":"","TSSJ":"2023-04-07 10:53:19"}
  244. // 测试 退回 {"JJDBH":"510300202304070001202304070001","CZLX":"2","FKSJ":"","CJCZQK":"","JQCLJGSM":"","FKYBH":"","FKYXM":"","FKDWDM":"","FKDWMC":"","HFSJ":"","DHHFHSQK":"","CLJGDM":"","CLJGMC":"","HANDLEUSERNAME":"退回人","HANDLEBMNAME":"退回姓名","HANDLEOPINION":"退回原因","HANDLETIME":"2023-04-07 10:53:19","TSSJ":"2023-04-07 10:53:19"}
  245. // 测试 回访 {"JJDBH":"510300202304070001202304070001","CZLX":"3","FKSJ":"","CJCZQK":"","JQCLJGSM":"","FKYBH":"","FKYXM":"","FKDWDM":"","FKDWMC":"","HFSJ":"2023-04-07 10:54:23","DHHFHSQK":"回访情况","CLJGDM":"2","CLJGMC":"回访内容","HANDLEUSERNAME":"","HANDLEBMNAME":"","HANDLEOPINION":"","HANDLETIME":"","TSSJ":"2023-04-07 10:53:19"}
  246. // 测试Base64
  247. // 办结 Jv5JJHwByfD4CXMb1l4PtPsgC6UmNeRfws6mEKz24rackMA28z27tu2GRlIyq0qmbeYeEM0nY783aUxb0jlqSQlk+xtc6cop/CvZI5vczHIsXhtfNozkW/hlx/R43ecuKEvyMzEHwf3EuBZ7jsY1zGuJe61K6YTkmCt6+Xndbd585ZMluNJNIA0qZPbT08jVDiI+wa9ot3HA7AEuDqNxJwfU7NfqoTk6Ml5nnuPkdmp55VKeoLZspAgBflEtFJyppIsN0VQyJkrn+ADQFOPcTpedx5H6+V+2MYM9+5pE/Re17S+s3cA53vWHsf6KhHnCm3M9qtbocu0TtpAEfyMEBQOIRn4pSEJ1i98fpD3xjzuxddkGPOBvhYrh8Tf3IbNTNpNozEda2a0RFmBCQyfzLvEdk4ZK/obYDKncePIRrE3ZtO2QAeAa3H6V532MxcniZJ4mIqHsKShR2Q8uxdsR5Q==
  248. // 退回 Jv5JJHwByfD4CXMb1l4PtPsgC6UmNeRfws6mEKz24rackMA28z27tu2GRlIyq0qm1U2lexAxHJK7Bhoyw7CNiEXjiobQjSKF2RWOrUHZINPed01DQRTw2pIL03EFsrQpEjsslviumN+BTn/cuJQp8zD2ifPclM87jEJfP2EY6D+UGvUfSebT9mMghSo2VaUeqFzlRKpJmcU6XjV7C65zddc8DEXuYzt0zqATyhac9AO3RGB5SEw9MX1olV8WwPgV4h3OkTTVZ+Dq5co/eb28YIBN+Rshjpv82RusV2thgfvudOyCDZcRDbjh6pEdtj/lvVH/BU2cDo3ch17KtzsPE+xkQvJ68zaAnS8f/klQrFrDHlkmTMi6rEa605yUhhPZFz0Jba+Axizil38YbHV9A1YoxoJNjFXIyL90yCMznb4joMQPRRddp5ky/CbT9r0q283gKBdAY6/v+ywPdalFjg==
  249. // 回访 Jv5JJHwByfD4CXMb1l4PtPsgC6UmNeRfws6mEKz24rackMA28z27tu2GRlIyq0qmvLqUgIfd0QkyZbzT0iQZwEXjiobQjSKF2RWOrUHZINPed01DQRTw2pIL03EFsrQpEjsslviumN+BTn/cuJQp8zD2ifPclM87jEJfP2EY6D8cMxuK/4X9pyxRWKIQtLFdh4ieC9bhojhr2XxStPHmDV4c3oNEybczbb7IXsaW2FCGMI4SLF7Z+VXDSpCGpFX+0dyUUQPnoRrgU7wndkn/6VYi2Axm19MBkwK+Wm5v85oVQ1HFptf5leUiSXomF9XCPtgWbLOFzu313JW7WQvjgllM7usjI2mbyGtQ5EMXyOGJ/AmAupELpMYVwjoGAKy6B/GE1HFyPiLAazsUE3jfaLPxn/Gld0Ef2glG1SQ/vakDtyvyoJDE83pYvBesmQMx
  250. ConfigurationPoliceDCJT configurationPoliceDCJT = new();
  251. //根据不同地市州获取不同的配置信息
  252. if (_sharingConfigurationManager.IsCity(ConfigurationConsts.ZiGong))
  253. configurationPoliceDCJT = _sharingConfigurationManager.GetZiGongConfig().PoliceDCJT;
  254. string sm4 = configurationPoliceDCJT.token4_sm4_mw;
  255. var apiR = new DCJTDeResponse<string>();
  256. try
  257. {
  258. // 验证dcsm
  259. string dcsmMsg = CheckDcsm(Request.Headers["dcsm"].ToString(), configurationPoliceDCJT.token4_dcsm);
  260. if (!string.IsNullOrEmpty(dcsmMsg))
  261. {
  262. apiR = DCJTDeResponse<string>.Failed(null, dcsmMsg);
  263. }
  264. else
  265. {
  266. ChainDeal_DCJT chainDeal = new();
  267. string base64String = await GetStreamBase64(HttpContext.Request);
  268. _logger.LogInformation($"接收原始数据:" + $"\r\n\r\nbase64:{base64String}");
  269. if (!string.IsNullOrEmpty(base64String))
  270. {
  271. // 解密:base64通过sm4解密转json
  272. string jsonRes = Sm4Crypto.Decrypt_ECB_Base64(sm4, base64String);
  273. _logger.LogInformation($"接收原始数据jsonRes:" + $"jsonRes:{jsonRes}");
  274. if (!string.IsNullOrEmpty(jsonRes))
  275. {
  276. var data = JsonConvert.DeserializeObject<ChainDeal_DCJTNewDto>(jsonRes);
  277. jsonRes = JsonConvert.SerializeObject(data);
  278. }
  279. // json 转 实体类
  280. chainDeal = System.Text.Json.JsonSerializer.Deserialize<ChainDeal_DCJT>(jsonRes);
  281. _logger.LogInformation("base64String---------" + base64String);
  282. await InitRawData("service/api/dcjt/110To12345/chainDeal", base64String, jsonRes, chainDeal?.AlarmReceiptNumber);
  283. }
  284. #region 数据验证
  285. string strResult = chainDeal.Validate();
  286. if (chainDeal.FeedbackTime == "")
  287. chainDeal.FeedbackTime = null;
  288. if (chainDeal.ReturnTime == "")
  289. chainDeal.ReturnTime = null;
  290. if (chainDeal.RevisitTime == "")
  291. chainDeal.RevisitTime = null;
  292. #endregion
  293. if (string.IsNullOrEmpty(strResult))
  294. {
  295. //这里组装数据推送到业务系统
  296. await InitChainDeal(chainDeal);
  297. apiR = DCJTDeResponse<string>.Succeed(null, "调用成功");
  298. }
  299. else
  300. apiR = DCJTDeResponse<string>.Failed(null, "调用失败");
  301. }
  302. }
  303. catch (Exception)
  304. {
  305. apiR = DCJTDeResponse<string>.Failed(null, "接口异常");
  306. }
  307. #region 处理返回数据
  308. // 返回数据转Json
  309. string jsonResult = ModelToJson(apiR);
  310. // 加密:json通过sm4加密转base64
  311. string base64 = Sm4Crypto.Encrypt_ECB_Base64(sm4, jsonResult);
  312. _logger.LogInformation($"输出:" + $"\r\n\r\nbase64:{base64}\r\nJson:{jsonResult}");
  313. #endregion
  314. return OpenResponse.Ok(base64);
  315. }
  316. #endregion
  317. #region send-工单受理-已完成---12345将警情工单推送给110
  318. /// <summary>
  319. /// 工单受理
  320. /// </summary>
  321. /// <returns></returns>
  322. [HttpPost("service/api/dcjt/12345To110/chainAlarm")]
  323. [AllowAnonymous]
  324. public async Task<OpenResponse> ChainAlarm_Send()
  325. {
  326. //{"startDate":"2023-04-01 10:43:17","endDate":"2023-04-17 10:43:17"}
  327. //gzWXSn3A2ZW9u3k9yrHdEqE5zRzto/Rud6LZ6JRJ1k59ou5nWABc8t8fR/sWU89lGweFQMsZkefowEBYzArADnSXjbKwfQj19UoF5RN/0mI=
  328. ConfigurationPoliceDCJT configurationPoliceDCJT = new();
  329. //根据不同地市州获取不同的配置信息
  330. if (_sharingConfigurationManager.IsCity(ConfigurationConsts.ZiGong))
  331. configurationPoliceDCJT = _sharingConfigurationManager.GetZiGongConfig().PoliceDCJT;
  332. string sm4 = configurationPoliceDCJT.token3_sm4_mw;
  333. var apiR = new DCJTDeResponse<string>();
  334. try
  335. {
  336. // 验证dcsm
  337. string dcsmMsg = CheckDcsm(Request.Headers["dcsm"].ToString(), configurationPoliceDCJT.token3_dcsm);
  338. if (!string.IsNullOrEmpty(dcsmMsg))
  339. {
  340. apiR = DCJTDeResponse<string>.Failed(null, dcsmMsg);
  341. }
  342. else
  343. {
  344. SendData sendData = new();
  345. string base64String = await GetStreamBase64(HttpContext.Request);
  346. if (!string.IsNullOrEmpty(base64String))
  347. {
  348. // 解密:base64通过sm4解密转json
  349. string jsonRes = Sm4Crypto.Decrypt_ECB_Base64(sm4, base64String);
  350. if (!string.IsNullOrEmpty(jsonRes))
  351. // json 转 实体类
  352. sendData = System.Text.Json.JsonSerializer.Deserialize<SendData>(jsonRes);
  353. //await InitRawData("service/api/dcjt/12345To110/chainAlarm", base64String, jsonRes, sendData?.AlarmReceiptNumber);
  354. }
  355. bool bRun = true;
  356. if (!string.IsNullOrEmpty(sendData.StartDate) && !IsDate(sendData.StartDate))
  357. {
  358. bRun = false;
  359. apiR = DCJTDeResponse<string>.Failed(null, "【创建开始时间】不是日期格式 yyyy-MM-dd HH:mm:ss");
  360. }
  361. if (!string.IsNullOrEmpty(sendData.EndDate) && !IsDate(sendData.EndDate))
  362. {
  363. bRun = false;
  364. apiR = DCJTDeResponse<string>.Failed(null, "【创建结束时间】不是日期格式 yyyy-MM-dd HH:mm:ss");
  365. }
  366. if (bRun)
  367. {
  368. int takeNum = 10;
  369. if (!string.IsNullOrEmpty(sendData.StartDate) || !string.IsNullOrEmpty(sendData.EndDate))
  370. takeNum = 100;
  371. var listData = await _dsPoliceSendChainAlarmDcjtRepository.Queryable()
  372. .WhereIF(!string.IsNullOrEmpty(sendData.StartDate), p => p.CallPoliceTime >= Convert.ToDateTime(sendData.StartDate))
  373. .WhereIF(!string.IsNullOrEmpty(sendData.EndDate), p => p.CallPoliceTime <= Convert.ToDateTime(sendData.EndDate))
  374. .Select(p => new ChainAlarm_DCJTNewDto
  375. {
  376. LSH = p.SerialNumber,
  377. JJYBH = p.RegisterNo,
  378. JJYXM = p.RegisterName,
  379. JJDBH = p.AlarmReceiptNumber,
  380. BJDH = p.CallPoliceNumber,
  381. BJRXB = p.FromGender,
  382. BJDHYHM = p.CallPoliceName,
  383. LXDH = p.PhoneNumber,
  384. BJDZ = p.CallPoliceAddress,
  385. JQLBDM = p.PoliceTypeCode,
  386. JQLBMC = p.PoliceTypeName,
  387. BJNR = p.CallPoliceContent,
  388. GXDWDM = p.JurisdictionalUnitCode,
  389. GXDWMC = p.JurisdictionalUnitName,
  390. GXDWDH = p.JurisdictionalUnitNumber,
  391. BJSJ = p.CallPoliceTime,
  392. TSSJ = p.PushTime,
  393. JJDWDM = p.AlarmReceivingUnitCode,
  394. JJDWMC = p.AlarmReceivingUnitName,
  395. JJLX = p.AlarmReceptionType,
  396. XZQHDM = p.AreaCode
  397. })
  398. .OrderByDescending(p => p.TSSJ)
  399. .Take(takeNum)
  400. .ToListAsync();
  401. if (null == listData)
  402. apiR = DCJTDeResponse<string>.Failed(null);
  403. else
  404. {
  405. var daoShuDe = DaoShuDeResponse<List<ChainAlarm_DCJTNewDto>>.Succeed(listData, "调用成功");
  406. string jsonResultok = ModelToJson(daoShuDe);
  407. // 加密:json通过sm4加密转base64
  408. string base64ok = Sm4Crypto.Encrypt_ECB_Base64(sm4, jsonResultok);
  409. _logger.LogInformation($"输出:" + $"\r\n\r\nbase64:{base64ok}\r\nJson:{jsonResultok}");
  410. return OpenResponse.Ok(base64ok);
  411. }
  412. }
  413. }
  414. }
  415. catch (Exception)
  416. {
  417. apiR = DCJTDeResponse<string>.Failed(null, "接口异常");
  418. }
  419. #region 处理返回数据
  420. // 返回数据转Json
  421. string jsonResult = ModelToJson(apiR);
  422. // 加密:json通过sm4加密转base64
  423. string base64 = Sm4Crypto.Encrypt_ECB_Base64(sm4, jsonResult);
  424. _logger.LogInformation($"输出:" + $"\r\n\r\nbase64:{base64}\r\nJson:{jsonResult}");
  425. #endregion
  426. return OpenResponse.Ok(base64);
  427. }
  428. #endregion
  429. #region send-工单办结---12345将110推过来的工单办理结果推送给110
  430. /// <summary>
  431. /// 工单办结
  432. /// </summary>
  433. /// <returns></returns>
  434. [HttpPost("service/api/dcjt/12345To110/chainDeal")]
  435. [AllowAnonymous]
  436. public async Task<OpenResponse> ChainDeal_Send()
  437. {
  438. // 测试JSON
  439. // {"JJDBH":"510300202304070001202304070001","CZLX":"1"}
  440. // 测试Base64
  441. // 6RB6Hat8dpBfvCTtEpwotd/MlonxdmqZaa3TcLaua/xcjFv1SZJzKZPrhgsux63Gq/DXxtAQ25buLsI1fgFv3g==
  442. ConfigurationPoliceDCJT configurationPoliceDCJT = new();
  443. //根据不同地市州获取不同的配置信息
  444. if (_sharingConfigurationManager.IsCity(ConfigurationConsts.ZiGong))
  445. configurationPoliceDCJT = _sharingConfigurationManager.GetZiGongConfig().PoliceDCJT;
  446. string sm4 = configurationPoliceDCJT.token2_sm4_mw;
  447. var apiR = new DCJTDeResponse<string>();
  448. try
  449. {
  450. // 验证dcsm
  451. string dcsmMsg = CheckDcsm(Request.Headers["dcsm"].ToString(), configurationPoliceDCJT.token2_dcsm);
  452. if (!string.IsNullOrEmpty(dcsmMsg))
  453. {
  454. apiR = DCJTDeResponse<string>.Failed(null, dcsmMsg);
  455. }
  456. else
  457. {
  458. string base64String = await GetStreamBase64(HttpContext.Request);
  459. SendData sendData = new();
  460. if (!string.IsNullOrEmpty(base64String))
  461. {
  462. // 解密:base64通过sm4解密转json
  463. string jsonRes = Sm4Crypto.Decrypt_ECB_Base64(sm4, base64String);
  464. if (!string.IsNullOrEmpty(jsonRes))
  465. // json 转 实体类
  466. sendData = System.Text.Json.JsonSerializer.Deserialize<SendData>(jsonRes);
  467. //await InitRawData("service/api/dcjt/12345To110/chainDeal", base64String, jsonRes, sendData?.AlarmReceiptNumber);
  468. }
  469. bool bRun = true;
  470. if (!string.IsNullOrEmpty(sendData.StartDate) && !IsDate(sendData.StartDate))
  471. {
  472. bRun = false;
  473. apiR = DCJTDeResponse<string>.Failed(null, "【创建开始时间】不是日期格式 yyyy-MM-dd HH:mm:ss");
  474. }
  475. if (!string.IsNullOrEmpty(sendData.EndDate) && !IsDate(sendData.EndDate))
  476. {
  477. bRun = false;
  478. apiR = DCJTDeResponse<string>.Failed(null, "【创建结束时间】不是日期格式 yyyy-MM-dd HH:mm:ss");
  479. }
  480. if (bRun)
  481. {
  482. //默认查询20条,当有参数查询100条
  483. int takeNum = 20;
  484. if (!string.IsNullOrEmpty(sendData.StartDate) || !string.IsNullOrEmpty(sendData.EndDate))
  485. takeNum = 100;
  486. if (!string.IsNullOrEmpty(sendData.AlarmReceiptNumber))
  487. takeNum = 100;
  488. if (!string.IsNullOrEmpty(sendData.DisposalType))
  489. takeNum = 100;
  490. var listData = await _dsPoliceSendChainDealDcjtRepository.Queryable()
  491. .WhereIF(!string.IsNullOrEmpty(sendData.StartDate), p => p.WarehousingTime >= Convert.ToDateTime(sendData.StartDate))
  492. .WhereIF(!string.IsNullOrEmpty(sendData.EndDate), p => p.WarehousingTime <= Convert.ToDateTime(sendData.EndDate))
  493. .WhereIF(!string.IsNullOrEmpty(sendData.AlarmReceiptNumber), p => p.AlarmReceiptNumber == sendData.AlarmReceiptNumber)
  494. // .Where(p => p.DisposalType == sendData.DisposalType)
  495. .WhereIF(!string.IsNullOrEmpty(sendData.DisposalType), p => sendData.DisposalType.Contains(p.DisposalType))
  496. .Select(p => new ChainDeal_DCJTNewDto
  497. {
  498. JJDBH = p.AlarmReceiptNumber,
  499. FKSJ = p.FeedbackTime,
  500. CJCZQK = p.DisposalSituation,
  501. JQCLJGSM = p.ResultDescription,
  502. FKYBH = p.FeedbackPersonNumber,
  503. FKYXM = p.FeedbackPersonName,
  504. FKDWDM = p.FeedbackUnitCode,
  505. FKDWMC = p.FeedbackUnitName,
  506. TSSJ = p.WarehousingTime,
  507. HFSJ = p.RevisitTime,
  508. DHHFHSQK = p.CheckingContent,
  509. CLJGDM = p.VisitResult,
  510. CLJGMC = p.VisitContent,
  511. HANDLEUSERNAME = p.ReturnName,
  512. HANDLEBMNAME = p.ReturnUnit,
  513. HANDLEOPINION = p.ReturnOpinion,
  514. HANDLETIME = p.ReturnTime,
  515. CZLX = p.DisposalType,
  516. DYYY = p.CreatorName
  517. })
  518. .OrderByDescending(p => p.TSSJ)
  519. .Take(50)
  520. .ToListAsync();
  521. if (null == listData)
  522. apiR = DCJTDeResponse<string>.Failed(null);
  523. else
  524. {
  525. var daoShuDe = DCJTDeResponse<List<ChainDeal_DCJTNewDto>>.Succeed(listData, "调用成功");
  526. string jsonResultok = ModelToJson(daoShuDe);
  527. // 加密:json通过sm4加密转base64
  528. string base64ok = Sm4Crypto.Encrypt_ECB_Base64(sm4, jsonResultok);
  529. _logger.LogInformation($"输出:" + $"\r\n\r\nbase64:{base64ok}\r\nJson:{jsonResultok}");
  530. return OpenResponse.Ok(base64ok);
  531. }
  532. }
  533. }
  534. }
  535. catch (Exception)
  536. {
  537. apiR = DCJTDeResponse<string>.Failed(null, "接口异常");
  538. }
  539. // 返回数据转Json
  540. string jsonResult = ModelToJson(apiR);
  541. // 加密:json通过sm4加密转base64
  542. string base64 = Sm4Crypto.Encrypt_ECB_Base64(sm4, jsonResult);
  543. _logger.LogInformation($"输出:" + $"\r\n\r\nbase64:{base64}\r\nJson:{jsonResult}");
  544. return OpenResponse.Ok(base64);
  545. }
  546. #endregion
  547. #region send-知识库列表-已完成
  548. /// <summary>
  549. /// 查询知识库列表
  550. /// </summary>
  551. /// <returns></returns>
  552. [HttpPost("service/api/dcjt/get_knowledge_info")]
  553. [AllowAnonymous]
  554. public async Task<OpenResponse> Get_Knowledge_Info()
  555. {
  556. // 测试Json
  557. // {"createTimeBegin":"2003-04-07 10:59:14","createTimeEnd":"2023-12-07 10:59:21","keyWord":"市民"}
  558. // {"createTimeBegin":"2003-04-07 10:59:14","createTimeEnd":"2023-12-07 10:59:21","keyWord":""}
  559. // 测试Base64
  560. // sVGPN7BDsKnDLrd6NzrGx+2IH6vVAo6bjGSenIgCJATssZduYxBOLdQi7TVdsBCy7AGk15xjKRVe4AdovL6r49fxDvWjyDlxS8K4qkukEOtYs/VyP6WIdiKQL6PC3i/T
  561. // sVGPN7BDsKnDLrd6NzrGx+2IH6vVAo6bjGSenIgCJATssZduYxBOLdQi7TVdsBCy7AGk15xjKRVe4AdovL6r49fxDvWjyDlxS8K4qkukEOuaeRL4jMcFsN7HoUTHfDrk
  562. ConfigurationPoliceDCJT configurationPoliceDCJT = new();
  563. //根据不同地市州获取不同的配置信息
  564. if (_sharingConfigurationManager.IsCity(ConfigurationConsts.ZiGong))
  565. configurationPoliceDCJT = _sharingConfigurationManager.GetZiGongConfig().PoliceDCJT;
  566. string sm4 = configurationPoliceDCJT.token5_sm4_mw;
  567. var apiR = new DCJTDeResponse<string>();
  568. try
  569. {
  570. // 验证dcsm
  571. string dcsmMsg = CheckDcsm(Request.Headers["dcsm"].ToString(), configurationPoliceDCJT.token5_dcsm);
  572. if (!string.IsNullOrEmpty(dcsmMsg))
  573. {
  574. apiR = DCJTDeResponse<string>.Failed(dcsmMsg);
  575. }
  576. else
  577. {
  578. string base64String = await GetStreamBase64(HttpContext.Request);
  579. SendKnowledgeRequestDto sendKnowledge = new SendKnowledgeRequestDto();
  580. if (!string.IsNullOrEmpty(base64String))
  581. {
  582. // 解密:base64通过sm4解密转json
  583. string jsonRes = Sm4Crypto.Decrypt_ECB_Base64(sm4, base64String);
  584. if (!string.IsNullOrEmpty(jsonRes))
  585. // json 转 实体类
  586. sendKnowledge = System.Text.Json.JsonSerializer.Deserialize<SendKnowledgeRequestDto>(jsonRes);
  587. await InitRawData("service/api/dcjt/get_knowledge_info", base64String, jsonRes, null);
  588. }
  589. bool bRun = true;
  590. if (string.IsNullOrEmpty(sendKnowledge.createTimeBegin) || !IsDate(sendKnowledge.createTimeBegin))
  591. {
  592. bRun = false;
  593. apiR = DCJTDeResponse<string>.Failed("【创建开始时间】不是日期格式 yyyy-MM-dd HH:mm:ss");
  594. }
  595. if (string.IsNullOrEmpty(sendKnowledge.createTimeEnd) || !IsDate(sendKnowledge.createTimeEnd))
  596. {
  597. bRun = false;
  598. apiR = DCJTDeResponse<string>.Failed("【创建结束时间】不是日期格式 yyyy-MM-dd HH:mm:ss");
  599. }
  600. if (bRun)
  601. {
  602. var listData = await _dsKnowledgeRawDataRepository
  603. .Queryable()
  604. .WhereIF(!string.IsNullOrEmpty(sendKnowledge.createTimeBegin), p => p.CreatDate >= Convert.ToDateTime(sendKnowledge.createTimeBegin))
  605. .WhereIF(!string.IsNullOrEmpty(sendKnowledge.createTimeEnd), p => p.CreatDate <= Convert.ToDateTime(sendKnowledge.createTimeEnd))
  606. .WhereIF(!string.IsNullOrEmpty(sendKnowledge.keyWord), p => p.KName.Contains(sendKnowledge.keyWord))
  607. .OrderByDescending(p => p.CreatDate)
  608. .ToListAsync();
  609. if (null == listData)
  610. apiR = DCJTDeResponse<string>.Failed(null);
  611. else
  612. {
  613. var dto = _mapper.Map<IReadOnlyList<KnowledgeDto>>(listData);
  614. // 返回数据
  615. apiR = DCJTDeResponse<string>.Succeed(System.Text.Json.JsonSerializer.Serialize(dto), "调用成功");
  616. }
  617. }
  618. }
  619. }
  620. catch (Exception)
  621. {
  622. apiR = DCJTDeResponse<string>.Failed("接口异常");
  623. }
  624. #region 处理返回数据
  625. // 返回数据转Json
  626. string jsonResult = ModelToJson(apiR);
  627. // 加密:json通过sm4加密转base64
  628. string base64 = Sm4Crypto.Encrypt_ECB_Base64(sm4, jsonResult);
  629. #endregion
  630. return OpenResponse.Ok(base64);
  631. }
  632. #endregion
  633. #region send-知识库内容-已完成
  634. /// <summary>
  635. /// 查询知识库内容
  636. /// </summary>
  637. /// <returns></returns>
  638. [HttpPost("service/api/dcjt/get_knowledge_content")]
  639. [AllowAnonymous]
  640. public async Task<OpenResponse> Get_Knowledge_Content()
  641. {
  642. ConfigurationPoliceDCJT configurationPoliceDCJT = new();
  643. //根据不同地市州获取不同的配置信息
  644. if (_sharingConfigurationManager.IsCity(ConfigurationConsts.ZiGong))
  645. configurationPoliceDCJT = _sharingConfigurationManager.GetZiGongConfig().PoliceDCJT;
  646. string sm4 = configurationPoliceDCJT.token6_sm4_mw;
  647. var apiR = new DCJTDeResponse<string>();
  648. try
  649. {
  650. // 验证dcsm
  651. string dcsmMsg = CheckDcsm(Request.Headers["dcsm"].ToString(), configurationPoliceDCJT.token6_dcsm);
  652. if (!string.IsNullOrEmpty(dcsmMsg))
  653. apiR = DCJTDeResponse<string>.Failed(dcsmMsg);
  654. else
  655. {
  656. string base64String = await GetStreamBase64(HttpContext.Request);
  657. SendKnowledgeRequestDto sendKnowledge = new SendKnowledgeRequestDto();
  658. if (!string.IsNullOrEmpty(base64String))
  659. {
  660. // 解密:base64通过sm4解密转json
  661. string jsonRes = Sm4Crypto.Decrypt_ECB_Base64(sm4, base64String);
  662. if (!string.IsNullOrEmpty(jsonRes))
  663. // json 转 实体类
  664. sendKnowledge = System.Text.Json.JsonSerializer.Deserialize<SendKnowledgeRequestDto>(jsonRes);
  665. await InitRawData("service/api/dcjt/get_knowledge_content", base64String, jsonRes, null);
  666. }
  667. if (string.IsNullOrEmpty(sendKnowledge.id))
  668. {
  669. apiR = DCJTDeResponse<string>.Failed("【知识库ID】不能为空");
  670. }
  671. else
  672. {
  673. var data = await _dsKnowledgeRawDataRepository.GetAsync(p => p.Id == sendKnowledge.id);
  674. if (null == data)
  675. apiR = DCJTDeResponse<string>.Failed(null);
  676. else
  677. {
  678. var dto = _mapper.Map<KnowledgeContent>(data);
  679. // 返回数据
  680. apiR = DCJTDeResponse<string>.Succeed(System.Text.Json.JsonSerializer.Serialize(dto), "调用成功");
  681. }
  682. }
  683. }
  684. }
  685. catch (Exception)
  686. {
  687. apiR = DCJTDeResponse<string>.Failed("接口异常");
  688. }
  689. #region 处理返回数据
  690. // 返回数据转Json
  691. string jsonResult = ModelToJson(apiR);
  692. // 加密:json通过sm4加密转base64
  693. string base64 = Sm4Crypto.Encrypt_ECB_Base64(sm4, jsonResult);
  694. #endregion
  695. return OpenResponse.Ok(base64);
  696. }
  697. #endregion
  698. #region 私有方法
  699. #region 工单办结
  700. /// <summary>
  701. /// 工单办结
  702. /// </summary>
  703. /// <param name="policeReceiveChainDealDs"></param>
  704. /// <returns></returns>
  705. private async Task InitChainDeal(ChainDeal_DCJT policeReceiveChainDealDs)
  706. {
  707. var checkDataDeal = await _dsPoliceSendChainAlarmDcjtRepository.GetAsync(p => p.AlarmReceiptNumber == policeReceiveChainDealDs.AlarmReceiptNumber && p.AlarmReceptionType == "0", HttpContext.RequestAborted);
  708. if (checkDataDeal is null)
  709. {
  710. //写入对外展示表数据
  711. DsReceiveHandleData dsReceive = new()
  712. {
  713. OrderNo = policeReceiveChainDealDs.AlarmReceiptNumber,
  714. Source = "110平台",
  715. PlatformsName = "110平台",
  716. ReceiveData = System.Text.Json.JsonSerializer.Serialize(policeReceiveChainDealDs)
  717. };
  718. if (policeReceiveChainDealDs.DisposalType == "1")//正常办理
  719. {
  720. dsReceive.OperationType = "110推送办理结果";
  721. dsReceive.Opinion = policeReceiveChainDealDs.DisposalSituation;
  722. }
  723. else if (policeReceiveChainDealDs.DisposalType == "2")//退回
  724. {
  725. dsReceive.OperationType = "110退回";
  726. dsReceive.Opinion = policeReceiveChainDealDs.ReturnOpinion;
  727. }
  728. else if (policeReceiveChainDealDs.DisposalType == "3")//回访
  729. {
  730. var orgProcessingResults = policeReceiveChainDealDs.VisitResult switch
  731. {
  732. "1" => "非常满意",//非常满意
  733. "2" => "满意",//满意
  734. "3" => "不满意",//不满意
  735. _ => "满意",
  736. };
  737. dsReceive.OperationType = "110回访内容";
  738. dsReceive.Opinion = "回访时间:" + policeReceiveChainDealDs.RevisitTime + "/br回访内容:" + policeReceiveChainDealDs.VisitContent + "/br回访方式:人工回访/br满意度" + orgProcessingResults;
  739. }
  740. await _dsReceiveHandleDataRepository.AddAsync(dsReceive, HttpContext.RequestAborted);
  741. return;
  742. }
  743. if (policeReceiveChainDealDs.DisposalType == "1")//正常办理
  744. {
  745. OrderResultDto orderResultDto = new()
  746. {
  747. OrderId = checkDataDeal.OrderId,
  748. FinishType = "1",
  749. Opinion = policeReceiveChainDealDs.DisposalSituation,
  750. Source = "110"
  751. };
  752. await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderReultSend, orderResultDto, cancellationToken: HttpContext.RequestAborted);
  753. }
  754. else if (policeReceiveChainDealDs.DisposalType == "2")//退回
  755. {
  756. OrderResultDto orderResultDto = new()
  757. {
  758. OrderId = checkDataDeal.OrderId,
  759. FinishType = "0",
  760. Opinion = policeReceiveChainDealDs.ReturnOpinion,
  761. Source = "110"
  762. };
  763. //向业务系统推送消息
  764. await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderReultSend, orderResultDto, cancellationToken: HttpContext.RequestAborted);
  765. }
  766. else if (policeReceiveChainDealDs.DisposalType == "3")//回访
  767. {
  768. ProvinceOrderVisitDto orderVisitDto = new()
  769. {
  770. ProvinceNo = checkDataDeal.OrderId,
  771. VisitTime = Convert.ToDateTime(policeReceiveChainDealDs.RevisitTime),
  772. VisitContent = policeReceiveChainDealDs.VisitContent,
  773. // OrgProcessingResults = policeReceiveChainDealDs.VisitResult,
  774. VisitType = EVisitType.ArtificialVisit
  775. };
  776. orderVisitDto.OrgProcessingResults = policeReceiveChainDealDs.VisitResult switch
  777. {
  778. "1" => "5",//非常满意
  779. "2" => "4",//满意
  780. "3" => "2",//不满意
  781. _ => "4",
  782. };
  783. //向业务系统推送消息
  784. await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.SharingOrderEvlResult, orderVisitDto, cancellationToken: HttpContext.RequestAborted);
  785. }
  786. else if (policeReceiveChainDealDs.DisposalType == "4" || policeReceiveChainDealDs.DisposalType == "5")
  787. {
  788. //自贡独有业务,目前不需要处理(老系统未处理),4警情签收,5结果签收
  789. }
  790. }
  791. #endregion
  792. #region 写入原始数据
  793. /// <summary>
  794. /// 写入原始数据
  795. /// </summary>
  796. /// <param name="externalId"></param>
  797. /// <param name="serviceInterface"></param>
  798. /// <param name="receiveRawData"></param>
  799. /// <param name="receiveData"></param>
  800. /// <returns></returns>
  801. private async Task<string> InitRawData(string serviceInterface, string receiveRawData, string receiveData, string? externalId)
  802. {
  803. DsReceivePoliceData dsReceivePoliceData = new()
  804. {
  805. ExternalId = externalId,
  806. ServiceInterface = serviceInterface,
  807. ReceiveRawData = receiveRawData,
  808. ReceiveData = receiveData,
  809. PoliceSource = EPoliceSource.DCJT
  810. };
  811. return await _dsReceivePoliceDataRepository.AddAsync(dsReceivePoliceData, HttpContext.RequestAborted);
  812. }
  813. #endregion
  814. #region 获取RAW传入的Base64_Json
  815. /// <summary>
  816. /// 获取RAW传入的Base64_Json
  817. /// </summary>
  818. /// <param name="request"></param>
  819. /// <returns></returns>
  820. private static async Task<string> GetStreamBase64(HttpRequest request)
  821. {
  822. string base64String = "";
  823. try
  824. {
  825. request.EnableBuffering();
  826. request.Body.Position = 0;
  827. using (var stream = new StreamReader(request.Body, Encoding.UTF8))
  828. {
  829. base64String = await stream.ReadToEndAsync();
  830. }
  831. }
  832. catch (Exception)
  833. {
  834. }
  835. return base64String;
  836. }
  837. #endregion
  838. #region 验证DCSM是否正确
  839. /// <summary>
  840. /// 验证DCSM是否正确
  841. /// </summary>
  842. /// <param name="headrs"></param>
  843. /// <param name="dcsmIn"></param>
  844. /// <returns></returns>
  845. private static string CheckDcsm(string headrs, string dcsmIn)
  846. {
  847. string result = "";
  848. string dcsm = "";
  849. try
  850. {
  851. dcsm = headrs.ToString();
  852. if (dcsm != dcsmIn)
  853. {
  854. result = "【dcsm】错误";
  855. }
  856. }
  857. catch (Exception)
  858. {
  859. result = "【dcsm】不能为空";
  860. }
  861. return result;
  862. }
  863. #endregion
  864. #region 验证日期
  865. private static bool IsDate(string strDate)
  866. {
  867. try
  868. {
  869. if (strDate.Contains('.') == true || strDate.Contains(',') == true)
  870. {
  871. return false;
  872. }
  873. DateTime.Parse(strDate); //不是字符串时会出现异常
  874. return true;
  875. }
  876. catch
  877. {
  878. return false;
  879. }
  880. }
  881. #endregion
  882. #region 转Json
  883. /// <summary>
  884. /// 转Json
  885. /// </summary>
  886. /// <param name="obj"></param>
  887. /// <returns></returns>
  888. private static string ModelToJson(object obj)
  889. {
  890. string jsonstr = "";
  891. try
  892. {
  893. IsoDateTimeConverter timejson = new IsoDateTimeConverter
  894. {
  895. DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss"
  896. //如果是年月日的话就是 :DateTimeFormat = "yyyy'-'MM'-'dd" 注意第一个y前面没有单引号 最后一个d后面也没有单引号
  897. };
  898. jsonstr = JsonConvert.SerializeObject(obj, timejson);
  899. }
  900. catch (Exception)
  901. {
  902. }
  903. return jsonstr;
  904. }
  905. #endregion
  906. #endregion
  907. }
  908. }