1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165 |
- using DataSharing.FwDataExchange;
- using DataSharing.RawData;
- using DataSharing.Share.Dtos;
- using DataSharing.Share.Dtos.HotlineSetting;
- using DataSharing.Share.Dtos.YiBin.ConvergenceMedia;
- using DataSharing.YiBin.ConvergenceMedia;
- using DotNetCore.CAP;
- using Hotline.Share.Dtos;
- using Hotline.Share.Dtos.Article;
- using Hotline.Share.Dtos.DataSharingSearch;
- using Hotline.Share.Dtos.File;
- using Hotline.Share.Dtos.FlowEngine.Workflow;
- using Hotline.Share.Dtos.Order;
- using Hotline.Share.Enums.Order;
- using MapsterMapper;
- using MediatR;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Mvc;
- using System.Drawing.Printing;
- using XF.Domain.Filters;
- using XF.Domain.Repository;
- namespace DataSharing.Host.Controllers.YiBin
- {
- /// <summary>
- /// 融媒体、I宜宾
- /// </summary>
- public class ConvergenceMediaController : BaseController
- {
- #region 注入
- private readonly IMapper _mapper;
- private readonly IMediator _mediator;
- private readonly ICapPublisher _capPublisher;
- private readonly IChannelConfigurationManager _channelConfigurationManager;
- private readonly IRepository<DsReceiveMediaData> _dsReceiveMediaDataRepository;
- private readonly IRepository<DsBulletin> _bulletinRepository;
- private readonly FwClient _fwClient;
- private readonly IDsUserTokenInfoService _dsUserTokenInfoService;
- /// <summary>
- ///
- /// </summary>
- /// <param name="mapper"></param>
- /// <param name="mediator"></param>
- /// <param name="capPublisher"></param>
- /// <param name="channelConfigurationManager"></param>
- /// <param name="dsReceiveMediaDataRepository"></param>
- /// <param name="bulletinRepository"></param>
- /// <param name="fwClient"></param>
- /// <param name="dsUserTokenInfoService"></param>
- public ConvergenceMediaController(IMapper mapper, IMediator mediator,
- ICapPublisher capPublisher,
- IChannelConfigurationManager channelConfigurationManager,
- IRepository<DsReceiveMediaData> dsReceiveMediaDataRepository,
- IRepository<DsBulletin> bulletinRepository,
- FwClient fwClient,
- IDsUserTokenInfoService dsUserTokenInfoService)
- {
- _mapper = mapper;
- _mediator = mediator;
- _capPublisher = capPublisher;
- _channelConfigurationManager = channelConfigurationManager;
- _dsReceiveMediaDataRepository = dsReceiveMediaDataRepository;
- _bulletinRepository = bulletinRepository;
- _fwClient = fwClient;
- _dsUserTokenInfoService = dsUserTokenInfoService;
- }
- #endregion
- /// <summary>
- /// 2.1融媒体写信---1
- /// </summary>
- /// <param name="mediaDataReceiveDto"></param>
- /// <returns></returns>
- [HttpPost("WriteOrder")]
- [AllowAnonymous]
- public async Task<OpenResponse> WriteOrder([FromForm] MediaDataReceiveDto mediaDataReceiveDto)
- {
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(mediaDataReceiveDto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<WriteOrderResponseDto> responseDtos = new()
- {
- new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = "", Msg = "密钥错误", Code = "-900" }
- };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<WriteOrderResponseDto>>.Failed(responseDtos, "0", "密钥错误"));
- }
- //验证数据
- string strResult = mediaDataReceiveDto.Validate();
- if (!string.IsNullOrEmpty(strResult))
- {
- List<WriteOrderResponseDto> responseDtos = new()
- {
- new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = "", Msg = strResult, Code = "0" }
- };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<WriteOrderResponseDto>>.Failed(responseDtos, "0", description: strResult));
- }
- //写入原始数据
- DsReceiveMediaData dsReceiveMediaData = new()
- {
- ServiceInterface = "WriteOrder",
- PlatformsName = accountDto.PlatformSourceName,
- ReceiveData = System.Text.Json.JsonSerializer.Serialize(mediaDataReceiveDto)
- };
- dsReceiveMediaData.Id = await _dsReceiveMediaDataRepository.AddAsync(dsReceiveMediaData, HttpContext.RequestAborted);
- AddOrderDto data = new()
- {
- Title = mediaDataReceiveDto.Title,
- FromName = mediaDataReceiveDto.LinkName,
- Contact = mediaDataReceiveDto.Mobile,
- FullAddress = mediaDataReceiveDto.Address,
- Content = mediaDataReceiveDto.Content,
- IsSecret = mediaDataReceiveDto.Secrecy == 0 ? false : true,
- Source = (Hotline.Share.Enums.Order.ESource)Enum.Parse(typeof(Hotline.Share.Enums.Order.ESource), accountDto.PlatformSource),
- FromGender = mediaDataReceiveDto.Gender switch
- {
- "1" => Hotline.Share.Enums.Order.EGender.Male,
- "2" => Hotline.Share.Enums.Order.EGender.Female,
- _ => Hotline.Share.Enums.Order.EGender.Unknown,
- },
- IdentityType = Hotline.Share.Enums.Order.EIdentityType.Citizen,
- Transpond = false,
- IsEnforcementOrder = false,
- ExternalId = Guid.NewGuid().ToString()
- };
- switch (accountDto.PlatformSource)
- {
- case "ConvergenceMedia":
- data.SourceChannel = "宜宾融媒体";
- data.SourceChannelCode = "YBRMT";
- break;
- case "IYIBIN":
- data.SourceChannel = "i宜宾";
- data.SourceChannelCode = "IYB";
- break;
- default:
- break;
- }
- switch (mediaDataReceiveDto.PurTypeID)
- {
- case 17:
- data.AcceptType = "咨询";
- data.AcceptTypeCode = "10";
- break;
- case 18:
- data.AcceptType = "举报";
- data.AcceptTypeCode = "30";
- break;
- case 19:
- data.AcceptType = "投诉";
- data.AcceptTypeCode = "35";
- break;
- case 20:
- data.AcceptType = "求助";
- data.AcceptTypeCode = "20";
- break;
- case 21:
- data.AcceptType = "建议";
- data.AcceptTypeCode = "15";
- break;
- case 25:
- data.AcceptType = "其他";
- data.AcceptTypeCode = "40";
- break;
- default:
- data.AcceptType = "其他";
- data.AcceptTypeCode = "40";
- break;
- }
- string areaName = "";
- switch (mediaDataReceiveDto.AreaID)
- {
- case 2:
- data.AreaCode = "511504"; areaName = "叙州区";
- break;
- case 3:
- data.AreaCode = "511503"; areaName = "翠屏区";
- break;
- case 4:
- data.AreaCode = "511504"; areaName = "南溪区";
- break;
- case 5:
- data.AreaCode = "511524"; areaName = "长宁县";
- break;
- case 6:
- data.AreaCode = "511528"; areaName = "兴文县";
- break;
- case 7:
- data.AreaCode = "511526"; areaName = "珙县";
- break;
- case 8:
- data.AreaCode = "511525"; areaName = "高县";
- break;
- case 9:
- data.AreaCode = "511527"; areaName = "筠连县";
- break;
- case 10:
- data.AreaCode = "511523"; areaName = "江安县";
- break;
- case 11:
- data.AreaCode = "511529"; areaName = "屏山县";
- break;
- case 12:
- data.AreaCode = "511504"; areaName = "叙州区";
- break;
- default:
- break;
- }
- data.Address = "四川省宜宾市" + areaName;
- //调用工单创建接口
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientResponse>("api/v1/Order/add-anonymous", "Post", System.Text.Json.JsonSerializer.Serialize(data));
- if (result != null && result.code == 0)
- {
- dsReceiveMediaData.ExternalId = result.result.id;
- dsReceiveMediaData.OrderCode = result.result.no;
- await _dsReceiveMediaDataRepository.UpdateAsync(dsReceiveMediaData, HttpContext.RequestAborted);
- List<WriteOrderResponseDto> responseDtos = new()
- {
- new WriteOrderResponseDto() { AcceptCode = result.result.no, AcceptPwd = result.result.password, Msg = "写信成功", Code = "1" }
- };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<WriteOrderResponseDto>>.Success(responseDtos, "您已成功提交数据!"));
- }
- else
- {
- List<WriteOrderResponseDto> responseDtos = new()
- {
- new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = "", Msg = "接口调用失败", Code = "0" }
- };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<WriteOrderResponseDto>>.Failed(responseDtos, "0", description: "接口调用失败!"));
- }
- }
- /// <summary>
- /// 2.2工单列表---1
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [HttpPost("GetOrderByList")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetOrderByList([FromForm] GetOrderMediaReceiveDto dto)
- {
- //密钥验证
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- //数据处理
- string acceptTypeCode = dto.PurTypeID switch
- {
- 17 => "10",
- 18 => "30",
- 19 => "35",
- 20 => "20",
- 21 => "15",
- 25 => "40",
- _ => "",
- };
- GetOrderList orderList = new()
- {
- SourceChannelCode = GetChannelCode(accountDto.PlatformSource),
- No = dto.AcceptCode,
- Title = dto.Title,
- Mobile = dto.Mobile,
- AcceptTypeCode = acceptTypeCode,
- StartTime = string.IsNullOrEmpty(dto.StartDate) == true ? null : Convert.ToDateTime(dto.StartDate),
- EndTime = string.IsNullOrEmpty(dto.EndDate) == true ? null : Convert.ToDateTime(dto.EndDate).AddDays(1),
- PageIndex = dto.CurrentPage,
- PageSize = dto.PageSize,
- HandleStateCode = dto.HandleStateCode,
- };
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<PagedDto<OrderDto>>>("api/v1/DataSharing/get_order_list_own",
- "Post", System.Text.Json.JsonSerializer.Serialize(orderList));
- int nPageCount = 0;
- List<GetOrderMediaDataListDto> listData = [];
- if (result != null && result.code == 0)
- {
- if (result.result.Items != null && result.result.Items.Count > 0)
- {
- //计算总页数
- nPageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(result.result.Total) / dto.PageSize));
- int rowID = 0;
- foreach (var item in result.result.Items)
- {
- rowID++;
- listData.Add(new GetOrderMediaDataListDto()
- {
- RowID = ((dto.CurrentPage - 1) * dto.PageSize) + rowID + "",
- FlowID = item.Id,
- Code = item.No,
- Title = item.Title,
- AddDate = item.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"),
- FromName = item.SourceChannel,
- PurTypeName = item.AcceptType,
- ResultState = item.Status >= EOrderStatus.Filed ? "办理完成" : "办理中"
- });
- }
- }
- }
- List<GetOrderMediaDataDto> returnData = new()
- {
- //处理返回
- new()
- {
- PageCount = nPageCount,
- data = listData
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<GetOrderMediaDataDto>>.Success(returnData, "成功"));
- }
- /// <summary>
- /// 2.3 工单查询---1
- /// </summary>
- /// <returns></returns>
- [HttpPost("GetOrderDetail")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetOrderDetail([FromForm] MediaOrderDetailReceiveDto dto)
- {
- //验证密钥
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- //验证数据
- string strResult = dto.Validate();
- if (!string.IsNullOrEmpty(strResult))
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo(strResult), "0", "失败"));
- GetOrderNoPwdDto getOrder = new()
- {
- No = dto.AcceptCode,
- Password = dto.AcceptPwd,
- SourceChannelCode = GetChannelCode(accountDto.PlatformSource)
- };
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<OrderDto>>("api/v1/DataSharing/get_order_detail_by_no_pwd",
- "Post", System.Text.Json.JsonSerializer.Serialize(getOrder));
- List<MediaOrderDetailDataDto> items = new();
- if (result != null && result.code == 0)
- {
- if (result.result != null)
- {
- var item = result.result;
- items.Add(new()
- {
- FlowID = item.Id,
- FlowCode = item.No,
- FlowTitle = item.Title,
- FlowFromName = item.SourceChannel,
- FlowPurTypeName = item.AcceptType,
- FlowConTypeName = item.HotspotName,
- FlowAddDate = item.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"),
- FlowLKName = item.FromName,
- FlowBMName = item.ActualHandleOrgName,
- FlowRSFlagName = item.Status >= EOrderStatus.Filed ? "办理完成" : "办理中",
- FlowContent = item.Content,
- FlowResult = item.ActualOpinion,
- OrderFiles = GetOrderFiles(item.FileJson),
- });
- }
- }
- if (items == null || items.Count == 0)
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo("编号、密码错误!"), "0", "失败"));
- else
- return OpenResponse.Ok(ConvergenceMediaDeResponse<IReadOnlyList<MediaOrderDetailDataDto>>.Success(items, "成功"));
- }
- /// <summary>
- /// 2.4 今日受理分类统计---1
- /// </summary>
- /// <param name="Code"></param>
- /// <returns></returns>
- [HttpPost("GetPurTypeReport")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetPurTypeReport([FromForm] string Code)
- {
- //验证密钥
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<List<GetPurTypeReportDataDto>>>("api/v1/DataSharing/get_pur_type_report",
- "Post", "");
- List<GetPurTypeReportDataDto> data = new List<GetPurTypeReportDataDto>();
- if (result != null && result.code == 0)
- {
- if (result.result != null)
- {
- data = _mapper.Map<List<GetPurTypeReportDataDto>>(result.result);
- }
- }
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<GetPurTypeReportDataDto>>.Success(data, "成功"));
- }
- /// <summary>
- /// 2.5 答复公开---1
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [HttpPost("GetOrderByListOpen")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetOrderByListOpen([FromForm] GetOrderMediaReceiveOpenDto dto)
- {
- //密钥验证
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- //数据处理
- string acceptTypeCode = dto.PurTypeID switch
- {
- "17" => "10",
- "18" => "30",
- "19" => "35",
- "20" => "20",
- "21" => "15",
- "25" => "40",
- _ => "",
- };
- int pageIndex = string.IsNullOrEmpty(dto.CurrentPage) == true ? 1 : Convert.ToInt32(dto.CurrentPage);
- int pageSize = string.IsNullOrEmpty(dto.PageSize) == true ? 1 : Convert.ToInt32(dto.PageSize);
- GetOrderList getOrder = new GetOrderList()
- {
- Title = dto.Title,
- AcceptTypeCode = acceptTypeCode,
- StartTime = string.IsNullOrEmpty(dto.StartDate) == true ? null : Convert.ToDateTime(dto.StartDate),
- EndTime = string.IsNullOrEmpty(dto.EndDate) == true ? null : Convert.ToDateTime(dto.EndDate).AddDays(1),
- PageIndex = pageIndex,
- PageSize = pageSize,
- };
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<PagedDto<PublishDto>>>("api/v1/DataSharing/get_order_list_publish",
- "Post", System.Text.Json.JsonSerializer.Serialize(getOrder));
- int nPageCount = 0;
- List<GetOrderMediaDataListDto> listData = [];
- if (result != null && result.code == 0)
- {
- if (result.result.Items != null && result.result.Items.Count > 0)
- {
- //计算总页数
- nPageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(result.result.Total) / pageSize));
- int rowID = 0;
- foreach (var item in result.result.Items)
- {
- rowID++;
- listData.Add(new GetOrderMediaDataListDto()
- {
- RowID = ((pageIndex - 1) * pageSize) + rowID + "",
- FlowID = item.Id,
- Code = item.No,
- Title = item.Title,
- AddDate = item.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"),
- FromName = item.SourceChannel,
- PurTypeName = item.AcceptType,
- ResultState = item.Status >= EOrderStatus.Filed ? "办理完成" : "办理中",
- PubDate = item.PublishTime.HasValue == true ? item.PublishTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
- });
- }
- }
- }
- //返回数据处理
- List<GetOrderMediaDataDto> dataDto = new()
- {
- new(){ PageCount = nPageCount,
- data = listData
- }
- };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<GetOrderMediaDataDto>>.Success(dataDto, "成功"));
- }
- /// <summary>
- /// 2.6 办理明细
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [HttpPost("GetOrderByRun")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetOrderByRun([FromForm] MediaOrderDetailReceiveDto dto)
- {
- //密钥验证
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- //验证数据
- string strResult = dto.Validate();
- if (!string.IsNullOrEmpty(strResult))
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo(strResult), "0", "失败"));
- GetOrderNoPwdDto getOrder = new()
- {
- No = dto.AcceptCode,
- Password = dto.AcceptPwd,
- SourceChannelCode = GetChannelCode(accountDto.PlatformSource)
- };
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<List<WorkflowTraceDto>>>("api/v1/DataSharing/get_workflow_by_no_pwd",
- "Post", System.Text.Json.JsonSerializer.Serialize(getOrder));
- List<GetOrderByRunDataDto> orderByRunData = new();
- if (result != null && result.code == 0)
- {
- if (result.result != null && result.result.Count > 0)
- {
- foreach (var item in result.result)
- {
- orderByRunData.Add(new GetOrderByRunDataDto()
- {
- BMName = item.HandlerOrgName,
- TTime = item.StepExpiredTime.HasValue == true ? item.StepExpiredTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
- DisposeDate = item.HandleTime.HasValue == true ? item.HandleTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
- });
- }
- }
- }
- return OpenResponse.Ok(ConvergenceMediaDeResponse<IReadOnlyList<GetOrderByRunDataDto>>.Success(orderByRunData, "成功"));
- }
- /// <summary>
- /// 2.1.3 上传附件---1
- /// </summary>
- /// <param name="formData"></param>
- /// <returns></returns>
- [HttpPost("WriteFiles")]
- [AllowAnonymous]
- public async Task<OpenResponse> WriteFiles([FromForm] IFormCollection formData)
- {
- string Code = formData["Code"];
- string AcceptCode = formData["AcceptCode"];
- string AcceptPwd = formData["AcceptPwd"];
- //验证密钥
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- //验证数据
- if (string.IsNullOrEmpty(AcceptCode) || string.IsNullOrEmpty(AcceptPwd))
- return OpenResponse.Ok(ConvergenceMediaDeResponse<string>.Failed("编号、密码不能为空!", "0", "失败"));
- var dataRaw = await _dsReceiveMediaDataRepository.GetAsync(p => p.OrderCode == AcceptCode, HttpContext.RequestAborted);
- if (dataRaw == null)
- return OpenResponse.Ok(ConvergenceMediaDeResponse<string>.Failed("编号、密码错误!", "0", "失败"));
- IFormFileCollection files = formData.Files;//等价于Request.Form.Files
- List<FileDto> fileDtos = new();
- foreach (var item in files)
- {
- //这里需要上文件服务器上传
- var businessFileDto = await SendFileData(item);
- string strFileName = item.FileName;
- string strSuffix = strFileName.LastIndexOf(".") > 0 ? strFileName.Substring(strFileName.LastIndexOf(".") + 1) : "";
- string strSubFileName = strFileName.LastIndexOf(".") > 0 ? strFileName.Substring(0, strFileName.LastIndexOf(".")) : strFileName;
- fileDtos.Add(new FileDto()
- {
- Name = strSubFileName,
- Type = strSuffix,
- Classify = "受理上传",
- Additions = businessFileDto.id,
- Path = businessFileDto.path
- });
- }
- UpdateOrderFilesDto updateOrderFiles = new()
- {
- Files = fileDtos,
- Id = dataRaw.ExternalId,
- OrderNo = dataRaw.OrderCode
- };
- //推送数据
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientResponse>("api/v1/Order/update-orderfiles", "Post", System.Text.Json.JsonSerializer.Serialize(updateOrderFiles));
- return OpenResponse.Ok(ConvergenceMediaDeResponse<string>.Success("", "上传成功"));
- }
- /// <summary>
- /// 2.7 新闻列表 ---1
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [HttpPost("GetNoticeListByPage")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetNoticeListByPage([FromForm] GetNoticeReceiveDto dto)
- {
- //密钥验证
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- string type = "1";
- if (accountDto.PlatformSource == "ConvergenceMedia")
- {
- type = "6";
- }
- if (accountDto.PlatformSource == "IYIBIN")
- {
- switch (dto.CType)
- {
- case "1":
- case "5":
- case "6":
- type = dto.CType;
- break;
- default:
- type = "6";
- break;
- }
- }
- GetBulletinListDto getBulletinListDto = new GetBulletinListDto()
- {
- PushRanges = "2",
- BulletinTypeId = type,
- PageIndex = dto.CurrentPage,
- PageSize = dto.PageSize
- };
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<PagedDto<BulletinDto>>>("api/v1/DataSharing/query_bulletin_list",
- "Post", System.Text.Json.JsonSerializer.Serialize(getBulletinListDto));
- int nPageCount = 0;
- List<GetNoticeReceiveDataListDto> listData = [];
- if (result != null && result.code == 0)
- {
- if (result.result.Items != null && result.result.Items.Count > 0)
- {
- //计算总页数
- nPageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(result.result.Total) / dto.PageSize));
- int rowID = 0;
- foreach (var item in result.result.Items)
- {
- rowID++;
- listData.Add(new GetNoticeReceiveDataListDto()
- {
- Page = ((dto.CurrentPage - 1) * dto.PageSize) + rowID + "",
- NoticeID = item.Id,
- NoticeTypeName = item.BulletinTypeName,
- NoticeTitle = item.Title,
- NoticeBMName = item.SourceOrgName,
- NoticeCreateDate = item.BulletinTime.Value.ToString("yyyy-MM-dd HH:mm:ss"),
- });
- }
- }
- }
- //处理返回
- List<Share.Dtos.YiBin.ConvergenceMedia.GetNoticeReceiveDataDto> dataDto = new()
- {
- new(){PageCount = nPageCount,
- data = listData }
- };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<Share.Dtos.YiBin.ConvergenceMedia.GetNoticeReceiveDataDto>>.Success(dataDto, "成功"));
- }
- /// <summary>
- ///2.8 获取详情,修改阅读次数---1
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [AllowAnonymous]
- [HttpPost("NoticeDetail")]
- public async Task<OpenResponse> GetArticleDetails([FromForm] MediaArticleIdDto dto)
- {
- //密钥验证
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- GetOrderDetailDto getOrder = new GetOrderDetailDto()
- {
- Id = dto.NoticeID
- };
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<BulletinDto>>("api/v1/DataSharing/get_bulletin_detail",
- "Post", System.Text.Json.JsonSerializer.Serialize(getOrder));
- MediaArticleDetailsDto detailsDto = new();
- if (result != null && result.code == 0)
- {
- if (result.result != null)
- {
- detailsDto.NoticeID = result.result.Id;
- detailsDto.NoticeTypeName = result.result.BulletinTypeName;
- detailsDto.NoticeTitle = result.result.Title;
- detailsDto.NoticeBMName = result.result.SourceOrgName;
- detailsDto.NoticeCreateDate = result.result.BulletinTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- detailsDto.NoticeRCount = result.result.ReadedNum;
- detailsDto.NoticeContent = result.result.Content;
- }
- }
- List<MediaArticleDetailsDto> dataDto = new() { detailsDto };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<MediaArticleDetailsDto>>.Success(dataDto, "成功"));
- }
- /// <summary>
- /// 7.今日统计---1
- /// </summary>
- /// <param name="Code"></param>
- /// <returns></returns>
- [AllowAnonymous]
- [HttpPost("GetDayCount")]
- public async Task<OpenResponse> GetDayCount([FromForm] string Code)
- {
- //验证密钥
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<GetDayCountResponse>>("api/v1/DataSharing/get_day_count",
- "Post", "");
- List<GetDayCountResponse> data = new List<GetDayCountResponse>();
- if (result != null && result.code == 0)
- {
- if (result.result != null)
- {
- data.Add(result.result);
- }
- }
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<GetDayCountResponse>>.Success(data, "成功"));
- }
- /// <summary>
- /// 3.1、工单查询
- /// </summary>
- /// <returns></returns>
- [HttpPost("GetOrderDetailByFlowID")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetOrderDetailByFlowID([FromForm] IYBReceiveDto dto)
- {
- //验证密钥
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- //验证数据
- string strResult = dto.Validate();
- if (!string.IsNullOrEmpty(strResult))
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo(strResult), "0", "失败"));
- GetOrderDetailDto getOrder = new()
- {
- Id = dto.FlowID
- };
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<PublishDto>>("api/v1/DataSharing/get_order_detail_by_id",
- "Post", System.Text.Json.JsonSerializer.Serialize(getOrder));
- List<MediaOrderDetailDataDto> items = new();
- if (result != null && result.code == 0)
- {
- if (result.result != null)
- {
- var item = result.result;
- items.Add(new()
- {
- FlowID = item.Id,
- FlowCode = item.No,
- FlowTitle = item.Title,
- FlowFromName = item.SourceChannel,
- FlowPurTypeName = item.AcceptType,
- FlowConTypeName = item.HotspotName,
- FlowAddDate = item.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"),
- FlowLKName = item.FromName,
- FlowBMName = item.ActualHandleOrgName,
- FlowRSFlagName = item.Status >= EOrderStatus.Filed ? "办理完成" : "办理中",
- FlowContent = item.Content,
- FlowResult = item.ActualOpinion,
- PubDate = item.PublishTime.HasValue == true ? item.PublishTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
- OrderFiles = GetOrderFiles(item.FileJson),
- });
- }
- }
- if (items == null || items.Count == 0)
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo("编号、密码错误!"), "0", "失败"));
- else
- return OpenResponse.Ok(ConvergenceMediaDeResponse<IReadOnlyList<MediaOrderDetailDataDto>>.Success(_mapper.Map<IReadOnlyList<MediaOrderDetailDataDto>>(items), "成功"));
- }
- /// <summary>
- /// 附件详情地址---1
- /// </summary>
- [HttpPost("GetFileAll")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetFileAll([FromForm] IYBGetFilesDto dto)
- {
- //验证密钥
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- //验证数据
- string strResult = dto.Validate();
- if (!string.IsNullOrEmpty(strResult))
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo(strResult), "0", "失败"));
- GetOrderDetailDto getOrder = new GetOrderDetailDto()
- {
- Id = dto.FlowID
- };
- OrderDto orderdt = new();
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<OrderDto>>("api/v1/DataSharing/get_order_detail_by_no_pwd",
- "Post", System.Text.Json.JsonSerializer.Serialize(getOrder));
- if (result != null && result.code == 0)
- {
- if (result.result != null)
- {
- orderdt = result.result;
- }
- }
- if (orderdt == null)
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ReturnData>>.Failed(ReturnData.ReturnDataInfo("编号错误!"), "0", "失败"));
- else
- {
- List<GetFiles> getFiles = [];
- if (orderdt.FileJson != null && orderdt.FileJson.Count > 0)
- {
- getFiles = GetOrderFiles(orderdt.FileJson);
- }
- return OpenResponse.Ok(ConvergenceMediaDeResponse<IReadOnlyList<GetFiles>>.Success(_mapper.Map<List<GetFiles>>(getFiles), "成功"));
- }
- }
- /// <summary>
- /// 5、答复公开--增加区域---1
- /// </summary>
- /// <returns></returns>
- [HttpPost("GetOrderByListOpenArea")]
- [AllowAnonymous]
- public async Task<OpenResponse> GetOrderByListOpenArea([FromForm] GetOrderByListOpenAreaDto dto)
- {
- //密钥验证
- var accountDto = await _dsUserTokenInfoService.CheckAccountAsync(dto.Code, HttpContext.RequestAborted);
- if (accountDto is null || accountDto.IsCheckAccount == false)
- {
- List<ConvergenceMediaDeResponse<string>> convergenceMediaDes = new() {
- new()
- {
- msg = "密钥错误",
- code = "-900",
- data = ""
- } };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<ConvergenceMediaDeResponse<string>>>.Failed(convergenceMediaDes, "0", "失败"));
- }
- //数据处理
- string acceptTypeCode = "";
- acceptTypeCode = dto.PurTypeID switch
- {
- "17" => "10",
- "18" => "30",
- "19" => "35",
- "20" => "20",
- "21" => "15",
- "25" => "40",
- _ => "",
- };
- string areaCode = "";
- switch (dto.AreaID)
- {
- case "2":
- areaCode = "511504";
- break;
- case "3":
- areaCode = "511503";
- break;
- case "4":
- areaCode = "511504";
- break;
- case "5":
- areaCode = "511524";
- break;
- case "6":
- areaCode = "511528";
- break;
- case "7":
- areaCode = "511526";
- break;
- case "8":
- areaCode = "511525";
- break;
- case "9":
- areaCode = "511527";
- break;
- case "10":
- areaCode = "511523";
- break;
- case "11":
- areaCode = "511529";
- break;
- case "12":
- areaCode = "511504";
- break;
- default:
- break;
- }
- int pageIndex = string.IsNullOrEmpty(dto.CurrentPage) == true ? 1 : Convert.ToInt32(dto.CurrentPage);
- int pageSize = string.IsNullOrEmpty(dto.PageSize) == true ? 1 : Convert.ToInt32(dto.PageSize);
- GetOrderList getOrder = new GetOrderList()
- {
- Title = dto.Title,
- AcceptTypeCode = acceptTypeCode,
- StartTime = string.IsNullOrEmpty(dto.StartDate) == true ? null : Convert.ToDateTime(dto.StartDate),
- EndTime = string.IsNullOrEmpty(dto.EndDate) == true ? null : Convert.ToDateTime(dto.EndDate).AddDays(1),
- PageIndex = pageIndex,
- PageSize = pageSize,
- AreaCode = areaCode
- };
- var result = await _fwClient.RequestNoTokenAsync<HotlineClientDataSharingResponse<PagedDto<PublishDto>>>("api/v1/DataSharing/get_order_list_publish",
- "Post", System.Text.Json.JsonSerializer.Serialize(getOrder));
- int nPageCount = 0;
- List<GetOrderMediaDataListDto> listData = [];
- if (result != null && result.code == 0)
- {
- if (result.result.Items != null && result.result.Items.Count > 0)
- {
- //计算总页数
- nPageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(result.result.Total) /pageSize));
- int rowID = 0;
- foreach (var item in result.result.Items)
- {
- rowID++;
- listData.Add(new GetOrderMediaDataListDto()
- {
- RowID = ((pageIndex - 1) * pageSize) + rowID + "",
- FlowID = item.Id,
- Code = item.No,
- Title = item.Title,
- AddDate = item.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"),
- FromName = item.SourceChannel,
- PurTypeName = item.AcceptType,
- ResultState = item.Status >= EOrderStatus.Filed ? "办理完成" : "办理中",
- PubDate = item.PublishTime.HasValue == true ? item.PublishTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
- });
- }
- }
- }
- //返回数据处理
- List<GetOrderMediaDataDto> dataDto = new()
- {
- new(){ PageCount = nPageCount,
- data = listData
- }
- };
- return OpenResponse.Ok(ConvergenceMediaDeResponse<List<GetOrderMediaDataDto>>.Success(dataDto, "成功"));
- }
- #region 私有方法-将文件转化为文件流
- /// <summary>
- /// 组装附件参数
- /// </summary>
- /// <param name="fileJson"></param>
- /// <returns></returns>
- private List<GetFiles> GetOrderFiles(List<FileJson> fileJson)
- {
- var businessFile = _channelConfigurationManager.GetConfigurationBusinessFile();
- var baseUrl = businessFile.BaseUrl.Remove(businessFile.BaseUrl.Length - 1);
- List<GetFiles> getFiles = [];
- if (fileJson != null && fileJson.Count > 0)
- {
- foreach (var item in fileJson)
- {
- GetFiles files = new()
- {
- FileID = item.FileId,
- FileName = item.FileName + "." + item.FileType,
- FileContent = baseUrl + item.Path
- };
- getFiles.Add(files);
- }
- }
- return getFiles;
- }
- private string GetChannelCode(string platformSource)
- {
- var sourceChannelCode = "";
- switch (platformSource)
- {
- case "ConvergenceMedia":
- sourceChannelCode = "YBRMT";
- break;
- case "IYIBIN":
- sourceChannelCode = "IYB";
- break;
- default:
- break;
- }
- return sourceChannelCode;
- }
- /// <summary>
- /// 将文件流上传到附件服务器
- /// </summary>
- /// <param name="file"></param>
- /// <returns></returns>
- private async Task<BusinessFileDto> 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<string, object> 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<BusinessFileResponse>(result);
- if (resultData != null && resultData.code == 0)
- {
- return resultData.result;
- }
- }
- return new BusinessFileDto();
- }
- #endregion
- }
- }
|