using Infrastructure;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using OpenAuth.App.Request;
using OpenAuth.App;
using OpenAuth.Repository.Domain;
using OpenAuth.App.Interface;
using OpenAuth.App.Response;
using Microsoft.AspNetCore.Authorization;
using OpenAuth.App.BaseApp.WFTask;
using Infrastructure.Extensions;
using SqlSugar;
namespace OpenAuth.WebApi.Controllers
{
///
/// 流程实例任务
///
[Route("api/[controller]/[action]")]
[ApiController]
public class WFTaskController : ControllerBase
{
WFTaskApp taskApp;
WFProcessApp processApp;
WFSchemeInfoApp schemeInfoApp;
IAuth auth;
public WFTaskController(WFTaskApp taskApp, WFProcessApp processApp, WFSchemeInfoApp schemeInfoApp, IAuth auth)
{
this.taskApp = taskApp;
this.processApp = processApp;
this.schemeInfoApp = schemeInfoApp;
this.auth = auth;
}
#region 查询
#region 实例
///
/// 实例
/// workflow/process/task/{id}
///
/// 任务id
///
[HttpGet]
public async Task> Get(string id)
{
var res = new WFTaskDto();
res.Task = taskApp.GetEntity(id);
res.Process = await processApp.GetEntity(res.Task.ProcessId);
res.Scheme = await schemeInfoApp.GetSchemeEntity(res.Process.SchemeId);
res.Logs = await taskApp.GetLogList(res.Task.ProcessId);
res.Tasks = await taskApp.GetUnFinishTaskList(res.Task.ProcessId);
return new Response
{
Result = res,
Message = "success"
};
}
///
/// 适配 BPMN
///
/// wfTask id
///
[HttpGet]
public async Task> GetBPMN(string id)
{
var res = new BPMNWFTaskDto();
res.Task = taskApp.GetEntity(id);
res.FlowViewer = new FlowUnit();
var process = await processApp.GetEntity(res.Task.ProcessId);
res.Process = process;
var scheme = await schemeInfoApp.GetSchemeEntity(res.Process.SchemeId);
res.Scheme = scheme;
res.FlowContent = scheme.FlowContent;
res.Logs = await taskApp.GetLogList(res.Task.ProcessId);
var unfinishTasks = await taskApp.GetUnFinishTaskList(res.Task.ProcessId);
res.Tasks = unfinishTasks;
res.FlowViewer.UnfinishedTaskSet = unfinishTasks.Select(a => a.UnitId).ToList();
List unfids = new List();
if (unfinishTasks.Count() > 0)
{
unfids = unfinishTasks.Select(r => r.Id).ToList();
}
var finishTasks = await taskApp.GetFinishTaskList(res.Task.ProcessId, unfids);
res.FlowViewer.FinishedTaskSet = finishTasks.Select(a => a.UnitId).ToList();
return new Response
{
Result = res,
Message = "success"
};
}
#endregion
#region 任务 byToken
///
/// 任务 byToken
/// workflow/process/task/token/{token}
///
/// token
///
[HttpGet]
public async Task> GetTaskByToken(string token)
{
var res = new WFTaskDto();
res.Task = await taskApp.GetEntityByToken(token, auth.GetUserId());
if (res.Task == null)
{
throw new Exception("当前任务已经结束!");
}
res.Process = await processApp.GetEntity(res.Task.ProcessId);
res.Scheme = await schemeInfoApp.GetSchemeEntity(res.Process.SchemeId);
res.Logs = await taskApp.GetLogList(res.Task.ProcessId);
res.Tasks = await taskApp.GetUnFinishTaskList(res.Task.ProcessId);
return new Response
{
Result = res,
Message = "success"
};
}
#endregion
#region 我的待办分页
///
/// 我的待办分页
/// workflow/process/uncompleted/mypage
///
/// 分页参数
/// 查询参数
///
[HttpGet]
public async Task>>> LoadMyUncompletedPage([FromQuery] PageReq pageReq, [FromQuery] WFProcessSearchDto searchParams, string category)
{
var pageInfo = await taskApp.GetMyUncompletedPageList(pageReq, searchParams,category);
return new Response>>
{
Result = pageInfo,
Message = "success"
};
}
///
/// 我的待办分页
/// workflow/process/uncompleted/mypage
///
/// 分页参数
/// 查询参数
///
[HttpGet]
public async Task>>> LoadMyUncompletedPage1([FromQuery] PageReq pageReq, [FromQuery] WFProcessSearchDto searchParams, string category)
{
var pageInfo = await taskApp.GetMyUncompletedPageList1(pageReq, searchParams,category);
return new Response>>
{
Result = pageInfo,
Message = "success"
};
}
#endregion
#region 我的已办分页
///
/// 我的已办分页
/// workflow/process/completed/mypage
///
/// 分页参数
/// 查询参数
///
[HttpGet]
public async Task>>> LoadMyCompletedPage([FromQuery] PageReq pageReq, [FromQuery] WFProcessSearchDto searchParams, string category)
{
var pageInfo = await taskApp.GetMyCompletedPageList(pageReq, searchParams, category);
return new Response>>
{
Result = pageInfo,
Message = "success"
};
}
#endregion
#region 我的传阅分页
///
/// 获取我的传阅任务
/// workflow/process/read/mypage
///
/// 分页参数
/// 查询参数
///
[HttpGet]
public async Task>>> LoadMyReadPage([FromQuery] PageReq pageReq, [FromQuery] WFProcessSearchDto searchParams,string category)
{
var pageInfo = await taskApp.GetMyReadPageList(pageReq, searchParams, category);
return new Response>>
{
Result = pageInfo,
Message = "success"
};
}
#endregion
#region 我的委托分页
///
/// 我的委托分页
/// workflow/process/delegate/mypage
///
/// 分页参数
/// 查询参数
///
[HttpGet]
public async Task>>> LoadMyDelegatePage([FromQuery] PageReq pageReq, [FromQuery] WFProcessSearchDto searchParams, string category)
{
var pageInfo = await taskApp.GetMyDelegatePageList(pageReq, searchParams, category);
return new Response>>
{
Result = pageInfo,
Message = "success"
};
}
#endregion
#region 我的可撤回案件
///
/// 获取我的可撤回案件
///
///
///
///
///
[HttpGet]
public Response>> GetRetractPageList([FromQuery] PageReq pageReq, [FromQuery] WFProcessSearchDto searchParams, string category)
{
var pageInfo = taskApp.GetRetractPageList(pageReq, searchParams, category);
return new Response>>
{
Result = pageInfo,
Message = "success"
};
}
#endregion
#endregion
#region 根据案件id,查询当前应该执行的任务
///
/// 根据案件id,查询当前应该执行的任务
///
/// 案件id
///
[HttpGet]
public async Task> GetTaskByCaseId(string caseid)
{
Response response = new Response();
try
{
response.Result = await taskApp.GetTaskByCaseId(caseid);
}
catch (Exception ex)
{
response.Code = 500;
response.Message = ex.InnerException?.Message ?? ex.Message;
}
return response;
}
#endregion
#region
///
/// 修改地类类型(仅限农用地到建设用地,待接收状态)
///
/// 案件编号
///
[HttpPost]
public async Task> UpdateCaseinfoTypeKC(string caseno)
{
var result = new Response();
try
{
result = await taskApp.UpdateCaseinfoTypeKC(caseno);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
///
/// 获取任务列表(地类类型修改专用)
///
/// 流程实例主键
///
[HttpGet]
public async Task>> GetTaskList(string processId)
{
var result = await taskApp.GetTaskList(processId);
return new Response>
{
Result = result,
Message = "success"
};
}
///
/// 获取任务日志列表(地类类型修改专用)
///
/// 流程实例主键
///
[HttpGet]
public async Task>> GetTaskLogList(string processId)
{
var result = await taskApp.GetTaskLogList(processId);
return new Response>
{
Result = result,
Message = "success"
};
}
///
/// 删除任务(地类类型修改专用)
///
/// 任务ids
///
[HttpPost]
public async Task> DeleteTaskByIds(string ids)
{
var result = new Response();
try
{
result = await taskApp.DeleteTaskByIds(ids);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
///
/// 删除任务日志(地类类型修改专用)
///
/// 任务ids
///
[HttpPost]
public async Task> DeleteTaskLogByIds(string ids)
{
var result = new Response();
try
{
result = await taskApp.DeleteTaskLogByIds(ids);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
///
/// 更新任务(地类修改专用)
///
/// 任务
[HttpPost]
public async Task> UpdateTask(WFTask wfTaskEntity)
{
var result = new Response();
try
{
result = await taskApp.UpdateTask(wfTaskEntity);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
///
/// 更新任务日志(地类修改专用)
///
/// 任务日志
[HttpPost]
public async Task> UpdateTaskLog(WFTaskLog wfTasklogEntity)
{
var result = new Response();
try
{
result = await taskApp.UpdateTaskLog(wfTasklogEntity);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
#endregion
}
}