|
|
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 NoRFIDStation : Common, IStation
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 无RFID托盘的工位直接将产品条码号放到数据表中,没有系统条码之分,这样统计数据只能按最后一次来统计
|
|
|
/// 对于重投次数也不太好统计
|
|
|
/// </summary>
|
|
|
/// <param name="station"></param>
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public bool PrepareWork(StationInfo station)
|
|
|
{
|
|
|
|
|
|
//先判断后台开关是否打开在进行逻辑验证
|
|
|
bool iflag = IsOpen(station.stationID);
|
|
|
if (iflag)
|
|
|
{
|
|
|
//主线产品码未扫描到条码下发PLC报警
|
|
|
//大转盘壳体条码
|
|
|
if (station.stationID == "1")
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(station.Data.subLineList[1].barcode) || station.Data.subLineList[1].barcode.Equals("ERROR"))
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码");
|
|
|
this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode);
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
//前盖条码
|
|
|
else if (station.stationID == "5" || station.stationID == "6" || station.stationID == "8" || station.stationID == "9")
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(station.Data.subLineList[2].barcode) || station.Data.subLineList[2].barcode.Equals("ERROR"))
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码");
|
|
|
this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode);
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
//静盘条码
|
|
|
else if (station.stationID == "11" || station.stationID == "35" || station.stationID == "12")
|
|
|
{
|
|
|
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;
|
|
|
}
|
|
|
}
|
|
|
//动盘条码
|
|
|
else if (station.stationID == "12")
|
|
|
{
|
|
|
if (!station.Data.DP_OpenFlag)
|
|
|
{
|
|
|
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;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//后盖条码
|
|
|
else if (station.stationID == "15")
|
|
|
{
|
|
|
if (string.IsNullOrEmpty(station.Data.subLineList[5].barcode) || station.Data.subLineList[5].barcode.Equals("ERROR"))
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Error(station.StationCode + "未收到PLC传递的条码");
|
|
|
this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.NoBarCode);
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
//判断上一工位开关是否打开
|
|
|
string preStationID = GetFirstStationIDByStationID(station.stationID);
|
|
|
if (!string.IsNullOrEmpty(preStationID))
|
|
|
{
|
|
|
bool iPreflag = IsOpen(preStationID);
|
|
|
if (iPreflag)
|
|
|
{
|
|
|
string LastWorkInfo = "";
|
|
|
|
|
|
if (station.barcodeHead == "A2")
|
|
|
{
|
|
|
//判断是否判断是否有上一工位信息,判断是否合格====通过条码号从上个表里获取数据
|
|
|
LastWorkInfo = LastWorkProductionInfo(station.Data.subLineList[2].barcode, station.PreTableName);
|
|
|
}
|
|
|
else if (station.barcodeHead == "A1")
|
|
|
{
|
|
|
LastWorkInfo = LastWorkProductionInfo(station.Data.ProductBarcode, station.PreTableName);
|
|
|
}
|
|
|
else if (station.barcodeHead == "A3")
|
|
|
{
|
|
|
LastWorkInfo = LastWorkProductionInfo(station.Data.subLineList[4].barcode, station.PreTableName);
|
|
|
}
|
|
|
|
|
|
//没有上工位信息
|
|
|
if (string.IsNullOrEmpty(LastWorkInfo))
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Debug(station.StationCode + "检测无上工位信息");
|
|
|
this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.PreNoWork);
|
|
|
return false;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
//NG物料拿取
|
|
|
if (LastWorkInfo != "1")
|
|
|
{
|
|
|
this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.TakeNG);
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//这里加一个物料是否匹配=======//还要加判断,当前工位是否需要判断
|
|
|
//ICSharpCode.Core.LoggingService.Debug("》》》》》》开始写入PLC反馈信号!");
|
|
|
}
|
|
|
this.DaoWeiQingQiuHandle(station, (int)DaoWeiResult.OK);
|
|
|
//ICSharpCode.Core.LoggingService.Debug("》》》》》》写入PLC反馈信号完成!");
|
|
|
return true;
|
|
|
}
|
|
|
public bool HandleData(StationInfo station)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
SqlHelper sh = new SqlHelper();
|
|
|
DbHandler db = new DbHandler();
|
|
|
string LineID = "";
|
|
|
//判断动静盘工位
|
|
|
if (station.stationID == "12")
|
|
|
{
|
|
|
if (!station.Data.DP_OpenFlag)
|
|
|
{
|
|
|
//保存绑定动静盘
|
|
|
//判断是否含有动静盘条码
|
|
|
string DPBarCode = station.Data.subLineList[3].barcode;
|
|
|
string JPBarCode = station.Data.subLineList[4].barcode;
|
|
|
string ProductBarCode = station.Data.ProductBarcode;
|
|
|
db.InsertDJRelationShip(DPBarCode, JPBarCode);
|
|
|
}
|
|
|
}
|
|
|
foreach (subLine s in station.Data.subLineList)
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(s.barcode) && s.barcode != "")
|
|
|
{
|
|
|
LineID = s.lineID;
|
|
|
//没有托盘的条码只能通过支线条码作为产品主条码
|
|
|
station.Data.ProductBarcode = s.barcode;
|
|
|
//保存物料条码
|
|
|
|
|
|
ICSharpCode.Core.LoggingService.Debug("支线工位:" + station.StationCode + " 物料条码:" +s.barcode);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//插入新数据
|
|
|
string InsertSql = sh.DataInsertSql2(station);
|
|
|
db.ExecSql(InsertSql);
|
|
|
|
|
|
ICSharpCode.Core.LoggingService.Debug("工位:" + station.StationCode + " 保存数据成功。托盘号:" + station.Data.RFIDNo);
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
ICSharpCode.Core.LoggingService.Info(e.ToString());
|
|
|
return false;
|
|
|
}
|
|
|
finally
|
|
|
{
|
|
|
//这里要加一个OK放行
|
|
|
FinishSavePLCWork(station);
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
}
|