Files
2-BeiqiFutian-MesProject/MisDataFunction/MesServer.Function/Function1056/Methods/EngineGetOverBaseWork.cs
2026-05-29 13:44:10 +08:00

138 lines
5.9 KiB
C#
Raw 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 bizFacade;
using MesServerWork;
namespace MesServerFunctions
{
partial class FunctionMES
{
/// <summary>
/// 正常逻辑工作(传递机型)
/// </summary>
/// <param name="OpName"></param>
/// <param name="EngineTypeID"></param>
/// <param name="EngineType"></param>
/// <param name="EngineID"></param>
/// <param name="PartPallet_Code"></param>
private void EngineTypeGetOver_PLC_Work(string OpName, int EngineTypeID, string EngineType, string EngineID, int PartPallet_Code,string OrderForm)
{
int IsAllowWork;
int RepairPartStatusPLC = 0;
int MES_QualityMask = 1;
DataTable dt;
dt = BaseDataSystemMES.EngineTypeChange(OpName, EngineType);
//提示机型发生变化
if (dt.Rows.Count > 0)
{
string mesValue = Newtonsoft.Json.JsonConvert.SerializeObject(dt);//<DoWhatPlc.CustomeEvetnArgs>(recData);
string message = "MES|MaterialList_Dif_Resources|" + OpName + "|" + mesValue;
SendMessage.AsyncSendMessage(message);
}
// 判断这个工位今天是否已经工作过,没有弹出工作注意提示
DataTable dt2 = BaseDataSystemMES.ToDayIsWork(OpName);
if (dt2.Rows[0]["result"].ToString() == "1")
{
// 发送页面消息提示注意事项
SendMessageFun.SendInfomation("ShowTipBox", "请注意检查油箱剩余油量!", OpName);
}
//电子看板_装配零件_临时表_增加_北汽
//第二步将零件信息转移到零件_临时表中
BaseDataSystemMES.MesServer_Process_EngineTypeOverBQ(OpName);
//通知web显示
SendMessageFun.SendMessage("1235", "1111", OpName);
MIS_BASE.Read_PalletInfo(OpName, out MES_QualityMask);//合格标志
MIS_BASE.Read_RepairStatus_PLC(OpName, out RepairPartStatusPLC);//返修标志
SendMessageFun.SendInfomation("QualityMask", Convert.ToString(MES_QualityMask), OpName);//显示合格标志
SendMessageFun.SendInfomation("RepairPartStatusPLC", Convert.ToString(RepairPartStatusPLC), OpName);//显示返修标志
if (MES_QualityMask == 2)
{
//工作完成
//MIS_BASE.Write_MaterialVerifyOver(OpName, true);
//SendMessageFun.SendInfomation("NgGO", "1", OpName);//显示不合格标志
//return;
}
//读取当前PKB类型发送给PLC(112)
// 发送有无pkB 若有就发1
if (BaseDataSystemMES.Get_IsExistPKB(EngineType))
{
MIS_BASE.WritePLC(112, OpName, 1);
}
//第三步,用于工件离开后完工数量统计及工件编号追溯
//BaseDataSystemMES.MaterialPush_EngineIDStatus_Insert(OpName);//更新订单产量
// 读取当前工件螺丝数量
DataTable dt3 = BaseDataSystemMES.Get_WorkPositionSizeByPBOM(OpName, EngineType);
// 变量类型代码数组
// 128 ~ 167
//遍历 将所需要写入地址的值读取出来写入到相应地址中
for (int i = 0; i <= dt3.Rows.Count - 1; i++)
{
// 读取当前行的数据 判断该放到第几行 将对于的数据放到对应数据区中
// 获取OP操作号 用于判断放哪个地址
int OPNumber = Convert.ToInt32(dt3.Rows[i]["OP本工位操作顺序号"]);
// 128 ~ 137 操作类型
MIS_BASE.WritePLC(127 + OPNumber, OpName, dt3.Rows[i]["主线设备操作类型"]);
// 138 ~ 147 拧紧程序号
MIS_BASE.WritePLC(137 + OPNumber, OpName, dt3.Rows[i]["拧紧程序号"]);
// 148 ~ 157 螺栓数量
MIS_BASE.WritePLC(147 + OPNumber, OpName, dt3.Rows[i]["传递数量"]);
// 158 ~ 167 OP操作号(操作顺序 预留) 目前不用写入这个而是根据这个判断数据放对应区第几行
}
//判断当前工件是否为售后机型 0.7(53)
int Aftermarket;
DataTable dt4 = BaseDataSystemMES.Get_EngineAftermarketType(EngineType);
Aftermarket = Convert.ToInt32(dt4.Rows[0]["是否售后机型"]);
MIS_BASE.WritePLC(53, OpName, Aftermarket);
//第四步,获取是否允许工作
BaseDataSystemMES.MesServer_Judge_IsCanWork(OpName, out IsAllowWork);
//暂时先定义为扫描完成才能进行压装工作,因为考虑到工作完成后,操作工未必会去扫描物料的情况
if (IsAllowWork == 1)
{
//通知PLC允许工作,允许工作在保存完成时清空
MIS_BASE.Write_FixAllow(OpName, true);
}
else
{
SendMessageFun.AsyncSendMessage_Notice(OpName, "请扫描物料!");
}
}
/// <summary>
/// 返修件需要工作
/// </summary>
/// <param name="OpName">工位号</param>
private void IsNeedRepaire_OK(string OpName)
{
string orderForm = "";
int engineTypeID;
string engineType = "";
string engineID = "";
string palletCode = "";
int isRepair;
string repairCode = "";
//从监控系统中查询出本工位信息
BaseDataSystemMES.OpName_MIS_Moby_Select(OpName,
out orderForm, out engineTypeID, out engineType,
out engineID, out palletCode, out isRepair, out repairCode);
EngineTypeGetOver_PLC_Work(OpName, engineTypeID, engineType, engineID, Convert.ToInt32(palletCode),orderForm);
}
}
}