using HH.WCS.Mobox3.FJJT.models.other;
using HH.WCS.Mobox3.FJJT.util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static HH.WCS.Mobox3.FJJT.dispatch.NDC;
using static HH.WCS.Mobox3.FJJT.util.ExcetionHelper;
namespace HH.WCS.Mobox3.FJJT.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 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 ,int detallCount = 0)
{
var res = false;
var db = new SqlHelper().GetInstance();
var TN_Container = new Container { S_CODE = cntrCode ,N_DETAIL_COUNT = detallCount };
try
{
var container = db.Queryable().Where(a => a.S_CODE.Trim() == cntrCode).First();
if (container == null)
{
res = db.Insertable(TN_Container).ExecuteCommand() > 0;
}
}
catch (Exception ex)
{
WMSHelper.addAlarmRecord("系统错误", "高", $"添加容器错误,错误原因:{ex.Message}");
throw new BusinessException($"添加容器错误,错误原因:{ex.Message}");
}
return res;
}
internal static bool AddContainer(string cntrCode,int cntrType ,int detallCount = 0)
{
var res = false;
var db = new SqlHelper().GetInstance();
var TN_Container = new Container { S_CODE = cntrCode, N_TYPE = cntrType,S_TYPE = Container.GetCntrType(cntrType),N_DETAIL_COUNT = detallCount };
try
{
db.BeginTran();
var container = db.Queryable().Where(a => a.S_CODE.Trim() == cntrCode).First();
if (container == null)
{
db.Insertable(TN_Container).ExecuteCommand();
}
else
{
container.N_DETAIL_COUNT = detallCount;
container.N_E_STATE = 0;
db.Updateable(container).ExecuteCommand();
}
db.CommitTran();
res = true;
}
catch (Exception ex)
{
db.RollbackTran();
WMSHelper.addAlarmRecord("系统错误", "高", $"添加容器错误,错误原因:{ex.Message}");
throw new BusinessException($"添加容器错误,错误原因:{ex.Message}");
}
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.Trim() == 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 bool updateCntrItemRel(CntrItemRel cntrItem)
{
var db = new SqlHelper().GetInstance();
return db.Updateable(cntrItem).ExecuteCommand()>0;
}
internal static bool UpdateCntr(Container container)
{
var db = new SqlHelper().GetInstance();
return db.Updateable(container).ExecuteCommand()>0;
}
///
///
///
///
/// 托盘异常状态 0.正常 1.异常
///
internal static bool UpdateCntrState(string cntrCode, int state) {
var res = false;
var db = new SqlHelper().GetInstance();
var models = db.Queryable().Where(a => a.S_CODE.Trim() == cntrCode).ToList();
if (models.Count > 0) {
models.ForEach(a => {
a.N_E_STATE = state;
db.Updateable(a).UpdateColumns(it => new { it.N_E_STATE }).ExecuteCommand();
});
res = true;
}
return res;
}
}
}