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

namespace HHECS.WinClient.View.TaskInfo
{
    public class StepTraceMaintainVM : VMBase
    {
        public string Id { get; set; }
        public string ProductCode { get; set; }
        public string NowProcessRoute { get; set; }
        public string nowStation;
        public string NowStation
        {
            get { return nowStation; }
            set { nowStation = value; OnPropertyChanged(nameof(NowStation)); }
        }
        public string NextProcessRoute { get; set; }
        public string nextStation;
        public string NextStation
        {
            get { return nextStation; }
            set { nextStation = value; OnPropertyChanged(nameof(NextStation)); }
        }
        public string status;
        public string Status
        {
            get { return status; }
            set { status = value; OnPropertyChanged(nameof(Status)); }
        }
        public Dictionary<string, object> ProcessRoutes { get; set; }

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

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

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

        List<Equipment> WorkStations { get; set; } = new List<Equipment>();

        List<Line> Lines { get; set; } = new List<Line>();
        CutPlanDetail TaskModel;
        BusWorkOrderDetail busWorkOrderDetail;

        List<BaseProcessRouteDetail> processRouteDetails { get; set; } = new List<BaseProcessRouteDetail>();
        CutPlanDetailRepository cutPlanTaskRepository = new CutPlanDetailRepository();
        BusWorkOrderDetailRepository BusWorkOrderDetailRepository = new BusWorkOrderDetailRepository();
        BaseStepTraceRepository stepTraceRepository = new BaseStepTraceRepository();
        public StepTraceMaintainVM(int id)
        {
            Id = id.ToString();
            TaskModel = cutPlanTaskRepository.Where(u => u.Id == Convert.ToInt32(Id)).First();
            busWorkOrderDetail = BusWorkOrderDetailRepository.Where(t => t.BarCode == TaskModel.BarCode && t.OprSequenceCode == "Cut").First();
            var result1 = App.TaskService.GetEquipments(t => true);
            if (result1.Success)
            {
                WorkStations = result1.Data.Where(t => t.LineCode == App.LineCode && t.EquipmentTypeId != 68).ToList();
                //WorkStations.ForEach(t => { Stations.Add(t.Name, t.Id); });
                Stations = WorkStations.ToDictionary(t => t.Name, x => (object)x.Code);
            }

            //var result = App.TaskService.GetProcessRouteDetails(t => t.ProductCode == ProductCode);
            //if (result.Success)
            //{
            //    processRouteDetails = result.Data;
            //    ProcessRoutes = result.Data.ToDictionary(t => t.OprSequenceName, x => (object)x.Id);
            //}

            //var result2 = App.TaskService.GetLines(t => true);
            //if (result2.Success)
            //{
            //    Lines = result2.Data;
            //    LineCodes = result2.Data.ToDictionary(t => t.lineName, x => (object)x.lineCode);
            //}
            var statu = EnumHelper.EnumListDic<CutPlanDetailState>();
            Statuss = statu;

            //myComboBox.SelectedItem = "Option 2";
        }

        public void EditProductId()
        {
            if (string.IsNullOrWhiteSpace(ProductCode))
            {
                MessageBox.Show($"请选择一个产品");
                return;
            }
            //TaskModel.ProductCode = ProductCode;
            var res = cutPlanTaskRepository.Update(TaskModel);
            if (res > 0)
            {
                MessageBox.Show($"产品维护成功");
            }
            else
            {
                MessageBox.Show($"产品维护失败");
            }
        }


        /// <summary>
        /// 下个工序维护
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void EditNextStepId()
        {
            string str = "0";
            if (MessageBox.Show($"任务{Id}是否清空下道工位?", "注意", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
            {
                //TaskModel.NextProcessRouteDetailId = Convert.ToInt32(str);
                var res = cutPlanTaskRepository.Update(TaskModel);
                if (res > 0)
                {
                    MessageBox.Show($"任务{TaskModel.Id}清空下道工位成功");
                }
                else
                {
                    MessageBox.Show($"任务{TaskModel.Id}清空失败");
                }
            }
        }

        /// <summary>
        /// 下个工位维护
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void EditNextStationId()
        {
            string str = "0";
            if (MessageBox.Show($"任务{TaskModel.Id}是否清空下道工位?", "注意", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
            {
                // TaskModel.NextStation = NextStation;
                var res = cutPlanTaskRepository.Update(TaskModel);
                if (res > 0)
                {
                    MessageBox.Show($"任务{TaskModel.Id}清空下道工位成功");
                }
                else
                {
                    MessageBox.Show($"任务{TaskModel.Id}清空失败");
                }
            }
        }

        /// <summary>
        /// 工序维护
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void EditStepId()
        {

        }

        /// <summary>
        /// 工位维护
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void EditStationId(bool isNow = true)
        {
            //if (string.IsNullOrWhiteSpace(NowStation))
            //{
            //    MessageBox.Show($"请选择一个工位");
            //    return;
            //}
            if (isNow)
            {
                //  TaskModel.NowStation = NowStation;
            }
            else
            {
                // TaskModel.NextStation = NextStation;
            }
            var res = cutPlanTaskRepository.Update(TaskModel);
            if (res > 0)
            {
                MessageBox.Show($"工位维护成功");
            }
            else
            {
                MessageBox.Show($"工位维护失败");
            }
        }

        /// <summary>
        /// 状态维护
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void EditStatus()
        {
            //if (string.IsNullOrWhiteSpace(Status))
            //{
            //    MessageBox.Show("请先选中需要更改的状态");
            //    return;
            //}

            if (!Enum.TryParse(Status.ToString(), out CutTaskStatus newStatus))
            {
                MessageBox.Show($"状态:{Status}无效");
                return;
            }

            //if (TaskModel.Status >= StepTraceStatus.生产完成.GetIndexInt())
            //{
            //    MessageBox.Show("任务已经完成,不能修改数据");
            //    return;
            //}
            if (TaskModel.CutState == (int)CutPlanDetailState.切割完成)
            {
                busWorkOrderDetail.State = 100;
                BusWorkOrderDetailRepository.Update(busWorkOrderDetail);
            }

            //原來任務狀態
            int oldStatus = TaskModel.CutState;

            TaskModel.CutState = (int)newStatus;
            TaskModel.UpdateBy = App.User.UserCode;
            TaskModel.UpdateTime = DateTime.Now;
            try
            {
                cutPlanTaskRepository.Update(TaskModel);
                MessageBox.Show($"更改任务{TaskModel.Id}状态成功");
            }
            catch (Exception ex)
            {
                TaskModel.CutState = oldStatus;
                MessageBox.Show($"更改任务{TaskModel.Id}状态,出现异常:{ex.Message}");
            }
        }


    }
}