update
ready for 1.0.0
This commit is contained in:
parent
156da8786d
commit
5f81407694
8
AsmrManage/AsmrManage/Form1.Designer.cs
generated
8
AsmrManage/AsmrManage/Form1.Designer.cs
generated
@ -176,9 +176,9 @@
|
|||||||
label11.AutoSize = true;
|
label11.AutoSize = true;
|
||||||
label11.Location = new Point(36, 160);
|
label11.Location = new Point(36, 160);
|
||||||
label11.Name = "label11";
|
label11.Name = "label11";
|
||||||
label11.Size = new Size(62, 15);
|
label11.Size = new Size(36, 15);
|
||||||
label11.TabIndex = 14;
|
label11.TabIndex = 14;
|
||||||
label11.Text = "查找结果:";
|
label11.Text = "结果:";
|
||||||
//
|
//
|
||||||
// label10
|
// label10
|
||||||
//
|
//
|
||||||
@ -237,6 +237,7 @@
|
|||||||
textBox6.Name = "textBox6";
|
textBox6.Name = "textBox6";
|
||||||
textBox6.Size = new Size(281, 23);
|
textBox6.Size = new Size(281, 23);
|
||||||
textBox6.TabIndex = 7;
|
textBox6.TabIndex = 7;
|
||||||
|
textBox6.TextChanged += textBox6_TextChanged;
|
||||||
//
|
//
|
||||||
// label9
|
// label9
|
||||||
//
|
//
|
||||||
@ -997,7 +998,10 @@
|
|||||||
AutoScaleMode = AutoScaleMode.Font;
|
AutoScaleMode = AutoScaleMode.Font;
|
||||||
ClientSize = new Size(560, 448);
|
ClientSize = new Size(560, 448);
|
||||||
Controls.Add(tabControl1);
|
Controls.Add(tabControl1);
|
||||||
|
FormBorderStyle = FormBorderStyle.FixedSingle;
|
||||||
|
MaximizeBox = false;
|
||||||
Name = "Form1";
|
Name = "Form1";
|
||||||
|
StartPosition = FormStartPosition.CenterScreen;
|
||||||
Text = "AsmrManage";
|
Text = "AsmrManage";
|
||||||
tabControl1.ResumeLayout(false);
|
tabControl1.ResumeLayout(false);
|
||||||
tabPage1.ResumeLayout(false);
|
tabPage1.ResumeLayout(false);
|
||||||
|
@ -3,6 +3,7 @@ using DiffPlex.DiffBuilder;
|
|||||||
using OfficeOpenXml;
|
using OfficeOpenXml;
|
||||||
using System.Data.SQLite;
|
using System.Data.SQLite;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace AsmrManage
|
namespace AsmrManage
|
||||||
{
|
{
|
||||||
@ -176,6 +177,7 @@ namespace AsmrManage
|
|||||||
|
|
||||||
private void TabControl1_SelectedIndexChanged(object sender, EventArgs e) //切换标签页
|
private void TabControl1_SelectedIndexChanged(object sender, EventArgs e) //切换标签页
|
||||||
{
|
{
|
||||||
|
ResetPage1();
|
||||||
ResetPage2();
|
ResetPage2();
|
||||||
ResetPage3();
|
ResetPage3();
|
||||||
ResetPage4();
|
ResetPage4();
|
||||||
@ -230,6 +232,19 @@ namespace AsmrManage
|
|||||||
checkBox4.Checked = false;
|
checkBox4.Checked = false;
|
||||||
} //刷新P2
|
} //刷新P2
|
||||||
|
|
||||||
|
private void ResetPage1() //刷新P1
|
||||||
|
{
|
||||||
|
textBox6.Text = string.Empty;
|
||||||
|
comboBox1.SelectedItem = null;
|
||||||
|
label12.Text = string.Empty;
|
||||||
|
checkBox5.Checked = false;
|
||||||
|
checkBox6.Checked = false;
|
||||||
|
checkBox7.Checked = false;
|
||||||
|
checkBox8.Checked = false;
|
||||||
|
richTextBox1.Text = string.Empty;
|
||||||
|
button13.Enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
private void Button7_Click(object sender, EventArgs e) //读取配置文件
|
private void Button7_Click(object sender, EventArgs e) //读取配置文件
|
||||||
{
|
{
|
||||||
Program.config = ConfigManager.LoadConfig();
|
Program.config = ConfigManager.LoadConfig();
|
||||||
@ -320,13 +335,80 @@ namespace AsmrManage
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void button10_Click(object sender, EventArgs e)
|
private void button13_Click(object sender, EventArgs e) //添加
|
||||||
{
|
{
|
||||||
|
Program.config = ConfigManager.LoadConfig();
|
||||||
|
string DbPath = Program.config.DatabaseFilePath;
|
||||||
|
string keyword = textBox6.Text.Trim().ToUpper();
|
||||||
|
string? selectedText = comboBox1.SelectedItem.ToString();
|
||||||
|
if (selectedText == "Auto")
|
||||||
|
{
|
||||||
|
if (keyword.StartsWith("RJ"))
|
||||||
|
{
|
||||||
|
selectedText = "H_RJ";
|
||||||
|
}
|
||||||
|
else if (keyword.StartsWith("D"))
|
||||||
|
{
|
||||||
|
selectedText = "H_D";
|
||||||
|
}
|
||||||
|
else if (keyword.StartsWith("VJ"))
|
||||||
|
{
|
||||||
|
selectedText = "H_VJ";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logp1("无法自动检测类型");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bool Feature_Auto_Clear = checkBox6.Checked; //添加后自动清空输入框
|
||||||
|
string connectionString = $"Data Source={DbPath};Version=3"; // SQLite数据库连接字符串
|
||||||
|
using (SQLiteConnection connection = new SQLiteConnection(connectionString))
|
||||||
|
{
|
||||||
|
connection.Open();
|
||||||
|
if (label12.Text == "不存在")
|
||||||
|
{
|
||||||
|
// 开始添加记录
|
||||||
|
string number = string.Empty;
|
||||||
|
foreach (char c in keyword)
|
||||||
|
{
|
||||||
|
if (char.IsDigit(c))
|
||||||
|
{
|
||||||
|
number += c;
|
||||||
|
}
|
||||||
|
else if (number.Length > 0)
|
||||||
|
{
|
||||||
|
// 已经提取到数字部分,遇到非数字字符则停止提取
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
if (int.TryParse(number, out int asmr_order_id))
|
||||||
|
{
|
||||||
|
using (SQLiteCommand addCommand = new SQLiteCommand($"INSERT INTO {selectedText} (asmr_id, asmr_order_id) VALUES (@asmr_id, @asmr_order_id)", connection))
|
||||||
|
{
|
||||||
|
addCommand.Parameters.AddWithValue("@asmr_id", keyword);
|
||||||
|
addCommand.Parameters.AddWithValue("@asmr_order_id", asmr_order_id);
|
||||||
|
addCommand.ExecuteNonQuery();
|
||||||
|
|
||||||
private void button13_Click(object sender, EventArgs e)
|
// 添加成功后的逻辑
|
||||||
{
|
label12.Text = "成功";
|
||||||
|
Logp1($"{keyword} 已成功添加到 {selectedText} 表");
|
||||||
|
if (Feature_Auto_Clear)
|
||||||
|
{
|
||||||
|
textBox6.Text = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 无法提取数字部分的情况
|
||||||
|
Logp1("无法提取数字部分,添加失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
connection.Close();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -345,7 +427,7 @@ namespace AsmrManage
|
|||||||
string keyword = textBox6.Text.Trim();
|
string keyword = textBox6.Text.Trim();
|
||||||
string pattern = "^(RJ|VJ|D)[0-9]+$"; // 匹配以RJ、VJ、D开头,后跟数字的模式
|
string pattern = "^(RJ|VJ|D)[0-9]+$"; // 匹配以RJ、VJ、D开头,后跟数字的模式
|
||||||
|
|
||||||
if (System.Text.RegularExpressions.Regex.IsMatch(keyword, pattern))
|
if (Regex.IsMatch(keyword, pattern))
|
||||||
{
|
{
|
||||||
keyword = keyword.ToUpper(); // 将关键词转为大写
|
keyword = keyword.ToUpper(); // 将关键词转为大写
|
||||||
}
|
}
|
||||||
@ -358,7 +440,7 @@ namespace AsmrManage
|
|||||||
//现支持Auto,H_RJ,H_D,H_VJ,NonH_RJ
|
//现支持Auto,H_RJ,H_D,H_VJ,NonH_RJ
|
||||||
//其中Auto不支持NonH_RJ
|
//其中Auto不支持NonH_RJ
|
||||||
object selectedValue = comboBox1.SelectedItem;
|
object selectedValue = comboBox1.SelectedItem;
|
||||||
string selectedText;
|
string? selectedText;
|
||||||
if (selectedValue != null)
|
if (selectedValue != null)
|
||||||
{
|
{
|
||||||
selectedText = selectedValue.ToString();
|
selectedText = selectedValue.ToString();
|
||||||
@ -431,58 +513,144 @@ namespace AsmrManage
|
|||||||
{
|
{
|
||||||
// 创建备份目录
|
// 创建备份目录
|
||||||
string backupDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "backup");
|
string backupDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "backup");
|
||||||
if (!Directory.Exists(backupDir)){
|
if (!Directory.Exists(backupDir))
|
||||||
|
{
|
||||||
Directory.CreateDirectory(backupDir);
|
Directory.CreateDirectory(backupDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 构造备份文件名(使用日期时间作为文件名)
|
// 构造备份文件名(使用日期时间作为文件名)
|
||||||
string backupFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".7z";
|
string backupFileName = DateTime.Now.ToString("yyyyMMdd") + ".7z";
|
||||||
string backupFilePath = Path.Combine(backupDir, backupFileName);
|
string backupFilePath = Path.Combine(backupDir, backupFileName);
|
||||||
string sevenZipPath;
|
// 检查备份是否已存在
|
||||||
|
if (!File.Exists(backupFilePath))
|
||||||
// 判断系统位数
|
|
||||||
if (Environment.Is64BitOperatingSystem)
|
|
||||||
{
|
{
|
||||||
sevenZipPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "x64", "7za.exe");
|
string sevenZipPath;
|
||||||
|
|
||||||
|
// 判断系统位数
|
||||||
|
if (Environment.Is64BitOperatingSystem)
|
||||||
|
{
|
||||||
|
sevenZipPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "x64", "7za.exe");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sevenZipPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "7za.exe");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!File.Exists(sevenZipPath))
|
||||||
|
{
|
||||||
|
Logp1("错误,丢失7za.exe文件");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 执行备份
|
||||||
|
ProcessStartInfo processInfo = new ProcessStartInfo();
|
||||||
|
processInfo.FileName = sevenZipPath; // 7-Zip的可执行文件路径
|
||||||
|
processInfo.Arguments = $"a -mx9 \"{backupFilePath}\" \"{DbPath}\""; // 执行7z压缩命令
|
||||||
|
|
||||||
|
Process process = new Process();
|
||||||
|
process.StartInfo = processInfo;
|
||||||
|
process.Start();
|
||||||
|
process.WaitForExit();
|
||||||
|
|
||||||
|
// 检查备份是否成功
|
||||||
|
if (File.Exists(backupFilePath))
|
||||||
|
{
|
||||||
|
Logp1($"自动备份成功!数据库已备份至{backupFilePath}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logp1("备份失败!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sevenZipPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "7za.exe");
|
Logp1("今日已备份");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!File.Exists(sevenZipPath))
|
|
||||||
{
|
|
||||||
Logp1("错误,丢失7za.exe文件");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 执行备份
|
|
||||||
ProcessStartInfo processInfo = new ProcessStartInfo();
|
|
||||||
processInfo.FileName = sevenZipPath; // 7-Zip的可执行文件路径
|
|
||||||
processInfo.Arguments = $"a -mx9 \"{backupFilePath}\" \"{DbPath}\""; // 执行7z压缩命令
|
|
||||||
|
|
||||||
Process process = new Process();
|
|
||||||
process.StartInfo = processInfo;
|
|
||||||
process.Start();
|
|
||||||
process.WaitForExit();
|
|
||||||
|
|
||||||
// 检查备份是否成功
|
|
||||||
if (File.Exists(backupFilePath))
|
|
||||||
{
|
|
||||||
Logp1($"自动备份成功!数据库已备份至{backupFilePath}");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Logp1("备份失败!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//开始查找
|
//开始查找(根据selectedText选择需要查询的数据表,查询keyword是否出现在字段"ID"
|
||||||
//pending
|
//string DbPath = Program.config.DatabaseFilePath;
|
||||||
|
//keyword
|
||||||
|
//selectedText:H_RJ,H_D,H_VJ,NonH_RJ
|
||||||
|
//对应表:H_RJ,H_D,H_VJ,NonH_RJ
|
||||||
|
QueryDB(DbPath, keyword, selectedText, Feature_Auto_Add, Feature_Auto_Clear);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void QueryDB(string DbPath, string keyword, string selectedText, bool Feature_Auto_Add, bool Feature_Auto_Clear)
|
||||||
|
{
|
||||||
|
string connectionString = $"Data Source={DbPath};Version=3"; // SQLite数据库连接字符串
|
||||||
|
using (SQLiteConnection connection = new SQLiteConnection(connectionString))
|
||||||
|
{
|
||||||
|
connection.Open();
|
||||||
|
|
||||||
|
using (SQLiteCommand command = new SQLiteCommand($"SELECT COUNT(*) FROM {selectedText} WHERE asmr_id = @keyword", connection))
|
||||||
|
{
|
||||||
|
command.Parameters.AddWithValue("@keyword", keyword);
|
||||||
|
|
||||||
|
int count = Convert.ToInt32(command.ExecuteScalar());
|
||||||
|
button13.Enabled = false;
|
||||||
|
if (count == 1)
|
||||||
|
{
|
||||||
|
label12.Text = "已存在";
|
||||||
|
Logp1($"{keyword}已存在");
|
||||||
|
}
|
||||||
|
else if (count <= 0)
|
||||||
|
{
|
||||||
|
label12.Text = "不存在";
|
||||||
|
button13.Enabled = true;
|
||||||
|
Logp1($"{keyword}不存在");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
label12.Text = "已存在且重复";
|
||||||
|
Logp1($"异常,{keyword}不存在");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Feature_Auto_Add && label12.Text == "不存在")
|
||||||
|
{
|
||||||
|
// 开始添加记录
|
||||||
|
string number = string.Empty;
|
||||||
|
foreach (char c in keyword)
|
||||||
|
{
|
||||||
|
if (char.IsDigit(c))
|
||||||
|
{
|
||||||
|
number += c;
|
||||||
|
}
|
||||||
|
else if (number.Length > 0)
|
||||||
|
{
|
||||||
|
// 已经提取到数字部分,遇到非数字字符则停止提取
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (int.TryParse(number, out int asmr_order_id))
|
||||||
|
{
|
||||||
|
using (SQLiteCommand addCommand = new SQLiteCommand($"INSERT INTO {selectedText} (asmr_id, asmr_order_id) VALUES (@asmr_id, @asmr_order_id)", connection))
|
||||||
|
{
|
||||||
|
addCommand.Parameters.AddWithValue("@asmr_id", keyword);
|
||||||
|
addCommand.Parameters.AddWithValue("@asmr_order_id", asmr_order_id);
|
||||||
|
addCommand.ExecuteNonQuery();
|
||||||
|
|
||||||
|
// 添加成功后的逻辑
|
||||||
|
label12.Text = "成功";
|
||||||
|
Logp1($"{keyword} 已成功添加到 {selectedText} 表");
|
||||||
|
if (Feature_Auto_Clear)
|
||||||
|
{
|
||||||
|
textBox6.Text = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 无法提取数字部分的情况
|
||||||
|
Logp1("无法提取数字部分,添加失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
connection.Close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void button17_Click(object sender, EventArgs e) //P3 读取信息
|
private void button17_Click(object sender, EventArgs e) //P3 读取信息
|
||||||
@ -727,14 +895,20 @@ namespace AsmrManage
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void button16_Click(object sender, EventArgs e) //清空p1查找关键词框
|
private void button16_Click(object sender, EventArgs e) //清空p3日志
|
||||||
{
|
{
|
||||||
richTextBox2.Text = String.Empty;
|
richTextBox2.Text = string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void button14_Click(object sender, EventArgs e)
|
private void button14_Click(object sender, EventArgs e) //清空p1日志
|
||||||
{
|
{
|
||||||
textBox6.Text = String.Empty;
|
textBox6.Text = string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void textBox6_TextChanged(object sender, EventArgs e) //当keyword改变时
|
||||||
|
{
|
||||||
|
button13.Enabled = false;
|
||||||
|
label12.Text = string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user