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