基线:全量源码首提(D1 版本控制落地,含第一轮优化 B1-B4/A1/A4/缩放修复)
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""MenuProject_AddToFak_Click 重写为:复制项目库文件为方案(一个方案一个库文件)。幂等(按方法名定位替换)。"""
|
||||
import io
|
||||
|
||||
P = r"C:\Users\099978\Documents\SharpDevelop Projects\成套报价软件\成套报价软件\主窗口.菜单与库.cs"
|
||||
s = io.open(P, encoding="utf-8-sig").read()
|
||||
|
||||
si = None
|
||||
for i, l in enumerate(s.split("\n")):
|
||||
if l.startswith(" private void MenuProject_AddToFak_Click"):
|
||||
si = i
|
||||
break
|
||||
assert si is not None, "MenuProject 方法未找到"
|
||||
|
||||
lines = s.split("\n")
|
||||
ei = None
|
||||
for i in range(si + 1, len(lines)):
|
||||
if lines[i] == " }":
|
||||
ei = i
|
||||
break
|
||||
assert ei is not None, "方法结束未找到"
|
||||
|
||||
NEW = r''' private void MenuProject_AddToFak_Click(object sender, EventArgs e)
|
||||
{
|
||||
var row = GetFirstSelectedRow(this.advancedDataGridView6);
|
||||
if (row == null)
|
||||
{
|
||||
MessageBox.Show(this, "请先在项目列表中选择要存为方案的项目。",
|
||||
"存为方案", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
return;
|
||||
}
|
||||
string projectId = GetBoundValueAsString(row, "项目编号");
|
||||
string projName = GetBoundValueAsString(row, "项目名称");
|
||||
if (string.IsNullOrWhiteSpace(projectId))
|
||||
{
|
||||
MessageBox.Show(this, "选中行没有项目编号,无法存为方案。",
|
||||
"存为方案", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
string srcDbPath = GetQuoteDbPath(projectId);
|
||||
if (!System.IO.File.Exists(srcDbPath))
|
||||
{
|
||||
MessageBox.Show(this, "项目报价库不存在:\n" + srcDbPath,
|
||||
"存为方案", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
// 方案名默认 = 项目名称(空则项目编号);重名自动加序号
|
||||
string 方案名 = !string.IsNullOrWhiteSpace(projName) ? projName : projectId;
|
||||
string dstDir = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "sjk", "方案库");
|
||||
System.IO.Directory.CreateDirectory(dstDir);
|
||||
string dstPath = System.IO.Path.Combine(dstDir, 方案名 + ".db");
|
||||
int seq = 1;
|
||||
while (System.IO.File.Exists(dstPath))
|
||||
{
|
||||
seq++;
|
||||
dstPath = System.IO.Path.Combine(dstDir, 方案名 + "(" + seq + ").db");
|
||||
}
|
||||
|
||||
var sw = System.Diagnostics.Stopwatch.StartNew();
|
||||
Cursor = Cursors.WaitCursor;
|
||||
try
|
||||
{
|
||||
// ★ 一个方案 = 一份独立项目库副本(含全部图号/箱号/元件/项目信息)
|
||||
BackupSQLiteDb(srcDbPath, dstPath);
|
||||
sw.Stop();
|
||||
Log("[存为方案] 项目=" + projectId + " → " + dstPath + " 耗时 " + sw.ElapsedMilliseconds + "ms");
|
||||
MessageBox.Show(this, "已把项目 [" + projectId + "] 存为方案。\n方案文件: " + dstPath +
|
||||
"\n耗时 " + sw.ElapsedMilliseconds + "ms。", "存为方案",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
catch (Exception exSave)
|
||||
{
|
||||
MessageBox.Show(this, "存为方案失败:\n" + exSave.Message, "存为方案",
|
||||
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
}'''
|
||||
|
||||
lines[si:ei + 1] = NEW.split("\n")
|
||||
io.open(P, "w", encoding="utf-8-sig").write("\n".join(lines))
|
||||
print("MenuProject 重写完成")
|
||||
Reference in New Issue
Block a user