using HH.WCS.QingXigongchang.util;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Linq.Expressions;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace HH.WCS.QingXigongchang.wms
|
{
|
/// <summary>
|
/// 容器帮助类
|
/// </summary>
|
internal class ContainerHelper
|
{
|
|
/// <summary>
|
/// 根据容器类型、目的地、状态查询容器
|
/// </summary>
|
/// <param name="dest"></param>
|
/// <param name="cntrType"></param>
|
/// <param name="state"></param>
|
/// <returns></returns>
|
internal static List<Container> GetCntrListByPurpose(string dest, string cntrType, string state)
|
{
|
//1.0 查货位容器表
|
var db = new SqlHelper<object>().GetInstance();
|
var list = db.Queryable<Container>().Where(a => a.S_DEST == dest && a.S_TYPE == cntrType && a.S_CNTR_STATE == state).ToList();
|
return list;
|
}
|
|
|
|
/// <summary>
|
/// 判断容器是否有物料信息
|
/// </summary>
|
/// <param name="cntr"></param>
|
/// <returns></returns>
|
internal static bool CheckEmpty(string cntr)
|
{
|
//1.0 查货位容器表
|
var db = new SqlHelper<object>().GetInstance();
|
return db.Queryable<LocCntrRel>().Count(a => a.S_LOC_CODE.Trim() == cntr) == 0;
|
|
}
|
|
/// <summary>
|
/// 根据容器号获取容器信息
|
/// </summary>
|
/// <param name="cntr"></param>
|
/// <returns></returns>
|
internal static Container GetCntr(string cntr)
|
{
|
//1.0 查货位容器表
|
var db = new SqlHelper<object>().GetInstance();
|
return db.Queryable<Container>().Where(a => a.S_CNTR_CODE == cntr).First();
|
|
}
|
|
/// <summary>
|
/// 根据容器获取物料信息
|
/// </summary>
|
/// <param name="cntr"></param>
|
/// <returns></returns>
|
internal static List<CntrItemRel> GetCntrItemRel(string cntr)
|
{
|
if (string.IsNullOrEmpty(cntr))
|
return new List<CntrItemRel>();
|
var db = new SqlHelper<object>().GetInstance();
|
var list = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr).ToList();
|
return list;
|
}
|
internal static List<CntrItemRel> GetCntrItemRel()
|
{
|
var db = new SqlHelper<object>().GetInstance();
|
var list = db.Queryable<CntrItemRel>().ToList();
|
return list;
|
}
|
internal static ItemInfo GetItem(string itemname)
|
{
|
var db = new SqlHelper<object>().GetInstance();
|
var list = db.Queryable<ItemInfo>().Where(a => a.S_ITEM_NAME == itemname || a.S_ITEM_CODE == itemname).ToList().FirstOrDefault();
|
return list;
|
}
|
internal static ItemInfo GetItem(Expression<Func<ItemInfo, bool>> expression)
|
{
|
var db = new SqlHelper<object>().GetInstance();
|
var list = db.Queryable<ItemInfo>().Where(expression)?.First();
|
return list;
|
}
|
|
/// <summary>
|
/// 物料信息绑定到满容器上
|
/// </summary>
|
/// <param name="cntrCode"></param>
|
/// <param name="itemCode"></param>
|
/// <param name="batchNo"></param>
|
/// <param name="qty"></param>
|
/// <param name="purpose">容器用途,用于哪个线边还是目的点</param>
|
/// <returns></returns>
|
internal static bool BindCntrItem(Container cntr, string itemCode, string batchNo, string qty)
|
{
|
var res = false;
|
var db = new SqlHelper<object>().GetInstance();
|
try
|
{
|
db.BeginTran();
|
db.Updateable(cntr).UpdateColumns(it => new { it.S_DEST }).ExecuteCommand();
|
//1.将原有容器物料信息删除
|
db.Deleteable<CntrItemRel>().Where(it => it.S_CNTR_CODE == cntr.S_CNTR_CODE.Trim()).ExecuteCommand();
|
//2.插入新的容器物料信息(容器号不变)
|
var cir = new CntrItemRel { S_CNTR_CODE = cntr.S_CNTR_CODE.Trim(), S_BATCH_NO = batchNo, F_QTY = qty, S_ITEM_CODE = itemCode };
|
db.Insertable<CntrItemRel>(cir).ExecuteCommand();
|
|
db.Ado.CommitTran();
|
res = true;
|
}
|
catch (Exception ex)
|
{
|
db.Ado.RollbackTran();
|
}
|
|
return res;
|
}
|
/// <summary>
|
/// 根据容器来源和状态获取托盘
|
/// </summary>
|
/// <param name="src"></param>
|
/// <param name="state"></param>
|
/// <returns></returns>
|
internal static List<Container> GetCntr(string dest, string state, string cntrType = "")
|
{
|
var db = new SqlHelper<object>().GetInstance();
|
if (cntrType == "")
|
{
|
return db.Queryable<Container>().Where(a => a.S_DEST == dest && a.S_CNTR_STATE == state).ToList();
|
}
|
else
|
{
|
return db.Queryable<Container>().Where(a => a.S_DEST == dest && a.S_CNTR_STATE == state && a.S_TYPE == cntrType).ToList();
|
}
|
}
|
internal static bool UpdateCntr(List<string> cntrs, string dest, string state)
|
{
|
var res = false;
|
var db = new SqlHelper<object>().GetInstance();
|
var models = db.Queryable<Container>().Where(a => cntrs.Contains(a.S_CNTR_CODE)).ToList();
|
if (models.Count > 0)
|
{
|
models.ForEach(a =>
|
{
|
a.S_DEST = dest; a.S_CNTR_STATE = state;
|
db.Updateable(a).UpdateColumns(it => new { it.S_DEST, it.S_CNTR_STATE }).ExecuteCommand();
|
});
|
res = true;
|
}
|
return res;
|
}
|
internal static bool UpdateCntrDest(List<string> cntrs, string dest)
|
{
|
var res = false;
|
var db = new SqlHelper<object>().GetInstance();
|
var models = db.Queryable<Container>().Where(a => cntrs.Contains(a.S_CNTR_CODE)).ToList();
|
if (models.Count > 0)
|
{
|
models.ForEach(a =>
|
{
|
a.S_DEST = dest;
|
db.Updateable(a).UpdateColumns(it => new { it.S_DEST }).ExecuteCommand();
|
});
|
res = true;
|
}
|
return res;
|
}
|
/// <summary>
|
/// 更新托盘来源
|
/// </summary>
|
/// <param name="cntr"></param>
|
/// <param name="src"></param>
|
/// <returns></returns>
|
internal static bool UpdateCntrSrc(string cntr, string src)
|
{
|
var res = false;
|
var db = new SqlHelper<object>().GetInstance();
|
var model = db.Queryable<Container>().Where(a => a.S_CNTR_CODE == cntr).First();
|
if (model != null)
|
{
|
model.S_SRC = src;
|
model.T_MODIFY = DateTime.Now;
|
res = db.Updateable(model).UpdateColumns(it => new { it.S_SRC, it.T_MODIFY }).ExecuteCommand() > 0;
|
}
|
return res;
|
}
|
internal static bool UpdateCntrState(List<string> cntrs, string state)
|
{
|
var res = false;
|
var db = new SqlHelper<object>().GetInstance();
|
var models = db.Queryable<Container>().Where(a => cntrs.Contains(a.S_CNTR_CODE)).ToList();
|
if (models.Count > 0)
|
{
|
models.ForEach(a =>
|
{
|
a.S_CNTR_STATE = state;
|
db.Updateable(a).UpdateColumns(it => new { it.S_CNTR_STATE }).ExecuteCommand();
|
});
|
res = true;
|
}
|
return res;
|
}
|
|
internal static bool UpdateCntr(List<string> cntrs, string src, string dest, string state)
|
{
|
var res = false;
|
var db = new SqlHelper<object>().GetInstance();
|
var models = db.Queryable<Container>().Where(a => cntrs.Contains(a.S_CNTR_CODE)).ToList();
|
if (models.Count > 0)
|
{
|
models.ForEach(a =>
|
{
|
a.S_DEST = dest; a.S_CNTR_STATE = state; a.S_SRC = src;
|
db.Updateable(a).UpdateColumns(it => new { it.S_DEST, it.S_CNTR_STATE, it.S_SRC }).ExecuteCommand();
|
});
|
res = true;
|
}
|
return res;
|
}
|
public static bool ClearCntrInfo(string cntr)
|
{
|
|
var db = new SqlHelper<object>().GetInstance();
|
var model = db.Queryable<Container>().Where(a => a.S_CNTR_CODE == cntr).First();
|
if (model != null)
|
{
|
model.S_SRC = "";
|
model.S_DEST = "";
|
model.S_CNTR_STATE = "";
|
model.T_MODIFY = DateTime.Now;
|
|
}
|
db.Updateable(model).UpdateColumns(it => new { it.S_SRC, it.S_DEST, it.S_CNTR_STATE, it.T_MODIFY }).ExecuteCommand();
|
return db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE.Trim() == cntr.Trim()).ExecuteCommand() > 0;
|
}
|
internal static List<Container> GetCntrBySrc(string src, string state, string cntrType = "")
|
{
|
var db = new SqlHelper<object>().GetInstance();
|
if (cntrType == "")
|
{
|
return db.Queryable<Container>().Where(a => a.S_SRC == src && a.S_CNTR_STATE == state).ToList();
|
}
|
else
|
{
|
return db.Queryable<Container>().Where(a => a.S_SRC == src && a.S_CNTR_STATE == state && a.S_TYPE == cntrType).ToList();
|
}
|
}
|
|
internal static Container GetContainer(Expression<Func<Container, bool>> expression)
|
{
|
var db = new SqlHelper<object>().GetInstance();
|
return db.Queryable<Container>().Where(expression)?.First();
|
}
|
}
|
}
|