using DataSharing.FwDataExchange; using DataSharing.Province; using DataSharing.RawData; using DataSharing.Share.Dtos; using DataSharing.Share.Dtos.FwDataExchange; using DataSharing.Share.Dtos.HotlineSetting; using DataSharing.Share.Dtos.Province; using DataSharing.Share.Dtos.Province.XieTong.Receive; using DotNetCore.CAP; using Fw.Utility.UnifyResponse; using Hotline.Api.Sdk; using Hotline.Share.Dtos.DataSharing.PusherHotlineDto; using Hotline.Share.Dtos.File; using Hotline.Share.Dtos.Order; using MapsterMapper; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using XF.Domain.Filters; using XF.Domain.Repository; namespace DataSharing.Host.Controllers { /// /// 下行,省平台调用 /// public class ProvinceController : BaseController { #region 注入 private readonly IMapper _mapper; private readonly IMediator _mediator; private readonly ICapPublisher _capPublisher; private readonly IChannelConfigurationManager _channelConfigurationManager; private readonly IRepository _dataOrderRepository; private readonly IRepository _dsReceiveProvinceDataRepository; private readonly IRepository _getCaseMaterialInfoRepository; private readonly IRepository _getCaseBackApplyRepository; private readonly IRepository _sendCaseInfoRepository; private readonly XieTongClient _xieTongClient; private readonly FwClient _fwClient; private readonly IRepository _sendFwErrorDataRepository; private readonly IHotlineClient _hotlineClient; /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// public ProvinceController(IMapper mapper, IMediator mediator, ICapPublisher capPublisher, IChannelConfigurationManager channelConfigurationManager, IRepository dataOrderRepository, IRepository dsReceiveProvinceDataRepository, IRepository getCaseMaterialInfoRepository, IRepository getCaseBackApplyRepository, IRepository sendCaseInfoRepository, XieTongClient xieTongClient, FwClient fwClient, IRepository sendFwErrorDataRepository, IHotlineClient hotlineClient) { _mapper = mapper; _mediator = mediator; _capPublisher = capPublisher; _channelConfigurationManager = channelConfigurationManager; _dataOrderRepository = dataOrderRepository; _dsReceiveProvinceDataRepository = dsReceiveProvinceDataRepository; _getCaseMaterialInfoRepository = getCaseMaterialInfoRepository; _getCaseBackApplyRepository = getCaseBackApplyRepository; _sendCaseInfoRepository = sendCaseInfoRepository; _xieTongClient = xieTongClient; _fwClient = fwClient; _sendFwErrorDataRepository = sendFwErrorDataRepository; _hotlineClient = hotlineClient; } #endregion /// /// 根据账号、秘钥获取token授权 /// /// 账号 /// 密码 /// [HttpGet("api/token")] [AllowAnonymous] public async Task GetToken(string ClientID, string Secret) { ProvinceTokenInfo tokenInfo = new ProvinceTokenInfo() { ExpiresIn = 36000, Token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOm51bGwsImV4cCI6MTcwNTMxMzk5OS4wLCJzdWIiOm51bGwsImF1ZCI6bnVsbCwibmJmIjowLjAsImlhdCI6MTcwNTMwNjc5OS4wLCJqdGkiOm51bGwsImRhdGEiOiIyQTlEM0U4RUZGMEUwMkFCRDE3QTgwRkEzNjhDRTUyNzk4OTUxNTI0OURGQzc5MDJFNzFFQ0I2NTBCQ0E5RTU3RDM1QkVEM0I5RDBBMkZFOEM3ODNBNDVCRTk5RTk2MTlGMzI5M0IxMTk4RTZFQjVDQjMzNDY3QjI1MDcyREZFREY1RURGM0YxMTUzNTgwMUMzMTBBN0Y5OTk1ODgxMTEwMzU0OEM4MzJBOUFBQ0FCREY3REI2NTVFNTM1MzEwRDZGRTczMzM5NUIyQ0I0MDAxNzI5RUI5QjhDNDU2QzdFNDExNDJCMTNDRUU2RDQyQ0NFOUYwQzUwRDZFRTc5MTFDMzE4RjRGRjM5N0QwN0I0QjEyMDRCODFGRENENUVFQzM0MzM4NkI2ODhBQkM2QzBDMzIzMjcxN0ZFOUVFRTVEMjI3MTM4RUFERDJGQ0M3Mzg4MTg2NzI0RjcyQTFDNDA1Q0RDOEMxQkQzMUE4RDZBRkU1MkE4M0RFMjNCOTQxMjQwN0IyNDhDOTM2RTE2RjcyMTU3Q0ExQjJBRDkwNTM0QTVDOUIyMDE0MjU5QUYyMDI4MTM5QkZDNDk0RkFDN0Y5RkExODIzNDcyRDNGNjUwRjQzQTZCOTQwQTVGRDJBRjg2M0Q2M0FBQzlDMzA3OEY1NTk5RjZFNTUyNzE2N0U0RDY4NTMzNTQ0MzBFRTBBMzVCNkZCMkE5RkRENjI5M0E4RTU1N0M2NzFCOEE2QTRCOTM5MjkxNDJCMjIxODQwNDFCOEM4NzUwODU0RjJEQTJDOTNGOTg5MkY3QzRGNUIyRjhDMThDQUU3Q0E3NjAwNzIxNzg3RTY1QTc4RUUyNTc5RkY0NTg0MkYyQzE5MTE0QkRGMDA0MEI2MzY3NUM2NzU1QjIyNDE5OERBOEEwNjM1NENFOTA2OUVENEU3OEJGQUE1QTdCNzQ5RDc0NEE5RDdGN0JFRjQ0QzM0ODYyQjk0MkY0MTFGMDEyQ0Q3NkVGODlFMkM4QzQ3ODYwQ0UzQzFBMjgwNDhBRkJEMjM4OUE0NjhFNDJCRUM1QzZBMjFFRERDMDc1RDhFQTU1NUMxNjFBMTAyNTA4NjJCMTBCQjkxRjlGREUyRDZGMTg5QTk0ODA4MzY1N0JDQTVGNjY3RERGMDNCMzQ3RTI3QzU3RkZGQThFMkRERDUwMDQ3QTY1RUYzOTMzQjRBQ0QxQkVGODNBQUI5RTUwNEQ2NjIwMzdGRkUwNzkzRUU0M0Y4QTRGRThEREU0NjVFRTM2N0UxNzFBN0Q5QTMyRjBCRjkzNzJENDkzQ0YwNkEyRjJBQzg0QUQ4NkYyRUUzM0QyQjFCNUM0NDZDMjgzNDkxQzc2RDA1ODUzODE0NDhCNTFBMUM2RDI5QTkxODNCQTE4MzREMjZGRUM0RTQ4MjI1QzY1RjM3OTcyNDU5MTM1QzdFODI0NUUwN0FFRUQyOUIwQzA0NjY3RUQ4OEZDRjEwNjgwRUVEOTUyOTQ4Q0E5NkEyNEZFNDRGRjJFQzhCQTg4MDlGRkY1MTE1QUQwOTQ4RjI5NkUzNzc4RUU0RTA1Q0ExRDM4MjA2NTg2NjM5NENDMDBFREYyMkUzNDM5MUM4RUFFQTREMzNBMUU2OTNCRUZDODlCMjE0NjE2QjQ4MEQ3RkRGODJDNDQwOThGMzAwRUQwOEU5Q0QzMDUzQURFQzJERjE1Nzc2REY1MDU0MzZBRDIxN0E1RkEyNENDNDk2MkNFQ0M1MUEzQkY3N0UyNEI4QkE1MEUwMDM0RTY5MkU0MERCRUE0QjY4RjM0MDU1MzM0OUJGOTcxRkIyMUFERDdDRjQ2QjMyRTlDQ0YyOEZDNjNBN0JCQzE2RjAzQ0I5MUM0QUQ2NkU5RDFDN0ZERjg0QTA5NzYyMTlGRDYzNjYyNjQ0MzM3NTgwNDlBRDIxQzNGRTA4In0.4go4bsCWwFjtm2IkJ6bxL76EQknBUuMpgUrRGmAYy2g" }; return OpenResponse.Ok(GetDataBaseReponse.Success(tokenInfo, "授权成功")); } /// /// 测试省上Token /// /// [HttpGet("test/getprovincetoken")] [AllowAnonymous] public async Task GetProvinceToken() { //获取附件上传Token string strToken = await _xieTongClient.GetTokenAsync(HttpContext.RequestAborted); string strToken1 = await _xieTongClient.GetTokenAsync(HttpContext.RequestAborted); string strToken2 = await _xieTongClient.GetTokenAsync(HttpContext.RequestAborted); List str = new List { strToken, strToken1, strToken2 }; return OpenResponse.Ok(GetDataBaseReponse>.Success(str, "查询成功")); } /// /// 服务工单交办接口--已完成-----1 /// /// /// [HttpPost("rest/receive_case_info")] [AllowAnonymous] public async Task ReceiveCaseInfo([FromBody] ReceiveCaseInfoRequest receiveCaseInfo) { // 验证 if (receiveCaseInfo is null || receiveCaseInfo.paras is null) { return OpenResponse.Ok(GetDataBaseReponse.Failed("数据解析失败")); } //验证接收的数据是否正确 string strResult = receiveCaseInfo.paras.Validate(); if (!string.IsNullOrEmpty(strResult)) return OpenResponse.Ok(GetDataBaseReponse.Failed(strResult)); //转换数据 var dto = receiveCaseInfo.paras; var id = await InitReceiveProvinceData(dto.CaseSerial, dto.CliengGuid, "receive_case_info", System.Text.Json.JsonSerializer.Serialize(dto)); //处理组装数据,推送数据 var data = _mapper.Map(dto); data.IsProvince = true; if (dto.CaseSource.ToLower() == "zmhd".ToLower()) { data.SourceChannel = "省政民互动"; data.SourceChannelCode = "SZMHD"; if (dto.TrowGuid == "【政民互动直派】") data.IsProvince = false; } else { data.SourceChannel = "省12345平台"; data.SourceChannelCode = "S12345"; } data.Source = Hotline.Share.Enums.Order.ESource.ProvinceStraight; //处理性别 data.FromGender = dto.AppLicantSex switch { "0" => Hotline.Share.Enums.Order.EGender.Female, "1" => Hotline.Share.Enums.Order.EGender.Male, "2" => Hotline.Share.Enums.Order.EGender.Unknown, _ => Hotline.Share.Enums.Order.EGender.Unknown, }; //处理证件类型 switch (dto.CertifiCateType) { case "10": data.LicenceTypeCode = "10"; break; case "20": data.LicenceTypeCode = "40"; break; case "30": data.LicenceTypeCode = "55"; break; case "40": data.LicenceTypeCode = "57"; break; } data.AcceptTypeCode = dto.CaseType; //处理紧急程度 switch (dto.CaseIsUrgent) { case "10": data.EmergencyLevel = Hotline.Share.Enums.Order.EEmergencyLevel.QuiteEmergency; break; case "20": data.EmergencyLevel = Hotline.Share.Enums.Order.EEmergencyLevel.Emergency; break; case "30": data.EmergencyLevel = Hotline.Share.Enums.Order.EEmergencyLevel.Normal; break; } //经纬度处理 var lngLat = dto.CaseLngLat.Split(','); if (lngLat != null && lngLat.Length == 2) { data.Longitude = Convert.ToDouble(lngLat[0]); data.Latitude = Convert.ToDouble(lngLat[1]); } if (data.Contact == "信息保密") data.Contact = ""; if (!string.IsNullOrEmpty(id)) { data.Files = await GetFileData(dto.CliengGuid, dto.CaseSerial, "受理上传"); //await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderCreation, data, cancellationToken: HttpContext.RequestAborted); //var result = await _hotlineClient.ReceiveOrderAsync(data, HttpContext.RequestAborted); var result = await _fwClient.RequestNoTokenAsync("api/v1/Order/add-anonymous", "Post", System.Text.Json.JsonSerializer.Serialize(data)); return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } else return OpenResponse.Ok(GetDataBaseReponse.Failed("接口调用失败!")); } /// /// 服务工单退回反馈接口--已完成-----1 /// /// 退回反馈 /// [HttpPost("get_case_back_result")] [AllowAnonymous] public async Task GetCaseBackResult([FromBody] GetCaseBackResultRequest receiveBackResult) { // 验证 if (receiveBackResult is null || receiveBackResult.paras is null) return OpenResponse.Ok(GetDataBaseReponse.Failed("数据解析失败")); //验证接收的数据是否正确 string strResult = receiveBackResult.paras.Validate(); if (!string.IsNullOrEmpty(strResult)) OpenResponse.Ok(GetDataBaseReponse.Failed(strResult)); //推送老系统数据 var isCheck = await SendDataFw(receiveBackResult.paras.CaseSerial, "api/receive/get_case_back_result", System.Text.Json.JsonSerializer.Serialize(receiveBackResult), "Post"); if (isCheck) { return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } //转换数据 var dto = receiveBackResult.paras; var data = await _getCaseBackApplyRepository.GetAsync(p => p.CaseSerial == dto.CaseSerial, HttpContext.RequestAborted); if (data == null) return OpenResponse.Ok(GetDataBaseReponse.Failed("接口调用失败!")); //添加数据 var id = await InitReceiveProvinceData(dto.CaseSerial, dto.CliengGuid, "get_case_back_result", System.Text.Json.JsonSerializer.Serialize(dto)); if (!string.IsNullOrEmpty(id)) { var dataBack = new OrderSendBackResultDto() { Id = data.OrderSendBackId, Reason = dto.BackReason, Result = dto.Result == "1" ? 1 : 0 }; //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderReturnFeedback, dataBack, cancellationToken: HttpContext.RequestAborted); return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } else return OpenResponse.Ok(GetDataBaseReponse.Failed("接口调用失败!")); } /// /// 督办工单派发接口--已完成-----1 /// /// 督办工单对象 /// [HttpPost("send_supervise_info")] [AllowAnonymous] public async Task SendSuperviseInfo([FromBody] SendSuperviseInfoRequest receiveSendSuperviseInfo) { // 验证 if (receiveSendSuperviseInfo is null || receiveSendSuperviseInfo.paras is null) return OpenResponse.Ok(GetDataBaseReponse.Failed("数据解析失败")); string strResult = receiveSendSuperviseInfo.paras.Validate(); if (!string.IsNullOrEmpty(strResult)) return OpenResponse.Ok(GetDataBaseReponse.Failed(strResult)); //推送老系统数据 var isCheck = await SendDataFw(receiveSendSuperviseInfo.paras.CaseSerial, "api/receive/send_supervise_info", System.Text.Json.JsonSerializer.Serialize(receiveSendSuperviseInfo), "Post"); if (isCheck) { return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } //转换数据 var dto = receiveSendSuperviseInfo.paras; //添加数据 var id = await InitReceiveProvinceData(dto.CaseSerial, dto.CliengGuid, "send_supervise_info", System.Text.Json.JsonSerializer.Serialize(dto)); if (!string.IsNullOrEmpty(id)) { ProvinceSendOrderSuperviseDto orderSuperviseDto = new ProvinceSendOrderSuperviseDto() { ProvinceOrderSuperviseDto = _mapper.Map(dto), Files = await GetFileData(dto.CliengGuid, dto.CaseSerial, "督办工单派发") }; //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderSupervise, orderSuperviseDto, cancellationToken: HttpContext.RequestAborted); return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } else return OpenResponse.Ok(GetDataBaseReponse.Failed("接口调用失败!")); } /// /// 服务工单催单接口--已完成-----1 /// /// 催单对象 /// [HttpPost("remind_case_info")] [AllowAnonymous] public async Task RemindCaseInfo([FromBody] RemindCaseInfoRequest receiveRemindCaseInfo) { // 验证 if (receiveRemindCaseInfo is null || receiveRemindCaseInfo.paras is null) return OpenResponse.Ok(GetDataBaseReponse.Failed("数据解析失败")); string strResult = receiveRemindCaseInfo.paras.Validate(); if (!string.IsNullOrEmpty(strResult)) return OpenResponse.Ok(GetDataBaseReponse.Failed(strResult)); //推送老系统数据 var isCheck = await SendDataFw(receiveRemindCaseInfo.paras.CaseSerial, "api/receive/remind_case_info", System.Text.Json.JsonSerializer.Serialize(receiveRemindCaseInfo), "Post"); if (isCheck) { return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } //转换数据 var dto = receiveRemindCaseInfo.paras; //添加数据 var id = await InitReceiveProvinceData(dto.CaseSerial, dto.CliengGuid, "remind_case_info", System.Text.Json.JsonSerializer.Serialize(dto)); if (!string.IsNullOrEmpty(id)) { var data = _mapper.Map(dto); data.Files = await GetFileData(dto.CliengGuid, dto.CaseSerial, "工单催单"); //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderRemind, data, cancellationToken: HttpContext.RequestAborted); return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } else return OpenResponse.Ok(GetDataBaseReponse.Failed("接口调用失败!")); } /// /// 服务工单甄别结果接口--已完成-----1 /// /// 服务工单甄别结果对象 /// [HttpPost("screen_case_result_receive")] [AllowAnonymous] public async Task ScreenCaseResultReceive([FromBody] ScreenCaseResultReceiveRequest receiveScreenCaseResultReceive) { // 验证 if (receiveScreenCaseResultReceive is null || receiveScreenCaseResultReceive.paras is null) return OpenResponse.Ok(GetDataBaseReponse.Failed("数据解析失败")); string strResult = receiveScreenCaseResultReceive.paras.Validate(); if (!string.IsNullOrEmpty(strResult)) return OpenResponse.Ok(GetDataBaseReponse.Failed(strResult)); //推送老系统数据 var isCheck = await SendDataFw(receiveScreenCaseResultReceive.paras.CaseSerial, "api/receive/screen_case_result_receive", System.Text.Json.JsonSerializer.Serialize(receiveScreenCaseResultReceive), "Post"); if (isCheck) { return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } //转换数据 var dto = receiveScreenCaseResultReceive.paras; //添加数据 var id = await InitReceiveProvinceData(dto.CaseSerial, dto.CliengGuid, "screen_case_result_receive", System.Text.Json.JsonSerializer.Serialize(dto)); if (!string.IsNullOrEmpty(id)) { ProvinceSendScreenResultDto screenResultDto = new ProvinceSendScreenResultDto() { ProvinceScreenResult = _mapper.Map(dto), Files = await GetFileData(dto.CliengGuid, dto.CaseSerial, "工单甄别结果") }; //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderScreen, screenResultDto, cancellationToken: HttpContext.RequestAborted); return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } else return OpenResponse.Ok(GetDataBaseReponse.Failed("接口调用失败!")); } /// /// 服务工单延时审核结果接口---已完成-----1 /// /// 延时审核结果对象 /// [HttpPost("delay_case_result_receive")] [AllowAnonymous] public async Task DelayCaseResultReceive([FromBody] DelayCaseResultRequest receiveDelayCaseResult) { // 验证 if (receiveDelayCaseResult is null || receiveDelayCaseResult.paras is null) return OpenResponse.Ok(GetDataBaseReponse.Failed("数据解析失败")); string strResult = receiveDelayCaseResult.paras.Validate(); if (!string.IsNullOrEmpty(strResult)) return OpenResponse.Ok(GetDataBaseReponse.Failed(strResult)); //推送老系统数据 var isCheck = await SendDataFw(receiveDelayCaseResult.paras.CaseSerial, "api/receive/delay_case_result_receive", System.Text.Json.JsonSerializer.Serialize(receiveDelayCaseResult), "Post"); if (isCheck) { return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } //转换数据 var dto = receiveDelayCaseResult.paras; //添加数据 var id = await InitReceiveProvinceData(dto.CaseSerial, dto.CliengGuid, "delay_case_result_receive", System.Text.Json.JsonSerializer.Serialize(dto)); if (!string.IsNullOrEmpty(id)) { var listFiles = await GetFileData(dto.CliengGuid, dto.CaseSerial, "工单延期审核结果"); ProvinceSendDelayResultDto delayResultDto = new() { IsPass = dto.AuditResult == "1", Opinion = dto.AuditOpinion, No = dto.CaseSerial, Files = listFiles }; //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderDelayResult, delayResultDto, cancellationToken: HttpContext.RequestAborted); return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } else return OpenResponse.Ok(GetDataBaseReponse.Failed("接口调用失败!")); } /// /// 服务工单交办补充诉求接口---已完成-----1 /// /// 交办补充诉求对象 /// [HttpPost("supply_case_info_receive")] [AllowAnonymous] public async Task SupplyCaseInfoReceive([FromBody] SupplyCaseInfoRequest receiveSupplyCaseInfo) { // 验证 if (receiveSupplyCaseInfo is null || receiveSupplyCaseInfo.paras is null) return OpenResponse.Ok(GetDataBaseReponse.Failed("数据解析失败")); string strResult = receiveSupplyCaseInfo.paras.Validate(); if (!string.IsNullOrEmpty(strResult)) return OpenResponse.Ok(GetDataBaseReponse.Failed(strResult)); //推送老系统数据 var isCheck = await SendDataFw(receiveSupplyCaseInfo.paras.CaseSerial, "api/receive/supply_case_info_receive", System.Text.Json.JsonSerializer.Serialize(receiveSupplyCaseInfo), "Post"); if (isCheck) { return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } //转换数据 var dto = receiveSupplyCaseInfo.paras; //添加数据 var id = await InitReceiveProvinceData(dto.CaseSerial, dto.CliengGuid, "supply_case_info_receive", System.Text.Json.JsonSerializer.Serialize(dto)); if (!string.IsNullOrEmpty(id)) { //向业务系统推送消息 var dataOrder = await _dataOrderRepository.GetAsync(p => p.ProvinceNo == dto.CaseSerial, HttpContext.RequestAborted); if (dataOrder != null) { var listFiles = await GetFileData(dto.CliengGuid, dto.CaseSerial, "工单补充"); OrderComplementDto complementDto = new OrderComplementDto { Opinion = dto.SupplyContent, OrderId = dataOrder.OrderId, Files = listFiles }; //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderSupplements, complementDto, cancellationToken: HttpContext.RequestAborted); } return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } else return OpenResponse.Ok(GetDataBaseReponse.Failed("接口调用失败!")); } /// /// 服务工单撤单接口---已完成-----1 /// /// 撤单对象 /// [HttpPost("revoke_case_info")] [AllowAnonymous] public async Task RevokeCaseInfo([FromBody] RevokeCaseInfoRequest receiveRevokeCaseInfo) { // 验证 if (receiveRevokeCaseInfo is null || receiveRevokeCaseInfo.paras is null) return OpenResponse.Ok(GetDataBaseReponse.Failed("数据解析失败")); string strResult = receiveRevokeCaseInfo.paras.Validate(); if (!string.IsNullOrEmpty(strResult)) return OpenResponse.Ok(GetDataBaseReponse.Failed(strResult)); //推送老系统数据 var isCheck = await SendDataFw(receiveRevokeCaseInfo.paras.CaseSerial, "api/receive/revoke_case_info", System.Text.Json.JsonSerializer.Serialize(receiveRevokeCaseInfo), "Post"); if (isCheck) { return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } //转换数据 var dto = receiveRevokeCaseInfo.paras; //添加数据 var id = await InitReceiveProvinceData(dto.CaseSerial, dto.CliengGuid, "revoke_case_info", System.Text.Json.JsonSerializer.Serialize(dto)); if (!string.IsNullOrEmpty(id)) { var data = await _dataOrderRepository.GetAsync(p => p.ProvinceNo == dto.CaseSerial, HttpContext.RequestAborted); if (data != null) { CancelOrderDto cancelOrder = new() { Opinion = dto.RevokeReasion, OrderId = data.OrderId }; //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderRevoke, cancelOrder, cancellationToken: HttpContext.RequestAborted); } return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } else return OpenResponse.Ok(GetDataBaseReponse.Failed("接口调用失败!")); } /// /// 服务工单预警接口 /// /// 预警对象 /// [HttpPost("send_warn_info")] [AllowAnonymous] public async Task SendWarnInfo([FromBody] SendWarnInfoRequest receiveSendWarnInfo) { // 验证 if (receiveSendWarnInfo is null || receiveSendWarnInfo.paras is null) return OpenResponse.Ok(GetDataBaseReponse.Failed("数据解析失败")); string strResult = receiveSendWarnInfo.paras.Validate(); if (!string.IsNullOrEmpty(strResult)) return OpenResponse.Ok(GetDataBaseReponse.Failed(strResult)); //推送老系统数据 var isCheck = await SendDataFw(receiveSendWarnInfo.paras.CaseSerial, "api/receive/send_warn_info", System.Text.Json.JsonSerializer.Serialize(receiveSendWarnInfo), "Post"); if (isCheck) { return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } //转换数据 var dto = receiveSendWarnInfo.paras; //添加数据 var id = await InitReceiveProvinceData(dto.CaseSerial, null, "send_warn_info", System.Text.Json.JsonSerializer.Serialize(dto)); if (!string.IsNullOrEmpty(id)) { //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderWarning, _mapper.Map(dto), cancellationToken: HttpContext.RequestAborted); return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } else return OpenResponse.Ok(GetDataBaseReponse.Failed("接口调用失败!")); } /// /// 交办工单满意度接收接口---已完成-----1 /// /// 交办工单满意度对象 /// [HttpPost("send_case_evl_result")] [AllowAnonymous] public async Task SendCaseEvlResult([FromBody] SendCaseEvlResultRequest receiveSendCaseEvlResult) { // 验证 if (receiveSendCaseEvlResult is null || receiveSendCaseEvlResult.paras is null) return OpenResponse.Ok(GetDataBaseReponse.Failed("数据解析失败")); string strResult = receiveSendCaseEvlResult.paras.Validate(); if (!string.IsNullOrEmpty(strResult)) return OpenResponse.Ok(GetDataBaseReponse.Failed(strResult)); //推送老系统数据 var isCheck = await SendDataFw(receiveSendCaseEvlResult.paras.CaseSerial, "api/receive/send_case_evl_result", System.Text.Json.JsonSerializer.Serialize(receiveSendCaseEvlResult), "Post"); if (isCheck) { return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } //转换数据 var dto = receiveSendCaseEvlResult.paras; //添加数据 var id = await InitReceiveProvinceData(dto.CaseSerial, null, "send_case_evl_result", System.Text.Json.JsonSerializer.Serialize(dto)); if (!string.IsNullOrEmpty(id)) { ProvinceOrderVisitDto orderVisitDto = new() { ProvinceNo = dto.CaseSerial, VisitTime = dto.ReplyTime, VisitContent = dto.ReplyContent, OrgProcessingResults = dto.ResultEvl, VisitType = Hotline.Share.Enums.Order.EVisitType.ArtificialVisit }; //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderEvlResult, orderVisitDto, cancellationToken: HttpContext.RequestAborted); return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } else return OpenResponse.Ok(GetDataBaseReponse.Failed("接口调用失败!")); } /// /// 上报工单处理结果/退回接口---已完成-----1 /// /// 上报工单处理结果/退回对象 /// [HttpPost] [Route("get_case_result_send")] public async Task GetCaseReultSend([FromBody] GetCaseReultSendRequest receiveGetCaseReultSend) { // 验证 if (receiveGetCaseReultSend is null || receiveGetCaseReultSend.paras is null) return OpenResponse.Ok(GetDataBaseReponse.Failed("数据解析失败")); string strResult = receiveGetCaseReultSend.paras.Validate(); if (!string.IsNullOrEmpty(strResult)) return OpenResponse.Ok(GetDataBaseReponse.Failed(strResult)); //推送老系统数据 var isCheck = await SendDataFw(receiveGetCaseReultSend.paras.CaseSerial, "api/send/get_case_result_send", System.Text.Json.JsonSerializer.Serialize(receiveGetCaseReultSend), "Post"); if (isCheck) { return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } //转换数据 var dto = receiveGetCaseReultSend.paras; //添加数据 var id = await InitReceiveProvinceData(dto.CaseSerial, dto.CliengGuid, "get_case_result_send", System.Text.Json.JsonSerializer.Serialize(dto)); if (!string.IsNullOrEmpty(id)) { //查询此工单 var tempData = await _sendCaseInfoRepository.GetAsync(p => p.CaseSerial == dto.CaseSerial, HttpContext.RequestAborted); if (tempData != null) { //将工单的办理状态改为办理完成,终止拉取办理信息 tempData.IsEnd = true; await _sendCaseInfoRepository.UpdateAsync(tempData, HttpContext.RequestAborted); var listFiles = await GetFileData(dto.CliengGuid, dto.CaseSerial, "办理上传"); OrderResultDto orderResult = new() { OrderId = tempData.OrderID, FinishType = dto.FinishType, Opinion = dto.FdBack, Files = listFiles }; //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderReultSend, orderResult, cancellationToken: HttpContext.RequestAborted); } return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } else return OpenResponse.Ok(GetDataBaseReponse.Failed("接口调用失败!")); } /// /// 上报工单评价接口 /// /// 上报工单评价对象 /// [HttpPost] [Route("get_visit_info_send")] [AllowAnonymous] public async Task GetVisitInfoSend([FromBody] GetVisitInfoSendRequest receiveGetVisitInfoSend) { // 验证 if (receiveGetVisitInfoSend is null || receiveGetVisitInfoSend.paras is null) return OpenResponse.Ok(GetDataBaseReponse.Failed("数据解析失败")); string strResult = receiveGetVisitInfoSend.paras.Validate(); if (!string.IsNullOrEmpty(strResult)) return OpenResponse.Ok(GetDataBaseReponse.Failed(strResult)); //推送老系统数据 var isCheck = await SendDataFw(receiveGetVisitInfoSend.paras.CaseSerial, "api/send/get_visit_info_send", System.Text.Json.JsonSerializer.Serialize(receiveGetVisitInfoSend), "Post"); if (isCheck) { return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } //转换数据 var dto = receiveGetVisitInfoSend.paras; //添加数据 var id = await InitReceiveProvinceData(dto.CaseSerial, dto.CliengGuid, "get_visit_info_send", System.Text.Json.JsonSerializer.Serialize(dto)); if (!string.IsNullOrEmpty(id)) { ProvinceOrderVisitDto orderVisitDto = new() { ProvinceNo = dto.CaseSerial, VisitTime = dto.VisitTime, VisitContent = dto.VisitRemark, OrgProcessingResults = dto.SubjectResultSatify, VisitType = dto.VisitType switch { "DH" => Hotline.Share.Enums.Order.EVisitType.ArtificialVisit, "DX" => Hotline.Share.Enums.Order.EVisitType.SmsVisit, "WZ" => Hotline.Share.Enums.Order.EVisitType.WebVisit, "WX" => Hotline.Share.Enums.Order.EVisitType.WeChatVisit, "AP" => Hotline.Share.Enums.Order.EVisitType.AppVisit, _ => Hotline.Share.Enums.Order.EVisitType.OtherVisit, } }; //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderEvlResult, orderVisitDto, cancellationToken: HttpContext.RequestAborted); return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } else return OpenResponse.Ok(GetDataBaseReponse.Failed("接口调用失败!")); } /// /// 服务工单拓展信息交办---已完成-----1 /// /// 服务工单拓展信息交办 /// [HttpPost] [Route("rest/receive_case_extends")] [AllowAnonymous] public async Task ReceiveCaseExtends([FromBody] ReceiveCaseExtendsRequest receiveCaseExtendsRequest) { // 验证 if (receiveCaseExtendsRequest is null || receiveCaseExtendsRequest.paras is null) return OpenResponse.Ok(GetDataBaseReponse.Failed("数据解析失败")); string strResult = receiveCaseExtendsRequest.paras.Validate(); if (!string.IsNullOrEmpty(strResult)) return OpenResponse.Ok(GetDataBaseReponse.Failed(strResult)); //推送老系统数据 var isCheck = await SendDataFw(receiveCaseExtendsRequest.paras.CaseSerial, "api/receive/receive_case_extends", System.Text.Json.JsonSerializer.Serialize(receiveCaseExtendsRequest), "Post"); if (isCheck) { return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } var data = receiveCaseExtendsRequest.paras; //添加数据 var id = await InitReceiveProvinceData(data.CaseSerial, null, "receive_case_extends", System.Text.Json.JsonSerializer.Serialize(data)); OrderExtensionDto orderExtension = new(); //扩展信息写入 switch (data.FormType.ToLower()) { case "yl"://医疗表单 //转换数据 orderExtension = _mapper.Map(data.FormMedical); orderExtension.OrderType = "医疗服务中心受理单"; break; case "zwfw"://四川政务服务网技术工单 //转换数据 orderExtension = _mapper.Map(data.FormNetWorktec); orderExtension.OrderType = "四川政务服务网技术中心受理单"; break; case "th"://电视购物及商铺购买退换货工单 //转换数据 orderExtension = _mapper.Map(data.FormReturnexChange); orderExtension.OrderType = "电视购物及商铺购买退换货中心受理单"; break; case "gsgl"://高速公路工单 //转换数据 orderExtension = _mapper.Map(data.FormExpressWay); orderExtension.OrderType = "高速公路投诉中心受理单"; break; case "xjgg"://电视台虚假广告工单 //转换数据 orderExtension = _mapper.Map(data.FormShamPub); orderExtension.OrderType = "电视台虚假广告中心受理单"; break; case "swfwsq"://12366热线诉求交办 //转换数据 orderExtension = _mapper.Map(data.FormTaxationComplaint); orderExtension.OrderType = "四川省12366热线诉求交办单"; break; case "swfwzx"://12366热线咨询交办 //转换数据 orderExtension = _mapper.Map(data.FormTaxationConsulting); orderExtension.OrderType = "四川省12366热线咨询交办单"; break; case "jtfwjd"://12328服务监督 //转换数据 orderExtension = _mapper.Map(data.FormTraffic); orderExtension.OrderType = "12328服务监督中心受理单"; break; case "yzxf"://邮政业消费者申诉 //转换数据 orderExtension = _mapper.Map(data.FormPost); orderExtension.OrderType = "邮政业消费者申诉受理单"; break; case "hbjb"://环保举报业务 //转换数据 orderExtension = _mapper.Map(data.FormEnvironMent); orderExtension.OrderType = "环保举报业务受理单"; break; case "scjgj"://12315个性化表单 break; default: break; } orderExtension.ProvinceNo = data.CaseSerial; orderExtension.OrderTypeCode = data.FormType.ToLower(); if (!string.IsNullOrEmpty(id)) { //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderExtends, orderExtension, cancellationToken: HttpContext.RequestAborted); return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } else return OpenResponse.Ok(GetDataBaseReponse.Failed("接口调用失败!")); } /// /// 服务工单材料接口 /// /// 工单材料信息 /// 材料文件 /// [HttpPost] [Route("get_case_material_info")] [AllowAnonymous] public async Task GetCaseMaterialInfo([FromForm] string @params, List files) { // 上传文件为必须 if (files is null || files.Count <= 0) { return OpenResponse.Ok(GetDataBaseReponse.Failed("上传文件为必须")); } @params = "{ \"token\": \"\", \"paras\":{ \"CaseSerial\":\"RGDH99511500240304000100\", \"MaterialType\":\"10\", \"CliengGuid\":\"91541fea-e1a5-4798-bc43-b25cc77ec6b7\", \"AreaCode\":\"511500\"} }"; // 解析附件信息 var vmCaseMaterialInfo = Newtonsoft.Json.JsonConvert.DeserializeObject(@params); if (vmCaseMaterialInfo is null || vmCaseMaterialInfo.paras is null) { return OpenResponse.Ok(GetDataBaseReponse.Failed("数据解析失败")); } GetCaseMaterialInfoModel tmpCaseMaterialInfo = vmCaseMaterialInfo.paras; // 验证 string strResult = tmpCaseMaterialInfo.Validate(); if (false == string.IsNullOrEmpty(strResult)) { return OpenResponse.Ok(GetDataBaseReponse.Failed(strResult)); } //是否推送旧系统 var isCheck = await SendFileDataFw(vmCaseMaterialInfo.paras.CaseSerial, @params, files); if (isCheck) { return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } List listData = new(); // 文件列表 foreach (var file in files) { //这里需要上文件服务器上传 var businessFileDto = await SendFileData(file); string strFileName = file.FileName; string strSuffix = strFileName.LastIndexOf(".") > 0 ? strFileName.Substring(strFileName.LastIndexOf(".")) : ""; // 新增文件到列表 var materialInfo = new DsGetCaseMaterialInfo() { CaseSerial = tmpCaseMaterialInfo.CaseSerial, MaterialType = tmpCaseMaterialInfo.MaterialType, CliengGuid = tmpCaseMaterialInfo.CliengGuid, AreaCode = tmpCaseMaterialInfo.AreaCode, FileName = file.FileName, Type = strSuffix.Trim('.'), Additions = businessFileDto.id, Path = businessFileDto.path, Direction = "2", SyncState = "1" }; listData.Add(materialInfo); await _getCaseMaterialInfoRepository.AddAsync(materialInfo, HttpContext.RequestAborted); } if (listData != null && listData.Count > 0) { //处理附件数据 var receiveData = await _dsReceiveProvinceDataRepository.GetAsync(p => p.CliengGuid == tmpCaseMaterialInfo.CliengGuid && p.CaseSerial == tmpCaseMaterialInfo.CaseSerial, HttpContext.RequestAborted); if (receiveData != null) { List listFiles = new(); //根据接口处理数据 switch (receiveData.ServiceInterface) { case "receive_case_info": listFiles = await InitFileData(listData, "工单受理"); AddOrderDto addOrder = new() { ProvinceNo = tmpCaseMaterialInfo.CaseSerial, Files = listFiles }; // await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderCreation, addOrder, cancellationToken: HttpContext.RequestAborted); // var result = await _hotlineClient.ReceiveOrderAsync(addOrder, HttpContext.RequestAborted); await _fwClient.RequestNoTokenAsync("api/v1/Order/add-anonymous", "Post", System.Text.Json.JsonSerializer.Serialize(addOrder)); break; case "get_case_back_result": var data = await _getCaseBackApplyRepository.GetAsync(p => p.CaseSerial == tmpCaseMaterialInfo.CaseSerial, HttpContext.RequestAborted); if (data != null) { listFiles = await InitFileData(listData, "工单退回审核"); //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderReturnFeedback, new OrderSendBackResultDto() { Id = data.OrderSendBackId }, cancellationToken: HttpContext.RequestAborted); } break; case "send_supervise_info": listFiles = await InitFileData(listData, "督办工单派发"); ProvinceSendOrderSuperviseDto orderSuperviseDto = new ProvinceSendOrderSuperviseDto() { ProvinceOrderSuperviseDto = new() { CaseSerial = tmpCaseMaterialInfo.CaseSerial }, Files = listFiles }; //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderSupervise, orderSuperviseDto, cancellationToken: HttpContext.RequestAborted); break; case "remind_case_info": listFiles = await InitFileData(listData, "工单催单"); //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderRemind, new ProvinceOrderUrgeDto() { CaseSerial = tmpCaseMaterialInfo.CaseSerial }, cancellationToken: HttpContext.RequestAborted); break; case "screen_case_result_receive": listFiles = await InitFileData(listData, "工单甄别结果"); ProvinceSendScreenResultDto screenResultDto = new ProvinceSendScreenResultDto() { ProvinceScreenResult = new() { CaseSerial = tmpCaseMaterialInfo.CaseSerial }, Files = listFiles }; //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderScreen, screenResultDto, cancellationToken: HttpContext.RequestAborted); break; case "delay_case_result_receive": listFiles = await InitFileData(listData, "工单延期审核结果"); ProvinceSendDelayResultDto delayResultDto = new() { No = tmpCaseMaterialInfo.CaseSerial, Files = listFiles }; //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderDelayResult, delayResultDto, cancellationToken: HttpContext.RequestAborted); break; case "supply_case_info_receive": listFiles = await InitFileData(listData, "工单补充"); OrderComplementDto complementDto = new OrderComplementDto { OrderId = "", Files = listFiles }; //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderSupplements, complementDto, cancellationToken: HttpContext.RequestAborted); break; case "revoke_case_info": // listFiles = await InitFileData(listData, "工单撤单");//暂无附件 break; case "send_warn_info": // listFiles = await InitFileData(listData, "工单预警"); break; case "send_case_evl_result": // listFiles = await InitFileData(listData, "工单满意度"); break; case "get_case_result_send": listFiles = await InitFileData(listData, "办理上传"); var dataOrder = await _dataOrderRepository.GetAsync(p => p.ProvinceNo == tmpCaseMaterialInfo.CaseSerial, HttpContext.RequestAborted); OrderResultDto orderResult = new() { OrderId = dataOrder.OrderId, Files = listFiles }; //向业务系统推送消息 await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderReultSend, orderResult, cancellationToken: HttpContext.RequestAborted); break; case "get_visit_info_send": // listFiles = await InitFileData(listData, "上报工单评价"); break; default: break; } } } return OpenResponse.Ok(GetDataBaseReponse.Success("您已成功提交数据!")); } #region 私有方法 /// /// 组装附件参数 /// /// /// /// private async Task> InitFileData(List listData, string Classify) { List fileDtos = new(); foreach (var item in listData) { fileDtos.Add(new FileDto() { Name = item.FileName, Type = item.Type, Classify = Classify, Additions = item.Additions, Path = item.Path }); } return fileDtos; } /// /// 根据附件Id,工单编号查询所有附件 /// /// 材料标识ID /// 工单编号 /// 材料分类 /// private async Task> GetFileData(string CliengGuid, string CaseSerial, string Classify) { var list = await _getCaseMaterialInfoRepository.Queryable().Where(p => p.CliengGuid == CliengGuid && p.CaseSerial == CaseSerial).ToListAsync(); List fileDtos = new(); if (fileDtos == null || fileDtos.Count == 0) return fileDtos; foreach (var item in list) { fileDtos.Add(new FileDto() { Name = item.FileName, Type = item.Type, Classify = Classify, Additions = item.Additions, Path = item.Path }); } return fileDtos; } /// /// 将数据写入本地 /// /// 工单编号 /// 材料标识 /// 接口名称 /// 数据 /// private async Task InitReceiveProvinceData(string CaseSerial, string CliengGuid, string ServiceInterface, string ReceiveData) { DsReceiveProvinceData dsReceive = new() { CaseSerial = CaseSerial, CliengGuid = CliengGuid, ServiceInterface = ServiceInterface, ReceiveData = ReceiveData }; return await _dsReceiveProvinceDataRepository.AddAsync(dsReceive, HttpContext.RequestAborted); } /// /// 将文件流上传到附件服务器 /// /// /// private async Task SendFileData(IFormFile file) { var businessFile = _channelConfigurationManager.GetConfigurationBusinessFile(); // 文件名称 string fileName = file.FileName; // 文件内容字节数据 using var memoryStream = new MemoryStream(); await file.CopyToAsync(memoryStream); memoryStream.Seek(0, SeekOrigin.Begin); byte[] fileContentBytes = memoryStream.ToArray(); // 构造字典文件数据 // 接口参数名称为files CFormUpload.FileParameter fileParameter = new CFormUpload.FileParameter("fileData", fileContentBytes, fileName, "multipart/form-data"); Dictionary dicParam = new() { { fileName, fileParameter } }; string url = string.Format("{0}{1}?source={2}", businessFile.BaseUrl, businessFile.UploadUrlAddress, businessFile.Source); var result = CFormUpload.MultipartFormDataPost(url, null, dicParam, ""); if (!string.IsNullOrEmpty(result)) { var resultData = Newtonsoft.Json.JsonConvert.DeserializeObject(result); if (resultData != null && resultData.code == 0) { return resultData.result; } } return new BusinessFileDto(); } /// /// 下行数据推送到旧系统中 /// /// 省工单编号 /// 接口名称 /// 请求参数 /// 请求方式 /// private async Task SendDataFw(string CaseSerial, string api, string jsonData, string httpMethod = "Post") { var configSendDataOld = _channelConfigurationManager.GetConfigurationSendDataOld(); //先验证是否开启推送 if (!configSendDataOld.IsSend) return false; //查询是否是本地工单,如果是本地工单不需要推送,如果是旧系统数据则推送 // var isCheck = await _dataOrderRepository.AnyAsync(p => p.ProvinceNo == CaseSerial, HttpContext.RequestAborted); var isCheck = await _dsReceiveProvinceDataRepository.AnyAsync(p => p.CaseSerial == CaseSerial && p.ServiceInterface == "receive_case_info", HttpContext.RequestAborted); if (!isCheck) { var url = configSendDataOld.AddressUrl + api; var response = await _fwClient.RequestAsync(url, httpMethod, jsonData, HttpContext.RequestAborted); if (response != null && response.code != 1) { SendFwErrorData sendFwError = new() { HttpMethod = httpMethod, ServiceInterface = url, SendData = jsonData }; await _sendFwErrorDataRepository.AddAsync(sendFwError, HttpContext.RequestAborted); } return true; } return false; } /// /// 上传附件 /// /// /// /// /// private async Task SendFileDataFw(string CaseSerial, string strParams, List files) { var configSendDataOld = _channelConfigurationManager.GetConfigurationSendDataOld(); //先验证是否开启推送 if (!configSendDataOld.IsSend) return false; var isCheck = await _dataOrderRepository.AnyAsync(p => p.ProvinceNo == CaseSerial, HttpContext.RequestAborted); if (!isCheck) { foreach (var file in files) { // 文件名称 string fileName = file.FileName; // 文件内容字节数据 using var memoryStream = new MemoryStream(); await file.CopyToAsync(memoryStream); memoryStream.Seek(0, SeekOrigin.Begin); byte[] fileContentBytes = memoryStream.ToArray(); // 构造字典文件数据 // 接口参数名称为files CFormUpload.FileParameter fileParameter = new CFormUpload.FileParameter("files", fileContentBytes, fileName, null); strParams = "{ \"token\": \"\", \"paras\":{ \"MATERIAL_SERIAL\":\"RGDH99511500240304000100\", \"MATERIAL_TYPE\":\"10\", \"CLIENG_GUID\":\"91541fea-e1a5-4798-bc43-b25cc77ec6b7\", \"AREA_CODE\":\"511500\"} }"; Dictionary dicParam = new() { { "params", strParams } // 第一个接口参数,json格式字符串 }; dicParam.Add(fileName, fileParameter); var token = await _fwClient.GetFileToken(HttpContext.RequestAborted); string strUrl = configSendDataOld.AddressUrl + "api/receive/get_case_material_info"; // 上传附件 string strResult = CFormUpload.MultipartFormDataPost(strUrl, null, dicParam, token?.Token); } return true; } return false; } #endregion } }