using System;
|
using iWareSql.DBModel;
|
using System.Linq;
|
using XiGang.Core.Model;
|
using iWareCommon;
|
using iWareCommon.Common.Globle;
|
|
namespace iWareSql.DataAccess
|
{
|
|
public class SalverHandler
|
{
|
|
/// <summary>
|
/// 根据库位对象找到Srm_Container
|
/// </summary>
|
/// <param name="edm"></param>
|
/// <param name="place"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 根据托盘ID获取托盘对象
|
/// </summary>
|
/// <param name="edm"></param>
|
/// <param name="stationId"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
|
/// <summary>
|
/// 根据托盘编号获取托盘对象
|
/// </summary>
|
/// <param name="edm"></param>
|
/// <param name="salverCode"></param>
|
/// <returns></returns>
|
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();
|
}
|
|
/// <summary>
|
/// 入库时,使用托盘
|
/// </summary>
|
/// <param name="edm"></param>
|
/// <param name="salverCode"></param>
|
/// <param name="errMsg"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
|
/// <summary>
|
/// 创建新的托盘
|
/// </summary>
|
/// <param name="edm"></param>
|
/// <param name="remark"></param>
|
/// <returns></returns>
|
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;
|
}
|
}
|
|
|
/// <summary>
|
/// 创建新的托盘
|
/// </summary>
|
/// <param name="edm"></param>
|
/// <param name="remark"></param>
|
/// <returns></returns>
|
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;
|
}
|
}
|
}
|
}
|