Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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();
            }
        }