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; } } /// /// 根据总成零件号和工站编号获取本工站需要绑定的关键零件信息 /// /// /// /// public List 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()); } } /// /// 根据总成零件号和工站编号获取本工站需要绑定的关键零件信息 /// /// /// /// public List 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 ht = new Dictionary(1); ht.Add("@paramName", paramName); object obj = httpClient.GetScalar(querySen.ToString(), ht); return obj != null && obj != DBNull.Value ? obj.ToString() : string.Empty; } } /// /// 查询 KPSN 是否使用过 /// /// KPSN /// KPSN 是否使用过 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 Params = new Dictionary(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 ht = new Dictionary(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; } } /// /// 插入 KPSN 数据 /// /// 过程条码 /// KPSN /// KPSN 的零件号 /// KPSN 版本 /// KPSN 位置 /// 工站编号 /// public bool InsertKPSN(string sn, string kpsn, int item_part_id, string version, string location, int terminalID) { lock (httpClient) { Dictionary Values = new Dictionary(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 Values = new Dictionary(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 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 ht = new Dictionary(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 ht = new Dictionary(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 ht = new Dictionary(3); ht.Add("@serial_number", serial_number); ht.Add("@pdlineID", pdlineID); ht.Add("@userid", httpClient.userId); return httpClient.Execute(querySen.ToString(), ht) > 0; } } /// /// 根据条码(总成零件号)和工站编号获取本工站需要采集的关键数据 /// /// 条码 /// 工站编号 /// 查询到的相应产品配置 public List 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 Params = new Dictionary(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 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()); } } /// /// 更新关键数据结果 /// /// /// /// 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 ht = new Dictionary(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 Params = new Dictionary(1); Params.Add("@sn", sn); List dt = httpClient.GetEntityList(querySen.ToString(), Params); if (dt.Count <= 0) return false; return dt[0][0].ToString().ToUpper() == "P" ? true : false; } ///// ///// 检查数据表是否有效 ///// ///// ///// //public bool CheckListInvalid(List 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 ht = new Dictionary(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 ht = new Dictionary(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 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 ht = new Dictionary(1); ht.Add("@part_no", part_no); return httpClient.GetEntityList(querySen.ToString(), ht); } } public List 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 ht = new Dictionary(1); ht.Add("@serialNumber", serialNumber); return httpClient.GetEntityList(querySen.ToString(), ht); } } /// /// 查询打印合格证条码需要信息 /// /// /// public List 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 Params = new Dictionary(1); Params.Add("@serialNumber", serialNumber); List 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 Params = new Dictionary(2); Params.Add("@sn", sn); Params.Add("@userid", httpClient.userId); return httpClient.Execute(SqlString, Params) == 1; } } /// /// 修改标签计数 /// /// 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 param = new Dictionary(1); param.Add("@sn", sn); object obj = httpClient.Execute(SqlStringBuilder.ToString(), param); if (obj == null) { return ""; } return obj.ToString(); } catch { return ""; } } public List 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 param = new Dictionary(1); param.Add("@sn", sn); return httpClient.GetEntityList(SqlStringBuilder.ToString(), param); } } public List 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 ht = new Dictionary(2); ht.Add("@pointValue", pointValue); ht.Add("@pointName", pointName); int rows = httpClient.Execute(querySen.ToString(), ht); if (rows > 0) { return true; } else { return false; } } } /// /// 修改产品为静音房产品 /// /// /// 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 ht = new Dictionary(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 Params = new Dictionary(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 ht = new Dictionary(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 Parameters = new List(); //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 inParams = new Dictionary(); 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 outParams = new Dictionary(); 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>(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 Params = new Dictionary(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 ht = new Dictionary(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; } /// /// 下线校验数据 /// public List 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 Params = new Dictionary(1); Params.Add("@terminal_id", terminalID); Params.Add("@serial_number", serial_number); return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params); } } /// /// 后排电检测 /// public List 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 Params = new Dictionary(1); Params.Add("@terminal_id", terminalID); Params.Add("@serial_number", serial_number); return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params); } } /// /// 前排视觉设备 /// public List 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 Params = new Dictionary(1); Params.Add("@terminal_id", terminalID); Params.Add("@serial_number", serial_number); return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params); } } /// /// 下线校验数据 /// public List 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 Params = new Dictionary(1); Params.Add("@terminal_id", terminalID); Params.Add("@serial_number", serial_number); return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params); } } /// /// 下线校验数据 /// public List 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 Params = new Dictionary(1); Params.Add("@terminal_id", terminalID); Params.Add("@serial_number", serial_number); return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params); } } /// /// 下线校验数据 /// public List 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 Params = new Dictionary(1); Params.Add("@terminal_id", terminalID); Params.Add("@serial_number", serial_number); return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params); } } /// /// 下线校验数据 /// public List 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 Params = new Dictionary(1); Params.Add("@terminal_id", terminalID); Params.Add("@serial_number", serial_number); return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params); } } /// /// 下线校验数据 /// public List 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 Params = new Dictionary(1); Params.Add("@terminal_id", terminalID); Params.Add("@serial_number", serial_number); return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params); } } /// /// 下线校验数据 /// public List 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 Params = new Dictionary(1); Params.Add("@terminal_id", terminalID); Params.Add("@serial_number", serial_number); return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params); } } /// /// QE产线下线校验数据 /// public List 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 Params = new Dictionary(1); Params.Add("@terminal_id", terminalID); Params.Add("@serial_number", serial_number); return httpClient.GetEntityList(SqlStringBuilder.ToString(), Params); } } public List 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 values = new Dictionary(2); values.Add("@terminalID", terminalID); values.Add("@paramName", paramName); return httpClient.GetEntityList(sqlstring.ToString(), values); } } /// /// 查询总成检查项 /// public List 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 Params = new Dictionary(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 ht = new Dictionary(2); ht.Add("@barcode", barcode); ht.Add("@terminalID", terminalID); return httpClient.Execute(sql, ht) > 0; } /// /// 查询不良类型列表 /// public List 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()); } } /// /// 查询条码对应全部不良列表 /// public List 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 ht = new Dictionary(2); ht.Add("@serialNumber", serialNumber); ht.Add("@terminalID", terminalID); return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht); } } /// /// 查询拍照信息 /// public List 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 ht = new Dictionary(2); ht.Add("@serialNumber", serialNumber); ht.Add("@terminalID", terminalID); return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht); } } /// /// 查询条码电检是否合格 /// 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 ht = new Dictionary(1); ht.Add("@serialNumber", serialNumber); List dt = httpClient.GetEntityList(SqlStringBuilder.ToString(), ht); if (dt.Count > 0) { if (dt[0][0].ToString().Equals("F")) { return true; } } return false; } } /// /// 查询条码对应的不良列表 /// public List 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 ht = new Dictionary(3); ht.Add("@serialNumber", serialNumber); ht.Add("@terminalID", terminalID); ht.Add("@DefectDesc", DefectDesc); return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht); } } /// /// 查询条码对应的不良列表 /// public bool addSndefect(string serialNumber, int terminalID, string defectName) { lock (httpClient) { List 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 ht = new Dictionary(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; } } } /// /// 删除不良列表数据 /// 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 ht = new Dictionary(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; } } /// /// 根据工位编号和参数名称从系统中查询参数的设定值 /// /// 工位编号 /// 参数名称 /// 参数值 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 Params = new Dictionary(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; } } /// /// 发送放行信号 /// /// /// /// /// 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 values = new Dictionary(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 余姚不良校验 /// /// 余姚查询不良类型列表 /// public List 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 values = new Dictionary(); //values.Add("@terminalID", terminalID); return httpClient.GetEntityList(SqlStringBuilder.ToString()); } } /// /// 校验电检不良 /// /// /// /// public bool insertDefectData(string sn, int terminalID) { string sql = @"EXEC [dbo].[insert_defect_data] @sn,@terminalID,@userID"; Dictionary ht = new Dictionary(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 ht = new Dictionary(1); ht.Add("@serialNumber", serialNumber); List dt = httpClient.GetEntityList(SqlStringBuilder.ToString(), ht); if (dt.Count > 0) { if (dt[0][0].ToString().Equals("F")) { return true; } } return false; } } /// /// 读取PLC值 /// /// 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 ht = new Dictionary(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; } /// /// //插入进静音房记录 /// /// /// /// /// 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 ht = new Dictionary(); 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; } /// /// 此条码是否是不良品 /// /// /// 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 ht = new Dictionary(1); ht.Add("@input", input); List dtTemp = httpClient.GetEntityList(querySen.ToString(), ht); return dtTemp == null || dtTemp.Count == 0 ? false : true; } } /// /// 查询条码对应的不良列表 /// public bool addYYSndefect(string serialNumber, int terminalID, string defectName) { lock (httpClient) { List 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 ht = new Dictionary(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; } } } /// /// 删除不良列表数据 /// 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 ht = new Dictionary(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; } } /// /// 把条码标记状态 /// /// 过程条码 /// 执行结果 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 Params = new Dictionary(2); Params.Add("@serial_number", serialNumber); Params.Add("@userid", httpClient.userId); Params.Add("@status", status); return httpClient.Execute(SqlString, Params) == 1; } #endregion /// /// 过站产出统计 /// /// /// /// public bool InOutputStationCount(string barcode, int terminalID) { string sql = @"EXEC dbo.sys_prod_count @barcode,@terminalID"; Dictionary ht = new Dictionary(2); ht.Add("@barcode", barcode); ht.Add("@terminalID", terminalID); return httpClient.Execute(sql, ht) > 0; } #region 不良二级菜单 /// /// 查询不良类型二级菜单 /// public List 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 ht = new Dictionary(2); ht.Add("@terminalID", terminalID); ht.Add("@parent_desc", parent_desc); return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht); } } /// /// 查询条码对应全部不良列表 /// public List 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 ht = new Dictionary(3); ht.Add("@serialNumber", serialNumber); ht.Add("@terminalID", terminalID); ht.Add("@parent_desc", parent_desc); return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht); } } /// /// 查询条码对应全部不良列表 /// public List 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 ht = new Dictionary(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); } } /// /// 查询条码对应的不良列表 /// public bool addYYSndefectdetail(string serialNumber, int terminalID, string defectName, string parent_desc) { lock (httpClient) { List 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 ht = new Dictionary(); 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; } } } /// /// 删除不良列表数据 /// 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 ht = new Dictionary(); 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; } } /// /// 删除不良列表数据 /// 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 ht = new Dictionary(); 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; } } /// /// 查询未绑定关键信息 /// public List 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 ht = new Dictionary(); ht.Add("@serialNumber", serialNumber); ht.Add("@terminalID", terminalID); return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht); } } /// /// 查询未采集力值 /// /// /// public List 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 ht = new Dictionary(); ht.Add("@serialNumber", serialNumber); ht.Add("@terminalID", terminalID); return httpClient.GetEntityList(SqlStringBuilder.ToString(), ht); } } /// /// 根据关键件查找过程条码 /// /// /// 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 ht = new Dictionary(1); ht.Add("@kpsn", kpsn); object obj = httpClient.GetScalar(querySen.ToString(), ht); return obj != null ? obj.ToString().ToUpper() : string.Empty; } } #endregion } }