TaskCarInfoVM.cs 6.33 KB
using HHECS.Application.Enums;
using HHECS.Dal.Repository;
using HHECS.DAL.Repository;
using HHECS.Infrastructure.CommonHelper;
using HHECS.Model.Entities;
using HHECS.Model.Enums.Car;
using HHECS.Model.Enums.Task;
using HHECS.WinCommon.ViewModel;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Linq.Expressions;
using System.Windows;
using MessageBox = HandyControl.Controls.MessageBox;

namespace HHECS.WinClient.View.TaskInfo
{
    public class TaskCarInfoVM : VMBase
    {
        public PageInfo PageInfo { get; set; } = new PageInfo();
        public string Id { get; set; }
        public string Length { get; set; }
        public string Diameter { get; set; }
        public string StepTraceId { get; set; } = "line3";
        public string Type { get; set; }
        public string Status { get; set; }

        public string lastStatus;
        public string LastStatus
        {
            get { return lastStatus; }
            set { lastStatus = value; OnPropertyChanged(nameof(LastStatus)); }
        }
        public Dictionary<string, object> Types { get; set; }

        public Dictionary<string, object> Statuss { get; set; }

        public List<CutPlanHead> TaskTrussEntity { get; set; } = new List<CutPlanHead>();


        public TaskCarInfoVM()
        {
            var type = EnumHelper.EnumListDic<CutPlanHeadState>("全部", "");
            Types = type;

            var statu = EnumHelper.EnumListDic<CutPlanHeadState>("全部", "");
            Statuss = statu;
            LastStatus = CutPlanHeadState.初始.GetIndexString();
        }

        public Expression<Func<CutPlanHead, bool>> GetCarTaskExpression()
        {
            Expression<Func<CutPlanHead, bool>> filter = a => true;
            if (!string.IsNullOrWhiteSpace(Id))
            {
                filter = filter.And(a => a.Id.ToString() == Id);
            }
            if (!string.IsNullOrWhiteSpace(Length))
            {
                filter = filter.And(a => a.MaterialCode.ToString().Contains(Length));
            }
            if (!string.IsNullOrWhiteSpace(Diameter))
            {
                filter = filter.And(a => a.LotNo.ToString().Contains(Diameter));
            }
            if (!string.IsNullOrWhiteSpace(StepTraceId))
            {
                filter = filter.And(a => a.LineCode.ToString().Contains(StepTraceId));
            }
            if (!string.IsNullOrWhiteSpace(LastStatus))
            {
                if (LastStatus == "0")
                {
                    filter = filter.And(a => a.State < 100);
                }
                else
                {
                    filter = filter.And(a => a.State == Convert.ToInt32(LastStatus));
                }
            }
            return filter;
        }

        public void Query()
        {
            Expression<Func<CutPlanHead, bool>> filter = GetCarTaskExpression();
            var result = App.TaskService.GetTaskCar(filter, PageInfo.PageIndex, PageInfo.PageSize, out long totalCount);
            if (result.Success)
            {
                PageInfo.TotalCount = totalCount;
                TaskTrussEntity = result.Data;
            }
            else
            {
                MessageBox.Show($"查询失败:{result.Msg}");
            }
        }

        public void Delete(List<CutPlanHead> taskTrussEntitys)
        {
            if (taskTrussEntitys == null || taskTrussEntitys.Count == 0)
            {
                MessageBox.Show("未选中数据");
                return;
            }
            if (MessageBox.Show("是否确认删除?", "警告", MessageBoxButton.YesNo) != MessageBoxResult.Yes)
            {
                return;
            }
            var bllResult = App.TaskService.DeleteTaskCars(taskTrussEntitys);
            if (bllResult.Success)
            {
                App.LogService.LogOperation(Title.EquipmentTypeDelete, ModuleConst.EquipmentType, $"删除成功.数据:{JsonConvert.SerializeObject(taskTrussEntitys.Select(t => new { Id = t.Id }))}", bllResult.Code.ToString(), App.User.UserCode);
                MessageBox.Show("删除成功");
            }
            else
            {
                App.LogService.LogOperation(Title.EquipmentTypeDelete, ModuleConst.EquipmentType, $"删除失败.数据:{JsonConvert.SerializeObject(taskTrussEntitys.Select(t => new { Id = t.Id }))}.详情:{bllResult.Msg}", bllResult.Code.ToString(), App.User.UserCode);
                MessageBox.Error($"删除失败:{bllResult.Msg}");
            }
            Query();
        }


        public void Over(List<CutPlanHead> taskTrussEntitys)
        {
            CutPlanHeadRepository taskTrussEntityRepository = new CutPlanHeadRepository();
            if (taskTrussEntitys == null || taskTrussEntitys.Count == 0)
            {
                MessageBox.Show("未选中数据");
                return;
            }
            if (MessageBox.Show("是否确认完成?", "警告", MessageBoxButton.YesNo) != MessageBoxResult.Yes)
            {
                return;
            }
            else
            {
                foreach (var TaskTruss in taskTrussEntitys)
                {
                    if (TaskTruss.State >= (int)CutPlanHeadState.切割完成)
                    {
                        continue;
                    }
                    TaskTruss.State = (int)CutPlanHeadState.切割完成;
                    var result = taskTrussEntityRepository.Update(TaskTruss);
                    if (result > 0)
                    {
                        MessageBox.Show($"任务{TaskTruss.Id}强制完成成功");
                    }
                    else
                    {
                        MessageBox.Show($"任务{TaskTruss.Id}强制完成失败");
                    }
                }
            }
            Query();
        }


        public void Maintain(List<CutPlanHead> taskTrussEntitys)
        {
            if (taskTrussEntitys.Count != 1)
            {
                MessageBox.Show("请选中一条任务后继续", "警告", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            else
            {
                WinCarTaskMaintain winCarTaskMaintain = new WinCarTaskMaintain(taskTrussEntitys.First().Id);
                winCarTaskMaintain.ShowDialog();
                Query();
            }
        }
    }
}