You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

357 lines
13 KiB

using CK.SCP.Controller;
using CK.SCP.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
namespace UniApiWpf
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
private DispatcherTimer PutTimer;
private DispatcherTimer GetTimer;
private readonly BackgroundWorker _bgwGet = new BackgroundWorker();
private readonly BackgroundWorker _bgwPut = new BackgroundWorker();
//private TimerStateEnum TimeState = TimerStateEnum.Off;
private int _refreshPutInterval = 30;
private int _refreshGetInterval = 30;
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
InitParam();
}
public LogModel SelecteGetLog { get; set; }
public LogModel SelectePutLog { get; set; }
private List<LogModel> getLogItemsSource = new List<LogModel>();
public List<LogModel> GetLogItemsSource
{
get { return getLogItemsSource; }
set
{
getLogItemsSource = value;
OnPropertyChanged("GetLogItemsSource");
}
}
private static List<LogModel> putLogItemsSource = new List<LogModel>();
public List<LogModel> PutLogItemsSource
{
get { return putLogItemsSource; }
set
{
putLogItemsSource = value;
OnPropertyChanged("PutLogItemsSource");
}
}
void InitParam()
{
List<string> list = new List<string>() { "TES_CODE", "TES_DOMAIN" };
//var liststr = JsonHelper.ListToJson<string>(list);
//GlobalVar.ExchangeCenterService.Timeout = GlobalConfig.Setting.ServiceTimeout;//20分钟超时。
//var resultStr = GlobalVar.ExchangeCenterService.GetSessionId(GlobalConfig.Setting.DataCenterSystemName, EncryptHelper.Encrypt(GlobalConfig.Setting.DefaultPassword), NetHelper.GetIpAddress());
//_refreshPutInterval = GlobalConfig.Setting.RefreshInterval;
//_refreshGetInterval = GlobalConfig.Setting.RefreshInterval;
//GlobalConfig.Setting.SessionId = JsonHelper.JsonToEntity<ServiceResult>(resultStr).Data;
_bgwGet.DoWork += BgwGetDoWork;
_bgwGet.RunWorkerCompleted += BgwGetRunWorkerCompleted;
_bgwPut.DoWork += BgwPutDoWork;
_bgwPut.RunWorkerCompleted += _bgwPut_RunWorkerCompleted;
var putlogData = new List<LogModel>() { new LogModel() { LogTime = DateTime.Now.ToString(), LogMessage = "推送载入" } };
CreateLogDataList(putlogData, WriteLogEnum.Put);
var getlogData = new List<LogModel>() { new LogModel() { LogTime = DateTime.Now.ToString(), LogMessage = "获取载入" } };
CreateLogDataList(getlogData, WriteLogEnum.Get);
}
private void _bgwPut_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
private void BtnPutStart_Click(object sender, RoutedEventArgs e)
{
PutTimer = new DispatcherTimer();
PutTimer.Tick += new EventHandler(PutTimer_Tick);
PutTimer.Interval = TimeSpan.FromSeconds(1); //设置刷新的间隔时间
PutTimer.Start();
BtnPutStart.IsEnabled = false;
BtnPutStop.IsEnabled = true;
}
private void PutTimer_Tick(object sender, EventArgs e)
{
if (_refreshPutInterval > 0)
{
_refreshPutInterval--;
}
else
{
_refreshPutInterval = int.Parse(ConfigurationSettings.AppSettings["WriteTimeSpan"])*60;
PutData();
}
BtnPutStart.Content = $"开始按钮:{_refreshPutInterval}";
}
private void GetTimer_Tick(object sender, EventArgs e)
{
if (_refreshGetInterval > 0)
{
_refreshGetInterval--;
}
else
{
_refreshGetInterval = int.Parse(ConfigurationSettings.AppSettings["ReadTimeSpan"]) * 60;
GetData();
}
BtnGetStart.Content = $"开始按钮:{_refreshGetInterval}";
}
private void BtnPutStop_Click(object sender, RoutedEventArgs e)
{
BtnPutStart.IsEnabled = true;
BtnPutStop.IsEnabled = false;
PutTimer.Stop();
}
private void BtnGetStart_Click(object sender, RoutedEventArgs e)
{
GetTimer = new DispatcherTimer();
GetTimer.Tick += new EventHandler(GetTimer_Tick);
GetTimer.Interval = TimeSpan.FromSeconds(1); //设置刷新的间隔时间
GetTimer.Start();
BtnGetStart.IsEnabled = false;
BtnGetStop.IsEnabled = true;
}
private void BtnGetStop_Click(object sender, RoutedEventArgs e)
{
BtnGetStart.IsEnabled = true;
BtnGetStop.IsEnabled = false;
GetTimer.Stop();
}
/// <summary>
/// 推送数据中心变更任务,同步到转换中心
/// </summary>
private void BtnPutManual_Click(object sender, RoutedEventArgs e)
{
var logData = new List<LogModel>() {
new LogModel() { LogTime= DateTime.Now.ToString(),LogMessage= "推送交换中心变更任务手动执行" }
};
PutData();
}
/// <summary>
/// 读取转换中心变更任务,同步给数据中心
/// </summary>
private void BtnGetManual_Click(object sender, RoutedEventArgs e)
{
var logData = new List<LogModel>() {
new LogModel() { LogTime= DateTime.Now.ToString(),LogMessage= "读取交换中心变更任务手动执行" }
};
GetData();
}
private void BgwPutDoWork(object sender, DoWorkEventArgs e)
{
TimeSpan nowDt = DateTime.Now.TimeOfDay;
TimeSpan workstartDT = DateTime.Parse("1:00").TimeOfDay;
TimeSpan workendDT = DateTime.Parse("2:00").TimeOfDay;
if (nowDt < workstartDT || nowDt > workendDT)
{
SCP_DC_UNI_CONTROLLER.WriteService((rs) =>
{
if (rs.State == ReturnStatus.Succeed)
{
CreateLogDataList(rs.Result, WriteLogEnum.Put);
}
else
{
CreateLogDataList(rs.Result, WriteLogEnum.Put);
}
});
}
}
private void BgwGetRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// Logger.Write(EnumApiType.Get, EnumLogType.End, $"{GetType().Name}");
}
private void BgwGetDoWork(object sender, DoWorkEventArgs e)
{
try
{
TimeSpan nowDt = DateTime.Now.TimeOfDay;
TimeSpan workstartDT = DateTime.Parse("1:00").TimeOfDay;
TimeSpan workendDT = DateTime.Parse("2:00").TimeOfDay;
if (nowDt < workstartDT || nowDt > workendDT)
{
#region
SCP_DC_UNI_CONTROLLER.ReadService((rs) =>
{
List<LogModel> _list = new List<LogModel>();
if (rs.State == ReturnStatus.Succeed)
{
rs.MessageList.ForEach(p =>
{
_list.Add(new LogModel() { LogMessage = string.Format("{0}任务:{1}", p, rs.Message.ToString()), LogTime = DateTime.Now.ToShortDateString(), TableName = "", TaskId = rs.Message.ToString(), });
});
CreateLogDataList(_list, WriteLogEnum.Get);
}
else
{
rs.ErrorList.ForEach(p =>
{
_list.Add(new LogModel() { LogMessage = string.Format("{0}任务:{1}", p.Message, rs.Message.ToString()), LogTime = DateTime.Now.ToShortDateString(), TableName = "", TaskId = rs.Message.ToString(), });
});
CreateLogDataList(_list, WriteLogEnum.Get);
}
});
SCP_DC_UNI_CONTROLLER.BaseReadService((rs) =>
{
List<LogModel> _list = new List<LogModel>();
if (rs.State == ReturnStatus.Succeed)
{
rs.MessageList.ForEach(p => {
_list.Add(new LogModel() { LogMessage = string.Format("{0}任务:{1}", p, rs.Message.ToString()), LogTime = DateTime.Now.ToShortDateString(), TableName = "", TaskId = rs.Message.ToString(), });
});
CreateLogDataList(_list, WriteLogEnum.Get);
}
else
{
rs.ErrorList.ForEach(p => {
_list.Add(new LogModel() { LogMessage = string.Format("{0}任务:{1}", p.Message, rs.Message.ToString()), LogTime = DateTime.Now.ToShortDateString(), TableName = "", TaskId = rs.Message.ToString(), });
});
CreateLogDataList(_list, WriteLogEnum.Get);
}
});
#endregion
}
}
catch (Exception ex)
{
//Logger.WriteEx(EnumApiType.Get, $"{GetType().Name}", ex);
}
}
public void GetData()
{
try
{
if (_bgwGet.IsBusy) return;
//Logger.Write(EnumApiType.Get, EnumLogType.Begin, $"{GetType().Name}");
_bgwGet.RunWorkerAsync();
}
catch (Exception ex)
{
//Logger.WriteEx(EnumApiType.Get, $"{GetType().Name}", ex);
}
}
/// <summary>
/// 将数据中心表变更任务,获取后同步给转换中心
/// </summary>
public void PutData()
{
try
{
if (_bgwPut.IsBusy) return;
//Logger.Write(EnumApiType.Put, EnumLogType.Begin, $"{GetType().Name}");
_bgwPut.RunWorkerAsync();
}
catch (Exception ex)
{
//Logger.WriteEx(EnumApiType.Put, $"{GetType().Name}", ex);
}
}
public void CreateLogDataList(List<LogModel> list, WriteLogEnum writeLogEnum)
{
List<LogModel> _listTemp = new List<LogModel>();
if (writeLogEnum == WriteLogEnum.Put)
{
if (getLogItemsSource.Count >500)
{
getLogItemsSource = new List<LogModel>();
}
getLogItemsSource.AddRange(list);
_listTemp.AddRange(getLogItemsSource);
this.Dispatcher.BeginInvoke(new Action(() => {
PutDataGrid.ItemsSource =_listTemp;
}));
//GetLogItemsSource = _listTemp;
}
else
{
if (putLogItemsSource.Count > 500)
{
putLogItemsSource = new List<LogModel>();
}
putLogItemsSource.AddRange(list);
_listTemp.AddRange(putLogItemsSource);
this.Dispatcher.BeginInvoke(new Action(() => {
GetDataGrid.ItemsSource = _listTemp;
}));
}
}
private void Userdatagrid_OnMouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public enum WriteLogEnum
{
/// <summary>
/// 读取转换中心变更任务,同步给数据中心
/// </summary>
Get,
/// <summary>
/// 推送数据中心变更任务,同步到转换中心
/// </summary>
Put,
}
public enum TimerStateEnum
{
Open,
Off,
}
}
}