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"); } } }