-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathRCC.xaml.cs
More file actions
280 lines (261 loc) · 12.8 KB
/
RCC.xaml.cs
File metadata and controls
280 lines (261 loc) · 12.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using Microsoft.Win32;
using Tommy;
using WindowUI.Sort;
using Wpf.Ui.Controls;
namespace WindowUI;
public partial class RCC
{
public RCC()
{
InitializeComponent();
LoadComboBoxItems();
LoadRegion();
}
private string mkFileName { get; set; } = null!; // 记录MK文件名
private List<string> MKData { get; set; } = null!; // 临时存储读取的MK文件的数据
private string FileName { get; set; } = null!; // 记录文件名
private MemoryStream ZhikaStream { get; set; } = null!; // 临时存储读取的文件数据
private string FilePath { get; set; } = null!; // 记录文件的路径
private string Region { get; set; } = null!; // 下拉框选则的地区
private OpenFileDialog openFileDialog { get; set; } = null!; // MK文件处理流
private OpenFileDialog openFileDialog2 { get; set; } = null!; // 数据文件处理流
//打开MK文件
private void OpenMKFile(object sender, RoutedEventArgs e)
{
//打开一个文件选择器,类型为任意
openFileDialog = new OpenFileDialog
{
Filter = "All files (*.*)|*.*", // 允许选择所有文件
Title = "选择一个文件"
};
if (openFileDialog.ShowDialog() == true)
{
LogManage.AddLog($"成功选择MK文件:{openFileDialog.FileName}");
//如果什么也没有就返回
if (openFileDialog.FileName == "") return;
//判断文件名是否以MK或者KC开头,如果不是就不是MK文件
if (!Path.GetFileName(openFileDialog.FileName).StartsWith("MK") &&
!Path.GetFileName(openFileDialog.FileName).StartsWith("KC"))
{
Message.ShowMessageBox("错误", "请选择正确的MK文件");
return;
}
try
{
//将文件暂时存储到MKDate中
MKData = File.ReadAllLines(openFileDialog.FileName).ToList();
//记录MK文件名
mkFileName = Path.GetFileName(openFileDialog.FileName);
//去掉MK文件名的前两个字符"MK"或"KC"
mkFileName = mkFileName.Substring(2);
mk.Foreground = Brushes.LightGreen;
mktextbox.Foreground = Brushes.LimeGreen;
mktextbox.Text = mkFileName;
}
catch
{
Message.ShowMessageBox("错误", "MK文件读取错误");
}
mk.Foreground = Brushes.LightGreen;
mktextbox.Foreground = Brushes.LimeGreen;
}
}
//打开Excel或Mdb文件
private void OpenFile(object sender, RoutedEventArgs e)
{
string file = Toml.GetToml(Region, "file");
string FileSelect = $"数据文件(*.{file})|*.{file}";
if (file == "both")
{
FileSelect = "所有支持的文件 (*.mdb;*.xlsx)|*.mdb;*.xlsx";
}
openFileDialog2 = new OpenFileDialog
{
Filter = FileSelect,
Title = "选择一个文件"
};
if (openFileDialog2.ShowDialog() == true)
{
LogManage.AddLog($"成功选择数据文件:{openFileDialog2.FileName}");
if (openFileDialog2.FileName == "") return;
//记录文件路径
FilePath = openFileDialog2.FileName;
//记录Excel文件名
FileName = Path.GetFileNameWithoutExtension(openFileDialog2.FileName);
FileName = FileName.Replace("kahao", "");
FileName = FileName.Replace("_", "");
//暂时存储文件流
try
{
ZhikaStream = new MemoryStream(File.ReadAllBytes(openFileDialog2.FileName));
}
catch (IOException)
{
Message.ShowMessageBox("错误", "文件已被占用,请先关闭其他程序");
return;
}
datatextbox.Text = FileName;
data.Foreground = Brushes.LightGreen;
datatextbox.Foreground = Brushes.LimeGreen;
}
}
//下拉框选择地区
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (LocationComboBox.SelectedItem is ComboBoxItem selectedItem && selectedItem.Content != null)
{
Region = selectedItem.Content.ToString() ?? throw new InvalidOperationException();
LocationComboBox.Text = Region;
// 根据选择的地区禁用或启用按钮
if (SelectMKButton != null)
{
try
{
if (Convert.ToBoolean(Toml.GetToml(Region, "mk")))
{
SelectMKButton.IsEnabled = true;
mk.Foreground = Brushes.Red;
mktextbox.Foreground = Brushes.Red;
}
else
{
SelectMKButton.IsEnabled = false;
mk.Foreground = Brushes.LightGreen;
mktextbox.Foreground = Brushes.LightGreen;
}
}
catch
{
Message.ShowMessageBox("提示", "请选择地区");
return;
}
LogManage.AddLog($"选择地区为:{Region}");
string tips = Toml.GetToml(Region, "tip");
tip.Text = tips;
string file = Toml.GetToml(Region, "file");
LogManage.AddLog($"{Region}地区需要{file}文件格式");
}
}
}
//点击处理文件按钮
private void ProcessTheFile(object sender, RoutedEventArgs e)
{
if (ZhikaStream is null || ZhikaStream.Length == 0)
{
Message.ShowMessageBox("错误", "未选择数据文件");
return;
}
LogManage.AddLog("开始处理文件...");
//根据不同地区处理文件
try
{
switch (Region)
{
case "天津": 天津.Run(FilePath, MKData, mkFileName); break;
case "兰州": 兰州.Run(FilePath, FileName, MKData, mkFileName); break;
case "兰州工作证": 兰州工作证.Run(ZhikaStream,FilePath, FileName); break;
case "青岛博研加气站": 青岛博研加气站.Run(ZhikaStream, FileName); break;
case "抚顺": 抚顺.Run(FilePath,ZhikaStream, FileName); break;
case "郴州": 郴州.Run(MKData, mkFileName, ZhikaStream); break;
case "潍坊": 潍坊.Run(FilePath, FileName); break;
case "国网技术学院": 国网技术学院.Run(ZhikaStream, FileName); break;
case "哈尔滨城市通": 哈尔滨城市通.Run(FilePath); break;
case "哈尔滨学院": 哈尔滨学院.Run(FilePath); break;
case "运城盐湖王府学校": 运城盐湖王府学校.Run(ZhikaStream, FileName); break;
case "南通地铁": 南通地铁.Run(ZhikaStream, FileName); break;
case "长沙公交": 长沙公交.Run(ZhikaStream, FileName); break;
case "泸州公交": 泸州公交.Run(FilePath, FileName); break;
case "合肥通": 合肥通.Run(FilePath, MKData, mkFileName); break;
case "青岛理工大学": 青岛理工大学.Run(ZhikaStream, FileName); break;
case "西安交通大学": 西安交通大学.Run(ZhikaStream, FileName); break;
case "呼和浩特": 呼和浩特.Run(ZhikaStream, FileName); break;
case "重庆": 重庆.Run(FilePath, FileName); break;
case "西藏林芝": 西藏林芝.Run(FilePath); break;
case "西藏拉萨": 西藏拉萨.Run(FilePath); break;
case "淄博公交": 淄博公交.Run(FilePath); break;
case "淄博血站不开通": 淄博血站不开通.Run(ZhikaStream); break;
case "平凉公交": 平凉公交.Run(ZhikaStream, FileName); break;
case "桂林公交": 桂林公交.Run(FilePath); break;
case "陕西师范大学": 陕西师范大学.Run(ZhikaStream, FileName); break;
case "西安文理学院": 西安文理学院.Run(ZhikaStream, FileName); break;
case "滨州公交": 滨州公交.Run(FilePath, FileName); break;
case "云南朗坤": 云南朗坤.Run(ZhikaStream, FileName); break;
case "盱眙": 盱眙.Run(FilePath, FileName); break;
case "柳州公交": 柳州公交.Run(FilePath, MKData); break;
case "漯河": 漯河.Run(FilePath); break;
case "随州": 随州.Run(FilePath,ZhikaStream, FileName); break;
case "昆明": 昆明.Run(ZhikaStream, FileName); break;
case "徐州地铁": 徐州地铁.Run(FilePath, ZhikaStream, FileName); break;
case "徐州地铁UL": 徐州地铁UL.Run(ZhikaStream, FileName); break;
case "江苏乾翔": 江苏乾翔.Run(ZhikaStream, FileName); break;
case "石家庄": 石家庄.Run(ZhikaStream, FileName); break;
case "淮北": 淮北.Run(FilePath); break;
case "山西医科大学": 山西医科大学.Run(ZhikaStream, FileName); break;
case "济南地铁UL": 济南地铁UL.Run(ZhikaStream,FilePath, FileName); break;
case "洪城": 洪城.Run(FilePath); break;
case "第一医科大学": 第一医科大学.Run(ZhikaStream, FileName); break;
case "邹平": 邹平.Run(ZhikaStream, FileName); break;
case "盐城": 盐城.Run(FilePath, FileName); break;
case "穆棱": 穆棱.Run(FilePath, FileName); break;
case "上海树维": 上海树维.Run(FilePath, FileName); break;
case "琴岛通": 琴岛通.Run(FilePath, FileName); break;
case "琴岛通1280": 琴岛通1280.Run(MKData, mkFileName, FilePath, FileName); break;
case "广水": 广水.Run(FilePath, FileName); break;
case "洛阳": 洛阳.Run(FilePath, FileName); break;
case "新开普": 新开普.Run(FilePath, ZhikaStream, FileName); break;
case "济南员工卡": 济南员工卡.Run(FilePath, FileName); break;
case "济南公交": 济南公交.Run(FilePath, FileName); break;
case "济南交通联合": 济南交通联合.Run(FilePath, FileName); break;
case "牡丹江": 牡丹江.Run(FilePath, FileName); break;
case "昆明轨道": 昆明轨道.Run(FilePath, FileName); break;
case "绵州通": 绵州通.Run(FilePath, FileName); break;
case "内江": 内江.Run(FilePath, FileName); break;
case "淮南": 淮南.Run(FilePath); break;
case "咸宁枫丹": 咸宁枫丹.Run(FilePath,FileName); break;
case "沈阳地铁": 沈阳地铁.Run(FilePath,FileName); break;
case "淄博齐达通": 淄博齐达通.Run(FilePath); break;
case "天津敬老卡": 天津敬老卡.Run(ZhikaStream); break;
case "泉城脉动": 泉城脉动.Run(ZhikaStream,FileName); break;
case "南京功夫豆": 南京功夫豆.Run(FilePath,FileName); break;
case "三门峡": 三门峡.Run(FilePath,FileName); break;
case "凯里": 凯里.Run(FilePath); break;
case "海口": 海口.Run(FilePath,FileName); break;
default: Message.ShowMessageBox("警告", "请先选择地区"); break;
}
}
catch (Exception exception)
{
Message.ShowMessageBox("错误", exception.Message);
LogManage.AddLog($"处理文件出错,错误信息:{exception.Message}");
}
}
private void Test(object sender, RoutedEventArgs e)
{
Message.ShowSnack("警告", "该功能未开发", ControlAppearance.Caution, new SymbolIcon(SymbolRegular.DismissSquare20), 3);
}
//加载复选框内容
private void LoadComboBoxItems()
{
var tomlFilePath = "Config/config.toml";
if (File.Exists(tomlFilePath))
{
TextReader reader = new StreamReader(tomlFilePath);
var table = TOML.Parse(reader);
foreach (var key in table.Keys)
{
LocationComboBox.Items.Add(new ComboBoxItem { Content = key });
}
}
}
private void ClearLog(object sender, MouseButtonEventArgs e)
{
LogManage.Clear();
}
private void LoadRegion()
{
//加载地区配置
}
}