using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using HH.WCS.Mobox3.DSZSH.models; using SqlSugar; namespace HH.WCS.Mobox3.DSZSH.wms { /// /// 数据库 [ 查询表达式 ] 构造类 /// public class DbExpr { /// /// 通用 [ 货位 ] 筛选 /// /// l.C_ENABLE == "Y" /// && l.N_LOCK_STATE == @lock && l.S_LOCK_STATE == TN_Location.GetLockStateStr(@lock) /// && l.S_CODE == name /// && areas.Contains(l.S_AREA_CODE) /// && l.N_CURRENT_NUM == curNum /// ]]> /// /// /// /// /// public static Expression> LocFilter(int @lock, string name, List areas, int curNum) { Expression> expr = l => l.C_ENABLE == "Y"; // 已启用 if (@lock >= 0) { Expression> newExpr = l => l.N_LOCK_STATE == @lock && l.S_LOCK_STATE == TN_Location.GetLockStateStr(@lock); expr = Expression.Lambda>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]); } if (!string.IsNullOrEmpty(name)) { Expression> newExpr = l => l.S_CODE == name; expr = Expression.Lambda>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]); } if (areas != null && areas.Count > 0) { Expression> newExpr = l => areas.Contains(l.S_AREA_CODE); expr = Expression.Lambda>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]); } if (curNum >= 0) { Expression> newExpr = l => l.N_CURRENT_NUM == curNum; expr = Expression.Lambda>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]); } return expr; } /// /// 起点货位 ( 未绑定 ) /// /// l.C_ENABLE == "Y" /// && l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "无" /// && l.S_CODE == name /// && areas.Contains(l.S_AREA_CODE) /// && l.N_CURRENT_NUM == 0 /// ]]> /// /// /// public static Expression> StartLocUnbind(string name = "", List areas = null) { return LocFilter(0, name, areas, 0); } /// /// 起点货位 ( 已绑定 ) /// /// l.C_ENABLE == "Y" /// && l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "无" /// && l.S_CODE == name /// && areas.Contains(l.S_AREA_CODE) /// && l.N_CURRENT_NUM == 1 /// ]]> /// /// /// public static Expression> StartLoc(string name = "", List areas = null) { return LocFilter(0, name, areas, 1); } /// /// 终点货位 /// /// l.C_ENABLE == "Y" /// && l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "无" /// && l.S_CODE == name /// && areas.Contains(l.S_AREA_CODE) /// && l.N_CURRENT_NUM == 0 /// ]]> /// /// /// public static Expression> EndLoc(string name = "", List areas = null) { return LocFilter(0, name, areas, 0); } } }