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
|
{
|
/// <summary>
|
/// 根据 ContainerId 查找Item
|
/// </summary>
|
/// <param name="ContainerId"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 根据物料ID获取物料对象
|
/// </summary>
|
/// <param name="edm"></param>
|
/// <param name="stationId"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 创建新的空托盘物料
|
/// </summary>
|
/// <param name="edm"></param>
|
/// <param name="remark"></param>
|
/// <returns></returns>
|
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;
|
}
|
}
|
|
|
/// <summary>
|
/// 获取指定 物料编号的物料
|
/// </summary>
|
/// <param name="edm"></param>
|
/// <param name="codeItemsByCode"></param>
|
/// <param name="remark"></param>
|
/// <returns></returns>
|
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;
|
}
|
}
|
|
/// <summary>
|
/// 创建新的物料
|
/// </summary>
|
/// <param name="edm"></param>
|
/// <param name="materialTypeEnum"></param>
|
/// <param name="remark"></param>
|
/// <param name="serialNumber">序列号</param>
|
/// <param name="orderNo">订货号</param>
|
/// <param name="Qty"></param>
|
/// <returns></returns>
|
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;
|
}
|
}
|
|
|
/// <summary>
|
/// 根据序列号查找物料
|
/// </summary>
|
/// <param name="serialNumber">序列号</param>
|
/// <param name="noFoundThrowError">如果没有发现物料,是否需要报警</param>
|
/// <returns></returns>
|
public static MessageModel<Base_Material> 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<Base_Material>.Fail("根据序列号'" + serialNumber + "'没有找到物料");
|
}
|
else
|
{
|
return MessageModel<Base_Material>.Success("成功", null);
|
}
|
}
|
if (maters.Count > 1)
|
{
|
return MessageModel<Base_Material>.Fail("根据序列号'" + serialNumber + "'找到" + maters.Count + "个物料");
|
}
|
return MessageModel<Base_Material>.Success("成功", maters[0]);
|
}
|
|
}
|
}
|