2026-02-08 09:56:25 +08:00
|
|
|
|
using OpenAuth.App.Request;
|
2026-02-05 09:51:56 +08:00
|
|
|
|
|
2026-02-08 09:56:25 +08:00
|
|
|
|
namespace OpenAuth.App.workflow;
|
2026-02-05 09:51:56 +08:00
|
|
|
|
|
|
|
|
|
|
#region 一、接口入参DTO(所有请求参数,对应Controller接收的参数)
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 发起流程请求参数
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class InitiateFlowRequestDto
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 流程编码(唯一标识流程模板,如:IllegalConstructionFlow_2026)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public string FlowCode { get; set; } = string.Empty;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 业务编号(唯一标识该笔业务,如:WJ20260205001、XZ20260205002)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public string BusinessNo { get; set; } = string.Empty;
|
|
|
|
|
|
|
2026-02-05 10:39:35 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 类型 耕地破坏鉴定
|
|
|
|
|
|
/// </summary>
|
2026-02-07 10:44:13 +08:00
|
|
|
|
public int? Type { get; set; }
|
2026-02-05 10:39:35 +08:00
|
|
|
|
|
2026-02-05 09:51:56 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 流程标题(用于展示,如:"XX区域违法建设认定申请")
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public string Title { get; set; } = string.Empty;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 上传附件列表(业务相关证明材料、表单等)
|
|
|
|
|
|
/// </summary>
|
2026-02-05 13:51:07 +08:00
|
|
|
|
public List<string> Attachments { get; set; } = new();
|
2026-02-05 09:51:56 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 处理工作项请求参数
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class HandleWorkitemRequestDto
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 工作项ID(待处理事项的唯一标识,从待办查询接口获取)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public long WorkitemId { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 处理备注(可选,记录处理意见、流转说明等)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public string? Comment { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 审核结果(仅会签节点必填,可选值:Pass(通过)/Reject(驳回))
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public string? AuditResult { get; set; }
|
2026-02-08 11:53:44 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 部门ids
|
|
|
|
|
|
/// </summary>
|
2026-02-08 12:29:33 +08:00
|
|
|
|
public List<long> OrgIds { get; set; }
|
2026-02-05 09:51:56 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 分页查询通用请求参数(所有查询接口共用)
|
|
|
|
|
|
/// </summary>
|
2026-02-05 13:37:02 +08:00
|
|
|
|
public class PageQueryRequestDto : PageReq
|
2026-02-05 09:51:56 +08:00
|
|
|
|
{
|
2026-02-05 13:37:02 +08:00
|
|
|
|
/*/// <summary>
|
2026-02-05 09:51:56 +08:00
|
|
|
|
/// 当前页码(默认1,从1开始计数)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public int PageIndex { get; set; } = 1;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 每页显示条数(默认10,可自定义,建议不超过50)
|
|
|
|
|
|
/// </summary>
|
2026-02-05 13:37:02 +08:00
|
|
|
|
public int PageSize { get; set; } = 10;*/
|
2026-02-05 09:51:56 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region 二、接口出参DTO(所有返回结果,对应Controller返回的数据)
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 流程查询单条结果返回值(所有查询接口的单条数据格式)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class FlowQuerySingleResultDto
|
|
|
|
|
|
{
|
2026-02-07 13:16:49 +08:00
|
|
|
|
public long workitemId { get; set; }
|
2026-02-06 11:22:46 +08:00
|
|
|
|
|
2026-02-05 09:51:56 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 流程实例ID(唯一标识该流程实例,用于后续操作)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public long InstanceId { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 业务编号(对应发起流程时的BusinessNo)
|
|
|
|
|
|
/// </summary>
|
2026-02-08 09:56:25 +08:00
|
|
|
|
public string BusinessNo { get; set; }
|
2026-02-05 09:51:56 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 流程标题(对应发起流程时的Title)
|
|
|
|
|
|
/// </summary>
|
2026-02-08 09:56:25 +08:00
|
|
|
|
public string Title { get; set; }
|
2026-02-05 09:51:56 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 当前节点名称(如:"区县提交"、"政策法规科审核"、"汇总归档")
|
|
|
|
|
|
/// </summary>
|
2026-02-07 16:38:50 +08:00
|
|
|
|
public string NodeName { get; set; }
|
2026-02-05 09:51:56 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 流程状态(枚举值:Draft(拟办)、Submitted(已提交)、Forwarded(已转发)、Auditing(审核中)、Summarized(已汇总)、Completed(已完成)、Rejected(已驳回))
|
|
|
|
|
|
/// </summary>
|
2026-02-07 16:38:50 +08:00
|
|
|
|
public string Status { get; set; }
|
2026-02-05 09:51:56 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 流程发起时间
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public DateTime? CreateTime { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 发起人姓名
|
|
|
|
|
|
/// </summary>
|
2026-02-07 16:38:50 +08:00
|
|
|
|
public string InitiatorName { get; set; }
|
2026-02-05 14:41:27 +08:00
|
|
|
|
|
2026-02-06 11:22:46 +08:00
|
|
|
|
public int? Type { get; set; }
|
|
|
|
|
|
public string WorkStatus { get; set; }
|
2026-02-08 11:53:44 +08:00
|
|
|
|
|
2026-02-08 10:41:45 +08:00
|
|
|
|
public string NodeType { get; set; }
|
2026-02-10 14:35:29 +08:00
|
|
|
|
public DateTime? HandleTime { get; set; }
|
2026-02-05 09:51:56 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 分页查询通用返回值(所有分页查询接口共用,泛型适配不同数据列表)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="T">数据列表的泛型类型(如:FlowQuerySingleResultDto)</typeparam>
|
|
|
|
|
|
public class PageQueryResultDto<T>
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 当前页码(与请求参数的PageIndex对应)
|
|
|
|
|
|
/// </summary>
|
2026-02-05 13:37:02 +08:00
|
|
|
|
public int Page { get; set; }
|
2026-02-05 09:51:56 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 每页显示条数(与请求参数的PageSize对应)
|
|
|
|
|
|
/// </summary>
|
2026-02-05 13:37:02 +08:00
|
|
|
|
public int Limit { get; set; }
|
2026-02-05 09:51:56 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 总记录数(符合查询条件的所有数据条数)
|
|
|
|
|
|
/// </summary>
|
2026-02-05 13:37:02 +08:00
|
|
|
|
public long Total { get; set; }
|
2026-02-05 09:51:56 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 总页数(自动计算:TotalCount / PageSize,向上取整)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public int TotalPages { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 当前页的数据列表
|
|
|
|
|
|
/// </summary>
|
2026-02-05 13:37:02 +08:00
|
|
|
|
public List<T> Items { get; set; } = new List<T>();
|
2026-02-05 09:51:56 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 接口全局统一响应格式(所有接口返回结果的统一封装,提高前端对接效率)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="T">响应数据的泛型类型(如:long、bool、PageQueryResultDto<FlowQuerySingleResultDto>)</typeparam>
|
|
|
|
|
|
public class ApiResponseDto<T>
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 响应状态码(200:操作成功,500:操作失败,400:参数错误/未登录,404:资源不存在)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public int Code { get; set; } = 200;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 响应消息(成功时返回"操作成功",失败时返回具体错误信息)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public string Message { get; set; } = "操作成功";
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 响应数据(成功时返回具体业务数据,失败时可返回null或附加说明数据)
|
|
|
|
|
|
/// </summary>
|
2026-02-05 13:37:02 +08:00
|
|
|
|
public T? Result { get; set; }
|
2026-02-05 09:51:56 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 构建成功响应(静态方法,简化Controller调用)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="data">成功时的业务数据</param>
|
|
|
|
|
|
/// <param name="message">自定义成功消息(可选,默认"操作成功")</param>
|
|
|
|
|
|
/// <returns>统一响应格式对象</returns>
|
|
|
|
|
|
public static ApiResponseDto<T> Success(T? data = default, string message = "操作成功")
|
|
|
|
|
|
{
|
|
|
|
|
|
return new ApiResponseDto<T>
|
|
|
|
|
|
{
|
|
|
|
|
|
Code = 200,
|
|
|
|
|
|
Message = message,
|
2026-02-05 13:37:02 +08:00
|
|
|
|
Result = data
|
2026-02-05 09:51:56 +08:00
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 构建失败响应(静态方法,简化Controller调用)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="message">具体错误消息</param>
|
|
|
|
|
|
/// <param name="data">失败时的附加数据(可选,默认null)</param>
|
|
|
|
|
|
/// <returns>统一响应格式对象</returns>
|
|
|
|
|
|
public static ApiResponseDto<T> Fail(string message = "操作失败", T? data = default)
|
|
|
|
|
|
{
|
|
|
|
|
|
return new ApiResponseDto<T>
|
|
|
|
|
|
{
|
|
|
|
|
|
Code = 500,
|
|
|
|
|
|
Message = message,
|
2026-02-05 13:37:02 +08:00
|
|
|
|
Result = data
|
2026-02-05 09:51:56 +08:00
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 构建参数错误/未登录响应(静态方法,适配400状态码场景)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="message">具体错误消息</param>
|
|
|
|
|
|
/// <param name="data">附加数据(可选)</param>
|
|
|
|
|
|
/// <returns>统一响应格式对象</returns>
|
|
|
|
|
|
public static ApiResponseDto<T> BadRequest(string message = "参数错误或未登录", T? data = default)
|
|
|
|
|
|
{
|
|
|
|
|
|
return new ApiResponseDto<T>
|
|
|
|
|
|
{
|
|
|
|
|
|
Code = 400,
|
|
|
|
|
|
Message = message,
|
2026-02-05 13:37:02 +08:00
|
|
|
|
Result = data
|
2026-02-05 09:51:56 +08:00
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|