Files
XingCheng3 02e3b2f302 chore: 清理误跟踪的编译产物并完善 .gitignore
- .gitignore 增加 bin/obj、MisDataFun_Exe 部署二进制(dll/pdb/exe)、日志、.vs、packages 等忽略规则
- 从版本库移除 bin/obj/部署目录等编译中间产物(工作区文件保留)
- 提交 MisDataFun.DB.cs、Function1055/1056/1061 等源码改动
- 删除废弃的 Function1062 模块
2026-05-31 10:19:23 +08:00

109 lines
5.2 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.Linq;
using System.Threading;
using MesDataFunction;
//using SystemFramework;
using MesServerWork;
using MisDataFunDll;
using MisDataSaveDate;
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
{
var msgEvent = (DeviceDriver_BasicData.CustomeEvetnArgs)e;
string OpName = Convert.ToString(msgEvent.OpName);
string barcode = Convert.ToString(msgEvent.TagValue);
string AlarmStr = "";
int IsAllowWork;
bool IsSuccess = false;
string msg = "";
// 如果有申请上线扫码就是为了获取产品信息
MIS_BASE.Read_PartLoad(OpName, out bool isPartLoad);
MIS_BASE.Read_EngineTypeGetOver_MES(OpName, out bool isEngineTypeGetOverMes);
if (isPartLoad && !isEngineTypeGetOverMes)
{
if (MisDataBaseFun.WriteEngineDataByEngineID(OpName, barcode)) return; // 获取产品信息成功
}
bool EngineGetOver_PLC_NextWorkStep;
//传递机型是否到位
MIS_BASE.Read_EngineGetOver_PLC(OpName, out EngineGetOver_PLC_NextWorkStep);
if (!EngineGetOver_PLC_NextWorkStep)
{
string msgErr = $"【{OpName}】无法扫码PLC未传递机型";
SendMessageFun.AsyncSendMessage_Notice_Error(OpName, msgErr, "条码扫描");
MisDataFun.LogRecording_OP(OpName, "ERROR", "barcode", msgErr);
return;
}
MIS_BASE.GetEngineTypeFromPLC(OpName, out int EngineTypeID, out string EngineType, out string EngineID, out int PartPallet_Code, out string OrderForm);
MisDataFun.Moby_Select_PDC(EngineID, out OrderForm, out EngineType, out int EngineTypeID2);
if (!MisDataBaseFun.CheckMesApiIsOk(OpName, EngineID, "miFindCustomAndSfcData")) return; // 验证入站接口是否成功!
// 验证托盘码
int ScanPalletCodeStatu = MisDataBaseFun.ScanPalletCode(OpName,barcode,EngineID);
if (ScanPalletCodeStatu == 2) return;
if(ScanPalletCodeStatu == 3) // 本次扫码完走传递机型
{
MisDataFun.OpName_MIS_MOBY_Insert(OpName, EngineTypeID, EngineType, EngineID, PartPallet_Code, OrderForm, 0, 0, "");
EngineTypeGetOver_PLC_Work(OpName, EngineTypeID, EngineType, EngineID, PartPallet_Code, OrderForm);
return;
}
//if (OpName == "OP200" && isPartLoad)
// 这是一个防错方法 判断200扫码工位 如果出现 产品到位 传递机型未完成时扫码 无物料与拧紧的情况下 会直接跳到出站 给一秒缓冲时间 确保物料已入库
//if (MisDataFun.Moby_Select_OP200_DelayResult(OpName, EngineID) == 1) Thread.Sleep(1000);
// 防竞态:检查拧紧+物料临时表数据是否已由传递机型流程写入
if (!MisDataFun.TightenStation_CheckDataReady(OpName, EngineID)) return;
//物料验证 先本地校验成功之后在向工厂MES校验
MisDataFun.PartMaterial_DM_Check(OpName, barcode, EngineID, out int isOk, out bool MesCheck, out bool isAllBatchCheck, out bool ShowBox, out string DMmsg, out string MaterialsCode, out string batchCode, out int ID, out bool isBatch);
MisDataFun.MesServer_Judge_IsCanWork(OpName, out IsAllowWork);
if (IsAllowWork == 1)
{
//更新订单完工数量及物料
SendMessageFun.SendMessage("2", "11", OpName);
//手动拧紧 进 拧紧逻辑
InitWorkStep(OpName, EngineTypeID, EngineType, EngineID);
}
else
{
SendMessageFun.AsyncSendMessage_Notice(OpName, "请继续扫描物料!");
}
}
catch (Exception err)
{
////ApplicationLog.WriteLog(err, "Function02:Barcode");
}
}
}
}
}