Beispiel #1
0
        private void dataGridViewX1_SelectionChanged(object sender, EventArgs e)
        {
            if (dataGridViewX1.SelectedRows.Count == 0)
            {
                return;
            }
            var selectedRow = dataGridViewX1.SelectedRows[0];

            if (selectedRow == null)
            {
                return;
            }
            var matchId = selectedRow.Cells[0].Value.ToString();

            var initialed = AthletesDAL.IsMatchInitialed(matchId);

            if (initialed)
            {
                this.lbImportRegForm.Text      = "重新导入报名表(已导入)";
                this.lbImportRegForm.ForeColor = Color.FromArgb(21, 66, 139);
            }
            else
            {
                this.lbImportRegForm.Text      = "导入报名表";
                this.lbImportRegForm.ForeColor = Color.FromArgb(21, 66, 139);
            }
        }
        // 生成决赛竞赛
        private void lbGenerateFinalMatchGroupTable_Click(object sender, EventArgs e)
        {
            // 决赛的时候,取出成绩的前几名显示,前几名在创建比赛的时候设定
            var showNum   = MatchInfo.FinalNum;
            var sexName   = SwitchProjectNamesToSex(this.cbProjectNames.Text);
            var groupName = this.cbGroupNames.Text;

            var preRound      = MatchInfo.PreRounds;
            var athletesScore = AthletesDAL.GetAthletesScore(MatchId, groupName, sexName, preRound);

            athletesScore = athletesScore.Where(x => x.ScoresWithRound.Count > 0 && x.ScoresWithRound.ContainsKey(x.ScoresWithRound.Count))
                            .OrderBy(x => x.SumSocre)
                            .ThenBy(x => x.ScoresWithRound[x.ScoresWithRound.Count].Sum())
                            .Take(showNum)
                            .ToList();

            GenerateFinalMatchGroup form = new GenerateFinalMatchGroup();

            form.MatchId   = MatchInfo.Id;
            form.MatchName = MatchInfo.Name;
            form.GroupName = groupName;
            form.SexName   = sexName;
            form.Project   = this.cbProjectNames.Text;
            form.Athletes  = athletesScore;
            form.ShowDialog();
        }
        private void btnOK_Click(object sender, EventArgs e)
        {
            var name          = this.tbName.Text;
            var teamShortName = this.tbTeamShortName.Text;

            AthletesDAL.Delete(MatchId, teamShortName, name);
            MessageBox.Show("删除成功");
            this.DialogResult = DialogResult.OK;
            this.Close();
        }
Beispiel #4
0
        private void lbImportRegForm_Click(object sender, EventArgs e)
        {
            var selectedRow = dataGridViewX1.SelectedRows[0];

            if (selectedRow == null)
            {
                return;
            }
            var matchId = selectedRow.Cells[0].Value.ToString();

            var selectedFolder = string.Empty;
            FolderBrowserDialog folderBrowser = new FolderBrowserDialog();

            folderBrowser.Description = "请选择一个文件夹,确认后会将文件夹内所有报名文件导入系统";
            if (folderBrowser.ShowDialog() == DialogResult.OK)
            {
                selectedFolder = folderBrowser.SelectedPath;
            }

            if (string.IsNullOrWhiteSpace(selectedFolder))
            {
                return;
            }

            var root       = new DirectoryInfo(selectedFolder);
            var files      = root.GetFiles();
            var filesCount = files.Count(); // 获取文件数量

            // 读取文件,将数据写入到数据库中
            var allAthletes = new List <AthleteModel>();
            var allOthers   = new List <OthersModel>();

            foreach (var file in files)
            {
                try
                {
                    var result = ExcelHelperImport.GetFileInfo(file, matchId);
                    allAthletes.AddRange(result.Athletes);
                    allOthers.AddRange(result.Others);
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"{file.FullName} \n 文件异常,请检查是否被打开或者文件是否符合导入格式。 Exception:{ex}");
                    return;
                }
            }

            // 将所有的运动员信息存入到数据库中
            AthletesDAL.InsertBatch(allAthletes);
            OthersDAL.InsertBatch(allOthers);

            this.lbImportRegForm.Text = "重新导入报名表(已导入)";

            MessageBox.Show($"所有报名表已经导入成功!共{filesCount}个文件。");
        }
Beispiel #5
0
        private static int PrintWomenGroupScore(IWorkbook workbook, ISheet sheet, int startRowNum, string matchId, string matchName)
        {
            var rowNum = startRowNum;

            // 获取所有分组
            var allGroupNames = AthletesDAL.GetAllGroupNames(matchId);

            // 遍历每组人员,获取所有运动员成绩
            foreach (var groupName in allGroupNames.OrderBy(x => x))
            {
                var allPartInGroupMatchScore = AthletesDAL.GetTeamMatchAthletesScore(matchId, groupName, "女", 2);

                // 分别挑出4人成绩最少杆数一轮,二轮和对team进行排序
                var sortedTeamShortName = SortTeamShortNameByTeamScore(allPartInGroupMatchScore);

                // 遍历每个team, 对运动员按照总分数进行排序
                var sortedAllPartInGroupMatchScore = new List <AthleteSocreModel>();
                for (var i = 0; i < sortedTeamShortName.Count; i++)
                {
                    var sortedTeamAthletesScore = allPartInGroupMatchScore.Where(x => x.TeamShortName == sortedTeamShortName[i] && x.SumSocre > 0).OrderBy(x => x.SumSocre).ToList();
                    if (sortedTeamAthletesScore.Count >= 4) // 当团体赛人数少于4时,不计入团体赛成绩
                    {
                        sortedAllPartInGroupMatchScore.AddRange(sortedTeamAthletesScore);
                    }
                }

                // 写入文件
                sheet.AddMergedRegion(new CellRangeAddress(rowNum, rowNum, 0, 4));
                var headRow  = ExcelHelper.GetRow(sheet, rowNum);
                var headCell = ExcelHelper.SetCellStringValue(headRow, 0, $"女子团体成绩公告({groupName})(前八名)");
                headCell.CellStyle = ExcelHelper.SetCellStyle(workbook, sheet, rowNum, true, 300);
                rowNum++;

                var tbheadRow = ExcelHelper.GetRow(sheet, rowNum);
                ExcelHelper.SetCellStringValue(tbheadRow, 0, "代表队");
                ExcelHelper.SetCellStringValue(tbheadRow, 1, "运动员");
                ExcelHelper.SetCellStringValue(tbheadRow, 2, "成绩");
                ExcelHelper.SetCellStringValue(tbheadRow, 3, "名次");
                rowNum++;

                // 写入每队人员成绩
                var allTeamShortNames = sortedAllPartInGroupMatchScore.Select(x => x.TeamShortName).Distinct().ToList();
                for (var i = 0; i < allTeamShortNames.Count && i < 8; i++)
                {
                    rowNum = SetTeamAthletes(sortedAllPartInGroupMatchScore.Where(x => x.TeamShortName == allTeamShortNames[i]).ToList(), rowNum, sheet, i + 1);
                }

                rowNum++;
            }

            return(rowNum);
        }
        private void lbPrintAthleteFinalScore_Click(object sender, EventArgs e)
        {
            // 决赛的时候,取出成绩的前几名显示,前几名在创建比赛的时候设定
            var showNum   = MatchInfo.FinalNum;
            var sexName   = SwitchProjectNamesToSex(this.cbProjectNames.Text);
            var groupName = this.cbGroupNames.Text;

            // 获取决赛两轮成绩
            var athletesScore = AthletesDAL.GetAthletesFinalScore(MatchId, groupName, sexName, 2);

            athletesScore = athletesScore.Where(x => x.ScoresWithRound.Count > 0 && x.SumSocre > 0).OrderBy(x => x.SumSocre).ThenBy(x => x.ScoresWithRound[x.ScoresWithRound.Count].Sum()).ToList();

            var fileName = $"{MatchInfo.Name}-{groupName}-{this.cbProjectNames.Text}-决赛成绩-{DateTime.Now.ToString("yyyyMMddHHmmss")}";

            ExcelHelperPrintFinalMatch.GenerateFinalScoreTwoRound(fileName, athletesScore, MatchInfo.Name, groupName, this.cbProjectNames.Text);
        }
Beispiel #7
0
        // 各代表队参赛信息汇总表
        private void lbTeamInfoAll_Click(object sender, EventArgs e)
        {
            var selectedRow = dataGridViewX1.SelectedRows[0];

            if (selectedRow == null)
            {
                return;
            }
            var matchId   = selectedRow.Cells[0].Value.ToString();
            var matchName = selectedRow.Cells[1].Value.ToString();

            var allTeamMemberProjectInfo = AthletesDAL.GetTeamMemberProjectInfo(matchId);

            // 生成报表
            var fileName = $"{matchName}-各参赛队信息汇总表-{DateTime.Now.ToString("yyyyMMddHHmmss")}";

            ExcelGenerateTeamMemeberProject.GenerateTeamMemberProjectInfo(allTeamMemberProjectInfo.OrderBy(x => x.GroupName).ThenBy(x => x.TeamName).ToList(), fileName);
        }
Beispiel #8
0
        // 各代表队人数统计表
        private void lbTeamMemberCount_Click(object sender, EventArgs e)
        {
            var selectedRow = dataGridViewX1.SelectedRows[0];

            if (selectedRow == null)
            {
                return;
            }
            var matchId   = selectedRow.Cells[0].Value.ToString();
            var matchName = selectedRow.Cells[1].Value.ToString();

            var allTeamMembersCount = AthletesDAL.GetTeamMemberCount(matchId);

            // 生成报表
            var fileName = $"{matchName}-各代表队人数统计表-{DateTime.Now.ToString("yyyyMMddHHmmss")}";

            ExcelHelperGenerateEveryTeamCount.GenerateEveyTeamCountInfo(allTeamMembersCount.OrderBy(x => x.GroupName).ToList(), fileName);
        }
Beispiel #9
0
        private void lbGenerateWomenWomenImport_Click(object sender, EventArgs e)
        {
            var selectedRow = dataGridViewX1.SelectedRows[0];

            if (selectedRow == null)
            {
                return;
            }
            var matchId   = selectedRow.Cells[0].Value.ToString();
            var matchName = selectedRow.Cells[1].Value.ToString();

            var allWayPerson     = AthletesDAL.GetWayPersonInfo(matchId);
            var individualPerson = allWayPerson.Where(x => x.Sex == "女女").OrderBy(x => x.GroupName).ThenBy(x => x.Sex).ThenBy(x => x.TeamName).ToList();

            // 生成报表
            var fileName = $"{matchName}-球道赛女双导出名单-{DateTime.Now.ToString("yyyyMMddHHmmss")}";

            ExcelHelperExportWayGamePersonInfo.GenerateWayGamePersonInfo(individualPerson, fileName);
        }
Beispiel #10
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            var name          = this.tbName.Text;
            var teamName      = this.tbTeamName.Text;
            var teamShortName = this.tbTeamShortName.Text;

            var athlete = new AthleteModel();

            athlete.Id                       = Guid.NewGuid().ToString();
            athlete.GroupName                = GroupName;
            athlete.MatchId                  = MatchId;
            athlete.Name                     = name;
            athlete.Sex                      = Sex;
            athlete.TeamName                 = teamName;
            athlete.TeamShortName            = teamShortName;
            athlete.BarIndividualGamesStatus = this.cbBarIndividualStatus.Text.Trim();
            athlete.BarGroupGamesStatus      = this.cbBarGroupStatus.Text.Trim();

            AthletesDAL.Insert(athlete);
            MessageBox.Show("添加成功");
            this.DialogResult = DialogResult.OK;
            this.Close();
        }
Beispiel #11
0
        private static int PrintMenWomenScore(IWorkbook workbook, ISheet sheet, int startRowNum, string matchId, string matchName)
        {
            var rowNum = startRowNum;
            // 获取所有分组
            var allGroupNames = AthletesDAL.GetAllGroupNames(matchId);

            // 遍历每组人员,获取所有运动员成绩
            foreach (var groupName in allGroupNames.OrderBy(x => x))
            {
                var allPartInGroupMatchScore = AthletesDAL.GetAthletesScore(matchId, groupName, "男女", 2);
                if (allPartInGroupMatchScore.Count == 0)
                {
                    continue;
                }
                var athletes = allPartInGroupMatchScore.Select(x => new AthleteScore()
                {
                    Name          = x.Name,
                    TeamName      = x.TeamName,
                    TeamShortName = x.TeamShortName,
                    PreSumSocre   = x.SumSocre
                }).ToList();
                athletes = athletes.Where(x => x.PreSumSocre > 0).OrderBy(x => x.PreSumSocre).ToList();

                // 写入文件
                sheet.AddMergedRegion(new CellRangeAddress(rowNum, rowNum, 0, 4));
                var headRow  = ExcelHelper.GetRow(sheet, rowNum);
                var headCell = ExcelHelper.SetCellStringValue(headRow, 0, $"杆数赛混双({groupName})");
                headCell.CellStyle = ExcelHelper.SetCellStyle(workbook, sheet, rowNum, true, 300);
                rowNum++;

                rowNum = SetAtheleScore(workbook, sheet, rowNum, athletes);

                rowNum++;
            }

            return(rowNum);
        }
Beispiel #12
0
        /// <summary>
        /// 打印女子团体成绩
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lbWomenTeamScoreSummaryTable_Click(object sender, EventArgs e)
        {
            var selectedRow = dataGridViewX1.SelectedRows[0];

            if (selectedRow == null)
            {
                return;
            }
            var matchId   = selectedRow.Cells[0].Value.ToString();
            var matchName = selectedRow.Cells[1].Value.ToString();

            var matchInfo = MatchDAL.GetMatchInfoById(matchId);

            // 总合计
            if (matchInfo.ScoringMethod == "总合计")
            {
                // 获取所有分组
                var allGroupNames = AthletesDAL.GetAllGroupNames(matchId);

                // 遍历每组人员,获取所有运动员成绩
                foreach (var groupName in allGroupNames.OrderBy(x => x))
                {
                    var allPartInGroupMatchScore = AthletesDAL.GetTeamMatchAthletesScore(matchId, groupName, "女", 2);

                    // 分别挑出4人成绩最少杆数个人对team进行排序
                    var sortedTeamShortName = SortTeamShortNameByTeamPersonScore(allPartInGroupMatchScore);

                    // 遍历每个team, 对运动员按照总分数进行排序
                    var sortedAllPartInGroupMatchScore = new List <AthleteSocreModel>();
                    for (var i = 0; i < sortedTeamShortName.Count; i++)
                    {
                        var sortedTeamAthletesScore = allPartInGroupMatchScore
                                                      .Where(x => x.TeamShortName == sortedTeamShortName[i] && x.SumSocre > 0)
                                                      .OrderBy(x => x.SumSocre)
                                                      .ToList();
                        if (sortedTeamAthletesScore.Count >= 4) // 当团体赛人数少于4时,不计入团体赛成绩
                        {
                            sortedAllPartInGroupMatchScore.AddRange(sortedTeamAthletesScore);
                        }
                    }

                    // 导出文件
                    var fileName = $"{matchName}-{groupName}-女子团体成绩-{DateTime.Now.ToString("yyyyMMddHHmmss")}";
                    ExcelHelperPrintTeamScoreSummaryTable.GenerateTeamScoreSummaryPersonalTable(sortedAllPartInGroupMatchScore, matchName, groupName, "女", fileName);
                }
            }
            // 分开合计
            else
            {
                // 获取所有分组
                var allGroupNames = AthletesDAL.GetAllGroupNames(matchId);

                // 遍历每组人员,获取所有运动员成绩
                foreach (var groupName in allGroupNames.OrderBy(x => x))
                {
                    var allPartInGroupMatchScore = AthletesDAL.GetTeamMatchAthletesScore(matchId, groupName, "女", 2);

                    // 分别挑出4人成绩最少杆数一轮,二轮和对team进行排序
                    var sortedTeamShortName = SortTeamShortNameByTeamScore(allPartInGroupMatchScore);

                    // 遍历每个team, 对运动员按照总分数进行排序
                    var sortedAllPartInGroupMatchScore = new List <AthleteSocreModel>();
                    for (var i = 0; i < sortedTeamShortName.Count; i++)
                    {
                        var sortedTeamAthletesScore = allPartInGroupMatchScore.Where(x => x.TeamShortName == sortedTeamShortName[i] && x.SumSocre > 0).OrderBy(x => x.SumSocre).ToList();
                        if (sortedTeamAthletesScore.Count >= 4) // 当团体赛人数少于4时,不计入团体赛成绩
                        {
                            sortedAllPartInGroupMatchScore.AddRange(sortedTeamAthletesScore);
                        }
                    }

                    // 导出文件
                    var fileName = $"{matchName}-{groupName}-女子团体成绩-{DateTime.Now.ToString("yyyyMMddHHmmss")}";
                    ExcelHelperPrintTeamScoreSummaryTable.GenerateTeamScoreSummaryTable(sortedAllPartInGroupMatchScore, matchName, groupName, "女", fileName);
                }
            }
        }
Beispiel #13
0
        private static int PrintWomenScore(IWorkbook workbook, ISheet sheet, int startRowNum, string matchId, string matchName)
        {
            var rowNum = startRowNum;
            // 获取所有分组
            var allGroupNames = AthletesDAL.GetAllGroupNames(matchId);

            // 遍历每组人员,获取所有运动员成绩
            foreach (var groupName in allGroupNames.OrderBy(x => x))
            {
                var allPartInGroupMatchScore      = AthletesDAL.GetTeamMatchAthletesScore(matchId, groupName, "女", 2);
                var allPartInGroupFinalMatchScore = AthletesDAL.GetAthletesFinalScore(matchId, groupName, "女", 2);
                var athletes = allPartInGroupMatchScore.Select(x => new AthleteScore()
                {
                    Name          = x.Name,
                    TeamName      = x.TeamName,
                    TeamShortName = x.TeamShortName,
                    PreSumSocre   = x.SumSocre
                }).ToList();

                foreach (var allPart in allPartInGroupFinalMatchScore)
                {
                    var athlete = athletes.Where(x => x.Name == allPart.Name).FirstOrDefault();
                    if (athlete != null)
                    {
                        athlete.FinalSumSocre = allPart.SumSocre;
                    }
                }

                var sortedAthlete = new List <AthleteScore>();
                var finalAths     = athletes.Where(x => x.FinalSumSocre > 0).OrderBy(x => x.FinalSumSocre).ToList();
                sortedAthlete.AddRange(finalAths);
                var preAths = athletes.Where(x => x.FinalSumSocre == 0 && x.PreSumSocre > 0).OrderBy(x => x.PreSumSocre).ToList();
                sortedAthlete.AddRange(preAths);

                // 写入文件
                sheet.AddMergedRegion(new CellRangeAddress(rowNum, rowNum, 0, 4));
                var headRow  = ExcelHelper.GetRow(sheet, rowNum);
                var headCell = ExcelHelper.SetCellStringValue(headRow, 0, $"杆数赛女子个人({groupName})");
                headCell.CellStyle = ExcelHelper.SetCellStyle(workbook, sheet, rowNum, true, 300);
                rowNum++;

                var tbheadRow = ExcelHelper.GetRow(sheet, rowNum);
                ExcelHelper.SetCellStringValue(tbheadRow, 0, "代表队");
                ExcelHelper.SetCellStringValue(tbheadRow, 1, "运动员");
                ExcelHelper.SetCellStringValue(tbheadRow, 2, "预赛");
                ExcelHelper.SetCellStringValue(tbheadRow, 3, "决赛");
                ExcelHelper.SetCellStringValue(tbheadRow, 4, "名次");
                rowNum++;

                for (var i = 0; i < sortedAthlete.Count; i++)
                {
                    var cellRow = ExcelHelper.GetRow(sheet, rowNum);
                    ExcelHelper.SetCellStringValue(cellRow, 0, sortedAthlete[i].TeamShortName);
                    ExcelHelper.SetCellStringValue(cellRow, 1, sortedAthlete[i].Name);
                    ExcelHelper.SetCellStringValue(cellRow, 2, sortedAthlete[i].PreSumSocre.ToString());
                    ExcelHelper.SetCellStringValue(cellRow, 3, sortedAthlete[i].FinalSumSocre == 0 ? "" : sortedAthlete[i].FinalSumSocre.ToString());
                    ExcelHelper.SetCellStringValue(cellRow, 4, i < 8 ? $"{i + 1}" : "");
                    ++rowNum;
                }

                rowNum++;
            }



            return(rowNum);
        }
        private void dataGridViewX1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            var row = e.RowIndex;

            if (row < 0)
            {
                return;
            }
            var column = e.ColumnIndex;
            // 如果输入的是1,背景变红色
            var editValue = this.dataGridViewX1.Rows[row].Cells[column]?.Value.ToString().Trim();

            if (editValue == "1")
            {
                this.dataGridViewX1.Rows[row].Cells[column].Style.BackColor = Color.Red;
            }

            // 如果值的范围不在1~10提示
            var editNumValue = 0.0;

            double.TryParse(editValue, out editNumValue);
            if (editNumValue < 1 || editNumValue > 10)
            {
                MessageBox.Show("请输入正确的分数(1~10)");
                this.dataGridViewX1.Rows[row].Cells[column].Value = "";
                return;
            }

            var sexName = SwitchProjectNamesToSex(this.cbProjectNames.Text);
            int round   = Convert.ToInt32(this.cbRounds.Text);

            var roundField = string.Empty;

            if (IsFinal)
            {
                roundField = ConvertRoundToDBField(round, true);
            }
            else
            {
                roundField = ConvertRoundToDBField(round);
            }

            var groupName = this.cbGroupNames.Text;
            var matchId   = MatchId;

            if (RecordByGroup)
            {
                var teamShortName = dataGridViewX1.Rows[row].Cells[1].Value.ToString();
                var name          = dataGridViewX1.Rows[row].Cells[2].Value.ToString();
                var scores        = new List <string>();
                var columnsCount  = dataGridViewX1.Rows[row].Cells.Count;
                var sum           = 0.0;

                for (int i = 0; i < MatchInfo.NumberOneRound; i++)
                {
                    scores.Add(dataGridViewX1.Rows[row].Cells[i + 3].Value.ToString());
                }

                // 统计所有分数
                for (var i = 0; i < columnsCount - 1; i++)
                {
                    var cellValue = dataGridViewX1.Rows[row].Cells[i].Value.ToString();
                    var num       = 0.0;
                    double.TryParse(cellValue, out num);
                    sum += num;
                }
                dataGridViewX1.Rows[row].Cells[columnsCount - 1].Value = sum;

                if (scores.Count > 0)
                {
                    AthletesDAL.UpdateScore(matchId, groupName, sexName, roundField, teamShortName, name, string.Join(";", scores));
                }
            }
            else
            {
                var teamShortName = dataGridViewX1.Rows[row].Cells[0].Value.ToString();
                var name          = dataGridViewX1.Rows[row].Cells[1].Value.ToString();
                var scores        = new List <string>();
                var columnsCount  = dataGridViewX1.Rows[row].Cells.Count;
                var sum           = 0.0;

                for (int i = 0; i < MatchInfo.NumberOneRound; i++)
                {
                    scores.Add(dataGridViewX1.Rows[row].Cells[i + 2].Value.ToString());
                }

                // 统计所有分数
                for (var i = 0; i < columnsCount - 1; i++)
                {
                    var cellValue = dataGridViewX1.Rows[row].Cells[i].Value.ToString();
                    var num       = 0.0;
                    double.TryParse(cellValue, out num);
                    sum += num;
                }
                dataGridViewX1.Rows[row].Cells[columnsCount - 1].Value = sum;

                if (scores.Count > 0)
                {
                    AthletesDAL.UpdateScore(matchId, groupName, sexName, roundField, teamShortName, name, string.Join(";", scores));
                }
            }
        }
        private void LoadAthletes(DataTable table, string matchId, string groupName, string sexName, int round, bool isFinal)
        {
            // 决赛
            if (isFinal)
            {
                // 决赛的时候,取出成绩的前几名显示,前几名在创建比赛的时候设定
                var showNum = MatchInfo.FinalNum;

                // 获取几轮杆数的排序
                var preRound       = MatchInfo.PreRounds;
                var athletesScore1 = AthletesDAL.GetAthletesScore(matchId, groupName, sexName, preRound);
                athletesScore1 = athletesScore1.Where(x => x.ScoresWithRound.Count > 0).OrderBy(x => x.SumSocre).Take(showNum).ToList();

                if (RecordByGroup)
                {
                    // 判断是否已经生成分组表,如果没有则提示先生成分组表
                    var finalMatchGroupGenerate = MatchGroupTableDAL.FinalMatchGroupGenerated(matchId, groupName, sexName);
                    if (!finalMatchGroupGenerate)
                    {
                        MessageBox.Show($"{groupName}-{sexName}-决赛分组表还未生成,请先生成决赛分组表后再通过分组表录入分数");
                        return;
                    }

                    var roundField    = ConvertRoundToDBField(round, isFinal);
                    var athletesScore = AthletesDAL.GetAthletesScore(matchId, groupName, sexName, roundField);

                    // 更新每条数据在group table的位置
                    MatchGroupTableDAL.UpdateFinalGroupTableInfo(matchId, groupName, sexName, athletesScore);
                    athletesScore = athletesScore.OrderBy(x => x.Row).ThenBy(x => x.Column).ToList();

                    for (var i = 0; i < athletesScore.Count; i++)
                    {
                        var row = table.NewRow();
                        row[0] = $"第{athletesScore[i].Row + 1}组";
                        row[1] = athletesScore[i].TeamShortName;
                        row[2] = athletesScore[i].Name;
                        var sum = 0.0;
                        if (athletesScore1.Select(x => x.TeamShortName).Contains(athletesScore[i].TeamShortName) &&
                            athletesScore1.Select(x => x.Name).Contains(athletesScore[i].Name))
                        {
                            if (athletesScore[i].Score.Count > 1)
                            {
                                var j = 3;
                                foreach (var s in athletesScore[i].Score)
                                {
                                    row[j] = s.Value;
                                    var value = 0.0;
                                    Double.TryParse(s.Value, out value);
                                    sum += value;

                                    j++;
                                }
                                row[3 + athletesScore[i].Score.Count] = sum;
                            }
                            table.Rows.Add(row);
                        }
                    }
                }
                else
                {
                    var roundField    = ConvertRoundToDBField(round, isFinal);
                    var athletesScore = AthletesDAL.GetAthletesScore(matchId, groupName, sexName, roundField);
                    athletesScore = athletesScore.OrderBy(x => x.TeamName).ThenBy(x => x.Name).ToList();
                    for (var i = 0; i < athletesScore.Count; i++)
                    {
                        var row = table.NewRow();
                        row[0] = athletesScore[i].TeamShortName;
                        row[1] = athletesScore[i].Name;
                        var sum = 0.0;
                        if (athletesScore1.Select(x => x.TeamShortName).Contains(athletesScore[i].TeamShortName) &&
                            athletesScore1.Select(x => x.Name).Contains(athletesScore[i].Name))
                        {
                            if (athletesScore[i].Score.Count > 1)
                            {
                                var j = 2;
                                foreach (var s in athletesScore[i].Score)
                                {
                                    row[j] = s.Value;
                                    var value = 0.0;
                                    Double.TryParse(s.Value, out value);
                                    sum += value;

                                    j++;
                                }

                                row[2 + athletesScore[i].Score.Count] = sum;
                            }
                            table.Rows.Add(row);
                        }
                    }
                }
            }
            else // 预赛
            {
                var roundField = ConvertRoundToDBField(round, isFinal);

                var athletesScore = AthletesDAL.GetAthletesScore(matchId, groupName, sexName, roundField);
                if (RecordByGroup)
                {
                    // 更新每条数据在group table的位置
                    MatchGroupTableDAL.UpdateGroupTableInfo(matchId, groupName, sexName, athletesScore);
                    athletesScore = athletesScore.OrderBy(x => x.Row).ThenBy(x => x.Column).ToList();
                }
                else
                {
                    athletesScore = athletesScore.OrderBy(x => x.TeamShortName).ThenBy(x => x.Name).ToList();
                }

                for (var i = 0; i < athletesScore.Count; i++)
                {
                    var row = table.NewRow();
                    if (RecordByGroup)
                    {
                        row[0] = $"第{athletesScore[i].Row + 1}组";
                        row[1] = athletesScore[i].TeamShortName;
                        row[2] = athletesScore[i].Name;
                        var sum = 0.0;
                        if (athletesScore[i].Score.Count > 1)
                        {
                            var j = 3;
                            foreach (var s in athletesScore[i].Score)
                            {
                                row[j] = s.Value;
                                var value = 0.0;
                                Double.TryParse(s.Value, out value);
                                sum += value;

                                j++;
                            }

                            row[3 + athletesScore[i].Score.Count] = sum;
                        }
                    }
                    else
                    {
                        row[0] = athletesScore[i].TeamShortName;
                        row[1] = athletesScore[i].Name;
                        var sum = 0.0;
                        if (athletesScore[i].Score.Count > 1)
                        {
                            var j = 2;
                            foreach (var s in athletesScore[i].Score)
                            {
                                row[j] = s.Value;
                                var value = 0.0;
                                Double.TryParse(s.Value, out value);
                                sum += value;

                                j++;
                            }

                            row[2 + athletesScore[i].Score.Count] = sum;
                        }
                    }
                    table.Rows.Add(row);
                }
            }
        }