using Dapper;
using Estsh.Core.Base;
using Estsh.Core.Dapper;
using Estsh.Core.Mes.IRepositories;
using Estsh.Core.Model.Result;
using Estsh.Core.Repositories;
using System.Collections;
using System.Data;
using System.Text;
using System.Text.Json;
/***************************************************************************************************
*
* 作者:jack.jia
* 创建时间:2022/06/08
* 描述:针对winform客户端通用的数据处理仓库
*
* *************************************************************************************************/
namespace Estsh.Core.Mes.Repositories
{
///
/// 部门管理
///
public class DataHandleRepository : BaseRepository, IDataHandleRepository
{
public DataHandleRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext)
{
}
///
/// 获取单个值
///
///
///
public object getScalar(RequestBody body)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
if (body.Params != null && body.Params.Count > 0)
{
return dbConn.ExecuteScalar(body.cmd, body.Params);
}
else
{
return dbConn.ExecuteScalar(body.cmd);
}
}
}
///
/// 获取数据列表
///
///
///
public IEnumerable GetEntityList(RequestBody body)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
if (body.Params != null && body.Params.Count > 0)
{
return dbConn.Query(body.cmd, body.Params);
}
else
{
return dbConn.Query(body.cmd);
}
}
}
///
/// 执行更新、删除等操作
///
///
///
public int Execute(RequestBody body)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
if (body.Params != null && body.Params.Count > 0)
{
return dbConn.Execute(body.cmd, body.Params);
}
else
{
return dbConn.Execute(body.cmd);
}
}
}
///
/// 执行存储过程
///
///
///
public Hashtable ExecuteSotreProcedure(RequestBody body)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
if (body.Params != null && body.Params.Count > 0)
{
DynamicParameters paras = new DynamicParameters();
foreach (var item in body.Params)
{
paras.Add(item.Key, item.Value);
}
foreach (var item in body.OutParams)
{
if (item.Value.GetType().Name.Equals(typeof(string).Name))
{
paras.Add(item.Key, null, DbType.String, ParameterDirection.Output, int.Parse(item.Value.ToString()));
}
else if (item.Value.GetType().Name.Equals(typeof(int).Name))
{
paras.Add(item.Key, 0, DbType.Int32, ParameterDirection.Output);
}
else
{
paras.Add(item.Key, item.Value, DbType.String, ParameterDirection.Output);
}
}
IEnumerable dataList = dbConn.Query(body.cmd, paras, commandType: CommandType.StoredProcedure);
foreach (var item in body.OutParams)
{
if (item.Value.GetType().Name.Equals(typeof(string).Name))
{
body.OutParams[item.Key] = paras.Get(item.Key);
}
else if (item.Value.GetType().Name.Equals(typeof(int).Name))
{
body.OutParams[item.Key] = paras.Get(item.Key);
}
}
result.Add("dataList", dataList);
result.Add("outParams", body.OutParams);
}
else
{
IEnumerable dataList = dbConn.Query(body.cmd,null, commandType: CommandType.StoredProcedure);
result.Add("dataList", dataList);
result.Add("outParams", body.OutParams);
}
return result;
}
}
}
}