using HH.MData; using HH.WMS.Entitys; using HH.WMS.Entitys.Algorithm; using HH.WMS.Entitys.Basic; using HH.WMS.Entitys.Common; 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.Common { public class TN_WM_MONGODAL : DapperBaseDAL { #region 判断记录是否存在 /// /// 判断记录是否存在 /// /// 实体 /// 字段值 /// 字段名称 /// 表名 /// public OperateResult IsExistsMongo(string fieldValue, string fieldName, string collectionName) { MongoDBHelper dbHelper = new MongoDBHelper(); IMongoQuery query = Query.EQ(fieldName, fieldValue); long count = dbHelper.FindCount(query, collectionName); if (count > 0) return OperateResult.Error("记录已存在!", ""); return OperateResult.Succeed("记录不存在!", ""); } #endregion #region 新增一个集合到mongo数据库 /// /// 新增一个集合到mongo数据库 /// /// 实体类 /// 实体类集合数据 /// 对象名称 /// public OperateResult AddList(List lstEntity, string collectionName) { try { MongoDBHelper dbHelper = new MongoDBHelper(); bool result = dbHelper.Insert(lstEntity, collectionName); if (result) return OperateResult.Succeed("执行成功!", ""); else return OperateResult.Error("执行失败!", ""); } catch (Exception ex) { return OperateResult.Error(ex.ToString(), ""); } } #endregion #region 根据条件删除Mongo数据 /// /// 根据条件删除Mongo数据 /// /// 实体 /// 字段值 /// 字段名称 /// 表名 /// public OperateResult RemoveData(string fieldValue, string fieldName, string collectionName) { try { MongoDBHelper dbHelper = new MongoDBHelper(); IMongoQuery query = Query.EQ(fieldName, fieldValue); bool result = dbHelper.Remove(query, collectionName); if (result) return OperateResult.Succeed("执行成功!", ""); else return OperateResult.Error("执行失败!", ""); } catch (Exception ex) { return OperateResult.Error(ex.ToString(), ""); } } #endregion #region 获取仓库信息 /// /// 获取仓库信息 /// /// 字段名称 /// 输入值 /// /// [HanHe(LT)] CREATED 2018/7/5 public TN_AB_STOCKEntity GetStockentity(string fieldName, string inputValue) { var query = Query.EQ(fieldName, inputValue); TN_AB_STOCKEntity entity = MongoDBSingleton.Instance.FindOne(query, "TN_AB_STOCK"); return entity; } #endregion public List GetXmlList(SearchModel searchModel, out int total) { //List queryList = new List(); //string itemCode = Util.ToString(searchModel.SearchCondition.ItemCode); //if (!string.IsNullOrEmpty(itemCode)) //{ // queryList.Add(Query.Matches("CN_S_ITEM_CODE", "/" + itemCode + "/")); //} //IMongoQuery query = null; //if (queryList.Any()) // query = Query.And(queryList); total = Convert.ToInt32(MongoDBSingleton.Instance.FindCount(null, "TN_WM_B_UNIQUE_BARCODE")); return MongoDBSingleton.Instance.Find(null, searchModel.PageIndex, searchModel.PageSize, null, "TN_WM_B_UNIQUE_BARCODE"); } #region 根据仓库获得所有库区 /// /// 根据仓库获得所有库区 /// /// /// /// /// [HanHe(LT)] CREATED 2018/8/13 public List GetList(string stcokCode, string types) { List listLogic = new List(); List querys = new List(); if (!string.IsNullOrEmpty(stcokCode)) { //检索条件 仓库编号=传递的仓库编号 类型 != 2 也就是不等于逻辑分区的 //取到当前仓库下的库区以及虚拟分区 querys.Add(Query.EQ("CN_S_STOCK_CODE", stcokCode)); } if (!string.IsNullOrEmpty(types)) { string[] b = types.Split(','); List list = new List(); for (int i = 0; i < b.Length; i++) { list.Add(Convert.ToInt32(b[i])); } var type = list.ConvertAll(x => x); querys.Add(Query.In("CN_N_TYPE", type)); } IMongoQuery query = Query.And(querys); listLogic = MongoDBSingleton.Instance.Find(query, "TN_AB_B_STOCK_AREA"); return listLogic; } #endregion #region /// /// 获取库区 /// /// /// public AutoBomStockAreaEntity GetStockArea(string fieldName, string Value) { IMongoQuery query = Query.EQ("" + fieldName + "", Value); return MongoDBSingleton.Instance.FindOne(query, "TN_AB_B_STOCK_AREA"); } #endregion /// /// 根据条件删除Mongo数据 /// /// 实体 /// 字段值 /// 字段名称 /// 表名 /// public OperateResult RemoveDataByCode(string fieldValue, string fieldName, string collectionName) { MongoDBHelper dbHelper = new MongoDBHelper(); IMongoQuery query = Query.EQ(fieldName, fieldValue); bool result = dbHelper.Remove(query, collectionName); if (result) return OperateResult.Succeed("", null); else return OperateResult.Error("失败", null); } #region 获取虚拟库区 /// /// 根据仓库获得所有库区 /// /// /// [HanHe(LT)] CREATED 2018/12/22 public List GetXNAreaList(string stcokCode,string areaCode, string type) { List querys = new List(); if (!string.IsNullOrEmpty(stcokCode)) { //检索条件 仓库编号=传递的仓库编号 类型 != 2 也就是不等于逻辑分区的 //取到当前仓库下的库区以及虚拟分区 querys.Add(Query.EQ("CN_S_STOCK_CODE", stcokCode)); } if (!string.IsNullOrEmpty(type)) { querys.Add(Query.EQ("CN_N_TYPE", Convert.ToInt32(type))); } if (!string.IsNullOrEmpty(areaCode)) { querys.Add(Query.EQ("CN_S_AREA_CODE", areaCode)); } IMongoQuery query = Query.And(querys); List listLogic = MongoDBSingleton.Instance.Find(query, "TN_AB_B_STOCK_AREA"); return listLogic; } #endregion #region 根据库区编码获取库区 /// /// 根据库区编码获取库区 /// /// /// /// /// [HanHe(LT)] CREATED 2018/12/29 public List GetAreaListByAreaCodeList(List areaLists) { List listLogic = new List(); var areaList = areaLists.ConvertAll(x => x); var query = Query.In("CN_S_AREA_CODE", areaList); listLogic = MongoDBSingleton.Instance.Find(query, "TN_AB_B_STOCK_AREA"); return listLogic; } #endregion } }