Browse Source

Merge branch 'feature/snapshot' into dev

qinchaoyue 4 tháng trước cách đây
mục cha
commit
6df14473fb

+ 9 - 0
src/Hotline.Api/Controllers/Snapshot/SnapshotController.cs

@@ -188,6 +188,15 @@ public class SnapshotController : BaseController
     public async Task<OrderPublishDetailOutDto> QueryOrderListAsync(string id)
         => await _snapshotApplication.GetSnapshotOrderDetailAsync(id, HttpContext.RequestAborted);
 
+    /// <summary>
+    /// 获取回访详情
+    /// </summary>
+    /// <param name="id"></param>
+    /// <returns></returns>
+    [HttpGet("order/visit/{id}")]
+    public async Task<IList<OrderVisitItemsOutDto>> GetOrderVisitDetailAsync(string id)
+        => await _snapshotApplication.GetOrderVisitDetailAsync(id);
+
     /// <summary>
     /// 统计红包金额, 每月的总金额
     /// </summary>

+ 1 - 1
src/Hotline.Api/StartupExtensions.cs

@@ -156,7 +156,7 @@ internal static class StartupExtensions
                 services.AddProxiedScoped<ISnapshotApplication, DefaultSnapshotApplication>();
                 break;
             case AppDefaults.AppScope.ZiGong:
-                services.AddProxiedScoped<ISnapshotApplication, DefaultSnapshotApplication>();
+                services.AddProxiedScoped<ISnapshotApplication, ZiGongSnapshotApplication>();
                 break;
             case AppDefaults.AppScope.LuZhou:
                 services.AddProxiedScoped<ISnapshotApplication, DefaultSnapshotApplication>();

+ 1 - 0
src/Hotline.Application.Tests/Application/SnapshotApplicationMockTest.cs

@@ -106,6 +106,7 @@ namespace Hotline.Application.Tests.Snapshot
                 _fileDomainServiceMock.Object,
                 null,
                 null,
+                null,
                 null
             );
         }

+ 1 - 1
src/Hotline.Application/Snapshot/DefaultSnapshotApplication.cs

@@ -25,7 +25,7 @@ namespace Hotline.Application.Snapshot;
 public class DefaultSnapshotApplication : SnapshotApplicationBase
     , ISnapshotApplication, IScopeDependency
 {
-    public DefaultSnapshotApplication(IThirdIdentiyService thirdLoginService, IRepository<Industry> industryRepository, ISnapshotBulletinRepository bulletinRepository, ISessionContext sessionContext, IRepository<RedPackRecord> redPackRecordRepository, IRepository<Order> orderRepository, IThirdAccountRepository thirdAccountRepository, IOrderSnapshotRepository orderSnapshotRepository, ISystemSettingCacheManager systemSettingCacheManager, ISystemAreaDomainService systemAreaDomainService, IFileRepository fileRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, IRepository<WorkflowTrace> workflowTraceRepository, IPractitionerRepository practitionerRepository, IRepository<SystemArea> systemAreaRepository, IVolunteerRepository volunteerRepository, IVolunteerReportRepository volunteerReportRepository, ISystemLogRepository systemLog, IGuiderSystemService guiderSystemService, ICapPublisher capPublisher, Publisher publisher, IGuiderInfoRepository guiderInfoRepository, IFileDomainService fileDomainService, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IOrderVisitRepository orderVisitRepository) : base(thirdLoginService, industryRepository, bulletinRepository, sessionContext, redPackRecordRepository, orderRepository, thirdAccountRepository, orderSnapshotRepository, systemSettingCacheManager, systemAreaDomainService, fileRepository, systemDicDataCacheManager, snapshotOrderPublishRepository, workflowTraceRepository, practitionerRepository, systemAreaRepository, volunteerRepository, volunteerReportRepository, systemLog, guiderSystemService, capPublisher, publisher, guiderInfoRepository, fileDomainService, communityInfoRepository, redPackAuditRepository, orderVisitRepository)
+    public DefaultSnapshotApplication(IThirdIdentiyService thirdLoginService, IRepository<Industry> industryRepository, ISnapshotBulletinRepository bulletinRepository, ISessionContext sessionContext, IRepository<RedPackRecord> redPackRecordRepository, IRepository<Order> orderRepository, IThirdAccountRepository thirdAccountRepository, IOrderSnapshotRepository orderSnapshotRepository, ISystemSettingCacheManager systemSettingCacheManager, ISystemAreaDomainService systemAreaDomainService, IFileRepository fileRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, IRepository<WorkflowTrace> workflowTraceRepository, IPractitionerRepository practitionerRepository, IRepository<SystemArea> systemAreaRepository, IVolunteerRepository volunteerRepository, IVolunteerReportRepository volunteerReportRepository, ISystemLogRepository systemLog, IGuiderSystemService guiderSystemService, ICapPublisher capPublisher, Publisher publisher, IGuiderInfoRepository guiderInfoRepository, IFileDomainService fileDomainService, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IOrderVisitRepository orderVisitRepository, IOrderVisitDetailRepository orderVisitDetailRepository) : base(thirdLoginService, industryRepository, bulletinRepository, sessionContext, redPackRecordRepository, orderRepository, thirdAccountRepository, orderSnapshotRepository, systemSettingCacheManager, systemAreaDomainService, fileRepository, systemDicDataCacheManager, snapshotOrderPublishRepository, workflowTraceRepository, practitionerRepository, systemAreaRepository, volunteerRepository, volunteerReportRepository, systemLog, guiderSystemService, capPublisher, publisher, guiderInfoRepository, fileDomainService, communityInfoRepository, redPackAuditRepository, orderVisitRepository, orderVisitDetailRepository)
     {
     }
 }

+ 7 - 0
src/Hotline.Application/Snapshot/ISnapshotApplication.cs

@@ -214,4 +214,11 @@ public interface ISnapshotApplication
     /// <param name="cancellationToken"></param>
     /// <returns></returns>
     Task<string> AddRedPardAsync(string id, CancellationToken cancellationToken);
+
+    /// <summary>
+    /// 获取回访详情
+    /// </summary>
+    /// <param name="id"></param>
+    /// <returns></returns>
+    Task<IList<OrderVisitItemsOutDto>> GetOrderVisitDetailAsync(string id);
 }

+ 38 - 1
src/Hotline.Application/Snapshot/SnapshotApplicationBase.cs

@@ -35,6 +35,7 @@ using Hotline.Snapshot.Notifications;
 using Hotline.EventBus;
 using Hotline.Quality.Notifications;
 using Hotline.Settings.SystemLogDomain;
+using XF.Utility.EnumExtensions;
 
 namespace Hotline.Application.Snapshot;
 
@@ -74,8 +75,9 @@ public abstract class SnapshotApplicationBase
     private readonly ICommunityInfoRepository _communityInfoRepository;
     private readonly IRedPackAuditRepository _redPackAuditRepository;
     private readonly IOrderVisitRepository _orderVisitRepository;
+    private readonly IOrderVisitDetailRepository _orderVisitDetailRepository;
 
-    public SnapshotApplicationBase(IThirdIdentiyService thirdLoginService, IRepository<Industry> industryRepository, ISnapshotBulletinRepository bulletinRepository, ISessionContext sessionContext, IRepository<RedPackRecord> redPackRecordRepository, IRepository<Order> orderRepository, IThirdAccountRepository thirdAccountRepository, IOrderSnapshotRepository orderSnapshotRepository, ISystemSettingCacheManager systemSettingCacheManager, ISystemAreaDomainService systemAreaDomainService, IFileRepository fileRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, IRepository<WorkflowTrace> workflowTraceRepository, IPractitionerRepository practitionerRepository, IRepository<SystemArea> systemAreaRepository, IVolunteerRepository volunteerRepository, IVolunteerReportRepository volunteerReportRepository, ISystemLogRepository systemLog, IGuiderSystemService guiderSystemService, ICapPublisher capPublisher, Publisher publisher, IGuiderInfoRepository guiderInfoRepository, IFileDomainService fileDomainService, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IOrderVisitRepository orderVisitRepository)
+    public SnapshotApplicationBase(IThirdIdentiyService thirdLoginService, IRepository<Industry> industryRepository, ISnapshotBulletinRepository bulletinRepository, ISessionContext sessionContext, IRepository<RedPackRecord> redPackRecordRepository, IRepository<Order> orderRepository, IThirdAccountRepository thirdAccountRepository, IOrderSnapshotRepository orderSnapshotRepository, ISystemSettingCacheManager systemSettingCacheManager, ISystemAreaDomainService systemAreaDomainService, IFileRepository fileRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, IRepository<WorkflowTrace> workflowTraceRepository, IPractitionerRepository practitionerRepository, IRepository<SystemArea> systemAreaRepository, IVolunteerRepository volunteerRepository, IVolunteerReportRepository volunteerReportRepository, ISystemLogRepository systemLog, IGuiderSystemService guiderSystemService, ICapPublisher capPublisher, Publisher publisher, IGuiderInfoRepository guiderInfoRepository, IFileDomainService fileDomainService, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IOrderVisitRepository orderVisitRepository, IOrderVisitDetailRepository orderVisitDetailRepository)
     {
         _thirdLoginService = thirdLoginService;
         _industryRepository = industryRepository;
@@ -104,6 +106,7 @@ public abstract class SnapshotApplicationBase
         _communityInfoRepository = communityInfoRepository;
         _redPackAuditRepository = redPackAuditRepository;
         _orderVisitRepository = orderVisitRepository;
+        _orderVisitDetailRepository = orderVisitDetailRepository;
     }
 
     #region 小程序
@@ -387,6 +390,40 @@ public abstract class SnapshotApplicationBase
         return outDto;
     }
 
+    /// <summary>
+    /// 获取回访详情
+    /// </summary>
+    /// <param name="id"></param>
+    /// <returns></returns>
+    public async Task<IList<OrderVisitItemsOutDto>> GetOrderVisitDetailAsync(string id)
+    { 
+        var orderVisitId = await _orderVisitRepository.Queryable()
+            .Where(m => m.OrderId == id)
+            .Select(m => m.Id)
+            .FirstAsync();
+        if (orderVisitId.IsNullOrEmpty()) return [];
+        var orderVisitDetail = await _orderVisitDetailRepository.Queryable()
+            .Where(m => m.VisitId == orderVisitId)
+            .ToListAsync();
+        if (orderVisitDetail.IsNullOrEmpty()) return [];
+        var seat = orderVisitDetail.Where(m => m.VisitTarget == EVisitTarget.Seat).First();
+        var item = new OrderVisitItemsOutDto();
+        if (seat != null && seat.SeatEvaluate.HasValue)
+        {
+            item.SeatEvaluate = seat.SeatEvaluate.Value.GetDescription();
+        }
+        var org = orderVisitDetail.Where(m => m.VisitTarget == EVisitTarget.Org).First();
+        if (org != null)
+        { 
+            if (org.OrgProcessingResults != null) item.OrgProcessingResults = org.OrgProcessingResults.Value;
+            if (org.OrgHandledAttitude != null) item.OrgHandledAttitude = org.OrgHandledAttitude.Value;
+        }
+        return
+        [
+            item
+        ];
+    }
+
     /// <summary>
     /// 获取当月详细红包列表
     /// </summary>

+ 1 - 1
src/Hotline.Application/Snapshot/ZiGongSnapshotApplication.cs

@@ -24,7 +24,7 @@ namespace Hotline.Application.Snapshot;
 [Injection(AppScopes = EAppScope.ZiGong)]
 public class ZiGongSnapshotApplication : SnapshotApplicationBase, ISnapshotApplication, IScopeDependency
 {
-    public ZiGongSnapshotApplication(IThirdIdentiyService thirdLoginService, IRepository<Industry> industryRepository, ISnapshotBulletinRepository bulletinRepository, ISessionContext sessionContext, IRepository<RedPackRecord> redPackRecordRepository, IRepository<Order> orderRepository, IThirdAccountRepository thirdAccountRepository, IOrderSnapshotRepository orderSnapshotRepository, ISystemSettingCacheManager systemSettingCacheManager, ISystemAreaDomainService systemAreaDomainService, IFileRepository fileRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, IRepository<WorkflowTrace> workflowTraceRepository, IPractitionerRepository practitionerRepository, IRepository<SystemArea> systemAreaRepository, IVolunteerRepository volunteerRepository, IVolunteerReportRepository volunteerReportRepository, ISystemLogRepository systemLog, IGuiderSystemService guiderSystemService, ICapPublisher capPublisher, Publisher publisher, IGuiderInfoRepository guiderInfoRepository, IFileDomainService fileDomainService, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IOrderVisitRepository orderVisitRepository) : base(thirdLoginService, industryRepository, bulletinRepository, sessionContext, redPackRecordRepository, orderRepository, thirdAccountRepository, orderSnapshotRepository, systemSettingCacheManager, systemAreaDomainService, fileRepository, systemDicDataCacheManager, snapshotOrderPublishRepository, workflowTraceRepository, practitionerRepository, systemAreaRepository, volunteerRepository, volunteerReportRepository, systemLog, guiderSystemService, capPublisher, publisher, guiderInfoRepository, fileDomainService, communityInfoRepository, redPackAuditRepository, orderVisitRepository)
+    public ZiGongSnapshotApplication(IThirdIdentiyService thirdLoginService, IRepository<Industry> industryRepository, ISnapshotBulletinRepository bulletinRepository, ISessionContext sessionContext, IRepository<RedPackRecord> redPackRecordRepository, IRepository<Order> orderRepository, IThirdAccountRepository thirdAccountRepository, IOrderSnapshotRepository orderSnapshotRepository, ISystemSettingCacheManager systemSettingCacheManager, ISystemAreaDomainService systemAreaDomainService, IFileRepository fileRepository, ISystemDicDataCacheManager systemDicDataCacheManager, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, IRepository<WorkflowTrace> workflowTraceRepository, IPractitionerRepository practitionerRepository, IRepository<SystemArea> systemAreaRepository, IVolunteerRepository volunteerRepository, IVolunteerReportRepository volunteerReportRepository, ISystemLogRepository systemLog, IGuiderSystemService guiderSystemService, ICapPublisher capPublisher, Publisher publisher, IGuiderInfoRepository guiderInfoRepository, IFileDomainService fileDomainService, ICommunityInfoRepository communityInfoRepository, IRedPackAuditRepository redPackAuditRepository, IOrderVisitRepository orderVisitRepository, IOrderVisitDetailRepository orderVisitDetailRepository) : base(thirdLoginService, industryRepository, bulletinRepository, sessionContext, redPackRecordRepository, orderRepository, thirdAccountRepository, orderSnapshotRepository, systemSettingCacheManager, systemAreaDomainService, fileRepository, systemDicDataCacheManager, snapshotOrderPublishRepository, workflowTraceRepository, practitionerRepository, systemAreaRepository, volunteerRepository, volunteerReportRepository, systemLog, guiderSystemService, capPublisher, publisher, guiderInfoRepository, fileDomainService, communityInfoRepository, redPackAuditRepository, orderVisitRepository, orderVisitDetailRepository)
     {
     }
 }

+ 2 - 1
src/Hotline.Repository.SqlSugar/Orders/OrderVisitDetailRepository.cs

@@ -6,9 +6,10 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using XF.Domain.Dependency;
 
 namespace Hotline.Repository.SqlSugar.Orders;
-public class OrderVisitDetailRepository : BaseRepository<OrderVisitDetail>, IOrderVisitDetailRepository
+public class OrderVisitDetailRepository : BaseRepository<OrderVisitDetail>, IOrderVisitDetailRepository, IScopeDependency
 {
     public OrderVisitDetailRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
     {

+ 26 - 0
src/Hotline.Share/Dtos/Snapshot/OrderPublishDto.cs

@@ -175,3 +175,29 @@ public class OrderPublishOutDto
     public string County { get; set; }
 }
 
+
+/// <summary>
+/// 满意度
+/// </summary>
+public class OrderVisitItemsOutDto
+{
+    /// <summary>
+    /// 中心满意度
+    /// </summary>
+    public string SeatEvaluate { get; set; }
+
+    /// <summary>
+    /// 部门满意度
+    /// </summary>
+    public string OrgProcessingResults { get; set; }
+
+    /// <summary>
+    /// 办事态度
+    /// </summary>
+    public string OrgHandledAttitude { get; set; }
+
+    /// <summary>
+    /// 备注
+    /// </summary>
+    public string Remark { get; set; }
+}

+ 10 - 0
src/Hotline.Share/Dtos/Snapshot/VolunteerReportDto.cs

@@ -145,4 +145,14 @@ public class VolunteerReportItemsOutDto
     /// 作业现场使用的工器具是否进行安全检查
     /// </summary>
     public bool IsToolSafety { get; set; }
+
+    /// <summary>
+    /// 施工地点
+    /// </summary>
+    public string FullAddress { get; set; }
+
+    /// <summary>
+    /// 上报时间
+    /// </summary>
+    public DateTime CreationTime { get; set; }
 }