using System;
using System.Collections.Generic;
using System.Linq;
using HH.MData;
using System.Text;
using System.Threading.Tasks;
using HH.WMS.Entitys.Algorithm;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
using HH.WMS.Entitys.Basic;
using MongoDB.Bson;
namespace HH.WMS.DAL.Basic
{
///
/// 用户读取mongodb中的仓库数据
///
public class TN_WMS_STAOCKDAL:BaseDAL
{
#region 所有仓库
///
/// 所有仓库
///
///
public List GetStockList()
{
return MongoDBSingleton.Instance.FindAll("TN_AB_STOCK");
}
#endregion
#region 根据库区编码返回仓库实体
///
/// 根据库区编码返回仓库实体
///
///
///
/// [HanHe(LT)] CREATED 2018/5/21
public List GetListStock(string stockCode, string pageSize, string pageIndex)
{
List entity = new List();
SortByDocument sortBy = new SortByDocument();
sortBy.Add("CN_S_STOCK_CODE", -1);
IMongoQuery query = null;
if (!string.IsNullOrEmpty(stockCode))
{
query = Query.Matches("CN_S_STOCK_CODE", stockCode);
}
entity = MongoDBSingleton.Instance.Find(query, Convert.ToInt32(pageIndex), Convert.ToInt32(pageSize), sortBy, "TN_AB_STOCK");
return entity;
}
#endregion
#region 根据仓库和库区编码获得库区结构
///
/// 根据仓库和库区编码获得库区结构
///
/// 仓库编号
/// 库区编号
///
/// [HanHe(LT)] CREATED 2018/11/30
public List GetStructList(string stockCode,string areaCode)
{
var query = Query.And(Query.EQ("CN_S_STOCK_CODE", stockCode), Query.EQ("CN_S_AREA_CODE", areaCode));
//仓库结构
List lstStruct = MongoDBSingleton.Instance.Find(query, "TN_AB_B_STOCK_STRUCTURE");
return lstStruct;
}
#endregion
public List GetAreaList(int pageIndex, int pageSize, string areaName, out int total)
{
List entity = new List();
SortByDocument sortBy = new SortByDocument();
sortBy.Add("CN_S_AREA_CODE", -1);
IMongoQuery query = null;
if (!string.IsNullOrEmpty(areaName))
{
query = Query.Matches("CN_S_AREA_NAME", areaName);
}
// query = Query.And(Query.EQ("CN_S_STOCK_CODE", stockCode));
total = Convert.ToInt32(MongoDBSingleton.Instance.FindCount(query, "TN_AB_B_STOCK_AREA"));
entity = MongoDBSingleton.Instance.Find(query, Convert.ToInt32(pageIndex), Convert.ToInt32(pageSize), sortBy, "TN_AB_B_STOCK_AREA");
return entity;
}
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 GetSHLocation(List arrAreaCode)
{
List locationList = new List();
var arrLogic = arrAreaCode.ConvertAll(x => x);
var query = Query.In("CN_S_AREA_CODE", arrLogic);
locationList = MongoDBSingleton.Instance.Find(query, "TN_AB_STOCK_LOCATION");
return locationList;
}
public List GetLocationInfo(int pageIndex, int pageSize, string areaCode, string roadWay,
string row, string locationNo, string state, out int total)
{
List locationList = new List();
List querys = new List();
if (!string.IsNullOrEmpty(areaCode))
{
querys.Add(Query.EQ("CN_S_AREA_CODE", areaCode));
}
if (!string.IsNullOrEmpty(state))
{
querys.Add(Query.EQ("CN_S_STATUS", state));
}
if (!string.IsNullOrEmpty(roadWay))
{
querys.Add(Query.Matches("CN_S_ROADWAY", "/^" + roadWay + "/"));
}
if (!string.IsNullOrEmpty(row))
{
querys.Add(Query.Matches("CN_S_ROW", "/^" + row + "/"));
}
if (!String.IsNullOrEmpty(locationNo))
{
querys.Add(Query.Matches("CN_S_LOCATION_CODE", "/" + locationNo + "/"));
}
SortByDocument sortBy = new SortByDocument();
if (querys.Count > 0)
{
IMongoQuery query = Query.And(querys);
sortBy.Add("CN_S_AREA_CODE", -1);
sortBy.Add("CN_S_LOCATION_CODE", -1);
total = Convert.ToInt32(
MongoDBSingleton.Instance.FindCount(query,
"TN_AB_STOCK_LOCATION"));
locationList = MongoDBSingleton.Instance.Find(query, Convert.ToInt32(pageIndex),
Convert.ToInt32(pageSize), sortBy, "TN_AB_STOCK_LOCATION");
}
else
{
total = Convert.ToInt32(
MongoDBSingleton.Instance.FindCount(null,
"TN_AB_STOCK_LOCATION"));
sortBy.Add("CN_S_AREA_CODE", -1);
sortBy.Add("CN_S_LOCATION_CODE", -1);
locationList = MongoDBSingleton.Instance.Find(null, Convert.ToInt32(pageIndex),
Convert.ToInt32(pageSize), sortBy, "TN_AB_STOCK_LOCATION");
}
return locationList;
}
}
}