Prechádzať zdrojové kódy

Merge branch 'test' of http://110.188.24.182:10023/Fengwo/hotline into test

tangjiang 3 mesiacov pred
rodič
commit
7e32ebc9a0
24 zmenil súbory, kde vykonal 608 pridanie a 92 odobranie
  1. 18 5
      src/Hotline.Api/Controllers/OrderController.cs
  2. 48 10
      src/Hotline.Api/Controllers/Snapshot/RedPackController.cs
  3. 22 0
      src/Hotline.Api/Controllers/Snapshot/SnapshotController.cs
  4. 3 3
      src/Hotline.Api/Controllers/Snapshot/SnapshotOrderController.cs
  5. 15 0
      src/Hotline.Application.Tests/Application/RedPackApplicationTest.cs
  6. 13 4
      src/Hotline.Application/Orders/OrderApplication.cs
  7. 11 1
      src/Hotline.Application/Snapshot/IOrderSnapshotApplication.cs
  8. 3 1
      src/Hotline.Application/Snapshot/IRedPackApplication.cs
  9. 17 6
      src/Hotline.Application/Snapshot/OrderSnapshotApplication.cs
  10. 34 7
      src/Hotline.Application/Snapshot/RedPackApplication.cs
  11. 19 14
      src/Hotline.Repository.SqlSugar/Orders/OrderRepository.cs
  12. 9 0
      src/Hotline.Repository.SqlSugar/Snapshot/IndustryRepository.cs
  13. 18 0
      src/Hotline.Repository.SqlSugar/Snapshot/SupplementRecordRepository.cs
  14. 1 1
      src/Hotline.Share/Dtos/Order/OrderStartFlowDto.cs
  15. 86 3
      src/Hotline.Share/Dtos/Snapshot/OrderDeclareDto.cs
  16. 12 2
      src/Hotline.Share/Dtos/Snapshot/OrderDto.cs
  17. 122 1
      src/Hotline.Share/Dtos/Snapshot/RedPackDto.cs
  18. 29 0
      src/Hotline.Share/Enums/Snapshot/EJobType.cs
  19. 1 0
      src/Hotline/Snapshot/Interfaces/IIndustryRepository.cs
  20. 11 0
      src/Hotline/Snapshot/Interfaces/ISupplementRecordRepository.cs
  21. 14 3
      src/Hotline/Snapshot/OrderSnapshot.cs
  22. 0 30
      src/Hotline/Snapshot/RedPackAudit.cs
  23. 101 0
      src/Hotline/Snapshot/SupplementRecord.cs
  24. 1 1
      src/Tr.Sdk/Tr.Sdk.csproj

+ 18 - 5
src/Hotline.Api/Controllers/OrderController.cs

@@ -4197,23 +4197,36 @@ public class OrderController : BaseController
             var order = await _orderRepository.GetAsync(orderId, HttpContext.RequestAborted);
             if (order is null)
             {
-                stringBuilder.Append($"工单:{orderId} 不存在");
                 continue;
             }
-
-            var snapshot = await _orderSnapshotRepository.UpdateSafetyAsync(orderId, dto.IsSafetyDepartment, dto.Remark);
+            var snapshot = await _orderSnapshotApplication.UpdateSafetyAsync(orderId, dto.IsSafetyDepartment, dto.Remark);
             if (snapshot is null)
             {
-                stringBuilder.Append($"随手拍: {orderId} 不存在");
+                stringBuilder.Append($"随手拍: {order.No} 不存在");
+                continue;
             }
             var workflow = await _workflowDomainService.GetWorkflowAsync(order.WorkflowId, withDefine: true, withSteps: true, withTraces: true,
     cancellationToken: HttpContext.RequestAborted);
 
-            var nextSteps = await _workflowApplication.GetNextStepsAsync(order.WorkflowId, HttpContext.RequestAborted);
+            NextStepsWithOpinionDto<NextStepOption> nextSteps;
+            try
+            {
+                nextSteps = await _workflowApplication.GetNextStepsAsync(order.WorkflowId, HttpContext.RequestAborted);
+            }
+            catch (UserFriendlyException e)
+            {
+                if (e.Message.Contains("未找到对应节点"))
+                {
+                    stringBuilder.AppendLine($"{order.No} 修改成功");
+                    continue;
+                }
+                throw;
+            }            
             var stepInfo = nextSteps.Steps.FirstOrDefault(m => m.BusinessType == EBusinessType.Send);
             if (stepInfo == null)
             {
                 stringBuilder.Append($"下一步节点: [派单组] 未找到");
+                continue;
             }
             var data = new OrderHandleFlowDto
             {

+ 48 - 10
src/Hotline.Api/Controllers/Snapshot/RedPackController.cs

@@ -18,13 +18,15 @@ public class RedPackController : BaseController
     private readonly IIndustryRepository _industryRepository;
     private readonly ISystemDicDataCacheManager _sysDic;
     private readonly ISnapshotSMSTemplateRepository _snapshotSMSTemplateRepository;
+    private readonly IOrderSnapshotRepository _orderSnapshotRepository;
 
-    public RedPackController(IRedPackApplication redPackApplication, IIndustryRepository industryRepository, ISystemDicDataCacheManager sysDic, ISnapshotSMSTemplateRepository snapshotSMSTemplateRepository)
+    public RedPackController(IRedPackApplication redPackApplication, IIndustryRepository industryRepository, ISystemDicDataCacheManager sysDic, ISnapshotSMSTemplateRepository snapshotSMSTemplateRepository, IOrderSnapshotRepository orderSnapshotRepository)
     {
         _redPackApplication = redPackApplication;
         _industryRepository = industryRepository;
         _sysDic = sysDic;
         _snapshotSMSTemplateRepository = snapshotSMSTemplateRepository;
+        _orderSnapshotRepository = orderSnapshotRepository;
     }
 
     #region 红包审核
@@ -63,7 +65,7 @@ public class RedPackController : BaseController
         => await _redPackApplication.AuditRedPackGuiderAuditAsync(dto);
 
     /// <summary>
-    /// 获取审核详情
+    /// 获取审核市民详情
     /// </summary>
     /// <param name="id">工单Id</param>
     /// <returns></returns>
@@ -107,13 +109,32 @@ public class RedPackController : BaseController
     /// 添加补充发放信息页面基础信息
     /// </summary>
     /// <returns></returns>
-    [HttpGet("record/basedata")]
-    public async Task<Dictionary<string, object>> UpdateRedPackRecordBaseDataAsync()
-    { 
-        return new Dictionary<string, object>()
+    [HttpGet("record/basedata/{id}")]
+    public async Task<Dictionary<string, object>> UpdateRedPackRecordBaseDataAsync(string id)
+    {
+        var snapshot = await _orderSnapshotRepository.Queryable()
+            .Where(m => m.Id == id)
+            .Select(m => new
+            {
+                m.Id,
+                m.AwardBankCardNo,
+                m.AwardOpenBank,
+                m.AwardName,
+                m.AwardAmount
+            })
+            .FirstAsync();
+        var dic = new Dictionary<string, object>()
         {
             { "replenishType", _sysDic.SnapshotReplenishType }
         };
+        if (snapshot != null)
+        {
+            dic.Add("bankCardNo", snapshot.AwardBankCardNo);
+            dic.Add("openBank", snapshot.AwardOpenBank);
+            dic.Add("name", snapshot.AwardName);
+            dic.Add("amount", snapshot.AwardAmount);
+        }
+        return dic;
     }
 
     /// <summary>
@@ -125,6 +146,25 @@ public class RedPackController : BaseController
     public async Task UpdateRedPackRecordAsync([FromBody] UpdateRedPackRecordInDto dto)
         => await _redPackApplication.UpdateRedPackRecordAsync(dto);
 
+    /// <summary>
+    /// 补充发放集合基础信息
+    /// </summary>
+    [HttpGet("record/supplement/basedata")]
+    public async Task<Dictionary<string, object>> GetRedPackRecordSupplementBaseDataAsync()
+    {
+        return new Dictionary<string, object>()
+        {
+            { "industry", await _industryRepository.GetDataBaseAsync() }
+        };
+    }
+
+    /// <summary>
+    /// 补充发放集合
+    /// </summary>
+    [HttpGet("record/supplement")]
+    public async Task<PagedDto<SnapshotRedPackRecordSupplementItemsOutDto>> GetRedPackRecordSupplementItemsAsync([FromQuery] SnapshotRedPackRecordSupplementItemsInDto dto)
+        => (await _redPackApplication.GetRedPackRecordSupplementItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
+
     /// <summary>
     /// 红包审核通过或拒绝
     /// </summary>
@@ -139,7 +179,7 @@ public class RedPackController : BaseController
     /// </summary>
     /// <returns></returns>
     [HttpGet("audit/sms_template")]
-    public async Task<IList<GetRedPackAuditSMSTemplateOutDto>> GetRedPackAuditSMSTemplateAsync([FromQuery]GetRedPackAuditSMSTemplateInDto dto)
+    public async Task<IList<GetRedPackAuditSMSTemplateOutDto>> GetRedPackAuditSMSTemplateAsync([FromQuery] GetRedPackAuditSMSTemplateInDto dto)
         => await _redPackApplication.GetRedPackAuditSMSTemplateAsync(dto);
 
     /// <summary>
@@ -149,9 +189,7 @@ public class RedPackController : BaseController
     [HttpGet("audit/basedata")]
     public async Task<Dictionary<string, object>> GetAuditBaseDataAsync()
     {
-        var industry = await _industryRepository.Queryable()
-            .Select(m => new { m.Id, m.Name })
-            .ToListAsync();
+        var industry = await _industryRepository.GetDataBaseAsync();
 
         var configAmount = await _industryRepository.Queryable()
             .Select(m => m.CitizenReadPackAmount)

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

@@ -371,6 +371,28 @@ public class SnapshotController : BaseController
     [AllowAnonymous]
     public async Task<OpenResponse> GetOrderDeclareItemsAsync([FromBody] OrderDeclareItemsInDto dto)
     {
+        var disposeDate = dto.JsonData.AcceptContent.DisposeDate.ObjToDate();
+        var industryId = await _industryRepository.Queryable()
+            .Where(m => m.IndustryType == EIndustryType.Declare)
+            .Select(m => m.Id)
+            .ToListAsync();
+        var result = await _orderSnapshotRepository.Queryable()
+            .LeftJoin<Order>((snapshot, order) => order.Id == snapshot.Id)
+            .Where((snapshot, order) => industryId.Contains(snapshot.IndustryId))
+            .WhereIF(dto.JsonData.AcceptContent.Tyep == 2, (snapshot, order) => order.CreationTime.Date == disposeDate.Date)
+            .WhereIF(dto.JsonData.AcceptContent.Tyep == 1, (snapshot, order) => order.FiledTime != null && order.FiledTime.Value.Date == disposeDate.Date)
+            .Select((snapshot, order) => new OrderDeclareItemsOutDto
+            { 
+                AreaCode = order.AreaCode,
+                AreaName = order.County,
+                EventType = 0,
+                WorkAddress = order.Address,
+                CreatedTime = order.CreationTime,
+                WorkType = snapshot.JobType.ObjToInt(),
+            })
+            .ToListAsync();
+
+
         return OpenResponse.Ok(new List<WebPortalDeResponse<List<OrderDeclareItemsOutDto>>>()
         {
             new() { code = "1", msg = "ok", data =

+ 3 - 3
src/Hotline.Api/Controllers/Snapshot/SnapshotOrderController.cs

@@ -112,13 +112,13 @@ public class SnapshotOrderController : BaseController
         => (await _orderSnapshotApplication.GetGuiderReplyItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
 
     /// <summary>
-    /// 获取工单标集合
+    /// 获取工单标集合
     /// </summary>
     /// <param name="dto"></param>
     /// <returns></returns>
     [HttpGet("label")]
-    public async Task<PagedDto<LabelOrderSnapshotItemsOutDto>> GetLabelOrderSnapshotItemsAsync([FromQuery] LabelOrderSnapshotItemsInDto dto)
-        => (await _orderSnapshotApplication.GetLabelOrderSnapshotItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
+    public async Task<PagedDto<SignOrderSnapshotItemsOutDto>> GetSignOrderSnapshotItemsAsync([FromQuery] SignOrderSnapshotItemsInDto dto)
+        => (await _orderSnapshotApplication.GetSignOrderSnapshotItemsAsync(dto).ToPagedListAsync(dto)).ToPaged();
 
     /// <summary>
     /// 获取工单已经标签集合

+ 15 - 0
src/Hotline.Application.Tests/Application/RedPackApplicationTest.cs

@@ -51,6 +51,21 @@ public class RedPackApplicationTest : TestBase
             RedPackAuditId = audit.Id,
         };
         await _redPackApplication.AuditRedPackAuditAsync(inDto);
+        var suInDto = new UpdateRedPackRecordInDto
+        {
+            RedPackAuditId = audit.Id,
+            Name = "单元测试Name",
+            BankCardNo = "单元测试银行号",
+            OpenBank = "单元测试开户行",
+            ReplenishAmount = 100.01,
+            ReplenishTime = DateTime.Now,
+            ReplenishRemark = "单元测试补发备注",
+            IsSendSMS = false,
+            ReplenishType = "%15",
+            ReplenishTypeId = "1",
+        };
+        await _redPackApplication.UpdateRedPackRecordAsync(suInDto);
+
         items = await _redPackApplication.GetRedPackAuditItemsAsync(new SnapshotOrderAuditItemsInDto(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 1)).ToListAsync();
         items.Any(m => m.Id == audit.Id).ShouldBeTrue();
 

+ 13 - 4
src/Hotline.Application/Orders/OrderApplication.cs

@@ -100,8 +100,9 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     private readonly IRepository<StatisticsDepartSatisfied> _statisticsDepartSatisfiedRepository;
     private readonly IRepository<OrderTsDetails> _orderTsDetailsRepository;
     private readonly IRepository<KnowledgeQuote> _knowledgeQuoteRepository;
+	private readonly IRepository<OrderSpecial> _orderSpecialRepository;
 
-    public OrderApplication(
+	public OrderApplication(
         IOrderDomainService orderDomainService,
         IOrderRepository orderRepository,
         IWorkflowDomainService workflowDomainService,
@@ -143,7 +144,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         IRepository<StatisticsDepartSatisfied> statisticsDepartSatisfiedRepository,
         IOrderDelayRepository orderDelayRepository,
         IRepository<OrderTsDetails> orderTsDetailsRepository,
-        IRepository<KnowledgeQuote> knowledgeQuoteRepository)
+        IRepository<KnowledgeQuote> knowledgeQuoteRepository,
+		IRepository<OrderSpecial> orderSpecialRepository)
     {
         _orderDomainService = orderDomainService;
         _workflowDomainService = workflowDomainService;
@@ -187,7 +189,9 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         _statisticsDepartSatisfiedRepository = statisticsDepartSatisfiedRepository;
         _orderTsDetailsRepository = orderTsDetailsRepository;
         _knowledgeQuoteRepository = knowledgeQuoteRepository;
-    }
+        _orderSpecialRepository = orderSpecialRepository;
+
+	}
 
     /// <summary>
     /// 更新工单办理期满时间(延期调用,其他不调用)
@@ -1011,8 +1015,13 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         {
             throw UserFriendlyException.SameMessage("该工单存在正在审核中的退回,不能办理");
         }
+		if (await _orderSpecialRepository.AnyAsync(x => x.OrderId == order.Id && x.State == 0,
+		   cancellationToken))
+		{
+			throw UserFriendlyException.SameMessage("该工单存在正在审核中的特提,不能办理");
+		}
 
-        ExpiredTimeWithConfig? expiredTimeConfig = null;
+		ExpiredTimeWithConfig? expiredTimeConfig = null;
         var settingBase = _systemSettingCacheManager.GetSetting(SettingConstants.CityBaseConfiguration)?.SettingValue[0];
         CityBaseConfiguration cityBase = System.Text.Json.JsonSerializer.Deserialize<CityBaseConfiguration>(settingBase);
         if (dto.Workflow.NextHandlers.Any(d => d.Key == cityBase.CityProvince.OrgId || d.Key == cityBase.CityProvinceAssign.OrgId))

+ 11 - 1
src/Hotline.Application/Snapshot/IOrderSnapshotApplication.cs

@@ -2,6 +2,7 @@
 using Hotline.Share.Dtos.FlowEngine;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Dtos.Snapshot;
+using Hotline.Snapshot;
 using SqlSugar;
 using System;
 using System.Collections.Generic;
@@ -60,7 +61,7 @@ public interface IOrderSnapshotApplication
     /// </summary>
     /// <param name="dto"></param>
     /// <returns></returns>
-    ISugarQueryable<LabelOrderSnapshotItemsOutDto> GetLabelOrderSnapshotItemsAsync(LabelOrderSnapshotItemsInDto dto);
+    ISugarQueryable<SignOrderSnapshotItemsOutDto> GetSignOrderSnapshotItemsAsync(SignOrderSnapshotItemsInDto dto);
 
     /// <summary>
     /// 批量设置随手拍公开申请不通过
@@ -117,4 +118,13 @@ public interface IOrderSnapshotApplication
     /// <param name="dto"></param>
     /// <returns></returns>
     ISugarQueryable<LabeledOrderSnapshotItemsOutDto> GetLabeledOrderSnapshotItemsAsync(LabeledOrderSnapshotItemsInDto dto);
+
+    /// <summary>
+    /// 工单标记
+    /// </summary>
+    /// <param name="orderId"></param>
+    /// <param name="isSafetyDepartment"></param>
+    /// <param name="remark"></param>
+    /// <returns></returns>
+    Task<OrderSnapshot> UpdateSafetyAsync(string orderId, bool isSafetyDepartment, string remark);
 }

+ 3 - 1
src/Hotline.Application/Snapshot/IRedPackApplication.cs

@@ -1,4 +1,5 @@
-using Hotline.Share.Dtos.Snapshot;
+using Hotline.Share.Dtos;
+using Hotline.Share.Dtos.Snapshot;
 using SqlSugar;
 using System;
 using System.Collections.Generic;
@@ -83,6 +84,7 @@ public interface IRedPackApplication
     /// <param name="dto"></param>
     /// <returns></returns>
     ISugarQueryable<SnapshotRedPackRecordItemsOutDto> GetRedPackRecordItemsAsync(SnapshotRedPackRecordItemsInDto dto);
+    ISugarQueryable<SnapshotRedPackRecordSupplementItemsOutDto> GetRedPackRecordSupplementItemsAsync(SnapshotRedPackRecordSupplementItemsInDto dto);
 
     /// <summary>
     /// 审核添加备注

+ 17 - 6
src/Hotline.Application/Snapshot/OrderSnapshotApplication.cs

@@ -42,8 +42,9 @@ public class OrderSnapshotApplication : IOrderSnapshotApplication, IScopeDepende
     private readonly IIndustryRepository _industryRepository;
     private readonly IFileRepository _fileRepository;
     private readonly ISnapshotLabelLogRepository _snapshotLabelLogRepository;
+    private readonly IRedPackAuditRepository _redPackAuditRepository;
 
-    public OrderSnapshotApplication(IOrderSnapshotRepository orderSnapshotRepository, IOrderRepository orderRepository, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, ISessionContext sessionContext, ISystemSettingCacheManager systemSettingCacheManager, IIndustryCaseRepository industryCaseRepository, ISystemDicDataCacheManager systemDicDataCacheManager, IIndustryRepository industryRepository, IFileRepository fileRepository, ISnapshotLabelLogRepository snapshotLabelLogRepository)
+    public OrderSnapshotApplication(IOrderSnapshotRepository orderSnapshotRepository, IOrderRepository orderRepository, ISnapshotOrderPublishRepository snapshotOrderPublishRepository, ISessionContext sessionContext, ISystemSettingCacheManager systemSettingCacheManager, IIndustryCaseRepository industryCaseRepository, ISystemDicDataCacheManager systemDicDataCacheManager, IIndustryRepository industryRepository, IFileRepository fileRepository, ISnapshotLabelLogRepository snapshotLabelLogRepository, IRedPackAuditRepository redPackAuditRepository)
     {
         _orderSnapshotRepository = orderSnapshotRepository;
         _orderRepository = orderRepository;
@@ -55,6 +56,7 @@ public class OrderSnapshotApplication : IOrderSnapshotApplication, IScopeDepende
         _industryRepository = industryRepository;
         _fileRepository = fileRepository;
         _snapshotLabelLogRepository = snapshotLabelLogRepository;
+        _redPackAuditRepository = redPackAuditRepository;
     }
 
     /// <summary>
@@ -198,7 +200,7 @@ public class OrderSnapshotApplication : IOrderSnapshotApplication, IScopeDepende
     /// </summary>
     /// <param name="dto"></param>
     /// <returns></returns>
-    public ISugarQueryable<LabelOrderSnapshotItemsOutDto> GetLabelOrderSnapshotItemsAsync(LabelOrderSnapshotItemsInDto dto)
+    public ISugarQueryable<SignOrderSnapshotItemsOutDto> GetSignOrderSnapshotItemsAsync(SignOrderSnapshotItemsInDto dto)
     {
         var query = _orderSnapshotRepository.Queryable()
             .LeftJoin<Order>((snapshot, order) => snapshot.Id == order.Id)
@@ -209,7 +211,7 @@ public class OrderSnapshotApplication : IOrderSnapshotApplication, IScopeDepende
             .WhereIF(dto.No.NotNullOrEmpty(), (snapshot, order, step) => order.No.Contains(dto.No))
             .WhereIF(dto.Title.NotNullOrEmpty(), (snapshot, order, step) => order.Title.Contains(dto.Title))
             .OrderByDescending((snapshot, order, step) => snapshot.CreationTime)
-            .Select((snapshot, order) => new LabelOrderSnapshotItemsOutDto
+            .Select((snapshot, order) => new SignOrderSnapshotItemsOutDto
             {
                 OrderId = snapshot.Id,
                 No = order.No,
@@ -222,8 +224,8 @@ public class OrderSnapshotApplication : IOrderSnapshotApplication, IScopeDepende
                 NetworkENumber = snapshot.NetworkENumber,
                 NetworkRemark = snapshot.NetworkRemark,
                 ReplyDate = snapshot.ReplyDate,
-                LabelTime = snapshot.LabelTime,
-                LabelUserName = snapshot.LabelUserName
+                LabelTime = snapshot.SignTime,
+                LabelUserName = snapshot.SignUserName
             });
         return query;
     }
@@ -319,7 +321,7 @@ public class OrderSnapshotApplication : IOrderSnapshotApplication, IScopeDepende
             snapshot.IsRectifyDepartment = dto.Data.IsRectifyDepartment.Value;
             snapshot.IndustryCase = dto.Data.IndustryCase;
             snapshot.IsAward = dto.Data.IsAward;
-            snapshot.AwardOpenBack = dto.Data.AwardOpenBack;
+            snapshot.AwardOpenBank = dto.Data.AwardOpenBank;
             snapshot.AwardName = dto.Data.AwardName;
             snapshot.AwardBankCardNo = dto.Data.AwardBankCardNo;
             snapshot.ReplenishTypeId = dto.Data.ReplenishTypeId;
@@ -466,4 +468,13 @@ public class OrderSnapshotApplication : IOrderSnapshotApplication, IScopeDepende
         return query;
     }
 
+    public async Task<OrderSnapshot> UpdateSafetyAsync(string orderId, bool isSafetyDepartment, string remark)
+    {
+        // 红包已经审核通过的工单不允许修改
+        if (await _redPackAuditRepository.Queryable().AnyAsync(m => m.OrderId == orderId && m.Status == ERedPackAuditStatus.Agree))
+        {
+            return await _orderSnapshotRepository.GetAsync(orderId);
+        }
+        return await _orderSnapshotRepository.UpdateSafetyAsync(orderId, isSafetyDepartment, remark);
+    }
 }

+ 34 - 7
src/Hotline.Application/Snapshot/RedPackApplication.cs

@@ -1,4 +1,5 @@
 using Hotline.Orders;
+using Hotline.Share.Dtos;
 using Hotline.Share.Dtos.Snapshot;
 using Hotline.Share.Enums.Order;
 using Hotline.Share.Enums.Snapshot;
@@ -27,8 +28,9 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
     private readonly ISessionContext _sessionContext;
     private readonly IRedPackGuiderAuditRepository _redPackGuiderAuditRepository;
     private readonly IThirdAccountRepository _thirdAccountRepository;
+    private readonly ISupplementRecordRepository _supplementRecordRepository;
 
-    public RedPackApplication(IOrderSnapshotRepository orderSnapshotRepository, ISnapshotSMSTemplateRepository snapshotSMSTemplateRepository, IOrderRepository orderRepository, IIndustryRepository industryRepository, IRedPackAuditRepository redPackAuditRepository, IRedPackRecordRepository redPackRecordRepository, IRepository<OrderSpecial> orderSpecialRepository, ISessionContext sessionContext, IRedPackGuiderAuditRepository redPackGuiderAuditRepository, IThirdAccountRepository thirdAccountRepository)
+    public RedPackApplication(IOrderSnapshotRepository orderSnapshotRepository, ISnapshotSMSTemplateRepository snapshotSMSTemplateRepository, IOrderRepository orderRepository, IIndustryRepository industryRepository, IRedPackAuditRepository redPackAuditRepository, IRedPackRecordRepository redPackRecordRepository, IRepository<OrderSpecial> orderSpecialRepository, ISessionContext sessionContext, IRedPackGuiderAuditRepository redPackGuiderAuditRepository, IThirdAccountRepository thirdAccountRepository, ISupplementRecordRepository supplementRecordRepository)
     {
         _orderSnapshotRepository = orderSnapshotRepository;
         _snapshotSMSTemplateRepository = snapshotSMSTemplateRepository;
@@ -40,6 +42,7 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
         _sessionContext = sessionContext;
         _redPackGuiderAuditRepository = redPackGuiderAuditRepository;
         _thirdAccountRepository = thirdAccountRepository;
+        _supplementRecordRepository = supplementRecordRepository;
     }
 
     /// <summary>
@@ -156,13 +159,14 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
         if (count != 0)
             outDto.RedPackTxt += $"今天审批【{count}】个";
 
-        outDto.AuditComBox = EnumExts.GetDescriptions<ESnapshotSMSStatus>();
+        outDto.AuditComBox = EnumExts.GetDescriptions<ERedPackAuditStatus>()
+            .Where(m => m.Key.ToString() != "0").ToList(); ;
         return outDto;
     }
 
 
     /// <summary>
-    /// 获取审核详情
+    /// 获取市民审核详情
     /// </summary>
     /// <param name="id">工单Id</param>
     /// <returns></returns>
@@ -211,7 +215,7 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
             .LeftJoin<OrderSnapshot>((redPackAudit, order, snapshot) => redPackAudit.OrderId == snapshot.Id)
             .LeftJoin<RedPackRecord>((redPackAudit, order, snapshot, record) => redPackAudit.Id == record.OrderId)
             .LeftJoin<Industry>((redPackAudit, order, snapshot, record, industry) => snapshot.IndustryId == industry.Id)
-            .Where((redPackAudit, order, snapshot, record, industry) => order.Status == EOrderStatus.Filed)
+            .Where((redPackAudit, order, snapshot, record, industry) => order.Status >= EOrderStatus.Filed)
             .WhereIF(dto.No.NotNullOrEmpty(), (redPackAudit, order, snapshot, record, industry) => order.No.Contains(dto.No))
             .WhereIF(dto.Title.NotNullOrEmpty(), (redPackAudit, order, snapshot, record, industry) => order.Title.Contains(dto.Title))
             .WhereIF(dto.FromPhone.NotNullOrEmpty(), (redPackAudit, order, snapshot, record, industry) => order.FromPhone.Contains(dto.FromPhone))
@@ -393,12 +397,22 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
             .FirstAsync() ?? throw UserFriendlyException.SameMessage("审核记录不存在");
         var audit = await _redPackAuditRepository.GetAsync(dto.RedPackAuditId) ?? throw UserFriendlyException.SameMessage("审核记录不存在");
 
-        dto.Adapt(record);
-        await _redPackRecordRepository.UpdateAsync(record);
-
         dto.Adapt(audit);
         await _redPackAuditRepository.UpdateAsync(audit);
 
+        var entity = dto.Adapt<SupplementRecord>();
+        var industryName = await _orderSnapshotRepository.Queryable()
+            .Where(m => m.Id == record.OrderId)
+            .Select(m => new { m.IndustryName, m.IndustryId })
+            .FirstAsync();
+        entity.OrderId = record.OrderId;
+        entity.RedPackRecordId = record.Id;
+        entity.RedPackAuditId = audit.Id;
+        entity.No = record.No;
+        entity.IndustryName = industryName.IndustryName;
+        entity.IndustryId = industryName.IndustryId;
+        await _supplementRecordRepository.AddAsync(entity);
+
         if (dto.IsSendSMS)
         {
             // TODO: 发送短信
@@ -494,6 +508,19 @@ public class RedPackApplication : IRedPackApplication, IScopeDependency
         return query;
     }
 
+    public ISugarQueryable<SnapshotRedPackRecordSupplementItemsOutDto> GetRedPackRecordSupplementItemsAsync(SnapshotRedPackRecordSupplementItemsInDto dto)
+    {
+        var query = _supplementRecordRepository.Queryable()
+            .LeftJoin<Order>((supp, order) => supp.OrderId == order.Id)
+            .WhereIF(dto.No.NotNullOrEmpty(), (supp, order) => order.No.Contains(dto.No))
+            .WhereIF(dto.FromPhone.NotNullOrEmpty(), (supp, order) => order.FromPhone.Contains(dto.FromPhone))
+            .WhereIF(dto.Title.NotNullOrEmpty(), (supp, order) => order.Title.Contains(dto.Title))
+            .WhereIF(dto.IndustryId.NotNullOrEmpty(), (supp, order) => supp.IndustryId == dto.IndustryId)
+            .WhereIF(dto.BeginCreationTime.HasValue && dto.EndCreationTime.HasValue, (supp, order) => supp.CreationTime >= dto.BeginCreationTime && supp.CreationTime <= dto.EndCreationTime)
+            .Select<SnapshotRedPackRecordSupplementItemsOutDto>();
+        return query;
+    }
+
 
     #endregion
 }

+ 19 - 14
src/Hotline.Repository.SqlSugar/Orders/OrderRepository.cs

@@ -830,11 +830,11 @@ namespace Hotline.Repository.SqlSugar.Orders
                 {
                     AllCount = x.AllCount,
                     // 回访情况
-                    SatisfactionRate = SqlFunc.Round((decimal)(x.AllCount - x.SatisfactionCount) * 100 / (decimal)x.AllCount, 2),                     //总体满意率
-                    DepartSatisfactionRate = SqlFunc.Round((decimal)(x.DepartCount - x.DepartSatisfactionCount) * 100 / (decimal)x.DepartCount, 2),   //部门满意率
-                    CenterSatisfactionRate = SqlFunc.Round((decimal)(x.CenterCount - x.CenterSatisfactionCount) * 100 / (decimal)x.CenterCount, 2),   //12345中心满意率
-                    CitySatisfactionRate = SqlFunc.Round((decimal)(x.CityCount - x.CitySatisfactionCount) * 100 / (decimal)x.CityCount, 2),           //市级部门满意率
-                    CountySatisfactionRate = SqlFunc.Round((decimal)(x.CountyCount - x.CountySatisfactionCount) * 100 / (decimal)x.CountyCount, 2),   //县(区)满意率
+                    SatisfactionRate = x.AllCount > 0 ? SqlFunc.Round((decimal)(x.AllCount - x.SatisfactionCount) * 100 / (decimal)x.AllCount, 2):0,                     //总体满意率
+                    DepartSatisfactionRate = x.DepartCount > 0 ? SqlFunc.Round((decimal)(x.DepartCount - x.DepartSatisfactionCount) * 100 / (decimal)x.DepartCount, 2) : 0,   //部门满意率
+                    CenterSatisfactionRate = x.CenterCount > 0 ? SqlFunc.Round((decimal)(x.CenterCount - x.CenterSatisfactionCount) * 100 / (decimal)x.CenterCount, 2) : 0,   //12345中心满意率
+                    CitySatisfactionRate = x.CityCount > 0 ? SqlFunc.Round((decimal)(x.CityCount - x.CitySatisfactionCount) * 100 / (decimal)x.CityCount, 2) : 0,           //市级部门满意率
+                    CountySatisfactionRate = x.CountyCount > 0 ? SqlFunc.Round((decimal)(x.CountyCount - x.CountySatisfactionCount) * 100 / (decimal)x.CountyCount, 2) : 0,   //县(区)满意率
                     SatisfactionCount = x.SatisfactionCount,                                                                                          //不满意件
                     CenterSatisfactionCount = x.CenterSatisfactionCount,                                                                              //市级部门不满意件
                     CountySatisfactionCount = x.CountySatisfactionCount,
@@ -846,7 +846,7 @@ namespace Hotline.Repository.SqlSugar.Orders
                     OrderAllCount = x.OrderAllCount,                                                                    // 来件总数
                     OrderAlready = x.OrderAlready,                                                                      // 已办件数
                     OrderWait = x.OrderWait,                                                                            // 在办件数
-                    OrderAlreadyRate = SqlFunc.Round((decimal)(x.OrderAlready) * 100 / (decimal)x.OrderAllCount, 2),    //总体办结率
+                    OrderAlreadyRate = x.OrderAllCount > 0 ? SqlFunc.Round((decimal)(x.OrderAlready) * 100 / (decimal)x.OrderAllCount, 2):0,    //总体办结率
                     OrderCityCount = x.OrderCityCount,                                                                  //市级部门受理
                     OrderCountyCount = x.OrderCountyCount,                                                              //县(区)受理
                     OrderCenterCount = x.OrderCenterCount,                                                              //12345中心受理
@@ -874,25 +874,25 @@ namespace Hotline.Repository.SqlSugar.Orders
                     CityWorkTime = x.CityWorkTime,
                     CountyWorkTime = x.CountyWorkTime,
                     CenterWorkTime = x.CenterWorkTime,
-                    OrderWorkTimeRate = SqlFunc.Round((decimal)(x.OrderWorkTime) / (decimal)x.OrderAlready / 60 / 8, 2),          //信件办理平均时长(工作日)
-                    CityWorkTimeRate = SqlFunc.Round((decimal)(x.CityWorkTime) / (decimal)x.CityAlready / 60 / 8, 2),             //市级部门平均时长(工作日)
-                    CountyWorkTimeRate = SqlFunc.Round((decimal)(x.CountyWorkTime) / (decimal)x.CountyAlready / 60 / 8, 2),       //县(区)平均时长(工作日)
-                    CenterWorkTimeRate = SqlFunc.Round((decimal)(x.CenterWorkTime) / (decimal)x.CenterAlready / 60 / 8, 2),        //12345中心平均时长(工作日)
+                    OrderWorkTimeRate = x.OrderAlready > 0 ? SqlFunc.Round((decimal)(x.OrderWorkTime) / (decimal)x.OrderAlready / 60 / 8, 2) : 0,          //信件办理平均时长(工作日)
+                    CityWorkTimeRate = x.CityAlready > 0 ? SqlFunc.Round((decimal)(x.CityWorkTime) / (decimal)x.CityAlready / 60 / 8, 2) : 0,             //市级部门平均时长(工作日)
+                    CountyWorkTimeRate = x.CountyAlready > 0 ? SqlFunc.Round((decimal)(x.CountyWorkTime) / (decimal)x.CountyAlready / 60 / 8, 2) : 0,       //县(区)平均时长(工作日)
+                    CenterWorkTimeRate = x.CenterAlready > 0 ? SqlFunc.Round((decimal)(x.CenterWorkTime) / (decimal)x.CenterAlready / 60 / 8, 2) : 0,        //12345中心平均时长(工作日)
 
                     // 企业服务办件情况
                     EnterpriseAllCount = x.EnterpriseAllCount,
                     EnterpriseAlready = x.EnterpriseAlready,                                                                                            //已办信件
                     EnterpriseWait = x.EnterpriseWait,                                                                                                  //在办信件
                     EnterpriseVisit = x.EnterpriseVisit,                                                                                                //回访总量
-                    EnterpriseSatisfactionRate = SqlFunc.Round((decimal)(x.EnterpriseSatisfaction) * 100 / (decimal)x.EnterpriseVisit, 2),              //总满意率
+                    EnterpriseSatisfactionRate = x.EnterpriseVisit > 0 ? SqlFunc.Round((decimal)(x.EnterpriseSatisfaction) * 100 / (decimal)x.EnterpriseVisit, 2) : 0,              //总满意率
                     EnterpriseCenter = x.EnterpriseCenter,                                                                                              //12345直办件
                     EnterpriseCity = x.EnterpriseCity,                                                                                                  //市级部门办件
                     EnterpriseCounty = x.EnterpriseCounty,                                                                                              //县(区)办件
                     EnterpriseDisSatisfaction = x.EnterpriseVisit - x.EnterpriseSatisfaction,                                                           //不满意信件总量
                     EnterpriseCitySatisfaction = x.EnterpriseCitySatisfaction,
-                    EnterpriseCitySatisfactionRate = SqlFunc.Round((decimal)(x.EnterpriseCitySatisfaction) * 100 / (decimal)x.EnterpriseCity, 2),       //市级部门满意率
+                    EnterpriseCitySatisfactionRate = x.EnterpriseCity > 0 ? SqlFunc.Round((decimal)(x.EnterpriseCitySatisfaction) * 100 / (decimal)x.EnterpriseCity, 2) : 0,       //市级部门满意率
                     EnterpriseCountySatisfaction = x.EnterpriseCountySatisfaction,
-                    EnterpriseCountySatisfactionRate = SqlFunc.Round((decimal)(x.EnterpriseCountySatisfaction) * 100 / (decimal)x.EnterpriseCounty, 2), //县(区)满意率
+                    EnterpriseCountySatisfactionRate = x.EnterpriseCounty > 0 ? SqlFunc.Round((decimal)(x.EnterpriseCountySatisfaction) * 100 / (decimal)x.EnterpriseCounty, 2) : 0, //县(区)满意率
                     EnterpriseWorkTime = x.EnterpriseWorkTime,
                     EnterpriseCityWorkTime = x.EnterpriseCityWorkTime,
                     EnterpriseCountyWorkTime = x.EnterpriseCountyWorkTime,
@@ -980,7 +980,12 @@ namespace Hotline.Repository.SqlSugar.Orders
                   p.count
               })
                .ToPivotTableAsync(p => p.DicDataName, p => p.Hour, p => p.Sum(x => x.count));
-            var dtList = list.Clone();
+			var col1 = list.Columns.Contains("Column1");
+			if (col1)
+			{
+				list.Columns.Remove("Column1");
+			}
+			var dtList = list.Clone();
 
             if (await Db.Queryable<StatisticsPurTypeSatisfied>().Where(x => x.Time >= dto.StartTime && x.Time <= dto.EndTime).AnyAsync())
             {

+ 9 - 0
src/Hotline.Repository.SqlSugar/Snapshot/IndustryRepository.cs

@@ -17,6 +17,15 @@ public class IndustryRepository : BaseRepository<Industry>, IIndustryRepository,
     {
     }
 
+    public async Task<IList<dynamic>> GetDataBaseAsync()
+    {
+        var result = await Queryable()
+            .Select(m => new { m.Id, m.Name })
+            .ToListAsync();
+
+        return result.Cast<dynamic>().ToList();
+    }
+
     public async Task<double> GetIntervalTimeAsync(string industryId, double defaultValue,  CancellationToken cancellationToken)
     {
         var time = await Queryable().Where(m => m.Id == industryId).Select(m => m.IntervalTime).FirstAsync(cancellationToken);

+ 18 - 0
src/Hotline.Repository.SqlSugar/Snapshot/SupplementRecordRepository.cs

@@ -0,0 +1,18 @@
+using Hotline.Repository.SqlSugar.DataPermissions;
+using Hotline.Snapshot;
+using Hotline.Snapshot.Interfaces;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Dependency;
+
+namespace Hotline.Repository.SqlSugar.Snapshot;
+public class SupplementRecordRepository : BaseRepository<SupplementRecord>, ISupplementRecordRepository, IScopeDependency
+{
+    public SupplementRecordRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
+    {
+    }
+}

+ 1 - 1
src/Hotline.Share/Dtos/Order/OrderStartFlowDto.cs

@@ -207,7 +207,7 @@ namespace Hotline.Share.Dtos.Order
         /// <summary>
         /// 追加奖励人开户行
         /// </summary>
-        public string? AwardOpenBack { get; set; }
+        public string? AwardOpenBank { get; set; }
 
         /// <summary>
         /// 核实方式

+ 86 - 3
src/Hotline.Share/Dtos/Snapshot/OrderDeclareDto.cs

@@ -9,21 +9,104 @@ using System.Xml.Linq;
 namespace Hotline.Share.Dtos.Snapshot;
 public class OrderDeclareItemsOutDto
 {
+    /// <summary>
+    /// 上报区域
+    /// </summary>
     public string AreaCode { get; set; }
+
+    /// <summary>
+    /// 区域名称
+    /// </summary>
     public string AreaName { get; set; }
-    public string EventType { get; set; }
+
+    /// <summary>
+    /// 申报类型
+    /// 0 主动申报;1 举报上报 ;2 社会排查
+    /// </summary>
+    public int EventType { get; set; }
+
+    /// <summary>
+    /// 作业地点
+    /// </summary>
     public string WorkAddress { get; set; }
+
+    /// <summary>
+    /// 上报时间
+    /// </summary>
     public DateTime CreatedTime { get; set; }
-    public string WorkType { get; set; }
+
+    /// <summary>
+    /// 作业类别
+    /// 0 电焊 1 气割 2 其它
+    /// </summary>
+    public int WorkType { get; set; }
+
+    /// <summary>
+    /// 来源
+    /// 1(小程序) 2(12345) 3(其它)
+    /// </summary>
     public int Source { get; set; }
+
+    /// <summary>
+    /// 作业开始时间
+    /// </summary>
     public DateTime WorkTimeStart { get; set; }
+
+    /// <summary>
+    /// 作业结束时间
+    /// </summary>
     public DateTime WorkTimeStop { get; set; }
+
+    /// <summary>
+    /// 现场描述情况内容
+    /// </summary>
     public string OnsiteSituateDescription { get; set; }
+
+    /// <summary>
+    /// 上报人员姓名
+    /// </summary>
     public string Name { get; set; }
+
+    /// <summary>
+    /// 上报人员联系方式
+    /// </summary>
     public string Phone { get; set; }
+
+    /// <summary>
+    /// 工单编号
+    /// </summary>
     public string EventId { get; set; }
+
+    /// <summary>
+    /// 场所类别编码
+    /// </summary>
     public string PlaceType { get; set; }
 }
 
 public class OrderDeclareItemsInDto
-{ }
+{
+    /// <summary>
+    /// JsonData
+    /// </summary>
+    public JsonData JsonData { get; set; }
+}
+
+public class JsonData
+{
+    /// <summary>
+    /// Code
+    /// </summary>
+    public string Code { get; set; }
+
+    public AcceptContent AcceptContent { get; set; }
+}
+
+public class AcceptContent
+{
+    public string DisposeDate { get; set; }
+
+    /// <summary>
+    /// 1:办结时间  2:受理时间
+    /// </summary>
+    public int Tyep { get; set; }
+}

+ 12 - 2
src/Hotline.Share/Dtos/Snapshot/OrderDto.cs

@@ -122,6 +122,16 @@ public class AddSnapshotOrderInDto : Position
     /// </summary>
     public string? WorkplaceName { get; set; }
 
+    /// <summary>
+    /// 作业区域
+    /// </summary>
+    public string WorkArea { get; set; }
+
+    /// <summary>
+    /// 作业区域Id
+    /// </summary>
+    public string WorkAreaId { get; set; }
+
     /// <summary>
     /// 作业时间
     /// </summary>
@@ -1093,7 +1103,7 @@ public class LabeledOrderSnapshotItemsOutDto
     public DateTime? LabelTime { get; set; }
 }
 
-public record LabelOrderSnapshotItemsInDto : PagedRequest
+public record SignOrderSnapshotItemsInDto : PagedRequest
 {
     /// <summary>
     /// No
@@ -1114,7 +1124,7 @@ public record LabelOrderSnapshotItemsInDto : PagedRequest
     public int Status { get; set; }
 }
 
-public class LabelOrderSnapshotItemsOutDto
+public class SignOrderSnapshotItemsOutDto
 {
     /// <summary>
     /// Id

+ 122 - 1
src/Hotline.Share/Dtos/Snapshot/RedPackDto.cs

@@ -1,7 +1,9 @@
-using Hotline.Share.Enums.Snapshot;
+using Hotline.Share.Enums.Order;
+using Hotline.Share.Enums.Snapshot;
 using Hotline.Share.Requests;
 using Hotline.Share.Tools;
 using System.ComponentModel.DataAnnotations;
+using XF.Utility.EnumExtensions;
 
 namespace Hotline.Share.Dtos.Snapshot;
 public class RedPackOutDto 
@@ -151,3 +153,122 @@ public class UpdateRedPackRecordInDto
     public string ReplenishTypeId { get; set; }
 }
 
+
+/// <summary>
+/// 补充发放OutDto
+/// </summary>
+public class SnapshotRedPackRecordSupplementItemsOutDto
+{
+    /// <summary>
+    /// OrderId
+    /// </summary>
+    public string OrderId { get; set; }
+
+    /// <summary>
+    /// 信件状态
+    /// </summary>
+    public EOrderStatus Status { get; set; }
+
+    /// <summary>
+    /// 信件状态
+    /// </summary>
+    public string StatusTxt => Status.GetDescription();
+
+    /// <summary>
+    /// 来源
+    /// </summary>
+    public string SourceChannel { get; set; }
+
+    /// <summary>
+    /// 受理编号
+    /// </summary>
+    public string No { get; set; }
+
+    /// <summary>
+    /// 标题
+    /// </summary>
+    public string Title { get; set; }
+
+    /// <summary>
+    /// 行业
+    /// </summary>
+    public string IndustryName { get; set; }
+
+    /// <summary>
+    /// 来电人电话
+    /// </summary>
+    public string FromPhone { get; set; }
+
+    /// <summary>
+    /// 区域
+    /// </summary>
+    public string County { get; set; }
+
+    /// <summary>
+    /// 补发金额
+    /// </summary>
+    public double ReplenishAmount { get; set; }
+
+    /// <summary>
+    /// 姓名
+    /// </summary>
+    public string Name { get; set; }
+
+    /// <summary>
+    /// 卡号
+    /// </summary>
+    public string BankCardNo { get; set; }
+
+    /// <summary>
+    /// 开户行
+    /// </summary>
+    public string OpenBank { get; set; }
+
+    /// <summary>
+    /// 补发放时间
+    /// </summary>
+    public DateTime CreationTime { get; set; }
+
+    /// <summary>
+    /// 补充发放人员
+    /// </summary>
+    public string CreatorName { get; set; }
+
+    /// <summary>
+    /// 备注
+    /// </summary>
+    public string Remark { get; set; }
+}
+
+public record SnapshotRedPackRecordSupplementItemsInDto : PagedRequest
+{
+    /// <summary>
+    /// 受理编号
+    /// </summary>
+    public string? No { get; set; }
+
+    /// <summary>
+    /// 标题
+    /// </summary>
+    public string? Title { get; set; }
+
+    /// <summary>
+    /// 来电人电话
+    /// </summary>
+    public string? FromPhone { get; set; }
+
+    /// <summary>
+    /// 发送时间
+    /// </summary>
+    public DateTime? BeginCreationTime { get; set; }
+
+    /// <summary>
+    /// 发送时间
+    /// </summary>
+    public DateTime? EndCreationTime { get; set; }
+
+    /// <summary>
+    /// 行业类型
+    /// </summary>
+    public string? IndustryId { get; set; }
+}

+ 29 - 0
src/Hotline.Share/Enums/Snapshot/EJobType.cs

@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Share.Enums.Snapshot;
+public enum EJobType
+{
+
+    /// <summary>
+    /// 电焊
+    /// </summary>
+    [Description("电焊")]
+    Electric,
+
+    /// <summary>
+    /// 气割
+    /// </summary>
+    [Description("气割")]
+    Gas,
+
+    /// <summary>
+    /// 其他
+    /// </summary>
+    [Description("其他")]
+    Othoer
+}

+ 1 - 0
src/Hotline/Snapshot/Interfaces/IIndustryRepository.cs

@@ -9,5 +9,6 @@ using XF.Domain.Repository;
 namespace Hotline.Snapshot.Interfaces;
 public interface IIndustryRepository : IRepository<Industry>
 {
+    Task<IList<dynamic>> GetDataBaseAsync();
     Task<double> GetIntervalTimeAsync(string industryId, double defaultValue, CancellationToken cancellationToken);
 }

+ 11 - 0
src/Hotline/Snapshot/Interfaces/ISupplementRecordRepository.cs

@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Repository;
+
+namespace Hotline.Snapshot.Interfaces;
+public interface ISupplementRecordRepository : IRepository<SupplementRecord>
+{
+}

+ 14 - 3
src/Hotline/Snapshot/OrderSnapshot.cs

@@ -45,7 +45,7 @@ public class OrderSnapshot : CreationSoftDeleteEntity
     /// 作业类型
     /// </summary>
     [SugarColumn(ColumnDescription = "作业类型")]
-    public string? JobType { get; set; }
+    public EJobType? JobType { get; set; }
 
     /// <summary>
     /// 经营单位类别
@@ -65,6 +65,18 @@ public class OrderSnapshot : CreationSoftDeleteEntity
     [SugarColumn(ColumnDescription = "场所名称")]
     public string? WorkplaceName { get; set; }
 
+    /// <summary>
+    /// 作业区域
+    /// </summary>
+    [SugarColumn(ColumnDescription = "作业区域")]
+    public string? WorkArea { get; set; }
+
+    /// <summary>
+    /// 作业区域Id
+    /// </summary>
+    [SugarColumn(ColumnDescription = "作业区域Id")]
+    public string? WorkAreaId { get; set; }
+
     /// <summary>
     /// 作业时间
     /// </summary>
@@ -187,7 +199,7 @@ public class OrderSnapshot : CreationSoftDeleteEntity
     /// 追加奖励人开户银行
     /// </summary>
     [SugarColumn(ColumnDescription = "追加奖励人开户银行")]
-    public string? AwardOpenBack { get; set; }
+    public string? AwardOpenBank { get; set; }
 
     /// <summary>
     /// 追加奖励人姓名
@@ -324,5 +336,4 @@ public class OrderSnapshot : CreationSoftDeleteEntity
     /// </summary>
     [SugarColumn(ColumnDescription = "购气单位/个人名称")]
     public string? CompanyName { get; set; }
-
 }

+ 0 - 30
src/Hotline/Snapshot/RedPackAudit.cs

@@ -61,36 +61,6 @@ public class RedPackAudit : CreationSoftDeleteEntity
     [SugarColumn(ColumnDescription = "实发金额")]
     public double? AcutalAmount { get; set; }
 
-    /// <summary>
-    /// 补充发放金额
-    /// </summary>
-    [SugarColumn(ColumnDescription = "补充发放金额")]
-    public double? ReplenishAmount { get; set; }
-
-    /// <summary>
-    /// 补充发放时间
-    /// </summary>
-    [SugarColumn(ColumnDescription = "补充发放时间")]
-    public DateTime? ReplenishTime { get; set; }
-
-    /// <summary>
-    /// 补充发放备注
-    /// </summary>
-    [SugarColumn(ColumnDescription = "补充发放备注")]
-    public string? ReplenishRemark { get; set; }
-
-    /// <summary>
-    /// 补充发放类型
-    /// </summary>
-    [SugarColumn(ColumnDescription = "补充发放类型")]
-    public string? ReplenishType { get; set; }
-
-    /// <summary>
-    /// 补充发放类型Id
-    /// </summary>
-    [SugarColumn(ColumnDescription = "补充发放类型Id")]
-    public string? ReplenishTypeId { get; set; }
-
     /// <summary>
     /// 市民奖励发放结果
     /// </summary>

+ 101 - 0
src/Hotline/Snapshot/SupplementRecord.cs

@@ -0,0 +1,101 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XF.Domain.Repository;
+
+namespace Hotline.Snapshot;
+
+/// <summary>
+/// 补充发放记录
+/// </summary>
+[Description("补充发放记录")]
+public class SupplementRecord : FullStateEntity
+{
+    /// <summary>
+    /// OrderId
+    /// </summary>
+    [SugarColumn(ColumnDescription = "OrderId")]
+    public string OrderId { get; set; }
+
+    /// <summary>
+    /// No
+    /// </summary>
+    [SugarColumn(ColumnDescription ="No")]
+    public string No { get; set; }
+
+    /// <summary>
+    /// RedPackAuditId
+    /// </summary>
+    [SugarColumn(ColumnDescription = "RedPackAuditId")]
+    public string RedPackAuditId { get; set; }
+
+    /// <summary>
+    /// RedPackRecordId
+    /// </summary>
+    [SugarColumn(ColumnDescription = "RedPackRecordId")]
+    public string RedPackRecordId { get; set; }
+
+    /// <summary>
+    /// 行业
+    /// </summary>
+    [SugarColumn(ColumnDescription = "行业名称")]
+    public string IndustryName { get; set; }
+
+    /// <summary>
+    /// 行业Id
+    /// </summary>
+    [SugarColumn(ColumnDescription = "行业Id")]
+    public string? IndustryId { get; set; }
+
+    /// <summary>
+    /// 补充发放金额
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放金额")]
+    public double? ReplenishAmount { get; set; }
+
+    /// <summary>
+    /// 补充发放时间
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放时间")]
+    public DateTime? ReplenishTime { get; set; }
+
+    /// <summary>
+    /// 补充发放备注
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放备注")]
+    public string? ReplenishRemark { get; set; }
+
+    /// <summary>
+    /// 补充发放类型
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放类型")]
+    public string? ReplenishType { get; set; }
+
+    /// <summary>
+    /// 补充发放类型Id
+    /// </summary>
+    [SugarColumn(ColumnDescription = "补充发放类型Id")]
+    public string? ReplenishTypeId { get; set; }
+
+    /// <summary>
+    /// 银行卡号
+    /// </summary>
+    [SugarColumn(ColumnDescription = "银行卡号")]
+    public string? BankCardNo { get; set; }
+
+    /// <summary>
+    /// 开户行
+    /// </summary>
+    [SugarColumn(ColumnDescription = "开户行")]
+    public string? OpenBank { get; set; }
+
+    /// <summary>
+    /// 是否发送短信
+    /// </summary>
+    [SugarColumn(ColumnDescription = "是否发送短信")]
+    public bool IsSendSMS { get; set; }
+}

+ 1 - 1
src/Tr.Sdk/Tr.Sdk.csproj

@@ -9,7 +9,7 @@
   <ItemGroup>
     <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
     <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.2" />
-    <PackageReference Include="RestSharp" Version="110.2.0" />
+    <PackageReference Include="RestSharp" Version="112.1.0" />
   </ItemGroup>
 
   <ItemGroup>