fix(workflow): 修复工作流引擎中的数据更新和查询问题

- 在 CustomWorkflowController.Detail 方法上添加 AllowAnonymous 特性以允许匿名访问
- 将 Updateable 的 IgnoreNullColumns 替换为更精确的 IgnoreColumns 设置
- 在 ZyFlowWorkitem 查询中添加 NodeId 连接条件以确保正确的数据关联
- 修复多个工作流实例和工作项的状态更新逻辑
- 改进非法建筑评估记录的附件处理和数据保存机制
main
陈伟 2026-02-27 10:08:42 +08:00
parent 149f966915
commit 5f841fa6ca
2 changed files with 9 additions and 7 deletions

View File

@ -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)

View File

@ -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);