using Leit.FrameWork.Log;
using Leit.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Leit.StationFunction
{
public static class Function_OP25
{
///
/// 工位标签信息
///
public static List StationTagInfos { get; set; }
///
/// 工位报警标签信息
///
public static List StationAlarmTagInfos { get; set; }
///
/// 工位质量数据标签信息
///
public static List StationQualityTagInfos { get; set; }
///
/// 工位交互数据标签信息
///
public static List StationCommunicatedTagInfos { get; set; }
///
/// 工位信息
///
public static StationInfo StationInf { get; set; }
///
/// 物料条码
///
public static string PieceCode { get; set; }
///
/// 保存数据到数据库完成
///
public static bool ReadDataOk { get; set; }
///
/// 质量数据Id
///
public static long QualityId { get; set; }
///
/// 业务逻辑
///
public static void CycleRunTimer()
{
try
{
if (ServiceData.OpcTags.Where(p => p.TagId == StationCommunicatedTagInfos.Where(q => q.TagMarkCode == 1020).First().TagId).First().GetValue() == 0)
{
ReadDataOk = false;
}
//无允许保存信号 所有靠网结果为1 自动保存数据
if (!ReadDataOk)
{
if(PieceCode==null)
{
return;
}
//填充质量数据
string sql = "update ProductQuality_Electric set ";
foreach (var item in StationQualityTagInfos)
{
byte KwValue = ServiceData.OpcTags.Where(p => p.TagId == item.TagId).First().GetValue();
if (KwValue != 1)
{
return;
}
sql = sql + item.ColName + "=" + ServiceData.OpcTags.Where(p => p.TagId == item.TagId).First().GetValue();
sql = sql + ",";
}
sql = sql.Remove(sql.Length - 1, 1);
sql = sql + $",CheckTime='{DateTime.Now}',OperateTime='{DateTime.Now}' where Id={QualityId}";
ServiceData.GetWorkLog(StationInf.StationCode, ServiceData.GetCodeLineNum(1).ToString(), "保存质量数据", sql);
if (SqlSugarAdo.ExecuteCommand(sql) > 0)
{
ReadDataOk = true;
}
}
}
catch(Exception ex)
{
LogHelper.WriteLog(LogHelper.GetMethodInfo(), ex);
}
}
///
/// 扫描条码事件触发的方法
///
///
///
public static void BarCode(string stationCode, string barCode)
{
try
{
if (stationCode != "OP25") return;
// 验证条码 并写入扫描完成 根据条码查询质量数据 根据质量数据查询基础信息
ServiceData.GetWorkLog(StationInf.StationCode, ServiceData.GetCodeLineNum(1).ToString(), "扫描条码", barCode);
PieceCode = barCode;
QualityId = ProductQuality_Electric.Query(p => p.PieceCode == barCode && p.ProductTypeCode == 3).ToList().First().Id;
ServiceData.PlcServer.Write(StationCommunicatedTagInfos.Where(p => p.TagMarkCode == 1020).First().TagAddr, Convert.ToByte(1));
ServiceData.GetWorkLog(StationInf.StationCode, ServiceData.GetCodeLineNum(1).ToString(), "扫描完成", 1);
}
catch (Exception ex)
{
LogHelper.WriteLog(LogHelper.GetMethodInfo(), ex);
}
}
}
}