using HH.WMS.Common; using HH.WMS.Entitys; using HH.WMS.Entitys.Basic; using HH.WMS.Entitys.Dto; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HH.WMS.DAL.OutStock { public class OutStockDAL : DapperBaseDAL { #region 发货通知单主表-分页 /// /// 发货通知单主表-分页 /// /// /// /// public DataTable GetOutList(OutSearchDto param, out long total) { string sql = @" SELECT * FROM TN_WM_OUT_MST WHERE 1=1 "; sql += GetFilterField("CN_S_OP_NO", param.CN_S_OP_NO, "like"); sql += GetFilterField("CN_S_STATE", param.CN_S_STATE, "in"); sql += GetFilterField("CN_T_CREATE", param.CN_T_CREATE, "dateArray"); sql = "(" + sql + ") t"; int pageIndex = Convert.ToInt32(param.pageIndex); int pageSize = Convert.ToInt32(param.pageSize); string orderBy = Util.ToString(param.orderBy); return ExecutePagingData(sql, pageIndex, pageSize, out total, orderBy); } #endregion #region 修改库区分配量 /// /// 修改库区分配量 /// /// /// public OperateResult UpdateAreaAlloc(TN_WM_B_AREA_QTYEntity areaQty, IDbTransaction trans) { if (areaQty.CN_F_QUANTITY == 0) { string sql = @"DELETE FROM TN_WM_B_AREA_QTY WHERE CN_GUID=@CN_GUID AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)"; return ExecuteTranSql(sql, areaQty, trans); } else { string sql = @"UPDATE TN_WM_B_AREA_QTY SET CN_F_ALLOC_QTY=@CN_F_ALLOC_QTY,CN_F_QUANTITY=@CN_F_QUANTITY,CN_S_TIMESTAMP='{0}' WHERE CN_GUID=@CN_GUID AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)"; sql = string.Format(sql, DateTime.Now.ToString("yyyyMMddHHmmssffff")); return ExecuteTranSql(sql, areaQty, trans); } } #endregion #region 修改库存分配量 /// /// 修改库存分配量 /// /// /// /// public OperateResult UpdateStockAllocQty(TN_WM_B_STOCK_QTYEntity stockQty, IDbTransaction trans, string timeStamp = "") { if (stockQty.CN_F_QUANTITY == 0) { string sql = @"DELETE FROM TN_WM_B_STOCK_QTY WHERE CN_GUID=@CN_GUID AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)"; return ExecuteTranSql(sql, stockQty, trans); } else { string sql = "UPDATE TN_WM_B_STOCK_QTY SET CN_F_ALLOC_QTY=@CN_F_ALLOC_QTY,CN_F_QUANTITY=@CN_F_QUANTITY,CN_S_TIMESTAMP='{0}' WHERE CN_GUID=@CN_GUID AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)"; sql = string.Format(sql, string.IsNullOrEmpty(timeStamp) ? DateTime.Now.ToString("yyyyMMddHHmmssffff") : timeStamp); return ExecuteTranSql(sql, stockQty, trans); } } #endregion #region 修改托盘物料分配量 /// /// 修改托盘物料分配量 /// /// /// /// /// public OperateResult UpdateTrayItemAllocQty(TN_WM_B_TRAY_ITEM_MSTEntity trayItem, IDbTransaction trans, string timeStamp = "") { if (trayItem.CN_F_QUANTITY == 0) { string sql = @"DELETE FROM TN_WM_B_TRAY_ITEM_MST WHERE CN_GUID=@CN_GUID AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)"; var or = ExecuteTranSql(sql, trayItem, trans); if (or.AffectedRows == 0) return or; sql = @"DELETE FROM TN_WM_B_TRAY_ITEM_DTL WHERE CN_PARENT_GUID=@CN_GUID"; return ExecuteTranSql(sql, trayItem, trans); } else { string sql = "UPDATE TN_WM_B_TRAY_ITEM_MST SET CN_F_ALLOC_QTY=@CN_F_ALLOC_QTY,CN_F_QUANTITY=@CN_F_QUANTITY,CN_S_TIMESTAMP='{0}' WHERE CN_GUID=@CN_GUID AND (CN_S_TIMESTAMP = @CN_S_TIMESTAMP OR CN_S_TIMESTAMP IS NULL)"; sql = string.Format(sql, string.IsNullOrEmpty(timeStamp) ? DateTime.Now.ToString("yyyyMMddHHmmssffff") : timeStamp); var or = ExecuteTranSql(sql, trayItem, trans); if (or.AffectedRows == 0) return or; sql = " UPDATE TN_WM_B_TRAY_ITEM_DTL SET CN_F_QUANTITY=@CN_F_QUANTITY WHERE CN_PARENT_GUID=@CN_GUID "; return ExecuteTranSql(sql, trayItem, trans); } } #endregion #region 取货位分拣中的物料 /// /// 取货位分拣中的物料 /// /// /// public List GetSortingLocation(string locationCode) { string sql = @"SELECT * FROM TN_WM_SORTING_LIST A, TN_WM_SORTING_LOCATION B WHERE A.CN_S_SORTING_NO = B.CN_S_SORTING_NO AND A.CN_S_STATE='分拣中' AND B.CN_S_LOCATION_CODE IN( SELECT TOP 1 CN_S_START_BIT FROM TN_WM_TASK WHERE CN_S_END_BIT=@CN_S_END_BIT ORDER BY CN_T_CREATE DESC)"; return ExecuteQuery(sql, new { CN_S_END_BIT = locationCode }); } #endregion } }