using HH.MData;
using HH.WMS.DAL;
using HH.WMS.Entitys.Algorithm;
using HH.WMS.Entitys.Basic;
using HH.WMS.Entitys.Common;
using HW.Utility.Data;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
namespace HW.DAL
{
///
/// 同步记录表数据处理层
///
///
/// [HanHe(XDL)] CREATED 2018/06/12
public class TN_AB_B_SYNCH_LOGDAL : BaseDAL
{
#region 获取同步记录集合
///
/// 根据表名获取同步记录集合
///
/// 表名
/// 同步记录集合
/// [HanHe(XDL)] CREATED 2018/06/12
public List GetsynchLogList(string tableName)
{
string sql = "select * from TN_AB_B_SYNCH_LOG where CN_S_TABLE_NAME='" + tableName + "'";
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
List list = DataAccessExtensive.ExecuteListEntity(this.DataAccess, cmd, SetEntity);
return list;
}
///
/// 设置实体的各列
///
private void SetEntity(TN_AB_B_SYNCH_LOGEntity entity, IDataReader reader)
{
SetEntityUti(entity, "CN_S_GUID", "CN_S_GUID", reader);
SetEntityUti(entity, "CN_S_TABLE_NAME", "CN_S_TABLE_NAME", reader);
SetEntityUti(entity, "CN_N_OP_FLAG", "CN_N_OP_FLAG", reader);
SetEntityUti(entity, "CN_T_CREATE", "CN_T_CREATE", reader);
}
#endregion
#region 获取需要删除的数据
///
///
///
///
public List GetRemoveDataList()
{
List removeDataList = new List();
string sql = "SELECT * FROM TN_AB_B_SYNCH_LOG WHERE CN_N_OP_FLAG=4";
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
List synchLogList = DataAccessExtensive.ExecuteListEntity(this.DataAccess, cmd, SetEntity);
return synchLogList;
}
#endregion
#region 获取中间表需要同步的数据
public List GetSynchDataList()
{
List removeDataList = new List();
string sql = "SELECT TOP 1 * FROM TN_AB_B_SYNCH_LOG";
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
List synchLogList = DataAccessExtensive.ExecuteListEntity(this.DataAccess, cmd, SetEntity);
return synchLogList;
}
#endregion
#region 根据条件删除Mongo数据
///
/// 根据条件删除Mongo数据
///
/// 实体
/// 字段值
/// 字段名称
/// 表名
///
public bool RemoveDataByCode(string fieldValue, string fieldName, string collectionName)
{
MongoDBHelper dbHelper = new MongoDBHelper();
IMongoQuery query = Query.EQ(fieldName, fieldValue);
bool result = dbHelper.Remove(query, collectionName);
return result;
}
#endregion
#region 删除中间表标识为已删除的数据
///
/// 删除中间表标识为已删除的数据
///
///
///
/// [HanHe(XDL)] CREATED 2018/06/13
public SqlExecuteResult RemoveData(List stockRemoveList, string tableName)
{
string sql = "DELETE FROM TN_AB_B_SYNCH_LOG WHERE CN_S_GUID=@CN_S_GUID AND CN_S_TABLE_NAME=@CN_S_TABLE_NAME ";
List cmds = new List();
foreach (TN_AB_B_SYNCH_LOGEntity entity in stockRemoveList)
{
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
DataAccess.AddInParameter(cmd, "CN_S_GUID", ComDbType.CHAR, entity.CN_S_GUID);
DataAccess.AddInParameter(cmd, "CN_S_TABLE_NAME", ComDbType.CHAR, entity.CN_S_TABLE_NAME);
cmds.Add(cmd);
}
return ExecuteCommands(cmds, null);
}
#endregion
public bool RemoveDataByCodeSafty(TN_AB_B_ITEM_SAFETYEntity tN_AB_B_ITEM_SAFETYEntity, string collectionName)
{
MongoDBHelper dbHelper = new MongoDBHelper();
IMongoQuery query = Query.EQ("CN_S_ITEM_CODE", tN_AB_B_ITEM_SAFETYEntity.CN_S_ITEM_CODE);
query = Query.And(query, Query.EQ("CN_S_AREA_CODE", tN_AB_B_ITEM_SAFETYEntity.CN_S_AREA_CODE));
bool result = dbHelper.Remove(query, collectionName);
return result;
}
public bool IsExistsMongoSafty(TN_AB_B_ITEM_SAFETYEntity tN_AB_B_ITEM_SAFETYEntity, string collectionName)
{
MongoDBHelper dbHelper = new MongoDBHelper();
IMongoQuery query = Query.EQ("CN_S_ITEM_CODE", tN_AB_B_ITEM_SAFETYEntity.CN_S_ITEM_CODE);
query = Query.And(query, Query.EQ("CN_S_AREA_CODE", tN_AB_B_ITEM_SAFETYEntity.CN_S_AREA_CODE));
long count = dbHelper.FindCount(query, collectionName);
if (count > 0) return true;
return false;
}
#region 判断记录是否存在
///
/// 判断记录是否存在
///
/// 实体
/// 字段值
/// 字段名称
/// 表名
///
public bool 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 true;
return false;
}
#endregion
#region 新增一个集合到mongo数据库
///
/// 新增一个集合到mongo数据库
///
/// 实体类
/// 实体类集合数据
/// 对象名称
///
public bool AddList(List lstEntity, string collectionName)
{
try
{
MongoDBHelper dbHelper = new MongoDBHelper();
bool result = dbHelper.Insert(lstEntity, collectionName);
return result;
}
catch (Exception ex)
{
HanHe.Service.Log.Info("mongo error", ex.Message);
return false;
}
}
#endregion
#region 删除已同步数据
///
/// 删除已同步数据
///
/// 集合名称
///
public SqlExecuteResult RemoveSynchLogData(string tableName)
{
string sql = "DELETE FROM TN_AB_B_SYNCH_LOG WHERE CN_N_OP_FLAG IN (1,2) AND CN_S_TABLE_NAME='" + tableName + "' ";
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
return ExecuteCommand(cmd, null);
}
#endregion
internal object ClearMongo(string date)
{
return null;
//MongoDBHelper dbHelper = new MongoDBHelper();
//DateTime dt =DateTime.Parse(date);
//DateTime now = DateTime.Now;
//dt = dt.AddMinutes(1);
//IMongoQuery query = Query.In("CN_T_TIME",dt.Year + "/");
//bool result = dbHelper.Remove(query, "TN_SYS_LOG");
//return result;
}
public bool ClearMongoCollection(string collectionName)
{
MongoDBHelper dbHelper = new MongoDBHelper();
IMongoQuery query = Query.EQ("Type", "4");
bool result = dbHelper.Remove(query, collectionName);
return result;
}
}
}