You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

195 lines
7.3 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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";
}
/// <summary>
/// 判断库存合格证条码是否存在
/// </summary>
/// <param name="serialNumber">库存合格证条码</param>
/// <returns></returns>
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;
}
}
/// <summary>
/// 依次更新g_sn_status、g_sn_keyparts、g_sn_keydata、NewTest、g_sn_travel表
/// </summary>
/// <param name="oldSn">原合格证条码</param>
/// <param name="newSn">库存合格证条码</param>
/// <returns></returns>
public string UpdateTable(string oldSN, string newSN, string flag , int empId)
{
lock (_remotingProxy)
{
flag = flag.ToUpper();
List<StoreProcedureParameter> Parameters = new List<StoreProcedureParameter>();
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();
}
}
/// <summary>
/// 从 sys_base 表中读取Audit交换数据时写入的到g_sn_repair_replace_kp.remark中值
/// 以此区分是返工返修交换的数据还是Audit交换的数据
/// </summary>
/// <returns>异常以及没有取到值时返回默认值"AUDIT", 若能读取到返回读到的值。</returns>
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;
}
}
}
/// <summary>
/// 查询库存合格证条码的状态
/// </summary>
/// <param name="serialNumber">原合格证条码</param>
/// <returns></returns>
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));
}
}
/// <summary>
/// 获取合格证条码的零件ID
/// </summary>
/// <param name="serialNumber"></param>
/// <returns></returns>
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);
}
}
/// <summary>
/// 查询所有在Audit时交换的信息。
/// </summary>
/// <param name="sn">要查询的条码(可为新的,可为旧的)</param>
/// <param name="remarkFlag">AUDIT 交换数据的标记字符串</param>
/// <param name="fuzzyQuery">是否启用模糊查询方式(以输入的字符串开头的都列出来)</param>
/// <returns>返回输入条码的交换记录</returns>
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; }
}
}