using System;
using System.Data;
using System.Text;
using System.Collections.Generic;
using System.Data.SqlClient;
using ApServerProvider;
using DbCommon;
using System.Collections;
namespace Estsh.Core.Repositories
{
public class SwapSNInfoDal : BaseApp
{
private RemotingProxy remotingProxy;
public SwapSNInfoDal(RemotingProxy remotingProxy)
: base(remotingProxy)
{
this.TABLE_NAME = "sys_defect";
this.PK_NAME = "defect_id";
}
///
/// 判断库存合格证条码是否存在
///
/// 库存合格证条码
///
public bool ExistSn(string serialNumber)
{
lock (_remotingProxy)
{
bool result = false;
string sql = "SELECT * FROM dbo.g_sn_status WHERE (serial_number=@serial_number)";
Hashtable values = new Hashtable(1);
values.Add("@serial_number", serialNumber);
DataTable dt = _remotingProxy.GetDataTable(sql, values);
if (dt.Rows.Count > 0)
{
result = true;
}
return result;
}
}
///
/// 依次更新g_sn_status、g_sn_keyparts、g_sn_keydata、NewTest、g_sn_travel表
///
/// 原合格证条码
/// 库存合格证条码
///
public string UpdateTable(string oldSN, string newSN, string flag , int empId)
{
lock (_remotingProxy)
{
flag = flag.ToUpper();
List Parameters = new List();
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@oldSN", oldSN));
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@newSN", newSN));
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@rMsg", 50));
Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@empId", empId));
//Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@flag", flag));
// use default value.
Hashtable ht = _remotingProxy.ExecuteSotreProcedure("dbo.g_swip_sn_audit", Parameters);
return ht["@rMsg"].ToString();
}
}
///
/// 从 sys_base 表中读取Audit交换数据时,写入的到g_sn_repair_replace_kp.remark中值,
/// 以此区分是返工返修交换的数据还是Audit交换的数据
///
/// 异常以及没有取到值时返回默认值"AUDIT", 若能读取到返回读到的值。
public string GetAuditSwapFlag()
{
lock (_remotingProxy)
{
string flag = "AUDIT"; //this is the default value.
try
{
string querySen = "SELECT param_value FROM sys_base WHERE enabled = 'Y' AND param_name = 'AuditSwapFlag' AND enabled = 'Y' ";
object obj = _remotingProxy.GetScalar(querySen);
if (null == obj)
return flag;
else
return obj.ToString();
}
catch
{
return flag;
}
}
}
///
/// 查询库存合格证条码的状态
///
/// 原合格证条码
///
public int GetStatus(string serialNumber)
{
lock (_remotingProxy)
{
string sql = "SELECT current_status FROM dbo.g_sn_status WHERE serial_number=@serial_number";
Hashtable values = new Hashtable(1);
values.Add("@serial_number", serialNumber);
return Convert.ToInt32(_remotingProxy.GetScalar(sql, values));
}
}
///
/// 获取合格证条码的零件ID
///
///
///
public int GetSnPartID(string serialNumber)
{
lock (_remotingProxy)
{
StringBuilder sql = new StringBuilder(1024);
sql.Append("select b.part_id from dbo.g_workorder_sn a, dbo.g_workorder_detail b ");
sql.Append("where a.wo_detail_id=b.ruid and a.serial_number=@serial_number ");
Hashtable values = new Hashtable(1);
values.Add("@serial_number", serialNumber);
object obj = _remotingProxy.GetScalar(sql.ToString(), values);
return obj == null ? 0 : Convert.ToInt32(obj);
}
}
///
/// 查询所有在Audit时交换的信息。
///
/// 要查询的条码(可为新的,可为旧的)
/// AUDIT 交换数据的标记字符串
/// 是否启用模糊查询方式(以输入的字符串开头的都列出来)
/// 返回输入条码的交换记录
public DataTable GetSwapDataList(Hashtable para, bool fuzzyQuery)
{
lock (_remotingProxy)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.Append("SELECT old_kpsn , ");
querySen.Append(" new_kpsn , ");
querySen.Append(" remark , ");
querySen.Append(" enabled , ");
querySen.Append(" create_ymd , ");
querySen.Append(" create_hms, ");
querySen.Append(" ht.serial_number, ");
querySen.Append(" ht.new_part_id, ");
querySen.Append(" ht.old_part_id ");
querySen.Append("FROM dbo.g_sn_repair_replace_kp ht ");
querySen.Append("WHERE (new_kpsn LIKE @newSN ");
querySen.Append(" OR old_kpsn LIKE @oldSN) ");
querySen.Append(" AND remark = @remarkFlag ");
querySen.Append("ORDER BY ruid DESC ");
string sn = para["newSN"].ToString();
if (para["newSN"].ToString().Length <= 0) //没有输入条码时,查询全部。
{
sn = "%";
}
else if (fuzzyQuery) //有启用模糊查询
{
sn += "%";
}
try
{
return _remotingProxy.GetDataTable(querySen.ToString(), para);
}
catch (System.Exception ex)
{
lastErrMsg = ex.Message;
return null;
}
}
}
public string lastErrMsg { get; set; }
}
}