using HH.WCS.Mobox3.YNJT_PT.models.other;
using HH.WCS.Mobox3.YNJT_PT.util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static HH.WCS.Mobox3.YNJT_PT.dispatch.NDC;
namespace HH.WCS.Mobox3.YNJT_PT.wms {
///
/// 容器帮助类
///
internal class ContainerHelper {
internal static string GenerateCntrNo() {
var id = SYSHelper.GetSerialNumber("托盘号", "TP");
var date = DateTime.Now.ToString("yyMMdd");
return $"TP{date}{id.ToString().PadLeft(4, '0')}";
}
///
/// 根据容器类型、目的地、状态查询容器
///
///
///
///
///
internal static List GetCntrListByPurpose(string dest, string cntrType, int state) {
//1.0 查货位容器表
var db = new SqlHelper().GetInstance();
var list = db.Queryable().Where(a => a.S_DEST == dest && a.S_TYPE == cntrType && a.N_B_STATE == state).ToList();
return list;
}
///
/// TN_ContainerHelper.test("4L天然水箱装6入", 50, "335ml东方树叶15入", 30);
///
///
///
///
///
//internal static void test(string item1, int qty1, string item2, int qty2) {
// var db = new SqlHelper().GetInstance();
// var cntr = db.Queryable().Includes(a => a.CntrItemRelList).
// Where(a => a.CntrItemRelList.Count(b => b.S_ITEM_CODE == item1 && int.Parse(b.F_QTY) > qty1) > 0
// && a.CntrItemRelList.Count(b => b.S_ITEM_CODE == item2 && int.Parse(b.F_QTY) > qty2) > 0).First();
//}
///
/// 判断容器是否有物料信息
///
///
///
internal static bool CheckEmpty(string cntr) {
//1.0 查货位容器表
var db = new SqlHelper().GetInstance();
return db.Queryable().Count(a => a.S_LOC_CODE.Trim() == cntr) == 0;
}
internal static bool AddCntr(string cntrCode)
{
var res = false;
var db = new SqlHelper().GetInstance();
var TN_Container = new Container { S_CODE = cntrCode };
try
{
res = db.Insertable(TN_Container).ExecuteCommand() > 0;
}
catch (Exception ex)
{
LogHelper.Info($"添加容器错误,错误原因:{ex.Message}", "WMS");
}
return res;
}
internal static bool AddCntr(string cntrCode, string itemCode) {
var res = false;
var db = new SqlHelper().GetInstance();
var TN_Container = new Container { S_CODE = cntrCode };
var cntrItemRel = new CntrItemRel { S_CNTR_CODE = cntrCode, S_ITEM_CODE = itemCode };
try {
db.BeginTran();
db.Insertable(TN_Container).ExecuteCommand();
db.Insertable(cntrItemRel).ExecuteCommand();
db.CommitTran();
res = true;
}
catch (Exception ex) {
db.RollbackTran();
}
return res;
}
///
/// 根据容器号获取容器信息
///
///
///
internal static Container GetCntr(string cntr, bool create = false) {
//1.0 查货位容器表
var db = new SqlHelper().GetInstance();
var old = db.Queryable().Where(a => a.S_CODE == cntr).First();
if (old == null && create) {
var model = new Container { S_CODE = cntr };
if (db.Insertable(model).ExecuteCommand() > 0) {
old = model;
}
}
return old;
}
///
/// 根据容器获取物料信息
///
///
///
internal static List GetCntrItemRel(string cntr) {
var db = new SqlHelper().GetInstance();
var list = db.Queryable().Where(a => a.S_CNTR_CODE == cntr).ToList();
return list;
}
///
/// 根据容器来源和状态获取托盘
///
///
///
///
internal static List GetCntr(string dest, int state, string cntrType = "") {
var db = new SqlHelper().GetInstance();
if (cntrType == "") {
return db.Queryable().Where(a => a.S_DEST == dest && a.N_B_STATE == state).ToList();
}
else {
return db.Queryable().Where(a => a.S_DEST == dest && a.N_B_STATE == state && a.S_TYPE == cntrType).ToList();
}
}
internal static bool UpdateCntr(List cntrs, string dest, int state) {
var res = false;
var db = new SqlHelper().GetInstance();
var models = db.Queryable().Where(a => cntrs.Contains(a.S_CODE)).ToList();
if (models.Count > 0) {
models.ForEach(a => {
a.S_DEST = dest; a.N_B_STATE = state;
db.Updateable(a).UpdateColumns(it => new { it.S_DEST, it.N_B_STATE }).ExecuteCommand();
});
res = true;
}
return res;
}
internal static bool UpdateCntrDest(List cntrs, string dest) {
var res = false;
var db = new SqlHelper().GetInstance();
var models = db.Queryable().Where(a => cntrs.Contains(a.S_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;
}
///
/// 更新托盘来源
///
///
///
///
internal static bool UpdateCntrSrc(string cntr, string src) {
var res = false;
var db = new SqlHelper().GetInstance();
var model = db.Queryable().Where(a => a.S_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 cntrs, int state) {
var res = false;
var db = new SqlHelper().GetInstance();
var models = db.Queryable().Where(a => cntrs.Contains(a.S_CODE)).ToList();
if (models.Count > 0) {
models.ForEach(a => {
a.N_B_STATE = state;
db.Updateable(a).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand();
});
res = true;
}
return res;
}
internal static bool UpdateCntr(List cntrs, string src, string dest, int state) {
var res = false;
var db = new SqlHelper().GetInstance();
var models = db.Queryable().Where(a => cntrs.Contains(a.S_CODE)).ToList();
if (models.Count > 0) {
models.ForEach(a => {
a.S_DEST = dest; a.N_B_STATE = state; a.S_SRC = src;
db.Updateable(a).UpdateColumns(it => new { it.S_DEST, it.N_B_STATE, it.S_SRC }).ExecuteCommand();
});
res = true;
}
return res;
}
public static bool ClearCntrInfo(string cntr) {
var db = new SqlHelper().GetInstance();
var model = db.Queryable().Where(a => a.S_CODE == cntr).First();
if (model != null) {
model.S_SRC = "";
model.S_DEST = "";
model.N_B_STATE = 0;
model.T_MODIFY = DateTime.Now;
}
db.Updateable(model).UpdateColumns(it => new { it.S_SRC, it.S_DEST, it.N_B_STATE, it.T_MODIFY }).ExecuteCommand();
return db.Deleteable().Where(a => a.S_CNTR_CODE.Trim() == cntr.Trim()).ExecuteCommand() > 0;
}
internal static List GetCntrBySrc(string src, int state, string cntrType = "") {
var db = new SqlHelper().GetInstance();
if (cntrType == "") {
return db.Queryable().Where(a => a.S_SRC == src && a.N_B_STATE == state).ToList();
}
else {
return db.Queryable().Where(a => a.S_SRC == src && a.N_B_STATE == state && a.S_TYPE == cntrType).ToList();
}
}
}
}