This commit is contained in:
2023-05-31 10:19:05 +08:00
parent 1b65a7a9e5
commit 9c621c75cd
238 changed files with 9905 additions and 4034 deletions

View File

@@ -10,6 +10,7 @@ using JNPF.FriendlyException;
using JNPF.WorkFlow.Entitys.Dto.FlowBefore;
using JNPF.WorkFlow.Entitys.Enum;
using JNPF.WorkFlow.Entitys.Model;
using JNPF.WorkFlow.Entitys.Model.Properties;
using JNPF.WorkFlow.Interfaces.Manager;
using JNPF.WorkFlow.Interfaces.Repository;
using Microsoft.AspNetCore.Mvc;
@@ -59,12 +60,32 @@ public class FlowBeforeService : IDynamicApiController, ITransient
case "4":
return await _flowTaskRepository.GetBatchWaitList(input);
default:
return PageResult<FlowBeforeListOutput>.SqlSugarPageResult(new SqlSugarPagedList<FlowBeforeListOutput>());
var pageList = new SqlSugarPagedList<FlowBeforeListOutput>()
{
list = new List<FlowBeforeListOutput>(),
pagination = new Pagination()
{
CurrentPage = input.currentPage,
PageSize = input.pageSize,
Total = 0
}
};
return PageResult<FlowBeforeListOutput>.SqlSugarPageResult(pageList);
}
}
catch (Exception ex)
{
return PageResult<FlowBeforeListOutput>.SqlSugarPageResult(new SqlSugarPagedList<FlowBeforeListOutput>());
var pageList = new SqlSugarPagedList<FlowBeforeListOutput>()
{
list = new List<FlowBeforeListOutput>(),
pagination = new Pagination()
{
CurrentPage = input.currentPage,
PageSize = input.pageSize,
Total = 0
}
};
return PageResult<FlowBeforeListOutput>.SqlSugarPageResult(pageList);
}
}
@@ -149,7 +170,7 @@ public class FlowBeforeService : IDynamicApiController, ITransient
}
/// <summary>
/// 批量审批流程列表.
/// 批量审批流程分类列表.
/// </summary>
/// <returns></returns>
[HttpGet("BatchFlowSelector")]
@@ -158,15 +179,36 @@ public class FlowBeforeService : IDynamicApiController, ITransient
return await _flowTaskRepository.BatchFlowSelector();
}
/// <summary>
/// 批量审批流程列表.
/// </summary>
/// <param name="templateId"></param>
/// <returns></returns>
[HttpGet("BatchFlowJsonList/{templateId}")]
public async Task<dynamic> BatchFlowJsonList(string templateId)
{
var list = (await _flowTaskRepository.GetWaitList()).FindAll(x => x.IsBatch == 1 && x.TemplateId == templateId);
var output = new List<object>();
foreach (var item in list)
{
var flowJson = _flowTaskRepository.GetFlowTemplateJsonInfo(x => x.Id == item.FlowId && x.DeleteMark == null);
if (flowJson.IsNotEmptyOrNull())
{
output.Add(new { id = flowJson.Id, fullName =string.Format("{0}(v{1})", flowJson.FullName, flowJson.Version), flowTemplateJson= flowJson.FlowTemplateJson });
}
}
return output.Distinct();
}
/// <summary>
/// 批量审批节点列表.
/// </summary>
/// <param name="flowId">流程id.</param>
/// <returns></returns>
[HttpGet("NodeSelector/{templateId}")]
public async Task<dynamic> NodeSelector(string templateId)
[HttpGet("NodeSelector/{flowId}")]
public async Task<dynamic> NodeSelector(string flowId)
{
return await _flowTaskManager.NodeSelector(templateId);
return await _flowTaskManager.NodeSelector(flowId);
}
/// <summary>
@@ -231,6 +273,39 @@ public class FlowBeforeService : IDynamicApiController, ITransient
{
return await _flowTaskManager.RejectNodeList(taskOperatorId);
}
/// <summary>
/// 子流程详情.
/// </summary>
/// <param name="taskNodeId">节点id.</param>
/// <returns></returns>
[HttpGet("SubFlowInfo/{taskNodeId}")]
public async Task<dynamic> SubFlowInfo(string taskNodeId)
{
var output = new List<object>();
var taskNodeEntity = await _flowTaskRepository.GetTaskNodeInfo(taskNodeId);
if (FlowTaskNodeTypeEnum.subFlow.ParseToString().Equals(taskNodeEntity.NodeType))
{
var childProp = taskNodeEntity.NodePropertyJson.ToObject<ChildTaskProperties>();
foreach (var item in childProp.childTaskId)
{
var childTaskInfo = await _flowTaskManager.GetFlowBeforeInfo(item, childProp.flowId, null, null);
output.Add(childTaskInfo);
}
}
return output;
}
/// <summary>
/// 挂起任务是否存在异步子流程.
/// </summary>
/// <param name="taskId">任务id.</param>
/// <returns></returns>
[HttpGet("Suspend/{taskId}")]
public async Task<dynamic> Suspend(string taskId)
{
return await _flowTaskRepository.AnyFlowTask(x => x.ParentId == taskId && x.IsAsync == 1 && x.DeleteMark == null);
}
#endregion
#region POST
@@ -258,8 +333,13 @@ public class FlowBeforeService : IDynamicApiController, ITransient
public async Task<dynamic> Reject(string taskOperatorId, [FromBody] FlowHandleModel flowHandleModel)
{
var flowTaskParamter = await _flowTaskRepository.GetTaskParamterByOperatorId(taskOperatorId, flowHandleModel);
if (flowTaskParamter.flowTaskEntity.Suspend == 1) throw Oops.Oh(ErrorCode.WF0046);
if (_flowTaskManager.IsSubFlowUpNode(flowTaskParamter))
throw Oops.Oh(ErrorCode.WF0019);
if (flowHandleModel.rejectType.IsNotEmptyOrNull())
{
flowTaskParamter.approversProperties.rejectType = flowHandleModel.rejectType.ParseToInt();
}
return await _flowTaskManager.Reject(flowTaskParamter);
}
@@ -277,6 +357,7 @@ public class FlowBeforeService : IDynamicApiController, ITransient
if (await _flowTaskRepository.AnyFlowTask(x => x.ParentId == flowTaskOperatorRecord.TaskId && x.Status != FlowTaskStatusEnum.Cancel.ParseToInt() && x.DeleteMark == null))
throw Oops.Oh(ErrorCode.WF0018);
var flowTaskParamter = await _flowTaskRepository.GetTaskParamterByOperatorId(flowTaskOperatorRecord.TaskOperatorId, flowHandleModel);
if (flowTaskParamter.flowTaskEntity.Suspend == 1) throw Oops.Oh(ErrorCode.WF0046);
await _flowTaskManager.Recall(flowTaskParamter, flowTaskOperatorRecord);
}
@@ -290,6 +371,7 @@ public class FlowBeforeService : IDynamicApiController, ITransient
public async Task Cancel(string taskId, [FromBody] FlowHandleModel flowHandleModel)
{
var flowTaskParamter = await _flowTaskRepository.GetTaskParamterByTaskId(taskId, flowHandleModel);
if (flowTaskParamter.flowTaskEntity.Suspend == 1) throw Oops.Oh(ErrorCode.WF0046);
if (flowTaskParamter.flowTaskEntity.FlowType == 1)
throw Oops.Oh(ErrorCode.WF0016);
await _flowTaskManager.Cancel(flowTaskParamter);
@@ -321,6 +403,7 @@ public class FlowBeforeService : IDynamicApiController, ITransient
if (nodeEntity.IsNotEmptyOrNull() && nodeEntity.Count > 0)
throw Oops.Oh(ErrorCode.WF0014);
var flowTaskParamter = await _flowTaskRepository.GetTaskParamterByTaskId(taskId, flowHandleModel);
if (flowTaskParamter.flowTaskEntity.Suspend == 1) throw Oops.Oh(ErrorCode.WF0046);
flowTaskParamter.thisFlowTaskOperatorEntityList = await _flowTaskRepository.GetTaskOperatorList(x => x.State == "0" && x.NodeCode == flowHandleModel.nodeCode && x.TaskId == taskId);
await _flowTaskManager.Assigned(flowTaskParamter);
}
@@ -336,6 +419,7 @@ public class FlowBeforeService : IDynamicApiController, ITransient
public async Task SaveAudit(string taskOperatorId, [FromBody] FlowHandleModel flowHandleModel)
{
var flowTaskParamter = await _flowTaskManager.Validation(taskOperatorId, flowHandleModel);
if (flowTaskParamter.flowTaskEntity.Suspend == 1) throw Oops.Oh(ErrorCode.WF0046);
flowTaskParamter.flowTaskOperatorEntity.DraftData = flowHandleModel.formData.ToJsonString();
await _flowTaskRepository.UpdateTaskOperator(flowTaskParamter.flowTaskOperatorEntity);
}
@@ -381,6 +465,7 @@ public class FlowBeforeService : IDynamicApiController, ITransient
public async Task<dynamic> Change([FromBody] FlowHandleModel flowHandleModel)
{
// 清除依次经办数据
if (await _flowTaskRepository.AnyFlowTask(x => x.Id == flowHandleModel.taskId && x.Suspend == 1 && x.DeleteMark == null)) throw Oops.Oh(ErrorCode.WF0046);
await _flowTaskRepository.DeleteTaskOperatorUser(flowHandleModel.taskId);
_flowTaskRepository.DeleteFlowCandidates(x => x.TaskId == flowHandleModel.taskId);
var flowTaskParamter = await _flowTaskRepository.GetTaskParamterByTaskId(flowHandleModel.taskId, flowHandleModel);
@@ -398,5 +483,31 @@ public class FlowBeforeService : IDynamicApiController, ITransient
{
return await Audit(taskOperatorId, flowHandleModel);
}
/// <summary>
/// 挂起.
/// </summary>
/// <param name="taskId">任务id.</param>
/// <param name="flowHandleModel">审批参数.</param>
/// <returns></returns>
[HttpPost("Suspend/{taskId}")]
public async Task Suspend(string taskId,[FromBody] FlowHandleModel flowHandleModel)
{
var flowTaskParamter = await _flowTaskRepository.GetTaskParamterByTaskId(taskId, flowHandleModel);
await _flowTaskManager.Suspend(flowTaskParamter);
}
/// <summary>
/// 恢复.
/// </summary>
/// <param name="taskId">任务id.</param>
/// <param name="flowHandleModel">审批参数.</param>
/// <returns></returns>
[HttpPost("Restore/{taskId}")]
public async Task Restore(string taskId, [FromBody] FlowHandleModel flowHandleModel)
{
var flowTaskParamter = await _flowTaskRepository.GetTaskParamterByTaskId(taskId, flowHandleModel);
await _flowTaskManager.Restore(flowTaskParamter);
}
#endregion
}