using iWareCommon.Common.Globle;
using iWareCommon.Utils;
using iWareModel;
using iWareSql.DataAccess;
using iWareSql.DBModel;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using XiGang.Core.Model;
namespace XiGang_iWareTestForm.iWareTest.DialogForm
{
    public partial class TestBatchForm : Form
    {
        delegate void Delegate_SetPostResult2(string content);
        public TestBatchForm()
        {
            InitializeComponent();
        }
        private void button5_Click(object sender, EventArgs e)
        {
            string tb_SrmNo = this.tb_PlaceNo.Text.Trim();
            //按照某个库位将发动机物料改为托盘
            //先删除
            ClearPlace(tb_SrmNo);
            //再新增托盘
            do_button1_Click(tb_SrmNo);
        }
        /// 
        /// 新建入库任务
        /// 
        /// 
        /// 
        private void button1_Click(object sender, EventArgs e)
        {
            //try
            //{
            //    ListItem selProFlag = null;
            //    var itemType = ComboBoxHelper.GetComboxSelectValue(this.cmbItemType, ref selProFlag);
            //    if (string.IsNullOrEmpty(tb_SrmNo))
            //    {
            //        ShowResult("库位号不能为空");
            //        return;
            //    }
            //    var remark = "";
            //    int qty = 1;
            //    if (selProFlag.Text == "托盘")
            //    {
            //        qty = Convert.ToInt32(tb_SalverCount.Text);
            //        remark = "人工手动增加托盘库存";
            //    }
            //    Base_Station toPlace = null;
            //    using (DbModel context = new DbModel())
            //    {
            //        toPlace = context.Base_Station.Where(x => x.SrmStationCode == tb_SrmNo).FirstOrDefault();
            //        if (toPlace == null)
            //        {
            //            ShowResult(tb_SrmNo + "库位不存在");
            //            return;
            //        }
            //        //看看有没有库存
            //        var abc = context.V_AllStore.Where(x => x.SrmStationCode == toPlace.SrmStationCode).FirstOrDefault();
            //        if (abc != null)
            //        {
            //            ShowResult(tb_SrmNo + "已经有库存了");
            //            return;
            //        }
            //        if (selProFlag.Text == "托盘")
            //        {
            //            Base_Material newMaterial = null;
            //            Base_Salver salver = null;
            //            StoreHandler.AddStoreForEmptySalverTransfer(context, remark, toPlace, qty, "人工手动", ref salver, ref newMaterial);
            //            SaveLog(MaterialTypeEnum.托盘, newMaterial, context, tb_SrmNo, remark, qty, salver, toPlace, "", "");
            //            context.SaveChanges();//提交数据
            //        }
            //        else
            //        {
            //            var SerialNumber = this.tb_SerialNumber.Text;
            //            var OrderNo = this.tb_OrderNo.Text;
            //            var SalverCode = this.tb_SalverCode.Text;
            //            if (string.IsNullOrEmpty(SerialNumber))
            //            {
            //                ShowResult(tb_SrmNo + "序列号不能为空");
            //                return;
            //            }
            //            if (string.IsNullOrEmpty(OrderNo))
            //            {
            //                ShowResult(tb_SrmNo + "订货号不能为空");
            //                return;
            //            }
            //            if (string.IsNullOrEmpty(SalverCode))
            //            {
            //                ShowResult(tb_SrmNo + "托盘号不能为空");
            //                return;
            //            }
            //            abc = context.V_AllStore.Where(x => x.SerialNumber == SerialNumber).FirstOrDefault();
            //            if (abc != null)
            //            {
            //                ShowResult("序列号" + SerialNumber + "已经有库存了");
            //                return;
            //            }
            //            abc = context.V_AllStore.Where(x => x.SalverCode == SalverCode).FirstOrDefault();
            //            if (abc != null)
            //            {
            //                ShowResult("托盘号" + SalverCode + "已经有库存了");
            //                return;
            //            }
            //            //绑定托盘和站点的关系
            //            //新建物料
            //            Base_Material newMaterial = MaterialHandler.CreateCargoMaterial(context, "入库时,新建物料", SerialNumber, OrderNo);
            //            //判断托盘是否存在,如果存在,就不需要重建,如果不存在,就新建托盘
            //            var errMsg = "";
            //            Base_Salver salver = SalverHandler.GetSalveByCodeForInTask(context, SalverCode, out errMsg);
            //            if (!string.IsNullOrEmpty(errMsg))
            //            {
            //                ShowResult(tb_SrmNo + "errMsg");
            //                return;
            //            }
            //            //绑定托盘和物料的关系
            //            Salver_Material_Handler.CreateCvIRelation(context, "人工手动", salver, newMaterial, remark);
            //            //绑定托盘和站点的关系
            //            Salver_Station_Handler.CreateCvPRelation(context, "人工手动", salver, toPlace, Salver_V_Station_StateEnum.入库绑定, remark);
            //            SaveLog(MaterialTypeEnum.一般物料, newMaterial, context, tb_SrmNo, remark, qty, salver, toPlace, SerialNumber, OrderNo);
            //            context.SaveChanges();//提交数据
            //        }
            //        ShowResult(tb_SrmNo + "保存成功");
            //    }
            //}
            //catch (Exception ex)
            //{
            //    ShowResult(tb_SrmNo + "保存失败," + ex.Message);
            //}
        }
        private void do_button1_Click(string tb_SrmNo)
        {
            try
            {
                ListItem selProFlag = null;
                var itemType = ComboBoxHelper.GetComboxSelectValue(this.cmbItemType, ref selProFlag);
                if (string.IsNullOrEmpty(tb_SrmNo))
                {
                    ShowResult("库位号不能为空");
                    return;
                }
                var remark = "";
                int qty = 1;
                if (selProFlag.Text == "托盘")
                {
                    qty = Convert.ToInt32(tb_SalverCount.Text);
                    remark = "人工手动增加托盘库存";
                }
                Base_Station toPlace = null;
                using (DbModel context = new DbModel())
                {
                    toPlace = context.Base_Station.Where(x => x.SrmStationCode == tb_SrmNo).FirstOrDefault();
                    if (toPlace == null)
                    {
                        ShowResult(tb_SrmNo + "库位不存在");
                        return;
                    }
                    //看看有没有库存
                    var abc = context.V_AllStore.Where(x => x.SrmStationCode == toPlace.SrmStationCode).FirstOrDefault();
                    if (abc != null)
                    {
                        ShowResult(tb_SrmNo + "已经有库存了");
                        return;
                    }
                    if (selProFlag.Text == "托盘")
                    {
                        Base_Material newMaterial = null;
                        Base_Salver salver = null;
                        StoreHandler.AddStoreForEmptySalverTransfer(context, remark, toPlace, qty, "人工手动", ref salver, ref newMaterial);
                        SaveLog(MaterialTypeEnum.托盘, newMaterial, context, tb_SrmNo, remark, qty, salver, toPlace, "", "");
                        context.SaveChanges();//提交数据
                    }
                    else
                    {
                        var SerialNumber = this.tb_SerialNumber.Text;
                        var OrderNo = this.tb_OrderNo.Text;
                        var SalverCode = this.tb_SalverCode.Text;
                        if (string.IsNullOrEmpty(SerialNumber))
                        {
                            ShowResult(tb_SrmNo + "序列号不能为空");
                            return;
                        }
                        if (string.IsNullOrEmpty(OrderNo))
                        {
                            ShowResult(tb_SrmNo + "订货号不能为空");
                            return;
                        }
                        if (string.IsNullOrEmpty(SalverCode))
                        {
                            ShowResult(tb_SrmNo + "托盘号不能为空");
                            return;
                        }
                        abc = context.V_AllStore.Where(x => x.SerialNumber == SerialNumber).FirstOrDefault();
                        if (abc != null)
                        {
                            ShowResult("序列号" + SerialNumber + "已经有库存了");
                            return;
                        }
                        abc = context.V_AllStore.Where(x => x.SalverCode == SalverCode).FirstOrDefault();
                        if (abc != null)
                        {
                            ShowResult("托盘号" + SalverCode + "已经有库存了");
                            return;
                        }
                        //绑定托盘和站点的关系
                        //新建物料
                        Base_Material newMaterial = null;// MaterialHandler.CreateCargoMaterial(context, "入库时,新建物料", SerialNumber, OrderNo);
                        //判断托盘是否存在,如果存在,就不需要重建,如果不存在,就新建托盘
                        var errMsg = "";
                        Base_Salver salver = SalverHandler.GetSalveByCodeForInTask(context, SalverCode, out errMsg);
                        if (!string.IsNullOrEmpty(errMsg))
                        {
                            ShowResult(tb_SrmNo + "errMsg");
                            return;
                        }
                        //绑定托盘和物料的关系
                        Salver_Material_Handler.CreateCvIRelation(context, "人工手动", salver, newMaterial, remark);
                        //绑定托盘和站点的关系
                        Salver_Station_Handler.CreateCvPRelation(context, "人工手动", salver, toPlace, Salver_V_Station_StateEnum.入库绑定, remark);
                        SaveLog(MaterialTypeEnum.一般物料, newMaterial, context, tb_SrmNo, remark, qty, salver, toPlace, SerialNumber, OrderNo);
                        context.SaveChanges();//提交数据
                    }
                    ShowResult(tb_SrmNo + "保存库存成功");
                    Log4NetHelper.WriteInfoLog(LogType.SS7, tb_SrmNo + "保存库存成功");
                }
            }
            catch (Exception ex)
            {
                ShowResult(tb_SrmNo + "保存失败," + ex.Message);
                Log4NetHelper.WriteErrorLog(LogType.SS7, tb_SrmNo + "保存失败," + ex.Message);
            }
        }
        private void LoadItemType()
        {
            List itemList = new List();
            itemList.Add(new ListItem()
            {
                Text = "发送机",
                Value = "1"
            });
            itemList.Add(new ListItem()
            {
                Text = "托盘",
                Value = "2"
            });
            foreach (var item in itemList)
            {
                this.cmbItemType.Items.Add(item);
            }
            cmbItemType.SelectedIndex = 1;
        }
        /// 
        /// 显示请求结果
        /// 
        /// 
        private void ShowResult(string content)
        {
            if (this.tb_Log.InvokeRequired)
            {
                Delegate_SetPostResult2 delegate_SetPostResult = new Delegate_SetPostResult2(ShowResult);
                this.Invoke(delegate_SetPostResult, new object[] { content });
            }
            else
            {
                //content += "\r\n";
                this.tb_Log.Text = StringHelper.GetLog(content) + this.tb_Log.Text;
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            //ClearPlace();
        }
        private void ClearPlace(string tb_SrmNo)
        {
            var msg = "清除";
            try
            {
                if (string.IsNullOrEmpty(tb_SrmNo))
                {
                    ShowResult("库位号不能为空");
                    return;
                }
                Base_Station place = null;
                using (DbModel edm = new DbModel())
                {
                    place = edm.Base_Station.Where(x => x.SrmStationCode == tb_SrmNo || x.RgvStationCode == tb_SrmNo).FirstOrDefault();
                    //获取库存的信息
                    var store = edm.V_AllStore.Where(x => x.StationId == place.Id).FirstOrDefault();
                    if (store == null)
                    {
                        ShowResult("该库位上没有库存!");
                        return;
                    }
                    StoreHandler.ClearStockByPlaceId(edm, place, "人工手动清除");
                    if (store.IsSrmStation)
                    {//如果是立体库库存,则在增加mian表
                        #region 增加Main表
                        //增加Main表和Part表数据
                        Task_Main mainTask = new Task_Main();
                        mainTask.IsVirtual = false;//非虚拟入库
                        MainTaskTypeEnum _taskType = default(MainTaskTypeEnum);
                        DeviceTaskTypeEnum _DeviceTaskTypeEnum = default(DeviceTaskTypeEnum);
                        string handlerType = "";
                        MaterialTypeEnum _MaterialType = (MaterialTypeEnum)Enum.Parse(typeof(MaterialTypeEnum), store.MaterialType.ToString());
                        switch (_MaterialType)
                        {
                            case MaterialTypeEnum.托盘:
                                handlerType = "手动清除托盘库存";
                                _DeviceTaskTypeEnum = DeviceTaskTypeEnum.出库;
                                mainTask.TaskNo = TaskNoHelper.GenerateTaskNo("OUT_SD_TP");
                                mainTask.TaskName = "手动清除托盘库存";
                                mainTask.InOutFlag = (int)MainInOutFlagEnum.出库;
                                mainTask.InOutFlagName = MainInOutFlagEnum.出库.ToString();
                                _taskType = MainTaskTypeEnum.手动出库;
                                mainTask.TaskType = Convert.ToInt32(_taskType);
                                mainTask.TaskTypeName = _taskType.ToString();
                                break;
                            case MaterialTypeEnum.一般物料:
                                handlerType = "手动清除发动机库存";
                                _DeviceTaskTypeEnum = DeviceTaskTypeEnum.出库;
                                mainTask.TaskNo = TaskNoHelper.GenerateTaskNo("OUT_SD");
                                mainTask.TaskName = "手动清除发动机库存";
                                mainTask.InOutFlag = (int)MainInOutFlagEnum.出库;
                                mainTask.InOutFlagName = MainInOutFlagEnum.出库.ToString();
                                _taskType = MainTaskTypeEnum.手动出库;
                                mainTask.TaskType = Convert.ToInt32(_taskType);
                                mainTask.TaskTypeName = _taskType.ToString();
                                mainTask.SerialNumber = store.SerialNumber;
                                mainTask.OrderNo = store.OrderNo;
                                break;
                        }
                        mainTask.MaterialType = (int)_MaterialType;
                        mainTask.MaterialTypeName = _MaterialType.ToString();
                        var _taskState = MainTaskStatusEnum.已完成;
                        mainTask.TaskState = Convert.ToInt32(_taskState);
                        mainTask.TaskStateName = _taskState.ToString();
                        mainTask.IsAllowSimulateExecute = true;
                        mainTask.OperationRemark = handlerType;
                        mainTask.Qty = store.Qty;
                        mainTask.CreateTime = mainTask.ModifyTime = mainTask.StartTime = DateTime.Now;
                        mainTask.CreateBy = mainTask.ModifyBy = SysGloble.WCSSystem;
                        mainTask.MaterialId = store.MaterialId;
                        mainTask.FinishTime = DateTime.Now;
                        mainTask.SourcePlace = store.StationId;
                        mainTask.RealSourcePlace = store.SrmStationCode;
                        mainTask.ToPlace = 0;
                        mainTask.RealToPlace = "";
                        //记录区域 [EditBy shaocx,2022-05-02]
                        EDevice device = BusinessHelper.GetSrmDeviceByPlaceNo(store.SrmStationCode);
                        mainTask.Area = ((int)device).ToString();
                        edm.Task_Main.Add(mainTask);
                        #endregion
                        #region 增加Part表
                        EDeviceType deviceType = EDeviceType.堆垛机;
                        var plcTaskNo = BusinessHelper.CreatePlcTaskIdForSrmTask();
                        Task_Part partTask = new Task_Part()
                        {
                            Id = Guid.NewGuid().ToString(),
                            InOutFlag = mainTask.InOutFlag,
                            InOutFlagName = mainTask.InOutFlagName,
                            DeviceType = (int)deviceType,
                            DeviceTypeName = deviceType.ToString(),
                            DeviceId = Convert.ToInt16(device),
                            DeviceName = Convert.ToString(device),
                            IsAllowSimulateExecute = true,
                            TaskSequence = 1,
                            MainTaskSequence = mainTask.TaskSequence,//增加主任务优先级
                            TaskDescribe = handlerType,
                            OperationRemark = handlerType,
                            MainTaskId = mainTask.Id,
                            MainTaskNo = mainTask.TaskNo,
                            MaterialId = mainTask.MaterialId,
                            Qty = mainTask.Qty,//增加数量 【EditBy shaocx,2022-05-01】
                            //增加 订货号和序列号的赋值 [Editby shaocx,2022-04-21]
                            SerialNumber = mainTask.SerialNumber,
                            OrderNo = mainTask.OrderNo,
                            //ToNumber = toNumber,
                            //TaskGuid = taskGuid,
                            //MatID = MatID,
                            //MatName = MatName,
                            //Remark = "手动入库创建设备任务" + description,
                            //Creator = "手动入库创建设备任务" + "," + Dns.GetHostName(),
                            //UpdateUser = "手动入库创建设备任务" + "," + Dns.GetHostName(),
                            CreateTime = DateTime.Now,
                            ModifyTime = DateTime.Now,
                            PlcTaskId = plcTaskNo,
                            //ContainerId = ctn.ContainerId,
                            SalverId = store.SalverId,
                            SalverCode = store.SalverCode,
                            SourcePlace = store.StationId,
                            ToPlace = 0,
                            RealSourcePlace = store.SrmStationCode,
                            RealToPlace = store.SrmStationCode,
                            TaskName = string.Format("(来源:id-{0} no-{1},目标:id-{2} no-{3})", store.StationId, store.SrmStationCode,
                                       0, ""),
                            IsReleased = true,
                            // IsCurrentTask = 0,
                            IsFinished = true,
                            //IsLastTask = 0,
                            //Void = 0,
                            TaskState = (int)DeviceTaskStatusEnum.已完成,
                            TaskStateName = DeviceTaskStatusEnum.已完成.ToString(),
                            TaskType = (int)_DeviceTaskTypeEnum,
                            TaskTypeName = _DeviceTaskTypeEnum.ToString(),
                            MaterialType = (int)_MaterialType,
                            MaterialTypeName = _MaterialType.ToString(),
                            IssueTime = DateTime.Now,
                            FinishTime = DateTime.Now
                        };
                        edm.Task_Part.Add(partTask);
                        #endregion
                    }
                    //保存人工处理日志 [EditBy shaocx,2022-05-01]
                    Base_PersonHandlerRecord record = new Base_PersonHandlerRecord()
                    {
                        MainTaskNo = "",
                        HandlerType = "库存删除",
                        PartTaskId = "",
                        PlcTaskId = "",
                        RealSourcePlace = tb_SrmNo,
                        RealToPlace = "",
                        SalverCode = store.SalverCode,
                        SerialNumber = store.SerialNumber,
                        OrderNo = store.OrderNo,
                        TaskTypeName = "",
                        Qty = store.Qty,
                        // ManualHandlerRemark = _AllowSimulateExecute_Rmark
                    };
                    PersonHandlerRecordHandler.SavePersonHandlerRecord(edm, record);
                    edm.SaveChanges();
                    ShowResult(msg + tb_SrmNo + "库存成功");
                    Log4NetHelper.WriteInfoLog(LogType.SS7, msg + tb_SrmNo + "库存成功");
                }
            }
            catch (Exception ex)
            {
                ShowResult(msg + "库存失败," + ex.Message);
                Log4NetHelper.WriteErrorLog(LogType.SS7, msg + tb_SrmNo + "库存失败," + ex.Message);
            }
        }
        private void SaveLog(MaterialTypeEnum _MaterialTypeEnum, Base_Material newMaterial, DbModel context, string tb_SrmNo, string remark, int qty,
           Base_Salver salver, Base_Station toPlace, string serialNumber, string orderNo)
        {
            //增加Main表和Part表数据
            Task_Main mainTask = new Task_Main();
            mainTask.IsVirtual = false;//非虚拟入库
            MainTaskTypeEnum _taskType = default(MainTaskTypeEnum);
            DeviceTaskTypeEnum _DeviceTaskTypeEnum = default(DeviceTaskTypeEnum);
            string handlerType = "";
            MaterialTypeEnum _MaterialType = default(MaterialTypeEnum);
            switch (_MaterialTypeEnum)
            {
                case MaterialTypeEnum.托盘:
                    handlerType = "手动添加托盘库存";
                    _DeviceTaskTypeEnum = DeviceTaskTypeEnum.空托转运到立体库;
                    mainTask.TaskNo = TaskNoHelper.GenerateTaskNo("IN__SD_TP");
                    mainTask.TaskName = "手动添加托盘库存";
                    mainTask.InOutFlag = (int)MainInOutFlagEnum.入库;
                    mainTask.InOutFlagName = MainInOutFlagEnum.入库.ToString();
                    _taskType = MainTaskTypeEnum.手动入库;
                    mainTask.TaskType = Convert.ToInt32(_taskType);
                    mainTask.TaskTypeName = _taskType.ToString();
                    _MaterialType = MaterialTypeEnum.托盘;
                    break;
                case MaterialTypeEnum.一般物料:
                    handlerType = "手动添加发动机库存";
                    _DeviceTaskTypeEnum = DeviceTaskTypeEnum.组盘入库;
                    mainTask.TaskNo = TaskNoHelper.GenerateTaskNo("IN_SD");
                    mainTask.TaskName = "手动入库";
                    mainTask.InOutFlag = (int)MainInOutFlagEnum.入库;
                    mainTask.InOutFlagName = MainInOutFlagEnum.入库.ToString();
                    _taskType = MainTaskTypeEnum.手动入库;
                    mainTask.TaskType = Convert.ToInt32(_taskType);
                    mainTask.TaskTypeName = _taskType.ToString();
                    mainTask.SerialNumber = serialNumber;
                    mainTask.OrderNo = orderNo;
                    _MaterialType = MaterialTypeEnum.一般物料;
                    break;
            }
            mainTask.MaterialType = (int)_MaterialType;
            mainTask.MaterialTypeName = _MaterialType.ToString();
            var _taskState = MainTaskStatusEnum.已完成;
            mainTask.TaskState = Convert.ToInt32(_taskState);
            mainTask.TaskStateName = _taskState.ToString();
            mainTask.IsAllowSimulateExecute = true;
            mainTask.OperationRemark = handlerType;
            mainTask.Qty = qty;
            mainTask.CreateTime = mainTask.ModifyTime = mainTask.StartTime = DateTime.Now;
            mainTask.CreateBy = mainTask.ModifyBy = SysGloble.WCSSystem;
            mainTask.MaterialId = newMaterial.Id;
            mainTask.FinishTime = DateTime.Now;
            mainTask.ToPlace = toPlace.Id;
            mainTask.RealToPlace = toPlace.SrmStationCode;
            //记录区域 [EditBy shaocx,2022-05-02]
            EDevice device = BusinessHelper.GetSrmDeviceByPlaceNo(toPlace.SrmStationCode);
            mainTask.Area = ((int)device).ToString();
            context.Task_Main.Add(mainTask);
            EDeviceType deviceType = EDeviceType.堆垛机;
            var plcTaskNo = BusinessHelper.CreatePlcTaskIdForSrmTask();
            //中间点
            var midPlace = StationHandler.GetRgvPlaceBySrmPlaceForInStore(context, toPlace);
            if (midPlace == null)
            {
                throw new Exception("没有找到RGV入库位置");
            }
            Task_Part partTask = new Task_Part()
            {
                Id = Guid.NewGuid().ToString(),
                InOutFlag = mainTask.InOutFlag,
                InOutFlagName = mainTask.InOutFlagName,
                DeviceType = (int)deviceType,
                DeviceTypeName = deviceType.ToString(),
                DeviceId = Convert.ToInt16(device),
                DeviceName = Convert.ToString(device),
                IsAllowSimulateExecute = true,
                TaskSequence = 1,
                MainTaskSequence = mainTask.TaskSequence,//增加主任务优先级
                TaskDescribe = handlerType,
                OperationRemark = handlerType,
                MainTaskId = mainTask.Id,
                MainTaskNo = mainTask.TaskNo,
                MaterialId = mainTask.MaterialId,
                Qty = mainTask.Qty,//增加数量 【EditBy shaocx,2022-05-01】
                //增加 订货号和序列号的赋值 [Editby shaocx,2022-04-21]
                SerialNumber = mainTask.SerialNumber,
                OrderNo = mainTask.OrderNo,
                //ToNumber = toNumber,
                //TaskGuid = taskGuid,
                //MatID = MatID,
                //MatName = MatName,
                //Remark = "手动入库创建设备任务" + description,
                //Creator = "手动入库创建设备任务" + "," + Dns.GetHostName(),
                //UpdateUser = "手动入库创建设备任务" + "," + Dns.GetHostName(),
                CreateTime = DateTime.Now,
                ModifyTime = DateTime.Now,
                PlcTaskId = plcTaskNo,
                //ContainerId = ctn.ContainerId,
                SalverId = salver.Id,
                SalverCode = salver.SalverCode,
                SourcePlace = midPlace.Id,
                ToPlace = toPlace.Id,
                RealSourcePlace = midPlace.SrmStationCode,
                RealToPlace = toPlace.SrmStationCode,
                TaskName = string.Format("(来源:id-{0} no-{1},目标:id-{2} no-{3})", midPlace.Id, midPlace.SrmStationCode,
                            toPlace.Id, toPlace.SrmStationCode),
                IsReleased = true,
                // IsCurrentTask = 0,
                IsFinished = true,
                //IsLastTask = 0,
                //Void = 0,
                TaskState = (int)DeviceTaskStatusEnum.已完成,
                TaskStateName = DeviceTaskStatusEnum.已完成.ToString(),
                TaskType = (int)_DeviceTaskTypeEnum,
                TaskTypeName = _DeviceTaskTypeEnum.ToString(),
                MaterialType = (int)_MaterialType,
                MaterialTypeName = _MaterialType.ToString(),
                IssueTime = DateTime.Now,
                FinishTime = DateTime.Now
            };
            context.Task_Part.Add(partTask);
            //保存人工处理日志 [EditBy shaocx,2022-05-01]
            Base_PersonHandlerRecord record = new Base_PersonHandlerRecord()
            {
                MainTaskNo = mainTask.TaskNo,
                HandlerType = handlerType,
                PartTaskId = partTask.Id,
                PlcTaskId = partTask.PlcTaskId,
                RealSourcePlace = tb_SrmNo,
                RealToPlace = tb_SrmNo,
                SalverCode = salver.SalverCode,
                SerialNumber = serialNumber,
                OrderNo = orderNo,
                TaskTypeName = partTask.TaskTypeName,
                Qty = qty,
                ManualHandlerRemark = remark,
                OperationRemark = remark
            };
            PersonHandlerRecordHandler.SavePersonHandlerRecord(context, record);
        }
        private void TestBatchForm_Load(object sender, EventArgs e)
        {
            LoadItemType();
            this.tb_SalverCount.Text = "1";
        }
        private void button3_Click(object sender, EventArgs e)
        {
            //批量将发动机物料改为托盘
            //获取库存的列表
            int MaterialType = (int)MaterialTypeEnum.一般物料;
            List salverList = null;
            using (DbModel edm = new DbModel())
            {
                salverList = edm.V_Store.Where(x => x.MaterialType == MaterialType).ToList();
                //378
                //去掉这些有发动机的库位
                List strList = GetString();
                salverList = salverList.Where(x => !strList.Contains(x.SrmStationCode)).ToList();
                //16个,还有362
                ////还要排除 第4库区,第1排,第一层的所有库位
                //salverList = salverList.Where(x => !(x.Area == "4" && x.Layer == 1 && x.Row == 1)).ToList();
                ////还有350,减去了 12个
            }
            ////更新数据
            foreach (var item in salverList)
            {
                var tb_SrmNo = item.SrmStationCode;
                //按照某个库位将发动机物料改为托盘
                //先删除
                ClearPlace(tb_SrmNo);
                //再新增托盘
                do_button1_Click(tb_SrmNo);
                Thread.Sleep(1000);
            }
        }
        private List GetString()
        {
            List list = new List();
            list.Add("2-01-10-02".Trim());
            list.Add("1-01-04-01".Trim());
            list.Add("1-01-06-04".Trim());
            return list;
        }
    }
}