using Mesnac.Compressor.Data;
using Mesnac.Compressor.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Mesnac.Compressor.Station
{
public class FirstStation : Common, IStation
{
///
/// 只判断是否与计划相同
///
///
///
public bool PrepareWork(StationInfo station)
{
//主线产品码未扫描到条码下发PLC报警
//if (string.IsNullOrEmpty(station.Data.subLineList[3].barcode) || station.Data.subLineList[3].barcode.Equals("ERROR"))
//{
// ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码");
// this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode);
// return false;
//}
//if (string.IsNullOrEmpty(station.Data.subLineList[4].barcode) || station.Data.subLineList[4].barcode.Equals("ERROR"))
//{
// ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码");
// this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode);
// return false;
//}
ICSharpCode.Core.LoggingService.Debug(station.StationCode + ",打印托盘号:"+ station.Data.RFIDNo);
//未扫描到托盘号也要下发PLC报警
if (string.IsNullOrEmpty(station.Data.RFIDNo) || station.Data.RFIDNo.Equals("A00"))
{
ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的托盘号");
//this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NORFID);
//return false;
}
//先判断后台开关是否打开在进行逻辑验证
//这里校验是否与计划匹配,先预留,后期加==========
this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.OK);
return true;
}
public bool HandleData(StationInfo station)
{
try
{
//动静盘上线放行请求判断是否有码和是否NG
if (station.stationID == "1" || station.stationID == "2")
{
if (string.IsNullOrEmpty(station.Data.RFIDNo) || station.Data.RFIDNo.Equals("A00"))
{
//ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的托盘号");
//this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode);
return false;
}
if (string.IsNullOrEmpty(station.Data.subLineList[3].barcode) || station.Data.subLineList[3].barcode.Equals("ERROR") || station.Data.subLineList[3].barcode.Length != 20)
{
ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码");
this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode);
return false;
}
if (string.IsNullOrEmpty(station.Data.subLineList[4].barcode) || station.Data.subLineList[4].barcode.Equals("ERROR") || station.Data.subLineList[4].barcode.Length != 20)
{
ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码");
this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode);
return false;
}
else
{
station.Data.ProductBarcode = station.Data.subLineList[3].barcode;
}
}
//重投逻辑防呆,防止重投开关关闭时不走这里
//判断是否为重投
//动静盘重投
//根据静盘码查询是否重投
string JPData = GetReStartInfo("SemiBarcode", station.Data.subLineList[3].barcode, station.TableName, "ScanBarcode");
if (!string.IsNullOrEmpty(JPData))
{
//string MBarcode = GetReStartInfo("Barcode", station.Data.subLineList[3].barcode, station.TableName, "ScanBarcode");
//重投
ICSharpCode.Core.LoggingService.DebugFormatted("重投产品码:{0},A码:{1}" , station.Data.subLineList[3].barcode, JPData);
//根据A码更新T_SY_TraceState表,更新T_RP_WorkTrayRealTimeInfo表
UpdateTrayChongtou(station.Data.RFIDNo, JPData);
//清空关系表
//UpdateTrayChongtou(station.Data.RFIDNo, station.Data.semibacode);
FinishSavePLCWork(station);
//this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.FangXing);
return false;
}
#region 动静盘在主线上,重投时需要带条码发请求放行,根据动静盘将壳体码查出
//动静盘在主线上,重投时需要带条码发请求放行,根据动静盘将壳体码查出
//string Sem = getSemiBarcodeAByDongPanCode(station.Data.subLineList[3].barcode);
//if (!string.IsNullOrEmpty(Sem))
//{
// string ISDis = getChongTouState("", Sem);
// if (ISDis == "1")
// {
// //动静盘重投,20、30工位直接跳过从40开始
// station.Data.semibacode = Sem;
// ICSharpCode.Core.LoggingService.Debug("重投产品码:" + station.Data.ProductBarcode + ",A码:" + station.Data.semibacode);
// //UpdateTrayChongtou(station.Data.RFIDNo, station.Data.semibacode);
// this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.FangXing);
// return false;
// }
//}
#endregion
station.Data.semibacode = CreatNewSemibarcode(station.barcodeHead, station.lineID);
ICSharpCode.Core.LoggingService.Debug("Head:" + station.barcodeHead + "支线ID:" + station.lineID + "生成支线条码:" + station.Data.semibacode +"物料条码:"+ station.Data.ProductBarcode);
string mainBarcode = "";
if (station.IfMainline)
{
//ICSharpCode.Core.LoggingService.Debug("主线");
//创建新的产品
mainBarcode = CreatNewProduct(station);
DbHandler db = new DbHandler();
//查询当前的机种型号,不是机种要具体到型号
string machineID = db.GetNowProductionInfo();
db.InsertTrace(mainBarcode, station.Data.semibacode, machineID);
//动静盘条码
//InsertBarcodeRelationShip(station.Data.semibacode, station.Data.subLineList[2].barcode, station.Data.semibacode,1);
//InsertBarcodeRelationShip(station.Data.semibacode, station.Data.subLineList[4].barcode, station.Data.semibacode, 1);
}
base.UpdateTray(station.Data.RFIDNo, mainBarcode, station.Data.semibacode, station.stationID, station.Data.ProductOkNg);
ICSharpCode.Core.LoggingService.Debug("更新托盘信息:" + station.Data.RFIDNo + "+" + mainBarcode + "+" + station.Data.semibacode);
//保存数据
base.SaveStationData(station, StationType.FirstStation);
FinishSavePLCWork(station);
}
catch(Exception e)
{
ICSharpCode.Core.LoggingService.Error(e.ToString());
return false;
}
//finally
//{
// //这里要加一个OK放行
// FinishSavePLCWork(station);
//}
return true;
}
}
}