|
|
using Mesnac.Compressor.Data;
|
|
|
using Mesnac.Compressor.Entity;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Data;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
|
|
|
namespace Mesnac.Compressor.Station
|
|
|
{
|
|
|
public class Common:BasePLC
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 需要条码绑定时用这个函数
|
|
|
/// </summary>
|
|
|
/// <param name="RFID"></param>
|
|
|
/// <param name="barcode">系统内部生成的条码</param>
|
|
|
/// <param name="semibarcode">物料上面扫的条码</param>
|
|
|
/// <param name="stationID"></param>
|
|
|
/// <param name="OKNG"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool UpdateTray(string RFID, string barcode, string semibarcode,string stationID,int OKNG)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
DbHandler dbHelper = new DbHandler();
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
sb.Append("UPDATE dbo.T_RP_WorkTrayRealTimeInfo SET ");
|
|
|
sb.Append("barCode='").Append(barcode).Append("',");
|
|
|
sb.Append("SemiBarcode='").Append(semibarcode).Append("',");
|
|
|
sb.Append("CurrentStation='").Append(stationID).Append("',");
|
|
|
sb.Append("State='").Append(OKNG.ToString()).Append("',");
|
|
|
sb.Append("updateTime='").Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Append("' ");
|
|
|
sb.Append("WHERE RFIDNum='").Append(RFID).Append("'");
|
|
|
dbHelper.ExecSql(sb.ToString());
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
catch
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
/// <param name="RFID"></param>
|
|
|
/// <param name="barcode"></param>
|
|
|
/// <param name="stationID"></param>
|
|
|
/// <param name="OKNG"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool UpdateTray(string RFID, string barcode, string stationID, int OKNG)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
DbHandler dbHelper = new DbHandler();
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
sb.Append("UPDATE dbo.T_RP_WorkTrayRealTimeInfo SET ");
|
|
|
sb.Append("barCode='").Append(barcode).Append("',");
|
|
|
sb.Append("CurrentStation='").Append(stationID).Append("',");
|
|
|
sb.Append("State='").Append(OKNG.ToString()).Append("',");
|
|
|
sb.Append("updateTime='").Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")).Append("' ");
|
|
|
sb.Append("WHERE RFIDNum='").Append(RFID).Append("'");
|
|
|
dbHelper.ExecSql(sb.ToString());
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
catch
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 重投更新条码信息,重投需要根据拆解时的指定工位来
|
|
|
/// </summary>
|
|
|
/// <param name="RFID"></param>
|
|
|
/// <param name="barcode"></param>
|
|
|
/// <param name="stationID"></param>
|
|
|
/// <param name="OKNG"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool UpdateTrayChongtou(string RFID, string barcode)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
DbHandler db = new DbHandler();
|
|
|
try
|
|
|
{
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
sb.Append("EXEC SP_Pro_ChongTou '");
|
|
|
sb.Append(RFID).Append("','");
|
|
|
sb.Append(barcode).Append("'");
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
return Convert.ToInt32(db.dbHelper.ToScalar()) == 0;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public bool InsertHistoryTray(string RFID, string barcode, string stationid)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
sb.Append("INSERT INTO dbo.T_RP_WorkTrayHistoryInfo(barCode,RFIDNum,CurrentStation) VALUES('");
|
|
|
sb.Append(barcode).Append("', '").Append(RFID).Append("', '").Append(stationid).Append("')");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.ExecSql(sb.ToString());
|
|
|
return true;
|
|
|
}
|
|
|
catch
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 通过壳体条码,查找内部M主条码
|
|
|
/// </summary>
|
|
|
/// <param name="semibarcode"></param>
|
|
|
/// <returns></returns>
|
|
|
public string GetMainBarcode(string semibarcode)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append("select top(1)barcode from T_SY_TraceState ");
|
|
|
sb.Append(" where SemiBarcode_A='").Append(semibarcode).Append("' order by BeginTime desc");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
var obj = db.dbHelper.ToScalar();
|
|
|
if (obj != null)
|
|
|
{
|
|
|
return obj.ToString();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return "";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("获取系统条码语句错误:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
}
|
|
|
public string GetCurrentStationByRFID(string RFID)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append("SELECT CurrentStation FROM dbo.T_RP_WorkTrayRealTimeInfo ");
|
|
|
sb.Append(" where RFIDNum='").Append(RFID).Append("'");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
var obj = db.dbHelper.ToScalar();
|
|
|
if (obj != null)
|
|
|
{
|
|
|
return obj.ToString();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return "";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("GetCurrentStationByRFID获取当前工位语句错误:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
return "";
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
/// <param name="RFID"></param>
|
|
|
/// <returns></returns>
|
|
|
public string GetTraySemiBarcode(string RFID)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append("select semibarcode from T_RP_WorkTrayRealTimeInfo ");
|
|
|
sb.Append(" where RFIDNum='").Append(RFID).Append("'");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
var obj = db.dbHelper.ToScalar();
|
|
|
if (obj != null)
|
|
|
{
|
|
|
return obj.ToString();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return "";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("获取条码语句错误:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 判断数据是否数已经上传
|
|
|
/// </summary>
|
|
|
/// <param name="station"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool CheckNewData(StationInfo station, string barcode)
|
|
|
{
|
|
|
return true;
|
|
|
if (string.IsNullOrEmpty(barcode))
|
|
|
{
|
|
|
barcode = GetTraySemiBarcode(station.Data.RFIDNo);
|
|
|
}
|
|
|
if (string.IsNullOrEmpty(barcode))
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Warn("CheckNewData-" + station.StationCode + " 通过RFID号:" + station.Data.RFIDNo + "未找到对应条码");
|
|
|
return false;
|
|
|
}
|
|
|
station.Data.semibacode = barcode;
|
|
|
|
|
|
if (!JuadgeMaskID(barcode, station.Data.MaskID.ToString(), station.TableName))
|
|
|
{
|
|
|
//ICSharpCode.Core.LoggingService.Debug("工位:" + station.StationCode + "的RFID:" + station.Data.RFIDNo + "数据已上传。条码号:" + barcode + " 任务号:" + station.Data.MaskID.ToString());
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
public void SaveData(StationInfo station)
|
|
|
{
|
|
|
SqlHelper sh = new SqlHelper();
|
|
|
DbHandler db = new DbHandler();
|
|
|
|
|
|
//获取系统A条码
|
|
|
|
|
|
string barcode = GetTraySemiBarcode(station.Data.RFIDNo);
|
|
|
//获取系统M码
|
|
|
string Mainbarcode = GetMainBarcode(barcode);
|
|
|
string martercode = station.Data.MaterialBarcode;
|
|
|
if (string.IsNullOrEmpty(barcode))
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Warn(station.StationCode + " 通过RFID号:" + station.Data.RFIDNo + "未找到对应条码" + barcode);
|
|
|
return;
|
|
|
}
|
|
|
station.Data.semibacode = barcode;
|
|
|
station.Data.MainBarcode = Mainbarcode;
|
|
|
ICSharpCode.Core.LoggingService.Warn("开始更新当前工位信息:" + station.StationCode + " RFID号:" + station.Data.RFIDNo + "产品码:" + station.Data.semibacode + "主线码:" + station.Data.MainBarcode);
|
|
|
|
|
|
UpdateTraceStation(station.stationID, Mainbarcode);
|
|
|
//支线条码
|
|
|
if (station.Data.MaterialBarcodeUpdate)
|
|
|
{
|
|
|
station.Data.semibacode = barcode;
|
|
|
station.Data.MainBarcode = Mainbarcode;
|
|
|
station.Data.MaterialBarcode = martercode;
|
|
|
if (station.Data.MaterialBarcode != "")
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Warn("开始更新物料信息:" + station.StationCode + " RFID号:" + station.Data.RFIDNo + "产品码:" + station.Data.semibacode + "主线码:" + station.Data.MainBarcode);
|
|
|
UpdateMaterialCode(station);
|
|
|
}
|
|
|
ICSharpCode.Core.LoggingService.Warn("开始上传支线信息:" + station.StationCode + " RFID号:" + station.Data.RFIDNo + "产品码:" + station.Data.semibacode + "主线码:" + station.Data.MainBarcode);
|
|
|
updateSubInfo(station);
|
|
|
}
|
|
|
|
|
|
//更新当前工位
|
|
|
///这里要看看换线是否会重复插入数据
|
|
|
if (station.Data.BarcodeUpdate)
|
|
|
{
|
|
|
if (station.IfMainline)
|
|
|
{
|
|
|
UpdateTraceBarcodeStation(station);
|
|
|
}
|
|
|
//updatebarcode(station);
|
|
|
}
|
|
|
|
|
|
//插入新数据
|
|
|
string InsertSql = sh.DataInsertSql2(station);
|
|
|
db.ExecSql(InsertSql);
|
|
|
|
|
|
|
|
|
|
|
|
//如果是重投品,跟新重投次数
|
|
|
//if (station.Data.Restart && !string.IsNullOrEmpty(station.Data.ProductBarcode))
|
|
|
//{
|
|
|
// UpdaterestartCount(station.Data.ProductBarcode);
|
|
|
// ICSharpCode.Core.LoggingService.Debug("更新重投次数成功");
|
|
|
//}
|
|
|
|
|
|
//不合格插入不合格工位
|
|
|
if (station.Data.ProductOkNg == 2)
|
|
|
{
|
|
|
UpdateTraceNgStation(station);
|
|
|
//UnbandTray(station);
|
|
|
}
|
|
|
//更新托盘信息
|
|
|
UpdateTray(station.Data.RFIDNo, Mainbarcode, station.Data.semibacode, station.stationID, station.Data.ProductOkNg);
|
|
|
|
|
|
ICSharpCode.Core.LoggingService.Debug("工位:" + station.StationCode + " 保存数据成功。托盘号:" + station.Data.RFIDNo);
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
///
|
|
|
/// </summary>
|
|
|
public void SaveStationData(StationInfo station, StationType stationType)
|
|
|
{
|
|
|
switch (stationType)
|
|
|
{
|
|
|
case StationType.FirstStation:
|
|
|
SaveData(station);
|
|
|
break;
|
|
|
case StationType.NormarlStation:
|
|
|
SaveData(station);
|
|
|
break;
|
|
|
case StationType.ChangeLineStation:
|
|
|
SaveData(station);
|
|
|
break;
|
|
|
case StationType.LineEnd:
|
|
|
SaveData(station);
|
|
|
break;
|
|
|
default:
|
|
|
SaveData(station);
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
///上传支线信息
|
|
|
private void updateSubInfo(StationInfo station)
|
|
|
{
|
|
|
foreach (var sub in station.Data.subLineList)
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(sub.barcode))
|
|
|
{
|
|
|
//判断是否存在信息,存在则更新
|
|
|
ICSharpCode.Core.LoggingService.Warn("上传支线信息:" + station.StationCode + " RFID号:" + station.Data.RFIDNo + "产品码:" + station.Data.semibacode + "主线码:" + station.Data.MainBarcode + "支线条码:"+ sub.barcode);
|
|
|
SubInfoUpdate(sub.barcode, sub.lineID, station.Data.semibacode);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 上传支线信息
|
|
|
/// </summary>
|
|
|
/// <param name="barcode"></param>
|
|
|
/// <param name="lineid"></param>
|
|
|
/// <param name="semibacode"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool SubInfoUpdate(string barcode, string lineid, string semibacode)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
DbHandler db = new DbHandler();
|
|
|
try
|
|
|
{
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
sb.Append("EXEC SP_Pro_SubLineInfo '");
|
|
|
sb.Append(barcode).Append("','");
|
|
|
sb.Append(lineid).Append("','");
|
|
|
sb.Append(semibacode).Append("'");
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
return Convert.ToInt32(db.dbHelper.ToScalar()) == 0;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 更新trace表产品条码和T_RP_SemiProInfo表产品条码
|
|
|
/// </summary>
|
|
|
/// <param name="station"></param>
|
|
|
private void updatebarcode(StationInfo station)
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(station.Data.ProductBarcode))
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
UpdateSemiInfo(station);
|
|
|
if (station.IfMainline)
|
|
|
{
|
|
|
//这个现在好像没用
|
|
|
UpdateTraceBarcodeStation(station);
|
|
|
//这边是个坑啊 yinzf 2023-3-4 delete
|
|
|
if (station.stationID != "18" || station.stationID != "24")
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Warn("更新trace表产品条码和T_RP_SemiProInfo表产品条码,工位:"+ station.stationID)
|
|
|
; SubInfoUpdate(station.Data.ProductBarcode, station.lineID, station.Data.semibacode);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
private void UpdateSemiInfo(StationInfo station)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
//去掉换行符
|
|
|
if (!string.IsNullOrEmpty(station.Data.semibacode))
|
|
|
{
|
|
|
string barcode = station.Data.semibacode.Replace("\r", "").Replace("\n", "").Replace("\t", "");
|
|
|
sb.Append(" UPDATE dbo.T_RP_SemiProInfo SET ProductBarcode='").Append(station.Data.ProductBarcode);
|
|
|
sb.Append("' WHERE SemiBarcode='").Append(barcode).Append("' ");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
db.dbHelper.ExecuteNonQuery();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("Trace表NG工位更新错误,station.Data.semibacode为null!");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("Trace表NG工位更新错误:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 更新物料信息
|
|
|
/// </summary>
|
|
|
/// <param name="station"></param>
|
|
|
private void UpdateMaterialCode(StationInfo station)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append(" insert into dbo.T_RP_MaterialBarcode(barcode,productCode,stationID) values('");
|
|
|
sb.Append(station.Data.MainBarcode).Append("','");
|
|
|
sb.Append(station.Data.MaterialBarcode).Append("','");
|
|
|
sb.Append(station.stationID).Append("')");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
ICSharpCode.Core.LoggingService.Info("更新物料信息:" + sb.ToString() + station.Data.MainBarcode +","+ station.Data.MaterialBarcode + "," + station.stationID);
|
|
|
db.dbHelper.ExecuteNonQuery();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("物料条码更新出错:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 插入物料关系表
|
|
|
/// </summary>
|
|
|
/// <param name="station"></param>
|
|
|
public void InsertBarcodeRelationShip(string SemiBarcode,string ProductBarcode,string SemiBarcode_Line,int LineID)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append(" insert into dbo.T_RP_BarcodeRelationShip(SemiBarcode,ProductBarcode,SemiBarcode_Line,LineID,StateFlag) values('");
|
|
|
sb.Append(SemiBarcode).Append("','");
|
|
|
sb.Append(ProductBarcode).Append("','");
|
|
|
sb.Append(SemiBarcode_Line).Append("','");
|
|
|
sb.Append(LineID).Append("','");
|
|
|
sb.Append(1).Append("')");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
ICSharpCode.Core.LoggingService.Info("插入物料信息:" + sb.ToString() + SemiBarcode + "," + ProductBarcode + "," + LineID);
|
|
|
db.dbHelper.ExecuteNonQuery();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("物料信息插入出错:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
public void UpdateTraceNgStation(StationInfo station)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append(" UPDATE dbo.T_SY_TraceState SET NGStationID='").Append(station.stationID);
|
|
|
sb.Append("' WHERE barcode='").Append(station.Data.MainBarcode).Append("' ");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
db.dbHelper.ExecuteNonQuery();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("Trace表NG工位更新错误:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 更新当前工位
|
|
|
/// </summary>
|
|
|
/// <param name="station"></param>
|
|
|
public void UpdateTraceStation(string stationID,string MainBarcode)
|
|
|
{
|
|
|
DbHandler db = new DbHandler();
|
|
|
if (db.dbHelper == null)
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
try
|
|
|
{
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
string sql = "Exec SP_Pro_UpdateTraceStationBybarcode @CurrentStationID,@MainBarcode";
|
|
|
db.dbHelper.AddParameter("@CurrentStationID", stationID);
|
|
|
db.dbHelper.AddParameter("@MainBarcode", MainBarcode);
|
|
|
db.dbHelper.CommandText = sql;
|
|
|
ICSharpCode.Core.LoggingService.Info("更新当前工位信息:" + sql + stationID + MainBarcode);
|
|
|
db.dbHelper.ExecuteNonQuery();
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 更新当前工位
|
|
|
/// </summary>
|
|
|
/// <param name="station"></param>
|
|
|
public void UpdateTraceBarcodeStation(StationInfo station)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
DbHandler db = new DbHandler();
|
|
|
try
|
|
|
{
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
sb.Append(" UPDATE dbo.T_SY_TraceState SET ProductBarcode='").Append(station.Data.ProductBarcode);
|
|
|
sb.Append("' WHERE barcode='").Append(station.Data.MainBarcode).Append("' ");
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
db.dbHelper.ExecuteNonQuery();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("Trace工位更新错误:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 判断当前条码和任务号是否上传过
|
|
|
/// </summary>
|
|
|
/// <param name="barcode"></param>
|
|
|
/// <param name="MaskID"></param>
|
|
|
/// <param name="TableName"></param>
|
|
|
/// <returns>上传过返回false</returns>
|
|
|
public bool JuadgeMaskID(string barcode, string MaskID, string TableName)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
DbHandler db = new DbHandler();
|
|
|
try
|
|
|
{
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
sb.Append("EXEC SP_Pro_Changeflag '");
|
|
|
sb.Append(barcode).Append("','");
|
|
|
sb.Append(MaskID).Append("','");
|
|
|
sb.Append(TableName).Append("'");
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
return Convert.ToInt32(db.dbHelper.ToScalar()) == 0;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 更新当前工位
|
|
|
/// </summary>
|
|
|
/// <param name="station"></param>
|
|
|
public void UpdaterestartCount(string Barcode)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append(" exec SP_Pro_UpdateRestartCount '").Append(Barcode).Append("'");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
db.dbHelper.ExecuteNonQuery();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("更新重投次数错误:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 生成新的产品信息
|
|
|
/// </summary>
|
|
|
/// <param name="station"></param>
|
|
|
public string CreatNewProduct(StationInfo station)
|
|
|
{
|
|
|
string MainBarcode = "";
|
|
|
try
|
|
|
{
|
|
|
DbHandler db = new DbHandler();
|
|
|
//StationInsertInfo sinsert = new StationInsertInfo();
|
|
|
//生成系统条码,
|
|
|
MainBarcode = db.GetLastMainBarcode("M");
|
|
|
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error(e.ToString());
|
|
|
}
|
|
|
return MainBarcode;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 生成新的产品信息
|
|
|
/// </summary>
|
|
|
/// <param name="station"></param>
|
|
|
public string CreatNewSemibarcode(string Head, string lineID)
|
|
|
{
|
|
|
string semibarcode = "";
|
|
|
try
|
|
|
{
|
|
|
DbHandler db = new DbHandler();
|
|
|
//生成系统条码,
|
|
|
semibarcode = db.GetLastSemiBarcode(Head, lineID);
|
|
|
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error(e.ToString());
|
|
|
}
|
|
|
return semibarcode;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 解除绑定
|
|
|
/// </summary>
|
|
|
/// <param name="station"></param>
|
|
|
public void UnbandTray(StationInfo station)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append("Update T_RP_WorkTrayRealTimeInfo set barcode='',Semibarcode='',state='0' ");
|
|
|
sb.Append(" where RFIDNum='").Append(station.Data.RFIDNo).Append("'");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
db.dbHelper.ExecuteNonQuery();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("获取条码语句错误:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
}
|
|
|
}
|
|
|
public string getChongTouState(string productbarcode , string abarcode)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
if (abarcode == "" && productbarcode!= "")
|
|
|
{
|
|
|
sb.Append(" SELECT TOP(1) ISDis FROM dbo.T_SY_TraceState WHERE productbarcode='").Append(productbarcode).Append("' order by BeginTime desc");
|
|
|
|
|
|
}
|
|
|
else if (productbarcode == "" && abarcode != "")
|
|
|
{
|
|
|
sb.Append(" SELECT TOP(1) ISDis FROM dbo.T_SY_TraceState WHERE SemiBarcode_A='").Append(abarcode).Append("' order by BeginTime desc");
|
|
|
}
|
|
|
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
var obj = db.dbHelper.ToScalar();
|
|
|
if (obj != null)
|
|
|
{
|
|
|
return obj.ToString();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return "";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("Trace工位查询错误:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
return "";
|
|
|
}
|
|
|
}
|
|
|
public string getSemiBacode(string productbarcode)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append(" SELECT TOP(1) semibarcode_A FROM dbo.T_SY_TraceState WHERE productbarcode='").Append(productbarcode).Append("' order by BeginTime desc");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
var obj = db.dbHelper.ToScalar();
|
|
|
if (obj != null)
|
|
|
{
|
|
|
return obj.ToString();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return "";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("Trace工位查询错误:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
return "";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
#region 判断是否工作代码,yinzf 2023-3-1
|
|
|
public bool PreStationState(StationInfo station)
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
public string GetFirstStationIDByStationID(string StationID)
|
|
|
{
|
|
|
string Flag = "";
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append(" select PreStationID from T_BD_SubStation where StationID ='").Append(StationID).Append("' ");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
var obj = db.dbHelper.ToScalar();
|
|
|
if (obj != null)
|
|
|
{
|
|
|
return obj.ToString();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
return Flag;
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 换线工位互锁验证
|
|
|
/// </summary>
|
|
|
/// <param name="stationID"></param>
|
|
|
/// <param name="RFID"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool ChangeLineStationHaveWork(StationInfo station)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
DbHandler db = new DbHandler();
|
|
|
try
|
|
|
{
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
sb.Append("EXEC SP_Pro_ChangeLineCurruntState '");
|
|
|
sb.Append(station.Data.ProductBarcode).Append("','");
|
|
|
sb.Append(station.stationID).Append("'");
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
var obj = db.dbHelper.ToScalar();
|
|
|
int result = Convert.ToInt32(obj);
|
|
|
if (result > 1)
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error(string.Format(ex.ToString()));
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
public bool IsReStartWork(StationInfo stat)
|
|
|
{
|
|
|
bool bFlag = false;
|
|
|
|
|
|
try
|
|
|
{
|
|
|
//先根据托盘号查询A码
|
|
|
string Abarcode = GetTraySemiBarcode(stat.Data.RFIDNo);
|
|
|
if (!string.IsNullOrEmpty(Abarcode))
|
|
|
{
|
|
|
string ISDis = getChongTouState("", Abarcode);
|
|
|
if (!string.IsNullOrEmpty(ISDis))
|
|
|
{
|
|
|
//重投
|
|
|
if (ISDis == "1")
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Debug(stat.StationCode + "开始查询[" + stat.Data.RFIDNo + "]托盘的产品为重投");
|
|
|
bFlag = true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
bFlag = false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return bFlag;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
return bFlag;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 判断托盘是否为空
|
|
|
/// state=0则表示空,state=2表示不合格,state=1表示合格
|
|
|
/// </summary>
|
|
|
/// <param name="stat"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool TrayIsNull(StationInfo stat,out WorkTray tray)
|
|
|
{
|
|
|
tray = new WorkTray();
|
|
|
try
|
|
|
{
|
|
|
DbHandler db = new DbHandler();
|
|
|
//判断产品当前状态
|
|
|
ICSharpCode.Core.LoggingService.Debug(stat.StationCode + "开始查询["+ stat.Data.RFIDNo + "]托盘信息");
|
|
|
tray = db.GetProductQuality(stat.Data.RFIDNo);
|
|
|
if (!tray.SemiBarcode.Equals(string.Empty))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Warn("查询[" + stat.Data.RFIDNo + "]托盘所属产品主码未绑定");
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Warn("TrayIsNull函数错误" + e.ToString());
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 通过RFID获取当前托盘信息
|
|
|
/// </summary>
|
|
|
/// <param name="stat"></param>
|
|
|
/// <returns></returns>
|
|
|
public WorkTray GetTrayInfoByRFID(StationInfo stat)
|
|
|
{
|
|
|
WorkTray tray = new WorkTray();
|
|
|
try
|
|
|
{
|
|
|
DbHandler db = new DbHandler();
|
|
|
//判断产品当前状态
|
|
|
tray = db.GetProductQuality(stat.Data.RFIDNo);
|
|
|
return tray;
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Warn("TrayIsNull函数错误" + e.ToString());
|
|
|
return tray;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 通过物料条码获取当前托盘信息
|
|
|
/// </summary>
|
|
|
/// <param name="stat"></param>
|
|
|
/// <returns></returns>
|
|
|
public WorkTray GetTrayInfoByBarcode(StationInfo stat)
|
|
|
{
|
|
|
WorkTray tray = new WorkTray();
|
|
|
try
|
|
|
{
|
|
|
DbHandler db = new DbHandler();
|
|
|
//判断产品当前状态
|
|
|
tray = db.GetTrayInfoByBarcode(stat.Data.MainBarcode);
|
|
|
return tray;
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Warn("TrayIsNull函数错误" + e.ToString());
|
|
|
return tray;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 判断产品当前质量
|
|
|
/// </summary>
|
|
|
/// <param name="rfid"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool ProductQuality(WorkTray workTray)
|
|
|
{
|
|
|
return workTray.OKNG == 1;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 上一工位是否已经做了,看currentstion
|
|
|
/// </summary>
|
|
|
/// <param name="rfid"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool PreStationInfo(StationInfo stat,string Epc)
|
|
|
{
|
|
|
DbHandler db = new DbHandler();
|
|
|
bool pre = db.GetPreWorkInfo(Epc, stat.stationID);
|
|
|
if (!pre)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Warn("工位:" + stat.StationName + ",信息:托盘 " + Epc + ":没有上一工位工作信息");
|
|
|
}
|
|
|
return pre;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取当前工位质量
|
|
|
/// </summary>
|
|
|
/// <param name="sta"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool CurrentStationInfo(StationInfo stat,string epc)
|
|
|
{
|
|
|
DbHandler db = new DbHandler();
|
|
|
bool workready = db.CurrentStationHaveWork(stat.stationID, epc);
|
|
|
if (workready)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Warn("工位:" + stat.StationName + ",信息:托盘 " + epc + "当前工位已完工" );
|
|
|
}
|
|
|
return workready;
|
|
|
}
|
|
|
public string LastWorkProductionInfo(string barcode,string TableName)
|
|
|
{
|
|
|
string iflag = "";
|
|
|
try
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
sb.Append(" SELECT TOP(1) State FROM " + TableName + " WHERE ScanBarcode='").Append(barcode).Append("' order by InsertTime desc ");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
var obj = db.dbHelper.ToScalar();
|
|
|
if (obj != null)
|
|
|
{
|
|
|
return obj.ToString();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return "";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
return iflag;
|
|
|
}
|
|
|
}
|
|
|
public bool IsReStartProduction(string barcode)
|
|
|
{
|
|
|
bool iflag = false;
|
|
|
//根据主线码查询是否重投
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append(" SELECT TOP(1) ISDis FROM dbo.T_SY_TraceState WHERE SemiBarcode_A='").Append(barcode).Append("' ");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
var obj = db.dbHelper.ToScalar();
|
|
|
if (obj != null)
|
|
|
{
|
|
|
if (obj.ToString() != "0")
|
|
|
{
|
|
|
iflag = true;
|
|
|
}
|
|
|
return iflag;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return iflag;
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("Trace工位查询错误:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
return iflag;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public bool Chongtou(StationInfo station)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Debug("重投数据");
|
|
|
//判断是否为重投
|
|
|
string ISDis = getChongTouState(station.Data.ProductBarcode, "");
|
|
|
if (ISDis == "2")
|
|
|
{
|
|
|
//获取A码
|
|
|
ICSharpCode.Core.LoggingService.Debug("获取产品码:"+ station.Data.ProductBarcode);
|
|
|
station.Data.semibacode = getSemiBacode(station.Data.ProductBarcode);
|
|
|
|
|
|
UpdateTrayChongtou(station.Data.RFIDNo, station.Data.semibacode);
|
|
|
//判断当前工位是否可以过滤
|
|
|
if (this.CurrentStationInfo(station, station.Data.RFIDNo))
|
|
|
{
|
|
|
this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NG);
|
|
|
return true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
//没查询到绑定信息
|
|
|
|
|
|
else if (ISDis == "")
|
|
|
{
|
|
|
//插入trace表
|
|
|
string ABarCode = CreatNewSemibarcode("A", "1");
|
|
|
//创建新的产品
|
|
|
string mainBarcode = CreatNewProduct(station);
|
|
|
DbHandler db = new DbHandler();
|
|
|
//查询当前的机种型号,不是机种要具体到型号
|
|
|
string machineID = db.GetNowProductionInfo();
|
|
|
db.InsertTrace(mainBarcode, ABarCode, station.Data.ProductBarcode, machineID);
|
|
|
return false;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
public bool IsSelectAllStationData(string stationID)
|
|
|
{
|
|
|
bool iflag = false;
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append(" select IsNGStation from T_BD_SubStation WHERE StationID='").Append(stationID).Append("' ");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
var obj = db.dbHelper.ToScalar();
|
|
|
if (obj != null)
|
|
|
{
|
|
|
if (obj.ToString() != "0")
|
|
|
{
|
|
|
iflag = true;
|
|
|
}
|
|
|
return iflag;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return iflag;
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("MES功能开关状态查询错误:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
return iflag;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
public bool IsOpen(string stationID)
|
|
|
{
|
|
|
bool iflag = false;
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append(" select IsShow from T_BD_SubStation WHERE StationID='").Append(stationID).Append("' ");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
var obj = db.dbHelper.ToScalar();
|
|
|
if (obj != null)
|
|
|
{
|
|
|
if (obj.ToString() != "0")
|
|
|
{
|
|
|
iflag = true;
|
|
|
}
|
|
|
return iflag;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return iflag;
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("MES功能开关状态查询错误:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
return iflag;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 静盘工位检验质量
|
|
|
/// </summary>
|
|
|
/// <param name="barcode"></param>
|
|
|
/// <returns></returns>
|
|
|
public bool GetJPProductionQuality(string barcode)
|
|
|
{
|
|
|
bool iflag = false;
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append(" SELECT TOP(1) State FROM dbo.T_RP_StationPara_S320 WHERE ScanBarcode= '").Append(barcode).Append("' ").Append(" order by InsertTime desc");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
var obj = db.dbHelper.ToScalar();
|
|
|
if (obj != null)
|
|
|
{
|
|
|
if (obj.ToString() == "1")
|
|
|
{
|
|
|
iflag = true;
|
|
|
}
|
|
|
return iflag;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return iflag;
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("静盘工位信息查询错误:"+ barcode + sb.ToString() + "/r/n" + e.ToString());
|
|
|
return iflag;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 通过静盘码查询动静盘绑定关系
|
|
|
/// </summary>
|
|
|
/// <param name="barcode"></param>
|
|
|
/// <returns></returns>
|
|
|
public DJPBarCodeRelationShip GetProductQuality(string JPBarCode)
|
|
|
{
|
|
|
DJPBarCodeRelationShip dJPBarCodeRelationShip = new DJPBarCodeRelationShip();
|
|
|
bool iflag = false;
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append(" SELECT TOP(1) * FROM dbo.T_DJP_BarCodeRelationShip WHERE JPBarCode= '").Append(JPBarCode).Append("' ").Append(" order by RecordTime desc");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
DataTable dt = db.dbHelper.ToDataTable();
|
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
|
{
|
|
|
dJPBarCodeRelationShip.DPBarCode = dt.Rows[0]["DPBarCode"].ToString();
|
|
|
dJPBarCodeRelationShip.JPBarCode = dt.Rows[0]["JPBarCode"].ToString();
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return dJPBarCodeRelationShip;
|
|
|
}
|
|
|
return dJPBarCodeRelationShip;
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("静盘工位信息查询错误:" + JPBarCode + sb.ToString() + "/r/n" + e.ToString());
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
public string GetSemiBarcodeByProductBarCode(string KT_BarCode)
|
|
|
{
|
|
|
string SemiBarcode = "";
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append(" SELECT TOP(1) SemiBarcode_A FROM dbo.T_SY_TraceState WHERE ProductBarcode= '").Append(KT_BarCode).Append("' ").Append(" order by BeginTime desc");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
var obj = db.dbHelper.ToScalar();
|
|
|
if (obj != null)
|
|
|
{
|
|
|
SemiBarcode = obj.ToString();
|
|
|
return SemiBarcode;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return SemiBarcode;
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("A码信息查询错误:" + KT_BarCode + sb.ToString() + "/r/n" + e.ToString());
|
|
|
return SemiBarcode;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
public string GetMBarcodeByProductBarCode(string KT_BarCode)
|
|
|
{
|
|
|
string SemiBarcode = "";
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append(" SELECT TOP(1) Barcode FROM dbo.T_SY_TraceState WHERE ProductBarcode= '").Append(KT_BarCode).Append("' ").Append(" order by BeginTime desc");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
var obj = db.dbHelper.ToScalar();
|
|
|
if (obj != null)
|
|
|
{
|
|
|
SemiBarcode = obj.ToString();
|
|
|
return SemiBarcode;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return SemiBarcode;
|
|
|
}
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("M码信息查询错误:" + KT_BarCode + sb.ToString() + "/r/n" + e.ToString());
|
|
|
return SemiBarcode;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
public bool GetStationNGBySemiBarCode(string SemiBarCode)
|
|
|
{
|
|
|
bool iflag = false;
|
|
|
try
|
|
|
{
|
|
|
DbHandler db = new DbHandler();
|
|
|
if (db.dbHelper == null)
|
|
|
{
|
|
|
return iflag;
|
|
|
}
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
string sql = "Exec pro_AllProductionQualityInfo @BarCode";
|
|
|
db.dbHelper.AddParameter("@BarCode", SemiBarCode);
|
|
|
db.dbHelper.CommandText = sql;
|
|
|
DataSet ds = (DataSet)db.dbHelper.ToDataSet();
|
|
|
DataTable dt = ds.Tables[0];
|
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
|
{
|
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
|
{
|
|
|
//这里如果要判断最后一工位与倒数第二个工位互锁,取ID=16
|
|
|
string s = dt.Rows[i]["State"].ToString();
|
|
|
if (dt.Rows[i]["State"].ToString() == "2")
|
|
|
{
|
|
|
iflag = true;
|
|
|
return iflag;
|
|
|
}
|
|
|
else if (dt.Rows[i]["State"].ToString() == null || dt.Rows[i]["State"].ToString() == "")
|
|
|
{
|
|
|
iflag = true;
|
|
|
return iflag;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return iflag;
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
return iflag;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取产品信息
|
|
|
/// </summary>
|
|
|
/// <param name="ProductBarCode"></param>
|
|
|
/// <returns></returns>
|
|
|
public TSyTracestate GetTraceStateInfoByProductBarCode(string ProductBarCode)
|
|
|
{
|
|
|
//ICSharpCode.Core.LoggingService.Fatal("获取托盘信息");
|
|
|
DbHandler db = new DbHandler();
|
|
|
TSyTracestate TSyTracestate = new TSyTracestate();
|
|
|
try
|
|
|
{
|
|
|
if (db.dbHelper == null)
|
|
|
{
|
|
|
return null;
|
|
|
}
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = "";
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
sb.Append("SELECT TOP 1 Barcode,t1.ProductID,t2.ProductName,BeginTime,EndTime,ShiftID,GroupID,ShiftNo,SemiBarcode_A,SemiBarcode_B,SemiBarcode_C,ProductBarcode,SemiBarcode2,shellbarcode,NameplateInfo,MarkRecord,Attr1,Attr2,ISDis,DisChecker,DisTime,State,CurrentStationID,NGStationID,RestartStation,FinishFlag,D9Remark FROM [JYD_shengjie].[dbo].[T_SY_TraceState] T1 left join dbo.T_BD_ProductInfo T2 on t1.ProductID = t2.ProductID where ProductBarcode='").Append(ProductBarCode).Append("' order by BeginTime desc");
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
DataTable dt = db.dbHelper.ToDataTable();
|
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
|
{
|
|
|
TSyTracestate.ProductID = dt.Rows[0]["ProductID"].ToString();
|
|
|
TSyTracestate.ProductName = dt.Rows[0]["ProductName"].ToString();
|
|
|
TSyTracestate.ProductBarcode = dt.Rows[0]["ProductBarcode"].ToString();
|
|
|
TSyTracestate.ShiftID = dt.Rows[0]["ShiftID"].ToString();
|
|
|
TSyTracestate.GroupID = dt.Rows[0]["GroupID"].ToString();
|
|
|
TSyTracestate.Barcode = dt.Rows[0]["Barcode"].ToString();
|
|
|
TSyTracestate.BeginTime = dt.Rows[0]["BeginTime"].ToString();
|
|
|
TSyTracestate.EndTime = dt.Rows[0]["EndTime"].ToString();
|
|
|
return TSyTracestate;
|
|
|
}
|
|
|
return TSyTracestate;
|
|
|
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("获取产品信息失败" + e.Message);
|
|
|
return TSyTracestate;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public void InsertScanBarCodePrintRecord(TSyTracestate syTracestate)
|
|
|
{
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
try
|
|
|
{
|
|
|
sb.Append(" insert into dbo.base_scanbarcode_record(MCode,ProductCode) values('");
|
|
|
sb.Append(syTracestate.Barcode).Append("','");
|
|
|
sb.Append(syTracestate.ProductBarcode).Append("')");
|
|
|
DbHandler db = new DbHandler();
|
|
|
db.dbHelper.ClearParameter();
|
|
|
db.dbHelper.CommandType = CommandType.Text;
|
|
|
db.dbHelper.CommandText = sb.ToString();
|
|
|
ICSharpCode.Core.LoggingService.Info("铭牌打印记录:" + sb.ToString() + "流水号:"+ syTracestate.Barcode + ",产品码" + syTracestate.ProductBarcode);
|
|
|
db.dbHelper.ExecuteNonQuery();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error("铭牌打印记录出错:" + sb.ToString() + "/r/n" + e.ToString());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 托盘到位请求结果
|
|
|
/// </summary>
|
|
|
public enum DaoWeiResult
|
|
|
{
|
|
|
OK = 1,//可以工作
|
|
|
NG = 2,//直接放行
|
|
|
PreNoWork = 3,//上一工位未工作
|
|
|
MachineNoMatch=4,//机种不匹配
|
|
|
TakeNG=5,//NG物料拿取
|
|
|
NoBarCode = 6, //没读到条码
|
|
|
MaterialNoMatch = 7//物料不匹配
|
|
|
}
|
|
|
}
|
|
|
|