using HH.WMS.DAL.SysMgr;
using HH.WMS.Entitys.Entitys;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HH.WMS.Entitys;
using System.Data;
using HH.WMS.Entitys.Basic;
using HH.WMS.DAL.Basic;
using HH.WMS.DAL;
namespace HH.WMS.BLL.SysMgr
{
public class TN_WM_B_TRAY_CAPACITYBLL : DapperBaseBLL
{
#region 返回托盘物料容量关联实体
///
/// 根据条件获取容量实体
///
///
///
/// [HANHE(XDL)] CREATED BY 2018-11-16
public TN_WM_B_TRAY_CAPACITYEntity GetEntityByItemCode(string itemCode)
{
return CreateDAL().GetEntityByItemCode(itemCode);
}
#endregion
///
/// PDA接口-根据托盘码获取存放容量
///
/// 托盘码
///
/// [HANHE(XDL)] CREATED BY 2019-03-19
public OperateResult GetCapacityinfoByTrayCode(string trayCode)
{
DataTable dt = CreateDAL().GetCapacityinfoByTrayCode(trayCode);
DataTable dt1 = CreateDAL().GetModel(" where CN_S_TRAY_CODE='" + trayCode + "'");
dt.Columns.Add(new DataColumn("CN_F_TW", typeof(decimal)));
dt.Columns.Add("CN_S_MODEL");
dt.Columns.Add("CN_C_IS_WARRANTY_PARTS");
dt.Columns.Add("CN_S_AREA_CODE");
dt.Columns.Add("CN_S_AREA_NAME");
dt.Columns.Add("CN_S_TRAY_AREA");
string trayarea = "";
foreach (DataRow logic in dt1.Rows)
{
trayarea += logic["CN_S_LOGIC_CODE"] + ",";
}
if (!string.IsNullOrEmpty(trayarea))
{
trayarea = trayarea.Substring(0, trayarea.Length - 1);
}
dt.Rows[0]["CN_S_TRAY_AREA"] = trayarea;
Dictionary itemGross = new Dictionary();
Dictionary model = new Dictionary();
Dictionary iswarrnyParts = new Dictionary();
Dictionary areacodeGross = new Dictionary();
Dictionary areanameGross = new Dictionary();
foreach (DataRow dr in dt.Rows)
{
string itemCode = dr["CN_S_ITEM_CODE"].ToString().Trim();
if (!string.IsNullOrEmpty(itemCode))
{
if (!itemGross.ContainsKey(itemCode))
{
AutoBomItemEntity item = CreateDAL().GetItemEntity(itemCode);
itemGross.Add(itemCode, item.CN_F_TW);
model.Add(itemCode, item.CN_S_MODEL);
iswarrnyParts.Add(itemCode, item.CN_C_IS_WARRNTY_PARTS);
dr["CN_F_TW"] = item.CN_F_TW;
dr["CN_S_MODEL"] = item.CN_S_MODEL;
dr["CN_C_IS_WARRANTY_PARTS"] = item.CN_C_IS_WARRNTY_PARTS;
AutoBomStockAreaEntity entityarea = CreateDAL().GetStockArea("CN_S_AREA_NAME", item.CN_S_STORE_TYPE);
areacodeGross.Add(itemCode, entityarea == null ? "" : entityarea.CN_S_AREA_CODE);
areanameGross.Add(itemCode, entityarea == null ? "" : entityarea.CN_S_AREA_NAME);
dr["CN_S_AREA_CODE"] = entityarea == null ? "" : entityarea.CN_S_AREA_CODE;
dr["CN_S_AREA_NAME"] = entityarea == null ? "" : entityarea.CN_S_AREA_NAME;
}
else
{
dr["CN_F_TW"] = itemGross[itemCode];
dr["CN_S_MODEL"] = model[itemCode];
dr["CN_C_IS_WARRANTY_PARTS"] = iswarrnyParts[itemCode];
dr["CN_S_AREA_CODE"] = areacodeGross[itemCode];
dr["CN_S_AREA_NAME"] = areanameGross[itemCode];
}
}
}
var result = dt.AsEnumerable().Select(x => new
{
CN_S_ITEM_CODE = x.Field("CN_S_ITEM_CODE"),
CN_S_ITEM_NAME = x.Field("CN_S_ITEM_NAME"),
CN_S_MODEL = x.Field("CN_S_MODEL"),
CN_F_PACKING_QTY = x.Field("CN_F_PACKING_QTY")
}).GroupBy(y => new
{
CN_S_ITEM_CODE = y.CN_S_ITEM_CODE,
CN_S_ITEM_NAME = y.CN_S_ITEM_NAME,
CN_S_MODEL = y.CN_S_MODEL
}).Select(g => new
{
CN_S_ITEM_CODE = g.Key.CN_S_ITEM_CODE,
CN_S_ITEM_NAME = g.Key.CN_S_ITEM_NAME,
CN_S_MODEL = g.Key.CN_S_MODEL,
CN_F_PACKING_QTY = g.Sum(r => r.CN_F_PACKING_QTY)
}).ToList();
return OperateResult.Succeed("", new
{
Data = dt, //已码物料
DataSum = result //已码物料汇总
});
}
///
/// PDA接口-根据物料编码获取物料存放容器信息
///
/// 物料编码
///
public OperateResult GetTrayCapacityByitem(string itemCode)
{
TN_WM_B_TRAY_CAPACITYEntity trayCapacityEntity = new TN_WM_B_TRAY_CAPACITYEntity();
AutoBomItemEntity itementity = CreateDAL().GetItemEntity(itemCode);//获取物料判断物料类型
if (itementity == null)
{
}
else
{
trayCapacityEntity = CreateDAL>().GetSingleEntity(new { CN_S_ITEM_CODE = itemCode });
}
AutoBomStockAreaEntity entityarea = CreateDAL().GetStockArea("CN_S_AREA_NAME", itementity.CN_S_STORE_TYPE);
trayCapacityEntity.CN_S_AREA_CODE = entityarea == null ? "" : entityarea.CN_S_AREA_CODE;
trayCapacityEntity.CN_S_AREA_NAME = entityarea == null ? "" : entityarea.CN_S_AREA_NAME;
trayCapacityEntity.CN_S_MODEL = itementity == null ? "" : itementity.CN_S_MODEL;
trayCapacityEntity.CN_C_IS_TRAY = entityarea == null ? "" : entityarea.CN_C_IS_TRAY;
trayCapacityEntity.CN_C_IS_CHECKTRAY = entityarea == null ? "" : entityarea.CN_C_IS_CHECKTRAY;
return OperateResult.Succeed("", trayCapacityEntity);
}
}
}