Ejemplo n.º 1
0
        public Tuple <List <TemplateTask>, List <TemplateTask>, List <DataCollectUser>, List <DataCollectUser> > UpdateTaskInfo(TemplateConfigInstance instance, List <TaskUser> currentTaskUser, bool withProcess)
        {
            var taskAddList               = new List <TemplateTask>();
            var taskDeleteList            = new List <TemplateTask>();
            var dataCollectUserAddList    = new List <DataCollectUser>();
            var dataCollectUserDeleteList = new List <DataCollectUser>();

            using (TransactionScope transaction = TransactionScopeFactory.Create(TransactionScopeOption.Required))
            {
                var orgList = DataCollectUserOperator.Instance.GetList(instance.ID).ToList();
                var newList = currentTaskUser;

                var    addList    = newList.FindAll(x => !orgList.Any(o => o.UserName == x.UserName));
                var    deleteList = orgList.FindAll(x => !newList.Any(n => n.UserName == x.UserName));
                var    editList   = orgList.FindAll(x => newList.Any(n => n.UserName == x.UserName));
                string flowCode   = instance.WorkflowID;
                string taskTitle  = instance.TemplateConfigInstanceName;


                var currentTaskList = TemplateTaskOperator.Instance.GetList(instance.ID);
                #region  除
                deleteList.ForEach(x =>
                {
                    dataCollectUserDeleteList.Add(x);
                    if (currentTaskList.Any(t => t.DataCollectUserID == x.ID))
                    {
                        x.ProcessStatus = 1;
                        DataCollectUserOperator.Instance.UpdateModel(x);
                    }
                    else
                    {
                        DataCollectUserOperator.Instance.RemoveModel(x.ID);
                    }
                });
                #endregion

                #region 新增
                addList.ForEach(x =>
                {
                    DataCollectUser dUsers = new DataCollectUser();
                    var wdUser             = UserInfoOperator.Instance.GetWDUserInfoByLoginName(x.UserName);
                    if (wdUser != null)
                    {
                        //todo:发送流程。
                        dUsers.ID                       = Guid.NewGuid().ToString();
                        dUsers.TemplateID               = instance.TemplateID;
                        dUsers.TemplateName             = instance.TemplateName;
                        dUsers.UserName                 = wdUser.LoginName;
                        dUsers.EmployeeCode             = wdUser.EmployeeCode;
                        dUsers.OrgID                    = wdUser.OrgID;
                        dUsers.OrgName                  = wdUser.OrgName;
                        dUsers.UnitID                   = wdUser.UnitID;
                        dUsers.UnitName                 = wdUser.UnitName;
                        dUsers.EmployeeName             = wdUser.CNName;
                        dUsers.TemplateConfigInstanceID = instance.ID;
                        dUsers.CreateDate               = DateTime.Now;
                        dUsers.CreatorLoginName         = WebHelper.GetCurrentUser().LoginName;
                        dUsers.CreatorName              = WebHelper.GetCurrentUser().CNName;
                        dUsers.IsDeleted                = false;
                        dUsers.ModifierLoginName        = WebHelper.GetCurrentUser().LoginName;
                        dUsers.ModifierName             = WebHelper.GetCurrentUser().CNName;
                        dUsers.ModifyTime               = DateTime.Now;

                        #region 用于二维表更新
                        dUsers.TaskTemplateType = instance.TaskTemplateType;
                        dUsers.UpdateArea       = x.UpdateArea;
                        dUsers.AreaValue        = x.AreaValue;
                        #endregion

                        DataCollectUserOperator.Instance.AddModel(dUsers);
                        dataCollectUserAddList.Add(dUsers);
                    }
                });
                #endregion

                #region 编辑
                editList.ForEach(x =>
                {
                    var v = currentTaskUser.Where(y => y.UserName == x.UserName && (y.AreaValue != x.AreaValue || y.UpdateArea != x.UpdateArea)).FirstOrDefault();
                    if (v != null)
                    {
                        x.AreaValue  = v.AreaValue;
                        x.UpdateArea = v.UpdateArea;
                        DataCollectUserOperator.Instance.UpdateModel(x);
                    }
                });
                #endregion


                var currentCollectUserList = DataCollectUserOperator.Instance.GetList(instance.ID);
                if (withProcess)
                {
                    //StartCollectTask(model.WorkflowID, model.TemplateConfigInstanceName, instance, x, wdUser);
                    #region 计算流程变更状态
                    var addTaskList    = currentCollectUserList.Where(x => !currentTaskList.Any(t => t.DataCollectUserID == x.ID));
                    var deleteTaskList = currentTaskList.Where(x => !currentCollectUserList.Any(d => d.ID == x.DataCollectUserID));
                    deleteTaskList.ForEach(x =>
                    {
                        TemplateConfigInstanceOperator.Instance.CancelCollectTask(x);
                        taskDeleteList.Add(x);
                    });
                    addTaskList.ForEach(x =>
                    {
                        var task = StartCollectTask(flowCode, taskTitle, instance, x, new LoginUserInfo()
                        {
                            EmployeeCode = x.EmployeeCode,
                            OrgID        = x.OrgID,
                            OrgName      = x.OrgName,
                            LoginName    = x.UserName,
                            CNName       = x.EmployeeName
                        });
                        if (task != null)
                        {
                            taskAddList.Add(task);
                            var finder = dataCollectUserAddList.Find(c => c.ID == task.DataCollectUserID);
                            if (finder != null)
                            {
                                finder.LastTaskID       = task.ID;
                                finder.AuthTimeString   = task.AuthTimeString;
                                finder.SubmitTimeString = task.SubmitTimeString;
                            }
                        }
                    });
                    #endregion
                }
                transaction.Complete();
            }
            return(Tuple.Create(taskAddList, taskDeleteList, dataCollectUserAddList, dataCollectUserDeleteList));
        }
Ejemplo n.º 2
0
        public TemplateTask StartCollectTask(string flowCode, string taskTitle, TemplateConfigInstance configInstance, DataCollectUser dUsers, LoginUserInfo wdUser)
        {
            var          currentUser = UserInfoOperator.Instance.GetWDUserInfoByLoginName(wdUser.LoginName);
            TemplateTask task        = new TemplateTask();

            task.ID = Guid.NewGuid().ToString();
            task.DataCollectUserID        = dUsers.ID;
            task.EmployeeCode             = currentUser.EmployeeCode;
            task.OrgID                    = currentUser.OrgID;
            task.OrgName                  = currentUser.UnitName;
            task.EmployeeLoginName        = currentUser.LoginName;
            task.EmployeeName             = currentUser.CNName;
            task.TemplateConfigInstanceID = configInstance.ID;
            task.Status                   = (int)Lib.Common.ProcessStatus.Draft;
            task.CreateDate               = DateTime.Now;
            task.CreatorLoginName         = WebHelper.GetCurrentUser().LoginName;
            task.CreatorName              = WebHelper.GetCurrentUser().CNName;
            task.IsDeleted                = false;
            task.ModifierLoginName        = WebHelper.GetCurrentUser().LoginName;
            task.ModifierName             = WebHelper.GetCurrentUser().CNName;
            task.ModifyTime               = DateTime.Now;


            Employee startUser = new Employee {
                LoginName = currentUser.LoginName
            };
            Employee lastUser = new Employee {
                LoginName = configInstance.UserName
            };
            var         data         = new { flowCode = flowCode, taskID = task.ID, startUser = startUser, lastUser = lastUser, taskTitle = taskTitle, approvalContent = "" };
            var         json         = Newtonsoft.Json.JsonConvert.SerializeObject(data);
            AutoProcess _autoprocess = new AutoProcess()
            {
                BusinessType = "StartProcess",
                BusinessID   = task.ID,
                Parameters   = json
            };

            AutoProcessOperator.Instance.AddAutoproces(_autoprocess);
            //WorkFlowUtil.StartProcess(flowCode, task.ID, startUser, lastUser, taskTitle, "");
            TemplateTaskOperator.Instance.AddModel(task);
            return(task);
        }