using Hotline.Share.Dtos.FlowEngine; using Hotline.Share.Dtos.Hotspots; using Hotline.Share.Enums.FlowEngine; using Hotline.Share.Enums.Order; using Hotline.Share.Enums.Settings; using XF.Utility.EnumExtensions; namespace Hotline.Share.Dtos.Order { public class OrderDto : UpdateOrderDto { #region 工单属性 /// /// 工单状态 /// public EOrderStatus Status { get; set; } public string StatusText => Status.GetDescription(); /// /// 过期状态 /// public EExpiredStatus ExpiredStatus { get; set; } /// /// 处理方式(直办、交办) /// public EProcessType ProcessType { get; set; } ///// ///// 进展情况 ///// //public EProgress Progress { get; set; } /// /// 是否公开 /// public bool IsPublicity { get; set; } /// /// 是否为省工单 /// public bool IsProvince { get; set; } /// /// 工单编码(20220101000001) /// public string No { get; set; } /// /// 省工单编号(冗余) /// public string? FromProvinceNo { get; set; } /// /// 同步省工单编号(按省工单要求生成的编号,冗余) /// public string? ToProvinceNo { get; set; } /// /// 省过期时间(省工单才有) /// public DateTime? ExpiredTimeProvince { get; set; } /// /// 110工单编号(从110来的和推送给110的都用该字段记录唯一标识) /// public string? No110 { get; set; } /// /// 是否110来的工单 /// public bool IsNo110 { get; set; } #region 流程信息 /// /// 工单开始时间(受理/接办时间=流程开启时间) /// public DateTime? StartTime { get; set; } /// /// 过期时间 /// public DateTime? ExpiredTime { get; set; } /// /// 归档时间(暂为流程结束时间,因流程结束自动归档) /// public DateTime? FiledTime { get; set; } /// /// 办理时间限制(如:24小时、7个工作日) /// public string? TimeLimit { get; set; } public int? TimeLimitCount { get; set; } public ETimeType? TimeLimitUnit { get; set; } #region 实际办理信息(节点,部门,意见) /// /// 实际办理节点code(会签状态此字段保存最外层会签发起节点code) /// public string? ActualHandleStepCode { get; set; } /// /// 实际办理节点名称(会签状态此字段保存最外层会签发起节点名称) /// public string? ActualHandleStepName { get; set; } /// /// 到达实际办理节点时间(stepBox创建时间) /// public DateTime? ActualHandleStepCreateTime { get; set; } /// /// 实际办理时间 /// public DateTime? ActualHandleTime { get; set; } /// /// 实际办理人id /// public string? ActualHandlerId { get; set; } /// /// 实际办理人名称 /// public string? ActualHandlerName { get; set; } /// /// 实际办理部门名称 /// public string? ActualHandleOrgName { get; set; } /// /// 实际办理部门编码 /// public string? ActualHandleOrgCode { get; set; } /// /// 实际办理部门行政区划编码 /// public string? ActualHandleOrgAreaCode { get; set; } /// /// 实际办理部门行政区划名称 /// public string? ActualHandleOrgAreaName { get; set; } /// /// 实际办理意见(办理中...or 最终办理意见) /// public string ActualOpinion { get; set; } = "办理中..."; /// /// 真实办理人姓名(手动填写) /// public string? RealHandlerName { get; set; } /// /// 真实办理人电话(手动填写) /// public string? RealHandlerPhone { get; set; } /// /// 沟通方式(手动填写) /// public ERealCommunicationMode? RealCommunicationMode { get; set; } /// /// 沟通时间(手动填写) /// public DateTime? RealCommunicationTime { get; set; } /// /// 沟通地点(手动填写) /// public string? RealCommunicationAddress { get; set; } #endregion #region 当前办理节点信息 /// /// 当前办理节点code(非会签:当前被指派节点,会签:会签发起节点) /// public string? CurrentStepCode { get; set; } /// /// 当前节点名称 /// public string? CurrentStepName { get; set; } /// /// 到达当前节点时间(stepBox创建时间) /// public DateTime? CurrentStepCreateTime { get; set; } #endregion #region 一级部门 /// /// 一级部门code /// public string? OrgLevelOneCode { get; set; } /// /// 一级部门名称 /// public string? OrgLevelOneName { get; set; } #endregion #region 受理人(开启流程的话务员) /// /// 受理人id /// public string? AcceptorId { get; set; } /// /// 受理人名称 /// public string? AcceptorName { get; set; } /// /// 受理人工号 /// public string? AcceptorStaffNo { get; set; } #endregion #endregion #endregion public string CreationTime { get; set; } public string? ContactMask { get; set; } public string SmsSendedText => SmsSended ? "已发送" : "未发送"; public string WorkflowId { get; set; } public WorkflowDto Workflow { get; set; } /// /// 来电/信人性别 /// public string FromGenderText => FromGender.GetDescription(); /// /// 来电/信人身份 /// public string IdentityTypeText => IdentityType.GetDescription(); /// /// 工单类型 /// public string OrderTypeText => OrderType.GetDescription(); /// /// 受理类型 /// public string AcceptTypeText => AcceptType.GetDescription(); /// /// 紧急程度 /// public string EmergencyLevelText => EmergencyLevel.GetDescription(); /// /// 超期时间描述(需求:超期3天、0.5天后超期) /// public string ExpiredText => CalculateExpiredText(); private string CalculateExpiredText() { //todo 完整处理方案:1.创建待过期表,Id,过期时间,即将过期时间等字段。2.延迟消息通知处理过期,删除子表数据,处理order过期状态字段。3.此处即可采用expiredStatus进行判断 //todo 目前暂时采用过期时间计算 if (!ExpiredTime.HasValue) return string.Empty; var days = (DateTime.Now - ExpiredTime.Value).TotalDays; switch (days) { case > 0: return $"超期{days:N1}天"; case < 0: return $"{days:N1}天后超期"; default: return "超期不到1天"; } } public HotspotDto? Hotspot { get; set; } } public class UpdateOrderDto : AddOrderDto { public string Id { get; set; } } public class AddOrderDto : Position { #region 来电信息 /// /// 来源渠道 /// public string SourceChannel { get; set; } public string SourceChannelCode { get; set; } /// /// 渠道为电话时,此字段存在 /// public string? CallId { get; set; } /// /// 来电归属地 /// public string? CallAddress { get; set; } /// /// 来电号码 /// public string? FromPhone { get; set; } /// /// 转接号码(转接来源) /// public string? TransferPhone { get; set; } /// /// 来电/信人姓名 /// public string FromName { get; set; } /// /// 来电/信人性别 /// public EGender FromGender { get; set; } /// /// 来电/信人身份 /// public EIdentityType IdentityType { get; set; } /// /// 证件类型 /// public string? LicenceTypeCode { get; set; } public string? LicenceType { get; set; } /// /// 证件号码 /// public string? LicenceNo { get; set; } /// /// 年龄段 /// public string? AgeRangeCode { get; set; } public string? AgeRange { get; set; } /// /// 联系电话 /// public string? Contact { get; set; } /// /// 是否接受短信,勾选校验手机号 /// public bool AcceptSms { get; set; } /// /// 是否已发送短信 /// public bool SmsSended { get; set; } /// /// 是否保密 /// public bool IsSecret { get; set; } /// /// 工作单位(当“来电/信人身份”为“企业”时必填,其他情况非必填) /// public string? Company { get; set; } #endregion #region 诉求信息 /// /// 工单类型 /// public EOrderType OrderType { get; set; } /// /// 受理类型 /// public EAcceptType AcceptType { get; set; } /// /// 紧急程度 /// public EEmergencyLevel EmergencyLevel { get; set; } = EEmergencyLevel.Normal; public string Title { get; set; } #region 热点 /// /// 热点 /// public string HotspotId { get; set; } public string HotspotName { get; set; } public string HotspotSpliceName { get; set; } /// /// 外部数据(为前端提供级联功能) /// public string HotspotExternal { get; set; } #endregion /// /// 事发时间 /// public DateTime? IncidentTime { get; set; } /// /// 重复工单Id /// public List? DuplicateIds { get; set; } /// /// 推送分类 /// public string? PushTypeCode { get; set; } public string? PushType { get; set; } /// /// 附件 /// public List Additions { get; set; } = new(); /// /// 诉求内容 /// public string Content { get; set; } #endregion /// /// 来源,区分省平台或110等其他平台同步过来的工单 /// public ESource Source { get; set; } /// /// 投诉 /// public OrderComplainDto OrderComplain { get; set; } /// /// 举报 /// public OrderReportDto OrderReport { get; set; } } public class PublishDto : OrderDto { /// /// 发布范围 /// public EPublishState PublishState { get; set; } /// /// 整理内容 /// public string ArrangeContent { get; set; } } public class PublishOrderPageBaseDto { /// /// 来源 0:热线平台 1:省平台 2:110 /// public string SourceChannel { get; set; } /// /// 工单标题 /// public string OrderTitle { get; set; } /// /// 工单内容 /// public string Content { get; set; } /// /// 办理结果 /// public string ActualOpinion { get; set; } /// /// 实际办理部门名称 /// public IdName ActualHandleOrgName { get; set; } /// /// 需回访部门 /// public List? idNames { get; set; } } public class PublishOrderDto { /// /// 工单ID /// public string Id { get; set; } /// /// 发布范围 /// public bool PublishState { get; set; } /// /// 整理标题 /// public string ArrangeTitle { get; set; } /// /// 整理内容 /// public string ArrangeContent { get; set; } /// /// 整理结果 /// public string ArrangeOpinion { get; set; } /// /// 需回访部门 /// public List IdNames { get; set; } #region 省工单使用 /// /// 省是否公开 /// public bool? ProPublishState { get; set; } /// /// 反馈人电话 /// public string? FeedBackPhone { get; set; } /// /// 不公开原因 /// public string? NoPubReason { get; set; } #endregion } public class PublishVisitDto { /// /// 工单对象 /// public OrderDto Order { get; set; } /// /// 服务工单编号 /// public string No { get; set; } /// /// 回访评价方式 /// public EVisitType? VisitType { get; set; } /// /// 回访人 /// public string VisitName { get; set; } /// /// 回访时间 /// public DateTime? VisitTime { get; set; } /// /// 回访评价情况 /// public string VisitRemark { get; set; } /// /// 回访结果满意度 /// public string SubjectResultSatifyCode { get; set; } /// /// 行政区划代码 /// public string AreaCode { get; set; } /// /// 工单回访首次结果满意度 /// public string FirstSatisfactionCode { get; set; } /// /// 附件 /// public string ClientGuid { get; set; } } }