添加项目文件。
This commit is contained in:
772
WPFWCSDemo/ViewModels/DbViews/TaskDbViewModel.cs
Normal file
772
WPFWCSDemo/ViewModels/DbViews/TaskDbViewModel.cs
Normal file
@@ -0,0 +1,772 @@
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Threading;
|
||||
using WPFWCSDemo.Common;
|
||||
using WPFWCSDemo.Data;
|
||||
using WPFWCSDemo.Models.Devices.CircleRGVStation;
|
||||
using WPFWCSDemo.Models.Tables;
|
||||
using WPFWCSDemo.StateCode;
|
||||
using WPFWCSDemo.Utilities;
|
||||
using WPFWCSDemo.Utilities.Table;
|
||||
using WPFWCSDemo.Views.CustomComponent;
|
||||
|
||||
namespace WPFWCSDemo.ViewModels.DbViews
|
||||
{
|
||||
public partial class TaskDbViewModel : ObservableObject
|
||||
{
|
||||
/// <summary>
|
||||
/// 用于实时更新任务表的定时器
|
||||
/// </summary>
|
||||
private DispatcherTimer dispatcherTimer;
|
||||
|
||||
public TaskDbViewModel()
|
||||
{
|
||||
TaskView = new ObservableCollection<TaskView>();
|
||||
|
||||
ColumnList = new List<string>();
|
||||
|
||||
col = new Dictionary<string, string>();
|
||||
|
||||
SourceLocations = new List<int>();
|
||||
|
||||
TargetLocations = new List<int>();
|
||||
|
||||
RGVNumbers = new List<int>();
|
||||
|
||||
LoadTaskGrid();
|
||||
|
||||
LoadColumns();
|
||||
|
||||
LocationInitialize();
|
||||
|
||||
//Task.Run(() => LoadTaskGridAsync());
|
||||
|
||||
b = true;
|
||||
|
||||
// 设置定时器属性
|
||||
dispatcherTimer = new DispatcherTimer();
|
||||
dispatcherTimer.Interval = TimeSpan.FromSeconds(5); // 设置时间间隔
|
||||
dispatcherTimer.Tick += DispatcherTimer_Tick; // 添加事件处理程序
|
||||
dispatcherTimer.Start(); // 启动计时器
|
||||
}
|
||||
|
||||
|
||||
//调度任务表刷新参数
|
||||
private void DispatcherTimer_Tick(object? sender, EventArgs e)
|
||||
{
|
||||
if (b)
|
||||
{
|
||||
LoadTaskGrid();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 是否更新任务表的标志
|
||||
/// </summary>
|
||||
bool b;
|
||||
|
||||
/// <summary>
|
||||
/// 调度任务字段---原数据/视图数据
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
ObservableCollection<TaskView> _taskView;
|
||||
|
||||
/// <summary>
|
||||
/// 搜索关键字
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string? _keywords;
|
||||
|
||||
/// <summary>
|
||||
/// 筛选列表集合
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
List<string> _columnList;
|
||||
|
||||
/// <summary>
|
||||
/// 筛选列表集合对应的查询字段
|
||||
/// </summary>
|
||||
Dictionary<string, string> col;
|
||||
|
||||
/// <summary>
|
||||
/// 筛选列表文本
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string? _columnName;
|
||||
|
||||
/// <summary>
|
||||
/// 筛选列表文本选择项
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string? _columnNameSelected;
|
||||
|
||||
/// <summary>
|
||||
/// 筛选列表选项
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
int _taskTypeSelectedIndex;
|
||||
|
||||
/// <summary>
|
||||
/// 右侧对话框弹出属性
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
bool _isRightDrawerOpen;
|
||||
|
||||
/// <summary>
|
||||
/// 顶部对话框弹出属性
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
bool _isTopDrawerOpen;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 站点初始化集合
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
int _rowCount;
|
||||
[ObservableProperty]
|
||||
int _columnCount;
|
||||
[ObservableProperty]
|
||||
int _floorCount;
|
||||
[ObservableProperty]
|
||||
List<int> _rows;
|
||||
[ObservableProperty]
|
||||
List<int> _columns;
|
||||
[ObservableProperty]
|
||||
List<int> _floors;
|
||||
|
||||
/// <summary>
|
||||
/// 取放货站点集合
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
List<int> _sourceLocations;
|
||||
[ObservableProperty]
|
||||
List<int> _targetLocations;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 测试下发界面任务类型
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
int _testingTaskTypeIndex;
|
||||
/// <summary>
|
||||
/// 任务类型
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
int _selectedTaskTypeIndex;
|
||||
/// <summary>
|
||||
/// 输入托盘号
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string _inputTaskId;
|
||||
/// <summary>
|
||||
/// 取货站点
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
int _selectedSourceLocation;
|
||||
/// <summary>
|
||||
/// 放货站点
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
int _selectedTargetLocation;
|
||||
|
||||
/// <summary>
|
||||
/// 小车编号集合
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
List<int> _rGVNumbers;
|
||||
/// <summary>
|
||||
/// 选中小车编号
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
int _selectedRGVNumber;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 右侧对话框弹出命令
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
private void NewTask()
|
||||
{
|
||||
IsRightDrawerOpen = true;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 顶部对话框弹出命令---堆垛机测试
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
private void StackerTesting()
|
||||
{
|
||||
IsTopDrawerOpen = true;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 更改任务类型选项直接更新表
|
||||
/// </summary>
|
||||
//[RelayCommand]
|
||||
void TaskTypeSelectItemChanged()
|
||||
{
|
||||
//------------------------------------------------------------------视图-----------------------------------------------------------------
|
||||
//------------------------------------------------------------------视图-----------------------------------------------------------------
|
||||
//------------------------------------------------------------------视图-----------------------------------------------------------------
|
||||
|
||||
|
||||
DataTable? dtView;
|
||||
if (TaskTypeSelectedIndex == 1)
|
||||
{
|
||||
dtView = SqlHelper.ExecuteTable("SELECT * FROM TASK_VIEW WHERE 任务类型 LIKE @TaskType ORDER BY 生成时间 DESC",
|
||||
new SqlParameter("@TaskType", TaskTypeSelectedIndex + "%"));
|
||||
}
|
||||
else if (TaskTypeSelectedIndex == 2)
|
||||
{
|
||||
dtView = SqlHelper.ExecuteTable("SELECT * FROM TASK_VIEW WHERE 任务类型<>@TaskType ORDER BY 生成时间 DESC",
|
||||
new SqlParameter("@TaskType", 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
dtView = SqlHelper.ExecuteTable("SELECT * FROM TASK_VIEW ORDER BY 生成时间 DESC");
|
||||
}
|
||||
|
||||
//获取查询语句对应的数据表DataTable
|
||||
|
||||
var dataViews = dtView.Rows;
|
||||
|
||||
TaskView.Clear();
|
||||
|
||||
//遍历表中每行数据并初始化值
|
||||
foreach (DataRow data in dataViews)
|
||||
{
|
||||
TaskView taskView = new TaskView();
|
||||
taskView.JobId = data["环穿编号"].ToString();
|
||||
taskView.TaskId = data["任务号"].ToString();
|
||||
//taskView.PalletId = data["PalletId"].ToString();
|
||||
taskView.SourceLocation = data["源站点"].ToString();
|
||||
taskView.TargetLocation = data["目标站点"].ToString();
|
||||
taskView.TaskType = data["任务类型"].ToString();
|
||||
taskView.TaskState = data["任务状态"].ToString();
|
||||
taskView.ScheduleState = data["调度状态"].ToString();
|
||||
taskView.CreateTime = Convert.ToDateTime(data["生成时间"]);
|
||||
taskView.ScheduleTime = Convert.ToDateTime(data["调度时间"]);
|
||||
taskView.ReportState = data["取货状态"].ToString();
|
||||
TaskView.Add(taskView);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询任务
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
public void Query()
|
||||
{
|
||||
//关键词不为空且列名不为空
|
||||
if (!string.IsNullOrEmpty(Keywords) && !string.IsNullOrEmpty(ColumnName))
|
||||
{
|
||||
using var context = new AppDbContext();
|
||||
|
||||
var tasks = context.Set<TaskView>()
|
||||
.FromSqlInterpolated($"SELECT * FROM TASK_VIEW WHERE {col[ColumnName]} LIKE %{Keywords}% ORDER BY 生成时间 DESC")
|
||||
.ToList();
|
||||
|
||||
TaskView.Clear();
|
||||
|
||||
//遍历表中每行数据并初始化值
|
||||
foreach (TaskView task in tasks)
|
||||
{
|
||||
TaskView.Add(task);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadTaskGrid();
|
||||
}
|
||||
|
||||
b = false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 重置筛选项
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
void Clear()
|
||||
{
|
||||
Keywords = string.Empty;
|
||||
ColumnName = string.Empty;
|
||||
|
||||
LoadTaskGrid();
|
||||
|
||||
b = true;
|
||||
}
|
||||
|
||||
#region 添加新任务相关
|
||||
|
||||
|
||||
// 下拉框获取值属性 (源/目标排、列、层)
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 点击新建任务按钮命令
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
public void AddTask()
|
||||
{
|
||||
InputCheck();
|
||||
//MessageBox.Show(SelectedTaskType);
|
||||
//获取任务参数值
|
||||
TaskRT taskRT = new TaskRT
|
||||
{
|
||||
TaskId = SqlHelper.GetTaskIdByManualGeneration().ToString(),//使用int类型初始值不是空 指定9起始的任务号为人工操作标识
|
||||
SourceLocation = SelectedSourceLocation.ToString(),
|
||||
TargetLocation = SelectedTargetLocation.ToString(),
|
||||
ScheduleState = ScheduleStateCode.Trans_CircleRGV_Ready,
|
||||
TaskState = TaskStateCode.Task_Running,
|
||||
CreateTime = DateTime.Now,
|
||||
//ReportState = 0
|
||||
|
||||
};
|
||||
|
||||
//任务校验和添加新任务(区分任务类型)
|
||||
if (SelectedTaskTypeIndex == 0)
|
||||
{
|
||||
taskRT.TaskType = 10;
|
||||
}
|
||||
else if (SelectedTaskTypeIndex == 1)
|
||||
{
|
||||
taskRT.TaskType = 11;
|
||||
}
|
||||
else if (SelectedTaskTypeIndex == 2 || SelectedTaskTypeIndex == 3)
|
||||
{
|
||||
taskRT.TaskType = SelectedTaskTypeIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("任务类型错误!");
|
||||
return;
|
||||
}
|
||||
|
||||
Insert(taskRT, taskRT.TaskType);
|
||||
|
||||
SqlHelper.NewEventLog($"手动下发调度任务:任务号:{taskRT.TaskId}", "USER");
|
||||
|
||||
//重载任务表
|
||||
LoadTaskGrid();
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 加载下拉框内容
|
||||
/// </summary>
|
||||
public void LoadColumns()
|
||||
{
|
||||
ColumnList.Clear();
|
||||
//ColumnList.Add("作业号");
|
||||
ColumnList.Add("任务号");
|
||||
//ColumnList.Add("托盘号");
|
||||
ColumnList.Add("任务类型");
|
||||
ColumnList.Add("源站点");
|
||||
ColumnList.Add("目标站点");
|
||||
ColumnList.Add("任务状态");
|
||||
//ColumnList.Add("生成时间");
|
||||
|
||||
col.Clear();
|
||||
//col.Add("作业号", "JobId");
|
||||
col.Add("任务号", "任务号");
|
||||
//col.Add("托盘号", "PalletId");
|
||||
col.Add("任务类型", "任务类型");
|
||||
col.Add("源站点", "源站点");
|
||||
col.Add("目标站点", "目标站点");
|
||||
col.Add("任务状态", "任务状态");
|
||||
//col.Add("生成时间", "CreateTime");
|
||||
|
||||
RGVNumbers.Clear();
|
||||
for (int i = 0; i < RGVStation.RGVCount; i++)
|
||||
{
|
||||
RGVNumbers.Add(i);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 加载表格内容
|
||||
/// </summary>
|
||||
public void LoadTaskGrid()
|
||||
{
|
||||
//-------------------------------------------------------------------------视图----------------------------------------------------------------------
|
||||
//-------------------------------------------------------------------------视图----------------------------------------------------------------------
|
||||
//-------------------------------------------------------------------------视图----------------------------------------------------------------------
|
||||
|
||||
using var context = new AppDbContext();
|
||||
|
||||
var tasks = context.Set<TaskView>()
|
||||
.OrderByDescending(t => t.CreateTime)
|
||||
.ToList();
|
||||
|
||||
TaskView.Clear();
|
||||
|
||||
//遍历表中每行数据并初始化值
|
||||
foreach (TaskView task in tasks)
|
||||
{
|
||||
TaskView.Add(task);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 向调度表中插入任务
|
||||
/// </summary>
|
||||
/// <param name="TaskRT">TaskRT类的实例化对象</param>
|
||||
/// <param name="taskType">任务类型</param>
|
||||
/// <returns></returns>
|
||||
public void Insert(TaskRT taskRT, int taskType)
|
||||
{
|
||||
try
|
||||
{
|
||||
using var context = new AppDbContext();
|
||||
|
||||
context.Set<TaskRT>()
|
||||
.Add(taskRT);
|
||||
|
||||
int result = context.SaveChanges();
|
||||
|
||||
if (result == 1) Log.Warning($"【手动添加调度任务】任务号:{taskRT.TaskId},{JsonConvert.SerializeObject(taskRT)}");
|
||||
|
||||
}
|
||||
catch (DbUpdateException e)
|
||||
{
|
||||
MessageBox.Show($"发生了预期之外的错误:{e.Message}(错误代码:TVM000002)");
|
||||
}
|
||||
|
||||
LoadTaskGrid();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 站点信息初始化
|
||||
/// </summary>
|
||||
void LocationInitialize()
|
||||
{
|
||||
//Rows = new List<int>();
|
||||
//Columns = new List<int>();
|
||||
//Floors = new List<int>();
|
||||
|
||||
//RowCount = int.Parse(ConfigurationManager.AppSettings["Row"]);
|
||||
//for (int i = 1; i <= RowCount; i++)
|
||||
//{
|
||||
// Rows.Add(i);
|
||||
//}
|
||||
//ColumnCount = int.Parse(ConfigurationManager.AppSettings["Column"]);
|
||||
//for (int i = 1; i <= ColumnCount; i++)
|
||||
//{
|
||||
// Columns.Add(i);
|
||||
//}
|
||||
//FloorCount = int.Parse(ConfigurationManager.AppSettings["Floor"]);
|
||||
//for (int i = 1; i <= FloorCount; i++)
|
||||
//{
|
||||
// Floors.Add(i);
|
||||
//}
|
||||
|
||||
SourceLocations.Clear();
|
||||
|
||||
foreach (var item in CircleRGVsViewModel.route)
|
||||
{
|
||||
SourceLocations.Add(item.Key);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取货站点对应放货站点
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
void SourceToTarget()
|
||||
{
|
||||
try
|
||||
{
|
||||
SelectedTargetLocation = CircleRGVsViewModel.route[SelectedSourceLocation];
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 下发测试任务
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
void SendRGVTest()
|
||||
{
|
||||
if (MessageBox.Show("此操作会向环穿地面站PLC直接写入命令!是否继续?", "", MessageBoxButton.YesNo) != MessageBoxResult.Yes)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
CircleRGVStationCommand circleRGVStationCommand = new CircleRGVStationCommand()
|
||||
{
|
||||
Write_DeviceNumber = SelectedRGVNumber,
|
||||
Write_TaskNumber = SqlHelper.GetTaskIdByManualGeneration(),
|
||||
Write_TaskType = TestingTaskTypeIndex + 1,
|
||||
Write_SourceLocation = SelectedSourceLocation,
|
||||
Write_TargetLocation = SelectedTargetLocation,
|
||||
};
|
||||
|
||||
CircleRGVsViewModel.SendRGVStationCommand(circleRGVStationCommand);
|
||||
|
||||
Log.Information($"【环穿下发任务测试】直接向地面站下发任务:{JsonConvert.SerializeObject(circleRGVStationCommand)}");
|
||||
|
||||
SqlHelper.NewEventLog($"向地面站PLC直接写入测试任务:任务号:{circleRGVStationCommand.Write_TaskNumber}", "USER");
|
||||
|
||||
IsTopDrawerOpen = false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 清空选择项
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
void TestClear()
|
||||
{
|
||||
SelectedRGVNumber = 0;
|
||||
SelectedSourceLocation = 0;
|
||||
SelectedTargetLocation = 0;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 新任务输入校验
|
||||
/// </summary>
|
||||
public void InputCheck()
|
||||
{
|
||||
//跨巷道使用
|
||||
if (string.IsNullOrEmpty(SelectedSourceLocation.ToString().Trim()))
|
||||
{
|
||||
MessageBox.Show("请选择取货站点!");
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrEmpty(SelectedTargetLocation.ToString().Trim()))
|
||||
{
|
||||
MessageBox.Show("请选择目标站点!");
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Action<string> action;
|
||||
|
||||
//[RelayCommand]
|
||||
void TaskFinishHandler()
|
||||
{
|
||||
InputDialog inputDialog = new InputDialog();
|
||||
inputDialog.ShowDialog();
|
||||
|
||||
action = TaskFinish;
|
||||
}
|
||||
|
||||
void TaskCancelHandler()
|
||||
{
|
||||
InputDialog inputDialog = new InputDialog();
|
||||
inputDialog.ShowDialog();
|
||||
|
||||
action = TaskDelete;
|
||||
}
|
||||
|
||||
void UpdateTaskStateToReadyHandler()
|
||||
{
|
||||
InputDialog inputDialog = new InputDialog();
|
||||
inputDialog.ShowDialog();
|
||||
|
||||
action = UpdateTaskStateToReady;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 手动完成任务
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
void TaskFinish(string taskId)
|
||||
{
|
||||
using var context = new AppDbContext();
|
||||
|
||||
var task = context.Set<TaskRT>()
|
||||
.Where(t => t.TaskId == taskId)
|
||||
.FirstOrDefault();
|
||||
|
||||
if (task == null)
|
||||
{
|
||||
MessageBox.Show("获取任务号错误!自动移除该任务");
|
||||
|
||||
context.Database
|
||||
.ExecuteSqlInterpolated($"DELETE FROM TASK WHERE TASKID={taskId}");
|
||||
|
||||
context.SaveChanges();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
string taskType = "";
|
||||
|
||||
switch (task.TaskType)
|
||||
{
|
||||
case 10:
|
||||
taskType = "实垛";
|
||||
break;
|
||||
case 11:
|
||||
taskType = "空托";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (MessageBox.Show($"确认人工完成任务号:{taskId}的任务?\r\n(错误的操作时机可能会导致生成空任务)", "警告", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
|
||||
{
|
||||
task.TaskState = TaskStateCode.Task_Finish_Manual;
|
||||
|
||||
if (context.SaveChanges() == 1)
|
||||
{
|
||||
Log.Information($"【人工操作】手动完成任务,任务号:{taskId}");
|
||||
|
||||
SqlHelper.NewEventLog($"人工完成{taskType}任务:{taskId}", "USER");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
LoadTaskGrid();
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 手动删除(取消)任务
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
void TaskDelete(string taskId)
|
||||
{
|
||||
using var context = new AppDbContext();
|
||||
|
||||
var task = context.Set<TaskRT>()
|
||||
.Where(t => t.TaskId == taskId)
|
||||
.FirstOrDefault();
|
||||
|
||||
if (task == null)
|
||||
{
|
||||
MessageBox.Show("获取任务号错误!自动移除该任务");
|
||||
|
||||
context.Database
|
||||
.ExecuteSqlInterpolated($"DELETE FROM TASK WHERE TASKID={taskId}");
|
||||
|
||||
context.SaveChanges();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
string taskType = "";
|
||||
|
||||
switch (task.TaskType)
|
||||
{
|
||||
case 10:
|
||||
taskType = "实垛";
|
||||
break;
|
||||
case 11:
|
||||
taskType = "空托";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (MessageBox.Show($"确认人工取消任务号:{taskId}的任务?\r\n(错误的操作时机可能会导致生成空任务)", "警告", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
|
||||
{
|
||||
task.TaskState = TaskStateCode.Task_Finish_Cancel;
|
||||
|
||||
if (context.SaveChanges() == 1)
|
||||
{
|
||||
Log.Information($"【人工操作】手动取消任务,任务号:{taskId}");
|
||||
|
||||
SqlHelper.NewEventLog($"人工取消{taskType}任务:{taskId}", "USER");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
LoadTaskGrid();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 当向环穿下发任务失败时,可以选择重新下发
|
||||
/// 只能在调度状态为【环穿-待执行】时可用
|
||||
/// </summary>
|
||||
/// <param name="taskId"></param>
|
||||
[RelayCommand]
|
||||
void UpdateTaskStateToReady(string taskId)
|
||||
{
|
||||
using var context = new AppDbContext();
|
||||
|
||||
var task = context.Set<TaskRT>()
|
||||
.Where(t => t.TaskId == taskId && t.ScheduleState == ScheduleStateCode.Trans_CircleRGV_Ready)
|
||||
.FirstOrDefault();
|
||||
|
||||
if (task == null)
|
||||
{
|
||||
MessageBox.Show("设备运行时的任务无法重下!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (MessageBox.Show($"确认将任务:{taskId}的任务状态更改为【待执行】?\r\n此操作会重新下发当前任务(仅在环穿调度状态为【环穿-待执行】时生效)", "警告", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
|
||||
{
|
||||
task.TaskState = TaskStateCode.Task_Ready;
|
||||
|
||||
if (context.SaveChanges() == 1)
|
||||
{
|
||||
Log.Information($"【人工操作】重新下发任务,任务号:{taskId}");
|
||||
|
||||
SqlHelper.NewEventLog($"人工重下任务:{taskId}", "USER");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
LoadTaskGrid();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
641
WPFWCSDemo/ViewModels/DbViews/TaskHistoryDbViewModel.cs
Normal file
641
WPFWCSDemo/ViewModels/DbViews/TaskHistoryDbViewModel.cs
Normal file
@@ -0,0 +1,641 @@
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Internal;
|
||||
using Serilog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using WPFWCSDemo.Models.Tables;
|
||||
using WPFWCSDemo.StateCode;
|
||||
using WPFWCSDemo.Utilities;
|
||||
|
||||
namespace WPFWCSDemo.ViewModels.DbViews
|
||||
{
|
||||
public partial class TaskHistoryDbViewModel : ObservableObject
|
||||
{
|
||||
public TaskHistoryDbViewModel()
|
||||
{
|
||||
TaskHistory = new ObservableCollection<TaskHistory>();
|
||||
Pages = new ObservableCollection<string>();
|
||||
|
||||
DateStart = DateTime.Now.AddDays(-1).ToString(TimeFormat.stringFormatDateOnly);
|
||||
TimeStart = DateTime.Now.AddDays(-1).ToString("HH:mm");
|
||||
DateEnd = DateTime.Now.ToString(TimeFormat.stringFormatDateOnly);
|
||||
TimeEnd = DateTime.Now.ToString("HH:mm");
|
||||
|
||||
LoadTaskHistory(1);
|
||||
|
||||
LoadColumnName();
|
||||
|
||||
|
||||
PageInput = 1;
|
||||
PageCurrent = 1;
|
||||
PageInfo = $"当前 {PageCurrent} 页";
|
||||
DynamicPage(PageCurrent);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// false-表示默认表数据集 true-表示查询后的表数据集
|
||||
/// </summary>
|
||||
bool b;
|
||||
|
||||
/// <summary>
|
||||
/// 历史表数据
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
ObservableCollection<TaskHistory> _taskHistory;
|
||||
|
||||
/// <summary>
|
||||
/// 起始日期
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string? _dateStart;
|
||||
/// <summary>
|
||||
/// 起始时间
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string? _timeStart;
|
||||
/// <summary>
|
||||
/// 结束日期
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string? _dateEnd;
|
||||
/// <summary>
|
||||
/// 结束时间
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string? _timeEnd;
|
||||
/// <summary>
|
||||
/// 默认值-起始日期
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string? _txtDateStart;
|
||||
/// <summary>
|
||||
/// 默认值-起始时间
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string? _txtTimeStart;
|
||||
/// <summary>
|
||||
/// 默认值-结束日期
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string? _txtDateEnd;
|
||||
/// <summary>
|
||||
/// 默认值-结束时间
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string? _txtTimeEnd;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询字段选择项集合
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
ObservableCollection<string> _columnList = new ObservableCollection<string>();
|
||||
|
||||
/// <summary>
|
||||
/// 查询字段名
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string _columnName;
|
||||
|
||||
/// <summary>
|
||||
/// 查询字段名
|
||||
/// </summary>
|
||||
Dictionary<string, string> columnDic = new Dictionary<string, string>();
|
||||
|
||||
/// <summary>
|
||||
/// 查询关键词
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string _keywords;
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 加载/重载表数据
|
||||
/// </summary>
|
||||
/// <param name="page">页数</param>
|
||||
void LoadTaskHistory(int page)
|
||||
{
|
||||
b = false;
|
||||
|
||||
TaskHistory.Clear();
|
||||
|
||||
DataTable? dtCount = SqlHelper.ExecuteTable("SELECT * FROM TASK_HISTORY_VIEW ORDER BY 结束时间 DESC");
|
||||
|
||||
DataTable? dt = SqlHelper.ExecuteTable("SELECT * FROM TASK_HISTORY_VIEW ORDER BY 结束时间 DESC OFFSET @Rows ROW FETCH NEXT 10 ROW ONLY",
|
||||
new SqlParameter("@Rows", page - 1));
|
||||
|
||||
var datas = dt.Rows;
|
||||
|
||||
//遍历表中每行数据并初始化值
|
||||
foreach (DataRow data in datas)
|
||||
{
|
||||
TaskHistory t = new TaskHistory();
|
||||
|
||||
t.JobId = data["环穿编号"].ToString();
|
||||
t.TaskId = data["任务号"].ToString();
|
||||
//t.PalletId = data["PalletId"].ToString();
|
||||
t.SourceLocation = data["源站点"].ToString();
|
||||
t.TargetLocation = data["目标站点"].ToString();
|
||||
t.TaskType = data["任务类型"].ToString();
|
||||
t.TaskState = data["任务状态"].ToString();
|
||||
t.ScheduleState = data["调度状态"].ToString();
|
||||
//t.ReportState = data["取货状态"].ToString();
|
||||
t.CreateTime = Convert.ToDateTime(data["生成时间"]);
|
||||
t.ScheduleTime = Convert.ToDateTime(data["调度时间"]);
|
||||
t.FinishTime = Convert.ToDateTime(data["结束时间"]);
|
||||
|
||||
|
||||
//数据结果
|
||||
TaskHistory.Add(t);
|
||||
|
||||
}
|
||||
|
||||
UpdatePageInfo(dtCount, page);
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 加载/重载表数据---指定数据集
|
||||
/// </summary>
|
||||
void LoadTaskHistory(DataTable dt)
|
||||
{
|
||||
TaskHistory.Clear();
|
||||
var datas = dt.Rows;
|
||||
|
||||
//遍历表中每行数据并初始化值
|
||||
foreach (DataRow data in datas)
|
||||
{
|
||||
TaskHistory t = new()
|
||||
{
|
||||
JobId = data["环穿编号"].ToString(),
|
||||
TaskId = data["任务号"].ToString(),
|
||||
//t.PalletId = data["PalletId"].ToString(),
|
||||
SourceLocation = data["源站点"].ToString(),
|
||||
TargetLocation = data["目标站点"].ToString(),
|
||||
TaskType = data["任务类型"].ToString(),
|
||||
TaskState = data["任务状态"].ToString(),
|
||||
ScheduleState = data["调度状态"].ToString(),
|
||||
//ReportState = data["取货状态"].ToString(),
|
||||
CreateTime = Convert.ToDateTime(data["生成时间"]),
|
||||
ScheduleTime = Convert.ToDateTime(data["调度时间"]),
|
||||
FinishTime = Convert.ToDateTime(data["结束时间"]),
|
||||
};
|
||||
|
||||
//数据结果
|
||||
TaskHistory.Add(t);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 加载可选的搜索字段
|
||||
/// </summary>
|
||||
void LoadColumnName()
|
||||
{
|
||||
//下拉框选项填充
|
||||
ColumnList.Clear();
|
||||
ColumnList.Add("环穿编号");
|
||||
ColumnList.Add("任务号");
|
||||
//ColumnList.Add("托盘号");
|
||||
ColumnList.Add("任务类型");
|
||||
ColumnList.Add("源站点");
|
||||
ColumnList.Add("目标站点");
|
||||
ColumnList.Add("任务状态");
|
||||
ColumnList.Add("生成时间");
|
||||
ColumnList.Add("调度时间");
|
||||
ColumnList.Add("完成时间");
|
||||
|
||||
//列名映射
|
||||
columnDic.Clear();
|
||||
columnDic.Add("环穿编号", "环穿编号");
|
||||
columnDic.Add("任务号", "任务号");
|
||||
//columnDic.Add("托盘号", "PalletId");
|
||||
columnDic.Add("任务类型", "任务类型");
|
||||
columnDic.Add("源站点", "源站点");
|
||||
columnDic.Add("目标站点", "目标站点");
|
||||
columnDic.Add("任务状态", "任务状态");
|
||||
columnDic.Add("生成时间", "生成时间");
|
||||
columnDic.Add("调度时间", "调度时间");
|
||||
columnDic.Add("完成时间", "完成时间");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询指令获取显示结果
|
||||
/// </summary>
|
||||
/// <param name="num">页数</param>
|
||||
[RelayCommand]
|
||||
void Query(string num)
|
||||
{
|
||||
b = true;
|
||||
|
||||
TaskHistory.Clear();
|
||||
|
||||
DataTable? dt;
|
||||
|
||||
DataTable? dtCount;
|
||||
|
||||
if (!DateStringFormat())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
//搜索条件为空或其他
|
||||
if (!string.IsNullOrEmpty(ColumnName) && !string.IsNullOrEmpty(Keywords.Trim()))
|
||||
{
|
||||
dtCount = SqlHelper.ExecuteTable(
|
||||
$"SELECT * FROM TASK_HISTORY_VIEW WHERE {ColumnName} LIKE @Keywords AND 结束时间>=@FinishTime1 AND 结束时间<@FinishTime2 ORDER BY 结束时间 DESC",
|
||||
new SqlParameter("@Keywords", $"%{Keywords.Trim()}%"),
|
||||
new SqlParameter("@FinishTime1", dateTimeStart),
|
||||
new SqlParameter("@FinishTime2", dateTimeEnd)
|
||||
);
|
||||
|
||||
dt = SqlHelper.ExecuteTable(
|
||||
$"SELECT * FROM TASK_HISTORY_VIEW WHERE {ColumnName} LIKE @Keywords AND 结束时间>=@FinishTime1 AND 结束时间<@FinishTime2 ORDER BY 结束时间 DESC OFFSET @Rows ROW FETCH NEXT 10 ROW ONLY",
|
||||
new SqlParameter("@Keywords", $"%{Keywords.Trim()}%"),
|
||||
new SqlParameter("@FinishTime1", dateTimeStart),
|
||||
new SqlParameter("@FinishTime2", dateTimeEnd),
|
||||
new SqlParameter("@Rows", int.Parse(num) - 1)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
dtCount = SqlHelper.ExecuteTable(
|
||||
$"SELECT * FROM TASK_HISTORY_VIEW WHERE 结束时间>=@FinishTime1 AND 结束时间<@FinishTime2 ORDER BY 结束时间 DESC",
|
||||
new SqlParameter("@FinishTime1", dateTimeStart),
|
||||
new SqlParameter("@FinishTime2", dateTimeEnd)
|
||||
);
|
||||
|
||||
dt = SqlHelper.ExecuteTable(
|
||||
$"SELECT * FROM TASK_HISTORY_VIEW WHERE 结束时间>=@FinishTime1 AND 结束时间<@FinishTime2 ORDER BY 结束时间 DESC OFFSET @Rows ROW FETCH NEXT 10 ROW ONLY",
|
||||
new SqlParameter("@FinishTime1", dateTimeStart),
|
||||
new SqlParameter("@FinishTime2", dateTimeEnd),
|
||||
new SqlParameter("@Rows", int.Parse(num) - 1)
|
||||
);
|
||||
}
|
||||
|
||||
LoadTaskHistory(dt);
|
||||
|
||||
UpdatePageInfo(dtCount, num);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 重置选择
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
void Clear()
|
||||
{
|
||||
ColumnName = string.Empty;
|
||||
Keywords = string.Empty;
|
||||
|
||||
TaskHistory.Clear();
|
||||
LoadTaskHistory(1);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------时间字符串格式化对象---------------------------------
|
||||
DateTime dateTimeStart;
|
||||
|
||||
DateTime dateTimeEnd;
|
||||
|
||||
/// <summary>
|
||||
/// 日期格式处理
|
||||
/// </summary>
|
||||
/// <returns>格式是否正确 true-正确 false-错误</returns>
|
||||
bool DateStringFormat()
|
||||
{
|
||||
//处理字符串格式,规范字符串类型的时间值
|
||||
bool b = DateTime.TryParse($"{DateStart} {TimeStart}", out dateTimeStart);
|
||||
bool b1 = DateTime.TryParse($"{DateEnd} {TimeEnd}", out dateTimeEnd);
|
||||
|
||||
if (!b || !b1)
|
||||
{
|
||||
MessageBox.Show("时间格式错误!");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------页面跳转/统计相关-----------------------------------------
|
||||
//-----------------------------------------页面跳转/统计相关-----------------------------------------
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 每页条数
|
||||
/// </summary>
|
||||
const int countPerPage = 10;
|
||||
/// <summary>
|
||||
/// 总数据条数-显示文本
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string _dataCount;
|
||||
/// <summary>
|
||||
/// 查询后的总条数
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
int _dataCountNumber;
|
||||
/// <summary>
|
||||
/// 总页数
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
int _pageCount;
|
||||
/// <summary>
|
||||
/// 手动输入页数
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
int _pageInput;
|
||||
/// <summary>
|
||||
/// 鼠标需要点击的页面跳转按钮值
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
int _pageSelected;
|
||||
/// <summary>
|
||||
/// 要显示页码的集合
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
ObservableCollection<string> _pages;
|
||||
|
||||
/// <summary>
|
||||
/// 当前页
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
int _pageCurrent;
|
||||
/// <summary>
|
||||
/// 当前页信息-显示文本
|
||||
/// </summary>
|
||||
[ObservableProperty]
|
||||
string _pageInfo;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 点击页码至指定页
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
void PageClick(string pageNumber)
|
||||
{
|
||||
JumpToPage(int.Parse(pageNumber));
|
||||
|
||||
//MessageBox.Show(pageNumber.ToString());
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 动态更新页数-下方显示具体X-X页
|
||||
/// </summary>
|
||||
/// <param name="pageCurrent">跳转后的页数</param>
|
||||
void DynamicPage(int pageCurrent)
|
||||
{
|
||||
//设置最多显示5页按钮
|
||||
Pages.Clear();
|
||||
|
||||
//总页数小于8-显示1-X页
|
||||
if (PageCount < 8 && pageCurrent < 8)
|
||||
{
|
||||
for (int i = 1; i < PageCount; i++)
|
||||
{
|
||||
Pages.Add(i.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
//总页数大于等于8
|
||||
else
|
||||
{
|
||||
//距离尾页多于3页
|
||||
if (PageCount - pageCurrent >= 3)
|
||||
{
|
||||
//1---显示前7页
|
||||
if (pageCurrent < 8)
|
||||
{
|
||||
for (int i = 1; i < 8; i++)
|
||||
{
|
||||
Pages.Add(i.ToString());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//显示当前页的前3和后3页码
|
||||
for (int i = pageCurrent - 3; i <= pageCurrent + 3; i++)
|
||||
{
|
||||
Pages.Add(i.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
//距离尾页是否少于3页---显示尾页前7页
|
||||
else
|
||||
{
|
||||
if (PageCount - pageCurrent <= 2)
|
||||
{
|
||||
for (int i = PageCount - 6; i <= PageCount; i++)
|
||||
{
|
||||
Pages.Add(i.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取数据集的总条数和页码数,更新属性
|
||||
/// </summary>
|
||||
/// <param name="dt"></param>
|
||||
/// <param name="pageCurrent">当前页</param>
|
||||
void UpdatePageInfo(DataTable dt, int pageCurrent)
|
||||
{
|
||||
//总数据条数
|
||||
DataCountNumber = dt.Rows.Count;
|
||||
|
||||
//文本显示
|
||||
DataCount = $"共 {DataCountNumber} 条";
|
||||
|
||||
//总页数
|
||||
if (DataCountNumber % countPerPage == 0)
|
||||
{
|
||||
PageCount = DataCountNumber / countPerPage;
|
||||
}
|
||||
else
|
||||
{
|
||||
PageCount = DataCountNumber / countPerPage + 1;
|
||||
}
|
||||
|
||||
PageCurrent = pageCurrent;
|
||||
|
||||
DynamicPage(pageCurrent);
|
||||
}
|
||||
void UpdatePageInfo(DataTable dt, string pageCurrent)
|
||||
{
|
||||
//总数据条数
|
||||
DataCountNumber = dt.Rows.Count;
|
||||
|
||||
//文本显示
|
||||
DataCount = $"共 {DataCountNumber} 条";
|
||||
|
||||
//总页数
|
||||
if (DataCountNumber % countPerPage == 0)
|
||||
{
|
||||
PageCount = DataCountNumber / countPerPage;
|
||||
}
|
||||
else
|
||||
{
|
||||
PageCount = DataCountNumber / countPerPage + 1;
|
||||
}
|
||||
|
||||
PageCurrent = int.Parse(pageCurrent);
|
||||
|
||||
DynamicPage(int.Parse(pageCurrent));
|
||||
}
|
||||
|
||||
|
||||
//********************************************跳转页码时查询要附加顶部查询条件获取共同查询结果显示*******************************************
|
||||
//********************************************跳转页码时查询要附加顶部查询条件获取共同查询结果显示*******************************************
|
||||
//********************************************跳转页码时查询要附加顶部查询条件获取共同查询结果显示*******************************************
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 跳转至指定页
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
void JumpPageClick(string pageNumber)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (int.Parse(pageNumber) > PageCount)
|
||||
{
|
||||
MessageBox.Show("不能超过最大页码数!");
|
||||
return;
|
||||
}
|
||||
if (int.Parse(pageNumber) < 1)
|
||||
{
|
||||
MessageBox.Show("请使用正确页码数查询!");
|
||||
return;
|
||||
}
|
||||
|
||||
JumpToPage(int.Parse(pageNumber));
|
||||
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
Log.Warning("【瞎β操作】查询历史记录时,跳转页面输入错误!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 前页
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
void PageBefore()
|
||||
{
|
||||
if (PageCurrent == 1) return;
|
||||
|
||||
PageCurrent -= 1;
|
||||
|
||||
JumpToPage(PageCurrent);
|
||||
|
||||
PageInfo = $"当前 {PageCurrent} 页";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 后一页
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
void PageNext()
|
||||
{
|
||||
if (PageCurrent == PageCount) return;
|
||||
|
||||
PageCurrent += 1;
|
||||
|
||||
JumpToPage(PageCurrent);
|
||||
|
||||
|
||||
PageInfo = $"当前 {PageCurrent} 页";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 首页
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
void PageFirst()
|
||||
{
|
||||
PageCurrent = 1;
|
||||
|
||||
JumpToPage(PageCurrent);
|
||||
|
||||
PageInfo = $"当前 {PageCurrent} 页";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 尾页
|
||||
/// </summary>
|
||||
[RelayCommand]
|
||||
void PageLast()
|
||||
{
|
||||
if (PageCurrent == PageCount) return;
|
||||
|
||||
JumpToPage(PageCount);
|
||||
|
||||
PageInfo = $"当前 {PageCurrent} 页";
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 输入页码---跳转到指定页
|
||||
/// </summary>
|
||||
/// <param name="pageNumber"></param>
|
||||
void JumpToPage(int pageNumber)
|
||||
{
|
||||
//获取指定页数从具体第几条数据开始计数
|
||||
int index = (pageNumber - 1) * 10 + 1;
|
||||
|
||||
if (b == false)
|
||||
{
|
||||
//默认数据集条件下跳转
|
||||
LoadTaskHistory(index);
|
||||
}
|
||||
else
|
||||
{
|
||||
//查询之后的数据集条件下跳转
|
||||
Query(index.ToString());
|
||||
}
|
||||
|
||||
if (pageNumber <= PageCount)
|
||||
{
|
||||
PageCurrent = pageNumber;
|
||||
PageInfo = $"当前 {pageNumber} 页";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user