增加手动处理配置

master
mzhifa 8 months ago
parent f625adbc77
commit 6d6e518909

@ -4,6 +4,7 @@ using System.Threading.Tasks;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using Newtonsoft.Json; using Newtonsoft.Json;
using System.IO; using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace StartServerWPF.Models namespace StartServerWPF.Models
{ {
@ -142,24 +143,33 @@ namespace StartServerWPF.Models
return moniSp; return moniSp;
} }
public static T DeepCopy<T>(T obj)
public static ApmsModel ReadApmsJson(string apmsJsonPath)
{ {
ApmsModel model = new ApmsModel(); object retval;
using (StreamReader sr = File.OpenText(apmsJsonPath)) using (MemoryStream ms = new MemoryStream())
{ {
JsonTextReader reader = new JsonTextReader(sr); BinaryFormatter bf = new BinaryFormatter();
JObject jobj = (JObject)JToken.ReadFrom(reader); //序列化成流
model.station = jobj["station"].ToString(); bf.Serialize(ms, obj);
// model.ttime2d = jobj["ttime2d"].ToString(); ms.Seek(0, SeekOrigin.Begin);
model.savepath = jobj["Main.savepath"].ToString(); //反序列化成对象
model.push2wx = jobj["push2wx"].ToString(); retval = bf.Deserialize(ms);
var jor = jobj["channels"].First; ms.Close();
JObject jordb = JObject.Parse(jor.ToString());
string sta = jordb["station"].ToString();
// model.channels = JsonConvert.DeserializeObject<StationChannelsModel>(jor.ToString());
} }
return model; return (T)retval;
} }
//public static T DeepCopy<T>(T obj)
//{
// object retval;
// using (MemoryStream ms = new MemoryStream())
// {
// DataContractSerializer ser = new DataContractSerializer(typeof(T));
// ser.WriteObject(ms, obj);
// ms.Seek(0, SeekOrigin.Begin);
// retval = ser.ReadObject(ms);
// ms.Close();
// }
// return (T)retval;
//}
} }
} }

@ -1,4 +1,5 @@
using Prism.Commands; using Newtonsoft.Json;
using Prism.Commands;
using Prism.Mvvm; using Prism.Mvvm;
using Prism.Services.Dialogs; using Prism.Services.Dialogs;
using StartServerWPF.Models; using StartServerWPF.Models;
@ -78,13 +79,19 @@ namespace StartServerWPF.Modules.Main.ViewModels
MessageBox.Show("工区名称和目录不能为空", "提示", MessageBoxButton.OK); MessageBox.Show("工区名称和目录不能为空", "提示", MessageBoxButton.OK);
return; return;
} }
if (MessageBox.Show("确认修改?", "参数设置", MessageBoxButton.OKCancel, if (MessageBox.Show("确认添加?", "提示", MessageBoxButton.OKCancel,
MessageBoxImage.Exclamation) == MessageBoxResult.OK) MessageBoxImage.Exclamation) == MessageBoxResult.OK)
{ {
string str = File.ReadAllText(Path.Combine(JsonParser.workareaPath, "Workarea.json"));
WorkareaModel workareaModel = JsonConvert.DeserializeObject<WorkareaModel>(str);
var dialog = new DialogResult(ButtonResult.OK); var dialog = new DialogResult(ButtonResult.OK);
Workareas workareas = new Workareas(); Workareas workareas = new Workareas();
workareas.workareaname = WorkAreaName; workareas.workareaname = WorkAreaName;
workareas.filepath = WorkAreaPath; workareas.filepath = WorkAreaPath;
workareaModel.savepath = WorkAreaPath;
workareaModel.workareaname = WorkAreaName;
//生成工区默认配置文件
File.WriteAllText(Path.Combine(WorkAreaPath, Path.GetFileName(WorkAreaPath) + ".json"), JsonConvert.SerializeObject(workareaModel));
dialog.Parameters.Add("param1", workareas); dialog.Parameters.Add("param1", workareas);
RequestClose?.Invoke( dialog); RequestClose?.Invoke( dialog);
} }

@ -189,8 +189,11 @@ namespace StartServerWPF.Modules.Main.ViewModels
process.ProParams = $"{str} {temPath}"; process.ProParams = $"{str} {temPath}";
//dataProtools 配置更新 //dataProtools 配置更新
ApmsModel tools = _workareaModel.apmModel; var area = JsonParser.DeepCopy<WorkareaModel>(_workareaModel);
ApmsModel tools = area.apmModel;
tools.savepath = SavePath; tools.savepath = SavePath;
tools.station = Path.GetFullPath(Path.Combine(area.savepath, area.apmModel.station)).Replace("\\", "/");
tools.ttime[0].ttime2d = Path.GetFullPath(Path.Combine(area.savepath, area.apmModel.ttime[0].ttime2d)).Replace("\\", "/");
JsonParser.WriteSystemConfigFile(Path.Combine(_systemConfig.dataProTools.ProPath, "apms.json"), tools); JsonParser.WriteSystemConfigFile(Path.Combine(_systemConfig.dataProTools.ProPath, "apms.json"), tools);
var mfile = new DirectoryInfo(temPath).EnumerateFiles("*.mseed"); var mfile = new DirectoryInfo(temPath).EnumerateFiles("*.mseed");

@ -1,4 +1,5 @@
using Newtonsoft.Json; using Google.Protobuf.WellKnownTypes;
using Newtonsoft.Json;
using Prism.Commands; using Prism.Commands;
using Prism.Ioc; using Prism.Ioc;
using Prism.Mvvm; using Prism.Mvvm;
@ -56,13 +57,17 @@ namespace StartServerWPF.Modules.Main.ViewModels
set { set {
if (value >= 0) if (value >= 0)
{ {
string file = Path.Combine(_workareasModelArray.workarea[value].filepath, "workarea.json"); try
if (!File.Exists(file))
{ {
JsonParser.WriteSystemConfigFile(file, WareaModel); var area = _workareasModelArray.workarea[value];
} string file = Path.Combine(area.filepath, Path.GetFileName(area.filepath) + ".json");
string json = File.ReadAllText(file); string json = File.ReadAllText(file);
WareaModel = JsonConvert.DeserializeObject<WorkareaModel>(json); WareaModel = JsonConvert.DeserializeObject<WorkareaModel>(json);
}
catch (Exception ex)
{
MessageBox.Show("当前工区目录配置文件不存在," + ex.Message);
}
_workareasModelArray.selectIndex = value; _workareasModelArray.selectIndex = value;
} }
SetProperty(ref _wareaSelectedIndex, value); SetProperty(ref _wareaSelectedIndex, value);
@ -92,6 +97,7 @@ namespace StartServerWPF.Modules.Main.ViewModels
{ {
apmStationFile = string.Empty; apmStationFile = string.Empty;
apmttime2dFile = string.Empty; apmttime2dFile = string.Empty;
// WareaModel.apmModel = ;
}); });
public DelegateCommand AddItemCommand => new(() => public DelegateCommand AddItemCommand => new(() =>
@ -106,17 +112,38 @@ namespace StartServerWPF.Modules.Main.ViewModels
if (result != null && result.Result == ButtonResult.OK) if (result != null && result.Result == ButtonResult.OK)
{ {
var area = result.Parameters.GetValue<Workareas>("param1"); var area = result.Parameters.GetValue<Workareas>("param1");
WareaModel.savepath = area.filepath; var file = _workareasModelArray.workarea.Where(f => f.workareaname == area.workareaname).FirstOrDefault();
var file = _workareasModelArray.workarea.Where(f => f.filepath == area.filepath).FirstOrDefault();
if (file == null) if (file == null)
{ {
_workareasModelArray.workarea.Add(area); _workareasModelArray.workarea.Add(area);
WorkareaNameSource.Add(area.workareaname); WorkareaNameSource.Add(area.workareaname);
WareaSelectedIndex= WorkareaNameSource.Count()-1;
}
else
{
//更新当前工区目录
file.filepath = area.filepath;
WareaSelectedIndex = _workareasModelArray.selectIndex;
} }
} }
})); }));
}); });
public DelegateCommand DeleteItemCommand => new(() =>
{
if (MessageBox.Show($"删除{WareaModel.workareaname}工区所有文件?", "提示", MessageBoxButton.OKCancel,
MessageBoxImage.Exclamation) == MessageBoxResult.OK)
{
if (Directory.Exists(WareaModel.savepath))
{
Directory.Delete(WareaModel.savepath, true);
}
var area= _workareasModelArray.workarea.Where(a => a.workareaname == WareaModel.workareaname).FirstOrDefault();
WorkareaNameSource.Remove(WareaModel.workareaname);
_workareasModelArray.workarea.Remove(area);
WareaSelectedIndex =0;
}
});
public DelegateCommand<object> SelectFileCommand => new((obj) => public DelegateCommand<object> SelectFileCommand => new((obj) =>
{ {
string para = obj.ToString(); string para = obj.ToString();
@ -183,7 +210,6 @@ namespace StartServerWPF.Modules.Main.ViewModels
if (MessageBox.Show("确认修改?", "参数设置", MessageBoxButton.OKCancel, if (MessageBox.Show("确认修改?", "参数设置", MessageBoxButton.OKCancel,
MessageBoxImage.Exclamation) == MessageBoxResult.OK) MessageBoxImage.Exclamation) == MessageBoxResult.OK)
{ {
//1 Workarea配置更新选择的索引 //1 Workarea配置更新选择的索引
JsonParser.WriteSystemConfigFile(Path.Combine(JsonParser.workareaPath, "Workareas.json"), _workareasModelArray); JsonParser.WriteSystemConfigFile(Path.Combine(JsonParser.workareaPath, "Workareas.json"), _workareasModelArray);
_wareaModel.apmModel.channels = new List<StationChannelsModel> _wareaModel.apmModel.channels = new List<StationChannelsModel>
@ -197,8 +223,8 @@ namespace StartServerWPF.Modules.Main.ViewModels
} }
}; };
JsonParser.WriteSystemConfigFile(Path.Combine(_wareaModel.savepath, "Workarea.json"), _wareaModel); JsonParser.WriteSystemConfigFile(Path.Combine(_wareaModel.savepath, "Workarea.json"), _wareaModel);
string wareaJson = JsonConvert.SerializeObject(_wareaModel);
var curWorkarea = JsonConvert.DeserializeObject<WorkareaModel>(wareaJson); var curWorkarea = JsonParser.DeepCopy<WorkareaModel>(_wareaModel);
if (!string.IsNullOrEmpty(apmStationFile)) if (!string.IsNullOrEmpty(apmStationFile))
{ {
string destFileName = Path.GetFullPath(Path.Combine(curWorkarea.savepath, curWorkarea.apmModel.station)); string destFileName = Path.GetFullPath(Path.Combine(curWorkarea.savepath, curWorkarea.apmModel.station));

@ -200,6 +200,7 @@
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Center" Grid.Row="3" Grid.Column="2" Margin="0,0,0,30"> <StackPanel Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Center" Grid.Row="3" Grid.Column="2" Margin="0,0,0,30">
<Button Content="添加工区" Width="100" Height="30" Background="#FF0ABEFF" Foreground="White" Command="{Binding AddItemCommand}"/> <Button Content="添加工区" Width="100" Height="30" Background="#FF0ABEFF" Foreground="White" Command="{Binding AddItemCommand}"/>
<Button Content="删除工区" Width="100" Height="30" Background="#FF0ABEFF" Foreground="White" Command="{Binding DeleteItemCommand}"/>
<Button Content="应用" Margin="30,0,0,0" Width="100" Height="30" Background="#FF0ABEFF" Foreground="White" Command="{Binding ConfirmCommand}"/> <Button Content="应用" Margin="30,0,0,0" Width="100" Height="30" Background="#FF0ABEFF" Foreground="White" Command="{Binding ConfirmCommand}"/>
</StackPanel> </StackPanel>
</Grid> </Grid>

@ -43,23 +43,29 @@ namespace StartServerWPF
containerRegistry.RegisterSingleton<SystemConfigModel>(() => sc); containerRegistry.RegisterSingleton<SystemConfigModel>(() => sc);
string st = File.ReadAllText(Path.Combine(JsonParser.workareaPath, "Workareas.json")); string st = File.ReadAllText(Path.Combine(JsonParser.workareaPath, "Workareas.json"));
var wm = JsonConvert.DeserializeObject<WorkareasModelArray>(st); var wm = JsonConvert.DeserializeObject<WorkareasModelArray>(st);
var item = wm.workarea[wm.selectIndex]; var item = wm.workarea[wm.selectIndex];
string workarea = File.ReadAllText(Path.Combine(item.filepath, "Workarea.json")); string areaPath = Path.Combine(item.filepath, Path.GetFileName(item.filepath)+".json");
var currentWorkarea =new WorkareaModel();
var currentWorkarea = JsonConvert.DeserializeObject<WorkareaModel>(workarea); if (File.Exists(areaPath))
{
string workarea = File.ReadAllText(areaPath);
currentWorkarea = JsonConvert.DeserializeObject<WorkareaModel>(workarea);
if (currentWorkarea.StationConfig.Stations == null) if (currentWorkarea.StationConfig.Stations == null)
{ {
currentWorkarea.StationConfig.Stations = currentWorkarea.CreateStationFromCSV(Path.Combine(JsonParser.workareaPath, currentWorkarea.apmModel.station), currentWorkarea.StationConfig.Location) currentWorkarea.StationConfig.Stations = currentWorkarea.CreateStationFromCSV(Path.Combine(JsonParser.workareaPath, currentWorkarea.apmModel.station), currentWorkarea.StationConfig.Location)
?.Select(a => new StationState { IsEnable = a.Enable, Name = a.Num }).ToList(); ?.Select(a => new StationState { IsEnable = a.Enable, Name = a.Num }).ToList();
} }
}
else
{
//加载默认配置数据
string workarea = File.ReadAllText(Path.Combine(JsonParser.workareaPath, "Workarea.json"));
currentWorkarea = JsonConvert.DeserializeObject<WorkareaModel>(workarea);
}
containerRegistry.RegisterSingleton<WorkareasModelArray>(() => wm); containerRegistry.RegisterSingleton<WorkareasModelArray>(() => wm);
containerRegistry.RegisterSingleton<WorkareaModel>(() => currentWorkarea); containerRegistry.RegisterSingleton<WorkareaModel>(() => currentWorkarea);
} }
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog) protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)

@ -1,21 +1,18 @@
{
"selectIndex": 0,
"workarea": [
{ {
"workareaname": "n3103", "workareaname": "n3103",
"savepath": "I:/DATA", "savepath": "",
"chartsavepath": "chartsavepath", "chartsavepath": "chartsavepath",
"apmsavepath": "apmsavepath", "apmsavepath": "Realtime",
"toolsavepath": "toolsavepath", "toolsavepath": "Post",
"apmpush2wx": false, "apmpush2wx": false,
"toolpush2wx": false, "toolpush2wx": false,
"delayTime": 10, "delayTime": 10,
"apmModel": { "apmModel": {
"station": "N3102_staion_20230403.csv", "station": "",
"ttime": [ "ttime": [
{ {
"station": "ttime", "station": "ttime",
"ttime2d": "ttime_gw20210427.tab" "ttime2d": ""
} }
], ],
"Main.log_level": "DEBUG", "Main.log_level": "DEBUG",
@ -100,6 +97,5 @@
} }
] ]
} }
}
]
} }
Loading…
Cancel
Save