|
@@ -1,4 +1,7 @@
|
|
|
-using Sharing.Province.HuiJu.Send;
|
|
|
+using Hotline.Share.Dtos.Order;
|
|
|
+using Hotline.Share.Enums.Order;
|
|
|
+using MapsterMapper;
|
|
|
+using Sharing.Province.HuiJu.Send;
|
|
|
using XF.Domain.Cache;
|
|
|
using XF.Domain.Dependency;
|
|
|
|
|
@@ -7,22 +10,166 @@ namespace Sharing.Api
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
- public class ProvinceService: IProvinceService, IScopeDependency
|
|
|
+ public class ProvinceService : IProvinceService, IScopeDependency
|
|
|
{
|
|
|
private const string OrderNoPrefix = "ProvinceOrderNo:";
|
|
|
private readonly ITypedCache<CacheOrderNO> _cacheOrderNo;
|
|
|
private readonly ISubmitCaseInfoRepository _submitCaseInfoRepository;
|
|
|
+ private readonly IMapper _mapper;
|
|
|
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
/// <param name="cacheOrderNo"></param>
|
|
|
- public ProvinceService(ITypedCache<CacheOrderNO> cacheOrderNo, ISubmitCaseInfoRepository submitCaseInfoRepository)
|
|
|
+ public ProvinceService(ITypedCache<CacheOrderNO> cacheOrderNo, ISubmitCaseInfoRepository submitCaseInfoRepository, IMapper mapper)
|
|
|
{
|
|
|
_cacheOrderNo = cacheOrderNo;
|
|
|
_submitCaseInfoRepository = submitCaseInfoRepository;
|
|
|
+ _mapper = mapper;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 数据处理
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<SubmitCaseInfo> InitData(OrderDto dto)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(dto.EmployeeName))
|
|
|
+ dto.EmployeeName = "8010";
|
|
|
+ if (string.IsNullOrEmpty(dto.EmployeeStaffNo))
|
|
|
+ dto.EmployeeStaffNo = "8010";
|
|
|
+ var submitCaseInfo = _mapper.Map<SubmitCaseInfo>(dto);
|
|
|
+
|
|
|
+ //如果省和市相同直接用市,也就是直辖市的情况
|
|
|
+ if (dto.Province != dto.City)
|
|
|
+ submitCaseInfo.CaseAddress = dto.Province + dto.City + dto.County + dto.Street;
|
|
|
+ else
|
|
|
+ submitCaseInfo.CaseAddress = dto.City + dto.County + dto.Street;
|
|
|
+
|
|
|
+ //处理诉求渠道
|
|
|
+ switch (dto.Channel)
|
|
|
+ {
|
|
|
+ case EChannel.Phone:
|
|
|
+ submitCaseInfo.CaseSource = "RGDH";
|
|
|
+ break;
|
|
|
+ case EChannel.WxOfficial:
|
|
|
+ submitCaseInfo.CaseSource = "WX";
|
|
|
+ break;
|
|
|
+ case EChannel.Web:
|
|
|
+ submitCaseInfo.CaseSource = "WZ";
|
|
|
+ break;
|
|
|
+ case EChannel.App:
|
|
|
+ submitCaseInfo.CaseSource = "Ap";
|
|
|
+ break;
|
|
|
+ case EChannel.WxMiniProgram:
|
|
|
+ submitCaseInfo.CaseSource = "XCX";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ submitCaseInfo.CaseSource = "QT";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ //处理性别
|
|
|
+ switch (dto.FromGender)
|
|
|
+ {
|
|
|
+ case EGender.Female:
|
|
|
+ submitCaseInfo.AppLicantSex = "0";
|
|
|
+ break;
|
|
|
+ case EGender.Male:
|
|
|
+ submitCaseInfo.AppLicantSex = "1";
|
|
|
+ break;
|
|
|
+ case EGender.Unknown:
|
|
|
+ submitCaseInfo.AppLicantSex = "2";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ submitCaseInfo.AppLicantSex = "2";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ //处理证件类型
|
|
|
+ switch (dto.LicenceTypeCode)
|
|
|
+ {
|
|
|
+ case "10":
|
|
|
+ submitCaseInfo.CertifiCateType = "10";
|
|
|
+ break;
|
|
|
+ case "40":
|
|
|
+ submitCaseInfo.CertifiCateType = "20";
|
|
|
+ break;
|
|
|
+ case "55":
|
|
|
+ submitCaseInfo.CertifiCateType = "30";
|
|
|
+ break;
|
|
|
+ case "57":
|
|
|
+ submitCaseInfo.CertifiCateType = "40";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ submitCaseInfo.CertifiCateType = "50";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ //处理受理类型
|
|
|
+ switch (dto.AcceptType)
|
|
|
+ {
|
|
|
+ case EAcceptType.Consult:
|
|
|
+ submitCaseInfo.CaseType = "10";
|
|
|
+ break;
|
|
|
+ case EAcceptType.Suggest:
|
|
|
+ submitCaseInfo.CaseType = "15";
|
|
|
+ break;
|
|
|
+ case EAcceptType.SeekHelp:
|
|
|
+ submitCaseInfo.CaseType = "20";
|
|
|
+ break;
|
|
|
+ case EAcceptType.Praise:
|
|
|
+ submitCaseInfo.CaseType = "25";
|
|
|
+ break;
|
|
|
+ case EAcceptType.Report:
|
|
|
+ submitCaseInfo.CaseType = "30";
|
|
|
+ break;
|
|
|
+ case EAcceptType.Complain:
|
|
|
+ submitCaseInfo.CaseType = "35";
|
|
|
+ break;
|
|
|
+ case EAcceptType.Other:
|
|
|
+ submitCaseInfo.CaseType = "40";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ submitCaseInfo.CaseType = "40";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ //处理紧急程度
|
|
|
+ switch (dto.EmergencyLevel)
|
|
|
+ {
|
|
|
+ case EEmergencyLevel.QuiteEmergency:
|
|
|
+ submitCaseInfo.CaseIsUrgent = "10";
|
|
|
+ break;
|
|
|
+ case EEmergencyLevel.Emergency:
|
|
|
+ submitCaseInfo.CaseIsUrgent = "20";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ submitCaseInfo.CaseIsUrgent = "30";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询是否有数据
|
|
|
+ var data = await _submitCaseInfoRepository.GetAsync(p => p.OrderID == dto.Id && p.No == dto.No);
|
|
|
+ if (data != null && !string.IsNullOrEmpty(data.CaseSerial))
|
|
|
+ {
|
|
|
+ //已经有了省编号
|
|
|
+ submitCaseInfo.CaseSerial = data.CaseSerial;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //没有省编号
|
|
|
+ var newOrderNo = GenerateNewOrderNo(Convert.ToDateTime(dto.CreationTime));
|
|
|
+ var caseSerial = submitCaseInfo.CaseSource + "99" + submitCaseInfo.AreaCode + newOrderNo;
|
|
|
+ submitCaseInfo.CaseSerial = caseSerial;
|
|
|
+ }
|
|
|
+
|
|
|
+ submitCaseInfo.Id = await _submitCaseInfoRepository.AddAsync(submitCaseInfo);
|
|
|
+ return submitCaseInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
@@ -44,18 +191,18 @@ namespace Sharing.Api
|
|
|
// return no;
|
|
|
//}
|
|
|
|
|
|
- public string GenerateNewOrderNo(DateTime today)
|
|
|
+ private string GenerateNewOrderNo(DateTime today)
|
|
|
{
|
|
|
var cacheKey = $"{OrderNoPrefix}{today:yyyyMMdd}";
|
|
|
var cacheOrderNo = _cacheOrderNo.GetOrSet(cacheKey, f =>
|
|
|
{
|
|
|
- var todayOrderCount = _submitCaseInfoRepository.Queryable(true).GroupBy(p=>p.OrderID)
|
|
|
+ var todayOrderCount = _submitCaseInfoRepository.Queryable(true).GroupBy(p => p.OrderID)
|
|
|
.CountAsync(d => d.CaseDate.Date == today.Date)
|
|
|
.GetAwaiter()
|
|
|
.GetResult();
|
|
|
return new CacheOrderNO { TotalCount = todayOrderCount };
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
cacheOrderNo!.TotalCount += 1;
|
|
|
var no = GenerateOrderNo(today, cacheOrderNo.TotalCount);
|
|
|
_cacheOrderNo.Set(cacheKey, cacheOrderNo);
|