using HanHe.Utility.Data;
using HH.WMS.Entitys;
using HH.WMS.Entitys.Check;
using HH.WMS.Entitys.Common;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.OracleClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HH.WMS.DAL.Check
{
public class TN_WM_CHECK_DTLDAL : DapperBaseDAL
{
#region 获取分页列表
///
/// 获取分页列表
///
///
///
/// [HanHe(lt)] CREATED 2018/7/3
public DataTable GetDataTable(dynamic obj)
{
DbCommand cmd = DataAccess.GetStoredProcCommand("prc_query");
this.DataAccess.AddInParameter(cmd, "TableName", ComDbType.CHAR, "TN_WM_CHECK_DTL");
this.DataAccess.AddInParameter(cmd, "WhereStr", ComDbType.CHAR, obj.sqlWhere);
this.DataAccess.AddInParameter(cmd, "OrderByStr", ComDbType.CHAR, obj.OrdeBy);
this.DataAccess.AddInParameter(cmd, "PageSize", ComDbType.INT, obj.pageSize);
this.DataAccess.AddInParameter(cmd, "PageIndex", ComDbType.INT, obj.pageIndex);
this.DataAccess.AddOutParameter(cmd, "TotalPage", ComDbType.INT, 4);
this.DataAccess.AddOutParameter(cmd, "TotalRecord", ComDbType.INT, 4);
//如果是oracle 增加特性
if (!string.IsNullOrEmpty(Now_dbType) && Now_dbType.Equals("ORACLE"))
{
//处理游标类型 因DbType无游标类型,游标类型单独处理
ComDbType.AddOrcOutParameter(cmd, "v_cur", OracleType.Cursor);
}
try
{
//获得列表
DataTable dt = DataAccessExtensive.ExecuteDataTable(this.DataAccess, cmd);
obj.PageCount = Convert.ToInt32(this.DataAccess.GetParameterValue(cmd, "TotalRecord"));
return dt;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 新增
///
/// 增加一条数据
///
/// [HanHe(lt)] CREATED 2018/7/3
public SqlExecuteResult Add(TN_WM_CHECK_DTLEntity entity, DbTransaction trans)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into tn_wm_check_dtl(");
strSql.Append("CN_S_OP_NO,CN_N_ROW_NO,CN_S_STOCK_AREA,CN_S_LOCATION_CODE,CN_S_TRAY_CODE,CN_S_ITEM_CODE,CN_S_ITEM_NAME,CN_S_ITEM_STATE,CN_S_OWNER,CN_S_LOT_NO,CN_S_MODEL,CN_S_FIGURE_NO,CN_S_MEASURE_UNIT,CN_F_QUANTITY)");
strSql.Append(" values (");
strSql.Append(":CN_S_OP_NO,:CN_N_ROW_NO,:CN_S_STOCK_AREA,:CN_S_LOCATION_CODE,:CN_S_TRAY_CODE,:CN_S_ITEM_CODE,:CN_S_ITEM_NAME,:CN_S_ITEM_STATE,:CN_S_OWNER,:CN_S_LOT_NO,:CN_S_MODEL,:CN_S_FIGURE_NO,:CN_S_MEASURE_UNIT,:CN_F_QUANTITY)");
DbCommand cmd = DataAccess.GetSqlStringCommand(strSql.ToString());
DataAccess.AddInParameter(cmd, "CN_S_OP_NO", ComDbType.STRING, entity.CN_S_OP_NO);
DataAccess.AddInParameter(cmd, "CN_N_ROW_NO", ComDbType.INT32, entity.CN_N_ROW_NO);
DataAccess.AddInParameter(cmd, "CN_S_STOCK_AREA", ComDbType.STRING, entity.CN_S_STOCK_AREA);
DataAccess.AddInParameter(cmd, "CN_S_LOCATION_CODE", ComDbType.STRING, entity.CN_S_LOCATION_CODE);
DataAccess.AddInParameter(cmd, "CN_S_TRAY_CODE", ComDbType.STRING, entity.CN_S_TRAY_CODE);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_CODE", ComDbType.STRING, entity.CN_S_ITEM_CODE);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_NAME", ComDbType.STRING, entity.CN_S_ITEM_NAME);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_STATE", ComDbType.STRING, entity.CN_S_ITEM_STATE);
DataAccess.AddInParameter(cmd, "CN_S_OWNER", ComDbType.STRING, entity.CN_S_OWNER);
DataAccess.AddInParameter(cmd, "CN_S_LOT_NO", ComDbType.STRING, entity.CN_S_LOT_NO);
DataAccess.AddInParameter(cmd, "CN_S_MODEL", ComDbType.STRING, entity.CN_S_MODEL);
DataAccess.AddInParameter(cmd, "CN_S_FIGURE_NO", ComDbType.STRING, entity.CN_S_FIGURE_NO);
DataAccess.AddInParameter(cmd, "CN_S_MEASURE_UNIT", ComDbType.DATE, entity.CN_S_MEASURE_UNIT);
DataAccess.AddInParameter(cmd, "CN_F_QUANTITY", ComDbType.DECIMAL, entity.CN_F_QUANTITY);
return ExecuteCommand(cmd, trans);
}
///
/// 增加多条数据
///
/// [HanHe(lt)] CREATED 2018/7/3
public SqlExecuteResult Addlist(List listentity, DbTransaction trans)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into tn_wm_check_dtl(");
strSql.Append("CN_S_OP_NO,CN_N_ROW_NO,CN_S_STOCK_AREA,CN_S_LOCATION_CODE,CN_S_TRAY_CODE,CN_S_ITEM_CODE,CN_S_ITEM_NAME,CN_S_ITEM_STATE,CN_S_OWNER,CN_S_LOT_NO,CN_S_MODEL,CN_S_FIGURE_NO,CN_S_MEASURE_UNIT,CN_F_QUANTITY)");
strSql.Append(" values (");
strSql.Append(":CN_S_OP_NO,:CN_N_ROW_NO,:CN_S_STOCK_AREA,:CN_S_LOCATION_CODE,:CN_S_TRAY_CODE,:CN_S_ITEM_CODE,:CN_S_ITEM_NAME,:CN_S_ITEM_STATE,:CN_S_OWNER,:CN_S_LOT_NO,:CN_S_MODEL,:CN_S_FIGURE_NO,:CN_S_MEASURE_UNIT,:CN_F_QUANTITY)");
List listcmd = new List();
foreach (TN_WM_CHECK_DTLEntity entity in listentity)
{
DbCommand cmd = DataAccess.GetSqlStringCommand(strSql.ToString());
DataAccess.AddInParameter(cmd, "CN_S_OP_NO", ComDbType.STRING, entity.CN_S_OP_NO);
DataAccess.AddInParameter(cmd, "CN_N_ROW_NO", ComDbType.INT32, entity.CN_N_ROW_NO);
DataAccess.AddInParameter(cmd, "CN_S_STOCK_AREA", ComDbType.STRING, entity.CN_S_STOCK_AREA);
DataAccess.AddInParameter(cmd, "CN_S_LOCATION_CODE", ComDbType.STRING, entity.CN_S_LOCATION_CODE);
DataAccess.AddInParameter(cmd, "CN_S_TRAY_CODE", ComDbType.STRING, entity.CN_S_TRAY_CODE);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_CODE", ComDbType.STRING, entity.CN_S_ITEM_CODE);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_NAME", ComDbType.STRING, entity.CN_S_ITEM_NAME);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_STATE", ComDbType.STRING, entity.CN_S_ITEM_STATE);
DataAccess.AddInParameter(cmd, "CN_S_OWNER", ComDbType.STRING, entity.CN_S_OWNER);
DataAccess.AddInParameter(cmd, "CN_S_LOT_NO", ComDbType.STRING, entity.CN_S_LOT_NO);
DataAccess.AddInParameter(cmd, "CN_S_MODEL", ComDbType.STRING, entity.CN_S_MODEL);
DataAccess.AddInParameter(cmd, "CN_S_FIGURE_NO", ComDbType.STRING, entity.CN_S_FIGURE_NO);
DataAccess.AddInParameter(cmd, "CN_S_MEASURE_UNIT", ComDbType.DATE, entity.CN_S_MEASURE_UNIT);
DataAccess.AddInParameter(cmd, "CN_F_QUANTITY", ComDbType.DECIMAL, entity.CN_F_QUANTITY);
listcmd.Add(cmd);
}
return ExecuteCommands(listcmd, trans);
}
///
/// 增加多条数据
///
/// [HanHe(lt)] CREATED 2018/7/3
public SqlExecuteResult Addlist(List listentity, string CN_S_OP_NO, DbTransaction trans)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into tn_wm_check_dtl(");
strSql.Append("CN_S_OP_NO,CN_N_ROW_NO,CN_S_STOCK_AREA,CN_S_LOCATION_CODE,CN_S_TRAY_CODE,CN_S_ITEM_CODE,CN_S_ITEM_NAME,CN_S_ITEM_STATE,CN_S_OWNER,CN_S_LOT_NO,CN_S_MODEL,CN_S_FIGURE_NO,CN_S_MEASURE_UNIT,CN_F_QUANTITY)");
strSql.Append(" values (");
strSql.Append(":CN_S_OP_NO,:CN_N_ROW_NO,:CN_S_STOCK_AREA,:CN_S_LOCATION_CODE,:CN_S_TRAY_CODE,:CN_S_ITEM_CODE,:CN_S_ITEM_NAME,:CN_S_ITEM_STATE,:CN_S_OWNER,:CN_S_LOT_NO,:CN_S_MODEL,:CN_S_FIGURE_NO,:CN_S_MEASURE_UNIT,:CN_F_QUANTITY)");
List listcmd = new List();
var i = 1;
foreach (TN_WM_CHECK_DTLEntity entity in listentity)
{
DbCommand cmd = DataAccess.GetSqlStringCommand(strSql.ToString());
DataAccess.AddInParameter(cmd, "CN_S_OP_NO", ComDbType.STRING, CN_S_OP_NO);
DataAccess.AddInParameter(cmd, "CN_N_ROW_NO", ComDbType.INT32, i++);
DataAccess.AddInParameter(cmd, "CN_S_STOCK_AREA", ComDbType.STRING, entity.CN_S_STOCK_AREA.Trim());
DataAccess.AddInParameter(cmd, "CN_S_LOCATION_CODE", ComDbType.STRING, entity.CN_S_LOCATION_CODE);
DataAccess.AddInParameter(cmd, "CN_S_TRAY_CODE", ComDbType.STRING, entity.CN_S_TRAY_CODE);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_CODE", ComDbType.STRING, entity.CN_S_ITEM_CODE);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_NAME", ComDbType.STRING, entity.CN_S_ITEM_NAME);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_STATE", ComDbType.STRING, entity.CN_S_ITEM_STATE);
DataAccess.AddInParameter(cmd, "CN_S_OWNER", ComDbType.STRING, entity.CN_S_OWNER);
DataAccess.AddInParameter(cmd, "CN_S_LOT_NO", ComDbType.STRING, entity.CN_S_LOT_NO);
DataAccess.AddInParameter(cmd, "CN_S_MODEL", ComDbType.STRING, entity.CN_S_MODEL);
DataAccess.AddInParameter(cmd, "CN_S_FIGURE_NO", ComDbType.STRING, entity.CN_S_FIGURE_NO);
DataAccess.AddInParameter(cmd, "CN_S_MEASURE_UNIT", ComDbType.STRING, entity.CN_S_MEASURE_UNIT);
DataAccess.AddInParameter(cmd, "CN_F_QUANTITY", ComDbType.DECIMAL, entity.CN_F_QUANTITY);
listcmd.Add(cmd);
}
return ExecuteCommands(listcmd, trans);
}
///
/// 增加多条数据
///
/// [HanHe(lt)] CREATED 2018/7/3
public SqlExecuteResult AddCheckdtl(string sql, DbTransaction trans)
{
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
return ExecuteCommand(cmd, trans);
}
///
/// 增加多条数据
///
/// [HanHe(lt)] CREATED 2018/7/3
public OperateResult AddCheckDtlList(List list, IDbTransaction trans)
{
OperateResult result = new OperateResult();
foreach (TN_WM_CHECK_DTLEntity entity in list)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" IF EXISTS(SELECT * FROM dbo.TN_WM_CHECK_DTL " + entity.sqlWhere + ") ");
strSql.Append(" UPDATE TN_WM_CHECK_DTL SET CN_F_QUANTITY=@CN_F_QUANTITY " + entity.sqlWhere + "");
strSql.Append(" else ");
strSql.Append("insert into tn_wm_check_dtl(");
strSql.Append("CN_S_OP_NO,CN_N_ROW_NO,CN_S_STOCK_AREA,CN_S_LOCATION_CODE,CN_S_TRAY_CODE,CN_S_ITEM_CODE,CN_S_ITEM_NAME,CN_S_ITEM_STATE,CN_S_OWNER,CN_S_LOT_NO,CN_S_MODEL,CN_S_FIGURE_NO,CN_S_MEASURE_UNIT,CN_F_QUANTITY)");
strSql.Append(" values (");
strSql.Append("@CN_S_OP_NO,@CN_N_ROW_NO,@CN_S_STOCK_AREA,@CN_S_LOCATION_CODE,@CN_S_TRAY_CODE,@CN_S_ITEM_CODE,@CN_S_ITEM_NAME,@CN_S_ITEM_STATE,@CN_S_OWNER,@CN_S_LOT_NO,@CN_S_MODEL,@CN_S_FIGURE_NO,@CN_S_MEASURE_UNIT,@CN_F_QUANTITY)");
result = ExecuteTranSql(strSql.ToString(), new
{
CN_S_OP_NO = entity.CN_S_OP_NO,
CN_N_ROW_NO = entity.CN_N_ROW_NO,
CN_S_STOCK_AREA = entity.CN_S_STOCK_AREA,
CN_S_LOCATION_CODE = entity.CN_S_LOCATION_CODE,
CN_S_TRAY_CODE = entity.CN_S_TRAY_CODE,
CN_S_ITEM_CODE = entity.CN_S_ITEM_CODE,
CN_S_ITEM_NAME = entity.CN_S_ITEM_NAME,
CN_S_ITEM_STATE = entity.CN_S_ITEM_STATE,
CN_S_OWNER = entity.CN_S_OWNER,
CN_S_LOT_NO = entity.CN_S_LOT_NO,
CN_S_MODEL = entity.CN_S_MODEL,
CN_S_FIGURE_NO = entity.CN_S_FIGURE_NO,
CN_S_MEASURE_UNIT = entity.CN_S_MEASURE_UNIT,
CN_F_QUANTITY = entity.CN_F_QUANTITY,
}, trans);
if (result.Status == ResultStatus.Error)
return result;
}
return result;
}
#endregion
#region 修改
///
/// 增加一条数据
///
/// [HanHe(lt)] CREATED 2018/7/3
public SqlExecuteResult Update(TN_WM_CHECK_DTLEntity entity, DbTransaction trans)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("update tn_wm_check_dtl set ");
strSql.Append("CN_S_STOCK_AREA=:CN_S_STOCK_AREA,");
strSql.Append("CN_S_LOCATION_CODE=:CN_S_LOCATION_CODE,");
strSql.Append("CN_S_TRAY_CODE=:CN_S_TRAY_CODE,");
strSql.Append("CN_S_ITEM_CODE=:CN_S_ITEM_CODE,");
strSql.Append("CN_S_ITEM_NAME=:CN_S_ITEM_NAME,");
strSql.Append("CN_S_ITEM_STATE=:CN_S_ITEM_STATE,");
strSql.Append("CN_S_OWNER=:CN_S_OWNER,");
strSql.Append("CN_S_LOT_NO=:CN_S_LOT_NO,");
strSql.Append("CN_S_MODEL=:CN_S_MODEL,");
strSql.Append("CN_S_FIGURE_NO=:CN_S_FIGURE_NO,");
strSql.Append("CN_S_MEASURE_UNIT=:CN_S_MEASURE_UNIT,");
strSql.Append("CN_F_QUANTITY=:CN_F_QUANTITY");
strSql.Append(" where CN_S_OP_NO=:CN_S_OP_NO and CN_N_ROW_NO=:CN_N_ROW_NO ");
DbCommand cmd = DataAccess.GetSqlStringCommand(strSql.ToString());
DataAccess.AddInParameter(cmd, "CN_S_OP_NO", ComDbType.STRING, entity.CN_S_OP_NO);
DataAccess.AddInParameter(cmd, "CN_N_ROW_NO", ComDbType.INT32, entity.CN_N_ROW_NO);
DataAccess.AddInParameter(cmd, "CN_S_STOCK_AREA", ComDbType.STRING, entity.CN_S_STOCK_AREA);
DataAccess.AddInParameter(cmd, "CN_S_LOCATION_CODE", ComDbType.STRING, entity.CN_S_LOCATION_CODE);
DataAccess.AddInParameter(cmd, "CN_S_TRAY_CODE", ComDbType.STRING, entity.CN_S_TRAY_CODE);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_CODE", ComDbType.STRING, entity.CN_S_ITEM_CODE);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_NAME", ComDbType.STRING, entity.CN_S_ITEM_NAME);
DataAccess.AddInParameter(cmd, "CN_S_ITEM_STATE", ComDbType.STRING, entity.CN_S_ITEM_STATE);
DataAccess.AddInParameter(cmd, "CN_S_OWNER", ComDbType.STRING, entity.CN_S_OWNER);
DataAccess.AddInParameter(cmd, "CN_S_LOT_NO", ComDbType.STRING, entity.CN_S_LOT_NO);
DataAccess.AddInParameter(cmd, "CN_S_MODEL", ComDbType.STRING, entity.CN_S_MODEL);
DataAccess.AddInParameter(cmd, "CN_S_FIGURE_NO", ComDbType.STRING, entity.CN_S_FIGURE_NO);
DataAccess.AddInParameter(cmd, "CN_S_MEASURE_UNIT", ComDbType.DATE, entity.CN_S_MEASURE_UNIT);
DataAccess.AddInParameter(cmd, "CN_F_QUANTITY", ComDbType.DECIMAL, entity.CN_F_QUANTITY);
return ExecuteCommand(cmd, trans);
}
#endregion
#region 删除
///
/// 删除一条数据
///
/// [HanHe(lt)] CREATED 2018/7/3
public SqlExecuteResult Delete(string sqlwhere, DbTransaction trans)
{
string sql = "DELETE FROM TN_WM_CHECK_DTL {0}";
sql = string.Format(sql, sqlwhere);
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
return ExecuteCommand(cmd, trans);
}
#endregion
#region 查询盘点业务子表表
///
/// 查询盘点业务子表表
///
/// 查询条件
///
/// [HanHe(lt)] CREATED 2018/7/3
public DataTable Getentity(string sqlwhere)
{
string sql = @"SELECT ROW_NUMBER() OVER (ORDER BY CN_S_OP_NO) AS ROWS,CN_S_OP_NO
[CN_S_OP_NO]
,[CN_N_ROW_NO]
,[CN_S_STOCK_AREA]
,[CN_S_LOCATION_CODE]
,[CN_S_TRAY_CODE]
,[CN_S_ITEM_CODE]
,[CN_S_ITEM_NAME]
,[CN_S_ITEM_STATE]
,[CN_S_OWNER]
,[CN_S_LOT_NO]
,[CN_S_MODEL]
,[CN_S_FIGURE_NO]
,[CN_S_MEASURE_UNIT]
,CAST([CN_F_QUANTITY] AS INT) AS CN_F_QUANTITY FROM TN_WM_CHECK_DTL WHERE 1=1 {0}";
sql = string.Format(sql, sqlwhere);
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
return DataAccessExtensive.ExecuteDataTable(this.DataAccess, cmd);
}
///
/// 查询盘点业务子表表
///
/// 查询条件
///
/// [HanHe(lt)] CREATED 2018/7/3
public DataTable Getjoinentity(string sqlwhere)
{
string sql = @"
SELECT '' as ROWID,CN_S_STOCK_CODE,CN_S_STOCK_AREA,CN_S_LOCATION_CODE,CN_S_ITEM_CODE,CN_S_ITEM_NAME,CN_S_ITEM_STATE,CN_S_OWNER,CN_S_MODEL,CN_S_FIGURE_NO,CAST(CN_F_QUANTITY AS INT) CN_F_QUANTITY,CN_S_MEASURE_UNIT FROM TN_WM_CHECK_DTL AS a LEFT JOIN dbo.tn_wm_check_mst AS b ON a.CN_S_OP_NO=b.CN_S_OP_NO WHERE 1=1 {0}";
sql = string.Format(sql, sqlwhere);
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
return DataAccessExtensive.ExecuteDataTable(this.DataAccess, cmd);
}
#endregion
#region 查询盘点结果明细表
///
/// 查询盘点结果明细表
///
/// 查询条件
///
/// [HanHe(lt)] CREATED 2018/7/14
public DataTable GetResultentity(string sqlwhere)
{
string sql = "SELECT * FROM TN_WM_B_CHECK_RESULT WHERE 1=1 {0}";
sql = string.Format(sql, sqlwhere);
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
return DataAccessExtensive.ExecuteDataTable(this.DataAccess, cmd);
}
public DataTable GetDataTableResult(dynamic obj)
{
DbCommand cmd = DataAccess.GetStoredProcCommand("prc_query");
this.DataAccess.AddInParameter(cmd, "TableName", ComDbType.CHAR, "TN_WM_B_CHECK_RESULT");
this.DataAccess.AddInParameter(cmd, "WhereStr", ComDbType.CHAR, obj.sqlWhere);
this.DataAccess.AddInParameter(cmd, "OrderByStr", ComDbType.CHAR, obj.OrdeBy);
this.DataAccess.AddInParameter(cmd, "PageSize", ComDbType.INT, obj.pageSize);
this.DataAccess.AddInParameter(cmd, "PageIndex", ComDbType.INT, obj.pageIndex);
this.DataAccess.AddOutParameter(cmd, "TotalPage", ComDbType.INT, 4);
this.DataAccess.AddOutParameter(cmd, "TotalRecord", ComDbType.INT, 4);
//如果是oracle 增加特性
if (!string.IsNullOrEmpty(Now_dbType) && Now_dbType.Equals("ORACLE"))
{
//处理游标类型 因DbType无游标类型,游标类型单独处理
ComDbType.AddOrcOutParameter(cmd, "v_cur", OracleType.Cursor);
}
try
{
//获得列表
DataTable dt = DataAccessExtensive.ExecuteDataTable(this.DataAccess, cmd);
obj.PageCount = Convert.ToInt32(this.DataAccess.GetParameterValue(cmd, "TotalRecord"));
return dt;
}
catch (Exception)
{
throw;
}
}
#endregion
#region 删除
///
/// 删除
///
///
///
public OperateResult DeleteCheckDtls(string sqlwhere, IDbTransaction trans)
{
string sql = "delete dbo.tn_wm_check_dtl {0}";
sql = string.Format(sql, sqlwhere);
return ExecuteTranSql(sql, null, trans);
}
#endregion
}
}