using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Collections; using DbCommon; using System.Data; using ApServerProvider; using Estsh.Web.Util; using System.Text; namespace Estsh.Core.Repositories { public class ReworkReportDal : BaseApp { public ReworkReportDal(RemotingProxy remotingProxy) : base(remotingProxy) { } /// /// 项目类型 /// /// /// public DataTable GetModelTypeList() { lock (_remotingProxy) { return _remotingProxy.GetDataTable(" SELECT type_id as [value], type_name as [key] FROM dbo.sys_model_type WHERE enabled = 'Y' ORDER BY type_name "); } } /// /// /// /// /// /// /// /// /// /// public DataTable GetBarCode(ref Pager pager, string txtSerialNumber, DateTime startDate, DateTime endDate, string cmbTypeName, string cmbCurrStatus) { lock (_remotingProxy) { StringBuilder colStr = new StringBuilder(); //colStr.Append(" a.serial_number, c.part_no, c.part_spec, "); //colStr.Append(" CASE a.prod_type WHEN 'S' THEN '订单生产' WHEN 'E' THEN '紧急插单' WHEN 'C'THEN '试制' WHEN 'Z'THEN '试制插单' WHEN 'P'THEN '培训' WHEN 'Q'THEN '培训插单' ELSE '未知' END AS prod_type, "); //colStr.Append(" a.update_ymd+' '+a.update_hms as repairDate,"); //colStr.Append(" CASE a.current_status WHEN 1 THEN '不良品' WHEN 0 THEN '良品' WHEN -1 THEN '报废品' ELSE '未知' END AS current_status,"); //colStr.Append(" e.type_name,a.create_ymd + ' ' + a.create_hms as defect_ctime,CONVERT(VARCHAR(20), a.out_pdline_time, 120) as out_pdline_time "); colStr.Append(" * "); //StringBuilder tableName = new StringBuilder(); //tableName.Append(" g_sn_status a"); //tableName.Append(" INNER JOIN dbo.g_sn_defect b ON a.serial_number = b.serial_number"); //tableName.Append(" LEFT JOIN sys_part c ON a.part_id = c.part_id "); //tableName.Append(" LEFT JOIN dbo.sys_model d ON d.model_id = a.model_id "); //tableName.Append(" LEFT JOIN dbo.sys_model_type e ON e.type_id = d.model_type_id"); StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append(" ( SELECT DISTINCT b.serial_number, c.part_no, c.part_spec, "); SqlStringBuilder.Append(" CASE b.prod_type WHEN 'S' THEN '订单生产' WHEN 'E' THEN '紧急插单' WHEN 'C'THEN '试制' WHEN 'Z'THEN '试制插单' WHEN 'P'THEN '培训' WHEN 'Q'THEN '培训插单' ELSE '未知' END AS prod_type, "); SqlStringBuilder.Append(" CASE b.current_status WHEN 1 THEN '不良品' WHEN 0 THEN '良品' WHEN -1 THEN '报废品' ELSE '未知' END AS current_status, e.type_name "); SqlStringBuilder.Append(" from g_sn_defect a "); SqlStringBuilder.Append(" INNER JOIN dbo.g_sn_status b ON a.serial_number = b.serial_number "); SqlStringBuilder.Append(" LEFT JOIN sys_part c ON b.part_id = c.part_id "); SqlStringBuilder.Append(" LEFT JOIN dbo.sys_model d ON d.model_id = b.model_id "); SqlStringBuilder.Append(" LEFT JOIN dbo.sys_model_type e ON e.type_id = d.model_type_id "); //StringBuilder whereStr = new StringBuilder(); SqlStringBuilder.Append(string.Format(" where ( CONVERT(DATETIME, a.create_ymd + ' ' + a.create_hms) >= '{0}' ", startDate)); SqlStringBuilder.Append(string.Format(" AND CONVERT(DATETIME, a.create_ymd + ' ' + a.create_hms) <= '{0}' ) ", endDate)); if (string.IsNullOrEmpty(cmbTypeName) == false) { SqlStringBuilder.Append(string.Format(" AND d.model_type_id = {0}", cmbTypeName)); } if (string.IsNullOrEmpty(cmbCurrStatus) == false && cmbCurrStatus != "1000") { if (cmbCurrStatus != "-2") { SqlStringBuilder.Append(string.Format(" AND b.current_status = {0} ", cmbCurrStatus)); } else { SqlStringBuilder.Append(string.Format(" AND b.current_status not in ('-1','0','1') ", cmbCurrStatus)); } } if (string.IsNullOrEmpty(txtSerialNumber.Trim()) == false) { SqlStringBuilder.Append(string.Format(" AND a.serial_number='{0}' ", txtSerialNumber)); } SqlStringBuilder.Append(string.Format(" ) AS aa ")); 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", SqlStringBuilder.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", colStr.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", " serial_number ")); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@GroupColumn", "")); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@PageSize", pager.pageSize)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@CurrentPage", pager.pageNo)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@Group", 0)); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Condition", " 1=1 ")); Hashtable values = new Hashtable(2); DataTable dt = new DataTable(); dt = _remotingProxy.ExecuteSotreProcedure("Com_Pagination", parameters, ref values); //totalCount = Convert.ToInt32(values["@TotalCount"]); pager.totalRows = Convert.ToInt32(values["@TotalCount"]); return dt; } } /// /// 维修明细 /// /// 条码 /// public DataTable GetRepairDetials(ref Pager pager, string txtSerialNumber, DateTime startDate, DateTime endDate) { lock (_remotingProxy) { StringBuilder strColumn = new StringBuilder(); strColumn.Append("a.serial_number,d.part_no,d.part_spec,h.enum_desc,b.defect_desc,e.terminal_name, "); strColumn.Append("CASE a.enabled WHEN 'Y' THEN '未维修' WHEN 'N' THEN '已维修' ELSE '其他' END AS enabled, "); strColumn.Append("g.emp_name AS update_name,f.emp_name,a.update_ymd,a.update_hms,a.create_ymd,a.create_hms "); StringBuilder strTable = new StringBuilder(); strTable.Append(" g_sn_defect a "); strTable.Append(" LEFT JOIN dbo.sys_defect b ON a.defect_id=b.defect_id "); strTable.Append(" LEFT JOIN dbo.g_sn_status c ON a.serial_number=c.serial_number "); strTable.Append(" LEFT JOIN sys_part d ON c.part_id=d.part_id "); strTable.Append(" LEFT JOIN dbo.sys_enum h ON d.part_location=h.enum_value AND h.enum_type='sys_part_location'"); strTable.Append(" LEFT JOIN dbo.sys_terminal e ON a.terminal_id=e.terminal_id "); strTable.Append(" LEFT JOIN sys_emp f ON a.create_userid=f.emp_id "); strTable.Append(" LEFT JOIN dbo.sys_emp g ON a.update_userid=g.emp_id "); StringBuilder strWhere = new StringBuilder(); strWhere.Append("1=1"); if (string.IsNullOrEmpty(txtSerialNumber) == false) { strWhere.AppendFormat(" and a.serial_number='{0}'", txtSerialNumber); } if (startDate != DateTime.MinValue && startDate != DateTime.MaxValue) { strWhere.AppendFormat(" and (CONVERT(DATETIME, a.create_ymd + ' ' + a.create_hms)) BETWEEN '{0}' and '{1}' ", startDate, endDate); } string strOrder = " a.create_ymd,a.create_hms "; 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", strTable.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", strColumn.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", strOrder)); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@GroupColumn", "")); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@PageSize", pager.pageSize)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@CurrentPage", pager.pageNo)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@Group", 0)); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Condition", strWhere.ToString())); Hashtable values = new Hashtable(); DataTable dt = new DataTable(); dt = _remotingProxy.ExecuteSotreProcedure("Com_Pagination", parameters, ref values); pager.totalRows = Convert.ToInt32(values["@TotalCount"]); return dt; } } /// /// 关键零件更换 /// /// /// public DataTable GetKeyPart(ref Pager pager, string txtSerialNumber, DateTime startDate, DateTime endDate) { lock (_remotingProxy) { StringBuilder strColumn = new StringBuilder(); strColumn.Append("a.serial_number,b.part_no,b.part_spec,a.kpsn,d.terminal_name, a.create_ymd, a.create_hms,c.emp_name"); StringBuilder strTable = new StringBuilder(); strTable.Append(" g_sn_keyparts a "); strTable.Append(" LEFT JOIN sys_part b on a.item_part_id=b.part_id "); strTable.Append(" LEFT JOIN sys_emp c ON a.create_userid=c.emp_id "); strTable.Append(" LEFT JOIN dbo.sys_terminal d ON a.terminal_id=d.terminal_id "); StringBuilder strWhere = new StringBuilder(); strWhere.Append("1=1 and d.terminal_id IN (100044,100055,100069)"); if (string.IsNullOrEmpty(txtSerialNumber) == false) { strWhere.AppendFormat(" and a.serial_number = '{0}'", txtSerialNumber); strWhere.AppendFormat(" OR a.kpsn ='{0}'", txtSerialNumber); } if (startDate != DateTime.MinValue && startDate != DateTime.MaxValue) { strWhere.AppendFormat(" and (CONVERT(DATETIME, a.create_ymd + ' ' + a.create_hms)) BETWEEN '{0}' and '{1}' ", startDate, endDate); } string strOrder = " a.serial_number "; 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", strTable.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", strColumn.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", strOrder.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@GroupColumn", "")); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@PageSize", pager.pageSize)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@CurrentPage", pager.pageNo)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@Group", 0)); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Condition", strWhere.ToString())); Hashtable values = new Hashtable(); DataTable dt = new DataTable(); dt = _remotingProxy.ExecuteSotreProcedure("Com_Pagination", parameters, ref values); pager.totalRows = Convert.ToInt32(values["@TotalCount"]); return dt; } } /// /// 非关键零件 /// /// /// public DataTable GetNotKeyPart(ref Pager pager, string txtSerialNumber, DateTime startDate, DateTime endDate) { lock (_remotingProxy) { StringBuilder strColumn = new StringBuilder(); strColumn.Append("a.serial_number,b.part_no,b.part_spec,a.qty, a.create_ymd,a.create_hms,c.emp_name,a.remark"); StringBuilder strTable = new StringBuilder(); strTable.Append(" g_sn_repair_replace_parts a "); strTable.Append(" LEFT JOIN sys_part b on a.item_part_id=b.part_id "); strTable.Append(" LEFT JOIN sys_emp c ON a.replace_emp_id=c.emp_id "); StringBuilder strWhere = new StringBuilder(); strWhere.Append("1=1"); if (string.IsNullOrEmpty(txtSerialNumber) == false) { strWhere.AppendFormat(" and a.serial_number='{0}'", txtSerialNumber); } if (startDate != DateTime.MinValue && startDate != DateTime.MaxValue) { strWhere.AppendFormat(" and a.create_ymd BETWEEN '{0}' and '{1}' ", startDate, endDate); } StringBuilder strOrder = new StringBuilder(); strOrder.Append("a.serial_number"); 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", strTable.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", strColumn.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", strOrder.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@GroupColumn", "")); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@PageSize", pager.pageSize)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@CurrentPage", pager.pageNo)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@Group", 0)); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Condition", strWhere.ToString())); Hashtable values = new Hashtable(); DataTable dt = new DataTable(); dt = _remotingProxy.ExecuteSotreProcedure("Com_Pagination", parameters, ref values); pager.totalRows = Convert.ToInt32(values["@TotalCount"]); return dt; //StringBuilder SqlBuilder = new StringBuilder(); //SqlBuilder.Append(" SELECT a.serial_number,b.part_no,b.part_spec,a.qty, a.create_ymd,a.create_hms,c.emp_name,a.remark "); //SqlBuilder.Append(" FROM g_sn_repair_replace_parts a "); //SqlBuilder.Append(" LEFT JOIN sys_part b on a.item_part_id=b.part_id "); //SqlBuilder.Append(" LEFT JOIN sys_emp c ON a.replace_emp_id=c.emp_id "); //SqlBuilder.Append(string.Format(" WHERE a.serial_number='{0}'", serialNumber)); //SqlBuilder.Append(" order by a.serial_number "); //return _remotingProxy.GetDataTable(SqlBuilder.ToString()); } } /// /// 关键数据 /// /// /// public DataTable GetKeyData(ref Pager pager, string txtSerialNumber, DateTime startDate, DateTime endDate) { lock (_remotingProxy) { StringBuilder strColumn = new StringBuilder(); strColumn.Append("a.serial_number,c.part_no,c.part_spec,a.keydata_desc,a.keydata_value,a.keydata_angle ,a.create_ymd,a.create_hms"); StringBuilder strTable = new StringBuilder(); strTable.Append(" g_sn_keydata a "); strTable.Append(" LEFT JOIN dbo.g_sn_status d ON a.serial_number=d.serial_number "); strTable.Append(" LEFT JOIN sys_part c ON d.part_id =c.part_id "); StringBuilder strWhere = new StringBuilder(); strWhere.Append(" 1=1"); if (string.IsNullOrEmpty(txtSerialNumber) == false) { strWhere.AppendFormat(" and a.serial_number='{0}' ", txtSerialNumber); } if (startDate != DateTime.MinValue && startDate != DateTime.MaxValue) { strWhere.AppendFormat(" and (CONVERT(DATETIME, a.create_ymd + ' ' + a.create_hms)) BETWEEN '{0}' and '{1}' ", startDate, endDate); } StringBuilder strOrder = new StringBuilder(); strOrder.Append("a.serial_number"); 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", strTable.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", strColumn.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", strOrder.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@GroupColumn", "")); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@PageSize", pager.pageSize)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@CurrentPage", pager.pageNo)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@Group", 0)); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Condition", strWhere.ToString())); Hashtable values = new Hashtable(); DataTable dt = new DataTable(); dt = _remotingProxy.ExecuteSotreProcedure("Com_Pagination", parameters, ref values); pager.totalRows = Convert.ToInt32(values["@TotalCount"]); return dt; } } /// /// 电功能检测 /// /// /// public DataTable GetCheck(ref Pager pager, string txtSerialNumber, DateTime startDate, DateTime endDate) { lock (_remotingProxy) { StringBuilder strColumn = new StringBuilder(); strColumn.Append("条码,设备名称,检测项目名称,下限值,[上限值/模块信息] AS 上限值,测试值,[测试结果OK/NG] AS 测试结果,测试完成日期时间 "); StringBuilder strTable = new StringBuilder(); strTable.Append(" i_djc_testdata a "); StringBuilder strWhere = new StringBuilder(); strWhere.Append(" 1=1"); if (string.IsNullOrEmpty(txtSerialNumber) == false) { strWhere.AppendFormat(" and 条码 ='{0}' ", txtSerialNumber); } if (startDate != DateTime.MinValue && startDate != DateTime.MaxValue) { strWhere.Append(" and 条码 IN "); strWhere.AppendFormat(" (SELECT serial_number FROM g_sn_defect WHERE (CONVERT(DATETIME, create_ymd + ' ' + create_hms)) BETWEEN '{0}' and '{1}') ", startDate, endDate); } StringBuilder strOrder = new StringBuilder(); strOrder.Append("条码"); 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", strTable.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", strColumn.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", strOrder.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@GroupColumn", "")); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@PageSize", pager.pageSize)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@CurrentPage", pager.pageNo)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@Group", 0)); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Condition", strWhere.ToString())); Hashtable values = new Hashtable(); DataTable dt = new DataTable(); dt = _remotingProxy.ExecuteSotreProcedure("Com_Pagination", parameters, ref values); pager.totalRows = Convert.ToInt32(values["@TotalCount"]); return dt; } } /// /// 关键零件 /// /// /// public DataTable GetKeyParts(ref Pager pager, string txtSerialNumber, DateTime startDate, DateTime endDate) { lock (_remotingProxy) { StringBuilder strColumn = new StringBuilder(); strColumn.Append("a.serial_number, b.part_no,b.part_spec,a.kpsn, a.create_ymd,a.create_hms"); StringBuilder strTable = new StringBuilder(); strTable.Append(" g_sn_keyparts a "); strTable.Append(" LEFT JOIN sys_part b ON a.item_part_id=b.part_id "); StringBuilder strWhere = new StringBuilder(); strWhere.Append(" 1=1"); if (string.IsNullOrEmpty(txtSerialNumber) == false) { strWhere.AppendFormat(" and a.serial_number = '{0}'", txtSerialNumber); strWhere.AppendFormat(" OR a.kpsn ='{0}'", txtSerialNumber); } if (startDate != DateTime.MinValue && startDate != DateTime.MaxValue) { strWhere.AppendFormat(" and (CONVERT(DATETIME, a.create_ymd + ' ' + a.create_hms)) BETWEEN '{0}' and '{1}' ", startDate, endDate); } StringBuilder strOrder = new StringBuilder(); strOrder.Append("a.serial_number"); 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", strTable.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Column", strColumn.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@OrderColumn", strOrder.ToString())); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@GroupColumn", "")); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@PageSize", pager.pageSize)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@CurrentPage", pager.pageNo)); parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@Group", 0)); parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@Condition", strWhere.ToString())); Hashtable values = new Hashtable(); DataTable dt = new DataTable(); dt = _remotingProxy.ExecuteSotreProcedure("Com_Pagination", parameters, ref values); pager.totalRows = Convert.ToInt32(values["@TotalCount"]); return dt; } } } }