xf 1 gadu atpakaļ
vecāks
revīzija
9ddb1a555d

+ 1 - 1
src/Hotline.Api/Controllers/DataSharing/ProvinceController.cs

@@ -697,7 +697,7 @@ namespace Hotline.Api.Controllers.DataSharing
                     CliengGuid = tmpCaseMaterialInfo.CliengGuid,
                     AreaCode = tmpCaseMaterialInfo.AreaCode,
                     FileName = file.FileName,
-                    FileSize = file.Length,
+                    //FileSize = file.Length,
                     Type = strSuffix.Trim('.'),
                     Additions = businessFileDto.id,
                     Path = businessFileDto.path,

+ 19 - 6
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -1,5 +1,6 @@
 using Hotline.Application.FlowEngine;
 using Hotline.Application.Knowledge;
+using Hotline.File;
 using Hotline.FlowEngine.WorkflowModules;
 using Hotline.KnowledgeBase;
 using Hotline.KnowledgeBase.Notifies;
@@ -9,6 +10,7 @@ using Hotline.Repository.SqlSugar.Ts;
 using Hotline.Settings;
 using Hotline.Settings.Hotspots;
 using Hotline.Share.Dtos;
+using Hotline.Share.Dtos.File;
 using Hotline.Share.Dtos.FlowEngine;
 using Hotline.Share.Dtos.Knowledge;
 using Hotline.Share.Enums.KnowledgeBase;
@@ -47,6 +49,7 @@ namespace Hotline.Api.Controllers
 		private readonly ISystemDomainService _systemDomainService;
 		private readonly IRepository<KnowledgeComment> _knowledgeCommentRepository;
 		private readonly ISystemOrganizeRepository _systemOrganizeRepository;
+		private readonly IFileRepository _fileRepository;
 
 
 		public KnowledgeController(
@@ -68,7 +71,8 @@ namespace Hotline.Api.Controllers
 		   IRepository<KnowledgeCollect> knowledgeCollectRepository,
 		   ISystemDomainService systemDomainService,
 		   IRepository<KnowledgeComment> knowledgeCommentRepository,
-		   ISystemOrganizeRepository systemOrganizeRepository
+		   ISystemOrganizeRepository systemOrganizeRepository,
+		   IFileRepository fileRepository
 		   )
 		{
 			_knowledgeRepository = knowledgeRepository;
@@ -90,6 +94,7 @@ namespace Hotline.Api.Controllers
 			_systemDomainService = systemDomainService;
 			_knowledgeCommentRepository = knowledgeCommentRepository;
 			_systemOrganizeRepository = systemOrganizeRepository;
+			_fileRepository = fileRepository;
 		}
 
 		#endregion
@@ -115,18 +120,20 @@ namespace Hotline.Api.Controllers
 				kn.Code = Convert.ToInt64((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds).ToString();
 
 			kn.Status = EKnowledgeStatus.Drafts;
-			var id = await _knowledgeRepository.AddAsync(kn, HttpContext.RequestAborted);
-			if (dto.Workflow != null && !string.IsNullOrEmpty(id))
+			kn.InitId();
+			if (dto.Data.Files.Any()) kn.FileJson = await _fileRepository.AddFileAsync(dto.Data.Files, kn.Id, "", HttpContext.RequestAborted);
+			await _knowledgeRepository.AddAsync(kn, HttpContext.RequestAborted);
+			if (dto.Workflow != null && !string.IsNullOrEmpty(kn.Id))
 			{
 				var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
 				startDto.DefinitionModuleCode = WorkflowModuleConsts.KnowledgeAdd;
 				startDto.Title = "知识库新增";
-				await StartFlow(id, WorkflowModuleConsts.KnowledgeAdd, EKnowledgeApplyType.Add, startDto);
-				var knowledge = await _knowledgeRepository.GetAsync(id);
+				await StartFlow(kn.Id, WorkflowModuleConsts.KnowledgeAdd, EKnowledgeApplyType.Add, startDto);
+				var knowledge = await _knowledgeRepository.GetAsync(kn.Id);
 				knowledge.Status = EKnowledgeStatus.Auditing;
 				await _knowledgeRepository.UpdateAsync(knowledge, HttpContext.RequestAborted);
 			}
-			return id;
+			return kn.Id;
 		}
 
 
@@ -210,6 +217,8 @@ namespace Hotline.Api.Controllers
 			if (any) throw UserFriendlyException.SameMessage("当前知识标题存在重复标题!");
 			_mapper.Map(dto.Data, knowledge);
 			//if (update.Tags.Any()) await _repositoryts.UpdateVectorAsync(update.Id, update.Tags, HttpContext.RequestAborted);
+
+			if (dto.Data.Files.Any()) knowledge.FileJson = await _fileRepository.AddFileAsync(dto.Data.Files, knowledge.Id, "", HttpContext.RequestAborted);
 			await _knowledgeRepository.UpdateAsync(knowledge, HttpContext.RequestAborted);
 			if (dto.Workflow != null)
 			{
@@ -357,6 +366,10 @@ namespace Hotline.Api.Controllers
 			var knowledgeWords = await _knowledgeWrodRepository.Queryable().In(x => x.Id, knowledge.Keywords).ToListAsync();
 			if (knowledgeWords.Any())
 				knowledgeShowInfoDto.KeywordsDto = _mapper.Map<List<KnowledgeWordDto>>(knowledgeWords);
+
+			var files = await _fileRepository.Queryable().Where(x => x.Key == knowledge.Id).ToListAsync();
+			if (files.Any()) knowledgeShowInfoDto.Files = _mapper.Map<List<FileDto>>(files);
+
 			if (IsAddPv == true)
 				_mediator.Publish(new GetKnowledgeInfoNotify(knowledge));
 			return knowledgeShowInfoDto;

+ 10 - 1
src/Hotline.Application/Handlers/FlowEngine/WorkflowNextHandler.cs

@@ -44,6 +44,7 @@ public class WorkflowNextHandler : INotificationHandler<NextStepNotify>
     private readonly ILogger<WorkflowNextHandler> _logger;
     private readonly IRepository<OrderScreen> _orderScreenRepository;
     private readonly IQualityRepository _qualityRepository;
+    private readonly IRepository<OrderDelay> _orderDelayRepository;
 
     public WorkflowNextHandler(
         IOrderDomainService orderDomainService,
@@ -56,7 +57,8 @@ public class WorkflowNextHandler : INotificationHandler<NextStepNotify>
         IMapper mapper,
         ILogger<WorkflowNextHandler> logger,
         IRepository<OrderScreen> orderScreenRepository,
-        IQualityRepository qualityRepository)
+        IQualityRepository qualityRepository,
+        IRepository<OrderDelay> orderDelayRepository)
     {
         _orderDomainService = orderDomainService;
         _knowledgeDomainService = knowledgeDomainService;
@@ -69,6 +71,7 @@ public class WorkflowNextHandler : INotificationHandler<NextStepNotify>
         _logger = logger;
         _orderScreenRepository = orderScreenRepository;
         _qualityRepository = qualityRepository;
+        _orderDelayRepository = orderDelayRepository;
     }
 
     /// <summary>Handles a notification</summary>
@@ -198,7 +201,13 @@ public class WorkflowNextHandler : INotificationHandler<NextStepNotify>
                         {
                             case TagDefaults.TagValue.Province:
                                 //TODO 发起省延期审批
+                                var orderDelay = await _orderDelayRepository.Queryable().Includes(x => x.Order)
+                                    .Where(x => x.Id == workflow.ExternalId).FirstAsync(cancellationToken);
+                                if (orderDelay != null)
+                                {
+                                    //推送
 
+                                }
                                 break;
                         }
                     }

+ 12 - 0
src/Hotline.Application/Mappers/DataSharing/DsMapperConfigs.cs

@@ -110,6 +110,18 @@ namespace Hotline.Application.Mappers.DataSharing
             .Map(d => d.SubjectResultSatify, x => x.SubjectResultSatifyCode)
             ;
 
+            //延期申请
+            config.ForType<PublishOrderDelayDto, DsDelayCaseInfoSend>()
+            .Map(d => d.ApplyDelaynum, x => x.DelayNum)
+            .Map(d => d.ApplyDelayunit, x =>(int) x.DelayUnit)
+            .Map(d => d.ApplyName, x => x.EmployeeName)
+            .Map(d => d.ApplyTime, x => x.ApplyDelayTime)
+            .Map(d => d.ApplyOuname, x => x.ApplyOrgName)
+            .Map(d => d.ApplyReason, x => x.DelayReason)
+            .Map(d => d.CaseSerial, x => x.Order.ProvinceNo)
+            .Map(d => d.AreaCode, x => x.Order.AreaCode)
+            ;
+
             //接收
             //工单交办
             config.ForType<ReceiveCaseInfoModel, AddOrderDto>()

+ 1 - 1
src/Hotline.Repository.SqlSugar/File/FileRepository.cs

@@ -43,7 +43,7 @@ namespace Hotline.Repository.SqlSugar.File
 				newFiles.Add(model);
 			}
 			await AddRangeAsync(newFiles, cancellationToken);
-			return newFiles.Select(x=> new FileJson { Id = x.Id,Path = x.Path}).ToList();
+			return newFiles.Select(x=> new FileJson { Id = x.Id,FileId = x.Additions,Path = x.Path}).ToList();
 		}
 	}
 }

+ 2 - 0
src/Hotline.Share/Dtos/File/FileDto.cs

@@ -135,6 +135,8 @@ namespace Hotline.Share.Dtos.File
 	public class FileJson {
 	
 		public string Id { get; set; }
+		public string FileId { get; set; }
+
 		public string Path { get; set; }
 	}
 }

+ 4 - 1
src/Hotline.Share/Dtos/Knowledge/KnowledgeCorrectionDto.cs

@@ -1,4 +1,5 @@
-using Hotline.Share.Enums.KnowledgeBase;
+using Hotline.Share.Dtos.File;
+using Hotline.Share.Enums.KnowledgeBase;
 using Hotline.Share.Requests;
 using System;
 using System.Collections.Generic;
@@ -76,6 +77,8 @@ namespace Hotline.Share.Dtos.Knowledge
 		/// 答复状态
 		/// </summary>
 		public ECorrectionState State { get; set; } = ECorrectionState.Unanswered;
+
+		public List<FileDto> Files { get; set; }
 	}
 
 	public class KnowledgeCorrectionDeleteDto

+ 5 - 2
src/Hotline.Share/Dtos/Knowledge/KnowledgeDto.cs

@@ -1,4 +1,5 @@
-using Hotline.Share.Dtos.FlowEngine;
+using Hotline.Share.Dtos.File;
+using Hotline.Share.Dtos.FlowEngine;
 using Hotline.Share.Dtos.Org;
 using Hotline.Share.Dtos.Quality;
 using Hotline.Share.Enums.KnowledgeBase;
@@ -182,7 +183,7 @@ namespace Hotline.Share.Dtos.Knowledge
 		/// <summary>
 		/// 来源部门
 		/// </summary>
-		public OrgDto SourceOrganize { get; set; }
+		public OrgDto? SourceOrganize { get; set; }
 
         public KnowledgeTypeDto KnowledgeType { get; set; }
 
@@ -202,6 +203,8 @@ namespace Hotline.Share.Dtos.Knowledge
 		/// </summary>
 		public List<KnowledgeWordDto> KeywordsDto { get; set; }
 
+        public List<FileDto> Files { get; set; }
+
 	}
 
     public record KnowledgeBaseDto {

+ 6 - 2
src/Hotline.Share/Dtos/Knowledge/KnowledgeSendDto.cs

@@ -1,4 +1,6 @@
-namespace Hotline.Share.Dtos.Knowledge
+using Hotline.Share.Dtos.File;
+
+namespace Hotline.Share.Dtos.Knowledge
 {
     /// <summary>
     /// 知识库推送信息
@@ -64,5 +66,7 @@
         /// 材料标识
         /// </summary>
         public string CliengGuid { get; set; }
-    }
+
+        public List<FileJson>? FileJson { get; set; }
+	}
 }

+ 5 - 0
src/Hotline.Share/Dtos/Order/OrderScreenDto.cs

@@ -183,6 +183,11 @@ namespace Hotline.Share.Dtos.Order
 		/// </summary>
 		public string? WorkflowId { get; set; }
 
+		/// <summary>
+		/// 附件
+		/// </summary>
+		public List<FileJson>? FileJson { get; set; } = new();
+
 	}
 
 	public class PublishScreenDto {

+ 5 - 0
src/Hotline.Share/Dtos/Order/OrderSendBackDto.cs

@@ -113,6 +113,11 @@ namespace Hotline.Share.Dtos.Order
 		/// 退回目的地
 		/// </summary>
 		public ESendBackDestination Destination { get; set; }
+
+		/// <summary>
+		/// 附件
+		/// </summary>
+		public List<FileJson>? FileJson { get; set; } = new();
 	}
 	public class OrderSendBackBaseDto
 	{

+ 4 - 3
src/Hotline.Share/Dtos/Order/PublishedDto.cs

@@ -1,4 +1,5 @@
-using Hotline.Share.Enums.Order;
+using Hotline.Share.Dtos.File;
+using Hotline.Share.Enums.Order;
 using Hotline.Share.Requests;
 using XF.Utility.EnumExtensions;
 
@@ -476,7 +477,7 @@ public class SuperviseOrderDto
     /// <summary>
     /// 附件
     /// </summary>
-    public List<string>? Additions { get; set; } = new();
+    public List<FileJson>? FileJson { get; set; } = new();
 
     public DateTime? LastModificationTime { get; set; }
 
@@ -569,7 +570,7 @@ public class UrgeOrderDto
     /// <summary>
     /// 附件
     /// </summary>
-    public List<string>? Additions { get; set; } = new();
+    public List<FileJson>? FileJson { get; set; } = new();
 
     public DateTime? LastModificationTime { get; set; }
 

+ 82 - 1
src/Hotline.Share/Dtos/Order/QueryOrderDto.cs

@@ -4,6 +4,7 @@ using System.ComponentModel;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using Hotline.Share.Dtos.File;
 using Hotline.Share.Dtos.Users;
 using Hotline.Share.Enums.Order;
 using Hotline.Share.Enums.Settings;
@@ -248,9 +249,89 @@ namespace Hotline.Share.Dtos.Order
 
         public string DelayReason { get; set; }
 
-        public List<string> FileIds { get; set; }
+        public List<FileJson> FileJson { get; set; }
     }
 
+    public class PublishOrderDelayDto
+    {
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 工单编号(冗余)
+        /// </summary>
+        public string No { get; set; }
+
+        /// <summary>
+        /// 工单ID
+        /// </summary>
+        public string OrderId { get; set; }
+
+        public OrderDto? Order { get; set; }
+
+        /// <summary>
+        /// 延期申请时间
+        /// </summary>
+        public DateTime ApplyDelayTime { get; set; }
+
+        /// <summary>
+        /// 申请部门Code
+        /// </summary>
+        public string ApplyOrgCode { get; set; }
+
+        /// <summary>
+        /// 申请部门名称
+        /// </summary>
+        public string ApplyOrgName { get; set; }
+
+        /// <summary>
+        /// 申请人
+        /// </summary>
+        public string EmployeeId { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string? EmployeeName { get; set; }
+
+        /// <summary>
+        /// 延期申请时限
+        /// </summary>
+        public int DelayNum { get; set; }
+
+        /// <summary>
+        /// 延期申请单位
+        /// </summary>
+        public ETimeType DelayUnit { get; set; }
+
+        /// <summary>
+        /// 延期申请理由
+        /// </summary>
+        public string DelayReason { get; set; }
+
+        /// <summary>
+        /// 申请前期满时间
+        /// </summary>
+        public DateTime? BeforeDelay { get; set; }
+
+        /// <summary>
+        /// 申请后期满时间
+        /// </summary>
+        public DateTime? AfterDelay { get; set; }
+
+        /// <summary>
+        /// 审批状态
+        /// </summary>
+        public EDelayState DelayState { get; set; }
+
+        /// <summary>
+        /// 是否省延期
+        /// </summary>
+        public bool IsProDelay { get; set; }
+
+        public List<FileJson> FileJson { get; set; }
+    }
+
+
 
     public record OrderDelayDto
     {

+ 12 - 12
src/Hotline/DataSharing/Order/DsOrder.cs

@@ -210,18 +210,6 @@ public class DsOrder : CreationModificationEntity
     [SugarColumn(ColumnDescription = "是否为省工单")]
     public bool IsProvince { get; set; } = false;
 
-    /// <summary>
-    /// 是否公开---工单发布的时候选择是否公开
-    /// </summary>
-    [SugarColumn(ColumnDescription = "是否公开---工单发布的时候选择是否公开", IsNullable = true)]
-    public EDsPublishState IsPublish { get; set; } = EDsPublishState.Unpublished;
-
-    /// <summary>
-    ///发布时间
-    /// </summary>
-    [SugarColumn(ColumnDescription = "发布时间", IsNullable = true)]
-    public DateTime? PublishDate { get; set; }
-
     /// <summary>
     /// 办理状态--默认办理中,归档的时候更新为办理完成
     /// </summary>
@@ -252,6 +240,18 @@ public class DsOrder : CreationModificationEntity
     [SugarColumn(ColumnDescription = "办结时间--归档的时间", IsNullable = true)]
     public DateTime? ActualHandleTime { get; set; }
 
+    /// <summary>
+    /// 是否公开---工单发布的时候选择是否公开
+    /// </summary>
+    [SugarColumn(ColumnDescription = "是否公开---工单发布的时候选择是否公开", IsNullable = true)]
+    public EDsPublishState IsPublish { get; set; } = EDsPublishState.Unpublished;
+
+    /// <summary>
+    ///发布时间
+    /// </summary>
+    [SugarColumn(ColumnDescription = "发布时间", IsNullable = true)]
+    public DateTime? PublishDate { get; set; }
+
     /// <summary>
     /// 整理标题
     /// </summary>

+ 3 - 3
src/Hotline/DataSharing/Province/HuiJu/Send/DsSubmitCaseProcess.cs

@@ -84,10 +84,10 @@ namespace Hotline.DataSharing.Province.HuiJu.Send
         public string CaseSerial { get; set; }
 
         /// <summary>
-        /// 附件
+        /// 材料标识
         /// </summary>
+        [SugarColumn(ColumnDescription = "材料标识", ColumnDataType = "varchar(50)", IsNullable = true)]
+        public string CliengGuid { get; set; }
 
-        [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
-        public List<FileJson>? FileJson { get; set; }
     }
 }

+ 2 - 2
src/Hotline/DataSharing/Province/Services/IProvinceService.cs

@@ -46,7 +46,7 @@ namespace Hotline.DataSharing.Province.Services
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        Task DelayCaseInfoSend(DelayCaseInfoSendInfo dto, CancellationToken cancellationToken);
+        Task DelayCaseInfoSend(PublishOrderDelayDto dto, CancellationToken cancellationToken);
 
         /// <summary>
         /// 政民互动提交公开  
@@ -136,7 +136,7 @@ namespace Hotline.DataSharing.Province.Services
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-       Task SupplyCaseInfoSend(SupplyCaseInfoSendInfo dto, CancellationToken cancellationToken);
+        Task SupplyCaseInfoSend(SupplyCaseInfoSendInfo dto, CancellationToken cancellationToken);
 
         /// <summary>
         /// 服务工单撤单

+ 86 - 53
src/Hotline/DataSharing/Province/Services/ProvinceService.cs

@@ -8,9 +8,11 @@ using Hotline.DataSharing.Province.Other;
 using Hotline.DataSharing.Province.XieTong.Knowledge;
 using Hotline.DataSharing.Province.XieTong.Receive;
 using Hotline.DataSharing.Province.XieTong.Send;
+using Hotline.File;
 using Hotline.Share.Dtos.DataSharing.DataExchange;
 using Hotline.Share.Dtos.DataSharing.Province.Extend;
 using Hotline.Share.Dtos.DataSharing.Province.XieTong.Send;
+using Hotline.Share.Dtos.File;
 using Hotline.Share.Dtos.Knowledge;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Enums.DataSharing;
@@ -83,6 +85,7 @@ namespace Hotline.DataSharing.Province.Services
         private readonly IPusherProviderService _pusherProviderService;
         private readonly IEnterpriseService _enterpriseService;
         private readonly ILogger<ProvinceService> _logger;
+        private readonly IFileRepository _fileRepository;
 
         /// <summary>
         /// 注入
@@ -183,9 +186,10 @@ namespace Hotline.DataSharing.Province.Services
           IRepository<DsOrder> dataOrderRepository,
           IRepository<DsOrderWorkFlow> dataOrderWorkFlowRepository,
           IHttpClientFactory httpClientFactory,
-           IPusherProviderService pusherProviderService,
-           IEnterpriseService enterpriseService,
-           ILogger<ProvinceService> logger)
+          IPusherProviderService pusherProviderService,
+          IEnterpriseService enterpriseService,
+          ILogger<ProvinceService> logger,
+          IFileRepository fileRepository)
         {
             _submitCaseInfoRepository = submitCaseInfoRepository;
             _mapper = mapper;
@@ -237,6 +241,7 @@ namespace Hotline.DataSharing.Province.Services
             _pusherProviderService = pusherProviderService;
             _enterpriseService = enterpriseService;
             _logger = logger;
+            _fileRepository = fileRepository;
         }
         #endregion
 
@@ -277,6 +282,8 @@ namespace Hotline.DataSharing.Province.Services
             if (dto.Order.Source == ESource.ProvinceStraight)
             {
                 var data = _mapper.Map<DsGetCaseBackApply>(dto);
+
+                data.CliengGuid = Guid.NewGuid().ToString();
                 //将上报信息写入本地库
                 data.Id = await _getCaseBackApplyRepository.AddAsync(data, cancellationToken);
 
@@ -286,7 +293,7 @@ namespace Hotline.DataSharing.Province.Services
                 //   await _pusherProviderService.GetCaseBackApplyPusher(data, cancellationToken);
 
                 //处理附件
-                await FileData(new List<Hotline.Share.Dtos.File.FileDto>(), dto.Order.ProvinceNo, dto.ClientGuid, dto.Order.AreaCode, cancellationToken);
+                await FileData(dto.SendBack.FileJson, dto.Order.ProvinceNo, data.CliengGuid, dto.Order.AreaCode, cancellationToken);
             }
         }
 
@@ -322,13 +329,14 @@ namespace Hotline.DataSharing.Province.Services
             if (dto.Order.Source == ESource.ProvinceStraight && dto.Order.IsProvince)
             {
                 var data = _mapper.Map<DsSendSuperviseResultInfo>(dto);
-
+                data.CliengGuid = Guid.NewGuid().ToString();
                 //将上报信息写入本地库
                 data.Id = await _sendSuperviseResultInfoRepository.AddAsync(data, cancellationToken);
 
                 //将待推送数据写入待推送表
                 await InitPushData("SendSuperviseResultInfo", System.Text.Json.JsonSerializer.Serialize(data), "send_supervise_result_info", data.Id, 0, cancellationToken);
-
+                //处理附件
+                await FileData(dto.Supervise.FileJson, dto.Order.ProvinceNo, data.CliengGuid, dto.Order.AreaCode, cancellationToken);
                 // await _pusherProviderService.SendSuperviseResultInfoPusher(data, cancellationToken);
             }
         }
@@ -344,6 +352,7 @@ namespace Hotline.DataSharing.Province.Services
             if (dto.Order.Source == ESource.ProvinceStraight && dto.Order.IsProvince)
             {
                 var data = _mapper.Map<DsScreenCaseInfoSend>(dto);
+                data.CliengGuid = Guid.NewGuid().ToString();
                 data.ApplyType = dto.Screen.TypeDicName switch
                 {
                     "违反法律法规" => "10",
@@ -356,20 +365,22 @@ namespace Hotline.DataSharing.Province.Services
 
                 //将待推送数据写入待推送表
                 await InitPushData("ScreenCaseInfoSend", System.Text.Json.JsonSerializer.Serialize(data), "screen_case_info_send", data.Id, 0, cancellationToken);
-
+                //处理附件
+                await FileData(dto.Screen.FileJson, dto.Order.ProvinceNo, data.CliengGuid, dto.Order.AreaCode, cancellationToken);
                 //  await _pusherProviderService.ScreenCaseInfoSendPusher(data, cancellationToken);
             }
         }
 
         /// <summary>
-        /// 服务工单申请延时  
+        /// 服务工单申请延时   --已对接---1
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
-        public async Task DelayCaseInfoSend(DelayCaseInfoSendInfo dto, CancellationToken cancellationToken)
+        public async Task DelayCaseInfoSend(PublishOrderDelayDto dto, CancellationToken cancellationToken)
         {
             var data = _mapper.Map<DsDelayCaseInfoSend>(dto);
-            data.AreaCode = _channelConfigurationManager.GetConfigurationCityCode().AreaCode;
+            data.CliengGuid = Guid.NewGuid().ToString();
+            data.ApplyType = "1";
             //将上报信息写入本地库
             data.Id = await _delayCaseInfoSendRepository.AddAsync(data);
 
@@ -379,7 +390,7 @@ namespace Hotline.DataSharing.Province.Services
             //信息上报
             //   await _pusherProviderService.DelayCaseInfoSendPusher(data, cancellationToken);
             //处理附件
-            await FileData(new List<Hotline.Share.Dtos.File.FileDto>(), dto.CaseSerial, dto.CliengGuid, dto.AreaCode, cancellationToken);
+            await FileData(dto.FileJson, data.CaseSerial, data.CliengGuid, data.AreaCode, cancellationToken);
         }
 
         /// <summary>
@@ -464,7 +475,7 @@ namespace Hotline.DataSharing.Province.Services
                 //   await _pusherProviderService.ProvinceOrderCreatedPusher(submitCaseInfo, cancellationToken);
 
                 //处理附件
-                await FileData(new List<Hotline.Share.Dtos.File.FileDto>(), submitCaseInfo.CaseSerial, submitCaseInfo.CliengGuid, submitCaseInfo.AreaCode, cancellationToken);
+                await FileData(dto.FileJson, submitCaseInfo.CaseSerial, submitCaseInfo.CliengGuid, submitCaseInfo.AreaCode, cancellationToken);
             }
         }
 
@@ -489,7 +500,7 @@ namespace Hotline.DataSharing.Province.Services
         }
 
         /// <summary>
-        /// 热线工单办理---服务工单处理/服务工单交办处理过程--缺少附件----1
+        /// 热线工单办理---服务工单处理/服务工单交办处理过程----1
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
@@ -518,13 +529,17 @@ namespace Hotline.DataSharing.Province.Services
 
                 var data = _mapper.Map<DsGetCaseProcessReceive>(dto);
                 data.TacheName = "70:" + data.DeptName;
+                data.CliengGuid = Guid.NewGuid().ToString();
                 //将上报信息写入本地库
                 data.Id = await _getCaseProcessReceiveRepository.AddAsync(data, cancellationToken);
-
+                //将待推送数据写入待推送表
                 await InitPushData("GetCaseProcessReceive", System.Text.Json.JsonSerializer.Serialize(data), "get_case_process_receive", data.Id, 0, cancellationToken);
 
                 //信息上报
-                await _pusherProviderService.GetCaseProcessReceivePusher(data, cancellationToken);
+                //await _pusherProviderService.GetCaseProcessReceivePusher(data, cancellationToken);
+
+                //处理附件
+                await FileData(dto.WorkflowTrace.FileJson, data.CaseSerial, data.CliengGuid, dto.Order.AreaCode, cancellationToken);
             }
             else  //如果不是省上派下来的工单
             {
@@ -541,6 +556,7 @@ namespace Hotline.DataSharing.Province.Services
 
                 //推送办理记录
                 await SubmitCaseProcessData(dto, cancellationToken);//本地工单走市州接口
+
             }
 
             //这里判断是否需要往其他平台推送数据
@@ -568,7 +584,7 @@ namespace Hotline.DataSharing.Province.Services
         }
 
         /// <summary>
-        ///热线工单归档---服务工单结果/服务工单交办处理结果--缺少附件---1
+        ///热线工单归档---服务工单结果/服务工单交办处理结果
         /// </summary>
         /// <param name="dto"></param>
         /// <returns></returns>
@@ -746,10 +762,9 @@ namespace Hotline.DataSharing.Province.Services
         {
             var data = _mapper.Map<DsSupplyCaseInfoSend>(dto);
             data.AreaCode = _channelConfigurationManager.GetConfigurationCityCode().AreaCode;
+            data.CliengGuid = Guid.NewGuid().ToString();
             //将上报信息写入本地库
-            var id = await _supplyCaseInfoSendRepository.AddAsync(data);
-
-            data.Id = id;
+            data.Id = await _supplyCaseInfoSendRepository.AddAsync(data);
 
             await InitPushData("SupplyCaseInfoSend", System.Text.Json.JsonSerializer.Serialize(data), "supply_case_info_send", data.Id, 0, cancellationToken);
 
@@ -757,7 +772,7 @@ namespace Hotline.DataSharing.Province.Services
             //await _pusherProviderService.SupplyCaseInfoSendPusher(data, cancellationToken);
 
             //处理附件
-            await FileData(new List<Share.Dtos.File.FileDto>(), dto.CaseSerial, dto.CliengGuid, dto.AreaCode, cancellationToken);
+            await FileData(new List<FileJson>(), dto.CaseSerial, data.CliengGuid, dto.AreaCode, cancellationToken);
         }
 
         /// <summary>
@@ -770,6 +785,7 @@ namespace Hotline.DataSharing.Province.Services
             var data = _mapper.Map<DsRevokeCaseInfo>(dto);
             data.Direction = "1";
             data.AreaCode = _channelConfigurationManager.GetConfigurationCityCode().AreaCode;
+            data.CliengGuid = Guid.NewGuid().ToString();
             //将上报信息写入本地库
             data.Id = await _revokeCaseInfoRepository.AddAsync(data);
 
@@ -778,13 +794,11 @@ namespace Hotline.DataSharing.Province.Services
 
             await InitPushData("SendRevokeCaseInfo", System.Text.Json.JsonSerializer.Serialize(data), "revoke_case_info", data.Id, 0, cancellationToken);
             // await _pusherProviderService.SendRevokeCaseInfoPusher(data, cancellationToken);
+            //处理附件
+            await FileData(new List<FileJson>(), dto.CaseSerial, data.CliengGuid, dto.AreaCode, cancellationToken);
 
             //如果是派给企业服务的需要调用企业服务的接口
-
             await _enterpriseService.EnterpriseCancelPusher(new DsDataWorkOrderCancel(), cancellationToken);
-
-            //处理附件
-            await FileData(new List<Share.Dtos.File.FileDto>(), dto.CaseSerial, dto.CliengGuid, dto.AreaCode, cancellationToken);
         }
 
         /// <summary>
@@ -799,6 +813,7 @@ namespace Hotline.DataSharing.Province.Services
             {
                 var data = _mapper.Map<DsRemindCaseInfo>(dto);
                 data.Direction = "1";
+                data.CliengGuid = Guid.NewGuid().ToString();
                 //将上报信息写入本地库
                 data.Id = await _remindCaseInfoRepository.AddAsync(data);
 
@@ -807,7 +822,7 @@ namespace Hotline.DataSharing.Province.Services
                 //await _pusherProviderService.SendRemindCaseInfoPusher(data, cancellationToken);
 
                 //处理附件
-                await FileData(new List<Share.Dtos.File.FileDto>(), dto.Order.ProvinceNo, dto.ClientGuid, dto.Order.AreaCode, cancellationToken);
+                await FileData(dto.Urge.FileJson, dto.Order.ProvinceNo, data.CliengGuid, dto.Order.AreaCode, cancellationToken);
             }
         }
 
@@ -825,7 +840,7 @@ namespace Hotline.DataSharing.Province.Services
         {
             var data = _mapper.Map<DsGetKnowledgeInfoSend>(dto);
             data.AreaCode = _channelConfigurationManager.GetConfigurationCityCode().AreaCode;
-            dto.CliengGuid = Guid.NewGuid().ToString();
+            data.CliengGuid = Guid.NewGuid().ToString();
             if (data.DisableDate == null)//如果没得有失效时间,默认在生效日期上面加10年
                 data.DisableDate = data.BeginDate.Value.AddYears(10);
             //将上报信息写入本地库
@@ -846,7 +861,7 @@ namespace Hotline.DataSharing.Province.Services
             await InitPushData("GetKnowledgeInfoSend", System.Text.Json.JsonSerializer.Serialize(data), "get_knowledge_info_send", data.Id, 0, cancellationToken);
             // await _pusherProviderService.GetKnowledgeInfoSendPusher(data, cancellationToken);
             //知识附件处理
-            await FileData(new List<Share.Dtos.File.FileDto>(), dto.UID, dto.CliengGuid, data.AreaCode, cancellationToken);
+            await FileData(dto.FileJson, dto.UID, data.CliengGuid, data.AreaCode, cancellationToken);
 
         }
 
@@ -859,7 +874,7 @@ namespace Hotline.DataSharing.Province.Services
         {
             var data = _mapper.Map<DsGetKnowledgeInfoUpdate>(dto);
             data.AreaCode = _channelConfigurationManager.GetConfigurationCityCode().AreaCode;
-            dto.CliengGuid = Guid.NewGuid().ToString();
+            data.CliengGuid = Guid.NewGuid().ToString();
             if (data.DisableDate == null)//如果没得有失效时间,默认在生效日期上面加10年
                 data.DisableDate = data.BeginDate.Value.AddYears(10);
             //将上报信息写入本地库
@@ -881,7 +896,7 @@ namespace Hotline.DataSharing.Province.Services
             // await _pusherProviderService.GetKnowledgeInfoUpdatePusher(data, cancellationToken);
 
             //知识附件处理
-            await FileData(new List<Share.Dtos.File.FileDto>(), dto.UID, dto.CliengGuid, data.AreaCode, cancellationToken);
+            await FileData(dto.FileJson, dto.UID, data.CliengGuid, data.AreaCode, cancellationToken);
         }
 
         /// <summary>
@@ -923,6 +938,19 @@ namespace Hotline.DataSharing.Province.Services
         }
         #endregion
 
+        ///// <summary>
+        ///// 接收发布数据
+        ///// </summary>
+        ///// <param name="dto"></param>
+        ///// <param name="cancellationToken"></param>
+        ///// <returns></returns>
+        //public async Task PublishOrder(PublishPublishOrderDto dto, CancellationToken cancellationToken)
+        //{
+
+        //    _dataOrderRepository
+
+        //}
+
         #region 私有方法
         /// <summary>
         /// 服务工单回访评价/服务工单交办评价
@@ -984,7 +1012,7 @@ namespace Hotline.DataSharing.Province.Services
                 await _pusherProviderService.GetVisitInfoReceivePusher(data, cancellationToken);
 
                 //处理附件
-                await FileData(new List<Hotline.Share.Dtos.File.FileDto>(), data.CaseSerial, data.CliengGuid, data.AreaCode, cancellationToken);
+                await FileData(new List<FileJson>(), data.CaseSerial, data.CliengGuid, data.AreaCode, cancellationToken);
             }
             else
             {
@@ -996,7 +1024,8 @@ namespace Hotline.DataSharing.Province.Services
 
                 //将待推送数据写入待推送表
                 await InitPushData("SubmitVisitInfo", System.Text.Json.JsonSerializer.Serialize(data), "submit_visit_info", data.Id, 0, cancellationToken);
-
+                //处理附件
+                await FileData(new List<FileJson>(), data.CaseSerial, data.CliengGuid, data.AreaCode, cancellationToken);
                 //组装110数据
                 if (dto.Order.Source == ESource.Police110)
                 {
@@ -1099,8 +1128,8 @@ namespace Hotline.DataSharing.Province.Services
             var data = _mapper.Map<DsSubmitCaseProcess>(dto);
 
             data.TacheName = "70:" + data.DeptName;
-            data.FileJson = dto.WorkflowTrace.FileJson;
             data.CaseId = dto.WorkflowTrace.Id;
+            data.CliengGuid = Guid.NewGuid().ToString();
             //将上报信息写入本地库
             data.Id = await _submitCaseProcessRepository.AddAsync(data, cancellationToken);
 
@@ -1115,7 +1144,8 @@ namespace Hotline.DataSharing.Province.Services
                 SyncID = data.Id
             };
             await _waitingPushDataRepository.AddAsync(pushData, cancellationToken);
-
+            //处理附件
+            await FileData(dto.WorkflowTrace.FileJson, data.CaseSerial, data.CliengGuid, dto.Order.AreaCode, cancellationToken);
         }
 
         /// <summary>
@@ -1327,6 +1357,7 @@ namespace Hotline.DataSharing.Province.Services
             data.ConcactType = "40";
             data.FinishType = "1";
             data.HandleTimeLong = dto.Order.AllDuration;
+            data.CliengGuid = Guid.NewGuid().ToString();
             //将上报信息写入本地库
             data.Id = await _submitCaseResultRepository.AddAsync(data, cancellationToken);
 
@@ -1341,7 +1372,8 @@ namespace Hotline.DataSharing.Province.Services
                 SyncID = data.Id
             };
             await _waitingPushDataRepository.AddAsync(pushData, cancellationToken);
-
+            //处理附件
+            await FileData(new List<FileJson>(), data.CaseSerial, data.CliengGuid, dto.Order.AreaCode, cancellationToken);
             //判断如果是110过来的数据,就组装数据
             //组装110
             if (dto.Order.Source == ESource.Police110)
@@ -1631,52 +1663,53 @@ namespace Hotline.DataSharing.Province.Services
         /// <param name="CliengGuid">附件</param>
         /// <param name="AreaCode">区域Code</param>
         /// <returns></returns>
-        private async Task FileData(List<Hotline.Share.Dtos.File.FileDto> dto, string CaseSerial, string CliengGuid, string AreaCode, CancellationToken cancellationToken)
+        private async Task FileData(List<FileJson> dto, string CaseSerial, string CliengGuid, string AreaCode, CancellationToken cancellationToken)
         {
             if (dto != null && dto.Count > 0)
             {
                 //往附件推送表中写入数据
                 foreach (var item in dto)
                 {
+                    var data = await _fileRepository.GetAsync(p => p.Id == item.Id);
                     //将受到的数据写入本地数据库
                     DsGetCaseMaterialInfo materialInfo = new()
                     {
                         CaseSerial = CaseSerial,
-                        // MaterialType = item.MaterialType,
                         CliengGuid = CliengGuid,
                         AreaCode = AreaCode,
-                        FileName = item.Name,
-                        FileSize = 0,
-                        Key = item.Key,
-                        Type = item.Type,
-                        Additions = item.Additions,
-                        Path = item.Path,
+                        FileName = data.Name,
+                        Key = data.Key,
+                        Type = data.Type,
+                        Additions = data.Additions,
+                        Path = data.Path,
                         Direction = "1",
                         SyncState = "0"
                     };
 
                     //材料类型
-                    switch (item.Classify)
+                    switch (data.Classify)
                     {
-                        case "1":
+                        case "办理上传":
                             materialInfo.MaterialType = "10";//受理材料
                             break;
-                        case "2":
-                            materialInfo.MaterialType = "20";//环节材料
-                            break;
-                        case "3":
-                            materialInfo.MaterialType = "30";//结果材料
-                            break;
-                        case "4":
+                        //case "2":
+                        //    materialInfo.MaterialType = "20";//环节材料
+                        //    break;
+                        //case "3":
+                        //    materialInfo.MaterialType = "30";//结果材料
+                        //    break;
+                        case "回访附件":
                             materialInfo.MaterialType = "40";//回访评价材料
                             break;
-                        case "5":
+                        case "督办申请":
+                        case "督办回复":
                             materialInfo.MaterialType = "50";//督办材料
                             break;
-                        case "6":
+                        case "知识附件":
                             materialInfo.MaterialType = "60";//知识库材料
                             break;
                         default:
+                            materialInfo.MaterialType = "20";//环节材料
                             break;
                     }
 

+ 2 - 8
src/Hotline/DataSharing/Province/XieTong/Receive/DsGetCaseMaterialInfo.cs

@@ -35,12 +35,6 @@ namespace Hotline.DataSharing.Province.XieTong.Receive
         [SugarColumn(ColumnDescription = "附件名称", ColumnDataType = "varchar(100)")]
         public string? FileName { get; set; }
 
-        /// <summary>
-        /// 附件大小
-        /// </summary>
-        [SugarColumn(ColumnDescription = "附件大小")]
-        public long? FileSize { get; set; } = 0;
-
         /// <summary>
 		/// 附件KEY
 		/// </summary>
@@ -54,9 +48,9 @@ namespace Hotline.DataSharing.Province.XieTong.Receive
         public string? Type { get; set; }
 
         /// <summary>
-		/// 附件
+		/// 附件Id
 		/// </summary>
-		[SugarColumn(ColumnDescription = "附件")]
+		[SugarColumn(ColumnDescription = "附件Id")]
         public string? Additions { get; set; }
 
         /// <summary>

+ 1 - 1
src/Hotline/DataSharing/Province/XieTong/Send/DsDelayCaseInfoSend.cs

@@ -32,7 +32,7 @@ namespace Hotline.DataSharing.Province.XieTong.Send
         /// 申请时间
         /// </summary>
         [SugarColumn(ColumnDescription = "申请时间")]
-        public string ApplyTime { get; set; }
+        public DateTime? ApplyTime { get; set; }
 
         /// <summary>
         /// 申请部门

+ 4 - 0
src/Hotline/KnowledgeBase/Knowledge.cs

@@ -5,6 +5,7 @@ using Hotline.Share.Enums.KnowledgeBase;
 using Hotline.Users;
 using SqlSugar;
 using System.ComponentModel;
+using Hotline.Share.Dtos.File;
 using XF.Domain.Repository;
 
 namespace Hotline.KnowledgeBase;
@@ -186,4 +187,7 @@ public class Knowledge : WorkflowEntity//   WorkflowEntity  FullStateEntity
 	[SugarColumn(IsIgnore = true)]
 	public bool? IsCanHandle { get; set; }
 
+	[SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
+	public List<FileJson>? FileJson { get; set; }
+
 }

+ 4 - 0
src/Hotline/KnowledgeBase/KnowledgeCorrection.cs

@@ -6,6 +6,7 @@ using System.ComponentModel;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using Hotline.Share.Dtos.File;
 using Hotline.Share.Enums.KnowledgeBase;
 using XF.Domain.Repository;
 
@@ -57,5 +58,8 @@ namespace Hotline.KnowledgeBase
 		[SugarColumn(ColumnDescription = "答复状态")]
 		public ECorrectionState State { get; set; } =  ECorrectionState.Unanswered;
 
+		[SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
+		public List<FileJson>? FileJson { get; set; }
+
 	}
 }