using Hotline.Share.Dtos.CallCenter; using Hotline.Share.Dtos.File; using Hotline.Share.Dtos.FlowEngine.Workflow; using Hotline.Share.Dtos.Hotspots; using Hotline.Share.Dtos.Settings; using Hotline.Share.Enums.FlowEngine; using Hotline.Share.Enums.Order; using Hotline.Share.Enums.Settings; using Hotline.Share.Requests; using Novacode; using XF.Utility.EnumExtensions; namespace Hotline.Share.Dtos.Order { public class OrderHistoryOutDto { public string Id { get; set; } public string Title { get; set; } /// /// 是否甄别 /// public bool IsScreen { get; set; } public string No { get; set; } /// /// 当前节点名称 /// public string CurrentStepName { get; set; } public DateTime CreationTime { get; set; } public string ActualHandleOrgName { get; set; } /// /// 工单状态 /// public EOrderStatus Status { get; set; } public string StatusText => Status.GetDescription(); } public class OrderDto : UpdateOrderDto { #region 工单属性 /// /// 工单状态 /// public EOrderStatus Status { get; set; } public string StatusText => Status.GetDescription(); /// /// 过期状态 /// public EExpiredStatus? ExpiredStatus => CalculateExpiredState(); /// /// 过期状态 /// public string ExpiredStatusText => ExpiredStatus?.GetDescription() ?? string.Empty; /// /// 处理方式(直办、交办) /// public EProcessType ProcessType { get; set; } ///// ///// 进展情况 ///// //public EProgress Progress { get; set; } /// /// 是否公开 /// public bool IsPublicity { get; set; } /// /// 工单编码(20220101000001) /// public string No { get; set; } /// /// 是否110来的工单 /// public bool IsNo110 { get; set; } public string? TagNames { get; set; } /// /// 工单标签(自贡) /// public string? OrderTag => OrderTags != null && OrderTags.Any() ? string.Join(",", OrderTags.Select(x => x.DicDataName)) : string.Empty; // public string? OrderTagCode => OrderTags != null && OrderTags.Any() ? string.Join(",", OrderTags.Select(x => x.DicDataValue)) : string.Empty; public string? OrderTagCode { get; set; } public List? OrderTags { get; set; } #region 流程信息 /// /// 工单开始时间(受理/接办时间=流程开启时间) /// public DateTime? StartTime { get; set; } /// /// 交办时间(中心交部门办理时间) /// public DateTime? CenterToOrgTime { get; set; } /// /// 归档时间(暂为流程结束时间,因流程结束自动归档) /// public DateTime? FiledTime { get; set; } ///// ///// 归档意见 ///// //public string? FileOpinion { get; set; } /// /// 办结时长(分钟) /// 办结时间-交办时间 /// public double HandleDuration { get; set; } /// /// 办结工作日时长(分钟) /// public double HandleDurationWorkday { get; set; } /// /// 全流程时长(秒) /// 归档时间-受理时间 /// public double AllDuration { get; set; } public string AllDurationHour { get; set; } // // public string GetAllDurationHour() // { // if (Status >= EOrderStatus.Filed && FiledTime.HasValue) // { // return Math.Round(Math.Round((FiledTime - CreationTime).Value.TotalSeconds) / 60 / 60, 2).ToString() + "小时"; // } // // return "-"; // } /// /// 办结时长(秒) 归档时间-受理时间(工单创建时间) /// public double? CreationTimeHandleDuration { get; set; } /// /// 办结工作日时长(秒)归档时间-受理时间(工单创建时间) /// public double? CreationTimeHandleDurationWorkday { get; set; } /// /// 办结时长(秒) 归档时间-派单时间(中心到部门时间) /// public double? CenterToOrgHandleDuration { get; set; } /// /// 办结工作日时长(秒)归档时间-派单时间(中心到部门时间) /// public double? CenterToOrgHandleDurationWorkday { get; set; } /// /// 第一次评价结果代码 /// public string? FirstVisitResultCode { get; set; } #region 实际办理信息(节点,部门,意见) /// /// 实际办理节点code(会签状态此字段保存最外层会签发起节点code) /// public string? ActualHandleStepCode { get; set; } /// /// 实际办理节点名称(会签状态此字段保存最外层会签发起节点名称) /// public string? ActualHandleStepName { get; set; } /// /// 到达实际办理节点时间(stepBox创建时间) /// public DateTime? ActualHandleStepCreateTime { get; set; } /// /// 实际办理节点签收时间 /// public DateTime? ActualHandleStepAcceptTime { get; set; } public string ActualStepAcceptText => ActualHandleStepAcceptTime.HasValue ? "已签收" : "未签收"; /// /// 实际办理时间 /// 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; } /// /// 实际办理对象(会签停留在顶级发起节点) /// 办理时选择的办理对象,可能是部门也可能是用户 /// public string? ActualHandlerValue { get; set; } public string? ActualHandlerKey { get; set; } public EHandlerType? ActualHandlerType { 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; } /// /// 已与市民沟通 /// public bool? RealIsContacted { get; set; } /// /// 已与市民沟通 /// public string RealIsContactedTxt => RealIsContacted.HasValue && RealIsContacted.Value ? "已与市民沟通" : string.Empty; /// /// 已与市民现场沟通 /// public bool? RealContactLocale { get; set; } /// /// 其它 /// public bool? IsOther { get; set; } /// /// 其它的备注 /// public string? OtherRemark { get; set; } /// /// 已与市民现场沟通 /// public string RealContactLocaleTxt => RealContactLocale.HasValue && RealContactLocale.Value ? "已与市民现场沟通" : string.Empty; #endregion #region 当前办理节点信息(指派时赋值) public string? CurrentStepId { get; set; } /// /// 当前办理节点code(非会签:当前被指派节点,会签:会签发起节点) /// public string? CurrentStepCode { get; set; } /// /// 当前节点名称 /// public string? CurrentStepName { get; set; } /// /// 到达当前节点时间 /// public DateTime? CurrentStepCreateTime { get; set; } /// /// 当前办理节点签收时间 /// public DateTime? CurrentStepAcceptTime { get; set; } public string CurrentStepAcceptText => CurrentStepAcceptTime.HasValue ? "已签收" : "未签收"; /// /// 当前办理时间 /// public DateTime? CurrentHandleTime { get; set; } /// /// 当前办理人id /// public string? CurrentHandlerId { get; set; } /// /// 当前办理人名称 /// public string? CurrentHandlerName { get; set; } /// /// 当前办理部门名称 /// public string? CurrentHandleOrgName { get; set; } /// /// 当前办理部门编码 /// public string? CurrentHandleOrgId { get; set; } /// /// 当前办理部门等级 /// public int? CurrentHandleOrgLevel { get; set; } /// /// 当前办理部门行政区划编码 /// public string? CurrentHandleOrgAreaCode { get; set; } /// /// 当前办理部门行政区划名称 /// public string? CurrentHandleOrgAreaName { get; set; } /// /// /// public string? FocusOnEventsName { 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; } /// /// 受理人部门编码 /// public string? AcceptorOrgCode { get; set; } /// /// 受理人部门名称 /// public string? AcceptorOrgName { get; set; } #endregion /// /// 会签类型 /// public ECounterSignType? CounterSignType { get; set; } public string? CounterSignTypeText => CounterSignType?.GetDescription() ?? "未会签"; #region 签收 /// /// 签收人id /// public string? SignerId { get; set; } /// /// 签收人名称 /// public string? SignerName { get; set; } #endregion #endregion #endregion public DateTime CreationTime { get; set; } public string? ContactMask { get; set; } public string SmsSendedText => SmsSended ? "已发送" : "未发送"; /// /// 市民查询密码 /// public string? Password { get; set; } //public string? HotspotCodeLv1 { get; set; } public string WorkflowId { get; set; } public WorkflowDto Workflow { get; set; } /// /// 来电/信人性别 /// public string FromGenderText => FromGender.GetDescription(); /// /// 来电/信人身份 /// public string IdentityTypeText => IdentityType?.GetDescription(); ///// ///// 受理类型 ///// ////public string AcceptTypeText => AcceptType.GetDescription(); ///// ///// 紧急程度 ///// //public string EmergencyLevelText => EmergencyLevel.GetDescription(); /// /// 紧急程度 /// //public EEmergencyLevel EmergencyLevel { get; set; } public EEmergencyLevel EmergencyLevel => IsUrgent ? EEmergencyLevel.Emergency : EEmergencyLevel.UnEmergency; ///// ///// 超期时间描述(需求:超期3天、0.5天后超期) ///// //public string ExpiredText => CalculateExpiredText(); /// /// 是否可编辑 /// public bool CanEdit => !string.IsNullOrEmpty(SignerId) && (Status is EOrderStatus.WaitForAccept or EOrderStatus.BackToUnAccept or EOrderStatus.SpecialToUnAccept or EOrderStatus.HandOverToUnAccept); /// /// 是否可签收 /// public bool CanSign => string.IsNullOrEmpty(SignerId); /// /// 是否显示为红色 /// public bool IsRed { get; set; } /// /// 待结束会签编号 /// public string? CountersignId { get; set; } /// /// 是否可以延期 /// public bool IsCanDelay { get; set; } /// /// 是否可以取消延期 /// public bool IsCanCancelDelay { get; set; } /// /// 最后一次延期天数 /// public string? DelayString { get; set; } /// /// 是否可退回 /// public bool CanPrevious { get; set; } /// /// 是否可办理 /// public bool CanHandle { get; set; } /// /// 退回意见 /// public string? PreviousOpinion { get; set; } /// /// 是否可代办 /// public bool CanInsteadHandle { get; set; } /// /// 延期申请数量 /// public int DelayingCount => OrderDelays?.Count ?? 0; /// /// 是否紧急 /// public bool IsUrgent { get; set; } public string IsUrgentText => IsUrgent ? "紧急" : ""; /// /// 工单办理时 勾选的 是否紧急 /// public string IsStepUrgenText => IsStepUrgent ? "紧急" : ""; /// /// 工单办理时勾选的 是否紧急 /// public bool IsStepUrgent { get; set; } /// /// 是否推诿 /// public bool IsEvasive { get; set; } /// /// 是否推诿 /// public string IsEvasiveTxt => IsEvasive ? "推诿" : ""; /// /// 是否不积极 /// public bool IsInactively { get; set; } /// /// 是否不积极 /// public string IsInactivelyTxt => IsInactively ? "不积极" : ""; /// /// 发布范围 /// public bool? PublishState { get; set; } /// /// 是否延期 /// public string? DelayText => DelayingCount > 0 ? "是" : "否"; /// /// 特提次数 /// public int SpecialNum { get; set; } 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 string DaysOverdue => DaysOverdueText(); private string DaysOverdueText() { DateTime? dateTime = DateTime.Now; if (Status >= EOrderStatus.Filed && ExpiredTime.HasValue && FiledTime.HasValue) { var days = (FiledTime.Value - ExpiredTime.Value).TotalDays; return $"超期{days:N1}天"; } if (ExpiredTime.HasValue) { var days = (dateTime.Value - ExpiredTime.Value).TotalDays; return $"超期{days:N1}天"; } return string.Empty; } /// /// 剩余办理时长 /// public string RemainingTime => RemainingTimeTextVoid(); public string RemainingTimeTextVoid() { try { if (Status >= EOrderStatus.Filed && FiledTime != null && ExpiredTime != null) { return Math.Round((ExpiredTime.Value - FiledTime.Value).TotalDays, 1) + "天"; } else if (Status < EOrderStatus.Filed && ExpiredTime != null) { return Math.Round((ExpiredTime.Value - DateTime.Now).TotalDays, 1) + "天"; } else { return "-"; } } catch { return "-"; } } /// /// 超期部门 /// public string DaysOverdueOrgName { get; set; } public EExpiredStatus? CalculateExpiredState() { DateTime? dateTime = DateTime.Now; if (Status >= EOrderStatus.Filed) { dateTime = FiledTime; } //ExpiredStatus if (ExpiredTime.HasValue) { if (NearlyExpiredTimeOne.HasValue && dateTime < NearlyExpiredTimeOne) { return EExpiredStatus.Normal; } else if (!NearlyExpiredTimeOne.HasValue && dateTime < NearlyExpiredTime) { return EExpiredStatus.Normal; } else if (NearlyExpiredTimeOne.HasValue && dateTime > NearlyExpiredTimeOne && dateTime < NearlyExpiredTime) { return EExpiredStatus.GoingToExpiredOne; } else if (dateTime > NearlyExpiredTime && dateTime < ExpiredTime) { return EExpiredStatus.GoingToExpired; } else { return EExpiredStatus.Expired; } } return null; } public OrderExtensionDto OrderExtension { get; set; } public HotspotDto? Hotspot { get; set; } /// /// 延期 /// public List OrderDelays { get; set; } /// /// 甄别 /// public List OrderScreens { get; set; } public List RepeatableEventDetails { get; set; } = new(); public List? OrderVisits { get; set; } public CallNativeDto? FwCallRecord { get; set; } public List? FileJson { get; set; } /// /// 可直接访问的通话录音地址 /// public string? RecordingBaseAddress { get; set; } public string? RecordingAbsolutePath { get; set; } public int ReTransactNum { get; set; } /// /// 省重办次数 /// public int? ProvinceReTransactNum { get; set; } /// /// 工单交办处理方式 10:直接办结,20:交办,30:派单员重派,40:结果审核重派,50:回访不满意重派 /// public string? CaseProcessTypeText => GetCaseProcessTypeText(); public string GetCaseProcessTypeText() { var text = ""; if (!string.IsNullOrEmpty(CaseProcessType)) { switch (CaseProcessType) { case "10": case "20": break; case "30": text = "派单员重派"; break; case "40": text = "结果审核重派"; break; case "50": text = "回访不满意重派"; break; default: break; } } return text; } /// /// 敏感标签 /// public List? Sensitive { get; set; } public string? SensitiveText => (Sensitive != null && Sensitive.Any()) ? string.Join(',', Sensitive) : ""; public string IsProvinceText => IsProvince ? "省工单" : "市工单"; /// /// 部门是否解决 /// public bool IsResolved { get; set; } public string IsResolvedText => IsResolved ? "已解决" : "未解决"; #region 副本工单 /// /// 修改人 /// public string AuditUserName { get; set; } public string AuditUserId { get; set; } /// /// 修改时间 /// public DateTime AuditTime { get; set; } /// /// 副本工单id /// public string CopyId { get; set; } #endregion public string OverDays => GetOverDays(); public string GetOverDays() { var overDays = "0天"; if (ExpiredTime.HasValue) { if (FiledTime.HasValue && ExpiredTime < FiledTime) { overDays = (FiledTime - ExpiredTime).Value.Days + "天"; } else if (FiledTime.HasValue == false && ExpiredTime < DateTime.Now) { overDays = (DateTime.Now - ExpiredTime).Value.Days + "天"; } } return overDays; } public OrderDto DataMask() { if (this.IsSecret == false) return this; var maskString = "***"; this.Contact = maskString; this.FromName = maskString; this.FromGender = EGender.Unknown; this.FromPhone = maskString; this.FullAddress = maskString; this.Address = maskString; this.City = maskString; this.Street = maskString; this.ContactMask = maskString; return this; } ///// ///// 中心意见 ///// //public string CenterOpinion { get; set; } /// /// 退回原因 /// public string SendBackOpinion { get; set; } /// /// 退回原因 /// public string SendBackRefuseOpinion { get; set; } /// /// 审批时间 /// public DateTime? SendBackAuditTime { get; set; } /// /// 退回意见 /// public List OrderRemarks { get; set; } /// /// 交办人(派单员) /// public string? CenterToOrgHandlerId { get; set; } /// /// 交办人(派单员) /// public string? CenterToOrgHandlerName { get; set; } /// /// 是否退回审批中 /// public bool IsReturnUnderApproval { get; set; } /// /// 退回截至时间 /// public DateTime? SendBackAuditEndTime { get; set; } /// /// 省退回信息 /// public string ProvinceSendBackString { get; set; } /// /// 省撤单信息 /// public string ProvinceRevokeString { get; set; } /// /// 省甄别 /// public string ProvinceScreenString { get; set; } /// /// 省延期 /// public string? ProvinceDelayString { get; set; } /// /// 省工单退回 /// public bool? ProvinceSendBack { get; set; } /// /// 终止 /// public List OrderTerminates { get; set; } /// /// 终止状态 /// public string? OrderTerminateStatus { get; set; } #region 回访信息 ///// ///// 部门满意度 ///// //public Kv? OrgEvaluate { get; set; } //{ // get // { // if (this.OrderVisits == null) return null; // var visitEntity = this.OrderVisits // .OrderByDescending(m => m.CreationTime) // .FirstOrDefault(); // if (visitEntity == null) return null; // return visitEntity.NowEvaluate; // } //} /// /// 部门满意度 /// public Kv? OrgProcessingResults { get; set; } /// /// 部门满意度 /// public string? OrgEvaluateValue => OrgProcessingResults != null ? OrgProcessingResults.Value : ""; //{ // get // { // if (this.OrderVisits == null) return null; // var visitEntity = this.OrderVisits // .OrderByDescending(m => m.CreationTime) // .FirstOrDefault(); // if (visitEntity == null) return null; // var now = visitEntity.NowEvaluate; // if (now == null) return null; // return now.Value; // } //} /// /// 坐席满意度 /// public ESeatEvaluate? SeatEvaluate { get; set; } //{ // get // { // if (this.OrderVisits == null) return null; // var visitEntity = this.OrderVisits // .OrderByDescending(m => m.CreationTime) // .FirstOrDefault(); // if (visitEntity == null) return null; // return visitEntity.OrderVisitDetails.Where(m => m.VisitTarget == EVisitTarget.Seat) // .FirstOrDefault()?.SeatEvaluate; // } //} public string? SeatEvaluateTxt => SeatEvaluate?.GetDescription(); #endregion /// /// 工单补充 /// public List OrderComplements { get; set; } #region 随手拍 /// /// 行业Id /// 表的Id /// public string? IndustryId { get; set; } /// /// 行业名称 /// 表的Name /// public string? IndustryName { get; set; } #endregion public bool? IsReTransact { get; set; } } public class UpdateOrderDto : AddOrderDto { public string Id { get; set; } /// /// 中心意见 /// public string CenterOpinion { get; set; } /// /// 归档意见 /// public string? FileOpinion { get; set; } /// /// 能否编辑,true:任何节点可以编辑;false:未发起流程可以编辑 /// public bool IsEdit { get; set; } } public class OrderUploadFiles { public string Id { get; set; } /// /// 附件列表 /// public List Files { get; set; } = new(); } 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 IsSecretText => IsSecret ? "保密" : ""; /// /// 工作单位(当“来电/信人身份”为“企业”时必填,其他情况非必填) /// public string? Company { get; set; } #endregion #region 诉求信息 /// /// 受理类型 /// public string? AcceptType { get; set; } public string? AcceptTypeCode { get; set; } public string Title { get; set; } // /// // /// 工单标签(自贡) // /// // public string? OrderTag => OrderTags != null && OrderTags.Any() ? string.Join(",", OrderTags.Select(x => x.DicDataName)) : string.Empty; //public string? OrderTagCode { get; set; } #region 热点 /// /// 热点 /// public string? HotspotId { get; set; } //public string? HotspotCode { get; set; } public string? HotspotName { get; set; } public string? HotspotSpliceName { get; set; } /// /// 外部数据(为前端提供级联功能) /// public string? HotspotExternal { get; set; } #endregion #region 事件分类 public string? EventCategoryId { get; set; } public string? EventCategoryName { get; set; } public string? EventCategorySpliceName { get; set; } public string? EventCategoryExternal { get; set; } #endregion /// /// 事发时间 /// public DateTime? IncidentTime { get; set; } /// /// 事件目的 /// public string? IncidentPurpose { 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; } = ESource.Hotline; /// /// 扩展信息 /// public OrderExtensionDto? OrderExtension { get; set; } /// /// 附件列表 /// public List Files { get; set; } = new(); /// /// 企业名称 /// public string? EnterpriseName { get; set; } /// /// 企业Code /// public string? EnterpriseCode { get; set; } /// /// 专班名称 /// public string? ZhuanBanMingCheng { get; set; } /// /// 专班Code /// public string? ZhuanBanCode { get; set; } #region 重复性事件 public List RepeatableEventDetails { get; set; } = new(); #endregion /// /// 是否为省工单 /// public bool IsProvince { get; set; } /// /// 省本地编号 /// public string? ProvinceNo { get; set; } /// /// 省交办编号 /// public string? ReceiveProvinceNo { get; set; } /// /// 省过期时间(省工单才有) /// public DateTime? ExpiredTimeProvince { get; set; } /// /// 工单交办处理方式 10:直接办结,20:交办,30:派单员重派,40:结果审核重派,50:回访不满意重派 /// 处理方式为结果审核重派时禁止退单 /// 处理方式为回访不满意重派时禁止退单 /// public string? CaseProcessType { get; set; } /// /// 外部工单唯一标识 /// public string? ExternalId { get; set; } #region 期满时间 /// /// 过期时间 /// public DateTime? ExpiredTime { get; set; } /// /// 即将超期时间 /// public DateTime? NearlyExpiredTime { get; set; } /// /// 即将超期第一级 /// public DateTime? NearlyExpiredTimeOne { get; set; } /// /// 办理时间限制(如:24小时、7个工作日) /// public string? TimeLimit { get; set; } public int? TimeLimitCount { get; set; } public ETimeType? TimeLimitUnit { get; set; } #endregion #region 市州工单互转 /// /// 是否转发 /// public bool? Transpond { get; set; } /// /// 转发市州Id /// public string? TranspondCityId { get; set; } /// /// 转发市州名称 /// public string? TranspondCityName { get; set; } /// /// 转发市州Value /// public string? TranspondCityValue { get; set; } #endregion /// /// 是否行政执法类 /// public bool? IsEnforcementOrder { get; set; } /// /// 形式主义工单 /// public bool IsFormalistWorkOrder { get; set; } /// /// 敏感类工单 /// public bool IsSensitiveWorkOrders { get; set; } /// /// 24小时办结 /// public bool Is24HoursComplete { get; set; } /// /// 重点关注事件,保存前端选择,用于返回前端数据 /// public string? FocusOnEvents { get; set; } /// /// 重点关注事件,保存前端选择文字,用于返回前端数据 /// public string? FocusOnEventsName { get; set; } /// /// 是否紧急 /// public bool IsUrgent { get; set; } /// /// 是否三方通话 /// public bool IsThreePartyConference { get; set; } /// /// 是否政民互动公开 /// public bool IsProvinceZmhd { get; set; } /// /// 初审人姓名 /// public string? AuditFirstName { get; set; } /// /// 初审时间 /// public DateTime? AuditFirstTime { get; set; } /// /// 政民互动公开ID /// public string? OrderProvinceZmhdId { get; set; } /// /// 工单推送分类 /// public List? OrderPushTypes { get; set; } #region 随手拍 /// /// 行业Id /// 表的Id /// public string? IndustryId { get; set; } /// /// 行业名称 /// 表的Name /// public string? IndustryName { get; set; } #endregion /// ///知识库引用 /// public List? KnowledgeQuote { get; set; } /// /// 工单标签 /// public List? Tags { get; set; } } public record CanLinkCallRecordOrderDto : PagedKeywordRequest { } /// /// 修改工单受理附件 /// public class UpdateOrderFilesDto { public string Id { get; set; } public string OrderNo { get; set; } /// /// 附件 /// public List Files { get; set; } = new List(); } public record OrderCopyListDto : PagedKeywordRequest { public string OrderId { get; set; } } public class UnsignedOrderDto { public OrderDto Order { get; set; } public WorkflowStepDto WorkflowStep { get; set; } public decimal UnsignedTime { get; set; } } public class OrderRemarksDto { /// /// 备注信息 /// public string? Remark { get; set; } /// /// 备注人 /// public string? RemarkUser { get; set; } /// /// 备注时间 /// public DateTime? RemarkTime { get; set; } } public class PublishNearlyExpiredTimeSmsDto { public string OrderId { get; set; } } public class OverTimeOrderDto { public string OrgId { get; set; } public int NearlyOrderCount { get; set; } public int ExpiredTimeOrderCount { get; set; } } public class PublishAutomaticDelayDto { public string OrderId { get; set; } } public class PublishCancelInDto { /// /// Id /// public string OrderPublishId { get; set; } } public class OrderListOutDto { /// /// Id /// public string Id { get; set; } /// /// 工单状态 /// public EOrderStatus Status { get; set; } public string StatusText => Status.GetDescription(); /// /// 过期状态 /// public EExpiredStatus? ExpiredStatus => CalculateExpiredState(); /// /// 归档时间(暂为流程结束时间,因流程结束自动归档) /// public DateTime? FiledTime { get; set; } /// /// 过期时间 /// public DateTime? ExpiredTime { get; set; } /// /// 即将超期时间 /// public DateTime? NearlyExpiredTime { get; set; } /// /// 即将超期第一级 /// public DateTime? NearlyExpiredTimeOne { get; set; } public EExpiredStatus? CalculateExpiredState() { DateTime? dateTime = DateTime.Now; if (Status >= EOrderStatus.Filed) { dateTime = FiledTime; } //ExpiredStatus if (ExpiredTime.HasValue) { if (NearlyExpiredTimeOne.HasValue && dateTime < NearlyExpiredTimeOne) { return EExpiredStatus.Normal; } else if (!NearlyExpiredTimeOne.HasValue && dateTime < NearlyExpiredTime) { return EExpiredStatus.Normal; } else if (NearlyExpiredTimeOne.HasValue && dateTime > NearlyExpiredTimeOne && dateTime < NearlyExpiredTime) { return EExpiredStatus.GoingToExpiredOne; } else if (dateTime > NearlyExpiredTime && dateTime < ExpiredTime) { return EExpiredStatus.GoingToExpired; } else { return EExpiredStatus.Expired; } } return null; } /// /// 过期状态 /// public string ExpiredStatusText => ExpiredStatus?.GetDescription() ?? string.Empty; /// /// 工单编码(20220101000001) /// public string No { get; set; } /// /// 会签类型 /// public ECounterSignType? CounterSignType { get; set; } public string? CounterSignTypeText => CounterSignType?.GetDescription() ?? "未会签"; /// /// 签收人id /// public string? SignerId { get; set; } /// /// 签收人名称 /// public string? SignerName { get; set; } public DateTime CreationTime { get; set; } public string? ContactMask { get; set; } /// /// 紧急程度 /// public EEmergencyLevel EmergencyLevel => IsUrgent ? EEmergencyLevel.Emergency : EEmergencyLevel.UnEmergency; /// /// 是否可签收 /// public bool CanSign => string.IsNullOrEmpty(SignerId); /// /// 待结束会签编号 /// public string? CountersignId { get; set; } /// /// 是否可以延期 /// public bool IsCanDelay { get; set; } /// /// 是否可以取消延期 /// public bool IsCanCancelDelay { get; set; } /// /// 最后一次延期天数 /// public string? DelayString { get; set; } /// /// 是否可退回 /// public bool CanPrevious { get; set; } /// /// 是否可办理 /// public bool CanHandle { get; set; } /// /// 退回意见 /// public string? PreviousOpinion { get; set; } /// /// 是否可代办 /// public bool CanInsteadHandle { get; set; } /// /// 是否紧急 /// public bool IsUrgent { get; set; } public string IsUrgentText => IsUrgent ? "紧急" : ""; /// /// 是否显示为红色 /// public bool IsRed { get; set; } /// /// 发布范围 /// public bool? PublishState { get; set; } /// /// 实际办理节点code(会签状态此字段保存最外层会签发起节点code) /// public string? ActualHandleStepCode { get; set; } /// /// 实际办理节点名称(会签状态此字段保存最外层会签发起节点名称) /// public string? ActualHandleStepName { get; set; } /// /// 重办次数 /// public int ReTransactNum { get; set; } /// /// 热点分类 /// public string HotspotName { get; set; } /// /// 来源渠道 /// public string SourceChannel { get; set; } public string SourceChannelCode { get; set; } /// /// 受理类型 /// public string AcceptType { get; set; } public string AcceptTypeCode { get; set; } /// /// 是否为省工单 /// public bool IsProvince { get; set; } public string IsProvinceText => IsProvince ? "省工单" : "市工单"; /// /// 工单标题 /// public string Title { get; set; } /// /// 工单开始时间(受理/接办时间=流程开启时间) /// public DateTime? StartTime { get; set; } /// /// 受理人id /// public string AcceptorId { get; set; } /// /// 受理人名称 /// public string AcceptorName { get; set; } /// /// 是否可编辑 /// public bool CanEdit => !string.IsNullOrEmpty(SignerId) && (Status is EOrderStatus.WaitForAccept or EOrderStatus.BackToUnAccept or EOrderStatus.SpecialToUnAccept or EOrderStatus.HandOverToUnAccept); } }