fix(workflow): 修复工作流引擎中的数据更新和查询问题
- 在 CustomWorkflowController.Detail 方法上添加 AllowAnonymous 特性以允许匿名访问 - 将 Updateable 的 IgnoreNullColumns 替换为更精确的 IgnoreColumns 设置 - 在 ZyFlowWorkitem 查询中添加 NodeId 连接条件以确保正确的数据关联 - 修复多个工作流实例和工作项的状态更新逻辑 - 改进非法建筑评估记录的附件处理和数据保存机制main
parent
149f966915
commit
5f841fa6ca
|
|
@ -97,7 +97,7 @@ public class WorkflowEngineApp : SqlSugarBaseApp<SysCategoryType, SugarDbContext
|
||||||
|
|
||||||
// 方案1:明确指定要更新的列,避免主键冲突
|
// 方案1:明确指定要更新的列,避免主键冲突
|
||||||
_sqlSugar.Updateable(illegal)
|
_sqlSugar.Updateable(illegal)
|
||||||
.IgnoreNullColumns().ExecuteCommand();
|
.IgnoreColumns(ignoreAllNullColumns:true,ignoreAllDefaultValue:true).ExecuteCommand();
|
||||||
|
|
||||||
// 或者方案2:使用 Where 条件更新
|
// 或者方案2:使用 Where 条件更新
|
||||||
// _sqlSugar.Updateable<IllegalConstructionAssessment>()
|
// _sqlSugar.Updateable<IllegalConstructionAssessment>()
|
||||||
|
|
@ -109,7 +109,7 @@ public class WorkflowEngineApp : SqlSugarBaseApp<SysCategoryType, SugarDbContext
|
||||||
instanceId = flowInstance.InstanceId;
|
instanceId = flowInstance.InstanceId;
|
||||||
flowInstance.InstanceId = instanceId;
|
flowInstance.InstanceId = instanceId;
|
||||||
flowInstance.Status = "Submitted";
|
flowInstance.Status = "Submitted";
|
||||||
_sqlSugar.Updateable(flowInstance).IgnoreNullColumns().ExecuteCommand();
|
_sqlSugar.Updateable(flowInstance).IgnoreColumns(ignoreAllNullColumns:true,ignoreAllDefaultValue:true).ExecuteCommand();
|
||||||
// 需要查驳回和草稿
|
// 需要查驳回和草稿
|
||||||
var flowWorkItem = _sqlSugar.Queryable<ZyFlowWorkitem>()
|
var flowWorkItem = _sqlSugar.Queryable<ZyFlowWorkitem>()
|
||||||
.Where(a => a.InstanceId == instanceId
|
.Where(a => a.InstanceId == instanceId
|
||||||
|
|
@ -127,7 +127,7 @@ public class WorkflowEngineApp : SqlSugarBaseApp<SysCategoryType, SugarDbContext
|
||||||
flowWorkItem.OrgId = org.Id;
|
flowWorkItem.OrgId = org.Id;
|
||||||
flowWorkItem.OrgName = org.Name;
|
flowWorkItem.OrgName = org.Name;
|
||||||
|
|
||||||
_sqlSugar.Updateable(flowWorkItem).IgnoreNullColumns().ExecuteCommand();
|
_sqlSugar.Updateable(flowWorkItem).IgnoreColumns(ignoreAllNullColumns:true,ignoreAllDefaultValue:true).ExecuteCommand();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -857,7 +857,7 @@ public class WorkflowEngineApp : SqlSugarBaseApp<SysCategoryType, SugarDbContext
|
||||||
// 区县提交之后 Submitted -> Forwarded -> 转发之后 Auditing -> 审核之后 Summarized-> 汇总判断之后 Rejected
|
// 区县提交之后 Submitted -> Forwarded -> 转发之后 Auditing -> 审核之后 Summarized-> 汇总判断之后 Rejected
|
||||||
// 驳回之后 Rejected -> 转发之后 Auditing -> 审核之后 Summarized 。。。
|
// 驳回之后 Rejected -> 转发之后 Auditing -> 审核之后 Summarized 。。。
|
||||||
flowInstance.Status = GetFlowStatusByNodeType(nextNode.NodeType);
|
flowInstance.Status = GetFlowStatusByNodeType(nextNode.NodeType);
|
||||||
_sqlSugar.Updateable(flowInstance).IgnoreNullColumns().ExecuteCommand();
|
_sqlSugar.Updateable(flowInstance).IgnoreColumns(ignoreAllNullColumns:true,ignoreAllDefaultValue:true).ExecuteCommand();
|
||||||
// 为选择的每个审核科创建工作项
|
// 为选择的每个审核科创建工作项
|
||||||
if (nextNode.NodeType == "Parallel")
|
if (nextNode.NodeType == "Parallel")
|
||||||
{
|
{
|
||||||
|
|
@ -1287,7 +1287,7 @@ public class WorkflowEngineApp : SqlSugarBaseApp<SysCategoryType, SugarDbContext
|
||||||
illegalConstructionAssessment.Attachments = attachmentPaths;
|
illegalConstructionAssessment.Attachments = attachmentPaths;
|
||||||
}
|
}
|
||||||
|
|
||||||
_sqlSugar.Updateable(illegalConstructionAssessment).IgnoreNullColumns().ExecuteCommand();
|
_sqlSugar.Updateable(illegalConstructionAssessment).IgnoreColumns(ignoreAllNullColumns:true,ignoreAllDefaultValue:true).ExecuteCommand();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1316,7 +1316,7 @@ public class WorkflowEngineApp : SqlSugarBaseApp<SysCategoryType, SugarDbContext
|
||||||
var workItems = _sqlSugar
|
var workItems = _sqlSugar
|
||||||
.Queryable<ZyFlowWorkitem>()
|
.Queryable<ZyFlowWorkitem>()
|
||||||
.LeftJoin<ZyFlowParallelAudit>((w, a)
|
.LeftJoin<ZyFlowParallelAudit>((w, a)
|
||||||
=> w.InstanceId == a.InstanceId && w.HandlerId == a.AuditorId)
|
=> w.InstanceId == a.InstanceId && w.HandlerId == a.AuditorId && w.NodeId == a.NodeId)
|
||||||
.LeftJoin<ZyFlowNode>((w, a, n) => w.NodeId == n.NodeId)
|
.LeftJoin<ZyFlowNode>((w, a, n) => w.NodeId == n.NodeId)
|
||||||
.Where(w => w.InstanceId == instance.InstanceId && w.Status == "Done")
|
.Where(w => w.InstanceId == instance.InstanceId && w.Status == "Done")
|
||||||
.OrderByDescending(w => w.WorkitemId)
|
.OrderByDescending(w => w.WorkitemId)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using OpenAuth.App.Interface;
|
using OpenAuth.App.Interface;
|
||||||
using OpenAuth.App.workflow;
|
using OpenAuth.App.workflow;
|
||||||
|
|
||||||
|
|
@ -264,6 +265,7 @@ public class WorkflowController : ControllerBase
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
|
[AllowAnonymous]
|
||||||
public ActionResult<ApiResponseDto<dynamic>> Detail(string businessNo)
|
public ActionResult<ApiResponseDto<dynamic>> Detail(string businessNo)
|
||||||
{
|
{
|
||||||
var detail = _workflowEngineApp.Detail(businessNo);
|
var detail = _workflowEngineApp.Detail(businessNo);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue