Order.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. using DataTransmission.Entity;
  2. using DataTransmission.Enum;
  3. using Newtonsoft.Json;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace DataTransmission.Joint
  11. {
  12. public class Order
  13. {
  14. private readonly CommonTool tool = new CommonTool();
  15. public DataTable GetOrder( string st_time, string end_time) {
  16. var conn = tool.GetConSqlServer();
  17. //获取工单数据
  18. var orderSql = $@"SELECT ROW_NUMBER() OVER (ORDER BY FSH_FlowID) AS Serial, CHPRCI.RCI_FlowID,*,REPLACE(CAST(FCT.FCT_Content AS NVARCHAR(MAX)),CHAR(13)+CHAR(10), '') 受理内容,
  19. CASE WHEN ISNULL(FSH_DisposeDate, GETDATE()) > FSH_TTime THEN '超期' WHEN ISNULL(FSH_DisposeDate, GETDATE()) > FSH_EightyTTime THEN '即将超期' ELSE '正常' END AS FSH_OverTimeState,
  20. REPLACE(REPLACE(FSH_Title, '</font>', ''), '<font color=mediumorchid>', '') AS FSH_Title_ys,
  21. REPLACE(CAST(ISNULL(FTC2.FTC_RRemark,FTRB.FTRB_RRemark) AS NVARCHAR(MAX)),CHAR(13)+CHAR(10), '') 承办意见
  22. FROM dbo.Flow03_Search FSH
  23. LEFT JOIN Flow02_From FRM ON FSH.FSH_FromID = FRM.FFM_FromID
  24. LEFT JOIN dbo.Flow05_LinkMan FLM ON FSH.FSH_FlowID = FLM.FLM_FlowID
  25. LEFT JOIN dbo.Flow01_Type FT ON FT.FTE_TypeFlag =2 AND FSH.FSH_ConTypeID = FT.FTE_TypeID
  26. LEFT JOIN dbo.SYS19_Area SA ON FSH.FSH_AreaID = SA.SA_AreaID
  27. LEFT JOIN dbo.Flow04_Expand FED ON FSH.FSH_FlowID = FED.FED_FlowID
  28. LEFT JOIN Flow06_Content FCT WITH(NOLOCK) ON FCT.FCT_FlowID = FSH.FSH_FlowID
  29. LEFT JOIN dbo.Flow18_AppraiseList FAL ON FSH.FSH_FlowID = FAL.FALT_FlowID
  30. LEFT JOIN Flow_Transfer04_Specialty FTS WITH(NOLOCK) ON FTS.FTS_FlowID = FSH.FSH_FlowID
  31. LEFT JOIN Flow_Transfer02_Content FTC2 WITH(NOLOCK) ON FTC2.FTC_RunID = FTS.FTS_RunID
  32. LEFT JOIN Flow_Transfer01_RunBackups FTRB WITH(NOLOCK) ON FTS.FTS_RunID =FTRB.FTRB_RunID
  33. LEFT JOIN CityHotline_Province.dbo.receive_case_info CHPRCI ON CHPRCI.RCI_FlowID = FSH.FSH_FlowID
  34. WHERE FSH_AddDate >= '{st_time}' AND FSH_AddDate <= '{end_time}' AND ISNULL(FAL.FALT_ListID,0) > 0 AND FAL.FALT_AppFlag ='1' ";
  35. //AND FSH.FSH_Code = '202409240002'
  36. //AND FSH.FSH_Code = '202409240002'
  37. return tool.GetDataTable(orderSql, conn);
  38. }
  39. public string GetOrderISql(DataRow row,string orderId,DataTable org,DataTable user, Entity.Config config, string creatorId = "")
  40. {
  41. var sex = row["FLM_LKSex"].ToString() == "1" ? 1 : row["FLM_LKSex"].ToString() == "2" ? 0 : 2;
  42. var identityType = row["FSH_PersonnelType"].ToString() == "企业" ? 2 : 1;
  43. var ContactMask = tool.MaskPhoneNumber(row["FSH_LinkTel"].ToString());
  44. var EmergencyLevel = row["FSH_Urgent"].ToString() == "1" ? 2 : 0;
  45. var ExpiredStatus = row["FSH_OverTimeState"].ToString() == "正常" ? 0 : row["FSH_OverTimeState"].ToString() == "即将超期" ? 1 : 2;
  46. var IsSecret = row["FLM_SFlag"].ToString() == "1" ? "t" : "f";
  47. var IsProvince = row["RCI_FlowID"].ToString() == "NULL" || string.IsNullOrEmpty(row["RCI_FlowID"].ToString()) ? "f" : "t";
  48. var ActualHandleOrgCode = row["FSH_AcceptBMID"].ToString();
  49. try
  50. {
  51. var orgRow = org.AsEnumerable().First(x => x.Field<int?>("oldBmid").ToString() == row["FSH_AcceptBMID"].ToString());
  52. ActualHandleOrgCode = string.IsNullOrEmpty(orgRow?["Id"].ToString()) ? "NULL" : orgRow?["Id"].ToString();
  53. }
  54. catch (Exception e)
  55. {
  56. tool.SaveLog(" OrderMessage :" + e.Message + ";" + row["FSH_AcceptBMID"].ToString() + " ;", 1);
  57. }
  58. #region CrEnt
  59. var order = new Entity.Order();
  60. //order.InitId();
  61. order.Id = orderId;
  62. order.CallId = row["FSH_SessionID"].ToString();
  63. order.FromPhone = row["FSH_FromTel"].ToString();
  64. order.TransferPhone = row["FSH_HotlineNum"].ToString();
  65. order.FromName = row["FSH_LinkName"].ToString();
  66. order.FromGender = sex;
  67. order.IdentityType = identityType;
  68. order.Contact = row["FSH_LinkTel"].ToString();
  69. order.ContactMask = ContactMask;
  70. order.AcceptSms = false;
  71. order.No = row["FSH_Code"].ToString().Trim();
  72. order.AcceptType = row["FSH_PurTypeName"].ToString();
  73. order.Title = row["FSH_Title_ys"].ToString();
  74. order.HotspotId = row["FTE_ProvinceCode"].ToString();
  75. order.HotspotName = row["FTE_TypeName"].ToString();
  76. order.HotspotSpliceName = row["FTE_TypeNameFull"].ToString();
  77. order.PushTypeCode = row["FSH_PushType"].ToString();
  78. order.Content = row["受理内容"].ToString();
  79. order.Status = Enum.EOrderStatus.Visited;
  80. order.StartTime = string.IsNullOrEmpty(row["FSH_AddDate"].ToString()) ? "NULL" : Convert.ToDateTime(row["FSH_AddDate"]).ToString() ;
  81. order.ExpiredTime = string.IsNullOrEmpty(row["FSH_TTime"].ToString()) ? "NULL" : Convert.ToDateTime(row["FSH_TTime"]).ToString();
  82. order.FiledTime = string.IsNullOrEmpty(row["FSH_DisposeDate"].ToString()) ? "NULL" : Convert.ToDateTime(row["FSH_DisposeDate"]).ToString();
  83. order.ExpiredStatus = ExpiredStatus;
  84. order.AreaCode = row["SA_AreaCode"].ToString();
  85. order.Street = row["FLM_LKAddress"].ToString();
  86. order.IsDeleted = false;
  87. order.CreationTime = Convert.ToDateTime(row["FSH_AddDate"]) ;
  88. order.SmsSended = false;
  89. order.ProcessType = row["FSH_AcceptBMID"].ToString() == config.CenterId ? 10 : 20;
  90. if (config.Name == "自贡市")
  91. {
  92. order.IsPublicity = false;
  93. }
  94. else {
  95. order.IsPublicity = row["FSH_IsPublic"].ToString() == "1"; //0:不公开 ;1:公开 12345在线传递过来的状态
  96. }
  97. order.IsSecret = row["FLM_SFlag"].ToString() == "1";
  98. order.ActualHandleOrgName = row["FSH_AcceptName"].ToString();
  99. order.ActualHandleOrgCode = ActualHandleOrgCode;
  100. order.ActualOpinion = row["承办意见"].ToString();
  101. order.SourceChannel = row["FSH_FromName"].ToString();
  102. order.IsProvince = !(row["RCI_FlowID"].ToString() == "NULL");
  103. //Acceptor
  104. var acceptor = user.AsEnumerable().FirstOrDefault(x => x.Field<int?>("oldUserId").ToString() == row["FTRB_APUserID"].ToString());
  105. DataRow acceptorOrg = null;
  106. if (acceptor != null) {
  107. acceptorOrg = org.AsEnumerable().FirstOrDefault(x => x.Field<int?>("oldBmid").ToString() == acceptor["OrgId"].ToString());
  108. }
  109. order.AcceptorId = row["FSH_CreateUserID"].ToString();
  110. if (acceptor != null)
  111. {
  112. order.AcceptorId = acceptor["Id"].ToString();
  113. order.AcceptorName = acceptor["Name"].ToString();
  114. }
  115. order.AcceptorOrgCode = row["FSH_AcceptBMID"].ToString();
  116. if (acceptorOrg != null)
  117. {
  118. order.AcceptorOrgCode = acceptorOrg["Id"].ToString();
  119. order.AcceptorOrgName = acceptorOrg["Name"].ToString();
  120. }
  121. order.AcceptorName = row["FSH_UserName"].ToString();
  122. order.SourceChannelCode = row["FFM_ProFromCode"].ToString();
  123. order.ActualHandleOrgAreaCode = row["SA_AreaCode"].ToString();
  124. order.ActualHandleOrgAreaName = row["SA_AreaName"].ToString();
  125. order.CallAddress = row["FLM_LKAddress"].ToString();
  126. //order.TimeLimitCount = int.Parse(row["FTRB_TLimits"].ToString());
  127. order.TimeLimitCount = row["FTRB_TLimits"].ToString();
  128. order.TimeLimit = order.TimeLimitCount + "个工作日";
  129. order.AcceptTypeCode = GetAcceptTypeCode(row["FSH_PurTypeName"].ToString());
  130. order.NearlyExpiredTime = string.IsNullOrEmpty(row["FSH_EightyTTime"].ToString()) ? "NULL" : row["FSH_EightyTTime"].ToString() ;
  131. order.Password = row["FED_ReultPWD"].ToString();
  132. order.ProvinceNo = row["FSH_ProCode"].ToString();
  133. order.IsUrgent = row["FSH_Urgent"].ToString() == "1";
  134. order.OldOrderId = row["FSH_FlowID"].ToString();
  135. order.CreatorId = creatorId;
  136. #endregion
  137. //""WorkflowId"", ""ExpiredTimeConfigId"", ""Longitude"", ""Latitude"", ""ActualHandleStepCode"",""ActualHandleStepName"", ""ActualHandleStepCreateTime"", ""ActualHandleTime"", ""ActualHandlerId"", ""ActualHandlerName"",
  138. //""ExpiredTimeProvince"", ""AcceptorStaffNo"", ""FirstVisitResult"", ""FirstVisitResultCode"", ""CenterToOrgTime"",""ActualHandleStepAcceptTime"", ""HandleDuration"", ""HandleDurationWorkday"", ""AllDuration"",
  139. //""AllDurationWorkday"", ""FileDuration"", ""FileDurationWorkday""
  140. //tool.SaveLog("order :" + JsonConvert.SerializeObject(order) + " ;" , 1);
  141. var pgOrderSql = $@"INSERT INTO ""public"".""order"" (""Id"", ""CallId"", ""FromPhone"", ""TransferPhone"", ""FromName"", ""FromGender"", ""IdentityType"",
  142. ""Contact"", ""ContactMask"", ""AcceptSms"",
  143. ""No"", ""AcceptType"", ""Title"", ""HotspotId"", ""HotspotName"", ""HotspotSpliceName"",
  144. ""PushTypeCode"", ""Content"", ""Status"", ""StartTime"", ""ExpiredTime"", ""FiledTime"",
  145. ""ExpiredStatus"", ""AreaCode"", ""Street"",
  146. ""IsDeleted"", ""CreationTime"", ""SmsSended"",
  147. ""ProcessType"", ""IsPublicity"", ""IsSecret"", ""ActualHandleOrgName"", ""ActualHandleOrgCode"", ""ActualOpinion"", ""SourceChannel"", ""IsProvince"",
  148. ""AcceptorId"",""AcceptorName"", ""SourceChannelCode"", ""ActualHandleOrgAreaCode"",
  149. ""ActualHandleOrgAreaName"",""CallAddress"", ""IsCancel"", ""TimeLimit"", ""TimeLimitCount"", ""TimeLimitUnit"",
  150. ""AcceptorOrgCode"", ""AcceptorOrgName"",
  151. ""AcceptTypeCode"", ""Additions"", ""CreatorOrgName"",
  152. ""CreatorName"",""FlowedOrgIds"", ""FlowedUserIds"", ""CreatorOrgLevel"", ""ProvinceNo"", ""ExternalId"", ""Password"",
  153. ""SignerId"", ""SignerName"",
  154. ""City"", ""Source"",""IsResolved"",""IsFormalistWorkOrder"",""IsSensitiveWorkOrders"",""IsUrgent"",""IsProvinceZmhd"",
  155. ""EventCategoryExternal"",""NearlyExpiredTime"", ""CsActualHandleOrgIds"", ""CsActualHandleUserIds"", ""HandlerUsers"", ""HandlerOrgs"",
  156. ""Is24HoursComplete"",""IsThreePartyConference"",""IsEvasive"",""IsInactively"",""IsStepUrgent"",""OldOrderId""
  157. ) VALUES (
  158. '{order.Id}', '{order.CallId}', '{order.FromPhone}', '{order.TransferPhone}', '{order.FromName}', {order.FromGender}, {order.IdentityType},
  159. '{order.Contact}', '{order.ContactMask}', '{order.AcceptSms.ToString()}',
  160. '{order.No}', '{order.AcceptType}', '{order.Title}', '{order.HotspotId}', '{order.HotspotName}', '{order.HotspotSpliceName}',
  161. '{order.PushTypeCode}', '{order.Content}', 500, '{order.StartTime}', '{order.ExpiredTime}', '{order.FiledTime}',
  162. {order.ExpiredStatus}, '{order.AreaCode}', '{order.Street}',
  163. '{order.IsDeleted.ToString()}', '{order.CreationTime}', '{order.SmsSended.ToString()}',
  164. {order.ProcessType}, '{order.IsPublicity.ToString()}', '{order.IsSecret.ToString()}', '{order.ActualHandleOrgName}', {order.ActualHandleOrgCode}, '{order.ActualOpinion}', '{order.SourceChannel}', '{order.IsProvince.ToString()}',
  165. '{order.AcceptorId}', '{order.AcceptorName}', '{order.SourceChannelCode}', '{order.ActualHandleOrgAreaCode}',
  166. '{order.ActualHandleOrgAreaName}', '{order.CallAddress}','f', '{order.TimeLimit}', {order.TimeLimitCount}, 2,
  167. '{order.AcceptorOrgCode}', '{order.AcceptorOrgName}',
  168. '{order.AcceptTypeCode}', '[]', '{order.AcceptorOrgName}',
  169. '{order.AcceptorName}', '[""001""]', '[]', 1, '{order.ProvinceNo}', NULL, '{order.Password.Trim()}',
  170. '{order.AcceptorId}', '{order.AcceptorName}',
  171. '{config.Name}','0','t','f','f','{order.IsUrgent.ToString()}','f',
  172. '19', '{order.NearlyExpiredTime.ToString()}', '[]', '[]', '[]', '[]',
  173. 'f','f','f','f','f','{order.OldOrderId}');";
  174. pgOrderSql = pgOrderSql.Replace("'NULL'", "NULL");
  175. return pgOrderSql;
  176. }
  177. private string GetAcceptTypeCode(string name)
  178. {
  179. var acceptTypeCode = string.Empty;
  180. switch (name)
  181. {
  182. case "其他":
  183. acceptTypeCode = "40";
  184. break;
  185. case "表扬":
  186. acceptTypeCode = "25";
  187. break;
  188. case "举报":
  189. acceptTypeCode = "30";
  190. break;
  191. case "投诉":
  192. acceptTypeCode = "35";
  193. break;
  194. case "咨询":
  195. acceptTypeCode = "10";
  196. break;
  197. case "建议":
  198. acceptTypeCode = "15";
  199. break;
  200. case "求助":
  201. acceptTypeCode = "20";
  202. break;
  203. case "意见":
  204. acceptTypeCode = "1";
  205. break;
  206. case "惠民帮助":
  207. acceptTypeCode = "2";
  208. break;
  209. case "大气污染举报":
  210. acceptTypeCode = "3";
  211. break;
  212. default:
  213. acceptTypeCode = "0";
  214. break;
  215. }
  216. return acceptTypeCode;
  217. }
  218. }
  219. }