TANG JIANG 1 year ago
parent
commit
2c4ed4607e

+ 1 - 0
src/Sharing.Api/Controllers/HotlineMessageReceiveController.cs

@@ -375,6 +375,7 @@ namespace Sharing.Api.Controllers
                         HotspotId=dto.HotspotId,
                         HotspotName=dto.HotspotName,
                         HotspotSpliceName=dto.HotspotSpliceName,
+                        Source=dto.Source.ToString()
                     };
                     await _dataOrderRepository.AddAsync(dataOrder);
                 }

+ 167 - 2
src/Sharing.ConvergenceMedia/Controllers/ConvergenceMediaController.cs

@@ -1,11 +1,20 @@
 using DotNetCore.CAP;
+using Hotline.Share.Dtos.Knowledge;
+using Hotline.Share.Dtos;
 using Hotline.Share.Dtos.Order;
 using MapsterMapper;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Mvc;
 using Sharing.ConvergenceMedia.Dtos;
+using Sharing.Orders;
+using Sharing.Share.Dtos.ConvergenceMedia;
 using Sharing.WebCore;
+using System.Threading;
+using XF.Domain.Authentications;
 using XF.Domain.Repository;
+using Microsoft.IdentityModel.Tokens;
+using SqlSugar;
+using Hotline.Share.Enums.Order;
 
 namespace Sharing.ConvergenceMedia.Controllers
 {
@@ -15,6 +24,7 @@ namespace Sharing.ConvergenceMedia.Controllers
         private readonly ICapPublisher _capPublisher;
         private readonly IChannelConfigurationManager _channelConfigurationManager;
         private readonly IRepository<MediaDataReceive> _mediaDataReceiveRepository;
+        private readonly IDataOrderRepository _dataOrderRepository;
 
         /// <summary>
         /// 
@@ -23,16 +33,19 @@ namespace Sharing.ConvergenceMedia.Controllers
         /// <param name="capPublisher"></param>
         /// <param name="channelConfigurationManager"></param>
         /// <param name="mediaDataReceiveRepository"></param>
-        public ConvergenceMediaController(IMapper mapper, ICapPublisher capPublisher, IChannelConfigurationManager channelConfigurationManager, IRepository<MediaDataReceive> mediaDataReceiveRepository)
+        /// <param name="dataOrderRepository"></param>
+        public ConvergenceMediaController(IMapper mapper, ICapPublisher capPublisher, IChannelConfigurationManager channelConfigurationManager,
+            IRepository<MediaDataReceive> mediaDataReceiveRepository, IDataOrderRepository dataOrderRepository)
         {
             _mapper = mapper;
             _capPublisher = capPublisher;
             _channelConfigurationManager = channelConfigurationManager;
             _mediaDataReceiveRepository = mediaDataReceiveRepository;
+            _dataOrderRepository = dataOrderRepository;
         }
 
         /// <summary>
-        /// 融媒体写信
+        /// 2.1融媒体写信
         /// </summary>
         /// <param name="mediaDataReceiveDto"></param>
         /// <returns></returns>
@@ -158,6 +171,158 @@ namespace Sharing.ConvergenceMedia.Controllers
                 return DeReponse<WriteOrderResponseDto>.Failed(new WriteOrderResponseDto() { AcceptCode = "", AcceptPwd = "", msg = "接口调用失败", Code = "0" }, "1", description: "接口调用失败!");
         }
 
+        /// <summary>
+        /// 2.2工单列表
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost("GetOrderByList")]
+        [AllowAnonymous]
+        public async Task<DeReponse<GetOrderMediaDataDto>> GetOrderByList([FromBody] GetOrderMediaReceiveDto dto)
+        {
+            var mediaCode = _channelConfigurationManager.GetConfigurationMediaCode();
+            if (mediaCode.MediaCode.ToLower().Trim() != dto.Code.ToLower().Trim())
+                return DeReponse<GetOrderMediaDataDto>.Failed(new GetOrderMediaDataDto(), "0", "密钥错误");
+
+            string AcceptTypeCode = "";
+            switch (dto.PurTypeID)
+            {
+                case 17:
+                    AcceptTypeCode = "10";
+                    break;
+                case 18:
+                    AcceptTypeCode = "30";
+                    break;
+                case 19:
+                    AcceptTypeCode = "35";
+                    break;
+                case 20:
+                    AcceptTypeCode = "20";
+                    break;
+                case 21:
+                    AcceptTypeCode = "15";
+                    break;
+                case 25:
+                    AcceptTypeCode = "40";
+                    break;
+                default:
+                    AcceptTypeCode = "";
+                    break;
+            }
+
+            RefAsync<int> total = 0;
+            var items = await _dataOrderRepository
+            .Queryable()
+            .Where(p => p.Source == ESource.ConvergenceMedia.ToString())
+            .WhereIF(!string.IsNullOrEmpty(dto.AcceptCode), p => p.OrderNo.Contains(dto.AcceptCode))
+            .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Title.Contains(dto.Title))
+            .WhereIF(!string.IsNullOrEmpty(dto.Mobile), p => p.Contact.Contains(dto.Mobile))
+            .WhereIF(!string.IsNullOrEmpty(AcceptTypeCode), p => p.CaseTypeCode == AcceptTypeCode)
+            .WhereIF(!string.IsNullOrEmpty(dto.StartDate), p => p.CaseDate >= Convert.ToDateTime(dto.StartDate))
+            .WhereIF(!string.IsNullOrEmpty(dto.EndDate), p => p.CaseDate < Convert.ToDateTime(dto.EndDate).AddDays(1))
+            .Select(it => new
+            {
+                FlowID = it.Id,
+                RowID = SqlFunc.MappingColumn(default(int), "  row_number()  over( order by 'AddDate' desc ) "),
+                Code = it.OrderNo,
+                Title = it.Title,
+                AddDate = it.CaseDate,
+                FromName = it.CaseSource,
+                PurTypeName = it.CaseType,
+                ResultState = it.HandleState
+            })
+              .ToPageListAsync(dto.CurrentPage, dto.PageSize, total);
+
+            //计算总页数
+            int nPageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(total) / dto.PageSize));
+
+            GetOrderMediaDataDto dataDto = new()
+            {
+                PageCount = nPageCount,
+                data = _mapper.Map<IReadOnlyList<GetOrderMediaDataListDto>>(items)
+            };
+
+            return DeReponse<GetOrderMediaDataDto>.Success(dataDto, "成功");
+
+
+        }
+
+
 
+
+
+
+        /// <summary>
+        /// 2.5 答复公开
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost("GetOrderByListOpen")]
+        [AllowAnonymous]
+        public async Task<DeReponse<GetOrderMediaDataDto>> GetOrderByListOpen([FromBody] GetOrderMediaReceiveOpenDto dto)
+        {
+            var mediaCode = _channelConfigurationManager.GetConfigurationMediaCode();
+            if (mediaCode.MediaCode.ToLower().Trim() != dto.Code.ToLower().Trim())
+                return DeReponse<GetOrderMediaDataDto>.Failed(new GetOrderMediaDataDto(), "0", "密钥错误");
+
+            string AcceptTypeCode = "";
+            switch (dto.PurTypeID)
+            {
+                case 17:
+                    AcceptTypeCode = "10";
+                    break;
+                case 18:
+                    AcceptTypeCode = "30";
+                    break;
+                case 19:
+                    AcceptTypeCode = "35";
+                    break;
+                case 20:
+                    AcceptTypeCode = "20";
+                    break;
+                case 21:
+                    AcceptTypeCode = "15";
+                    break;
+                case 25:
+                    AcceptTypeCode = "40";
+                    break;
+                default:
+                    AcceptTypeCode = "";
+                    break;
+            }
+
+            RefAsync<int> total = 0;
+            var items = await _dataOrderRepository
+            .Queryable()
+            .Where(p => p.Source == ESource.ConvergenceMedia.ToString())
+            .WhereIF(!string.IsNullOrEmpty(dto.Title), p => p.Title.Contains(dto.Title))
+            .WhereIF(!string.IsNullOrEmpty(AcceptTypeCode), p => p.CaseTypeCode == AcceptTypeCode)
+            .WhereIF(!string.IsNullOrEmpty(dto.StartDate), p => p.CaseDate >= Convert.ToDateTime(dto.StartDate))
+            .WhereIF(!string.IsNullOrEmpty(dto.EndDate), p => p.CaseDate < Convert.ToDateTime(dto.EndDate).AddDays(1))
+            .Select(it => new
+            {
+                FlowID = it.Id,
+                RowID = SqlFunc.MappingColumn(default(int), "  row_number()  over( order by 'AddDate' desc ) "),
+                Code = it.OrderNo,
+                Title = it.Title,
+                AddDate = it.CaseDate,
+                FromName = it.CaseSource,
+                PurTypeName = it.CaseType,
+                ResultState = it.HandleState
+            })
+              .ToPageListAsync(dto.CurrentPage, dto.PageSize, total);
+
+            //计算总页数
+            int nPageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(total) / dto.PageSize));
+
+            GetOrderMediaDataDto dataDto = new()
+            {
+                PageCount = nPageCount,
+                data = _mapper.Map<IReadOnlyList<GetOrderMediaDataListDto>>(items)
+            };
+
+            return DeReponse<GetOrderMediaDataDto>.Success(dataDto, "成功");
+
+        }
     }
 }

+ 64 - 0
src/Sharing.Share/Dtos/ConvergenceMedia/GetOrderMediaDataDto.cs

@@ -0,0 +1,64 @@
+namespace Sharing.Share.Dtos.ConvergenceMedia
+{
+    /// <summary>
+    /// 工单列表数据
+    /// </summary>
+    public class GetOrderMediaDataDto
+    {
+        /// <summary>
+        /// 总页数
+        /// </summary>
+        public int PageCount { get; set; } = 0;
+
+        /// <summary>
+        /// 数据
+        /// </summary>
+        public IReadOnlyList<GetOrderMediaDataListDto> data { get; set; }
+    }
+
+    /// <summary>
+    /// 工单数据
+    /// </summary>
+    public class GetOrderMediaDataListDto
+    {
+        /// <summary>
+        /// 索引
+        /// </summary>
+        public string RowID { get; set; }
+
+        /// <summary>
+        /// 标识
+        /// </summary>
+        public string FlowID { get; set; }
+
+        /// <summary>
+        /// 工单编号
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 工单标题
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 保存时间
+        /// </summary>
+        public string AddDate { get; set; }
+
+        /// <summary>
+        /// 工单来源
+        /// </summary>
+        public string FromName { get; set; }
+
+        /// <summary>
+        /// 受理类型
+        /// </summary>
+        public string PurTypeName { get; set; }
+
+        /// <summary>
+        /// 办理状态
+        /// </summary>
+        public string ResultState { get; set; }
+    }
+}

+ 53 - 0
src/Sharing.Share/Dtos/ConvergenceMedia/GetOrderMediaReceiveDto.cs

@@ -0,0 +1,53 @@
+namespace Sharing.Share.Dtos.ConvergenceMedia
+{
+    /// <summary>
+    /// 工单列表
+    /// </summary>
+    public record GetOrderMediaReceiveDto
+    {
+        /// <summary>
+        /// 接口密钥
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 工单编号
+        /// </summary>
+        public string AcceptCode { get; set; }
+
+        /// <summary>
+        /// 标题
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 手机号
+        /// </summary>
+        public string Mobile { get; set; }
+
+        /// <summary>
+        /// 受理类型编码
+        /// </summary>
+        public int PurTypeID { get; set; }
+
+        /// <summary>
+        /// 开始时间(格式:2020-01-01)
+        /// </summary>
+        public string StartDate { get; set; }
+
+        /// <summary>
+        /// 结束时间(格式:2020-01-01)
+        /// </summary>
+        public string EndDate { get; set; }
+
+        /// <summary>
+        /// 当前页
+        /// </summary>
+        public int CurrentPage { get; set; } = 1;
+
+        /// <summary>
+        /// 查询每页大小(每页最大20条)
+        /// </summary>
+        public int PageSize { get; set; } = 10;
+    }
+}

+ 43 - 0
src/Sharing.Share/Dtos/ConvergenceMedia/GetOrderMediaReceiveOpenDto.cs

@@ -0,0 +1,43 @@
+namespace Sharing.Share.Dtos.ConvergenceMedia
+{
+    /// <summary>
+    /// 答复公开
+    /// </summary>
+    public class GetOrderMediaReceiveOpenDto
+    {
+        /// <summary>
+        /// 接口密钥
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 标题
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 受理类型编码
+        /// </summary>
+        public int PurTypeID { get; set; }
+
+        /// <summary>
+        /// 开始时间(格式:2020-01-01)
+        /// </summary>
+        public string StartDate { get; set; }
+
+        /// <summary>
+        /// 结束时间(格式:2020-01-01)
+        /// </summary>
+        public string EndDate { get; set; }
+
+        /// <summary>
+        /// 当前页
+        /// </summary>
+        public int CurrentPage { get; set; } = 1;
+
+        /// <summary>
+        /// 查询每页大小(每页最大20条)
+        /// </summary>
+        public int PageSize { get; set; } = 10;
+    }
+}

+ 9 - 4
src/Sharing/Orders/DataOrder.cs

@@ -62,6 +62,11 @@ public class DataOrder : CreationModificationEntity
     [SugarColumn(ColumnDescription = "受理时间", IsNullable = true)]
     public DateTime? CaseDate { get; set; }
 
+    /// <summary>
+    ///   来源,区分省平台或110等其他平台同步过来的工单
+    /// </summary>
+    public string Source { get; set; }
+
     /// <summary>
     /// 第一次工单同步省平台时间
     /// </summary>
@@ -171,15 +176,15 @@ public class DataOrder : CreationModificationEntity
     public string? NewSatisfaction { get; set; }
 
     /// <summary>
-    /// 同步诉求类型名称
+    /// 受理类型名称
     /// </summary>
-    [SugarColumn(ColumnDescription = "同步诉求类型名称", IsNullable = true)]
+    [SugarColumn(ColumnDescription = "受理类型名称", IsNullable = true)]
     public string? CaseType { get; set; }
 
     /// <summary>
-    /// 同步诉求类型
+    /// 受理类型Code
     /// </summary>
-    [SugarColumn(ColumnDescription = "同步诉求类型", IsNullable = true)]
+    [SugarColumn(ColumnDescription = "受理类型Code", IsNullable = true)]
     public string? CaseTypeCode { get; set; }
 
     /// <summary>