using System;
using iWareSql.DBModel;
using System.Linq;
using XiGang.Core.Model;
using iWareCommon;
using iWareCommon.Common.Globle;
namespace iWareSql.DataAccess
{
public class SalverHandler
{
///
/// 根据库位对象找到Srm_Container
///
///
///
///
public static Base_Salver GetSalverByPlace(DbModel edm, Base_Station place)
{
Base_Salver_V_Station cvp_FromPlace = Salver_Station_Handler.GetCVPByPlaceId(place.Id, true, edm);
Base_Salver salver = edm.Base_Salver.Where(o => o.Id == cvp_FromPlace.SalverId).FirstOrDefault();
return salver;
}
///
/// 根据托盘ID获取托盘对象
///
///
///
///
public static Base_Salver GetSalveById(DbModel edm, string salverId)
{
var materials = edm.Base_Salver.Where(x => x.Id == salverId).ToList();
if (materials != null && materials.Count == 1)
return materials.First();
return null;
}
///
/// 根据托盘编号获取托盘对象
///
///
///
///
public static Base_Salver GetSalveByCode(DbModel edm, string salverCode)
{
var salver = edm.Base_Salver.Where(x => x.SalverCode == salverCode).ToList();
if (salver == null || salver.Count == 0)
{
return null;
}
if (salver.Count > 1)
{
throw new Exception("托盘号" + salverCode + "存在重复的" + salver.Count() + "条托盘基础数据!");
}
return salver.First();
}
///
/// 入库时,使用托盘
///
///
///
///
///
public static Base_Salver GetSalveByCodeForInTask(DbModel edm, string salverCode, out string errMsg)
{
errMsg = "";
var salver = GetSalveByCode(edm, salverCode);
if (salver == null)
{
salver = BaseCreateSalver(edm, "入库时,新建托盘", salverCode);
}
else
{
//验证托盘是否被占用
Base_Salver_V_Station cvp = Salver_Station_Handler.GetCVPByContainerId(edm, salver.Id);
if (cvp != null)
{
errMsg = "托盘" + salverCode + "被站点" + cvp.StationCode + "占用";
return null;
}
Base_Salver_V_Material svm = Salver_Material_Handler.GetIVCByContainerId(edm, salver.Id);
if (svm != null)
{
errMsg = "托盘" + salverCode + "被物料占用";
return null;
}
}
return salver;
}
///
/// 创建新的托盘
///
///
///
///
private static Base_Salver BaseCreateSalver(DbModel edm, string remark, string salverCode)
{
try
{
Base_Salver salver = new Base_Salver();
salver.Id = Guid.NewGuid().ToString();
salver.SalverCode = salverCode;
salver.SalverName = salverCode;
salver.OperationRemark = remark;
salver.IsVirtual = false;
salver.CreateTime = salver.ModifyTime = DateTime.Now;
salver.CreateBy = salver.ModifyBy = SysGloble.WCSSystem;
edm.Base_Salver.Add(salver);
return salver;
}
catch (Exception)
{
throw;
}
}
///
/// 创建新的托盘
///
///
///
///
public static Base_Salver CreateVirtualSalver(DbModel edm, string remark)
{
try
{
Base_Salver salver = new Base_Salver();
salver.Id = Guid.NewGuid().ToString();
salver.SalverCode = "虚拟空托-" + salver.Id;
salver.SalverName = "虚拟空托-" + salver.Id;
salver.OperationRemark = remark;
salver.IsVirtual = true;
salver.CreateTime = salver.ModifyTime = DateTime.Now;
salver.CreateBy = salver.ModifyBy = SysGloble.WCSSystem;
edm.Base_Salver.Add(salver);
return salver;
}
catch (Exception)
{
throw;
}
}
}
}