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 获取库区下所有策略
|
/// <summary>
|
/// 获取库区下所有策略
|
/// </summary>
|
/// <param name="areaCode">库区编码</param>
|
/// <param name="tokenId">tokenId</param>
|
/// <returns></returns>
|
/// <history>[HanHe(xdl)] CREATED 2018/12/05</history>
|
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);
|
}
|
|
/// <summary>
|
/// 获取库区所有没设置的策略
|
/// </summary>
|
/// <param name="areaCode">库区编码</param>
|
/// <returns></returns>
|
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 根据库区编码和策略类型获取策略
|
/// <summary>
|
/// 根据库区编码和策略类型获取策略,策略类型选填(三生物料上架PDA接口)
|
/// </summary>
|
/// <param name="areaCode">库区编码</param>
|
/// <param name="strategyType">策略类型</param>
|
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 更新优先级
|
/// <summary>
|
/// 更新优先级
|
/// </summary>
|
/// <param name="areaCode">库区编码</param>
|
/// <param name="stockCode">仓库编码</param>
|
/// <param name="strategyGuid">策略Guid</param>
|
/// <param name="priority">优先级</param>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 保存库区策略关联
|
/// </summary>
|
/// <param name="stockCode">仓库编码</param>
|
/// <param name="areaCode">库区编码</param>
|
/// <param name="guidList">策略Guid</param>
|
/// <returns></returns>
|
public OperateResult SaveStrategyUse(string stockCode, string areaCode, List<string> 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;
|
}
|
|
}
|
}
|