示例#1
0
        public static ConsInfoDTO <RenewalInfo, RenewalConsInfo> InitPage(string projectId, string id = "")
        {
            RenewalInfo info     = RenewalInfo.Get(projectId);
            var         consInfo = RenewalConsInfo.Get(projectId, id);

            if (consInfo == null)
            {
                consInfo           = new RenewalConsInfo();
                consInfo.ProjectId = projectId;
            }
            var isOriginator = ClientCookie.UserCode == info.PMAccount;

            consInfo.IsProjectFreezed = consInfo.CheckIfFreezeProject(projectId);
            var nextRefTableId  = new Guid(FlowInfo.GetRefTableId("RenewalTool", projectId));
            var nextFlowStarted = ProjectInfo.IsFlowStarted(projectId, FlowCode.Renewal_Tool);
            var haveTask        = TaskWork.Any(t => t.RefID == projectId && t.TypeCode == FlowCode.Renewal_Tool && t.Status == TaskWorkStatus.UnFinish && t.ReceiverAccount == ClientCookie.UserCode);
            var projectComment  = ProjectComment.GetSavedComment(consInfo.Id, "RenewalConsInfo", ClientCookie.UserCode);

            if (string.IsNullOrEmpty(id))
            {
                consInfo.HasReinvenstment = info.NeedProjectCostEst;
            }
            ConsInfoDTO <RenewalInfo, RenewalConsInfo> dto = new ConsInfoDTO <RenewalInfo, RenewalConsInfo>();

            dto.Entity         = consInfo;
            dto.Info           = info;
            dto.ReinBasicInfo  = ReinvestmentBasicInfo.GetByConsInfoId(consInfo.Id);
            dto.ReinCost       = ReinvestmentCost.GetByConsInfoId(consInfo.Id);
            dto.WriteOff       = WriteOffAmount.GetByConsInfoId(consInfo.Id);
            dto.ProjectComment = projectComment != null ? projectComment.Content : "";
            dto.Editable       = ProjectInfo.IsFlowEditable(projectId, FlowCode.Renewal_ConsInfo);
            dto.Recallable     = ProjectInfo.IsFlowRecallable(projectId, FlowCode.Renewal_ConsInfo);
            dto.Savable        = ProjectInfo.IsFlowSavable(projectId, FlowCode.Renewal_ConsInfo) && string.IsNullOrEmpty(id);
            return(dto);
        }
示例#2
0
        public void Resubmit(string comment, string SerialNumber, Action onExecuting = null)
        {
            var task       = TaskWork.FirstOrDefault(t => t.RefID == this.ProjectId && t.TypeCode == this.WorkflowCode && t.ReceiverAccount == ClientCookie.UserCode && t.Status == TaskWorkStatus.UnFinish);
            var dataFields = SetWorkflowDataFields(task);

            K2FxContext.Current.ApprovalProcess(SerialNumber, ClientCookie.UserCode, "Resubmit", comment, dataFields);
            using (TransactionScope tranScope = new TransactionScope())
            {
                this.CreateUserAccount = ClientCookie.UserCode;
                this.Update();
                if (this.HasReinvenstment)
                {
                    SaveApprovers();
                }
                ProjectInfo.FinishNode(this.ProjectId, this.WorkflowCode, NodeCode.Renewal_ConsInfo_Input);
                ProjectComment.AddComment(
                    ProjectCommentAction.ReSubmit,
                    comment,
                    this.Id,
                    this.TableName,
                    FlowCode.Renewal,
                    this.ProcInstId,
                    ProjectCommentStatus.Submit
                    );
                if (onExecuting != null)
                {
                    onExecuting();
                }
                tranScope.Complete();
            }
        }
示例#3
0
        public static void GeneratePackageTask(string projectId)
        {
            var taskWork = new TaskWork();

            taskWork.SourceCode        = FlowCode.TempClosure;
            taskWork.SourceNameENUS    = taskWork.SourceCode;
            taskWork.SourceNameZHCN    = taskWork.SourceCode;
            taskWork.Status            = TaskWorkStatus.UnFinish;
            taskWork.StatusNameZHCN    = "任务";
            taskWork.StatusNameENUS    = "任务";
            taskWork.RefID             = projectId;
            taskWork.Id                = Guid.NewGuid();
            taskWork.CreateTime        = DateTime.Now;
            taskWork.CreateUserAccount = ClientCookie.UserCode;

            var tempClosure = TempClosureInfo.FirstOrDefault(i => i.ProjectId == projectId);

            if (tempClosure == null)
            {
                return;
            }

            taskWork.Title            = TaskWork.BuildTitle(projectId, tempClosure.StoreNameENUS, tempClosure.StoreNameZHCN);
            taskWork.TypeCode         = FlowCode.TempClosure_ClosurePackage;
            taskWork.TypeNameENUS     = "Closure Package";
            taskWork.TypeNameZHCN     = "Closure Package";
            taskWork.ReceiverAccount  = tempClosure.AssetActorAccount;
            taskWork.ReceiverNameENUS = tempClosure.AssetActorNameENUS;
            taskWork.ReceiverNameZHCN = tempClosure.AssetActorNameZHCN;
            taskWork.Url          = string.Format(@"/TempClosure/Main#/ClosurePackage?projectId={0}", projectId);
            taskWork.StoreCode    = tempClosure.USCode;
            taskWork.ActivityName = "Start";

            TaskWork.Add(taskWork);
        }
示例#4
0
文件: GBMemo.cs 项目: XiaoYaTech/Demo
        public static void Submit(GBMemo memo)
        {
            string strFlowCode = "";
            string strNodeCode = "";
            string strTypeCode = "";

            if (memo.ProjectId.ToLower().IndexOf("rebuild") != -1)
            {
                strFlowCode = FlowCode.Rebuild;
                strNodeCode = NodeCode.Finish;
                strTypeCode = FlowCode.Rebuild_GBMemo;
            }
            else if (memo.ProjectId.ToLower().IndexOf("reimage") != -1)
            {
                strFlowCode = FlowCode.Reimage;
                strNodeCode = NodeCode.Finish;
                strTypeCode = FlowCode.Reimage_GBMemo;
            }
            var task = TaskWork.GetTaskWork(memo.ProjectId, ClientCookie.UserCode, TaskWorkStatus.UnFinish, strFlowCode, strTypeCode);

            task.Status     = TaskWorkStatus.Finished;
            task.FinishTime = DateTime.Now;
            string taskUrl = "/" + strFlowCode + "/Main#/GBMemo/Process/View?projectId=" + memo.ProjectId;

            task.Url = taskUrl;
            using (var scope = new TransactionScope())
            {
                TaskWork.Update(task);
                SaveGBMemo(memo);
                ProjectInfo.UpdateProjectNode(memo.ProjectId, strTypeCode, strNodeCode);
                scope.Complete();
            }
        }
示例#5
0
 public override string Edit()
 {
     using (var tranScope = new TransactionScope())
     {
         var letter = Duplicator.AutoCopy(this);
         letter.Id                = Guid.NewGuid();
         letter.IsHistory         = false;
         letter.CreateUserAccount = ClientCookie.UserCode;
         letter.Add();
         IsHistory = true;
         this.Update();
         ProjectInfo.Reset(ProjectId, this.WorkflowCode);
         var attachments = Attachment.GetList(this.TableName, Id.ToString(), string.Empty);
         attachments.ForEach(att =>
         {
             att.RefTableID = letter.Id.ToString();
             att.ID         = Guid.NewGuid();
         });
         Attachment.Add(attachments.ToArray());
         var assetActor = ProjectUsers.FirstOrDefault(pu => pu.ProjectId == ProjectId && pu.RoleCode == ProjectUserRoleCode.AssetActor);
         var oldTasks   = TaskWork.Search(t => t.RefID == ProjectId && t.Status == TaskWorkStatus.UnFinish && (t.TypeCode == this.WorkflowCode || t.TypeCode == FlowCode.Renewal_ConsInfo)).ToList();
         oldTasks.ForEach(t =>
         {
             t.Status = TaskWorkStatus.Cancel;
         });
         TaskWork.Update(oldTasks.ToArray());
         var    latestTask = TaskWork.FirstOrDefault(t => t.RefID == ProjectId && t.TypeCode == this.WorkflowCode);
         string url        = "/Renewal/Main#/Letter?projectId=" + ProjectId;
         TaskWork.SendTask(ProjectId, latestTask.Title, latestTask.StoreCode, url, assetActor, FlowCode.Renewal, this.WorkflowCode, "Start");
         tranScope.Complete();
         return(url);
     }
 }
示例#6
0
        public override List <ProcessDataField> SetWorkflowDataFields(TaskWork task)
        {
            string destMgrs = AppUsers.MarketMgr.Code;

            if (AppUsers.RegionalMgr != null)
            {
                destMgrs += ";" + AppUsers.RegionalMgr.Code;
            }

            var processDataFields = new List <ProcessDataField>()
            {
                new ProcessDataField("dest_MarketMgr", destMgrs),
                new ProcessDataField("dest_GMApprovers", string.Concat(AppUsers.DD.Code, ";", AppUsers.GM.Code, ";", AppUsers.FC.Code, AppUsers.RDD == null?"":";" + AppUsers.RDD.Code)),
                new ProcessDataField("dest_VPGM", AppUsers.VPGM.Code),
                new ProcessDataField("dest_CDO", AppUsers.CDO != null?AppUsers.CDO.Code:""),
                new ProcessDataField("dest_CFO", AppUsers.CFO != null?AppUsers.CFO.Code:""),
                new ProcessDataField("dest_MngDirector", AppUsers.ManagingDirector.Code),
                new ProcessDataField("ProcessCode", WorkflowProcessCode),
            };

            if (task != null)
            {
                processDataFields.Add(new ProcessDataField("dest_Creator", ClientCookie.UserCode));
                processDataFields.Add(new ProcessDataField("ProjectTaskInfo", JsonConvert.SerializeObject(task)));
            }
            return(processDataFields);
        }
示例#7
0
        public void Submit()
        {
            var task = TaskWork.GetTaskWork(ProjectId, LastUpdateUserAccount, TaskWorkStatus.UnFinish,
                                            FlowCode.Rebuild, FlowCode.Rebuild_ConsInfo);

            //task.Status = TaskWorkStatus.Finished;
            task.FinishTime = DateTime.Now;
            string taskUrl = "/Rebuild/Main#/ConsInfo/Process/View?projectId=" + ProjectId;

            task.Url   = taskUrl;
            ProcInstID = StartProcess(task);
            using (var scope = new TransactionScope())
            {
                TaskWork.Update(task);
                Save("Submit");
                ProjectInfo.FinishNode(ProjectId, FlowCode.Rebuild_ConsInfo, NodeCode.Rebuild_ConsInfo_Input);

                //var rbdPackage = new RebuildChangePackage();
                //rbdPackage.GeneratePackageTask(ProjectId);

                //var rbdConsInvtChecking = new RebuildConsInvtChecking();
                //rbdConsInvtChecking.GenerateConsInvtCheckingTask(ProjectId);

                scope.Complete();
            }
        }
示例#8
0
        private int StartProcess(TaskWork task)
        {
            CreateUserAccount = LastUpdateUserAccount;
            var processDataFields = SetWorkflowDataFields(task);

            return(K2FxContext.Current.StartProcess(WorkflowProcessCode, CreateUserAccount, processDataFields));
        }
示例#9
0
        protected override void UpdateProjectTaskUser(TaskWork taskWork, ProjectTeamMembers projectTeamMembers)
        {
            switch (taskWork.TypeCode)
            {
            case FlowCode.Rebuild_Package:
            case FlowCode.Rebuild_LegalReview:
                if (projectTeamMembers.AssetActor != null)
                {
                    taskWork.ReceiverAccount  = projectTeamMembers.AssetActor.UserAccount;
                    taskWork.ReceiverNameENUS = projectTeamMembers.AssetActor.UserNameENUS;
                    taskWork.ReceiverNameZHCN = projectTeamMembers.AssetActor.UserNameZHCN;
                }
                break;

            case FlowCode.Rebuild_FinanceAnalysis:
                taskWork.ReceiverAccount  = projectTeamMembers.Finance.UserAccount;
                taskWork.ReceiverNameENUS = projectTeamMembers.Finance.UserNameENUS;
                taskWork.ReceiverNameZHCN = projectTeamMembers.Finance.UserNameZHCN;
                break;

            case FlowCode.Rebuild_ConsInvtChecking:
            case FlowCode.Rebuild_ConsInfo:
                taskWork.ReceiverAccount  = projectTeamMembers.PM.UserAccount;
                taskWork.ReceiverNameENUS = projectTeamMembers.PM.UserNameENUS;
                taskWork.ReceiverNameZHCN = projectTeamMembers.PM.UserNameZHCN;
                break;
            }
        }
示例#10
0
        public void GenerateConsInvtCheckingTask(bool isScheduled = false)
        {
            var rbdInfo = RebuildInfo.Search(e => e.ProjectId.Equals(ProjectId)).AsNoTracking().FirstOrDefault();

            if (rbdInfo == null)
            {
                throw new Exception("Could not find the Rebuild Info, please check it!");
            }
            var taskUrl = string.Format(@"/Rebuild/Main#/ConsInvtChecking?projectId={0}", ProjectId);
            var task    = rbdInfo.GenerateTaskWork(WorkflowCode, WorkflowCode, WorkflowCode, taskUrl);

            task.ActivityName = NodeCode.Start;
            task.ActionName   = SetTaskActionName(ProjectId);
            if (!isScheduled)
            {
                TaskWork.Add(task);
            }
            else
            {
                if (rbdInfo.ConstCompletionDate.HasValue)
                {
                    ScheduleLog.GenerateTaskSchedule(rbdInfo.ConstCompletionDate.Value.AddDays(60), task, ClientCookie.UserCode, ProjectId, FlowCode.Rebuild_ConsInvtChecking, rbdInfo.USCode);
                }
            }
        }
示例#11
0
        public override string Edit()
        {
            var info = RenewalInfo.Get(this.ProjectId);

            using (var tranScope = new TransactionScope())
            {
                var legalApproval = Duplicator.AutoCopy(this);
                legalApproval.Id                = Guid.NewGuid();
                legalApproval.IsHistory         = false;
                legalApproval.LegalComments     = "";
                legalApproval.CreateUserAccount = ClientCookie.UserCode;
                legalApproval.Add();
                IsHistory = true;
                this.Update();
                ProjectInfo.Reset(ProjectId, this.WorkflowCode);
                var attachments = Attachment.GetList(this.TableName, Id.ToString(), string.Empty);
                attachments.ForEach(att =>
                {
                    att.RefTableID = legalApproval.Id.ToString();
                    att.ID         = Guid.NewGuid();
                });
                Attachment.Add(attachments.ToArray());
                var assetActor = ProjectUsers.FirstOrDefault(pu => pu.ProjectId == ProjectId && pu.RoleCode == ProjectUserRoleCode.AssetActor);
                TaskWork.Cancel(t => t.RefID == ProjectId && t.Status == TaskWorkStatus.UnFinish);
                var task = info.GenerateSubmitTask(this.WorkflowCode);
                tranScope.Complete();
                return(task.Url);
            }
        }
示例#12
0
        public void Submit()
        {
            var task = TaskWork.GetTaskWork(ProjectId, ClientCookie.UserCode, TaskWorkStatus.UnFinish,
                                            FlowCode.Reimage, WorkflowCode);

            task.Status     = TaskWorkStatus.Finished;
            task.FinishTime = DateTime.Now;
            var taskUrl = "/Reimage/Main#/Summary/Process/View?projectId=" + ProjectId;

            task.Url        = taskUrl;
            ProcInstId      = StartProcess(task);
            task.ProcInstID = ProcInstId;

            using (var scope = new TransactionScope())
            {
                TaskWork.Update(task);

                Save("Submit");

                ProjectInfo.FinishNode(ProjectId, WorkflowCode, NodeCode.Reimage_Summary_Input);

                //var reimagePackage = new ReimagePackage();
                //reimagePackage.GeneratePackageTask(ProjectId);

                //var majorLeaseConsInvtChecking = new MajorLeaseConsInvtChecking();
                //majorLeaseConsInvtChecking.GenerateConsInvtCheckingTask(ProjectId);

                scope.Complete();
            }
        }
示例#13
0
        public override string Edit()
        {
            using (TransactionScope tranScope = new TransactionScope())
            {
                var info = RenewalInfo.Get(ProjectId);

                this.IsHistory = true;
                this.Update();
                var entity = Duplicator.AutoCopy(this);
                entity.Id        = Guid.NewGuid();
                entity.IsHistory = false;
                entity.Add();
                var attachments = Attachment.GetList(this.TableName, Id.ToString(), string.Empty);
                attachments.ForEach(att =>
                {
                    att.RefTableID = entity.Id.ToString();
                    att.ID         = Guid.NewGuid();
                });
                Attachment.Add(attachments.ToArray());
                TaskWork.Cancel(e => e.TypeCode == this.WorkflowCode && e.RefID == ProjectId && e.Status == TaskWorkStatus.UnFinish);
                ProjectInfo.Reset(ProjectId, this.WorkflowCode);
                var task = info.GenerateSubmitTask(this.WorkflowCode);
                tranScope.Complete();

                return(task.Url);
            }
        }
        public void GenerateConsInvtCheckingTask(bool isScheduled = false)
        {
            if (CheckIfNeedGenerateConsInvtCheckingTask())
            {
                var taskUrl        = string.Format("/MajorLease/Main#/ConsInvtChecking?projectId={0}", ProjectId);
                var majorLeaseInfo = MajorLeaseInfo.Search(e => e.ProjectId.Equals(ProjectId)).AsNoTracking().FirstOrDefault();
                if (majorLeaseInfo == null)
                {
                    throw new Exception("Could not find the Major Lease Info, please check it!");
                }
                var task = majorLeaseInfo.GenerateTaskWork(WorkflowCode, WorkflowCode, WorkflowCode, taskUrl);
                task.ActivityName = NodeCode.Start;
                task.ActionName   = SetTaskActionName(ProjectId);
                task.CreateTime   = DateTime.Now;

                if (!isScheduled)
                {
                    TaskWork.Add(task);
                }
                else
                {
                    var consInfoRepos = new MajorLeaseConsInfo();
                    var consInfo      = consInfoRepos.GetConsInfo(ProjectId);
                    //到达Cons Info中的工程完工时间后60天 发出任务
                    if (consInfo.ReinBasicInfo != null &&
                        consInfo.ReinBasicInfo.ConsCompletionDate.HasValue)
                    {
                        ScheduleLog.GenerateTaskSchedule(consInfo.ReinBasicInfo.ConsCompletionDate.Value.AddDays(60), task, ClientCookie.UserCode, ProjectId, WorkflowCode, majorLeaseInfo.USCode);
                    }
                }
            }
        }
示例#15
0
        public override void Recall(string comment)
        {
            using (TransactionScope tranScope = new TransactionScope())
            {
                ProjectInfo.Reset(this.ProjectId, this.WorkflowCode, ProjectStatus.Recalled);
                ProjectComment.AddComment(
                    ProjectCommentAction.Recall,
                    comment,
                    this.Id,
                    this.TableName,
                    FlowCode.TempClosure,
                    this.ProcInstId,
                    ProjectCommentStatus.Submit
                    );
                var actor            = ProjectUsers.FirstOrDefault(pu => pu.ProjectId == this.ProjectId && pu.RoleCode == ProjectUserRoleCode.AssetActor);
                var legal            = ProjectUsers.FirstOrDefault(pu => pu.ProjectId == this.ProjectId && pu.RoleCode == ProjectUserRoleCode.Legal);
                var oldUnfinishTasks = TaskWork.Search(t => t.RefID == this.ProjectId && t.TypeCode == FlowCode.TempClosure_LegalReview && t.Status == TaskWorkStatus.UnFinish).ToList();
                oldUnfinishTasks.ForEach(t =>
                {
                    t.Status = TaskWorkStatus.Cancel;
                });
                TaskWork.Update(oldUnfinishTasks.ToArray());
                tranScope.Complete();
            }
            string comments = ClientCookie.UserNameZHCN + "进行了流程撤回操作";

            K2FxContext.Current.GoToActivityAndRecord(
                this.ProcInstId.Value,
                this.WorkflowActOriginator,
                ClientCookie.UserCode,
                ProjectAction.Recall,
                comments
                );
            //ProjectInfo.Reset(this.ProjectId, WorkflowCode);
        }
示例#16
0
        public override void Finish(TaskWorkStatus status, TaskWork task)
        {
            using (var scope = new TransactionScope())
            {
                switch (status)
                {
                case TaskWorkStatus.K2ProcessApproved:

                    //ClosureTool的最后一步在K2中,但不属于审批
                    task.ActionName = "";
                    task.Update();

                    ProjectInfo.FinishNode(this.ProjectId, FlowCode.Closure_ClosureTool, NodeCode.Closure_ClosureTool_Generate, ProjectStatus.Finished);
                    if (!ClosureExecutiveSummary.Any(i => i.ProjectId == this.ProjectId && i.IsHistory == false))
                    {
                        var esEntity = new ClosureExecutiveSummary();
                        esEntity.ProjectId      = this.ProjectId;
                        esEntity.Id             = Guid.NewGuid();
                        esEntity.CreateTime     = DateTime.Now;
                        esEntity.CreatorAccount = ClientCookie.UserCode;
                        ClosureExecutiveSummary.Add(esEntity);
                    }
                    break;
                }

                scope.Complete();
            }
        }
示例#17
0
        public string GeneratePackageTask(string projectId)
        {
            if (!TaskWork.Any(i => i.RefID == projectId && i.TypeCode == FlowCode.Closure_ClosurePackage && i.Status == TaskWorkStatus.UnFinish))
            {
                var taskWork = new TaskWork();
                taskWork.SourceCode        = FlowCode.Closure;
                taskWork.SourceNameENUS    = taskWork.SourceCode;
                taskWork.SourceNameZHCN    = "关店流程";
                taskWork.Status            = TaskWorkStatus.UnFinish;
                taskWork.StatusNameZHCN    = "任务";
                taskWork.StatusNameENUS    = "任务";
                taskWork.RefID             = projectId;
                taskWork.Id                = Guid.NewGuid();
                taskWork.CreateTime        = DateTime.Now;
                taskWork.CreateUserAccount = ClientCookie.UserCode;

                var closureInfo = ClosureInfo.GetByProjectId(projectId);

                taskWork.Title            = TaskWork.BuildTitle(projectId, closureInfo.StoreNameZHCN, closureInfo.StoreNameENUS);
                taskWork.TypeCode         = WorkflowCode;
                taskWork.TypeNameENUS     = "ClosurePackage";
                taskWork.TypeNameZHCN     = "ClosurePackage";
                taskWork.ReceiverAccount  = closureInfo.AssetActorAccount;
                taskWork.ReceiverNameENUS = closureInfo.AssetActorNameENUS;
                taskWork.ReceiverNameZHCN = closureInfo.AssetActorNameZHCN;
                taskWork.ActivityName     = "Start";
                taskWork.Url       = string.Format(@"/Closure/Main#/ClosurePackage?projectId={0}", projectId);
                taskWork.StoreCode = closureInfo.USCode;

                TaskWork.Add(taskWork);
                return(taskWork.Url);
            }
            return("");
        }
示例#18
0
 public override void PrepareTask(TaskWork taskWork)
 {
     if (taskWork.ActivityName == "Asset Rep Upload")
     {
         ProjectInfo.FinishNode(ProjectId, FlowCode.Closure_ClosurePackage, NodeCode.Closure_ClosurePackage_OnlineApprove);
     }
 }
示例#19
0
        public void Submit(string comment, Action onExecuting = null)
        {
            var legal = ProjectUsers.FirstOrDefault(pu => pu.ProjectId == this.ProjectId && pu.RoleCode == ProjectUserRoleCode.Legal);
            var task  = TaskWork.GetTaskWork(this.ProjectId, ClientCookie.UserCode, TaskWorkStatus.UnFinish,
                                             FlowCode.TempClosure, this.WorkflowCode);

            task.Status     = TaskWorkStatus.Finished;
            task.FinishTime = DateTime.Now;
            List <ProcessDataField> dataFields = new List <ProcessDataField>
            {
                new ProcessDataField("dest_Creator", this.CreateUserAccount),
                new ProcessDataField("dest_Legal", legal.UserAccount),
                new ProcessDataField("ProcessCode", this.WorkflowProcessCode),
                new ProcessDataField("ProjectTaskInfo", JsonConvert.SerializeObject(task))
            };
            var procInstId = K2FxContext.Current.StartProcess(WorkflowProcessCode, ClientCookie.UserCode, dataFields);

            if (procInstId > 0)
            {
                using (TransactionScope tranScope = new TransactionScope())
                {
                    TaskWork.Update(task);
                    this.ProcInstId        = procInstId;
                    this.CreateTime        = DateTime.Now;
                    this.CreateUserAccount = ClientCookie.UserCode;
                    this.Update();
                    var project = ProjectInfo.Get(this.ProjectId, this.WorkflowCode);
                    project.CreateUserAccount = ClientCookie.UserCode;
                    project.Update();
                    var SavedComment = ProjectComment.GetSavedComment(this.Id, this.TableName, ClientCookie.UserCode);
                    if (SavedComment != null)
                    {
                        SavedComment.Status     = ProjectCommentStatus.Submit;
                        SavedComment.Content    = comment;
                        SavedComment.CreateTime = DateTime.Now;
                        SavedComment.Update();
                    }
                    else
                    {
                        ProjectComment.AddComment(
                            ProjectCommentAction.Submit,
                            comment,
                            this.Id,
                            this.TableName,
                            FlowCode.TempClosure,
                            procInstId,
                            ProjectCommentStatus.Submit
                            );
                    }
                    ProjectInfo.FinishNode(this.ProjectId, this.WorkflowCode, NodeCode.TempClosure_LegalReview_Input);
                    if (onExecuting != null)
                    {
                        onExecuting();
                    }
                    tranScope.Complete();
                }
            }
        }
示例#20
0
 public override void Finish(TaskWorkStatus status, TaskWork task)
 {
     switch (status)
     {
     case TaskWorkStatus.K2ProcessApproved:
         ProjectInfo.FinishNode(ProjectId, FlowCode.TempClosure_LegalReview, NodeCode.TempClosure_LegalReview_Approve, ProjectStatus.Finished);
         break;
     }
 }
示例#21
0
        public override string Edit()
        {
            var taskUrl = string.Format("/MajorLease/Main#/LegalReview?projectId={0}", ProjectId);

            using (var scope = new TransactionScope())
            {
                var majorLeaseInfo = MajorLeaseInfo.Search(e => e.ProjectId.Equals(ProjectId)).FirstOrDefault();
                if (majorLeaseInfo == null)
                {
                    throw new Exception("Could not find the Major Lease Info, please check it!");
                }
                TaskWork.Cancel(t => t.RefID == ProjectId && t.Status == TaskWorkStatus.UnFinish && t.TypeCode == this.WorkflowCode);//取消老的流程实例的所有未完成任务
                var task = majorLeaseInfo.GenerateTaskWork(WorkflowCode,
                                                           "LegalReview",
                                                           "LegalReview",
                                                           taskUrl);
                task.ActivityName = NodeCode.Start;
                task.ActionName   = SetTaskActionName(ProjectId);
                TaskWork.Add(task);

                var package = MajorLeaseChangePackage.GetMajorPackageInfo(ProjectId);
                if (package != null)
                {
                    package.ProjectId = ProjectId;
                    package.CompleteActorPackageTask(majorLeaseInfo.AssetActorAccount);
                }
                IsHistory = true;
                Update(this);
                var attachments = Attachment.Search(e => e.RefTableID == Id.ToString() &&
                                                    e.RefTableName == WFMajorLeaseLegalReview.TableName).ToList();

                ProjectInfo.Reset(ProjectId, WorkflowCode);


                Mapper.CreateMap <MajorLeaseLegalReview, MajorLeaseLegalReview>();
                var newMajorLeaseLR = Mapper.Map <MajorLeaseLegalReview>(this);
                newMajorLeaseLR.Id         = Guid.Empty;
                newMajorLeaseLR.ProcInstID = null;
                newMajorLeaseLR.IsHistory  = false;
                newMajorLeaseLR.Comments   = null;
                newMajorLeaseLR.Save();

                var newAttachmentList = new List <Attachment>();
                Mapper.CreateMap <Attachment, Attachment>();
                foreach (var attachment in attachments)
                {
                    var newAttachment = Mapper.Map <Attachment>(attachment);
                    newAttachment.RefTableID = newMajorLeaseLR.Id.ToString();
                    newAttachment.ID         = Guid.NewGuid();
                    newAttachmentList.Add(newAttachment);
                }
                Attachment.Add(newAttachmentList.ToArray());
                scope.Complete();
            }

            return(taskUrl);
        }
示例#22
0
        public void Submit(string comment, Action onExecuting = null)
        {
            try
            {
                RenewalInfo info = RenewalInfo.Get(this.ProjectId);
                var         task = TaskWork.GetTaskWork(ProjectId, ClientCookie.UserCode, TaskWorkStatus.UnFinish,
                                                        FlowCode.Renewal, WorkflowCode);

                var dataFields = SetWorkflowDataFields(task);
                var procInstId = K2FxContext.Current.StartProcess(WorkflowProcessCode, ClientCookie.UserCode, dataFields);
                if (procInstId > 0)
                {
                    using (var tranScope = new TransactionScope())
                    {
                        task.Finish();
                        this.ProcInstId        = procInstId;
                        this.CreateTime        = DateTime.Now;
                        this.CreateUserAccount = ClientCookie.UserCode;
                        this.Update();
                        var project = ProjectInfo.Get(this.ProjectId, this.WorkflowCode);
                        project.CreateUserAccount = ClientCookie.UserCode;
                        project.Update();
                        var SavedComment = ProjectComment.GetSavedComment(this.Id, this.TableName, ClientCookie.UserCode);
                        if (SavedComment != null)
                        {
                            SavedComment.Status     = ProjectCommentStatus.Submit;
                            SavedComment.Content    = comment;
                            SavedComment.CreateTime = DateTime.Now;
                            SavedComment.Update();
                        }
                        else
                        {
                            ProjectComment.AddComment(
                                ProjectCommentAction.Submit,
                                comment,
                                this.Id,
                                this.TableName,
                                FlowCode.Renewal,
                                procInstId,
                                ProjectCommentStatus.Submit
                                );
                        }
                        ProjectInfo.FinishNode(this.ProjectId, this.WorkflowCode, NodeCode.Renewal_Tool_Input);
                        if (onExecuting != null)
                        {
                            onExecuting();
                        }
                        tranScope.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                Log4netHelper.WriteInfo("[[Renewal Too]]:" + JsonConvert.SerializeObject(ex));
                throw ex;
            }
        }
示例#23
0
        public override List <ProcessDataField> SetWorkflowDataFields(TaskWork task)
        {
            string destMgrs = AppUsers.MarketMgr.Code;

            if (AppUsers.RegionalMgr != null)
            {
                destMgrs += ";" + AppUsers.RegionalMgr.Code;
            }
            string dest_GMApprovers = "";

            if (AppUsers.MDD != null)
            {
                dest_GMApprovers += AppUsers.MDD.Code + ";";
            }

            if (AppUsers.GM != null)
            {
                dest_GMApprovers += AppUsers.GM.Code + ";";
            }

            if (AppUsers.FC != null)
            {
                dest_GMApprovers += AppUsers.FC.Code + ";";
            }

            if (AppUsers.RDD != null)
            {
                dest_GMApprovers += AppUsers.RDD.Code + ";";
            }

            if (dest_GMApprovers.Length > 1)
            {
                dest_GMApprovers = dest_GMApprovers.Substring(0, dest_GMApprovers.Length - 1);
            }

            var processDataFields = new List <ProcessDataField>()
            {
                new ProcessDataField("dest_MarketMgr", destMgrs),
                new ProcessDataField("dest_GMApprovers", dest_GMApprovers),
                new ProcessDataField("dest_VPGM", AppUsers.VPGM.Code),
                new ProcessDataField("dest_MCCLAssetDir", AppUsers.MCCLAssetDtr.Code),
                new ProcessDataField("dest_CDO", AppUsers.CDO != null?AppUsers.CDO.Code:""),
                new ProcessDataField("dest_MngDirector", AppUsers.ManagingDirector.Code),
                new ProcessDataField("ProcessCode", WorkflowProcessCode),
                new ProcessDataField("IsNeedCDOApproval", CheckIfNeedCDOApproval().ToString(), "BOOLEAN"),
                new ProcessDataField("IsNeedUpload", CheckIfNeedUpload().ToString(), "BOOLEAN")
            };

            if (task != null)
            {
                processDataFields.Add(new ProcessDataField("dest_Creator", ClientCookie.UserCode));
                /*Linda Lu*/
                processDataFields.Add(new ProcessDataField("dest_AssetRep", ConfigurationManager.AppSettings["AssetMgrCode"]));
                processDataFields.Add(new ProcessDataField("ProjectTaskInfo", JsonConvert.SerializeObject(task)));
            }
            return(processDataFields);
        }
示例#24
0
 public override void PrepareTask(TaskWork taskWork)
 {
     switch (taskWork.ActivityName)
     {
     case "Asset Rep Upload":
         ProjectInfo.FinishNode(ProjectId, WorkflowCode, NodeCode.Renewal_Package_Approval);
         break;
     }
 }
示例#25
0
        public void Confirm()
        {
            var tempClosureInfo = TempClosureInfo.Get(this.ProjectId);
            var url             = "/TempClosure/Main#/ClosureMemo?projectId=" + this.ProjectId;
            var title           = TaskWork.BuildTitle(this.ProjectId, tempClosureInfo.StoreNameZHCN, tempClosureInfo.StoreNameENUS);

            TaskWork.Finish(t => t.ReceiverAccount == ClientCookie.UserCode && t.RefID == this.ProjectId && t.Status == TaskWorkStatus.UnFinish && t.TypeCode == FlowCode.TempClosure_ClosurePackage);
            ProjectInfo.FinishNode(ProjectId, FlowCode.TempClosure_ClosurePackage, NodeCode.TempClosure_ClosurePackage_Upload, ProjectStatus.Finished);
        }
示例#26
0
        public override string Edit()
        {
            var taskWork = TaskWork.FirstOrDefault(e => e.ReceiverAccount == ClientCookie.UserCode && e.SourceCode == FlowCode.Closure && e.TypeCode == FlowCode.Closure_ExecutiveSummary && e.RefID == this.ProjectId);


            taskWork.Status         = TaskWorkStatus.UnFinish;
            taskWork.StatusNameZHCN = "任务";
            taskWork.StatusNameENUS = "任务";

            var closureEntity = ClosureInfo.GetByProjectId(this.ProjectId);

            taskWork.ReceiverAccount  = closureEntity.AssetActorAccount;
            taskWork.ReceiverNameENUS = closureEntity.AssetActorNameENUS;
            taskWork.ReceiverNameZHCN = closureEntity.AssetActorNameZHCN;
            taskWork.Id           = Guid.NewGuid();
            taskWork.CreateTime   = DateTime.Now;
            taskWork.Url          = TaskWork.BuildUrl(FlowCode.Closure_ExecutiveSummary, this.ProjectId, "");
            taskWork.ActivityName = NodeCode.Start;
            taskWork.ProcInstID   = null;
            taskWork.FinishTime   = null;
            taskWork.ActionName   = SetTaskActionName(ProjectId);
            TaskWork.Add(taskWork);

            this.IsHistory = true;

            this.Save();

            var objectCopy = new ObjectCopy();
            var newEntity  = objectCopy.AutoCopy(this);

            newEntity.Id         = Guid.NewGuid();
            newEntity.ProcInstID = 0;
            newEntity.IsHistory  = false;
            newEntity.Add();

            var projectEntity = ProjectInfo.Get(this.ProjectId, FlowCode.Closure_ExecutiveSummary);

            projectEntity.Status = ProjectStatus.UnFinish;

            ProjectInfo.Update(projectEntity);
            ProjectInfo.Reset(ProjectId, FlowCode.Closure_ExecutiveSummary);
            ProjectInfo.Reset(ProjectId, FlowCode.Closure);
            var attList = Attachment.Search(e => e.RefTableID == this.Id.ToString() && e.RefTableName == ClosureExecutiveSummary.TableName).AsNoTracking().ToList();

            var newList = new List <Attachment>();

            foreach (var att in attList)
            {
                var newAtt = objectCopy.AutoCopy(att);
                newAtt.RefTableID = newEntity.Id.ToString();
                newAtt.ID         = Guid.NewGuid();
                newList.Add(newAtt);
            }
            Attachment.Add(newList.ToArray());
            return(taskWork.Url);
        }
示例#27
0
        public override string Edit()
        {
            var taskUrl = string.Format("/MajorLease/Main#/ConsInfo?projectId={0}", ProjectId);

            using (var scope = new TransactionScope())
            {
                var majorLeaseInfo = MajorLeaseInfo.FirstOrDefault(e => e.ProjectId.Equals(ProjectId));
                if (majorLeaseInfo == null)
                {
                    throw new Exception("Could not find the Major Lease Info, please check it!");
                }
                var task = majorLeaseInfo.GenerateTaskWork(FlowCode.MajorLease_ConsInfo,
                                                           "ConsInfo",
                                                           "ConsInfo",
                                                           taskUrl);
                task.ActivityName = NodeCode.Start;
                task.ActionName   = SetTaskActionName(ProjectId);
                TaskWork.Add(task);

                var package = MajorLeaseChangePackage.GetMajorPackageInfo(ProjectId);
                if (package != null)
                {
                    package.ProjectId = ProjectId;
                    package.CompleteActorPackageTask(majorLeaseInfo.AssetActorAccount);
                }

                IsHistory = true;
                Update(this);
                var attachments = Attachment.Search(e => e.RefTableID == Id.ToString() &&
                                                    e.RefTableName == WFMajorLeaseConsInfo.TableName).AsNoTracking().ToList();

                ProjectInfo.Reset(ProjectId, FlowCode.MajorLease_ConsInfo);

                Mapper.CreateMap <MajorLeaseConsInfo, MajorLeaseConsInfo>();
                var form = Mapper.Map <MajorLeaseConsInfo>(this);
                form.Id         = Guid.Empty;
                form.ProcInstID = null;
                form.IsHistory  = false;
                form.Comments   = null;
                form.Save("Edit");

                var newAttachmentList = new List <Attachment>();
                Mapper.CreateMap <Attachment, Attachment>();
                foreach (var attachment in attachments)
                {
                    var newAttachment = Mapper.Map <Attachment>(attachment);
                    newAttachment.RefTableID = form.Id.ToString();
                    newAttachment.ID         = Guid.NewGuid();
                    newAttachmentList.Add(newAttachment);
                }
                Attachment.Add(newAttachmentList.ToArray());
                scope.Complete();
            }

            return(taskUrl);
        }
示例#28
0
        public void Submit(string comment, Action onExecuting = null)
        {
            var actor = ProjectUsers.GetProjectUser(this.ProjectId, ProjectUserRoleCode.AssetActor);
            var task  = TaskWork.GetTaskWork(ProjectId, ClientCookie.UserCode, TaskWorkStatus.UnFinish,
                                             FlowCode.Renewal, WorkflowCode);
            var dataFields = SetWorkflowDataFields(task);
            var procInstId = K2FxContext.Current.StartProcess(WorkflowProcessCode, ClientCookie.UserCode, dataFields);

            if (procInstId > 0)
            {
                using (TransactionScope tranScope = new TransactionScope())
                {
                    this.ProcInstId        = procInstId;
                    this.CreateTime        = DateTime.Now;
                    this.CreateUserAccount = ClientCookie.UserCode;
                    this.Update();
                    var approveDialogUser = new ApproveDialogUser();
                    approveDialogUser.Id         = Guid.NewGuid();
                    approveDialogUser.LegalCode  = AppUsers.Legal.Code;
                    approveDialogUser.ProjectId  = this.ProjectId;
                    approveDialogUser.FlowCode   = this.WorkflowCode;
                    approveDialogUser.RefTableID = this.Id.ToString();
                    approveDialogUser.Add();
                    var project = ProjectInfo.Get(this.ProjectId, this.WorkflowCode);
                    project.CreateUserAccount = ClientCookie.UserCode;
                    project.Update();
                    var SavedComment = ProjectComment.GetSavedComment(this.Id, this.TableName, ClientCookie.UserCode);
                    if (SavedComment != null)
                    {
                        SavedComment.Status     = ProjectCommentStatus.Submit;
                        SavedComment.Content    = comment;
                        SavedComment.CreateTime = DateTime.Now;
                        SavedComment.Update();
                    }
                    else
                    {
                        ProjectComment.AddComment(
                            ProjectCommentAction.Submit,
                            comment,
                            this.Id,
                            this.TableName,
                            FlowCode.Renewal,
                            procInstId,
                            ProjectCommentStatus.Submit
                            );
                    }
                    ProjectInfo.FinishNode(this.ProjectId, this.WorkflowCode, NodeCode.Renewal_LegalApproval_Input);
                    if (onExecuting != null)
                    {
                        onExecuting();
                    }
                    tranScope.Complete();
                }
            }
        }
示例#29
0
        public void Submit(string comment, Action onExecuting = null)
        {
            var task = TaskWork.GetTaskWork(ProjectId, ClientCookie.UserCode, TaskWorkStatus.UnFinish,
                                            FlowCode.Renewal, WorkflowCode);
            var dataFields = SetWorkflowDataFields(task);
            var procInstId = K2FxContext.Current.StartProcess(WorkflowProcessCode, ClientCookie.UserCode, dataFields);

            if (procInstId > 0)
            {
                using (TransactionScope tranScope = new TransactionScope())
                {
                    task.Finish();
                    this.ProcInstId        = procInstId;
                    this.CreateTime        = DateTime.Now;
                    this.CreateUserAccount = ClientCookie.UserCode;
                    this.Update();
                    if (this.HasReinvenstment)
                    {
                        SaveApprovers();
                    }
                    var project = ProjectInfo.Get(this.ProjectId, this.WorkflowCode);
                    project.CreateUserAccount = ClientCookie.UserCode;
                    project.Update();
                    var SavedComment = ProjectComment.GetSavedComment(this.Id, this.TableName, ClientCookie.UserCode);
                    if (SavedComment != null)
                    {
                        SavedComment.Status     = ProjectCommentStatus.Submit;
                        SavedComment.Content    = comment;
                        SavedComment.CreateTime = DateTime.Now;
                        SavedComment.Update();
                    }
                    else
                    {
                        ProjectComment.AddComment(
                            ProjectCommentAction.Submit,
                            comment,
                            this.Id,
                            this.TableName,
                            FlowCode.Renewal,
                            procInstId,
                            ProjectCommentStatus.Submit
                            );
                    }
                    if (HasReinvenstment)
                    {
                        ProjectInfo.FinishNode(this.ProjectId, this.WorkflowCode, NodeCode.Renewal_ConsInfo_Input);
                    }
                    if (onExecuting != null)
                    {
                        onExecuting();
                    }
                    tranScope.Complete();
                }
            }
        }
示例#30
0
        public TaskWork GenerateSubmitTask(string flowCode)
        {
            TaskWork.Cancel(t => t.TypeCode == flowCode && t.ActivityName == "Start" && t.RefID == this.ProjectId);
            TaskWork taskWork = new TaskWork();
            var      url      = TaskWork.BuildUrl(flowCode, this.ProjectId);

            switch (flowCode)
            {
            case FlowCode.Renewal_Letter:
                taskWork = GenerateTask(flowCode, url, AssetActorAccount, AssetActorNameENUS, AssetActorNameZHCN, "Start");
                break;

            case FlowCode.Renewal_LLNegotiation:
                taskWork = GenerateTask(flowCode, url, AssetActorAccount, AssetActorNameENUS, AssetActorNameZHCN, "Start");
                break;

            case FlowCode.Renewal_ConsInfo:
                taskWork = GenerateTask(flowCode, url, PMAccount, PMNameENUS, PMNameZHCN, "Start");
                break;

            case FlowCode.Renewal_Tool:
                taskWork = GenerateTask(flowCode, url, FinanceAccount, FinanceNameENUS, FinanceNameZHCN, "Start");
                break;

            case FlowCode.Renewal_Analysis:
                taskWork = GenerateTask(flowCode, url, AssetActorAccount, AssetActorNameENUS, AssetActorNameZHCN, "Start");
                break;

            case FlowCode.Renewal_ClearanceReport:
                taskWork = GenerateTask(flowCode, url, AssetActorAccount, AssetActorNameENUS, AssetActorNameZHCN, "Start");
                break;

            case FlowCode.Renewal_ConfirmLetter:
                taskWork = GenerateTask(flowCode, url, AssetActorAccount, AssetActorNameENUS, AssetActorNameZHCN, "Start");
                break;

            case FlowCode.Renewal_LegalApproval:
                taskWork = GenerateTask(flowCode, url, AssetActorAccount, AssetActorNameENUS, AssetActorNameZHCN, "Start");
                break;

            case FlowCode.Renewal_Package:
                taskWork = GenerateTask(flowCode, url, AssetActorAccount, AssetActorNameENUS, AssetActorNameZHCN, "Start");
                break;

            case FlowCode.Renewal_ContractInfo:
                taskWork = GenerateTask(flowCode, url, AssetActorAccount, AssetActorNameENUS, AssetActorNameZHCN, "Start");
                break;

            case FlowCode.Renewal_SiteInfo:
                taskWork = GenerateTask(flowCode, url, PMAccount, PMNameENUS, PMNameZHCN, "Start");
                break;
            }
            return(taskWork);
        }