297 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			297 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 
								 | 
							
								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<T_PF_FLOW_INSTANCE>
							 | 
						|||
| 
								 | 
							
									{
							 | 
						|||
| 
								 | 
							
										IPFFlowService FlowService { get; set; }
							 | 
						|||
| 
								 | 
							
										public FlowInstanceController(IPFFlowService flowService)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											this.FlowService = flowService;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										/// <summary>
							 | 
						|||
| 
								 | 
							
										/// 查询
							 | 
						|||
| 
								 | 
							
										/// </summary>
							 | 
						|||
| 
								 | 
							
										/// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
										/// <returns></returns>
							 | 
						|||
| 
								 | 
							
										[HttpPost, Route("Entities")]
							 | 
						|||
| 
								 | 
							
										public JsonActionResult<IEnumerable<T_PF_FLOW_INSTANCE>> Entities([FromBody]KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											return WitEntities(null, filter);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										/// <summary>
							 | 
						|||
| 
								 | 
							
										/// 查询
							 | 
						|||
| 
								 | 
							
										/// </summary>
							 | 
						|||
| 
								 | 
							
										/// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
										/// <returns></returns>
							 | 
						|||
| 
								 | 
							
										/// 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										[HttpPost, Route("OrderEntities")]
							 | 
						|||
| 
								 | 
							
										public JsonActionResult<IEnumerable<T_PF_FLOW_INSTANCE>> OrderEntities([FromBody]KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											return WitOrderEntities(null, filter);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										/// <summary>
							 | 
						|||
| 
								 | 
							
										/// 查询
							 | 
						|||
| 
								 | 
							
										/// </summary>
							 | 
						|||
| 
								 | 
							
										/// <param name="pageFilter"></param>
							 | 
						|||
| 
								 | 
							
										/// <returns></returns>
							 | 
						|||
| 
								 | 
							
										[HttpPost, Route("Paged")]
							 | 
						|||
| 
								 | 
							
										public PagedActionResult<T_PF_FLOW_INSTANCE> Paged([FromBody]KeywordPageFilter pageFilter)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											return WitPaged(null, pageFilter);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										/// <summary>
							 | 
						|||
| 
								 | 
							
										/// 查询
							 | 
						|||
| 
								 | 
							
										/// </summary>
							 | 
						|||
| 
								 | 
							
										/// <param name="pageFilter"></param>
							 | 
						|||
| 
								 | 
							
										/// <returns></returns>
							 | 
						|||
| 
								 | 
							
										[HttpPost, Route("OrderPaged")]
							 | 
						|||
| 
								 | 
							
										public PagedActionResult<T_PF_FLOW_INSTANCE> OrderPaged([FromBody]KeywordPageFilter pageFilter)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											return WitOrderPaged(null, pageFilter);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										/// <summary>
							 | 
						|||
| 
								 | 
							
										/// 删除
							 | 
						|||
| 
								 | 
							
										/// </summary>
							 | 
						|||
| 
								 | 
							
										/// <param name="id"></param>
							 | 
						|||
| 
								 | 
							
										/// <returns></returns>
							 | 
						|||
| 
								 | 
							
										[HttpGet, Route("Delete")]
							 | 
						|||
| 
								 | 
							
										public JsonActionResult<bool> Delete(string id)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											return WitDelete(id);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										/// <summary>
							 | 
						|||
| 
								 | 
							
										/// 更新
							 | 
						|||
| 
								 | 
							
										/// </summary>
							 | 
						|||
| 
								 | 
							
										/// <param name="id"></param>
							 | 
						|||
| 
								 | 
							
										/// <returns></returns>
							 | 
						|||
| 
								 | 
							
										[HttpPost, Route("Update")]
							 | 
						|||
| 
								 | 
							
										public JsonActionResult<bool> Update([FromBody]T_PF_FLOW_INSTANCE entity)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											return WitUpdate(entity);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										/// <summary>
							 | 
						|||
| 
								 | 
							
										/// 批量删除
							 | 
						|||
| 
								 | 
							
										/// </summary>
							 | 
						|||
| 
								 | 
							
										/// <param name="ids"></param>
							 | 
						|||
| 
								 | 
							
										/// <returns></returns>
							 | 
						|||
| 
								 | 
							
										[HttpGet, Route("BatchDelete")]
							 | 
						|||
| 
								 | 
							
										public JsonActionResult<bool> BatchDelete(string ids)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											return WitBatchDelete(ids);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										/// <summary>
							 | 
						|||
| 
								 | 
							
										/// 获得单条实体数据
							 | 
						|||
| 
								 | 
							
										/// </summary>
							 | 
						|||
| 
								 | 
							
										/// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
										/// <returns></returns>
							 | 
						|||
| 
								 | 
							
										[HttpPost, Route("Get")]
							 | 
						|||
| 
								 | 
							
										public JsonActionResult<T_PF_FLOW_INSTANCE> Get([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											return WitEntity(null, filter);
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										[HttpPost, Route("Add")]
							 | 
						|||
| 
								 | 
							
										public JsonActionResult<bool> Add([FromBody] JObject obj)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											return SafeExecute<bool>(() =>
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												var org = this.GetEntity<T_FM_ORGANIZATION>(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<T_FM_USER>();
							 | 
						|||
| 
								 | 
							
												this.AddEntity< T_FM_USER>(user);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
												var flowInstance = obj.ToObject<T_PF_FLOW_INSTANCE>();
							 | 
						|||
| 
								 | 
							
												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<T_FM_USER>(param);
							 | 
						|||
| 
								 | 
							
												return true;
							 | 
						|||
| 
								 | 
							
											});
							 | 
						|||
| 
								 | 
							
											 
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										[HttpPost, Route("GetFlow")]
							 | 
						|||
| 
								 | 
							
										public JsonActionResult<FlowResponse> GetFlow([FromBody]KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											return SafeExecute<FlowResponse>(() =>
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												var flowService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService<IPFFlowService>();
							 | 
						|||
| 
								 | 
							
												return flowService.GetFlow(filter);
							 | 
						|||
| 
								 | 
							
											});
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										[HttpPost, Route("PermitFlow")]
							 | 
						|||
| 
								 | 
							
										public JsonActionResult<bool> PermitFlow([FromBody] VerificationReq request)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											return SafeExecute<bool>(() =>
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												var fmFlowPermitService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService<IFMFlowPermitService>();
							 | 
						|||
| 
								 | 
							
												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<bool> PassFlowByBatch([FromBody] VerificationPassBatchReq request)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											return SafeExecute<bool>(() =>
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												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;
							 | 
						|||
| 
								 | 
							
											});
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										/// <summary>
							 | 
						|||
| 
								 | 
							
										/// 加载列表
							 | 
						|||
| 
								 | 
							
										/// </summary>
							 | 
						|||
| 
								 | 
							
										[HttpPost, Route("QueryFlowInstance")]
							 | 
						|||
| 
								 | 
							
										public PagedActionResult<T_PF_FLOW_INSTANCE> QueryFlowInstance([FromBody]KeywordPageFilter pageFilter)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											return SafeGetPagedData<T_PF_FLOW_INSTANCE>(result =>
							 | 
						|||
| 
								 | 
							
										   {
							 | 
						|||
| 
								 | 
							
											   var flowService = APT.Infrastructure.Api.ServiceLocator.Instance.GetService<IPFFlowService>();
							 | 
						|||
| 
								 | 
							
											   var data=  flowService.QueryFlowInstance(pageFilter);
							 | 
						|||
| 
								 | 
							
											   result.Data = data.Items;
							 | 
						|||
| 
								 | 
							
											   result.TotalCount = data.TotalCount;
							 | 
						|||
| 
								 | 
							
										   });
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										/// <summary>
							 | 
						|||
| 
								 | 
							
										/// 查询操作日志
							 | 
						|||
| 
								 | 
							
										/// </summary>
							 | 
						|||
| 
								 | 
							
										/// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
										/// <returns></returns>
							 | 
						|||
| 
								 | 
							
										[HttpPost, Route("GetOperHistoryList")]
							 | 
						|||
| 
								 | 
							
										public JsonActionResult<IEnumerable<T_PF_FLOW_INSTANCE_OPER_HIS>> GetOperHistoryList([FromBody]KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											return SafeExecute<IEnumerable<T_PF_FLOW_INSTANCE_OPER_HIS>>(() =>
							 | 
						|||
| 
								 | 
							
											{
							 | 
						|||
| 
								 | 
							
												return this.GetOrderEntities<T_PF_FLOW_INSTANCE_OPER_HIS>(null, filter);
							 | 
						|||
| 
								 | 
							
											});
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
										
							 | 
						|||
| 
								 | 
							
										/// <summary>
							 | 
						|||
| 
								 | 
							
										/// 加载自定人员
							 | 
						|||
| 
								 | 
							
										/// </summary>
							 | 
						|||
| 
								 | 
							
										/// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
										/// <returns></returns>
							 | 
						|||
| 
								 | 
							
										[HttpPost, Route("LoadUser")]
							 | 
						|||
| 
								 | 
							
										public FlowLoadResult LoadUser([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											if (filter == null)
							 | 
						|||
| 
								 | 
							
												filter = new KeywordFilter();
							 | 
						|||
| 
								 | 
							
											var result = new FlowLoadResult();
							 | 
						|||
| 
								 | 
							
											var list = this.GetEntities<T_FM_USER>(null, filter).ToList();
							 | 
						|||
| 
								 | 
							
											result.count = list.Count;
							 | 
						|||
| 
								 | 
							
											result.data = list;
							 | 
						|||
| 
								 | 
							
											return result;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										/// <summary>
							 | 
						|||
| 
								 | 
							
										/// 加载自定角色
							 | 
						|||
| 
								 | 
							
										/// </summary>
							 | 
						|||
| 
								 | 
							
										/// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
										/// <returns></returns>
							 | 
						|||
| 
								 | 
							
										[HttpPost, Route("LoadRole")]
							 | 
						|||
| 
								 | 
							
										public FlowLoadResult LoadRole([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											if (filter == null)
							 | 
						|||
| 
								 | 
							
												filter = new KeywordFilter();
							 | 
						|||
| 
								 | 
							
											var result = new FlowLoadResult();
							 | 
						|||
| 
								 | 
							
											var list = this.GetEntities<T_FM_ROLE>(null, filter).ToList();
							 | 
						|||
| 
								 | 
							
											result.count = list.Count;
							 | 
						|||
| 
								 | 
							
											result.data = list;
							 | 
						|||
| 
								 | 
							
											return result;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
										/// <summary>
							 | 
						|||
| 
								 | 
							
										/// 加载自定组织
							 | 
						|||
| 
								 | 
							
										/// </summary>
							 | 
						|||
| 
								 | 
							
										/// <param name="filter"></param>
							 | 
						|||
| 
								 | 
							
										/// <returns></returns>
							 | 
						|||
| 
								 | 
							
										[HttpPost, Route("LoadOrg")]
							 | 
						|||
| 
								 | 
							
										public FlowLoadResult LoadOrg([FromBody] KeywordFilter filter)
							 | 
						|||
| 
								 | 
							
										{
							 | 
						|||
| 
								 | 
							
											if (filter == null)
							 | 
						|||
| 
								 | 
							
												filter = new KeywordFilter();
							 | 
						|||
| 
								 | 
							
											var result = new FlowLoadResult();
							 | 
						|||
| 
								 | 
							
											var list = this.GetEntities<T_FM_ORGANIZATION>(null, filter).ToList();
							 | 
						|||
| 
								 | 
							
											result.count = list.Count;
							 | 
						|||
| 
								 | 
							
											result.data = list;
							 | 
						|||
| 
								 | 
							
											return result;
							 | 
						|||
| 
								 | 
							
										}
							 | 
						|||
| 
								 | 
							
									}
							 | 
						|||
| 
								 | 
							
								}
							 |