using APT.BaseData.Domain.ApiModel; using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Enums; using APT.BaseData.Domain.IServices.FM; using APT.Infrastructure.Core; using APT.Utility; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using APT.Infrastructure.Api; namespace APT.PF.WebApiControllers.Api.PF { [Route("api/PF/FlowInstance")] public class FlowInstanceController : APTApiController { IPFFlowService FlowService { get; set; } public FlowInstanceController(IPFFlowService flowService) { this.FlowService = flowService; } /// /// 查询 /// /// /// [HttpPost, Route("Entities")] public JsonActionResult> Entities([FromBody]KeywordFilter filter) { return WitEntities(null, filter); } /// /// 查询 /// /// /// /// [HttpPost, Route("OrderEntities")] public JsonActionResult> OrderEntities([FromBody]KeywordFilter filter) { return WitOrderEntities(null, filter); } /// /// 查询 /// /// /// [HttpPost, Route("Paged")] public PagedActionResult Paged([FromBody]KeywordPageFilter pageFilter) { return WitPaged(null, pageFilter); } /// /// 查询 /// /// /// [HttpPost, Route("OrderPaged")] public PagedActionResult OrderPaged([FromBody]KeywordPageFilter pageFilter) { return WitOrderPaged(null, pageFilter); } /// /// 删除 /// /// /// [HttpGet, Route("Delete")] public JsonActionResult Delete(string id) { return WitDelete(id); } /// /// 更新 /// /// /// [HttpPost, Route("Update")] public JsonActionResult Update([FromBody]T_PF_FLOW_INSTANCE entity) { return WitUpdate(entity); } /// /// 批量删除 /// /// /// [HttpGet, Route("BatchDelete")] public JsonActionResult BatchDelete(string ids) { return WitBatchDelete(ids); } /// /// 获得单条实体数据 /// /// /// [HttpPost, Route("Get")] public JsonActionResult Get([FromBody] KeywordFilter filter) { return WitEntity(null, filter); } [HttpPost, Route("Add")] public JsonActionResult Add([FromBody] JObject obj) { return SafeExecute(() => { var org = this.GetEntity(t => true); if (org == null) throw new Exception("设置组织"); T_FM_USER user = new T_FM_USER(); user.NAME = "测试" + DateTime.Now.ToString(); user.CODE = DateTime.Now.ToString(); user.ORG_ID = org.ID; //var entityService = ServiceUtils.GetCommonService(); this.AddEntity< T_FM_USER>(user); var flowInstance = obj.ToObject(); SendFlowParam param = new SendFlowParam(); if (flowInstance.InstanceSchemeId != null) param.FlowSchemeId = flowInstance.InstanceSchemeId.Value; param.OrgId = flowInstance.ORG_ID; param.EntityId = user.ID; param.Description = flowInstance.Description; this.FlowService.SendFlow(param); return true; }); } [HttpPost, Route("GetFlow")] public JsonActionResult GetFlow([FromBody]KeywordFilter filter) { return SafeExecute(() => { var flowService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); return flowService.GetFlow(filter); }); } [HttpPost, Route("PermitFlow")] public JsonActionResult PermitFlow([FromBody] VerificationReq request) { return SafeExecute(() => { var fmFlowPermitService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); PermitFlowParam param = new PermitFlowParam(); if (!string.IsNullOrEmpty(request.FlowInstanceId)) param.FlowId = new Guid(request.FlowInstanceId); else throw new Exception("流程ID 不允许为空"); param.NodeRejectStep = request.NodeRejectStep; param.Description = request.VerificationOpinion; param.UserId = request.UserId; param.UserName = request.UserName; if (request.VerificationFinally == "3") { param.PermitStatus = (int)PPFlowPermitStatusEnum.驳回; } else if (request.VerificationFinally == "2")//表示不同意 { param.PermitStatus = (int)PPFlowPermitStatusEnum.不同意; } else if (request.VerificationFinally == "1")//表示同意 { param.PermitStatus = (int)PPFlowPermitStatusEnum.同意; } this.FlowService.PermitFlowSimple(param); fmFlowPermitService.AfterPermit(param.FlowId.ToString(), param.PermitStatus); return true; }); } [HttpPost, Route("PassFlowByBatch")] public JsonActionResult PassFlowByBatch([FromBody] VerificationPassBatchReq request) { return SafeExecute(() => { if (request == null || string.IsNullOrEmpty(request.Ids)) return false; var arry = request.Ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (arry == null || arry.Length == 0) return false; foreach(var item in arry) { PermitFlowParam param = new PermitFlowParam(); param.FlowId = new Guid(item); param.Description = "批次审核通过"; param.UserId = request.UserId; param.UserName = request.UserName; param.PermitStatus = (int)PPFlowPermitStatusEnum.同意; this.FlowService.PermitFlowSimple(param); } return true; }); } /// /// 加载列表 /// [HttpPost, Route("QueryFlowInstance")] public PagedActionResult QueryFlowInstance([FromBody]KeywordPageFilter pageFilter) { return SafeGetPagedData(result => { var flowService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService(); var data= flowService.QueryFlowInstance(pageFilter); result.Data = data.Items; result.TotalCount = data.TotalCount; }); } /// /// 查询操作日志 /// /// /// [HttpPost, Route("GetOperHistoryList")] public JsonActionResult> GetOperHistoryList([FromBody]KeywordFilter filter) { return SafeExecute>(() => { return this.GetOrderEntities(null, filter); }); } /// /// 加载自定人员 /// /// /// [HttpPost, Route("LoadUser")] public FlowLoadResult LoadUser([FromBody] KeywordFilter filter) { if (filter == null) filter = new KeywordFilter(); var result = new FlowLoadResult(); var list = this.GetEntities(null, filter).ToList(); result.count = list.Count; result.data = list; return result; } /// /// 加载自定角色 /// /// /// [HttpPost, Route("LoadRole")] public FlowLoadResult LoadRole([FromBody] KeywordFilter filter) { if (filter == null) filter = new KeywordFilter(); var result = new FlowLoadResult(); var list = this.GetEntities(null, filter).ToList(); result.count = list.Count; result.data = list; return result; } /// /// 加载自定组织 /// /// /// [HttpPost, Route("LoadOrg")] public FlowLoadResult LoadOrg([FromBody] KeywordFilter filter) { if (filter == null) filter = new KeywordFilter(); var result = new FlowLoadResult(); var list = this.GetEntities(null, filter).ToList(); result.count = list.Count; result.data = list; return result; } } }