using HH.MData;
|
using HH.WMS.Common;
|
using HH.WMS.Entitys.Algorithm;
|
using HH.WMS.Entitys.Basic;
|
using MongoDB.Bson;
|
using MongoDB.Driver;
|
using MongoDB.Driver.Builders;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace HH.WMS.DAL.Basic
|
{
|
public class TN_AB_B_STOCK_AREADAL : BaseDAL
|
{
|
/// <summary>
|
/// 根据库区类型找库区实体
|
/// </summary>
|
/// <param name="areaClass"></param>
|
/// <returns></returns>
|
public List<AutoBomStockAreaEntity> GetSHLocationArea(string areaClass)
|
{
|
List<AutoBomStockAreaEntity> listLogic = new List<AutoBomStockAreaEntity>();
|
var query = Query.EQ("CN_S_AREA_CLASS", areaClass);
|
listLogic = MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA");
|
|
return listLogic;
|
}
|
public List<AutoBomStockAreaEntity> GetZCLocationArea(string areaClass)
|
{
|
List<AutoBomStockAreaEntity> listLogic = new List<AutoBomStockAreaEntity>();
|
var query = Query.EQ("CN_S_AREA_CLASS", areaClass);
|
listLogic = MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA");
|
|
return listLogic;
|
}
|
public List<AutoBomStockAreaEntity> GetAreaListByType(string areaType)
|
{
|
List<AutoBomStockAreaEntity> listLogic = new List<AutoBomStockAreaEntity>();
|
var query = Query.EQ("CN_N_TYPE", Convert.ToInt32(areaType));
|
listLogic = MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA");
|
|
return listLogic;
|
}
|
public List<AutomStockEntity> GetStockList()
|
{
|
return MongoDBSingleton.Instance.FindAll<AutomStockEntity>("TN_AB_STOCK");
|
}
|
|
public List<AutoBomStockAreaEntity> GetListByStockArea(string areaType)
|
{
|
IMongoQuery query = null;
|
if (string.IsNullOrEmpty(areaType))
|
{
|
List<int> lstAreaType = new List<int>();
|
lstAreaType.Add(1);
|
lstAreaType.Add(4);
|
var listAreaCode = lstAreaType.ConvertAll<BsonValue>(x => x);
|
query = Query.In("CN_N_TYPE", listAreaCode);
|
//query = Query.EQ("CN_N_TYPE", 1);
|
}
|
else
|
{
|
query = Query.EQ("CN_N_TYPE", int.Parse(areaType));
|
}
|
return MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA");
|
}
|
#region 根据库区编码获取库区实体
|
/// <summary>
|
/// 所有仓库
|
/// </summary>
|
/// <param name="areaCode">库区编码</param>
|
/// <returns></returns>
|
/// <History>[HANHE(XDL)] CREATED BY 2018-11-21</History>
|
public AutoBomStockAreaEntity GetStockAreaEntity(string areaCode)
|
{
|
AutoBomStockAreaEntity Logic = new AutoBomStockAreaEntity();
|
var query = Query.EQ("CN_S_AREA_CODE", areaCode);
|
Logic = MongoDBSingleton.Instance.FindOne<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA");
|
return Logic;
|
}
|
|
/// <summary>
|
/// 根据作业区类型获取库区列表
|
/// </summary>
|
/// <param name="areaClass">作业区类型</param>
|
/// <returns></returns>
|
public List<AutoBomStockAreaEntity> GetAreaByAreaClass(string areaClass)
|
{
|
List<AutoBomStockAreaEntity> listLogic = new List<AutoBomStockAreaEntity>();
|
var query = Query.EQ("CN_S_AREA_CLASS", areaClass);
|
listLogic = MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA");
|
return listLogic;
|
}
|
|
/// <summary>
|
/// 通过多个作业区类型获取库区集合
|
/// </summary>
|
/// <param name="areaClass"></param>
|
/// <returns></returns>
|
public List<AutoBomStockAreaEntity> GetAreaByManyClass(string areasClass)
|
{
|
IMongoQuery query = null;
|
List<AutoBomStockAreaEntity> listLogic = new List<AutoBomStockAreaEntity>();
|
|
List<string> lstClass = new List<string>(areasClass.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries));
|
var listClass = lstClass.ConvertAll<BsonValue>(x => x);
|
query = Query.In("CN_S_AREA_CLASS", listClass);
|
listLogic = MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA");
|
|
return listLogic;
|
}
|
/// <summary>
|
/// 根据作业区类型获取库区列表
|
/// </summary>
|
/// <param name="areaClass">作业区类型</param>
|
/// <returns></returns>
|
public List<AutoBomStockAreaEntity> GetAreaByAreaClassYS(string areaClass)
|
{
|
List<AutoBomStockAreaEntity> listLogic = new List<AutoBomStockAreaEntity>();
|
var query = Query.EQ("CN_S_AREA_CLASS", areaClass);
|
SortByDocument sortBy = new SortByDocument();
|
sortBy.Add("CN_N_ORDER", 1);
|
listLogic = MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(query, sortBy, "TN_AB_B_STOCK_AREA");
|
return listLogic;
|
}
|
|
/// <summary>
|
/// 通过多个作业区类型获取库区集合
|
/// </summary>
|
/// <param name="areaClass"></param>
|
/// <returns></returns>
|
public List<AutoBomStockAreaEntity> GetAreaByManyClassYS(string areasClass)
|
{
|
IMongoQuery query = null;
|
List<AutoBomStockAreaEntity> listLogic = new List<AutoBomStockAreaEntity>();
|
|
List<string> lstClass = new List<string>(areasClass.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries));
|
var listClass = lstClass.ConvertAll<BsonValue>(x => x);
|
query = Query.In("CN_S_AREA_CLASS", listClass);
|
SortByDocument sortBy = new SortByDocument();
|
sortBy.Add("CN_N_ORDER", 1);
|
listLogic = MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(query, sortBy, "TN_AB_B_STOCK_AREA");
|
|
return listLogic;
|
}
|
#endregion
|
|
#region 单条查询
|
/// <summary>
|
/// 单条查询
|
/// </summary>
|
/// <param name="field"></param>
|
/// <param name="value"></param>
|
/// <returns></returns>
|
public AutoBomStockAreaEntity GetSingle(string field, string value)
|
{
|
var query = Query.EQ(field, value);
|
return MongoDBSingleton.Instance.FindOne<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA");
|
}
|
#endregion
|
|
#region 所有库区
|
/// <summary>
|
/// 所有库区
|
/// </summary>
|
/// <param name="stockCode">仓库号</param>
|
/// <param name="include">包含库区类型 1:库区 2:作业区 3:逻辑分区 4:1+2 </param>
|
/// <returns></returns>
|
public List<AutoBomStockAreaEntity> GetArea(string stockCode, int include)
|
{
|
IMongoQuery mq = null;
|
switch (include)
|
{
|
case 0:
|
if (!string.IsNullOrEmpty(stockCode))
|
mq = Query.EQ("CN_S_STOCK_CODE", stockCode);
|
break;
|
case 1:
|
if (!string.IsNullOrEmpty(stockCode))
|
mq = Query.And(Query.EQ("CN_S_STOCK_CODE", stockCode), Query.EQ("CN_N_TYPE", 1));
|
else
|
mq = Query.EQ("CN_N_TYPE", 1);
|
break;
|
case 2:
|
if (!string.IsNullOrEmpty(stockCode))
|
mq = Query.And(Query.EQ("CN_S_STOCK_CODE", stockCode), Query.EQ("CN_N_TYPE", 4));
|
else
|
mq = Query.EQ("CN_N_TYPE", 4);
|
break;
|
case 3:
|
if (!string.IsNullOrEmpty(stockCode))
|
mq = Query.And(Query.EQ("CN_S_STOCK_CODE", stockCode), Query.EQ("CN_N_TYPE", 2));
|
else
|
mq = Query.EQ("CN_N_TYPE", 2);
|
break;
|
case 4:
|
if (!string.IsNullOrEmpty(stockCode))
|
mq = Query.And(Query.EQ("CN_S_STOCK_CODE", stockCode), Query.Or(Query.EQ("CN_N_TYPE", 1), Query.EQ("CN_N_TYPE", 4)));
|
else
|
mq = Query.Or(Query.EQ("CN_N_TYPE", 1), Query.EQ("CN_N_TYPE", 4));
|
break;
|
}
|
SortByDocument sortBy = new SortByDocument();
|
sortBy.Add("CN_S_AREA_NAME", 1);
|
return MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(mq, sortBy, "TN_AB_B_STOCK_AREA");
|
|
//if (!string.IsNullOrEmpty(stockCode))
|
//{
|
// //var query = Query.EQ("CN_S_STOCK_CODE", stockCode);
|
// var query = Query.And(Query.EQ("CN_S_STOCK_CODE", stockCode), Query.EQ("CN_N_TYPE", 1));
|
// return MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA");
|
//}
|
//else
|
//{
|
// //modify by zh 2018-12-11
|
// var query = Query.Or(Query.EQ("CN_N_TYPE", 1), Query.EQ("CN_N_TYPE", 4));
|
// return MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA");
|
//}
|
}
|
|
public List<AutoBomStockAreaEntity> GetStockAreas()
|
{
|
return MongoDBSingleton.Instance.FindAll<AutoBomStockAreaEntity>("TN_AB_B_STOCK_AREA");
|
}
|
|
public AutoBomStockAreaEntity GetStockArea(string fieldName, string Value)
|
{
|
IMongoQuery query = Query.EQ("" + fieldName + "", Value);
|
return MongoDBSingleton.Instance.FindOne<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA");
|
}
|
|
#endregion
|
|
#region 获取所有自动库区
|
/// <summary>
|
/// 获取所有自动库区
|
/// </summary>
|
/// <returns></returns>
|
public List<AutoBomStockAreaEntity> GetAutoAreas()
|
{
|
var query = Query.EQ("CN_C_IS_AUTO", Constants.Y);
|
return MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA");
|
}
|
#endregion
|
|
#region 修改库区模式
|
/// <summary>
|
/// 修改库区模式
|
/// </summary>
|
/// <param name="areaCode"></param>
|
/// <param name="value"></param>
|
/// <returns></returns>
|
public bool UpdateCurrentMode(string areaCode, string value)
|
{
|
IMongoQuery query = Query.EQ("CN_S_AREA_CODE", areaCode);
|
List<UpdateBuilder> updateList = new List<UpdateBuilder>();
|
updateList.Add(Update.Set("CN_S_CURRENT_MODE", value));
|
IMongoUpdate update = Update.Combine(updateList.ToArray());
|
return MongoDBSingleton.Instance.Update<AutoBomStockAreaEntity>(query, update, "TN_AB_B_STOCK_AREA", UpdateFlags.Multi);
|
}
|
#endregion
|
|
#region 获取所有库区
|
/// <summary>
|
/// 获取所有库区
|
/// </summary>
|
/// <returns></returns>
|
public List<AutoBomStockAreaEntity> GetAllAreas()
|
{
|
return MongoDBSingleton.Instance.Find<AutoBomStockAreaEntity>(null, "TN_AB_B_STOCK_AREA");
|
}
|
#endregion
|
|
#region 修改库区模式
|
/// <summary>
|
/// 修改库区模式
|
/// </summary>
|
/// <param name="areaEntity"></param>
|
/// <returns></returns>
|
public bool UpdateServiceMode(AutoBomStockAreaEntity areaEntity)
|
{
|
IMongoQuery query = Query.EQ("CN_S_AREA_CODE", areaEntity.CN_S_AREA_CODE);
|
List<UpdateBuilder> updateList = new List<UpdateBuilder>();
|
updateList.Add(Update.Set("CN_S_CURRENT_MODE", areaEntity.CN_S_CURRENT_MODE));
|
IMongoUpdate update = Update.Combine(updateList.ToArray());
|
return MongoDBSingleton.Instance.Update<AutoBomStockAreaEntity>(query, update, "TN_AB_B_STOCK_AREA", UpdateFlags.Multi);
|
}
|
#endregion
|
|
public AutoBomStockAreaEntity GetEntityByArea(string id)
|
{
|
IMongoQuery query = Query.EQ("CN_S_AREA_CODE", id);
|
return MongoDBSingleton.Instance.FindOne<AutoBomStockAreaEntity>(query, "TN_AB_B_STOCK_AREA");
|
}
|
|
}
|
}
|