Order.cs 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. using Hotline.FlowEngine.Workflows;
  2. using Hotline.Share.Enums.Order;
  3. using Hotline.Users;
  4. using SqlSugar;
  5. using XF.Domain.Extensions;
  6. using XF.Domain.Repository;
  7. namespace Hotline.Orders
  8. {
  9. /// <summary>
  10. /// 工单
  11. /// </summary>
  12. public partial class Order : PositionWorkflowEntity
  13. {
  14. #region 来电信息
  15. /// <summary>
  16. /// 来源渠道
  17. /// </summary>
  18. public EChannel Channel { get; set; }
  19. /// <summary>
  20. /// 接线员工(userId)
  21. /// </summary>
  22. public string EmployeeId { get; set; }
  23. /// <summary>
  24. /// 来电号码
  25. /// </summary>
  26. public string? FromPhone { get; set; }
  27. /// <summary>
  28. /// 转接号码(转接来源)
  29. /// </summary>
  30. public string? TransferPhone { get; set; }
  31. /// <summary>
  32. /// 来电/信人姓名
  33. /// </summary>
  34. public string FromName { get; set; }
  35. /// <summary>
  36. /// 来电/信人性别
  37. /// </summary>
  38. public EGender FromGender { get; set; }
  39. /// <summary>
  40. /// 来电/信人身份
  41. /// </summary>
  42. public EIdentityType IdentityType { get; set; }
  43. /// <summary>
  44. /// 证件类型
  45. /// </summary>
  46. public ELicenceType? LicenceType { get; set; }
  47. /// <summary>
  48. /// 证件号码
  49. /// </summary>
  50. public string? LicenceNo { get; set; }
  51. /// <summary>
  52. /// 年龄段
  53. /// </summary>
  54. [SugarColumn(IsNullable = true)]
  55. public string? AgeRangeCode { get; set; }
  56. [SugarColumn(IsNullable = true)]
  57. public string? AgeRange { get; set; }
  58. /// <summary>
  59. /// 联系电话
  60. /// </summary>
  61. [SugarColumn(ColumnDescription = "联系电话", IsNullable = true)]
  62. public string? Contact { get; set; }
  63. [SugarColumn(ColumnDescription = "联系电话脱敏", IsNullable = true)]
  64. public string? ContactMask { get; set; }
  65. /// <summary>
  66. /// 是否接受短信,勾选校验手机号
  67. /// </summary>
  68. public bool AcceptSms { get; set; }
  69. /// <summary>
  70. /// 是否需要联系
  71. /// </summary>
  72. public bool NeedContact { get; set; }
  73. /// <summary>
  74. /// 工作单位(当“来电/信人身份”为“企业”时必填,其他情况非必填)
  75. /// </summary>
  76. [SugarColumn(ColumnDescription = "工作单位", IsNullable = true)]
  77. public string? Company { get; set; }
  78. #endregion
  79. #region 诉求信息
  80. /// <summary>
  81. /// 工单编码(202201010001)
  82. /// </summary>
  83. public string No { get; set; }
  84. /// <summary>
  85. /// 工单类型
  86. /// </summary>
  87. public EOrderType OrderType { get; set; }
  88. /// <summary>
  89. /// 受理类型
  90. /// </summary>
  91. public EAcceptType AcceptType { get; set; }
  92. /// <summary>
  93. /// 紧急程度
  94. /// </summary>
  95. public EEmergencyLevel EmergencyLevel { get; set; } = EEmergencyLevel.Normal;
  96. public string Title { get; set; }
  97. /// <summary>
  98. /// 热点
  99. /// </summary>
  100. public string HotspotId { get; set; }
  101. public string Hotspot { get; set; }
  102. public string HotspotSpliceName { get; set; }
  103. /// <summary>
  104. /// 事发时间
  105. /// </summary>
  106. public DateTime? IncidentTime { get; set; }
  107. /// <summary>
  108. /// 重复工单
  109. /// </summary>
  110. [SugarColumn(ColumnDescription = "重复工单Id", IsNullable = true)]
  111. public string? DuplicateId { get; set; }
  112. [SugarColumn(ColumnDescription = "重复工单", IsNullable = true)]
  113. public string? DuplicateName { get; set; }
  114. /// <summary>
  115. /// 推送分类
  116. /// </summary>
  117. public EPushType PushType { get; set; }
  118. /// <summary>
  119. /// 附件
  120. /// </summary>
  121. [SugarColumn(ColumnDataType = "varchar(1000)", IsJson = true)]
  122. public List<string> Additions { get; set; } = new();
  123. /// <summary>
  124. /// 诉求内容
  125. /// </summary>
  126. [SugarColumn(ColumnDataType = "varchar(2000)")]
  127. public string Content { get; set; }
  128. #endregion
  129. #region 工单属性
  130. /// <summary>
  131. /// 当前节点名称
  132. /// </summary>
  133. [SugarColumn(ColumnDescription = "当前节点名称", IsNullable = true)]
  134. public string? CurrentStepName { get; set; }
  135. /// <summary>
  136. /// 到达当前节点时间
  137. /// </summary>
  138. public DateTime? CurrentStepTime { get; set; }
  139. /// <summary>
  140. /// 工单状态
  141. /// </summary>
  142. public EOrderStatus Status { get; set; }
  143. /// <summary>
  144. /// 开始时间
  145. /// </summary>
  146. public DateTime? StartTime { get; set; }
  147. /// <summary>
  148. /// 过期时间
  149. /// </summary>
  150. public DateTime? ExpiredTime { get; set; }
  151. /// <summary>
  152. /// 过期状态
  153. /// </summary>
  154. public EExpiredStatus ExpiredStatus { get; set; }
  155. #endregion
  156. /// <summary>
  157. /// 接线员(服务人)
  158. /// </summary>
  159. [Navigate(NavigateType.OneToOne, nameof(EmployeeId))]
  160. public User Employee { get; set; }
  161. [Navigate(NavigateType.OneToMany, nameof(Workflow.ExternalId))]
  162. public List<Workflow> Workflows { get; set; }
  163. }
  164. /// <summary>
  165. /// 渠道为电话时存在字段
  166. /// </summary>
  167. public partial class Order
  168. {
  169. /// <summary>
  170. /// 工单扩展信息(12315-投诉)
  171. /// </summary>
  172. [Navigate(NavigateType.OneToOne, nameof(Id))]
  173. public OrderComplain OrderComplain { get; set; }
  174. /// <summary>
  175. /// 工单扩展信息(12315-举报)
  176. /// </summary>
  177. [Navigate(NavigateType.OneToOne, nameof(Id))]
  178. public OrderReport OrderReport { get; set; }
  179. #region Method
  180. public void Init(string employeeId)
  181. {
  182. EmployeeId = employeeId;
  183. if (!string.IsNullOrEmpty(Contact))
  184. ContactMask = Contact.MaskPhoneNumber();
  185. Status = EOrderStatus.Temporary;
  186. ExpiredStatus = EExpiredStatus.Normal;
  187. StartTime = DateTime.Now;
  188. }
  189. #endregion
  190. }
  191. }