using DotNetCore.CAP;
using Hotline.Share.Enums.Order;
using MapsterMapper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Sharing.Province.Dtos;
using Sharing.Province.Dtos.XieTong.Receive;
using Sharing.Province.XieTong.Receive;
using Sharing.WebCore;
namespace Sharing.Province.Controllers
{
///
///
///
public class ReceiveController : BaseController
{
#region 注入
private readonly IMapper _mapper;
private readonly ICapPublisher _capPublisher;
private readonly IReceiveCaseInfoRepository _receiveCaseInfoRepository;
private readonly IGetCaseBackResultRepository _getCaseBackResultRepository;
private readonly IDelayCaseResultRepository _delayCaseResultRepository;
private readonly ISupplyCaseInfoRepository _supplyCaseInfoRepository;
private readonly IRevokeCaseInfoRepository _revokeCaseInfoRepository;
private readonly IRemindCaseInfoRepository _remindCaseInfoRepository;
private readonly ISendWarnInfoRepository _sendWarnInfoRepository;
private readonly ISendSuperviseInfoRepository _sendSuperviseInfoRepository;
private readonly IScreenCaseResultReceiveRepository _screenCaseResultReceiveRepository;
private readonly ISendCaseEvlResultRepository _sendCaseEvlResultRepository;
private readonly IGetCaseReultSendRepository _getCaseReultSendRepository;
private readonly IGetVisitInfoSendRepository _getVisitInfoSendRepository;
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
public ReceiveController(IMapper mapper, ICapPublisher capPublisher, IReceiveCaseInfoRepository receiveCaseInfoRepository,
IGetCaseBackResultRepository getCaseBackResultRepository, IDelayCaseResultRepository delayCaseResultRepository
, ISupplyCaseInfoRepository supplyCaseInfoRepository, IRevokeCaseInfoRepository revokeCaseInfoRepository
, IRemindCaseInfoRepository remindCaseInfoRepository, ISendWarnInfoRepository sendWarnInfoRepository
, ISendSuperviseInfoRepository sendSuperviseInfoRepository, IScreenCaseResultReceiveRepository screenCaseResultReceiveRepository
, ISendCaseEvlResultRepository sendCaseEvlResultRepository, IGetCaseReultSendRepository getCaseReultSendRepository
, IGetVisitInfoSendRepository getVisitInfoSendRepository)
{
_mapper = mapper;
_capPublisher = capPublisher;
_receiveCaseInfoRepository = receiveCaseInfoRepository;
_getCaseBackResultRepository = getCaseBackResultRepository;
_delayCaseResultRepository = delayCaseResultRepository;
_supplyCaseInfoRepository = supplyCaseInfoRepository;
_revokeCaseInfoRepository = revokeCaseInfoRepository;
_remindCaseInfoRepository = remindCaseInfoRepository;
_sendWarnInfoRepository = sendWarnInfoRepository;
_sendSuperviseInfoRepository = sendSuperviseInfoRepository;
_screenCaseResultReceiveRepository = screenCaseResultReceiveRepository;
_sendCaseEvlResultRepository = sendCaseEvlResultRepository;
_getCaseReultSendRepository = getCaseReultSendRepository;
_getVisitInfoSendRepository = getVisitInfoSendRepository;
}
#endregion
///
/// 服务工单交办接口
///
///
///
[HttpPost("receive_case_info")]
[AllowAnonymous]
public async Task ReceiveCaseInfo([FromBody] ReceiveCaseInfoRequest receiveCaseInfo)
{
// 验证
if (receiveCaseInfo is null || receiveCaseInfo.paras is null)
{
Reponse.Failed("数据解析失败");
}
//验证接收的数据是否正确
string strResult = receiveCaseInfo.paras.Validate();
if (!string.IsNullOrEmpty(strResult))
Reponse.Failed(strResult);
//转换数据
var dto = _mapper.Map(receiveCaseInfo.paras);
//添加数据
var id = await _receiveCaseInfoRepository.AddAsync(dto, HttpContext.RequestAborted);
//处理组装数据,推送数据
#region 处理接收的数据
ReceiveCaseInfoAddOrderDto addOrderDto = new()
{
ProvinceNo = dto.CaseSerial,
Title = dto.CaseTitle,
CaseRegister = dto.CaseRegister,
CaseRegisterNo = dto.CaseRegisterNo,
CaseDate = dto.CaseDate,
FromPhone = dto.PhoneNumber,
Contact = dto.PhoneNumber,
FromName = dto.AppLicantName,
Content = dto.CaseContent,
CaseProcessType = dto.CaseProcessType,
TSigntTmeBf = dto.TSigntTmeBf,
TfdBackTimeBf = dto.TfdBackTimeBf,
TBackTimeBf = dto.TBackTimeBf,
AreaCode = dto.AreaCode,
Street = dto.CaseAddress,
IncidentTime = dto.EventDate,
HotspotCode = dto.CaseAccord,
LicenceNo = dto.AppLicantId,
AgeRangeCode = dto.AppLicantAge,
TaskType = dto.TaskType,
IsPublic = dto.CaseIsPublic == "1",
IsSecrect = dto.CaseIsSecrect == "1",
IsVisit = dto.CaseIsVisit == "1",
CaseEmotion = dto.CaseEmotion,
TrowGuid = dto.TrowGuid,
CliengGuid = dto.CliengGuid,
AdviseType = dto.AdviseType,
AdviseDept = dto.AdviseDept,
ComplainType = dto.ComplainType,
ComplainDept = dto.ComplainDept
};
//处理诉求渠道
switch (dto.CaseSource.ToUpper())
{
case "RGDH":
addOrderDto.Channel = EChannel.Phone;
break;
case "WX":
addOrderDto.Channel = EChannel.WxOfficial;
break;
case "WZ":
addOrderDto.Channel = EChannel.Web;
break;
case "AP":
addOrderDto.Channel = EChannel.App;
break;
case "XCX":
addOrderDto.Channel = EChannel.WxMiniProgram;
break;
default:
break;
}
//处理性别
switch (dto.AppLicantSex)
{
case "0":
addOrderDto.FromGender = EGender.Female;
break;
case "1":
addOrderDto.FromGender = EGender.Male;
break;
case "2":
addOrderDto.FromGender = EGender.Unknown;
break;
default:
break;
}
//处理年龄范围名称
switch (dto.AppLicantAge)
{
case "10":
addOrderDto.AgeRange = "20以下";
break;
case "20":
addOrderDto.AgeRange = "20-39";
break;
case "30":
addOrderDto.AgeRange = "40-59";
break;
case "40":
addOrderDto.AgeRange = "60岁以上";
break;
case "70":
addOrderDto.AgeRange = "无法获取";
break;
default:
break;
}
//处理证件类型
switch (dto.CertifiCateType)
{
case "10":
addOrderDto.LicenceTypeCode = "10";
addOrderDto.LicenceType = "中华人民共和国居民身份证";
break;
case "20":
addOrderDto.LicenceTypeCode = "40";
addOrderDto.LicenceType = "外国(地区)护照";
break;
case "30":
addOrderDto.LicenceTypeCode = "55";
addOrderDto.LicenceType = "港澳居民来往内地通行证";
break;
case "40":
addOrderDto.LicenceTypeCode = "57";
addOrderDto.LicenceType = "台湾居民来往大陆通行证";
break;
default:
addOrderDto.LicenceTypeCode = "90";
addOrderDto.LicenceType = "其他有效身份证件";
break;
}
//处理受理类型
switch (dto.CaseType)
{
case "10":
addOrderDto.AcceptType = EAcceptType.Consult;
break;
case "15":
addOrderDto.AcceptType = EAcceptType.Suggest;
break;
case "20":
addOrderDto.AcceptType = EAcceptType.SeekHelp;
break;
case "25":
addOrderDto.AcceptType = EAcceptType.Praise;
break;
case "30":
addOrderDto.AcceptType = EAcceptType.Report;
break;
case "35":
addOrderDto.AcceptType = EAcceptType.Report;
break;
case "40":
addOrderDto.AcceptType = EAcceptType.Other;
break;
default:
break;
}
//处理紧急程度
switch (dto.CaseIsUrgent)
{
case "10":
addOrderDto.EmergencyLevel = EEmergencyLevel.QuiteEmergency;
break;
case "20":
addOrderDto.EmergencyLevel = EEmergencyLevel.Emergency;
break;
case "30":
addOrderDto.EmergencyLevel = EEmergencyLevel.Normal;
break;
default:
break;
}
//经纬度处理
var lngLat = dto.CaseLngLat.Split(',');
if (lngLat != null && lngLat.Length == 2)
{
addOrderDto.Longitude = Convert.ToDouble(lngLat[0]);
addOrderDto.Latitude = Convert.ToDouble(lngLat[1]);
}
#endregion
//向业务系统推送消息
// await _capPublisher.PublishAsync(EventNames.HotlineOrderCreated, addOrderDto,cancellationToken: HttpContext.RequestAborted);
if (!string.IsNullOrEmpty(id))
return Reponse.Success("您已成功提交数据!");
else
return Reponse.Failed("接口调用失败!");
}
///
/// 服务工单退回反馈接口
///
/// 退回反馈
///
[HttpPost("get_case_back_result")]
[AllowAnonymous]
public async Task GetCaseBackResult([FromBody] GetCaseBackResultRequest receiveBackResult)
{
// 验证
if (receiveBackResult is null || receiveBackResult.paras is null)
Reponse.Failed("数据解析失败");
//验证接收的数据是否正确
string strResult = receiveBackResult.paras.Validate();
if (!string.IsNullOrEmpty(strResult))
Reponse.Failed(strResult);
//转换数据
var dto = _mapper.Map(receiveBackResult.paras);
//添加数据
var id = await _getCaseBackResultRepository.AddAsync(dto, HttpContext.RequestAborted);
//向业务系统推送消息
// await _capPublisher.PublishAsync(EventNames.HotlineOrderCreated, dto,cancellationToken: HttpContext.RequestAborted);
if (!string.IsNullOrEmpty(id))
return Reponse.Success("您已成功提交数据!");
else
return Reponse.Failed("接口调用失败!");
}
///
/// 服务工单延时审核结果接口
///
/// 延时审核结果对象
///
[HttpPost("delay_case_result_receive")]
[AllowAnonymous]
public async Task DelayCaseResultReceive([FromBody] DelayCaseResultRequest receiveDelayCaseResult)
{
// 验证
if (receiveDelayCaseResult is null || receiveDelayCaseResult.paras is null)
Reponse.Failed("数据解析失败");
string strResult = receiveDelayCaseResult.paras.Validate();
if (!string.IsNullOrEmpty(strResult))
Reponse.Failed(strResult);
//转换数据
var dto = _mapper.Map(receiveDelayCaseResult.paras);
//添加数据
var id = await _delayCaseResultRepository.AddAsync(dto, HttpContext.RequestAborted);
//向业务系统推送消息
// await _capPublisher.PublishAsync(EventNames.HotlineOrderCreated, dto,cancellationToken: HttpContext.RequestAborted);
if (!string.IsNullOrEmpty(id))
return Reponse.Success("您已成功提交数据!");
else
return Reponse.Failed("接口调用失败!");
}
///
/// 服务工单交办补充诉求接口
///
/// 交办补充诉求对象
///
[HttpPost("supply_case_info_receive")]
[AllowAnonymous]
public async Task SupplyCaseInfoReceive([FromBody] SupplyCaseInfoRequest receiveSupplyCaseInfo)
{
// 验证
if (receiveSupplyCaseInfo is null || receiveSupplyCaseInfo.paras is null)
Reponse.Failed("数据解析失败");
string strResult = receiveSupplyCaseInfo.paras.Validate();
if (!string.IsNullOrEmpty(strResult))
Reponse.Failed(strResult);
//转换数据
var dto = _mapper.Map(receiveSupplyCaseInfo.paras);
//添加数据
var id = await _supplyCaseInfoRepository.AddAsync(dto, HttpContext.RequestAborted);
//向业务系统推送消息
// await _capPublisher.PublishAsync(EventNames.HotlineOrderCreated, dto,cancellationToken: HttpContext.RequestAborted);
if (!string.IsNullOrEmpty(id))
return Reponse.Success("您已成功提交数据!");
else
return Reponse.Failed("接口调用失败!");
}
///
/// 服务工单撤单接口
///
/// 撤单对象
///
[HttpPost("revoke_case_info")]
[AllowAnonymous]
public async Task RevokeCaseInfo([FromBody] RevokeCaseInfoRequest receiveRevokeCaseInfo)
{
// 验证
if (receiveRevokeCaseInfo is null || receiveRevokeCaseInfo.paras is null)
Reponse.Failed("数据解析失败");
string strResult = receiveRevokeCaseInfo.paras.Validate();
if (!string.IsNullOrEmpty(strResult))
Reponse.Failed(strResult);
//转换数据
var dto = _mapper.Map(receiveRevokeCaseInfo.paras);
//添加数据
var id = await _revokeCaseInfoRepository.AddAsync(dto, HttpContext.RequestAborted);
//向业务系统推送消息
// await _capPublisher.PublishAsync(EventNames.HotlineOrderCreated, dto,cancellationToken: HttpContext.RequestAborted);
if (!string.IsNullOrEmpty(id))
return Reponse.Success("您已成功提交数据!");
else
return Reponse.Failed("接口调用失败!");
}
///
/// 服务工单催单接口
///
/// 催单对象
///
[HttpPost("remind_case_info")]
[AllowAnonymous]
public async Task RemindCaseInfo([FromBody] RemindCaseInfoRequest receiveRemindCaseInfo)
{
// 验证
if (receiveRemindCaseInfo is null || receiveRemindCaseInfo.paras is null)
Reponse.Failed("数据解析失败");
string strResult = receiveRemindCaseInfo.paras.Validate();
if (!string.IsNullOrEmpty(strResult))
Reponse.Failed(strResult);
//转换数据
var dto = _mapper.Map(receiveRemindCaseInfo.paras);
//添加数据
var id = await _remindCaseInfoRepository.AddAsync(dto, HttpContext.RequestAborted);
//向业务系统推送消息
// await _capPublisher.PublishAsync(EventNames.HotlineOrderCreated, dto,cancellationToken: HttpContext.RequestAborted);
if (!string.IsNullOrEmpty(id))
return Reponse.Success("您已成功提交数据!");
else
return Reponse.Failed("接口调用失败!");
}
///
/// 服务工单预警接口
///
/// 预警对象
///
[HttpPost("send_warn_info")]
[AllowAnonymous]
public async Task SendWarnInfo([FromBody] SendWarnInfoRequest receiveSendWarnInfo)
{
// 验证
if (receiveSendWarnInfo is null || receiveSendWarnInfo.paras is null)
Reponse.Failed("数据解析失败");
string strResult = receiveSendWarnInfo.paras.Validate();
if (!string.IsNullOrEmpty(strResult))
Reponse.Failed(strResult);
//转换数据
var dto = _mapper.Map(receiveSendWarnInfo.paras);
//添加数据
var id = await _sendWarnInfoRepository.AddAsync(dto, HttpContext.RequestAborted);
//向业务系统推送消息
// await _capPublisher.PublishAsync(EventNames.HotlineOrderCreated, dto,cancellationToken: HttpContext.RequestAborted);
if (!string.IsNullOrEmpty(id))
return Reponse.Success("您已成功提交数据!");
else
return Reponse.Failed("接口调用失败!");
}
///
/// 督办工单派发接口
///
/// 督办工单对象
///
[HttpPost("send_supervise_info")]
[AllowAnonymous]
public async Task SendSuperviseInfo([FromBody] SendSuperviseInfoRequest receiveSendSuperviseInfo)
{
// 验证
if (receiveSendSuperviseInfo is null || receiveSendSuperviseInfo.paras is null)
Reponse.Failed("数据解析失败");
string strResult = receiveSendSuperviseInfo.paras.Validate();
if (!string.IsNullOrEmpty(strResult))
Reponse.Failed(strResult);
//转换数据
var dto = _mapper.Map(receiveSendSuperviseInfo.paras);
//添加数据
var id = await _sendSuperviseInfoRepository.AddAsync(dto, HttpContext.RequestAborted);
//向业务系统推送消息
// await _capPublisher.PublishAsync(EventNames.HotlineOrderCreated, dto,cancellationToken: HttpContext.RequestAborted);
if (!string.IsNullOrEmpty(id))
return Reponse.Success("您已成功提交数据!");
else
return Reponse.Failed("接口调用失败!");
}
///
/// 服务工单甄别结果接口
///
/// 服务工单甄别结果对象
///
[HttpPost("screen_case_result_receive")]
[AllowAnonymous]
public async Task ScreenCaseResultReceive([FromBody] ScreenCaseResultReceiveRequest receiveScreenCaseResultReceive)
{
// 验证
if (receiveScreenCaseResultReceive is null || receiveScreenCaseResultReceive.paras is null)
return Reponse.Failed("数据解析失败");
string strResult = receiveScreenCaseResultReceive.paras.Validate();
if (!string.IsNullOrEmpty(strResult))
return Reponse.Failed(strResult);
//转换数据
var dto = _mapper.Map(receiveScreenCaseResultReceive.paras);
//添加数据
var id = await _screenCaseResultReceiveRepository.AddAsync(dto, HttpContext.RequestAborted);
//向业务系统推送消息
// await _capPublisher.PublishAsync(EventNames.HotlineOrderCreated, dto,cancellationToken: HttpContext.RequestAborted);
if (!string.IsNullOrEmpty(id))
return Reponse.Success("您已成功提交数据!");
else
return Reponse.Failed("接口调用失败!");
}
///
/// 交办工单满意度接收接口
///
/// 交办工单满意度对象
///
[HttpPost("send_case_evl_result")]
[AllowAnonymous]
public async Task SendCaseEvlResult([FromBody] SendCaseEvlResultRequest receiveSendCaseEvlResult)
{
// 验证
if (receiveSendCaseEvlResult is null || receiveSendCaseEvlResult.paras is null)
return Reponse.Failed("数据解析失败");
string strResult = receiveSendCaseEvlResult.paras.Validate();
if (!string.IsNullOrEmpty(strResult))
return Reponse.Failed(strResult);
//转换数据
var dto = _mapper.Map(receiveSendCaseEvlResult.paras);
//添加数据
var id = await _sendCaseEvlResultRepository.AddAsync(dto, HttpContext.RequestAborted);
//向业务系统推送消息
// await _capPublisher.PublishAsync(EventNames.HotlineOrderCreated, dto,cancellationToken: HttpContext.RequestAborted);
if (!string.IsNullOrEmpty(id))
return Reponse.Success("您已成功提交数据!");
else
return Reponse.Failed("接口调用失败!");
}
///
/// 上报工单处理结果/退回接口
///
/// 上报工单处理结果/退回对象
///
[HttpPost]
[Route("get_case_result_send")]
public async Task GetCaseReultSend([FromBody] GetCaseReultSendRequest receiveGetCaseReultSend)
{
// 验证
if (receiveGetCaseReultSend is null || receiveGetCaseReultSend.paras is null)
return Reponse.Failed("数据解析失败");
string strResult = receiveGetCaseReultSend.paras.Validate();
if (!string.IsNullOrEmpty(strResult))
return Reponse.Failed(strResult);
//转换数据
var dto = _mapper.Map(receiveGetCaseReultSend.paras);
//添加数据
var id = await _getCaseReultSendRepository.AddAsync(dto, HttpContext.RequestAborted);
//向业务系统推送消息
// await _capPublisher.PublishAsync(EventNames.HotlineOrderCreated, dto,cancellationToken: HttpContext.RequestAborted);
if (!string.IsNullOrEmpty(id))
return Reponse.Success("您已成功提交数据!");
else
return Reponse.Failed("接口调用失败!");
}
///
/// 上报工单评价接口
///
/// 上报工单评价对象
///
[HttpPost]
[Route("get_visit_info_send")]
public async Task GetVisitInfoSend([FromBody] GetCaseReultSendRequest receiveGetVisitInfoSend)
{
// 验证
if (receiveGetVisitInfoSend is null || receiveGetVisitInfoSend.paras is null)
return Reponse.Failed("数据解析失败");
string strResult = receiveGetVisitInfoSend.paras.Validate();
if (!string.IsNullOrEmpty(strResult))
return Reponse.Failed(strResult);
//转换数据
var dto = _mapper.Map(receiveGetVisitInfoSend.paras);
//添加数据
var id = await _getVisitInfoSendRepository.AddAsync(dto, HttpContext.RequestAborted);
//向业务系统推送消息
// await _capPublisher.PublishAsync(EventNames.HotlineOrderCreated, dto,cancellationToken: HttpContext.RequestAborted);
if (!string.IsNullOrEmpty(id))
return Reponse.Success("您已成功提交数据!");
else
return Reponse.Failed("接口调用失败!");
}
}
}