public IActionResult Map(CreateFromMapModel args) { if (!args.SourceEntityId.HasValue || args.SourceEntityId.Value.Equals(Guid.Empty)) { if (args.SourceEntityName.IsNotEmpty()) { var entityMeta = _entityFinder.FindByName(args.SourceEntityName); args.SourceEntityId = entityMeta.EntityId; } } if (!args.TargetEntityId.HasValue || args.TargetEntityId.Value.Equals(Guid.Empty)) { if (args.TargetEntityName.IsNotEmpty()) { var entityMeta = _entityFinder.FindByName(args.TargetEntityName); args.TargetEntityId = entityMeta.EntityId; } } if (!args.SourceEntityId.HasValue || !args.TargetEntityId.HasValue || args.SourceRecordId.Equals(Guid.Empty)) { return(NotSpecifiedRecord()); } var newId = _dataMapper.Create(args.SourceEntityId.Value, args.TargetEntityId.Value, args.SourceRecordId); return(CreateSuccess(new { entityid = args.TargetEntityId, id = newId })); }
public IActionResult ForwardAndAppend(Guid entityid, Guid referencedrecordid, Guid workflowid, Guid stageid, Guid?instanceId, string relationshipname) { if (entityid.Equals(Guid.Empty) || referencedrecordid.Equals(Guid.Empty) || workflowid.Equals(Guid.Empty) || stageid.Equals(Guid.Empty)) { return(JError(T["parameter_error"])); } var entityMeta = _entityFinder.FindById(entityid); if (entityMeta == null) { return(NotFound()); } var flowInfo = _workFlowFinder.Find(n => n.WorkFlowId == workflowid); if (flowInfo == null) { return(NotFound()); } var stages = _processStageService.Query(n => n .Where(f => f.WorkFlowId == flowInfo.WorkFlowId) .Sort(s => s.SortAscending(f => f.StageOrder))); var currentStage = stages.Find(n => n.ProcessStageId == stageid); var prevStage = stages.Find(n => n.StageOrder == currentStage.StageOrder - 1); if (currentStage.EntityId.Equals(prevStage.EntityId)) { return(JError(T["parameter_error"])); } BusinessProcessFlowInstance bpfInstance = null; if (instanceId.HasValue && !instanceId.Value.Equals(Guid.Empty)) { bpfInstance = _businessProcessFlowInstanceService.Find(n => n.BusinessProcessFlowInstanceId == instanceId && n.WorkFlowId == workflowid); if (bpfInstance == null) { return(NotFound()); } } if (bpfInstance == null) { instanceId = Guid.NewGuid(); bpfInstance = new BusinessProcessFlowInstance(); bpfInstance.BusinessProcessFlowInstanceId = instanceId.Value; bpfInstance.WorkFlowId = workflowid; bpfInstance.ProcessStageId = stages.First().ProcessStageId; bpfInstance.Entity1Id = referencedrecordid; bpfInstance.ProcessEntityId = entityid; _businessProcessFlowInstanceService.Create(bpfInstance); } //是否存在单据转换规则 var entityMap = _entityMapFinder.Find(prevStage.EntityId, entityid); if (entityMap == null) { return(JOk(new { EntityId = entityid , StageId = stageid , BusinessFlowId = workflowid , BusinessFlowInstanceId = instanceId.Value , RelationShipName = relationshipname , ReferencedRecordId = referencedrecordid })); } var recordid = _dataMapper.Create(prevStage.EntityId, currentStage.EntityId, referencedrecordid); _businessProcessFlowInstanceUpdater.UpdateForward(workflowid, instanceId.Value, stageid, recordid); //更新当前记录的业务阶段 var updData = new Entity(entityMeta.Name); updData.SetIdValue(recordid); updData.SetAttributeValue("stageid", stageid); _dataUpdater.Update(updData); return(JOk(new { EntityId = entityid , RecordId = recordid , BusinessFlowId = workflowid , BusinessFlowInstanceId = instanceId.Value })); }