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

568 lines
20 KiB
C#

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
{
public bool UpdateTray(string RFID, string barcode, string semibarcode)
{
try
{
StringBuilder sb = new StringBuilder();
sb.Append("update T_RP_WorkTrayRealTimeInfo set barcode='");
sb.Append(barcode).Append("', semibarcode='");
sb.Append(semibarcode).Append("', updateTime='").Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sb.Append("' where RFIDNum='").Append(RFID).Append("'");
DbHandler db = new DbHandler();
db.ExecSql(sb.ToString());
return true;
}
catch
{
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>
/// 通过壳体条码,查找内部主条码
/// </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 "";
}
}
/// <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();
return db.dbHelper.ToScalar().ToString();
}
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;
}
/// <summary>
///
/// </summary>
public void SaveStationData(StationInfo station)
{
//if (station.Data.NewFlag)
//{
ICSharpCode.Core.LoggingService.Debug("工位:" + station.StationCode + "的RFID" + station.Data.RFIDNo + "数据已上传。任务号:" + station.Data.MaskID.ToString());
SqlHelper sh = new SqlHelper();
DbHandler db = new DbHandler();
//获取条码
string barcode = GetTraySemiBarcode(station.Data.RFIDNo);
string Mainbarcode = GetMainBarcode(barcode);
if (string.IsNullOrEmpty(barcode))
{
ICSharpCode.Core.LoggingService.Warn(station.StationCode + " 通过RFID号" + station.Data.RFIDNo + "未找到对应条码");
return;
}
station.Data.semibacode = barcode;
//station.Data.ProductBarcode = "";
station.Data.MainBarcode = Mainbarcode;
//更新已有数据
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;
}
if (station.Data.MaterialBarcodeUpdate)
{
UpdateMaterialCode(station);
}
//更新当前工位
UpdateTraceStation(station);
if (station.Data.BarcodeUpdate)
{
updatebarcode(station);
updateSubInfo(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);
}
ICSharpCode.Core.LoggingService.Debug("工位:" + station.StationCode + " 保存数据成功。托盘号:" + station.Data.RFIDNo + "条码:"+ barcode);
//}
}
///上传支线信息
private void updateSubInfo(StationInfo station)
{
if (station.Data.subLineList.Count <= 0)
{
return;
}
foreach (var sub in station.Data.subLineList)
{
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);
//这边是个坑啊
SubInfoUpdate(station.Data.ProductBarcode, "15", station.Data.semibacode);
}
}
private void UpdateSemiInfo(StationInfo station)
{
StringBuilder sb = new StringBuilder();
try
{
//去掉换行符
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();
}
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();
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(StationInfo station)
{
StringBuilder sb = new StringBuilder();
try
{
sb.Append(" UPDATE dbo.T_SY_TraceState SET CurrentStationID='").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工位更新错误:" + sb.ToString() + "/r/n" + e.ToString());
}
}
/// <summary>
/// 更新当前工位
/// </summary>
/// <param name="station"></param>
public void UpdateTraceBarcodeStation(StationInfo station)
{
StringBuilder sb = new StringBuilder();
try
{
sb.Append(" UPDATE dbo.T_SY_TraceState SET ProductBarcode='").Append(station.Data.ProductBarcode);
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工位更新错误:" + 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=''");
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 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("' ");
DbHandler db = new DbHandler();
db.dbHelper.ClearParameter();
db.dbHelper.CommandType = CommandType.Text;
db.dbHelper.CommandText = "";
db.dbHelper.CommandText = sb.ToString();
return db.dbHelper.ToScalar().ToString();
}
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;
}
/// <summary>
/// 判断托盘是否为空
/// state=0则表示空state=2表示不合格state=1表示合格
/// </summary>
/// <param name="stat"></param>
/// <returns></returns>
public bool TrayIsNull(StationInfo stat)
{
try
{
DbHandler db = new DbHandler();
//判断产品当前状态
WorkTray tray = db.GetProductQuality(stat.Data.RFIDNo);
if (tray.SemiBarcode.Equals(string.Empty))
{
return false;
}
else
{
return true;
}
}
catch (Exception e)
{
ICSharpCode.Core.LoggingService.Warn("TrayIsNull函数错误" + e.ToString());
return false;
}
}
#endregion
}
}