public override void Finish(TaskWorkStatus status, TaskWork task) { using (var scope = new TransactionScope()) { switch (status) { case TaskWorkStatus.K2ProcessApproved: ProjectInfo.FinishNode(ProjectId, FlowCode.Rebuild_LegalReview, NodeCode.Finish); var rbdPackage = new RebuildPackage(); rbdPackage.ProjectId = ProjectId; rbdPackage.GeneratePackageTask(); break; } scope.Complete(); } }
public override string Edit() { var taskUrl = string.Format("/Rebuild/Main#/LegalReview?projectId={0}", ProjectId); using (var scope = new TransactionScope()) { var rbdInfo = RebuildInfo.Search(e => e.ProjectId.Equals(ProjectId)).FirstOrDefault(); if (rbdInfo == null) { throw new Exception("Could not find the Rebuild Info, please check it!"); } TaskWork.Cancel(t => t.RefID == ProjectId && t.Status == TaskWorkStatus.UnFinish && t.TypeCode == this.WorkflowCode);//取消老的流程实例的所有未完成任务 var task = rbdInfo.GenerateTaskWork(WorkflowCode, "RebuildLegalReview", "RebuildLegalReview", taskUrl); task.ActivityName = NodeCode.Start; task.ActionName = SetTaskActionName(ProjectId); TaskWork.Add(task); var package = RebuildPackage.GetRebuildPackageInfo(ProjectId); if (package != null) { package.ProjectId = ProjectId; package.CompleteActorPackageTask(rbdInfo.AssetActorAccount); } IsHistory = true; Update(this); ProjectInfo.Reset(ProjectId, WorkflowCode); Mapper.CreateMap <RebuildLegalReview, RebuildLegalReview>(); var newLeaseLR = Mapper.Map <RebuildLegalReview>(this); newLeaseLR.Id = Guid.Empty; newLeaseLR.ProcInstID = null; newLeaseLR.IsHistory = false; newLeaseLR.Comments = null; newLeaseLR.Save("Edit"); CopyAttachment(Id.ToString(), newLeaseLR.Id.ToString()); CopyAppUsers(Id.ToString(), newLeaseLR.Id.ToString()); scope.Complete(); } return(taskUrl); }
public override string Edit() { var taskUrl = string.Format("/Rebuild/Main#/ConsInfo?projectId={0}", ProjectId); using (var scope = new TransactionScope()) { var rbdInfo = RebuildInfo.FirstOrDefault(e => e.ProjectId.Equals(ProjectId)); if (rbdInfo == null) { throw new Exception("Could not find the Rebuild Info, please check it!"); } var task = rbdInfo.GenerateTaskWork(FlowCode.Rebuild_ConsInfo, WorkflowCode, WorkflowCode, taskUrl); task.ActivityName = NodeCode.Start; task.ActionName = SetTaskActionName(ProjectId); TaskWork.Add(task); var package = RebuildPackage.GetRebuildPackageInfo(ProjectId); if (package != null) { package.ProjectId = ProjectId; package.CompleteActorPackageTask(rbdInfo.AssetActorAccount); } IsHistory = true; Update(this); ProjectInfo.Reset(ProjectId, FlowCode.Rebuild_ConsInfo); Mapper.CreateMap <RebuildConsInfo, RebuildConsInfo>(); var form = Mapper.Map <RebuildConsInfo>(this); form.Id = Guid.Empty; form.ProcInstID = null; form.IsHistory = false; form.Comments = null; form.Save("Edit"); CopyAttachment(Id.ToString(), form.Id.ToString()); CopyAppUsers(Id.ToString(), form.Id.ToString()); CopyReinvestmentBasicInfo(ReinBasicInfo, Id); CopyReinvestmentCost(ReinCost, Id); CopyWriteOffAmount(WriteOff, Id); scope.Complete(); } return(taskUrl); }
protected override void ChangeWorkflowApprovers(List <TaskWork> taskWorks, List <ApproveDialogUser> prevApprovers, ApproveUsers currApprover) { RebuildPackage packageInfo = null; if (taskWorks.Count > 0) { string refID = taskWorks[0].RefID; packageInfo = RebuildPackage.FirstOrDefault(i => i.ProjectId == refID && i.IsHistory == false); } foreach (var taskWork in taskWorks) { List <ProcessDataField> dataFields = null; switch (taskWork.TypeCode) { case FlowCode.Rebuild_Package: var package = new RebuildPackage(); package.AppUsers = currApprover; dataFields = package.SetWorkflowDataFields(null); ApproveDialogUser packageApprovers = null; if (packageInfo == null) { packageApprovers = prevApprovers.FirstOrDefault(e => e.FlowCode == FlowCode.Rebuild_Package); } else { packageApprovers = prevApprovers.FirstOrDefault(e => e.RefTableID == packageInfo.Id.ToString()); } if (packageApprovers != null) { SimpleEmployee receiver = null; if (taskWork.ReceiverAccount == packageApprovers.MarketMgrCode && packageApprovers.MarketMgrCode != currApprover.MarketMgr.Code) { receiver = currApprover.MarketMgr; } if (taskWork.ReceiverAccount == packageApprovers.RegionalMgrCode && packageApprovers.RegionalMgrCode != currApprover.RegionalMgr.Code) { receiver = currApprover.RegionalMgr; } if (taskWork.ReceiverAccount == packageApprovers.MDDCode && packageApprovers.MDDCode != currApprover.MDD.Code) { receiver = currApprover.MDD; } if (taskWork.ReceiverAccount == packageApprovers.GMCode && packageApprovers.GMCode != currApprover.GM.Code) { receiver = currApprover.GM; } if (taskWork.ReceiverAccount == packageApprovers.FCCode && packageApprovers.FCCode != currApprover.FC.Code) { receiver = currApprover.FC; } //if (taskWork.ReceiverAccount == packageApprovers.RDDCode // && packageApprovers.RDDCode != currApprover.RDD.Code) //{ // receiver = currApprover.RDD; //} if (taskWork.ReceiverAccount == packageApprovers.VPGMCode && packageApprovers.VPGMCode != currApprover.VPGM.Code) { receiver = currApprover.VPGM; } if (taskWork.ReceiverAccount == packageApprovers.MCCLAssetDtrCode && packageApprovers.MCCLAssetDtrCode != currApprover.MCCLAssetDtr.Code) { receiver = currApprover.MCCLAssetDtr; } if (taskWork.ReceiverAccount == packageApprovers.CDOCode && packageApprovers.CDOCode != currApprover.CDO.Code) { receiver = currApprover.CDO; } if (taskWork.ReceiverAccount == packageApprovers.CFOCode && packageApprovers.CFOCode != currApprover.CFO.Code) { receiver = currApprover.CFO; } else { if (taskWork.ProcInstID.HasValue) { UpdateWorkflowDataField(taskWork.ProcInstID.Value, dataFields); } } if (receiver != null) { RedirectWorkflowTask(taskWork.K2SN, taskWork.ReceiverAccount, receiver.Code, dataFields); taskWork.ReceiverAccount = receiver.Code; taskWork.ReceiverNameENUS = receiver.NameENUS; taskWork.ReceiverNameZHCN = receiver.NameZHCN; } if (currApprover.MarketMgr != null) { packageApprovers.MarketMgrCode = currApprover.MarketMgr.Code; } if (currApprover.RegionalMgr != null) { packageApprovers.RegionalMgrCode = currApprover.RegionalMgr.Code; } if (currApprover.DD != null) { packageApprovers.DDCode = currApprover.DD.Code; } if (currApprover.MDD != null) { packageApprovers.MDDCode = currApprover.MDD.Code; } if (currApprover.GM != null) { packageApprovers.GMCode = currApprover.GM.Code; } if (currApprover.FC != null) { packageApprovers.FCCode = currApprover.FC.Code; } if (currApprover.RDD != null) { packageApprovers.RDDCode = currApprover.RDD.Code; } if (currApprover.VPGM != null) { packageApprovers.VPGMCode = currApprover.VPGM.Code; } if (currApprover.MCCLAssetDtr != null) { packageApprovers.MCCLAssetDtrCode = currApprover.MCCLAssetDtr.Code; } if (currApprover.CDO != null) { packageApprovers.CDOCode = currApprover.CDO.Code; } if (currApprover.CFO != null) { packageApprovers.CFOCode = currApprover.CFO.Code; } packageApprovers.NoticeUsers = ""; foreach (var noticeUser in currApprover.NoticeUsers) { if (string.IsNullOrEmpty(packageApprovers.NoticeUsers)) { packageApprovers.NoticeUsers = noticeUser.Code; } else { packageApprovers.NoticeUsers += ";" + noticeUser.Code; } } packageApprovers.NecessaryNoticeUsers = ""; foreach (var noticeUser in currApprover.NecessaryNoticeUsers) { if (string.IsNullOrEmpty(packageApprovers.NecessaryNoticeUsers)) { packageApprovers.NecessaryNoticeUsers = noticeUser.Code; } else { packageApprovers.NecessaryNoticeUsers += ";" + noticeUser.Code; } } packageApprovers.Update(); } break; } } }
public void Save(bool pushOrNot) { using (TransactionScope tranScope = new TransactionScope()) { var projectInfo = ProjectInfo.Get(Id); if (projectInfo == null) { ProjectId = ProjectInfo.CreateDLProject(Id, FlowCode.Rebuild, USCode, NodeCode.Start, ClientCookie.UserCode, pushOrNot); var rebuildInfo = new RebuildInfo(); rebuildInfo.Id = Guid.NewGuid(); rebuildInfo.ProjectId = ProjectId; rebuildInfo.USCode = USCode; rebuildInfo.CreateTime = DateTime.Now; rebuildInfo.CreateUserAccount = ClientCookie.UserCode; rebuildInfo.CreateUserNameENUS = ClientCookie.UserNameENUS; rebuildInfo.CreateUserNameZHCN = ClientCookie.UserNameZHCN; rebuildInfo.GBDate = GBDate; rebuildInfo.ReopenDate = ReopenDate; rebuildInfo.Add(); var rebuildPackage = new RebuildPackage(); rebuildPackage.Id = Guid.NewGuid(); rebuildPackage.ProjectId = ProjectId; rebuildPackage.IsHistory = false; rebuildPackage.ChangeLandlordType = ChangeLandlordType; rebuildPackage.NewLandlord = ChangeLandLordDESC; rebuildPackage.ChangeRentalType = ChangeRentalType; rebuildPackage.ChangeRentalTypeDESC = ChangeRentalTypeDESC; rebuildPackage.ChangeLeaseTermType = ChangeLeaseTermType; rebuildPackage.ChangeLeaseTermDESC = ChangeLeaseTermDESC; rebuildPackage.ChangeRedLineType = ChangeRedLineType; rebuildPackage.ChangeRedLineTypeDESC = ChangeRedLineTypeDESC; //rebuildPackage.NewRentalStructure = NewRentalStructure; rebuildPackage.Add(); var projectContractInfo = new ProjectContractInfo(); projectContractInfo.Id = Guid.NewGuid(); projectContractInfo.ProjectId = ProjectId; projectContractInfo.ContractInfoId = Guid.Empty; projectContractInfo.CreatedTime = DateTime.Now; projectContractInfo.WriteBack = false; projectContractInfo.EditMode = EditMode; projectContractInfo.PartyAFullName = PartyAFullName; projectContractInfo.McDLegalEntity = ContractEntityName; projectContractInfo.McDOwnership = McdOwnership; projectContractInfo.ContactPerson = ContactPerson; projectContractInfo.ContactMode = ContactMode; projectContractInfo.RentType = RentType; projectContractInfo.TotalLeasedArea = RentSize; projectContractInfo.LeasePurchaseTerm = ContractTerm; projectContractInfo.LeasePurchase = ContractType; projectContractInfo.StartDate = ContractStartDate; projectContractInfo.EndDate = ContraceEndDate; projectContractInfo.StartYear = ContractStartYear; projectContractInfo.EndYear = ContraceEndYear; projectContractInfo.RentCommencementDate = RentPaymentStartDate; projectContractInfo.DeadlineToNotice = DeadlineToNoticeLL; projectContractInfo.Changedafter2010 = ChangedAfter2010; projectContractInfo.RentStructure = RentStructure; projectContractInfo.WithEarlyTerminationClause = EarlyTerminationClause; projectContractInfo.EarlyTerminationClauseDetail = EarlyTerminationClauseDescription; projectContractInfo.RentPaymentArrangement = RentPaymentArrangement; projectContractInfo.HasDeposit = Deposit; projectContractInfo.DepositAmount = DepositAmount; projectContractInfo.RefundableDate = WhenRefund; projectContractInfo.WithPenaltyClause = withPenaltyClause; projectContractInfo.HasBankGuarantee = BankGuarantee; projectContractInfo.BGNumber = BankGuaranteeNumber; projectContractInfo.BGAmount = BankGuaranteeAmount; projectContractInfo.BGCommencementDate = BGCommencementDate; projectContractInfo.BGEndDate = BGEndDate; projectContractInfo.Add(); var rebuildConsInfo = new RebuildConsInfo(); rebuildConsInfo.Id = Guid.NewGuid(); rebuildConsInfo.ProjectId = ProjectId; rebuildConsInfo.IsHistory = false; rebuildConsInfo.CreateTime = DateTime.Now; rebuildConsInfo.CreateUserAccount = ClientCookie.UserCode; rebuildConsInfo.Add(); var reinvestmentBasicInfo = new ReinvestmentBasicInfo(); reinvestmentBasicInfo.ConsInfoID = rebuildConsInfo.Id; reinvestmentBasicInfo.EstimatedSeatNo = OriginalSeatNO; reinvestmentBasicInfo.RightSizingSeatNo = AfterRebuildSeatNO; reinvestmentBasicInfo.NewDesignType = AfterRebuildDesignType; reinvestmentBasicInfo.NewOperationSize = AfterRebuildOperationArea; reinvestmentBasicInfo.Add(); var rebuildConsInvtChecking = new RebuildConsInvtChecking(); rebuildConsInvtChecking.Id = Guid.NewGuid(); rebuildConsInvtChecking.ProjectId = ProjectId; rebuildConsInvtChecking.IsHistory = false; rebuildConsInvtChecking.Add(); var writeOffAmount = new WriteOffAmount(); writeOffAmount.Id = Guid.NewGuid(); writeOffAmount.ConsInfoID = rebuildConsInvtChecking.Id; writeOffAmount.TotalActual = Rebuild_TotalWO_Act; writeOffAmount.Add(); var reinvestmentCost = new ReinvestmentCost(); reinvestmentCost.Id = Guid.NewGuid(); reinvestmentCost.ConsInfoID = rebuildConsInvtChecking.Id; reinvestmentCost.TotalReinvestmentFAAct = Rebuild_TotalReinvestment_Act; reinvestmentCost.Add(); } else { ProjectId = projectInfo.ProjectId; projectInfo.IsPushed = pushOrNot; projectInfo.Update(); var rebuildInfo = RebuildInfo.FirstOrDefault(i => i.ProjectId == ProjectId); if (rebuildInfo != null) { rebuildInfo.GBDate = GBDate; rebuildInfo.ReopenDate = ReopenDate; rebuildInfo.Update(); } else { rebuildInfo = new RebuildInfo(); rebuildInfo.Id = Guid.NewGuid(); rebuildInfo.ProjectId = ProjectId; rebuildInfo.USCode = USCode; rebuildInfo.CreateTime = DateTime.Now; rebuildInfo.CreateUserAccount = ClientCookie.UserCode; rebuildInfo.CreateUserNameENUS = ClientCookie.UserNameENUS; rebuildInfo.CreateUserNameZHCN = ClientCookie.UserNameZHCN; rebuildInfo.GBDate = GBDate; rebuildInfo.ReopenDate = ReopenDate; rebuildInfo.Add(); } var rebuildPackage = RebuildPackage.FirstOrDefault(i => i.ProjectId == ProjectId && !i.IsHistory); if (rebuildPackage != null) { rebuildPackage.ChangeLandlordType = ChangeLandlordType; rebuildPackage.NewLandlord = ChangeLandLordDESC; rebuildPackage.ChangeRentalType = ChangeRentalType; rebuildPackage.ChangeRentalTypeDESC = ChangeRentalTypeDESC; rebuildPackage.ChangeLeaseTermType = ChangeLeaseTermType; rebuildPackage.ChangeLeaseTermDESC = ChangeLeaseTermDESC; rebuildPackage.ChangeRedLineType = ChangeRedLineType; rebuildPackage.ChangeRedLineTypeDESC = ChangeRedLineTypeDESC; //rebuildPackage.NewRentalStructure = NewRentalStructure; rebuildPackage.Update(); } else { rebuildPackage = new RebuildPackage(); rebuildPackage.Id = Guid.NewGuid(); rebuildPackage.ProjectId = ProjectId; rebuildPackage.IsHistory = false; rebuildPackage.ChangeLandlordType = ChangeLandlordType; rebuildPackage.NewLandlord = ChangeLandLordDESC; rebuildPackage.ChangeRentalType = ChangeRentalType; rebuildPackage.ChangeRentalTypeDESC = ChangeRentalTypeDESC; rebuildPackage.ChangeLeaseTermType = ChangeLeaseTermType; rebuildPackage.ChangeLeaseTermDESC = ChangeLeaseTermDESC; rebuildPackage.ChangeRedLineType = ChangeRedLineType; rebuildPackage.ChangeRedLineTypeDESC = ChangeRedLineTypeDESC; //rebuildPackage.NewRentalStructure = NewRentalStructure; rebuildPackage.Add(); } var projectContractInfo = ProjectContractInfo.FirstOrDefault(i => i.ProjectId == ProjectId); if (projectContractInfo != null) { projectContractInfo.EditMode = EditMode; projectContractInfo.PartyAFullName = PartyAFullName; projectContractInfo.McDLegalEntity = ContractEntityName; projectContractInfo.McDOwnership = McdOwnership; projectContractInfo.ContactPerson = ContactPerson; projectContractInfo.ContactMode = ContactMode; projectContractInfo.RentType = RentType; projectContractInfo.TotalLeasedArea = RentSize; projectContractInfo.LeasePurchaseTerm = ContractTerm; projectContractInfo.LeasePurchase = ContractType; projectContractInfo.StartDate = ContractStartDate; projectContractInfo.EndDate = ContraceEndDate; projectContractInfo.StartYear = ContractStartYear; projectContractInfo.EndYear = ContraceEndYear; projectContractInfo.RentCommencementDate = RentPaymentStartDate; projectContractInfo.DeadlineToNotice = DeadlineToNoticeLL; projectContractInfo.Changedafter2010 = ChangedAfter2010; projectContractInfo.RentStructure = RentStructure; projectContractInfo.WithEarlyTerminationClause = EarlyTerminationClause; projectContractInfo.EarlyTerminationClauseDetail = EarlyTerminationClauseDescription; projectContractInfo.RentPaymentArrangement = RentPaymentArrangement; projectContractInfo.HasDeposit = Deposit; projectContractInfo.DepositAmount = DepositAmount; projectContractInfo.RefundableDate = WhenRefund; projectContractInfo.WithPenaltyClause = withPenaltyClause; projectContractInfo.HasBankGuarantee = BankGuarantee; projectContractInfo.BGNumber = BankGuaranteeNumber; projectContractInfo.BGAmount = BankGuaranteeAmount; projectContractInfo.BGCommencementDate = BGCommencementDate; projectContractInfo.BGEndDate = BGEndDate; projectContractInfo.Update(); } else { projectContractInfo = new ProjectContractInfo(); projectContractInfo.Id = Guid.NewGuid(); projectContractInfo.ProjectId = ProjectId; projectContractInfo.ContractInfoId = Guid.Empty; projectContractInfo.CreatedTime = DateTime.Now; projectContractInfo.WriteBack = false; projectContractInfo.EditMode = EditMode; projectContractInfo.PartyAFullName = PartyAFullName; projectContractInfo.McDLegalEntity = ContractEntityName; projectContractInfo.McDOwnership = McdOwnership; projectContractInfo.ContactPerson = ContactPerson; projectContractInfo.ContactMode = ContactMode; projectContractInfo.RentType = RentType; projectContractInfo.TotalLeasedArea = RentSize; projectContractInfo.LeasePurchaseTerm = ContractTerm; projectContractInfo.LeasePurchase = ContractType; projectContractInfo.StartDate = ContractStartDate; projectContractInfo.EndDate = ContraceEndDate; projectContractInfo.StartYear = ContractStartYear; projectContractInfo.EndYear = ContraceEndYear; projectContractInfo.RentCommencementDate = RentPaymentStartDate; projectContractInfo.DeadlineToNotice = DeadlineToNoticeLL; projectContractInfo.Changedafter2010 = ChangedAfter2010; projectContractInfo.RentStructure = RentStructure; projectContractInfo.WithEarlyTerminationClause = EarlyTerminationClause; projectContractInfo.EarlyTerminationClauseDetail = EarlyTerminationClauseDescription; projectContractInfo.RentPaymentArrangement = RentPaymentArrangement; projectContractInfo.HasDeposit = Deposit; projectContractInfo.DepositAmount = DepositAmount; projectContractInfo.RefundableDate = WhenRefund; projectContractInfo.WithPenaltyClause = withPenaltyClause; projectContractInfo.HasBankGuarantee = BankGuarantee; projectContractInfo.BGNumber = BankGuaranteeNumber; projectContractInfo.BGAmount = BankGuaranteeAmount; projectContractInfo.BGCommencementDate = BGCommencementDate; projectContractInfo.BGEndDate = BGEndDate; projectContractInfo.Add(); } var rebuildConsInfo = RebuildConsInfo.FirstOrDefault(i => i.ProjectId == ProjectId && !i.IsHistory); if (rebuildConsInfo == null) { rebuildConsInfo = new RebuildConsInfo(); rebuildConsInfo.Id = Guid.NewGuid(); rebuildConsInfo.ProjectId = ProjectId; rebuildConsInfo.IsHistory = false; rebuildConsInfo.CreateTime = DateTime.Now; rebuildConsInfo.CreateUserAccount = ClientCookie.UserCode; rebuildConsInfo.Add(); } var reinvestmentBasicInfo = ReinvestmentBasicInfo.FirstOrDefault(i => i.ConsInfoID == rebuildConsInfo.Id); if (reinvestmentBasicInfo != null) { reinvestmentBasicInfo.EstimatedSeatNo = OriginalSeatNO; reinvestmentBasicInfo.RightSizingSeatNo = AfterRebuildSeatNO; reinvestmentBasicInfo.NewDesignType = AfterRebuildDesignType; reinvestmentBasicInfo.NewOperationSize = AfterRebuildOperationArea; reinvestmentBasicInfo.Update(); } else { reinvestmentBasicInfo = new ReinvestmentBasicInfo(); reinvestmentBasicInfo.ConsInfoID = rebuildConsInfo.Id; reinvestmentBasicInfo.EstimatedSeatNo = OriginalSeatNO; reinvestmentBasicInfo.RightSizingSeatNo = AfterRebuildSeatNO; reinvestmentBasicInfo.NewDesignType = AfterRebuildDesignType; reinvestmentBasicInfo.NewOperationSize = AfterRebuildOperationArea; reinvestmentBasicInfo.Add(); } var rebuildConsInvtChecking = RebuildConsInvtChecking.FirstOrDefault(i => i.ProjectId == ProjectId && !i.IsHistory); if (rebuildConsInvtChecking == null) { rebuildConsInvtChecking = new RebuildConsInvtChecking(); rebuildConsInvtChecking.Id = Guid.NewGuid(); rebuildConsInvtChecking.ProjectId = ProjectId; rebuildConsInvtChecking.IsHistory = false; rebuildConsInvtChecking.Add(); } var writeOffAmount = WriteOffAmount.FirstOrDefault(i => i.ConsInfoID == rebuildConsInvtChecking.Id); if (writeOffAmount != null) { writeOffAmount.TotalActual = Rebuild_TotalWO_Act; writeOffAmount.Update(); } else { writeOffAmount = new WriteOffAmount(); writeOffAmount.Id = Guid.NewGuid(); writeOffAmount.ConsInfoID = rebuildConsInvtChecking.Id; writeOffAmount.TotalActual = Rebuild_TotalWO_Act; writeOffAmount.Add(); } var reinvestmentCost = ReinvestmentCost.FirstOrDefault(i => i.ConsInfoID == rebuildConsInvtChecking.Id); if (reinvestmentCost != null) { reinvestmentCost.TotalReinvestmentFAAct = Rebuild_TotalReinvestment_Act; reinvestmentCost.Update(); } else { reinvestmentCost = new ReinvestmentCost(); reinvestmentCost.Id = Guid.NewGuid(); reinvestmentCost.ConsInfoID = rebuildConsInvtChecking.Id; reinvestmentCost.TotalReinvestmentFAAct = Rebuild_TotalReinvestment_Act; reinvestmentCost.Add(); } } tranScope.Complete(); } }
public void Submit(List <ProjectContractRevision> revisions, string flowCode) { revisions = revisions ?? new List <ProjectContractRevision>(); using (TransactionScope tranScope = new TransactionScope()) { StoreContractInfo contractInfo = this.ToStoreContractInfo(); ProjectContractRevision reInfo = new ProjectContractRevision(); #region 初始化项目的Revision信息 reInfo.Id = Guid.NewGuid(); reInfo.ProjectId = this.ProjectId; Guid srId = Guid.NewGuid(); reInfo.ProjectContractId = this.Id; reInfo.RevisionId = srId; reInfo.StoreContractInfoId = contractInfo.Id; reInfo.StoreID = this.StoreId; reInfo.StoreCode = this.StoreCode; reInfo.LeaseRecapID = this.LeaseRecapID; reInfo.ChangeDate = DateTime.Now; if (flowCode == FlowCode.MajorLease_ContractInfo) { MajorLeaseInfo info = MajorLeaseInfo.Search(e => e.ProjectId == ProjectId).FirstOrDefault(); reInfo.Rent = info.ChangeRentalType.HasValue && info.ChangeRentalType.Value ? "Y" : null; reInfo.Size = info.ChangeRedLineType.HasValue && info.ChangeRedLineType.Value ? "Y" : null; reInfo.LeaseTerm = info.ChangeLeaseTermType.HasValue && info.ChangeLeaseTermType.Value ? "Y" : null; reInfo.Entity = info.ChangeLandlordType.HasValue && info.ChangeLandlordType.Value ? "Y" : null; reInfo.Others = info.ChangeOtherType.HasValue && info.ChangeOtherType.Value ? "Y" : null; reInfo.RentStructureOld = info.OldRentalStructure; reInfo.RentStructureNew = info.NewRentalStructure; reInfo.RedlineAreaOld = info.OldChangeRedLineRedLineArea.HasValue ? info.OldChangeRedLineRedLineArea.ToString() : null; reInfo.RedlineAreaNew = info.NewChangeRedLineRedLineArea.HasValue ? info.NewChangeRedLineRedLineArea.ToString() : null; reInfo.LeaseChangeExpiryOld = info.OldChangeLeaseTermExpiraryDate; reInfo.LeaseChangeExpiryNew = info.NewChangeLeaseTermExpiraryDate; reInfo.LandlordOld = info.OldLandlord; reInfo.LandlordNew = info.NewLandlord; reInfo.OthersDescription = info.Others; reInfo.Description = info.LeaseChangeDescription; } else if (flowCode == FlowCode.Rebuild_ContractInfo) { RebuildPackage info = RebuildPackage.GetRebuildPackageInfo(ProjectId); reInfo.Rent = info.ChangeRentalType.HasValue && info.ChangeRentalType.Value ? "Y" : null; reInfo.Size = info.ChangeRedLineType.HasValue && info.ChangeRedLineType.Value ? "Y" : null; reInfo.LeaseTerm = info.ChangeLeaseTermType.HasValue && info.ChangeLeaseTermType.Value ? "Y" : null; reInfo.Entity = info.ChangeLandlordType.HasValue && info.ChangeLandlordType.Value ? "Y" : null; reInfo.Others = info.ChangeOtherType.HasValue && info.ChangeOtherType.Value ? "Y" : null; reInfo.RentStructureOld = info.OldRentalStructure; reInfo.RentStructureNew = info.NewRentalStructure; reInfo.RedlineAreaOld = info.OldChangeRedLineRedLineArea.HasValue ? info.OldChangeRedLineRedLineArea.ToString() : null; reInfo.RedlineAreaNew = info.NewChangeRedLineRedLineArea.HasValue ? info.NewChangeRedLineRedLineArea.ToString() : null; reInfo.LeaseChangeExpiryOld = info.OldChangeLeaseTermExpiraryDate; reInfo.LeaseChangeExpiryNew = info.NewChangeLeaseTermExpiraryDate; reInfo.LandlordOld = info.OldLandlord; reInfo.LandlordNew = info.NewLandlord; reInfo.OthersDescription = info.Others; reInfo.Description = info.LeaseChangeDescription; } #endregion if (this.EditMode == "EDIT") { if (flowCode == FlowCode.Closure_ContractInfo) { revisions = revisions.OrderBy(r => r.ChangeDate).ToList(); revisions.ForEach(r => { var sr = r.ToStoreContractRevision(); sr.Save(); r.RevisionId = sr.Id; //回写到ContractInfo中 if (sr.Rent == "Y") { this.RentStructure = sr.RentStructureNew; } if (sr.Size == "Y") { this.TotalLeasedArea = sr.RedlineAreaNew; } if (sr.LeaseTerm == "Y") { this.EndDate = sr.LeaseChangeExpiryNew; } if (sr.Entity == "Y") { this.PartyAFullName = sr.LandlordNew; } }); contractInfo = this.ToStoreContractInfo(); var sRIds = revisions.Select(e => e.RevisionId).ToList(); StoreContractRevision.Delete(e => e.StoreContractInfoId == contractInfo.Id && !sRIds.Contains(e.Id)); this.Save(revisions); } else { this.Save(); reInfo.Save(); var sr = reInfo.ToStoreContractRevision(); sr.Id = srId; sr.Save(); } contractInfo.Update(); } else { contractInfo.Id = Guid.NewGuid(); contractInfo.CreatedTime = DateTime.Now; contractInfo.Add(); this.ContractInfoId = contractInfo.Id; if (Any(e => e.Id == this.Id)) { this.Update(); } else { this.Add(); } //新增时不需要带入修订信息 ProjectContractRevision.Delete(r => r.ProjectContractId == this.Id); //if (flowCode != FlowCode.Renewal_ContractInfo) //{ // reInfo.StoreContractInfoId = contractInfo.Id; // reInfo.Save(); // var sr = reInfo.ToStoreContractRevision(); // sr.Id = srId; // sr.Save(); //} } //关闭任务 var task = TaskWork.FirstOrDefault(e => e.ReceiverAccount == ClientCookie.UserCode && e.TypeCode.Contains("ContractInfo") && e.RefID == this.ProjectId); if (task != null) { task.Finish(); } var projectInfo = ProjectInfo.FirstOrDefault(e => e.ProjectId == this.ProjectId && e.FlowCode.Contains("ContractInfo")); ProjectInfo.FinishNode(this.ProjectId, projectInfo.FlowCode, NodeCode.Finish, ProjectStatus.Finished); ProjectInfo.CompleteMainIfEnable(this.ProjectId); if (projectInfo.FlowCode == FlowCode.Renewal_ContractInfo) { if (ProjectInfo.IsFlowFinished(ProjectId, FlowCode.Renewal_SiteInfo)) { ProjectProgress.SetProgress(ProjectId, "100%"); } } tranScope.Complete(); } }