diff --git a/StartServerWPF.Models/RemoteDataBase.cs b/StartServerWPF.Models/RemoteDataBase.cs index 614071e..5338f84 100644 --- a/StartServerWPF.Models/RemoteDataBase.cs +++ b/StartServerWPF.Models/RemoteDataBase.cs @@ -15,6 +15,7 @@ namespace StartServerWPF.Models public string DataBase { get; set; } public string TableName { get; set; } public string WebsocketUrl { get; set; } + public bool DingdingIsEnable { get; set; } public string Account { get; set; } public string Pwd { get; set; } diff --git a/StartServerWPF.Models/WorkareaModel.cs b/StartServerWPF.Models/WorkareaModel.cs index 97d9807..fd1f250 100644 --- a/StartServerWPF.Models/WorkareaModel.cs +++ b/StartServerWPF.Models/WorkareaModel.cs @@ -13,7 +13,7 @@ namespace StartServerWPF.Models { public class WorkareasModelArray { - public int selectIndex { get; set; } + public int selectIndex { get; set; }=-1; public List workarea { get; set; } } public class Workareas diff --git a/StartServerWPF.Modules.Main/ViewModels/DataProcessViewModel.cs b/StartServerWPF.Modules.Main/ViewModels/DataProcessViewModel.cs index 4da0ba5..e82a607 100644 --- a/StartServerWPF.Modules.Main/ViewModels/DataProcessViewModel.cs +++ b/StartServerWPF.Modules.Main/ViewModels/DataProcessViewModel.cs @@ -148,15 +148,19 @@ namespace StartServerWPF.Modules.Main.ViewModels StartSelectedDate = DateTime.Now; EndSelectedDate = DateTime.Now; WorkareaNameSource = new ObservableCollection(); - _workareasModelArray.workarea.Select(n => n.workareaname).ToList().ForEach(a => WorkareaNameSource.Add(a)); - WareaSelectedIndex = _workareasModelArray.selectIndex; - - var model = _workareasModelArray.workarea[WareaSelectedIndex]; - string jsonStr= File.ReadAllText(Path.Combine(model.filepath, "datapro.json")); - var datas= JsonConvert.DeserializeObject>(jsonStr); - NameSource = new ObservableCollection(); - datas.ForEach(d => { NameSource.Add(d); }); - DataSelectedIndex = 0; + + if ((_workareasModelArray != null) + && (_workareasModelArray.workarea.Count > 0)) + { + WareaSelectedIndex = _workareasModelArray.selectIndex; + _workareasModelArray.workarea.Select(n => n.workareaname).ToList().ForEach(a => WorkareaNameSource.Add(a)); + var model = _workareasModelArray.workarea[WareaSelectedIndex]; + string jsonStr = File.ReadAllText(Path.Combine(model.filepath, "datapro.json")); + var datas = JsonConvert.DeserializeObject>(jsonStr); + NameSource = new ObservableCollection(); + datas.ForEach(d => { NameSource.Add(d); }); + DataSelectedIndex = 0; + } }); public DelegateCommand AddItemCommand => new(() => @@ -287,7 +291,7 @@ namespace StartServerWPF.Modules.Main.ViewModels IsBusy=true; Application.Current.Dispatcher.InvokeAsync(() => { - AddItems(ProcessSliceSource, new ProcessingInformationModel { ProcessMes = "没有需要处理的文件", MonitorTime = DateTime.Now.ToString() }); + AddItems(ProcessSliceSource, new ProcessingInformationModel { ProcessMes = $"没有查询到文件,目录:{DataPath}\\MM\\dd\\hh\\mm", MonitorTime = DateTime.Now.ToString() }); }, DispatcherPriority.ApplicationIdle); } }); diff --git a/StartServerWPF.Modules.Main/ViewModels/MainViewModel.cs b/StartServerWPF.Modules.Main/ViewModels/MainViewModel.cs index 855f7ca..38a183d 100644 --- a/StartServerWPF.Modules.Main/ViewModels/MainViewModel.cs +++ b/StartServerWPF.Modules.Main/ViewModels/MainViewModel.cs @@ -36,6 +36,7 @@ namespace StartServerWPF.Modules.Main.ViewModels _systemConfig = systemConfig; ApmsIsEnable = _systemConfig.proApms.IsEnable; ToolsIsEnable= _systemConfig.proTools.IsEnable; + DingdingIsEnable = _systemConfig.remoteDb.DingdingIsEnable; InitializeParams(); StartTime = DateTime.Now; Console.WriteLine(System.Environment.CurrentDirectory); @@ -219,7 +220,16 @@ namespace StartServerWPF.Modules.Main.ViewModels } } - + private bool dingdingIsEnable; + public bool DingdingIsEnable + { + get { return dingdingIsEnable; } + set + { + _systemConfig.remoteDb.DingdingIsEnable = value; + SetProperty(ref dingdingIsEnable, value); + } + } private ObservableCollection _processDataSource =new ObservableCollection(); public ObservableCollection ProcessDataSource @@ -439,6 +449,8 @@ namespace StartServerWPF.Modules.Main.ViewModels public void OneKeyStop() { + //保存设置数据 + JsonParser.WriteSystemConfigFile(JsonParser.systemConfigPath, _systemConfig); foreach (var item in _systemConfig.GetType().GetProperties()) { var pro = item.GetValue(_systemConfig) as ProcessInfo; @@ -607,7 +619,7 @@ namespace StartServerWPF.Modules.Main.ViewModels var ms = new MsEventModel(outLine.Data) { CurrentTime = DateTime.Now }; AddItems(ApmsEventSource, ms); var data = ApmsEventSource.Where(f => f.OriginTime == ms.OriginTime).FirstOrDefault(); - if (data == null) + if (data != null) { CSDevicePublish cSDevicePublish = new CSDevicePublish() { @@ -615,7 +627,10 @@ namespace StartServerWPF.Modules.Main.ViewModels message = outLine.Data, }; string jsonStr = JsonSerializer.Serialize(cSDevicePublish); - _websocket.SendMes(jsonStr); + if (_systemConfig.remoteDb.DingdingIsEnable) + { + _websocket.SendMes(jsonStr); + } } } else if (pro.MainModule.ModuleName.Contains(_systemConfig.proTools.ProName)) @@ -767,7 +782,10 @@ namespace StartServerWPF.Modules.Main.ViewModels //重新编码,解决中文乱码问题 Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) }); - _websocket.SendMes(jsonStr); + if (_systemConfig.remoteDb.DingdingIsEnable) + { + _websocket.SendMes(jsonStr); + } } } } @@ -798,7 +816,10 @@ namespace StartServerWPF.Modules.Main.ViewModels //重新编码,解决中文乱码问题 Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) }); - _websocket.SendMes(jsonStr); + if (_systemConfig.remoteDb.DingdingIsEnable) + { + _websocket.SendMes(jsonStr); + } } } diff --git a/StartServerWPF.Modules.Main/ViewModels/SetParamViewModel.cs b/StartServerWPF.Modules.Main/ViewModels/SetParamViewModel.cs index 97d3a92..a44c589 100644 --- a/StartServerWPF.Modules.Main/ViewModels/SetParamViewModel.cs +++ b/StartServerWPF.Modules.Main/ViewModels/SetParamViewModel.cs @@ -10,6 +10,7 @@ using StartServerWPF.Modules.Main.Models; using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Diagnostics.Metrics; using System.IO; using System.Linq; using System.Runtime.Serialization; @@ -24,7 +25,7 @@ namespace StartServerWPF.Modules.Main.ViewModels { public class SetParamViewModel : BindableBase { - public SetParamViewModel(IDialogService dialogService, SystemConfigModel configModel, + public SetParamViewModel(IDialogService dialogService, SystemConfigModel configModel, WorkareaModel workareaModel, WorkareasModelArray workareasModelArray) { this._dialogService = dialogService; @@ -33,8 +34,9 @@ namespace StartServerWPF.Modules.Main.ViewModels wareaModelSingleton = workareaModel; this._workareasModelArray = workareasModelArray; MainModel = _systemConfig.vpnInfo; - WorkareaNameSource = new ObservableCollection(); - _workareasModelArray.workarea.Select(n=>n.workareaname).ToList().ForEach(a=> WorkareaNameSource.Add(a)); + WorkareaNameSource = new ObservableCollection(); + + _workareasModelArray.workarea.ForEach(a => WorkareaNameSource.Add(a)); } private string _title = "应用列表"; public string Title => _title; @@ -44,8 +46,8 @@ namespace StartServerWPF.Modules.Main.ViewModels private readonly IDialogService _dialogService; private SystemConfigModel _systemConfig; private WorkareasModelArray _workareasModelArray; - private ObservableCollection _workareaNameSource; - public ObservableCollection WorkareaNameSource + private ObservableCollection _workareaNameSource; + public ObservableCollection WorkareaNameSource { get => _workareaNameSource; set { SetProperty(ref _workareaNameSource, value); } @@ -75,8 +77,10 @@ namespace StartServerWPF.Modules.Main.ViewModels WareaModel.savepath = path; string file = Path.Combine(path, Path.GetFileName(path) + ".json"); WareaModel.workareaname = Path.GetFileName(WareaModel.savepath); - - File.WriteAllText(file, JsonConvert.SerializeObject(WareaModel)); + if (File.Exists(file)) + { + File.WriteAllText(file, JsonConvert.SerializeObject(WareaModel)); + } //MessageBox.Show("当前工区目录配置文件不存在," + ex.Message); } } @@ -108,7 +112,7 @@ namespace StartServerWPF.Modules.Main.ViewModels { apmStationFile = string.Empty; apmttime2dFile = string.Empty; - WareaSelectedIndex = _workareasModelArray.selectIndex; + WareaSelectedIndex = _workareasModelArray.selectIndex; }); public DelegateCommand AddItemCommand => new(() => @@ -122,12 +126,12 @@ namespace StartServerWPF.Modules.Main.ViewModels if (result != null && result.Result == ButtonResult.OK) { var area = result.Parameters.GetValue("param1"); - var file = _workareasModelArray.workarea.Where(f => f.workareaname == area.workareaname).FirstOrDefault(); + var file = WorkareaNameSource.Where(f => f.workareaname == area.workareaname).FirstOrDefault(); if (file == null) { - _workareasModelArray.workarea.Add(area); - WorkareaNameSource.Add(area.workareaname); - WareaSelectedIndex= WorkareaNameSource.Count()-1; + // _workareasModelArray.workarea.Add(area); + WorkareaNameSource.Add(area); + WareaSelectedIndex = WorkareaNameSource.Count()-1; } else { @@ -149,17 +153,17 @@ namespace StartServerWPF.Modules.Main.ViewModels try { string jsonStr = File.ReadAllText(fbd.FileName); - _workareasModelArray = JsonConvert.DeserializeObject(jsonStr); - WorkareaNameSource = new ObservableCollection(); - _workareasModelArray.workarea.Select(n => n.workareaname).ToList().ForEach(a => WorkareaNameSource.Add(a)); - WareaSelectedIndex = _workareasModelArray.selectIndex; - var item = _workareasModelArray.workarea[_workareasModelArray.selectIndex]; + var _workareasArray = JsonConvert.DeserializeObject(jsonStr); + WorkareaNameSource = new ObservableCollection(); + _workareasArray.workarea.ForEach(a => WorkareaNameSource.Add(a)); + WareaSelectedIndex = _workareasArray.selectIndex; + + var item = _workareasArray.workarea[_workareasArray.selectIndex]; string areaPath = Path.Combine(item.filepath, Path.GetFileName(item.filepath) + ".json"); - var currentWorkarea = new WorkareaModel(); if (File.Exists(areaPath)) { string workarea = File.ReadAllText(areaPath); - currentWorkarea = JsonConvert.DeserializeObject(workarea); + var currentWorkarea = JsonConvert.DeserializeObject(workarea); if (currentWorkarea.StationConfig.Stations == null) { currentWorkarea.StationConfig.Stations = currentWorkarea.CreateStationFromCSV(Path.Combine(JsonParser.workareaPath, currentWorkarea.apmModel.station), currentWorkarea.StationConfig.Location) @@ -174,7 +178,6 @@ namespace StartServerWPF.Modules.Main.ViewModels } catch (Exception ex) { - MessageBox.Show("导入工区失败," + ex); } } @@ -185,14 +188,12 @@ namespace StartServerWPF.Modules.Main.ViewModels if (MessageBox.Show($"删除{WareaModel.workareaname}工区所有文件?", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Exclamation) == MessageBoxResult.OK) { - if (Directory.Exists(WareaModel.savepath)) + var area= WorkareaNameSource.Where(a => a.workareaname == WareaModel.workareaname).FirstOrDefault(); + if (area != null) { - Directory.Delete(WareaModel.savepath, true); + WorkareaNameSource.Remove(area); + WareaSelectedIndex = 0; } - var area= _workareasModelArray.workarea.Where(a => a.workareaname == WareaModel.workareaname).FirstOrDefault(); - WorkareaNameSource.Remove(WareaModel.workareaname); - _workareasModelArray.workarea.Remove(area); - WareaSelectedIndex =0; } }); @@ -255,7 +256,12 @@ namespace StartServerWPF.Modules.Main.ViewModels get => new DelegateCommand(() => { // 数据校验(关键字段不能为空、年龄做数字区间的校验、做UserName的唯一检查(自定义特性检查) - if (string.IsNullOrEmpty(WareaModel.savepath) + //if(WareaSelectedIndex == -1) + //{ + // MessageBox.Show("工区名称不能为空", "提示", MessageBoxButton.OK); + // return; + //} + if (string.IsNullOrEmpty(WareaModel.savepath) || string.IsNullOrEmpty(WareaModel.apmModel.station) || string.IsNullOrEmpty(WareaModel.apmModel.ttime[0].ttime2d)) { @@ -267,6 +273,33 @@ namespace StartServerWPF.Modules.Main.ViewModels { //1 Workarea配置更新,选择的索引 _workareasModelArray.selectIndex = WareaSelectedIndex; + + int count = _workareasModelArray.workarea.Count; + int wIndex = count-1; + while (wIndex < 0) + { + //清除目录保存文件 + var item = _workareasModelArray.workarea[wIndex]; + var model = WorkareaNameSource.Where(p => p.workareaname == item.workareaname).FirstOrDefault(); + if (model == null) + { + _workareasModelArray.workarea.Remove(item); + if (Directory.Exists(item.filepath)) + { + Directory.Delete(item.filepath, true); + } + } + wIndex--; + } + + if(_workareasModelArray.workarea.Count<= 0) + { + //没有数据直接删除文件; + WareaModel.savepath = string.Empty; + File.Delete(Path.Combine(JsonParser.workareaPath, "Workareas.json")); + return; + } + _workareasModelArray.workarea[WareaSelectedIndex].filepath = WareaModel.savepath; JsonParser.WriteSystemConfigFile(Path.Combine(JsonParser.workareaPath, "Workareas.json"), _workareasModelArray); _wareaModel.apmModel.channels = new List { @@ -318,7 +351,7 @@ namespace StartServerWPF.Modules.Main.ViewModels ApmsModel apms = curWorkarea.apmModel; apms.station = Path.GetFullPath(Path.Combine(curWorkarea.savepath, curWorkarea.apmModel.station)).Replace("\\", "/"); apms.ttime[0].ttime2d = Path.GetFullPath(Path.Combine(curWorkarea.savepath, curWorkarea.apmModel.ttime[0].ttime2d)).Replace("\\", "/"); - apms.savepath = Path.Combine(curWorkarea.savepath, curWorkarea.apmsavepath); + apms.savepath = Path.Combine(curWorkarea.savepath, curWorkarea.apmsavepath).Replace("\\", "/"); ; apms.push2wx = curWorkarea.apmpush2wx ? "YES" : "NO"; JsonParser.WriteSystemConfigFile(Path.Combine(_systemConfig.proApms.ProPath, "apms.json"), apms); } diff --git a/StartServerWPF.Modules.Main/Views/DataProcessView.xaml b/StartServerWPF.Modules.Main/Views/DataProcessView.xaml index f26c5f3..c34bbe3 100644 --- a/StartServerWPF.Modules.Main/Views/DataProcessView.xaml +++ b/StartServerWPF.Modules.Main/Views/DataProcessView.xaml @@ -49,11 +49,11 @@ - +