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; } } } }