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#

This file contains ambiguous Unicode characters!

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

using 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
}
}