1修改配置文件;

2修改界面功能,测试;
master
mzhifa 10 months ago
parent 1e1ba85733
commit 7b51a075dd

@ -22,7 +22,9 @@ using System.Text.Unicode;
using System.Net.Sockets;
using System.Security.Policy;
using Prism.Events;
using System.Windows.Shapes;
using ImTools;
using static System.Windows.Forms.Design.AxImporter;
using HandyControl.Controls;
namespace Txgy.FilesWatcher.ViewModels
{
@ -32,41 +34,53 @@ namespace Txgy.FilesWatcher.ViewModels
{
string filter = "*.index";
string str = File.ReadAllText("systemconfig.json");
systemConfig = JsonSerializer.Deserialize<SystemConfig>(str);
WatcherPath = systemConfig.FilePath;
WatcherMseedPath= systemConfig.WatcherMseedPath;
MseedFilePath = systemConfig.MseedFilePath;
systemConfig = JsonSerializer.Deserialize<SystemConfig>(str, new JsonSerializerOptions
{
ReadCommentHandling = JsonCommentHandling.Skip
});
PostPath = systemConfig.realtimepath;
RealtimePath= systemConfig.postpath;
MseedPath = systemConfig.mseedpath;
MainPath= systemConfig.mainpath;
DataBaseConnect.DataBaseConfig = systemConfig.dBConfig;
watcherArray[0] = new FileSystemWatcher();
watcherArray[1] = new FileSystemWatcher();
InitializeParams(filter);
StartTime = DateTime.Now;
this._ea = ea;
// this._websocketClient = websocketClient;
// _websocketClient.WebsocketError = WebSocket_Error;
// _websocketClient.WebSocketMessageReceived = WebSocket4Net_MessageReceived;
// _websocketClient.WebSocketInit(systemConfig.Url);
}
private string watcherPath;
public string WatcherPath
public string PostPath
{
get { return watcherPath; }
set { SetProperty(ref watcherPath, value); }
}
private string watcherMseedPath;
private string realtimePath;
public string RealtimePath
{
get { return realtimePath; }
set { SetProperty(ref realtimePath, value); }
}
private string mseedPath;
public string MseedPath
public string WatcherMseedPath
{
get { return watcherMseedPath; }
set { SetProperty(ref watcherMseedPath, value); }
get { return mseedPath; }
set { SetProperty(ref mseedPath, value); }
}
private string mseedFilePath;
public string MseedFilePath
private string mainPath;
public string MainPath
{
get { return mseedFilePath; }
set { SetProperty(ref mseedFilePath, value); }
get { return mainPath; }
set { SetProperty(ref mainPath, value); }
}
private ObservableCollection<WatcherFileModel> dataList = new ObservableCollection<WatcherFileModel>();
@ -129,83 +143,97 @@ namespace Txgy.FilesWatcher.ViewModels
set { SetProperty(ref workAreaId, value); }
}
bool isLogin = false;
public DelegateCommand SureCommand => new(() => {
private bool isUploadDB = false;
});
public bool IsUploadDB
{
get { return isUploadDB; }
set { SetProperty(ref isUploadDB, value); }
}
private bool isUploadMQTT = false;
public bool IsUploadMQTT
{
get { return isUploadMQTT; }
set { SetProperty(ref isUploadMQTT, value); }
}
public DelegateCommand StartCommand => new(Start);
public DelegateCommand StopCommand => new(Stop);
private void Start()
{
WatchStartOrSopt(true);
StartTime=DateTime.Now;
timer1.Interval = TimeSpan.FromSeconds(ProMonInterval);
timer1.Start();
timer1.Tick += timer1_Tick;
IsIndeterminate = true;
int res= WatchStartOrSopt(true);
if (res == 0)
{
StartTime = DateTime.Now;
timer1.Interval = TimeSpan.FromSeconds(ProMonInterval);
timer1.Start();
timer1.Tick += timer1_Tick;
}
}
private void Stop()
{
WatchStartOrSopt(false);
timer1.Stop();
IsIndeterminate = false;
}
public DelegateCommand<object> FilePathSaveCommand => new((obj) =>
{
System.Windows.Forms.FolderBrowserDialog fbd = new System.Windows.Forms.FolderBrowserDialog();
string para = obj.ToString();
fbd.SelectedPath = (para == "WatcherPath") ? WatcherPath : watcherMseedPath;
fbd.SelectedPath = MainPath;// (para == "PostPath") ? PostPath : RealtimePath;
fbd.Description = "请选择文件路径";
fbd.ShowNewFolderButton = true;
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
if (fbd.SelectedPath != WatcherPath)
if (fbd.SelectedPath != MainPath)
{
if (para == "WatcherPath")
{
WatcherPath = fbd.SelectedPath;
watcherArray[0].Path = watcherPath;
}
else
{
watcherMseedPath = fbd.SelectedPath;
watcherArray[1].Path = watcherMseedPath;
}
systemConfig.FilePath = WatcherPath;
systemConfig.WatcherMseedPath = watcherMseedPath;
var options = new JsonSerializerOptions
{
// 整齐打印
WriteIndented = true,
//重新编码,解决中文乱码问题
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
};
string message = JsonSerializer.Serialize(systemConfig, options);
if (File.Exists(settingDataPath))
{
File.WriteAllText(settingDataPath, message);
}
MainPath = fbd.SelectedPath;
systemConfig.mainpath = MainPath;
UpdateJsonConfig(systemConfig);
}
}
});
private string settingDataPath = "systemconfig.json";
private void timer1_Tick(object? sender, EventArgs e)
public DelegateCommand<object> SureCommand => new((obj) =>
{
DateTime currentT= DateTime.Now;
RunTime = DateDiff(currentT, StartTime);
string path = $"{MseedFilePath}/NET{currentT.Year.ToString("D4")}/{currentT.Month.ToString("D2")}/{currentT.Day.ToString("D2")}/{currentT.Hour.ToString("D2")}/{currentT.AddMinutes(-2).Minute.ToString("D2")}";
// path = "I:\\DATA/NET2023/06/22/22/56";
if (Directory.Exists(path))
string para = obj.ToString();
if (para == "MseedPath")
{
UploadMseedFile.UploadMSeedOnce(path, WorkAreaId);
string path = Path.Combine(MainPath, MseedPath);
if (!Directory.Exists(path))
{
MessageBox.Show($"{path} 不存在!");
return;
}
systemConfig.mseedpath = MseedPath;
}
}
else if (para == "RealtimePath")
{
string path = Path.Combine(MainPath, RealtimePath);
if (!Directory.Exists(path))
{
MessageBox.Show($"{path} 不存在!");
return;
}
watcherArray[0].Path = Path.Combine(MainPath, RealtimePath);
systemConfig.realtimepath = RealtimePath;
}
else if (para == "PostPath")
{
string path = Path.Combine(MainPath, PostPath);
if (!Directory.Exists(path))
{
MessageBox.Show($"{path} 不存在!");
return;
}
watcherArray[1].Path = Path.Combine(MainPath, PostPath);
systemConfig.postpath = PostPath;
}
UpdateJsonConfig(systemConfig);
});
private void InitializeParams(string fileFilter)
{
@ -217,18 +245,7 @@ namespace Txgy.FilesWatcher.ViewModels
IntervalTimesSource.Add(30);
IntervalTimesSource.Add(60);
SelectedIndex = 1;
//如果设置的目录不存在设置到根目录
if (!Directory.Exists(WatcherPath))
{
WatcherPath = AppDomain.CurrentDomain.BaseDirectory;
}
if (!Directory.Exists(watcherMseedPath))
{
watcherMseedPath = AppDomain.CurrentDomain.BaseDirectory;
}
watcherArray[0].Path = watcherPath;
watcherArray[1].Path = watcherMseedPath;
//watcherArray = new FileSystemWatcher();
foreach (var watcher in watcherArray)
{
//初始化监听
@ -244,7 +261,7 @@ namespace Txgy.FilesWatcher.ViewModels
| NotifyFilters.Security
| NotifyFilters.Size;
//设置监听的路径
// watcher.Path = WatcherPath;
// watcher.Path = PostPath;
watcher.Changed += new FileSystemEventHandler(Watcher_Changed);
// watcherArray.Created += Watcher_Created;
watcher.Deleted += new FileSystemEventHandler(Watcher_Deleted);
@ -259,8 +276,62 @@ namespace Txgy.FilesWatcher.ViewModels
watcher.EnableRaisingEvents = false;
watcher.EndInit();
}
}
private void UpdateJsonConfig(SystemConfig systemConfig)
{
var options = new JsonSerializerOptions
{
// 整齐打印
WriteIndented = true,
//重新编码,解决中文乱码问题
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
};
string message = JsonSerializer.Serialize(systemConfig, options);
if (File.Exists(settingDataPath))
{
File.WriteAllText(settingDataPath, message);
}
}
private string settingDataPath = "systemconfig.json";
private void timer1_Tick(object? sender, EventArgs e)
{
DateTime currentT= DateTime.Now;
RunTime = DateDiff(currentT, StartTime);
string path = $"{Path.Combine(MainPath, MseedPath)}/{currentT.Month.ToString("D2")}/{currentT.Day.ToString("D2")}/{currentT.Hour.ToString("D2")}/{currentT.AddMinutes(-2).Minute.ToString("D2")}";
// path = "I:\\DATA/NET2023/06/22/22/56";
if (Directory.Exists(path) && IsUploadDB)
{
UploadMseedFile.UploadMSeedOnce(path, WorkAreaId);
}
}
/// <summary>
/// 启动或者停止监听
/// </summary>
/// <param name="IsEnableRaising">True:启用监听,False:关闭监听</param>
private int WatchStartOrSopt(bool IsEnableRaising)
{
int result = 0;
try
{
if (IsEnableRaising)
{
watcherArray[0].Path = Path.Combine(MainPath, RealtimePath);
watcherArray[1].Path = Path.Combine(MainPath, PostPath);
}
watcherArray[0].EnableRaisingEvents = IsEnableRaising;
watcherArray[1].EnableRaisingEvents = IsEnableRaising;
IsIndeterminate = IsEnableRaising;
}
catch (Exception ex)
{
result = 1;
MessageBox.Show(ex.ToString());
}
return result;
}
private string DateDiff(DateTime DateTime1, DateTime DateTime2)
{
@ -299,12 +370,14 @@ namespace Txgy.FilesWatcher.ViewModels
if (watch != null && watch.Path == watcherArray[0].Path)
{
watcherArray[0].EnableRaisingEvents = false;
UploadRealtimeFile.UploadRealtimeFileOnce(e.FullPath, lastLine, WorkAreaId);
if (IsUploadDB)
UploadRealtimeFile.UploadRealtimeFileOnce(e.FullPath, lastLine, IsUploadMQTT, WorkAreaId);
}
else if (watch != null && watch.Path == watcherArray[1].Path)
{
watcherArray[1].EnableRaisingEvents = false;
UploadPostproFile.UploadPostproFileOnce(watcherArray[1].Path, lastLine, WorkAreaId);
if (IsUploadDB)
UploadPostproFile.UploadPostproFileOnce(watcherArray[1].Path, lastLine, WorkAreaId);
}
var str= dataList.Where(f => f.Data == lastLine).FirstOrDefault();
if (!string.IsNullOrWhiteSpace(lastLine)
@ -385,16 +458,6 @@ namespace Txgy.FilesWatcher.ViewModels
//});
}
/// <summary>
/// 启动或者停止监听
/// </summary>
/// <param name="IsEnableRaising">True:启用监听,False:关闭监听</param>
private void WatchStartOrSopt(bool IsEnableRaising)
{
watcherArray[0].EnableRaisingEvents = IsEnableRaising;
watcherArray[1].EnableRaisingEvents = IsEnableRaising;
}
private FileSystemWatcher[] watcherArray = new FileSystemWatcher[2];
private DispatcherTimer timer1 = new DispatcherTimer();
private SystemConfig systemConfig = new SystemConfig();

@ -9,90 +9,86 @@
mc:Ignorable="d"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
d:DesignHeight="450" d:DesignWidth="800">
d:DesignHeight="600" d:DesignWidth="900">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="300"/>
<ColumnDefinition Width="350"/>
<ColumnDefinition Width="107*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Row="0">
</StackPanel>
<GroupBox Header="文件上传管理" IsEnabled="{Binding ElementName=rtnConnect, Path=IsChecked}" Style="{StaticResource GroupBoxOriginal}" BorderThickness="3" Margin="1">
<GroupBox Header="文件上传管理" Style="{StaticResource GroupBoxOriginal}" BorderThickness="3" Margin="1">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="50"/>
<RowDefinition Height="30"/>
<RowDefinition Height="130"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="130"/>
<RowDefinition Height="30*"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Grid.ColumnSpan="2" >
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="10*"/>
</Grid.RowDefinitions>
<DockPanel Grid.Row="0" >
<TextBlock Text="WorkAreaId" VerticalAlignment="Center"/>
<hc:NumericUpDown Value="{Binding WorkAreaId}" DockPanel.Dock="Right"/>
</DockPanel>
<Button Grid.Row="2" Content="确定" Command="{Binding SureCommand}"/>
</Grid>
<RadioButton GroupName="start" Content="启动" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center">
<RadioButton GroupName="start" x:Name="btnStart" Content="开始监控" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Style="{StaticResource ToggleButtonDefault}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<i:InvokeCommandAction Command="{Binding StartCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</RadioButton>
<RadioButton GroupName="start" Content="关闭" IsChecked="True" Grid.Row="1" Grid.Column="1" VerticalAlignment="Center">
<RadioButton GroupName="start" x:Name="btnStop" Content="停止监控" IsChecked="True" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" Style="{StaticResource ToggleButtonDefault}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Checked">
<i:InvokeCommandAction Command="{Binding StopCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</RadioButton>
<Grid Grid.Row="2" Grid.ColumnSpan="2">
<DockPanel Grid.Row="1" IsEnabled="{Binding ElementName=btnStop,Path=IsChecked}">
<TextBlock Text="工区编号:" VerticalAlignment="Center"/>
<hc:NumericUpDown Value="{Binding WorkAreaId}"/>
</DockPanel>
<TextBlock Grid.Row="2" VerticalAlignment="Center" Grid.ColumnSpan="3">
<Run Text="启动时间:"/>
<Run Text="{Binding StartTime,StringFormat=yyyy-MM-dd HH:mm:ss}"/>
</TextBlock>
<TextBlock Grid.Row="3" Grid.ColumnSpan="2" VerticalAlignment="Center">
<Run Text="运行时间:"/>
<Run Text="{Binding RunTime, StringFormat=yyyy-MM-dd HH:mm:ss}"/>
</TextBlock>
<CheckBox Grid.Row="4" Grid.Column="0" Content="上传数据库" IsChecked="{Binding IsUploadDB}" IsEnabled="{Binding ElementName=btnStart,Path=IsChecked}" Style="{StaticResource ToggleButtonSwitchBaseStyle}" Width="120"/>
<CheckBox Grid.Row="4" Grid.Column="1" Content="MQ转发数据" IsChecked="{Binding IsUploadMQTT}" IsEnabled="{Binding ElementName=btnStart,Path=IsChecked}" Style="{StaticResource ToggleButtonSwitchBaseStyle}" Width="120"/>
<Grid Grid.Row="5" Grid.ColumnSpan="2" IsEnabled="{Binding ElementName=btnStop,Path=IsChecked}">
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TextBlock Text="监控路径1" Grid.Row="0" Grid.Column="0" />
<DockPanel Grid.Row="0">
<Label Content="主目录" BorderBrush="Transparent" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Width="110" HorizontalContentAlignment="Right"/>
<Button Content=" ... " Command="{Binding FilePathSaveCommand}" CommandParameter="MainPath" DockPanel.Dock="Right" HorizontalAlignment="Right"/>
<TextBox Text="{Binding MainPath}" IsReadOnly="True" DockPanel.Dock="Right" FontSize="10"/>
</DockPanel>
<DockPanel Grid.Row="1">
<Button Content="..." Command="{Binding FilePathSaveCommand}" CommandParameter="WatcherPath" DockPanel.Dock="Right" HorizontalAlignment="Right" Height="28" Width="30"/>
<TextBox Text="{Binding WatcherPath}" IsReadOnly="True" DockPanel.Dock="Right" FontSize="10"/>
<CheckBox Content="原始数据 " IsChecked="{Binding IsUploadMseedPath}" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Style="{StaticResource ToggleButtonSwitchBaseStyle}" Width="110"/>
<Button Content="OK" Command="{Binding SureCommand}" CommandParameter="MseedPath" DockPanel.Dock="Right" HorizontalAlignment="Right" />
<TextBox Text="{Binding MseedPath}" DockPanel.Dock="Right" FontSize="10" />
</DockPanel>
<TextBlock Text="监控路径2" Grid.Row="2" Grid.Column="0" />
<DockPanel Grid.Row="3">
<Button Content="..." Command="{Binding FilePathSaveCommand}" CommandParameter="WatcherMseedPath" DockPanel.Dock="Right" HorizontalAlignment="Right" Height="28" Width="30"/>
<TextBox Text="{Binding WatcherMseedPath}" IsReadOnly="True" DockPanel.Dock="Right" FontSize="10"/>
<DockPanel Grid.Row="2">
<CheckBox Content="实时结果 " IsChecked="{Binding IsUploadRealtimePath}" Grid.Row="2" Grid.Column="0" Style="{StaticResource ToggleButtonSwitchBaseStyle}" Width="110"/>
<Button Content="OK" Command="{Binding SureCommand}" CommandParameter="RealtimePath" DockPanel.Dock="Right" HorizontalAlignment="Right" />
<TextBox Text="{Binding RealtimePath}" DockPanel.Dock="Right" FontSize="10"/>
</DockPanel>
<TextBlock Text="目录:" Grid.Row="4" Grid.Column="0" />
<DockPanel Grid.Row="5">
<Button Content="..." Command="{Binding FilePathSaveCommand}" CommandParameter="WatcherMseedPath" DockPanel.Dock="Right" HorizontalAlignment="Right" Height="28" Width="30"/>
<TextBox Text="{Binding MseedFilePath}" IsReadOnly="True" DockPanel.Dock="Right" FontSize="10"/>
<DockPanel Grid.Row="3">
<CheckBox Content="后处理结果" IsChecked="{Binding IsUploadPostPath}" Grid.Row="4" Grid.Column="0" Style="{StaticResource ToggleButtonSwitchBaseStyle}" Width="110"/>
<Button Content="OK" Command="{Binding SureCommand}" CommandParameter="PostPath" DockPanel.Dock="Right" HorizontalAlignment="Right" />
<TextBox Text="{Binding PostPath}" DockPanel.Dock="Right" FontSize="10" />
</DockPanel>
</Grid>
<TextBlock Grid.Row="3" VerticalAlignment="Center" Grid.ColumnSpan="3">
<Run Text="启动时间:"/>
<Run Text="{Binding StartTime,StringFormat=yyyy-MM-dd HH:mm:ss}"/>
</TextBlock>
<TextBlock Grid.Row="4" Grid.ColumnSpan="2" VerticalAlignment="Center">
<Run Text="运行时间:"/>
<Run Text="{Binding RunTime, StringFormat=yyyy-MM-dd HH:mm:ss}"/>
</TextBlock>
<!--<DockPanel Grid.Row="4" Grid.ColumnSpan="2" >
<ComboBox DockPanel.Dock="Right" ItemsSource="{Binding IntervalTimesSource}" SelectedIndex="{Binding selectedIndex}" Text="{Binding ProMonInterval}" VerticalAlignment="Center"/>
<TextBlock Text="监隔间隔(s):" DockPanel.Dock="Right" VerticalAlignment="Center"/>
@ -100,55 +96,92 @@
<ProgressBar Grid.Row="7" Grid.ColumnSpan="3" VerticalAlignment="Bottom" IsIndeterminate="{Binding IsIndeterminate}" Foreground="Green" Value="0"/>
</Grid>
</GroupBox>
<ListView x:Name="listView" ItemsSource="{Binding DataList}" Grid.Column="1">
<ListView.View>
<GridView>
<GridViewColumn Header="时间" DisplayMemberBinding="{Binding CreateTime, StringFormat=yyyy-MM-dd HH:mm:ss}" />
<GridViewColumn Header="内容" Width="300" >
<!--模板化单元格内容-->
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Foreground="CornflowerBlue" MinWidth="200" Cursor="Hand" Text="{Binding Data}" IsReadOnly="True" BorderBrush="Transparent" Background="Transparent" TextWrapping="Wrap"></TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="文件名" Width="80" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="修改类型" Width="80" DisplayMemberBinding="{Binding ChangeType}" />
<GridViewColumn Header="是否发送" >
<!--模板化单元格内容-->
<GridViewColumn.CellTemplate>
<DataTemplate>
<ToggleButton IsEnabled="False" IsChecked="{Binding IsSend}" HorizontalAlignment="Center" Margin="5,4" Style="{StaticResource ToggleButtonSwitch}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
<!--<ListView.ItemTemplate>
<DataTemplate>
<Border BorderBrush="#F7F9FA" BorderThickness="0,0,0,1" Background="Transparent">
<Grid Height="30" Background="Transparent" Name="root">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="60"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="60"/>
<ColumnDefinition Width="60"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding CreateTime, StringFormat=yyyy-MM-dd HH:mm:ss}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="{Binding ChangeType}" VerticalAlignment="Center" Grid.Column="1"/>
<TextBlock Text="{Binding Name}" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="2"/>
<TextBlock Text="{Binding Data}" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Column="3"/>
</Grid>
</Border>
--><!--<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="root" Property="Background" Value="#F7F9FA"/>
</Trigger>
</DataTemplate.Triggers>--><!--
</DataTemplate>
</ListView.ItemTemplate>-->
</ListView>
<UniformGrid Columns="1" Grid.Column="1">
<DockPanel>
<TextBlock Text="原始数据监控" DockPanel.Dock="Top"/>
<ListView ItemsSource="{Binding DataList}" >
<ListView.View>
<GridView>
<GridViewColumn Header="时间" DisplayMemberBinding="{Binding CreateTime, StringFormat=yyyy-MM-dd HH:mm:ss}" />
<GridViewColumn Header="内容" Width="300" >
<!--模板化单元格内容-->
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Foreground="CornflowerBlue" MinWidth="200" Cursor="Hand" Text="{Binding Data}" IsReadOnly="True" BorderBrush="Transparent" Background="Transparent" TextWrapping="Wrap"></TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<!--<GridViewColumn Header="文件名" Width="80" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="修改类型" Width="80" DisplayMemberBinding="{Binding ChangeType}" />
<GridViewColumn Header="是否发送" >
-->
<!--模板化单元格内容-->
<!--
<GridViewColumn.CellTemplate>
<DataTemplate>
<ToggleButton IsEnabled="False" IsChecked="{Binding IsSend}" HorizontalAlignment="Center" Margin="5,4" Style="{StaticResource ToggleButtonSwitch}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>-->
</GridView>
</ListView.View>
</ListView>
</DockPanel>
<DockPanel>
<TextBlock Text="实时结果监控" DockPanel.Dock="Top"/>
<ListView ItemsSource="{Binding DataList}" >
<ListView.View>
<GridView>
<GridViewColumn Header="时间" DisplayMemberBinding="{Binding CreateTime, StringFormat=yyyy-MM-dd HH:mm:ss}" />
<GridViewColumn Header="内容" Width="300" >
<!--模板化单元格内容-->
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Foreground="CornflowerBlue" MinWidth="200" Cursor="Hand" Text="{Binding Data}" IsReadOnly="True" BorderBrush="Transparent" Background="Transparent" TextWrapping="Wrap"></TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</DockPanel>
<DockPanel>
<TextBlock Text="后处理结果监控" DockPanel.Dock="Top"/>
<ListView ItemsSource="{Binding DataList}" >
<ListView.View>
<GridView>
<GridViewColumn Header="时间" DisplayMemberBinding="{Binding CreateTime, StringFormat=yyyy-MM-dd HH:mm:ss}" />
<GridViewColumn Header="内容" Width="300" >
<!--模板化单元格内容-->
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Foreground="CornflowerBlue" MinWidth="200" Cursor="Hand" Text="{Binding Data}" IsReadOnly="True" BorderBrush="Transparent" Background="Transparent" TextWrapping="Wrap"></TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</DockPanel>
<DockPanel>
<TextBlock Text="MQTT转发监控" DockPanel.Dock="Top"/>
<ListView ItemsSource="{Binding DataList}" >
<ListView.View>
<GridView>
<GridViewColumn Header="时间" DisplayMemberBinding="{Binding CreateTime, StringFormat=yyyy-MM-dd HH:mm:ss}" />
<GridViewColumn Header="内容" Width="300" >
<!--模板化单元格内容-->
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Foreground="CornflowerBlue" MinWidth="200" Cursor="Hand" Text="{Binding Data}" IsReadOnly="True" BorderBrush="Transparent" Background="Transparent" TextWrapping="Wrap"></TextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</DockPanel>
</UniformGrid>
</Grid>
</UserControl>

@ -1,7 +1,5 @@
using MySql.Data.MySqlClient;
using System;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -10,55 +8,14 @@ namespace Txgy.FilesWatcher.model
{
public class DBConfig
{
private static readonly string _connStr;
static DBConfig()
{
_connStr = "Server=bj-cdb-q64mbxr6.sql.tencentcdb.com;Port=60027;Database=yuwu2021;Uid=yuwudba;Pwd=Yw123456;charset='utf8'";
}
public static MySqlConnection OpenConnection()
{
MySqlConnection connection = new MySqlConnection(_connStr);
connection.Open();
return connection;
}
public string dbms { get; set; }
public string serverIP { get; set; }
public int port { get; set; }
/////////////////////////////////
//createtables 配置
//起始台站号
public int stationNoStart = 02;
//结束台站号
public int stationNoend = 27;
//起始年月
public string YearMonthStart = "2022-03";
//结束年月
public string YearMonthend = "2027-03";
public string database { get; set; }
//uploadminiseed 配置(以分钟为单位)
public string MiniseedPathBase = "Y:/YuwuN3102mseed/NET2023";
//从当前年、月、日、时、分往以前X分钟
//'BeforeNMin' => 60*24*1,
public int BeforeNMin = 60 * 1 * 1;
//从当前年、月、日、时、分往以后X分钟
//'AfterNMin' => 60*24*1,
public int AfterNMin = 10 * 1 * 1;
/////////////////////////////////
//uploadrealtime 配置(以天为单位)
//realtimeEvent文件路径BASE
public string EventPathBase = "Y:/YuwuN3102mseed/";
//从当前年、月、日往以前X天
public int EventBeforeNDay = 3;
//从当前年、月、日往以后X天
public int EventAfterNDay = 1;
//PostProEvent文件路径BASE
public string PostProEventPathBase = "Y:/YuwuN3102mseed/post/";
//从当前年、月、日往以前X天
public int PostProEventBeforeNDa = 3;
//从当前年、月、日往以后X天
public int PostProEventAfterNDay = 1;
public string userName { get; set; }
public string password { get; set; }
}
}

@ -0,0 +1,67 @@
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Txgy.FilesWatcher.model
{
public class DataBaseConnect
{
private static readonly string _connStr;
static DataBaseConnect()
{
_connStr = $"Server={DataBaseConfig.serverIP};Port={DataBaseConfig.port};Database={DataBaseConfig.database};Uid={DataBaseConfig.userName};Pwd={DataBaseConfig.password};charset='utf8'";
// _connStr = $"Server=bj-cdb-q64mbxr6.sql.tencentcdb.com;Port=60027;Database=yuwu2021;Uid=yuwudba;Pwd=Yw123456;charset='utf8'";
}
public static MySqlConnection OpenConnection()
{
MySqlConnection connection = new MySqlConnection(_connStr);
connection.Open();
return connection;
}
public static DBConfig DataBaseConfig { get; set; }
/////////////////////////////////
//createtables 配置
//起始台站号
public int stationNoStart = 02;
//结束台站号
public int stationNoend = 27;
//起始年月
public string YearMonthStart = "2022-03";
//结束年月
public string YearMonthend = "2027-03";
//uploadminiseed 配置(以分钟为单位)
public string MiniseedPathBase = "Y:/YuwuN3102mseed/NET2023";
//从当前年、月、日、时、分往以前X分钟
//'BeforeNMin' => 60*24*1,
public int BeforeNMin = 60 * 1 * 1;
//从当前年、月、日、时、分往以后X分钟
//'AfterNMin' => 60*24*1,
public int AfterNMin = 10 * 1 * 1;
/////////////////////////////////
//uploadrealtime 配置(以天为单位)
//realtimeEvent文件路径BASE
public string EventPathBase = "Y:/YuwuN3102mseed/";
//从当前年、月、日往以前X天
public int EventBeforeNDay = 3;
//从当前年、月、日往以后X天
public int EventAfterNDay = 1;
//PostProEvent文件路径BASE
public string PostProEventPathBase = "Y:/YuwuN3102mseed/post/";
//从当前年、月、日往以前X天
public int PostProEventBeforeNDa = 3;
//从当前年、月、日往以后X天
public int PostProEventAfterNDay = 1;
}
}

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Txgy.FilesWatcher.model
{
public class MQTTConfig
{
public string serverIP { get; set; }
public int port { get; set; }
public string userName { get; set; }
public string password { get; set; }
public string clientID { get; set; }
}
}

@ -8,10 +8,12 @@ namespace Txgy.FilesWatcher.model
{
public class SystemConfig
{
public string FilePath { get; set; }
public string WatcherMseedPath { get; set; }
public string mainpath { get; set; }
public string realtimepath { get; set; }
public string postpath { get; set; }
public string MseedFilePath { get; set; }
public string Url { get; set; }
public string mseedpath { get; set; }
public MQTTConfig mQTTConfig { get; set; }
public DBConfig dBConfig { get; set; }
}
}

@ -35,7 +35,7 @@ namespace Txgy.FilesWatcher.model
string sqlNumber = $"SELECT COUNT(*) FROM {uploadedtbname} WHERE filename = '{file}'";
//检查文件是否已经上传
using (var conn = DBConfig.OpenConnection())
using (var conn = DataBaseConnect.OpenConnection())
{
MySqlCommand cmd = new MySqlCommand(sqlNumber, conn);
var a = conn.QueryFirst<int>(sqlNumber);

@ -29,7 +29,7 @@ namespace Txgy.FilesWatcher.model
string uploadedtbname = "uploadedpostpro";
string sqlNumber = $"SELECT COUNT(*) FROM {uploadedtbname} WHERE filename = '{file}'";
//检查文件是否已经上传
using (var conn = DBConfig.OpenConnection())
using (var conn = DataBaseConnect.OpenConnection())
{
MySqlCommand cmd = new MySqlCommand(sqlNumber, conn);
var a = conn.QueryFirst<int>(sqlNumber);

@ -20,7 +20,7 @@ namespace Txgy.FilesWatcher.model
{
public class UploadRealtimeFile
{
public static void UploadRealtimeFileOnce(string path, string eventMessage, int workAreaId= 1)
public static void UploadRealtimeFileOnce(string path, string eventMessage, bool isUploadMQ,int workAreaId= 1)
{
try
{
@ -36,7 +36,7 @@ namespace Txgy.FilesWatcher.model
string uploadedtbname = "uploadedrealtime";
string sqlNumber = $"SELECT COUNT(*) FROM {uploadedtbname} WHERE filename = '{file}'";
//检查文件是否已经上传
using (var conn = DBConfig.OpenConnection())
using (var conn = DataBaseConnect.OpenConnection())
{
MySqlCommand cmd = new MySqlCommand(sqlNumber, conn);
var a = conn.QueryFirst<int>(sqlNumber);

@ -1,6 +1,25 @@
{
"Url": "ws://43.138.12.228:80/ws",
"FilePath": "F:\\SourceTest\\Txgy.FilesWatcher",
"WatcherMseedPath": "H:\\mzhifa\\txgy\\20231119",
"MseedFilePath": "I:\\DATA"
//
"mainpath": "Y:\\YuwuN2107",
//
"realtimepath": "EVT2023",
//
"postpath": "post\\EVT2023",
//
"mseedpath": "NET2023",
"mQTTConfig": {
"serverIP": "49.232.209.49",
"port": 1883,
"userName": "23101052539",
"password": "23101052539",
"clientID": "119"
},
"dBConfig": {
"dbms": "mysql",
"serverIP": "bj-cdb-q64mbxr6.sql.tencentcdb.com",
"port": 60027,
"database": "yuwu2021",
"userName": "yuwudba",
"password": "Yw123456"
}
}

Loading…
Cancel
Save