[Asm] 纯文本查看 复制代码 === 比赛编排系统 - 最终完整修复代码.txt ===
生成日期:2026-04-19
适用文件:Frm设置第二步.cs + 相关DAL + Frm成绩录入Up2.cs 小修复
【使用前必读】
1. 先备份数据库!
2. 把下面代码按注释位置替换/新增
3. 需要 using System.Transactions;
════════════════════════════════════════════════
1. DAL 层必须新增的方法(3个)
════════════════════════════════════════════════
【DALJibieRiqiSetList.cs】
public void DeleteByJibieMxId(int jibieMxId)
{
string sql = "DELETE FROM JibieRiqiSetList WHERE JibieMxId = @JibieMxId";
DbHelperSQL.ExecuteSql(sql, new SqlParameter("@JibieMxId", jibieMxId));
}
【DALChangciInfo.cs】
public bool ExistsByJibieId(int jibieId)
{
string sql = "SELECT COUNT(0) FROM ChangciInfo WHERE JibieId = @JibieId";
object obj = DbHelperSQL.GetSingle(sql, new SqlParameter("@JibieId", jibieId));
return Convert.ToInt32(obj) > 0;
}
【DALDuizhanTu.cs】
public bool ExistsByJibieId(int jibieId)
{
string sql = "SELECT COUNT(0) FROM DuizhanTu WHERE JibieId = @JibieId";
object obj = DbHelperSQL.GetSingle(sql, new SqlParameter("@JibieId", jibieId));
return Convert.ToInt32(obj) > 0;
}
════════════════════════════════════════════════
2. Frm设置第二步.cs 完整替换版
════════════════════════════════════════════════
using _2204271摔跤比赛编排系统后台.对阵图;
using OPCommon;
using DAL;
using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Transactions;
using System.Windows.Forms;
namespace _2204271摔跤比赛编排系统后台.比赛管理
{
public partial class Frm设置第二步 : Form
{
// 你原来的所有字段保持不变(lstLeftJibieRiqiSetList 等)
// ==================== 替换 button8_Click ====================
private void button8_Click(object sender, EventArgs e)
{
if (lstLeftJibieRiqiSetList == null || lstLeftJibieRiqiSetList.Count == 0) return;
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,
new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))
{
try
{
DALJibieRiqiSetList dalSet = new DALJibieRiqiSetList();
foreach (var item in lstLeftJibieRiqiSetList)
{
dalSet.DeleteByJibieMxId(item.JibieMxId);
}
dalSet.Insert(lstLeftJibieRiqiSetList);
var groupedByJibieId = this.lstLeftJibieRiqiSetList
.GroupBy(x => x.JibieId)
.Select(g => new { JibieId = g.Key, Items = g.ToList() })
.ToList();
foreach (var group in groupedByJibieId)
{
BisaiGongjiJi modelJibie = new DALBisaiGongjiJi().GetModel(group.JibieId);
PressSetInEx(modelJibie, group.Items);
}
UpdateChangciNoAll();
this.lstLeftJibieRiqiSetList.Clear();
this.lstRightJibieRiqiSetList.Clear();
lbxJibieRiqiSetList.DataSource = lstLeftJibieRiqiSetList;
lbxJibieRiqiSetListRight.DataSource = lstRightJibieRiqiSetList;
scope.Complete();
MessageBox.Show("✅ 场次处理成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show($"❌ 处理失败,已全部回滚!\n错误:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
// ==================== 新增 PressSetInEx ====================
private void PressSetInEx(BisaiGongjiJi modelJibie, List<JibieRiqiSetList> currentBatch)
{
DALChangciInfo dalChangci = new DALChangciInfo();
bool isFirstTime = !dalChangci.ExistsByJibieId(modelJibie.Id);
if (isFirstTime)
{
PressSetIn(modelJibie);
new DuizhantuCaozuoImageUpdate().InsertDuizhantuByDanBai(modelJibie);
}
else
{
ApplyDateAndTaihaoToBatch(currentBatch);
}
}
// ==================== 新增 ApplyDateAndTaihaoToBatch ====================
private void ApplyDateAndTaihaoToBatch(List<JibieRiqiSetList> batch)
{
DALChangciInfo dal = new DALChangciInfo();
foreach (JibieRiqiSetList item in batch)
{
List<ChangciInfo> lst = dal.GetListByJibieMxId(item.JibieMxId);
if (lst == null || lst.Count == 0) continue;
string riqi = item.JitiShijian.Split(' ')[0];
foreach (ChangciInfo ci in lst)
{
ci.Riqi = riqi;
ci.JitiShijian = item.JitiShijian;
ci.Taihao = item.Taihao;
dal.Update(ci);
}
}
}
// ==================== 替换 UpdateChangciNoAll ====================
private void UpdateChangciNoAll()
{
DALChangciInfo dal = new DALChangciInfo();
List<ChangciInfo> all = dal.QueryList("").ToList();
all = all
.Where(c => c.Riqi != "1900-01-01")
.OrderBy(c => NormalizeRiqi(c.Riqi))
.ThenBy(c => GetLunCiPriority(c.LunCi))
.ThenBy(c => c.JibieId)
.ThenBy(c => c.DangqianMXIndex)
.ToList();
int changciNo = 1;
foreach (ChangciInfo ci in all)
{
dal.UpdateChangciNo(ci.Id, changciNo++);
}
}
private string NormalizeRiqi(string riqi)
{
if (string.IsNullOrEmpty(riqi)) return "9999-99-99";
return riqi.Length > 10 ? riqi.Substring(0, 10) : riqi;
}
// GetLunCiPriority 你原来的方法保留即可
// ==================== Processing_SingleDefeat 必须修改 ====================
// 1. 方法签名增加参数:
public ResultMsg Processing_SingleDefeat(BisaiGongjiJi ModelJB, List<XuanshouInfo> lstXuanshouInfo, List<JibieRiqiSetList> currentTaskList = null)
// 2. 把原来的日期赋值代码(约656-673行)全部替换为下面这段:
string finalRiqi = null;
string finalShijian = null;
string finalTaihao = null;
if (currentTaskList != null && currentTaskList.Count > 0)
{
var taskItem = currentTaskList.FirstOrDefault(t => t.JibieMxId == 当前轮次模型的Id); // ← 改成你代码里的实际变量(如 modelJBMx.Id 或 cur.Id)
if (taskItem != null)
{
finalRiqi = taskItem.JitiShijian.Split(' ')[0];
finalShijian = taskItem.JitiShijian;
finalTaihao = taskItem.Taihao;
}
}
if (string.IsNullOrEmpty(finalRiqi))
{
JibieLunciRiqi jibieLunciRiqi = new DALJibieLunciRiqi().GetByJibieAndType(ModelJB.Id, lunciType);
if (jibieLunciRiqi != null)
finalRiqi = jibieLunciRiqi.Riqi;
else
finalRiqi = "1900-01-01";
}
ThisChangci.Riqi = finalRiqi;
if (!string.IsNullOrEmpty(finalShijian)) ThisChangci.JitiShijian = finalShijian;
if (!string.IsNullOrEmpty(finalTaihao)) ThisChangci.Taihao = finalTaihao;
// ==================== DuizhantuCaozuoImageUpdate.cs ====================
public void InsertDuizhantuByDanBai(BisaiGongjiJi Jibie)
{
if (new DALDuizhanTu().ExistsByJibieId(Jibie.Id)) return;
// ... 原来的生成代码 ...
}
// ==================== Frm成绩录入Up2.cs 小修复 ====================
// 在 BindingDGV 方法里,把下面这行注释掉(否则1/4、1/2轮次被隐藏):
// list = list.Where(x => ... && !x.LunCi.Contains("1/4") && !x.LunCi.Contains("1/2")).ToList();
=== 文件结束 === |