init: 潍柴发动机线 中央控制程序 项目首次入库

This commit is contained in:
XingCheng3
2026-06-08 12:05:16 +08:00
commit 196c66b9ff
547 changed files with 379162 additions and 0 deletions

View File

@@ -0,0 +1,492 @@
using DC_A95.MES_A95;
using NPOI.OpenXmlFormats.Dml;
using NPOI.SS.Formula.Eval;
using NPOI.SS.Formula.Functions;
using NPOI.Util;
using Opc.Ua;
using OpcBasic;
using Rhino.DocObjects;
using Rhino.Geometry;
using SlMesDbIterface;
using System;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Reflection.Emit;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using SystemFramework;
/// <summary>
///
/// </summary>
namespace MesWork
{
/// <summary>
/// 操作数据库
/// </summary>
public class ExecuteDB
{
/// <summary>
/// 报警开始
/// </summary>
/// <param name="opName"></param>
/// <param name="alarming"></param>
public static void Alarm_Start(string opName,int[] alarming)
{
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
var name = "Event_Alarm_Start";
for (int i = 0; i < alarming.Length ; i++)
{
var alarmCode = alarming[i];
var sqlParameters = new SqlParameter[] {
new SqlParameter("@StationName", opName),
new SqlParameter("@AlarmCode", alarmCode),
new SqlParameter("@ChangeTime", ChangeTime)
};
SqlOperation.ExecuteStoredProcedure(name, sqlParameters, out DataSet ds, out string error);
}
}
/// <summary>
/// 报警结束
/// </summary>
/// <param name="opName"></param>
public static void Alarm_End(string opName)
{
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
var name = "Event_Alarm_End";
var sqlParameters = new SqlParameter[] {
new SqlParameter("@StationName", opName),
new SqlParameter("@ChangeTime", ChangeTime)
};
SqlOperation.ExecuteStoredProcedure(name, sqlParameters, out DataSet ds, out string error);
}
/// <summary>
/// 安东开始
/// </summary>
/// <param name="opCode"></param>
/// <param name="alarmCode">变量类型代码</param>
public static void Alarm_Andon_Start(string opCode, int alarmCode)
{
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
var name = "Event_Alarm_Andon_Start";
var sqlParameters = new SqlParameter[] {
new SqlParameter("@StationName", opCode),
new SqlParameter("@AlarmCode", alarmCode),
new SqlParameter("@ChangeTime", ChangeTime)
};
SqlOperation.ExecuteStoredProcedure(name, sqlParameters, out DataSet ds, out string error);
}
/// <summary>
/// 安东结束
/// </summary>
/// <param name="opCode"></param>
/// <param name="alarmCode"></param>
public static void Alarm_Andon_End(string opCode, int alarmCode)
{
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
var name = "Event_Alarm_Andon_End";
var sqlParameters = new SqlParameter[] {
new SqlParameter("@StationName", opCode),
new SqlParameter("@AlarmCode", alarmCode),
new SqlParameter("@ChangeTime", ChangeTime)
};
SqlOperation.ExecuteStoredProcedure(name, sqlParameters, out DataSet ds, out string error);
}
/// <summary>
/// 安东确认
/// </summary>
/// <param name="opName"></param>
/// <param name="alarmCode"></param>
public static void Alarm_Andon_Sure(string opName, int alarmCode)
{
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
var name = "Event_Alarm_Andon_Sure";
var sqlParameters = new SqlParameter[] {
new SqlParameter("@StationName", opName),
new SqlParameter("@AlarmCode", alarmCode),
new SqlParameter("@ChangeTime", ChangeTime)
};
SqlOperation.ExecuteStoredProcedure(name, sqlParameters, out DataSet ds, out string error);
}
public static DataTable Get_TaskTypeInfo()
{
var sql = $" SELECT [任务类型],[任务类型名称],[质量数据数量]" +
$" ,[数据名称1],[数据单位1],[数据名称2],[数据单位2],[数据名称3],[数据单位3],[数据名称4],[数据单位4]" +
$" FROM [配方_大柴_任务类型]";
SqlOperation.ExecuteSql(sql, out DataTable dt, out string err);
return dt;
}
public static void Save_StationPass_Info(string engineNo, string engineTypeNo, int palletNo, string orderNum, int orderNo,int orderSum,string processCode, string processName,
string opCode, string opName, int passAttr, string opter, int QualityOk,int PassStatus, int upOrDown, int optFlag,string sortNo_PLC)
{
var weight = -1;
var P_name = "Event_MOM_过点数据";
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
SqlParameter[] Parameters ={
new SqlParameter("@发动机流水号",engineNo),
new SqlParameter("@机型号",engineTypeNo),
new SqlParameter("@托盘号",palletNo),
new SqlParameter("@订单号",orderNum),
new SqlParameter("@订单序号",orderNo),
new SqlParameter("@订单数量",orderSum),
new SqlParameter("@工序编码",processCode),
new SqlParameter("@工序名称", processName),
new SqlParameter("@工位编码",opCode),
new SqlParameter("@工位名称",opName),
new SqlParameter("@过点属性",passAttr),
new SqlParameter("@采集时间",ChangeTime),
new SqlParameter("@操作者",opter),
new SqlParameter("@合格标志",QualityOk),
new SqlParameter("@过站状态",PassStatus),
new SqlParameter("@岔道上下件",upOrDown),
new SqlParameter("@重量",weight),
new SqlParameter("@操作标记",optFlag),
new SqlParameter("@机型标志",sortNo_PLC)
};
SqlOperation.ExecuteStoredProcedure(P_name, Parameters, out string err);
if (err.Length > 0)
{
LogRecord.LogRecord.Insert_Log(Type_Log.Alarm, "", $"Save_StationPass_Info 报错!,,{err}");
}
}
/// <summary>
/// 增加:测量数据索引
/// </summary>
/// <param name="tagTypeCodeID"></param>
/// <param name="engineTypeNo"></param>
/// <param name="engineNo"></param>
/// <param name="opCode"></param>
/// <param name="orderNum"></param>
/// <param name="palletNo"></param>
/// <param name="QCDataCount"></param>
/// <param name="Operator"></param>
/// <param name="QuaulityFlag"></param>
/// <param name="Id_tagCF"></param>
public static void Save_MeasureData_Index(int tagTypeCodeID, string engineTypeNo, string engineNo,string opCode,string orderNum, int palletNo,int QCDataCount, string Operator, int QuaulityFlag, out int Id_tagCF)
{
var P_name = "测量数据合格索引_增加";
Id_tagCF = 0;
SqlParameter[] thisParms = new SqlParameter[10];
thisParms[0] = new SqlParameter("@TagID_CF", tagTypeCodeID);
thisParms[1] = new SqlParameter("@EngineType", engineTypeNo);
thisParms[2] = new SqlParameter("@EngineID", engineNo);
thisParms[3] = new SqlParameter("@工位号", opCode);
thisParms[4] = new SqlParameter("@订单号", orderNum);
thisParms[5] = new SqlParameter("@托盘编号", palletNo);
thisParms[6] = new SqlParameter("@质量数据数量", QCDataCount);
thisParms[7] = new SqlParameter("@操作者工号", Operator);
thisParms[8] = new SqlParameter("@合格标志", QuaulityFlag);
thisParms[9] = new SqlParameter("@Id_tagCF", Id_tagCF);
thisParms[9].Direction = ParameterDirection.Output;
if(SqlOperation.ExecuteStoredProcedure(P_name, thisParms, out string err))
{
Id_tagCF=Convert.ToInt32(thisParms[9].Value.ToString());
}
else
{
Id_tagCF = -1;
}
}
/// <summary>
/// 即时参数存储
/// </summary>
/// <param name="opName"></param>
/// <param name="tagTypeCodeID"></param>
/// <param name="value"></param>
/// <param name="tagID"></param>
public static void Update_ImmediateParam(string opName, int tagTypeCodeID, string value, string tagID)
{
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
var name = "Event_MES_工位_即时参数_变化";
var sqlParameters = new SqlParameter[] {
new SqlParameter("@工位号", opName),
new SqlParameter("@变量类型代码",tagTypeCodeID ),
new SqlParameter("@值",value),
new SqlParameter("@更新时间", ChangeTime),
new SqlParameter("@TagID", tagID),
new SqlParameter("@开始时间", ChangeTime),
new SqlParameter("@结束时间", ChangeTime),
new SqlParameter("@持续时间", 0)
};
SqlOperation.ExecuteStoredProcedure(name, sqlParameters, out DataSet ds, out string error);
}
/// <summary>
/// 设备状态变化
/// </summary>
/// <param name="opName"></param>
/// <param name="tagTypeCodeID"></param>
/// <param name="value"></param>
/// <param name="tagID"></param>
/// <param name="deviceMode"></param>
public static void Event_StationStatus_Changed(string opName, string manual, string running, string alarm, string onLine = "1")
{
var ChangeTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
var name = "Event_StationStatus_Changed";
var sqlParameters = new SqlParameter[] {
new SqlParameter("@工位号", opName),
new SqlParameter("@手动模式", manual),
new SqlParameter("@运行中",running ),
new SqlParameter("@报警",alarm),
new SqlParameter("@在线",onLine),
new SqlParameter("@更新时间", ChangeTime)
};
SqlOperation.ExecuteStoredProcedure(name, sqlParameters, out DataSet ds, out string error);
}
/// <summary>
/// 保存布局
/// </summary>
/// <param name="stationName"></param>
/// <param name="px"></param>
/// <param name="py"></param>
public static void SaveLyout_P(string stationName, int px, int py)
{
var sql =
$" UPDATE [MES_计划BOM_工位与名称] SET [PX] = {px},[PY] = {py}" +
$" WHERE [工位号] = '{stationName}'";
SqlOperation.ExecuteSql(sql, out string error);
}
/// <summary>
/// 保存布局
/// </summary>
/// <param name="stationName"></param>
/// <param name="pxt"></param>
/// <param name="pyt"></param>
public static void SaveLyout_PT(string stationName, int pxt, int pyt)
{
var sql =
$" UPDATE [MES_计划BOM_工位与名称] SET [PX_T] = {pxt},[PY_T] = {pyt}" +
$" WHERE [工位号] = '{stationName}'";
SqlOperation.ExecuteSql(sql, out string error);
}
/// <summary>
/// 查询工位信息
/// </summary>
/// <param name="dt"></param>
public static void Select_Station(out DataTable dt)
{
var sql =
$" SELECT [工位号],[工位名称],[PLC],[PLC代码]," +
$"ISNULL([PX],0) AS PX,ISNULL([PY],0) AS PY,ISNULL([PX_T],0) AS PX_T,ISNULL([PY_T],0) AS PY_T,[控件启用]" +
$" ,[区域代码]" +
$" FROM [MES_计划BOM_工位与名称] WHERE [是否启用MES] = 1" + // AND [ProgramPartial] = {MesWorkForm.ProgramPartial}
$" ORDER BY [工位号]";
SqlOperation.ExecuteSql(sql, out dt, out string error);
}
/// <summary>
/// 检查上线的发动机流水号是否重复
/// </summary>
/// <param name="dt"></param>
public static void Check_Repeat_LineSet(string opcode, string engineNo, out bool ifrepeat)
{
ifrepeat = false;
var sql = $" SELECT count(AID) FROM [大柴_过点信息] where 工位编码='{opcode}' and 发动机流水号='{engineNo}'";
SqlOperation.ExecuteSql(sql, out DataTable dt, out string error);
if (int.Parse(dt.Rows[0][0].ToString()) > 0) ifrepeat = true;
}
public static void Save_ScanRecord_outLineSet(string opCode, string engineNo, string ActualNumber,string Decode_Result)
{
//保存扫码记录
string sql = $@"INSERT INTO[MES_装配数据_零部件扫码记录]([工位号],[发动机流水号],[ActualNumber],[Decode_Result],[MaterialCode], Scanner_No,[操作时间])
VALUES('{opCode}', {engineNo}, '{ActualNumber}', '{Decode_Result}', '{engineNo}', 1, getdate())";
SqlOperation.ExecuteSql(sql,out string error);
}
public static void Get_EngineInfo_OutSide(int AGVCode,out string EngineNo,out int EngineTypeID,out string EngineType,out string OrderNum)
{
//根据agvcode获取发动机信息
string sql = $@"SELECT TOP (1)[发动机流水号],[大机型ID],[机型号],[工单号] FROM [大柴_上线记录_外装线]
where AGV号={AGVCode} and 外装线绑定状态=1 and [发动机流水号]<>'' order by 操作时间 desc";
SqlOperation.ExecuteSql(sql,out DataTable dt,out string error);
if(dt.Rows.Count==1)
{
EngineNo = dt.Rows[0]["发动机流水号"].ToString();
EngineTypeID = int.Parse(dt.Rows[0]["大机型ID"].ToString());
EngineType = dt.Rows[0]["机型号"].ToString();
OrderNum = dt.Rows[0]["工单号"].ToString();
}
else
{
EngineNo = "";
EngineTypeID = 0;
EngineType = "";
OrderNum = "";
}
}
/// <summary>
/// 内装线上线工位:请求下载
/// </summary>
/// <param name="opCode"></param>
/// <param name="partCode"></param>
/// <param name="palletNo"></param>
/// <param name="engineNo"></param>
/// <param name="sortNo"></param>
/// <param name="sortName"></param>
/// <param name="printCode"></param>
/// <param name="orderNo"></param>
public static void Select_OnLine_Plan_Engine(string opCode,string partCode, int palletNo
, out string engineNo
, out int sortNo
, out string sortName
, out string printCode
, out string orderNo
, out int errCode
, out string errMessage
, out int printPosition
)
{
engineNo = "";
sortNo = 0;
sortName = "";
printCode = "";
orderNo = "";
errCode = 0;
errMessage = "";
printPosition = 0;
var name = "Event_Query_上线发动机数据";
var sqlParameters = new SqlParameter[] {
new SqlParameter("@StationName", opCode),
new SqlParameter("@PartCode",partCode ),
new SqlParameter("@PalletNo",palletNo )
};
SqlOperation.ExecuteStoredProcedure(name, sqlParameters, out DataTable dt, out string error);
if (dt.Rows.Count > 0)
{
engineNo = dt.Rows[0]["发动机编号"].ToString();
sortNo = int.Parse(dt.Rows[0]["机型ID"].ToString());
sortName = dt.Rows[0]["机型号"].ToString();
printCode = dt.Rows[0]["缸体打印码"].ToString();
orderNo = dt.Rows[0]["工单号"].ToString();
errCode = Convert.ToInt32(dt.Rows[0]["Code"]);
errMessage = dt.Rows[0]["Message"].ToString();
printPosition = Convert.ToInt32(dt.Rows[0]["PrintPosition"]);
}
}
/// <summary>
/// 执行计划成功上线的发动机更新执行计划为2
/// </summary>
/// <param name="opCode"></param>
/// <param name="engineNo"></param>
public static void Update_ExcutePlan_LineSetOK(string opCode,string engineNo)
{
var name = "Event_执行计划_验证完成";
var sqlParameters = new SqlParameter[] {
new SqlParameter("@StationName", opCode),
new SqlParameter("@EngineNo", engineNo)
};
SqlOperation.ExecuteStoredProcedure(name, sqlParameters,out DataTable dt,out string err);
if (err.Length > 0)
{
LogRecord.LogRecord.Insert_Log(Type_Log.Alarm, "", $"Update_ExcutePlan_LineSetOK 报错!,,{err}");
}
}
public static void Event_OutSide_OnLine(string opCode, string engineNo, int engineTypeID, int orderNo, string engineTypeCode, int agvCode)
{
var name = "Event_OutSide_OnLine";
var sqlParameters = new SqlParameter[] {
new SqlParameter("@StationName", opCode),
new SqlParameter("@EngineNo", engineNo),
new SqlParameter("@EngineTypeNo",engineTypeID),
new SqlParameter("@OrderNo",orderNo ),
new SqlParameter("@EngineTypeCode",engineTypeCode),
new SqlParameter("@AgvCode",agvCode),
};
SqlOperation.ExecuteStoredProcedure(name, sqlParameters, out string error);
}
public static bool Event_QueryRecipes_ColdTest(string opCode, string sortNo, out DataTable dt)
{
var name = "Event_QueryRecipes_ColdTest";
var sqlParameters = new SqlParameter[] {
new SqlParameter("@StationName", opCode),
new SqlParameter("@SortNo",sortNo),
};
return SqlOperation.ExecuteStoredProcedure(name, sqlParameters, out dt, out string error);
}
}
}