Files
2026-05-29 13:44:10 +08:00

110 lines
5.6 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Data;
using System.Net.NetworkInformation;
using System.Windows.Forms;
using bizFacade;
//using SystemFramework;
using MesServerWork;
namespace MesServerFunctions
{
partial class FunctionMES
{
/// <summary>
///1.扫描配送单号用于接收物料扫描单号的时候将接收的物料信息显示在“物料拉动”Tab区域
///2.扫描料箱标签/看板卡,用于追溯物料批次信息
///3.扫描零件条码,根据零件图号进行防错
///第一步,判断条码类型,根据条码类型,执行对应的存储过程
///第二步,条码类型(将扫描的条码保存到对应的表中)
///第三步,扫描完成之后给出允许工作信号
/// 处理页面扫描条码
/// </summary>
/// <param name="OpName"></param>
/// <param name="barcode"></param>
public void Barcode(object e)
{
{
try
{
DoWhatPlc.CustomeEvetnArgs msgEvent = (DoWhatPlc.CustomeEvetnArgs)e;
string OpName = Convert.ToString(msgEvent.OpName);
string barcode = Convert.ToString(msgEvent.TagValue);
SendMessageFun.SendInfomation("BarCodeData", barcode, OpName); // 将扫码值发送给前端
string AlarmStr = "";
bool isShowBarNGTipBox;
int IsAllowWork;
bool IsSuccess = false;
bool EngineGetOver_PLC_NextWorkStep;
// 判断是否存在异常导致不允许工作 输出msg到前端
DataTable OpNameIsWorkDt = BaseDataSystemMES.OpNameIsAllowWork(OpName);
if (Convert.ToInt32(OpNameIsWorkDt.Rows[0]["提示类型"]) == 3)
{
SendMessageFun.SendInfomation("ShowTipBox", OpNameIsWorkDt.Rows[0]["提示文本"].ToString(), OpName);
return;
}
//传递机型是否到位
MIS_BASE.Read_EngineGetOver_PLC(OpName, out EngineGetOver_PLC_NextWorkStep);
if (!EngineGetOver_PLC_NextWorkStep)
{
SendMessageFun.AsyncSendMessage_Notice(OpName, "PLC未传递机型");
isShowBarNGTipBox = BaseDataSystemMES.Check_BarCodeNGTemp(OpName, 1);
if (isShowBarNGTipBox) SendMessageFun.SendInfomation("ShowTipBox", "多次扫描条码失败,请检查扫码位置是否正确!", OpName);
return;
}
if(barcode == "")
{
SendMessageFun.AsyncSendMessage_Notice(OpName, "前壳码内容不能为空,请重试");
isShowBarNGTipBox = BaseDataSystemMES.Check_BarCodeNGTemp(OpName, 1);
if (isShowBarNGTipBox) SendMessageFun.SendInfomation("ShowTipBox", "多次扫描条码失败,请检查扫码位置是否正确!", OpName);
return;
}
MIS_BASE.Read_EngineTypeID(OpName, out int EngineTypeID);
if (EngineTypeID == 2 || EngineTypeID == 4)
{
if (!(barcode.Split(';').Length > 2 || barcode.Split('').Length > 2 || barcode.Split('*').Length > 2))
{
SendMessageFun.AsyncSendMessage_Notice(OpName, "请扫描正确的前壳码");
isShowBarNGTipBox = BaseDataSystemMES.Check_BarCodeNGTemp(OpName, 1);
if (isShowBarNGTipBox) SendMessageFun.SendInfomation("ShowTipBox", "多次扫描条码失败,请检查扫码位置是否正确!", OpName);
return;
}
}
String orderForm = MIS_BASE.ReadPLC(39, OpName).ToString();
String EngineID = MIS_BASE.ReadPLC(10, OpName).ToString();
String EngineType = MIS_BASE.ReadPLC(11, OpName).ToString();
//物料验证 J07MA020 工位的 EngineID 对应的装配的线外零件号与当前工位J07MA040的扫描的线外工位号相等
BaseDataSystemMES.BusPartLine_Check(barcode, "J07MA020", EngineID, out IsSuccess);
if (!IsSuccess)
{
SendMessageFun.AsyncSendMessage_Notice(OpName, "前壳条码无效,请确认");
isShowBarNGTipBox = BaseDataSystemMES.Check_BarCodeNGTemp(OpName, 1);
if (isShowBarNGTipBox) SendMessageFun.SendInfomation("ShowTipBox", "多次扫描条码失败,请检查扫码位置是否正确!", OpName);
return;
}
else
{
MIS_BASE.Write_FixAllow(OpName, true);
BaseDataSystemMES.BusPartLine_Add(EngineID, barcode, OpName, orderForm, EngineType);
SendMessageFun.AsyncSendMessage_Notice(OpName, "扫码成功,请开始工作!");
}
}
catch (Exception err)
{
// 保存出错日志 1.申请上线 2.传递机型 3.允许保存 4.扫码
MisDataSaveDate.FuntionMesRead.Alarm_SaveFileLog4Error(4, e, "Fun1055", err);
////ApplicationLog.WriteLog(err, "Function02:Barcode");
}
}
}
}
}