TANG JIANG hai 1 ano
pai
achega
6d6ec0998d

+ 16 - 161
src/Sharing.Api/Controllers/HotlineMessageReceiveController.cs

@@ -349,7 +349,7 @@ namespace Sharing.Api.Controllers
 
         #region 汇聚-第二批次
         /// <summary>
-        /// 服务工单受理  --- 部分字段未赋值处理
+        /// 服务工单受理 
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
@@ -357,168 +357,23 @@ namespace Sharing.Api.Controllers
         [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderCreated)]
         public async Task ReceiveOrderCreated(OrderDto dto)
         {
+            dto.AreaCode= AreaCode;
+            var submitCaseInfo =await _provinceService.InitData(dto);
 
-            //处理数据
-            SubmitCaseInfo submitCaseInfo = new()
-            {
-                OrderID = dto.Id,
-                No = dto.No,
-                CaseTitle = dto.Title,
-                CaseRegister = "8010",// dto.EmployeeName,
-                CaseRegisterNo = "8010",// dto.EmployeeStaffNo,
-                CaseDate = Convert.ToDateTime(dto.CreationTime),
-                PhoneNumber = dto.Contact,
-                AppLicantName = dto.FromName,
-                AppLicantAge = dto.AgeRangeCode,
-                AppLicantId = dto.LicenceNo,
-                CaseAccord = "040314",
-                CaseContent = dto.Content,
-                CaseProcessType = "10",
-                CaseIsPublic = "1",
-                CaseIsSecrect = "1",
-                CaseIsVisit = "1",
-                CaseValid = "1",
-                TSigntTmeBf = null,
-                TfdBackTimeBf = null,
-                TBackTimeBf = null,
-                RelateSerial = "",
-                CaseLngLat = "",
-                CaseEmotion = "",
-                EventDate = dto.IncidentTime,
-                CaseGoal = "",
-                ThemeSerial = "1",
-                AdviseType = "",
-                AdviseDept = "",
-                ComplainType = "",
-                ComplainDept = "",
-                PushType = dto.PushTypeCode,
-                CaseSerial = "",
-                AreaCode = AreaCode,
-                CliengGuid =""
-            };
-
-            //如果省和市相同直接用市,也就是直辖市的情况
-            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:
-                    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:
-                    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:
-                    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 = _provinceService.GenerateNewOrderNo(Convert.ToDateTime(dto.CreationTime));
-                var caseSerial = submitCaseInfo.CaseSource + "99" + submitCaseInfo.AreaCode + newOrderNo;
-                submitCaseInfo.CaseSerial = caseSerial;
-            }
+            await _mediator.Publish(new OrderCreatedNotification(submitCaseInfo));
+        }
 
-            submitCaseInfo.Id = await _submitCaseInfoRepository.AddAsync(submitCaseInfo);
+        /// <summary>
+        /// 工单从中心派往部门
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [NonAction]
+        [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderCenterToOrg)]
+        public async Task OrderCenterToOrg(OrderDto dto)
+        {
+            dto.AreaCode = AreaCode;
+            var submitCaseInfo = await _provinceService.InitData(dto);
 
             await _mediator.Publish(new OrderCreatedNotification(submitCaseInfo));
         }

+ 7 - 4
src/Sharing.Api/IProvinceService.cs

@@ -1,4 +1,7 @@
-namespace Sharing.Api
+using Hotline.Share.Dtos.Order;
+using Sharing.Province.HuiJu.Send;
+
+namespace Sharing.Api
 {
     /// <summary>
     /// 
@@ -6,10 +9,10 @@
     public interface IProvinceService
     {
         /// <summary>
-        /// 获取缓存省编号
+        /// 数据处理
         /// </summary>
-        /// <param name="today"></param>
+        /// <param name="dto"></param>
         /// <returns></returns>
-        string GenerateNewOrderNo(DateTime today);
+        Task<SubmitCaseInfo> InitData(OrderDto dto);
     }
 }

+ 153 - 6
src/Sharing.Api/ProvinceService.cs

@@ -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);

+ 36 - 1
src/Sharing.Application/Mappers/MapperConfigs.cs

@@ -1,4 +1,8 @@
-using Mapster;
+using Hotline.Share.Dtos.Order;
+using Hotline.Share.Enums.Order;
+using Mapster;
+using Newtonsoft.Json.Linq;
+using Sharing.Province.HuiJu.Send;
 
 namespace Sharing.Application.Mappers
 {
@@ -6,6 +10,37 @@ namespace Sharing.Application.Mappers
     {
         public void Register(TypeAdapterConfig config)
         {
+            config.ForType<OrderDto, SubmitCaseInfo>()
+                .Ignore(d=>d.Id)
+                .Map(d => d.OrderID, x => x.Id)
+                .Map(d => d.CaseTitle, x => x.Title)
+                .Map(d => d.CaseRegister, x => x.EmployeeName)
+                .Map(d => d.CaseRegisterNo, x => x.EmployeeStaffNo)
+                .Map(d => d.CaseDate, x => Convert.ToDateTime(x.CreationTime))
+                .Map(d => d.PhoneNumber, x => x.Contact)
+                .Map(d => d.AppLicantName, x => x.FromName)
+                .Map(d => d.AppLicantAge, x => x.AgeRangeCode)
+                .Map(d => d.AppLicantId, x => x.LicenceNo)
+                .Map(d => d.CaseAccord, x => x.Hotspot.ProvinceCode)
+                .Map(d => d.CaseContent, x => x.Content)
+                .Map(d => d.CaseProcessType, x => Convert.ToInt32(x.ProcessType) )
+                // .Map(d => d.CaseIsPublic, x => x.)  //是否公开
+                .Map(d => d.CaseIsSecrect, x => x.NeedContact ? "0" : "1")
+                .Map(d => d.CaseIsVisit, x => x.ProcessType == Hotline.Share.Enums.Order.EProcessType.Zhiban ? "0" : "1")
+                .Map(d => d.EventDate, x => x.IncidentTime)
+                .Map(d => d.PushType, x => x.PushTypeCode)
+                //.Map(d => d.CaseAddress, x => x.Province == x.City ? x.City + x.County + x.Street : x.Province + x.City + x.County + x.Street)
+                //.Map(d => d.AppLicantSex, x => x.FromGender == EGender.Female ? "0" : x.FromGender == EGender.Male ? "1" : "2")
+                // .Map(d => d.CaseIsUrgent, x => x.EmergencyLevel == EEmergencyLevel.QuiteEmergency ? "10" : x.EmergencyLevel == EEmergencyLevel.Emergency ? "20" : "30")
+
+                //  .Map(d => d.CertifiCateType, x => x.LicenceTypeCode == "10" ? "10" :
+                //  x.LicenceTypeCode == "40" ? "20" :
+                //  x.LicenceTypeCode == "55" ? "30" :
+                //  x.LicenceTypeCode == "57" ? "40" :
+                //  "50")
+
+              
+              ;
         }
     }
 }

+ 1 - 1
src/Sharing.Application/Sharing.Application.csproj

@@ -7,7 +7,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Hotline.Share" Version="1.0.2" />
+    <PackageReference Include="Hotline.Share" Version="1.0.4" />
     <PackageReference Include="XF.EasyCaching" Version="1.0.0" />
   </ItemGroup>
 

+ 3 - 3
src/Sharing/Province/HuiJu/Send/SubmitCaseInfo.cs

@@ -115,7 +115,7 @@ namespace Sharing.Province.HuiJu.Send
         /// 是否公开
         /// </summary>
         [SugarColumn(ColumnDescription = "是否公开", ColumnDataType = "varchar(4)")]
-        public string CaseIsPublic { get; set; }
+        public string CaseIsPublic { get; set; } = "0";
 
         /// <summary>
         /// 是否保密
@@ -133,7 +133,7 @@ namespace Sharing.Province.HuiJu.Send
         /// 是否有效受理
         /// </summary>
         [SugarColumn(ColumnDescription = "是否有效受理", ColumnDataType = "varchar(4)")]
-        public string CaseValid { get; set; }
+        public string CaseValid { get; set; } = "1";
 
         /// <summary>
         /// 紧急程度
@@ -199,7 +199,7 @@ namespace Sharing.Province.HuiJu.Send
         /// 主题工单类型
         /// </summary>
         [SugarColumn(ColumnDescription = "主题工单类型", ColumnDataType = "varchar(50)")]
-        public string ThemeSerial { get; set; }
+        public string ThemeSerial { get; set; } = "20";
 
         /// <summary>
         /// 建议类型 0:网站建议;1:网站建议;2:我要纠错