WinHistoryTask.xaml.cs 6.14 KB
using RCS.Dal;
using RCS.Model.Comm;
using RCS.Model.Entity;
using RCS.WinClient.Common;
using System.Collections.ObjectModel;
using System.Data;
using System.Linq.Expressions;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

namespace RCS.WinClient.Views.Pages
{
    /// <summary>
    /// WinHistoryTask.xaml 的交互逻辑
    /// </summary>
    public partial class WinHistoryTask : Window
    {
        public WinHistoryTask()
        {
            InitializeComponent();
            try
            {
                var taskGroupList = Extends.EnumToList<EnumMsg.TaskGroup>().Select(x => x.ToString()).ToList();
                taskGroupList.Insert(0, "");
                TaskGroup.ItemsSource = taskGroupList;

                var taskStateList = Extends.EnumToList<EnumMsg.TaskState>().Select(x => x.ToString()).ToList();
                taskStateList.Insert(0, "");
                TaskState.ItemsSource = taskStateList;

                var taskTypeList = Extends.EnumToList<EnumMsg.TaskType>().Select(x => x.ToString()).ToList();
                taskTypeList.Insert(0, "");
                this.cBoxTaskType.ItemsSource = taskTypeList;

                //Style style = new Style(typeof(ComboBoxItem));
                //style.Setters.Add(new Setter(HeightProperty, 17));
                //this.cBoxTaskType.ItemContainerStyle = style;
            }
            catch (Exception ex)
            {

                App.ExFile.MessageError("WinHistoryTask", "查询任务类型失败" + ex.Message + ex.StackTrace);
            }

        }

        /// <summary>
        /// 历史记录查询
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnQuery_Click(object sender, RoutedEventArgs e)
        {
            Grid_History.ItemsSource = null;

            List<Log_Task> logTaskList;
            BaseDal<Log_Task> logTaskDal = new BaseDal<Log_Task>();
            BaseDal<Log_SubTask> LogSubTaskDal = new BaseDal<Log_SubTask>();
            Expression<Func<Log_Task, bool>> filter = x => true;

            if (tBoxTaskNo.Text.Trim() != "")
            {
                filter = filter.And(x => x.TaskNo.Contains(tBoxTaskNo.Text.Trim()));
            }
            if (tBoxTaskPallet.Text.Trim() != "")
            {
                filter = filter.And(x => x.TaskPallet != null && x.TaskPallet.Contains(tBoxTaskPallet.Text.Trim()));
            }
            if (tBoxAgvNo.Text.Trim() != "")
            {
                filter = filter.And(x => x.TaskAgvNo!.Contains(tBoxAgvNo.Text.Trim()));
            }
            if (cBoxTaskType.Text.Trim() != "")
            {
                filter = filter.And(x => x.TaskType == cBoxTaskType.Text.Trim());
            }
            if (TaskInitial.Text.Trim() != "")
            {
                filter = filter.And(x => x.Initial == TaskInitial.Text.Trim());
            }
            if (TaskTarget.Text.Trim() != "")
            {
                filter = filter.And(x => x.Target == TaskTarget.Text.Trim());
            }
            if (TaskGroup.Text.Trim() != "")
            {
                filter = filter.And(x => x.TaskGroup == TaskGroup.Text.Trim());
            }
            if (TaskState.Text.Trim() != "")
            {
                var success = Enum.TryParse(TaskState.Text, out EnumMsg.TaskState taskState);
                if (success)
                    filter = filter.And(x => x.TaskState == taskState);
            }
            if (CalendarStart.DateTime.ToString() != "" && CalendarEnd.DateTime.ToString() == "")
            {
                filter = filter.And(x => x.AcceptTime >= CalendarStart.DateTime);
            }
            else if (CalendarStart.DateTime.ToString() == "" && CalendarEnd.DateTime.ToString() != "")
            {
                filter = filter.And(x => x.AcceptTime <= CalendarEnd.DateTime);
            }
            else if (CalendarStart.DateTime.ToString() != "" && CalendarEnd.DateTime.ToString() != "")
            {
                filter = filter.And(x => x.AcceptTime >= CalendarStart.DateTime && x.AcceptTime <= CalendarEnd.DateTime);
            }
            if (LoadSubTask.IsChecked == true)
            {
                var logTaskResult = logTaskDal.Query(filter, 1000, "");
                if (!logTaskResult.IsSuccess)
                {
                    ComnMethod.Message($"主任务历史记录查询失败,{logTaskResult.Message}!");
                    return;
                }
                logTaskList = logTaskResult.Data;
                var taskNoList = logTaskList.Select(x => x.TaskNo).ToList();
                var LogSubTaskResult = LogSubTaskDal.Query(x => taskNoList.Contains(x.TaskNo));
                if (!LogSubTaskResult.IsSuccess)
                {
                    ComnMethod.Message($"子任务历史记录查询失败,{LogSubTaskResult.Message}!");
                    return;
                }
                var LogSubTaskList = LogSubTaskResult.Data;
                logTaskList.ForEach(x => x.LogSubTaskList = new ObservableCollection<Log_SubTask>(LogSubTaskList.Where(y => y.TaskNo == x.TaskNo).ToList()));
            }
            else
            {
                logTaskList = logTaskDal.Query(filter, 10000, "").Data;
            }

            Grid_History.ItemsSource = logTaskList;
        }

        private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            this.DragMove();

        }

        /// <summary>
        /// 关闭按钮
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnClose_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        //重写Closing方法
        protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            this.Hide();
            e.Cancel = true;
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            BtnQuery_Click(null, null);
        }

        private void Grid_History_LoadingRow(object sender, DataGridRowEventArgs e)
        {
            e.Row.Header = e.Row.GetIndex() + 1;
        }
    }
}