using HH.WMS.Common;
using HH.WMS.Entitys;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HH.WMS.DAL.SysMgr
{
public class TN_WM_B_STRATEGYDAL : DapperBaseDAL
{
#region 获取库区下所有策略
///
/// 获取库区下所有策略
///
/// 库区编码
/// tokenId
///
/// [HanHe(xdl)] CREATED 2018/12/05
public DataTable GetStrategyList(string areaCode)
{
string sql = @"select stra.*,suse.CN_N_PRIORITY from tn_wm_b_strategy_use suse left join tn_wm_b_strategy stra on
suse.CN_STRATEGY_GUID=stra.CN_GUID where stra.CN_C_IS_USE='" + Constants.Y + "' AND suse.CN_S_STOCK_AREA='" + areaCode + "'";
return ExecuteDataTable(sql);
}
///
/// 获取库区所有没设置的策略
///
/// 库区编码
///
public DataTable GetNoStrategyList(string areaCode)
{
string sql = @"select * from tn_wm_b_strategy where CN_C_IS_USE='" + Constants.Y + "' AND CN_GUID not in(select CN_STRATEGY_GUID from tn_wm_b_strategy_use where CN_S_STOCK_AREA='" + areaCode + "')";
return ExecuteDataTable(sql);
}
#endregion
#region 根据库区编码和策略类型获取策略
///
/// 根据库区编码和策略类型获取策略,策略类型选填(三生物料上架PDA接口)
///
/// 库区编码
/// 策略类型
public DataTable GetStrategyType(string areaCode, string strategyType)
{
string sql = @"select stra.*,suse.CN_N_PRIORITY,suse.CN_S_STOCK_AREA from dbo.tn_wm_b_strategy_use suse left join dbo.tn_wm_b_strategy stra on
suse.CN_STRATEGY_GUID=stra.CN_GUID where stra.CN_C_IS_USE='" + Constants.Y + "' ";
if (!string.IsNullOrEmpty(areaCode))
{
sql = sql + " AND suse.CN_S_STOCK_AREA='" + areaCode + "' ";
}
if (!string.IsNullOrEmpty(strategyType))
{
sql = sql + " AND STRA.CN_S_TYPE='" + strategyType + "' ";
}
return ExecuteDataTable(sql);
}
#endregion
#region 更新优先级
///
/// 更新优先级
///
/// 库区编码
/// 仓库编码
/// 策略Guid
/// 优先级
///
public OperateResult UpdatePriority(string areaCode, string stockCode, string strategyGuid, string priority)
{
string sq1 = "UPDATE TN_WM_B_STRATEGY_USE SET CN_N_PRIORITY=@CN_N_PRIORITY WHERE CN_STRATEGY_GUID=@CN_STRATEGY_GUID and CN_S_STOCK_AREA=@CN_S_STOCK_AREA and CN_S_STOCK_CODE=@CN_S_STOCK_CODE";
OperateResult result = ExecuteTranSql(sq1, new
{
CN_N_PRIORITY = priority,
CN_STRATEGY_GUID = strategyGuid,
CN_S_STOCK_AREA = areaCode,
CN_S_STOCK_CODE = stockCode
}, null);
return result;
}
#endregion
public OperateResult DeleteAreaStrategy(string areaCode, string stockCode, string strategyGuid)
{
string sq1 = "DELETE FROM TN_WM_B_STRATEGY_USE WHERE CN_STRATEGY_GUID=@CN_STRATEGY_GUID and CN_S_STOCK_AREA=@CN_S_STOCK_AREA and CN_S_STOCK_CODE=@CN_S_STOCK_CODE";
OperateResult result = ExecuteTranSql(sq1, new
{
CN_STRATEGY_GUID = strategyGuid,
CN_S_STOCK_AREA = areaCode,
CN_S_STOCK_CODE = stockCode
}, null);
return result;
}
///
/// 保存库区策略关联
///
/// 仓库编码
/// 库区编码
/// 策略Guid
///
public OperateResult SaveStrategyUse(string stockCode, string areaCode, List guidList)
{
OperateResult result = new OperateResult();
foreach (var item in guidList)
{
string sq1 = @"INSERT INTO tn_wm_b_strategy_use(CN_GUID,CN_STRATEGY_GUID,CN_S_STOCK_CODE,CN_S_STOCK_AREA,CN_N_PRIORITY,CN_N_RATIO,CN_N_MAX_SCALE)
VALUES(@CN_GUID,@CN_STRATEGY_GUID,@CN_S_STOCK_CODE,@CN_S_STOCK_AREA,@CN_N_PRIORITY,@CN_N_RATIO,@CN_N_MAX_SCALE)";
result = ExecuteTranSql(sq1, new
{
CN_GUID = System.Guid.NewGuid().ToString(),
CN_STRATEGY_GUID = item,
CN_S_STOCK_CODE = stockCode,
CN_S_STOCK_AREA = areaCode,
CN_N_PRIORITY = "1",
CN_N_RATIO = "1",
CN_N_MAX_SCALE = "1"
}, null);
if (result.Status == ResultStatus.Error)
return result;
}
return result;
}
}
}