using HanHe.Utility.Data; using HH.WMS.Common; using HH.WMS.DAL.Check; using HH.WMS.Entitys; using HH.WMS.Entitys.Common; using HH.WMS.Entitys.MoveStock; 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.MoveStock { public class TN_WM_MOVE_MSTDAL : DapperBaseDAL { #region 获取分页列表 /// /// 获取分页列表 /// /// /// /// [HanHe(lt)] CREATED 2018/9/6 public DataTable GetDataTable(dynamic obj) { DbCommand cmd = DataAccess.GetStoredProcCommand("prc_query"); this.DataAccess.AddInParameter(cmd, "TableName", ComDbType.CHAR, "TN_WM_MOVE_MST"); 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; } } /// /// 获取分页列表 /// /// /// /// [HanHe(lt)] CREATED 2018/9/6 public DataTable GetDataTable(string sqlWhere, string OrdeBy, int pageSize, int pageIndex) { DbCommand cmd = DataAccess.GetStoredProcCommand("prc_query"); this.DataAccess.AddInParameter(cmd, "TableName", ComDbType.CHAR, "TN_WM_MOVE_MST"); this.DataAccess.AddInParameter(cmd, "WhereStr", ComDbType.CHAR, sqlWhere); this.DataAccess.AddInParameter(cmd, "OrderByStr", ComDbType.CHAR, OrdeBy); this.DataAccess.AddInParameter(cmd, "PageSize", ComDbType.INT, pageSize); this.DataAccess.AddInParameter(cmd, "PageIndex", ComDbType.INT, 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/9/6 public SqlExecuteResult Add(TN_WM_MOVE_MSTEntity entity, DbTransaction trans) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into TN_WM_MOVE_MST("); strSql.Append("CN_S_OP_NO,CN_S_OP_MODE,CN_S_STOCK_CODE,CN_S_START_AREA,CN_S_END_AREA,CN_S_OP_TYPE,CN_T_OP_DATE,CN_S_STATE,CN_S_NOTE,CN_S_OPREATOR,CN_S_OP_FROM,CN_S_FROM_NO,CN_S_CREATOR,CN_S_CREATOR_BY,CN_T_CREATE,CN_S_MODIFY,CN_S_MODIFY_BY,CN_T_MODIFY)"); strSql.Append(" values ("); strSql.Append(":CN_S_OP_NO,:CN_S_OP_MODE,:CN_S_STOCK_CODE,:CN_S_START_AREA,:CN_S_END_AREA,:CN_S_OP_TYPE,:CN_T_OP_DATE,:CN_S_STATE,:CN_S_NOTE,:CN_S_OPREATOR,:CN_S_OP_FROM,:CN_S_FROM_NO,:CN_S_CREATOR,:CN_S_CREATOR_BY,:CN_T_CREATE,:CN_S_MODIFY,:CN_S_MODIFY_BY,:CN_T_MODIFY)"); DbCommand cmd = DataAccess.GetSqlStringCommand(strSql.ToString()); DataAccess.AddInParameter(cmd, "CN_S_OP_NO", ComDbType.STRING, entity.CN_S_OP_NO); DataAccess.AddInParameter(cmd, "CN_S_OP_MODE", ComDbType.STRING, entity.CN_S_OP_MODE); DataAccess.AddInParameter(cmd, "CN_S_STOCK_CODE", ComDbType.STRING, entity.CN_S_STOCK_CODE); DataAccess.AddInParameter(cmd, "CN_S_START_AREA", ComDbType.STRING, entity.CN_S_START_AREA); DataAccess.AddInParameter(cmd, "CN_S_END_AREA", ComDbType.STRING, entity.CN_S_END_AREA); DataAccess.AddInParameter(cmd, "CN_S_OP_TYPE", ComDbType.STRING, entity.CN_S_OP_TYPE); DataAccess.AddInParameter(cmd, "CN_T_OP_DATE", ComDbType.DATE, entity.CN_T_OP_DATE); DataAccess.AddInParameter(cmd, "CN_S_OPREATOR", ComDbType.STRING, entity.CN_S_OPREATOR); DataAccess.AddInParameter(cmd, "CN_S_OP_FROM", ComDbType.STRING, entity.CN_S_OP_FROM); DataAccess.AddInParameter(cmd, "CN_S_FROM_NO", ComDbType.STRING, entity.CN_S_FROM_NO); DataAccess.AddInParameter(cmd, "CN_S_STATE", ComDbType.STRING, entity.CN_S_STATE); DataAccess.AddInParameter(cmd, "CN_S_NOTE", ComDbType.STRING, entity.CN_S_NOTE); DataAccess.AddInParameter(cmd, "CN_S_CREATOR", ComDbType.STRING, entity.CN_S_CREATOR); DataAccess.AddInParameter(cmd, "CN_S_CREATOR_BY", ComDbType.STRING, entity.CN_S_CREATOR_BY); DataAccess.AddInParameter(cmd, "CN_T_CREATE", ComDbType.DATE, entity.CN_T_CREATE); DataAccess.AddInParameter(cmd, "CN_S_MODIFY", ComDbType.STRING, entity.CN_S_MODIFY); DataAccess.AddInParameter(cmd, "CN_S_MODIFY_BY", ComDbType.STRING, entity.CN_S_MODIFY_BY); DataAccess.AddInParameter(cmd, "CN_T_MODIFY", ComDbType.DATE, entity.CN_T_MODIFY); return ExecuteCommand(cmd, trans); } #endregion #region 修改 /// /// 更新一条数据 /// /// [HanHe(lt)] CREATED 2018/9/6 public SqlExecuteResult Update(TN_WM_MOVE_MSTEntity entity, DbTransaction trans) { StringBuilder strSql = new StringBuilder(); strSql.Append("update TN_WM_MOVE_MST set "); strSql.Append("CN_S_OP_MODE=:CN_S_OP_MODE,"); strSql.Append("CN_S_STOCK_CODE=:CN_S_STOCK_CODE,"); strSql.Append("CN_S_START_AREA=:CN_S_START_AREA,"); strSql.Append("CN_S_END_AREA=:CN_S_END_AREA,"); strSql.Append("CN_S_OP_TYPE=:CN_S_OP_TYPE,"); strSql.Append("CN_T_OP_DATE=:CN_T_OP_DATE,"); strSql.Append("CN_S_STATE=:CN_S_STATE,"); strSql.Append("CN_S_NOTE=:CN_S_NOTE,"); strSql.Append("CN_S_OPREATOR=:CN_S_OPREATOR,"); strSql.Append("CN_S_OP_FROM=:CN_S_OP_FROM,"); strSql.Append("CN_S_FROM_NO=:CN_S_FROM_NO,"); strSql.Append("CN_S_CREATOR=:CN_S_CREATOR,"); strSql.Append("CN_S_CREATOR_BY=:CN_S_CREATOR_BY,"); strSql.Append("CN_T_CREATE=:CN_T_CREATE,"); strSql.Append("CN_S_MODIFY=:CN_S_MODIFY,"); strSql.Append("CN_S_MODIFY_BY=:CN_S_MODIFY_BY,"); strSql.Append("CN_T_MODIFY=:CN_T_MODIFY"); strSql.Append(" where CN_S_OP_NO=:CN_S_OP_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_S_OP_MODE", ComDbType.STRING, entity.CN_S_OP_MODE); DataAccess.AddInParameter(cmd, "CN_S_STOCK_CODE", ComDbType.STRING, entity.CN_S_STOCK_CODE); DataAccess.AddInParameter(cmd, "CN_S_START_AREA", ComDbType.STRING, entity.CN_S_START_AREA); DataAccess.AddInParameter(cmd, "CN_S_END_AREA", ComDbType.STRING, entity.CN_S_END_AREA); DataAccess.AddInParameter(cmd, "CN_S_OP_TYPE", ComDbType.STRING, entity.CN_S_OP_TYPE); DataAccess.AddInParameter(cmd, "CN_T_OP_DATE", ComDbType.DATE, entity.CN_T_OP_DATE); DataAccess.AddInParameter(cmd, "CN_S_OPREATOR", ComDbType.STRING, entity.CN_S_OPREATOR); DataAccess.AddInParameter(cmd, "CN_S_OP_FROM", ComDbType.STRING, entity.CN_S_OP_FROM); DataAccess.AddInParameter(cmd, "CN_S_FROM_NO", ComDbType.STRING, entity.CN_S_FROM_NO); DataAccess.AddInParameter(cmd, "CN_S_STATE", ComDbType.STRING, entity.CN_S_STATE); DataAccess.AddInParameter(cmd, "CN_S_NOTE", ComDbType.STRING, entity.CN_S_NOTE); DataAccess.AddInParameter(cmd, "CN_S_CREATOR", ComDbType.STRING, entity.CN_S_CREATOR); DataAccess.AddInParameter(cmd, "CN_S_CREATOR_BY", ComDbType.STRING, entity.CN_S_CREATOR_BY); DataAccess.AddInParameter(cmd, "CN_T_CREATE", ComDbType.DATE, entity.CN_T_CREATE); DataAccess.AddInParameter(cmd, "CN_S_MODIFY", ComDbType.STRING, entity.CN_S_MODIFY); DataAccess.AddInParameter(cmd, "CN_S_MODIFY_BY", ComDbType.STRING, entity.CN_S_MODIFY_BY); DataAccess.AddInParameter(cmd, "CN_T_MODIFY", ComDbType.DATE, entity.CN_T_MODIFY); return ExecuteCommand(cmd, trans); } /// /// 更新一条数据 /// /// [HanHe(lt)] CREATED 2018/9/6 public SqlExecuteResult UpdateDtl(TN_WM_MOVE_MSTEntity entity, DbTransaction trans) { StringBuilder strSql = new StringBuilder(); strSql.Append("update TN_WM_MOVE_MST set "); strSql.Append("CN_S_OP_MODE=:CN_S_OP_MODE,"); strSql.Append("CN_S_STOCK_CODE=:CN_S_STOCK_CODE,"); strSql.Append("CN_S_START_AREA=:CN_S_START_AREA,"); strSql.Append("CN_S_END_AREA=:CN_S_END_AREA,"); strSql.Append("CN_S_OP_TYPE=:CN_S_OP_TYPE,"); ; strSql.Append("CN_S_STATE=:CN_S_STATE,"); strSql.Append("CN_S_NOTE=:CN_S_NOTE,"); strSql.Append("CN_S_MODIFY=:CN_S_MODIFY,"); strSql.Append("CN_S_MODIFY_BY=:CN_S_MODIFY_BY,"); strSql.Append("CN_T_MODIFY=:CN_T_MODIFY"); strSql.Append(" where CN_S_OP_NO=:CN_S_OP_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_S_OP_MODE", ComDbType.STRING, entity.CN_S_OP_MODE); DataAccess.AddInParameter(cmd, "CN_S_STOCK_CODE", ComDbType.STRING, entity.CN_S_STOCK_CODE); DataAccess.AddInParameter(cmd, "CN_S_START_AREA", ComDbType.STRING, entity.CN_S_START_AREA); DataAccess.AddInParameter(cmd, "CN_S_END_AREA", ComDbType.STRING, entity.CN_S_END_AREA); DataAccess.AddInParameter(cmd, "CN_S_OP_TYPE", ComDbType.STRING, entity.CN_S_OP_TYPE); DataAccess.AddInParameter(cmd, "CN_S_STATE", ComDbType.STRING, entity.CN_S_STATE); DataAccess.AddInParameter(cmd, "CN_S_NOTE", ComDbType.STRING, entity.CN_S_NOTE); DataAccess.AddInParameter(cmd, "CN_S_MODIFY", ComDbType.STRING, entity.CN_S_MODIFY); DataAccess.AddInParameter(cmd, "CN_S_MODIFY_BY", ComDbType.STRING, entity.CN_S_MODIFY_BY); DataAccess.AddInParameter(cmd, "CN_T_MODIFY", ComDbType.DATE, entity.CN_T_MODIFY); return ExecuteCommand(cmd, trans); } #endregion #region 删除 /// /// 删除一条数据 /// /// [HanHe(lt)] CREATED 2018/9/6 public SqlExecuteResult Delete(string sqlwhere, DbTransaction trans) { string sql = "DELETE FROM TN_WM_MOVE_MST {0}"; sql = string.Format(sql, sqlwhere); DbCommand cmd = DataAccess.GetSqlStringCommand(sql); return ExecuteCommand(cmd, trans); } #endregion #region 查询移库业务主表 /// /// 查询移库业务主表 /// /// 查询条件 /// /// [HanHe(lt)] CREATED 2018/9/6 public DataTable Getentity(string sqlwhere) { string sql = "SELECT * FROM TN_WM_MOVE_MST 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/12 public DataTable GetTrayLocation(dynamic obj) { var type = obj.type; var sql = ""; ////获取策略 判断是否要审核 //string sysConfig = SysConfig.GetValue(Constants.CL_IsAllowMixing); if (type == "货位盘点") { sql = @"(SELECT a.CN_S_STOCK_CODE,a.CN_S_STOCK_AREA,a.CN_S_LOCATION_CODE,b.CN_S_ITEM_CODE,b.CN_S_ITEM_NAME,CN_S_ITEM_STATE,b.CN_S_OWNER,b.CN_S_MODEL,b.CN_S_FIGURE_NO,ISNULL(CAST(SUM(c.CN_F_QUANTITY) AS INT),0) AS CN_F_QUANTITY, CN_S_MEASURE_UNIT,c.CN_S_LOT_NO AS CN_S_LOT_CODE FROM dbo.tn_wm_b_tray_location AS a INNER JOIN TN_WM_B_TRAY_ITEM_MST AS b ON a.CN_S_TRAY_CODE=b.CN_S_TRAY_CODE INNER JOIN dbo.TN_WM_B_TRAY_ITEM_DTL AS c ON b.CN_GUID=c.CN_PARENT_GUID GROUP BY a.CN_S_STOCK_CODE,a.CN_S_STOCK_AREA,a.CN_S_LOCATION_CODE,b.CN_S_ITEM_CODE,b.CN_S_ITEM_NAME,CN_S_ITEM_STATE,b.CN_S_OWNER,b.CN_S_MODEL,b.CN_S_FIGURE_NO,CN_S_MEASURE_UNIT,c.CN_S_LOT_NO) b"; } else { sql = @"( SELECT a.CN_S_STOCK_CODE,a.CN_S_STOCK_AREA,b.CN_S_ITEM_CODE,b.CN_S_ITEM_NAME,CN_S_ITEM_STATE,b.CN_S_OWNER,b.CN_S_MODEL,b.CN_S_FIGURE_NO,ISNULL(SUM(c.CN_F_QUANTITY),0)-MAX(b.CN_F_ALLOC_QTY) AS CN_F_QUANTITY,CN_S_MEASURE_UNIT,'' AS CN_S_END_BIT,'' AS CN_S_LOT_CODE,c.CN_S_PRODUCTION_BATCH FROM dbo.tn_wm_b_tray_location AS a INNER JOIN TN_WM_B_TRAY_ITEM_MST AS b ON a.CN_S_TRAY_CODE=b.CN_S_TRAY_CODE INNER JOIN dbo.TN_WM_B_TRAY_ITEM_DTL AS c ON b.CN_GUID=c.CN_PARENT_GUID GROUP BY a.CN_S_STOCK_CODE,a.CN_S_STOCK_AREA,b.CN_S_ITEM_CODE,b.CN_S_ITEM_NAME,CN_S_ITEM_STATE,b.CN_S_OWNER,b.CN_S_MODEL,b.CN_S_FIGURE_NO,CN_S_MEASURE_UNIT,c.CN_S_PRODUCTION_BATCH) b"; } DbCommand cmd = DataAccess.GetStoredProcCommand("prc_query"); this.DataAccess.AddInParameter(cmd, "TableName", ComDbType.CHAR, sql); 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/9/13 public SqlExecuteResult UpdateStateByNo(string CN_S_OP_NO, string CN_S_STATE, DbTransaction trans) { string sql = "UPDATE dbo.tn_wm_move_mst SET CN_S_STATE='{0}' WHERE CN_S_OP_NO IN ('{1}')"; sql = string.Format(sql, CN_S_STATE, CN_S_OP_NO); DbCommand cmd = DataAccess.GetSqlStringCommand(sql); return ExecuteCommand(cmd, trans); } public OperateResult UpdateMoveMstStateByNo(string CN_S_OP_NO, string CN_S_STATE, IDbTransaction trans) { string sql = "UPDATE dbo.tn_wm_move_mst SET CN_S_STATE='{0}' WHERE CN_S_OP_NO IN ('{1}')"; sql = string.Format(sql, CN_S_STATE, CN_S_OP_NO); return ExecuteTranSql(sql,null, trans); } #endregion #region 获取移库主表与明细表关联数据 /// /// 获取移库主表与明细表关联数据 /// /// /// [HanHe(lt)] CREATED 2018/12/20 public DataTable GetMstResult(string sqlwhere) { string sql = @"SELECT * FROM dbo.TN_WM_MOVE_MST AS a INNER JOIN dbo.TN_WM_MOVE_DTL AS b ON b.CN_S_OP_NO = a.CN_S_OP_NO INNER JOIN dbo.tn_wm_b_move_result AS c ON c.CN_S_OP_NO = a.CN_S_OP_NO AND c.CN_S_OWNER = b.CN_S_OWNER AND c.CN_S_ITEM_CODE = b.CN_S_ITEM_CODE AND ISNULL(c.CN_S_SERIAL_NO,'') = ISNULL(b.CN_S_SERIAL_NO,'') AND c.CN_S_MEASURE_UNIT = b.CN_S_MEASURE_UNIT AND c.CN_S_MODEL = b.CN_S_MODEL AND c.CN_S_ITEM_STATE = b.CN_S_ITEM_STATE AND c.CN_S_FIGURE_NO = b.CN_S_FIGURE_NO {0}"; sql = string.Format(sql, sqlwhere); return ExecuteDataTable(sql); } #endregion #region 综合查询 /// /// 综合查询 /// /// 主表字段 /// /// /// /// /// /// public DataTable GetDataList(string tableName, int pageIndex, int pageSize, out long total, object where = null, string orderBy = "") { tableName = "(" + tableName + ") t"; return ExecutePagingData(tableName, pageIndex, pageSize, out total, orderBy); } #endregion #region 获取移库主表与子表关联数据 /// /// 获取移库主表与明细表关联数据 /// /// /// [HanHe(lt)] CREATED 2018/12/20 public DataTable GetMstJoinDtl(string sqlwhere) { string sql = @" SELECT c.CN_F_QUANTITY - c.CN_F_ALLOC_QTY AS CN_F_QUANTITY_STOCK ,* FROM dbo.TN_WM_MOVE_MST AS a INNER JOIN dbo.tn_wm_move_dtl AS b ON a.CN_S_OP_NO=b.CN_S_OP_NO LEFT JOIN (SELECT SUM(CN_F_QUANTITY) AS CN_F_QUANTITY ,SUM(CN_F_ALLOC_QTY) AS CN_F_ALLOC_QTY,CN_S_OWNER,CN_S_STOCK_CODE,CN_S_ITEM_CODE,CN_S_ITEM_STATE,ISNULL(CN_S_PRODUCTION_BATCH,'') AS CN_S_PRODUCTION_BATCH FROM dbo.tn_wm_b_stock_qty GROUP BY CN_S_OWNER,CN_S_STOCK_CODE,CN_S_ITEM_CODE,CN_S_ITEM_STATE,CN_S_PRODUCTION_BATCH) AS c ON c.CN_S_OWNER = b.CN_S_OWNER AND a.CN_S_STOCK_CODE=a.CN_S_STOCK_CODE AND c.CN_S_ITEM_CODE = b.CN_S_ITEM_CODE AND c.CN_S_ITEM_STATE = b.CN_S_ITEM_STATE {0}"; sql = string.Format(sql, sqlwhere); return ExecuteDataTable(sql); } #endregion #region 获取分拣单 /// /// 获取分拣单 /// /// /// [HanHe(lt)] CREATED 2018/12/25 public List GetSortingResult(string sqlwhere) { // AND a.CN_S_LOT_NO=c.CN_S_LOT_CODE string sql = @" SELECT c.CN_S_OP_NO,A.*,c.CN_S_END_BIT,c.CN_S_AREA_CODE,d.CN_S_STOCK_CODE,d.CN_S_END_AREA FROM tn_wm_sorting_result AS a LEFT JOIN tn_wm_sorting_list AS b ON a.CN_S_SORTING_NO=b.CN_S_SORTING_NO LEFT JOIN dbo.tn_wm_b_move_result AS c ON b.CN_S_FROM_NO=c.CN_S_OP_NO AND c.CN_S_ITEM_CODE = a.CN_S_ITEM_CODE AND ISNULL(c. CN_S_SERIAL_NO,'') =ISNULL(a.CN_S_SERIAL_NO,'') AND c.CN_S_MEASURE_UNIT = a.CN_S_MEASURE_UNIT AND c.CN_S_MODEL = a.CN_S_MODEL AND c.CN_S_ITEM_STATE = a.CN_S_ITEM_STATE AND c.CN_S_TRAY_CODE = a.CN_S_TRAY_CODE LEFT JOIN dbo.TN_WM_MOVE_MST AS d ON c.CN_S_OP_NO=d.CN_S_OP_NO {0}"; sql = string.Format(sql, sqlwhere); return ExecuteQuery(sql); } #endregion } }