PoliceDCJTController.cs 47 KB

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