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;
}
///
/// 数据绑定
///
///
///
protected override List 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;
}
///
/// 确认物料是否存在
///
///
///
protected void btnConfirm_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(tbMCode.Text))
{
ShowNotify("请先确认物料");
return;
}
string msg;
var materialViews = MaterialViewService.GetInstance().QueryByParam(new QueryParam
{
Filter = new Dictionary { {"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;
}
}
///
/// 点击重置按钮后触发的事件
///
///
///
protected void btnCancel_Click(object sender, EventArgs e)
{
tbMCode.Text = string.Empty;
tbMCode.Focus();
GridMainTask.DataSource = null;
GridMainTask.DataBind();
tbTaskNo.Text = DateTime.Now.ToFileTime().ToString();
tbMateriaCode.Text = string.Empty;
tbId.Text = "-1";
tbMCode.Enabled = true;
btnConfirm.Enabled = true;
btnSubmit.Enabled = false;
ddlTaskType.Enabled = false;
}
///
/// 生成主任务
///
///
///
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(tbTaskNo.Text.Trim()))
{
Alert.ShowInTop("未获取到主任务号!");
return;
}
string msg;
var materialIdQuantityDict = new Dictionary();
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);
}
}
}