public override void Finish(TaskWorkStatus status, TaskWork task) { switch (status) { case TaskWorkStatus.K2ProcessDeclined: ProjectInfo.UpdateProjectStatus(ProjectId, FlowCode.Closure, ProjectStatus.Rejected); //删除未处理完成的任务 var oldTask = TaskWork.Search(i => i.SourceCode == FlowCode.Closure && i.RefID == this.ProjectId && i.Status == TaskWorkStatus.UnFinish).ToArray(); foreach (var taskItem in oldTask) { taskItem.Status = TaskWorkStatus.Cancel; } TaskWork.Update(oldTask); ProjectInfo.UpdateProjectStatus(ProjectId, FlowCode.Closure_ClosurePackage, ProjectStatus.Rejected); break; case TaskWorkStatus.K2ProcessApproved: //ClosurePackage的最后一步在K2中,但不属于审批 task.ActionName = ""; task.Update(); ProjectInfo.FinishNode(this.ProjectId, FlowCode.Closure_ClosurePackage, NodeCode.Closure_ClosurePackage_ResourceUpload, ProjectStatus.Finished); //Package流程走完后,在Actor处生成一条任务,供Actor上传Signed Termination Agreement与Signed Package //GenerateSignedPackageTask(ProjectId); if (!TaskWork.Any(i => i.RefID == this.ProjectId && i.SourceCode == FlowCode.Closure && i.TypeCode == FlowCode.Closure_ContractInfo && i.Status != TaskWorkStatus.Cancel)) { TaskWork taskWorkContractInfo = new TaskWork(); taskWorkContractInfo.SourceCode = FlowCode.Closure; taskWorkContractInfo.SourceNameENUS = FlowCode.Closure; taskWorkContractInfo.SourceNameZHCN = "关店流程"; taskWorkContractInfo.Status = TaskWorkStatus.UnFinish; taskWorkContractInfo.StatusNameZHCN = "任务"; taskWorkContractInfo.StatusNameENUS = "任务"; taskWorkContractInfo.RefID = ProjectId; taskWorkContractInfo.Id = Guid.NewGuid(); taskWorkContractInfo.CreateTime = DateTime.Now; //ClosureInfo closure = new ClosureInfo(); var closureInfo = ClosureInfo.GetByProjectId(ProjectId); taskWorkContractInfo.Title = TaskWork.BuildTitle(ProjectId, closureInfo.StoreNameZHCN, closureInfo.StoreNameENUS); taskWorkContractInfo.TypeCode = FlowCode.Closure_ContractInfo; taskWorkContractInfo.TypeNameENUS = "ContractInfo"; taskWorkContractInfo.TypeNameZHCN = "ContractInfo"; taskWorkContractInfo.ReceiverAccount = closureInfo.AssetActorAccount; taskWorkContractInfo.ReceiverNameENUS = closureInfo.AssetActorNameENUS; taskWorkContractInfo.ReceiverNameZHCN = closureInfo.AssetActorNameZHCN; taskWorkContractInfo.Url = SiteInfo.GetProjectHandlerPageUrl(FlowCode.Closure_ContractInfo, closureInfo.ProjectId); taskWorkContractInfo.StoreCode = closureInfo.USCode; taskWorkContractInfo.ActivityName = "Start"; taskWorkContractInfo.Add(); } //为了方便测试,暂时做成Package走完立刻生成ConsInvtChecking和ClourseMemo //var consInvtChecking = new ClosureConsInvtChecking(); //consInvtChecking.GenerateConsInvtCheckingTask(ProjectId); var memo = new ClosureMemo(); memo.GenerateClourseMemoTask(ProjectId); //如果是Complete了的流程,Edit后流程走完需要重新把主流程状态改成Complete ProjectInfo.CompleteMainIfEnable(ProjectId); break; } }
public void Save(bool pushOrNot) { using (TransactionScope tranScope = new TransactionScope()) { var projectInfo = ProjectInfo.Get(Id); if (projectInfo == null) { ProjectId = ProjectInfo.CreateDLProject(Id, FlowCode.Closure, USCode, NodeCode.Start, ClientCookie.UserCode, pushOrNot); var closureInfo = new ClosureInfo(); closureInfo.Id = Guid.NewGuid(); closureInfo.ProjectId = ProjectId; closureInfo.USCode = USCode; closureInfo.ActualCloseDate = CloseDate; closureInfo.ClosureTypeCode = ClosureTypeCode; closureInfo.ClosureReasonCode = ClosureReasonCode; closureInfo.ClosureReasonRemark = ClosureReasonRemark; closureInfo.RelocationCode = RelocationCode; closureInfo.CreateDate = DateTime.Now; closureInfo.CreateUserAccount = ClientCookie.UserCode; closureInfo.CreateUserNameENUS = ClientCookie.UserNameENUS; closureInfo.CreateUserNameZHCN = ClientCookie.UserNameZHCN; closureInfo.Add(); var closurePackage = new ClosurePackage(); closurePackage.Id = Guid.NewGuid(); closurePackage.ProjectId = ProjectId; closurePackage.RelocationPipelineID = RelocatedPipelineID; closurePackage.IsHistory = false; closurePackage.CreateUserAccount = ClientCookie.UserCode; closurePackage.CreateTime = DateTime.Now; closurePackage.Add(); var closureConsInvtChecking = new ClosureConsInvtChecking(); closureConsInvtChecking.Id = Guid.NewGuid(); closureConsInvtChecking.ProjectId = ProjectId; closureConsInvtChecking.IsHistory = false; closureConsInvtChecking.CreateTime = DateTime.Now; closureConsInvtChecking.TotalActual = Closure_WO_Total_Act; closureConsInvtChecking.ClosingCostActual = Closure_ClosingCost_Act; closureConsInvtChecking.Add(); var closureMemo = new ClosureMemo(); closureMemo.Id = Guid.NewGuid(); closureMemo.ProjectId = ProjectId; closureMemo.CreateTime = DateTime.Now; closureMemo.ClosureNature = ClosureNatureType.Permanent; closureMemo.Status = true; closureMemo.Compensation = Closure_Compensation_Act; closureMemo.Add(); } else { ProjectId = projectInfo.ProjectId; projectInfo.IsPushed = pushOrNot; projectInfo.Update(); var closureInfo = ClosureInfo.FirstOrDefault(i => i.ProjectId == ProjectId); if (closureInfo != null) { closureInfo.ActualCloseDate = CloseDate; closureInfo.ClosureTypeCode = ClosureTypeCode; closureInfo.ClosureReasonCode = ClosureReasonCode; closureInfo.ClosureReasonRemark = ClosureReasonRemark; closureInfo.RelocationCode = RelocationCode; closureInfo.Update(); } else { closureInfo = new ClosureInfo(); closureInfo.Id = Guid.NewGuid(); closureInfo.ProjectId = ProjectId; closureInfo.USCode = USCode; closureInfo.ActualCloseDate = CloseDate; closureInfo.ClosureTypeCode = ClosureTypeCode; closureInfo.ClosureReasonCode = ClosureReasonCode; closureInfo.ClosureReasonRemark = ClosureReasonRemark; closureInfo.RelocationCode = RelocationCode; closureInfo.CreateDate = DateTime.Now; closureInfo.CreateUserAccount = ClientCookie.UserCode; closureInfo.CreateUserNameENUS = ClientCookie.UserNameENUS; closureInfo.CreateUserNameZHCN = ClientCookie.UserNameZHCN; closureInfo.Add(); } var closurePackage = ClosurePackage.Get(ProjectId); if (closurePackage != null) { closurePackage.RelocationPipelineID = RelocatedPipelineID; closurePackage.Update(); } else { closurePackage = new ClosurePackage(); closurePackage.Id = Guid.NewGuid(); closurePackage.ProjectId = ProjectId; closurePackage.RelocationPipelineID = RelocatedPipelineID; closurePackage.IsHistory = false; closurePackage.CreateUserAccount = ClientCookie.UserCode; closurePackage.CreateTime = DateTime.Now; closurePackage.Add(); } var closureConsInvtChecking = ClosureConsInvtChecking.Get(ProjectId); if (closureConsInvtChecking != null) { closureConsInvtChecking.TotalActual = Closure_WO_Total_Act; closureConsInvtChecking.ClosingCostActual = Closure_ClosingCost_Act; closureConsInvtChecking.Update(); } else { closureConsInvtChecking = new ClosureConsInvtChecking(); closureConsInvtChecking.Id = Guid.NewGuid(); closureConsInvtChecking.ProjectId = ProjectId; closureConsInvtChecking.IsHistory = false; closureConsInvtChecking.CreateTime = DateTime.Now; closureConsInvtChecking.TotalActual = Closure_WO_Total_Act; closureConsInvtChecking.ClosingCostActual = Closure_ClosingCost_Act; closureConsInvtChecking.Add(); } var closureMemo = ClosureMemo.FirstOrDefault(i => i.ProjectId == ProjectId); if (closureMemo != null) { closureMemo.Compensation = Closure_Compensation_Act; closureMemo.Update(); } else { closureMemo = new ClosureMemo(); closureMemo.Id = Guid.NewGuid(); closureMemo.ProjectId = ProjectId; closureMemo.CreateTime = DateTime.Now; closureMemo.ClosureNature = ClosureNatureType.Permanent; closureMemo.Status = true; closureMemo.Compensation = Closure_Compensation_Act; closureMemo.Add(); } } tranScope.Complete(); } }