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 {
|
/// <summary>
|
/// 数据库 [ 查询表达式 ] 构造类
|
/// </summary>
|
public class DbExpr {
|
/// <summary>
|
/// 通用 [ 货位 ] 筛选
|
/// </summary>
|
/// <remarks><code><![CDATA[
|
/// l => 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
|
/// ]]></code></remarks>
|
/// <param name="lock"></param>
|
/// <param name="name"></param>
|
/// <param name="areas"></param>
|
/// <param name="curNum"></param>
|
/// <returns></returns>
|
public static Expression<Func<TN_Location, bool>> LocFilter(int @lock, string name, List<string> areas, int curNum) {
|
Expression<Func<TN_Location, bool>> expr = l => l.C_ENABLE == "Y"; // 已启用
|
|
if (@lock >= 0) {
|
Expression<Func<TN_Location, bool>> newExpr =
|
l => l.N_LOCK_STATE == @lock && l.S_LOCK_STATE == TN_Location.GetLockStateStr(@lock);
|
expr = Expression.Lambda<Func<TN_Location, bool>>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]);
|
}
|
if (!string.IsNullOrEmpty(name)) {
|
Expression<Func<TN_Location, bool>> newExpr = l => l.S_CODE == name;
|
expr = Expression.Lambda<Func<TN_Location, bool>>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]);
|
}
|
if (areas != null && areas.Count > 0) {
|
Expression<Func<TN_Location, bool>> newExpr = l => areas.Contains(l.S_AREA_CODE);
|
expr = Expression.Lambda<Func<TN_Location, bool>>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]);
|
}
|
if (curNum >= 0) {
|
Expression<Func<TN_Location, bool>> newExpr = l => l.N_CURRENT_NUM == curNum;
|
expr = Expression.Lambda<Func<TN_Location, bool>>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]);
|
}
|
|
return expr;
|
}
|
|
/// <summary>
|
/// 起点货位 ( 未绑定 )
|
/// </summary>
|
/// <remarks><code><![CDATA[
|
/// l => 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
|
/// ]]></code></remarks>
|
/// <param name="name"></param>
|
/// <param name="areas"></param>
|
/// <returns></returns>
|
public static Expression<Func<TN_Location, bool>> StartLocUnbind(string name = "", List<string> areas = null) {
|
return LocFilter(0, name, areas, 0);
|
}
|
|
/// <summary>
|
/// 起点货位 ( 已绑定 )
|
/// </summary>
|
/// <remarks><code><![CDATA[
|
/// l => 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
|
/// ]]></code></remarks>
|
/// <param name="name"></param>
|
/// <param name="areas"></param>
|
/// <returns></returns>
|
public static Expression<Func<TN_Location, bool>> StartLoc(string name = "", List<string> areas = null) {
|
return LocFilter(0, name, areas, 1);
|
}
|
|
/// <summary>
|
/// 终点货位
|
/// </summary>
|
/// <remarks><code><![CDATA[
|
/// l => 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
|
/// ]]></code></remarks>
|
/// <param name="name"></param>
|
/// <param name="areas"></param>
|
/// <returns></returns>
|
public static Expression<Func<TN_Location, bool>> EndLoc(string name = "", List<string> areas = null) {
|
return LocFilter(0, name, areas, 0);
|
}
|
}
|
}
|