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
|
{
|
/// <summary>
|
/// 同步记录表数据处理层
|
/// </summary>
|
/// <returns></returns>
|
/// <history>[HanHe(XDL)] CREATED 2018/06/12</history>
|
public class TN_AB_B_SYNCH_LOGDAL : BaseDAL
|
{
|
#region 获取同步记录集合
|
/// <summary>
|
/// 根据表名获取同步记录集合
|
/// </summary>
|
/// <param name="tableName">表名</param>
|
/// <returns>同步记录集合</returns>
|
/// <history>[HanHe(XDL)] CREATED 2018/06/12</history>
|
public List<TN_AB_B_SYNCH_LOGEntity> GetsynchLogList(string tableName)
|
{
|
string sql = "select * from TN_AB_B_SYNCH_LOG where CN_S_TABLE_NAME='" + tableName + "'";
|
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
|
List<TN_AB_B_SYNCH_LOGEntity> list = DataAccessExtensive.ExecuteListEntity<TN_AB_B_SYNCH_LOGEntity>(this.DataAccess, cmd, SetEntity);
|
return list;
|
}
|
|
/// <summary>
|
/// 设置实体的各列
|
/// <summary>
|
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 获取需要删除的数据
|
/// <summary>
|
///
|
/// </summary>
|
/// <returns></returns>
|
public List<TN_AB_B_SYNCH_LOGEntity> GetRemoveDataList()
|
{
|
List<string> removeDataList = new List<string>();
|
string sql = "SELECT * FROM TN_AB_B_SYNCH_LOG WHERE CN_N_OP_FLAG=4";
|
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
|
List<TN_AB_B_SYNCH_LOGEntity> synchLogList = DataAccessExtensive.ExecuteListEntity<TN_AB_B_SYNCH_LOGEntity>(this.DataAccess, cmd, SetEntity);
|
|
return synchLogList;
|
}
|
#endregion
|
|
#region 获取中间表需要同步的数据
|
|
public List<TN_AB_B_SYNCH_LOGEntity> GetSynchDataList()
|
{
|
List<string> removeDataList = new List<string>();
|
string sql = "SELECT TOP 1 * FROM TN_AB_B_SYNCH_LOG";
|
DbCommand cmd = DataAccess.GetSqlStringCommand(sql);
|
List<TN_AB_B_SYNCH_LOGEntity> synchLogList = DataAccessExtensive.ExecuteListEntity<TN_AB_B_SYNCH_LOGEntity>(this.DataAccess, cmd, SetEntity);
|
|
return synchLogList;
|
}
|
#endregion
|
|
#region 根据条件删除Mongo数据
|
/// <summary>
|
/// 根据条件删除Mongo数据
|
/// </summary>
|
/// <typeparam name="T">实体</typeparam>
|
/// <param name="fieldValue">字段值</param>
|
/// <param name="fieldName">字段名称</param>
|
/// <param name="collectionName">表名</param>
|
/// <returns></returns>
|
public bool RemoveDataByCode<T>(string fieldValue, string fieldName, string collectionName)
|
{
|
MongoDBHelper dbHelper = new MongoDBHelper();
|
IMongoQuery query = Query.EQ(fieldName, fieldValue);
|
bool result = dbHelper.Remove<T>(query, collectionName);
|
return result;
|
}
|
#endregion
|
|
#region 删除中间表标识为已删除的数据
|
/// <summary>
|
/// 删除中间表标识为已删除的数据
|
/// </summary>
|
/// <param name="stockRemoveList"></param>
|
/// <param name="tableName"></param>
|
/// <history>[HanHe(XDL)] CREATED 2018/06/13</history>
|
public SqlExecuteResult RemoveData(List<TN_AB_B_SYNCH_LOGEntity> 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<DbCommand> cmds = new List<DbCommand>();
|
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<T>(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<T>(query, collectionName);
|
return result;
|
}
|
|
public bool IsExistsMongoSafty<T>(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<T>(query, collectionName);
|
if (count > 0) return true;
|
return false;
|
}
|
|
#region 判断记录是否存在
|
/// <summary>
|
/// 判断记录是否存在
|
/// </summary>
|
/// <typeparam name="T">实体</typeparam>
|
/// <param name="fieldValue">字段值</param>
|
/// <param name="fieldName">字段名称</param>
|
/// <param name="collectionName">表名</param>
|
/// <returns></returns>
|
public bool IsExistsMongo<T>(string fieldValue, string fieldName, string collectionName)
|
{
|
MongoDBHelper dbHelper = new MongoDBHelper();
|
IMongoQuery query = Query.EQ(fieldName, fieldValue);
|
long count = dbHelper.FindCount<T>(query, collectionName);
|
if (count > 0) return true;
|
return false;
|
}
|
#endregion
|
|
|
#region 新增一个集合到mongo数据库
|
/// <summary>
|
/// 新增一个集合到mongo数据库
|
/// </summary>
|
/// <typeparam name="T">实体类</typeparam>
|
/// <param name="lstEntity">实体类集合数据</param>
|
/// <param name="CollectionName">对象名称</param>
|
/// <returns></returns>
|
public bool AddList<T>(List<T> lstEntity, string collectionName)
|
{
|
try
|
{
|
MongoDBHelper dbHelper = new MongoDBHelper();
|
bool result = dbHelper.Insert<T>(lstEntity, collectionName);
|
return result;
|
}
|
catch (Exception ex)
|
{
|
HanHe.Service.Log.Info("mongo error", ex.Message);
|
return false;
|
}
|
}
|
#endregion
|
|
#region 删除已同步数据
|
/// <summary>
|
/// 删除已同步数据
|
/// </summary>
|
/// <param name="tableName">集合名称</param>
|
/// <returns></returns>
|
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<TN_SYS_LOGEntity>(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<MONGO_KEYTYPE_MAP>(query, collectionName);
|
return result;
|
}
|
|
}
|
}
|