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
}
}