OrderDto.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Hotline.Share.Enums.Order;
  7. using XF.Utility.EnumExtensions;
  8. namespace Hotline.Share.Dtos.Order
  9. {
  10. public class OrderDto : UpdateOrderDto
  11. {
  12. #region 工单属性
  13. /// <summary>
  14. /// 当前节点名称
  15. /// </summary>
  16. public string CurrentStepName { get; set; }
  17. /// <summary>
  18. /// 到达当前节点时间
  19. /// </summary>
  20. public DateTime CurrentStepTime { get; set; }
  21. /// <summary>
  22. /// 工单状态
  23. /// </summary>
  24. public EOrderStatus Status { get; set; }
  25. /// <summary>
  26. /// 开始时间
  27. /// </summary>
  28. public DateTime? StartTime { get; set; }
  29. /// <summary>
  30. /// 过期时间
  31. /// </summary>
  32. public DateTime? ExpiredTime { get; set; }
  33. /// <summary>
  34. /// 过期状态
  35. /// </summary>
  36. public EExpiredStatus ExpiredStatus { get; set; }
  37. #endregion
  38. public string CreationTime { get; set; }
  39. public string StatusText => Status.GetDescription();
  40. public string? ContactMask { get; set; }
  41. /// <summary>
  42. /// 工单编码(202201010001)
  43. /// </summary>
  44. public string No { get; set; }
  45. public string? DuplicateName { get; set; }
  46. public string AcceptTypeText => AcceptType.GetDescription();
  47. public string EmergencyLevelText => EmergencyLevel.GetDescription();
  48. /// <summary>
  49. /// 受理人姓名
  50. /// </summary>
  51. public string EmployeeName { get; set; }
  52. /// <summary>
  53. /// 受理人工号
  54. /// </summary>
  55. public string? EmployeeStaffNo { get; set; }
  56. public string WorkflowId { get; set; }
  57. /// <summary>
  58. /// 超期时间描述(需求:超期3天、0.5天后超期)
  59. /// </summary>
  60. public string ExpiredText => CalculateExpiredText();
  61. private string CalculateExpiredText()
  62. {
  63. //todo 完整处理方案:1.创建待过期表,Id,过期时间,即将过期时间等字段。2.延迟消息通知处理过期,删除子表数据,处理order过期状态字段。3.此处即可采用expiredStatus进行判断
  64. //todo 目前暂时采用过期时间计算
  65. if (!ExpiredTime.HasValue)
  66. return string.Empty;
  67. var days = (DateTime.Now - ExpiredTime.Value).TotalDays;
  68. switch (days)
  69. {
  70. case > 0:
  71. return $"超期{days:N1}天";
  72. case < 0:
  73. return $"{days:N1}天后超期";
  74. default:
  75. return "超期不到1天";
  76. }
  77. }
  78. }
  79. public class UpdateOrderDto : AddOrderDto
  80. {
  81. public string Id { get; set; }
  82. }
  83. public class AddOrderDto : PositionDto
  84. {
  85. #region 来电信息
  86. /// <summary>
  87. /// 来源渠道
  88. /// </summary>
  89. public EChannel Channel { get; set; }
  90. ///// <summary>
  91. ///// 接线员工(userId)
  92. ///// </summary>
  93. //public string EmployeeId { get; set; }
  94. /// <summary>
  95. /// 来电号码
  96. /// </summary>
  97. public string? FromPhone { get; set; }
  98. /// <summary>
  99. /// 转接号码(转接来源)
  100. /// </summary>
  101. public string? TransferPhone { get; set; }
  102. /// <summary>
  103. /// 来电/信人姓名
  104. /// </summary>
  105. public string FromName { get; set; }
  106. /// <summary>
  107. /// 来电/信人性别
  108. /// </summary>
  109. public EGender FromGender { get; set; }
  110. /// <summary>
  111. /// 来电/信人身份
  112. /// </summary>
  113. public EIdentityType IdentityType { get; set; }
  114. /// <summary>
  115. /// 证件类型
  116. /// </summary>
  117. public ELicenceType? Licence { get; set; }
  118. /// <summary>
  119. /// 证件号码
  120. /// </summary>
  121. public string? LicenceNo { get; set; }
  122. /// <summary>
  123. /// 年龄段
  124. /// </summary>
  125. public EAgeRange? AgeRange { get; set; }
  126. /// <summary>
  127. /// 联系电话
  128. /// </summary>
  129. public string? Contact { get; set; }
  130. /// <summary>
  131. /// 是否接受短信,勾选校验手机号
  132. /// </summary>
  133. public bool AcceptSms { get; set; }
  134. /// <summary>
  135. /// 是否需要联系
  136. /// </summary>
  137. public bool NeedContact { get; set; }
  138. /// <summary>
  139. /// 工作单位(当“来电/信人身份”为“企业”时必填,其他情况非必填)
  140. /// </summary>
  141. public string? Company { get; set; }
  142. #endregion
  143. #region 诉求信息
  144. /// <summary>
  145. /// 工单类型
  146. /// </summary>
  147. public EOrderType OrderType { get; set; }
  148. /// <summary>
  149. /// 受理类型
  150. /// </summary>
  151. public EAcceptType AcceptType { get; set; }
  152. /// <summary>
  153. /// 紧急程度
  154. /// </summary>
  155. public EEmergencyLevel EmergencyLevel { get; set; } = EEmergencyLevel.Normal;
  156. public string Title { get; set; }
  157. /// <summary>
  158. /// 热点
  159. /// </summary>
  160. public string HotspotId { get; set; }
  161. public string Hotspot { get; set; }
  162. public string HotspotSpliceName { get; set; }
  163. /// <summary>
  164. /// 事发时间
  165. /// </summary>
  166. public DateTime? IncidentTime { get; set; }
  167. /// <summary>
  168. /// 重复工单
  169. /// </summary>
  170. public string? DuplicateId { get; set; }
  171. /// <summary>
  172. /// 推送分类
  173. /// </summary>
  174. public EPushType PushType { get; set; }
  175. /// <summary>
  176. /// 附件
  177. /// </summary>
  178. public List<string> Additions { get; set; } = new();
  179. /// <summary>
  180. /// 诉求内容
  181. /// </summary>
  182. public string Content { get; set; }
  183. #endregion
  184. /// <summary>
  185. /// 投诉
  186. /// </summary>
  187. public OrderComplainDto OrderComplain { get; set; }
  188. /// <summary>
  189. /// 举报
  190. /// </summary>
  191. public OrderReportDto OrderReport { get; set; }
  192. }
  193. }