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.

2276 lines
110 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 Estsh.Client.Common.HttpClientUtil;
using Newtonsoft.Json;
using System.Collections;
using System.Data;
using System.Text;
namespace Estsh.Client
{
public class StepLibraryAPP
{
private HttpClientHelper httpClient = null;
public StepLibraryAPP(HttpClientHelper _httpClient)
{
httpClient = _httpClient;
}
public string GetPartNo(string sn)
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("SELECT part_no ");
querySen.AppendLine("FROM dbo.sys_part(NOLOCK) ");
querySen.AppendLine("WHERE part_id = ( SELECT part_id ");
querySen.AppendLine(" FROM dbo.g_sn_status(NOLOCK) ");
querySen.AppendLine(" WHERE serial_number = '" + sn + "' ");
querySen.AppendLine(" ) ");
object obj = httpClient.GetScalar(querySen.ToString());
return obj != null && obj != DBNull.Value ? obj.ToString() : string.Empty;
}
}
public string GetRuleNo(string partNo)
{
lock (httpClient)
{
string sql = "SELECT label_type FROM dbo.sys_part(NOLOCK) WHERE part_no = '" + partNo + "'";
object obj = httpClient.GetScalar(sql);
return obj != null && obj != DBNull.Value ? obj.ToString() : string.Empty;
}
}
public string GetPartLoc(string partNo)
{
lock (httpClient)
{
string sql = "SELECT part_location FROM dbo.sys_part WHERE part_no = '" + partNo + "'";
object obj = httpClient.GetScalar(sql);
return obj != null && obj != DBNull.Value ? obj.ToString() : string.Empty;
}
}
/// <summary>
/// 根据总成零件号和工站编号获取本工站需要绑定的关键零件信息
/// </summary>
/// <param name="partNo"></param>
/// <param name="terminalID"></param>
/// <returns></returns>
public List<dynamic> GetBindData(string partNo, int terminalID)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT b.item_count , ");
SqlStringBuilder.Append(" b.location , ");
SqlStringBuilder.Append(" b.version , ");
SqlStringBuilder.Append(" b.item_part_id , ");
SqlStringBuilder.Append(" d.part_no , ");
SqlStringBuilder.Append(" d.part_spec , ");
SqlStringBuilder.Append(" isnull(f.lenght,0) as lenght , ");
SqlStringBuilder.Append(" f.from1 , ");
SqlStringBuilder.Append(" f.to1 , ");
SqlStringBuilder.Append(" f.fix1 , ");
SqlStringBuilder.Append(" f.from2 , ");
SqlStringBuilder.Append(" f.to2 , ");
SqlStringBuilder.Append(" f.fix2, f.type, ");
SqlStringBuilder.Append(" '' AS KPSN , f.ext_rule, ");
SqlStringBuilder.Append(" 0 AS BindQty, ");
SqlStringBuilder.Append(" f.is_validate_unique, ");
SqlStringBuilder.Append(" f.is_validate_length ");
SqlStringBuilder.Append("FROM dbo.sys_bom(NOLOCK) a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_bom_detail(NOLOCK) b ON A.bom_id = B.bom_id AND b.enabled='Y'");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part(NOLOCK) c ON A.part_id = c.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part(NOLOCK) d ON b.item_part_id = d.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_terminal(NOLOCK) e ON b.process_id = e.process_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part_sn_rule(NOLOCK) f ON b.item_part_id = f.part_id ");
SqlStringBuilder.Append("WHERE a.bom_type = '绑定' ");
SqlStringBuilder.Append(" AND c.part_no = '" + partNo + "' ");
SqlStringBuilder.Append(" AND e.terminal_id = '" + terminalID + "' and step_type=1 ");
SqlStringBuilder.Append(" GROUP BY b.item_count ,b.location ,b.version ,b.item_part_id , ");
SqlStringBuilder.Append(" d.part_no ,d.part_spec ,isnull(f.lenght,0) , ");
SqlStringBuilder.Append(" f.from1 ,f.to1 ,f.fix1 ,f.from2 ,f.to2 ,f.fix2, f.type, ");
SqlStringBuilder.Append(" a.bom_id,b.part_id,b.item_part_id,f.ext_rule,f.is_validate_unique,f.is_validate_length ");
SqlStringBuilder.Append("ORDER BY b.location ");
return httpClient.GetEntityList(SqlStringBuilder.ToString());
}
}
/// <summary>
/// 根据总成零件号和工站编号获取本工站需要绑定的关键零件信息
/// </summary>
/// <param name="partNo"></param>
/// <param name="terminalID"></param>
/// <returns></returns>
public List<dynamic> GetStep2BindData(string partNo, int terminalID)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT b.item_count , ");
SqlStringBuilder.Append(" b.location , ");
SqlStringBuilder.Append(" b.version , ");
SqlStringBuilder.Append(" b.item_part_id , ");
SqlStringBuilder.Append(" d.part_no , ");
SqlStringBuilder.Append(" d.part_spec , ");
SqlStringBuilder.Append(" isnull(f.lenght,0) as lenght , ");
SqlStringBuilder.Append(" f.from1 , ");
SqlStringBuilder.Append(" f.to1 , ");
SqlStringBuilder.Append(" f.fix1 , ");
SqlStringBuilder.Append(" f.from2 , ");
SqlStringBuilder.Append(" f.to2 , ");
SqlStringBuilder.Append(" f.fix2, f.type, ");
SqlStringBuilder.Append(" '' AS KPSN , f.ext_rule, ");
SqlStringBuilder.Append(" 0 AS BindQty, ");
SqlStringBuilder.Append(" f.is_validate_unique, ");
SqlStringBuilder.Append(" f.is_validate_length ");
SqlStringBuilder.Append("FROM dbo.sys_bom(NOLOCK) a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_bom_detail(NOLOCK) b ON A.bom_id = B.bom_id AND b.enabled='Y'");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part(NOLOCK) c ON A.part_id = c.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part(NOLOCK) d ON b.item_part_id = d.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_terminal(NOLOCK) e ON b.process_id = e.process_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part_sn_rule(NOLOCK) f ON b.item_part_id = f.part_id ");
SqlStringBuilder.Append("WHERE a.bom_type = '绑定' ");
SqlStringBuilder.Append(" AND c.part_no = '" + partNo + "' ");
SqlStringBuilder.Append(" AND e.terminal_id = '" + terminalID + "' and step_type=2 ");
SqlStringBuilder.Append(" GROUP BY b.item_count ,b.location ,b.version ,b.item_part_id , ");
SqlStringBuilder.Append(" d.part_no ,d.part_spec ,isnull(f.lenght,0) , ");
SqlStringBuilder.Append(" f.from1 ,f.to1 ,f.fix1 ,f.from2 ,f.to2 ,f.fix2, f.type, ");
SqlStringBuilder.Append(" a.bom_id,b.part_id,b.item_part_id,f.ext_rule,f.is_validate_unique,f.is_validate_length ");
SqlStringBuilder.Append("ORDER BY b.location ");
return httpClient.GetEntityList(SqlStringBuilder.ToString());
}
}
public string validataLimit(string paramName)
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("SELECT param_value ");
querySen.AppendLine("FROM sys_base ");
querySen.AppendLine("WHERE ( param_name = @paramName ) ");
Dictionary<string, object> ht = new Dictionary<string, object>(1);
ht.Add("@paramName", paramName);
object obj = httpClient.GetScalar(querySen.ToString(), ht);
return obj != null && obj != DBNull.Value ? obj.ToString() : string.Empty;
}
}
/// <summary>
/// 查询 KPSN 是否使用过
/// </summary>
/// <param name="kpsn">KPSN</param>
/// <returns>KPSN 是否使用过</returns>
public bool ExistsKPSN(string kpsn, int terminal_id)
{
lock (httpClient)
{
string SqlString =
"select top 1 1 from dbo.g_sn_keyparts(NOLOCK) where kpsn=@kpsn and terminal_id=@terminal_id";
Dictionary<string, object> Params = new Dictionary<string, object>(2);
Params.Add("@kpsn", kpsn);
Params.Add("@terminal_id", terminal_id);
return httpClient.GetScalar(SqlString, Params) != null;
}
}
public bool UpdateOPCPointValue(string terminal_id, string terminal_params_name)
{
try
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("UPDATE dbo.opc_point ");
querySen.AppendLine("SET point_flag1 = 101 , ");
querySen.AppendLine(" update_time = GETDATE() ");
querySen.AppendLine("WHERE point_name = ( SELECT param_value ");
querySen.AppendLine(" FROM dbo.sys_terminal_params ");
querySen.AppendLine(" WHERE terminal_id = @terminal_id ");
querySen.AppendLine(" AND param_name = @terminal_params_name ");
querySen.AppendLine(" ) ");
Dictionary<string, object> ht = new Dictionary<string, object>(2);
ht.Add("@terminal_id", terminal_id);
ht.Add("@terminal_params_name", terminal_params_name);
int rows = httpClient.Execute(querySen.ToString(), ht);
if (rows > 0)
{
return true;
}
else
{
return false;
}
}
}
catch
{
return false;
}
}
/// <summary>
/// 插入 KPSN 数据
/// </summary>
/// <param name="sn">过程条码</param>
/// <param name="kpsn">KPSN</param>
/// <param name="item_part_id">KPSN 的零件号</param>
/// <param name="version">KPSN 版本</param>
/// <param name="location">KPSN 位置</param>
/// <param name="terminalID">工站编号</param>
/// <returns></returns>
public bool InsertKPSN(string sn, string kpsn, int item_part_id,
string version, string location, int terminalID)
{
lock (httpClient)
{
Dictionary<string, object> Values = new Dictionary<string, object>(7);
Values.Add("serial_number", sn);
Values.Add("kpsn", kpsn);
Values.Add("item_part_id", item_part_id);
Values.Add("version", version);
Values.Add("location", location);
Values.Add("terminal_id", terminalID);
Values.Add("create_userid", httpClient.userId);
return httpClient.Insert("dbo.g_sn_keyparts", Values);
}
}
public bool InsertKPSNTemp(string sn, string kpsn, int item_part_id,
string version, string location, int terminalID)
{
lock (httpClient)
{
Dictionary<string, object> Values = new Dictionary<string, object>(7);
Values.Add("serial_number", sn);
Values.Add("kpsn", kpsn);
Values.Add("item_part_id", item_part_id);
Values.Add("version", version);
Values.Add("location", location);
Values.Add("terminal_id", terminalID);
Values.Add("create_userid", httpClient.userId);
return httpClient.Insert("dbo.g_sn_keyparts_temp", Values);
}
}
public List<dynamic> keyDataTemp(string kpsn)
{
string sql = "SELECT * FROM dbo.g_sn_keyparts_temp WHERE kpsn ='" + kpsn + "'";
return httpClient.GetEntityList(sql);
}
public bool moveKeyPasts(string terIDTemp, string snTemp, string sn)
{
string sql = @" INSERT INTO dbo.g_sn_keyparts
( workorder_no ,
serial_number ,
kpsn ,
item_part_id ,
version ,
location ,
terminal_id ,
is_macthing ,
enabled ,
update_userid ,
update_ymd ,
update_hms ,
create_userid ,
create_ymd ,
create_hms ,
guid
)
SELECT workorder_no ,'" + sn + @"' AS serial_number ,
kpsn ,
item_part_id ,
version ,
location ,
terminal_id ,
is_macthing ,
enabled ,
update_userid ,
update_ymd ,
update_hms ,
create_userid ,
create_ymd ,
create_hms ,
guid
FROM dbo.g_sn_keyparts_temp
WHERE serial_number = '" + snTemp + @"'
AND terminal_id = '" + terIDTemp + @"'
DELETE FROM g_sn_keyparts_temp
WHERE serial_number = '" + snTemp + @"'
AND terminal_id = '" + terIDTemp + "' ";
return httpClient.Execute(sql) > 0;
}
public string getBaseParamValue(string name)
{
lock (httpClient)
{
string sql = "SELECT param_value FROM dbo.sys_base WHERE param_name='" + name + "'";
object obj = httpClient.GetScalar(sql);
return obj != null && obj != DBNull.Value ? obj.ToString() : string.Empty;
}
}
public bool updateBaseParamValue(string value, string name)
{
lock (httpClient)
{
string sql = "UPDATE dbo.sys_base SET param_value='" + value + "' WHERE param_name='" + name + "'";
return httpClient.Execute(sql) > 0;
}
}
public bool getSNtoModel(string _sn)
{
lock (httpClient)
{
string sql = @"SELECT b.model_name
FROM dbo.g_sn_status a
LEFT JOIN dbo.sys_model b ON a.model_id = b.model_id
WHERE a.serial_number = '" + _sn + @"'
AND ( model_name LIKE '%豪华%'
OR model_name LIKE '%旗舰%'
)";
return httpClient.GetEntityList(sql).Count > 0;
}
}
public bool IsValidata(string name)
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("SELECT param_value ");
querySen.AppendLine("FROM sys_base ");
querySen.AppendLine("WHERE ( param_name = '" + name + "' ) ");
object obj = httpClient.GetScalar(querySen.ToString());
return obj != null && obj != DBNull.Value ? obj.ToString() == "Y" : false;
}
}
public bool UpdateSNTerminal(string terminalid, string sn)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("UPDATE dbo.g_sn_status SET terminal_id = @terminal_id,update_userid=@userid WHERE serial_number = @serial_number ");
Dictionary<string, object> ht = new Dictionary<string, object>(3);
ht.Add("@terminal_id", terminalid);
ht.Add("@serial_number", sn);
ht.Add("@userid", httpClient.userId);
try
{
httpClient.Execute(querySen.ToString(), ht);
}
catch
{
return false;
}
return true;
}
public string pdLineID(string terminalID)
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("SELECT pdline_id ");
querySen.AppendLine("FROM dbo.sys_terminal ");
querySen.AppendLine("WHERE terminal_id = @terminalID ");
Dictionary<string, object> ht = new Dictionary<string, object>(1);
ht.Add("@terminalID", terminalID);
object obj = httpClient.GetScalar(querySen.ToString(), ht);
return obj != null ? obj.ToString().ToUpper() : string.Empty;
}
}
//更新上线时间
public bool updateOnLineStatus(string serial_number, string pdlineID)
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("UPDATE dbo.g_sn_status ");
querySen.AppendLine("SET work_flag = 0 , pdline_id = @pdlineID ,update_userid=@userid, ");
querySen.AppendLine(" in_pdline_time = GETDATE() ");
querySen.AppendLine("WHERE serial_number = @serial_number ");
querySen.AppendLine("UPDATE dbo.g_workorder ");
querySen.AppendLine("SET status = 1 ,update_userid=@userid, ");
querySen.AppendLine(" in_pdline_ymd = dbo.get_ymd() , ");
querySen.AppendLine(" in_pdline_hms = dbo.get_hms() ");
querySen.AppendLine("WHERE ruid = ( SELECT b.workorder_id ");
querySen.AppendLine(" FROM dbo.g_sn_status a ");
querySen.AppendLine(" LEFT JOIN dbo.g_workorder_detail b ON a.wo_detail_id = b.ruid ");
querySen.AppendLine(" LEFT JOIN dbo.sys_part c ON a.part_id = c.part_id ");
querySen.AppendLine(" WHERE a.serial_number = @serial_number ");
//querySen.AppendLine(" AND ( c.part_location = '02' ");
//querySen.AppendLine(" OR c.part_location = '04' ");
//querySen.AppendLine(" ) ");
querySen.AppendLine(" ) ");
Dictionary<string, object> ht = new Dictionary<string, object>(3);
ht.Add("@serial_number", serial_number);
ht.Add("@pdlineID", pdlineID);
ht.Add("@userid", httpClient.userId);
return httpClient.Execute(querySen.ToString(), ht) > 0;
}
}
/// <summary>
/// 根据条码(总成零件号)和工站编号获取本工站需要采集的关键数据
/// </summary>
/// <param name="sn">条码</param>
/// <param name="terminalID">工站编号</param>
/// <returns>查询到的相应产品配置</returns>
public List<dynamic> GetKeyData(string serialNumber, string terminalId)
{
try
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT a.keydata_id , ");
SqlStringBuilder.Append(" b.keydata_name , ");
SqlStringBuilder.Append(" b.keydata_desc , ");
SqlStringBuilder.Append(" b.min_value , ");
SqlStringBuilder.Append(" b.max_value , ");
SqlStringBuilder.Append(" CONVERT(VARCHAR(10),b.min_value) + '' + CONVERT(VARCHAR(10),b.max_value) AS value , ");
SqlStringBuilder.Append(" b.seq , ");
SqlStringBuilder.Append(" a.item_count , ");
SqlStringBuilder.Append(" '' AS keydata_value , ");
SqlStringBuilder.Append(" '' AS keydata_angle , ");
SqlStringBuilder.Append(" '' AS keydata_status , ");
SqlStringBuilder.Append(" '' AS keydata_result , ");
SqlStringBuilder.Append(" '' AS keydata_ymd , ");
SqlStringBuilder.Append(" '' AS keydata_hms ");
SqlStringBuilder.Append("FROM dbo.sys_part_keydata(NOLOCK) AS a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_keydata(NOLOCK) AS b ON a.keydata_id=b.keydata_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part(NOLOCK) AS c ON a.part_id=c.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_workorder_sn(NOLOCK) AS d ON c.part_id=d.part_id ");
SqlStringBuilder.Append("WHERE a.enabled='Y' AND b.enabled='Y' ");
SqlStringBuilder.Append(" AND a.terminal_id=@terminal_id ");
SqlStringBuilder.Append(" AND d.serial_number = @serial_number ");
SqlStringBuilder.Append("ORDER BY b.seq ");
Dictionary<string, object> Params = new Dictionary<string, object>(2);
Params.Add("@terminal_id", terminalId);
Params.Add("@serial_number", serialNumber);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params);
}
}
catch (Exception ex)
{
// 记录日志
using (StreamWriter sw = new StreamWriter("PLC_Log-" + DateTime.Now.ToString("yyyy-MM") + ".txt", true))
{
sw.WriteLine(string.Format("{0} {1}", "["
+ DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+ "] GetKeyData()", ex.ToString()));
sw.Flush();
sw.Close();
}
return null;
}
}
public List<dynamic> GetKeyDataValue(string serialNumber, string terminalId)
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("SELECT keydata_desc , keydata_value , ");
querySen.AppendLine(" keydata_angle , ");
querySen.AppendLine(" 'OK' AS keydata_status ,");
querySen.AppendLine(" keydata_result , ");
querySen.AppendLine(" create_ymd AS keydata_ymd , ");
querySen.AppendLine(" create_hms AS keydata_hms ");
querySen.AppendLine("FROM dbo.g_sn_keydata_temp(NOLOCK) ");
querySen.AppendLine("WHERE serial_number = '" + serialNumber + "' ");
querySen.AppendLine(" AND terminal_id='" + terminalId + "'");
querySen.AppendLine(" AND keydata_result='P' ORDER BY keydata_ymd,keydata_hms ");
return httpClient.GetEntityList(querySen.ToString());
}
}
/// <summary>
/// 更新关键数据结果
/// </summary>
/// <param name="sn"></param>
/// <param name="keyDataValue"></param>
/// <returns></returns>
public bool updateKeyDataResult(string sn, string keyDataValue)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("UPDATE dbo.g_sn_keydata_temp ");
SqlStringBuilder.Append("SET keydata_result = keydata_result + 'Fail',update_userid=@userid ");
SqlStringBuilder.Append("WHERE serial_number = @sn ");
SqlStringBuilder.Append(" AND keydata_value = @keyDataValue ");
Dictionary<string, object> ht = new Dictionary<string, object>(3);
ht.Add("@sn", sn);
ht.Add("@keyDataValue", keyDataValue);
ht.Add("@userid", httpClient.userId);
return httpClient.Execute(SqlStringBuilder.ToString(), ht) > 0;
}
public bool GetTestData(string sn)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("SELECT [测试结果(P/F)] ");
querySen.AppendLine("FROM dbo.i_func_testdata ");
querySen.AppendLine("WHERE 条码 = @sn ");
querySen.AppendLine("ORDER BY 测试完成日期 DESC,测试完成时间 DESC ");
Dictionary<string, object> Params = new Dictionary<string, object>(1);
Params.Add("@sn", sn);
List<dynamic> dt = httpClient.GetEntityList(querySen.ToString(), Params);
if (dt.Count <= 0)
return false;
return dt[0][0].ToString().ToUpper() == "P" ? true : false;
}
///// <summary>
///// 检查数据表是否有效
///// </summary>
///// <param name="dt"></param>
///// <returns></returns>
//public bool CheckList<dynamic>Invalid(List<dynamic> dt)
//{
// if (dt == null)
// return false;
// if (dt.Count == 0)
// return false;
// return true;
//}
public int torqueQty(string serial_number)
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("SELECT COUNT(DISTINCT ( keydata_id )) ");
querySen.AppendLine("FROM dbo.sys_part_keydata ");
querySen.AppendLine("WHERE part_id = ( SELECT part_id ");
querySen.AppendLine(" FROM dbo.g_sn_status ");
querySen.AppendLine(" WHERE serial_number = @serial_number ");
querySen.AppendLine(" ) ");
Dictionary<string, object> ht = new Dictionary<string, object>(1);
ht.Add("@serial_number", serial_number);
object obj = httpClient.GetScalar(querySen.ToString(), ht);
return obj != null && obj != DBNull.Value ? (int)obj : 0;
}
}
public int factTorqueQty(string serial_number)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT COUNT(*) ");
SqlStringBuilder.Append("FROM ( SELECT * ");
SqlStringBuilder.Append(" FROM dbo.g_sn_keydata ");
SqlStringBuilder.Append(" WHERE serial_number = @serial_number ");
SqlStringBuilder.Append(" AND keydata_result = 'P' ");
SqlStringBuilder.Append(" UNION ");
SqlStringBuilder.Append(" SELECT * ");
SqlStringBuilder.Append(" FROM dbo.g_sn_keydata_temp ");
SqlStringBuilder.Append(" WHERE serial_number = @serial_number ");
SqlStringBuilder.Append(" AND keydata_result = 'P' ");
SqlStringBuilder.Append(" ) AS keyData ");
Dictionary<string, object> ht = new Dictionary<string, object>(1);
ht.Add("@serial_number", serial_number);
object obj = httpClient.GetScalar(SqlStringBuilder.ToString(), ht);
return obj != null && obj != DBNull.Value ? (int)obj : 0;
}
}
public List<dynamic> GetBindQty(string part_no)
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("SELECT DISTINCT(d.part_no), ");
querySen.AppendLine(" b.item_count , ");
querySen.AppendLine(" b.location , ");
querySen.AppendLine(" b.item_part_id , ");
querySen.AppendLine(" c.part_no, ");
querySen.AppendLine(" d.part_no , ");
querySen.AppendLine(" d.part_spec , ");
querySen.AppendLine(" f.type ");
querySen.AppendLine("FROM dbo.sys_bom a ");
querySen.AppendLine(" LEFT JOIN dbo.sys_bom_detail b ON A.bom_id = B.bom_id ");
querySen.AppendLine(" LEFT JOIN dbo.sys_part c ON A.part_id = c.part_id ");
querySen.AppendLine(" LEFT JOIN dbo.sys_part d ON b.item_part_id = d.part_id ");
querySen.AppendLine(" LEFT JOIN dbo.sys_terminal e ON b.process_id = e.process_id ");
querySen.AppendLine(" LEFT JOIN dbo.sys_part_sn_rule f ON b.item_part_id = f.part_id ");
querySen.AppendLine("WHERE a.bom_type = '绑定' ");
querySen.AppendLine(" AND c.part_no = @part_no ");
querySen.AppendLine(" AND b.process_id != '' ");
querySen.AppendLine(" AND type IS NOT NULL ");
Dictionary<string, object> ht = new Dictionary<string, object>(1);
ht.Add("@part_no", part_no);
return httpClient.GetEntityList(querySen.ToString(), ht);
}
}
public List<dynamic> GetKeyParts(string serialNumber)
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine(" SELECT a.serial_number , ");
querySen.AppendLine(" b.part_no , ");
querySen.AppendLine(" b.part_spec , ");
querySen.AppendLine(" a.kpsn , ");
querySen.AppendLine(" a.create_ymd , ");
querySen.AppendLine(" a.create_hms ");
querySen.AppendLine(" FROM dbo.g_sn_keyparts (NOLOCK) a ");
querySen.AppendLine(" LEFT JOIN dbo.sys_part (NOLOCK) b ON a.item_part_id = b.part_id ");
querySen.AppendLine(" WHERE a.serial_number = @serialNumber ");
querySen.AppendLine(" OR a.serial_number = ( SELECT TOP 1 ");
querySen.AppendLine(" c.kpsn ");
querySen.AppendLine(" FROM dbo.g_sn_keyparts (NOLOCK) AS c ");
querySen.AppendLine(" WHERE c.serial_number = @serialNumber ");
querySen.AppendLine(" AND c.version = 'SubFG' ");
querySen.AppendLine(" ) ");
querySen.AppendLine(" ORDER BY a.serial_number ");
Dictionary<string, object> ht = new Dictionary<string, object>(1);
ht.Add("@serialNumber", serialNumber);
return httpClient.GetEntityList(querySen.ToString(), ht);
}
}
/// <summary>
/// 查询打印合格证条码需要信息
/// </summary>
/// <param name="serialNumber"></param>
/// <returns></returns>
public List<dynamic> GetPrintSN(string serialNumber)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.AppendLine("SELECT TOP 1 ");
SqlStringBuilder.AppendLine(" a.serial_number , ");
SqlStringBuilder.AppendLine(" b.car_no , ");
SqlStringBuilder.AppendLine(" c.vendor_part_no , ");
SqlStringBuilder.AppendLine(" c.subboard_qty , ");
SqlStringBuilder.AppendLine(" c.part_no , ");
SqlStringBuilder.AppendLine(" c.part_spec , ");
SqlStringBuilder.AppendLine(" c.part_spec2 , ");
SqlStringBuilder.AppendLine(" c.part_location , ");
SqlStringBuilder.AppendLine(" c.cust_part_no , ");
SqlStringBuilder.AppendLine(" c.part_no_3c , ");
SqlStringBuilder.AppendLine(" e.model_code , ");
SqlStringBuilder.AppendLine(" e.model_desc , ");
SqlStringBuilder.AppendLine(" e.model_alias , ");
SqlStringBuilder.AppendLine(" f.enum_desc , ");
SqlStringBuilder.AppendLine(" g.csn , ");
SqlStringBuilder.AppendLine(" g.prod_type , ");
SqlStringBuilder.AppendLine(" e.model_name , ");
SqlStringBuilder.AppendLine(" h.type_name , ");
SqlStringBuilder.AppendLine(" SUBSTRING(@serialNumber,19,4) AS number_T ,");
SqlStringBuilder.AppendLine(" SUBSTRING(@serialNumber,11,2) AS part_T ,");
SqlStringBuilder.AppendLine(" ( CONVERT([VARCHAR](10), GETDATE(), ( 120 )) ) AS ymd , ");
SqlStringBuilder.AppendLine(" ( CONVERT([VARCHAR](10), GETDATE(), ( 108 )) ) AS hms , ");
SqlStringBuilder.AppendLine(" ( CONVERT([VARCHAR](10), GETDATE(), ( 111 )) ) AS ymd2 ");
SqlStringBuilder.AppendLine("FROM dbo.g_workorder_sn a ");
SqlStringBuilder.AppendLine(" LEFT JOIN dbo.g_workorder_detail z ON a.wo_detail_id = z.ruid ");
SqlStringBuilder.AppendLine(" LEFT JOIN dbo.g_workorder b ON z.workorder_id = b.ruid ");
SqlStringBuilder.AppendLine(" LEFT JOIN dbo.sys_part c ON a.part_id = c.part_id ");
SqlStringBuilder.AppendLine(" LEFT JOIN dbo.sys_part d ON b.part_id = d.part_id ");
SqlStringBuilder.AppendLine(" LEFT JOIN dbo.sys_model e ON d.model_id = e.model_id ");
SqlStringBuilder.AppendLine(" LEFT JOIN dbo.sys_enum f ON c.part_location = f.enum_value ");
SqlStringBuilder.AppendLine(" AND f.enum_type = 'sys_part_location' ");
SqlStringBuilder.AppendLine(" LEFT JOIN dbo.g_sn_status g ON a.serial_number = g.serial_number ");
SqlStringBuilder.AppendLine(" LEFT JOIN dbo.sys_model_type h ON e.model_type_id = h.type_id ");
SqlStringBuilder.AppendLine("WHERE a.serial_number = @serialNumber ");
Dictionary<string, object> Params = new Dictionary<string, object>(1);
Params.Add("@serialNumber", serialNumber);
List<dynamic> dt = httpClient.GetEntityList(SqlStringBuilder.ToString(), Params);
return dt;
}
}
public bool UpdatePrintCount(string sn)
{
lock (httpClient)
{
string SqlString = "UPDATE dbo.g_workorder_sn SET printed =printed+1, update_userid=@userid, update_ymd=dbo.get_ymd(),update_hms=dbo.get_hms() WHERE serial_number=@sn ";
Dictionary<string, object> Params = new Dictionary<string, object>(2);
Params.Add("@sn", sn);
Params.Add("@userid", httpClient.userId);
return httpClient.Execute(SqlString, Params) == 1;
}
}
/// <summary>
/// 修改标签计数
/// </summary>
/// <returns></returns>
public string UpdatePrdQty(string sn)
{
try
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("UPDATE dbo.sys_part ");
SqlStringBuilder.Append("SET subboard_qty = subboard_qty + 1 ");
SqlStringBuilder.Append("WHERE part_id = ( SELECT part_id ");
SqlStringBuilder.Append(" FROM dbo.g_sn_status ");
SqlStringBuilder.Append(" WHERE serial_number = @sn ");
SqlStringBuilder.Append(" ) ");
Dictionary<string, object> param = new Dictionary<string, object>(1);
param.Add("@sn", sn);
object obj = httpClient.Execute(SqlStringBuilder.ToString(), param);
if (obj == null)
{
return "";
}
return obj.ToString();
}
catch
{
return "";
}
}
public List<dynamic> GetSNInfo(string sn)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT a.serial_number , ");
SqlStringBuilder.Append(" b.part_location , ");
SqlStringBuilder.Append(" b.cust_part_no , ");
SqlStringBuilder.Append(" c.enum_desc ");
SqlStringBuilder.Append("FROM dbo.g_sn_status a ");
SqlStringBuilder.Append(" LEFT JOIN sys_part b ON a.part_id = b.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_enum c ON b.part_location = c.enum_value ");
SqlStringBuilder.Append("WHERE a.serial_number = @sn ");
Dictionary<string, object> param = new Dictionary<string, object>(1);
param.Add("@sn", sn);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), param);
}
}
public List<dynamic> GetSendRobotList()
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP 10 ");
SqlStringBuilder.Append(" serial_number , ");
SqlStringBuilder.Append(" send_msg , ");
SqlStringBuilder.Append(" type_desc , ");
SqlStringBuilder.Append(" create_ymd , ");
SqlStringBuilder.Append(" create_hms ");
SqlStringBuilder.Append("FROM dbo.g_sn_send_robot ");
SqlStringBuilder.Append("ORDER BY create_ymd DESC , ");
SqlStringBuilder.Append(" create_hms DESC ");
return httpClient.GetEntityList(SqlStringBuilder.ToString());
}
}
public bool robotIsReady()
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT point_value FROM dbo.opc_point WHERE point_name = 'robotReadyRec' ");
object obj = httpClient.GetScalar(SqlStringBuilder.ToString());
if (string.IsNullOrEmpty(obj.ToString()))
{
return true;
}
else
{
return false;
}
}
public bool UpdateOPCPointRobot(string pointValue, string pointName)
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("UPDATE dbo.opc_point ");
querySen.AppendLine("SET point_value = @pointValue , ");
querySen.AppendLine(" point_flag1 = '101' ");
querySen.AppendLine("WHERE point_name = @pointName ");
Dictionary<string, object> ht = new Dictionary<string, object>(2);
ht.Add("@pointValue", pointValue);
ht.Add("@pointName", pointName);
int rows = httpClient.Execute(querySen.ToString(), ht);
if (rows > 0)
{
return true;
}
else
{
return false;
}
}
}
/// <summary>
/// 修改产品为静音房产品
/// </summary>
/// <param name="_serial_number"></param>
/// <returns></returns>
public bool UpdateSNStatus(string _serial_number)
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("UPDATE dbo.g_sn_status ");
SqlStringBuilder.Append("SET current_status = '8' ");
SqlStringBuilder.Append("WHERE serial_number = @_serial_number ");
Dictionary<string, object> ht = new Dictionary<string, object>(1);
ht.Add("@_serial_number", _serial_number);
int rows = httpClient.Execute(SqlStringBuilder.ToString(), ht);
if (rows > 0)
{
return true;
}
else
{
return false;
}
}
}
public bool insertSendRobot(string sn, string sendmsg, string typedesc)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO g_sn_send_robot ");
SqlStringBuilder.Append(" ( serial_number , ");
SqlStringBuilder.Append(" send_msg , ");
SqlStringBuilder.Append(" type_desc ");
SqlStringBuilder.Append(" ) ");
SqlStringBuilder.Append("VALUES ( @sn , ");
SqlStringBuilder.Append(" @sendmsg , ");
SqlStringBuilder.Append(" @typedesc ");
SqlStringBuilder.Append(" ) ");
Dictionary<string, object> Params = new Dictionary<string, object>(1);
Params.Add("@sn", sn);
Params.Add("@sendmsg", sendmsg);
Params.Add("@typedesc", typedesc);
return httpClient.Execute(SqlStringBuilder.ToString(), Params) > 0;
}
}
public bool updateStatus(string serial_number)
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("UPDATE dbo.g_sn_status ");
querySen.AppendLine("SET work_flag = 1 ,update_userid=@userid , ");
querySen.AppendLine(" out_pdline_time = GETDATE(),update_ymd=dbo.get_ymd(), update_hms=dbo.get_hms() ");
querySen.AppendLine("WHERE serial_number = @serial_number ");
Dictionary<string, object> ht = new Dictionary<string, object>(2);
ht.Add("@serial_number", serial_number);
ht.Add("@userid", httpClient.userId);
return httpClient.Execute(querySen.ToString(), ht) > 0;
}
}
public string ProdTrans(int vbcID, string serialNumber, int terminalID, int currentStatus, string stationType)
{
//List<StoreProcedureParameter> Parameters = new List<StoreProcedureParameter>();
//Parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@vbc_id", vbcID));
//Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@serial_number", serialNumber));
//Parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@terminal_id", terminalID));
//Parameters.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@current_status", currentStatus));
//Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@station_type", stationType));
//Parameters.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@tres", 500));
Dictionary<string, object> inParams = new Dictionary<string, object>();
inParams.Add("@vbc_id", vbcID);
inParams.Add("@serial_number", serialNumber);
inParams.Add("@terminal_id", terminalID);
inParams.Add("@current_status", currentStatus);
inParams.Add("@station_type", stationType);
Dictionary<string, object> outParams = new Dictionary<string, object>();
outParams.Add("@tres", "500");
Hashtable ht = httpClient.ExecuteSotreProcedure("dbo.sys_prod_trans", inParams, outParams);
if (!ht.ContainsKey("outParams"))
return string.Empty;
var res = JsonConvert.DeserializeObject<Dictionary<string, object>>(ht["outParams"].ToString());
return res["@tres"].ToString();
}
public bool UpdateCurrentStatus(string serial_number)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
// 标记为不良品
SqlStringBuilder.Append("UPDATE g_sn_status ");
SqlStringBuilder.Append("SET current_status = '1' ");
SqlStringBuilder.Append(" ,update_ymd = CONVERT(VARCHAR(10),GETDATE(),120) ");
SqlStringBuilder.Append(" ,update_hms = CONVERT(VARCHAR(10),GETDATE(),108) ");
SqlStringBuilder.Append(" ,update_userid = @userid ");
SqlStringBuilder.Append(" ,in_process_time = GETDATE() ");
SqlStringBuilder.Append("WHERE current_status = '0' ");
SqlStringBuilder.Append(" AND (serial_number = @serial_number); ");
Dictionary<string, object> Params = new Dictionary<string, object>(2);
Params.Add("@serial_number", serial_number);
Params.Add("@userid", httpClient.userId);
bool isUpdated = httpClient.Execute(SqlStringBuilder.ToString(), Params) > 0;
return isUpdated;
}
public bool instertFailItem(string sn, string operation, string no, string name, string result)
{
string sql = "INSERT INTO g_repair (serial_number,operation,seq,name,result)VALUES(@sn,@operation,@no,@name,@result)";
Dictionary<string, object> ht = new Dictionary<string, object>(5);
ht.Add("@sn", sn);
ht.Add("@operation", operation);
ht.Add("@no", no);
ht.Add("@name", name);
ht.Add("@result", result);
return httpClient.Execute(sql, ht) > 0;
}
/// <summary>
/// 下线校验数据
/// </summary>
public List<dynamic> OutPdlineCheck(int terminalID, string serial_number)
{
lock (httpClient)
{
if (terminalID <= 0)
{
return null;
}
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT a.serial_number AS str1 , ");
SqlStringBuilder.Append(" terminal_name AS str2 , ");
SqlStringBuilder.Append(" a.keydata_desc AS str3 , ");
SqlStringBuilder.Append(" '未采集' AS str4 ");
SqlStringBuilder.Append("FROM ( SELECT a.part_id , ");
SqlStringBuilder.Append(" b.serial_number , ");
SqlStringBuilder.Append(" a.terminal_id , ");
SqlStringBuilder.Append(" e.terminal_name , ");
SqlStringBuilder.Append(" a.keydata_id , ");
SqlStringBuilder.Append(" c.keydata_desc ");
SqlStringBuilder.Append(" FROM dbo.sys_part_keydata AS a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_sn_status AS b ON a.part_id = b.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_keydata AS c ON a.keydata_id = c.keydata_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_terminal AS e ON a.terminal_id = e.terminal_id ");
SqlStringBuilder.Append(" WHERE b.serial_number = @serial_number ");
SqlStringBuilder.Append(" ) AS a ");
SqlStringBuilder.Append(" LEFT JOIN ( SELECT serial_number , ");
SqlStringBuilder.Append(" terminal_id , ");
SqlStringBuilder.Append(" keydata_desc , ");
SqlStringBuilder.Append(" keydata_result ");
SqlStringBuilder.Append(" FROM dbo.g_sn_keydata ");
SqlStringBuilder.Append(" WHERE serial_number = @serial_number ");
SqlStringBuilder.Append(" AND keydata_result = 'P' ");
SqlStringBuilder.Append(" ) AS b ON b.terminal_id = a.terminal_id ");
SqlStringBuilder.Append(" AND b.keydata_desc = a.keydata_desc ");
SqlStringBuilder.Append("WHERE b.keydata_result IS NULL ");
SqlStringBuilder.Append("UNION ALL ");
SqlStringBuilder.Append("SELECT a.serial_number AS str1 , ");
SqlStringBuilder.Append(" terminal_name AS str2 , ");
SqlStringBuilder.Append(" part_spec AS str3 , ");
SqlStringBuilder.Append(" '未绑定' AS str4 ");
SqlStringBuilder.Append("FROM ( SELECT g.serial_number , ");
SqlStringBuilder.Append(" f.terminal_name , ");
SqlStringBuilder.Append(" d.part_spec , ");
SqlStringBuilder.Append(" d.part_id , ");
SqlStringBuilder.Append(" f.terminal_id ");
SqlStringBuilder.Append(" FROM dbo.sys_bom AS a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_bom_detail AS b ON a.bom_id = b.bom_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part AS c ON b.part_id = c.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part AS d ON b.item_part_id = d.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_process AS e ON b.process_id = e.process_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_terminal AS f ON e.process_id = f.process_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_sn_status AS g ON c.part_id = g.part_id ");
SqlStringBuilder.Append(" WHERE bom_type = '绑定' ");
SqlStringBuilder.Append(" AND g.serial_number = @serial_number ");
SqlStringBuilder.Append(" AND b.process_id IS NOT NULL ");
SqlStringBuilder.Append(" AND b.process_id <> 0 ");
SqlStringBuilder.Append(" AND b.enabled = 'Y' ");
SqlStringBuilder.Append(" ) AS a ");
SqlStringBuilder.Append(" LEFT JOIN ( SELECT serial_number , ");
SqlStringBuilder.Append(" kpsn , ");
SqlStringBuilder.Append(" item_part_id , ");
SqlStringBuilder.Append(" terminal_id ");
SqlStringBuilder.Append(" FROM dbo.g_sn_keyparts ");
SqlStringBuilder.Append(" WHERE serial_number = @serial_number ");
SqlStringBuilder.Append(" ) AS b ON b.terminal_id = a.terminal_id ");
SqlStringBuilder.Append(" AND a.part_id = b.item_part_id ");
SqlStringBuilder.Append("WHERE b.kpsn IS NULL ");
Dictionary<string, object> Params = new Dictionary<string, object>(1);
Params.Add("@terminal_id", terminalID);
Params.Add("@serial_number", serial_number);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params);
}
}
/// <summary>
/// 后排电检测
/// </summary>
public List<dynamic> OutPdlineCheckDJ(int terminalID, string serial_number)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP 1 ");
SqlStringBuilder.Append(" * ");
SqlStringBuilder.Append("FROM dbo.i_func_testdata ");
SqlStringBuilder.Append("WHERE 条码 = @serial_number ");
SqlStringBuilder.Append(" AND 设备名称 = '后排电检设备' ");
//AND [测试结果(P/F)]='P'
SqlStringBuilder.Append("ORDER BY 测试完成日期 + ' ' + 测试完成时间 DESC ");
Dictionary<string, object> Params = new Dictionary<string, object>(1);
Params.Add("@terminal_id", terminalID);
Params.Add("@serial_number", serial_number);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params);
}
}
/// <summary>
/// 前排视觉设备
/// </summary>
public List<dynamic> OutPdlineCheckSJYX(int terminalID, string serial_number)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP 1 ");
SqlStringBuilder.Append(" * ");
SqlStringBuilder.Append("FROM dbo.i_func_testdata ");
SqlStringBuilder.Append("WHERE 条码 = @serial_number ");
SqlStringBuilder.Append(" AND 设备名称 = '前排视觉设备' ");
//AND [测试结果(P/F)]='P'
SqlStringBuilder.Append("ORDER BY 测试完成日期 + ' ' + 测试完成时间 DESC ");
Dictionary<string, object> Params = new Dictionary<string, object>(1);
Params.Add("@terminal_id", terminalID);
Params.Add("@serial_number", serial_number);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params);
}
}
/// <summary>
/// 下线校验数据
/// </summary>
public List<dynamic> OutPdlineCheckDJSBR(int terminalID, string serial_number)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP 1 ");
SqlStringBuilder.Append(" * ");
SqlStringBuilder.Append("FROM dbo.i_func_testdata ");
SqlStringBuilder.Append("WHERE 条码 = @serial_number ");
SqlStringBuilder.Append(" AND 设备名称 = '前排SBR'");
SqlStringBuilder.Append("ORDER BY 测试完成日期 + ' ' + 测试完成时间 DESC ");
Dictionary<string, object> Params = new Dictionary<string, object>(1);
Params.Add("@terminal_id", terminalID);
Params.Add("@serial_number", serial_number);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params);
}
}
/// <summary>
/// 下线校验数据
/// </summary>
public List<dynamic> OutPdlineCheckIMS(int terminalID, string serial_number)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP 1 ");
SqlStringBuilder.Append(" * ");
SqlStringBuilder.Append("FROM dbo.i_func_testdata ");
SqlStringBuilder.Append("WHERE 条码 = @serial_number ");
SqlStringBuilder.Append(" AND 设备名称 = 'IMS电检设备' ");
SqlStringBuilder.Append("ORDER BY 测试完成日期 + ' ' + 测试完成时间 DESC ");
Dictionary<string, object> Params = new Dictionary<string, object>(1);
Params.Add("@terminal_id", terminalID);
Params.Add("@serial_number", serial_number);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params);
}
}
/// <summary>
/// 下线校验数据
/// </summary>
public List<dynamic> OutPdlineCheckQMDJC(int terminalID, string serial_number)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP 1 ");
SqlStringBuilder.Append(" * ");
SqlStringBuilder.Append("FROM dbo.i_b_djc_testdata ");
SqlStringBuilder.Append("WHERE 型号条码 = @serial_number ");
SqlStringBuilder.Append("ORDER BY 测试时间 DESC ");
Dictionary<string, object> Params = new Dictionary<string, object>(1);
Params.Add("@terminal_id", terminalID);
Params.Add("@serial_number", serial_number);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params);
}
}
/// <summary>
/// 下线校验数据
/// </summary>
public List<dynamic> OutPdlineCheckQMTLL(int terminalID, string serial_number)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP 1 ");
SqlStringBuilder.Append(" * ");
SqlStringBuilder.Append("FROM dbo.i_b_hdl_testdata ");
SqlStringBuilder.Append("WHERE 型号条码 = @serial_number ");
SqlStringBuilder.Append("ORDER BY 测试时间 DESC ");
Dictionary<string, object> Params = new Dictionary<string, object>(1);
Params.Add("@terminal_id", terminalID);
Params.Add("@serial_number", serial_number);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params);
}
}
/// <summary>
/// 下线校验数据
/// </summary>
public List<dynamic> OutPdlineCheckDJTLL(int terminalID, string serial_number)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP 1 ");
SqlStringBuilder.Append(" * ");
SqlStringBuilder.Append("FROM dbo.i_hdl_testdata ");
SqlStringBuilder.Append("WHERE 条码 = @serial_number ");
SqlStringBuilder.Append("ORDER BY 测试完成日期 + ' ' + 测试完成时间 DESC ");
Dictionary<string, object> Params = new Dictionary<string, object>(1);
Params.Add("@terminal_id", terminalID);
Params.Add("@serial_number", serial_number);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params);
}
}
/// <summary>
/// 下线校验数据
/// </summary>
public List<dynamic> OutPdlineCheckJYF(int terminalID, string serial_number)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP 1 ");
SqlStringBuilder.Append(" * ");
SqlStringBuilder.Append("FROM dbo.i_noise_testdata ");
SqlStringBuilder.Append("WHERE 条码 = @serial_number ");
SqlStringBuilder.Append("ORDER BY 测试完成日期 + ' ' + 测试完成时间 DESC ");
Dictionary<string, object> Params = new Dictionary<string, object>(1);
Params.Add("@terminal_id", terminalID);
Params.Add("@serial_number", serial_number);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params);
}
}
/// <summary>
/// QE产线下线校验数据
/// </summary>
public List<dynamic> OutPdlineCheckQEDJC(int terminalID, string serial_number)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP 1 ");
SqlStringBuilder.Append(" * ");
SqlStringBuilder.Append("FROM dbo.i_qe_djc_testdata ");
SqlStringBuilder.Append("WHERE 座椅条码 = @serial_number ");
SqlStringBuilder.Append("ORDER BY 测试时间 DESC ");
Dictionary<string, object> Params = new Dictionary<string, object>(1);
Params.Add("@terminal_id", terminalID);
Params.Add("@serial_number", serial_number);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params);
}
}
public List<dynamic> GetRFIDOperationType(int terminalID, string paramName)
{
lock (httpClient)
{
string sqlstring = "SELECT top 1 operation_type FROM dbo.sys_terminal_params WHERE terminal_id = @terminalID AND param_name = @paramName";
Dictionary<string, object> values = new Dictionary<string, object>(2);
values.Add("@terminalID", terminalID);
values.Add("@paramName", paramName);
return httpClient.GetEntityList(sqlstring.ToString(), values);
}
}
/// <summary>
/// 查询总成检查项
/// </summary>
public List<dynamic> GetOutPdlineDetectionData(string serial_number)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP 1 ");
SqlStringBuilder.Append(" * ");
SqlStringBuilder.Append("FROM dbo.g_outPdline_detection AS aa ");
SqlStringBuilder.Append(" INNER JOIN ( SELECT b.part_no , ");
SqlStringBuilder.Append(" c.model_name ");
SqlStringBuilder.Append(" FROM dbo.g_sn_status AS a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part AS b ON a.part_id = b.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_model AS c ON a.model_id = c.model_id ");
SqlStringBuilder.Append(" WHERE serial_number =@serial_number ");
SqlStringBuilder.Append(" ) AS bb ON aa.part_no = bb.part_no ");
SqlStringBuilder.Append(" AND aa.model_name = bb.model_name ");
Dictionary<string, object> Params = new Dictionary<string, object>(1);
Params.Add("@serial_number", serial_number);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params);
}
}
public bool setBindinginFormation(string barcode, int terminalID)
{
string sql = @"EXEC dbo.g_modify_bindingin_formation @barcode,@terminalID";
Dictionary<string, object> ht = new Dictionary<string, object>(2);
ht.Add("@barcode", barcode);
ht.Add("@terminalID", terminalID);
return httpClient.Execute(sql, ht) > 0;
}
/// <summary>
/// 查询不良类型列表
/// </summary>
public List<dynamic> getDefectList()
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT defect_id,defect_code,defect_desc,enabled FROM dbo.sys_defect WHERE enabled='Y'");
return httpClient.GetEntityList(SqlStringBuilder.ToString());
}
}
/// <summary>
/// 查询条码对应全部不良列表
/// </summary>
public List<dynamic> getSNDefect(string serialNumber, int terminalID)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT a.serial_number , ");
SqlStringBuilder.Append(" a.defect_id , ");
SqlStringBuilder.Append(" b.defect_desc , ");
SqlStringBuilder.Append(" a.terminal_id ");
SqlStringBuilder.Append("FROM dbo.g_sn_defect AS a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_defect AS b ON a.defect_id = b.defect_id ");
SqlStringBuilder.Append("WHERE terminal_id = @terminalID ");
SqlStringBuilder.Append(" AND serial_number = @serialNumber AND a.enabled='Y' ");
Dictionary<string, object> ht = new Dictionary<string, object>(2);
ht.Add("@serialNumber", serialNumber);
ht.Add("@terminalID", terminalID);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht);
}
}
/// <summary>
/// 查询拍照信息
/// </summary>
public List<dynamic> getPhoto(string serialNumber, int terminalID)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" SELECT TOP 1 * FROM dbo.g_sn_picture WHERE serial_number=@serialNumber AND terminal_id=@terminalID ORDER BY create_ymd DESC,create_hms DESC ");
Dictionary<string, object> ht = new Dictionary<string, object>(2);
ht.Add("@serialNumber", serialNumber);
ht.Add("@terminalID", terminalID);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht);
}
}
/// <summary>
/// 查询条码电检是否合格
/// </summary>
public bool getSNifunc(string serialNumber)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP 1 ");
SqlStringBuilder.Append(" [测试结果(P/F)] ");
SqlStringBuilder.Append("FROM dbo.i_func_testdata ");
SqlStringBuilder.Append("WHERE 座椅条形码 = @serialNumber ");
SqlStringBuilder.Append("ORDER BY 测试完成日期 DESC , ");
SqlStringBuilder.Append(" 测试完成时间 DESC; ");
Dictionary<string, object> ht = new Dictionary<string, object>(1);
ht.Add("@serialNumber", serialNumber);
List<dynamic> dt = httpClient.GetEntityList(SqlStringBuilder.ToString(), ht);
if (dt.Count > 0)
{
if (dt[0][0].ToString().Equals("F"))
{
return true;
}
}
return false;
}
}
/// <summary>
/// 查询条码对应的不良列表
/// </summary>
public List<dynamic> getSNDefect(string serialNumber, int terminalID, string DefectDesc)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT a.serial_number , ");
SqlStringBuilder.Append(" a.defect_id , ");
SqlStringBuilder.Append(" b.defect_desc , ");
SqlStringBuilder.Append(" a.terminal_id ");
SqlStringBuilder.Append("FROM dbo.g_sn_defect AS a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_defect AS b ON a.defect_id = b.defect_id ");
SqlStringBuilder.Append("WHERE terminal_id = @terminalID ");
SqlStringBuilder.Append(" AND serial_number = @serialNumber AND a.enabled='Y' AND b.defect_desc=@DefectDesc ");
Dictionary<string, object> ht = new Dictionary<string, object>(3);
ht.Add("@serialNumber", serialNumber);
ht.Add("@terminalID", terminalID);
ht.Add("@DefectDesc", DefectDesc);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht);
}
}
/// <summary>
/// 查询条码对应的不良列表
/// </summary>
public bool addSndefect(string serialNumber, int terminalID, string defectName)
{
lock (httpClient)
{
List<dynamic> dt = getSNDefect(serialNumber, terminalID, defectName);
if (dt.Count < 1)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" INSERT INTO dbo.g_sn_defect ");
SqlStringBuilder.Append(" ( serial_number , ");
SqlStringBuilder.Append(" defect_id , ");
SqlStringBuilder.Append(" terminal_id , ");
SqlStringBuilder.Append(" rp_status , ");
SqlStringBuilder.Append(" enabled , ");
SqlStringBuilder.Append(" create_userid , ");
SqlStringBuilder.Append(" create_ymd , ");
SqlStringBuilder.Append(" create_hms , ");
SqlStringBuilder.Append(" guid ");
SqlStringBuilder.Append(" ) ");
SqlStringBuilder.Append(" VALUES ( @serialNumber , ");
SqlStringBuilder.Append(" ( ISNULL(( SELECT defect_id ");
SqlStringBuilder.Append(" FROM dbo.sys_defect ");
SqlStringBuilder.Append(" WHERE defect_desc = @defectName ");
SqlStringBuilder.Append(" ), '') ) , ");
SqlStringBuilder.Append(" @terminalID, ");
SqlStringBuilder.Append(" 0, ");
SqlStringBuilder.Append(" 'Y', ");
SqlStringBuilder.Append(" @userid, ");
SqlStringBuilder.Append(" dbo.get_ymd(), ");
SqlStringBuilder.Append(" dbo.get_hms(), ");
SqlStringBuilder.Append(" NEWID() ");
SqlStringBuilder.Append(" ) ");
Dictionary<string, object> ht = new Dictionary<string, object>(4);
ht.Add("@serialNumber", serialNumber);
ht.Add("@terminalID", terminalID);
ht.Add("@defectName", defectName);
ht.Add("@userid", httpClient.userId);
int i = httpClient.Execute(SqlStringBuilder.ToString(), ht);
return i > 0 ? true : false;
}
else
{
return true;
}
}
}
/// <summary>
/// 删除不良列表数据
/// </summary>
public bool delSndefect(string serialNumber, int terminalID, string defectName)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("UPDATE dbo.g_sn_defect ");
SqlStringBuilder.Append("SET enabled = 'N',update_userid=@userid, ");
SqlStringBuilder.Append(" update_ymd=dbo.get_ymd(), update_hms=dbo.get_hms() ");
SqlStringBuilder.Append(" WHERE serial_number = @serialNumber ");
SqlStringBuilder.Append(" AND terminal_id = @terminalID ");
SqlStringBuilder.Append(" AND defect_id = ( SELECT TOP 1 ");
SqlStringBuilder.Append(" defect_id ");
SqlStringBuilder.Append(" FROM dbo.sys_defect ");
SqlStringBuilder.Append(" WHERE defect_desc = @defectName ");
SqlStringBuilder.Append(" ) ");
SqlStringBuilder.Append(" AND enabled = 'Y' ");
Dictionary<string, object> ht = new Dictionary<string, object>(4);
ht.Add("@serialNumber", serialNumber);
ht.Add("@terminalID", terminalID);
ht.Add("@defectName", defectName);
ht.Add("@userid", httpClient.userId);
int i = httpClient.Execute(SqlStringBuilder.ToString(), ht);
return i > 0 ? true : false;
}
}
/// <summary>
/// 根据工位编号和参数名称从系统中查询参数的设定值
/// </summary>
/// <param name="terminalId">工位编号</param>
/// <param name="paramName">参数名称</param>
/// <returns>参数值</returns>
public string GetTerminalParams(int terminalId, string paramName)
{
lock (httpClient)
{
string SqlString = "select param_value from dbo.sys_terminal_params where enabled='Y' and terminal_id=@p1 and param_name=@p2";
Dictionary<string, object> Params = new Dictionary<string, object>(2);
Params.Add("@p1", terminalId);
Params.Add("@p2", paramName);
object obj = httpClient.GetScalar(SqlString, Params);
return obj != null && obj != DBNull.Value ? obj.ToString() : string.Empty;
}
}
/// <summary>
/// 发送放行信号
/// </summary>
/// <param name="pointName"></param>
/// <param name="terminal_id"></param>
/// <param name="pointValue"></param>
/// <returns></returns>
public bool UpdateOPCPointValue(string pointName, int terminal_id, string pointValue)
{
lock (httpClient)
{
string sqlstring = @"update opc_point set point_value =@pointValue,point_flag1=101,update_time=GETDATE() where point_name IN (
SELECT param_value FROM sys_terminal_params(NOLOCK) WHERE param_name=@pointName AND terminal_id=@terminID ) ";
Dictionary<string, object> values = new Dictionary<string, object>(3);
values.Add("@pointName", pointName);
values.Add("@terminID", terminal_id);
values.Add("@pointValue", pointValue);
if (httpClient.Execute(sqlstring.ToString(), values) > 0)
{
return true;
}
else
{
return false;
}
}
}
#region 余姚不良校验
/// <summary>
/// 余姚查询不良类型列表
/// </summary>
public List<dynamic> getYYDefectList(int terminalID)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder();
SqlStringBuilder.Append("SELECT defect_id,defect_code,defect_desc,enabled FROM dbo.sys_defect WHERE enabled='Y' AND stage_id in (SELECT stage_id FROM dbo.sys_terminal WHERE terminal_id=" + terminalID + " ) ");
//Dictionary<string, object> values = new Dictionary<string, object>();
//values.Add("@terminalID", terminalID);
return httpClient.GetEntityList(SqlStringBuilder.ToString());
}
}
/// <summary>
/// 校验电检不良
/// </summary>
/// <param name="sn"></param>
/// <param name="terminalID"></param>
/// <returns></returns>
public bool insertDefectData(string sn, int terminalID)
{
string sql = @"EXEC [dbo].[insert_defect_data] @sn,@terminalID,@userID";
Dictionary<string, object> ht = new Dictionary<string, object>(3);
ht.Add("@sn", sn);
ht.Add("@terminalID", terminalID);
ht.Add("@userID", httpClient.userId);
return httpClient.Execute(sql, ht) > 0;
}
public bool getYYSNifunc(string serialNumber)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT TOP 1 ");
SqlStringBuilder.Append(" [测试结果(P/F)] ");
SqlStringBuilder.Append("FROM dbo.i_func_testdata ");
SqlStringBuilder.Append("WHERE 座椅条形码 = @serialNumber ");
SqlStringBuilder.Append("ORDER BY 测试完成日期 DESC , ");
SqlStringBuilder.Append(" 测试完成时间 DESC; ");
Dictionary<string, object> ht = new Dictionary<string, object>(1);
ht.Add("@serialNumber", serialNumber);
List<dynamic> dt = httpClient.GetEntityList(SqlStringBuilder.ToString(), ht);
if (dt.Count > 0)
{
if (dt[0][0].ToString().Equals("F"))
{
return true;
}
}
return false;
}
}
/// <summary>
/// 读取PLC值
/// </summary>
/// <returns></returns>
public string YYReadyPlc(string pointName, int terminalID)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" SELECT a.point_value FROM dbo.opc_point a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_terminal_params b ON a.point_name=b.param_value ");
SqlStringBuilder.Append(" WHERE param_name=@pointName AND terminal_id=@terminalID ");
Dictionary<string, object> ht = new Dictionary<string, object>(2);
ht.Add("@pointName", pointName);
ht.Add("@terminalID", terminalID);
object obj = httpClient.GetScalar(SqlStringBuilder.ToString(), ht);
return obj != null && obj != DBNull.Value ? obj.ToString() : string.Empty;
}
/// <summary>
/// //插入进静音房记录
/// </summary>
/// <param name="sn"></param>
/// <param name="terminal_id"></param>
/// <param name="current_status"></param>
/// <returns></returns>
public bool InsertSNTravel(string sn, int terminal_id, int current_status)
{
string sql = "SELECT TOP 1 1 FROM dbo.g_sn_travel WHERE serial_number='" + sn + "' AND current_status=8 ";
if (httpClient.Exists(sql) == false)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("INSERT INTO dbo.g_sn_travel ");
SqlStringBuilder.Append(" (ruid ,seq ,workorder ,wo_detail_id ,serial_number ,csn ,part_id , model_id , ");
SqlStringBuilder.Append(" pdline_id ,stage_id ,process_id ,terminal_id ,next_process ,wip_process , ");
SqlStringBuilder.Append(" current_status ,work_flag ,in_process_time ,qc_no ,qc_result ,rework_no , ");
SqlStringBuilder.Append(" out_process_time ,route_id ,in_pdline_time ,out_pdline_time ,shipping_time , ");
SqlStringBuilder.Append(" car_no ,slot_no ,prod_type ,remark ,enabled ,update_userid ,update_ymd , ");
SqlStringBuilder.Append(" update_hms ,create_userid , create_ymd ,create_hms , guid , timestamp) ");
SqlStringBuilder.Append("SELECT ruid ,seq ,workorder , wo_detail_id ,serial_number , csn , part_id , ");
SqlStringBuilder.Append(" model_id ,pdline_id ,stage_id , process_id ,@terminal_id, next_process , ");
SqlStringBuilder.Append(" wip_process ,@current_status ,work_flag ,in_process_time ,qc_no , qc_result ,rework_no , ");
SqlStringBuilder.Append(" GETDATE() , route_id ,in_pdline_time ,out_pdline_time ,shipping_time ,car_no , ");
SqlStringBuilder.Append(" slot_no ,prod_type ,remark ,enabled , @userID ,update_ymd ,update_hms , ");
SqlStringBuilder.Append(" create_userid ,create_ymd ,create_hms ,guid ,timestamp ");
SqlStringBuilder.Append("FROM dbo.g_sn_status ");
SqlStringBuilder.Append("WHERE serial_number=@sn ");
Dictionary<string, object> ht = new Dictionary<string, object>();
ht.Add("@sn", sn);
ht.Add("@terminal_id", terminal_id);
ht.Add("@current_status", current_status);
ht.Add("@userID", httpClient.userId);
if (httpClient.Execute(SqlStringBuilder.ToString(), ht) > 0)
{
return true;
}
else
{
return false;
}
}
return true;
}
/// <summary>
/// 此条码是否是不良品
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public bool IsCurrentSN(string input)
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("SELECT * ");
querySen.AppendLine("FROM dbo.g_sn_status(NOLOCK) ");
querySen.AppendLine("WHERE serial_number = @input AND current_status=1 ");
Dictionary<string, object> ht = new Dictionary<string, object>(1);
ht.Add("@input", input);
List<dynamic> dtTemp = httpClient.GetEntityList(querySen.ToString(), ht);
return dtTemp == null || dtTemp.Count == 0 ? false : true;
}
}
/// <summary>
/// 查询条码对应的不良列表
/// </summary>
public bool addYYSndefect(string serialNumber, int terminalID, string defectName)
{
lock (httpClient)
{
List<dynamic> dt = getSNDefect(serialNumber, terminalID, defectName);
if (dt.Count < 1)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" INSERT INTO dbo.g_sn_defect ");
SqlStringBuilder.Append(" ( serial_number , ");
SqlStringBuilder.Append(" defect_id , ");
SqlStringBuilder.Append(" terminal_id , ");
SqlStringBuilder.Append(" rp_status , ");
SqlStringBuilder.Append(" enabled , ");
SqlStringBuilder.Append(" create_userid , ");
SqlStringBuilder.Append(" create_ymd , ");
SqlStringBuilder.Append(" create_hms , ");
SqlStringBuilder.Append(" guid ");
SqlStringBuilder.Append(" ) ");
SqlStringBuilder.Append(" VALUES ( @serialNumber , ");
SqlStringBuilder.Append(" ( ISNULL(( SELECT defect_id ");
SqlStringBuilder.Append(" FROM dbo.sys_defect ");
SqlStringBuilder.Append(" WHERE defect_desc = @defectName AND stage_id=(SELECT stage_id FROM dbo.sys_terminal WHERE terminal_id=@terminalID) ");
SqlStringBuilder.Append(" ), '') ) , ");
SqlStringBuilder.Append(" @terminalID, ");
SqlStringBuilder.Append(" 0, ");
SqlStringBuilder.Append(" 'Y', ");
SqlStringBuilder.Append(" @userid, ");
SqlStringBuilder.Append(" dbo.get_ymd(), ");
SqlStringBuilder.Append(" dbo.get_hms(), ");
SqlStringBuilder.Append(" NEWID() ");
SqlStringBuilder.Append(" ) ");
Dictionary<string, object> ht = new Dictionary<string, object>(4);
ht.Add("@serialNumber", serialNumber);
ht.Add("@terminalID", terminalID);
ht.Add("@defectName", defectName);
ht.Add("@userid", httpClient.userId);
int i = httpClient.Execute(SqlStringBuilder.ToString(), ht);
return i > 0 ? true : false;
}
else
{
return true;
}
}
}
/// <summary>
/// 删除不良列表数据
/// </summary>
public bool delYYSndefect(string serialNumber, int terminalID, string defectName)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("UPDATE dbo.g_sn_defect ");
SqlStringBuilder.Append("SET enabled = 'N',update_userid=@userid, ");
SqlStringBuilder.Append(" update_ymd=dbo.get_ymd(), update_hms=dbo.get_hms() ");
SqlStringBuilder.Append(" WHERE serial_number = @serialNumber ");
SqlStringBuilder.Append(" AND terminal_id = @terminalID ");
SqlStringBuilder.Append(" AND defect_id = ( SELECT TOP 1 ");
SqlStringBuilder.Append(" defect_id ");
SqlStringBuilder.Append(" FROM dbo.sys_defect ");
SqlStringBuilder.Append(" WHERE defect_desc = @defectName AND stage_id=(SELECT stage_id FROM dbo.sys_terminal WHERE terminal_id=@terminalID) ");
SqlStringBuilder.Append(" ) ");
SqlStringBuilder.Append(" AND enabled = 'Y' ");
Dictionary<string, object> ht = new Dictionary<string, object>(4);
ht.Add("@serialNumber", serialNumber);
ht.Add("@terminalID", terminalID);
ht.Add("@defectName", defectName);
ht.Add("@userid", httpClient.userId);
int i = httpClient.Execute(SqlStringBuilder.ToString(), ht);
return i > 0 ? true : false;
}
}
/// <summary>
/// 把条码标记状态
/// </summary>
/// <param name="serialNumber">过程条码</param>
/// <returns>执行结果</returns>
public bool SetSNStatusNG(string serialNumber, int status)
{
string SqlString = "update dbo.g_sn_status set current_status=@status,update_userid=@userid,update_ymd=dbo.get_ymd(), update_hms=dbo.get_hms() where serial_number=@serial_number";
Dictionary<string, object> Params = new Dictionary<string, object>(2);
Params.Add("@serial_number", serialNumber);
Params.Add("@userid", httpClient.userId);
Params.Add("@status", status);
return httpClient.Execute(SqlString, Params) == 1;
}
#endregion
/// <summary>
/// 过站产出统计
/// </summary>
/// <param name="barcode"></param>
/// <param name="terminalID"></param>
/// <returns></returns>
public bool InOutputStationCount(string barcode, int terminalID)
{
string sql = @"EXEC dbo.sys_prod_count @barcode,@terminalID";
Dictionary<string, object> ht = new Dictionary<string, object>(2);
ht.Add("@barcode", barcode);
ht.Add("@terminalID", terminalID);
return httpClient.Execute(sql, ht) > 0;
}
#region 不良二级菜单
/// <summary>
/// 查询不良类型二级菜单
/// </summary>
public List<dynamic> getDefectDetail(int terminalID, string parent_desc)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" SELECT a.ruid, a.parent_defect_id,a.parent_defect_desc,a.item_defect_code,a.item_defect_desc ");
SqlStringBuilder.Append(" FROM dbo.sys_defect_detail a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_defect b ON a.parent_defect_id=b.defect_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_terminal c ON b.stage_id=c.stage_id ");
SqlStringBuilder.Append(" WHERE a.parent_defect_desc=@parent_desc AND a.enabled='Y' AND c.terminal_id=@terminalID ");
SqlStringBuilder.Append(" ORDER BY a.item_defect_code ");
Dictionary<string, object> ht = new Dictionary<string, object>(2);
ht.Add("@terminalID", terminalID);
ht.Add("@parent_desc", parent_desc);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht);
}
}
/// <summary>
/// 查询条码对应全部不良列表
/// </summary>
public List<dynamic> getSNDefectDetail(string serialNumber, int terminalID, string parent_desc)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT a.serial_number , ");
SqlStringBuilder.Append(" c.ruid , ");
SqlStringBuilder.Append(" c.item_defect_desc, ");
SqlStringBuilder.Append(" a.terminal_id ");
SqlStringBuilder.Append("FROM dbo.g_sn_defect AS a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_defect_detail c ON a.item_defect_id=c.ruid ");
SqlStringBuilder.Append("WHERE terminal_id = @terminalID and c.parent_defect_desc=@parent_desc ");
SqlStringBuilder.Append(" AND serial_number = @serialNumber and a.item_defect_id<>0 AND a.enabled='Y' ");
Dictionary<string, object> ht = new Dictionary<string, object>(3);
ht.Add("@serialNumber", serialNumber);
ht.Add("@terminalID", terminalID);
ht.Add("@parent_desc", parent_desc);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht);
}
}
/// <summary>
/// 查询条码对应全部不良列表
/// </summary>
public List<dynamic> getSNDefectDetail2(string serialNumber, int terminalID, string defectName, string parent_desc)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("SELECT a.serial_number , ");
SqlStringBuilder.Append(" c.ruid , ");
SqlStringBuilder.Append(" c.item_defect_desc, ");
SqlStringBuilder.Append(" a.terminal_id ");
SqlStringBuilder.Append("FROM dbo.g_sn_defect AS a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_defect_detail c ON a.item_defect_id=c.ruid ");
SqlStringBuilder.Append("WHERE terminal_id = @terminalID and c.parent_defect_desc=@parent_desc AND item_defect_desc=@defectName ");
SqlStringBuilder.Append(" AND serial_number = @serialNumber AND a.enabled='Y' ");
Dictionary<string, object> ht = new Dictionary<string, object>(3);
ht.Add("@serialNumber", serialNumber);
ht.Add("@terminalID", terminalID);
ht.Add("@parent_desc", parent_desc);
ht.Add("@defectName", defectName);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht);
}
}
/// <summary>
/// 查询条码对应的不良列表
/// </summary>
public bool addYYSndefectdetail(string serialNumber, int terminalID, string defectName, string parent_desc)
{
lock (httpClient)
{
List<dynamic> dt = getSNDefectDetail2(serialNumber, terminalID, defectName, parent_desc);
if (dt.Count < 1)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" INSERT INTO dbo.g_sn_defect ");
SqlStringBuilder.Append(" ( serial_number , ");
SqlStringBuilder.Append(" defect_id , ");
SqlStringBuilder.Append(" item_defect_id , ");
SqlStringBuilder.Append(" terminal_id , ");
SqlStringBuilder.Append(" rp_status , ");
SqlStringBuilder.Append(" enabled , ");
SqlStringBuilder.Append(" create_userid , ");
SqlStringBuilder.Append(" create_ymd , ");
SqlStringBuilder.Append(" create_hms , ");
SqlStringBuilder.Append(" guid ");
SqlStringBuilder.Append(" ) ");
SqlStringBuilder.Append(" VALUES ( @serialNumber , ");
SqlStringBuilder.Append(" ( ISNULL(( SELECT defect_id ");
SqlStringBuilder.Append(" FROM dbo.sys_defect ");
SqlStringBuilder.Append(" WHERE defect_desc = @parent_desc AND stage_id=(SELECT stage_id FROM dbo.sys_terminal WHERE terminal_id=@terminalID) ");
SqlStringBuilder.Append(" ), '') ) , ");
SqlStringBuilder.Append(" ( ISNULL(( SELECT ruid FROM dbo.sys_defect_detail WHERE parent_defect_id IN ( SELECT defect_id FROM dbo.sys_defect ");
SqlStringBuilder.Append(" WHERE stage_id IN ( SELECT stage_id FROM dbo.sys_terminal WHERE terminal_id = @terminalID ) AND defect_desc = @parent_desc ) ");
SqlStringBuilder.Append(" AND item_defect_desc = @defectName ");
SqlStringBuilder.Append(" ), '') ) , ");
SqlStringBuilder.Append(" @terminalID, ");
SqlStringBuilder.Append(" 0, ");
SqlStringBuilder.Append(" 'Y', ");
SqlStringBuilder.Append(" @userid, ");
SqlStringBuilder.Append(" dbo.get_ymd(), ");
SqlStringBuilder.Append(" dbo.get_hms(), ");
SqlStringBuilder.Append(" NEWID() ");
SqlStringBuilder.Append(" ) ");
Dictionary<string, object> ht = new Dictionary<string, object>();
ht.Add("@serialNumber", serialNumber);
ht.Add("@terminalID", terminalID);
ht.Add("@defectName", defectName);
ht.Add("@parent_desc", parent_desc);
ht.Add("@userid", httpClient.userId);
int i = httpClient.Execute(SqlStringBuilder.ToString(), ht);
return i > 0 ? true : false;
}
else
{
return true;
}
}
}
/// <summary>
/// 删除不良列表数据
/// </summary>
public bool delYYSndefectdetail(string serialNumber, int terminalID, string defectName, string parent_desc)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append("UPDATE dbo.g_sn_defect ");
SqlStringBuilder.Append("SET enabled = 'N',update_userid=@userid, ");
SqlStringBuilder.Append(" update_ymd=dbo.get_ymd(), update_hms=dbo.get_hms() ");
SqlStringBuilder.Append(" WHERE serial_number = @serialNumber ");
SqlStringBuilder.Append(" AND terminal_id = @terminalID ");
SqlStringBuilder.Append(" AND defect_id = ( SELECT TOP 1 ");
SqlStringBuilder.Append(" defect_id ");
SqlStringBuilder.Append(" FROM dbo.sys_defect ");
SqlStringBuilder.Append(" WHERE defect_desc = @parent_desc AND stage_id=(SELECT stage_id FROM dbo.sys_terminal WHERE terminal_id=@terminalID) ");
SqlStringBuilder.Append(" ) AND item_defect_id IN (SELECT ruid FROM dbo.sys_defect_detail WHERE item_defect_desc=@item_defect_desc) ");
SqlStringBuilder.Append(" AND enabled = 'Y' ");
Dictionary<string, object> ht = new Dictionary<string, object>();
ht.Add("@serialNumber", serialNumber);
ht.Add("@terminalID", terminalID);
ht.Add("@item_defect_desc", defectName);
ht.Add("@parent_desc", parent_desc);
ht.Add("@userid", httpClient.userId);
int i = httpClient.Execute(SqlStringBuilder.ToString(), ht);
return i > 0 ? true : false;
}
}
/// <summary>
/// 删除不良列表数据
/// </summary>
public bool delDefectDetail(string serialNumber, int terminalID, string parent_desc)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" DELETE ");
SqlStringBuilder.Append(" FROM dbo.g_sn_defect ");
SqlStringBuilder.Append(" WHERE serial_number =@SN ");
SqlStringBuilder.Append(" AND defect_id IN ( ");
SqlStringBuilder.Append(" SELECT TOP 1 ");
SqlStringBuilder.Append(" defect_id ");
SqlStringBuilder.Append(" FROM dbo.sys_defect ");
SqlStringBuilder.Append(" WHERE stage_id IN ( SELECT TOP 1 ");
SqlStringBuilder.Append(" stage_id ");
SqlStringBuilder.Append(" FROM dbo.sys_terminal ");
SqlStringBuilder.Append(" WHERE terminal_id =@terminalID ) AND defect_desc=@parent_desc ) ");
SqlStringBuilder.Append(" AND item_defect_id <> 0 ");
Dictionary<string, object> ht = new Dictionary<string, object>();
ht.Add("@SN", serialNumber);
ht.Add("@terminalID", terminalID);
ht.Add("@parent_desc", parent_desc);
ht.Add("@userid", httpClient.userId);
int i = httpClient.Execute(SqlStringBuilder.ToString(), ht);
return i > 0 ? true : false;
}
}
/// <summary>
/// 查询未绑定关键信息
/// </summary>
public List<dynamic> YYNGKpsnCheck(string serialNumber, int terminalID)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" SELECT a.serial_number AS str1 , ");
SqlStringBuilder.Append(" terminal_name AS str2 , ");
SqlStringBuilder.Append(" part_no AS str3 , ");
SqlStringBuilder.Append(" part_spec AS str4 , ");
SqlStringBuilder.Append(" '未绑定' AS str5 ");
SqlStringBuilder.Append(" FROM ( SELECT g.serial_number , ");
SqlStringBuilder.Append(" f.terminal_name , ");
SqlStringBuilder.Append(" d.part_no, ");
SqlStringBuilder.Append(" d.part_spec , ");
SqlStringBuilder.Append(" d.part_id , ");
SqlStringBuilder.Append(" f.terminal_id ");
SqlStringBuilder.Append(" FROM dbo.sys_bom AS a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_bom_detail(NOLOCK) AS b ON a.bom_id = b.bom_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part(NOLOCK) AS c ON b.part_id = c.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_part(NOLOCK) AS d ON b.item_part_id = d.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_process(NOLOCK) AS e ON b.process_id = e.process_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_terminal(NOLOCK) AS f ON e.process_id = f.process_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_sn_status(NOLOCK) AS g ON c.part_id = g.part_id ");
SqlStringBuilder.Append(" WHERE bom_type = '绑定' ");
SqlStringBuilder.Append(" AND g.serial_number =@serialNumber ");
SqlStringBuilder.Append(" AND b.process_id IS NOT NULL ");
SqlStringBuilder.Append(" AND b.process_id <> 0 ");
SqlStringBuilder.Append(" AND b.enabled = 'Y' AND f.pdline_id in (select pdline_id from sys_terminal where terminal_id in (@terminalID)) ");
SqlStringBuilder.Append(" ) AS a ");
SqlStringBuilder.Append(" LEFT JOIN ( SELECT serial_number , ");
SqlStringBuilder.Append(" kpsn , ");
SqlStringBuilder.Append(" item_part_id , ");
SqlStringBuilder.Append(" terminal_id ");
SqlStringBuilder.Append(" FROM dbo.g_sn_keyparts(NOLOCK) ");
SqlStringBuilder.Append(" WHERE serial_number = @serialNumber ");
SqlStringBuilder.Append(" ) AS b ON b.terminal_id = a.terminal_id ");
SqlStringBuilder.Append(" AND a.part_id = b.item_part_id ");
SqlStringBuilder.Append(" WHERE b.kpsn IS NULL order by str2 ");
Dictionary<string, object> ht = new Dictionary<string, object>();
ht.Add("@serialNumber", serialNumber);
ht.Add("@terminalID", terminalID);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht);
}
}
/// <summary>
/// 查询未采集力值
/// </summary>
/// <param name="serialNumber"></param>
/// <returns></returns>
public List<dynamic> YYNGKeyDataCheck(string serialNumber, int terminalID)
{
lock (httpClient)
{
StringBuilder SqlStringBuilder = new StringBuilder(1024);
SqlStringBuilder.Append(" SELECT a.serial_number AS str1 , ");
SqlStringBuilder.Append(" terminal_name AS str2 , ");
SqlStringBuilder.Append(" a.keydata_name AS str3, ");
SqlStringBuilder.Append(" a.keydata_desc AS str4 , ");
SqlStringBuilder.Append(" '未采集' AS str5 ");
SqlStringBuilder.Append(" FROM ( SELECT a.part_id , ");
SqlStringBuilder.Append(" b.serial_number , ");
SqlStringBuilder.Append(" a.terminal_id , ");
SqlStringBuilder.Append(" e.terminal_name , ");
SqlStringBuilder.Append(" a.keydata_id , ");
SqlStringBuilder.Append(" c.keydata_name, ");
SqlStringBuilder.Append(" c.keydata_desc ");
SqlStringBuilder.Append(" FROM dbo.sys_part_keydata(NOLOCK) AS a ");
SqlStringBuilder.Append(" LEFT JOIN dbo.g_sn_status(NOLOCK) AS b ON a.part_id = b.part_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_keydata(NOLOCK) AS c ON a.keydata_id = c.keydata_id ");
SqlStringBuilder.Append(" LEFT JOIN dbo.sys_terminal(NOLOCK) AS e ON a.terminal_id = e.terminal_id ");
SqlStringBuilder.Append(" WHERE b.serial_number =@serialNumber AND e.pdline_id in (select pdline_id from sys_terminal where terminal_id in (@terminalID)) ");
SqlStringBuilder.Append(" ) AS a ");
SqlStringBuilder.Append(" LEFT JOIN ( SELECT serial_number , ");
SqlStringBuilder.Append(" terminal_id , ");
SqlStringBuilder.Append(" keydata_desc , ");
SqlStringBuilder.Append(" keydata_result ");
SqlStringBuilder.Append(" FROM dbo.g_sn_keydata(NOLOCK) ");
SqlStringBuilder.Append(" WHERE serial_number =@serialNumber ");
SqlStringBuilder.Append(" AND keydata_result = 'P' ");
SqlStringBuilder.Append(" ) AS b ON b.terminal_id = a.terminal_id ");
SqlStringBuilder.Append(" AND b.keydata_desc = a.keydata_desc ");
SqlStringBuilder.Append(" WHERE b.keydata_result IS NULL ");
Dictionary<string, object> ht = new Dictionary<string, object>();
ht.Add("@serialNumber", serialNumber);
ht.Add("@terminalID", terminalID);
return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht);
}
}
/// <summary>
/// 根据关键件查找过程条码
/// </summary>
/// <param name="terminalID"></param>
/// <returns></returns>
public string isCheckSN(string kpsn)
{
lock (httpClient)
{
StringBuilder querySen = new StringBuilder(1024);
querySen.AppendLine("SELECT TOP 1 serial_number FROM dbo.g_sn_keyparts(NOLOCK) WHERE kpsn=@kpsn ");
Dictionary<string, object> ht = new Dictionary<string, object>(1);
ht.Add("@kpsn", kpsn);
object obj = httpClient.GetScalar(querySen.ToString(), ht);
return obj != null ? obj.ToString().ToUpper() : string.Empty;
}
}
#endregion
}
}