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 } }