init: 导入项目到 meswork Gitea
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
using bizFacade;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Data;
|
||||
using SystemFramework;
|
||||
|
||||
namespace MesDataFunctionWebApi
|
||||
{
|
||||
partial class Function
|
||||
{
|
||||
|
||||
private static void Heartbeat(string opName, string tagValue)
|
||||
{
|
||||
if (tagValue == "1")
|
||||
{
|
||||
Write_TagTypeID(15, opName, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Write_TagTypeID(15, opName, false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
|
||||
using MesServerWork;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using SystemFramework;
|
||||
|
||||
namespace MesDataFunctionWebApi
|
||||
{
|
||||
public partial class Function: MIS_BASE
|
||||
{
|
||||
/// <summary>
|
||||
/// 处理MIS逻辑
|
||||
/// </summary>
|
||||
/// <param name="e"></param>
|
||||
public static void MIS_Funtion(object e)
|
||||
{
|
||||
try
|
||||
{
|
||||
int tagType;
|
||||
string opName;
|
||||
string tagValue;
|
||||
int tagid;
|
||||
OpcData.CustomeEvetnArgs msgEvent = (OpcData.CustomeEvetnArgs)e;
|
||||
if (msgEvent.TagValue == null) return;
|
||||
tagType = Convert.ToInt32(msgEvent.TagType);
|
||||
opName = msgEvent.OpName.ToString();
|
||||
tagid = Convert.ToInt32(msgEvent.TagKey);
|
||||
switch (Convert.ToInt32(msgEvent.TagValueType))
|
||||
{
|
||||
case 11:
|
||||
tagValue = (Convert.ToInt32(msgEvent.TagValue)).ToString();
|
||||
break;
|
||||
default:
|
||||
tagValue = msgEvent.TagValue.ToString();
|
||||
break;
|
||||
}
|
||||
///根据信号处理逻辑
|
||||
switch (tagType)
|
||||
{
|
||||
case 19:
|
||||
//允许保存
|
||||
MesRead(opName, tagValue, tagid);
|
||||
break;
|
||||
case 14:
|
||||
//心跳
|
||||
Heartbeat(opName, tagValue);
|
||||
break;
|
||||
case 44://PLC传递机型过后 才允许保存过站信息,否则不允许保存
|
||||
if (tagValue == "1")
|
||||
{
|
||||
IsEngTypeGetOver_Write(opName, true);
|
||||
|
||||
EngineData Enginedata = new EngineData(MesDataFunction.OpcOperation.ReadPLC(10, opName).ToString(), Convert.ToInt32(MesDataFunction.OpcOperation.ReadPLC(80, opName)));
|
||||
//保存产品编号、托盘号 保存过站信息用
|
||||
EngineData_Hash_Write(opName, Enginedata);
|
||||
}
|
||||
break;
|
||||
case 2://工件到位
|
||||
WorkStart(opName, tagValue);
|
||||
break;
|
||||
case 51:
|
||||
if (hashtableOpName_IsHaveComputer[opName].ToString() == "1")
|
||||
{
|
||||
SaveProductLeaveData(opName, 1);
|
||||
}
|
||||
|
||||
break;
|
||||
case 8:
|
||||
if (hashtableOpName_IsHaveComputer[opName].ToString() == "1")
|
||||
{
|
||||
SaveProductLeaveData(opName, 2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
ApplicationLog.WriteLog(err, err.Message);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,408 @@
|
||||
using BasicData;
|
||||
using bizFacade;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Data;
|
||||
using SystemFramework;
|
||||
|
||||
namespace MesDataFunctionWebApi
|
||||
{
|
||||
partial class Function
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取质量数据Hashtable
|
||||
/// </summary>
|
||||
/// <param name="opName"></param>
|
||||
/// <returns></returns>
|
||||
static public Hashtable ReadPLC_Sync_DataList_MesRead(string opName)
|
||||
{
|
||||
return (Hashtable)MesDataFunctionWebApi.OpcOperation.ReadPLC_Sync_DataList_MesRead(opName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 允许保存(针对半自动和手动压装工位)
|
||||
/// </summary>
|
||||
/// <param name="OpName"></param>
|
||||
/// <param name="tagValue"></param>
|
||||
private static void MesRead(string opName, string tagValue, int tagid)
|
||||
{
|
||||
if (tagValue == "0")
|
||||
{
|
||||
Write_TagTypeID(20, opName, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
SaveQualityData(opName, Convert.ToInt32(tagValue), tagid);
|
||||
}
|
||||
}
|
||||
|
||||
private static void SaveQualityData(string opName, int tagValue, int tagID)
|
||||
{
|
||||
try
|
||||
{
|
||||
int id_tagCF;
|
||||
int qualityMask = 0;
|
||||
int engineTypeID = 0;
|
||||
string engineID = "";
|
||||
string engineType = "";
|
||||
string engineTraceCode = "";
|
||||
string engineCap = "";
|
||||
string partPallet = "";
|
||||
DataTable dt_WWW;
|
||||
dt_WWW = BaseDataSystemMES.BuildDataTables_WWW();
|
||||
Hashtable valueList;
|
||||
valueList = ReadPLC_Sync_DataList_MesRead(opName);
|
||||
valueList = GetQualityData_GoodBad_Values(valueList);
|
||||
int mes_MustTest = 0;
|
||||
int onLineState = 0;
|
||||
int partMoveDirection = 0;
|
||||
int pressIsOK = 0;
|
||||
int pressIsNoOK = 0;
|
||||
BaseDataSystemMES.GetQualityDataTable_B5A(valueList, opName, BasicDataTagValue,
|
||||
BasicDataTagValueUpDown,
|
||||
out dt_WWW,//数据列表
|
||||
out qualityMask,//工位合格标志
|
||||
out engineTypeID,//发动机类型代码
|
||||
out engineID,//发动机编号
|
||||
out engineType, //发动机型号
|
||||
out partPallet,//托盘编号
|
||||
out engineTraceCode, //发动机条码
|
||||
out engineCap,//缸盖号,
|
||||
hashtable_EngineTypeID,//发动机类型转换表
|
||||
out mes_MustTest, out onLineState, out partMoveDirection, out pressIsOK, out pressIsNoOK);
|
||||
|
||||
|
||||
|
||||
|
||||
// 1:通过监控系统保存采集的质量数据;0:不通过监控系统保存采集的质量数据
|
||||
if (Convert.ToInt32(hashtable_tagTable_OpName_SaveData[opName]) != 0)
|
||||
{
|
||||
DateTime lastupdatetime = DateTime.Now;
|
||||
|
||||
BaseDataSystemMES.BaseData_tagTable_QualityData_B5A_IndexInsert(engineID, tagID, engineType, engineTypeID, opName, qualityMask, partPallet, out id_tagCF);
|
||||
BaseDataSystemMES.BaseData_tagTable_QualityData_B5A_Insert(id_tagCF, engineTypeID, engineID, opName, dt_WWW);
|
||||
|
||||
}
|
||||
Write_TagTypeID(20, opName, true);
|
||||
#region
|
||||
//string orderForm = "";
|
||||
//string operatorCode = "";
|
||||
//int shiftCode = 1;
|
||||
//DateTime arrivedTime;
|
||||
//DateTime leavedTime;
|
||||
//int TimeDiff;
|
||||
//int targetTime = 0;
|
||||
//string lineType = "";
|
||||
//string isPass;
|
||||
//int machineWorkOn = 0;
|
||||
//int arrivedOrLeaved = 2;
|
||||
//int cartColorOpName = 0;
|
||||
//int cartColorConfirm = 0;
|
||||
//// int partMoveDirection;
|
||||
//int partGoOver = 0;
|
||||
//if (qualityMask == 1)
|
||||
//{
|
||||
// isPass = "PASS";
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// isPass = "FAIL";
|
||||
//}
|
||||
|
||||
////工位上下线类型
|
||||
////(0普通工位)(1正常上线)(2正常下线)(3返修上线)(4返修下线)
|
||||
//int OpNameUpDownType;
|
||||
//OpNameUpDownType = Convert.ToInt32(hashtableOpName_OpType[opName]);
|
||||
//arrivedTime = (DateTime)m_WorkStart_OpName_Time[opName];
|
||||
//leavedTime = DateTime.Now;
|
||||
//TimeDiff = Convert.ToInt32(leavedTime.Subtract(arrivedTime).TotalSeconds);
|
||||
|
||||
//lineType = hashtableOpName_LineType[opName].ToString();
|
||||
|
||||
//string isHaveComputer = hashtableOpName_IsHaveComputer[opName].ToString();
|
||||
////isHaveComputer = MIS_BASE.hashtable_tagTable_OpName_SaveData[opName].ToString();
|
||||
////有计算机的工位,通过工位计算机保存[测量数据发动机在线状态]。
|
||||
//if (Convert.ToInt32(isHaveComputer) == 0)
|
||||
//{
|
||||
// //1->0 工件离开 工件刚刚离开
|
||||
// if (Convert.ToInt32(m_WorkStart_OpName[opName]) == 1)
|
||||
// {
|
||||
|
||||
// //[测量数据发动机在线状态]
|
||||
// QualityDataSystem.WorkStartInsert
|
||||
// (opName, orderForm, engineTypeID, engineType, engineID, partPallet.ToString(), operatorCode, shiftCode,
|
||||
// arrivedTime, leavedTime, TimeDiff, targetTime, lineType, isPass, machineWorkOn,
|
||||
// arrivedOrLeaved, cartColorOpName, cartColorConfirm, partMoveDirection, partGoOver, mes_MustTest, onLineState, OpNameUpDownType);
|
||||
// }
|
||||
//}
|
||||
#endregion
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
Write_TagTypeID(20, opName, true);
|
||||
ApplicationLog.WriteLog(err, err.Message);
|
||||
}
|
||||
|
||||
}
|
||||
public static void SaveQualityData_Mes(string opName, int tagID)
|
||||
{
|
||||
try
|
||||
{
|
||||
int id_tagCF;
|
||||
int qualityMask = 0;
|
||||
int engineTypeID = 0;
|
||||
string engineID = "";
|
||||
string engineType = "";
|
||||
string engineTraceCode = "";
|
||||
string engineCap = "";
|
||||
string partPallet = "";
|
||||
DataTable dt_WWW;
|
||||
dt_WWW = BaseDataSystemMES.BuildDataTables_WWW();
|
||||
Hashtable valueList;
|
||||
valueList = ReadPLC_Sync_DataList_MesRead(opName);
|
||||
valueList = GetQualityData_GoodBad_Values(valueList);
|
||||
int mes_MustTest = 0;
|
||||
int onLineState = 0;
|
||||
int partMoveDirection = 0;
|
||||
int pressIsOK = 0;
|
||||
int pressIsNoOK = 0;
|
||||
BaseDataSystemMES.GetQualityDataTable_B5A(valueList, opName, BasicDataTagValue,
|
||||
BasicDataTagValueUpDown,
|
||||
out dt_WWW,//数据列表
|
||||
out qualityMask,//工位合格标志
|
||||
out engineTypeID,//发动机类型代码
|
||||
out engineID,//发动机编号
|
||||
out engineType, //发动机型号
|
||||
out partPallet,//托盘编号
|
||||
out engineTraceCode, //发动机条码
|
||||
out engineCap,//缸盖号,
|
||||
hashtable_EngineTypeID,//发动机类型转换表
|
||||
out mes_MustTest, out onLineState, out partMoveDirection, out pressIsOK, out pressIsNoOK);
|
||||
// 1:通过监控系统保存采集的质量数据;0:不通过监控系统保存采集的质量数据
|
||||
if (Convert.ToInt32(hashtable_tagTable_OpName_SaveData[opName]) != 0)
|
||||
{
|
||||
DateTime lastupdatetime = DateTime.Now;
|
||||
BaseDataSystemMES.BaseData_tagTable_QualityData_B5A_IndexInsert(engineID, tagID, engineType, engineTypeID, opName, qualityMask, partPallet, out id_tagCF);
|
||||
//BaseDataSystemMES.BaseData_tagTable_QualityData_B5A_Insert(id_tagCF, engineTypeID, engineID, opName, dt_WWW);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
Write_TagTypeID(20, opName, true);
|
||||
ApplicationLog.WriteLog(err, err.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 确定合格标志
|
||||
/// </summary>
|
||||
/// <param name="valuList"></param>
|
||||
/// <returns></returns>
|
||||
static public Hashtable GetQualityData_GoodBad_Values(Hashtable valuList)
|
||||
{
|
||||
try
|
||||
{
|
||||
Hashtable valuList_Temp;
|
||||
valuList_Temp = (Hashtable)valuList.Clone();
|
||||
int[] value_GoodBad_New = new int[128];
|
||||
int tagID;
|
||||
QualityDataType value;
|
||||
//1:获得合格标志
|
||||
foreach (DictionaryEntry de in valuList) //ht为一个Hashtable实例
|
||||
{
|
||||
tagID = Convert.ToInt32(de.Key);
|
||||
value = (QualityDataType)de.Value;
|
||||
|
||||
//拧紧数据合格标志
|
||||
if (value.tagProperty == 1)
|
||||
{
|
||||
if (value.tagTypeID == 8203)
|
||||
{
|
||||
value_GoodBad_New = (int[])value.tagValue;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
value_GoodBad_New[value.tagOrderBy - 1] = Convert.ToInt32(value.tagValue);
|
||||
}
|
||||
}
|
||||
//拧紧数据合格标志
|
||||
if (value.tagProperty == 8)
|
||||
{
|
||||
if (value.tagTypeID == 8203)
|
||||
{
|
||||
value_GoodBad_New = (int[])value.tagValue;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
value_GoodBad_New[value.tagOrderBy - 1] = Convert.ToInt32(value.tagValue);
|
||||
}
|
||||
}
|
||||
//压装数据合格标志
|
||||
if (value.tagProperty == 7)
|
||||
{
|
||||
value_GoodBad_New[value.tagOrderBy - 1] = Convert.ToInt32(value.tagValue);
|
||||
}
|
||||
}
|
||||
//将合格标志赋予每个变量
|
||||
foreach (DictionaryEntry de in valuList) //ht为一个Hashtable实例
|
||||
{
|
||||
tagID = Convert.ToInt32(de.Key);
|
||||
value = (QualityDataType)de.Value;
|
||||
//201706061720新加
|
||||
if (value .tagTypeID ==11)
|
||||
{
|
||||
if (value.tagValue.ToString ()=="False")
|
||||
{
|
||||
value.tagValue ="0";
|
||||
}
|
||||
else
|
||||
{
|
||||
value.tagValue = "1";
|
||||
}
|
||||
valuList_Temp[tagID] = value;
|
||||
//value.tagValue = Convert.ToInt32(value.tagValue);
|
||||
}
|
||||
|
||||
|
||||
//测量变量
|
||||
if (value.tagProperty == 2 || value.tagProperty == 6)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (value_GoodBad_New != null)
|
||||
{
|
||||
value.isGoodBad = Convert.ToInt32(value_GoodBad_New[value.tagOrderBy - 1]);
|
||||
valuList_Temp[tagID] = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
value.isGoodBad = 0;
|
||||
valuList_Temp[tagID] = value;
|
||||
}
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
ApplicationLog.WriteLog(err, err.Message);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
return valuList_Temp;
|
||||
}
|
||||
catch//转换出了故障时
|
||||
{
|
||||
return valuList;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 制定工位PLC是否传递过机型 (默认不传递机型不保存过站信息)
|
||||
/// </summary>
|
||||
static Hashtable EngTypeGetOver = new Hashtable();
|
||||
|
||||
static Hashtable EngineData_Hash = new Hashtable(); //保存
|
||||
|
||||
public static void IsEngTypeGetOver_Write(string OpName, bool value)
|
||||
{
|
||||
if (EngTypeGetOver.ContainsKey(OpName))
|
||||
{
|
||||
EngTypeGetOver[OpName] = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
EngTypeGetOver.Add(OpName, value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static bool IsEngTypeGetOver_Read(string OpName)
|
||||
{
|
||||
if (EngTypeGetOver.ContainsKey(OpName))
|
||||
{
|
||||
return Convert.ToBoolean(EngTypeGetOver[OpName]);
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static void EngineData_Hash_Write(string OpName, object value)
|
||||
{
|
||||
if (EngineData_Hash.ContainsKey(OpName))
|
||||
{
|
||||
EngineData_Hash[OpName] = value;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
EngineData_Hash.Add(OpName, value);
|
||||
}
|
||||
}
|
||||
|
||||
public static object EngineData_Hash_Read(string OpName)
|
||||
{
|
||||
if (EngineData_Hash.ContainsKey(OpName))
|
||||
{
|
||||
return EngineData_Hash[OpName];
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private DataTable ChangeQualificationMark(DataTable dt)
|
||||
{
|
||||
var dtNew = dt.Copy();
|
||||
for (int i = 0; i < dt.Rows.Count; i++)
|
||||
{
|
||||
var 变量排序 = dt.Rows[i]["变量排序"].ToString();
|
||||
if (变量排序 == "0")
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return dtNew;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
struct EngineData
|
||||
{
|
||||
public EngineData(string engineID, int pallet)
|
||||
{
|
||||
EngineID = engineID;
|
||||
Pallet = pallet;
|
||||
}
|
||||
|
||||
public string EngineID;//工件编号
|
||||
//public string EngineType;
|
||||
//public int EngineTypeID;
|
||||
public int Pallet;//托盘号
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,263 @@
|
||||
using BasicData;
|
||||
using bizFacade;
|
||||
using DataLinkMesWork;
|
||||
using MesServerWork;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using SystemFramework;
|
||||
|
||||
namespace MesDataFunctionWebApi
|
||||
{
|
||||
partial class Function
|
||||
{
|
||||
/// <summary>
|
||||
/// 工件到位与离开时,清空MES自身信号
|
||||
/// </summary>
|
||||
/// <param name="OpName"></param>
|
||||
/// <param name="tagValue"></param>
|
||||
private static void WorkStart(string opName, string tagValue)
|
||||
{
|
||||
try
|
||||
{
|
||||
//工位没有工件,或工件刚刚离开 工件离开工位后,清空该工位的发动机号
|
||||
if (tagValue == "0")
|
||||
{
|
||||
Write_TagTypeID(5, opName, false);//MES传递机型
|
||||
Write_TagTypeID(66, opName, false);//允许工作
|
||||
Write_TagTypeID(51, opName, false);//合格放行
|
||||
Write_TagTypeID(8, opName, false);//不合格放行
|
||||
Write_TagTypeID(7, opName, false);//工作完成
|
||||
Write_TagTypeID(20, opName, false);//保存完成
|
||||
|
||||
string isHaveComputer = hashtableOpName_IsHaveComputer[opName].ToString();
|
||||
if (Convert.ToInt32(isHaveComputer) == 0)//自动工位 读合格标志
|
||||
{
|
||||
if (IsEngTypeGetOver_Read(opName))
|
||||
{
|
||||
//PLC未传递机型 不保存过站信息
|
||||
SaveProductLeaveData_AutoWorkStation(opName, Convert.ToInt32(MesDataFunction.OpcOperation.ReadPLC(21, opName)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//清空信号
|
||||
m_WorkStart_OpName[opName] = 0;//清空工件到位标志
|
||||
//通知WEB更新产量
|
||||
SendActuallyCount(opName,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
//保存工件到达数据
|
||||
m_WorkStart_OpName_Time[opName] = DateTime.Now;
|
||||
m_WorkStart_OpName[opName] = 1;
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
ApplicationLog.WriteLog(err, err.Message);
|
||||
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 保存过站信息 (数据库读机型信息)
|
||||
/// </summary>
|
||||
/// <param name="opName"></param>
|
||||
/// <param name="QualityMark"></param>
|
||||
static void SaveProductLeaveData(string opName, int QualityMark)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!IsEngTypeGetOver_Read(opName))
|
||||
{
|
||||
//PLC未传递机型 不保存过站信息
|
||||
return;
|
||||
}
|
||||
IsEngTypeGetOver_Write(opName, false);//清空传递机型标志
|
||||
|
||||
DateTime arrivedTime;
|
||||
DateTime leavedTime;
|
||||
int TimeDiff;
|
||||
int targetTime = 0;
|
||||
string lineType = "";
|
||||
string isPass;
|
||||
if (QualityMark == 1)
|
||||
{
|
||||
isPass = "PASS";
|
||||
}
|
||||
else
|
||||
{
|
||||
isPass = "FAIL";
|
||||
}
|
||||
//工位上下线类型
|
||||
//(0普通工位)(1正常上线)(2正常下线)(3返修上线)(4返修下线)
|
||||
int OpNameUpDownType;
|
||||
OpNameUpDownType = Convert.ToInt32(hashtableOpName_OpType[opName]);
|
||||
arrivedTime = (DateTime)m_WorkStart_OpName_Time[opName];
|
||||
leavedTime = DateTime.Now;
|
||||
TimeDiff = Convert.ToInt32(leavedTime.Subtract(arrivedTime).TotalSeconds);
|
||||
lineType = hashtableOpName_LineType[opName].ToString();
|
||||
|
||||
//1->0 工件离开 工件刚刚离开
|
||||
if (Convert.ToInt32(m_WorkStart_OpName[opName]) == 1)
|
||||
{
|
||||
WorkStartInsert(opName, arrivedTime, leavedTime, TimeDiff, targetTime, lineType, isPass, OpNameUpDownType);
|
||||
}
|
||||
//通知WEB更新产量
|
||||
SendActuallyCount(opName, 0);
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
ApplicationLog.WriteLog(err, err.Message);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 保存过站信息 (数据库读机型信息)
|
||||
/// </summary>
|
||||
/// <param name="opName"></param>
|
||||
/// <param name="QualityMark"></param>
|
||||
static void SaveProductLeaveData_AutoWorkStation(string opName, int QualityMark)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!IsEngTypeGetOver_Read(opName))
|
||||
{
|
||||
//PLC未传递机型 不保存过站信息
|
||||
return;
|
||||
}
|
||||
IsEngTypeGetOver_Write(opName, false);//清空传递机型标志
|
||||
|
||||
DateTime arrivedTime;
|
||||
DateTime leavedTime;
|
||||
int TimeDiff;
|
||||
int targetTime = 0;
|
||||
string lineType = "";
|
||||
string isPass;
|
||||
if (QualityMark == 1)
|
||||
{
|
||||
isPass = "PASS";
|
||||
}
|
||||
else
|
||||
{
|
||||
isPass = "FAIL";
|
||||
}
|
||||
//工位上下线类型
|
||||
//(0普通工位)(1正常上线)(2正常下线)(3返修上线)(4返修下线)
|
||||
int OpNameUpDownType;
|
||||
OpNameUpDownType = Convert.ToInt32(hashtableOpName_OpType[opName]);
|
||||
arrivedTime = (DateTime)m_WorkStart_OpName_Time[opName];
|
||||
leavedTime = DateTime.Now;
|
||||
TimeDiff = Convert.ToInt32(leavedTime.Subtract(arrivedTime).TotalSeconds);
|
||||
lineType = hashtableOpName_LineType[opName].ToString();
|
||||
|
||||
//1->0 工件离开 工件刚刚离开
|
||||
if (Convert.ToInt32(m_WorkStart_OpName[opName]) == 1)
|
||||
{
|
||||
//查询工件编号、托盘号
|
||||
EngineData Enginedata = (EngineData)EngineData_Hash_Read(opName);
|
||||
WorkStartInsert_AutoWorkStation(opName, Enginedata.EngineID, Enginedata.Pallet, arrivedTime, leavedTime, TimeDiff, targetTime, lineType, isPass, OpNameUpDownType);
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
ApplicationLog.WriteLog(err, err.Message);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 测量数据发动机在线状态_增加数据
|
||||
/// </summary>
|
||||
/// <param name="opName"></param>
|
||||
/// <param name="arrivedTime"></param>
|
||||
/// <param name="leavedTime"></param>
|
||||
/// <param name="TimeDiff"></param>
|
||||
/// <param name="Target"></param>
|
||||
/// <param name="isPass"></param>
|
||||
static public void WorkStartInsert(string opName, DateTime arrivedTime, DateTime leavedTime, int TimeDiff, int Target, string lineType, string isPass, int OpNameUpDownType)
|
||||
{
|
||||
string procedureName;
|
||||
procedureName = "测量数据发动机在线状态_增加数据";
|
||||
SqlParameter[] thisParms = new SqlParameter[8];
|
||||
thisParms[0] = new System.Data.SqlClient.SqlParameter("@工位号", opName);
|
||||
thisParms[1] = new System.Data.SqlClient.SqlParameter("@到达时间", arrivedTime);
|
||||
thisParms[2] = new System.Data.SqlClient.SqlParameter("@离开时间", leavedTime);
|
||||
thisParms[3] = new System.Data.SqlClient.SqlParameter("@在线时间", TimeDiff);
|
||||
thisParms[4] = new System.Data.SqlClient.SqlParameter("@目标时间", Target);
|
||||
thisParms[5] = new System.Data.SqlClient.SqlParameter("@线体类型", lineType);
|
||||
thisParms[6] = new System.Data.SqlClient.SqlParameter("@是否合格", isPass);
|
||||
thisParms[7] = new System.Data.SqlClient.SqlParameter("@工位上下线类型", OpNameUpDownType);
|
||||
DataAccess.ExecuteStoredProcedure(procedureName, ref thisParms);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 测量数据发动机在线状态_增加数据_自动工位
|
||||
/// </summary>
|
||||
/// <param name="opName"></param>
|
||||
/// <param name="EngineID"></param>
|
||||
/// <param name="Pallet"></param>
|
||||
/// <param name="arrivedTime"></param>
|
||||
/// <param name="leavedTime"></param>
|
||||
/// <param name="TimeDiff"></param>
|
||||
/// <param name="Target"></param>
|
||||
/// <param name="lineType"></param>
|
||||
/// <param name="isPass"></param>
|
||||
/// <param name="OpNameUpDownType"></param>
|
||||
static public void WorkStartInsert_AutoWorkStation(string opName, string EngineID, int Pallet, DateTime arrivedTime, DateTime leavedTime, int TimeDiff, int Target, string lineType, string isPass, int OpNameUpDownType)
|
||||
{
|
||||
string procedureName;
|
||||
procedureName = "测量数据发动机在线状态_增加数据_自动工位";
|
||||
SqlParameter[] thisParms = new SqlParameter[10];
|
||||
thisParms[0] = new System.Data.SqlClient.SqlParameter("@工位号", opName);
|
||||
thisParms[1] = new System.Data.SqlClient.SqlParameter("@发动机号", EngineID);
|
||||
thisParms[2] = new System.Data.SqlClient.SqlParameter("@托盘编号", Pallet);
|
||||
thisParms[3] = new System.Data.SqlClient.SqlParameter("@到达时间", arrivedTime);
|
||||
thisParms[4] = new System.Data.SqlClient.SqlParameter("@离开时间", leavedTime);
|
||||
thisParms[5] = new System.Data.SqlClient.SqlParameter("@在线时间", TimeDiff);
|
||||
thisParms[6] = new System.Data.SqlClient.SqlParameter("@目标时间", Target);
|
||||
thisParms[7] = new System.Data.SqlClient.SqlParameter("@线体类型", lineType);
|
||||
thisParms[8] = new System.Data.SqlClient.SqlParameter("@是否合格", isPass);
|
||||
thisParms[9] = new System.Data.SqlClient.SqlParameter("@工位上下线类型", OpNameUpDownType);
|
||||
DataAccess.ExecuteStoredProcedure(procedureName, ref thisParms);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 发送在线产量、在线节拍
|
||||
/// </summary>
|
||||
/// <param name="OpName"></param>
|
||||
/// <param name="tagValue"></param>
|
||||
static void SendActuallyCount(string OpName, int tagValue)
|
||||
{
|
||||
//当工件离开时,更新在线产量、在线节拍
|
||||
if (tagValue == 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
int opNameCount = 0;//在线产量
|
||||
int opNameCountTime = 0;//在线节拍
|
||||
//基本数据_工作日历_班次产量查询_New
|
||||
BaseDataSystemMES.OpNameCount_New(OpName, out opNameCount, out opNameCountTime);
|
||||
|
||||
string SendMessage;
|
||||
SendMessage = "MES|ActuallyCount|" + OpName + "|" + opNameCount.ToString() + "&" + opNameCountTime.ToString();
|
||||
|
||||
MIS_BASE.asyncSendMessage(SendMessage);
|
||||
}
|
||||
catch (Exception err)
|
||||
{
|
||||
ApplicationLog.WriteLog(err, "Function01:SendActuallyCount");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user