using Dapper;
using Estsh.Core.Dapper;
using Estsh.Core.IRepositories;
using Estsh.Core.Model.ExcelModel;
using Estsh.Core.Model.Result;
using Estsh.Core.Models;
using Estsh.Core.Repository.IRepositories;
using System.Collections;
using System.Data;
using System.Text;
/***************************************************************************************************
*
* 更新人:sitong.dong
* 描述:配置管理
* 修改时间:2022.06.22
* 修改日志:系统迭代升级
*
**************************************************************************************************/
namespace Estsh.Core.Repositories
{
///
/// 处理菜单模块的业务数据
///
public class ModelPartRepository : BaseRepository, IModelPartRepository
{
public ModelPartRepository(DapperDbContext _dapperDbContext) : base(_dapperDbContext)
{
}
#region 成员方法
///
/// 根据传入条件获得菜单列表数据
///
public List getList(string strWhere, string filedOrder)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append(" select * from dbo.sys_model ");
if (strWhere != null && !strWhere.Trim().Equals(""))
{
strSql.Append(" where enabled='Y' and model_id=" + strWhere);
}
if (filedOrder != null && !filedOrder.Trim().Equals(""))
{
strSql.Append(" order by " + filedOrder);
}
List result = dbConn.Query(strSql.ToString()).ToList();
return result;
}
}
///
/// 根据分页条件获取分页数据列表
///
public Hashtable getListByPage(int PageSize, int PageIndex, string strWhere, string OrderBy)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
DynamicParameters parameters = new DynamicParameters();
parameters.Add("@TotalCount", 0, DbType.Int32, ParameterDirection.Output);
parameters.Add("@TotalPage", 0, DbType.Int32, ParameterDirection.Output);
parameters.Add("@Table", "sys_model a left join dbo.sys_model_type c on a.model_type_id=c.type_id ");
parameters.Add("@Column", "a.*, c.type_name");
parameters.Add("@OrderColumn", OrderBy);
parameters.Add("@GroupColumn", "");
parameters.Add("@PageSize", PageSize);
parameters.Add("@CurrentPage", PageIndex);
parameters.Add("@Group", 0);
parameters.Add("@Condition", strWhere);
List depts = dbConn.Query("Com_Pagination", parameters, commandType: CommandType.StoredProcedure).ToList();
result.Add("dataList", depts);
result.Add("totalCount", parameters.Get("@TotalCount"));
return result;
}
}
///
/// 根据分页条件获取分页数据列表(导出时使用)
///
public Hashtable getListByPage2(int PageSize, int PageIndex, string strWhere, string OrderBy)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
Hashtable result = new Hashtable();
DynamicParameters parameters = new DynamicParameters();
parameters.Add("@TotalCount", 0, DbType.Int32, ParameterDirection.Output);
parameters.Add("@TotalPage", 0, DbType.Int32, ParameterDirection.Output);
parameters.Add("@Table", "sys_model a left join dbo.sys_model_type c on a.model_type_id=c.type_id ");
parameters.Add("@Column", "a.*, c.type_name ");
parameters.Add("@OrderColumn", OrderBy);
parameters.Add("@GroupColumn", "");
parameters.Add("@PageSize", PageSize);
parameters.Add("@CurrentPage", PageIndex);
parameters.Add("@Group", 0);
parameters.Add("@Condition", strWhere);
List dataList = dbConn.Query("Com_Pagination", parameters, commandType: CommandType.StoredProcedure).ToList();
result.Add("dataList", dataList);
result.Add("totalCount", parameters.Get("@TotalCount"));
return result;
}
}
///
/// 插入菜单数据
///
///
///
public int saveModelPart(SysModel htParams)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("select top 1 1 from dbo.sys_model WHERE model_name = @modelName ");
List dt = dbConn.Query(SqlStringBuilder.ToString(), htParams).ToList();
if (dt == null || dt.Count < 1)
{
//lvf 2021-06-23 修复语法错误
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO sys_model (model_code ");
SqlStringBuilder.Append(" , model_type ");
SqlStringBuilder.Append(" ,model_name ");
SqlStringBuilder.Append(" ,model_alias ");
SqlStringBuilder.Append(" ,model_desc ");
SqlStringBuilder.Append(" ,model_type_id ");
SqlStringBuilder.Append(" ,pdline_1 ");
SqlStringBuilder.Append(" , create_userid ");
SqlStringBuilder.Append(" , create_time ");
SqlStringBuilder.Append(" , enabled ");
SqlStringBuilder.Append(" ,pdline_2) ");
SqlStringBuilder.Append(" VALUES(@modelCode ");
SqlStringBuilder.Append(" , @modelType ");
SqlStringBuilder.Append(" ,@modelName");
SqlStringBuilder.Append(" ,@modelAlias");
SqlStringBuilder.Append(" ,@modelDesc");
SqlStringBuilder.Append(" ,@modelTypeId");
SqlStringBuilder.Append(" ,@pdline1");
SqlStringBuilder.Append(" , @createUserid ");
SqlStringBuilder.Append(" , CONVERT(varchar(50), GETDATE(), 21)");
SqlStringBuilder.Append(" ,'Y'");
SqlStringBuilder.Append(" ,@pdline2)");
int result = dbConn.Execute(SqlStringBuilder.ToString(), htParams);
return result;
}
return 0;
}
}
///
/// 插入菜单数据
///
///
///
public int saveModelPart_Sys_part(SysPart htParams)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("select top 1 1 from dbo.sys_part where part_no = @modelName ");
List dt = dbConn.Query(SqlStringBuilder.ToString(), htParams).ToList();
if (dt == null || dt.Count < 1)
{
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO sys_part (part_no ");
SqlStringBuilder.Append(" , part_spec ");
SqlStringBuilder.Append(" ,model_id ");
SqlStringBuilder.Append(" ,part_type ");
SqlStringBuilder.Append(" , enabled ");
SqlStringBuilder.Append(" ,create_userid ");
SqlStringBuilder.Append(" ,create_time");
SqlStringBuilder.Append(" ) ");
SqlStringBuilder.Append(" VALUES(@modelName ");
SqlStringBuilder.Append(" , @modelName ");
SqlStringBuilder.Append(" ,(select model_id from dbo.sys_model where model_name=@modelName)");
SqlStringBuilder.Append(" ,2");
SqlStringBuilder.Append(" ,'Y'");
SqlStringBuilder.Append(" , @createUserid ");
SqlStringBuilder.Append(" ,CONVERT(varchar(50), GETDATE(), 21)");
SqlStringBuilder.Append(" )");
int result = dbConn.Execute(SqlStringBuilder.ToString(), htParams);
return result;
}
return 0;
}
}
///
/// 更新菜单数据
///
///
///
public int updateModelPart(SysModel htParams)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("update sys_model ");
SqlStringBuilder.Append("SET model_code=@modelCode ");
SqlStringBuilder.Append(" , model_type=@modelType ");
SqlStringBuilder.Append(" , model_name=@modelName ");
SqlStringBuilder.Append(" , model_alias=@modelAlias ");
SqlStringBuilder.Append(" , model_desc=@modelDesc ");
SqlStringBuilder.Append(" , model_type_id=@modelTypeId ");
SqlStringBuilder.Append(" , pdline_1=@pdline1 ");
SqlStringBuilder.Append(" , pdline_2=@pdline2 ");
SqlStringBuilder.Append(" ,update_userid = @updateUserId ");
SqlStringBuilder.Append(" ,update_time = CONVERT(varchar(50), GETDATE(), 21)");
SqlStringBuilder.Append("WHERE model_id=@modelId ");
int result = dbConn.Execute(SqlStringBuilder.ToString(), htParams);
return result;
}
}
///
/// 更新菜单数据
///
///
///
public int updateModelPart_Sys_part(SysPart htParams)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("select top 1 1 from dbo.sys_part where model_id=@modelId ");
List dt = dbConn.Query(SqlStringBuilder.ToString(), htParams).ToList();
if (dt == null || dt.Count < 1)
{
SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO sys_part (part_no ");
SqlStringBuilder.Append(" , part_spec ");
SqlStringBuilder.Append(" ,model_id ");
SqlStringBuilder.Append(" ,part_type ");
SqlStringBuilder.Append(" , enabled ");
SqlStringBuilder.Append(" , create_userid ");
SqlStringBuilder.Append(" ,create_time");
SqlStringBuilder.Append(" ) ");
SqlStringBuilder.Append(" VALUES(@modelName ");
SqlStringBuilder.Append(" , @modelName ");
SqlStringBuilder.Append(" ,(select model_id from dbo.sys_model where model_name=@modelName)");
SqlStringBuilder.Append(" ,2");
SqlStringBuilder.Append(" , 'Y' ");
SqlStringBuilder.Append(" , @createUserid ");
SqlStringBuilder.Append(" ,CONVERT(varchar(50), GETDATE(), 21)");
SqlStringBuilder.Append(" )");
}
else
{
SqlStringBuilder.Append("update dbo.sys_part set part_no=@modelName,part_spec=@modelName ,update_userid = @updateUserId,update_time=CONVERT(varchar(50), GETDATE(), 21) where model_id=@modelId and part_type=2 ");
}
int result = dbConn.Execute(SqlStringBuilder.ToString(), htParams);
return result;
}
}
///
/// 删除菜单数据
///
///
///
public int deleteModelPart(String model_id)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String delStr = "update sys_model set Enabled='N' where model_id in (" + model_id + ")";
int result = dbConn.Execute(delStr);
return result;
}
}
//启用
public int EnableData(String ids)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String delStr = "update sys_model set Enabled='Y' WHERE model_id in (" + ids + ")";
int result = dbConn.Execute(delStr);
return result;
}
}
//禁用
public int DisableData(String ids)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
String delStr = "update sys_model set Enabled='N' WHERE model_id in (" + ids + ")";
int result = dbConn.Execute(delStr);
return result;
}
}
///
/// 更改状态
///
///
///
public int onState(String model_id, String enabled,string userID)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
if (enabled == "Y")
{
enabled = "N";
}
else if (enabled == "N")
{
enabled = "Y";
}
DynamicParameters htparams = new DynamicParameters();
htparams.Add("@model_id", model_id);
htparams.Add("@enabled", enabled);
htparams.Add("@updateUserId", userID);
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("update sys_model ");
SqlStringBuilder.Append("SET enabled=@enabled ");
SqlStringBuilder.Append(" ,update_userid = @updateUserId ");
SqlStringBuilder.Append(" ,update_time = CONVERT(varchar(50), GETDATE(), 21)");
SqlStringBuilder.Append("WHERE model_id=@model_id ");
SqlStringBuilder.Append("UPDATE dbo.sys_part SET ");
SqlStringBuilder.Append("update_userid = @updateUserId,update_time=CONVERT(varchar(50), GETDATE(), 21), [enabled]=@enabled ");
SqlStringBuilder.Append("WHERE model_id=@model_id and part_type=2 ");
int result = dbConn.Execute(SqlStringBuilder.ToString(), htparams);
return result;
}
}
///
/// 变更状态
///
/// 变更状态
///
public int onState(String model_id,string userID)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
DynamicParameters htparams = new DynamicParameters();
htparams.Add("@model_id", model_id);
htparams.Add("@updateUserId", userID);
String delStr = "update sys_part set Enabled='N' ,update_userid = @updateUserId ,update_time=CONVERT(varchar(50), GETDATE(), 21) where part_type=2 and model_id=@model_id";
int result = dbConn.Execute(delStr, htparams);
return result;
}
}
///
/// 获取下拉框菜单数据
///
///
public List getSelectModelPart()
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder strSql = new StringBuilder();
strSql.Append("select type_id as [value],type_name as [key] from dbo.sys_model_type where enabled='Y'");
List result = dbConn.Query(strSql.ToString()).ToList();
return result;
}
}
///
/// 配置集合
///
/// 数据集
public List GetModelName(string typeName)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
string quernSen = "";
if (string.IsNullOrEmpty(typeName))
{
quernSen = @" SELECT DISTINCT model_name as [value],model_name as [key] FROM dbo.sys_model WHERE enabled = 'Y' ";
}
else
{
quernSen = @" SELECT DISTINCT model_name as [value],model_name as [key] FROM dbo.sys_model a JOIN dbo.sys_model_type b ON a.model_type_id = b.type_id WHERE a.enabled = 'Y' AND b.type_name = '" + typeName + "' ";
}
List result = dbConn.Query(quernSen).ToList();
return result;
}
}
///
///车型集合
///
/// 数据集
public List GetTypeName()
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("select type_name as [value],type_name as [key] from sys_model_type where enabled='Y' ");
List result = dbConn.Query(SqlStringBuilder.ToString()).ToList();
return result;
}
}
///
/// 导入EXCEL时插入数据
///
///
///
public bool InsertData(List dt, string emp_id)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
List SqlStrings = new List(dt.Count);
List hs = new List(dt.Count);
List ModelCache = new List(dt.Count);
for (int i = 0; i < dt.Count; i++)
{
string ModelName = dt[i].ModelName.ToString().Trim();
if (string.IsNullOrEmpty(ModelName))
continue;
// 去除重复数据
if (ModelCache.Contains(ModelName))
{
continue;
}
else
{
ModelCache.Add(ModelName);
}
StringBuilder SqlStringBuilder = new StringBuilder(1024);
int ModelID = GetModelID(ModelName);
int ModelTypeID = GetModelTypeID(dt[i].ModelType.ToString().Trim());
if (ModelID == 0)
{
SqlStringBuilder.Append("insert into sys_model(model_code,model_type,enabled,model_name,model_alias, ");
SqlStringBuilder.Append("model_desc, model_type_id, create_userid,create_time,customer_id,pdline_1,pdline_2) ");
SqlStringBuilder.Append(" values( ");
SqlStringBuilder.Append("@model_code,@model_type,'Y',@model_name,@model_alias, ");
SqlStringBuilder.Append("@model_desc, @model_type_id, @emp_id,CONVERT(varchar(50), GETDATE(), 21),@customer_id,@pdline_1,@pdline_2); ");
// 如果配置零件号不存在,则重新插入
if (GetModelPartID(ModelName) == 0)
{
SqlStringBuilder.Append("insert into dbo.sys_part (part_no,part_spec,enabled,model_id,part_type,create_userid,create_time) ");
SqlStringBuilder.Append("values(@model_name,@model_name,'Y',(select model_id from dbo.sys_model where model_name=@model_name),2,@emp_id,CONVERT(varchar(50), GETDATE(), 21));");
}
}
else
{
SqlStringBuilder.Append("update dbo.sys_model set model_code=@model_code,model_type=@model_type,model_alias=@model_alias, ");
SqlStringBuilder.Append("model_desc=@model_desc,model_type_id=@model_type_id,update_userid=@emp_id, ");
SqlStringBuilder.Append("update_time=CONVERT(varchar(50), GETDATE(), 21),customer_id=@customer_id,[enabled]=@enabled,pdline_1=@pdline_1,pdline_2=@pdline_2 ");
SqlStringBuilder.Append("where model_id=@model_id;");
//删除A配置后再次新增A配置后会导致配置ID不一致;
//获取数据库中当前的配置ID,如果sys_part和sys_model两表不能对应,则更新model_id
string getSQLModelName = getModelName(ModelName);
ModelID = GetModelID(ModelName);
if (getSQLModelName != "0")
{
SqlStringBuilder.Append("UPDATE dbo.sys_part SET model_id=@model_id,update_userid=@emp_id, ");
SqlStringBuilder.Append("update_time=CONVERT(varchar(50), GETDATE(), 21), [enabled]=@enabled ");
SqlStringBuilder.Append("WHERE part_no =@model_name ");
}
}
DynamicParameters values = new DynamicParameters();
values.Add("@emp_id", emp_id);
values.Add("@model_id", ModelID);
values.Add("@model_type_id", ModelTypeID);
values.Add("@model_code", dt[i].ModelCode.ToString());
values.Add("@model_type", dt[i].ModelType.ToString());
values.Add("@model_name", dt[i].ModelName.ToString());
values.Add("@model_alias", dt[i].ModelAlias.ToString());
values.Add("@model_desc", dt[i].ModelDesc.ToString());
values.Add("@customer_id", dt[i].CustomerId.ToString());
values.Add("@enabled", dt[i].Enabled.ToString());
values.Add("@pdline_1", dt[i].Pdline1.ToString());
values.Add("@pdline_2", dt[i].Pdline2.ToString());
SqlStrings.Add(SqlStringBuilder.ToString());
hs.Add(values);
}
for (int i = 0; i < SqlStrings.Count; i++)
{
int result = dbConn.Execute(SqlStrings[i], hs[i]);
}
return true;
}
}
///
/// 获取配置编号
///
/// 配置名称
/// 配置编号
public int GetModelID(string modelName)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
string SqlString = "select model_id,model_name from dbo.sys_model where model_name=@model_name order by model_name";
DynamicParameters Params = new DynamicParameters();
Params.Add("@model_name", modelName);
object obj = dbConn.ExecuteScalar(SqlString, Params);
if (obj == null)
return 0;
return Convert.ToInt32(obj);
}
}
///
/// 获取车型编号
///
/// 车型名称
/// 车型编号
public int GetModelTypeID(string modelTypeName)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
string SqlString = "select type_id,type_name from dbo.sys_model_type where type_name=@type_name order by type_name";
DynamicParameters Params = new DynamicParameters();
Params.Add("type_name", modelTypeName);
object obj = dbConn.ExecuteScalar(SqlString, Params);
if (obj == null)
return 0;
return Convert.ToInt32(obj);
}
}
///
/// 获取配置零件号
///
/// 配置名称
/// 配置的零件编号
public int GetModelPartID(string modelName)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
string SqlString = "select part_id from dbo.sys_part where part_no=@partNo";
DynamicParameters Params = new DynamicParameters();
Params.Add("@partNo", modelName);
object obj = dbConn.ExecuteScalar(SqlString, Params);
if (obj == null)
return 0;
return Convert.ToInt32(obj);
}
}
///
/// 获取配置名称
///
///
public string getModelName(string modelName)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("SELECT model_name FROM dbo.sys_model ");
querySen.AppendLine("WHERE model_id = ( SELECT model_id ");
querySen.AppendLine(" FROM dbo.sys_part ");
querySen.AppendLine(" WHERE part_no = @modelName ) ");
DynamicParameters Params = new DynamicParameters();
Params.Add("@modelName", modelName);
object obj = dbConn.ExecuteScalar(querySen.ToString(), Params);
if (obj == null)
return "0";
return obj.ToString();
}
}
///
/// 获取配置编号
///
/// 配置名称
/// 配置编号
public int GetModelIDFromPart(string modelName)
{
using (IDbConnection dbConn = dapperDbContext.GetDbConnection())
{
dbConn.Open();
string SqlString = "SELECT model_id FROM sys_part WHERE part_no=@model_name ";
DynamicParameters Params = new DynamicParameters();
Params.Add("@model_name", modelName);
object obj = dbConn.ExecuteScalar(SqlString, Params);
if (obj == null)
return 0;
return Convert.ToInt32(obj);
}
}
#endregion 成员方法
}
}