using Abp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DataTransmission.Joint { public class Delay { private readonly CommonTool tool = new CommonTool(); private readonly Workflow workflow = new Workflow(); public DataTable GetDelay(string flowId) { var conn = tool.GetConSqlServer(); var sql = $@" SELECT * FROM dbo.Flow11_Postpone WHERE FPE_FlowID = {flowId} AND FPE_AuditFlag IN (1) "; return tool.GetDataTable(sql, conn); } public string GetDelaySql(DataTable data, DataRow row, string orderId, DataTable org, DataTable user,DataRow delayModule, Entity.Config config) { var delayNum = 0; var pgDelaySql = string.Empty; foreach (DataRow delay in data.Rows) { var applyOrg = org.AsEnumerable().FirstOrDefault(x => x.Field("oldBmid").ToString() == delay["FPE_BMID"].ToString()); var applyUser = user.AsEnumerable().FirstOrDefault(x => x.Field("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 = Convert.ToDateTime(delay["FPE_FPDate"]); 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()); } model.EmployeeId = delay["FPE_UserID"].ToString(); model.CreatorId = model.EmployeeId; if (applyUser != null) { model.EmployeeId = applyUser["Id"].ToString(); model.EmployeeName = applyUser["Name"].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 = Convert.ToDateTime(delay["FPE_FPDate"]); model.DelayState = (Enum.EDelayState)int.Parse(delay["FPE_AuditFlag"].ToString()); model.CreationTime = Convert.ToDateTime(delay["FPE_FPDate"]); 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 ('{model.Id}', '{model.No}', '{model.OrderId}', '{model.ApplyDelayTime}', '{model.ApplyOrgCode}', '{model.ApplyOrgName}', '{model.EmployeeId}', '{model.DelayNum}', 2, '{model.DelayReason}', NULL, '{model.AfterDelay}',{(int)model.DelayState}, 'f', '{model.CreationTime}', '{model.CreatorOrgId}', '{model.CreatorId}', '{model.AreaId}', '{model.CreatorOrgName}', '{model.CreatorName}', {model.CreatorOrgLevel}, '', NULL, '{model.EmployeeName}', NULL, NULL,NULL, NULL, 'f', NULL)"; } else { pgDelaySql += $@",('{model.Id}', '{model.No}', '{model.OrderId}', '{model.ApplyDelayTime}', '{model.ApplyOrgCode}', '{model.ApplyOrgName}', '{model.EmployeeId}', '{model.DelayNum}', 2, '{model.DelayReason}', NULL, '{model.AfterDelay}',{(int)model.DelayState}, 'f', '{model.CreationTime}', '{model.CreatorOrgId}', '{model.CreatorId}', '{model.AreaId}', '{model.CreatorOrgName}', '{model.CreatorName}', {model.CreatorOrgLevel}, '', NULL, '{model.EmployeeName}', NULL, NULL, NULL, NULL, 'f', NULL)"; } delayNum++; pgDelaySql += ";"; var pgDelayWorkflow = workflow.GetWorkflow(row["FSH_FlowID"].ToString(), "Flow_Postpone"); if (pgDelayWorkflow.Rows.Count > 0) { var pgDelayWorkflowSql = workflow.GetWorkflowSql(pgDelayWorkflow, row, orderId, org, user, delayModule, model, config); if (!string.IsNullOrEmpty(pgDelayWorkflowSql)) { pgDelaySql += pgDelayWorkflowSql; } } } return pgDelaySql; } } }