using System; using iWareSql.DBModel; using System.Linq; using XiGang.Core.Model; using iWareCommon; using iWareCommon.Common.Globle; using iWareModel; using System.Threading.Tasks; using XiGang.Core.Model.PostParamModels; using iWareModel.Entity.SalverMaterialBind; namespace iWareSql.DataAccess { public class MaterialHandler { /// /// 根据 ContainerId 查找Item /// /// /// public static Base_Material GetItemByContainerId(string ContainerId, DbModel edm) { var cvi = Salver_Material_Handler.GetIVCByContainerId(edm, ContainerId); if (cvi == null) throw new Exception("根据ContainerId " + ContainerId + " 没有找到CVI"); var item = GetMaterialById(edm, cvi.MaterialId); if (item == null) throw new Exception("根据ItemId " + cvi.MaterialId + " 没有找到Item"); return item; } /// /// 根据物料ID获取物料对象 /// /// /// /// public static Base_Material GetMaterialById(DbModel edm, string materialId) { var materials = edm.Base_Material.Where(x => x.Id == materialId).ToList(); if (materials != null && materials.Count == 1) return materials.First(); return null; } /// /// 创建新的空托盘物料 /// /// /// /// public static Base_Material CreateEmptySlaverMaterial(DbModel edm, string remark, int Qty) { try { MaterialTypeEnum cargoTypeEnum = MaterialTypeEnum.托盘; //注意:表Base_Material的OrderNo和SerialNumber是必填的,因此空托盘给他赋值一个空格进去! C_AnalyzeMaterialPostParam analyzeMaterialPostParam = new C_AnalyzeMaterialPostParam(); //注意:表Base_Material的OrderNo和SerialNumber是必填的,因此空托盘给他赋值一个空格进去! analyzeMaterialPostParam.SerialNumber = " "; analyzeMaterialPostParam.OrderNo = " "; analyzeMaterialPostParam.CargoNo = " "; analyzeMaterialPostParam.Supplier = "";//供应商 return BaseCreateMaterial(edm, analyzeMaterialPostParam, cargoTypeEnum, remark, " ", " ", Qty); } catch (Exception) { throw; } } /// /// 获取指定 物料编号的物料 /// /// /// /// /// public static Base_Material CreateCargoMaterial(DbModel edm, C_AnalyzeMaterialPostParam request, string remark, string serialNumber, string orderNo) { try { MaterialTypeEnum cargoTypeEnum = MaterialTypeEnum.一般物料; return BaseCreateMaterial(edm, request, cargoTypeEnum, remark, serialNumber, orderNo); } catch (Exception) { throw; } } /// /// 创建新的物料 /// /// /// /// /// 序列号 /// 订货号 /// /// private static Base_Material BaseCreateMaterial(DbModel edm, C_AnalyzeMaterialPostParam request, MaterialTypeEnum materialTypeEnum, string remark, string serialNumber, string orderNo, int Qty = 1) { try { Base_Material material = new Base_Material(); material.Id = Guid.NewGuid().ToString(); material.SerialNumber = serialNumber; material.OrderNo = orderNo; material.Supplier = request.Supplier;//工厂 material.Batch = ""; material.CargoNo = request.CargoNo; material.Qty = Qty; material.MaterialType = Convert.ToInt32(materialTypeEnum); material.MaterialTypeName = materialTypeEnum.ToString(); MyCodeItems items_SeriesCode = request.items_SeriesCode; MyCodeItems items_CategoryCode = request.items_CategoryCode; MyCodeItems items_ModelNumber = request.items_ModelNumber; //增加机型等信息 if (items_CategoryCode != null) { material.CargoType_CodeItemId = items_CategoryCode.Id.ToString(); material.CargoTypeName = items_CategoryCode.name; } if (items_SeriesCode != null) { material.Series_CodeItemId = items_SeriesCode.Id.ToString(); material.SeriesName = items_SeriesCode.name; } if (items_ModelNumber != null) { material.MaterialModel_CodeItemId = items_ModelNumber.Id.ToString(); material.MaterialModel = items_ModelNumber.name; } material.CreateTime = material.ModifyTime = DateTime.Now; material.CreateBy = material.ModifyBy = SysGloble.WCSSystem; material.OperationRemark = remark + "新增物料"; edm.Base_Material.Add(material); return material; } catch (Exception) { throw; } } /// /// 根据序列号查找物料 /// /// 序列号 /// 如果没有发现物料,是否需要报警 /// public static MessageModel GetMaterialBySerialNumber(DbModel edm, string serialNumber, bool noFoundThrowError) { //var maters = await _dal.Query(x => x.SerialNumber == serialNumber); var maters = edm.Base_Material.Where(x => x.SerialNumber == serialNumber).ToList(); if (maters == null || maters.Count == 0) { if (noFoundThrowError) { return MessageModel.Fail("根据序列号'" + serialNumber + "'没有找到物料"); } else { return MessageModel.Success("成功", null); } } if (maters.Count > 1) { return MessageModel.Fail("根据序列号'" + serialNumber + "'找到" + maters.Count + "个物料"); } return MessageModel.Success("成功", maters[0]); } } }