private void recursionWrite(ArrayList decomposList)
    {
        //遍历decomposeList
        foreach (CrowdTask item in decomposList)
        {
            //根据每一个分解的Id,去查找对应的分解结果
            ArrayList decomposeResultList = findDecomposeResultByWorkflowIdAndVote(item.taskWorkflowId, item.mainTaskId);
            if (decomposeResultList.Count != 0 && decomposeResultList != null)
            {
                //将这个分解结果写入到数据库
                foreach (DecomposeResult dr in decomposeResultList)
                {
                    CrowdTask ct = findCrowdTaskByWorkflowId(item.taskWorkflowId);

                    DecomposeTree dt = findDecomposeTreeByTaskNameAndTaskDescription(ct.taskName, ct.taskDescription, ct.mainTaskId);

                    insertDecomposeTree(dr.taskName, dr.taskDescription, dr.taskOrder, null, dt.id, dr.mainTaskId);

                    if (dr.simple == "yes")
                    {
                        int    dtId         = findDecomposeTreeByTaskNameAndTaskDescription(dr.taskName, dr.taskDescription, dr.mainTaskId).id;
                        string taskSolution = findSolveResultByTaskNameAndBestAnswer(dr.taskName, dr.mainTaskId).taskSolution;
                        updateDecomposeTreeSetSolution(taskSolution, dtId);
                    }
                }
                foreach (DecomposeResult dr in decomposeResultList)
                {
                    //遍历当前分解结果list里面的每一个任务,看看是否还有分解,然后再写入到数据库
                    ArrayList subDecomposeList = findCrowdTaskByParentWorkflowIdAndTaskTypeAndTaskName(dr.workflow_id, dr.taskName, TaskType.decomposeTask, dr.mainTaskId);

                    recursionWrite(subDecomposeList);
                }
            }
        }
    }
    private DecomposeTree findDecomposeTreeByTaskNameAndTaskDescription(string taskName, string taskDescription, string mainTaskId)
    {
        DecomposeTree dt  = new DecomposeTree();
        SqlCommand    com = null;

        try
        {
            conn.Open();
            string sql = string.Format("select * from decomposeTree where taskName='{0}' and mainTaskWorkflowId='{1}' and  taskDescription='{2}'", taskName, mainTaskId, taskDescription);
            com = new SqlCommand(sql, conn);
            SqlDataReader dr = com.ExecuteReader();
            while (dr.Read())
            {
                dt.id              = Convert.ToInt32(dr["id"].ToString());
                dt.taskName        = dr["taskName"].ToString();
                dt.taskDescription = dr["taskDescription"].ToString();
                dt.taskOrder       = dr["taskOrder"].ToString();
                dt.solution        = dr["taskSolution"].ToString();
                dt.parentId        = Convert.ToInt32(dr["parentId"].ToString());
                dt.mainTaskId      = dr["mainTaskWorkflowId"].ToString();
            }
        }
        catch (Exception e)
        {
            throw e;
        }
        finally
        {
            if (com != null)
            {
                com.Dispose();
            }
            if (conn != null)
            {
                conn.Close();
            }
        }
        return(dt);
    }