using System; using System.Data; using System.Text; using System.Collections.Generic; using System.Data.SqlClient; using ApServerProvider; using DbCommon; using System.Collections; using Estsh.Web.Util; /*************************************************************************************************** * * 作者:贾文涛 * 创建时间:2013.03.19 * 描述:菜单模块数据库访问类 * 修改日志: * 1、2013.03.27 贾文涛 变更后台的菜单表,同步变更获取菜单数据的一些方法 * * *************************************************************************************************/ namespace Estsh.Core.Repositories { /// /// 处理菜单模块的业务数据 /// public class DetectionControlDal : BaseApp { public DetectionControlDal(RemotingProxy remotingProxy) : base(remotingProxy) { } #region 成员方法 /// /// 根据传入条件获得菜单列表数据 /// public DataTable getList(string strWhere) { lock (_remotingProxy) { StringBuilder strSql = new StringBuilder(); strSql.Append(@"SELECT type_code,model_name,model_spec,part_no,part_spec,PF_DJC,QP_DJC, QP_IMS,QP_JYF,QP_TLL,QP_SBR,QP_SJYX,QM_TLL,QM_DJC FROM dbo.g_outPdline_detection "); if (strWhere != null && !strWhere.Trim().Equals("")) { strSql.Append(" where " + strWhere); } //if (filedOrder != null && !filedOrder.Trim().Equals("")) //{ // strSql.Append(" order by " + filedOrder); //} return this._remotingProxy.GetDataTable(strSql.ToString()); } } /// /// 根据分页条件获取分页数据列表 /// public Hashtable getDetectionControlByPage(int PageSize, int PageIndex, string strWhere, string OrderBy) { lock (_remotingProxy) { Hashtable result = new Hashtable(); List parameters = new List(); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Output, "@TotalCount", 100)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Output, "@TotalPage", 100)); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Table", " g_outPdline_detection ")); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", "ruid,type_code,model_name,model_spec,part_no,part_spec,PF_DJC,QP_DJC,QP_IMS,QP_JYF,QP_SBR,QP_SJYX,QP_TLL,QM_DJC,QM_TLL ")); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", OrderBy)); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@GroupColumn", "")); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@PageSize", PageSize)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@CurrentPage", PageIndex)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@Group", 0)); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Condition", strWhere)); Hashtable values = new Hashtable(2); DataTable dt = new DataTable(); dt = _remotingProxy.ExecuteSotreProcedure("Com_Pagination", parameters, ref values); ArrayList dataList = DataTypeConvert.NewObject.DataTableToArrayList(dt); result.Add("dataList", dataList); result.Add("totalCount", values["@TotalCount"].ToString()); return result; } } /// /// 根据分页条件获取分页数据列表(导出时使用) /// public DataTable getListByPage2(int PageSize, int PageIndex, string strWhere, string OrderBy) { lock (_remotingProxy) { Hashtable result = new Hashtable(); List parameters = new List(); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Output, "@TotalCount", 100)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Output, "@TotalPage", 100)); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Table", "g_outPdline_detection ")); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", "type_code,model_name,model_spec,part_no,part_spec,PF_DJC,QP_DJC,QP_IMS,QP_JYF,QP_SBR,QP_SJYX,QP_TLL,QM_DJC,QM_TLL")); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", OrderBy)); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@GroupColumn", "")); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@PageSize", PageSize)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@CurrentPage", PageIndex)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@Group", 0)); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Condition", strWhere)); Hashtable values = new Hashtable(2); DataTable dt = new DataTable(); dt = _remotingProxy.ExecuteSotreProcedure("Com_Pagination", parameters, ref values); return dt; } } ///// ///// 获取下拉框菜单数据 ///// ///// //public DataTable getSelectModelPart() //{ // StringBuilder strSql = new StringBuilder(); // strSql.Append("select ModelPart_id as [value],name as [key] from dbo.sys_web_ModelPart where parent_id = 0 AND enabled = 'Y' "); // return _remotingProxy.GetDataTable(strSql.ToString()); //} /// /// 插入菜单数据 /// /// /// public int saveDetectionControl(Hashtable htParams) { lock (_remotingProxy) { StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("select top 1 1 from dbo.g_outPdline_detection WHERE model_name = @model_name and part_no=@part_no"); DataTable dt = _remotingProxy.GetDataTable(SqlStringBuilder.ToString(),htParams); if (dt == null || dt.Rows.Count < 1) { SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("INSERT INTO dbo.g_outPdline_detection(type_code "); SqlStringBuilder.Append(" , model_name "); SqlStringBuilder.Append(" ,model_spec "); SqlStringBuilder.Append(" ,part_no "); SqlStringBuilder.Append(" ,part_spec "); SqlStringBuilder.Append(" ,PF_DJC "); SqlStringBuilder.Append(" ,QP_DJC "); SqlStringBuilder.Append(" ,QP_IMS "); SqlStringBuilder.Append(" ,QP_JYF "); SqlStringBuilder.Append(" ,QP_TLL "); SqlStringBuilder.Append(" ,QP_SBR "); SqlStringBuilder.Append(" ,QP_SJYX "); SqlStringBuilder.Append(" ,QM_TLL "); SqlStringBuilder.Append(" ,QM_DJC ) "); SqlStringBuilder.Append(" VALUES(@type_code "); SqlStringBuilder.Append(" , @model_name "); SqlStringBuilder.Append(" ,@model_spec "); SqlStringBuilder.Append(" ,@part_no "); SqlStringBuilder.Append(" ,@part_spec "); SqlStringBuilder.Append(" ,@PF_DJC "); SqlStringBuilder.Append(" ,@QP_DJC "); SqlStringBuilder.Append(" ,@QP_IMS "); SqlStringBuilder.Append(" ,@QP_JYF "); SqlStringBuilder.Append(" ,@QP_TLL "); SqlStringBuilder.Append(" ,@QP_SBR "); SqlStringBuilder.Append(" ,@QP_SJYX "); SqlStringBuilder.Append(" ,@QM_TLL "); SqlStringBuilder.Append(" ,@QM_DJC )"); } return _remotingProxy.ExecuteNonQuery(SqlStringBuilder.ToString(), htParams); } } /// /// 插入菜单数据 /// /// /// public int saveModelPart_Sys_part(Hashtable htParams) { lock (_remotingProxy) { StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("select top 1 1 from dbo.sys_part where part_no = @model_name "); DataTable dt = _remotingProxy.GetDataTable(SqlStringBuilder.ToString(),htParams); if (dt == null || dt.Rows.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(" ,create_ymd"); SqlStringBuilder.Append(" ,create_hms) "); SqlStringBuilder.Append(" VALUES(@model_name "); SqlStringBuilder.Append(" , @model_name "); SqlStringBuilder.Append(" ,(select model_id from dbo.sys_model where model_name=@model_name)"); SqlStringBuilder.Append(" ,2"); SqlStringBuilder.Append(" ,convert(varchar(10),getdate(),120)"); SqlStringBuilder.Append(" ,convert(varchar(10),getdate(),108))"); } return _remotingProxy.ExecuteNonQuery(SqlStringBuilder.ToString(), htParams); } } /// /// 更新菜单数据 /// /// /// public int updateModelPart(Hashtable htParams) { lock (_remotingProxy) { StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("update g_outPdline_detection "); SqlStringBuilder.Append("SET PF_DJC=@PF_DJC "); SqlStringBuilder.Append(" , QP_DJC=@QP_DJC "); SqlStringBuilder.Append(" , QP_IMS=@QP_IMS "); SqlStringBuilder.Append(" , QP_JYF=@QP_JYF "); SqlStringBuilder.Append(" , QP_TLL=@QP_TLL "); SqlStringBuilder.Append(" , QP_SBR=@QP_SBR "); SqlStringBuilder.Append(" , QP_SJYX=@QP_SJYX "); SqlStringBuilder.Append(" , QM_TLL=@QM_TLL "); SqlStringBuilder.Append(" , QM_DJC=@QM_DJC "); SqlStringBuilder.Append("WHERE model_name=@model_name and part_no=@part_no "); return _remotingProxy.ExecuteNonQuery(SqlStringBuilder.ToString(), htParams); } } /// /// 更新菜单数据 /// /// /// public int updateModelPart_Sys_part(Hashtable htParams) { lock (_remotingProxy) { StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("select top 1 1 from dbo.sys_part where part_no = @model_name"); DataTable dt = _remotingProxy.GetDataTable(SqlStringBuilder.ToString(), htParams); if (dt == null || dt.Rows.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(" ,create_ymd"); SqlStringBuilder.Append(" ,create_hms) "); SqlStringBuilder.Append(" VALUES(@model_name "); SqlStringBuilder.Append(" , @model_name "); SqlStringBuilder.Append(" ,(select model_id from dbo.sys_model where model_name=@model_name)"); SqlStringBuilder.Append(" ,2"); SqlStringBuilder.Append(" ,convert(varchar(10),getdate(),120)"); SqlStringBuilder.Append(" ,convert(varchar(10),getdate(),108))"); } return _remotingProxy.ExecuteNonQuery(SqlStringBuilder.ToString(), htParams); } } /// /// 删除菜单数据 /// /// /// public int deleteDetectionControl(String ruid) { lock (_remotingProxy) { String delStr = "delete from dbo.g_outPdline_detection where ruid in (" + ruid + ")"; return _remotingProxy.ExecuteNonQuery(delStr); } } /// /// 更改状态 /// /// /// public int onState(String model_id , String enabled) { lock (_remotingProxy) { if (enabled == "Y") { enabled = "N"; } else if (enabled == "N") { enabled = "Y"; } Hashtable htparams = new Hashtable(); htparams.Add("@model_id", model_id); htparams.Add("@enabled", enabled); StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("update sys_model "); SqlStringBuilder.Append("SET enabled=@enabled "); SqlStringBuilder.Append(" , update_ymd=convert(varchar(10),getdate(),120) "); SqlStringBuilder.Append(" , update_hms=convert(varchar(10),getdate(),108) "); SqlStringBuilder.Append("WHERE model_id=@model_id "); return _remotingProxy.ExecuteNonQuery(SqlStringBuilder.ToString(), htparams); } } /// /// 变更状态 /// /// 变更状态 /// public int onState(String model_id) { lock (_remotingProxy) { Hashtable htparams = new Hashtable(); htparams.Add("@model_id", model_id); String delStr = "delete from dbo.sys_part where part_type=2 and model_id=@model_id"; return _remotingProxy.ExecuteNonQuery(delStr, htparams); } } /// /// 获取下拉框菜单数据 /// /// public DataTable getSelectModelPart() { lock (_remotingProxy) { StringBuilder strSql = new StringBuilder(); strSql.Append("select type_id as [value],type_name as [key] from dbo.sys_model_type where enabled='Y'"); return _remotingProxy.GetDataTable(strSql.ToString()); } } /// /// 导入EXCEL时插入数据 /// /// /// public bool InsertData(DataTable dt) { lock (_remotingProxy) { List SqlStrings = new List(dt.Rows.Count); List hs = new List(dt.Rows.Count); List ModelCache = new List(dt.Rows.Count); for (int i = 0; i < dt.Rows.Count; i++) { string ModelName = dt.Rows[i][2].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.Rows[i][5].ToString().Trim()); if (ModelID == 0) { SqlStringBuilder.Append("insert into sys_model(model_code,model_type,model_name,model_alias, "); SqlStringBuilder.Append("model_desc, model_type_id, create_userid,create_ymd,create_hms) "); SqlStringBuilder.Append(" values( "); SqlStringBuilder.Append("@model_code,@model_type,@model_name,@model_alias, "); SqlStringBuilder.Append("@model_desc, @model_type_id, @emp_id,convert(varchar(10),getdate(),120),convert(varchar(10),getdate(),108)); "); } 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_ymd=convert(varchar(10),getdate(),120),update_hms=convert(varchar(10),getdate(),108) "); SqlStringBuilder.Append("where model_id=@model_id;"); } // 如果配置零件号不存在,则重新插入 if (GetModelPartID(ModelName) == 0) { SqlStringBuilder.Append("insert into dbo.sys_part (part_no,part_spec,model_id,part_type,create_userid,create_ymd,create_hms) "); SqlStringBuilder.Append("values(@model_name,@model_name,(select model_id from dbo.sys_model where model_name=@model_name),2,@emp_id,convert(varchar(10),getdate(),120),convert(varchar(10),getdate(),108));"); } //删除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_ymd=convert(varchar(10),getdate(),120),update_hms=convert(varchar(10),getdate(),108) "); SqlStringBuilder.Append("WHERE part_no =@model_name "); } Hashtable values = new Hashtable(15); values.Add("@emp_id", _remotingProxy.UserID); values.Add("@model_id", ModelID); values.Add("@model_type_id", ModelTypeID); values.Add("@model_code", dt.Rows[i][0].ToString()); values.Add("@model_type", dt.Rows[i][1].ToString()); values.Add("@model_name", dt.Rows[i][2].ToString()); values.Add("@model_alias", dt.Rows[i][3].ToString()); values.Add("@model_desc", dt.Rows[i][4].ToString()); SqlStrings.Add(SqlStringBuilder.ToString()); hs.Add(values); } return _remotingProxy.ExecuteSqlTransaction(SqlStrings, hs); } } /// /// 获取配置编号 /// /// 配置名称 /// 配置编号 public int GetModelID(string modelName) { lock (_remotingProxy) { string SqlString = "select model_id,model_name from dbo.sys_model where model_name=@model_name order by model_name"; Hashtable Params = new Hashtable(1); Params.Add("@model_name", modelName); object obj = _remotingProxy.GetScalar(SqlString, Params); if (obj == null) return 0; return Convert.ToInt32(obj); } } /// /// 获取车型编号 /// /// 车型名称 /// 车型编号 public int GetModelTypeID(string modelTypeName) { lock (_remotingProxy) { string SqlString = "select type_id,type_name from dbo.sys_model_type where type_name=@type_name order by type_name"; Hashtable Params = new Hashtable(1); Params.Add("type_name", modelTypeName); object obj = _remotingProxy.GetScalar(SqlString, Params); if (obj == null) return 0; return Convert.ToInt32(obj); } } /// /// 获取配置零件号 /// /// 配置名称 /// 配置的零件编号 public int GetModelPartID(string modelName) { lock (_remotingProxy) { string SqlString = "select part_id from dbo.sys_part where part_no=@part_no"; Hashtable Params = new Hashtable(1); Params.Add("@part_no", modelName); object obj = _remotingProxy.GetScalar(SqlString, Params); if (obj == null) return 0; return Convert.ToInt32(obj); } } /// /// 获取配置名称 /// /// public string getModelName(string modelName) { lock (_remotingProxy) { StringBuilder querySen = new StringBuilder(1024); querySen.AppendLine("SELECT model_name "); querySen.AppendLine("FROM dbo.sys_model "); querySen.AppendLine("WHERE model_id = ( SELECT model_id "); querySen.AppendLine(" FROM dbo.sys_part "); querySen.AppendLine(" WHERE part_no = @modelName "); querySen.AppendLine(" ) "); Hashtable ht = new Hashtable(1); ht.Add("@modelName",modelName); object obj = _remotingProxy.GetScalar(querySen.ToString(),ht); if (obj == null) return "0"; return obj.ToString(); } } /// /// 获取配置编号 /// /// 配置名称 /// 配置编号 public int GetModelIDFromPart(string modelName) { lock (_remotingProxy) { string SqlString = "SELECT model_id FROM sys_part WHERE part_no=@model_name "; Hashtable Params = new Hashtable(1); Params.Add("@model_name", modelName); object obj = _remotingProxy.GetScalar(SqlString, Params); if (obj == null) return 0; return Convert.ToInt32(obj); } } #endregion 成员方法 } }