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)); }
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); }