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_MSTDAL : DapperBaseDAL { #region 获取分页列表 /// /// 获取分页列表 /// /// /// /// [HanHe(lt)] CREATED 2018/7/3 public DataTable GetDataTable(dynamic obj) { var isFirstLevelOrg = obj.Value("isFirstLevelOrg"); var currentOrgCode = obj.Value("currentOrgCode"); string sqlWhere = obj.sqlWhere; if (!isFirstLevelOrg) { //sqlWhere += " AND CN_S_NEXT_ORG_CODE='" + currentOrgCode + "' "; sqlWhere += " AND ((CN_S_CURR_ORG_CODE='" + currentOrgCode + "' or CN_S_NEXT_ORG_CODE='" + currentOrgCode + "' ) OR CN_S_NEXT_ORG_CODE='') "; } DbCommand cmd = DataAccess.GetStoredProcCommand("prc_query"); this.DataAccess.AddInParameter(cmd, "TableName", ComDbType.CHAR, "TN_WM_CHECK_MST"); this.DataAccess.AddInParameter(cmd, "WhereStr", ComDbType.CHAR, 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/7/3 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_CHECK_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/7/3 public DataTable Getentity(string sqlwhere) { string sql = "SELECT * FROM TN_WM_CHECK_MST WHERE 1=1 {0}"; sql = string.Format(sql, sqlwhere); DbCommand cmd = DataAccess.GetSqlStringCommand(sql); return DataAccessExtensive.ExecuteDataTable(this.DataAccess, cmd); } #endregion /// /// 获取货位物料信息 /// /// 查询条件 /// /// [HanHe(lt)] CREATED 2018/7/12 public List Getlist(string sqlwhere, string type) { var sql = ""; if (type == "物料盘点") { sql = @"select * from (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,'' AS CN_S_LOCATION_CODE,'' as CN_S_LOT_NO,b.CN_S_OWNER,b.CN_S_MODEL,b.CN_S_FIGURE_NO,SUM(CN_F_QUANTITY) AS CN_F_QUANTITY, CN_S_MEASURE_UNIT FROM dbo.tn_wm_b_tray_location AS a LEFT JOIN TN_WM_B_TRAY_ITEM_MST AS b ON a.CN_S_TRAY_CODE=b.CN_S_TRAY_CODE 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) b {0} "; } else { sql = @"select * from (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,'' as CN_S_LOT_NO,b.CN_S_OWNER,b.CN_S_MODEL,b.CN_S_FIGURE_NO,ISNULL(CN_F_QUANTITY,0) AS CN_F_QUANTITY, CN_S_MEASURE_UNIT FROM dbo.tn_wm_b_tray_location AS a LEFT JOIN TN_WM_B_TRAY_ITEM_MST AS b ON a.CN_S_TRAY_CODE=b.CN_S_TRAY_CODE ) b {0} "; } sql = string.Format(sql, sqlwhere); DbCommand cmd = DataAccess.GetSqlStringCommand(sql); return DataAccessExtensive.ExecuteListEntity(this.DataAccess, cmd, SetEntity); } /// /// 设置实体的各列 /// private void SetEntity(TN_WM_CHECK_DTLEntity entity, IDataReader reader) { SetEntityUti(entity, "CN_S_STOCK_CODE", "CN_S_STOCK_CODE", reader); SetEntityUti(entity, "CN_S_STOCK_AREA", "CN_S_STOCK_AREA", reader); SetEntityUti(entity, "CN_S_ITEM_CODE", "CN_S_ITEM_CODE", reader); SetEntityUti(entity, "CN_S_ITEM_NAME", "CN_S_ITEM_NAME", reader); SetEntityUti(entity, "CN_S_ITEM_STATE", "CN_S_ITEM_STATE", reader); SetEntityUti(entity, "CN_S_LOT_NO", "CN_S_LOT_NO", reader); SetEntityUti(entity, "CN_S_OWNER", "CN_S_OWNER", reader); SetEntityUti(entity, "CN_S_MODEL", "CN_S_MODEL", reader); SetEntityUti(entity, "CN_S_FIGURE_NO", "CN_S_FIGURE_NO", reader); SetEntityUti(entity, "CN_F_QUANTITY", "CN_F_QUANTITY", reader); SetEntityUti(entity, "CN_S_MEASURE_UNIT", "CN_S_MEASURE_UNIT", reader); SetEntityUti(entity, "CN_S_LOCATION_CODE", "CN_S_LOCATION_CODE", reader); } #region 根据盘点单号修改状态 /// /// 根据盘点单号修改状态 /// /// /// /// /// [HanHe(lt)] CREATED 2018/7/12 public SqlExecuteResult UpdateStateByNo(string CN_S_OP_NO, string CN_S_STATE, DbTransaction trans) { string sql = "UPDATE dbo.tn_wm_check_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); } #endregion /// /// 更新数据 /// /// [HanHe(lt)] CREATED 2018/7/3 public OperateResult UpdateMstByOpNo(string state, string sqlwhere, IDbTransaction trans) { string sql = "update tn_wm_check_mst set CN_S_STATE='{0}' {1}"; sql = string.Format(sql, state, sqlwhere); DbCommand cmd = DataAccess.GetSqlStringCommand(sql); return ExecuteTranSql(sql, null, trans); } #region 空货位 更新货位拓展表 /// /// 更新货位拓展表 /// /// /// [HanHe(lt)] CREATED 2018/12/20 public OperateResult UpdateLocationExt(string locationCodes, IDbTransaction trans) { string sql = @" UPDATE tn_wm_b_location_ext SET CN_S_USE_STATE='空' FROM tn_wm_b_location_ext AS a WITH (NOLOCK) LEFT JOIN dbo.tn_wm_b_tray_location AS b WITH (NOLOCK) ON a.CN_S_LOCATION_CODE=b.CN_S_LOCATION_CODE WHERE a.CN_S_LOCATION_CODE IN ('" + locationCodes + "') AND b.CN_S_LOCATION_CODE IS NULL"; return ExecuteTranSql(sql, null, trans); } #endregion #region 空货位 更新货位拓展表 /// /// 更新货位拓展表 /// /// /// [HanHe(lt)] CREATED 2018/12/20 public OperateResult DeleteTrayLocation(string trayCodes, IDbTransaction trans) { string sql = @" DELETE tn_wm_b_tray_location FROM tn_wm_b_tray_location AS a WITH (NOLOCK) LEFT JOIN TN_WM_B_TRAY_ITEM_MST AS b WITH (NOLOCK) ON b.CN_S_TRAY_CODE = a.CN_S_TRAY_CODE INNER JOIN dbo.tn_wm_tray_info AS c WITH (NOLOCK) ON c.CN_S_TRAY_CODE = a.CN_S_TRAY_CODE WHERE CN_S_TRAY_TYPE='虚拟托盘' AND a.CN_S_TRAY_CODE IN ('" + trayCodes + "') AND b.CN_S_TRAY_CODE IS NULL"; return ExecuteTranSql(sql, null, trans); } #endregion /// /// 根据盘点单号获取盘点明细 /// /// /// /// [HanHe(dbs)] CREATED 2019/3/28 public List GetCheckList(string opNo,string type) { string sql = string.Empty; if (type.Equals("货位盘点")) { sql = @"select b.CN_S_STOCK_AREA,a.CN_S_LOCATION_CODE,c.CN_S_TRAY_CODE,c.CN_S_TRAY_GRID,c.CN_S_ITEM_CODE,c.CN_S_ITEM_NAME, c.CN_S_MODEL,c.CN_S_FIGURE_NO,c.CN_S_ITEM_STATE,c.CN_S_MEASURE_UNIT,c.CN_S_OWNER,sum(d.CN_F_QUANTITY) CN_F_QUANTITY, d.CN_S_PACKING_UNIT,d.CN_F_PACKING_QTY from tn_wm_check_dtl a join tn_wm_b_tray_location b on a.CN_S_LOCATION_CODE=b.CN_S_LOCATION_CODE left join TN_WM_B_TRAY_ITEM_MST c on b.CN_S_TRAY_CODE=c.CN_S_TRAY_CODE join TN_WM_B_TRAY_ITEM_DTL d on c.CN_GUID=d.CN_PARENT_GUID where CN_S_OP_NO=@CN_S_OP_NO group by b.CN_S_STOCK_AREA,a.CN_S_LOCATION_CODE,c.CN_S_TRAY_CODE,c.CN_S_TRAY_GRID,c.CN_S_ITEM_CODE,c.CN_S_ITEM_NAME, c.CN_S_MODEL,c.CN_S_FIGURE_NO,c.CN_S_ITEM_STATE,c.CN_S_MEASURE_UNIT,c.CN_S_OWNER, d.CN_S_PACKING_UNIT,d.CN_F_PACKING_QTY"; } else if (type.Equals("物料盘点")) { sql = @"select d.CN_S_STOCK_AREA,d.CN_S_LOCATION_CODE,d.CN_S_TRAY_CODE,b.CN_S_TRAY_GRID,b.CN_S_ITEM_CODE,b.CN_S_ITEM_NAME,b.CN_S_MODEL, b.CN_S_FIGURE_NO,b.CN_S_ITEM_STATE,b.CN_S_MEASURE_UNIT,b.CN_S_OWNER,sum(c.CN_F_QUANTITY) CN_F_QUANTITY,c.CN_S_PACKING_UNIT,c.CN_F_PACKING_QTY from tn_wm_check_dtl a join TN_WM_B_TRAY_ITEM_MST b on a.CN_S_ITEM_CODE=b.CN_S_ITEM_CODE and a.CN_S_ITEM_STATE=b.CN_S_ITEM_STATE and a.CN_S_OWNER=b.CN_S_OWNER join TN_WM_B_TRAY_ITEM_DTL c on b.CN_GUID=c.CN_PARENT_GUID join tn_wm_b_tray_location d on b.CN_S_TRAY_CODE=d.CN_S_TRAY_CODE where CN_S_OP_NO=@CN_S_OP_NO group by d.CN_S_STOCK_AREA,d.CN_S_LOCATION_CODE,d.CN_S_TRAY_CODE,b.CN_S_TRAY_GRID,b.CN_S_ITEM_CODE,b.CN_S_ITEM_NAME,b.CN_S_MODEL, b.CN_S_FIGURE_NO,b.CN_S_ITEM_STATE,b.CN_S_MEASURE_UNIT,b.CN_S_OWNER,c.CN_S_PACKING_UNIT,c.CN_F_PACKING_QTY"; } return ExecuteQuery(sql, new { CN_S_OP_NO = opNo }); } } }