Exemplo n.º 1
0
        public ActionResult GetTaskExCheckList(string shortCode)
        {
            return(ActionUtils.Json(() =>
            {
                CheckPermission(PermissionObjectType.Task, shortCode, PermissionType.Read);
                var task = m_dbAdapter.Task.GetTaskWithExInfo(shortCode);

                CommUtils.Assert(task.TaskExtensionId.HasValue, "工作[{0}][{1}]不包含扩展信息",
                                 task.Description, shortCode);
                CommUtils.Assert(task.TaskExtension.TaskExtensionType == TaskExtensionType.CheckList.ToString(),
                                 "工作[{0}][{1}]的工作扩展类型不是[工作要点检查]", task.Description, shortCode);

                var taskExtensionInfo = task.TaskExtension.TaskExtensionInfo;

                var result = new TaskExCheckListInfo();
                if (!string.IsNullOrWhiteSpace(taskExtensionInfo))
                {
                    result = CommUtils.FromJson <TaskExCheckListInfo>(taskExtensionInfo);
                }

                return ActionUtils.Success(result);
            }));
        }
Exemplo n.º 2
0
        public ActionResult AddTaskExtensionCheckList(string shortCode, string groupName, string checkItemName)
        {
            return(ActionUtils.Json(() =>
            {
                CheckPermission(PermissionObjectType.Task, shortCode, PermissionType.Write);
                var task = m_dbAdapter.Task.GetTaskWithExInfo(shortCode);
                m_dbAdapter.Task.CheckPrevIsFinished(task);

                CommUtils.Assert(CommUtils.ParseEnum <TaskExtensionType>(task.TaskExtension.TaskExtensionType) == TaskExtensionType.CheckList,
                                 "工作[" + task.Description + "]的工作扩展类型不是[工作要点检查]");
                CommUtils.Assert(!string.IsNullOrWhiteSpace(groupName), "分组名称不能为空");
                CommUtils.Assert(!string.IsNullOrWhiteSpace(checkItemName), "工作要点不能为空");
                var checkItemNameList = CommUtils.Split(checkItemName, new string[] { "\n" });

                CheckedByCheckItemNamesRepeat(checkItemNameList);

                TaskExCheckListInfo taskExCheckLists = new TaskExCheckListInfo();
                if (!string.IsNullOrWhiteSpace(task.TaskExtension.TaskExtensionInfo))
                {
                    taskExCheckLists = CommUtils.FromJson <TaskExCheckListInfo>(task.TaskExtension.TaskExtensionInfo);
                }
                if (taskExCheckLists.CheckGroups.Count != 0 &&
                    taskExCheckLists.CheckGroups.Any(x => x.GroupName == groupName))
                {
                    foreach (var checkItemGroupList in taskExCheckLists.CheckGroups)
                    {
                        if (checkItemGroupList.GroupName == groupName)
                        {
                            foreach (var item in checkItemNameList)
                            {
                                CommUtils.Assert(!checkItemGroupList.CheckItems.Any(x => x.Name == item), "工作[{0}({1})]中已经存在检查项[{2}]",
                                                 task.Description, task.ShortCode, checkItemName);

                                var checkItem = new TaskExCheckItem();
                                checkItem.Guid = Guid.NewGuid().ToString();
                                checkItem.Name = item;
                                checkItem.CheckStatus = TaskExCheckType.Unchecked.ToString();

                                checkItemGroupList.CheckItems.Add(checkItem);
                            }
                        }
                    }
                }
                else
                {
                    TaskExCheckGroup checkItemGroup = new TaskExCheckGroup();
                    checkItemGroup.GroupName = groupName;

                    foreach (var item in checkItemNameList)
                    {
                        var checkItem = new TaskExCheckItem();
                        checkItem.Guid = Guid.NewGuid().ToString();
                        checkItem.Name = item;
                        checkItem.CheckStatus = TaskExCheckType.Unchecked.ToString();
                        checkItemGroup.CheckItems.Add(checkItem);
                    }

                    taskExCheckLists.CheckGroups.Add(checkItemGroup);
                }
                var isExistNotFinished = taskExCheckLists.CheckGroups.Any(group => group.CheckItems.Any(y => y.CheckStatus == TaskExCheckType.Unchecked.ToString()));
                if (isExistNotFinished && task.TaskStatus != TaskStatus.Running)
                {
                    var logicModel = Platform.GetProject(task.ProjectId);
                    new TaskLogicModel(logicModel, task).Start();
                }
                else
                {
                    m_dbAdapter.Task.UpdateTask(task);
                }

                task.TaskExtension.TaskExtensionInfo = CommUtils.ToJson(taskExCheckLists);
                task.TaskHandler = CurrentUserName;

                m_dbAdapter.Task.UpdateTaskExtension(task.TaskExtension);
                m_dbAdapter.Project.NewEditProductLog(EditProductType.EditTask, task.ProjectId,
                                                      "工作[" + task.Description + "][" + shortCode + "],中添加检查项GroupName[" + groupName + "]CheckItem[" + CommUtils.Join(checkItemNameList) + "]", "");

                var comment = "增加分组[" + groupName + "]中的工作要点[" + string.Join(";", checkItemNameList.ToArray()) + "]";
                m_dbAdapter.Task.AddTaskLog(task, comment);

                return ActionUtils.Success(1);
            }));
        }