소스 검색

延期和流程 延期未完成 延期对应的流程也未处理

田爽 4 달 전
부모
커밋
5cff3fbe57
3개의 변경된 파일142개의 추가작업 그리고 46개의 파일을 삭제
  1. 15 4
      Execute.cs
  2. 42 25
      Joint/Delay.cs
  3. 85 17
      Joint/Workflow.cs

+ 15 - 4
Execute.cs

@@ -13,6 +13,7 @@ namespace DataTransmission
     {
         private readonly CommonTool tool = new CommonTool();
         private readonly Order order = new Order();
+		private readonly Workflow  workflow = new Workflow();
 		private readonly Public _public = new Public();
 		private readonly Visit visit = new Visit();
         private readonly Delay delay = new Delay();
@@ -39,10 +40,19 @@ namespace DataTransmission
                     var orderId = SequentialGuidGenerator.Instance.Create().ToString("D");
                     var VisitId = SequentialGuidGenerator.Instance.Create().ToString("D");
 
-                    //工单
-                    var pgOrderSql = order.GetOrderISql(row, orderId, org, user);
-                    //发布
-                    var publicTable = _public.GetOldPublic(row["FSH_FlowID"].ToString());
+                    var module = tool.GetDataTable($@" SELECT * from ""workflow_module"" ; ", pgConn);
+					var definition = tool.GetDataTable($@"SELECT * FROM workflow_definition WHERE ""Status"" =1 ; ", pgConn);
+
+
+					//工单
+					var pgOrderSql = order.GetOrderISql(row, orderId, org, user);
+                    //工单流程
+                    var orderModule = module.AsEnumerable().FirstOrDefault(x => x.Field<string>("Code").ToString() == "OrderHandle");
+                    //var orderDefinition = definition.AsEnumerable().FirstOrDefault(x => x.Field<string>("Id").ToString() == orderModule["DefinitionId"].ToString());
+					var pgOrderWorkflow = workflow.GetWorkflow(row["FSH_FlowID"].ToString(), "CityHotline");
+                    var pgOrderWorkflowSql = workflow.GetWorkflowSql(pgOrderWorkflow, row, orderId, org, user, orderModule);
+					//发布
+					var publicTable = _public.GetOldPublic(row["FSH_FlowID"].ToString());
                     var publicSql = _public.GetOldPublicSql(publicTable, row, orderId, org, user);
 					//回访
 					var appraiseTable = visit.GetVisit(row["FSH_FlowID"].ToString());
@@ -51,6 +61,7 @@ namespace DataTransmission
                     var delayTable = delay.GetDelay(row["FSH_FlowID"].ToString());
                     var delaySql = delay.GetDelaySql(delayTable, row, orderId, org, user);
                     var pgSql = pgOrderSql;
+					pgSql = pgOrderWorkflowSql.Length > 0 ? pgSql + pgOrderWorkflowSql : pgSql;
 					pgSql = publicSql.Length > 0 ? pgSql + publicSql : pgSql;
 					pgSql = visitSql.Length > 0 ? pgSql + visitSql : pgSql;
                     pgSql = delaySql.Length > 0 ? pgSql + delaySql : pgOrderSql;

+ 42 - 25
Joint/Delay.cs

@@ -1,6 +1,7 @@
 using Abp;
 using System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Data;
 using System.Linq;
 using System.Text;
@@ -24,34 +25,50 @@ namespace DataTransmission.Joint
 			var pgDelaySql = string.Empty;
 			foreach (DataRow delay in data.Rows)
 			{
-				var delayId = SequentialGuidGenerator.Instance.Create().ToString("D");
-				var EmployeeId = delay["FPE_UserID"].ToString();
-				var VisitOrgCode = delay["FPE_BMID"].ToString();
-				try
-				{
-					DataRow userRow = user.AsEnumerable().First(x => x.Field<int>("OldUserId").ToString() == delay["FPE_UserID"].ToString());
-					EmployeeId = string.IsNullOrEmpty(userRow?["Id"].ToString()) ? "NULL" : userRow?["Id"].ToString();
-					DataRow ogrRow = org.AsEnumerable().First(x => x.Field<int>("oldBmid").ToString() == delay["FPE_BMID"].ToString());
-					VisitOrgCode = string.IsNullOrEmpty(ogrRow?["Id"].ToString()) ? delay["FPE_BMID"].ToString() : ogrRow?["Id"].ToString();
-				}
-				catch (Exception e)
-				{
-					tool.SaveLog(" DelayMessage :" + e.Message + ";FPE_BMID:" + delay["FPE_BMID"].ToString() + "FPE_UserID:"+ delay["FPE_UserID"].ToString() + "  ;", 1);
+				var applyOrg = org.AsEnumerable().FirstOrDefault(x => x.Field<int?>("oldBmid").ToString() == delay["FPE_BMID"].ToString());
+				var applyUser = user.AsEnumerable().FirstOrDefault(x => x.Field<int?>("oldUserId").ToString() == delay["FPE_UserID"].ToString());
+				Entity.OrderDelay model = new Entity.OrderDelay();
+				model.InitId();
+				model.No = row["FSH_Code"].ToString().Trim();
+				model.OrderId = orderId;
+				model.ApplyDelayTime = DateTime.Parse(delay["FPE_FPDate"].ToString());
+				model.ApplyOrgCode = delay["FPE_BMID"].ToString().ToString();
+				model.CreatorOrgId = model.ApplyOrgCode;
+				if (applyOrg != null) {
+					model.ApplyOrgCode = applyOrg["Id"].ToString();
+					model.ApplyOrgName = applyOrg["Name"].ToString();
+					model.CreatorOrgId = applyOrg["Id"].ToString();
+					model.AreaId = applyOrg["AreaId"].ToString();
+					model.CreatorOrgName = applyOrg["Name"].ToString();
+					model.CreatorOrgLevel = int.Parse(applyOrg["Level"].ToString());
 				}
-				
-				if (delayNum == 0)
+				model.EmployeeId = delay["FPE_UserID"].ToString();
+				model.CreatorId = model.EmployeeId;
+				if (applyUser != null)
 				{
-					pgDelaySql = $@"INSERT INTO ""public"".""order_delay"" (""Id"", ""No"", ""OrderId"", ""ApplyDelayTime"", ""ApplyOrgCode"", ""ApplyOrgName"", ""EmployeeId"", ""DelayNum"", ""DelayUnit"", ""DelayReason"",
-								""BeforeDelay"", ""AfterDelay"", ""DelayState"", ""IsProDelay"", ""CreationTime"", ""CreatorOrgId"", ""CreatorId"", ""AreaId"", ""CreatorOrgName"", ""CreatorName"", ""CreatorOrgLevel"", 
-								""WorkflowId"", ""FileJson"", ""EmployeeName"", ""ExpiredTimeConfigId"", ""FlowedOrgIds"", ""FlowedUserIds"", ""LastModificationTime"", ""IsDeleted"", ""DeletionTime"") VALUES 
-								('{delayId}', '{row["FSH_Code"].ToString().Trim()}', '{orderId}', '{delay["FPE_FPDate"]}', '{VisitOrgCode}', '{delay["FPE_BMName"]}', '{EmployeeId}', '{delay["FPE_SLimits"]}', 2, '{delay["FPE_Reson"]}', NULL, '{delay["FPE_STTime"]}',
-							1, 'f', '{delay["FPE_FPDate"]}', '{VisitOrgCode}', '08dc10ec-2dd8-4383-8426-b194c4f5e917', '', '{delay["FPE_BMName"]}', '张晓梅1', 1, '', NULL, '{delay["FPE_UserName"]}', NULL, NULL,NULL, NULL, 'f', NULL)";
-				}
-				else
-				{
-					pgDelaySql += $@",('{delayId}', '{row["FSH_Code"].ToString().Trim()}', '{orderId}', '{delay["FPE_FPDate"]}', '{VisitOrgCode}', '{delay["FPE_BMName"]}', '{EmployeeId}', '{delay["FPE_SLimits"]}', 2, '{delay["FPE_Reson"]}', NULL, '{delay["FPE_STTime"]}',
-							1, 'f', '{delay["FPE_FPDate"]}', '{VisitOrgCode}', '08dc10ec-2dd8-4383-8426-b194c4f5e917', '', '{delay["FPE_BMName"]}', '张晓梅1', 1, '', NULL, '{delay["FPE_UserName"]}', NULL, NULL, NULL, NULL, 'f', NULL)";
+					model.EmployeeId = applyUser["Id"].ToString();
+					model.CreatorId = applyUser["Id"].ToString();
+					model.CreatorName = applyUser["Name"].ToString();
 				}
+				model.DelayNum = int.Parse(delay["FPE_SLimits"].ToString());
+				model.DelayReason = delay["FPE_Reson"].ToString();
+				model.AfterDelay = DateTime.Parse(delay["FPE_STTime"].ToString());
+				model.DelayState = (Enum.EDelayState)int.Parse(delay["FPE_AuditFlag"].ToString());
+				model.CreationTime = DateTime.Parse(delay["FPE_FPDate"].ToString());
+
+				//if (delayNum == 0)
+				//{
+				//	pgDelaySql = $@"INSERT INTO ""public"".""order_delay"" (""Id"", ""No"", ""OrderId"", ""ApplyDelayTime"", ""ApplyOrgCode"", ""ApplyOrgName"", ""EmployeeId"", ""DelayNum"", ""DelayUnit"", ""DelayReason"",
+				//				""BeforeDelay"", ""AfterDelay"", ""DelayState"", ""IsProDelay"", ""CreationTime"", ""CreatorOrgId"", ""CreatorId"", ""AreaId"", ""CreatorOrgName"", ""CreatorName"", ""CreatorOrgLevel"", 
+				//				""WorkflowId"", ""FileJson"", ""EmployeeName"", ""ExpiredTimeConfigId"", ""FlowedOrgIds"", ""FlowedUserIds"", ""LastModificationTime"", ""IsDeleted"", ""DeletionTime"") VALUES 
+				//				('{delayId}', '{row["FSH_Code"].ToString().Trim()}', '{orderId}', '{delay["FPE_FPDate"]}', '{VisitOrgCode}', '{delay["FPE_BMName"]}', '{EmployeeId}', '{delay["FPE_SLimits"]}', 2, '{delay["FPE_Reson"]}',
+				//				NULL, '{delay["FPE_STTime"]}',{(int)model.DelayState}, 'f', '{delay["FPE_FPDate"]}', '{VisitOrgCode}', '08dc10ec-2dd8-4383-8426-b194c4f5e917', '', '{delay["FPE_BMName"]}', '张晓梅1', 1, '', NULL, '{delay["FPE_UserName"]}', NULL, NULL,NULL, NULL, 'f', NULL)";
+				//}
+				//else
+				//{
+				//	pgDelaySql += $@",('{delayId}', '{row["FSH_Code"].ToString().Trim()}', '{orderId}', '{delay["FPE_FPDate"]}', '{VisitOrgCode}', '{delay["FPE_BMName"]}', '{EmployeeId}', '{delay["FPE_SLimits"]}', 2, '{delay["FPE_Reson"]}', NULL, '{delay["FPE_STTime"]}',
+				//			1, 'f', '{delay["FPE_FPDate"]}', '{VisitOrgCode}', '08dc10ec-2dd8-4383-8426-b194c4f5e917', '', '{delay["FPE_BMName"]}', '张晓梅1', 1, '', NULL, '{delay["FPE_UserName"]}', NULL, NULL, NULL, NULL, 'f', NULL)";
+				//}
 				delayNum++;
 			}
 			return pgDelaySql += ";";

+ 85 - 17
Joint/Workflow.cs

@@ -12,19 +12,68 @@ namespace DataTransmission.Joint
 	{
 		private readonly CommonTool tool = new CommonTool();
 
-		public DataTable GetWorkflow(string OldOrderId) {
+		public DataTable GetWorkflow(string OldOrderId,string StoreCode) {
 			var conn = tool.GetConSqlServer();
-			var orderSql = $"SELECT  * FROM Flow_Transfer01_RunBackups WHERE FTRB_FlowID ='{OldOrderId}' ORDER BY  FTRB_MoveDate ";
+			var orderSql = $@"SELECT  * FROM Flow_Transfer01_RunBackups  FTR
+							LEFT JOIN Flow_Set01_Store  FSS ON FTR.FTRB_StoreID = FSS.FSL_StoreID  
+							LEFT JOIN Flow03_Search FS ON FTR.FTRB_FlowID = FS.FSH_FlowID
+							WHERE FTRB_FlowID ='{OldOrderId}' AND FSS.FSL_Code ='{StoreCode}' ORDER BY  FTRB_MoveDate  ";
 			return tool.GetDataTable(orderSql, conn);
 		}
 
-		public string GetWorkflowSql(DataTable data, DataTable org, DataTable user)
+		public string GetWorkflowSql(DataTable data, DataRow row, string orderId, DataTable org, DataTable user, DataRow module)
 		{
 			var pgSql = string.Empty;
 
 			var workflow = new Entity.Workflow();
-
 			workflow.InitId();
+			workflow.DefinitionId = module["DefinitionId"].ToString();
+			workflow.ModuleId = module["Id"].ToString();
+			workflow.ModuleCode = module["Code"].ToString();
+			workflow.ModuleName = module["Name"].ToString();
+			workflow.Title = row["FSH_Title_ys"].ToString();
+			var stStep = data.AsEnumerable().OrderBy(x => x.Field<int?>("FTRB_RunID")).FirstOrDefault();
+			var endStep = data.AsEnumerable().OrderByDescending(x=>x.Field<int?>("FTRB_RunID")).FirstOrDefault(x=> x.Field<string>("FTRB_ItemName").ToString() == "结束");
+			var actualStep = data.AsEnumerable().FirstOrDefault(x => x.Field<int?>("FSH_AcceptBMID").ToString() == x.Field<int?>("FTRB_APBMID").ToString());
+			if (row["FSH_AcceptBMID"].ToString() == Form1.CenterId)
+			{
+				actualStep = data.AsEnumerable().FirstOrDefault(x => x.Field<DateTime>("FSH_AcceptDate").ToString() == x.Field<DateTime>("FTRB_APDate").ToString());
+			}
+
+			//Creator
+			var creator = user.AsEnumerable().FirstOrDefault(x => x.Field<int?>("oldUserId").ToString() == stStep["FTRB_MoveUserID"].ToString());
+			var creatorOrg = org.AsEnumerable().FirstOrDefault(x => x.Field<int?>("oldBmid").ToString() == creator["OrgId"].ToString());
+
+			workflow.EndTime = DateTime.Parse(endStep["FTRB_DisposeDate"].ToString());
+			workflow.ActualHandleStepCode = "";
+			workflow.ActualHandleStepName = "";
+			workflow.ActualHandleStepId = actualStep["FSH_RunID"].ToString();
+			workflow.ActualOpinion = actualStep["FTRB_RRemark"].ToString();
+			workflow.ExternalId = row["FSH_FlowID"].ToString();
+			workflow.CreationTime = DateTime.Parse(stStep["FSH_AddDate"].ToString());
+			if (creator != null)
+			{
+				workflow.CreatorId = creator["Id"].ToString();
+				workflow.CreatorName = creator["Name"].ToString();
+			}
+			if (creatorOrg != null)
+			{
+				workflow.CreatorOrgId = creatorOrg["Id"].ToString();
+				workflow.CreatorOrgName = creatorOrg["Name"].ToString();
+				workflow.CreatorOrgLevel = int.Parse(creatorOrg["Level"].ToString());
+				workflow.AreaId = creatorOrg["AreaId"].ToString();
+				//workflow.AssignerOrgIsCenter = bool.Parse(creatorOrg["IsCenter"].ToString());
+			}
+			if (workflow.ModuleCode == "OrderHandle")
+			{
+				workflow.FlowType =  EFlowType.Handle;
+				workflow.ReviewResult =  EReviewResult.Unknown;
+			}
+			else {
+				workflow.FlowType =  EFlowType.Handle;
+				workflow.ReviewResult =  EReviewResult.Approval;
+			}
+
 			var order = 1;
 			foreach (DataRow item in data.Rows) {
 				
@@ -35,20 +84,28 @@ namespace DataTransmission.Joint
 				order++;
 			}
 
-			var sql = $@"INSERT INTO ""public"".""workflow"" (""Id"", ""DefinitionId"", ""ModuleId"", ""ModuleName"", ""ModuleCode"", ""Title"", ""EndTime"", ""Status"", ""ActualHandleStepCode"", 
-				""ActualHandleStepName"", ""ActualHandleStepId"", ""ActualHandleStepCreateTime"", ""ActualHandleStepAcceptTime"", ""ActualHandleTime"", ""ActualHandlerId"", ""ActualHandlerName"", ""ActualHandleOrgName"",
-				""ActualHandleOrgCode"", ""ActualHandleOrgAreaCode"", ""ActualHandleOrgAreaName"", ""ActualOpinion"", ""CounterSignType"", ""TopCountersignStepId"", ""IsInCountersign"", ""AllDuration"", ""ExternalId"", 
-				""HandlerUsers"", ""HandlerOrgs"", ""FlowedOrgIds"", ""FlowedUserIds"", ""OrgLevelOneCode"", ""OrgLevelOneName"", ""AcceptorId"", ""AcceptorName"", ""AcceptorStaffNo"", ""AcceptorOrgId"", ""AcceptorOrgName"",
-				""AcceptorOrgAreaCode"", ""AcceptorOrgAreaName"", ""CreationTime"", ""CreatorId"", ""CreatorName"", ""CreatorOrgId"", ""CreatorOrgName"", ""CreatorOrgLevel"", ""AreaId"", ""FlowType"", ""ReviewResult"", 
-				""CsActualHandleOrgIds"", ""CsActualHandleUserIds"", ""CurrentStepId"", ""CurrentStepCode"", ""CurrentStepName"", ""CurrentStepCreateTime"", ""CurrentStepAcceptTime"", ""CurrentHandleTime"", ""CurrentHandlerId"", 
-				""CurrentHandlerName"", ""CurrentHandleOrgName"", ""CurrentHandleOrgId"", ""CurrentHandleOrgLevel"", ""CurrentHandleOrgAreaCode"", ""CurrentHandleOrgAreaName"", ""ActualHandleOrgLevel"")
-				VALUES ('08dc3f2e-dfa2-4595-8925-c44b46a12f53', '08dc3db4-6ae4-475a-82a7-07243b2810a9', '08db8db3-eea4-4737-88dd-6c7b990c7705', '工单办理', 'OrderHandle', '0308业务汇聚测试工单1', NULL, 0, 'e64f6d91-fd6b-4301-90d1-7c0919945a3b', '一级部门', '08dc3f2e-f972-4f1a-826b-1749dc4796d6', '2024-03-08 13:16:56.5873', '2024-03-08 13:19:16.447054', '2024-03-08 13:19:40.065188', '08dbe4d7-3b8b-439f-87bc-5be05210a26e', '一级部门测试1', '测试一级部门', '001092', '511500', '四川省宜宾市', '办理中...', NULL, NULL, 'f', '0', '08dc3f2e-df85-418a-8a40-41f496056f58', '[]', '[{{""GroupId"":""08aa711f-4377-4e22-86a6-25dd50a07703"",""Key"":""001092001"",""Value"":""测试二级部门1""}}]', '[""001"",""001092"",""001092001""]', '[""08dc0121-5960-4267-817c-b6dc6c068fa4"",""08dc05b4-1aa6-4b50-84f2-472609d44314""]', '001092', '测试一级部门', '08dc0121-5960-4267-817c-b6dc6c068fa4', '坐席5', '', '001', '市民热线服务系统', NULL, NULL, '2024-03-08 13:16:13.277208', '08dc0121-5960-4267-817c-b6dc6c068fa4', '坐席5', '001', '市民热线服务系统', 1, '001', 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);";
+			var sql = $@"INSERT INTO ""public"".""workflow"" (""Id"", ""DefinitionId"", ""ModuleId"", ""ModuleName"", ""ModuleCode"", ""Title"", ""Status"", 
+				""ActualOpinion"", ""IsInCountersign"", ""AllDuration"", ""ExternalId"", ""HandlerUsers"", ""HandlerOrgs"", ""FlowedOrgIds"", ""FlowedUserIds"", ""CreationTime"",
+				""CreatorId"", ""CreatorName"", ""CreatorOrgId"", ""CreatorOrgName"", ""CreatorOrgLevel"", ""AreaId"", ""FlowType"", ""ReviewResult"")
+				VALUES ('{workflow.Id}', '{workflow.DefinitionId}', '{workflow.ModuleId}', '{workflow.ModuleName}', '{workflow.ModuleCode}', '{workflow.Title}', 20,
+			    '{workflow.ActualOpinion}', 'f', '0', '{workflow.ExternalId}', '[]', '[]', '[]', '[]',   '{workflow.CreationTime.ToString()}',
+				'{workflow.CreatorId}', '{workflow.CreatorName}', '{workflow.CreatorOrgId}', '{workflow.CreatorOrgName}', {workflow.CreatorOrgLevel}, '{workflow.AreaId}', {(int)workflow.FlowType}, {(int)workflow.ReviewResult});";
 
 			
 			return pgSql;
 		}
 
-		public string GetWorkflowStepSql(DataRow item, DataTable org, DataTable user,bool start,bool end, ref Entity.Workflow workflow) {
+		/// <summary>
+		/// 生成流程
+		/// </summary>
+		/// <param name="item"></param>
+		/// <param name="org"></param>
+		/// <param name="user"></param>
+		/// <param name="start"></param>
+		/// <param name="end"></param>
+		/// <param name="workflow"></param>
+		/// <returns></returns>
+		private string GetWorkflowStepSql(DataRow item, DataTable org, DataTable user,bool start,bool end, ref Entity.Workflow workflow) {
 
 			//Acceptor
 			var acceptor = user.AsEnumerable().FirstOrDefault(x => x.Field<int?>("oldUserId").ToString() == item["FTRB_APUserID"].ToString());
@@ -106,8 +163,8 @@ namespace DataTransmission.Joint
 			step.CreatorId = item["FTRB_MoveUserID"].ToString();
 			if (creator != null )
 			{
-				step.CreatorId = acceptor["Id"].ToString();
-				step.CreatorName = acceptor["Name"].ToString();
+				step.CreatorId = creator["Id"].ToString();
+				step.CreatorName = creator["Name"].ToString();
 			}
 			if (creatorOrg != null)
 			{
@@ -118,7 +175,7 @@ namespace DataTransmission.Joint
 				step.AssignerOrgIsCenter = bool.Parse(creatorOrg["IsCenter"].ToString());
 			}
 
-			step.ExternalId = item["FTRB_FlowID"].ToString();
+			step.ExternalId = workflow.ExternalId;
 
 			var stepSql = $@"INSERT INTO ""public"".""workflow_step"" (
 			""Id"", ""NextSteps"", ""PrevStepId"", ""PrevStepCode"", ""IsMain"", ""Status"", ""IsOrigin"", ""CountersignId"",""CountersignPosition"", 
@@ -140,7 +197,18 @@ namespace DataTransmission.Joint
 			return stepSql + traceSql;
 		}
 
-		public string GetWorkflowTraceSql(DataRow item, Entity.WorkflowStep step , DataTable org, DataTable user, bool start, bool end, ref Entity.Workflow workflow)
+		/// <summary>
+		/// 生成快照
+		/// </summary>
+		/// <param name="item"></param>
+		/// <param name="step"></param>
+		/// <param name="org"></param>
+		/// <param name="user"></param>
+		/// <param name="start"></param>
+		/// <param name="end"></param>
+		/// <param name="workflow"></param>
+		/// <returns></returns>
+		private string GetWorkflowTraceSql(DataRow item, Entity.WorkflowStep step , DataTable org, DataTable user, bool start, bool end, ref Entity.Workflow workflow)
 		{
 			var trace = new Entity.WorkflowTrace();
 			trace.InitId();