You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

158 lines
5.0 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using DS.Module.Core;
using DS.WMS.Core.Flow.Dtos;
using DS.WMS.Core.Flow.Interface;
using DS.WMS.Core.Op.Entity;
using Microsoft.AspNetCore.Mvc;
namespace DS.WMS.MainApi.Controllers;
/// <summary>
/// 流程实例-客户端
/// </summary>
public class ClientFlowInstanceController : ApiController
{
private readonly IClientFlowInstanceService _invokeService;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="invokeService"></param>
public ClientFlowInstanceController(IClientFlowInstanceService invokeService)
{
_invokeService = invokeService;
}
/// <summary>
/// 确定是否为最后审批人
/// </summary>
/// <param name="taskType">任务类型</param>
/// <param name="bsId">业务ID</param>
/// <param name="bsType">业务类型(可空)</param>
/// <returns></returns>
[HttpGet, Route("IsLastMarker")]
public DataResult<bool> IsLastMarker([FromQuery] TaskBaseTypeEnum taskType, [FromQuery] long bsId, [FromQuery] BusinessType? bsType)
{
return _invokeService.IsLastMarker(taskType, bsId, bsType);
}
/// <summary>
/// 列表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
[Route("GetFlowInstanceList")]
public async Task<DataResult<List<FlowInstanceRes>>> GetListByPage([FromBody] PageRequest request)
{
var res = await _invokeService.GetListAsync(request);
return res;
}
/// <summary>
/// 编辑
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost]
[Route("EditFlowInstance")]
public async Task<DataResult> EditFlowInstance([FromBody] FlowInstanceReq model)
{
var res = await _invokeService.EditAsync(model);
return res;
}
/// <summary>
/// 详情
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet]
[Route("GetFlowInstanceInfo")]
public async Task<DataResult<FlowInstanceRes>> GetFlowInstanceInfo([FromQuery] long id)
{
var res = await _invokeService.GetAsync(id);
return res;
}
/// <summary>
/// 启动实例
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet]
[Route("StartFlowInstance")]
public async Task<DataResult> StartFlowInstance([FromQuery] long id)
{
var res = await _invokeService.StartAsync(id);
return res;
}
/// <summary>
/// 创建流程实例
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost]
[Route("CreateFlowInstance")]
public async Task<DataResult> CreateFlowInstance([FromBody] CreateFlowInstanceReq req)
{
var res = await _invokeService.CreateAsync(req);
return res;
}
/// <summary>
/// 审核流程实例
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
[HttpPost]
[Route("AuditFlowInstance")]
public Task<DataResult> AuditAsync([FromBody] FlowInstanceAuditReq req)
{
return _invokeService.AuditAsync(req);
}
/// <summary>
/// 根据业务获取流程操作历史
/// </summary>
/// <param name="bsId">业务ID</param>
/// <param name="bsType">业务类型(可空)</param>
/// <returns></returns>
[HttpGet, Route("GetFlowHistoriesByBiz")]
public async Task<DataResult<List<FlowInstanceHistoryRes>>> GetFlowInstanceHistoryList([FromQuery] long bsId, [FromQuery] BusinessType? bsType)
{
return await _invokeService.GetHistoriesAsync(bsId, bsType);
}
/// <summary>
/// 运行回调更新
/// </summary>
/// <param name="taskType">审核类型</param>
/// <param name="bsId">业务ID</param>
/// <param name="businessType">业务类型(可选)</param>
/// <param name="callbackURL">回调URL可选</param>
/// <returns></returns>
/// <remarks>若未指定<paramref name="callbackURL"/>,则使用工作流默认的回调地址</remarks>
[HttpGet, HttpPost, Route("RunCallback")]
public async Task<DataResult> RunCallbackAsync(TaskBaseTypeEnum taskType, long bsId, BusinessType? businessType = null, string? callbackURL = null)
{
return await _invokeService.RunCallbackAsync(taskType, bsId, businessType, callbackURL);
}
/// <summary>
/// 获取流程运行实例的内容
/// </summary>
/// <param name="businessId">业务ID</param>
/// <param name="businessType">业务类型(可空)</param>
/// <param name="types">指定审批类型(可空,为空时返回所有类型)</param>
/// <returns></returns>
[HttpGet, Route("GetFlowContent")]
public async Task<DataResult<List<FlowInstanceRes>>> GetFlowContent(
[FromQuery] long businessId,
[FromQuery] BusinessType? businessType,
[FromQuery] params TaskBaseTypeEnum[]? types)
{
var result = await _invokeService.GetInstancesByBizAsync(businessId, businessType, types);
return result;
}
}