天津投入产出系统后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1664 lines
66 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QMAPP.DAL;
using QMAPP.MD.Entity;
using QMFrameWork.Data;
using QMFrameWork.Log;
using System.Data;
using System.Net.Sockets;
using QMAPP.MD.Entity.View;
namespace QMAPP.MD.DAL
{
/// <summary>
/// 模块名称:Bom信息
/// 作 者:郭兆福
/// 编写日期:2017年05月10日
/// </summary>
public class PbomDAL : BaseDAL
{
#region 获取信息
/// <summary>
/// 获取信息
/// </summary>
/// <param name="">条件</param>
/// <returns>信息</returns>
public Pbom Get(Pbom model)
{
StringBuilder sqlBuilder = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
sqlBuilder.Append(" SELECT * ");
sqlBuilder.Append(" FROM T_MD_PBOM ");
sqlBuilder.Append(" WHERE FLGDEL = '0'");
if (string.IsNullOrEmpty(model.PBOM_CODE) == false)
{
sqlBuilder.Append(" AND PBOM_CODE= @PBOM_CODE ");
parameters.Add(new DataParameter { ParameterName = "PBOM_CODE", DataType = DbType.String, Value = model.PBOM_CODE });
}
if (string.IsNullOrEmpty(model.MATERIAL_CODE) == false)
{
sqlBuilder.Append(" AND MATERIAL_CODE= @MATERIAL_CODE ");
parameters.Add(new DataParameter { ParameterName = "MATERIAL_CODE", DataType = DbType.String, Value = model.MATERIAL_CODE });
}
if (string.IsNullOrEmpty(model.PID) == false)
{
sqlBuilder.Append(" AND PID= @PID ");
parameters.Add(new DataParameter { ParameterName = "PID", DataType = DbType.String, Value = model.PID });
}
try
{
if (null != BaseSession)
{
string sqlChange = ChangeSqlByDB(sqlBuilder.ToString(), BaseSession);
model = BaseSession.Get<Pbom>(sqlChange, parameters.ToArray());
}
else
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
string sqlChange = ChangeSqlByDB(sqlBuilder.ToString(), session);
//获取信息
model = session.Get<Pbom>(sqlChange, parameters.ToArray());
}
}
return model;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "Bom信息维护数据层-获取信息");
throw ex;
}
}
#endregion
#region 获取列表
/// <summary>
/// 获取列表
/// </summary>
/// <param name="condition">条件</param>
/// <param name="page">数据页</param>
/// <returns>数据页</returns>
public DataPage GetList(Pbom condition, DataPage page)
{
string sql = null;
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql = this.GetQuerySql(condition, ref parameters);
#region 排序
//分页关键字段及排序
page.KeyName = "PID";
if (string.IsNullOrEmpty(page.SortExpression))
{
page.SortExpression = "UPDATEDATE DESC";
}
#endregion
using (IDataSession session = AppDataFactory.CreateMainSession())
{
string sqlChange = base.ChangeSqlByDB(sql,session);
page = session.GetDataPage<Pbom>(sqlChange, parameters.ToArray(), page);
}
return page;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "Bom信息维护数据层-获取列表");
throw ex;
}
}
/// <summary>
/// 获取列表信息
/// </summary>
/// <param name="condition"></param>
/// <returns></returns>
public List<Pbom> GetList(Pbom condition)
{
List<Pbom> list = new List<Pbom>();
StringBuilder sqlBuilder = new StringBuilder();
StringBuilder whereBuilder = new StringBuilder();
List<DataParameter> paraList = new List<DataParameter>();
//构成查询语句
sqlBuilder.Append("SELECT PID,PBOM_CODE,MATERIAL_CODE,PROPERTY_CODE,EOA_DATE,EXP_DATE,STATUS,ITEM_NUM,VER_NUM,REMARK,CREATEUSER,CREATEDATE,UPDATEUSER,UPDATEDATE ");
sqlBuilder.Append("FROM T_MD_PBOM where ");
if (string.IsNullOrEmpty(condition.PBOM_CODE) == false)
{
whereBuilder.AppendFormat("and PBOM_CODE=@PBOM_CODE ");
paraList.Add(new DataParameter() { ParameterName = "PBOM_CODE", DataType = DbType.String, Value = condition.PBOM_CODE });
}
if (string.IsNullOrEmpty(condition.MATERIAL_CODE) == false)
{
whereBuilder.AppendFormat("and MATERIAL_CODE=@MATERIAL_CODE ");
paraList.Add(new DataParameter() { ParameterName = "MATERIAL_CODE", DataType = DbType.String, Value = condition.MATERIAL_CODE });
}
sqlBuilder.Append(whereBuilder.ToString().Substring(3));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
list = session.GetList<Pbom>(sqlBuilder.ToString(), paraList.ToArray()).ToList<Pbom>();
}
return list;
}
#endregion
#region 获取查询语句
/// <summary>
/// 获取查询语句
/// </summary>
/// <param name="user">查询条件</param>
/// <param name="parameters">参数</param>
/// <returns>查询语句</returns>
private string GetQuerySql(Pbom condition, ref List<DataParameter> parameters)
{
StringBuilder sqlBuilder = new StringBuilder();
StringBuilder whereBuilder = new StringBuilder();
try
{
//构成查询语句
sqlBuilder.AppendLine(" SELECT B.PID ");
sqlBuilder.AppendLine(" ,B.PBOM_CODE ");
sqlBuilder.AppendLine(" ,B.MATERIAL_CODE ");
sqlBuilder.AppendLine(" ,M.MATERIAL_NAME ");
sqlBuilder.AppendLine(" ,B.PROPERTY_CODE ");
sqlBuilder.AppendLine(" ,R.ROUTE_CODE ");
sqlBuilder.AppendLine(" ,R.ROUTE_NAME ");
sqlBuilder.AppendLine(" ,B.EOA_DATE ");
sqlBuilder.AppendLine(" ,B.EXP_DATE ");
sqlBuilder.AppendLine(" ,B.STATUS ");
sqlBuilder.AppendLine(" ,B.ITEM_NUM ");
sqlBuilder.AppendLine(" ,B.VER_NUM ");
sqlBuilder.AppendLine(" ,B.REMARK ");
sqlBuilder.AppendLine(" ,B.CREATEUSER ");
sqlBuilder.AppendLine(" ,B.CREATEDATE ");
sqlBuilder.AppendLine(" ,B.UPDATEUSER ");
sqlBuilder.AppendLine(" ,B.UPDATEDATE ");
sqlBuilder.AppendLine(" ,B.FLGDEL ");
sqlBuilder.AppendLine(" ,B.FACTORY_CODE ");
sqlBuilder.AppendLine(" ,F.FACTORY_NAME ");
sqlBuilder.AppendLine(" FROM T_MD_PBOM B ");
sqlBuilder.AppendLine(" LEFT JOIN T_MD_MATERIAL M ON M.MATERIAL_CODE=B.MATERIAL_CODE AND M.FLGDEL ='0' ");
sqlBuilder.AppendLine(" LEFT JOIN T_MD_MATERIAL_ROUTE MR ON B.MATERIAL_CODE=MR.MATERIAL_CODE AND MR.FLGDEL ='0' ");
sqlBuilder.AppendLine(" LEFT JOIN T_MD_PROCESS_ROUTE R ON MR.ROUTE_CODE=R.ROUTE_CODE AND R.FLGDEL ='0' ");
sqlBuilder.AppendLine(" LEFT JOIN T_MD_FACTORY F ON F.FACTORY_CODE=B.FACTORY_CODE ");
whereBuilder.Append(" AND B.FLGDEL='0'");
//查询条件
//工厂
if (string.IsNullOrEmpty(condition.FACTORY_CODE) == false)
{
whereBuilder.Append(" AND B.FACTORY_CODE = @FACTORY_CODE");
parameters.Add(new DataParameter { ParameterName = "FACTORY_CODE", DataType = DbType.String, Value = condition.FACTORY_CODE });
}
//PBOM号
if (string.IsNullOrEmpty(condition.PBOM_CODE) == false)
{
whereBuilder.Append(" AND B.PBOM_CODE = @PBOM_CODE ");
parameters.Add(new DataParameter { ParameterName = "PBOM_CODE", DataType = DbType.String, Value = condition.PBOM_CODE });
}
//物料号
if (string.IsNullOrEmpty(condition.MATERIAL_CODE) == false)
{
whereBuilder.Append(" AND B.MATERIAL_CODE = @MATERIAL_CODE ");
parameters.Add(new DataParameter { ParameterName = "MATERIAL_CODE", DataType = DbType.String, Value = condition.MATERIAL_CODE });
}
//BOM版本
if (string.IsNullOrEmpty(condition.VER_NUM) == false)
{
whereBuilder.Append(" AND B.VER_NUM= @VER_NUM ");
parameters.Add(new DataParameter { ParameterName = "VER_NUM", DataType = DbType.String, Value = condition.VER_NUM });
}
//BOM特征码
if (string.IsNullOrEmpty(condition.PROPERTY_CODE) == false)
{
whereBuilder.Append(" AND B.PROPERTY_CODE= @PROPERTY_CODE ");
parameters.Add(new DataParameter { ParameterName = "PROPERTY_CODE", DataType = DbType.String, Value = condition.PROPERTY_CODE });
}
if (whereBuilder.Length > 0)
{
sqlBuilder.Append(" WHERE " + whereBuilder.ToString().Substring(4));
}
return sqlBuilder.ToString();
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region BOM号,物料号信息是否重复
/// <summary>
/// 判断是否存在
/// </summary>
/// <param name="info"></param>
/// <returns>true:已存在;fasel:不存在。</returns>
public bool ExistsBomHdr(Pbom model)
{
string PID = "";
int count = 0;
List<DataParameter> parameters = new List<DataParameter>();
StringBuilder sqlBuilder = new StringBuilder();
try
{
if (string.IsNullOrEmpty(model.PID) == false)
{
PID = model.PID;
}
sqlBuilder.Append(" SELECT COUNT(*) FROM T_MD_PBOM WHERE PID <> @PID AND FACTORY_CODE <> @FACTORY_CODE AND (PBOM_CODE =@PBOM_CODE OR MATERIAL_CODE =@MATERIAL_CODE ) ");
parameters.Add(new DataParameter { ParameterName = "PID", DataType = DbType.String, Value = PID });
parameters.Add(new DataParameter { ParameterName = "FACTORY_CODE", DataType = DbType.String, Value = model.FACTORY_CODE });
parameters.Add(new DataParameter { ParameterName = "PBOM_CODE", DataType = DbType.String, Value = model.PBOM_CODE });
parameters.Add(new DataParameter { ParameterName = "MATERIAL_CODE", DataType = DbType.String, Value = model.MATERIAL_CODE });
if (this.BaseSession != null)
{
string sqlChange = base.ChangeSqlByDB(sqlBuilder.ToString(), BaseSession);
count = Convert.ToInt32(BaseSession.ExecuteSqlScalar(sqlChange, parameters.ToArray()));
}
else
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
string sqlChange = ChangeSqlByDB(sqlBuilder.ToString(), session);
count = Convert.ToInt32(session.ExecuteSqlScalar(sqlChange, parameters.ToArray()));
}
}
if (count > 0)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
RecordExceptionLog(ex, "Bom信息维护数据层-获取列表");
throw ex;
}
}
#endregion
#region 判断物料是否存在
/// <summary>
/// 判断是否存在
/// </summary>
/// <param name="materialCode">物料号</param>
/// <param name="isItem">是否PBOM项目</param>
/// <returns>true:已存在;fasel:不存在。</returns>
public bool IsExists(string materialCode,bool isItem)
{
int count = 0;
List<DataParameter> parameters = new List<DataParameter>();
StringBuilder sqlBuilder = new StringBuilder();
try
{
sqlBuilder.Append(" SELECT COUNT(*) FROM ");
if (isItem == true)
{
sqlBuilder.Append(" T_MD_PBOM_ITEM ");
}
else
{
sqlBuilder.Append(" T_MD_PBOM ");
}
sqlBuilder.Append(" WHERE MATERIAL_CODE =@MATERIAL_CODE ");
sqlBuilder.Append(" AND FLGDEL = '0' ");
parameters.Add(new DataParameter { ParameterName = "MATERIAL_CODE", DataType = DbType.String, Value = materialCode });
if (this.BaseSession != null)
{
string sqlChange = base.ChangeSqlByDB(sqlBuilder.ToString(), BaseSession);
count = Convert.ToInt32(BaseSession.ExecuteSqlScalar(sqlChange, parameters.ToArray()));
}
else
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
string sqlChange = ChangeSqlByDB(sqlBuilder.ToString(), session);
count = Convert.ToInt32(session.ExecuteSqlScalar(sqlChange, parameters.ToArray()));
}
}
return count == 0 ? false : true;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "判断物料号是否在BOM存在");
throw ex;
}
}
#endregion
#region 插入信息
/// <summary>
/// 插入信息(单表)
/// </summary>
/// <param name="">信息</param>
/// <returns>插入行数</returns>
public int Insert(Pbom model)
{
int count = 0;
try
{
if (BaseSession != null)
{
//插入基本信息
count = BaseSession.Insert<Pbom>(model);
}
else
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
//插入基本信息
count = session.Insert<Pbom>(model);
}
}
return count;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "Bom信息维护数据层-插入信息");
throw ex;
}
}
#endregion
#region 删除Bom信息
/// <summary>
/// 删除信息
/// </summary>
/// <param name="model">Bom信息(ID)</param>
/// <returns>删除个数</returns>
public int DeleteBomHdr(Pbom model)
{
StringBuilder sqlBuilder = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
StringBuilder whereBuilder = new StringBuilder();
int count = 0;
try
{
//构成查询语句
sqlBuilder.AppendLine(" UPDATE T_MD_PBOM SET FLGDEL = '1' ");
if (string.IsNullOrEmpty(model.PID) == false)
{
whereBuilder.Append(" AND PID=@PID ");
parameters.Add(new DataParameter { ParameterName = "PID", DataType = DbType.String, Value = model.PID });
}
if (whereBuilder.Length > 0)
{
sqlBuilder.Append(" WHERE " + whereBuilder.ToString().Substring(4));
}
if (this.BaseSession != null)
{
string sqlChange = base.ChangeSqlByDB(sqlBuilder.ToString(), BaseSession);
//删除基本信息
count = BaseSession.ExecuteSql(sqlChange, parameters.ToArray());
}
else
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
string sqlChange = base.ChangeSqlByDB(sqlBuilder.ToString(), session);
//删除基本信息
count = session.ExecuteSql(sqlChange, parameters.ToArray());
}
}
return count;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "Bom信息维护数据层-删除Bom信息");
throw ex;
}
}
#endregion
#region Bom信息下拉
/// <summary>
///
/// </summary>
/// <param name="condition"></param>
/// <returns></returns>
public List<Pbom> GetBomHdrList(Pbom condition)
{
List<Pbom> list = new List<Pbom>();
string sql = null;
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql = this.GetQuerySql(condition, ref parameters);
using (IDataSession session = AppDataFactory.CreateMainSession())
{
string sqlChange = base.ChangeSqlByDB(sql, session);
list = session.GetList<Pbom>(sqlChange, parameters.ToArray()).ToList();
}
return list;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "BOM信息-下拉列表");
throw ex;
}
}
#endregion
#region 根据BOM明细查找BOM头
/// <summary>
/// 根据BOM明细查找BOM头
/// </summary>
/// <param name="materialCode"></param>
/// <returns>BOM头列表</returns>
public List<Pbom> GetPbomByItem(string materialCode)
{
StringBuilder sqlBuilder = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
sqlBuilder.Append(" SELECT H.* ");
sqlBuilder.Append(" FROM T_MD_PBOM H WHERE H.FLGDEL = '0' AND EXISTS ");
sqlBuilder.Append(" ( ");
sqlBuilder.Append(" SELECT 1 FROM T_MD_PBOM_ITEM I ");
sqlBuilder.Append(" WHERE H.PBOM_CODE = I.PBOM_CODE AND I.FLGDEL = '0' AND I.MATERIAL_CODE = @MATERIAL_CODE ");
sqlBuilder.Append(" ) ");
parameters.Add(new DataParameter("MATERIAL_CODE", DbType.String, materialCode));
try
{
if (null != BaseSession)
{
string sqlChange = ChangeSqlByDB(sqlBuilder.ToString(), BaseSession);
return BaseSession.GetList<Pbom>(sqlChange, parameters.ToArray()).ToList();
}
else
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
string sqlChange = ChangeSqlByDB(sqlBuilder.ToString(), session);
//获取信息
return session.GetList<Pbom>(sqlChange, parameters.ToArray()).ToList();
}
}
}
catch (Exception ex)
{
RecordExceptionLog(ex, "根据BOM明细查找BOM头 -出错!");
throw ex;
}
}
/// <summary>
/// 根据物料号查找BOM头
/// </summary>
/// <param name="materialCode"></param>
/// <returns>BOM头列表</returns>
public List<Pbom> GetPbomByMaterialCode(string materialCode)
{
StringBuilder sqlBuilder = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
sqlBuilder.AppendLine("SELECT H.* ");
sqlBuilder.AppendLine(" FROM T_MD_PBOM AS H ");
sqlBuilder.AppendLine(" WHERE H.FLGDEL = '0' ");
sqlBuilder.AppendLine(" AND (EXISTS (SELECT 1 ");
sqlBuilder.AppendLine(" FROM T_MD_PBOM_ITEM AS I ");
sqlBuilder.AppendLine(" WHERE H.PBOM_CODE = I.PBOM_CODE ");
sqlBuilder.AppendLine(" AND I.FLGDEL = '0' ");
sqlBuilder.AppendLine(" AND I.MATERIAL_CODE = @materialcode) ");
sqlBuilder.AppendLine(" OR H.[MATERIAL_CODE]=@materialcode) ");
parameters.Add(new DataParameter("materialcode", DbType.String, materialCode));
try
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
string sqlChange = ChangeSqlByDB(sqlBuilder.ToString(), session);
//获取信息
return session.GetList<Pbom>(sqlChange, parameters.ToArray()).ToList();
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 根据物料号查找最终的总成BOM头
/// </summary>
/// <param name="materialCode"></param>
/// <returns>BOM头列表</returns>
public List<Pbom> GetFinalPbom(string materialCode)
{
StringBuilder sqlBuilder = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
sqlBuilder.AppendLine("WITH CTE AS ( ");
sqlBuilder.AppendLine(" SELECT H.*,0 as N ");
sqlBuilder.AppendLine(" FROM T_MD_PBOM AS H ");
sqlBuilder.AppendLine(" WHERE H.FLGDEL = '0' ");
sqlBuilder.AppendLine(" AND (EXISTS (SELECT 1 ");
sqlBuilder.AppendLine(" FROM T_MD_PBOM_ITEM AS I ");
sqlBuilder.AppendLine(" WHERE H.PBOM_CODE = I.PBOM_CODE ");
sqlBuilder.AppendLine(" AND I.FLGDEL = '0' ");
sqlBuilder.AppendLine(" AND I.MATERIAL_CODE = @materialcode) ");
sqlBuilder.AppendLine(" OR H.[MATERIAL_CODE]=@materialcode) ");
sqlBuilder.AppendLine(" UNION ALL ");
sqlBuilder.AppendLine(" SELECT B.*,C.N+1 AS N ");
sqlBuilder.AppendLine(" FROM CTE C ");
sqlBuilder.AppendLine(" JOIN T_MD_PBOM_ITEM AS BI ");
sqlBuilder.AppendLine(" ON BI.MATERIAL_CODE=c.MATERIAL_CODE ");
sqlBuilder.AppendLine(" JOIN T_MD_PBOM AS B ");
sqlBuilder.AppendLine(" ON B.PBOM_CODE=BI.PBOM_CODE ");
sqlBuilder.AppendLine(" WHERE B.FLGDEL='0' ");
sqlBuilder.AppendLine(") ");
sqlBuilder.AppendLine("SELECT * FROM CTE ");
sqlBuilder.AppendLine(" WHERE N=(SELECT MAX(N) FROM CTE ) ");
parameters.Add(new DataParameter("materialcode", DbType.String, materialCode));
try
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
string sqlChange = ChangeSqlByDB(sqlBuilder.ToString(), session);
//获取信息
return session.GetList<Pbom>(sqlChange, parameters.ToArray()).ToList();
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 配置BOM明细
#region 获取BOM明细列表
/// <summary>
/// 获取列表
/// </summary>
/// <param name="condition">条件</param>
/// <param name="page">数据页</param>
/// <returns>数据页</returns>
public DataPage BomHdrConfigList(PbomItem condition, DataPage page)
{
string sql = "";
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql = this.GetBomDetailListSql(condition, ref parameters);
//分页关键字段及排序
page.KeyName = "PID";
if (string.IsNullOrEmpty(page.SortExpression))
{
page.SortExpression = "UPDATEDATE DESC";
}
using (IDataSession session = AppDataFactory.CreateMainSession())
{
string sqlChange = base.ChangeSqlByDB(sql, session);
page = session.GetDataPage<PbomItem>(sqlChange, parameters.ToArray(), page);
}
return page;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "Bom信息维护数据层-获取明细列表");
throw ex;
}
}
#endregion
#region 获取查询语句
/// <summary>
/// 获取查询语句
/// </summary>
/// <param name="user">查询条件</param>
/// <param name="parameters">参数</param>
/// <returns>查询语句</returns>
private string GetBomDetailListSql(PbomItem condition, ref List<DataParameter> parameters)
{
StringBuilder sqlBuilder = new StringBuilder();
StringBuilder whereBuilder = new StringBuilder();
try
{
//构成查询语句
sqlBuilder.AppendLine(" SELECT B.PID ");
sqlBuilder.AppendLine(" ,B.PBOM_CODE ");
sqlBuilder.AppendLine(" ,B.PROPERTY_CODE ");
sqlBuilder.AppendLine(" ,B.MATERIAL_CODE ");
sqlBuilder.AppendLine(" ,M.MATERIAL_NAME ");
sqlBuilder.AppendLine(" ,B.SEQ_NUM ");
sqlBuilder.AppendLine(" ,B.UP_SQ_NUM ");
sqlBuilder.AppendLine(" ,B.UNIT_SUM ");
sqlBuilder.AppendLine(" ,B.GMP ");
sqlBuilder.AppendLine(" ,C.WORKCELL_NAME AS GMP_NAME ");
sqlBuilder.AppendLine(" ,B.FLAG_CSP ");
sqlBuilder.AppendLine(" ,B.MFRS ");
sqlBuilder.AppendLine(" ,B.REMARK ");
sqlBuilder.AppendLine(" ,B.FLGDEL ");
sqlBuilder.AppendLine(" ,B.CREATEUSER ");
sqlBuilder.AppendLine(" ,B.CREATEDATE ");
sqlBuilder.AppendLine(" ,B.UPDATEUSER ");
sqlBuilder.AppendLine(" ,B.UPDATEDATE ");
sqlBuilder.AppendLine(" FROM T_MD_PBOM_ITEM B ");
sqlBuilder.AppendLine(" LEFT JOIN T_MD_WORKCELL C ON B.GMP = C.WORKCELL_CODE AND C.FLGDEL = '0' ");
sqlBuilder.AppendLine(" LEFT JOIN T_MD_MATERIAL M ON B.MATERIAL_CODE = M.MATERIAL_CODE AND M.FLGDEL = '0' ");
whereBuilder.Append(" AND B.FLGDEL ='0' ");
//查询条件
if (string.IsNullOrEmpty(condition.PBOM_CODE) == false)
{
whereBuilder.Append(" AND B.PBOM_CODE= @PBOM_CODE ");
parameters.Add(new DataParameter { ParameterName = "PBOM_CODE", DataType = DbType.String, Value = condition.PBOM_CODE });
}
if (whereBuilder.Length > 0)
{
sqlBuilder.Append(" WHERE " + whereBuilder.ToString().Substring(4));
}
return sqlBuilder.ToString();
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 获取Bom明细列表
/// <summary>
/// 获取列表
/// </summary>
/// <param name="condition">条件</param>
/// <param name="page">数据页</param>
/// <returns>数据页</returns>
public List<PbomItem> BomDetailList(PbomItem condition)
{
string sql = "";
List<DataParameter> parameters = new List<DataParameter>();
List<PbomItem> list = new List<PbomItem>();
try
{
sql = this.GetBomDetailListSql(condition, ref parameters);
if (null != BaseSession)
{
string sqlChange = base.ChangeSqlByDB(sql, BaseSession);
list = BaseSession.GetList<PbomItem>(sqlChange, parameters.ToArray()).ToList();
}
else
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
string sqlChange = base.ChangeSqlByDB(sql, session);
list = session.GetList<PbomItem>(sqlChange, parameters.ToArray()).ToList();
}
}
return list;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "Bom信息维护数据层-获取Bom明细列表");
throw ex;
}
}
#endregion
#region 插入Bom明细信息
/// <summary>
/// 插入信息(单表)
/// </summary>
/// <param name="">信息</param>
/// <returns>插入行数</returns>
public int InsertBomDetail(PbomItem model)
{
int count = 0;
try
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
//插入基本信息
count = session.Insert<PbomItem>(model);
}
return count;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "Bom信息维护数据层-插入Bom明细信息");
throw ex;
}
}
#endregion
#region 获取Bom明细
/// <summary>
/// 获取Bom明细
/// </summary>
/// <param name="">条件</param>
/// <returns>*信息</returns>
public PbomItem GetBomDetail(PbomItem model)
{
StringBuilder sqlBuilder = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
sqlBuilder.Append(" SELECT * ");
sqlBuilder.Append(" FROM T_MD_PBOM_ITEM ");
sqlBuilder.Append(" WHERE FLGDEL = '0'");
if (string.IsNullOrEmpty(model.PBOM_CODE) == false && string.IsNullOrEmpty(model.MATERIAL_CODE) == false)
{
sqlBuilder.Append(" AND PBOM_CODE= @PBOM_CODE ");
sqlBuilder.Append(" AND MATERIAL_CODE= @MATERIAL_CODE ");
parameters.Add(new DataParameter { ParameterName = "PBOM_CODE", DataType = DbType.String, Value = model.PBOM_CODE });
parameters.Add(new DataParameter { ParameterName = "MATERIAL_CODE", DataType = DbType.String, Value = model.MATERIAL_CODE });
}
if (string.IsNullOrEmpty(model.PID) == false)
{
sqlBuilder.Append(" AND PID= @PID ");
parameters.Add(new DataParameter { ParameterName = "PID", DataType = DbType.String, Value = model.PID });
}
if (string.IsNullOrEmpty(model.GMP) == false)
{
sqlBuilder.Append(" AND GMP= @GMP ");
parameters.Add(new DataParameter { ParameterName = "GMP", DataType = DbType.String, Value = model.GMP });
}
try
{
if (null != BaseSession)
{
string sqlChange = ChangeSqlByDB(sqlBuilder.ToString(), BaseSession);
model = BaseSession.Get<PbomItem>(sqlChange, parameters.ToArray());
}
else
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
string sqlChange = ChangeSqlByDB(sqlBuilder.ToString(), session);
//获取信息
model = session.Get<PbomItem>(sqlChange, parameters.ToArray());
}
}
return model;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "Bom信息维护数据层-获取信息");
throw ex;
}
}
#endregion
#region 删除Bom明细
/// <summary>
/// 删除信息
/// </summary>
/// <param name="model">Bom信息(ID)</param>
/// <returns>删除个数</returns>
public int DeleteBomDetail(PbomItem model)
{
StringBuilder sqlBuilder = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
StringBuilder whereBuilder = new StringBuilder();
int count = 0;
try
{
//构成查询语句
sqlBuilder.AppendLine(" UPDATE T_MD_PBOM_ITEM SET FLGDEL = '1' ");
if (string.IsNullOrEmpty(model.PID) == false)
{
whereBuilder.Append(" AND PID=@PID ");
parameters.Add(new DataParameter { ParameterName = "PID", DataType = DbType.String, Value = model.PID });
}
if (string.IsNullOrEmpty(model.PBOM_CODE) == false)
{
whereBuilder.Append(" AND PBOM_CODE=@PBOM_CODE ");
parameters.Add(new DataParameter { ParameterName = "PBOM_CODE", DataType = DbType.String, Value = model.PBOM_CODE });
}
if (whereBuilder.Length > 0)
{
sqlBuilder.Append(" WHERE " + whereBuilder.ToString().Substring(4));
}
if (this.BaseSession != null)
{
string sqlChange = base.ChangeSqlByDB(sqlBuilder.ToString(), BaseSession);
//删除基本信息
count = BaseSession.ExecuteSql(sqlChange, parameters.ToArray());
}
else
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
string sqlChange = base.ChangeSqlByDB(sqlBuilder.ToString(), session);
//删除基本信息
count = session.ExecuteSql(sqlChange, parameters.ToArray());
}
}
return count;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "Bom信息维护数据层-删除BOM详细信息");
throw ex;
}
}
/// <summary>
/// 删除信息
/// </summary>
/// <param name="model">Bom信息(ID)</param>
/// <returns>删除个数</returns>
public int DeleteBomDetailByPbomId(string pid)
{
StringBuilder sqlBuilder = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
StringBuilder whereBuilder = new StringBuilder();
int count = 0;
try
{
//构成查询语句
sqlBuilder.AppendLine(" UPDATE T_MD_PBOM_ITEM SET FLGDEL = '1' WHERE PBOM_CODE IN (SELECT T.PBOM_CODE FROM T_MD_PBOM T WHERE T.PID = @PID)");
parameters.Add(new DataParameter { ParameterName = "PID", DataType = DbType.String, Value = pid });
if (this.BaseSession != null)
{
string sqlChange = base.ChangeSqlByDB(sqlBuilder.ToString(), BaseSession);
//删除基本信息
count = BaseSession.ExecuteSql(sqlChange, parameters.ToArray());
}
else
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
string sqlChange = base.ChangeSqlByDB(sqlBuilder.ToString(), session);
//删除基本信息
count = session.ExecuteSql(sqlChange, parameters.ToArray());
}
}
return count;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "Bom信息维护数据层-删除BOM详细信息");
throw ex;
}
}
#endregion
#endregion
/// <summary>
/// 获取Bom信息
/// </summary>
/// <param name="BomCode">Bom编码</param>
/// <returns></returns>
public Pbom GetByCode(string BomCode)
{
StringBuilder sql = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql.Append("SELECT * FROM [T_MD_PBOM] WHERE [PBOM_CODE]=@bomcode");
parameters.Add(new DataParameter("bomcode", BomCode));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
return session.Get<Pbom>(sql.ToString(), parameters.ToArray());
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 根据BOM定位查找BOM明细项
/// </summary>
/// <param name="locate">BOM定位信息</param>
/// <returns></returns>
public PbomItem GetByLocate(BomLocation locate)
{
StringBuilder sql = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql.Append("SELECT * FROM [T_MD_PBOM_ITEM] WHERE [PBOM_CODE]=@bomcode AND [SEQ_NUM]=@itemno");
parameters.Add(new DataParameter("bomcode", locate.BOMCode));
parameters.Add(new DataParameter("itemno", locate.ItemNo));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
return session.Get<PbomItem>(sql.ToString(), parameters.ToArray());
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 根据BOM定位查找BOM明细项列表
/// </summary>
/// <param name="locate">BOM定位信息</param>
/// <returns></returns>
public List<PbomItem> GetBomItemsByLocate(BomLocation locate)
{
StringBuilder sql = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql.Append("SELECT * FROM [T_MD_PBOM_ITEM] WHERE [PBOM_CODE]=@bomcode AND [UP_SQ_NUM]=@itemno");
parameters.Add(new DataParameter("bomcode", locate.BOMCode));
parameters.Add(new DataParameter("itemno", locate.ItemNo));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
return session.GetList<PbomItem>(sql.ToString(), parameters.ToArray()).ToList();
}
}
catch (Exception ex)
{
throw ex;
}
}
public List<PbomItem> GetBomItemsByLocateWithType(BomLocation locate)
{
StringBuilder sql = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql.AppendLine("SELECT B.* ");
sql.AppendLine(" ,M.MATERIAL_TYPE_CODE ");
sql.AppendLine(" ,C.UP_MATERIAL_TYPE_CODE ");
sql.AppendLine("FROM [T_MD_PBOM_ITEM] AS B ");
sql.AppendLine("LEFT JOIN T_MD_MATERIAL AS M ");
sql.AppendLine("ON B.MATERIAL_CODE=M.MATERIAL_CODE ");
sql.AppendLine("LEFT JOIN T_MD_MATERIAL_CLASS AS C ");
sql.AppendLine("ON C.MATERIAL_TYPE_CODE=m.MATERIAL_TYPE_CODE ");
sql.AppendLine("WHERE [PBOM_CODE]=@bomcode AND [UP_SQ_NUM]=@itemno");
parameters.Add(new DataParameter("bomcode", locate.BOMCode));
parameters.Add(new DataParameter("itemno", locate.ItemNo));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
return session.GetList<PbomItem>(sql.ToString(), parameters.ToArray()).ToList();
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 定位BOM
/// </summary>
/// <param name="materials"></param>
/// <returns></returns>
public List<BomLocation> LocateBom(params string[] materials)
{
if (materials.Length == 0)
{
throw new Exception("至少需要一种物料号才能确定BOM!");
}
StringBuilder sql = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql.AppendLine("SELECT [PBOM_CODE] AS [BOMCode]");
sql.AppendLine(" ,[UP_SQ_NUM] AS [ItemNo] ");
sql.AppendLine(" ,(SELECT COUNT(*) ");
sql.AppendLine(" FROM [T_MD_PBOM_ITEM] AS A ");
sql.AppendLine(" LEFT JOIN T_MD_MATERIAL M ON M.MATERIAL_CODE=A.MATERIAL_CODE ");
sql.AppendLine(" LEFT JOIN T_MD_MATERIAL_CLASS MC ON MC.MATERIAL_TYPE_CODE=M.MATERIAL_TYPE_CODE ");
sql.AppendLine(" WHERE A.[PBOM_CODE]=W.[PBOM_CODE] ");
sql.AppendLine(" AND A.[UP_SQ_NUM]=W.[UP_SQ_NUM] ");
sql.AppendLine(" AND MC.MATERIAL_ATTRIBUTE NOT IN ('3') ");
sql.AppendLine(" )AS [SubCount] ");
sql.AppendLine(" ,(SELECT TOP 1 MATERIAL_CODE ");
sql.AppendLine(" FROM [T_MD_PBOM_ITEM] AS B ");
sql.AppendLine(" WHERE B.[PBOM_CODE]=W.[PBOM_CODE] ");
sql.AppendLine(" AND B.[SEQ_NUM]=W.[UP_SQ_NUM] ");
sql.AppendLine(" )AS [UP_MATERIAL_CODE] ");
sql.AppendLine(" FROM [T_MD_PBOM_ITEM] AS W");
sql.Append(" WHERE W.[MATERIAL_CODE] IN (");
for (int i = 0; i < materials.Length; i++)
{
if (i > 0)
{
sql.Append(",");
}
sql.Append(string.Format("@material{0}", i));
parameters.Add(new DataParameter(string.Format("@material{0}", i), materials[i]));
}
sql.AppendLine(") ");
sql.AppendLine(" GROUP BY W.[PBOM_CODE],W.[UP_SQ_NUM]");
sql.AppendLine("HAVING COUNT(*)>=@materialcount");
parameters.Add(new DataParameter("materialcount", materials.Length));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
return session.GetList<Entity.View.BomLocation>(sql.ToString(), parameters.ToArray()).ToList();
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 定位BOM
/// </summary>
/// <param name="materials"></param>
/// <returns></returns>
public List<BomLocation> LocateBomByUpMaterial(string upmaterial)
{
StringBuilder sql = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql.AppendLine("SELECT [PBOM_CODE] AS [BOMCode] ");
sql.AppendLine(" ,[SEQ_NUM] AS [ItemNo] ");
sql.AppendLine(" ,(SELECT COUNT(*) ");
sql.AppendLine(" FROM [T_MD_PBOM_ITEM] AS A ");
sql.AppendLine(" WHERE A.[PBOM_CODE]=B.[PBOM_CODE] ");
sql.AppendLine(" AND A.[UP_SQ_NUM]=B.[SEQ_NUM])AS [SubCount] ");
sql.AppendLine(" ,[MATERIAL_CODE] AS [UP_MATERIAL_CODE] ");
sql.AppendLine(" FROM T_MD_PBOM_ITEM B ");
sql.AppendLine(" WHERE MATERIAL_CODE=@upmaterial ");
sql.AppendLine("UNION ");
sql.AppendLine("SELECT M.PBOM_CODE AS [BOMCode] ");
sql.AppendLine(" ,0 AS [ItemNo] ");
sql.AppendLine(" ,(SELECT COUNT(*) ");
sql.AppendLine(" FROM [T_MD_PBOM_ITEM] AS A ");
sql.AppendLine(" WHERE A.[PBOM_CODE]=M.[PBOM_CODE] ");
sql.AppendLine(" AND A.[UP_SQ_NUM]=0)AS [SubCount] ");
sql.AppendLine(" ,M.[MATERIAL_CODE] AS [UP_MATERIAL_CODE] ");
sql.AppendLine(" FROM T_MD_PBOM AS M ");
sql.AppendLine(" WHERE M.MATERIAL_CODE=@upmaterial ");
parameters.Add(new DataParameter("upmaterial", upmaterial));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
return session.GetList<Entity.View.BomLocation>(sql.ToString(), parameters.ToArray()).ToList();
}
}
catch (Exception ex)
{
throw ex;
}
}
public List<PbomItem> GetSubItem(string upmaterial)
{
StringBuilder sql = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql.AppendLine("WITH CTE AS (");
sql.AppendLine(" SELECT TOP 1 *");
sql.AppendLine(" FROM T_MD_PBOM_ITEM ");
sql.AppendLine(" WHERE MATERIAL_CODE=@upmaterial");
sql.AppendLine(" UNION ALL");
sql.AppendLine(" SELECT TOP 1 NULL AS [PID]");
sql.AppendLine(" ,[PBOM_CODE]");
sql.AppendLine(" ,[MATERIAL_CODE]");
sql.AppendLine(" ,0 AS [SEQ_NUM]");
sql.AppendLine(" ,0 AS [UP_SQ_NUM]");
sql.AppendLine(" ,1 AS [UNIT_SUM]");
sql.AppendLine(" ,'' AS [GMP]");
sql.AppendLine(" ,NULL AS [FLAG_CSP]");
sql.AppendLine(" ,'' AS [MFRS]");
sql.AppendLine(" ,[REMARK]");
sql.AppendLine(" ,[CREATEUSER]");
sql.AppendLine(" ,[CREATEDATE]");
sql.AppendLine(" ,[UPDATEUSER]");
sql.AppendLine(" ,[UPDATEDATE]");
sql.AppendLine(" ,[PROPERTY_CODE]");
sql.AppendLine(" ,[FLGDEL]");
sql.AppendLine(" ,[FACTORY_CODE]");
sql.AppendLine(" FROM T_MD_PBOM");
sql.AppendLine(" WHERE MATERIAL_CODE=@upmaterial");
sql.AppendLine(" UNION ALL");
sql.AppendLine(" SELECT B.* ");
sql.AppendLine(" FROM CTE AS C ");
sql.AppendLine(" JOIN T_MD_PBOM_ITEM AS B ");
sql.AppendLine(" ON B.PBOM_CODE=C.PBOM_CODE");
sql.AppendLine(" AND B.UP_SQ_NUM=C.SEQ_NUM");
sql.AppendLine(")");
sql.AppendLine("SELECT * FROM CTE");
parameters.Add(new DataParameter("upmaterial", upmaterial));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
return session.GetList<PbomItem>(sql.ToString(), parameters.ToArray()).ToList();
}
}
catch (Exception ex)
{
throw ex;
}
}
public List<string> GetSubMaterial(string upmaterial)
{
StringBuilder sql = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql.AppendLine("SELECT C.* ");
sql.AppendLine(" FROM T_MD_PBOM_ITEM AS C ");
sql.AppendLine(" JOIN (SELECT PBOM_CODE ");
sql.AppendLine(" ,SEQ_NUM ");
sql.AppendLine(" FROM T_MD_PBOM_ITEM ");
sql.AppendLine(" WHERE MATERIAL_CODE=@upmaterial ");
sql.AppendLine(" UNION ALL ");
sql.AppendLine(" SELECT [PBOM_CODE] ");
sql.AppendLine(" ,0 AS [SEQ_NUM] ");
sql.AppendLine(" FROM T_MD_PBOM ");
sql.AppendLine(" WHERE MATERIAL_CODE=@upmaterial) AS B ");
sql.AppendLine(" ON C.PBOM_CODE=B.PBOM_CODE ");
sql.AppendLine(" AND C.UP_SQ_NUM=B.SEQ_NUM");
parameters.Add(new DataParameter("upmaterial", upmaterial));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
var list= session.GetList<PbomItem>(sql.ToString(), parameters.ToArray()).ToList();
return list.Select(p => p.MATERIAL_CODE).Distinct().ToList();
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 根据物料组查询BOM
/// </summary>
/// <param name="materials">物料组</param>
/// <returns></returns>
public Pbom GetBomWithMaterials(params string[] materials)
{
if (materials.Length == 0)
{
throw new Exception("至少需要一种物料号才能确定BOM!");
}
StringBuilder sql = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql.AppendLine("SELECT * ");
sql.AppendLine(" FROM T_MD_PBOM AS B ");
sql.AppendLine(" WHERE EXISTS (SELECT PBOM_CODE,UP_SQ_NUM FROM T_MD_PBOM_ITEM AS W ");
sql.AppendLine(" WHERE W.[MATERIAL_CODE] IN (");
for (int i = 0; i < materials.Length; i++)
{
if (i > 0)
{
sql.Append(",");
}
sql.Append(string.Format("@material{0}", i));
parameters.Add(new DataParameter(string.Format("@material{0}", i), materials[i]));
}
sql.AppendLine(") ");
sql.AppendLine(" AND (SELECT COUNT(1) ");
sql.AppendLine(" FROM T_MD_PBOM_ITEM AS I ");
sql.AppendLine(" WHERE I.PBOM_CODE=W.PBOM_CODE ");
sql.AppendLine(" AND I.UP_SQ_NUM=W.UP_SQ_NUM ");
sql.AppendLine(" AND I.UNIT_SUM>0)=@materialcount ");
sql.AppendLine(" AND W.PBOM_CODE=B.PBOM_CODE ");
sql.AppendLine(" GROUP BY PBOM_CODE,UP_SQ_NUM HAVING COUNT(*)>=@materialcount)");
parameters.Add(new DataParameter("materialcount", materials.Length));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
return session.Get<Pbom>(sql.ToString(), parameters.ToArray());
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 根据物料类型和BOM编号查找BOM明细项
/// </summary>
/// <param name="p"></param>
/// <param name="p_2"></param>
/// <returns></returns>
public PbomItem GetBomItemByMaterilType(string bomcode, string materialtype)
{
StringBuilder sql = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql.Append("SELECT TOP 1 P.* ");
sql.Append(" FROM T_MD_PBOM_ITEM AS P ");
sql.Append(" LEFT JOIN T_MD_MATERIAL AS M ");
sql.Append(" ON P.MATERIAL_CODE=M.MATERIAL_CODE ");
sql.Append(" WHERE P.PBOM_CODE=@bomcode ");
sql.Append(" AND M.MATERIAL_TYPE_CODE=@materialtype ");
parameters.Add(new DataParameter("bomcode", bomcode));
parameters.Add(new DataParameter("materialtype", materialtype));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
return session.Get<PbomItem>(sql.ToString(), parameters.ToArray());
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 根据物料类型和BOM编号查找BOM明细项
/// </summary>
/// <param name="p"></param>
/// <param name="p_2"></param>
/// <returns></returns>
public PbomItem GetBomItemByMaterilType(string bomcode, string materialtype,bool parenttype=false)
{
StringBuilder sql = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql.Append("SELECT TOP 1 P.* ");
sql.Append(" FROM T_MD_PBOM_ITEM AS P ");
sql.Append(" LEFT JOIN T_MD_MATERIAL AS M ");
sql.Append(" ON P.MATERIAL_CODE=M.MATERIAL_CODE ");
sql.Append(" WHERE P.PBOM_CODE=@bomcode ");
if (parenttype)
{
sql.Append(" AND M.MATERIAL_TYPE_CODE LIKE @materialtype + '%' ");
}
else
{
sql.Append(" AND M.MATERIAL_TYPE_CODE=@materialtype ");
}
parameters.Add(new DataParameter("bomcode", bomcode));
parameters.Add(new DataParameter("materialtype", materialtype));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
return session.Get<PbomItem>(sql.ToString(), parameters.ToArray());
}
}
catch (Exception ex)
{
throw ex;
}
}
#region 获取全部列表
/// <summary>
/// 获取全部列表信息
/// </summary>
/// <param name="condition"></param>
/// <returns></returns>
public List<PbomItem> GetPbomItemList(PbomItem model)
{
List<DataParameter> parameters = new List<DataParameter>();
var sql = this.GetQuerySqlPbom(model, ref parameters);
using (IDataSession session = AppDataFactory.CreateMainSession())
{
return session.GetList<PbomItem>(sql, parameters.ToArray()).ToList();
}
}
#endregion
#region 获取pbom查询语句
/// <summary>
/// 获取查询语句
/// </summary>
/// <param name="user">查询条件</param>
/// <param name="parameters">参数</param>
/// <returns>查询语句</returns>
private string GetQuerySqlPbom(PbomItem condition, ref List<DataParameter> parameters)
{
StringBuilder sqlBuilder = new StringBuilder();
StringBuilder whereBuilder = new StringBuilder();
try
{
//构成查询语句
sqlBuilder.AppendLine(" select t1.*,t2.MATERIAL_NAME from T_MD_PBOM_ITEM t1,T_MD_MATERIAL t2 ");
sqlBuilder.AppendLine(" where t1.MATERIAL_CODE=t2.MATERIAL_CODE ");
//查询条件
if (string.IsNullOrEmpty(condition.PBOM_CODE) == false)
{
whereBuilder.Append(" AND PBOM_CODE=@PBOM_CODE ");
parameters.Add(new DataParameter { ParameterName = "PBOM_CODE", DataType = DbType.String, Value = condition.PBOM_CODE });
}
//UP_SQ_NUM号
if (condition.UP_SQ_NUM >=0)
{
whereBuilder.Append(" AND UP_SQ_NUM = @UP_SQ_NUM ");
parameters.Add(new DataParameter { ParameterName = "UP_SQ_NUM", DataType = DbType.String, Value = condition.UP_SQ_NUM });
}
//查询条件
if (string.IsNullOrEmpty(condition.GMP) == false)
{
whereBuilder.Append(" AND GMP=@GMP ");
parameters.Add(new DataParameter { ParameterName = "GMP", DataType = DbType.String, Value = condition.GMP });
}
if (whereBuilder.Length > 0)
{
//sqlBuilder.Append(" WHERE " + whereBuilder.ToString().Substring(4));
sqlBuilder.Append(whereBuilder);
}
return sqlBuilder.ToString();
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 获取信息
/// <summary>
/// 获取信息
/// </summary>
/// <param name="">条件</param>
/// <returns>*信息</returns>
public PbomItem GetPbomItemOne(PbomItem model)
{
try
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
//获取信息
model = session.Get<PbomItem>(model);
}
return model;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 获取SEQ_NUM最大号
/// <summary>
/// 获取信息
/// </summary>
/// <param name="">条件</param>
/// <returns>*信息</returns>
public PbomItem GetMaxSeqNum(PbomItem model)
{
try
{
List<DataParameter> parameters = new List<DataParameter>();
var sql = " SELECT max(seq_num) as seq_num FROM T_MD_PBOM_ITEM where PBOM_CODE ='" + model .PBOM_CODE+ "' ";
using (IDataSession session = AppDataFactory.CreateMainSession())
{
return session.Get<PbomItem>(sql, parameters.ToArray());
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 插入信息
/// <summary>
/// 插入信息(单表)
/// </summary>
/// <param name="">信息</param>
/// <returns>插入行数</returns>
public int InsertPbomItem(PbomItem model)
{
int count = 0;
try
{
if (BaseSession != null)
{
//插入基本信息
count = BaseSession.Insert<PbomItem>(model);
}
else
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
//插入基本信息
count = session.Insert<PbomItem>(model);
}
}
return count;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "Bom信息维护数据层-插入信息");
throw ex;
}
}
#endregion
#region 更新信息
/// <summary>
/// 更新信息
/// </summary>
/// <param name="">信息</param>
/// <returns>插入行数</returns>
public int UpdatePbomItem(PbomItem model)
{
int count = 0;
try
{
if (BaseSession != null)
{
//插入基本信息
count = BaseSession.Update<PbomItem>(model);
}
else
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
//插入基本信息
count = session.Update<PbomItem>(model);
}
}
return count;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "Bom信息维护数据层-更新信息");
throw ex;
}
}
#endregion
#region 删除信息
/// <summary>
/// 删除信息
/// </summary>
/// <param name="">信息</param>
/// <returns>插入行数</returns>
public int DelPbomItem(string pid)
{
List<DataParameter> parameters = new List<DataParameter>();
int count = 0;
try
{
var sql = "delete from T_MD_PBOM_ITEM WHERE PID = '" + pid + "'";
if (this.BaseSession != null)
{
//删除基本信息
count = BaseSession.ExecuteSql(sql, parameters.ToArray());
}
else
{
using (IDataSession session = AppDataFactory.CreateMainSession())
{
//删除基本信息
count = session.ExecuteSql(sql, parameters.ToArray());
}
}
return count;
}
catch (Exception ex)
{
RecordExceptionLog(ex, "Bom信息维护数据层-删除BOM详细信息");
throw ex;
}
}
#endregion
public PbomItem GetUPLevelItem(string bomcode, string submaterial)
{
StringBuilder sql = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql.Append("SELECT * ");
sql.Append(" FROM T_MD_PBOM_ITEM ");
sql.Append(" WHERE PBOM_CODE=@bomcode ");
sql.Append(" AND SEQ_NUM=(SELECT UP_SQ_NUM ");
sql.Append(" FROM T_MD_PBOM_ITEM AS I ");
sql.Append(" WHERE I.PBOM_CODE=@bomcode ");
sql.Append(" AND I.MATERIAL_CODE=@submaterial)");
parameters.Add(new DataParameter("bomcode", bomcode));
parameters.Add(new DataParameter("submaterial", submaterial));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
var bomitem= session.Get<PbomItem>(sql.ToString(), parameters.ToArray());
return bomitem;
}
}
catch (Exception ex)
{
throw ex;
}
}
public List<PbomItem> GetWorkingBom(string WorklocCode, string OrderID)
{
StringBuilder sql = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql.Append("SELECT B.*");
sql.Append(" ,M.MATERIAL_NAME");
sql.Append(" ,M.MATERIAL_TYPE_CODE");
sql.Append(" FROM T_MD_PBOM_ITEM AS B");
sql.Append(" LEFT JOIN T_MD_MATERIAL AS M");
sql.Append(" ON M.MATERIAL_CODE=B.MATERIAL_CODE");
sql.Append(" WHERE PBOM_CODE=(SELECT PBOM_CODE ");
sql.Append(" FROM T_PP_WORKORDER ");
sql.Append(" WHERE PID=@OrderID ) ");
//sql.Append(" AND STATE='2')");
sql.Append(" AND GMP=@WorklocCode");
sql.Append(" ORDER BY B.MATERIAL_CODE");
parameters.Add(new DataParameter("WorklocCode", WorklocCode));
parameters.Add(new DataParameter("OrderID", OrderID));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
var bomitem = session.GetList<PbomItem>(sql.ToString(), parameters.ToArray());
return bomitem.ToList();
}
}
catch (Exception ex)
{
throw ex;
}
}
public List<PbomItem> GetRelatedItems(string itemmaterial)
{
StringBuilder sql = new StringBuilder();
List<DataParameter> parameters = new List<DataParameter>();
try
{
sql.Append("SELECT * ");
sql.Append(" FROM T_MD_PBOM_ITEM ");
sql.Append(" WHERE PBOM_CODE IN (SELECT PBOM_CODE ");
sql.Append(" FROM T_MD_PBOM_ITEM ");
sql.Append(" WHERE MATERIAL_CODE=@itemmaterial) ");
parameters.Add(new DataParameter("itemmaterial", itemmaterial));
using (IDataSession session = AppDataFactory.CreateMainSession())
{
var bomitem = session.GetList<PbomItem>(sql.ToString(), parameters.ToArray());
return bomitem.ToList();
}
}
catch (Exception ex)
{
throw ex;
}
}
public WorkCell GetGMP(string materialcode)
{
WorkCell cell = new WorkCell();
StringBuilder sql = new StringBuilder();
sql.AppendLine("SELECT * ");
sql.AppendLine(" FROM T_MD_WORKCELL ");
sql.AppendLine(" WHERE WORKCELL_CODE = (SELECT TOP 1 GMP ");
sql.AppendLine(" FROM T_MD_PBOM_ITEM ");
sql.AppendLine(" WHERE MATERIAL_CODE=@materialcode)");
using (IDataSession session = AppDataFactory.CreateMainSession())
{
cell = session.Get<WorkCell>(sql.ToString(), new DataParameter("materialcode", materialcode));
}
return cell;
}
}
}