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
{
///
/// 根据库区类型找库区实体
///
///
///
public List GetSHLocationArea(string areaClass)
{
List listLogic = new List();
var query = Query.EQ("CN_S_AREA_CLASS", areaClass);
listLogic = MongoDBSingleton.Instance.Find(query, "TN_AB_B_STOCK_AREA");
return listLogic;
}
public List GetZCLocationArea(string areaClass)
{
List listLogic = new List();
var query = Query.EQ("CN_S_AREA_CLASS", areaClass);
listLogic = MongoDBSingleton.Instance.Find(query, "TN_AB_B_STOCK_AREA");
return listLogic;
}
public List GetAreaListByType(string areaType)
{
List listLogic = new List();
var query = Query.EQ("CN_N_TYPE", Convert.ToInt32(areaType));
listLogic = MongoDBSingleton.Instance.Find(query, "TN_AB_B_STOCK_AREA");
return listLogic;
}
public List GetStockList()
{
return MongoDBSingleton.Instance.FindAll("TN_AB_STOCK");
}
public List GetListByStockArea(string areaType)
{
IMongoQuery query = null;
if (string.IsNullOrEmpty(areaType))
{
List lstAreaType = new List();
lstAreaType.Add(1);
lstAreaType.Add(4);
var listAreaCode = lstAreaType.ConvertAll(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(query, "TN_AB_B_STOCK_AREA");
}
#region 根据库区编码获取库区实体
///
/// 所有仓库
///
/// 库区编码
///
/// [HANHE(XDL)] CREATED BY 2018-11-21
public AutoBomStockAreaEntity GetStockAreaEntity(string areaCode)
{
AutoBomStockAreaEntity Logic = new AutoBomStockAreaEntity();
var query = Query.EQ("CN_S_AREA_CODE", areaCode);
Logic = MongoDBSingleton.Instance.FindOne(query, "TN_AB_B_STOCK_AREA");
return Logic;
}
///
/// 根据作业区类型获取库区列表
///
/// 作业区类型
///
public List GetAreaByAreaClass(string areaClass)
{
List listLogic = new List();
var query = Query.EQ("CN_S_AREA_CLASS", areaClass);
listLogic = MongoDBSingleton.Instance.Find(query, "TN_AB_B_STOCK_AREA");
return listLogic;
}
///
/// 通过多个作业区类型获取库区集合
///
///
///
public List GetAreaByManyClass(string areasClass)
{
IMongoQuery query = null;
List listLogic = new List();
List lstClass = new List(areasClass.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries));
var listClass = lstClass.ConvertAll(x => x);
query = Query.In("CN_S_AREA_CLASS", listClass);
listLogic = MongoDBSingleton.Instance.Find(query, "TN_AB_B_STOCK_AREA");
return listLogic;
}
///
/// 根据作业区类型获取库区列表
///
/// 作业区类型
///
public List GetAreaByAreaClassYS(string areaClass)
{
List listLogic = new List();
var query = Query.EQ("CN_S_AREA_CLASS", areaClass);
SortByDocument sortBy = new SortByDocument();
sortBy.Add("CN_N_ORDER", 1);
listLogic = MongoDBSingleton.Instance.Find(query, sortBy, "TN_AB_B_STOCK_AREA");
return listLogic;
}
///
/// 通过多个作业区类型获取库区集合
///
///
///
public List GetAreaByManyClassYS(string areasClass)
{
IMongoQuery query = null;
List listLogic = new List();
List lstClass = new List(areasClass.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries));
var listClass = lstClass.ConvertAll(x => x);
query = Query.In("CN_S_AREA_CLASS", listClass);
SortByDocument sortBy = new SortByDocument();
sortBy.Add("CN_N_ORDER", 1);
listLogic = MongoDBSingleton.Instance.Find(query, sortBy, "TN_AB_B_STOCK_AREA");
return listLogic;
}
#endregion
#region 单条查询
///
/// 单条查询
///
///
///
///
public AutoBomStockAreaEntity GetSingle(string field, string value)
{
var query = Query.EQ(field, value);
return MongoDBSingleton.Instance.FindOne(query, "TN_AB_B_STOCK_AREA");
}
#endregion
#region 所有库区
///
/// 所有库区
///
/// 仓库号
/// 包含库区类型 1:库区 2:作业区 3:逻辑分区 4:1+2
///
public List 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(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(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(query, "TN_AB_B_STOCK_AREA");
//}
}
public List GetStockAreas()
{
return MongoDBSingleton.Instance.FindAll("TN_AB_B_STOCK_AREA");
}
public AutoBomStockAreaEntity GetStockArea(string fieldName, string Value)
{
IMongoQuery query = Query.EQ("" + fieldName + "", Value);
return MongoDBSingleton.Instance.FindOne(query, "TN_AB_B_STOCK_AREA");
}
#endregion
#region 获取所有自动库区
///
/// 获取所有自动库区
///
///
public List GetAutoAreas()
{
var query = Query.EQ("CN_C_IS_AUTO", Constants.Y);
return MongoDBSingleton.Instance.Find(query, "TN_AB_B_STOCK_AREA");
}
#endregion
#region 修改库区模式
///
/// 修改库区模式
///
///
///
///
public bool UpdateCurrentMode(string areaCode, string value)
{
IMongoQuery query = Query.EQ("CN_S_AREA_CODE", areaCode);
List updateList = new List();
updateList.Add(Update.Set("CN_S_CURRENT_MODE", value));
IMongoUpdate update = Update.Combine(updateList.ToArray());
return MongoDBSingleton.Instance.Update(query, update, "TN_AB_B_STOCK_AREA", UpdateFlags.Multi);
}
#endregion
#region 获取所有库区
///
/// 获取所有库区
///
///
public List GetAllAreas()
{
return MongoDBSingleton.Instance.Find(null, "TN_AB_B_STOCK_AREA");
}
#endregion
#region 修改库区模式
///
/// 修改库区模式
///
///
///
public bool UpdateServiceMode(AutoBomStockAreaEntity areaEntity)
{
IMongoQuery query = Query.EQ("CN_S_AREA_CODE", areaEntity.CN_S_AREA_CODE);
List updateList = new List();
updateList.Add(Update.Set("CN_S_CURRENT_MODE", areaEntity.CN_S_CURRENT_MODE));
IMongoUpdate update = Update.Combine(updateList.ToArray());
return MongoDBSingleton.Instance.Update(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(query, "TN_AB_B_STOCK_AREA");
}
}
}