using Microsoft.AspNetCore.Mvc; using OpenAuth.App.Interface; using workflow; namespace OpenAuth.WebApi.Controllers.ServerController; [ApiController] [Route("api/[controller]")] public class CustomWorkflowController : ControllerBase { private readonly WorkflowEngineApp _workflowEngineApp; private readonly IAuth _auth; public CustomWorkflowController(WorkflowEngineApp workflowEngineApp, IAuth auth) { _workflowEngineApp = workflowEngineApp; _auth = auth; } /// /// 发起违法建设认定流程 /// [HttpPost("initiate")] public IActionResult InitiateFlow([FromForm] InitiateFlowRequest request) { try { // 1. 获取当前用户信息 var user = _auth.GetCurrentUser().User; if (!long.TryParse(user.Id.ToString(), out long currentUserId)) return Ok(ApiResult.Error("用户ID格式错误")); // 2. 调用工作流服务发起流程 var instanceId = _workflowEngineApp.InitiateFlow(currentUserId, user.Name, request); return Ok(ApiResult.Ok(instanceId, message: "流程发起成功")); } catch (Exception ex) { return Ok(ApiResult.Error(ex.Message)); } } /// /// 处理工作项(中转、审核、汇总) /// [HttpPost("handle-workitem")] public IActionResult HandleWorkitem([FromBody] HandleWorkitemRequest request) { try { var user = _auth.GetCurrentUser().User; // 1. 获取当前用户信息 var userIdStr = user.Id.ToString(); var userName = user.Name; if (!long.TryParse(userIdStr, out long currentUserId)) return Ok(ApiResult.Error("用户ID格式错误")); // 2. 调用工作流服务处理工作项 var result = _workflowEngineApp.HandleWorkitem(currentUserId, userName, request); return Ok(ApiResult.Ok(result, message: "工作项处理成功")); } catch (Exception ex) { return Ok(ApiResult.Error(ex.Message)); } } // 拟办、待办、已办、未办结、已完成、项目列表 // // ToDo/Done/Rejected /// /// 查询我的待办 /// [HttpGet("my-todo")] public IActionResult QueryMyToDo() { try { var user = _auth.GetCurrentUser().User; var userIdStr = user.Id.ToString(); if (!long.TryParse(userIdStr, out long currentUserId)) return Ok(ApiResult>.Error("用户ID格式错误")); var result = _workflowEngineApp.QueryMyToDo(currentUserId); return Ok(ApiResult>.Ok(result, result.Count)); } catch (Exception ex) { return Ok(ApiResult>.Error(ex.Message)); } } /// /// 查询我的已办 /// [HttpGet("my-done")] public IActionResult QueryMyDone() { try { var user = _auth.GetCurrentUser().User; var userIdStr = user.Id.ToString(); if (!long.TryParse(userIdStr, out long currentUserId)) return Ok(ApiResult>.Error("用户ID格式错误")); var result = _workflowEngineApp.QueryMyDone(currentUserId); return Ok(ApiResult>.Ok(result, result.Count)); } catch (Exception ex) { return Ok(ApiResult>.Error(ex.Message)); } } #region 新增:拟办/未办结/已完成 API 接口 /// /// 查询我的拟办(需认领) /// [HttpGet("my-draft")] public IActionResult QueryMyDraft() { try { var user = _auth.GetCurrentUser().User; var result = _workflowEngineApp.QueryMyDraft(user.Id); return Ok(new { Code = 200, Msg = "查询拟办成功", Data = result, Total = result.Count }); } catch (Exception ex) { return Ok(new { Code = 500, Msg = ex.Message }); } } /// /// 认领拟办工作项 /// [HttpPost("claim-draft")] public IActionResult ClaimDraft([FromBody] long workitemId) { try { var user = _auth.GetCurrentUser().User; var userId = user.Id; var userName = user.Name; var result = _workflowEngineApp.ClaimDraftWorkitem(workitemId, userId, userName); return Ok(new { Code = 200, Msg = "认领拟办成功", Data = result }); } catch (Exception ex) { return Ok(new { Code = 500, Msg = ex.Message }); } } /// /// 查询所有未办结流程 /// [HttpGet("unfinished-flows")] public IActionResult QueryUnfinishedFlows() { try { var user = _auth.GetCurrentUser().User; var userId = user.Id; var result = _workflowEngineApp.QueryUnfinishedFlows(userId); return Ok(new { Code = 200, Msg = "查询未办结流程成功", Data = result, Total = result.Count }); } catch (Exception ex) { return Ok(new { Code = 500, Msg = ex.Message }); } } /// /// 查询所有已完成流程 /// [HttpGet("completed-flows")] public IActionResult QueryCompletedFlows() { try { var user = _auth.GetCurrentUser().User; var userId = user.Id; var result = _workflowEngineApp.QueryCompletedFlows(userId); return Ok(new { Code = 200, Msg = "查询已完成流程成功", Data = result, Total = result.Count }); } catch (Exception ex) { return Ok(new { Code = 500, Msg = ex.Message }); } } #endregion }