using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
|
using iWareSql;
|
using iWareCommon;
|
using iWareSql.Orm;
|
using iWareCommon.Utils;
|
using iWareSql.DBModel;
|
using iWareModel;
|
|
namespace iWareSql.DataAccess
|
{
|
/// <summary>
|
/// 托盘和站点的关系
|
/// </summary>
|
public class Salver_Station_Handler
|
{
|
|
|
/// <summary>
|
/// 根据库位号寻找CVP对象
|
/// </summary>
|
/// <param name="edm"></param>
|
/// <param name="placeId"></param>
|
/// <returns></returns>
|
public static Base_Salver_V_Station GetCVPByPlaceId(DbModel edm, int placeId)
|
{
|
var cvps = edm.Base_Salver_V_Station.Where(x => x.StationId == placeId);
|
if (cvps != null)
|
{
|
var readCVPs = cvps.ToList();
|
if (readCVPs == null)
|
{
|
return null;
|
}
|
else
|
{
|
if (readCVPs.Count > 1)
|
{
|
throw new Exception("同一个PlaceID:" + placeId + "关联了" + readCVPs.Count + "个CVP数据!");
|
}
|
else if (readCVPs.Count == 1)
|
{
|
return readCVPs[0];
|
}
|
else
|
{
|
return null;
|
}
|
}
|
}
|
else
|
{
|
return null;
|
}
|
}
|
|
/// <summary>
|
/// 通过containerId获取 Base_Salver_V_Station 数据
|
/// </summary>
|
/// <param name="edm"></param>
|
/// <param name="mat"></param>
|
public static Base_Salver_V_Station GetCVPByContainerId(DbModel edm, string containerId)
|
{
|
Base_Salver_V_Station cvp = null;
|
var cvps = edm.Base_Salver_V_Station.Where(x => x.SalverId == containerId);
|
if (cvps == null)
|
{
|
//throw new Exception(string.Format("根据containerId:{0}没有找到cvp数据", containerId));
|
return null;
|
}
|
else
|
{
|
if (cvps.Count() == 1)
|
{
|
cvp = cvps.FirstOrDefault();
|
}
|
else if (cvps.Count() == 0)
|
{
|
return null;//新增条件 【Editby shaocx,2022-11-8】
|
}
|
else
|
{
|
throw new Exception(string.Format("根据containerId:{0}找到{1}条cvp数据", containerId, cvps.Count()));
|
}
|
}
|
return cvp;
|
}
|
|
///// <summary>
|
///// 通过ItemId获取 Base_Salver_V_Station 数据
|
///// </summary>
|
///// <param name="edm"></param>
|
///// <param name="itemId"></param>
|
//public static Base_Salver_V_Station GetCVPByItemId(DbModel edm, string itemId)
|
//{
|
// Base_Salver_V_Material ivc = Salver_Material_Handler.GetIVCByItemId(edm, itemId);
|
// return GetCVPByContainerId(edm, ivc.SalverId);
|
//}
|
|
/// <summary>
|
/// 根据库位ID查找Base_Salver_V_Station对象
|
/// </summary>
|
/// <param name="placeId"></param>
|
/// <returns></returns>
|
public static Base_Salver_V_Station GetCVPByPlaceId(int placeId, bool isThrowErrorWhenCVPIsNULL, DbModel edm = null)
|
{
|
if (edm == null)
|
{
|
using (edm = new DbModel())
|
{
|
return Innner_GetCVPByPlaceId(placeId, edm, isThrowErrorWhenCVPIsNULL);
|
}
|
}
|
else
|
{
|
return Innner_GetCVPByPlaceId(placeId, edm, isThrowErrorWhenCVPIsNULL);
|
}
|
}
|
private static Base_Salver_V_Station Innner_GetCVPByPlaceId(int placeId, DbModel edm, bool isThrowErrorWhenCVPIsNULL = true)
|
{
|
var cvps = edm.Base_Salver_V_Station.Where(o => o.StationId == placeId);
|
if (cvps == null || cvps.Count() == 0)
|
{
|
if (isThrowErrorWhenCVPIsNULL)
|
{
|
throw new Exception("库位号" + placeId + "没有对应CVP对象");
|
}
|
}
|
if (cvps.Count() > 1)
|
{
|
throw new Exception("一个库位号" + placeId + "错误的对应了多个CVP对象");
|
}
|
return cvps.FirstOrDefault();
|
}
|
|
/// <summary>
|
/// 创建一个托盘和库位的绑定关系
|
/// </summary>
|
/// <param name="ctn"></param>
|
/// <param name="place"></param>
|
/// <returns></returns>
|
public static bool CreateCvPRelation(string userName, Base_Salver ctn, Base_Station place, Salver_V_Station_StateEnum state, string remark)
|
{
|
using (DbModel edm = new DbModel())
|
{
|
CreateCvPRelation(edm, userName, ctn, place, state, remark);
|
int i = edm.SaveChanges();
|
return i > 0 ? true : false;
|
};
|
}
|
|
/// <summary>
|
/// 创建一个托盘和库位的绑定关系
|
/// </summary>
|
/// <param name="ctn"></param>
|
/// <param name="place"></param>
|
/// <returns></returns>
|
public static void CreateCvPRelation(DbModel edm, string userName, Base_Salver salver, Base_Station place, Salver_V_Station_StateEnum state, string remark)
|
{
|
Base_Salver_V_Station cvp = new Base_Salver_V_Station()
|
{
|
State = (int)state,
|
StateName = state.ToString(),
|
|
StationId = place.Id,
|
StationCode = place.SrmStationCode,
|
|
InStoreTime = DateTime.Now,//入库时间
|
|
Id = Guid.NewGuid().ToString(),
|
SalverId = salver.Id,
|
SalverCode = salver.SalverCode,
|
OperationRemark = remark,
|
CreateTime = DateTime.Now,
|
CreateBy = userName,
|
ModifyBy = userName,
|
ModifyTime = DateTime.Now
|
};
|
|
edm.Base_Salver_V_Station.Add(cvp);
|
}
|
|
|
/// <summary>
|
/// CVP状态回退
|
/// </summary>
|
/// <param name="edm"></param>
|
/// <param name="placeId"></param>
|
/// <param name="description"></param>
|
public static void RoolBackCVPState(DbModel edm, int placeId, string description)
|
{
|
//Base_Salver_V_Station cvp = CvP_Handles.GetCVPByPlaceId(edm, placeId);
|
////修改CVP的状态
|
//if (cvp.OldStatus == null)
|
//{
|
// throw new Exception("CVP的旧状态为NULL!cvpid:" + cvp.ID);
|
//}
|
//cvp.State = cvp.OldStatus;
|
//cvp.Remark = description;
|
//cvp.LastModifier = MachineHelper.GetHostName();
|
//cvp.UpdateTime = DateTime.Now;
|
}
|
}
|
}
|