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