using FineUIPro;
using iWareCommon.Common.Entity;
using iWareDataCore.BASE.Entity;
using iWareDataCore.BASE.Service;
using iWareDataCore.TASK.Entity;
using iWareDataCore.TASK.Service;
using iWareWms;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace iWareWms.View.TASK.MainTaskView
{
    public partial class CreateMainTask : PageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                
                //var screenWidth = (int)Session[_screenWidth];
                //GridMainTask.Width = new System.Web.UI.WebControls.Unit((int)screenWidth * 0.85);
                tbTaskNo.Text = DateTime.Now.ToFileTime().ToString();
                btnSubmit.Enabled = false;
                tbId.Text = "0";
                
            }
        }
        protected override Grid GetGrid()
        {
            return GridMainTask;
        }
        /// 
        /// 数据绑定
        ///  
        ///  GetDataSource(out string msg)
        {
            var materials = MaterialViewService.GetInstance().QueryByParam(new QueryParam
            {
                Filter = new Dictionary { { "Code", tbMCode.Text.Trim() } }
            }, out msg);
            var res = new List();
            materials.ForEach(x =>
            {
                x.Quantity = 1;
                res.Add(x);
            });
            return res;
        }
        /// 
        /// 确认物料是否存在
        ///  
        ///  { {"Code" ,tbMCode.Text.Trim() } }
            }, out msg);
            var res = new List();
            if (materialViews != null && materialViews.Count>0)
            {
                materialViews.ForEach(x =>
            {
                x.Quantity = 1;
                res.Add(x);
            });
            GridMainTask.DataSource = res;
            GridMainTask.DataBind();
            }else
            {
                 Alert.ShowInTop("此物料不存在,请先录入!");
                return;
            }
            tbMCode.Enabled = false;
            btnConfirm.Enabled = false;
            btnSubmit.Enabled = true;
            //出库任务时,判断库存是否有此物料
            var list = new List();
            var placeMaterial = PlaceMaterialViewService.GetInstance().QueryByParam(new QueryParam
            {
                Search = new Dictionary { { "MaterialCode", tbMCode.Text.Trim() } }
            }, out msg);
            placeMaterial.ForEach(x => list.Add(x.MaterialCode));
            if (!list.Contains(tbMCode.Text.ToString()) || list.Count == 0)
            {
                ddlTaskType.SelectedValue = "0";
                ddlTaskType.SelectedIndex = 0;
                return;
            }
            else
            {
                ddlTaskType.SelectedValue = "1";
                ddlTaskType.SelectedIndex = 1;
                return;
            }
        }
        
        /// 
        /// 点击重置按钮后触发的事件
        ///  
        /// 
        /// 生成主任务
        ///  
        /// ();
            for (var i = 0; i < GetGrid().GetMergedData().Count; i++)
            {
                var detail = GetGrid().GetMergedData()[i];
                var id = int.Parse(detail["values"]["Id"].ToString());
                var code = detail["values"]["Code"].ToString();
                var quantity = int.Parse(detail["values"]["Quantity"].ToString());
                if (quantity > 0)
                {
                    if (materialIdQuantityDict.ContainsKey(id))
                    {
                        materialIdQuantityDict[id] += quantity;
                    }
                    else
                    {
                        materialIdQuantityDict.Add(id, quantity);
                    }
                }
                
            }
            var materials = new List();
            var sourcePlaceCode = "";
            var toPlaceCode = "";
            if (ddlTaskType.SelectedValue == "0")//入库
            {
                sourcePlaceCode = "100101";//gate11库位号
                //查找空闲的库位
                var placeviewlst = PlaceService.GetInstance().GetEmptyAndInOutGate();
                if (placeviewlst == null && placeviewlst.Count<4)
                {
                    Alert.ShowInTop("空库位不足!");
                    return;
                }
                toPlaceCode = placeviewlst.FirstOrDefault(x => x.PlaceTypeName== "普通库位").Code;
                
            }
            else//出库
            {
                //查找要出库的库位信息
               string scode= PlaceMaterialViewService.GetInstance().GetPlaceMaterialViews(tbMCode.Text.Trim());
               if (string.IsNullOrEmpty(scode))
                {
                    Alert.ShowInTop("物料所在库位未找到!");
                    return;
                }
                sourcePlaceCode=scode;
                toPlaceCode = "100202";//gate22库位号
            }
            int type = int.Parse(ddlTaskType.SelectedValue);
            var mainTask = MainTaskService.GetInstance().SaveMainTask(new MainTaskEntity
            {
                TaskNo = tbTaskNo.Text.Trim(),
                TaskType = type,
                MaterialCode = tbMCode.Text.ToString(),
                SysCode = "1",
                SendTime = DateTime.Now,
                SourcePlace = sourcePlaceCode,
                ToPlace = toPlaceCode,
                ProcessCardNumber = "",
                Quantity = 1,
                Status = 0,
                DecompositionTime = DateTime.Now,
                WipStatus = 0,
                DecompositionTimes = 0,
                PackageNo = "",
                IsLots = 0,
                Priority = 0,
            },type, out msg);
            
            if (!string.IsNullOrEmpty(msg))
            {
                Alert.ShowInTop(msg);
                return;
            }
            WriteLog("主任务生成" + tbTaskNo.Text.Trim() + msg, "生成任务");
            Alert.ShowInTop("生成成功!");
            btnCancel_Click(null, null);
        }
    }
}