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 } }